{"schemaVersion":1,"modulePath":"agi/reference/adapters/PBDRagdollAgentAdapter.md","moduleTitle":"adapters/PBDRagdollAgentAdapter","source":"agi/adapters/PBDRagdollAgentAdapter.js","import":"/agi/adapters/PBDRagdollAgentAdapter.js","sourceHash":"c617ddeda76aa47cbee3e7af4dc72dd8ddde7cc5fce76f545db3c1e36fd3f9d3","subsystem":"agi","recordType":"api-module","id":"module:agi/adapters/PBDRagdollAgentAdapter.js","title":"adapters/PBDRagdollAgentAdapter","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/adapters/PBDRagdollAgentAdapter.md","moduleTitle":"adapters/PBDRagdollAgentAdapter","source":"agi/adapters/PBDRagdollAgentAdapter.js","import":"/agi/adapters/PBDRagdollAgentAdapter.js","sourceHash":"c617ddeda76aa47cbee3e7af4dc72dd8ddde7cc5fce76f545db3c1e36fd3f9d3","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/adapters/PBDRagdollAgentAdapter.js#0000:PBDRagdollAgentAdapter","exportIndex":0,"name":"PBDRagdollAgentAdapter","kind":"class","signature":"class PBDRagdollAgentAdapter","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/brain/ExperienceBuffer.md","moduleTitle":"brain/ExperienceBuffer","source":"agi/brain/ExperienceBuffer.js","import":"/agi/brain/ExperienceBuffer.js","sourceHash":"63538bf2e35b05177c5527d73d67997316caab4d98969bb6746ef0a2d32ba4e1","subsystem":"agi","recordType":"api-module","id":"module:agi/brain/ExperienceBuffer.js","title":"brain/ExperienceBuffer","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/brain/ExperienceBuffer.md","moduleTitle":"brain/ExperienceBuffer","source":"agi/brain/ExperienceBuffer.js","import":"/agi/brain/ExperienceBuffer.js","sourceHash":"63538bf2e35b05177c5527d73d67997316caab4d98969bb6746ef0a2d32ba4e1","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/brain/ExperienceBuffer.js#0000:ExperienceBuffer","exportIndex":0,"name":"ExperienceBuffer","kind":"class","signature":"class ExperienceBuffer","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/brain/NetworkArchitecture.md","moduleTitle":"brain/NetworkArchitecture","source":"agi/brain/NetworkArchitecture.js","import":"/agi/brain/NetworkArchitecture.js","sourceHash":"96d127e43ea3c4d4b717561078bdeecc9efb341e393b25c8214a9da5ad4dd5f4","subsystem":"agi","recordType":"api-module","id":"module:agi/brain/NetworkArchitecture.js","title":"brain/NetworkArchitecture","summary":"Layer class - represents a single neural network layer","exportCount":2}
{"schemaVersion":1,"modulePath":"agi/reference/brain/NetworkArchitecture.md","moduleTitle":"brain/NetworkArchitecture","source":"agi/brain/NetworkArchitecture.js","import":"/agi/brain/NetworkArchitecture.js","sourceHash":"96d127e43ea3c4d4b717561078bdeecc9efb341e393b25c8214a9da5ad4dd5f4","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/brain/NetworkArchitecture.js#0000:Layer","exportIndex":0,"name":"Layer","kind":"class","signature":"class Layer","summary":"Layer class - represents a single neural network layer"}
{"schemaVersion":1,"modulePath":"agi/reference/brain/NetworkArchitecture.md","moduleTitle":"brain/NetworkArchitecture","source":"agi/brain/NetworkArchitecture.js","import":"/agi/brain/NetworkArchitecture.js","sourceHash":"96d127e43ea3c4d4b717561078bdeecc9efb341e393b25c8214a9da5ad4dd5f4","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/brain/NetworkArchitecture.js#0001:NETWORK_ARCHITECTURES","exportIndex":1,"name":"NETWORK_ARCHITECTURES","kind":"constant","signature":"NETWORK_ARCHITECTURES","summary":"Network Architecture Definitions Layer configurations and hyperparameters for Policy and Value networks"}
{"schemaVersion":1,"modulePath":"agi/reference/brain/PolicyNetwork.md","moduleTitle":"brain/PolicyNetwork","source":"agi/brain/PolicyNetwork.js","import":"/agi/brain/PolicyNetwork.js","sourceHash":"6afeb61b0f881e76c5952c95655bc26cfbcd02670d7dab75859857bb7fa9ec98","subsystem":"agi","recordType":"api-module","id":"module:agi/brain/PolicyNetwork.js","title":"brain/PolicyNetwork","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/brain/PolicyNetwork.md","moduleTitle":"brain/PolicyNetwork","source":"agi/brain/PolicyNetwork.js","import":"/agi/brain/PolicyNetwork.js","sourceHash":"6afeb61b0f881e76c5952c95655bc26cfbcd02670d7dab75859857bb7fa9ec98","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/brain/PolicyNetwork.js#0000:PolicyNetwork","exportIndex":0,"name":"PolicyNetwork","kind":"class","signature":"class PolicyNetwork","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/brain/ValueNetwork.md","moduleTitle":"brain/ValueNetwork","source":"agi/brain/ValueNetwork.js","import":"/agi/brain/ValueNetwork.js","sourceHash":"a8768cfbc58ba7acf9656ff451b78b4fac2bf49cdbce4b45e5b6a9dff5b2593c","subsystem":"agi","recordType":"api-module","id":"module:agi/brain/ValueNetwork.js","title":"brain/ValueNetwork","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/brain/ValueNetwork.md","moduleTitle":"brain/ValueNetwork","source":"agi/brain/ValueNetwork.js","import":"/agi/brain/ValueNetwork.js","sourceHash":"a8768cfbc58ba7acf9656ff451b78b4fac2bf49cdbce4b45e5b6a9dff5b2593c","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/brain/ValueNetwork.js#0000:ValueNetwork","exportIndex":0,"name":"ValueNetwork","kind":"class","signature":"class ValueNetwork","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/brain/trainers/PPOTrainer.md","moduleTitle":"brain/trainers/PPOTrainer","source":"agi/brain/trainers/PPOTrainer.js","import":"/agi/brain/trainers/PPOTrainer.js","sourceHash":"9ef5331dbd0e566011cba2dcdaeb672138eb9040c461152d6aab61a741a6b88a","subsystem":"agi","recordType":"api-module","id":"module:agi/brain/trainers/PPOTrainer.js","title":"brain/trainers/PPOTrainer","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/brain/trainers/PPOTrainer.md","moduleTitle":"brain/trainers/PPOTrainer","source":"agi/brain/trainers/PPOTrainer.js","import":"/agi/brain/trainers/PPOTrainer.js","sourceHash":"9ef5331dbd0e566011cba2dcdaeb672138eb9040c461152d6aab61a741a6b88a","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/brain/trainers/PPOTrainer.js#0000:PPOTrainer","exportIndex":0,"name":"PPOTrainer","kind":"class","signature":"class PPOTrainer","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/config/curriculum.md","moduleTitle":"config/curriculum","source":"agi/config/curriculum.js","import":"/agi/config/curriculum.js","sourceHash":"faac029b5a078f894addf4f1810a1e04b028aaa5e37fcaf4da8c70586c1e2893","subsystem":"agi","recordType":"api-module","id":"module:agi/config/curriculum.js","title":"config/curriculum","summary":"Curriculum Learning Stages Progressive training stages from standing to full locomotion","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/config/curriculum.md","moduleTitle":"config/curriculum","source":"agi/config/curriculum.js","import":"/agi/config/curriculum.js","sourceHash":"faac029b5a078f894addf4f1810a1e04b028aaa5e37fcaf4da8c70586c1e2893","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/config/curriculum.js#0000:CURRICULUM_STAGES","exportIndex":0,"name":"CURRICULUM_STAGES","kind":"constant","signature":"CURRICULUM_STAGES","summary":"Curriculum Learning Stages Progressive training stages from standing to full locomotion"}
{"schemaVersion":1,"modulePath":"agi/reference/config/hyperparameters.md","moduleTitle":"config/hyperparameters","source":"agi/config/hyperparameters.js","import":"/agi/config/hyperparameters.js","sourceHash":"a5a8c1d2731a9c858ed889d8bb72b8cbef9838f3cf2c4f68d00cbf685485ead7","subsystem":"agi","recordType":"api-module","id":"module:agi/config/hyperparameters.js","title":"config/hyperparameters","summary":"Neural Network Hyperparameters Configuration for Policy and Value networks, training parameters","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/config/hyperparameters.md","moduleTitle":"config/hyperparameters","source":"agi/config/hyperparameters.js","import":"/agi/config/hyperparameters.js","sourceHash":"a5a8c1d2731a9c858ed889d8bb72b8cbef9838f3cf2c4f68d00cbf685485ead7","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/config/hyperparameters.js#0000:HYPERPARAMETERS","exportIndex":0,"name":"HYPERPARAMETERS","kind":"constant","signature":"HYPERPARAMETERS","summary":"Neural Network Hyperparameters Configuration for Policy and Value networks, training parameters"}
{"schemaVersion":1,"modulePath":"agi/reference/config/rewards.md","moduleTitle":"config/rewards","source":"agi/config/rewards.js","import":"/agi/config/rewards.js","sourceHash":"a54ceb15b1a4b9edba1c462a25c6cf35d0ea99546e3729b6a2bd4704c4eef292","subsystem":"agi","recordType":"api-module","id":"module:agi/config/rewards.js","title":"config/rewards","summary":"Compute reward for current state","exportCount":2}
{"schemaVersion":1,"modulePath":"agi/reference/config/rewards.md","moduleTitle":"config/rewards","source":"agi/config/rewards.js","import":"/agi/config/rewards.js","sourceHash":"a54ceb15b1a4b9edba1c462a25c6cf35d0ea99546e3729b6a2bd4704c4eef292","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/config/rewards.js#0000:computeReward","exportIndex":0,"name":"computeReward","kind":"function","signature":"computeReward(state, config = REWARD_WEIGHTS.standing)","summary":"Compute reward for current state"}
{"schemaVersion":1,"modulePath":"agi/reference/config/rewards.md","moduleTitle":"config/rewards","source":"agi/config/rewards.js","import":"/agi/config/rewards.js","sourceHash":"a54ceb15b1a4b9edba1c462a25c6cf35d0ea99546e3729b6a2bd4704c4eef292","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/config/rewards.js#0001:REWARD_WEIGHTS","exportIndex":1,"name":"REWARD_WEIGHTS","kind":"constant","signature":"REWARD_WEIGHTS","summary":"Reward Function Weights Configurable reward components for different training objectives"}
{"schemaVersion":1,"modulePath":"agi/reference/core/CurriculumManager.md","moduleTitle":"core/CurriculumManager","source":"agi/core/CurriculumManager.js","import":"/agi/core/CurriculumManager.js","sourceHash":"4b2fdc7d123b94cdd1d734d3998d70fc2bfa60043fc6c9003ec5d63455d11179","subsystem":"agi","recordType":"api-module","id":"module:agi/core/CurriculumManager.js","title":"core/CurriculumManager","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/core/CurriculumManager.md","moduleTitle":"core/CurriculumManager","source":"agi/core/CurriculumManager.js","import":"/agi/core/CurriculumManager.js","sourceHash":"4b2fdc7d123b94cdd1d734d3998d70fc2bfa60043fc6c9003ec5d63455d11179","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/core/CurriculumManager.js#0000:CurriculumManager","exportIndex":0,"name":"CurriculumManager","kind":"class","signature":"class CurriculumManager","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/core/MotionMatchingTeacher.md","moduleTitle":"core/MotionMatchingTeacher","source":"agi/core/MotionMatchingTeacher.js","import":"/agi/core/MotionMatchingTeacher.js","sourceHash":"8067ac4e7eb42fd195398395e3cd8b35098562e5c8cd79a6a0e1f049ce22fbf7","subsystem":"agi","recordType":"api-module","id":"module:agi/core/MotionMatchingTeacher.js","title":"core/MotionMatchingTeacher","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/core/MotionMatchingTeacher.md","moduleTitle":"core/MotionMatchingTeacher","source":"agi/core/MotionMatchingTeacher.js","import":"/agi/core/MotionMatchingTeacher.js","sourceHash":"8067ac4e7eb42fd195398395e3cd8b35098562e5c8cd79a6a0e1f049ce22fbf7","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/core/MotionMatchingTeacher.js#0000:MotionMatchingTeacher","exportIndex":0,"name":"MotionMatchingTeacher","kind":"class","signature":"class MotionMatchingTeacher extends MotionMatcher","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/core/MotorController.md","moduleTitle":"core/MotorController","source":"agi/core/MotorController.js","import":"/agi/core/MotorController.js","sourceHash":"e92518a41940bd87db2e88b406599fd661679e73cf9d561f45cab80e30dabd03","subsystem":"agi","recordType":"api-module","id":"module:agi/core/MotorController.js","title":"core/MotorController","summary":"Motor Controller Converts neural network actions into physics impulses","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/core/MotorController.md","moduleTitle":"core/MotorController","source":"agi/core/MotorController.js","import":"/agi/core/MotorController.js","sourceHash":"e92518a41940bd87db2e88b406599fd661679e73cf9d561f45cab80e30dabd03","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/core/MotorController.js#0000:MotorController","exportIndex":0,"name":"MotorController","kind":"class","signature":"class MotorController","summary":"Motor Controller Converts neural network actions into physics impulses"}
{"schemaVersion":1,"modulePath":"agi/reference/core/ObservationBuilder.md","moduleTitle":"core/ObservationBuilder","source":"agi/core/ObservationBuilder.js","import":"/agi/core/ObservationBuilder.js","sourceHash":"74c5e77974cdfdec7ae331f82796deafff336adfcae527282cb31a90cf99ab81","subsystem":"agi","recordType":"api-module","id":"module:agi/core/ObservationBuilder.js","title":"core/ObservationBuilder","summary":"Observation Builder Converts ragdoll sensor data into neural network input","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/core/ObservationBuilder.md","moduleTitle":"core/ObservationBuilder","source":"agi/core/ObservationBuilder.js","import":"/agi/core/ObservationBuilder.js","sourceHash":"74c5e77974cdfdec7ae331f82796deafff336adfcae527282cb31a90cf99ab81","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/core/ObservationBuilder.js#0000:ObservationBuilder","exportIndex":0,"name":"ObservationBuilder","kind":"class","signature":"class ObservationBuilder","summary":"Observation Builder Converts ragdoll sensor data into neural network input"}
{"schemaVersion":1,"modulePath":"agi/reference/core/RagdollController.md","moduleTitle":"core/RagdollController","source":"agi/core/RagdollController.js","import":"/agi/core/RagdollController.js","sourceHash":"c248723f6e650dcff7a470393e6c11d4dac0bec1e37d27bc03ba9c8d0c4096f8","subsystem":"agi","recordType":"api-module","id":"module:agi/core/RagdollController.js","title":"core/RagdollController","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/core/RagdollController.md","moduleTitle":"core/RagdollController","source":"agi/core/RagdollController.js","import":"/agi/core/RagdollController.js","sourceHash":"c248723f6e650dcff7a470393e6c11d4dac0bec1e37d27bc03ba9c8d0c4096f8","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/core/RagdollController.js#0000:RagdollController","exportIndex":0,"name":"RagdollController","kind":"class","signature":"class RagdollController","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/core/RewardFunction.md","moduleTitle":"core/RewardFunction","source":"agi/core/RewardFunction.js","import":"/agi/core/RewardFunction.js","sourceHash":"8f94baf0346ff8e13cb398786fef280535c407b60b10db85aaa1806581f575b6","subsystem":"agi","recordType":"api-module","id":"module:agi/core/RewardFunction.js","title":"core/RewardFunction","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/core/RewardFunction.md","moduleTitle":"core/RewardFunction","source":"agi/core/RewardFunction.js","import":"/agi/core/RewardFunction.js","sourceHash":"8f94baf0346ff8e13cb398786fef280535c407b60b10db85aaa1806581f575b6","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/core/RewardFunction.js#0000:RewardFunction","exportIndex":0,"name":"RewardFunction","kind":"class","signature":"class RewardFunction","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/index.md","moduleTitle":"index","source":"agi/index.js","import":"/agi/index.js","sourceHash":"f20d34de48bbf9d6566a9ffe9b10f489ef732fb3740aea98512226867c7ca502","subsystem":"agi","recordType":"api-module","id":"module:agi/index.js","title":"index","summary":"","exportCount":41}
{"schemaVersion":1,"modulePath":"agi/reference/index.md","moduleTitle":"index","source":"agi/index.js","import":"/agi/index.js","sourceHash":"f20d34de48bbf9d6566a9ffe9b10f489ef732fb3740aea98512226867c7ca502","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/index.js#0000:AGI_CORE_FULL","exportIndex":0,"name":"AGI_CORE_FULL","kind":"re-export","signature":"AGI_CORE_FULL","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/index.md","moduleTitle":"index","source":"agi/index.js","import":"/agi/index.js","sourceHash":"f20d34de48bbf9d6566a9ffe9b10f489ef732fb3740aea98512226867c7ca502","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/index.js#0001:AGI_CORE_VERSION","exportIndex":1,"name":"AGI_CORE_VERSION","kind":"re-export","signature":"AGI_CORE_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/index.md","moduleTitle":"index","source":"agi/index.js","import":"/agi/index.js","sourceHash":"f20d34de48bbf9d6566a9ffe9b10f489ef732fb3740aea98512226867c7ca502","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/index.js#0002:AGI_TRAINING_CHANNEL_ID","exportIndex":2,"name":"AGI_TRAINING_CHANNEL_ID","kind":"re-export","signature":"AGI_TRAINING_CHANNEL_ID","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/index.md","moduleTitle":"index","source":"agi/index.js","import":"/agi/index.js","sourceHash":"f20d34de48bbf9d6566a9ffe9b10f489ef732fb3740aea98512226867c7ca502","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/index.js#0003:AGI_TRAINING_CONTRACT","exportIndex":3,"name":"AGI_TRAINING_CONTRACT","kind":"re-export","signature":"AGI_TRAINING_CONTRACT","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/index.md","moduleTitle":"index","source":"agi/index.js","import":"/agi/index.js","sourceHash":"f20d34de48bbf9d6566a9ffe9b10f489ef732fb3740aea98512226867c7ca502","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/index.js#0004:AGI_TRAINING_ROUTE_ID","exportIndex":4,"name":"AGI_TRAINING_ROUTE_ID","kind":"re-export","signature":"AGI_TRAINING_ROUTE_ID","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/index.md","moduleTitle":"index","source":"agi/index.js","import":"/agi/index.js","sourceHash":"f20d34de48bbf9d6566a9ffe9b10f489ef732fb3740aea98512226867c7ca502","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/index.js#0005:AgiTrainingStateChannel","exportIndex":5,"name":"AgiTrainingStateChannel","kind":"re-export","signature":"AgiTrainingStateChannel","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/index.md","moduleTitle":"index","source":"agi/index.js","import":"/agi/index.js","sourceHash":"f20d34de48bbf9d6566a9ffe9b10f489ef732fb3740aea98512226867c7ca502","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/index.js#0006:BUILD_TAG","exportIndex":6,"name":"BUILD_TAG","kind":"re-export","signature":"BUILD_TAG","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/index.md","moduleTitle":"index","source":"agi/index.js","import":"/agi/index.js","sourceHash":"f20d34de48bbf9d6566a9ffe9b10f489ef732fb3740aea98512226867c7ca502","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/index.js#0007:BrainVisualizer","exportIndex":7,"name":"BrainVisualizer","kind":"re-export","signature":"BrainVisualizer","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/index.md","moduleTitle":"index","source":"agi/index.js","import":"/agi/index.js","sourceHash":"f20d34de48bbf9d6566a9ffe9b10f489ef732fb3740aea98512226867c7ca502","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/index.js#0008:ComputeGraph","exportIndex":8,"name":"ComputeGraph","kind":"re-export","signature":"ComputeGraph","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/index.md","moduleTitle":"index","source":"agi/index.js","import":"/agi/index.js","sourceHash":"f20d34de48bbf9d6566a9ffe9b10f489ef732fb3740aea98512226867c7ca502","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/index.js#0009:CurriculumManager","exportIndex":9,"name":"CurriculumManager","kind":"re-export","signature":"CurriculumManager","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/index.md","moduleTitle":"index","source":"agi/index.js","import":"/agi/index.js","sourceHash":"f20d34de48bbf9d6566a9ffe9b10f489ef732fb3740aea98512226867c7ca502","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/index.js#0010:DebugVisualizer","exportIndex":10,"name":"DebugVisualizer","kind":"re-export","signature":"DebugVisualizer","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/index.md","moduleTitle":"index","source":"agi/index.js","import":"/agi/index.js","sourceHash":"f20d34de48bbf9d6566a9ffe9b10f489ef732fb3740aea98512226867c7ca502","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/index.js#0011:ExperienceBuffer","exportIndex":11,"name":"ExperienceBuffer","kind":"re-export","signature":"ExperienceBuffer","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/index.md","moduleTitle":"index","source":"agi/index.js","import":"/agi/index.js","sourceHash":"f20d34de48bbf9d6566a9ffe9b10f489ef732fb3740aea98512226867c7ca502","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/index.js#0012:GradientContext","exportIndex":12,"name":"GradientContext","kind":"re-export","signature":"GradientContext","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/index.md","moduleTitle":"index","source":"agi/index.js","import":"/agi/index.js","sourceHash":"f20d34de48bbf9d6566a9ffe9b10f489ef732fb3740aea98512226867c7ca502","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/index.js#0013:GradientTape","exportIndex":13,"name":"GradientTape","kind":"re-export","signature":"GradientTape","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/index.md","moduleTitle":"index","source":"agi/index.js","import":"/agi/index.js","sourceHash":"f20d34de48bbf9d6566a9ffe9b10f489ef732fb3740aea98512226867c7ca502","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/index.js#0014:GroundPlane","exportIndex":14,"name":"GroundPlane","kind":"re-export","signature":"GroundPlane","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/index.md","moduleTitle":"index","source":"agi/index.js","import":"/agi/index.js","sourceHash":"f20d34de48bbf9d6566a9ffe9b10f489ef732fb3740aea98512226867c7ca502","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/index.js#0015:InjectionSystem","exportIndex":15,"name":"InjectionSystem","kind":"re-export","signature":"InjectionSystem","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/index.md","moduleTitle":"index","source":"agi/index.js","import":"/agi/index.js","sourceHash":"f20d34de48bbf9d6566a9ffe9b10f489ef732fb3740aea98512226867c7ca502","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/index.js#0016:Layer","exportIndex":16,"name":"Layer","kind":"re-export","signature":"Layer","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/index.md","moduleTitle":"index","source":"agi/index.js","import":"/agi/index.js","sourceHash":"f20d34de48bbf9d6566a9ffe9b10f489ef732fb3740aea98512226867c7ca502","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/index.js#0017:LoadingProgress","exportIndex":17,"name":"LoadingProgress","kind":"re-export","signature":"LoadingProgress","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/index.md","moduleTitle":"index","source":"agi/index.js","import":"/agi/index.js","sourceHash":"f20d34de48bbf9d6566a9ffe9b10f489ef732fb3740aea98512226867c7ca502","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/index.js#0018:MetricsDisplay","exportIndex":18,"name":"MetricsDisplay","kind":"re-export","signature":"MetricsDisplay","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/index.md","moduleTitle":"index","source":"agi/index.js","import":"/agi/index.js","sourceHash":"f20d34de48bbf9d6566a9ffe9b10f489ef732fb3740aea98512226867c7ca502","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/index.js#0019:ModelLoader","exportIndex":19,"name":"ModelLoader","kind":"re-export","signature":"ModelLoader","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/index.md","moduleTitle":"index","source":"agi/index.js","import":"/agi/index.js","sourceHash":"f20d34de48bbf9d6566a9ffe9b10f489ef732fb3740aea98512226867c7ca502","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/index.js#0020:MotionMatchingTeacher","exportIndex":20,"name":"MotionMatchingTeacher","kind":"re-export","signature":"MotionMatchingTeacher","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/index.md","moduleTitle":"index","source":"agi/index.js","import":"/agi/index.js","sourceHash":"f20d34de48bbf9d6566a9ffe9b10f489ef732fb3740aea98512226867c7ca502","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/index.js#0021:MotorController","exportIndex":21,"name":"MotorController","kind":"re-export","signature":"MotorController","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/index.md","moduleTitle":"index","source":"agi/index.js","import":"/agi/index.js","sourceHash":"f20d34de48bbf9d6566a9ffe9b10f489ef732fb3740aea98512226867c7ca502","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/index.js#0022:NETWORK_ARCHITECTURES","exportIndex":22,"name":"NETWORK_ARCHITECTURES","kind":"re-export","signature":"NETWORK_ARCHITECTURES","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/index.md","moduleTitle":"index","source":"agi/index.js","import":"/agi/index.js","sourceHash":"f20d34de48bbf9d6566a9ffe9b10f489ef732fb3740aea98512226867c7ca502","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/index.js#0023:NetworkArchitecture","exportIndex":23,"name":"NetworkArchitecture","kind":"re-export","signature":"NetworkArchitecture","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/index.md","moduleTitle":"index","source":"agi/index.js","import":"/agi/index.js","sourceHash":"f20d34de48bbf9d6566a9ffe9b10f489ef732fb3740aea98512226867c7ca502","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/index.js#0024:ObservationBuilder","exportIndex":24,"name":"ObservationBuilder","kind":"re-export","signature":"ObservationBuilder","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/index.md","moduleTitle":"index","source":"agi/index.js","import":"/agi/index.js","sourceHash":"f20d34de48bbf9d6566a9ffe9b10f489ef732fb3740aea98512226867c7ca502","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/index.js#0025:PBDRagdollAgentAdapter","exportIndex":25,"name":"PBDRagdollAgentAdapter","kind":"re-export","signature":"PBDRagdollAgentAdapter","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/index.md","moduleTitle":"index","source":"agi/index.js","import":"/agi/index.js","sourceHash":"f20d34de48bbf9d6566a9ffe9b10f489ef732fb3740aea98512226867c7ca502","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/index.js#0026:PPOTrainer","exportIndex":26,"name":"PPOTrainer","kind":"re-export","signature":"PPOTrainer","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/index.md","moduleTitle":"index","source":"agi/index.js","import":"/agi/index.js","sourceHash":"f20d34de48bbf9d6566a9ffe9b10f489ef732fb3740aea98512226867c7ca502","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/index.js#0027:ParasiteRig","exportIndex":27,"name":"ParasiteRig","kind":"re-export","signature":"ParasiteRig","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/index.md","moduleTitle":"index","source":"agi/index.js","import":"/agi/index.js","sourceHash":"f20d34de48bbf9d6566a9ffe9b10f489ef732fb3740aea98512226867c7ca502","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/index.js#0028:PolicyNetwork","exportIndex":28,"name":"PolicyNetwork","kind":"re-export","signature":"PolicyNetwork","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/index.md","moduleTitle":"index","source":"agi/index.js","import":"/agi/index.js","sourceHash":"f20d34de48bbf9d6566a9ffe9b10f489ef732fb3740aea98512226867c7ca502","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/index.js#0029:RagdollController","exportIndex":29,"name":"RagdollController","kind":"re-export","signature":"RagdollController","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/index.md","moduleTitle":"index","source":"agi/index.js","import":"/agi/index.js","sourceHash":"f20d34de48bbf9d6566a9ffe9b10f489ef732fb3740aea98512226867c7ca502","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/index.js#0030:RewardFunction","exportIndex":30,"name":"RewardFunction","kind":"re-export","signature":"RewardFunction","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/index.md","moduleTitle":"index","source":"agi/index.js","import":"/agi/index.js","sourceHash":"f20d34de48bbf9d6566a9ffe9b10f489ef732fb3740aea98512226867c7ca502","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/index.js#0031:SceneRenderer","exportIndex":31,"name":"SceneRenderer","kind":"re-export","signature":"SceneRenderer","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/index.md","moduleTitle":"index","source":"agi/index.js","import":"/agi/index.js","sourceHash":"f20d34de48bbf9d6566a9ffe9b10f489ef732fb3740aea98512226867c7ca502","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/index.js#0032:StudioApp","exportIndex":32,"name":"StudioApp","kind":"re-export","signature":"StudioApp","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/index.md","moduleTitle":"index","source":"agi/index.js","import":"/agi/index.js","sourceHash":"f20d34de48bbf9d6566a9ffe9b10f489ef732fb3740aea98512226867c7ca502","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/index.js#0033:TensorCache","exportIndex":33,"name":"TensorCache","kind":"re-export","signature":"TensorCache","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/index.md","moduleTitle":"index","source":"agi/index.js","import":"/agi/index.js","sourceHash":"f20d34de48bbf9d6566a9ffe9b10f489ef732fb3740aea98512226867c7ca502","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/index.js#0034:TentacleRenderer","exportIndex":34,"name":"TentacleRenderer","kind":"re-export","signature":"TentacleRenderer","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/index.md","moduleTitle":"index","source":"agi/index.js","import":"/agi/index.js","sourceHash":"f20d34de48bbf9d6566a9ffe9b10f489ef732fb3740aea98512226867c7ca502","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/index.js#0035:TrackingCamera","exportIndex":35,"name":"TrackingCamera","kind":"re-export","signature":"TrackingCamera","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/index.md","moduleTitle":"index","source":"agi/index.js","import":"/agi/index.js","sourceHash":"f20d34de48bbf9d6566a9ffe9b10f489ef732fb3740aea98512226867c7ca502","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/index.js#0036:TrainingScene","exportIndex":36,"name":"TrainingScene","kind":"re-export","signature":"TrainingScene","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/index.md","moduleTitle":"index","source":"agi/index.js","import":"/agi/index.js","sourceHash":"f20d34de48bbf9d6566a9ffe9b10f489ef732fb3740aea98512226867c7ca502","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/index.js#0037:TrainingUI","exportIndex":37,"name":"TrainingUI","kind":"re-export","signature":"TrainingUI","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/index.md","moduleTitle":"index","source":"agi/index.js","import":"/agi/index.js","sourceHash":"f20d34de48bbf9d6566a9ffe9b10f489ef732fb3740aea98512226867c7ca502","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/index.js#0038:ValueNetwork","exportIndex":38,"name":"ValueNetwork","kind":"re-export","signature":"ValueNetwork","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/index.md","moduleTitle":"index","source":"agi/index.js","import":"/agi/index.js","sourceHash":"f20d34de48bbf9d6566a9ffe9b10f489ef732fb3740aea98512226867c7ca502","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/index.js#0039:createAgiTrainingStateChannel","exportIndex":39,"name":"createAgiTrainingStateChannel","kind":"re-export","signature":"createAgiTrainingStateChannel","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/index.md","moduleTitle":"index","source":"agi/index.js","import":"/agi/index.js","sourceHash":"f20d34de48bbf9d6566a9ffe9b10f489ef732fb3740aea98512226867c7ca502","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/index.js#0040:loadingProgress","exportIndex":40,"name":"loadingProgress","kind":"re-export","signature":"loadingProgress","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/DeviceProfiler.md","moduleTitle":"llm/DeviceProfiler","source":"agi/llm/DeviceProfiler.js","import":"/agi/llm/DeviceProfiler.js","sourceHash":"31c08824be41f7aa80654a5cbfa109250c7ba8d998213935abe7dc176e279945","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/DeviceProfiler.js","title":"llm/DeviceProfiler","summary":"DeviceProfiler.js - WebGPU capability and LLM feasibility profiler. This module is intentionally browser-native and dependency-free. It can use the kernel's shared GPU device when available, or probe navigator.gpu directly for standalone AGI tests.","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/llm/DeviceProfiler.md","moduleTitle":"llm/DeviceProfiler","source":"agi/llm/DeviceProfiler.js","import":"/agi/llm/DeviceProfiler.js","sourceHash":"31c08824be41f7aa80654a5cbfa109250c7ba8d998213935abe7dc176e279945","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/DeviceProfiler.js#0000:AIDeviceProfiler","exportIndex":0,"name":"AIDeviceProfiler","kind":"class","signature":"class AIDeviceProfiler","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/formats/GGUFParser.md","moduleTitle":"llm/formats/GGUFParser","source":"agi/llm/formats/GGUFParser.js","import":"/agi/llm/formats/GGUFParser.js","sourceHash":"a7c01840a7315dcc9cbd906b3edaf8c843ade73612d4a63ce023571d1e49c921","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/formats/GGUFParser.js","title":"llm/formats/GGUFParser","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/llm/formats/GGUFParser.md","moduleTitle":"llm/formats/GGUFParser","source":"agi/llm/formats/GGUFParser.js","import":"/agi/llm/formats/GGUFParser.js","sourceHash":"a7c01840a7315dcc9cbd906b3edaf8c843ade73612d4a63ce023571d1e49c921","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/formats/GGUFParser.js#0000:GGUFParser","exportIndex":0,"name":"GGUFParser","kind":"class","signature":"class GGUFParser","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/formats/GGUFTensorReader.md","moduleTitle":"llm/formats/GGUFTensorReader","source":"agi/llm/formats/GGUFTensorReader.js","import":"/agi/llm/formats/GGUFTensorReader.js","sourceHash":"bd77c6687c617369f002717fd7bef7429eeebd0a8ba27eca501e9c39e18c258a","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/formats/GGUFTensorReader.js","title":"llm/formats/GGUFTensorReader","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"agi/reference/llm/formats/GGUFTensorReader.md","moduleTitle":"llm/formats/GGUFTensorReader","source":"agi/llm/formats/GGUFTensorReader.js","import":"/agi/llm/formats/GGUFTensorReader.js","sourceHash":"bd77c6687c617369f002717fd7bef7429eeebd0a8ba27eca501e9c39e18c258a","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/formats/GGUFTensorReader.js#0000:GGUFTensorReader","exportIndex":0,"name":"GGUFTensorReader","kind":"class","signature":"class GGUFTensorReader","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/formats/GGUFTensorReader.md","moduleTitle":"llm/formats/GGUFTensorReader","source":"agi/llm/formats/GGUFTensorReader.js","import":"/agi/llm/formats/GGUFTensorReader.js","sourceHash":"bd77c6687c617369f002717fd7bef7429eeebd0a8ba27eca501e9c39e18c258a","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/formats/GGUFTensorReader.js#0001:bf16ToF32","exportIndex":1,"name":"bf16ToF32","kind":"function","signature":"bf16ToF32(value)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/formats/LLMPersistenceContracts.md","moduleTitle":"llm/formats/LLMPersistenceContracts","source":"agi/llm/formats/LLMPersistenceContracts.js","import":"/agi/llm/formats/LLMPersistenceContracts.js","sourceHash":"6bb1547664180c24ce26d1760ea42eb59574058ad0e089e9452d39492a128b03","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/formats/LLMPersistenceContracts.js","title":"llm/formats/LLMPersistenceContracts","summary":"Accept a legacy bare conversation and return the canonical durable v1 envelope.","exportCount":9}
{"schemaVersion":1,"modulePath":"agi/reference/llm/formats/LLMPersistenceContracts.md","moduleTitle":"llm/formats/LLMPersistenceContracts","source":"agi/llm/formats/LLMPersistenceContracts.js","import":"/agi/llm/formats/LLMPersistenceContracts.js","sourceHash":"6bb1547664180c24ce26d1760ea42eb59574058ad0e089e9452d39492a128b03","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/formats/LLMPersistenceContracts.js#0000:validateConversationId","exportIndex":0,"name":"validateConversationId","kind":"function","signature":"validateConversationId(value)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/formats/LLMPersistenceContracts.md","moduleTitle":"llm/formats/LLMPersistenceContracts","source":"agi/llm/formats/LLMPersistenceContracts.js","import":"/agi/llm/formats/LLMPersistenceContracts.js","sourceHash":"6bb1547664180c24ce26d1760ea42eb59574058ad0e089e9452d39492a128b03","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/formats/LLMPersistenceContracts.js#0001:validateModelId","exportIndex":1,"name":"validateModelId","kind":"function","signature":"validateModelId(value)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/formats/LLMPersistenceContracts.md","moduleTitle":"llm/formats/LLMPersistenceContracts","source":"agi/llm/formats/LLMPersistenceContracts.js","import":"/agi/llm/formats/LLMPersistenceContracts.js","sourceHash":"6bb1547664180c24ce26d1760ea42eb59574058ad0e089e9452d39492a128b03","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/formats/LLMPersistenceContracts.js#0002:prepareModelRegistry","exportIndex":2,"name":"prepareModelRegistry","kind":"function","signature":"prepareModelRegistry(input)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/formats/LLMPersistenceContracts.md","moduleTitle":"llm/formats/LLMPersistenceContracts","source":"agi/llm/formats/LLMPersistenceContracts.js","import":"/agi/llm/formats/LLMPersistenceContracts.js","sourceHash":"6bb1547664180c24ce26d1760ea42eb59574058ad0e089e9452d39492a128b03","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/formats/LLMPersistenceContracts.js#0003:prepareModelPackage","exportIndex":3,"name":"prepareModelPackage","kind":"function","signature":"prepareModelPackage(input)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/formats/LLMPersistenceContracts.md","moduleTitle":"llm/formats/LLMPersistenceContracts","source":"agi/llm/formats/LLMPersistenceContracts.js","import":"/agi/llm/formats/LLMPersistenceContracts.js","sourceHash":"6bb1547664180c24ce26d1760ea42eb59574058ad0e089e9452d39492a128b03","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/formats/LLMPersistenceContracts.js#0004:prepareConversation","exportIndex":4,"name":"prepareConversation","kind":"function","signature":"prepareConversation(input, expectedId = null)","summary":"Accept a legacy bare conversation and return the canonical durable v1 envelope."}
{"schemaVersion":1,"modulePath":"agi/reference/llm/formats/LLMPersistenceContracts.md","moduleTitle":"llm/formats/LLMPersistenceContracts","source":"agi/llm/formats/LLMPersistenceContracts.js","import":"/agi/llm/formats/LLMPersistenceContracts.js","sourceHash":"6bb1547664180c24ce26d1760ea42eb59574058ad0e089e9452d39492a128b03","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/formats/LLMPersistenceContracts.js#0005:MODEL_REGISTRY_SCHEMA","exportIndex":5,"name":"MODEL_REGISTRY_SCHEMA","kind":"constant","signature":"MODEL_REGISTRY_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/formats/LLMPersistenceContracts.md","moduleTitle":"llm/formats/LLMPersistenceContracts","source":"agi/llm/formats/LLMPersistenceContracts.js","import":"/agi/llm/formats/LLMPersistenceContracts.js","sourceHash":"6bb1547664180c24ce26d1760ea42eb59574058ad0e089e9452d39492a128b03","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/formats/LLMPersistenceContracts.js#0006:MODEL_PACKAGE_SCHEMA","exportIndex":6,"name":"MODEL_PACKAGE_SCHEMA","kind":"constant","signature":"MODEL_PACKAGE_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/formats/LLMPersistenceContracts.md","moduleTitle":"llm/formats/LLMPersistenceContracts","source":"agi/llm/formats/LLMPersistenceContracts.js","import":"/agi/llm/formats/LLMPersistenceContracts.js","sourceHash":"6bb1547664180c24ce26d1760ea42eb59574058ad0e089e9452d39492a128b03","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/formats/LLMPersistenceContracts.js#0007:CONVERSATION_SCHEMA","exportIndex":7,"name":"CONVERSATION_SCHEMA","kind":"constant","signature":"CONVERSATION_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/formats/LLMPersistenceContracts.md","moduleTitle":"llm/formats/LLMPersistenceContracts","source":"agi/llm/formats/LLMPersistenceContracts.js","import":"/agi/llm/formats/LLMPersistenceContracts.js","sourceHash":"6bb1547664180c24ce26d1760ea42eb59574058ad0e089e9452d39492a128b03","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/formats/LLMPersistenceContracts.js#0008:LLM_SCHEMA_VERSION","exportIndex":8,"name":"LLM_SCHEMA_VERSION","kind":"constant","signature":"LLM_SCHEMA_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/formats/ModelPackageReader.md","moduleTitle":"llm/formats/ModelPackageReader","source":"agi/llm/formats/ModelPackageReader.js","import":"/agi/llm/formats/ModelPackageReader.js","sourceHash":"0c36a0a464be2eace294b50d704e66ebf4035dbf64daa8dc84be8601cdd6069d","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/formats/ModelPackageReader.js","title":"llm/formats/ModelPackageReader","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/llm/formats/ModelPackageReader.md","moduleTitle":"llm/formats/ModelPackageReader","source":"agi/llm/formats/ModelPackageReader.js","import":"/agi/llm/formats/ModelPackageReader.js","sourceHash":"0c36a0a464be2eace294b50d704e66ebf4035dbf64daa8dc84be8601cdd6069d","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/formats/ModelPackageReader.js#0000:ModelPackageReader","exportIndex":0,"name":"ModelPackageReader","kind":"class","signature":"class ModelPackageReader","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/formats/ModelPackageWriter.md","moduleTitle":"llm/formats/ModelPackageWriter","source":"agi/llm/formats/ModelPackageWriter.js","import":"/agi/llm/formats/ModelPackageWriter.js","sourceHash":"3e4a12517cf5cb5eeee7b685113e49e0dd850fe8344488e78f2a844c9d8e8a3e","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/formats/ModelPackageWriter.js","title":"llm/formats/ModelPackageWriter","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/llm/formats/ModelPackageWriter.md","moduleTitle":"llm/formats/ModelPackageWriter","source":"agi/llm/formats/ModelPackageWriter.js","import":"/agi/llm/formats/ModelPackageWriter.js","sourceHash":"3e4a12517cf5cb5eeee7b685113e49e0dd850fe8344488e78f2a844c9d8e8a3e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/formats/ModelPackageWriter.js#0000:ModelPackageWriter","exportIndex":0,"name":"ModelPackageWriter","kind":"class","signature":"class ModelPackageWriter","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/formats/Quantization.md","moduleTitle":"llm/formats/Quantization","source":"agi/llm/formats/Quantization.js","import":"/agi/llm/formats/Quantization.js","sourceHash":"f7a2023a142bedad1e3eef00d91e5578221d7250d8645963db0272be33fc4386","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/formats/Quantization.js","title":"llm/formats/Quantization","summary":"","exportCount":11}
{"schemaVersion":1,"modulePath":"agi/reference/llm/formats/Quantization.md","moduleTitle":"llm/formats/Quantization","source":"agi/llm/formats/Quantization.js","import":"/agi/llm/formats/Quantization.js","sourceHash":"f7a2023a142bedad1e3eef00d91e5578221d7250d8645963db0272be33fc4386","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/formats/Quantization.js#0000:quantTypeName","exportIndex":0,"name":"quantTypeName","kind":"function","signature":"quantTypeName(type)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/formats/Quantization.md","moduleTitle":"llm/formats/Quantization","source":"agi/llm/formats/Quantization.js","import":"/agi/llm/formats/Quantization.js","sourceHash":"f7a2023a142bedad1e3eef00d91e5578221d7250d8645963db0272be33fc4386","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/formats/Quantization.js#0001:ggufFileTypeName","exportIndex":1,"name":"ggufFileTypeName","kind":"function","signature":"ggufFileTypeName(type)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/formats/Quantization.md","moduleTitle":"llm/formats/Quantization","source":"agi/llm/formats/Quantization.js","import":"/agi/llm/formats/Quantization.js","sourceHash":"f7a2023a142bedad1e3eef00d91e5578221d7250d8645963db0272be33fc4386","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/formats/Quantization.js#0002:inferQuantization","exportIndex":2,"name":"inferQuantization","kind":"function","signature":"inferQuantization(tensors = [], metadata = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/formats/Quantization.md","moduleTitle":"llm/formats/Quantization","source":"agi/llm/formats/Quantization.js","import":"/agi/llm/formats/Quantization.js","sourceHash":"f7a2023a142bedad1e3eef00d91e5578221d7250d8645963db0272be33fc4386","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/formats/Quantization.js#0003:normalizeQuantization","exportIndex":3,"name":"normalizeQuantization","kind":"function","signature":"normalizeQuantization(value)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/formats/Quantization.md","moduleTitle":"llm/formats/Quantization","source":"agi/llm/formats/Quantization.js","import":"/agi/llm/formats/Quantization.js","sourceHash":"f7a2023a142bedad1e3eef00d91e5578221d7250d8645963db0272be33fc4386","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/formats/Quantization.js#0004:isSupportedMetadataQuant","exportIndex":4,"name":"isSupportedMetadataQuant","kind":"function","signature":"isSupportedMetadataQuant(value)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/formats/Quantization.md","moduleTitle":"llm/formats/Quantization","source":"agi/llm/formats/Quantization.js","import":"/agi/llm/formats/Quantization.js","sourceHash":"f7a2023a142bedad1e3eef00d91e5578221d7250d8645963db0272be33fc4386","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/formats/Quantization.js#0005:quantBlockInfo","exportIndex":5,"name":"quantBlockInfo","kind":"function","signature":"quantBlockInfo(type)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/formats/Quantization.md","moduleTitle":"llm/formats/Quantization","source":"agi/llm/formats/Quantization.js","import":"/agi/llm/formats/Quantization.js","sourceHash":"f7a2023a142bedad1e3eef00d91e5578221d7250d8645963db0272be33fc4386","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/formats/Quantization.js#0006:tensorElementCount","exportIndex":6,"name":"tensorElementCount","kind":"function","signature":"tensorElementCount(dims = [])","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/formats/Quantization.md","moduleTitle":"llm/formats/Quantization","source":"agi/llm/formats/Quantization.js","import":"/agi/llm/formats/Quantization.js","sourceHash":"f7a2023a142bedad1e3eef00d91e5578221d7250d8645963db0272be33fc4386","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/formats/Quantization.js#0007:tensorByteSize","exportIndex":7,"name":"tensorByteSize","kind":"function","signature":"tensorByteSize(type, dims = [])","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/formats/Quantization.md","moduleTitle":"llm/formats/Quantization","source":"agi/llm/formats/Quantization.js","import":"/agi/llm/formats/Quantization.js","sourceHash":"f7a2023a142bedad1e3eef00d91e5578221d7250d8645963db0272be33fc4386","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/formats/Quantization.js#0008:GGML_QUANT_TYPES","exportIndex":8,"name":"GGML_QUANT_TYPES","kind":"constant","signature":"GGML_QUANT_TYPES","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/formats/Quantization.md","moduleTitle":"llm/formats/Quantization","source":"agi/llm/formats/Quantization.js","import":"/agi/llm/formats/Quantization.js","sourceHash":"f7a2023a142bedad1e3eef00d91e5578221d7250d8645963db0272be33fc4386","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/formats/Quantization.js#0009:SUPPORTED_METADATA_QUANTS","exportIndex":9,"name":"SUPPORTED_METADATA_QUANTS","kind":"constant","signature":"SUPPORTED_METADATA_QUANTS","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/formats/Quantization.md","moduleTitle":"llm/formats/Quantization","source":"agi/llm/formats/Quantization.js","import":"/agi/llm/formats/Quantization.js","sourceHash":"f7a2023a142bedad1e3eef00d91e5578221d7250d8645963db0272be33fc4386","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/formats/Quantization.js#0010:GGUF_FILE_TYPES","exportIndex":10,"name":"GGUF_FILE_TYPES","kind":"constant","signature":"GGUF_FILE_TYPES","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/formats/TensorShardIndex.md","moduleTitle":"llm/formats/TensorShardIndex","source":"agi/llm/formats/TensorShardIndex.js","import":"/agi/llm/formats/TensorShardIndex.js","sourceHash":"bf83fd0a109ee8b96bae74d3b80a2ce1c49f01b70e7f7db4503d27b638dda4c2","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/formats/TensorShardIndex.js","title":"llm/formats/TensorShardIndex","summary":"Accept legacy bare indexes and return a canonical, independently cloned v1 document.","exportCount":5}
{"schemaVersion":1,"modulePath":"agi/reference/llm/formats/TensorShardIndex.md","moduleTitle":"llm/formats/TensorShardIndex","source":"agi/llm/formats/TensorShardIndex.js","import":"/agi/llm/formats/TensorShardIndex.js","sourceHash":"bf83fd0a109ee8b96bae74d3b80a2ce1c49f01b70e7f7db4503d27b638dda4c2","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/formats/TensorShardIndex.js#0000:UnsupportedTensorShardIndexVersionError","exportIndex":0,"name":"UnsupportedTensorShardIndexVersionError","kind":"class","signature":"class UnsupportedTensorShardIndexVersionError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/formats/TensorShardIndex.md","moduleTitle":"llm/formats/TensorShardIndex","source":"agi/llm/formats/TensorShardIndex.js","import":"/agi/llm/formats/TensorShardIndex.js","sourceHash":"bf83fd0a109ee8b96bae74d3b80a2ce1c49f01b70e7f7db4503d27b638dda4c2","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/formats/TensorShardIndex.js#0001:TensorShardIndex","exportIndex":1,"name":"TensorShardIndex","kind":"class","signature":"class TensorShardIndex","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/formats/TensorShardIndex.md","moduleTitle":"llm/formats/TensorShardIndex","source":"agi/llm/formats/TensorShardIndex.js","import":"/agi/llm/formats/TensorShardIndex.js","sourceHash":"bf83fd0a109ee8b96bae74d3b80a2ce1c49f01b70e7f7db4503d27b638dda4c2","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/formats/TensorShardIndex.js#0002:prepareTensorShardIndexDocument","exportIndex":2,"name":"prepareTensorShardIndexDocument","kind":"function","signature":"prepareTensorShardIndexDocument(input)","summary":"Accept legacy bare indexes and return a canonical, independently cloned v1 document."}
{"schemaVersion":1,"modulePath":"agi/reference/llm/formats/TensorShardIndex.md","moduleTitle":"llm/formats/TensorShardIndex","source":"agi/llm/formats/TensorShardIndex.js","import":"/agi/llm/formats/TensorShardIndex.js","sourceHash":"bf83fd0a109ee8b96bae74d3b80a2ce1c49f01b70e7f7db4503d27b638dda4c2","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/formats/TensorShardIndex.js#0003:TENSOR_SHARD_INDEX_SCHEMA","exportIndex":3,"name":"TENSOR_SHARD_INDEX_SCHEMA","kind":"constant","signature":"TENSOR_SHARD_INDEX_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/formats/TensorShardIndex.md","moduleTitle":"llm/formats/TensorShardIndex","source":"agi/llm/formats/TensorShardIndex.js","import":"/agi/llm/formats/TensorShardIndex.js","sourceHash":"bf83fd0a109ee8b96bae74d3b80a2ce1c49f01b70e7f7db4503d27b638dda4c2","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/formats/TensorShardIndex.js#0004:TENSOR_SHARD_INDEX_SCHEMA_VERSION","exportIndex":4,"name":"TENSOR_SHARD_INDEX_SCHEMA_VERSION","kind":"constant","signature":"TENSOR_SHARD_INDEX_SCHEMA_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/index.js","title":"llm/index","summary":"","exportCount":63}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0000:AIDeviceProfiler","exportIndex":0,"name":"AIDeviceProfiler","kind":"re-export","signature":"AIDeviceProfiler","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0001:CONVERSATION_SCHEMA","exportIndex":1,"name":"CONVERSATION_SCHEMA","kind":"re-export","signature":"CONVERSATION_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0002:CpuTensorRunner","exportIndex":2,"name":"CpuTensorRunner","kind":"re-export","signature":"CpuTensorRunner","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0003:GGUFParser","exportIndex":3,"name":"GGUFParser","kind":"re-export","signature":"GGUFParser","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0004:GGUFTensorReader","exportIndex":4,"name":"GGUFTensorReader","kind":"re-export","signature":"GGUFTensorReader","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0005:Gemma4GraphRunner","exportIndex":5,"name":"Gemma4GraphRunner","kind":"re-export","signature":"Gemma4GraphRunner","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0006:GenerationLoop","exportIndex":6,"name":"GenerationLoop","kind":"re-export","signature":"GenerationLoop","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0007:GpuPrimitiveRunner","exportIndex":7,"name":"GpuPrimitiveRunner","kind":"re-export","signature":"GpuPrimitiveRunner","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0008:GraphCompiler","exportIndex":8,"name":"GraphCompiler","kind":"re-export","signature":"GraphCompiler","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0009:InferenceEngine","exportIndex":9,"name":"InferenceEngine","kind":"re-export","signature":"InferenceEngine","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0010:KVCache","exportIndex":10,"name":"KVCache","kind":"re-export","signature":"KVCache","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0011:K_QUANT_LAYOUTS","exportIndex":11,"name":"K_QUANT_LAYOUTS","kind":"re-export","signature":"K_QUANT_LAYOUTS","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0012:KernelRegistry","exportIndex":12,"name":"KernelRegistry","kind":"re-export","signature":"KernelRegistry","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0013:LLMRuntime","exportIndex":13,"name":"LLMRuntime","kind":"re-export","signature":"LLMRuntime","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0014:LLMSession","exportIndex":14,"name":"LLMSession","kind":"re-export","signature":"LLMSession","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0015:LLM_SCHEMA_VERSION","exportIndex":15,"name":"LLM_SCHEMA_VERSION","kind":"re-export","signature":"LLM_SCHEMA_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0016:LocalGGUFExecutor","exportIndex":16,"name":"LocalGGUFExecutor","kind":"re-export","signature":"LocalGGUFExecutor","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0017:MODEL_HANDLE_QUARANTINE_SCHEMA","exportIndex":17,"name":"MODEL_HANDLE_QUARANTINE_SCHEMA","kind":"re-export","signature":"MODEL_HANDLE_QUARANTINE_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0018:MODEL_HANDLE_RECORD_SCHEMA","exportIndex":18,"name":"MODEL_HANDLE_RECORD_SCHEMA","kind":"re-export","signature":"MODEL_HANDLE_RECORD_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0019:MODEL_HANDLE_RECORD_VERSION","exportIndex":19,"name":"MODEL_HANDLE_RECORD_VERSION","kind":"re-export","signature":"MODEL_HANDLE_RECORD_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0020:MODEL_PACKAGE_SCHEMA","exportIndex":20,"name":"MODEL_PACKAGE_SCHEMA","kind":"re-export","signature":"MODEL_PACKAGE_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0021:MODEL_REGISTRY_SCHEMA","exportIndex":21,"name":"MODEL_REGISTRY_SCHEMA","kind":"re-export","signature":"MODEL_REGISTRY_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0022:ModelCache","exportIndex":22,"name":"ModelCache","kind":"re-export","signature":"ModelCache","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0023:ModelHandleStore","exportIndex":23,"name":"ModelHandleStore","kind":"re-export","signature":"ModelHandleStore","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0024:ModelHandleStoreError","exportIndex":24,"name":"ModelHandleStoreError","kind":"re-export","signature":"ModelHandleStoreError","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0025:ModelPackageReader","exportIndex":25,"name":"ModelPackageReader","kind":"re-export","signature":"ModelPackageReader","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0026:ModelPackageWriter","exportIndex":26,"name":"ModelPackageWriter","kind":"re-export","signature":"ModelPackageWriter","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0027:ModelRegistry","exportIndex":27,"name":"ModelRegistry","kind":"re-export","signature":"ModelRegistry","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0028:OPFSStore","exportIndex":28,"name":"OPFSStore","kind":"re-export","signature":"OPFSStore","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0029:PagedAttention","exportIndex":29,"name":"PagedAttention","kind":"re-export","signature":"PagedAttention","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0030:PrefixBlockCache","exportIndex":30,"name":"PrefixBlockCache","kind":"re-export","signature":"PrefixBlockCache","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0031:PromptTemplate","exportIndex":31,"name":"PromptTemplate","kind":"re-export","signature":"PromptTemplate","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0032:Q8_0_LAYOUT","exportIndex":32,"name":"Q8_0_LAYOUT","kind":"re-export","signature":"Q8_0_LAYOUT","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0033:QuantizedMatVecRunner","exportIndex":33,"name":"QuantizedMatVecRunner","kind":"re-export","signature":"QuantizedMatVecRunner","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0034:Sampler","exportIndex":34,"name":"Sampler","kind":"re-export","signature":"Sampler","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0035:StaticMemoryPlanner","exportIndex":35,"name":"StaticMemoryPlanner","kind":"re-export","signature":"StaticMemoryPlanner","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0036:TENSOR_SHARD_INDEX_SCHEMA","exportIndex":36,"name":"TENSOR_SHARD_INDEX_SCHEMA","kind":"re-export","signature":"TENSOR_SHARD_INDEX_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0037:TENSOR_SHARD_INDEX_SCHEMA_VERSION","exportIndex":37,"name":"TENSOR_SHARD_INDEX_SCHEMA_VERSION","kind":"re-export","signature":"TENSOR_SHARD_INDEX_SCHEMA_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0038:TensorShardIndex","exportIndex":38,"name":"TensorShardIndex","kind":"re-export","signature":"TensorShardIndex","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0039:Tokenizer","exportIndex":39,"name":"Tokenizer","kind":"re-export","signature":"Tokenizer","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0040:ToolBridge","exportIndex":40,"name":"ToolBridge","kind":"re-export","signature":"ToolBridge","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0041:TransformerExecutor","exportIndex":41,"name":"TransformerExecutor","kind":"re-export","signature":"TransformerExecutor","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0042:UnsupportedTensorShardIndexVersionError","exportIndex":42,"name":"UnsupportedTensorShardIndexVersionError","kind":"re-export","signature":"UnsupportedTensorShardIndexVersionError","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0043:VFSConversationStore","exportIndex":43,"name":"VFSConversationStore","kind":"re-export","signature":"VFSConversationStore","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0044:WeightCache","exportIndex":44,"name":"WeightCache","kind":"re-export","signature":"WeightCache","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0045:assertShaderCompiled","exportIndex":45,"name":"assertShaderCompiled","kind":"re-export","signature":"assertShaderCompiled","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0046:checksumBytes","exportIndex":46,"name":"checksumBytes","kind":"re-export","signature":"checksumBytes","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0047:checksumString","exportIndex":47,"name":"checksumString","kind":"re-export","signature":"checksumString","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0048:createComputePipelineChecked","exportIndex":48,"name":"createComputePipelineChecked","kind":"re-export","signature":"createComputePipelineChecked","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0049:kernelNameForQuant","exportIndex":49,"name":"kernelNameForQuant","kind":"re-export","signature":"kernelNameForQuant","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0050:prepareConversation","exportIndex":50,"name":"prepareConversation","kind":"re-export","signature":"prepareConversation","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0051:prepareLastModelRecord","exportIndex":51,"name":"prepareLastModelRecord","kind":"re-export","signature":"prepareLastModelRecord","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0052:prepareModelHandleRecord","exportIndex":52,"name":"prepareModelHandleRecord","kind":"re-export","signature":"prepareModelHandleRecord","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0053:prepareModelPackage","exportIndex":53,"name":"prepareModelPackage","kind":"re-export","signature":"prepareModelPackage","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0054:prepareModelRegistry","exportIndex":54,"name":"prepareModelRegistry","kind":"re-export","signature":"prepareModelRegistry","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0055:prepareTensorShardIndexDocument","exportIndex":55,"name":"prepareTensorShardIndexDocument","kind":"re-export","signature":"prepareTensorShardIndexDocument","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0056:rowStrideForQuant","exportIndex":56,"name":"rowStrideForQuant","kind":"re-export","signature":"rowStrideForQuant","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0057:shaderQ4K","exportIndex":57,"name":"shaderQ4K","kind":"re-export","signature":"shaderQ4K","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0058:shaderQ5K","exportIndex":58,"name":"shaderQ5K","kind":"re-export","signature":"shaderQ5K","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0059:shaderQ6K","exportIndex":59,"name":"shaderQ6K","kind":"re-export","signature":"shaderQ6K","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0060:shaderQ80","exportIndex":60,"name":"shaderQ80","kind":"re-export","signature":"shaderQ80","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0061:validateConversationId","exportIndex":61,"name":"validateConversationId","kind":"re-export","signature":"validateConversationId","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/index.md","moduleTitle":"llm/index","source":"agi/llm/index.js","import":"/agi/llm/index.js","sourceHash":"7a63122268e40a7d5b4c4af344681240db64d95bf9122ad16bc9845ba0d9a007","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/index.js#0062:validateModelId","exportIndex":62,"name":"validateModelId","kind":"re-export","signature":"validateModelId","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/inference/CacheGovernor.md","moduleTitle":"llm/inference/CacheGovernor","source":"agi/llm/inference/CacheGovernor.js","import":"/agi/llm/inference/CacheGovernor.js","sourceHash":"678bf1b0b84834d9b88952f07e3e69eb481d83f331d7701fbe8b510945f596c0","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/inference/CacheGovernor.js","title":"llm/inference/CacheGovernor","summary":"","exportCount":5}
{"schemaVersion":1,"modulePath":"agi/reference/llm/inference/CacheGovernor.md","moduleTitle":"llm/inference/CacheGovernor","source":"agi/llm/inference/CacheGovernor.js","import":"/agi/llm/inference/CacheGovernor.js","sourceHash":"678bf1b0b84834d9b88952f07e3e69eb481d83f331d7701fbe8b510945f596c0","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/inference/CacheGovernor.js#0000:CacheGovernor","exportIndex":0,"name":"CacheGovernor","kind":"class","signature":"class CacheGovernor","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/inference/CacheGovernor.md","moduleTitle":"llm/inference/CacheGovernor","source":"agi/llm/inference/CacheGovernor.js","import":"/agi/llm/inference/CacheGovernor.js","sourceHash":"678bf1b0b84834d9b88952f07e3e69eb481d83f331d7701fbe8b510945f596c0","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/inference/CacheGovernor.js#0001:planAdaptivePreload","exportIndex":1,"name":"planAdaptivePreload","kind":"function","signature":"planAdaptivePreload(tensors = [], options = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/inference/CacheGovernor.md","moduleTitle":"llm/inference/CacheGovernor","source":"agi/llm/inference/CacheGovernor.js","import":"/agi/llm/inference/CacheGovernor.js","sourceHash":"678bf1b0b84834d9b88952f07e3e69eb481d83f331d7701fbe8b510945f596c0","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/inference/CacheGovernor.js#0002:adaptiveWeightPriority","exportIndex":2,"name":"adaptiveWeightPriority","kind":"function","signature":"adaptiveWeightPriority(tensor)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/inference/CacheGovernor.md","moduleTitle":"llm/inference/CacheGovernor","source":"agi/llm/inference/CacheGovernor.js","import":"/agi/llm/inference/CacheGovernor.js","sourceHash":"678bf1b0b84834d9b88952f07e3e69eb481d83f331d7701fbe8b510945f596c0","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/inference/CacheGovernor.js#0003:adaptiveEvictionScore","exportIndex":3,"name":"adaptiveEvictionScore","kind":"function","signature":"adaptiveEvictionScore(name, entry = {}, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/inference/CacheGovernor.md","moduleTitle":"llm/inference/CacheGovernor","source":"agi/llm/inference/CacheGovernor.js","import":"/agi/llm/inference/CacheGovernor.js","sourceHash":"678bf1b0b84834d9b88952f07e3e69eb481d83f331d7701fbe8b510945f596c0","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/inference/CacheGovernor.js#0004:weightFamily","exportIndex":4,"name":"weightFamily","kind":"function","signature":"weightFamily(name)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/inference/CpuTensorRunner.md","moduleTitle":"llm/inference/CpuTensorRunner","source":"agi/llm/inference/CpuTensorRunner.js","import":"/agi/llm/inference/CpuTensorRunner.js","sourceHash":"c2588dc9c5ee2b947451104f28ee92dff1e1f17363ed84f85985ca5cf0fc7166","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/inference/CpuTensorRunner.js","title":"llm/inference/CpuTensorRunner","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/llm/inference/CpuTensorRunner.md","moduleTitle":"llm/inference/CpuTensorRunner","source":"agi/llm/inference/CpuTensorRunner.js","import":"/agi/llm/inference/CpuTensorRunner.js","sourceHash":"c2588dc9c5ee2b947451104f28ee92dff1e1f17363ed84f85985ca5cf0fc7166","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/inference/CpuTensorRunner.js#0000:CpuTensorRunner","exportIndex":0,"name":"CpuTensorRunner","kind":"class","signature":"class CpuTensorRunner","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/inference/Gemma4GraphRunner.md","moduleTitle":"llm/inference/Gemma4GraphRunner","source":"agi/llm/inference/Gemma4GraphRunner.js","import":"/agi/llm/inference/Gemma4GraphRunner.js","sourceHash":"b06865d59a227b489cf458884419f550c193fcd4f348c822ea648895665e2a51","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/inference/Gemma4GraphRunner.js","title":"llm/inference/Gemma4GraphRunner","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/llm/inference/Gemma4GraphRunner.md","moduleTitle":"llm/inference/Gemma4GraphRunner","source":"agi/llm/inference/Gemma4GraphRunner.js","import":"/agi/llm/inference/Gemma4GraphRunner.js","sourceHash":"b06865d59a227b489cf458884419f550c193fcd4f348c822ea648895665e2a51","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/inference/Gemma4GraphRunner.js#0000:Gemma4GraphRunner","exportIndex":0,"name":"Gemma4GraphRunner","kind":"class","signature":"class Gemma4GraphRunner","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/inference/GenerationLoop.md","moduleTitle":"llm/inference/GenerationLoop","source":"agi/llm/inference/GenerationLoop.js","import":"/agi/llm/inference/GenerationLoop.js","sourceHash":"05147a76cb527903174acb5343064fe163d06c7a1c0dfccbc0b2b3baef52aeb7","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/inference/GenerationLoop.js","title":"llm/inference/GenerationLoop","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/llm/inference/GenerationLoop.md","moduleTitle":"llm/inference/GenerationLoop","source":"agi/llm/inference/GenerationLoop.js","import":"/agi/llm/inference/GenerationLoop.js","sourceHash":"05147a76cb527903174acb5343064fe163d06c7a1c0dfccbc0b2b3baef52aeb7","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/inference/GenerationLoop.js#0000:GenerationLoop","exportIndex":0,"name":"GenerationLoop","kind":"class","signature":"class GenerationLoop","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/inference/GpuPrimitiveRunner.md","moduleTitle":"llm/inference/GpuPrimitiveRunner","source":"agi/llm/inference/GpuPrimitiveRunner.js","import":"/agi/llm/inference/GpuPrimitiveRunner.js","sourceHash":"afb6ff6ca17b455d5d8111a205bce1064ade992a1c9179bd2cb23a9c15c84c70","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/inference/GpuPrimitiveRunner.js","title":"llm/inference/GpuPrimitiveRunner","summary":"","exportCount":3}
{"schemaVersion":1,"modulePath":"agi/reference/llm/inference/GpuPrimitiveRunner.md","moduleTitle":"llm/inference/GpuPrimitiveRunner","source":"agi/llm/inference/GpuPrimitiveRunner.js","import":"/agi/llm/inference/GpuPrimitiveRunner.js","sourceHash":"afb6ff6ca17b455d5d8111a205bce1064ade992a1c9179bd2cb23a9c15c84c70","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/inference/GpuPrimitiveRunner.js#0000:GpuPrimitiveRunner","exportIndex":0,"name":"GpuPrimitiveRunner","kind":"class","signature":"class GpuPrimitiveRunner","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/inference/GpuPrimitiveRunner.md","moduleTitle":"llm/inference/GpuPrimitiveRunner","source":"agi/llm/inference/GpuPrimitiveRunner.js","import":"/agi/llm/inference/GpuPrimitiveRunner.js","sourceHash":"afb6ff6ca17b455d5d8111a205bce1064ade992a1c9179bd2cb23a9c15c84c70","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/inference/GpuPrimitiveRunner.js#0001:blockedTokenKey","exportIndex":1,"name":"blockedTokenKey","kind":"function","signature":"blockedTokenKey(ids, vocabSize)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/inference/GpuPrimitiveRunner.md","moduleTitle":"llm/inference/GpuPrimitiveRunner","source":"agi/llm/inference/GpuPrimitiveRunner.js","import":"/agi/llm/inference/GpuPrimitiveRunner.js","sourceHash":"afb6ff6ca17b455d5d8111a205bce1064ade992a1c9179bd2cb23a9c15c84c70","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/inference/GpuPrimitiveRunner.js#0002:mapAsyncWithTimeout","exportIndex":2,"name":"mapAsyncWithTimeout","kind":"function","signature":"mapAsyncWithTimeout(buffer, mode, timeoutMs, message)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/inference/GpuRuntimeResources.md","moduleTitle":"llm/inference/GpuRuntimeResources","source":"agi/llm/inference/GpuRuntimeResources.js","import":"/agi/llm/inference/GpuRuntimeResources.js","sourceHash":"bcf6b65ecef401e35378b047bf1085f9e9e7152a1258c249d1034a42bb911f79","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/inference/GpuRuntimeResources.js","title":"llm/inference/GpuRuntimeResources","summary":"","exportCount":4}
{"schemaVersion":1,"modulePath":"agi/reference/llm/inference/GpuRuntimeResources.md","moduleTitle":"llm/inference/GpuRuntimeResources","source":"agi/llm/inference/GpuRuntimeResources.js","import":"/agi/llm/inference/GpuRuntimeResources.js","sourceHash":"bcf6b65ecef401e35378b047bf1085f9e9e7152a1258c249d1034a42bb911f79","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/inference/GpuRuntimeResources.js#0000:GpuParameterArena","exportIndex":0,"name":"GpuParameterArena","kind":"class","signature":"class GpuParameterArena","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/inference/GpuRuntimeResources.md","moduleTitle":"llm/inference/GpuRuntimeResources","source":"agi/llm/inference/GpuRuntimeResources.js","import":"/agi/llm/inference/GpuRuntimeResources.js","sourceHash":"bcf6b65ecef401e35378b047bf1085f9e9e7152a1258c249d1034a42bb911f79","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/inference/GpuRuntimeResources.js#0001:GpuBindGroupCache","exportIndex":1,"name":"GpuBindGroupCache","kind":"class","signature":"class GpuBindGroupCache","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/inference/GpuRuntimeResources.md","moduleTitle":"llm/inference/GpuRuntimeResources","source":"agi/llm/inference/GpuRuntimeResources.js","import":"/agi/llm/inference/GpuRuntimeResources.js","sourceHash":"bcf6b65ecef401e35378b047bf1085f9e9e7152a1258c249d1034a42bb911f79","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/inference/GpuRuntimeResources.js#0002:uniformBinding","exportIndex":2,"name":"uniformBinding","kind":"function","signature":"uniformBinding(allocation)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/inference/GpuRuntimeResources.md","moduleTitle":"llm/inference/GpuRuntimeResources","source":"agi/llm/inference/GpuRuntimeResources.js","import":"/agi/llm/inference/GpuRuntimeResources.js","sourceHash":"bcf6b65ecef401e35378b047bf1085f9e9e7152a1258c249d1034a42bb911f79","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/inference/GpuRuntimeResources.js#0003:isArenaAllocation","exportIndex":3,"name":"isArenaAllocation","kind":"function","signature":"isArenaAllocation(value)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/inference/GraphCompiler.md","moduleTitle":"llm/inference/GraphCompiler","source":"agi/llm/inference/GraphCompiler.js","import":"/agi/llm/inference/GraphCompiler.js","sourceHash":"30fb4ea82efd7f95c5fb61c28ca221010ed258a9d482cc7b5091a4c63b6c605b","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/inference/GraphCompiler.js","title":"llm/inference/GraphCompiler","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/llm/inference/GraphCompiler.md","moduleTitle":"llm/inference/GraphCompiler","source":"agi/llm/inference/GraphCompiler.js","import":"/agi/llm/inference/GraphCompiler.js","sourceHash":"30fb4ea82efd7f95c5fb61c28ca221010ed258a9d482cc7b5091a4c63b6c605b","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/inference/GraphCompiler.js#0000:GraphCompiler","exportIndex":0,"name":"GraphCompiler","kind":"class","signature":"class GraphCompiler","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/inference/InferenceEngine.md","moduleTitle":"llm/inference/InferenceEngine","source":"agi/llm/inference/InferenceEngine.js","import":"/agi/llm/inference/InferenceEngine.js","sourceHash":"8398db540595e51abbd5798548e3e7c3943cc41ca607eb35d68f31f838a2d132","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/inference/InferenceEngine.js","title":"llm/inference/InferenceEngine","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/llm/inference/InferenceEngine.md","moduleTitle":"llm/inference/InferenceEngine","source":"agi/llm/inference/InferenceEngine.js","import":"/agi/llm/inference/InferenceEngine.js","sourceHash":"8398db540595e51abbd5798548e3e7c3943cc41ca607eb35d68f31f838a2d132","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/inference/InferenceEngine.js#0000:InferenceEngine","exportIndex":0,"name":"InferenceEngine","kind":"class","signature":"class InferenceEngine","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/inference/KVCache.md","moduleTitle":"llm/inference/KVCache","source":"agi/llm/inference/KVCache.js","import":"/agi/llm/inference/KVCache.js","sourceHash":"d9c20edbeb25e42bd6fb81b302286919a2a1aeb217a7be1d1f2d9e71cb4bf385","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/inference/KVCache.js","title":"llm/inference/KVCache","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/llm/inference/KVCache.md","moduleTitle":"llm/inference/KVCache","source":"agi/llm/inference/KVCache.js","import":"/agi/llm/inference/KVCache.js","sourceHash":"d9c20edbeb25e42bd6fb81b302286919a2a1aeb217a7be1d1f2d9e71cb4bf385","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/inference/KVCache.js#0000:KVCache","exportIndex":0,"name":"KVCache","kind":"class","signature":"class KVCache","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/inference/LocalGGUFExecutor.md","moduleTitle":"llm/inference/LocalGGUFExecutor","source":"agi/llm/inference/LocalGGUFExecutor.js","import":"/agi/llm/inference/LocalGGUFExecutor.js","sourceHash":"615988a623002f6b6869c0e6551a9e56efdc8c54722ac5215fc60493544c5711","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/inference/LocalGGUFExecutor.js","title":"llm/inference/LocalGGUFExecutor","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/llm/inference/LocalGGUFExecutor.md","moduleTitle":"llm/inference/LocalGGUFExecutor","source":"agi/llm/inference/LocalGGUFExecutor.js","import":"/agi/llm/inference/LocalGGUFExecutor.js","sourceHash":"615988a623002f6b6869c0e6551a9e56efdc8c54722ac5215fc60493544c5711","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/inference/LocalGGUFExecutor.js#0000:LocalGGUFExecutor","exportIndex":0,"name":"LocalGGUFExecutor","kind":"class","signature":"class LocalGGUFExecutor","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/inference/PagedAttention.md","moduleTitle":"llm/inference/PagedAttention","source":"agi/llm/inference/PagedAttention.js","import":"/agi/llm/inference/PagedAttention.js","sourceHash":"c941566582c2757e53b4260fdd676a70c898dc183570958ddc69fb3cf546e48b","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/inference/PagedAttention.js","title":"llm/inference/PagedAttention","summary":"","exportCount":3}
{"schemaVersion":1,"modulePath":"agi/reference/llm/inference/PagedAttention.md","moduleTitle":"llm/inference/PagedAttention","source":"agi/llm/inference/PagedAttention.js","import":"/agi/llm/inference/PagedAttention.js","sourceHash":"c941566582c2757e53b4260fdd676a70c898dc183570958ddc69fb3cf546e48b","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/inference/PagedAttention.js#0000:PagedAttention","exportIndex":0,"name":"PagedAttention","kind":"class","signature":"class PagedAttention","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/inference/PagedAttention.md","moduleTitle":"llm/inference/PagedAttention","source":"agi/llm/inference/PagedAttention.js","import":"/agi/llm/inference/PagedAttention.js","sourceHash":"c941566582c2757e53b4260fdd676a70c898dc183570958ddc69fb3cf546e48b","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/inference/PagedAttention.js#0001:PrefixBlockCache","exportIndex":1,"name":"PrefixBlockCache","kind":"class","signature":"class PrefixBlockCache","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/inference/PagedAttention.md","moduleTitle":"llm/inference/PagedAttention","source":"agi/llm/inference/PagedAttention.js","import":"/agi/llm/inference/PagedAttention.js","sourceHash":"c941566582c2757e53b4260fdd676a70c898dc183570958ddc69fb3cf546e48b","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/inference/PagedAttention.js#0002:blockHash","exportIndex":2,"name":"blockHash","kind":"function","signature":"blockHash(namespace, prefixHash, blockTokens)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/inference/QuantizedMatVecRunner.md","moduleTitle":"llm/inference/QuantizedMatVecRunner","source":"agi/llm/inference/QuantizedMatVecRunner.js","import":"/agi/llm/inference/QuantizedMatVecRunner.js","sourceHash":"dc3596344dda9371cbfe8608dd4ebcfd96438f40595e2e36039a6ccff475c04d","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/inference/QuantizedMatVecRunner.js","title":"llm/inference/QuantizedMatVecRunner","summary":"","exportCount":5}
{"schemaVersion":1,"modulePath":"agi/reference/llm/inference/QuantizedMatVecRunner.md","moduleTitle":"llm/inference/QuantizedMatVecRunner","source":"agi/llm/inference/QuantizedMatVecRunner.js","import":"/agi/llm/inference/QuantizedMatVecRunner.js","sourceHash":"dc3596344dda9371cbfe8608dd4ebcfd96438f40595e2e36039a6ccff475c04d","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/inference/QuantizedMatVecRunner.js#0000:QuantizedMatVecRunner","exportIndex":0,"name":"QuantizedMatVecRunner","kind":"class","signature":"class QuantizedMatVecRunner","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/inference/QuantizedMatVecRunner.md","moduleTitle":"llm/inference/QuantizedMatVecRunner","source":"agi/llm/inference/QuantizedMatVecRunner.js","import":"/agi/llm/inference/QuantizedMatVecRunner.js","sourceHash":"dc3596344dda9371cbfe8608dd4ebcfd96438f40595e2e36039a6ccff475c04d","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/inference/QuantizedMatVecRunner.js#0001:kernelNameForQuant","exportIndex":1,"name":"kernelNameForQuant","kind":"function","signature":"kernelNameForQuant(quantization)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/inference/QuantizedMatVecRunner.md","moduleTitle":"llm/inference/QuantizedMatVecRunner","source":"agi/llm/inference/QuantizedMatVecRunner.js","import":"/agi/llm/inference/QuantizedMatVecRunner.js","sourceHash":"dc3596344dda9371cbfe8608dd4ebcfd96438f40595e2e36039a6ccff475c04d","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/inference/QuantizedMatVecRunner.js#0002:batchedKernelNameForQuant","exportIndex":2,"name":"batchedKernelNameForQuant","kind":"function","signature":"batchedKernelNameForQuant(quantization)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/inference/QuantizedMatVecRunner.md","moduleTitle":"llm/inference/QuantizedMatVecRunner","source":"agi/llm/inference/QuantizedMatVecRunner.js","import":"/agi/llm/inference/QuantizedMatVecRunner.js","sourceHash":"dc3596344dda9371cbfe8608dd4ebcfd96438f40595e2e36039a6ccff475c04d","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/inference/QuantizedMatVecRunner.js#0003:rowStrideForQuant","exportIndex":3,"name":"rowStrideForQuant","kind":"function","signature":"rowStrideForQuant(quantization, cols)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/inference/QuantizedMatVecRunner.md","moduleTitle":"llm/inference/QuantizedMatVecRunner","source":"agi/llm/inference/QuantizedMatVecRunner.js","import":"/agi/llm/inference/QuantizedMatVecRunner.js","sourceHash":"dc3596344dda9371cbfe8608dd4ebcfd96438f40595e2e36039a6ccff475c04d","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/inference/QuantizedMatVecRunner.js#0004:createKQuantParityProbeData","exportIndex":4,"name":"createKQuantParityProbeData","kind":"function","signature":"createKQuantParityProbeData(quantization, { rows = SUBGROUP_PROBE_ROWS } = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/inference/StaticMemoryPlanner.md","moduleTitle":"llm/inference/StaticMemoryPlanner","source":"agi/llm/inference/StaticMemoryPlanner.js","import":"/agi/llm/inference/StaticMemoryPlanner.js","sourceHash":"263245e37abfd8cce2c8de11df753bff164b998624a21f7ca96fd5a415c1cf72","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/inference/StaticMemoryPlanner.js","title":"llm/inference/StaticMemoryPlanner","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/llm/inference/StaticMemoryPlanner.md","moduleTitle":"llm/inference/StaticMemoryPlanner","source":"agi/llm/inference/StaticMemoryPlanner.js","import":"/agi/llm/inference/StaticMemoryPlanner.js","sourceHash":"263245e37abfd8cce2c8de11df753bff164b998624a21f7ca96fd5a415c1cf72","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/inference/StaticMemoryPlanner.js#0000:StaticMemoryPlanner","exportIndex":0,"name":"StaticMemoryPlanner","kind":"class","signature":"class StaticMemoryPlanner","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/inference/TransformerExecutor.md","moduleTitle":"llm/inference/TransformerExecutor","source":"agi/llm/inference/TransformerExecutor.js","import":"/agi/llm/inference/TransformerExecutor.js","sourceHash":"89f26b7091ee7dfa3ee3c7d3ef5f5af81315f19348762f3e7ab355433008539f","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/inference/TransformerExecutor.js","title":"llm/inference/TransformerExecutor","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/llm/inference/TransformerExecutor.md","moduleTitle":"llm/inference/TransformerExecutor","source":"agi/llm/inference/TransformerExecutor.js","import":"/agi/llm/inference/TransformerExecutor.js","sourceHash":"89f26b7091ee7dfa3ee3c7d3ef5f5af81315f19348762f3e7ab355433008539f","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/inference/TransformerExecutor.js#0000:TransformerExecutor","exportIndex":0,"name":"TransformerExecutor","kind":"class","signature":"class TransformerExecutor","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/inference/WeightCache.md","moduleTitle":"llm/inference/WeightCache","source":"agi/llm/inference/WeightCache.js","import":"/agi/llm/inference/WeightCache.js","sourceHash":"196c9d86c78264fefad15369fcfa04bab453c289a4c4fbc3c67e6e6a9c28b5fc","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/inference/WeightCache.js","title":"llm/inference/WeightCache","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/llm/inference/WeightCache.md","moduleTitle":"llm/inference/WeightCache","source":"agi/llm/inference/WeightCache.js","import":"/agi/llm/inference/WeightCache.js","sourceHash":"196c9d86c78264fefad15369fcfa04bab453c289a4c4fbc3c67e6e6a9c28b5fc","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/inference/WeightCache.js#0000:WeightCache","exportIndex":0,"name":"WeightCache","kind":"class","signature":"class WeightCache","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/KernelRegistry.md","moduleTitle":"llm/kernels/KernelRegistry","source":"agi/llm/kernels/KernelRegistry.js","import":"/agi/llm/kernels/KernelRegistry.js","sourceHash":"9a5e33335548532e5b6c2cb2513c0086b3cd3f125e336e175b61d8056cd991d0","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/kernels/KernelRegistry.js","title":"llm/kernels/KernelRegistry","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/KernelRegistry.md","moduleTitle":"llm/kernels/KernelRegistry","source":"agi/llm/kernels/KernelRegistry.js","import":"/agi/llm/kernels/KernelRegistry.js","sourceHash":"9a5e33335548532e5b6c2cb2513c0086b3cd3f125e336e175b61d8056cd991d0","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/KernelRegistry.js#0000:KernelRegistry","exportIndex":0,"name":"KernelRegistry","kind":"class","signature":"class KernelRegistry","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/PipelineUtils.md","moduleTitle":"llm/kernels/PipelineUtils","source":"agi/llm/kernels/PipelineUtils.js","import":"/agi/llm/kernels/PipelineUtils.js","sourceHash":"867a34da5e41e5f69215f113d0d1a0490cf4af3b332dcef251f3fc0d7c71c535","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/kernels/PipelineUtils.js","title":"llm/kernels/PipelineUtils","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/PipelineUtils.md","moduleTitle":"llm/kernels/PipelineUtils","source":"agi/llm/kernels/PipelineUtils.js","import":"/agi/llm/kernels/PipelineUtils.js","sourceHash":"867a34da5e41e5f69215f113d0d1a0490cf4af3b332dcef251f3fc0d7c71c535","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/PipelineUtils.js#0000:createComputePipelineChecked","exportIndex":0,"name":"createComputePipelineChecked","kind":"function","signature":"async createComputePipelineChecked(device, module, { label, name = label, entryPoint = 'main' } = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/PipelineUtils.md","moduleTitle":"llm/kernels/PipelineUtils","source":"agi/llm/kernels/PipelineUtils.js","import":"/agi/llm/kernels/PipelineUtils.js","sourceHash":"867a34da5e41e5f69215f113d0d1a0490cf4af3b332dcef251f3fc0d7c71c535","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/PipelineUtils.js#0001:assertShaderCompiled","exportIndex":1,"name":"assertShaderCompiled","kind":"function","signature":"async assertShaderCompiled(module, name = 'shader')","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/attention_decode.md","moduleTitle":"llm/kernels/shaders/attention_decode","source":"agi/llm/kernels/shaders/attention_decode.js","import":"/agi/llm/kernels/shaders/attention_decode.js","sourceHash":"0be9494f3d3038420e5d1ef789b7101d019a2f21c1b32bf7d5c8581665d2280f","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/kernels/shaders/attention_decode.js","title":"llm/kernels/shaders/attention_decode","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/attention_decode.md","moduleTitle":"llm/kernels/shaders/attention_decode","source":"agi/llm/kernels/shaders/attention_decode.js","import":"/agi/llm/kernels/shaders/attention_decode.js","sourceHash":"0be9494f3d3038420e5d1ef789b7101d019a2f21c1b32bf7d5c8581665d2280f","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/attention_decode.js#0000:shader","exportIndex":0,"name":"shader","kind":"function","signature":"shader()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/attention_decode_legacy.md","moduleTitle":"llm/kernels/shaders/attention_decode_legacy","source":"agi/llm/kernels/shaders/attention_decode_legacy.js","import":"/agi/llm/kernels/shaders/attention_decode_legacy.js","sourceHash":"6fd4106a4e62961fe6b2444ca36a061e23487641f8ebdc9082215f704b29f602","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/kernels/shaders/attention_decode_legacy.js","title":"llm/kernels/shaders/attention_decode_legacy","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/attention_decode_legacy.md","moduleTitle":"llm/kernels/shaders/attention_decode_legacy","source":"agi/llm/kernels/shaders/attention_decode_legacy.js","import":"/agi/llm/kernels/shaders/attention_decode_legacy.js","sourceHash":"6fd4106a4e62961fe6b2444ca36a061e23487641f8ebdc9082215f704b29f602","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/attention_decode_legacy.js#0000:shader","exportIndex":0,"name":"shader","kind":"function","signature":"shader()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/attention_prefill_legacy.md","moduleTitle":"llm/kernels/shaders/attention_prefill_legacy","source":"agi/llm/kernels/shaders/attention_prefill_legacy.js","import":"/agi/llm/kernels/shaders/attention_prefill_legacy.js","sourceHash":"84b9cc7369771e1ab0840029198d6b86169ad43cac083d2e188e8ab60d5fa88f","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/kernels/shaders/attention_prefill_legacy.js","title":"llm/kernels/shaders/attention_prefill_legacy","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/attention_prefill_legacy.md","moduleTitle":"llm/kernels/shaders/attention_prefill_legacy","source":"agi/llm/kernels/shaders/attention_prefill_legacy.js","import":"/agi/llm/kernels/shaders/attention_prefill_legacy.js","sourceHash":"84b9cc7369771e1ab0840029198d6b86169ad43cac083d2e188e8ab60d5fa88f","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/attention_prefill_legacy.js#0000:shader","exportIndex":0,"name":"shader","kind":"function","signature":"shader()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/attention_prefill_tiled.md","moduleTitle":"llm/kernels/shaders/attention_prefill_tiled","source":"agi/llm/kernels/shaders/attention_prefill_tiled.js","import":"/agi/llm/kernels/shaders/attention_prefill_tiled.js","sourceHash":"2bd1338a663e90012322d133cca6b4232f4511cda58df2d065a3c9998fe5de9f","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/kernels/shaders/attention_prefill_tiled.js","title":"llm/kernels/shaders/attention_prefill_tiled","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/attention_prefill_tiled.md","moduleTitle":"llm/kernels/shaders/attention_prefill_tiled","source":"agi/llm/kernels/shaders/attention_prefill_tiled.js","import":"/agi/llm/kernels/shaders/attention_prefill_tiled.js","sourceHash":"2bd1338a663e90012322d133cca6b4232f4511cda58df2d065a3c9998fe5de9f","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/attention_prefill_tiled.js#0000:shader","exportIndex":0,"name":"shader","kind":"function","signature":"shader()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/dequant_row_dense.md","moduleTitle":"llm/kernels/shaders/dequant_row_dense","source":"agi/llm/kernels/shaders/dequant_row_dense.js","import":"/agi/llm/kernels/shaders/dequant_row_dense.js","sourceHash":"7432a0f5e4b72d8d333dd13088662ffa2d660ffd1abaa6291d6cafbcda77c991","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/kernels/shaders/dequant_row_dense.js","title":"llm/kernels/shaders/dequant_row_dense","summary":"","exportCount":4}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/dequant_row_dense.md","moduleTitle":"llm/kernels/shaders/dequant_row_dense","source":"agi/llm/kernels/shaders/dequant_row_dense.js","import":"/agi/llm/kernels/shaders/dequant_row_dense.js","sourceHash":"7432a0f5e4b72d8d333dd13088662ffa2d660ffd1abaa6291d6cafbcda77c991","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/dequant_row_dense.js#0000:shader","exportIndex":0,"name":"shader","kind":"function","signature":"shader({ format = 'F16' } = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/dequant_row_dense.md","moduleTitle":"llm/kernels/shaders/dequant_row_dense","source":"agi/llm/kernels/shaders/dequant_row_dense.js","import":"/agi/llm/kernels/shaders/dequant_row_dense.js","sourceHash":"7432a0f5e4b72d8d333dd13088662ffa2d660ffd1abaa6291d6cafbcda77c991","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/dequant_row_dense.js#0001:shaderDequantF32","exportIndex":1,"name":"shaderDequantF32","kind":"function","signature":"shaderDequantF32(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/dequant_row_dense.md","moduleTitle":"llm/kernels/shaders/dequant_row_dense","source":"agi/llm/kernels/shaders/dequant_row_dense.js","import":"/agi/llm/kernels/shaders/dequant_row_dense.js","sourceHash":"7432a0f5e4b72d8d333dd13088662ffa2d660ffd1abaa6291d6cafbcda77c991","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/dequant_row_dense.js#0002:shaderDequantF16","exportIndex":2,"name":"shaderDequantF16","kind":"function","signature":"shaderDequantF16(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/dequant_row_dense.md","moduleTitle":"llm/kernels/shaders/dequant_row_dense","source":"agi/llm/kernels/shaders/dequant_row_dense.js","import":"/agi/llm/kernels/shaders/dequant_row_dense.js","sourceHash":"7432a0f5e4b72d8d333dd13088662ffa2d660ffd1abaa6291d6cafbcda77c991","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/dequant_row_dense.js#0003:shaderDequantBF16","exportIndex":3,"name":"shaderDequantBF16","kind":"function","signature":"shaderDequantBF16(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/dequant_row_k_quant.md","moduleTitle":"llm/kernels/shaders/dequant_row_k_quant","source":"agi/llm/kernels/shaders/dequant_row_k_quant.js","import":"/agi/llm/kernels/shaders/dequant_row_k_quant.js","sourceHash":"f365dd3956e7b7dd8551e01dcff0fe1ed0cbecbd25aa07e1567f9f5b0bcdc310","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/kernels/shaders/dequant_row_k_quant.js","title":"llm/kernels/shaders/dequant_row_k_quant","summary":"","exportCount":4}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/dequant_row_k_quant.md","moduleTitle":"llm/kernels/shaders/dequant_row_k_quant","source":"agi/llm/kernels/shaders/dequant_row_k_quant.js","import":"/agi/llm/kernels/shaders/dequant_row_k_quant.js","sourceHash":"f365dd3956e7b7dd8551e01dcff0fe1ed0cbecbd25aa07e1567f9f5b0bcdc310","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/dequant_row_k_quant.js#0000:shader","exportIndex":0,"name":"shader","kind":"function","signature":"shader({ quant = 'Q4_K' } = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/dequant_row_k_quant.md","moduleTitle":"llm/kernels/shaders/dequant_row_k_quant","source":"agi/llm/kernels/shaders/dequant_row_k_quant.js","import":"/agi/llm/kernels/shaders/dequant_row_k_quant.js","sourceHash":"f365dd3956e7b7dd8551e01dcff0fe1ed0cbecbd25aa07e1567f9f5b0bcdc310","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/dequant_row_k_quant.js#0001:shaderDequantQ4K","exportIndex":1,"name":"shaderDequantQ4K","kind":"function","signature":"shaderDequantQ4K(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/dequant_row_k_quant.md","moduleTitle":"llm/kernels/shaders/dequant_row_k_quant","source":"agi/llm/kernels/shaders/dequant_row_k_quant.js","import":"/agi/llm/kernels/shaders/dequant_row_k_quant.js","sourceHash":"f365dd3956e7b7dd8551e01dcff0fe1ed0cbecbd25aa07e1567f9f5b0bcdc310","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/dequant_row_k_quant.js#0002:shaderDequantQ5K","exportIndex":2,"name":"shaderDequantQ5K","kind":"function","signature":"shaderDequantQ5K(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/dequant_row_k_quant.md","moduleTitle":"llm/kernels/shaders/dequant_row_k_quant","source":"agi/llm/kernels/shaders/dequant_row_k_quant.js","import":"/agi/llm/kernels/shaders/dequant_row_k_quant.js","sourceHash":"f365dd3956e7b7dd8551e01dcff0fe1ed0cbecbd25aa07e1567f9f5b0bcdc310","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/dequant_row_k_quant.js#0003:shaderDequantQ6K","exportIndex":3,"name":"shaderDequantQ6K","kind":"function","signature":"shaderDequantQ6K(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/dequant_row_q4_0.md","moduleTitle":"llm/kernels/shaders/dequant_row_q4_0","source":"agi/llm/kernels/shaders/dequant_row_q4_0.js","import":"/agi/llm/kernels/shaders/dequant_row_q4_0.js","sourceHash":"bf440db4c3f2eabe87c23e376cda758d114115c9cb0512d0ae27e6d35d3d9546","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/kernels/shaders/dequant_row_q4_0.js","title":"llm/kernels/shaders/dequant_row_q4_0","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/dequant_row_q4_0.md","moduleTitle":"llm/kernels/shaders/dequant_row_q4_0","source":"agi/llm/kernels/shaders/dequant_row_q4_0.js","import":"/agi/llm/kernels/shaders/dequant_row_q4_0.js","sourceHash":"bf440db4c3f2eabe87c23e376cda758d114115c9cb0512d0ae27e6d35d3d9546","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/dequant_row_q4_0.js#0000:shader","exportIndex":0,"name":"shader","kind":"function","signature":"shader()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/dequant_row_q4_0.md","moduleTitle":"llm/kernels/shaders/dequant_row_q4_0","source":"agi/llm/kernels/shaders/dequant_row_q4_0.js","import":"/agi/llm/kernels/shaders/dequant_row_q4_0.js","sourceHash":"bf440db4c3f2eabe87c23e376cda758d114115c9cb0512d0ae27e6d35d3d9546","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/dequant_row_q4_0.js#0001:shaderDequantQ40","exportIndex":1,"name":"shaderDequantQ40","kind":"function","signature":"shaderDequantQ40(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/dequant_row_q8_0.md","moduleTitle":"llm/kernels/shaders/dequant_row_q8_0","source":"agi/llm/kernels/shaders/dequant_row_q8_0.js","import":"/agi/llm/kernels/shaders/dequant_row_q8_0.js","sourceHash":"c7a53b6f38c2ce8569d5aed7190abb3d3d0a7efe73153fa3fcb253ec9247236a","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/kernels/shaders/dequant_row_q8_0.js","title":"llm/kernels/shaders/dequant_row_q8_0","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/dequant_row_q8_0.md","moduleTitle":"llm/kernels/shaders/dequant_row_q8_0","source":"agi/llm/kernels/shaders/dequant_row_q8_0.js","import":"/agi/llm/kernels/shaders/dequant_row_q8_0.js","sourceHash":"c7a53b6f38c2ce8569d5aed7190abb3d3d0a7efe73153fa3fcb253ec9247236a","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/dequant_row_q8_0.js#0000:shader","exportIndex":0,"name":"shader","kind":"function","signature":"shader()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/dequant_row_q8_0.md","moduleTitle":"llm/kernels/shaders/dequant_row_q8_0","source":"agi/llm/kernels/shaders/dequant_row_q8_0.js","import":"/agi/llm/kernels/shaders/dequant_row_q8_0.js","sourceHash":"c7a53b6f38c2ce8569d5aed7190abb3d3d0a7efe73153fa3fcb253ec9247236a","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/dequant_row_q8_0.js#0001:shaderDequantQ80","exportIndex":1,"name":"shaderDequantQ80","kind":"function","signature":"shaderDequantQ80(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/embedding_row_gather.md","moduleTitle":"llm/kernels/shaders/embedding_row_gather","source":"agi/llm/kernels/shaders/embedding_row_gather.js","import":"/agi/llm/kernels/shaders/embedding_row_gather.js","sourceHash":"57a19c1055f6c8ef7d5dc919dc2b3fb1e0e754da8c2d54dd248c46a693f9005b","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/kernels/shaders/embedding_row_gather.js","title":"llm/kernels/shaders/embedding_row_gather","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/embedding_row_gather.md","moduleTitle":"llm/kernels/shaders/embedding_row_gather","source":"agi/llm/kernels/shaders/embedding_row_gather.js","import":"/agi/llm/kernels/shaders/embedding_row_gather.js","sourceHash":"57a19c1055f6c8ef7d5dc919dc2b3fb1e0e754da8c2d54dd248c46a693f9005b","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/embedding_row_gather.js#0000:shader","exportIndex":0,"name":"shader","kind":"function","signature":"shader()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/matmul_k_quant.md","moduleTitle":"llm/kernels/shaders/matmul_k_quant","source":"agi/llm/kernels/shaders/matmul_k_quant.js","import":"/agi/llm/kernels/shaders/matmul_k_quant.js","sourceHash":"6f5cb344061d162f343a57b251fe92f0addfe5f23362e42b31a92d79feb2f643","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/kernels/shaders/matmul_k_quant.js","title":"llm/kernels/shaders/matmul_k_quant","summary":"","exportCount":4}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/matmul_k_quant.md","moduleTitle":"llm/kernels/shaders/matmul_k_quant","source":"agi/llm/kernels/shaders/matmul_k_quant.js","import":"/agi/llm/kernels/shaders/matmul_k_quant.js","sourceHash":"6f5cb344061d162f343a57b251fe92f0addfe5f23362e42b31a92d79feb2f643","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/matmul_k_quant.js#0000:shader","exportIndex":0,"name":"shader","kind":"function","signature":"shader({ quant = 'Q4_K', workgroupSize = WORKGROUP_SIZE } = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/matmul_k_quant.md","moduleTitle":"llm/kernels/shaders/matmul_k_quant","source":"agi/llm/kernels/shaders/matmul_k_quant.js","import":"/agi/llm/kernels/shaders/matmul_k_quant.js","sourceHash":"6f5cb344061d162f343a57b251fe92f0addfe5f23362e42b31a92d79feb2f643","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/matmul_k_quant.js#0001:shaderMatMulQ4K","exportIndex":1,"name":"shaderMatMulQ4K","kind":"function","signature":"shaderMatMulQ4K(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/matmul_k_quant.md","moduleTitle":"llm/kernels/shaders/matmul_k_quant","source":"agi/llm/kernels/shaders/matmul_k_quant.js","import":"/agi/llm/kernels/shaders/matmul_k_quant.js","sourceHash":"6f5cb344061d162f343a57b251fe92f0addfe5f23362e42b31a92d79feb2f643","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/matmul_k_quant.js#0002:shaderMatMulQ5K","exportIndex":2,"name":"shaderMatMulQ5K","kind":"function","signature":"shaderMatMulQ5K(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/matmul_k_quant.md","moduleTitle":"llm/kernels/shaders/matmul_k_quant","source":"agi/llm/kernels/shaders/matmul_k_quant.js","import":"/agi/llm/kernels/shaders/matmul_k_quant.js","sourceHash":"6f5cb344061d162f343a57b251fe92f0addfe5f23362e42b31a92d79feb2f643","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/matmul_k_quant.js#0003:shaderMatMulQ6K","exportIndex":3,"name":"shaderMatMulQ6K","kind":"function","signature":"shaderMatMulQ6K(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/matmul_q4.md","moduleTitle":"llm/kernels/shaders/matmul_q4","source":"agi/llm/kernels/shaders/matmul_q4.js","import":"/agi/llm/kernels/shaders/matmul_q4.js","sourceHash":"bf5931cdb4e80ca432641b4d1b61bd89cb410e6a4f2b98fdc0df8c79c0f48908","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/kernels/shaders/matmul_q4.js","title":"llm/kernels/shaders/matmul_q4","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/matmul_q4.md","moduleTitle":"llm/kernels/shaders/matmul_q4","source":"agi/llm/kernels/shaders/matmul_q4.js","import":"/agi/llm/kernels/shaders/matmul_q4.js","sourceHash":"bf5931cdb4e80ca432641b4d1b61bd89cb410e6a4f2b98fdc0df8c79c0f48908","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/matmul_q4.js#0000:shader","exportIndex":0,"name":"shader","kind":"function","signature":"shader()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/matmul_q4_0.md","moduleTitle":"llm/kernels/shaders/matmul_q4_0","source":"agi/llm/kernels/shaders/matmul_q4_0.js","import":"/agi/llm/kernels/shaders/matmul_q4_0.js","sourceHash":"547c12a0394481647058fd962907e7255df191670c3d36bb2dabaa360d77c927","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/kernels/shaders/matmul_q4_0.js","title":"llm/kernels/shaders/matmul_q4_0","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/matmul_q4_0.md","moduleTitle":"llm/kernels/shaders/matmul_q4_0","source":"agi/llm/kernels/shaders/matmul_q4_0.js","import":"/agi/llm/kernels/shaders/matmul_q4_0.js","sourceHash":"547c12a0394481647058fd962907e7255df191670c3d36bb2dabaa360d77c927","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/matmul_q4_0.js#0000:shader","exportIndex":0,"name":"shader","kind":"function","signature":"shader({ workgroupSize = WORKGROUP_SIZE } = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/matmul_q4_0.md","moduleTitle":"llm/kernels/shaders/matmul_q4_0","source":"agi/llm/kernels/shaders/matmul_q4_0.js","import":"/agi/llm/kernels/shaders/matmul_q4_0.js","sourceHash":"547c12a0394481647058fd962907e7255df191670c3d36bb2dabaa360d77c927","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/matmul_q4_0.js#0001:shaderMatMulQ40","exportIndex":1,"name":"shaderMatMulQ40","kind":"function","signature":"shaderMatMulQ40(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/matvec_dense.md","moduleTitle":"llm/kernels/shaders/matvec_dense","source":"agi/llm/kernels/shaders/matvec_dense.js","import":"/agi/llm/kernels/shaders/matvec_dense.js","sourceHash":"6a4151e047b9ad87008971b3e529a76da594e2ddecd27eda26969f798370100f","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/kernels/shaders/matvec_dense.js","title":"llm/kernels/shaders/matvec_dense","summary":"","exportCount":4}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/matvec_dense.md","moduleTitle":"llm/kernels/shaders/matvec_dense","source":"agi/llm/kernels/shaders/matvec_dense.js","import":"/agi/llm/kernels/shaders/matvec_dense.js","sourceHash":"6a4151e047b9ad87008971b3e529a76da594e2ddecd27eda26969f798370100f","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/matvec_dense.js#0000:shader","exportIndex":0,"name":"shader","kind":"function","signature":"shader({ format = 'F32', workgroupSize = WORKGROUP_SIZE } = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/matvec_dense.md","moduleTitle":"llm/kernels/shaders/matvec_dense","source":"agi/llm/kernels/shaders/matvec_dense.js","import":"/agi/llm/kernels/shaders/matvec_dense.js","sourceHash":"6a4151e047b9ad87008971b3e529a76da594e2ddecd27eda26969f798370100f","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/matvec_dense.js#0001:shaderF32","exportIndex":1,"name":"shaderF32","kind":"function","signature":"shaderF32(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/matvec_dense.md","moduleTitle":"llm/kernels/shaders/matvec_dense","source":"agi/llm/kernels/shaders/matvec_dense.js","import":"/agi/llm/kernels/shaders/matvec_dense.js","sourceHash":"6a4151e047b9ad87008971b3e529a76da594e2ddecd27eda26969f798370100f","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/matvec_dense.js#0002:shaderF16","exportIndex":2,"name":"shaderF16","kind":"function","signature":"shaderF16(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/matvec_dense.md","moduleTitle":"llm/kernels/shaders/matvec_dense","source":"agi/llm/kernels/shaders/matvec_dense.js","import":"/agi/llm/kernels/shaders/matvec_dense.js","sourceHash":"6a4151e047b9ad87008971b3e529a76da594e2ddecd27eda26969f798370100f","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/matvec_dense.js#0003:shaderBF16","exportIndex":3,"name":"shaderBF16","kind":"function","signature":"shaderBF16(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/matvec_k_quant.md","moduleTitle":"llm/kernels/shaders/matvec_k_quant","source":"agi/llm/kernels/shaders/matvec_k_quant.js","import":"/agi/llm/kernels/shaders/matvec_k_quant.js","sourceHash":"e69ee211a39f66e61461fc9d4638427b2d0425e9208c50256ede0bc22edd36dd","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/kernels/shaders/matvec_k_quant.js","title":"llm/kernels/shaders/matvec_k_quant","summary":"","exportCount":5}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/matvec_k_quant.md","moduleTitle":"llm/kernels/shaders/matvec_k_quant","source":"agi/llm/kernels/shaders/matvec_k_quant.js","import":"/agi/llm/kernels/shaders/matvec_k_quant.js","sourceHash":"e69ee211a39f66e61461fc9d4638427b2d0425e9208c50256ede0bc22edd36dd","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/matvec_k_quant.js#0000:shader","exportIndex":0,"name":"shader","kind":"function","signature":"shader({ quant = 'Q4_K', workgroupSize = WORKGROUP_SIZE, useSubgroups = false } = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/matvec_k_quant.md","moduleTitle":"llm/kernels/shaders/matvec_k_quant","source":"agi/llm/kernels/shaders/matvec_k_quant.js","import":"/agi/llm/kernels/shaders/matvec_k_quant.js","sourceHash":"e69ee211a39f66e61461fc9d4638427b2d0425e9208c50256ede0bc22edd36dd","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/matvec_k_quant.js#0001:shaderQ4K","exportIndex":1,"name":"shaderQ4K","kind":"function","signature":"shaderQ4K(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/matvec_k_quant.md","moduleTitle":"llm/kernels/shaders/matvec_k_quant","source":"agi/llm/kernels/shaders/matvec_k_quant.js","import":"/agi/llm/kernels/shaders/matvec_k_quant.js","sourceHash":"e69ee211a39f66e61461fc9d4638427b2d0425e9208c50256ede0bc22edd36dd","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/matvec_k_quant.js#0002:shaderQ5K","exportIndex":2,"name":"shaderQ5K","kind":"function","signature":"shaderQ5K(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/matvec_k_quant.md","moduleTitle":"llm/kernels/shaders/matvec_k_quant","source":"agi/llm/kernels/shaders/matvec_k_quant.js","import":"/agi/llm/kernels/shaders/matvec_k_quant.js","sourceHash":"e69ee211a39f66e61461fc9d4638427b2d0425e9208c50256ede0bc22edd36dd","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/matvec_k_quant.js#0003:shaderQ6K","exportIndex":3,"name":"shaderQ6K","kind":"function","signature":"shaderQ6K(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/matvec_k_quant.md","moduleTitle":"llm/kernels/shaders/matvec_k_quant","source":"agi/llm/kernels/shaders/matvec_k_quant.js","import":"/agi/llm/kernels/shaders/matvec_k_quant.js","sourceHash":"e69ee211a39f66e61461fc9d4638427b2d0425e9208c50256ede0bc22edd36dd","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/matvec_k_quant.js#0004:K_QUANT_LAYOUTS","exportIndex":4,"name":"K_QUANT_LAYOUTS","kind":"constant","signature":"K_QUANT_LAYOUTS","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/matvec_q4_0.md","moduleTitle":"llm/kernels/shaders/matvec_q4_0","source":"agi/llm/kernels/shaders/matvec_q4_0.js","import":"/agi/llm/kernels/shaders/matvec_q4_0.js","sourceHash":"e97dd089f8c186dd3ae4361c757a43e72d31b1716b5257eede66d3347fa660bd","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/kernels/shaders/matvec_q4_0.js","title":"llm/kernels/shaders/matvec_q4_0","summary":"","exportCount":3}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/matvec_q4_0.md","moduleTitle":"llm/kernels/shaders/matvec_q4_0","source":"agi/llm/kernels/shaders/matvec_q4_0.js","import":"/agi/llm/kernels/shaders/matvec_q4_0.js","sourceHash":"e97dd089f8c186dd3ae4361c757a43e72d31b1716b5257eede66d3347fa660bd","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/matvec_q4_0.js#0000:shader","exportIndex":0,"name":"shader","kind":"function","signature":"shader({ workgroupSize = WORKGROUP_SIZE } = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/matvec_q4_0.md","moduleTitle":"llm/kernels/shaders/matvec_q4_0","source":"agi/llm/kernels/shaders/matvec_q4_0.js","import":"/agi/llm/kernels/shaders/matvec_q4_0.js","sourceHash":"e97dd089f8c186dd3ae4361c757a43e72d31b1716b5257eede66d3347fa660bd","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/matvec_q4_0.js#0001:shaderQ40","exportIndex":1,"name":"shaderQ40","kind":"function","signature":"shaderQ40(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/matvec_q4_0.md","moduleTitle":"llm/kernels/shaders/matvec_q4_0","source":"agi/llm/kernels/shaders/matvec_q4_0.js","import":"/agi/llm/kernels/shaders/matvec_q4_0.js","sourceHash":"e97dd089f8c186dd3ae4361c757a43e72d31b1716b5257eede66d3347fa660bd","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/matvec_q4_0.js#0002:Q4_0_LAYOUT","exportIndex":2,"name":"Q4_0_LAYOUT","kind":"constant","signature":"Q4_0_LAYOUT","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/matvec_q8_0.md","moduleTitle":"llm/kernels/shaders/matvec_q8_0","source":"agi/llm/kernels/shaders/matvec_q8_0.js","import":"/agi/llm/kernels/shaders/matvec_q8_0.js","sourceHash":"eed60c3ea0ab2f3873ff1fee33847d5f06117df09ffa20fb6cc8374fc3dc350f","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/kernels/shaders/matvec_q8_0.js","title":"llm/kernels/shaders/matvec_q8_0","summary":"","exportCount":3}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/matvec_q8_0.md","moduleTitle":"llm/kernels/shaders/matvec_q8_0","source":"agi/llm/kernels/shaders/matvec_q8_0.js","import":"/agi/llm/kernels/shaders/matvec_q8_0.js","sourceHash":"eed60c3ea0ab2f3873ff1fee33847d5f06117df09ffa20fb6cc8374fc3dc350f","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/matvec_q8_0.js#0000:shader","exportIndex":0,"name":"shader","kind":"function","signature":"shader({ workgroupSize = WORKGROUP_SIZE } = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/matvec_q8_0.md","moduleTitle":"llm/kernels/shaders/matvec_q8_0","source":"agi/llm/kernels/shaders/matvec_q8_0.js","import":"/agi/llm/kernels/shaders/matvec_q8_0.js","sourceHash":"eed60c3ea0ab2f3873ff1fee33847d5f06117df09ffa20fb6cc8374fc3dc350f","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/matvec_q8_0.js#0001:shaderQ80","exportIndex":1,"name":"shaderQ80","kind":"function","signature":"shaderQ80(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/matvec_q8_0.md","moduleTitle":"llm/kernels/shaders/matvec_q8_0","source":"agi/llm/kernels/shaders/matvec_q8_0.js","import":"/agi/llm/kernels/shaders/matvec_q8_0.js","sourceHash":"eed60c3ea0ab2f3873ff1fee33847d5f06117df09ffa20fb6cc8374fc3dc350f","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/matvec_q8_0.js#0002:Q8_0_LAYOUT","exportIndex":2,"name":"Q8_0_LAYOUT","kind":"constant","signature":"Q8_0_LAYOUT","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/rmsnorm_fused.md","moduleTitle":"llm/kernels/shaders/rmsnorm_fused","source":"agi/llm/kernels/shaders/rmsnorm_fused.js","import":"/agi/llm/kernels/shaders/rmsnorm_fused.js","sourceHash":"74586ffb56cf3fa59378e75eb7281c427bb34fd60dced4298336ca65b6d241c4","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/kernels/shaders/rmsnorm_fused.js","title":"llm/kernels/shaders/rmsnorm_fused","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/rmsnorm_fused.md","moduleTitle":"llm/kernels/shaders/rmsnorm_fused","source":"agi/llm/kernels/shaders/rmsnorm_fused.js","import":"/agi/llm/kernels/shaders/rmsnorm_fused.js","sourceHash":"74586ffb56cf3fa59378e75eb7281c427bb34fd60dced4298336ca65b6d241c4","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/rmsnorm_fused.js#0000:shader","exportIndex":0,"name":"shader","kind":"function","signature":"shader({ hiddenSize = 1536, epsilon = '0.000001', workgroupSize = 256 } = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/rmsnorm_residual_fused.md","moduleTitle":"llm/kernels/shaders/rmsnorm_residual_fused","source":"agi/llm/kernels/shaders/rmsnorm_residual_fused.js","import":"/agi/llm/kernels/shaders/rmsnorm_residual_fused.js","sourceHash":"1f5766acb0c1e2059787778865605e88764f3fe2d927c196194bec180ed1c997","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/kernels/shaders/rmsnorm_residual_fused.js","title":"llm/kernels/shaders/rmsnorm_residual_fused","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/rmsnorm_residual_fused.md","moduleTitle":"llm/kernels/shaders/rmsnorm_residual_fused","source":"agi/llm/kernels/shaders/rmsnorm_residual_fused.js","import":"/agi/llm/kernels/shaders/rmsnorm_residual_fused.js","sourceHash":"1f5766acb0c1e2059787778865605e88764f3fe2d927c196194bec180ed1c997","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/rmsnorm_residual_fused.js#0000:shader","exportIndex":0,"name":"shader","kind":"function","signature":"shader({ hiddenSize = 1536, epsilon = '0.000001', workgroupSize = 256 } = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/rope_batch.md","moduleTitle":"llm/kernels/shaders/rope_batch","source":"agi/llm/kernels/shaders/rope_batch.js","import":"/agi/llm/kernels/shaders/rope_batch.js","sourceHash":"20eea19d8f78862bb94d7fe482a80f789b660eafbddbb410a76a51a942ba17c8","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/kernels/shaders/rope_batch.js","title":"llm/kernels/shaders/rope_batch","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/rope_batch.md","moduleTitle":"llm/kernels/shaders/rope_batch","source":"agi/llm/kernels/shaders/rope_batch.js","import":"/agi/llm/kernels/shaders/rope_batch.js","sourceHash":"20eea19d8f78862bb94d7fe482a80f789b660eafbddbb410a76a51a942ba17c8","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/rope_batch.js#0000:shader","exportIndex":0,"name":"shader","kind":"function","signature":"shader({ theta = '10000.0' } = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/rope_fused.md","moduleTitle":"llm/kernels/shaders/rope_fused","source":"agi/llm/kernels/shaders/rope_fused.js","import":"/agi/llm/kernels/shaders/rope_fused.js","sourceHash":"17235f8e330980030c2a833e5b794716589e9c5e3685a5a0036a6de59b9bc1c9","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/kernels/shaders/rope_fused.js","title":"llm/kernels/shaders/rope_fused","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/rope_fused.md","moduleTitle":"llm/kernels/shaders/rope_fused","source":"agi/llm/kernels/shaders/rope_fused.js","import":"/agi/llm/kernels/shaders/rope_fused.js","sourceHash":"17235f8e330980030c2a833e5b794716589e9c5e3685a5a0036a6de59b9bc1c9","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/rope_fused.js#0000:shader","exportIndex":0,"name":"shader","kind":"function","signature":"shader({ theta = '10000.0' } = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/rope_kv_append.md","moduleTitle":"llm/kernels/shaders/rope_kv_append","source":"agi/llm/kernels/shaders/rope_kv_append.js","import":"/agi/llm/kernels/shaders/rope_kv_append.js","sourceHash":"933d3683015dab6cbd815f769f0af56c038d4ddaf5a1ff140eb77a4dc2a76f4a","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/kernels/shaders/rope_kv_append.js","title":"llm/kernels/shaders/rope_kv_append","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/rope_kv_append.md","moduleTitle":"llm/kernels/shaders/rope_kv_append","source":"agi/llm/kernels/shaders/rope_kv_append.js","import":"/agi/llm/kernels/shaders/rope_kv_append.js","sourceHash":"933d3683015dab6cbd815f769f0af56c038d4ddaf5a1ff140eb77a4dc2a76f4a","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/rope_kv_append.js#0000:shader","exportIndex":0,"name":"shader","kind":"function","signature":"shader({ theta = '10000.0' } = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/rope_table.md","moduleTitle":"llm/kernels/shaders/rope_table","source":"agi/llm/kernels/shaders/rope_table.js","import":"/agi/llm/kernels/shaders/rope_table.js","sourceHash":"fbba2d1a3dc39889670e58f0d3a59112f3c1cd06749f3c4ed1ba1c22efd023f1","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/kernels/shaders/rope_table.js","title":"llm/kernels/shaders/rope_table","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/rope_table.md","moduleTitle":"llm/kernels/shaders/rope_table","source":"agi/llm/kernels/shaders/rope_table.js","import":"/agi/llm/kernels/shaders/rope_table.js","sourceHash":"fbba2d1a3dc39889670e58f0d3a59112f3c1cd06749f3c4ed1ba1c22efd023f1","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/rope_table.js#0000:shader","exportIndex":0,"name":"shader","kind":"function","signature":"shader()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/sampling_topk_candidates.md","moduleTitle":"llm/kernels/shaders/sampling_topk_candidates","source":"agi/llm/kernels/shaders/sampling_topk_candidates.js","import":"/agi/llm/kernels/shaders/sampling_topk_candidates.js","sourceHash":"da73f52b37c5cb358503cc4a1113fae24497da73fa41fe6f1eda2f47dd5343e1","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/kernels/shaders/sampling_topk_candidates.js","title":"llm/kernels/shaders/sampling_topk_candidates","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/sampling_topk_candidates.md","moduleTitle":"llm/kernels/shaders/sampling_topk_candidates","source":"agi/llm/kernels/shaders/sampling_topk_candidates.js","import":"/agi/llm/kernels/shaders/sampling_topk_candidates.js","sourceHash":"da73f52b37c5cb358503cc4a1113fae24497da73fa41fe6f1eda2f47dd5343e1","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/sampling_topk_candidates.js#0000:shader","exportIndex":0,"name":"shader","kind":"function","signature":"shader()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/sampling_topk_reduce.md","moduleTitle":"llm/kernels/shaders/sampling_topk_reduce","source":"agi/llm/kernels/shaders/sampling_topk_reduce.js","import":"/agi/llm/kernels/shaders/sampling_topk_reduce.js","sourceHash":"7fc54814db3fb73dfeaae4f84d31d0ec89cedd658d28012073707551b7bac905","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/kernels/shaders/sampling_topk_reduce.js","title":"llm/kernels/shaders/sampling_topk_reduce","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/sampling_topk_reduce.md","moduleTitle":"llm/kernels/shaders/sampling_topk_reduce","source":"agi/llm/kernels/shaders/sampling_topk_reduce.js","import":"/agi/llm/kernels/shaders/sampling_topk_reduce.js","sourceHash":"7fc54814db3fb73dfeaae4f84d31d0ec89cedd658d28012073707551b7bac905","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/sampling_topk_reduce.js#0000:shader","exportIndex":0,"name":"shader","kind":"function","signature":"shader()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/sampling_topk_topp.md","moduleTitle":"llm/kernels/shaders/sampling_topk_topp","source":"agi/llm/kernels/shaders/sampling_topk_topp.js","import":"/agi/llm/kernels/shaders/sampling_topk_topp.js","sourceHash":"78523733d5de1973008e6076f8030d5a3b6fec799ec66c63b9b574fe765b92e6","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/kernels/shaders/sampling_topk_topp.js","title":"llm/kernels/shaders/sampling_topk_topp","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/sampling_topk_topp.md","moduleTitle":"llm/kernels/shaders/sampling_topk_topp","source":"agi/llm/kernels/shaders/sampling_topk_topp.js","import":"/agi/llm/kernels/shaders/sampling_topk_topp.js","sourceHash":"78523733d5de1973008e6076f8030d5a3b6fec799ec66c63b9b574fe765b92e6","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/sampling_topk_topp.js#0000:shader","exportIndex":0,"name":"shader","kind":"function","signature":"shader()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/sampling_topk_topp_legacy.md","moduleTitle":"llm/kernels/shaders/sampling_topk_topp_legacy","source":"agi/llm/kernels/shaders/sampling_topk_topp_legacy.js","import":"/agi/llm/kernels/shaders/sampling_topk_topp_legacy.js","sourceHash":"2928af2857e53545e737df56ff73dae832500fa94221d2bb041f083bf94a0dd8","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/kernels/shaders/sampling_topk_topp_legacy.js","title":"llm/kernels/shaders/sampling_topk_topp_legacy","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/sampling_topk_topp_legacy.md","moduleTitle":"llm/kernels/shaders/sampling_topk_topp_legacy","source":"agi/llm/kernels/shaders/sampling_topk_topp_legacy.js","import":"/agi/llm/kernels/shaders/sampling_topk_topp_legacy.js","sourceHash":"2928af2857e53545e737df56ff73dae832500fa94221d2bb041f083bf94a0dd8","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/sampling_topk_topp_legacy.js#0000:shader","exportIndex":0,"name":"shader","kind":"function","signature":"shader()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/swiglu_fused.md","moduleTitle":"llm/kernels/shaders/swiglu_fused","source":"agi/llm/kernels/shaders/swiglu_fused.js","import":"/agi/llm/kernels/shaders/swiglu_fused.js","sourceHash":"4a73d9ed716df74caa90480a22d65a8e9f9eb3b75ac4d140e44c7331b993dc07","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/kernels/shaders/swiglu_fused.js","title":"llm/kernels/shaders/swiglu_fused","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/swiglu_fused.md","moduleTitle":"llm/kernels/shaders/swiglu_fused","source":"agi/llm/kernels/shaders/swiglu_fused.js","import":"/agi/llm/kernels/shaders/swiglu_fused.js","sourceHash":"4a73d9ed716df74caa90480a22d65a8e9f9eb3b75ac4d140e44c7331b993dc07","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/swiglu_fused.js#0000:shader","exportIndex":0,"name":"shader","kind":"function","signature":"shader({ activation = 'gelu_pytorch_tanh' } = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/tied_embedding_logits.md","moduleTitle":"llm/kernels/shaders/tied_embedding_logits","source":"agi/llm/kernels/shaders/tied_embedding_logits.js","import":"/agi/llm/kernels/shaders/tied_embedding_logits.js","sourceHash":"dc498a6e969dbbc616cec0e077793dae57c25bdba66946bf3bc4d230ddd454c7","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/kernels/shaders/tied_embedding_logits.js","title":"llm/kernels/shaders/tied_embedding_logits","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/tied_embedding_logits.md","moduleTitle":"llm/kernels/shaders/tied_embedding_logits","source":"agi/llm/kernels/shaders/tied_embedding_logits.js","import":"/agi/llm/kernels/shaders/tied_embedding_logits.js","sourceHash":"dc498a6e969dbbc616cec0e077793dae57c25bdba66946bf3bc4d230ddd454c7","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/tied_embedding_logits.js#0000:shader","exportIndex":0,"name":"shader","kind":"function","signature":"shader({ workgroupSize = 128 } = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/vector_ops.md","moduleTitle":"llm/kernels/shaders/vector_ops","source":"agi/llm/kernels/shaders/vector_ops.js","import":"/agi/llm/kernels/shaders/vector_ops.js","sourceHash":"5ba610453422e04d830ce916cd74d91b328c7539d3e55f406a5a68e547f2a376","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/kernels/shaders/vector_ops.js","title":"llm/kernels/shaders/vector_ops","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/llm/kernels/shaders/vector_ops.md","moduleTitle":"llm/kernels/shaders/vector_ops","source":"agi/llm/kernels/shaders/vector_ops.js","import":"/agi/llm/kernels/shaders/vector_ops.js","sourceHash":"5ba610453422e04d830ce916cd74d91b328c7539d3e55f406a5a68e547f2a376","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/kernels/shaders/vector_ops.js#0000:shader","exportIndex":0,"name":"shader","kind":"function","signature":"shader({ op = 'add' } = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/runtime/LLMRuntime.md","moduleTitle":"llm/runtime/LLMRuntime","source":"agi/llm/runtime/LLMRuntime.js","import":"/agi/llm/runtime/LLMRuntime.js","sourceHash":"3ac2e9e534240f3d7d807becc5b3704433d2c207259b45ce1297d62a6a9160a1","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/runtime/LLMRuntime.js","title":"llm/runtime/LLMRuntime","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"agi/reference/llm/runtime/LLMRuntime.md","moduleTitle":"llm/runtime/LLMRuntime","source":"agi/llm/runtime/LLMRuntime.js","import":"/agi/llm/runtime/LLMRuntime.js","sourceHash":"3ac2e9e534240f3d7d807becc5b3704433d2c207259b45ce1297d62a6a9160a1","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/runtime/LLMRuntime.js#0000:LLMRuntime","exportIndex":0,"name":"LLMRuntime","kind":"class","signature":"class LLMRuntime","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/runtime/LLMRuntime.md","moduleTitle":"llm/runtime/LLMRuntime","source":"agi/llm/runtime/LLMRuntime.js","import":"/agi/llm/runtime/LLMRuntime.js","sourceHash":"3ac2e9e534240f3d7d807becc5b3704433d2c207259b45ce1297d62a6a9160a1","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/runtime/LLMRuntime.js#0001:normalizeLocalRuntimeResourceUsage","exportIndex":1,"name":"normalizeLocalRuntimeResourceUsage","kind":"function","signature":"normalizeLocalRuntimeResourceUsage(before, after)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/runtime/LLMSession.md","moduleTitle":"llm/runtime/LLMSession","source":"agi/llm/runtime/LLMSession.js","import":"/agi/llm/runtime/LLMSession.js","sourceHash":"a589715cef48e22304b5327132e2dbecf7ed9fef2eb3e0217b595fcfe1b51310","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/runtime/LLMSession.js","title":"llm/runtime/LLMSession","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/llm/runtime/LLMSession.md","moduleTitle":"llm/runtime/LLMSession","source":"agi/llm/runtime/LLMSession.js","import":"/agi/llm/runtime/LLMSession.js","sourceHash":"a589715cef48e22304b5327132e2dbecf7ed9fef2eb3e0217b595fcfe1b51310","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/runtime/LLMSession.js#0000:LLMSession","exportIndex":0,"name":"LLMSession","kind":"class","signature":"class LLMSession","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/runtime/LogFormat.md","moduleTitle":"llm/runtime/LogFormat","source":"agi/llm/runtime/LogFormat.js","import":"/agi/llm/runtime/LogFormat.js","sourceHash":"820e6a6e3aa5a9535c690613776ddcb3fec7f20dae1115ebaf2fb13e88057f1a","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/runtime/LogFormat.js","title":"llm/runtime/LogFormat","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"agi/reference/llm/runtime/LogFormat.md","moduleTitle":"llm/runtime/LogFormat","source":"agi/llm/runtime/LogFormat.js","import":"/agi/llm/runtime/LogFormat.js","sourceHash":"820e6a6e3aa5a9535c690613776ddcb3fec7f20dae1115ebaf2fb13e88057f1a","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/runtime/LogFormat.js#0000:logRuntimeEvent","exportIndex":0,"name":"logRuntimeEvent","kind":"function","signature":"logRuntimeEvent(event, data = {}, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/runtime/LogFormat.md","moduleTitle":"llm/runtime/LogFormat","source":"agi/llm/runtime/LogFormat.js","import":"/agi/llm/runtime/LogFormat.js","sourceHash":"820e6a6e3aa5a9535c690613776ddcb3fec7f20dae1115ebaf2fb13e88057f1a","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/runtime/LogFormat.js#0001:compactLogLine","exportIndex":1,"name":"compactLogLine","kind":"function","signature":"compactLogLine(data)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/runtime/ModelRegistry.md","moduleTitle":"llm/runtime/ModelRegistry","source":"agi/llm/runtime/ModelRegistry.js","import":"/agi/llm/runtime/ModelRegistry.js","sourceHash":"9c248d6bd650fc067d502d4283e2abe039a4c8941e8ad28e064728ffc35167fa","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/runtime/ModelRegistry.js","title":"llm/runtime/ModelRegistry","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/llm/runtime/ModelRegistry.md","moduleTitle":"llm/runtime/ModelRegistry","source":"agi/llm/runtime/ModelRegistry.js","import":"/agi/llm/runtime/ModelRegistry.js","sourceHash":"9c248d6bd650fc067d502d4283e2abe039a4c8941e8ad28e064728ffc35167fa","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/runtime/ModelRegistry.js#0000:ModelRegistry","exportIndex":0,"name":"ModelRegistry","kind":"class","signature":"class ModelRegistry","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/runtime/PromptTemplate.md","moduleTitle":"llm/runtime/PromptTemplate","source":"agi/llm/runtime/PromptTemplate.js","import":"/agi/llm/runtime/PromptTemplate.js","sourceHash":"2f159e1f9e527baab2001e447b934eb619724f46e9500d7175e1b6cf4b214557","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/runtime/PromptTemplate.js","title":"llm/runtime/PromptTemplate","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"agi/reference/llm/runtime/PromptTemplate.md","moduleTitle":"llm/runtime/PromptTemplate","source":"agi/llm/runtime/PromptTemplate.js","import":"/agi/llm/runtime/PromptTemplate.js","sourceHash":"2f159e1f9e527baab2001e447b934eb619724f46e9500d7175e1b6cf4b214557","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/runtime/PromptTemplate.js#0000:PromptTemplate","exportIndex":0,"name":"PromptTemplate","kind":"class","signature":"class PromptTemplate","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/runtime/PromptTemplate.md","moduleTitle":"llm/runtime/PromptTemplate","source":"agi/llm/runtime/PromptTemplate.js","import":"/agi/llm/runtime/PromptTemplate.js","sourceHash":"2f159e1f9e527baab2001e447b934eb619724f46e9500d7175e1b6cf4b214557","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/runtime/PromptTemplate.js#0001:GEMMA4_SPECIAL_TOKENS","exportIndex":1,"name":"GEMMA4_SPECIAL_TOKENS","kind":"constant","signature":"GEMMA4_SPECIAL_TOKENS","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/runtime/RuntimePerformanceMonitor.md","moduleTitle":"llm/runtime/RuntimePerformanceMonitor","source":"agi/llm/runtime/RuntimePerformanceMonitor.js","import":"/agi/llm/runtime/RuntimePerformanceMonitor.js","sourceHash":"e689a583853ad1636940b5e3387cc35ae022450d76cea1f9d590b175af7de5a9","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/runtime/RuntimePerformanceMonitor.js","title":"llm/runtime/RuntimePerformanceMonitor","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/llm/runtime/RuntimePerformanceMonitor.md","moduleTitle":"llm/runtime/RuntimePerformanceMonitor","source":"agi/llm/runtime/RuntimePerformanceMonitor.js","import":"/agi/llm/runtime/RuntimePerformanceMonitor.js","sourceHash":"e689a583853ad1636940b5e3387cc35ae022450d76cea1f9d590b175af7de5a9","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/runtime/RuntimePerformanceMonitor.js#0000:RuntimePerformanceMonitor","exportIndex":0,"name":"RuntimePerformanceMonitor","kind":"class","signature":"class RuntimePerformanceMonitor","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/runtime/Sampler.md","moduleTitle":"llm/runtime/Sampler","source":"agi/llm/runtime/Sampler.js","import":"/agi/llm/runtime/Sampler.js","sourceHash":"8e51d5faea4a77bd54d89efcbb191ef8d0f848def16e5a06986a79d2f3f2cfce","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/runtime/Sampler.js","title":"llm/runtime/Sampler","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/llm/runtime/Sampler.md","moduleTitle":"llm/runtime/Sampler","source":"agi/llm/runtime/Sampler.js","import":"/agi/llm/runtime/Sampler.js","sourceHash":"8e51d5faea4a77bd54d89efcbb191ef8d0f848def16e5a06986a79d2f3f2cfce","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/runtime/Sampler.js#0000:Sampler","exportIndex":0,"name":"Sampler","kind":"class","signature":"class Sampler","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/runtime/Tokenizer.md","moduleTitle":"llm/runtime/Tokenizer","source":"agi/llm/runtime/Tokenizer.js","import":"/agi/llm/runtime/Tokenizer.js","sourceHash":"609fa36ca7371a78ab083580a8f7abbb72e3760cbffd6c269983fe6df7bca22c","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/runtime/Tokenizer.js","title":"llm/runtime/Tokenizer","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/llm/runtime/Tokenizer.md","moduleTitle":"llm/runtime/Tokenizer","source":"agi/llm/runtime/Tokenizer.js","import":"/agi/llm/runtime/Tokenizer.js","sourceHash":"609fa36ca7371a78ab083580a8f7abbb72e3760cbffd6c269983fe6df7bca22c","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/runtime/Tokenizer.js#0000:Tokenizer","exportIndex":0,"name":"Tokenizer","kind":"class","signature":"class Tokenizer","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/runtime/TokenizerWorkerClient.md","moduleTitle":"llm/runtime/TokenizerWorkerClient","source":"agi/llm/runtime/TokenizerWorkerClient.js","import":"/agi/llm/runtime/TokenizerWorkerClient.js","sourceHash":"c39ec40134c451df5a47c9cd7d268ba56a0ed225c5e8fe09c39082644ee2d930","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/runtime/TokenizerWorkerClient.js","title":"llm/runtime/TokenizerWorkerClient","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/llm/runtime/TokenizerWorkerClient.md","moduleTitle":"llm/runtime/TokenizerWorkerClient","source":"agi/llm/runtime/TokenizerWorkerClient.js","import":"/agi/llm/runtime/TokenizerWorkerClient.js","sourceHash":"c39ec40134c451df5a47c9cd7d268ba56a0ed225c5e8fe09c39082644ee2d930","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/runtime/TokenizerWorkerClient.js#0000:TokenizerWorkerClient","exportIndex":0,"name":"TokenizerWorkerClient","kind":"class","signature":"class TokenizerWorkerClient","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/runtime/ToolBridge.md","moduleTitle":"llm/runtime/ToolBridge","source":"agi/llm/runtime/ToolBridge.js","import":"/agi/llm/runtime/ToolBridge.js","sourceHash":"8fc3a009d82b829a6e0cb140402c0dbf639db62c05914d68f28971618fa29105","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/runtime/ToolBridge.js","title":"llm/runtime/ToolBridge","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/llm/runtime/ToolBridge.md","moduleTitle":"llm/runtime/ToolBridge","source":"agi/llm/runtime/ToolBridge.js","import":"/agi/llm/runtime/ToolBridge.js","sourceHash":"8fc3a009d82b829a6e0cb140402c0dbf639db62c05914d68f28971618fa29105","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/runtime/ToolBridge.js#0000:ToolBridge","exportIndex":0,"name":"ToolBridge","kind":"class","signature":"class ToolBridge","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/storage/AtomicJSON.md","moduleTitle":"llm/storage/AtomicJSON","source":"agi/llm/storage/AtomicJSON.js","import":"/agi/llm/storage/AtomicJSON.js","sourceHash":"29990a9482059b74d5fa6518e9f656deb9453857d478e78f4a71f8ccd07ba685","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/storage/AtomicJSON.js","title":"llm/storage/AtomicJSON","summary":"Publish JSON through a verified staging file while retaining the previous revision until the replacement move succeeds.","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/llm/storage/AtomicJSON.md","moduleTitle":"llm/storage/AtomicJSON","source":"agi/llm/storage/AtomicJSON.js","import":"/agi/llm/storage/AtomicJSON.js","sourceHash":"29990a9482059b74d5fa6518e9f656deb9453857d478e78f4a71f8ccd07ba685","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/storage/AtomicJSON.js#0000:replaceJSONCopyOnWrite","exportIndex":0,"name":"replaceJSONCopyOnWrite","kind":"function","signature":"async replaceJSONCopyOnWrite(store, path, value, { validate = null, label = 'JSON record' } = {})","summary":"Publish JSON through a verified staging file while retaining the previous revision until the replacement move succeeds."}
{"schemaVersion":1,"modulePath":"agi/reference/llm/storage/Checksum.md","moduleTitle":"llm/storage/Checksum","source":"agi/llm/storage/Checksum.js","import":"/agi/llm/storage/Checksum.js","sourceHash":"06867b19c75e6c53f4c04fce2a8d2722ee576925a6a19000d9510d6ad6be3f59","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/storage/Checksum.js","title":"llm/storage/Checksum","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"agi/reference/llm/storage/Checksum.md","moduleTitle":"llm/storage/Checksum","source":"agi/llm/storage/Checksum.js","import":"/agi/llm/storage/Checksum.js","sourceHash":"06867b19c75e6c53f4c04fce2a8d2722ee576925a6a19000d9510d6ad6be3f59","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/storage/Checksum.js#0000:checksumBytes","exportIndex":0,"name":"checksumBytes","kind":"function","signature":"async checksumBytes(bytes, algorithm = 'SHA-256')","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/storage/Checksum.md","moduleTitle":"llm/storage/Checksum","source":"agi/llm/storage/Checksum.js","import":"/agi/llm/storage/Checksum.js","sourceHash":"06867b19c75e6c53f4c04fce2a8d2722ee576925a6a19000d9510d6ad6be3f59","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/storage/Checksum.js#0001:checksumString","exportIndex":1,"name":"checksumString","kind":"function","signature":"async checksumString(text, algorithm = 'SHA-256')","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/storage/ModelCache.md","moduleTitle":"llm/storage/ModelCache","source":"agi/llm/storage/ModelCache.js","import":"/agi/llm/storage/ModelCache.js","sourceHash":"61ef650481657d194c49bd4d85b49717c67893238b22f837de8b311892c1d420","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/storage/ModelCache.js","title":"llm/storage/ModelCache","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/llm/storage/ModelCache.md","moduleTitle":"llm/storage/ModelCache","source":"agi/llm/storage/ModelCache.js","import":"/agi/llm/storage/ModelCache.js","sourceHash":"61ef650481657d194c49bd4d85b49717c67893238b22f837de8b311892c1d420","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/storage/ModelCache.js#0000:ModelCache","exportIndex":0,"name":"ModelCache","kind":"class","signature":"class ModelCache","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/storage/ModelHandleStore.md","moduleTitle":"llm/storage/ModelHandleStore","source":"agi/llm/storage/ModelHandleStore.js","import":"/agi/llm/storage/ModelHandleStore.js","sourceHash":"1ac899619e21fe46122a9f035b0e75e0416b01dacc5f4bdb23d0c8cf82bd26c0","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/storage/ModelHandleStore.js","title":"llm/storage/ModelHandleStore","summary":"","exportCount":10}
{"schemaVersion":1,"modulePath":"agi/reference/llm/storage/ModelHandleStore.md","moduleTitle":"llm/storage/ModelHandleStore","source":"agi/llm/storage/ModelHandleStore.js","import":"/agi/llm/storage/ModelHandleStore.js","sourceHash":"1ac899619e21fe46122a9f035b0e75e0416b01dacc5f4bdb23d0c8cf82bd26c0","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/storage/ModelHandleStore.js#0000:ModelHandleStoreError","exportIndex":0,"name":"ModelHandleStoreError","kind":"class","signature":"class ModelHandleStoreError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/storage/ModelHandleStore.md","moduleTitle":"llm/storage/ModelHandleStore","source":"agi/llm/storage/ModelHandleStore.js","import":"/agi/llm/storage/ModelHandleStore.js","sourceHash":"1ac899619e21fe46122a9f035b0e75e0416b01dacc5f4bdb23d0c8cf82bd26c0","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/storage/ModelHandleStore.js#0001:ModelHandleStore","exportIndex":1,"name":"ModelHandleStore","kind":"class","signature":"class ModelHandleStore","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/storage/ModelHandleStore.md","moduleTitle":"llm/storage/ModelHandleStore","source":"agi/llm/storage/ModelHandleStore.js","import":"/agi/llm/storage/ModelHandleStore.js","sourceHash":"1ac899619e21fe46122a9f035b0e75e0416b01dacc5f4bdb23d0c8cf82bd26c0","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/storage/ModelHandleStore.js#0002:prepareModelHandleRecord","exportIndex":2,"name":"prepareModelHandleRecord","kind":"function","signature":"prepareModelHandleRecord(value, expectedModelId = null)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/storage/ModelHandleStore.md","moduleTitle":"llm/storage/ModelHandleStore","source":"agi/llm/storage/ModelHandleStore.js","import":"/agi/llm/storage/ModelHandleStore.js","sourceHash":"1ac899619e21fe46122a9f035b0e75e0416b01dacc5f4bdb23d0c8cf82bd26c0","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/storage/ModelHandleStore.js#0003:prepareLastModelRecord","exportIndex":3,"name":"prepareLastModelRecord","kind":"function","signature":"prepareLastModelRecord(value)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/storage/ModelHandleStore.md","moduleTitle":"llm/storage/ModelHandleStore","source":"agi/llm/storage/ModelHandleStore.js","import":"/agi/llm/storage/ModelHandleStore.js","sourceHash":"1ac899619e21fe46122a9f035b0e75e0416b01dacc5f4bdb23d0c8cf82bd26c0","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/storage/ModelHandleStore.js#0004:isFileSystemHandle","exportIndex":4,"name":"isFileSystemHandle","kind":"function","signature":"isFileSystemHandle(value)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/storage/ModelHandleStore.md","moduleTitle":"llm/storage/ModelHandleStore","source":"agi/llm/storage/ModelHandleStore.js","import":"/agi/llm/storage/ModelHandleStore.js","sourceHash":"1ac899619e21fe46122a9f035b0e75e0416b01dacc5f4bdb23d0c8cf82bd26c0","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/storage/ModelHandleStore.js#0005:queryHandlePermission","exportIndex":5,"name":"queryHandlePermission","kind":"function","signature":"async queryHandlePermission(handle)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/storage/ModelHandleStore.md","moduleTitle":"llm/storage/ModelHandleStore","source":"agi/llm/storage/ModelHandleStore.js","import":"/agi/llm/storage/ModelHandleStore.js","sourceHash":"1ac899619e21fe46122a9f035b0e75e0416b01dacc5f4bdb23d0c8cf82bd26c0","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/storage/ModelHandleStore.js#0006:requestHandlePermission","exportIndex":6,"name":"requestHandlePermission","kind":"function","signature":"async requestHandlePermission(handle)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/storage/ModelHandleStore.md","moduleTitle":"llm/storage/ModelHandleStore","source":"agi/llm/storage/ModelHandleStore.js","import":"/agi/llm/storage/ModelHandleStore.js","sourceHash":"1ac899619e21fe46122a9f035b0e75e0416b01dacc5f4bdb23d0c8cf82bd26c0","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/storage/ModelHandleStore.js#0007:MODEL_HANDLE_RECORD_SCHEMA","exportIndex":7,"name":"MODEL_HANDLE_RECORD_SCHEMA","kind":"constant","signature":"MODEL_HANDLE_RECORD_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/storage/ModelHandleStore.md","moduleTitle":"llm/storage/ModelHandleStore","source":"agi/llm/storage/ModelHandleStore.js","import":"/agi/llm/storage/ModelHandleStore.js","sourceHash":"1ac899619e21fe46122a9f035b0e75e0416b01dacc5f4bdb23d0c8cf82bd26c0","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/storage/ModelHandleStore.js#0008:MODEL_HANDLE_RECORD_VERSION","exportIndex":8,"name":"MODEL_HANDLE_RECORD_VERSION","kind":"constant","signature":"MODEL_HANDLE_RECORD_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/storage/ModelHandleStore.md","moduleTitle":"llm/storage/ModelHandleStore","source":"agi/llm/storage/ModelHandleStore.js","import":"/agi/llm/storage/ModelHandleStore.js","sourceHash":"1ac899619e21fe46122a9f035b0e75e0416b01dacc5f4bdb23d0c8cf82bd26c0","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/storage/ModelHandleStore.js#0009:MODEL_HANDLE_QUARANTINE_SCHEMA","exportIndex":9,"name":"MODEL_HANDLE_QUARANTINE_SCHEMA","kind":"constant","signature":"MODEL_HANDLE_QUARANTINE_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/storage/OPFSStore.md","moduleTitle":"llm/storage/OPFSStore","source":"agi/llm/storage/OPFSStore.js","import":"/agi/llm/storage/OPFSStore.js","sourceHash":"59bfc3241bd863dd7c1cb58aa9480cc22620a004d9526192f0bf9c249761403b","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/storage/OPFSStore.js","title":"llm/storage/OPFSStore","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/llm/storage/OPFSStore.md","moduleTitle":"llm/storage/OPFSStore","source":"agi/llm/storage/OPFSStore.js","import":"/agi/llm/storage/OPFSStore.js","sourceHash":"59bfc3241bd863dd7c1cb58aa9480cc22620a004d9526192f0bf9c249761403b","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/storage/OPFSStore.js#0000:OPFSStore","exportIndex":0,"name":"OPFSStore","kind":"class","signature":"class OPFSStore","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/storage/VFSConversationStore.md","moduleTitle":"llm/storage/VFSConversationStore","source":"agi/llm/storage/VFSConversationStore.js","import":"/agi/llm/storage/VFSConversationStore.js","sourceHash":"db4e21ded540c16a1f9fca1007fb19c9a8ec726bafb03074d230f91ba64c8a47","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/storage/VFSConversationStore.js","title":"llm/storage/VFSConversationStore","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/llm/storage/VFSConversationStore.md","moduleTitle":"llm/storage/VFSConversationStore","source":"agi/llm/storage/VFSConversationStore.js","import":"/agi/llm/storage/VFSConversationStore.js","sourceHash":"db4e21ded540c16a1f9fca1007fb19c9a8ec726bafb03074d230f91ba64c8a47","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/llm/storage/VFSConversationStore.js#0000:VFSConversationStore","exportIndex":0,"name":"VFSConversationStore","kind":"class","signature":"class VFSConversationStore","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/llm/workers/LLMLoadPlannerWorker.md","moduleTitle":"llm/workers/LLMLoadPlannerWorker","source":"agi/llm/workers/LLMLoadPlannerWorker.js","import":"/agi/llm/workers/LLMLoadPlannerWorker.js","sourceHash":"b62dac9e7b377ca82e5c3176bde34aedf13eae2fa75c5d9b8b8e346dd17217b5","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/workers/LLMLoadPlannerWorker.js","title":"llm/workers/LLMLoadPlannerWorker","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"agi/reference/llm/workers/LLMTokenizerWorker.md","moduleTitle":"llm/workers/LLMTokenizerWorker","source":"agi/llm/workers/LLMTokenizerWorker.js","import":"/agi/llm/workers/LLMTokenizerWorker.js","sourceHash":"769ae066cd2b0d1f52841f87b4094b164190165e88dba83d82d0546f8fed9d25","subsystem":"agi","recordType":"api-module","id":"module:agi/llm/workers/LLMTokenizerWorker.js","title":"llm/workers/LLMTokenizerWorker","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"agi/reference/loader/ModelLoader.md","moduleTitle":"loader/ModelLoader","source":"agi/loader/ModelLoader.js","import":"/agi/loader/ModelLoader.js","sourceHash":"6e3006b4ce7d497edf04a0fa47e99860b44bc97a2bd2b802477c1e06f521d40a","subsystem":"agi","recordType":"api-module","id":"module:agi/loader/ModelLoader.js","title":"loader/ModelLoader","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"agi/reference/loader/ModelLoader.md","moduleTitle":"loader/ModelLoader","source":"agi/loader/ModelLoader.js","import":"/agi/loader/ModelLoader.js","sourceHash":"6e3006b4ce7d497edf04a0fa47e99860b44bc97a2bd2b802477c1e06f521d40a","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/loader/ModelLoader.js#0000:ModelLoader","exportIndex":0,"name":"ModelLoader","kind":"class","signature":"class ModelLoader","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/loader/ModelLoader.md","moduleTitle":"loader/ModelLoader","source":"agi/loader/ModelLoader.js","import":"/agi/loader/ModelLoader.js","sourceHash":"6e3006b4ce7d497edf04a0fa47e99860b44bc97a2bd2b802477c1e06f521d40a","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/loader/ModelLoader.js#0001:modelLoaderVertexDedupHash32","exportIndex":1,"name":"modelLoaderVertexDedupHash32","kind":"function","signature":"modelLoaderVertexDedupHash32(posBits, pOff, uvBits = null, uOff = 0)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/network/TrainingStateChannel.md","moduleTitle":"network/TrainingStateChannel","source":"agi/network/TrainingStateChannel.js","import":"/agi/network/TrainingStateChannel.js","sourceHash":"3bfd7433f6e110a712aec26fdaab4b2fa1bc52d841d7372ea1027c06054fcb9c","subsystem":"agi","recordType":"api-module","id":"module:agi/network/TrainingStateChannel.js","title":"network/TrainingStateChannel","summary":"Bind AGI Studio telemetry to the standard State Channel stack. The training runtime is authoritative; same-origin tabs need no setup, and callers hosted inside WebGPU OS may pass NetworkDriver to publish over mesh.","exportCount":5}
{"schemaVersion":1,"modulePath":"agi/reference/network/TrainingStateChannel.md","moduleTitle":"network/TrainingStateChannel","source":"agi/network/TrainingStateChannel.js","import":"/agi/network/TrainingStateChannel.js","sourceHash":"3bfd7433f6e110a712aec26fdaab4b2fa1bc52d841d7372ea1027c06054fcb9c","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/network/TrainingStateChannel.js#0000:AgiTrainingStateChannel","exportIndex":0,"name":"AgiTrainingStateChannel","kind":"class","signature":"class AgiTrainingStateChannel","summary":"Bind AGI Studio telemetry to the standard State Channel stack. The training runtime is authoritative; same-origin tabs need no setup, and callers hosted inside WebGPU OS may pass NetworkDriver to publish over mesh."}
{"schemaVersion":1,"modulePath":"agi/reference/network/TrainingStateChannel.md","moduleTitle":"network/TrainingStateChannel","source":"agi/network/TrainingStateChannel.js","import":"/agi/network/TrainingStateChannel.js","sourceHash":"3bfd7433f6e110a712aec26fdaab4b2fa1bc52d841d7372ea1027c06054fcb9c","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/network/TrainingStateChannel.js#0001:createAgiTrainingStateChannel","exportIndex":1,"name":"createAgiTrainingStateChannel","kind":"function","signature":"createAgiTrainingStateChannel(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/network/TrainingStateChannel.md","moduleTitle":"network/TrainingStateChannel","source":"agi/network/TrainingStateChannel.js","import":"/agi/network/TrainingStateChannel.js","sourceHash":"3bfd7433f6e110a712aec26fdaab4b2fa1bc52d841d7372ea1027c06054fcb9c","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/network/TrainingStateChannel.js#0002:AGI_TRAINING_CHANNEL_ID","exportIndex":2,"name":"AGI_TRAINING_CHANNEL_ID","kind":"constant","signature":"AGI_TRAINING_CHANNEL_ID","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/network/TrainingStateChannel.md","moduleTitle":"network/TrainingStateChannel","source":"agi/network/TrainingStateChannel.js","import":"/agi/network/TrainingStateChannel.js","sourceHash":"3bfd7433f6e110a712aec26fdaab4b2fa1bc52d841d7372ea1027c06054fcb9c","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/network/TrainingStateChannel.js#0003:AGI_TRAINING_ROUTE_ID","exportIndex":3,"name":"AGI_TRAINING_ROUTE_ID","kind":"constant","signature":"AGI_TRAINING_ROUTE_ID","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/network/TrainingStateChannel.md","moduleTitle":"network/TrainingStateChannel","source":"agi/network/TrainingStateChannel.js","import":"/agi/network/TrainingStateChannel.js","sourceHash":"3bfd7433f6e110a712aec26fdaab4b2fa1bc52d841d7372ea1027c06054fcb9c","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/network/TrainingStateChannel.js#0004:AGI_TRAINING_CONTRACT","exportIndex":4,"name":"AGI_TRAINING_CONTRACT","kind":"constant","signature":"AGI_TRAINING_CONTRACT","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/BreathReservoirState.md","moduleTitle":"particle_voice/articulatory/BreathReservoirState","source":"agi/particle_voice/articulatory/BreathReservoirState.js","import":"/agi/particle_voice/articulatory/BreathReservoirState.js","sourceHash":"5d29378ba659dc894212c40bace8aca69114befc9e97127e251717dec025df5f","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/articulatory/BreathReservoirState.js","title":"particle_voice/articulatory/BreathReservoirState","summary":"BreathReservoirState.js — Phase 2 Voice Box state schema (`v0`). \"Lung pressure, compliance, target subglottal pressure\" per `ARCHITECTURE.md` §4 — the JS-side state container wrapping `nn/kernels/articulatory/breath_reservoir.js`'s per-instance recurrence (`pressure[n] = pressure[n-1] + (target[n] - pressure[n-1]) * lagRate`, proven against `risk/BreathReservoir.js` (R6A)). This module owns the `lagRate` derivation from `compliance`/`sampleRate` (the caller-computed value that kernel's docstring says it expects pre-computed, not recomputed in-shader) and the timestamped state container the kernel's `initial_pressure`/`pressure_out` buffers round-trip through across chunks — it does not itself dispatch the kernel (that is `ParticleTract.js`'s job once a real model exists to drive it).","exportCount":3}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/BreathReservoirState.md","moduleTitle":"particle_voice/articulatory/BreathReservoirState","source":"agi/particle_voice/articulatory/BreathReservoirState.js","import":"/agi/particle_voice/articulatory/BreathReservoirState.js","sourceHash":"5d29378ba659dc894212c40bace8aca69114befc9e97127e251717dec025df5f","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/articulatory/BreathReservoirState.js#0000:lagRateFromCompliance","exportIndex":0,"name":"lagRateFromCompliance","kind":"function","signature":"lagRateFromCompliance(compliance, sampleRate)","summary":"`lagRate = 1 - exp(-1/(compliance*sampleRate))` — matches `risk/BreathReservoir.js` (R6A)'s proven formula exactly; `breath_reservoir.js`'s own docstring requires this be computed by the caller, not the kernel."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/BreathReservoirState.md","moduleTitle":"particle_voice/articulatory/BreathReservoirState","source":"agi/particle_voice/articulatory/BreathReservoirState.js","import":"/agi/particle_voice/articulatory/BreathReservoirState.js","sourceHash":"5d29378ba659dc894212c40bace8aca69114befc9e97127e251717dec025df5f","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/articulatory/BreathReservoirState.js#0001:createBreathReservoirState","exportIndex":1,"name":"createBreathReservoirState","kind":"function","signature":"createBreathReservoirState({ sampleIndex, pressure, compliance, targetSubglottalPressure })","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/BreathReservoirState.md","moduleTitle":"particle_voice/articulatory/BreathReservoirState","source":"agi/particle_voice/articulatory/BreathReservoirState.js","import":"/agi/particle_voice/articulatory/BreathReservoirState.js","sourceHash":"5d29378ba659dc894212c40bace8aca69114befc9e97127e251717dec025df5f","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/articulatory/BreathReservoirState.js#0002:stepBreathReservoirState","exportIndex":2,"name":"stepBreathReservoirState","kind":"function","signature":"stepBreathReservoirState(state, sampleRate)","summary":"Advance one `BreathReservoirState` by one sample using the exact same recurrence `breath_reservoir.js`/`risk/BreathReservoir.js` implement — the CPU-side single-sample equivalent, useful for tests and for any non-GPU fallback path, not a replacement for the GPU kernel's chunked dispatch."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/FormantSolver.md","moduleTitle":"particle_voice/articulatory/FormantSolver","source":"agi/particle_voice/articulatory/FormantSolver.js","import":"/agi/particle_voice/articulatory/FormantSolver.js","sourceHash":"b8dc73ed6ea31c7ecbca2bf1e03f0f79e8c2d19e55bbfc61e3190aac2f2651d9","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/articulatory/FormantSolver.js","title":"particle_voice/articulatory/FormantSolver","summary":"FormantSolver.js — Phase 3 ParticleVoice articulatory calibration. Measures the resonances a Kelly-Lochbaum area profile actually produces, and inverts that: given target formants, searches for an area profile that hits them. ## Why this exists Vowel identity in speech is carried almost entirely by **F1 and F2**. An area profile invented from articulatory adjectives (\"high\", \"back\", \"rounded\") produces *some* formants, but nothing forces them to be the RIGHT ones — and if they are wrong, every vowel collapses toward a neutral timbre and the speech is unintelligible no matter how clean the pipeline is. That was the state before this module: `ArticulationHead`'s height/backness → area mapping was plausible but uncalibrated. Defining vowels by their measured formant targets and SOLVING for the geometry inverts the dependency: the targets are citable data (Peterson & Barney 1952 / Hillenbrand et al. 1995 male averages, whose vowel set maps exactly onto `spec/PhonemeSet-v0.md`'s ten monophthongs), and the geometry becomes a derived quantity that stays correct if the section count or sample rate changes. ## The response is measured with the SAME recurrence the GPU runs `impulseResponse()` reimplements `tract_waveguide.js`'s scattering recurrence on the CPU rather than using an analytic transfer function. That is deliberate: an analytic formula would be a second model that could disagree with the kernel, and then a \"calibrated\" vowel would not actually be calibrated for the thing doing the synthesis. In particular this omits the lip first-difference, matching `ParticleTract`'s `radiation_difference = 0` (its source is already a flow derivative).","exportCount":14}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/FormantSolver.md","moduleTitle":"particle_voice/articulatory/FormantSolver","source":"agi/particle_voice/articulatory/FormantSolver.js","import":"/agi/particle_voice/articulatory/FormantSolver.js","sourceHash":"b8dc73ed6ea31c7ecbca2bf1e03f0f79e8c2d19e55bbfc61e3190aac2f2651d9","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/articulatory/FormantSolver.js#0000:impulseResponse","exportIndex":0,"name":"impulseResponse","kind":"function","signature":"impulseResponse(areas, { glottalReflection, lipReflection, responseLength, wallLoss = 1 })","summary":"Impulse response of the lossless KL chain, mirroring `tract_waveguide.js`'s recurrence (and, like `ParticleTract`, WITHOUT the lip first difference)."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/FormantSolver.md","moduleTitle":"particle_voice/articulatory/FormantSolver","source":"agi/particle_voice/articulatory/FormantSolver.js","import":"/agi/particle_voice/articulatory/FormantSolver.js","sourceHash":"b8dc73ed6ea31c7ecbca2bf1e03f0f79e8c2d19e55bbfc61e3190aac2f2651d9","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/articulatory/FormantSolver.js#0001:findFormants","exportIndex":1,"name":"findFormants","kind":"function","signature":"findFormants(areas, sampleRate, options = {})","summary":"Resonance frequencies of an area profile, lowest first."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/FormantSolver.md","moduleTitle":"particle_voice/articulatory/FormantSolver","source":"agi/particle_voice/articulatory/FormantSolver.js","import":"/agi/particle_voice/articulatory/FormantSolver.js","sourceHash":"b8dc73ed6ea31c7ecbca2bf1e03f0f79e8c2d19e55bbfc61e3190aac2f2651d9","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/articulatory/FormantSolver.js#0002:profileFromParams","exportIndex":2,"name":"profileFromParams","kind":"function","signature":"profileFromParams(params, numSections)","summary":"Build the profile this solver searches over. `constrictionWidth` exists because a single control point is not enough for high front vowels. `shapedAreaProfile` interpolates LINEARLY between control points, so one narrow point produces a smooth V — a tract that tapers and re-widens with no distinct cavities. /i/ needs the opposite: a genuinely SHORT front cavity (F2 = 2290 Hz implies c/(4*F2) ~ 3.7 cm) sharply separated from a long back cavity. Giving the constriction a WIDTH creates that two-cavity structure, and with it F2 values a single point cannot reach (an earlier 3-point version topped out at 1889 Hz against IY's 2290 Hz target, 333 cents low, which made IY and IH nearly identical in F2). A width of 0 degenerates to the original 3-point shape, so the parametrisation strictly extends the old one rather than replacing it."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/FormantSolver.md","moduleTitle":"particle_voice/articulatory/FormantSolver","source":"agi/particle_voice/articulatory/FormantSolver.js","import":"/agi/particle_voice/articulatory/FormantSolver.js","sourceHash":"b8dc73ed6ea31c7ecbca2bf1e03f0f79e8c2d19e55bbfc61e3190aac2f2651d9","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/articulatory/FormantSolver.js#0003:fitVowelAreas","exportIndex":3,"name":"fitVowelAreas","kind":"function","signature":"fitVowelAreas(target, numSections, sampleRate, options = {})","summary":"Search for an area profile whose first two resonances match `target`. Error is measured in the LOG-frequency domain, because formant perception is roughly logarithmic: being 100 Hz off matters far more at F1 = 270 than at F2 = 2290, and a linear error would happily sacrifice F1 accuracy to shave a little off F2. Exhaustive over a coarse grid, then a local refinement pass. Exhaustive rather than gradient-based on purpose: the map from geometry to formants is non-monotonic (moving a constriction can swap which cavity dominates F2), so a descent method lands in whichever basin it started in."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/FormantSolver.md","moduleTitle":"particle_voice/articulatory/FormantSolver","source":"agi/particle_voice/articulatory/FormantSolver.js","import":"/agi/particle_voice/articulatory/FormantSolver.js","sourceHash":"b8dc73ed6ea31c7ecbca2bf1e03f0f79e8c2d19e55bbfc61e3190aac2f2651d9","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/articulatory/FormantSolver.js#0004:fitTargets","exportIndex":4,"name":"fitTargets","kind":"function","signature":"fitTargets(targets, numSections, sampleRate, options = {})","summary":"Fit every entry in a formant-target table. Slow (a full grid per entry) — intended for a calibration tool/test, not a hot path."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/FormantSolver.md","moduleTitle":"particle_voice/articulatory/FormantSolver","source":"agi/particle_voice/articulatory/FormantSolver.js","import":"/agi/particle_voice/articulatory/FormantSolver.js","sourceHash":"b8dc73ed6ea31c7ecbca2bf1e03f0f79e8c2d19e55bbfc61e3190aac2f2651d9","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/articulatory/FormantSolver.js#0005:fitAllVowels","exportIndex":5,"name":"fitAllVowels","kind":"function","signature":"fitAllVowels(numSections, sampleRate, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/FormantSolver.md","moduleTitle":"particle_voice/articulatory/FormantSolver","source":"agi/particle_voice/articulatory/FormantSolver.js","import":"/agi/particle_voice/articulatory/FormantSolver.js","sourceHash":"b8dc73ed6ea31c7ecbca2bf1e03f0f79e8c2d19e55bbfc61e3190aac2f2651d9","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/articulatory/FormantSolver.js#0006:fitAllApproximants","exportIndex":6,"name":"fitAllApproximants","kind":"function","signature":"fitAllApproximants(numSections, sampleRate, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/FormantSolver.md","moduleTitle":"particle_voice/articulatory/FormantSolver","source":"agi/particle_voice/articulatory/FormantSolver.js","import":"/agi/particle_voice/articulatory/FormantSolver.js","sourceHash":"b8dc73ed6ea31c7ecbca2bf1e03f0f79e8c2d19e55bbfc61e3190aac2f2651d9","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/articulatory/FormantSolver.js#0007:tractLengthFor","exportIndex":7,"name":"tractLengthFor","kind":"function","signature":"tractLengthFor(numSections, sampleRate)","summary":"The tract length a section count represents, for reporting alongside a fit."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/FormantSolver.md","moduleTitle":"particle_voice/articulatory/FormantSolver","source":"agi/particle_voice/articulatory/FormantSolver.js","import":"/agi/particle_voice/articulatory/FormantSolver.js","sourceHash":"b8dc73ed6ea31c7ecbca2bf1e03f0f79e8c2d19e55bbfc61e3190aac2f2651d9","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/articulatory/FormantSolver.js#0008:VOWEL_FORMANTS","exportIndex":8,"name":"VOWEL_FORMANTS","kind":"constant","signature":"VOWEL_FORMANTS","summary":"Peterson & Barney (1952) male averages, Hz. Their vowel set — heed, hid, head, had, hod, hawed, hood, who'd, hud, heard — is exactly this project's ten monophthongs, so no mapping or interpolation is needed. F3 is carried for `ER` only, where the unusually LOW F3 is the defining rhotic cue; for the others F1/F2 determine identity."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/FormantSolver.md","moduleTitle":"particle_voice/articulatory/FormantSolver","source":"agi/particle_voice/articulatory/FormantSolver.js","import":"/agi/particle_voice/articulatory/FormantSolver.js","sourceHash":"b8dc73ed6ea31c7ecbca2bf1e03f0f79e8c2d19e55bbfc61e3190aac2f2651d9","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/articulatory/FormantSolver.js#0009:VOWEL_AREA_PARAMS","exportIndex":9,"name":"VOWEL_AREA_PARAMS","kind":"constant","signature":"VOWEL_AREA_PARAMS","summary":"The solved geometry for each vowel, produced by `fitAllVowels()` and baked here so the runtime does not pay for the search (a full grid per vowel takes tens of seconds). `tests/particle-voice/vowel-formants.html` re-verifies this table against the targets cheaply on every run, so it cannot silently go stale if the section count or sample rate changes — the check fails and the table is re-fitted. Fitted at **32 sections / 64 kHz, two constrictions, wall loss included**. Measured F1/F2 vs target, worst case **21 cents** across all ten: IY 270/2291   IH 390/1989   EH 530/1844   AE 661/1724   AH 640/1190 ER 490/1350   AA 730/1090   AO 569/850    UH 438/1019   UW 300/867 Three structural changes got here, none of them tuning: 1. **Doubling the resolution** (16 -> 32 sections, via 32 -> 64 kHz) made a short front cavity representable, which is what front vowels need. IY's F2 went 1926 -> 2211 Hz on its own. 2. **A second constriction** fixed the back rounded vowels, which a single narrowing simply could not reach: AO's F2 was 1130 Hz against an 840 Hz target (513 cents) and no better solution existed anywhere in the search space, because a low F2 requires a long back cavity AND lip rounding acting together. Worst error 513 -> 60 cents. 3. **Including WALL LOSS in the calibration**, which improved it again (60 -> 21 cents). That is not a coincidence: loss gives the formants realistic bandwidth, and damped peaks are better separated and more reliably located than the near-singular peaks of a lossless tube. It also means the fit is now against the same damped tube that renders. Every area respects `MIN_VOWEL_AREA_CM2`, so no vowel is realised with a constriction tight enough to whistle or hiss."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/FormantSolver.md","moduleTitle":"particle_voice/articulatory/FormantSolver","source":"agi/particle_voice/articulatory/FormantSolver.js","import":"/agi/particle_voice/articulatory/FormantSolver.js","sourceHash":"b8dc73ed6ea31c7ecbca2bf1e03f0f79e8c2d19e55bbfc61e3190aac2f2651d9","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/articulatory/FormantSolver.js#0010:APPROXIMANT_FORMANTS","exportIndex":10,"name":"APPROXIMANT_FORMANTS","kind":"constant","signature":"APPROXIMANT_FORMANTS","summary":"Formant targets for the four approximants, Hz. These are consonants only in their distribution — acoustically /w j r l/ are \"vowel-like consonants\" (semivowels), and a generic `MANNER_AREA` constriction cannot produce any of them. That is why they were inaudible as themselves: a single 0.85 cm^2 narrowing at a place position yields something vowel-shaped and roughly neutral, so /r/, /l/, /w/ and /y/ all collapsed into the same glide. Treating them like vowels — targets first, geometry solved — is the only way they become distinct. Values from the acoustic-phonetics literature (Espy-Wilson's prevocalic measurements; the Delaware ASEL synthesis tables): /w/ 250/750   — an \"extreme /u/\": lower F1 and F2 than the vowel /r/ 350/1000  — F1/F2 like a central rounded vowel... /l/ 400/1075  — ...nearly the same F1/F2 as /r/ /y/ 300/2450  — an \"extreme /i/\" Note the F1/F2 values for /r/ and /l/ are nearly identical. **F3 is what separates them**, almost entirely: /r/'s F3 falls below 2000 Hz (often close to F2, which is its single most salient property), while /l/'s sits at or above 2500 Hz. `f3` is carried here for that reason, and `f3Weight` marks where matching it actually matters — for /r/ and /l/ an F3 error is not a refinement, it is the difference between the two phonemes."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/FormantSolver.md","moduleTitle":"particle_voice/articulatory/FormantSolver","source":"agi/particle_voice/articulatory/FormantSolver.js","import":"/agi/particle_voice/articulatory/FormantSolver.js","sourceHash":"b8dc73ed6ea31c7ecbca2bf1e03f0f79e8c2d19e55bbfc61e3190aac2f2651d9","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/articulatory/FormantSolver.js#0011:APPROXIMANT_AREA_PARAMS","exportIndex":11,"name":"APPROXIMANT_AREA_PARAMS","kind":"constant","signature":"APPROXIMANT_AREA_PARAMS","summary":"Solved approximant geometry, same provenance and staleness guard as `VOWEL_AREA_PARAMS`. Fitted at 32 sections / 64 kHz, with the second constriction AND wall loss (both must match `DEFAULT_TRACT_CONFIG`, or this calibrates a different tube than the one that renders). Measured F1/F2/F3 against target: W 249/852/2113  (250/750/2500) R 337/1137/1845 (350/1000/1500) L 398/1075/2556 (400/1075/2550) Y 299/2402/2688 (300/2450/2600) L is near-exact on all three and Y is within 50 Hz on F1/F2. The decisive property holds: **R's F3 sits at 1845 Hz and L's at 2556 Hz**, a 711 Hz separation, so the one cue that distinguishes /r/ from /l/ genuinely exists. Before calibration both were a generic manner constriction with NO F3 contrast at all — literally the same sound, which is why the user could hear neither. The second constriction is what made this reachable. With a single one, R's F3 was 2166 Hz (not rhotic at all), W's F2 was 1091 against 750, and Y's F2 was 1541 against 2450. R's F3 is still ~345 Hz above target, the remaining gap being the sublingual cavity that a 1-D area function cannot represent at all."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/FormantSolver.md","moduleTitle":"particle_voice/articulatory/FormantSolver","source":"agi/particle_voice/articulatory/FormantSolver.js","import":"/agi/particle_voice/articulatory/FormantSolver.js","sourceHash":"b8dc73ed6ea31c7ecbca2bf1e03f0f79e8c2d19e55bbfc61e3190aac2f2651d9","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/articulatory/FormantSolver.js#0012:MIN_VOWEL_AREA_CM2","exportIndex":12,"name":"MIN_VOWEL_AREA_CM2","kind":"constant","signature":"MIN_VOWEL_AREA_CM2","summary":"Smallest cross-section, in cm^2, a VOWEL is allowed anywhere in the tract. Without this the search is free to buy formant accuracy with impossible geometry: an unconstrained fit put AA's constriction at 0.15 cm^2, which is TIGHTER than `ArticulationHead`'s fricative constant (0.14). Two things are wrong with that. Physically, a channel that narrow generates turbulence at speech airflow rates — it would be a fricative, not a vowel, and a vowel that hisses is not the vowel you asked for. Numerically, the extreme area ratio drives junction reflection coefficients toward +-1, giving absurdly high-Q resonances that ring. 0.35 cm^2 sits just above the turbulence onset region while still allowing the tight constrictions high vowels genuinely need (measured vowel minima run from ~0.3 cm^2 for /i/ upward)."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/FormantSolver.md","moduleTitle":"particle_voice/articulatory/FormantSolver","source":"agi/particle_voice/articulatory/FormantSolver.js","import":"/agi/particle_voice/articulatory/FormantSolver.js","sourceHash":"b8dc73ed6ea31c7ecbca2bf1e03f0f79e8c2d19e55bbfc61e3190aac2f2651d9","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/articulatory/FormantSolver.js#0013:DEFAULT_SOLVER_OPTIONS","exportIndex":13,"name":"DEFAULT_SOLVER_OPTIONS","kind":"constant","signature":"DEFAULT_SOLVER_OPTIONS","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/NeuralPhysiologyState.md","moduleTitle":"particle_voice/articulatory/NeuralPhysiologyState","source":"agi/particle_voice/articulatory/NeuralPhysiologyState.js","import":"/agi/particle_voice/articulatory/NeuralPhysiologyState.js","sourceHash":"e759a67f60b7e17ad72176a031511d060010bc247e22176a052bfdcf2f393c76","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/articulatory/NeuralPhysiologyState.js","title":"particle_voice/articulatory/NeuralPhysiologyState","summary":"NeuralPhysiologyState.js — Phase 2 Voice Box state schema (`v0`). The model's predicted per-frame physiology state, per `ARCHITECTURE.md` §4: four control heads plus an uncertainty head, version `0x00010000`. This is a `v0` working definition of each head's field set — the heads themselves are named and required by the plan, but their exact field composition was not otherwise specified anywhere in the frozen `spec/` documents, so the fields chosen here are deliberately the smallest set that maps DIRECTLY onto an already-built, already-tested GPU kernel's input parameters (not invented ahead of a consumer): - `RespiratoryDriveHead.targetSubglottalPressure` → drives `BreathReservoirState`/`nn/kernels/articulatory/breath_reservoir.js`. - `GlottalStateHead` (`t0Samples`/`teSamples`/`tpSamples`/`taSamples`/ `ee`) → the exact parameter names `nn/kernels/articulatory/glottal_lf.js` takes per instance. - `TractGestureHead.areas` → the area profile `nn/kernels/articulatory/tract_transfer.js`/`tract_waveguide.js` consume. - `ArticulationEventHead` (`constrictionIndex`/`constrictionAmplitude`/ `nasalCoupling`) → drives `constriction_noise.js`/`nasal_junction.js` injection points (the actual multi-port coupling math those two kernels' docstrings still flag as deferred — this head only carries the control values, not a coupling implementation). - `UncertaintyHead.confidence` → a single scalar per-frame confidence, the minimal representation until a real model exists to justify a richer (e.g. per-head covariance) shape. Like every other `v0` document in this project, this field set may still change before a `v1` freeze — it is not a claim that these are the final head shapes, only that they are usable today and traceable to real kernel inputs rather than speculative. Per `ARCHITECTURE.md` §4's timestamping rule, every state object here carries the absolute sample counter it was produced at (`sampleIndex`), never a chunk-relative index.","exportCount":7}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/NeuralPhysiologyState.md","moduleTitle":"particle_voice/articulatory/NeuralPhysiologyState","source":"agi/particle_voice/articulatory/NeuralPhysiologyState.js","import":"/agi/particle_voice/articulatory/NeuralPhysiologyState.js","sourceHash":"e759a67f60b7e17ad72176a031511d060010bc247e22176a052bfdcf2f393c76","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/articulatory/NeuralPhysiologyState.js#0000:createNeuralPhysiologyState","exportIndex":0,"name":"createNeuralPhysiologyState","kind":"function","signature":"createNeuralPhysiologyState({ sampleIndex, respiratoryDrive, glottalState, tractGesture, articulationEvent = null, uncertainty = { confidence: 1 }, })","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/NeuralPhysiologyState.md","moduleTitle":"particle_voice/articulatory/NeuralPhysiologyState","source":"agi/particle_voice/articulatory/NeuralPhysiologyState.js","import":"/agi/particle_voice/articulatory/NeuralPhysiologyState.js","sourceHash":"e759a67f60b7e17ad72176a031511d060010bc247e22176a052bfdcf2f393c76","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/articulatory/NeuralPhysiologyState.js#0001:validateRespiratoryDriveHead","exportIndex":1,"name":"validateRespiratoryDriveHead","kind":"function","signature":"validateRespiratoryDriveHead(head)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/NeuralPhysiologyState.md","moduleTitle":"particle_voice/articulatory/NeuralPhysiologyState","source":"agi/particle_voice/articulatory/NeuralPhysiologyState.js","import":"/agi/particle_voice/articulatory/NeuralPhysiologyState.js","sourceHash":"e759a67f60b7e17ad72176a031511d060010bc247e22176a052bfdcf2f393c76","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/articulatory/NeuralPhysiologyState.js#0002:validateGlottalStateHead","exportIndex":2,"name":"validateGlottalStateHead","kind":"function","signature":"validateGlottalStateHead(head)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/NeuralPhysiologyState.md","moduleTitle":"particle_voice/articulatory/NeuralPhysiologyState","source":"agi/particle_voice/articulatory/NeuralPhysiologyState.js","import":"/agi/particle_voice/articulatory/NeuralPhysiologyState.js","sourceHash":"e759a67f60b7e17ad72176a031511d060010bc247e22176a052bfdcf2f393c76","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/articulatory/NeuralPhysiologyState.js#0003:validateTractGestureHead","exportIndex":3,"name":"validateTractGestureHead","kind":"function","signature":"validateTractGestureHead(head)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/NeuralPhysiologyState.md","moduleTitle":"particle_voice/articulatory/NeuralPhysiologyState","source":"agi/particle_voice/articulatory/NeuralPhysiologyState.js","import":"/agi/particle_voice/articulatory/NeuralPhysiologyState.js","sourceHash":"e759a67f60b7e17ad72176a031511d060010bc247e22176a052bfdcf2f393c76","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/articulatory/NeuralPhysiologyState.js#0004:validateArticulationEventHead","exportIndex":4,"name":"validateArticulationEventHead","kind":"function","signature":"validateArticulationEventHead(head)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/NeuralPhysiologyState.md","moduleTitle":"particle_voice/articulatory/NeuralPhysiologyState","source":"agi/particle_voice/articulatory/NeuralPhysiologyState.js","import":"/agi/particle_voice/articulatory/NeuralPhysiologyState.js","sourceHash":"e759a67f60b7e17ad72176a031511d060010bc247e22176a052bfdcf2f393c76","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/articulatory/NeuralPhysiologyState.js#0005:validateUncertaintyHead","exportIndex":5,"name":"validateUncertaintyHead","kind":"function","signature":"validateUncertaintyHead(head)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/NeuralPhysiologyState.md","moduleTitle":"particle_voice/articulatory/NeuralPhysiologyState","source":"agi/particle_voice/articulatory/NeuralPhysiologyState.js","import":"/agi/particle_voice/articulatory/NeuralPhysiologyState.js","sourceHash":"e759a67f60b7e17ad72176a031511d060010bc247e22176a052bfdcf2f393c76","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/articulatory/NeuralPhysiologyState.js#0006:NEURAL_PHYSIOLOGY_STATE_VERSION","exportIndex":6,"name":"NEURAL_PHYSIOLOGY_STATE_VERSION","kind":"constant","signature":"NEURAL_PHYSIOLOGY_STATE_VERSION","summary":"NeuralPhysiologyState.js — Phase 2 Voice Box state schema (`v0`). The model's predicted per-frame physiology state, per `ARCHITECTURE.md` §4: four control heads plus an uncertainty head, version `0x00010000`. This is a `v0` working definition of each head's field set — the heads themselves are named and required by the plan, but their exact field composition was not otherwise specified anywhere in the frozen `spec/` documents, so the fields chosen here are deliberately the smallest set that maps DIRECTLY onto an already-built, already-tested GPU kernel's input parameters (not invented ahead of a consumer): - `RespiratoryDriveHead.targetSubglottalPressure` → drives `BreathReservoirState`/`nn/kernels/articulatory/breath_reservoir.js`. - `GlottalStateHead` (`t0Samples`/`teSamples`/`tpSamples`/`taSamples`/ `ee`) → the exact parameter names `nn/kernels/articulatory/glottal_lf.js` takes per instance. - `TractGestureHead.areas` → the area profile `nn/kernels/articulatory/tract_transfer.js`/`tract_waveguide.js` consume. - `ArticulationEventHead` (`constrictionIndex`/`constrictionAmplitude`/ `nasalCoupling`) → drives `constriction_noise.js`/`nasal_junction.js` injection points (the actual multi-port coupling math those two kernels' docstrings still flag as deferred — this head only carries the control values, not a coupling implementation). - `UncertaintyHead.confidence` → a single scalar per-frame confidence, the minimal representation until a real model exists to justify a richer (e.g. per-head covariance) shape. Like every other `v0` document in this project, this field set may still change before a `v1` freeze — it is not a claim that these are the final head shapes, only that they are usable today and traceable to real kernel inputs rather than speculative. Per `ARCHITECTURE.md` §4's timestamping rule, every state object here carries the absolute sample counter it was produced at (`sampleIndex`), never a chunk-relative index."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/ParticleTract.md","moduleTitle":"particle_voice/articulatory/ParticleTract","source":"agi/particle_voice/articulatory/ParticleTract.js","import":"/agi/particle_voice/articulatory/ParticleTract.js","sourceHash":"a294f6f6db8a6fbe43ad637c6ee1e5575dd74b882281b1c96b833704f6c93497","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/articulatory/ParticleTract.js","title":"particle_voice/articulatory/ParticleTract","summary":"ParticleTract.js — Phase 2 ParticleVoice Voice Box orchestrator. The GPU-resident articulatory synthesizer: composes the already-verified Phase 2 articulatory kernels into audible speech, one fixed-size chunk at a time, with all cross-chunk state persisted ON THE GPU (no CPU round trip mid-pipeline). This is the production counterpart of R6's pure-CPU `risk/VoiceBoxWaveguideProbe.js`, and deliberately reproduces the same four controllable behaviors that probe proved: stable vowels, nasal coupling, closure/release/frication, and pitch sweeps. Signal graph per chunk (7 GPU passes + 4 state copies, ONE submit): glottal_lf ────────────────► voicing ──┐ ├─ signal_add ─► source_flow ─┐ constriction_noise(asp seed) ─► asp ────┘                            │ ▼ constriction_noise(fric seed) ─► frication ──────► tract_waveguide (oral) │         │ radiated ◄─────────┘         └──► nasal_tap │                                │ │            nasal_junction ◄────┘ │                   │ └── signal_add ◄── radiated │ ▼  final PCM Design decisions worth knowing: - **Frication is injected at the constriction, not the glottis.** The frication noise buffer goes to `tract_waveguide.js`'s `constriction_noise` input and is added to the right-going wave at `constrictionIndex`, so only the cavity in FRONT of the constriction filters it. Mixing it into `source_flow` instead would make every fricative sound like a whisper. Aspiration, which really is glottal, IS mixed into `source_flow`. - **No `lip_radiation` pass.** `tract_waveguide.js` already applies the `outputRaw - prevOutputRaw` radiation first-difference internally (exactly as R6's `step()` does). Running `lip_radiation.js` on its output would differentiate twice and produce a thin, bass-less buzz. That kernel exists for callers holding an undifferentiated signal. - **Fixed `chunkSamples`.** `tract_waveguide.js`/`nasal_junction.js` pack their radiated signal and persisted state into one buffer whose internal offsets depend on `num_samples`, so a varying chunk size would move every offset and invalidate the pre-built bind groups. A fixed chunk size is also what a real-time audio bridge wants anyway (`streaming/VoiceChunker.js` schedules in fixed frame buckets), so it is required here rather than worked around. - **Reflection coefficients are computed CPU-side** each chunk via `risk/KellyLochbaumWaveguide.js`'s proven `reflectionCoefficients`, matching `tract_waveguide.js`'s stated contract. Changing `areas` between chunks is how closure/release is articulated. **Visualization is optional and structurally incapable of changing the PCM.** `ARCHITECTURE.md` §4 requires visualization to be \"bit-identically disable-able without changing rendered PCM\". Here that is not a runtime convention but a structural property: when `visualFramesPerChunk` is 0 (the default) the visualization buffers, pipeline and dispatches are never created at all, and when it is enabled every visualization buffer is WRITE-ONLY from the acoustic path's perspective — the field is copied OUT of `tract_waveguide`/`nasal_junction`'s already-final packed outputs, and nothing in the visualization path is ever read back into the acoustic path. `visual_state_decimate.js` makes the same guarantee at kernel level (it has no read_write access to anything the acoustic path reads). Known limitations, stated honestly rather than papered over: - `constrictionIndex` and `nasalCoupling` are DISPATCH-WIDE (they live in the kernels' uniform structs, not per-instance storage arrays), so all instances of one `ParticleTract` share them. Per-instance variation would require promoting both to storage buffers. They are therefore top-level controls here, not per-instance ones, so the API does not imply a capability that does not exist. - The nasal tap is a read-only observation of the oral tract, not a rigorous 3-port scattering junction — the oral tract is not loaded by the nasal branch. This matches R6 exactly and is noted in `tract_waveguide.js`'s docstring too. - The visualization field carries the THREE per-sample solver signals the kernels actually expose (oral radiated, nasal tap, nasal radiated), not one channel per tube section. `ARCHITECTURE.md` §4 describes the richer per-section field, but `tract_waveguide.js` does not emit a `[section, sample]` field — only its radiated signal, final state and the single tapped section. Adding one would mean a `numSections * chunkSamples` output block (~512 KB per chunk at 32 sections / 1024 samples) allocated whether or not visualization is on. That is a deliberate follow-up, not an oversight; the three channels here are enough to drive a ribbon/heatmap of what the solver is actually radiating.","exportCount":10}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/ParticleTract.md","moduleTitle":"particle_voice/articulatory/ParticleTract","source":"agi/particle_voice/articulatory/ParticleTract.js","import":"/agi/particle_voice/articulatory/ParticleTract.js","sourceHash":"a294f6f6db8a6fbe43ad637c6ee1e5575dd74b882281b1c96b833704f6c93497","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/articulatory/ParticleTract.js#0000:ParticleTract","exportIndex":0,"name":"ParticleTract","kind":"class","signature":"class ParticleTract","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/ParticleTract.md","moduleTitle":"particle_voice/articulatory/ParticleTract","source":"agi/particle_voice/articulatory/ParticleTract.js","import":"/agi/particle_voice/articulatory/ParticleTract.js","sourceHash":"a294f6f6db8a6fbe43ad637c6ee1e5575dd74b882281b1c96b833704f6c93497","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/articulatory/ParticleTract.js#0001:sectionsForLength","exportIndex":1,"name":"sectionsForLength","kind":"function","signature":"sectionsForLength(lengthM, sampleRate, speedOfSound = SPEED_OF_SOUND_M_PER_S)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/ParticleTract.md","moduleTitle":"particle_voice/articulatory/ParticleTract","source":"agi/particle_voice/articulatory/ParticleTract.js","import":"/agi/particle_voice/articulatory/ParticleTract.js","sourceHash":"a294f6f6db8a6fbe43ad637c6ee1e5575dd74b882281b1c96b833704f6c93497","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/articulatory/ParticleTract.js#0002:lengthForSections","exportIndex":2,"name":"lengthForSections","kind":"function","signature":"lengthForSections(numSections, sampleRate, speedOfSound = SPEED_OF_SOUND_M_PER_S)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/ParticleTract.md","moduleTitle":"particle_voice/articulatory/ParticleTract","source":"agi/particle_voice/articulatory/ParticleTract.js","import":"/agi/particle_voice/articulatory/ParticleTract.js","sourceHash":"a294f6f6db8a6fbe43ad637c6ee1e5575dd74b882281b1c96b833704f6c93497","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/articulatory/ParticleTract.js#0003:createParticleTract","exportIndex":3,"name":"createParticleTract","kind":"function","signature":"createParticleTract(device, options)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/ParticleTract.md","moduleTitle":"particle_voice/articulatory/ParticleTract","source":"agi/particle_voice/articulatory/ParticleTract.js","import":"/agi/particle_voice/articulatory/ParticleTract.js","sourceHash":"a294f6f6db8a6fbe43ad637c6ee1e5575dd74b882281b1c96b833704f6c93497","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/articulatory/ParticleTract.js#0004:SPEED_OF_SOUND_M_PER_S","exportIndex":4,"name":"SPEED_OF_SOUND_M_PER_S","kind":"constant","signature":"SPEED_OF_SOUND_M_PER_S","summary":"Boundary coefficients are R6's proven values. The SECTION COUNTS are not — they are derived from physics, and R6's were wrong. ## Section count is not a free parameter: it sets the tract LENGTH In this waveguide a wave advances one section per sample (`right[i] -> right[i+1]`), so each section is one sample of travel: sectionLength = c / sampleRate tractLength   = numSections * c / sampleRate The count is therefore *determined* by the sample rate and the length you want. At 32 kHz with c = 340 m/s a section is 1.06 cm, so a 17.5 cm adult vocal tract needs **16 sections**, not 32. R6 used 32 sections at 32 kHz, which models a **34 cm** tube — twice human length. Nothing errors: the model is a perfectly valid tube, just the wrong one. Since a quarter-wave resonator's formants are `(2k-1)*c/(4L)`, doubling L puts EVERY formant an octave too low — F1 at ~260 Hz instead of ~500 Hz. That is not a subtle detune; it moves the formants out of the range speech sounds occupy, which is audible as muffled, \"underwater\", vowel-less noise no matter how clean the rest of the pipeline is. It was measured directly (F1 261 Hz, implied length 32.6 cm) by the uniform-tube calibration check in `tests/particle-voice/voicebox-audio.html`, which now guards it. Note the literature's 2x trap: a HALF-sample-delay Kelly-Lochbaum variant has `sectionLength = c/(2*sampleRate)`, for which 32 sections at 32 kHz WOULD be right (that is why published models quote e.g. 44 segments at 44.1 kHz). This implementation is the full-sample form, so the full-sample relation applies. The calibration test asserts the resulting length empirically rather than trusting either convention."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/ParticleTract.md","moduleTitle":"particle_voice/articulatory/ParticleTract","source":"agi/particle_voice/articulatory/ParticleTract.js","import":"/agi/particle_voice/articulatory/ParticleTract.js","sourceHash":"a294f6f6db8a6fbe43ad637c6ee1e5575dd74b882281b1c96b833704f6c93497","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/articulatory/ParticleTract.js#0005:ADULT_TRACT_LENGTH_M","exportIndex":5,"name":"ADULT_TRACT_LENGTH_M","kind":"constant","signature":"ADULT_TRACT_LENGTH_M","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/ParticleTract.md","moduleTitle":"particle_voice/articulatory/ParticleTract","source":"agi/particle_voice/articulatory/ParticleTract.js","import":"/agi/particle_voice/articulatory/ParticleTract.js","sourceHash":"a294f6f6db8a6fbe43ad637c6ee1e5575dd74b882281b1c96b833704f6c93497","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/articulatory/ParticleTract.js#0006:ADULT_NASAL_LENGTH_M","exportIndex":6,"name":"ADULT_NASAL_LENGTH_M","kind":"constant","signature":"ADULT_NASAL_LENGTH_M","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/ParticleTract.md","moduleTitle":"particle_voice/articulatory/ParticleTract","source":"agi/particle_voice/articulatory/ParticleTract.js","import":"/agi/particle_voice/articulatory/ParticleTract.js","sourceHash":"a294f6f6db8a6fbe43ad637c6ee1e5575dd74b882281b1c96b833704f6c93497","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/articulatory/ParticleTract.js#0007:DEFAULT_TRACT_CONFIG","exportIndex":7,"name":"DEFAULT_TRACT_CONFIG","kind":"constant","signature":"DEFAULT_TRACT_CONFIG","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/ParticleTract.md","moduleTitle":"particle_voice/articulatory/ParticleTract","source":"agi/particle_voice/articulatory/ParticleTract.js","import":"/agi/particle_voice/articulatory/ParticleTract.js","sourceHash":"a294f6f6db8a6fbe43ad637c6ee1e5575dd74b882281b1c96b833704f6c93497","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/articulatory/ParticleTract.js#0008:VISUAL_CHANNELS","exportIndex":8,"name":"VISUAL_CHANNELS","kind":"constant","signature":"VISUAL_CHANNELS","summary":"The per-sample solver signals the visualization field carries, in channel order. Exported so a renderer indexes channels by name instead of hard-coding 0/1/2."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/ParticleTract.md","moduleTitle":"particle_voice/articulatory/ParticleTract","source":"agi/particle_voice/articulatory/ParticleTract.js","import":"/agi/particle_voice/articulatory/ParticleTract.js","sourceHash":"a294f6f6db8a6fbe43ad637c6ee1e5575dd74b882281b1c96b833704f6c93497","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/articulatory/ParticleTract.js#0009:DEFAULT_LF_SHAPE","exportIndex":9,"name":"DEFAULT_LF_SHAPE","kind":"constant","signature":"DEFAULT_LF_SHAPE","summary":"LF shape defaults. `openQuotient` matches R6's `createGlottalSource({ openQuotient: 0.6 })`; the other two are LF-specific ratios with no R6 equivalent (R6 used the raised-cosine \"LF-lite\" shape that has no Tp/Ta at all)."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/PhysiologyFeedbackState.md","moduleTitle":"particle_voice/articulatory/PhysiologyFeedbackState","source":"agi/particle_voice/articulatory/PhysiologyFeedbackState.js","import":"/agi/particle_voice/articulatory/PhysiologyFeedbackState.js","sourceHash":"adbb8adf62de04bc7038811cd5b7a79a24d3aeef734d1dd099757c1e254922ff","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/articulatory/PhysiologyFeedbackState.js","title":"particle_voice/articulatory/PhysiologyFeedbackState","summary":"PhysiologyFeedbackState.js — Phase 2 Voice Box state schema (`v0`). `ARCHITECTURE.md` §4's `PhysiologyFeedbackState`: \"a reduced/decimated feedback signal from the acoustic solve back toward the model\". The JS-side timestamped container for one `nn/kernels/articulatory/physiology_feedback_reduce.js` dispatch's output — per-instance (mean, RMS) pairs, one pair per fixed-size frame — distinct from `TractStateSnapshot.js`'s multi-channel visualization field (`visual_state_decimate.js`'s output): this shape is what the model's control loop reads back, not what a rig/visual system reads. Every consumer of this state should treat it as internal-physiology feedback, not a real acoustic measurement — matching `spec/ActivityContract-v0.md` §8's `GeneratedPhysiologyEnergy` / `RenderedOutputEnergy` / `ObservedInputEnergy` three-domain separation (this is `GeneratedPhysiologyEnergy`'s reduced form, never to be confused with a microphone-observed or rendered-PCM-measured energy value).","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/PhysiologyFeedbackState.md","moduleTitle":"particle_voice/articulatory/PhysiologyFeedbackState","source":"agi/particle_voice/articulatory/PhysiologyFeedbackState.js","import":"/agi/particle_voice/articulatory/PhysiologyFeedbackState.js","sourceHash":"adbb8adf62de04bc7038811cd5b7a79a24d3aeef734d1dd099757c1e254922ff","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/articulatory/PhysiologyFeedbackState.js#0000:createPhysiologyFeedbackState","exportIndex":0,"name":"createPhysiologyFeedbackState","kind":"function","signature":"createPhysiologyFeedbackState({ sampleIndex, numFrames, mean, rms })","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/TractStateSnapshot.md","moduleTitle":"particle_voice/articulatory/TractStateSnapshot","source":"agi/particle_voice/articulatory/TractStateSnapshot.js","import":"/agi/particle_voice/articulatory/TractStateSnapshot.js","sourceHash":"10ed0ac0a50c92dc1214e3d28ce96a141d247a7ad534c1cf41922b5618cb408d","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/articulatory/TractStateSnapshot.js","title":"particle_voice/articulatory/TractStateSnapshot","summary":"TractStateSnapshot.js — Phase 2 Voice Box state schema (`v0`). `ARCHITECTURE.md` §4's `TractStateSnapshot`: \"low-rate timestamped state for rigs/visualization, decimated from the per-sample waveguide state\". The JS-side timestamped container for one `nn/kernels/articulatory/visual_state_decimate.js` dispatch's output — a `[channel, frame]` box-averaged field (one channel per tube section, per that kernel's docstring), NOT the model-feedback (mean, RMS) shape `PhysiologyFeedbackState.js` wraps (`physiology_feedback_reduce.js`'s output) — the two are read by different consumers (a rig/visual system here, the model's control loop there) and were kept as separate kernels for exactly this reason (see `visual_state_decimate.js`'s own docstring). Per `ARCHITECTURE.md` §4's requirement that visualization \"must be bit-identically disable-able without changing rendered PCM\", this container holds ONLY derived/decimated data for display — nothing here is ever read back into the acoustic path, matching `visual_state_decimate.js`'s structural read-only guarantee.","exportCount":2}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/TractStateSnapshot.md","moduleTitle":"particle_voice/articulatory/TractStateSnapshot","source":"agi/particle_voice/articulatory/TractStateSnapshot.js","import":"/agi/particle_voice/articulatory/TractStateSnapshot.js","sourceHash":"10ed0ac0a50c92dc1214e3d28ce96a141d247a7ad534c1cf41922b5618cb408d","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/articulatory/TractStateSnapshot.js#0000:createTractStateSnapshot","exportIndex":0,"name":"createTractStateSnapshot","kind":"function","signature":"createTractStateSnapshot({ sampleIndex, numChannels, numFrames, field })","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/TractStateSnapshot.md","moduleTitle":"particle_voice/articulatory/TractStateSnapshot","source":"agi/particle_voice/articulatory/TractStateSnapshot.js","import":"/agi/particle_voice/articulatory/TractStateSnapshot.js","sourceHash":"10ed0ac0a50c92dc1214e3d28ce96a141d247a7ad534c1cf41922b5618cb408d","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/articulatory/TractStateSnapshot.js#0001:channelSeries","exportIndex":1,"name":"channelSeries","kind":"function","signature":"channelSeries(snapshot, channel)","summary":"Reads channel `channel`'s decimated time series out of a snapshot's flat `[channel, frame]` field — matches `visual_state_decimate.js`'s `(inst*num_channels+ch)*num_frames+frame` packing (single-instance view; the caller selects `channel`/`instance` slicing upstream of this helper)."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/VoiceAnatomyProfile.md","moduleTitle":"particle_voice/articulatory/VoiceAnatomyProfile","source":"agi/particle_voice/articulatory/VoiceAnatomyProfile.js","import":"/agi/particle_voice/articulatory/VoiceAnatomyProfile.js","sourceHash":"0bcf2ed0d4d2dbd00062ed90e14f1598429d046845c4ec3d16f83c27662cb386","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/articulatory/VoiceAnatomyProfile.js","title":"particle_voice/articulatory/VoiceAnatomyProfile","summary":"VoiceAnatomyProfile.js — Phase 2 Voice Box state schema (`v0`). `ARCHITECTURE.md` §4's `CharacterAnatomyState`: \"persistent per-character morphology (equivalent role to `PRVC-v0`'s `formantScale`/pitch-range calibration, but for non-cloned/authored characters rather than captured voices)\". This is the STATIC per-voice data that stays constant across frames — the rest-position oral tube area profile, optional nasal branch area profile, and the three boundary reflection coefficients `nn/kernels/articulatory/tract_waveguide.js`/`nasal_junction.js` require (`glottalReflection`/`lipReflection`/`nostrilReflection`, all magnitude `< 1` for BIBO stability per `risk/KellyLochbaumWaveguide.js` (R6)) — as distinct from `NeuralPhysiologyState`'s `TractGestureHead`, which is the per-FRAME predicted deviation/gesture applied on top of this rest profile, not a replacement for it. `risk/VoiceBoxWaveguideProbe.js` (R6/R6A) already proved out `NUM_SECTIONS = 32`/`NASAL_SECTIONS = 16`, `GLOTTAL_REFLECTION = 0.85`, `LIP_REFLECTION = -0.9`, `NOSTRIL_REFLECTION = -0.85` as one working anatomy — `defaultVoiceAnatomyProfile()` below reuses those exact proven values as the default rather than inventing new ones.","exportCount":7}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/VoiceAnatomyProfile.md","moduleTitle":"particle_voice/articulatory/VoiceAnatomyProfile","source":"agi/particle_voice/articulatory/VoiceAnatomyProfile.js","import":"/agi/particle_voice/articulatory/VoiceAnatomyProfile.js","sourceHash":"0bcf2ed0d4d2dbd00062ed90e14f1598429d046845c4ec3d16f83c27662cb386","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/articulatory/VoiceAnatomyProfile.js#0000:createVoiceAnatomyProfile","exportIndex":0,"name":"createVoiceAnatomyProfile","kind":"function","signature":"createVoiceAnatomyProfile({ oralAreas, nasalAreas = null, glottalReflection = DEFAULT_GLOTTAL_REFLECTION, lipReflection = DEFAULT_LIP_REFLECTION, nostrilReflection = DEFAULT_NOSTRIL_REFLECTION, formantScale = 1, pitchRangeHz = { min: 80, max: 400 }, } = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/VoiceAnatomyProfile.md","moduleTitle":"particle_voice/articulatory/VoiceAnatomyProfile","source":"agi/particle_voice/articulatory/VoiceAnatomyProfile.js","import":"/agi/particle_voice/articulatory/VoiceAnatomyProfile.js","sourceHash":"0bcf2ed0d4d2dbd00062ed90e14f1598429d046845c4ec3d16f83c27662cb386","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/articulatory/VoiceAnatomyProfile.js#0001:defaultVoiceAnatomyProfile","exportIndex":1,"name":"defaultVoiceAnatomyProfile","kind":"function","signature":"defaultVoiceAnatomyProfile()","summary":"The R6/R6A-proven default anatomy (uniform tube, no nasal coupling) — a reasonable starting profile for an authored (non-cloned) character, not a claim of acoustic realism."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/VoiceAnatomyProfile.md","moduleTitle":"particle_voice/articulatory/VoiceAnatomyProfile","source":"agi/particle_voice/articulatory/VoiceAnatomyProfile.js","import":"/agi/particle_voice/articulatory/VoiceAnatomyProfile.js","sourceHash":"0bcf2ed0d4d2dbd00062ed90e14f1598429d046845c4ec3d16f83c27662cb386","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/articulatory/VoiceAnatomyProfile.js#0002:DEFAULT_NUM_ORAL_SECTIONS","exportIndex":2,"name":"DEFAULT_NUM_ORAL_SECTIONS","kind":"constant","signature":"DEFAULT_NUM_ORAL_SECTIONS","summary":"VoiceAnatomyProfile.js — Phase 2 Voice Box state schema (`v0`). `ARCHITECTURE.md` §4's `CharacterAnatomyState`: \"persistent per-character morphology (equivalent role to `PRVC-v0`'s `formantScale`/pitch-range calibration, but for non-cloned/authored characters rather than captured voices)\". This is the STATIC per-voice data that stays constant across frames — the rest-position oral tube area profile, optional nasal branch area profile, and the three boundary reflection coefficients `nn/kernels/articulatory/tract_waveguide.js`/`nasal_junction.js` require (`glottalReflection`/`lipReflection`/`nostrilReflection`, all magnitude `< 1` for BIBO stability per `risk/KellyLochbaumWaveguide.js` (R6)) — as distinct from `NeuralPhysiologyState`'s `TractGestureHead`, which is the per-FRAME predicted deviation/gesture applied on top of this rest profile, not a replacement for it. `risk/VoiceBoxWaveguideProbe.js` (R6/R6A) already proved out `NUM_SECTIONS = 32`/`NASAL_SECTIONS = 16`, `GLOTTAL_REFLECTION = 0.85`, `LIP_REFLECTION = -0.9`, `NOSTRIL_REFLECTION = -0.85` as one working anatomy — `defaultVoiceAnatomyProfile()` below reuses those exact proven values as the default rather than inventing new ones."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/VoiceAnatomyProfile.md","moduleTitle":"particle_voice/articulatory/VoiceAnatomyProfile","source":"agi/particle_voice/articulatory/VoiceAnatomyProfile.js","import":"/agi/particle_voice/articulatory/VoiceAnatomyProfile.js","sourceHash":"0bcf2ed0d4d2dbd00062ed90e14f1598429d046845c4ec3d16f83c27662cb386","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/articulatory/VoiceAnatomyProfile.js#0003:DEFAULT_NUM_NASAL_SECTIONS","exportIndex":3,"name":"DEFAULT_NUM_NASAL_SECTIONS","kind":"constant","signature":"DEFAULT_NUM_NASAL_SECTIONS","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/VoiceAnatomyProfile.md","moduleTitle":"particle_voice/articulatory/VoiceAnatomyProfile","source":"agi/particle_voice/articulatory/VoiceAnatomyProfile.js","import":"/agi/particle_voice/articulatory/VoiceAnatomyProfile.js","sourceHash":"0bcf2ed0d4d2dbd00062ed90e14f1598429d046845c4ec3d16f83c27662cb386","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/articulatory/VoiceAnatomyProfile.js#0004:DEFAULT_GLOTTAL_REFLECTION","exportIndex":4,"name":"DEFAULT_GLOTTAL_REFLECTION","kind":"constant","signature":"DEFAULT_GLOTTAL_REFLECTION","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/VoiceAnatomyProfile.md","moduleTitle":"particle_voice/articulatory/VoiceAnatomyProfile","source":"agi/particle_voice/articulatory/VoiceAnatomyProfile.js","import":"/agi/particle_voice/articulatory/VoiceAnatomyProfile.js","sourceHash":"0bcf2ed0d4d2dbd00062ed90e14f1598429d046845c4ec3d16f83c27662cb386","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/articulatory/VoiceAnatomyProfile.js#0005:DEFAULT_LIP_REFLECTION","exportIndex":5,"name":"DEFAULT_LIP_REFLECTION","kind":"constant","signature":"DEFAULT_LIP_REFLECTION","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/VoiceAnatomyProfile.md","moduleTitle":"particle_voice/articulatory/VoiceAnatomyProfile","source":"agi/particle_voice/articulatory/VoiceAnatomyProfile.js","import":"/agi/particle_voice/articulatory/VoiceAnatomyProfile.js","sourceHash":"0bcf2ed0d4d2dbd00062ed90e14f1598429d046845c4ec3d16f83c27662cb386","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/articulatory/VoiceAnatomyProfile.js#0006:DEFAULT_NOSTRIL_REFLECTION","exportIndex":6,"name":"DEFAULT_NOSTRIL_REFLECTION","kind":"constant","signature":"DEFAULT_NOSTRIL_REFLECTION","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/WaveguideAcousticState.md","moduleTitle":"particle_voice/articulatory/WaveguideAcousticState","source":"agi/particle_voice/articulatory/WaveguideAcousticState.js","import":"/agi/particle_voice/articulatory/WaveguideAcousticState.js","sourceHash":"448316a5a8989253150f963573bbfa72eada9c9598dc53a4baa42e5768d48772","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/articulatory/WaveguideAcousticState.js","title":"particle_voice/articulatory/WaveguideAcousticState","summary":"WaveguideAcousticState.js — Phase 2 Voice Box state schema (`v0`). \"The R6 `KellyLochbaumWaveguide.js` tract's per-sample output (radiated signal + nasal tap)\" per `ARCHITECTURE.md` §4 — the JS-side timestamped container for one dispatched chunk's worth of `nn/kernels/articulatory/tract_waveguide.js` (`radiated`, plus the persisted `finalRight`/`finalLeft`/`finalPrevOutput` continuation state that kernel's packed output layout produces) and, optionally, a coupled `nn/kernels/articulatory/nasal_junction.js` chunk's own radiated output. This container does not itself dispatch either kernel or compute `nasalTapSignal` (`tract_waveguide.js`'s own docstring notes the nasal tap read-out is still deferred there) — it only fixes the shape a caller that DOES dispatch those kernels should hand back, so downstream consumers (the audio bridge, `physiology_feedback_reduce.js`, `visual_state_decimate.js`) have one stable state shape to depend on regardless of which kernel(s) produced it.","exportCount":2}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/WaveguideAcousticState.md","moduleTitle":"particle_voice/articulatory/WaveguideAcousticState","source":"agi/particle_voice/articulatory/WaveguideAcousticState.js","import":"/agi/particle_voice/articulatory/WaveguideAcousticState.js","sourceHash":"448316a5a8989253150f963573bbfa72eada9c9598dc53a4baa42e5768d48772","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/articulatory/WaveguideAcousticState.js#0000:createWaveguideAcousticState","exportIndex":0,"name":"createWaveguideAcousticState","kind":"function","signature":"createWaveguideAcousticState({ sampleIndex, numSamples, radiated, finalRight, finalLeft, finalPrevOutput, nasalRadiated = null })","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/articulatory/WaveguideAcousticState.md","moduleTitle":"particle_voice/articulatory/WaveguideAcousticState","source":"agi/particle_voice/articulatory/WaveguideAcousticState.js","import":"/agi/particle_voice/articulatory/WaveguideAcousticState.js","sourceHash":"448316a5a8989253150f963573bbfa72eada9c9598dc53a4baa42e5768d48772","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/articulatory/WaveguideAcousticState.js#0001:nextChunkInitialState","exportIndex":1,"name":"nextChunkInitialState","kind":"function","signature":"nextChunkInitialState(previousState)","summary":"Builds the next chunk's initial-state inputs (`tract_waveguide.js`'s `initial_right`/`initial_left`/`initial_prev_output` bindings) from a previous chunk's `WaveguideAcousticState` — the exact cross-chunk continuity `tests/particle-voice/phase2-dsp.html`'s `tract_waveguide` test verifies at the kernel level."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/G2PModel.md","moduleTitle":"particle_voice/frontend/G2PModel","source":"agi/particle_voice/frontend/G2PModel.js","import":"/agi/particle_voice/frontend/G2PModel.js","sourceHash":"c7cc69895f4d227ad78224baa6ece1a568c91edad1c547a17b2b00763ea9673e","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/frontend/G2PModel.js","title":"particle_voice/frontend/G2PModel","summary":"G2PModel.js — Phase 3 ParticleVoice text frontend. Grapheme-to-phoneme fallback for words `PronunciationLexicon.js` does not cover, plus `textToPhonemeSequence()` — the deterministic lowering `spec/VoicePlan-v0.md` §4 describes, which turns raw text into the `{ phonemeIds, stress, punctuationContext }` triple the model consumes. ## It is rules, not a network — deliberately The plan calls for a \"minimal `G2PModel.js`\" in Phase 3, and this is a **deterministic, context-sensitive letter-to-sound rule set**, not a trained model. That is the honest choice at this stage: a neural G2P needs a pronunciation corpus to train against, and this project vendors no external data (CMUdict included). Rules give reproducible output today, and the class boundary here is what a learned model would later slot into without touching callers. The name matches the plan's; the implementation does not pretend to be learned. ## Accuracy expectations, stated plainly English orthography is not a function of spelling alone, so a rule set of this size gets the regular cases right and a meaningful minority wrong (`read` has two pronunciations; `bread` breaks the `ea → IY` rule; stress placement in long words is genuinely lexical). That is exactly why `PronunciationLexicon.js` exists and is consulted FIRST — every word whose spelling actively lies belongs there. G2P's job is to make unseen words (character names, invented words, rare vocabulary) pronounceable and stable, not to be a dictionary. ## Rule format Each rule is `[leftContext, target, rightContext, phonemes]`, tried in order at each position, first match winning. Rules are authored longest-target-first per letter so digraphs beat single letters. The context pattern language is deliberately tiny — three metacharacters, no regex — so a rule's behaviour is obvious by inspection: `#` word boundary (start of a left context, end of a right context) `C` exactly one consonant letter `V` exactly one vowel letter anything else, a literal letter Stress is assigned afterwards by syllable heuristic (see `assignStressHeuristic`), because stress is a property of the whole word, not of any single grapheme.","exportCount":7}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/G2PModel.md","moduleTitle":"particle_voice/frontend/G2PModel","source":"agi/particle_voice/frontend/G2PModel.js","import":"/agi/particle_voice/frontend/G2PModel.js","sourceHash":"c7cc69895f4d227ad78224baa6ece1a568c91edad1c547a17b2b00763ea9673e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/frontend/G2PModel.js#0000:G2PModel","exportIndex":0,"name":"G2PModel","kind":"class","signature":"class G2PModel","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/G2PModel.md","moduleTitle":"particle_voice/frontend/G2PModel","source":"agi/particle_voice/frontend/G2PModel.js","import":"/agi/particle_voice/frontend/G2PModel.js","sourceHash":"c7cc69895f4d227ad78224baa6ece1a568c91edad1c547a17b2b00763ea9673e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/frontend/G2PModel.js#0001:graphemesToPhonemeSymbols","exportIndex":1,"name":"graphemesToPhonemeSymbols","kind":"function","signature":"graphemesToPhonemeSymbols(word)","summary":"Apply the rule set to a spelling."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/G2PModel.md","moduleTitle":"particle_voice/frontend/G2PModel","source":"agi/particle_voice/frontend/G2PModel.js","import":"/agi/particle_voice/frontend/G2PModel.js","sourceHash":"c7cc69895f4d227ad78224baa6ece1a568c91edad1c547a17b2b00763ea9673e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/frontend/G2PModel.js#0002:assignStressHeuristic","exportIndex":2,"name":"assignStressHeuristic","kind":"function","signature":"assignStressHeuristic(word, symbols)","summary":"Place a single primary stress by syllable heuristic. Documented as a heuristic because English stress is genuinely lexical — the lexicon is the place to be exact. - Suffixes `-tion/-sion/-cial/-tial/-cian` pull stress onto the syllable immediately before them (na-TION-al → \"NA-tion\", in-for-MA-tion). - `-ity/-ety/-ify/-ogy/-omy` pull stress two syllables back. - Otherwise stress the first syllable, unless the word opens with a normally-unstressed prefix and has more than one syllable, in which case stress the second."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/G2PModel.md","moduleTitle":"particle_voice/frontend/G2PModel","source":"agi/particle_voice/frontend/G2PModel.js","import":"/agi/particle_voice/frontend/G2PModel.js","sourceHash":"c7cc69895f4d227ad78224baa6ece1a568c91edad1c547a17b2b00763ea9673e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/frontend/G2PModel.js#0003:graphemesToPhonemes","exportIndex":3,"name":"graphemesToPhonemes","kind":"function","signature":"graphemesToPhonemes(word)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/G2PModel.md","moduleTitle":"particle_voice/frontend/G2PModel","source":"agi/particle_voice/frontend/G2PModel.js","import":"/agi/particle_voice/frontend/G2PModel.js","sourceHash":"c7cc69895f4d227ad78224baa6ece1a568c91edad1c547a17b2b00763ea9673e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/frontend/G2PModel.js#0004:textToPhonemeSequence","exportIndex":4,"name":"textToPhonemeSequence","kind":"function","signature":"textToPhonemeSequence(normalized, { g2p = new G2PModel()","summary":"Deterministic lowering of normalized text into `spec/VoicePlan-v0.md` §4's `PhonemeSequence`. All three arrays are the same length, one entry per phoneme instance including structural tokens, exactly as that spec requires. Structural insertion follows `spec/PhonemeSet-v0.md` §4's Effect column: a phrase's `structural` token (`SP` for comma-level, `SIL` for terminals) is appended after its words, and a paragraph boundary additionally emits `BREATH` before its `SIL` (§4: \"longer SIL, breath event likely\")."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/G2PModel.md","moduleTitle":"particle_voice/frontend/G2PModel","source":"agi/particle_voice/frontend/G2PModel.js","import":"/agi/particle_voice/frontend/G2PModel.js","sourceHash":"c7cc69895f4d227ad78224baa6ece1a568c91edad1c547a17b2b00763ea9673e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/frontend/G2PModel.js#0005:createG2PModel","exportIndex":5,"name":"createG2PModel","kind":"function","signature":"createG2PModel(options)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/G2PModel.md","moduleTitle":"particle_voice/frontend/G2PModel","source":"agi/particle_voice/frontend/G2PModel.js","import":"/agi/particle_voice/frontend/G2PModel.js","sourceHash":"c7cc69895f4d227ad78224baa6ece1a568c91edad1c547a17b2b00763ea9673e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/frontend/G2PModel.js#0006:LTS_RULES","exportIndex":6,"name":"LTS_RULES","kind":"constant","signature":"LTS_RULES","summary":"Letter-to-sound rules, grouped by first letter of `target`. Order within a group IS the priority order."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/PhonemeSet.md","moduleTitle":"particle_voice/frontend/PhonemeSet","source":"agi/particle_voice/frontend/PhonemeSet.js","import":"/agi/particle_voice/frontend/PhonemeSet.js","sourceHash":"7d7c3c56c4e63354c33e516a24aa3efded914b60af82ec5adeac4e5c9c1dd821","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/frontend/PhonemeSet.js","title":"particle_voice/frontend/PhonemeSet","summary":"PhonemeSet.js — Phase 3 ParticleVoice text frontend. The executable form of `spec/PhonemeSet-v0.md`: the English phoneme inventory, its per-entry articulatory feature vectors, the stress scale, and the punctuation-context tags. This module is the SINGLE SOURCE OF TRUTH every other Phase 3 component reads — `PronunciationLexicon.js` validates against it, `G2PModel.js` targets it, `PhonemeEncoder.js` sizes its embedding table from `PHONEME_COUNT`, and `ArticulationHead.js` consumes the feature vectors to bias `NeuralPhysiologyState`. ## Corrections to `spec/PhonemeSet-v0.md` Encoding the spec surfaced four places where its §1 tables (the actual data) disagree with its §1 summary line or its §2 enum declarations. The tables are treated as normative and the spec has been corrected to match; each is recorded here because a reader comparing the two must know which way the discrepancy was resolved. 1. **Inventory size.** §1 claimed \"24 vowel symbols + 24 consonant symbols + 3 structural tokens = 51\" and `u8` IDs `0..50`. The tables actually list **10 monophthongs + 5 diphthongs = 15 vowels**, so the real total is **42** entries, IDs `0..41`. \"24 vowel symbols\" appears to be an accidental duplication of the consonant count. This matters concretely: it sets `PhonemeEncoder.js`'s embedding table size and the legal `phonemeIds` range in `spec/VoicePlan-v0.md` §4, both of which were also stated as 51/`0..50` and are now corrected. 2. **Vowel height values.** §2 declares `height: low | mid | high`, but §1's table also uses `low-mid` (`AO`) and `high-mid` (`UH`). All five values are kept (see `HEIGHT`); the narrower §2 enum was the error. 3. **`ER`'s rounded column** contains `rhotic`, which is not a rounded-ness value at all. Modeled here as `rounded: false` plus a separate `rhotic: true` flag, since rhoticity is an independent articulatory property (it shapes the area profile rather than the lip aperture). 4. **`W`'s place** is `bilabial-velar` in §1's table, which is not one of §2's `place` values. Modeled as `place: 'bilabial'` with `secondaryPlace: 'velar'`, preserving the information without inventing an enum member the spec does not define. Structural tokens (`SIL`/`SP`/`BREATH`) carry `place: null`, `manner: null`, `voiced: false` and are identified by `category === 'structural'` — deliberately NOT given invented enum values, since §2's `place`/`manner` enums describe articulated speech sounds only.","exportCount":24}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/PhonemeSet.md","moduleTitle":"particle_voice/frontend/PhonemeSet","source":"agi/particle_voice/frontend/PhonemeSet.js","import":"/agi/particle_voice/frontend/PhonemeSet.js","sourceHash":"7d7c3c56c4e63354c33e516a24aa3efded914b60af82ec5adeac4e5c9c1dd821","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/frontend/PhonemeSet.js#0000:phonemeIdOf","exportIndex":0,"name":"phonemeIdOf","kind":"function","signature":"phonemeIdOf(symbol)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/PhonemeSet.md","moduleTitle":"particle_voice/frontend/PhonemeSet","source":"agi/particle_voice/frontend/PhonemeSet.js","import":"/agi/particle_voice/frontend/PhonemeSet.js","sourceHash":"7d7c3c56c4e63354c33e516a24aa3efded914b60af82ec5adeac4e5c9c1dd821","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/frontend/PhonemeSet.js#0001:hasPhoneme","exportIndex":1,"name":"hasPhoneme","kind":"function","signature":"hasPhoneme(symbol)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/PhonemeSet.md","moduleTitle":"particle_voice/frontend/PhonemeSet","source":"agi/particle_voice/frontend/PhonemeSet.js","import":"/agi/particle_voice/frontend/PhonemeSet.js","sourceHash":"7d7c3c56c4e63354c33e516a24aa3efded914b60af82ec5adeac4e5c9c1dd821","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/frontend/PhonemeSet.js#0002:phonemeAt","exportIndex":2,"name":"phonemeAt","kind":"function","signature":"phonemeAt(id)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/PhonemeSet.md","moduleTitle":"particle_voice/frontend/PhonemeSet","source":"agi/particle_voice/frontend/PhonemeSet.js","import":"/agi/particle_voice/frontend/PhonemeSet.js","sourceHash":"7d7c3c56c4e63354c33e516a24aa3efded914b60af82ec5adeac4e5c9c1dd821","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/frontend/PhonemeSet.js#0003:phonemeBySymbol","exportIndex":3,"name":"phonemeBySymbol","kind":"function","signature":"phonemeBySymbol(symbol)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/PhonemeSet.md","moduleTitle":"particle_voice/frontend/PhonemeSet","source":"agi/particle_voice/frontend/PhonemeSet.js","import":"/agi/particle_voice/frontend/PhonemeSet.js","sourceHash":"7d7c3c56c4e63354c33e516a24aa3efded914b60af82ec5adeac4e5c9c1dd821","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/frontend/PhonemeSet.js#0004:diphthongTargetIds","exportIndex":4,"name":"diphthongTargetIds","kind":"function","signature":"diphthongTargetIds(id)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/PhonemeSet.md","moduleTitle":"particle_voice/frontend/PhonemeSet","source":"agi/particle_voice/frontend/PhonemeSet.js","import":"/agi/particle_voice/frontend/PhonemeSet.js","sourceHash":"7d7c3c56c4e63354c33e516a24aa3efded914b60af82ec5adeac4e5c9c1dd821","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/frontend/PhonemeSet.js#0005:constrictionPositionOf","exportIndex":5,"name":"constrictionPositionOf","kind":"function","signature":"constrictionPositionOf(id)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/PhonemeSet.md","moduleTitle":"particle_voice/frontend/PhonemeSet","source":"agi/particle_voice/frontend/PhonemeSet.js","import":"/agi/particle_voice/frontend/PhonemeSet.js","sourceHash":"7d7c3c56c4e63354c33e516a24aa3efded914b60af82ec5adeac4e5c9c1dd821","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/frontend/PhonemeSet.js#0006:isValidStress","exportIndex":6,"name":"isValidStress","kind":"function","signature":"isValidStress(stress)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/PhonemeSet.md","moduleTitle":"particle_voice/frontend/PhonemeSet","source":"agi/particle_voice/frontend/PhonemeSet.js","import":"/agi/particle_voice/frontend/PhonemeSet.js","sourceHash":"7d7c3c56c4e63354c33e516a24aa3efded914b60af82ec5adeac4e5c9c1dd821","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/frontend/PhonemeSet.js#0007:isValidPunctuationContext","exportIndex":7,"name":"isValidPunctuationContext","kind":"function","signature":"isValidPunctuationContext(tag)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/PhonemeSet.md","moduleTitle":"particle_voice/frontend/PhonemeSet","source":"agi/particle_voice/frontend/PhonemeSet.js","import":"/agi/particle_voice/frontend/PhonemeSet.js","sourceHash":"7d7c3c56c4e63354c33e516a24aa3efded914b60af82ec5adeac4e5c9c1dd821","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/frontend/PhonemeSet.js#0008:isVowel","exportIndex":8,"name":"isVowel","kind":"function","signature":"isVowel(id)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/PhonemeSet.md","moduleTitle":"particle_voice/frontend/PhonemeSet","source":"agi/particle_voice/frontend/PhonemeSet.js","import":"/agi/particle_voice/frontend/PhonemeSet.js","sourceHash":"7d7c3c56c4e63354c33e516a24aa3efded914b60af82ec5adeac4e5c9c1dd821","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/frontend/PhonemeSet.js#0009:isConsonant","exportIndex":9,"name":"isConsonant","kind":"function","signature":"isConsonant(id)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/PhonemeSet.md","moduleTitle":"particle_voice/frontend/PhonemeSet","source":"agi/particle_voice/frontend/PhonemeSet.js","import":"/agi/particle_voice/frontend/PhonemeSet.js","sourceHash":"7d7c3c56c4e63354c33e516a24aa3efded914b60af82ec5adeac4e5c9c1dd821","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/frontend/PhonemeSet.js#0010:isStructural","exportIndex":10,"name":"isStructural","kind":"function","signature":"isStructural(id)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/PhonemeSet.md","moduleTitle":"particle_voice/frontend/PhonemeSet","source":"agi/particle_voice/frontend/PhonemeSet.js","import":"/agi/particle_voice/frontend/PhonemeSet.js","sourceHash":"7d7c3c56c4e63354c33e516a24aa3efded914b60af82ec5adeac4e5c9c1dd821","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/frontend/PhonemeSet.js#0011:isVoiced","exportIndex":11,"name":"isVoiced","kind":"function","signature":"isVoiced(id)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/PhonemeSet.md","moduleTitle":"particle_voice/frontend/PhonemeSet","source":"agi/particle_voice/frontend/PhonemeSet.js","import":"/agi/particle_voice/frontend/PhonemeSet.js","sourceHash":"7d7c3c56c4e63354c33e516a24aa3efded914b60af82ec5adeac4e5c9c1dd821","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/frontend/PhonemeSet.js#0012:isDiphthong","exportIndex":12,"name":"isDiphthong","kind":"function","signature":"isDiphthong(id)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/PhonemeSet.md","moduleTitle":"particle_voice/frontend/PhonemeSet","source":"agi/particle_voice/frontend/PhonemeSet.js","import":"/agi/particle_voice/frontend/PhonemeSet.js","sourceHash":"7d7c3c56c4e63354c33e516a24aa3efded914b60af82ec5adeac4e5c9c1dd821","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/frontend/PhonemeSet.js#0013:STRESS","exportIndex":13,"name":"STRESS","kind":"constant","signature":"STRESS","summary":"§3: per-vowel-instance stress, separate from the phoneme symbol."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/PhonemeSet.md","moduleTitle":"particle_voice/frontend/PhonemeSet","source":"agi/particle_voice/frontend/PhonemeSet.js","import":"/agi/particle_voice/frontend/PhonemeSet.js","sourceHash":"7d7c3c56c4e63354c33e516a24aa3efded914b60af82ec5adeac4e5c9c1dd821","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/frontend/PhonemeSet.js#0014:PUNCTUATION_CONTEXT","exportIndex":14,"name":"PUNCTUATION_CONTEXT","kind":"constant","signature":"PUNCTUATION_CONTEXT","summary":"§4: punctuation-context tag ids, emitted per phoneme by `TextNormalizer.js`."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/PhonemeSet.md","moduleTitle":"particle_voice/frontend/PhonemeSet","source":"agi/particle_voice/frontend/PhonemeSet.js","import":"/agi/particle_voice/frontend/PhonemeSet.js","sourceHash":"7d7c3c56c4e63354c33e516a24aa3efded914b60af82ec5adeac4e5c9c1dd821","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/frontend/PhonemeSet.js#0015:PLACE","exportIndex":15,"name":"PLACE","kind":"constant","signature":"PLACE","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/PhonemeSet.md","moduleTitle":"particle_voice/frontend/PhonemeSet","source":"agi/particle_voice/frontend/PhonemeSet.js","import":"/agi/particle_voice/frontend/PhonemeSet.js","sourceHash":"7d7c3c56c4e63354c33e516a24aa3efded914b60af82ec5adeac4e5c9c1dd821","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/frontend/PhonemeSet.js#0016:MANNER","exportIndex":16,"name":"MANNER","kind":"constant","signature":"MANNER","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/PhonemeSet.md","moduleTitle":"particle_voice/frontend/PhonemeSet","source":"agi/particle_voice/frontend/PhonemeSet.js","import":"/agi/particle_voice/frontend/PhonemeSet.js","sourceHash":"7d7c3c56c4e63354c33e516a24aa3efded914b60af82ec5adeac4e5c9c1dd821","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/frontend/PhonemeSet.js#0017:HEIGHT","exportIndex":17,"name":"HEIGHT","kind":"constant","signature":"HEIGHT","summary":"Includes §1's `low-mid`/`high-mid`, which §2's three-value enum omitted (correction 2)."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/PhonemeSet.md","moduleTitle":"particle_voice/frontend/PhonemeSet","source":"agi/particle_voice/frontend/PhonemeSet.js","import":"/agi/particle_voice/frontend/PhonemeSet.js","sourceHash":"7d7c3c56c4e63354c33e516a24aa3efded914b60af82ec5adeac4e5c9c1dd821","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/frontend/PhonemeSet.js#0018:BACKNESS","exportIndex":18,"name":"BACKNESS","kind":"constant","signature":"BACKNESS","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/PhonemeSet.md","moduleTitle":"particle_voice/frontend/PhonemeSet","source":"agi/particle_voice/frontend/PhonemeSet.js","import":"/agi/particle_voice/frontend/PhonemeSet.js","sourceHash":"7d7c3c56c4e63354c33e516a24aa3efded914b60af82ec5adeac4e5c9c1dd821","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/frontend/PhonemeSet.js#0019:PLACE_POSITION","exportIndex":19,"name":"PLACE_POSITION","kind":"constant","signature":"PLACE_POSITION","summary":"§2: place → normalized position (0 = glottis, 1 = lips) of the narrowest point, fed to `shapedAreaProfile`'s control points. Provisional estimates per the spec's own §6 — NOT measured against vocal-tract MRI data."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/PhonemeSet.md","moduleTitle":"particle_voice/frontend/PhonemeSet","source":"agi/particle_voice/frontend/PhonemeSet.js","import":"/agi/particle_voice/frontend/PhonemeSet.js","sourceHash":"7d7c3c56c4e63354c33e516a24aa3efded914b60af82ec5adeac4e5c9c1dd821","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/frontend/PhonemeSet.js#0020:PHONEMES","exportIndex":20,"name":"PHONEMES","kind":"constant","signature":"PHONEMES","summary":"The inventory, in `spec/PhonemeSet-v0.md` §1 table order. **Array index IS the `u8` phoneme id** — appending is safe, reordering is a breaking change to every trained embedding table."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/PhonemeSet.md","moduleTitle":"particle_voice/frontend/PhonemeSet","source":"agi/particle_voice/frontend/PhonemeSet.js","import":"/agi/particle_voice/frontend/PhonemeSet.js","sourceHash":"7d7c3c56c4e63354c33e516a24aa3efded914b60af82ec5adeac4e5c9c1dd821","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/frontend/PhonemeSet.js#0021:PHONEME_COUNT","exportIndex":21,"name":"PHONEME_COUNT","kind":"constant","signature":"PHONEME_COUNT","summary":"42 — sizes `PhonemeEncoder.js`'s embedding table. See correction 1."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/PhonemeSet.md","moduleTitle":"particle_voice/frontend/PhonemeSet","source":"agi/particle_voice/frontend/PhonemeSet.js","import":"/agi/particle_voice/frontend/PhonemeSet.js","sourceHash":"7d7c3c56c4e63354c33e516a24aa3efded914b60af82ec5adeac4e5c9c1dd821","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/frontend/PhonemeSet.js#0022:MAX_PHONEME_ID","exportIndex":22,"name":"MAX_PHONEME_ID","kind":"constant","signature":"MAX_PHONEME_ID","summary":"Highest legal `u8` phoneme id (41)."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/PhonemeSet.md","moduleTitle":"particle_voice/frontend/PhonemeSet","source":"agi/particle_voice/frontend/PhonemeSet.js","import":"/agi/particle_voice/frontend/PhonemeSet.js","sourceHash":"7d7c3c56c4e63354c33e516a24aa3efded914b60af82ec5adeac4e5c9c1dd821","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/frontend/PhonemeSet.js#0023:STRUCTURAL_SYMBOLS","exportIndex":23,"name":"STRUCTURAL_SYMBOLS","kind":"constant","signature":"STRUCTURAL_SYMBOLS","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/PronunciationLexicon.md","moduleTitle":"particle_voice/frontend/PronunciationLexicon","source":"agi/particle_voice/frontend/PronunciationLexicon.js","import":"/agi/particle_voice/frontend/PronunciationLexicon.js","sourceHash":"b99b1bb0da549f99d195ede8f5a035789cc49a13f03e37ebe170c254bfcd4276","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/frontend/PronunciationLexicon.js","title":"particle_voice/frontend/PronunciationLexicon","summary":"PronunciationLexicon.js — Phase 3 ParticleVoice text frontend. Word → phoneme-sequence dictionary, checked entry-by-entry against `PhonemeSet.js` at construction time. Sits between `TextNormalizer.js` and `G2PModel.js`: a lexicon hit is authoritative, and only words with no entry fall through to G2P's letter-to-sound rules. ## ⚠ Stress digits are the INVERSE of CMUdict Pronunciation strings use CMUdict's familiar `SYMBOL+digit` shape (`HH AH L OW2`), but the digit follows `spec/PhonemeSet-v0.md` §3: **0 = unstressed, 1 = SECONDARY, 2 = PRIMARY** CMUdict is the other way round (`1` = primary, `2` = secondary). Copying CMUdict strings verbatim would therefore silently swap primary and secondary stress on every polysyllabic word — audible as wrong prosody, not as an error. This module cannot detect that mistake for you, so the convention is stated here, in `spec/PhonemeSet-v0.md` §3, and enforced by `MAX_STRESS`-range validation only. ## Authoring rules (validated, not merely documented) - Every symbol must exist in `PhonemeSet.js`. A typo throws at construction, naming the word — never at synthesis time. - A stress digit is legal ONLY on a vowel. Spec §3 defines stress as a per-vowel-instance property, so `S2` is rejected outright rather than quietly ignored. - Omitting the digit on a vowel means unstressed (0). This keeps reduced function words (`the` = `DH AH`) readable. - **At most one** primary stress per word. Not *exactly* one: genuinely reduced function words (`the`, `a`, `of`) carry no stress at all, and forcing a primary onto them would produce robotically over-stressed speech. ## Scope `CORE_LEXICON` is a deliberately curated core, NOT a full dictionary. It covers high-frequency function/content words plus — the reason a lexicon exists at all — words whose spelling actively lies about their pronunciation (`one`, `through`, `women`, `said`, `colonel`, `choir`, `island`), which any letter-to-sound rule set gets wrong. CMUdict is not vendored: this project takes no external data dependencies, and the long tail is `G2PModel.js`'s job. Callers add domain vocabulary (character names, place names) via `add()`/`addAll()`.","exportCount":6}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/PronunciationLexicon.md","moduleTitle":"particle_voice/frontend/PronunciationLexicon","source":"agi/particle_voice/frontend/PronunciationLexicon.js","import":"/agi/particle_voice/frontend/PronunciationLexicon.js","sourceHash":"b99b1bb0da549f99d195ede8f5a035789cc49a13f03e37ebe170c254bfcd4276","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/frontend/PronunciationLexicon.js#0000:PronunciationLexicon","exportIndex":0,"name":"PronunciationLexicon","kind":"class","signature":"class PronunciationLexicon","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/PronunciationLexicon.md","moduleTitle":"particle_voice/frontend/PronunciationLexicon","source":"agi/particle_voice/frontend/PronunciationLexicon.js","import":"/agi/particle_voice/frontend/PronunciationLexicon.js","sourceHash":"b99b1bb0da549f99d195ede8f5a035789cc49a13f03e37ebe170c254bfcd4276","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/frontend/PronunciationLexicon.js#0001:parsePronunciation","exportIndex":1,"name":"parsePronunciation","kind":"function","signature":"parsePronunciation(pronunciation, wordLabel = '<unknown>')","summary":"Parse one `SYMBOL+digit` pronunciation string."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/PronunciationLexicon.md","moduleTitle":"particle_voice/frontend/PronunciationLexicon","source":"agi/particle_voice/frontend/PronunciationLexicon.js","import":"/agi/particle_voice/frontend/PronunciationLexicon.js","sourceHash":"b99b1bb0da549f99d195ede8f5a035789cc49a13f03e37ebe170c254bfcd4276","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/frontend/PronunciationLexicon.js#0002:createPronunciationLexicon","exportIndex":2,"name":"createPronunciationLexicon","kind":"function","signature":"createPronunciationLexicon(options)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/PronunciationLexicon.md","moduleTitle":"particle_voice/frontend/PronunciationLexicon","source":"agi/particle_voice/frontend/PronunciationLexicon.js","import":"/agi/particle_voice/frontend/PronunciationLexicon.js","sourceHash":"b99b1bb0da549f99d195ede8f5a035789cc49a13f03e37ebe170c254bfcd4276","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/frontend/PronunciationLexicon.js#0003:MAX_STRESS","exportIndex":3,"name":"MAX_STRESS","kind":"constant","signature":"MAX_STRESS","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/PronunciationLexicon.md","moduleTitle":"particle_voice/frontend/PronunciationLexicon","source":"agi/particle_voice/frontend/PronunciationLexicon.js","import":"/agi/particle_voice/frontend/PronunciationLexicon.js","sourceHash":"b99b1bb0da549f99d195ede8f5a035789cc49a13f03e37ebe170c254bfcd4276","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/frontend/PronunciationLexicon.js#0004:LETTER_NAMES","exportIndex":4,"name":"LETTER_NAMES","kind":"constant","signature":"LETTER_NAMES","summary":"Spoken letter names, for spelling out initialisms. `TextNormalizer.js` flags all-caps tokens with `wasAllCaps` but deliberately does not decide whether they are words or initialisms; `spellOut()` here is the mechanism for the latter."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/PronunciationLexicon.md","moduleTitle":"particle_voice/frontend/PronunciationLexicon","source":"agi/particle_voice/frontend/PronunciationLexicon.js","import":"/agi/particle_voice/frontend/PronunciationLexicon.js","sourceHash":"b99b1bb0da549f99d195ede8f5a035789cc49a13f03e37ebe170c254bfcd4276","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/frontend/PronunciationLexicon.js#0005:CORE_LEXICON","exportIndex":5,"name":"CORE_LEXICON","kind":"constant","signature":"CORE_LEXICON","summary":"Curated core lexicon. Stress digits: 2 = PRIMARY (see the warning above). Grouped by why each entry is here."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/TextNormalizer.md","moduleTitle":"particle_voice/frontend/TextNormalizer","source":"agi/particle_voice/frontend/TextNormalizer.js","import":"/agi/particle_voice/frontend/TextNormalizer.js","sourceHash":"ddc390177f2ebb15055b52bc90e4b1f6bebf549283dafb49299720ab4ab60cbc","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/frontend/TextNormalizer.js","title":"particle_voice/frontend/TextNormalizer","summary":"TextNormalizer.js — Phase 3 ParticleVoice text frontend. Turns raw author/LLM text into speakable words plus the per-phrase punctuation-context tags `spec/PhonemeSet-v0.md` §4 defines, ready for `PronunciationLexicon.js`/`G2PModel.js` to lower into phoneme ids. Output shape (`normalizeText`): { raw: string, phrases: [{ words: [{ text, wasAllCaps }], boundary: PUNCTUATION_CONTEXT id,   // §4 tag for THIS phrase's end structural: 'SP' | 'SIL' | null,    // token to insert at the boundary breathLikely: boolean,              // §4: paragraph breaks only }] } One tag per phrase (not per phoneme): `spec/VoicePlan-v0.md` §4's per-phoneme `punctuationContext` array is produced downstream by repeating a phrase's tag across the phonemes its words expand into, which is exactly what that spec means by \"repeats within a phrase, changes at boundaries\". ## Ordering matters Abbreviation expansion and decimal-point protection run BEFORE phrase splitting, because both consume `.` characters that would otherwise be mistaken for sentence terminators — `Dr. Smith` is one phrase, not two, and `3.14` is one number, not `3` then `14`. Getting this order wrong is the classic text-frontend bug, so it is enforced by construction here rather than left to a later cleanup pass. ## Deliberate non-guesses Two things this module refuses to infer, because guessing wrong is worse than not trying: - **Years.** `1999` could be a year (\"nineteen ninety nine\") or a quantity (\"one thousand nine hundred ninety nine\"), and `1500 dollars` proves the quantity reading is often right. Bare integers are ALWAYS read as cardinals; `expandYear()` is exported for callers that actually know the context (e.g. a date field), rather than being applied by a heuristic that would silently corrupt prices and counts. - **Acronym pronunciation.** `NASA` is said as a word, `USA` letter by letter, and nothing in the surface form distinguishes them. All-caps tokens are passed through with `wasAllCaps: true` so `PronunciationLexicon.js` gets first refusal and `G2PModel.js` can fall back to spelling out — the decision belongs where the pronunciation knowledge lives, not here. Dates and clock times are likewise out of scope for `v0` (both are format-ambiguous: `3/4` is a date in one locale and a fraction in another). They are documented as unhandled rather than half-handled.","exportCount":10}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/TextNormalizer.md","moduleTitle":"particle_voice/frontend/TextNormalizer","source":"agi/particle_voice/frontend/TextNormalizer.js","import":"/agi/particle_voice/frontend/TextNormalizer.js","sourceHash":"ddc390177f2ebb15055b52bc90e4b1f6bebf549283dafb49299720ab4ab60cbc","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/frontend/TextNormalizer.js#0000:expandCardinal","exportIndex":0,"name":"expandCardinal","kind":"function","signature":"expandCardinal(n)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/TextNormalizer.md","moduleTitle":"particle_voice/frontend/TextNormalizer","source":"agi/particle_voice/frontend/TextNormalizer.js","import":"/agi/particle_voice/frontend/TextNormalizer.js","sourceHash":"ddc390177f2ebb15055b52bc90e4b1f6bebf549283dafb49299720ab4ab60cbc","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/frontend/TextNormalizer.js#0001:expandOrdinal","exportIndex":1,"name":"expandOrdinal","kind":"function","signature":"expandOrdinal(n)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/TextNormalizer.md","moduleTitle":"particle_voice/frontend/TextNormalizer","source":"agi/particle_voice/frontend/TextNormalizer.js","import":"/agi/particle_voice/frontend/TextNormalizer.js","sourceHash":"ddc390177f2ebb15055b52bc90e4b1f6bebf549283dafb49299720ab4ab60cbc","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/frontend/TextNormalizer.js#0002:expandDigits","exportIndex":2,"name":"expandDigits","kind":"function","signature":"expandDigits(digits)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/TextNormalizer.md","moduleTitle":"particle_voice/frontend/TextNormalizer","source":"agi/particle_voice/frontend/TextNormalizer.js","import":"/agi/particle_voice/frontend/TextNormalizer.js","sourceHash":"ddc390177f2ebb15055b52bc90e4b1f6bebf549283dafb49299720ab4ab60cbc","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/frontend/TextNormalizer.js#0003:expandYear","exportIndex":3,"name":"expandYear","kind":"function","signature":"expandYear(year)","summary":"Read a 4-digit year the way speech does. NOT applied automatically — see this module's \"deliberate non-guesses\" note; callers that know a number is a year opt in explicitly."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/TextNormalizer.md","moduleTitle":"particle_voice/frontend/TextNormalizer","source":"agi/particle_voice/frontend/TextNormalizer.js","import":"/agi/particle_voice/frontend/TextNormalizer.js","sourceHash":"ddc390177f2ebb15055b52bc90e4b1f6bebf549283dafb49299720ab4ab60cbc","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/frontend/TextNormalizer.js#0004:normalizeCharacters","exportIndex":4,"name":"normalizeCharacters","kind":"function","signature":"normalizeCharacters(raw)","summary":"Unicode/typography normalization: NFKC, curly quotes and dashes to ASCII, whitespace collapsed (paragraph breaks preserved as `\\n\\n`)."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/TextNormalizer.md","moduleTitle":"particle_voice/frontend/TextNormalizer","source":"agi/particle_voice/frontend/TextNormalizer.js","import":"/agi/particle_voice/frontend/TextNormalizer.js","sourceHash":"ddc390177f2ebb15055b52bc90e4b1f6bebf549283dafb49299720ab4ab60cbc","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/frontend/TextNormalizer.js#0005:normalizeText","exportIndex":5,"name":"normalizeText","kind":"function","signature":"normalizeText(raw)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/TextNormalizer.md","moduleTitle":"particle_voice/frontend/TextNormalizer","source":"agi/particle_voice/frontend/TextNormalizer.js","import":"/agi/particle_voice/frontend/TextNormalizer.js","sourceHash":"ddc390177f2ebb15055b52bc90e4b1f6bebf549283dafb49299720ab4ab60cbc","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/frontend/TextNormalizer.js#0006:flattenWords","exportIndex":6,"name":"flattenWords","kind":"function","signature":"flattenWords(normalized)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/TextNormalizer.md","moduleTitle":"particle_voice/frontend/TextNormalizer","source":"agi/particle_voice/frontend/TextNormalizer.js","import":"/agi/particle_voice/frontend/TextNormalizer.js","sourceHash":"ddc390177f2ebb15055b52bc90e4b1f6bebf549283dafb49299720ab4ab60cbc","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/frontend/TextNormalizer.js#0007:MAX_CARDINAL","exportIndex":7,"name":"MAX_CARDINAL","kind":"constant","signature":"MAX_CARDINAL","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/TextNormalizer.md","moduleTitle":"particle_voice/frontend/TextNormalizer","source":"agi/particle_voice/frontend/TextNormalizer.js","import":"/agi/particle_voice/frontend/TextNormalizer.js","sourceHash":"ddc390177f2ebb15055b52bc90e4b1f6bebf549283dafb49299720ab4ab60cbc","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/frontend/TextNormalizer.js#0008:ABBREVIATIONS","exportIndex":8,"name":"ABBREVIATIONS","kind":"constant","signature":"ABBREVIATIONS","summary":"Expanded before phrase splitting, so their trailing `.` never reads as a sentence end. Keys are matched case-insensitively without the period."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/frontend/TextNormalizer.md","moduleTitle":"particle_voice/frontend/TextNormalizer","source":"agi/particle_voice/frontend/TextNormalizer.js","import":"/agi/particle_voice/frontend/TextNormalizer.js","sourceHash":"ddc390177f2ebb15055b52bc90e4b1f6bebf549283dafb49299720ab4ab60cbc","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/frontend/TextNormalizer.js#0009:SYMBOL_WORDS","exportIndex":9,"name":"SYMBOL_WORDS","kind":"constant","signature":"SYMBOL_WORDS","summary":"Standalone symbol → word. Applied per token, so `&` between words works but `AT&T` is left to the lexicon."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/lab/ManualArticulator.md","moduleTitle":"particle_voice/lab/ManualArticulator","source":"agi/particle_voice/lab/ManualArticulator.js","import":"/agi/particle_voice/lab/ManualArticulator.js","sourceHash":"e2aa28a20c38cb338c70ec14130e5c7f5142eddc816eb2df922d5bed3b07c73c","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/lab/ManualArticulator.js","title":"particle_voice/lab/ManualArticulator","summary":"ManualArticulator.js — Phase 3 ParticleVoice lab. Turns direct articulator controls (the Voice Box demo's sliders) into the SAME physiology-stream shape `ArticulationHead.predict()` produces, so `ParticleVoiceModel.renderPhysiology()` accepts it unchanged. ## Why this is a module and not inline demo code The plan requires the live demo to have \"manual articulator mode + neural mode; same `VisualAirflowState`\". If manual mode built its own control path — or worse, called `ParticleTract` directly — the two modes would diverge: different smoothing, different validation, a different visualization source. By emitting the identical stream shape, manual mode goes through exactly the same `renderPhysiology()` → `ParticleTract` → `SafetyLimiter` path, and the visualization comes from the same solver snapshots. That makes \"same VisualAirflowState\" structural rather than a promise, and it means this logic is testable headlessly instead of only by clicking. ## Controls Deliberately the physical knobs, not phonemes — the point of manual mode is to drive the tract directly: - `f0Hz`, `voiced` — glottal source - `constrictionPosition` (0 = glottis, 1 = lips) and `constrictionArea` — one moving constriction, the single most expressive articulator - `pharynxArea`, `lipArea` — the tube's two ends - `nasalCoupling` — velum - `fricationAmplitude` — turbulence at the constriction - `pressure` — subglottal drive A held pose is rendered as a constant stream; `interpolatePoses()` produces a glide between two poses, which is how the demo can sweep a diphthong or a closure/release gesture without hand-authoring every frame.","exportCount":7}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/lab/ManualArticulator.md","moduleTitle":"particle_voice/lab/ManualArticulator","source":"agi/particle_voice/lab/ManualArticulator.js","import":"/agi/particle_voice/lab/ManualArticulator.js","sourceHash":"e2aa28a20c38cb338c70ec14130e5c7f5142eddc816eb2df922d5bed3b07c73c","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/lab/ManualArticulator.js#0000:ManualArticulator","exportIndex":0,"name":"ManualArticulator","kind":"class","signature":"class ManualArticulator","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/lab/ManualArticulator.md","moduleTitle":"particle_voice/lab/ManualArticulator","source":"agi/particle_voice/lab/ManualArticulator.js","import":"/agi/particle_voice/lab/ManualArticulator.js","sourceHash":"e2aa28a20c38cb338c70ec14130e5c7f5142eddc816eb2df922d5bed3b07c73c","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/lab/ManualArticulator.js#0001:normalizePose","exportIndex":1,"name":"normalizePose","kind":"function","signature":"normalizePose(pose = {})","summary":"Validate and clamp a partial pose into a complete one."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/lab/ManualArticulator.md","moduleTitle":"particle_voice/lab/ManualArticulator","source":"agi/particle_voice/lab/ManualArticulator.js","import":"/agi/particle_voice/lab/ManualArticulator.js","sourceHash":"e2aa28a20c38cb338c70ec14130e5c7f5142eddc816eb2df922d5bed3b07c73c","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/lab/ManualArticulator.js#0002:interpolatePoses","exportIndex":2,"name":"interpolatePoses","kind":"function","signature":"interpolatePoses(a, b, t)","summary":"Linear blend between two poses; `voiced` switches at the midpoint since it is boolean."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/lab/ManualArticulator.md","moduleTitle":"particle_voice/lab/ManualArticulator","source":"agi/particle_voice/lab/ManualArticulator.js","import":"/agi/particle_voice/lab/ManualArticulator.js","sourceHash":"e2aa28a20c38cb338c70ec14130e5c7f5142eddc816eb2df922d5bed3b07c73c","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/lab/ManualArticulator.js#0003:poseAreaProfile","exportIndex":3,"name":"poseAreaProfile","kind":"function","signature":"poseAreaProfile(pose, numSections)","summary":"Area profile for one pose, using the same 3-control-point `shapedAreaProfile` shape `ArticulationHead` uses for vowels."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/lab/ManualArticulator.md","moduleTitle":"particle_voice/lab/ManualArticulator","source":"agi/particle_voice/lab/ManualArticulator.js","import":"/agi/particle_voice/lab/ManualArticulator.js","sourceHash":"e2aa28a20c38cb338c70ec14130e5c7f5142eddc816eb2df922d5bed3b07c73c","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/lab/ManualArticulator.js#0004:createManualArticulator","exportIndex":4,"name":"createManualArticulator","kind":"function","signature":"createManualArticulator(options)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/lab/ManualArticulator.md","moduleTitle":"particle_voice/lab/ManualArticulator","source":"agi/particle_voice/lab/ManualArticulator.js","import":"/agi/particle_voice/lab/ManualArticulator.js","sourceHash":"e2aa28a20c38cb338c70ec14130e5c7f5142eddc816eb2df922d5bed3b07c73c","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/lab/ManualArticulator.js#0005:DEFAULT_POSE","exportIndex":5,"name":"DEFAULT_POSE","kind":"constant","signature":"DEFAULT_POSE","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/lab/ManualArticulator.md","moduleTitle":"particle_voice/lab/ManualArticulator","source":"agi/particle_voice/lab/ManualArticulator.js","import":"/agi/particle_voice/lab/ManualArticulator.js","sourceHash":"e2aa28a20c38cb338c70ec14130e5c7f5142eddc816eb2df922d5bed3b07c73c","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/lab/ManualArticulator.js#0006:POSE_CONTROLS","exportIndex":6,"name":"POSE_CONTROLS","kind":"constant","signature":"POSE_CONTROLS","summary":"Slider metadata for the demo UI, kept beside the pose it describes so the two cannot drift apart."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/lab/TractSagittalView.md","moduleTitle":"particle_voice/lab/TractSagittalView","source":"agi/particle_voice/lab/TractSagittalView.js","import":"/agi/particle_voice/lab/TractSagittalView.js","sourceHash":"942497f48f9c80bea8834b00e8d7d25aed300f421077e4fd8efcb6f4a1605cb4","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/lab/TractSagittalView.js","title":"particle_voice/lab/TractSagittalView","summary":"TractSagittalView.js — mid-sagittal renderer for the vocal tract area function. Draws what the solver is actually doing, as an anatomical cross-section: the pharynx rising from the glottis, the bend behind the tongue, the oral cavity, the teeth and the lips. The tract's `areas` array IS the picture — section `i` is a slice of tube, and its cross-sectional area is the gap between the tongue surface and the roof of the mouth at that point. ## Why a sagittal view rather than a plot of the numbers A line plot of 32 areas is readable but not *diagnosable*: it does not tell you whether a shape is a plausible mouth. Errors in this project have repeatedly been of exactly that kind — a tract twice the correct length, a \"stop\" whose closure never closed, a constriction so tight it would whistle. All of those are obvious at a glance in an anatomical view and invisible in a spectrum. ## Geometry The centreline follows an arc, matching how the real tract bends ~90 degrees behind the tongue: the glottis end points up, the lip end points forward. Each section is drawn radially across that arc, with the OUTER boundary fixed (the rigid palate, teeth and rear pharyngeal wall) and the INNER boundary displaced by the section's diameter (the tongue and jaw, which are what move). Diameter, not area, sets the drawn width: a tube's diameter goes as the SQUARE ROOT of its area, so plotting area directly would exaggerate open sections and make near-closures look tighter than they are.","exportCount":4}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/lab/TractSagittalView.md","moduleTitle":"particle_voice/lab/TractSagittalView","source":"agi/particle_voice/lab/TractSagittalView.js","import":"/agi/particle_voice/lab/TractSagittalView.js","sourceHash":"942497f48f9c80bea8834b00e8d7d25aed300f421077e4fd8efcb6f4a1605cb4","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/lab/TractSagittalView.js#0000:TractSagittalView","exportIndex":0,"name":"TractSagittalView","kind":"class","signature":"class TractSagittalView","summary":"Renders one frame of tract geometry. Stateless by design: it takes the geometry and draws it, so the same view can be driven by `ArticulationHead`'s per-frame stream, by `ManualArticulator`'s live sliders, or by a single static profile from `FormantSolver`, with no notion of playback inside it."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/lab/TractSagittalView.md","moduleTitle":"particle_voice/lab/TractSagittalView","source":"agi/particle_voice/lab/TractSagittalView.js","import":"/agi/particle_voice/lab/TractSagittalView.js","sourceHash":"942497f48f9c80bea8834b00e8d7d25aed300f421077e4fd8efcb6f4a1605cb4","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/lab/TractSagittalView.js#0001:diameterForArea","exportIndex":1,"name":"diameterForArea","kind":"function","signature":"diameterForArea(areaCm2)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/lab/TractSagittalView.md","moduleTitle":"particle_voice/lab/TractSagittalView","source":"agi/particle_voice/lab/TractSagittalView.js","import":"/agi/particle_voice/lab/TractSagittalView.js","sourceHash":"942497f48f9c80bea8834b00e8d7d25aed300f421077e4fd8efcb6f4a1605cb4","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/lab/TractSagittalView.js#0002:LANDMARKS","exportIndex":2,"name":"LANDMARKS","kind":"constant","signature":"LANDMARKS","summary":"Anatomical landmarks as a fraction of tract length from the glottis, used only for labels and the teeth marker."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/lab/TractSagittalView.md","moduleTitle":"particle_voice/lab/TractSagittalView","source":"agi/particle_voice/lab/TractSagittalView.js","import":"/agi/particle_voice/lab/TractSagittalView.js","sourceHash":"942497f48f9c80bea8834b00e8d7d25aed300f421077e4fd8efcb6f4a1605cb4","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/lab/TractSagittalView.js#0003:DEFAULT_VIEW_OPTIONS","exportIndex":3,"name":"DEFAULT_VIEW_OPTIONS","kind":"constant","signature":"DEFAULT_VIEW_OPTIONS","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/model/ArticulationHead.md","moduleTitle":"particle_voice/model/ArticulationHead","source":"agi/particle_voice/model/ArticulationHead.js","import":"/agi/particle_voice/model/ArticulationHead.js","sourceHash":"2edfa30adfbaba9b6e993d08a1381f7a4bf43d21cc13de20b14dc0fcb9442b33","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/model/ArticulationHead.js","title":"particle_voice/model/ArticulationHead","summary":"ArticulationHead.js — Phase 3 ParticleVoice model. Per-frame streams → `NeuralPhysiologyState` (`articulatory/NeuralPhysiologyState.js`): the four control heads plus uncertainty that `ParticleTract` actually consumes. This is where `spec/PhonemeSet-v0.md` §2's articulatory feature vectors finally reach the vocal tract — place becomes a constriction position, manner becomes a constriction degree, height/backness/rounded become a vowel area profile. ## Rule-based, mapping features to geometry Like `ProsodyPlanner`, this is a deterministic feature→geometry mapping, not a trained head. `spec/PhonemeSet-v0.md` §6 already flags its place-position percentages as \"provisional estimates ... not measured against real vocal-tract MRI data\", and the vowel profiles here are the same kind of estimate: a 3-control-point `shapedAreaProfile` whose constriction position comes from backness, constriction area from height, and lip area from rounding. They are ordered correctly (high vowels narrower than low, front constrictions further forward than back) and produce distinguishable formants — verified in Phase 2 to be what makes a vowel a vowel rather than a buzz — but they are not fitted to measured data. ## Two constraints that are NOT stylistic 1. **`ee` must be strictly positive, even when unvoiced.** It is tempting to set the glottal excitation to 0 on a voiceless frame. That breaks `glottal_lf.js`: its Newton solve for `alpha` computes `areaPrime = (-ee / sin(wg*te)) * (...)`, so `ee = 0` makes the derivative exactly 0 and the update `alpha -= (area - target) / 0` evaluates to **NaN**, which then propagates through the whole waveguide. `NeuralPhysiologyState`'s own validator independently requires `ee > 0`. Voiceless frames therefore use a small positive `UNVOICED_EE` — inaudible, but numerically safe. 2. **Areas are SMOOTHED across frames, per-manner.** Snapping the area profile to a new target at a phoneme boundary is a step change in the waveguide's reflection coefficients, which radiates as a click — the precise artifact Phase 2's exit gate spent effort eliminating. Each manner gets its own time constant because the right smoothing speed is phonetically real, not a tuning knob: a stop's closure and release ARE fast (smearing them destroys the plosive), while a vowel-to-vowel transition is genuinely slow. A single global constant would either smear plosives or click on vowels. ## Output shape `predict()` returns COMPACT typed arrays (one row per frame), not an array of frozen `NeuralPhysiologyState` objects: a few seconds of speech is hundreds of frames, and materializing hundreds of frozen nested objects per utterance would be wasteful when the consumer reads them once, in order. `physiologyStateAt(result, frame)` builds the real validated schema object on demand, so the schema is genuinely exercised (and validated) rather than bypassed.","exportCount":16}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/model/ArticulationHead.md","moduleTitle":"particle_voice/model/ArticulationHead","source":"agi/particle_voice/model/ArticulationHead.js","import":"/agi/particle_voice/model/ArticulationHead.js","sourceHash":"2edfa30adfbaba9b6e993d08a1381f7a4bf43d21cc13de20b14dc0fcb9442b33","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/model/ArticulationHead.js#0000:ArticulationHead","exportIndex":0,"name":"ArticulationHead","kind":"class","signature":"class ArticulationHead","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/model/ArticulationHead.md","moduleTitle":"particle_voice/model/ArticulationHead","source":"agi/particle_voice/model/ArticulationHead.js","import":"/agi/particle_voice/model/ArticulationHead.js","sourceHash":"2edfa30adfbaba9b6e993d08a1381f7a4bf43d21cc13de20b14dc0fcb9442b33","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/model/ArticulationHead.js#0001:physiologyStateAt","exportIndex":1,"name":"physiologyStateAt","kind":"function","signature":"physiologyStateAt(result, frame, { glottalReflection, lipReflection } = {})","summary":"Materialize one frame of a `predict()` result as a validated `NeuralPhysiologyState`. Built on demand rather than eagerly — see the header's \"output shape\" note — so the schema and its validators are genuinely exercised without allocating hundreds of frozen objects per utterance."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/model/ArticulationHead.md","moduleTitle":"particle_voice/model/ArticulationHead","source":"agi/particle_voice/model/ArticulationHead.js","import":"/agi/particle_voice/model/ArticulationHead.js","sourceHash":"2edfa30adfbaba9b6e993d08a1381f7a4bf43d21cc13de20b14dc0fcb9442b33","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/model/ArticulationHead.js#0002:createArticulationHead","exportIndex":2,"name":"createArticulationHead","kind":"function","signature":"createArticulationHead(config)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/model/ArticulationHead.md","moduleTitle":"particle_voice/model/ArticulationHead","source":"agi/particle_voice/model/ArticulationHead.js","import":"/agi/particle_voice/model/ArticulationHead.js","sourceHash":"2edfa30adfbaba9b6e993d08a1381f7a4bf43d21cc13de20b14dc0fcb9442b33","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/model/ArticulationHead.js#0003:UNVOICED_EE","exportIndex":3,"name":"UNVOICED_EE","kind":"constant","signature":"UNVOICED_EE","summary":"Small but strictly positive glottal excitation for voiceless frames. See constraint 1 in the header: 0 would make `glottal_lf.js`'s Newton solve produce NaN."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/model/ArticulationHead.md","moduleTitle":"particle_voice/model/ArticulationHead","source":"agi/particle_voice/model/ArticulationHead.js","import":"/agi/particle_voice/model/ArticulationHead.js","sourceHash":"2edfa30adfbaba9b6e993d08a1381f7a4bf43d21cc13de20b14dc0fcb9442b33","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/model/ArticulationHead.js#0004:BACKNESS_POSITION","exportIndex":4,"name":"BACKNESS_POSITION","kind":"constant","signature":"BACKNESS_POSITION","summary":"Fallback constriction position (0 = glottis, 1 = lips) by vowel backness, and cross-section by height. These are NO LONGER the primary path for the ten monophthongs — see `vowelProfile()`. They were an articulatory-adjective mapping (\"front vowels constrict further forward\", \"high vowels constrict more tightly\") that is directionally right but produces whatever formants it happens to produce. Since vowel identity is carried almost entirely by F1/F2, \"plausible geometry\" is not good enough: uncalibrated profiles pull every vowel toward a neutral timbre, which is heard as speech-like noise with no decipherable vowels. Retained only as the fallback for any vowel with no entry in `VOWEL_AREA_PARAMS`, so adding a phoneme to `PhonemeSet` cannot crash synthesis before it has been calibrated."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/model/ArticulationHead.md","moduleTitle":"particle_voice/model/ArticulationHead","source":"agi/particle_voice/model/ArticulationHead.js","import":"/agi/particle_voice/model/ArticulationHead.js","sourceHash":"2edfa30adfbaba9b6e993d08a1381f7a4bf43d21cc13de20b14dc0fcb9442b33","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/model/ArticulationHead.js#0005:HEIGHT_AREA","exportIndex":5,"name":"HEIGHT_AREA","kind":"constant","signature":"HEIGHT_AREA","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/model/ArticulationHead.md","moduleTitle":"particle_voice/model/ArticulationHead","source":"agi/particle_voice/model/ArticulationHead.js","import":"/agi/particle_voice/model/ArticulationHead.js","sourceHash":"2edfa30adfbaba9b6e993d08a1381f7a4bf43d21cc13de20b14dc0fcb9442b33","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/model/ArticulationHead.js#0006:MANNER_WIDTH","exportIndex":6,"name":"MANNER_WIDTH","kind":"constant","signature":"MANNER_WIDTH","summary":"Constriction LENGTH by manner, as a fraction of tract length. A constriction specified as a single control point does not survive `shapedAreaProfile`'s linear interpolation: the profile tapers to the target only exactly AT that point, and since the point rarely lands on a section centre, the realised minimum is far wider than requested. Measured, a stop asking for 0.02 cm^2 actually reached **0.138** — nearly 7x too open. That is not a cosmetic error: a stop whose closure never closes produces neither the silence nor the release burst that identify it, and stops are six of the most frequent consonants in English. The effect got worse when the section count was corrected from 32 to 16, because coarser sections smear a point further. Giving the constriction a length makes it span whole sections, so it genuinely reaches the target area. The values are anatomical: a stop's occlusion covers roughly 1.5-2 cm of the tract, a fricative channel is comparable, and an approximant's narrowing is longer and gentler. At 17 cm / 16 sections one section is 1.06 cm, so 0.10 (1.7 cm) is about 1.6 sections — enough to hold the target rather than merely touch it."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/model/ArticulationHead.md","moduleTitle":"particle_voice/model/ArticulationHead","source":"agi/particle_voice/model/ArticulationHead.js","import":"/agi/particle_voice/model/ArticulationHead.js","sourceHash":"2edfa30adfbaba9b6e993d08a1381f7a4bf43d21cc13de20b14dc0fcb9442b33","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/model/ArticulationHead.js#0007:MANNER_AREA","exportIndex":7,"name":"MANNER_AREA","kind":"constant","signature":"MANNER_AREA","summary":"Constriction cross-section by consonant manner — the \"degree\" half of spec §2's place/manner pair."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/model/ArticulationHead.md","moduleTitle":"particle_voice/model/ArticulationHead","source":"agi/particle_voice/model/ArticulationHead.js","import":"/agi/particle_voice/model/ArticulationHead.js","sourceHash":"2edfa30adfbaba9b6e993d08a1381f7a4bf43d21cc13de20b14dc0fcb9442b33","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/model/ArticulationHead.js#0008:VOICING_TIME_MS","exportIndex":8,"name":"VOICING_TIME_MS","kind":"constant","signature":"VOICING_TIME_MS","summary":"Smoothing time constant for the glottal excitation amplitude. `ee` switches between `voicedEe` (1.0) and `UNVOICED_EE` (1e-3) — a factor of a THOUSAND, i.e. a 60 dB step. Applied instantaneously that is a hard click at every voicing transition, and an English sentence has one at every voiceless consonant; several per second turns into a sputter that swamps the speech. Real vocal folds cannot change amplitude discontinuously either, so smoothing here is physical as well as necessary. ~18 ms is fast enough to keep a voiceless stop sounding unvoiced (its closure alone is ~25 ms) while removing the step."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/model/ArticulationHead.md","moduleTitle":"particle_voice/model/ArticulationHead","source":"agi/particle_voice/model/ArticulationHead.js","import":"/agi/particle_voice/model/ArticulationHead.js","sourceHash":"2edfa30adfbaba9b6e993d08a1381f7a4bf43d21cc13de20b14dc0fcb9442b33","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/model/ArticulationHead.js#0009:GESTURE_TIME_MS","exportIndex":9,"name":"GESTURE_TIME_MS","kind":"constant","signature":"GESTURE_TIME_MS","summary":"Area-smoothing time constants in ms, by manner — the speed of the ARTICULATOR, nothing else. ## These were far too slow, and every stop in every utterance was a glide The previous values (stop 25 ms, vowel 50 ms) were justified by the claim that \"a stop at 25 ms still reaches ~94% of its closure within a typical 70 ms stop, so the plosive is preserved\". That reasoning is wrong, and wrong in a way worth recording: it measures the PERCENTAGE OF DISTANCE travelled, but what decides whether a stop is a stop is the ABSOLUTE area reached. Going 94% of the way from a vowel's ~3.0 cm^2 to a 0.02 cm^2 closure leaves **0.18 cm^2** — which is not a closure at all, it is a narrow approximant. So the tract never actually blocked, no stop ever produced silence or a release burst, and all six English stops came out as vowel-like glides. Perceptually the whole utterance collapses toward a string of semivowels, which is exactly the reported \"yeah yeah yeah\". For a target near zero, percentage-of-distance and absolute-value diverge arbitrarily far. This is the same relative-versus-absolute confusion that produced the earlier bad thresholds in this project. ## Why they can now be as fast as the phonetics actually requires These constants USED to be doing two jobs: modelling articulator inertia AND preventing the per-chunk reflection-coefficient step from clicking. The second job is gone — `tract_waveguide.js` now interpolates `junction_k` per sample, so geometry is continuous no matter how fast the frame targets move. That frees these to be purely phonetic. O'Connor et al. (1957) found listeners hear a formant transition as a STOP below ~50 ms and as a SEMIVOWEL above it, so a stop's gesture must complete well inside 50 ms. At the 10 ms frame interval, tau = 8 ms gives alpha 0.71, reaching 0.026 cm^2 (a real closure) within 50 ms. Approximants stay slower: the same literature has /w j r l/ holding their formant loci for 30-50 ms, i.e. genuinely gliding rather than snapping."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/model/ArticulationHead.md","moduleTitle":"particle_voice/model/ArticulationHead","source":"agi/particle_voice/model/ArticulationHead.js","import":"/agi/particle_voice/model/ArticulationHead.js","sourceHash":"2edfa30adfbaba9b6e993d08a1381f7a4bf43d21cc13de20b14dc0fcb9442b33","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/model/ArticulationHead.js#0010:RELEASE_AREA_CM2","exportIndex":10,"name":"RELEASE_AREA_CM2","kind":"constant","signature":"RELEASE_AREA_CM2","summary":"Stop RELEASE BURST. A plosive is two acoustic events, not one: a silent closure, then a sharp transient when the occlusion opens and the pressure built up behind it escapes. Only the closure was being modelled, so stops had the right silence and then simply faded back into the next vowel. The burst is a primary place cue — much of what distinguishes /p/ from /t/ from /k/ lives in its spectrum — so without it stops are detectable but not identifiable. Pink Trombone models the same thing, adding a transient whenever a diameter goes from zero to positive; this is the equivalent, expressed through the turbulence channel that already exists rather than as a new kernel input, since a burst IS a brief broadband excitation at the constriction. Detection uses the SMOOTHED area, not the phoneme label: what matters is that the tract actually opened, which is the same reason the closure test asserts realised rather than target geometry. `RELEASE_AREA_CM2` is the threshold below which the tract counts as closed, matching the closure the test requires."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/model/ArticulationHead.md","moduleTitle":"particle_voice/model/ArticulationHead","source":"agi/particle_voice/model/ArticulationHead.js","import":"/agi/particle_voice/model/ArticulationHead.js","sourceHash":"2edfa30adfbaba9b6e993d08a1381f7a4bf43d21cc13de20b14dc0fcb9442b33","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/model/ArticulationHead.js#0011:BURST_AMPLITUDE","exportIndex":11,"name":"BURST_AMPLITUDE","kind":"constant","signature":"BURST_AMPLITUDE","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/model/ArticulationHead.md","moduleTitle":"particle_voice/model/ArticulationHead","source":"agi/particle_voice/model/ArticulationHead.js","import":"/agi/particle_voice/model/ArticulationHead.js","sourceHash":"2edfa30adfbaba9b6e993d08a1381f7a4bf43d21cc13de20b14dc0fcb9442b33","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/model/ArticulationHead.js#0012:BURST_TIME_MS","exportIndex":12,"name":"BURST_TIME_MS","kind":"constant","signature":"BURST_TIME_MS","summary":"Burst decay. ~8 ms puts the transient plus its aspiration in the 10-30 ms range measured for real plosive releases."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/model/ArticulationHead.md","moduleTitle":"particle_voice/model/ArticulationHead","source":"agi/particle_voice/model/ArticulationHead.js","import":"/agi/particle_voice/model/ArticulationHead.js","sourceHash":"2edfa30adfbaba9b6e993d08a1381f7a4bf43d21cc13de20b14dc0fcb9442b33","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/model/ArticulationHead.js#0013:FRICATION_PLACE_GAIN","exportIndex":13,"name":"FRICATION_PLACE_GAIN","kind":"constant","signature":"FRICATION_PLACE_GAIN","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/model/ArticulationHead.md","moduleTitle":"particle_voice/model/ArticulationHead","source":"agi/particle_voice/model/ArticulationHead.js","import":"/agi/particle_voice/model/ArticulationHead.js","sourceHash":"2edfa30adfbaba9b6e993d08a1381f7a4bf43d21cc13de20b14dc0fcb9442b33","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/model/ArticulationHead.js#0014:VOICED_FRICATION_GAIN","exportIndex":14,"name":"VOICED_FRICATION_GAIN","kind":"constant","signature":"VOICED_FRICATION_GAIN","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/model/ArticulationHead.md","moduleTitle":"particle_voice/model/ArticulationHead","source":"agi/particle_voice/model/ArticulationHead.js","import":"/agi/particle_voice/model/ArticulationHead.js","sourceHash":"2edfa30adfbaba9b6e993d08a1381f7a4bf43d21cc13de20b14dc0fcb9442b33","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/model/ArticulationHead.js#0015:DEFAULT_ARTICULATION_CONFIG","exportIndex":15,"name":"DEFAULT_ARTICULATION_CONFIG","kind":"constant","signature":"DEFAULT_ARTICULATION_CONFIG","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/model/LengthRegulator.md","moduleTitle":"particle_voice/model/LengthRegulator","source":"agi/particle_voice/model/LengthRegulator.js","import":"/agi/particle_voice/model/LengthRegulator.js","sourceHash":"4f465197f6c3f3eddb6be39697fe9937780b792ac89bdaeb6d868bcdd46292e9","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/model/LengthRegulator.js","title":"particle_voice/model/LengthRegulator","summary":"LengthRegulator.js — Phase 3 ParticleVoice model. Expands per-PHONEME encoder features and prosody into per-FRAME streams, and — because `spec/VoicePlan-v0.md` §5 explicitly assigns it here — handles resampling between the 100 Hz plan frame rate and whatever rate the consumer runs at (the Activity path is 8 ms/frame = 125 Hz, `ActivityContract-v0` §1; the two \"are not required to be equal; any resampling between them is `LengthRegulator.js`'s job, not assumed away here\"). ## F0 is interpolated, features are held These two streams are expanded differently, on purpose: - **F0 is linearly interpolated** between phoneme centres. Holding one value per phoneme would produce a pitch STAIRCASE, and a discontinuous F0 is audible as a click or a warble at every phoneme boundary — the exact artifact the Phase 2 exit gate spent effort eliminating from the waveguide. Interpolating between centres (not edges) means each phoneme's nominal pitch is actually reached at its midpoint. - **Feature vectors are HELD** across a phoneme's frames, not interpolated. They are a learned representation, and blending two phonemes' embeddings produces a vector that means neither. Holding is the standard FastSpeech-style length regulation and is what the downstream `ArticulationHead` expects. - **The voiced flag is held** — it is boolean; interpolating it would invent half-voiced frames that no source model can honour. ## Where it runs CPU-side. The encoder's features are produced on GPU, so using them here costs a readback — but the consumer (`ArticulationHead` → `ParticleTract`) needs per-chunk control values in JS anyway (`areas`, `f0Hz`), so the readback is not avoided by moving this to GPU, only relocated. A GPU `length_regulate` gather kernel is a straightforward follow-up IF profiling later shows the feature upload dominating; the condition that would justify it is stated so the decision is revisitable rather than forgotten.","exportCount":5}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/model/LengthRegulator.md","moduleTitle":"particle_voice/model/LengthRegulator","source":"agi/particle_voice/model/LengthRegulator.js","import":"/agi/particle_voice/model/LengthRegulator.js","sourceHash":"4f465197f6c3f3eddb6be39697fe9937780b792ac89bdaeb6d868bcdd46292e9","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/model/LengthRegulator.js#0000:LengthRegulator","exportIndex":0,"name":"LengthRegulator","kind":"class","signature":"class LengthRegulator","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/model/LengthRegulator.md","moduleTitle":"particle_voice/model/LengthRegulator","source":"agi/particle_voice/model/LengthRegulator.js","import":"/agi/particle_voice/model/LengthRegulator.js","sourceHash":"4f465197f6c3f3eddb6be39697fe9937780b792ac89bdaeb6d868bcdd46292e9","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/model/LengthRegulator.js#0001:regulateLength","exportIndex":1,"name":"regulateLength","kind":"function","signature":"regulateLength({ durationFrames, f0Hz, voiced, features = null, featureDim = 0, maxFrames = 1 << 20 })","summary":"Expand per-phoneme streams to per-frame streams. durationFrames: ArrayLike<number>, f0Hz: ArrayLike<number>, voiced: ArrayLike<number>, features?: ArrayLike<number>, featureDim?: number, maxFrames?: number, }} input"}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/model/LengthRegulator.md","moduleTitle":"particle_voice/model/LengthRegulator","source":"agi/particle_voice/model/LengthRegulator.js","import":"/agi/particle_voice/model/LengthRegulator.js","sourceHash":"4f465197f6c3f3eddb6be39697fe9937780b792ac89bdaeb6d868bcdd46292e9","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/model/LengthRegulator.js#0002:resampleFrames","exportIndex":2,"name":"resampleFrames","kind":"function","signature":"resampleFrames(regulated, fromRateHz, toRateHz, featureDim = 0)","summary":"Resample per-frame streams from one frame rate to another — the job `spec/VoicePlan-v0.md` §5 assigns to this module for crossing between the 100 Hz plan rate and the 125 Hz Activity rate. F0 is linearly interpolated (it is continuous); voicing and the phoneme index use NEAREST-neighbour, because both are categorical and interpolating them would invent values that do not exist (a half-voiced frame, or a fractional phoneme id)."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/model/LengthRegulator.md","moduleTitle":"particle_voice/model/LengthRegulator","source":"agi/particle_voice/model/LengthRegulator.js","import":"/agi/particle_voice/model/LengthRegulator.js","sourceHash":"4f465197f6c3f3eddb6be39697fe9937780b792ac89bdaeb6d868bcdd46292e9","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/model/LengthRegulator.js#0003:createLengthRegulator","exportIndex":3,"name":"createLengthRegulator","kind":"function","signature":"createLengthRegulator(options)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/model/LengthRegulator.md","moduleTitle":"particle_voice/model/LengthRegulator","source":"agi/particle_voice/model/LengthRegulator.js","import":"/agi/particle_voice/model/LengthRegulator.js","sourceHash":"4f465197f6c3f3eddb6be39697fe9937780b792ac89bdaeb6d868bcdd46292e9","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/model/LengthRegulator.js#0004:ACTIVITY_FRAME_RATE_HZ","exportIndex":4,"name":"ACTIVITY_FRAME_RATE_HZ","kind":"constant","signature":"ACTIVITY_FRAME_RATE_HZ","summary":"LengthRegulator.js — Phase 3 ParticleVoice model. Expands per-PHONEME encoder features and prosody into per-FRAME streams, and — because `spec/VoicePlan-v0.md` §5 explicitly assigns it here — handles resampling between the 100 Hz plan frame rate and whatever rate the consumer runs at (the Activity path is 8 ms/frame = 125 Hz, `ActivityContract-v0` §1; the two \"are not required to be equal; any resampling between them is `LengthRegulator.js`'s job, not assumed away here\"). ## F0 is interpolated, features are held These two streams are expanded differently, on purpose: - **F0 is linearly interpolated** between phoneme centres. Holding one value per phoneme would produce a pitch STAIRCASE, and a discontinuous F0 is audible as a click or a warble at every phoneme boundary — the exact artifact the Phase 2 exit gate spent effort eliminating from the waveguide. Interpolating between centres (not edges) means each phoneme's nominal pitch is actually reached at its midpoint. - **Feature vectors are HELD** across a phoneme's frames, not interpolated. They are a learned representation, and blending two phonemes' embeddings produces a vector that means neither. Holding is the standard FastSpeech-style length regulation and is what the downstream `ArticulationHead` expects. - **The voiced flag is held** — it is boolean; interpolating it would invent half-voiced frames that no source model can honour. ## Where it runs CPU-side. The encoder's features are produced on GPU, so using them here costs a readback — but the consumer (`ArticulationHead` → `ParticleTract`) needs per-chunk control values in JS anyway (`areas`, `f0Hz`), so the readback is not avoided by moving this to GPU, only relocated. A GPU `length_regulate` gather kernel is a straightforward follow-up IF profiling later shows the feature upload dominating; the condition that would justify it is stated so the decision is revisitable rather than forgotten."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/model/ParticleVoiceModel.md","moduleTitle":"particle_voice/model/ParticleVoiceModel","source":"agi/particle_voice/model/ParticleVoiceModel.js","import":"/agi/particle_voice/model/ParticleVoiceModel.js","sourceHash":"ceb7f417da825d08ede6d7eac2c998966dbd1eeb172cec46060c9a7f533a9bce","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/model/ParticleVoiceModel.js","title":"particle_voice/model/ParticleVoiceModel","summary":"ParticleVoiceModel.js — Phase 3 ParticleVoice model. Wires the whole Phase 3 path into one call: **text → PCM**. TextNormalizer → G2P/lexicon → PhonemeSequence → PhonemeEncoder (GPU, optional) → ProsodyPlanner → LengthRegulator → ArticulationHead → NeuralPhysiologyState stream → ParticleTract (GPU acoustic solver) → SafetyLimiter → PCM ## Why there is no separate `SourceVocoder` in Phase 3 The plan lists \"`SourceVocoder.js` basic harmonic + noise + waveguide output\". In Phase 3 that IS `ParticleTract`: it already runs `glottal_lf` (harmonic source), two `constriction_noise` streams (aspiration at the glottis, frication at the constriction) and the Kelly-Lochbaum waveguide, with lip radiation applied internally. Adding a `SourceVocoder` wrapper that only forwarded to it would be a layer with no content. Phase 4's full source-filter Fourier vocoder (bounded spectral residual, MPD/MRD refinement, IFFT + WOLA) is where that module earns its own file — and the seam for it is `renderPhysiology()`, which is already separate from the text frontend. ## Frame rate vs chunk rate: the decimation that matters `ArticulationHead` emits physiology at the 100 Hz plan frame rate (10 ms), but `ParticleTract.renderChunk()` accepts **one control set per chunk** — one area profile, one f0, one constriction index. At 32 kHz with 1024-sample chunks a chunk is 32 ms, so roughly 3 physiology frames fall inside each one. Something has to reduce them, and the choice is audible: - **Areas are AVERAGED** across the frames in a chunk. Picking one frame (say the first) would throw away the smoothing `ArticulationHead` deliberately applied and reintroduce exactly the reflection-coefficient step it exists to prevent. - **F0 is averaged** for the same reason: a chunk-rate pitch staircase is audible as a warble. - **Constriction index is taken by MAJORITY**, not averaged — it is a position index, and the mean of \"junction 20\" and \"junction 6\" is junction 13, a place no phoneme asked for. - **Voicing/amplitudes are averaged**, which naturally cross-fades a voiced→voiceless transition across the chunk rather than switching hard. This decimation is the one place a Phase 3 discontinuity could still enter, so it is concentrated in `_decimateChunk()` and tested directly. ## Breath reservoir `BreathReservoirState`'s one-pole lag is applied CPU-side per chunk to turn `ArticulationHead`'s target subglottal pressure into an actual pressure with inertia, and that pressure scales the glottal excitation. This uses the same `lagRateFromCompliance` formula the GPU `breath_reservoir` kernel expects pre-computed, so the two agree; running it here rather than on GPU avoids a readback for a single scalar per chunk. Documented as a deliberate simplification: a per-SAMPLE reservoir would need the kernel.","exportCount":2}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/model/ParticleVoiceModel.md","moduleTitle":"particle_voice/model/ParticleVoiceModel","source":"agi/particle_voice/model/ParticleVoiceModel.js","import":"/agi/particle_voice/model/ParticleVoiceModel.js","sourceHash":"ceb7f417da825d08ede6d7eac2c998966dbd1eeb172cec46060c9a7f533a9bce","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/model/ParticleVoiceModel.js#0000:ParticleVoiceModel","exportIndex":0,"name":"ParticleVoiceModel","kind":"class","signature":"class ParticleVoiceModel","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/model/ParticleVoiceModel.md","moduleTitle":"particle_voice/model/ParticleVoiceModel","source":"agi/particle_voice/model/ParticleVoiceModel.js","import":"/agi/particle_voice/model/ParticleVoiceModel.js","sourceHash":"ceb7f417da825d08ede6d7eac2c998966dbd1eeb172cec46060c9a7f533a9bce","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/model/ParticleVoiceModel.js#0001:DEFAULT_VOICE_MODEL_CONFIG","exportIndex":1,"name":"DEFAULT_VOICE_MODEL_CONFIG","kind":"constant","signature":"DEFAULT_VOICE_MODEL_CONFIG","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/model/PhonemeEncoder.md","moduleTitle":"particle_voice/model/PhonemeEncoder","source":"agi/particle_voice/model/PhonemeEncoder.js","import":"/agi/particle_voice/model/PhonemeEncoder.js","sourceHash":"4099b66bf7b0331dc1686681d7fde3502c56c671ba3c4b6ef25e49571d91a74e","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/model/PhonemeEncoder.js","title":"particle_voice/model/PhonemeEncoder","summary":"PhonemeEncoder.js — Phase 3 ParticleVoice model. Phoneme ids → contextual per-token feature vectors, entirely on GPU: a `PHONEME_COUNT`-row embedding table followed by two Conv1D blocks, each with SiLU, and a final RMSNorm. This is the first Phase 3 component that runs the Phase 1 ParticleNN kernels in composition. Pipeline (7 dispatches, ONE submit per `encode()`): ids [T] → embedding_f16   → [T, D]   sequence-major → transpose_2d    → [D, T]   channel-major  (see \"layout\" below) → conv1d_w8a16    → [H, T] → silu_f16        → [H, T] → conv1d_w8a16    → [O, T] → silu_f16        → [O, T] → transpose_2d    → [T, O]   sequence-major → rmsnorm_f16     → [T, O]   per-token normalization ## Layout: why two transposes are load-bearing The Phase 1 kernels disagree about which axis is major, and each is right for itself: `embedding_f16` gathers rows so it emits **sequence-major** `[numIds, embedDim]`; `conv1d_w8a16` slides a kernel along time so it reads **channel-major** `[inChannels, seqLen]`; `rmsnorm_f16` normalizes rows, so per-token normalization needs sequence-major again. Composing them without the axis swaps would not error — it would silently convolve across the feature axis and produce scrambled activations. `core/transpose_2d.js` was added for exactly this, and the two transposes here are the minimum: SiLU is elementwise and therefore layout-agnostic, so both convolutions run back-to-back in channel-major before a single swap back for the norm. ## Weights are placeholders, and this file says so No Phase 3 training exists yet, so `createDeterministicEncoderWeights()` produces **seeded pseudorandom INT8 weights**. They make the pipeline runnable, shape-correct and reproducible end-to-end; they do NOT make it meaningful. The encoder's output is a deterministic function of its input, which is what Phase 3's downstream components need in order to be built and tested — but nothing here has learned anything about phonetics. Real weights arrive with training; the `weights` argument is the seam. ## Quantization Conv weights are INT8 with a per-output-channel scale, matching `conv1d_w8a16.js`'s packed layout exactly (4 int8 per `u32`, flattened `(inCh, tap)` index, `inChannels * kernelWidth` a multiple of 4 — validated in the constructor rather than left to fail as garbage output).","exportCount":5}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/model/PhonemeEncoder.md","moduleTitle":"particle_voice/model/PhonemeEncoder","source":"agi/particle_voice/model/PhonemeEncoder.js","import":"/agi/particle_voice/model/PhonemeEncoder.js","sourceHash":"4099b66bf7b0331dc1686681d7fde3502c56c671ba3c4b6ef25e49571d91a74e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/model/PhonemeEncoder.js#0000:PhonemeEncoder","exportIndex":0,"name":"PhonemeEncoder","kind":"class","signature":"class PhonemeEncoder","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/model/PhonemeEncoder.md","moduleTitle":"particle_voice/model/PhonemeEncoder","source":"agi/particle_voice/model/PhonemeEncoder.js","import":"/agi/particle_voice/model/PhonemeEncoder.js","sourceHash":"4099b66bf7b0331dc1686681d7fde3502c56c671ba3c4b6ef25e49571d91a74e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/model/PhonemeEncoder.js#0001:packInt8Weights","exportIndex":1,"name":"packInt8Weights","kind":"function","signature":"packInt8Weights(weights, outChannels, kTotal)","summary":"Pack int8 weights into `u32`s, 4 per word, matching `conv1d_w8a16.js`'s documented `(inCh, tap)` flattening."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/model/PhonemeEncoder.md","moduleTitle":"particle_voice/model/PhonemeEncoder","source":"agi/particle_voice/model/PhonemeEncoder.js","import":"/agi/particle_voice/model/PhonemeEncoder.js","sourceHash":"4099b66bf7b0331dc1686681d7fde3502c56c671ba3c4b6ef25e49571d91a74e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/model/PhonemeEncoder.js#0002:createDeterministicEncoderWeights","exportIndex":2,"name":"createDeterministicEncoderWeights","kind":"function","signature":"createDeterministicEncoderWeights(config = {}, seed = 1337)","summary":"Build a complete, reproducible placeholder weight set. See the header: this is scaffolding so the pipeline can be exercised, not a trained model."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/model/PhonemeEncoder.md","moduleTitle":"particle_voice/model/PhonemeEncoder","source":"agi/particle_voice/model/PhonemeEncoder.js","import":"/agi/particle_voice/model/PhonemeEncoder.js","sourceHash":"4099b66bf7b0331dc1686681d7fde3502c56c671ba3c4b6ef25e49571d91a74e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/model/PhonemeEncoder.js#0003:createPhonemeEncoder","exportIndex":3,"name":"createPhonemeEncoder","kind":"function","signature":"createPhonemeEncoder(device, options)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/model/PhonemeEncoder.md","moduleTitle":"particle_voice/model/PhonemeEncoder","source":"agi/particle_voice/model/PhonemeEncoder.js","import":"/agi/particle_voice/model/PhonemeEncoder.js","sourceHash":"4099b66bf7b0331dc1686681d7fde3502c56c671ba3c4b6ef25e49571d91a74e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/model/PhonemeEncoder.js#0004:DEFAULT_ENCODER_CONFIG","exportIndex":4,"name":"DEFAULT_ENCODER_CONFIG","kind":"constant","signature":"DEFAULT_ENCODER_CONFIG","summary":"Small by design: Phase 3 is a \"tiny deterministic single-speaker model\", not a production encoder."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/model/ProsodyPlanner.md","moduleTitle":"particle_voice/model/ProsodyPlanner","source":"agi/particle_voice/model/ProsodyPlanner.js","import":"/agi/particle_voice/model/ProsodyPlanner.js","sourceHash":"b8bf23fcb2a94a29ff26b3a723154cddbc038f94fe2335238c0fd17afc2ba9e0","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/model/ProsodyPlanner.js","title":"particle_voice/model/ProsodyPlanner","summary":"ProsodyPlanner.js — Phase 3 ParticleVoice model. Predicts per-phoneme **duration**, **F0** and a **voiced flag** from a `PhonemeSequence` (`spec/VoicePlan-v0.md` §4), at the plan frame rate of 100 Hz / 10 ms per frame that spec fixes. ## Rule-based, and the plan says \"minimal\" This is a deterministic rule model, not a trained one: durations come from per-manner base values scaled by stress and boundary position, and F0 from a declination line with stress excursions and a terminal contour selected by punctuation context. Phase 3's goal is \"a tiny deterministic single-speaker model\", and a learned duration/F0 predictor needs aligned speech data this project does not have. The numbers below are therefore **plausible phonetics, not measured values** — they are ordered correctly relative to each other (stops shorter than fricatives, diphthongs longer than monophthongs, stressed longer than unstressed), which is what makes speech intelligible, but they are not fitted to any corpus. `plan()` takes an optional `overrides` bag so a caller can retune without editing this file, and the class boundary is where a learned predictor slots in. ## What it deliberately does not do - **No per-phoneme F0 contour inside a phoneme.** One target per phoneme; smoothing into a continuous per-frame curve is `LengthRegulator.js`'s job, because that is where frame counts exist. Emitting a flat value per phoneme here and interpolating there avoids the audible pitch STEP that a naive per-phoneme hold would produce. - **No accent/emotion conditioning.** `spec/VoicePlan-v0.md` §3's factorized conditioning channels exist, but wiring them is Phase 4+; pretending to condition on them now would be fake.","exportCount":7}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/model/ProsodyPlanner.md","moduleTitle":"particle_voice/model/ProsodyPlanner","source":"agi/particle_voice/model/ProsodyPlanner.js","import":"/agi/particle_voice/model/ProsodyPlanner.js","sourceHash":"b8bf23fcb2a94a29ff26b3a723154cddbc038f94fe2335238c0fd17afc2ba9e0","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/model/ProsodyPlanner.js#0000:ProsodyPlanner","exportIndex":0,"name":"ProsodyPlanner","kind":"class","signature":"class ProsodyPlanner","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/model/ProsodyPlanner.md","moduleTitle":"particle_voice/model/ProsodyPlanner","source":"agi/particle_voice/model/ProsodyPlanner.js","import":"/agi/particle_voice/model/ProsodyPlanner.js","sourceHash":"b8bf23fcb2a94a29ff26b3a723154cddbc038f94fe2335238c0fd17afc2ba9e0","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/model/ProsodyPlanner.js#0001:createProsodyPlanner","exportIndex":1,"name":"createProsodyPlanner","kind":"function","signature":"createProsodyPlanner(config)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/model/ProsodyPlanner.md","moduleTitle":"particle_voice/model/ProsodyPlanner","source":"agi/particle_voice/model/ProsodyPlanner.js","import":"/agi/particle_voice/model/ProsodyPlanner.js","sourceHash":"b8bf23fcb2a94a29ff26b3a723154cddbc038f94fe2335238c0fd17afc2ba9e0","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/model/ProsodyPlanner.js#0002:PLAN_FRAME_RATE_HZ","exportIndex":2,"name":"PLAN_FRAME_RATE_HZ","kind":"constant","signature":"PLAN_FRAME_RATE_HZ","summary":"`spec/VoicePlan-v0.md` §5: the plan frame rate is 100 Hz (10 ms/frame)."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/model/ProsodyPlanner.md","moduleTitle":"particle_voice/model/ProsodyPlanner","source":"agi/particle_voice/model/ProsodyPlanner.js","import":"/agi/particle_voice/model/ProsodyPlanner.js","sourceHash":"b8bf23fcb2a94a29ff26b3a723154cddbc038f94fe2335238c0fd17afc2ba9e0","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/model/ProsodyPlanner.js#0003:PLAN_FRAME_MS","exportIndex":3,"name":"PLAN_FRAME_MS","kind":"constant","signature":"PLAN_FRAME_MS","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/model/ProsodyPlanner.md","moduleTitle":"particle_voice/model/ProsodyPlanner","source":"agi/particle_voice/model/ProsodyPlanner.js","import":"/agi/particle_voice/model/ProsodyPlanner.js","sourceHash":"b8bf23fcb2a94a29ff26b3a723154cddbc038f94fe2335238c0fd17afc2ba9e0","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/model/ProsodyPlanner.js#0004:BASE_DURATION_MS","exportIndex":4,"name":"BASE_DURATION_MS","kind":"constant","signature":"BASE_DURATION_MS","summary":"Base durations in MILLISECONDS by articulatory manner. Relative ordering is the part that matters (see header); absolute values are plausible defaults."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/model/ProsodyPlanner.md","moduleTitle":"particle_voice/model/ProsodyPlanner","source":"agi/particle_voice/model/ProsodyPlanner.js","import":"/agi/particle_voice/model/ProsodyPlanner.js","sourceHash":"b8bf23fcb2a94a29ff26b3a723154cddbc038f94fe2335238c0fd17afc2ba9e0","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/model/ProsodyPlanner.js#0005:STRUCTURAL_DURATION_MS","exportIndex":5,"name":"STRUCTURAL_DURATION_MS","kind":"constant","signature":"STRUCTURAL_DURATION_MS","summary":"Structural-token durations, keyed by the punctuation context they sit at (spec §4's Effect column: comma-level is a short pause, terminals are full silences, a paragraph is longer still)."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/model/ProsodyPlanner.md","moduleTitle":"particle_voice/model/ProsodyPlanner","source":"agi/particle_voice/model/ProsodyPlanner.js","import":"/agi/particle_voice/model/ProsodyPlanner.js","sourceHash":"b8bf23fcb2a94a29ff26b3a723154cddbc038f94fe2335238c0fd17afc2ba9e0","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/model/ProsodyPlanner.js#0006:DEFAULT_PROSODY_CONFIG","exportIndex":6,"name":"DEFAULT_PROSODY_CONFIG","kind":"constant","signature":"DEFAULT_PROSODY_CONFIG","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/autodiff/BackwardGraphCompiler.md","moduleTitle":"particle_voice/nn/autodiff/BackwardGraphCompiler","source":"agi/particle_voice/nn/autodiff/BackwardGraphCompiler.js","import":"/agi/particle_voice/nn/autodiff/BackwardGraphCompiler.js","sourceHash":"40bed4344aa1afa39a03635f1d31fe032444fde0eb6ab8f48b1392eb864ae7aa","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/autodiff/BackwardGraphCompiler.js","title":"particle_voice/nn/autodiff/BackwardGraphCompiler","summary":"BackwardGraphCompiler.js — Phase 1 ParticleNN autodiff STUB. **Not wired into anything until Phase 11.** Walks a `ParticleTape`'s recorded forward ops in reverse and builds a `GradientGraph` node per op that has a registered `BackwardRuleRegistry` rule (ops without one are skipped, not silently faked with an identity/zero gradient). Refuses to compile anything if the registry is completely empty — the honest current state (no backward rules exist yet for any real kernel) rather than returning a plausible-looking but meaningless empty graph.","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/autodiff/BackwardGraphCompiler.md","moduleTitle":"particle_voice/nn/autodiff/BackwardGraphCompiler","source":"agi/particle_voice/nn/autodiff/BackwardGraphCompiler.js","import":"/agi/particle_voice/nn/autodiff/BackwardGraphCompiler.js","sourceHash":"40bed4344aa1afa39a03635f1d31fe032444fde0eb6ab8f48b1392eb864ae7aa","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/autodiff/BackwardGraphCompiler.js#0000:BackwardGraphCompiler","exportIndex":0,"name":"BackwardGraphCompiler","kind":"class","signature":"class BackwardGraphCompiler","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/autodiff/BackwardRuleRegistry.md","moduleTitle":"particle_voice/nn/autodiff/BackwardRuleRegistry","source":"agi/particle_voice/nn/autodiff/BackwardRuleRegistry.js","import":"/agi/particle_voice/nn/autodiff/BackwardRuleRegistry.js","sourceHash":"7fa8f347e083d9a344b32aba41790913e04fb201aa05fb4396630fe8792f0d2d","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/autodiff/BackwardRuleRegistry.js","title":"particle_voice/nn/autodiff/BackwardRuleRegistry","summary":"BackwardRuleRegistry.js — Phase 1 ParticleNN autodiff STUB. **Not wired into anything until Phase 11.** Maps a forward op name (from `KernelRegistry.js`'s allowlist, e.g. `matmul_w8a16`) to a backward rule: a function that, given the recorded forward op's inputs/outputs/params plus the gradient(s) flowing into its outputs, produces the gradient(s) with respect to its inputs. No rules are registered for any real kernel yet — that is genuinely Phase 11 work (differentiating through INT8 quantization and FP16 rounding correctly is a real design problem, not something to hand-wave here) — this file only fixes the registry shape.","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/autodiff/BackwardRuleRegistry.md","moduleTitle":"particle_voice/nn/autodiff/BackwardRuleRegistry","source":"agi/particle_voice/nn/autodiff/BackwardRuleRegistry.js","import":"/agi/particle_voice/nn/autodiff/BackwardRuleRegistry.js","sourceHash":"7fa8f347e083d9a344b32aba41790913e04fb201aa05fb4396630fe8792f0d2d","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/autodiff/BackwardRuleRegistry.js#0000:BackwardRuleRegistry","exportIndex":0,"name":"BackwardRuleRegistry","kind":"class","signature":"class BackwardRuleRegistry","summary":"BackwardRuleRegistry.js — Phase 1 ParticleNN autodiff STUB. **Not wired into anything until Phase 11.** Maps a forward op name (from `KernelRegistry.js`'s allowlist, e.g. `matmul_w8a16`) to a backward rule: a function that, given the recorded forward op's inputs/outputs/params plus the gradient(s) flowing into its outputs, produces the gradient(s) with respect to its inputs. No rules are registered for any real kernel yet — that is genuinely Phase 11 work (differentiating through INT8 quantization and FP16 rounding correctly is a real design problem, not something to hand-wave here) — this file only fixes the registry shape."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/autodiff/GradientGraph.md","moduleTitle":"particle_voice/nn/autodiff/GradientGraph","source":"agi/particle_voice/nn/autodiff/GradientGraph.js","import":"/agi/particle_voice/nn/autodiff/GradientGraph.js","sourceHash":"b2f0dd7bb7f7cf81a7edeedc69afc2719015be50a7c93af47f523ec6cde48882","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/autodiff/GradientGraph.js","title":"particle_voice/nn/autodiff/GradientGraph","summary":"GradientGraph.js — Phase 1 ParticleNN autodiff STUB. **Not wired into anything until Phase 11.** The backward-pass analogue of `ParticleGraph.js`: nodes are backward-rule applications rather than forward kernels, gradient-tensor names rather than activation-tensor names. Reuses `ParticleGraph`'s DAG/topological-sort machinery directly (a gradient graph's dependency structure is a plain DAG exactly like a forward graph's — no different algorithm is needed) rather than duplicating it, and adds `accumulate()` for the one thing a gradient graph needs that a forward graph never does: multiple edges producing a gradient for the *same* tensor must sum, not overwrite (a tensor used as input to two or more forward ops receives a gradient contribution from each one).","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/autodiff/GradientGraph.md","moduleTitle":"particle_voice/nn/autodiff/GradientGraph","source":"agi/particle_voice/nn/autodiff/GradientGraph.js","import":"/agi/particle_voice/nn/autodiff/GradientGraph.js","sourceHash":"b2f0dd7bb7f7cf81a7edeedc69afc2719015be50a7c93af47f523ec6cde48882","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/autodiff/GradientGraph.js#0000:GradientGraph","exportIndex":0,"name":"GradientGraph","kind":"class","signature":"class GradientGraph extends ParticleGraph","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/autodiff/ParticleTape.md","moduleTitle":"particle_voice/nn/autodiff/ParticleTape","source":"agi/particle_voice/nn/autodiff/ParticleTape.js","import":"/agi/particle_voice/nn/autodiff/ParticleTape.js","sourceHash":"3efdfbe05c920def939bd97d89c68c81aed888637fded444b3929087e226a713","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/autodiff/ParticleTape.js","title":"particle_voice/nn/autodiff/ParticleTape","summary":"ParticleTape.js — Phase 1 ParticleNN autodiff STUB. **Not wired into anything until Phase 11** (browser training), per the plan's explicit phasing. This establishes the recording-tape contract a future forward pass will write to and `BackwardGraphCompiler.js` will read from — it is NOT exercised by any real training loop yet (R7's training spike used its own hand-wired `TinyAutodiff.js`, deliberately separate from this production module). Records forward-pass operations (op name, input tensor names, output tensor names, and any params the backward rule will need) in execution order, reverse-mode style.","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/autodiff/ParticleTape.md","moduleTitle":"particle_voice/nn/autodiff/ParticleTape","source":"agi/particle_voice/nn/autodiff/ParticleTape.js","import":"/agi/particle_voice/nn/autodiff/ParticleTape.js","sourceHash":"3efdfbe05c920def939bd97d89c68c81aed888637fded444b3929087e226a713","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/autodiff/ParticleTape.js#0000:ParticleTape","exportIndex":0,"name":"ParticleTape","kind":"class","signature":"class ParticleTape","summary":"ParticleTape.js — Phase 1 ParticleNN autodiff STUB. **Not wired into anything until Phase 11** (browser training), per the plan's explicit phasing. This establishes the recording-tape contract a future forward pass will write to and `BackwardGraphCompiler.js` will read from — it is NOT exercised by any real training loop yet (R7's training spike used its own hand-wired `TinyAutodiff.js`, deliberately separate from this production module). Records forward-pass operations (op name, input tensor names, output tensor names, and any params the backward rule will need) in execution order, reverse-mode style."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/core/ParticleGraph.md","moduleTitle":"particle_voice/nn/core/ParticleGraph","source":"agi/particle_voice/nn/core/ParticleGraph.js","import":"/agi/particle_voice/nn/core/ParticleGraph.js","sourceHash":"15daeedd19bebde7375ffc386b807991182723149294f0651afc2f55a664f748","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/core/ParticleGraph.js","title":"particle_voice/nn/core/ParticleGraph","summary":"ParticleGraph.js — Phase 1 ParticleNN core. The uncompiled neural compute graph a model author builds: named nodes with an `op` (must be in `PRNN-v0.md` §3's operator allowlist) and named input/output tensor slots. `PRNNCompiler.js` (Phase 2+) lowers a `ParticleGraph` into a `PRNN-v0` §8 execution plan / `ParticleProgram`; this file only builds and validates the DAG itself (topological sort, cycle/dangling-reference detection) — it does not compile or dispatch anything.","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/core/ParticleGraph.md","moduleTitle":"particle_voice/nn/core/ParticleGraph","source":"agi/particle_voice/nn/core/ParticleGraph.js","import":"/agi/particle_voice/nn/core/ParticleGraph.js","sourceHash":"15daeedd19bebde7375ffc386b807991182723149294f0651afc2f55a664f748","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/core/ParticleGraph.js#0000:ParticleGraph","exportIndex":0,"name":"ParticleGraph","kind":"class","signature":"class ParticleGraph","summary":"ParticleGraph.js — Phase 1 ParticleNN core. The uncompiled neural compute graph a model author builds: named nodes with an `op` (must be in `PRNN-v0.md` §3's operator allowlist) and named input/output tensor slots. `PRNNCompiler.js` (Phase 2+) lowers a `ParticleGraph` into a `PRNN-v0` §8 execution plan / `ParticleProgram`; this file only builds and validates the DAG itself (topological sort, cycle/dangling-reference detection) — it does not compile or dispatch anything."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/core/ParticleKernel.md","moduleTitle":"particle_voice/nn/core/ParticleKernel","source":"agi/particle_voice/nn/core/ParticleKernel.js","import":"/agi/particle_voice/nn/core/ParticleKernel.js","sourceHash":"123b27d02c1efe426eafe37c3146f0102efc32d503fa815d16b80bb7c72ba380","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/core/ParticleKernel.js","title":"particle_voice/nn/core/ParticleKernel","summary":"ParticleKernel.js — Phase 1 ParticleNN core. Kernel specialization: resolves a `KernelRegistry` entry + concrete params (`useShaderF16`, kernel-specific options like `eps`) into one ready-to-compile unit — WGSL source, entry point, workgroup size, and the explicit bind-group-layout entries `PipelineCache.js`/`KernelValidation.js` proved necessary for `f16` kernels (`DeviceContract-v0.md` §8).","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/core/ParticleKernel.md","moduleTitle":"particle_voice/nn/core/ParticleKernel","source":"agi/particle_voice/nn/core/ParticleKernel.js","import":"/agi/particle_voice/nn/core/ParticleKernel.js","sourceHash":"123b27d02c1efe426eafe37c3146f0102efc32d503fa815d16b80bb7c72ba380","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/core/ParticleKernel.js#0000:ParticleKernel","exportIndex":0,"name":"ParticleKernel","kind":"class","signature":"class ParticleKernel","summary":"ParticleKernel.js — Phase 1 ParticleNN core. Kernel specialization: resolves a `KernelRegistry` entry + concrete params (`useShaderF16`, kernel-specific options like `eps`) into one ready-to-compile unit — WGSL source, entry point, workgroup size, and the explicit bind-group-layout entries `PipelineCache.js`/`KernelValidation.js` proved necessary for `f16` kernels (`DeviceContract-v0.md` §8)."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/core/ParticleModel.md","moduleTitle":"particle_voice/nn/core/ParticleModel","source":"agi/particle_voice/nn/core/ParticleModel.js","import":"/agi/particle_voice/nn/core/ParticleModel.js","sourceHash":"3438a4ebf315d89dc8c95d3a698408c0f95b777d17cfec0682e88738769e8fd2","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/core/ParticleModel.js","title":"particle_voice/nn/core/ParticleModel","summary":"ParticleModel.js — Phase 1 ParticleNN core. A loaded model container: a compiled `ParticleProgram` plus its weight memory (`WeightPageStore`/`WeightBindWindow`/`WeightPageUploader`) and `.prnn` header metadata, as one object. Deliberately thin scaffolding at Phase 1 — no real model exists yet (`PRNNReader.js`/`PRNNCompiler.js` that would actually produce one of these from a `.prnn` file are Phase 2+ work); this fixes the shape that loader will hand to callers.","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/core/ParticleModel.md","moduleTitle":"particle_voice/nn/core/ParticleModel","source":"agi/particle_voice/nn/core/ParticleModel.js","import":"/agi/particle_voice/nn/core/ParticleModel.js","sourceHash":"3438a4ebf315d89dc8c95d3a698408c0f95b777d17cfec0682e88738769e8fd2","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/core/ParticleModel.js#0000:ParticleModel","exportIndex":0,"name":"ParticleModel","kind":"class","signature":"class ParticleModel","summary":"ParticleModel.js — Phase 1 ParticleNN core. A loaded model container: a compiled `ParticleProgram` plus its weight memory (`WeightPageStore`/`WeightBindWindow`/`WeightPageUploader`) and `.prnn` header metadata, as one object. Deliberately thin scaffolding at Phase 1 — no real model exists yet (`PRNNReader.js`/`PRNNCompiler.js` that would actually produce one of these from a `.prnn` file are Phase 2+ work); this fixes the shape that loader will hand to callers."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/core/ParticleProgram.md","moduleTitle":"particle_voice/nn/core/ParticleProgram","source":"agi/particle_voice/nn/core/ParticleProgram.js","import":"/agi/particle_voice/nn/core/ParticleProgram.js","sourceHash":"1a366f9296f31cdb985fd020356bda7fa5df1bcd347f893666ee22728b91a4ec","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/core/ParticleProgram.js","title":"particle_voice/nn/core/ParticleProgram","summary":"ParticleProgram.js — Phase 1 ParticleNN core. A compiled dispatch sequence: `ParticleGraph`'s topological order lowered into an ordered list of `{ nodeId, kernel: ParticleKernel, inputs, outputs }` steps, one `ParticleKernel` per graph node. `compileAll()` builds every step's GPU pipeline via a shared `PipelineCache` up front (so first dispatch has no compile-stall); actually running the steps each frame is `NeuralExecutor.js`'s job, not this file's.","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/core/ParticleProgram.md","moduleTitle":"particle_voice/nn/core/ParticleProgram","source":"agi/particle_voice/nn/core/ParticleProgram.js","import":"/agi/particle_voice/nn/core/ParticleProgram.js","sourceHash":"1a366f9296f31cdb985fd020356bda7fa5df1bcd347f893666ee22728b91a4ec","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/core/ParticleProgram.js#0000:ParticleProgram","exportIndex":0,"name":"ParticleProgram","kind":"class","signature":"class ParticleProgram","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/core/ParticleTensor.md","moduleTitle":"particle_voice/nn/core/ParticleTensor","source":"agi/particle_voice/nn/core/ParticleTensor.js","import":"/agi/particle_voice/nn/core/ParticleTensor.js","sourceHash":"14e6b39b5d77438d5628526ab3343ff90b8e96eb1d8e891e8c4427beb4586214","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/core/ParticleTensor.js","title":"particle_voice/nn/core/ParticleTensor","summary":"ParticleTensor.js — Phase 1 ParticleNN core. GPU-resident tensor with explicit shape/strides/dtype/quant metadata. Mirrors `agi/tensor/Tensor.js`'s ownership/readback/dispose conventions (reference only, not imported at runtime — the plan requires ParticleNN to stay decoupled from the LLM runtime) but adds the metadata ParticleVoice actually needs: multiple dtypes (`f32`/`f16`/`i8`/`u32`) and optional per-block INT8 quantization scale/zero data alongside the raw buffer.","exportCount":4}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/core/ParticleTensor.md","moduleTitle":"particle_voice/nn/core/ParticleTensor","source":"agi/particle_voice/nn/core/ParticleTensor.js","import":"/agi/particle_voice/nn/core/ParticleTensor.js","sourceHash":"14e6b39b5d77438d5628526ab3343ff90b8e96eb1d8e891e8c4427beb4586214","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/core/ParticleTensor.js#0000:ParticleTensor","exportIndex":0,"name":"ParticleTensor","kind":"class","signature":"class ParticleTensor","summary":"`quant`, when present, describes INT8 block quantization for `dtype: 'i8'` tensors: `{ scheme: 'int8-block', blockSize: u32, scales: Float32Array }` — one scale per `ceil(elementCount / blockSize)` block, dequantized as `value = i8Value * scales[blockIndex]` (zero-point-free, symmetric quantization; PRNN-v0's `dequant_int8` kernel implements this exact scheme — see `nn/kernels/quantization/dequant_int8.js`)."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/core/ParticleTensor.md","moduleTitle":"particle_voice/nn/core/ParticleTensor","source":"agi/particle_voice/nn/core/ParticleTensor.js","import":"/agi/particle_voice/nn/core/ParticleTensor.js","sourceHash":"14e6b39b5d77438d5628526ab3343ff90b8e96eb1d8e891e8c4427beb4586214","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/core/ParticleTensor.js#0001:contiguousStrides","exportIndex":1,"name":"contiguousStrides","kind":"function","signature":"contiguousStrides(shape)","summary":"Row-major contiguous strides for `shape` (element units, not bytes)."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/core/ParticleTensor.md","moduleTitle":"particle_voice/nn/core/ParticleTensor","source":"agi/particle_voice/nn/core/ParticleTensor.js","import":"/agi/particle_voice/nn/core/ParticleTensor.js","sourceHash":"14e6b39b5d77438d5628526ab3343ff90b8e96eb1d8e891e8c4427beb4586214","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/core/ParticleTensor.js#0002:tensorElementCount","exportIndex":2,"name":"tensorElementCount","kind":"function","signature":"tensorElementCount(shape)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/core/ParticleTensor.md","moduleTitle":"particle_voice/nn/core/ParticleTensor","source":"agi/particle_voice/nn/core/ParticleTensor.js","import":"/agi/particle_voice/nn/core/ParticleTensor.js","sourceHash":"14e6b39b5d77438d5628526ab3343ff90b8e96eb1d8e891e8c4427beb4586214","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/core/ParticleTensor.js#0003:wrapReadbackBuffer","exportIndex":3,"name":"wrapReadbackBuffer","kind":"function","signature":"wrapReadbackBuffer(dtype, arrayBuffer, size)","summary":"Wrap a raw readback `ArrayBuffer` in the correct typed-array view for `dtype`. Shared by `ParticleTensor` and `ParticleTensorView` so readback interpretation lives in exactly one place."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/core/ParticleTensorView.md","moduleTitle":"particle_voice/nn/core/ParticleTensorView","source":"agi/particle_voice/nn/core/ParticleTensorView.js","import":"/agi/particle_voice/nn/core/ParticleTensorView.js","sourceHash":"16aa70b107f4a6b95b991ae206e4ff7d211c06dc2e2fb245883abef6bc2e4123","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/core/ParticleTensorView.js","title":"particle_voice/nn/core/ParticleTensorView","summary":"ParticleTensorView.js — Phase 1 ParticleNN core. A zero-copy view over a parent `ParticleTensor`'s GPU buffer: a different logical shape/strides/byte-offset into the SAME underlying buffer, with no `device.queue` copy and no new buffer allocation. Used for things like binding a single weight page's sub-range, or reading one layer's slice out of a stacked activation tensor, without a `copyBufferToBuffer` pass.","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/core/ParticleTensorView.md","moduleTitle":"particle_voice/nn/core/ParticleTensorView","source":"agi/particle_voice/nn/core/ParticleTensorView.js","import":"/agi/particle_voice/nn/core/ParticleTensorView.js","sourceHash":"16aa70b107f4a6b95b991ae206e4ff7d211c06dc2e2fb245883abef6bc2e4123","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/core/ParticleTensorView.js#0000:ParticleTensorView","exportIndex":0,"name":"ParticleTensorView","kind":"class","signature":"class ParticleTensorView","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/KernelRegistry.md","moduleTitle":"particle_voice/nn/kernels/KernelRegistry","source":"agi/particle_voice/nn/kernels/KernelRegistry.js","import":"/agi/particle_voice/nn/kernels/KernelRegistry.js","sourceHash":"ebc1640bea74a31e76572d90ddf48518bd63f7c87855d72d61f41663d9534d19","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/kernels/KernelRegistry.js","title":"particle_voice/nn/kernels/KernelRegistry","summary":"KernelRegistry.js — Phase 1 ParticleNN kernel infrastructure. Maps kernel name -> `shader(params)` generator, mirroring `agi/llm/kernels/KernelRegistry.js`'s design (reference only, not imported — same LLM-runtime-decoupling rule as `PipelineUtils.js`). Each generator here also declares `inputCount` (how many read-only storage bindings it expects before the single read_write output binding) so `createShaderModule`'s caller can build the matching explicit bind-group layout required for `useShaderF16` kernels (see `DeviceContract-v0.md` §8 / `KernelValidation.js`'s `createExplicitLayoutPipeline`) without re-deriving each kernel's binding count by hand.","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/KernelRegistry.md","moduleTitle":"particle_voice/nn/kernels/KernelRegistry","source":"agi/particle_voice/nn/kernels/KernelRegistry.js","import":"/agi/particle_voice/nn/kernels/KernelRegistry.js","sourceHash":"ebc1640bea74a31e76572d90ddf48518bd63f7c87855d72d61f41663d9534d19","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/KernelRegistry.js#0000:KernelRegistry","exportIndex":0,"name":"KernelRegistry","kind":"class","signature":"class KernelRegistry","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/ShaderComposer.md","moduleTitle":"particle_voice/nn/kernels/ShaderComposer","source":"agi/particle_voice/nn/kernels/ShaderComposer.js","import":"/agi/particle_voice/nn/kernels/ShaderComposer.js","sourceHash":"18282638eea21ae5e09e66e8c5d20c355144e57389352457ac632a0606ebc938","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/kernels/ShaderComposer.js","title":"particle_voice/nn/kernels/ShaderComposer","summary":"ShaderComposer.js — Phase 1 ParticleNN kernel infrastructure. WGSL chunk composition with dependency resolution: register named chunks (each optionally depending on other chunks), then compose an ordered, deduplicated concatenation for a kernel body — so e.g. `int8_pack`'s `unpack_int8` is emitted exactly once even if two requested chunks both depend on it, and always appears before any chunk/body that calls it.","exportCount":2}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/ShaderComposer.md","moduleTitle":"particle_voice/nn/kernels/ShaderComposer","source":"agi/particle_voice/nn/kernels/ShaderComposer.js","import":"/agi/particle_voice/nn/kernels/ShaderComposer.js","sourceHash":"18282638eea21ae5e09e66e8c5d20c355144e57389352457ac632a0606ebc938","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/ShaderComposer.js#0000:ShaderComposer","exportIndex":0,"name":"ShaderComposer","kind":"class","signature":"class ShaderComposer","summary":"ShaderComposer.js — Phase 1 ParticleNN kernel infrastructure. WGSL chunk composition with dependency resolution: register named chunks (each optionally depending on other chunks), then compose an ordered, deduplicated concatenation for a kernel body — so e.g. `int8_pack`'s `unpack_int8` is emitted exactly once even if two requested chunks both depend on it, and always appears before any chunk/body that calls it."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/ShaderComposer.md","moduleTitle":"particle_voice/nn/kernels/ShaderComposer","source":"agi/particle_voice/nn/kernels/ShaderComposer.js","import":"/agi/particle_voice/nn/kernels/ShaderComposer.js","sourceHash":"18282638eea21ae5e09e66e8c5d20c355144e57389352457ac632a0606ebc938","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/ShaderComposer.js#0001:createDefaultShaderComposer","exportIndex":1,"name":"createDefaultShaderComposer","kind":"function","signature":"async createDefaultShaderComposer()","summary":"Pre-registers the Phase 1 WGSL chunk set (`math_common`, `int8_pack`, `complex_math`) so a kernel generator can immediately `compose(['math_common', 'int8_pack'], body)` without registering each chunk itself. `f16_utils.js` has no WGSL fragment (it is a host-side-only JS<->f16 bit-conversion utility, per its own module doc) so it is not registered here."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/ShaderDiagnosticFormatter.md","moduleTitle":"particle_voice/nn/kernels/ShaderDiagnosticFormatter","source":"agi/particle_voice/nn/kernels/ShaderDiagnosticFormatter.js","import":"/agi/particle_voice/nn/kernels/ShaderDiagnosticFormatter.js","sourceHash":"13b19634b694ecc98fc536dbfc72af1111e262398f0de662600f6dfe3b3897d7","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/kernels/ShaderDiagnosticFormatter.js","title":"particle_voice/nn/kernels/ShaderDiagnosticFormatter","summary":"ShaderDiagnosticFormatter.js — Phase 1 ParticleNN kernel infrastructure. Formats `GPUCompilationMessage[]` (from `module.getCompilationInfo()`) into human-readable diagnostics, optionally resolving each message's line number through a `WGSLSourceMap` to name which chunk it came from — a strict superset of `PipelineUtils.js`'s `assertShaderCompiled` error text (which only reports line:col + message, no chunk attribution).","exportCount":3}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/ShaderDiagnosticFormatter.md","moduleTitle":"particle_voice/nn/kernels/ShaderDiagnosticFormatter","source":"agi/particle_voice/nn/kernels/ShaderDiagnosticFormatter.js","import":"/agi/particle_voice/nn/kernels/ShaderDiagnosticFormatter.js","sourceHash":"13b19634b694ecc98fc536dbfc72af1111e262398f0de662600f6dfe3b3897d7","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/ShaderDiagnosticFormatter.js#0000:formatCompilationMessages","exportIndex":0,"name":"formatCompilationMessages","kind":"function","signature":"formatCompilationMessages(messages, { sourceMap = null } = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/ShaderDiagnosticFormatter.md","moduleTitle":"particle_voice/nn/kernels/ShaderDiagnosticFormatter","source":"agi/particle_voice/nn/kernels/ShaderDiagnosticFormatter.js","import":"/agi/particle_voice/nn/kernels/ShaderDiagnosticFormatter.js","sourceHash":"13b19634b694ecc98fc536dbfc72af1111e262398f0de662600f6dfe3b3897d7","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/ShaderDiagnosticFormatter.js#0001:formatDiagnosticReport","exportIndex":1,"name":"formatDiagnosticReport","kind":"function","signature":"formatDiagnosticReport(kernelName, messages, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/ShaderDiagnosticFormatter.md","moduleTitle":"particle_voice/nn/kernels/ShaderDiagnosticFormatter","source":"agi/particle_voice/nn/kernels/ShaderDiagnosticFormatter.js","import":"/agi/particle_voice/nn/kernels/ShaderDiagnosticFormatter.js","sourceHash":"13b19634b694ecc98fc536dbfc72af1111e262398f0de662600f6dfe3b3897d7","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/ShaderDiagnosticFormatter.js#0002:formatErrorsOnly","exportIndex":2,"name":"formatErrorsOnly","kind":"function","signature":"formatErrorsOnly(kernelName, messages, options = {})","summary":"Only the `type === 'error'` messages, formatted — the subset that should fail a build/test, distinct from warnings/info the caller may want to log but not fail on."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/WGSLSourceMap.md","moduleTitle":"particle_voice/nn/kernels/WGSLSourceMap","source":"agi/particle_voice/nn/kernels/WGSLSourceMap.js","import":"/agi/particle_voice/nn/kernels/WGSLSourceMap.js","sourceHash":"e73066c5debd3b3a0c2c309f7adf24988d31a1fffbce8254d3876f6b1e85074b","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/kernels/WGSLSourceMap.js","title":"particle_voice/nn/kernels/WGSLSourceMap","summary":"WGSLSourceMap.js — Phase 1 ParticleNN kernel infrastructure. Generated-WGSL-line -> originating-chunk mapping. Kernels compose WGSL from named chunks (`ShaderComposer.js`) plus their own body; when the GPU compiler reports an error at line N, this turns that bare line number back into \"which named chunk (or the kernel's own body) that line came from\" — the JS source itself isn't line-mapped (these are template literals, not a separate compilation step), but chunk attribution is usually enough to know where to look.","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/WGSLSourceMap.md","moduleTitle":"particle_voice/nn/kernels/WGSLSourceMap","source":"agi/particle_voice/nn/kernels/WGSLSourceMap.js","import":"/agi/particle_voice/nn/kernels/WGSLSourceMap.js","sourceHash":"e73066c5debd3b3a0c2c309f7adf24988d31a1fffbce8254d3876f6b1e85074b","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/WGSLSourceMap.js#0000:WGSLSourceMap","exportIndex":0,"name":"WGSLSourceMap","kind":"class","signature":"class WGSLSourceMap","summary":"WGSLSourceMap.js — Phase 1 ParticleNN kernel infrastructure. Generated-WGSL-line -> originating-chunk mapping. Kernels compose WGSL from named chunks (`ShaderComposer.js`) plus their own body; when the GPU compiler reports an error at line N, this turns that bare line number back into \"which named chunk (or the kernel's own body) that line came from\" — the JS source itself isn't line-mapped (these are template literals, not a separate compilation step), but chunk attribution is usually enough to know where to look."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/WgslPreprocessor.md","moduleTitle":"particle_voice/nn/kernels/WgslPreprocessor","source":"agi/particle_voice/nn/kernels/WgslPreprocessor.js","import":"/agi/particle_voice/nn/kernels/WgslPreprocessor.js","sourceHash":"694bb73ac6f6ee88cdad7dd6c31ebc171c47fa01a199061b9045dcdd18837c3b","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/kernels/WgslPreprocessor.js","title":"particle_voice/nn/kernels/WgslPreprocessor","summary":"WgslPreprocessor.js — Phase 1 ParticleNN kernel infrastructure. Tagged template `wgsl\\`...\\`` supporting `#if`/`#else`/`#endif` and `#for`/`#endfor` directives, evaluated at kernel-generation time (trusted JS call sites only — this is code generation for the kernel author, not a user-input template engine, so a plain `Function` eval for `#if` expressions is an acceptable, deliberate choice here). Directive syntax (each directive must be alone on its own line): #if <jsExpression>      // evaluated with no closure — pre-interpolate #else                   //   values via `${...}` before the directive #endif                  //   line if the condition depends on a variable #for <name> in <start>..<end>   // half-open range, start/end integers #endfor                          // body may reference `#{name}` (a // literal placeholder distinct from // `${}`, since `${}` is already // resolved by template-literal // substitution before this runs)","exportCount":2}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/WgslPreprocessor.md","moduleTitle":"particle_voice/nn/kernels/WgslPreprocessor","source":"agi/particle_voice/nn/kernels/WgslPreprocessor.js","import":"/agi/particle_voice/nn/kernels/WgslPreprocessor.js","sourceHash":"694bb73ac6f6ee88cdad7dd6c31ebc171c47fa01a199061b9045dcdd18837c3b","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/WgslPreprocessor.js#0000:preprocessWgsl","exportIndex":0,"name":"preprocessWgsl","kind":"function","signature":"preprocessWgsl(source)","summary":"Process `#if`/`#else`/`#endif` and `#for`/`#endfor` directives in a flat WGSL source string, line by line."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/WgslPreprocessor.md","moduleTitle":"particle_voice/nn/kernels/WgslPreprocessor","source":"agi/particle_voice/nn/kernels/WgslPreprocessor.js","import":"/agi/particle_voice/nn/kernels/WgslPreprocessor.js","sourceHash":"694bb73ac6f6ee88cdad7dd6c31ebc171c47fa01a199061b9045dcdd18837c3b","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/WgslPreprocessor.js#0001:wgsl","exportIndex":1,"name":"wgsl","kind":"function","signature":"wgsl(strings, ...values)","summary":"Tagged template: joins `strings`/`values` per normal template-literal semantics, then runs `preprocessWgsl` over the result."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/activation/silu_f16.md","moduleTitle":"particle_voice/nn/kernels/activation/silu_f16","source":"agi/particle_voice/nn/kernels/activation/silu_f16.js","import":"/agi/particle_voice/nn/kernels/activation/silu_f16.js","sourceHash":"deb9b2192f65324386089c61c6330950cf7bbbe36a8bd92b801606b719a9fc2c","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/kernels/activation/silu_f16.js","title":"particle_voice/nn/kernels/activation/silu_f16","summary":"activation/silu_f16.js — Phase 1 ParticleNN kernel. Elementwise SiLU (`x * sigmoid(x)`), composed from `chunks/math_common.js`'s `siluScalar` rather than re-deriving the sigmoid inline.","exportCount":3}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/activation/silu_f16.md","moduleTitle":"particle_voice/nn/kernels/activation/silu_f16","source":"agi/particle_voice/nn/kernels/activation/silu_f16.js","import":"/agi/particle_voice/nn/kernels/activation/silu_f16.js","sourceHash":"deb9b2192f65324386089c61c6330950cf7bbbe36a8bd92b801606b719a9fc2c","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/activation/silu_f16.js#0000:siluF16Shader","exportIndex":0,"name":"siluF16Shader","kind":"function","signature":"siluF16Shader({ useShaderF16 = false } = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/activation/silu_f16.md","moduleTitle":"particle_voice/nn/kernels/activation/silu_f16","source":"agi/particle_voice/nn/kernels/activation/silu_f16.js","import":"/agi/particle_voice/nn/kernels/activation/silu_f16.js","sourceHash":"deb9b2192f65324386089c61c6330950cf7bbbe36a8bd92b801606b719a9fc2c","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/activation/silu_f16.js#0001:SILU_F16_ENTRY_POINT","exportIndex":1,"name":"SILU_F16_ENTRY_POINT","kind":"constant","signature":"SILU_F16_ENTRY_POINT","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/activation/silu_f16.md","moduleTitle":"particle_voice/nn/kernels/activation/silu_f16","source":"agi/particle_voice/nn/kernels/activation/silu_f16.js","import":"/agi/particle_voice/nn/kernels/activation/silu_f16.js","sourceHash":"deb9b2192f65324386089c61c6330950cf7bbbe36a8bd92b801606b719a9fc2c","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/activation/silu_f16.js#0002:SILU_F16_WORKGROUP_SIZE","exportIndex":2,"name":"SILU_F16_WORKGROUP_SIZE","kind":"constant","signature":"SILU_F16_WORKGROUP_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/breath_reservoir.md","moduleTitle":"particle_voice/nn/kernels/articulatory/breath_reservoir","source":"agi/particle_voice/nn/kernels/articulatory/breath_reservoir.js","import":"/agi/particle_voice/nn/kernels/articulatory/breath_reservoir.js","sourceHash":"05c936a99ba1cc87307bce066c86376211bc53e62c2814b417ebdaf9f2d7588b","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/kernels/articulatory/breath_reservoir.js","title":"particle_voice/nn/kernels/articulatory/breath_reservoir","summary":"breath_reservoir.js — Phase 2 ParticleNN articulatory kernel. First-order lag filter: `pressure[n] = pressure[n-1] + (target[n] - pressure[n-1]) * lag_rate`, matching `risk/BreathReservoir.js` (R6A)'s proven recurrence exactly (`lag_rate = 1 - exp(-1/(compliance*sampleRate))` is computed by the caller and passed in, not recomputed here). A first-order IIR recurrence is inherently sequential in time, but each of up to N simultaneous voice/capsule *instances* is fully independent — `workgroup_id.x` selects the instance, and a single thread per workgroup walks that instance's whole chunk sequentially (cheap: a chunk is a few hundred samples, and GPU dispatch overhead dominates at that size anyway, so there is nothing to gain from parallelizing within one instance's strictly-sequential recurrence).","exportCount":3}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/breath_reservoir.md","moduleTitle":"particle_voice/nn/kernels/articulatory/breath_reservoir","source":"agi/particle_voice/nn/kernels/articulatory/breath_reservoir.js","import":"/agi/particle_voice/nn/kernels/articulatory/breath_reservoir.js","sourceHash":"05c936a99ba1cc87307bce066c86376211bc53e62c2814b417ebdaf9f2d7588b","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/articulatory/breath_reservoir.js#0000:breathReservoirShader","exportIndex":0,"name":"breathReservoirShader","kind":"function","signature":"breathReservoirShader()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/breath_reservoir.md","moduleTitle":"particle_voice/nn/kernels/articulatory/breath_reservoir","source":"agi/particle_voice/nn/kernels/articulatory/breath_reservoir.js","import":"/agi/particle_voice/nn/kernels/articulatory/breath_reservoir.js","sourceHash":"05c936a99ba1cc87307bce066c86376211bc53e62c2814b417ebdaf9f2d7588b","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/articulatory/breath_reservoir.js#0001:BREATH_RESERVOIR_ENTRY_POINT","exportIndex":1,"name":"BREATH_RESERVOIR_ENTRY_POINT","kind":"constant","signature":"BREATH_RESERVOIR_ENTRY_POINT","summary":"breath_reservoir.js — Phase 2 ParticleNN articulatory kernel. First-order lag filter: `pressure[n] = pressure[n-1] + (target[n] - pressure[n-1]) * lag_rate`, matching `risk/BreathReservoir.js` (R6A)'s proven recurrence exactly (`lag_rate = 1 - exp(-1/(compliance*sampleRate))` is computed by the caller and passed in, not recomputed here). A first-order IIR recurrence is inherently sequential in time, but each of up to N simultaneous voice/capsule *instances* is fully independent — `workgroup_id.x` selects the instance, and a single thread per workgroup walks that instance's whole chunk sequentially (cheap: a chunk is a few hundred samples, and GPU dispatch overhead dominates at that size anyway, so there is nothing to gain from parallelizing within one instance's strictly-sequential recurrence)."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/breath_reservoir.md","moduleTitle":"particle_voice/nn/kernels/articulatory/breath_reservoir","source":"agi/particle_voice/nn/kernels/articulatory/breath_reservoir.js","import":"/agi/particle_voice/nn/kernels/articulatory/breath_reservoir.js","sourceHash":"05c936a99ba1cc87307bce066c86376211bc53e62c2814b417ebdaf9f2d7588b","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/articulatory/breath_reservoir.js#0002:BREATH_RESERVOIR_WORKGROUP_SIZE","exportIndex":2,"name":"BREATH_RESERVOIR_WORKGROUP_SIZE","kind":"constant","signature":"BREATH_RESERVOIR_WORKGROUP_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/constriction_noise.md","moduleTitle":"particle_voice/nn/kernels/articulatory/constriction_noise","source":"agi/particle_voice/nn/kernels/articulatory/constriction_noise.js","import":"/agi/particle_voice/nn/kernels/articulatory/constriction_noise.js","sourceHash":"ef910ca35007fa674e4288bc74ad062b4fb9b6d3606345153ed74d567a4a72e7","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/kernels/articulatory/constriction_noise.js","title":"particle_voice/nn/kernels/articulatory/constriction_noise","summary":"constriction_noise.js — Phase 2 ParticleNN articulatory kernel. Turbulence/frication noise generator for a chosen internal tract junction (fricatives, plosive bursts) — deliberately a SEPARATE kernel from `speech/noise_source.js` rather than reusing it directly, because the two have genuinely different shapes: `noise_source.js` generates one flat, constant-amplitude signal for the whole dispatch (aspiration noise mixed at the glottis, `risk/GlottalSource.js` (R6)'s `aspirationLevel`), while frication noise needs a per-sample, per-instance TIME-VARYING amplitude envelope (driven by how tightly a constriction is formed, which changes continuously as an articulator moves) and per-instance start index/seed so N simultaneous voices/characters never share correlated turbulence. Sharing the same underlying hash rather than inventing a second one is still correct reuse: `noise_at()` below is the identical two-round Murmur-style avalanche hash as `noise_source.js`/ `risk/GlottalSource.js`'s `noiseAt` (same technique as `StreamingContinuitySource.js`), just applied per-instance with an amplitude that varies per output sample instead of being a single dispatch-wide uniform scalar. `tract_waveguide.js` does not (yet) consume this kernel's output at a `constrictionIndex` internally (its own docstring flags that as deferred, matching R6's `step()`'s own `constrictionIndex`/ `constrictionNoiseSample` option) — this kernel only produces the turbulence signal; injecting it into a specific internal tract junction is a `ParticleTract` orchestration concern for a later phase, once the model that decides the constriction's time-varying amplitude envelope exists. Three spectral shapes are supported: - `direct` `noise_at()` (flat/white-ish), the default reference; - `lowpass` block-interpolated `noise_at()` for glottal aspiration, giving the noise a predominantly low-frequency, breathy character rather than a hissy fricative one; - `derivative` first-differenced `noise_at()` (blue, +6 dB/octave) for oral frication and plosive bursts, where the high-frequency emphasis makes consonants like /s/ and /t/ pop without changing the vowel source.","exportCount":3}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/constriction_noise.md","moduleTitle":"particle_voice/nn/kernels/articulatory/constriction_noise","source":"agi/particle_voice/nn/kernels/articulatory/constriction_noise.js","import":"/agi/particle_voice/nn/kernels/articulatory/constriction_noise.js","sourceHash":"ef910ca35007fa674e4288bc74ad062b4fb9b6d3606345153ed74d567a4a72e7","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/articulatory/constriction_noise.js#0000:constrictionNoiseShader","exportIndex":0,"name":"constrictionNoiseShader","kind":"function","signature":"constrictionNoiseShader({ spectralShape = 'direct', lowpassHold = 32 } = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/constriction_noise.md","moduleTitle":"particle_voice/nn/kernels/articulatory/constriction_noise","source":"agi/particle_voice/nn/kernels/articulatory/constriction_noise.js","import":"/agi/particle_voice/nn/kernels/articulatory/constriction_noise.js","sourceHash":"ef910ca35007fa674e4288bc74ad062b4fb9b6d3606345153ed74d567a4a72e7","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/articulatory/constriction_noise.js#0001:CONSTRICTION_NOISE_ENTRY_POINT","exportIndex":1,"name":"CONSTRICTION_NOISE_ENTRY_POINT","kind":"constant","signature":"CONSTRICTION_NOISE_ENTRY_POINT","summary":"constriction_noise.js — Phase 2 ParticleNN articulatory kernel. Turbulence/frication noise generator for a chosen internal tract junction (fricatives, plosive bursts) — deliberately a SEPARATE kernel from `speech/noise_source.js` rather than reusing it directly, because the two have genuinely different shapes: `noise_source.js` generates one flat, constant-amplitude signal for the whole dispatch (aspiration noise mixed at the glottis, `risk/GlottalSource.js` (R6)'s `aspirationLevel`), while frication noise needs a per-sample, per-instance TIME-VARYING amplitude envelope (driven by how tightly a constriction is formed, which changes continuously as an articulator moves) and per-instance start index/seed so N simultaneous voices/characters never share correlated turbulence. Sharing the same underlying hash rather than inventing a second one is still correct reuse: `noise_at()` below is the identical two-round Murmur-style avalanche hash as `noise_source.js`/ `risk/GlottalSource.js`'s `noiseAt` (same technique as `StreamingContinuitySource.js`), just applied per-instance with an amplitude that varies per output sample instead of being a single dispatch-wide uniform scalar. `tract_waveguide.js` does not (yet) consume this kernel's output at a `constrictionIndex` internally (its own docstring flags that as deferred, matching R6's `step()`'s own `constrictionIndex`/ `constrictionNoiseSample` option) — this kernel only produces the turbulence signal; injecting it into a specific internal tract junction is a `ParticleTract` orchestration concern for a later phase, once the model that decides the constriction's time-varying amplitude envelope exists. Three spectral shapes are supported: - `direct` `noise_at()` (flat/white-ish), the default reference; - `lowpass` block-interpolated `noise_at()` for glottal aspiration, giving the noise a predominantly low-frequency, breathy character rather than a hissy fricative one; - `derivative` first-differenced `noise_at()` (blue, +6 dB/octave) for oral frication and plosive bursts, where the high-frequency emphasis makes consonants like /s/ and /t/ pop without changing the vowel source."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/constriction_noise.md","moduleTitle":"particle_voice/nn/kernels/articulatory/constriction_noise","source":"agi/particle_voice/nn/kernels/articulatory/constriction_noise.js","import":"/agi/particle_voice/nn/kernels/articulatory/constriction_noise.js","sourceHash":"ef910ca35007fa674e4288bc74ad062b4fb9b6d3606345153ed74d567a4a72e7","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/articulatory/constriction_noise.js#0002:CONSTRICTION_NOISE_WORKGROUP_SIZE","exportIndex":2,"name":"CONSTRICTION_NOISE_WORKGROUP_SIZE","kind":"constant","signature":"CONSTRICTION_NOISE_WORKGROUP_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/glottal_lf.md","moduleTitle":"particle_voice/nn/kernels/articulatory/glottal_lf","source":"agi/particle_voice/nn/kernels/articulatory/glottal_lf.js","import":"/agi/particle_voice/nn/kernels/articulatory/glottal_lf.js","sourceHash":"1310ff7266290c426809da09eb2155d5b5b5f8cad49461cf445230069c1aca8c","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/kernels/articulatory/glottal_lf.js","title":"particle_voice/nn/kernels/articulatory/glottal_lf","summary":"glottal_lf.js — Phase 2 ParticleNN articulatory kernel. The full Liljencrants-Fant (LF) glottal flow DERIVATIVE model, replacing `speech/harmonic_source.js`'s raised-cosine \"LF-lite\" stand-in (`risk/GlottalSource.js` (R6)'s own docstring calls that shape a deliberate simplification and names `articulatory/glottal_lf.js` as the real implementation it stands in for). Per period, given control instants Te (glottal closure / main excitation, 0 < Te < T0), Tp (peak-flow instant, 0 < Tp < Te), Ta (return-phase time constant), and Ee (excitation strength), the classic two-segment LF waveform is: E(t) = E0 * exp(alpha*t) * sin(wg*t)                            0<=t<Te E(t) = -(Ee/(eps*Ta)) * (exp(-eps*(t-Te)) - exp(-eps*(T0-Te)))  Te<=t<T0 with `wg = pi/Tp`. `E0`, `alpha`, and `eps` are NOT free parameters — they are pinned by three physical constraints this file's author derived and verified algebraically (rather than recalling a textbook formula from memory, to avoid presenting an unverified transcendental equation as fact): 1. Boundary match at Te: E(Te-) = -Ee, giving `E0 = -Ee / (exp(alpha*Te) * sin(wg*Te))`. 2. `eps` solves `eps*Ta = 1 - exp(-eps*(T0-Te))` (the standard LF return-phase time-constant equation) via Newton-Raphson with the exact analytic derivative `f(eps)=eps*Ta-1+exp(-eps*(T0-Te))`, `f'(eps)=Ta-(T0-Te)*exp(-eps*(T0-Te))`, started at `eps0=1/Ta`. 3. `alpha` solves the area-balance constraint (glottal flow is periodic, so its derivative integrates to zero over one full period): substituting constraint 1 into the closed-form `int[0,Te] E0*exp(alpha*t)*sin(wg*t) dt` (standard `exp(at)sin(bt)` antiderivative) and the closed-form return-phase integral (simplified using constraint 2) gives `Area(alpha) = -Ee/sin(wg*Te) * N(alpha)/D(alpha)` where `N(alpha) = alpha*sin(wg*Te) - wg*cos(wg*Te) + wg*exp(-alpha*Te)` and `D(alpha) = alpha^2 + wg^2`; this is solved for `Area(alpha) = Ee/eps - Ee*(T0-Te)*exp(-eps*(T0-Te))/(eps*Ta)` via Newton-Raphson using the exact analytic derivative of `N/D` (quotient rule from `N'(alpha) = sin(wg*Te) - wg*Te*exp(-alpha*Te)`, `D'(alpha) = 2*alpha`), started at `alpha0 = 0` (a safe, singularity- free starting point: `D(0) = wg^2 != 0`). Both Newton solves run for a fixed, generous iteration count (8 each) — cheap scalar math, and every thread in this kernel redoes the same per-instance solve redundantly rather than solving once and broadcasting through workgroup memory: unlike `tract_waveguide.js`'s per-sample recurrence, LF generation has NO cross-sample dependency at all (like `harmonic_source.js`/`noise_source.js`), so the simplest correct design is one thread per (instance, sample) output element, matching those kernels' flat-parallel convention exactly. If per-period solve cost ever matters at scale, hoisting it into its own once-per-instance kernel (mirroring `tract_transfer.js`'s role for `tract_waveguide.js`) is a straightforward follow-up, not a design change. Every control instant is expressed in SAMPLES (not seconds), matching `harmonic_source.js`'s `period_samples`/`open_samples`/`start_phase` convention and this kernel's own absolute-sample-counter continuity requirement across chunk boundaries.","exportCount":6}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/glottal_lf.md","moduleTitle":"particle_voice/nn/kernels/articulatory/glottal_lf","source":"agi/particle_voice/nn/kernels/articulatory/glottal_lf.js","import":"/agi/particle_voice/nn/kernels/articulatory/glottal_lf.js","sourceHash":"1310ff7266290c426809da09eb2155d5b5b5f8cad49461cf445230069c1aca8c","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/articulatory/glottal_lf.js#0000:solveLfShapeParameters","exportIndex":0,"name":"solveLfShapeParameters","kind":"function","signature":"solveLfShapeParameters({ t0, te, tp, ta, ee })","summary":"CPU-side reference implementation of the exact same closed-form/Newton- Raphson math the WGSL kernel below runs — used by the parity test and documented here as the canonical derivation any future GPU-side per-instance solve kernel (see docstring) must also match bit-for-bit in structure (same iteration count, same starting values)."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/glottal_lf.md","moduleTitle":"particle_voice/nn/kernels/articulatory/glottal_lf","source":"agi/particle_voice/nn/kernels/articulatory/glottal_lf.js","import":"/agi/particle_voice/nn/kernels/articulatory/glottal_lf.js","sourceHash":"1310ff7266290c426809da09eb2155d5b5b5f8cad49461cf445230069c1aca8c","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/articulatory/glottal_lf.js#0001:evaluateLfSample","exportIndex":1,"name":"evaluateLfSample","kind":"function","signature":"evaluateLfSample(cyclePos, { t0, te, ta, ee, wg, eps, alpha, e0 })","summary":"CPU-side reference for a single sample's LF value, given already-solved shape parameters — matches the WGSL kernel's per-sample branch exactly."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/glottal_lf.md","moduleTitle":"particle_voice/nn/kernels/articulatory/glottal_lf","source":"agi/particle_voice/nn/kernels/articulatory/glottal_lf.js","import":"/agi/particle_voice/nn/kernels/articulatory/glottal_lf.js","sourceHash":"1310ff7266290c426809da09eb2155d5b5b5f8cad49461cf445230069c1aca8c","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/articulatory/glottal_lf.js#0002:glottalLfShader","exportIndex":2,"name":"glottalLfShader","kind":"function","signature":"glottalLfShader()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/glottal_lf.md","moduleTitle":"particle_voice/nn/kernels/articulatory/glottal_lf","source":"agi/particle_voice/nn/kernels/articulatory/glottal_lf.js","import":"/agi/particle_voice/nn/kernels/articulatory/glottal_lf.js","sourceHash":"1310ff7266290c426809da09eb2155d5b5b5f8cad49461cf445230069c1aca8c","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/articulatory/glottal_lf.js#0003:GLOTTAL_LF_ENTRY_POINT","exportIndex":3,"name":"GLOTTAL_LF_ENTRY_POINT","kind":"constant","signature":"GLOTTAL_LF_ENTRY_POINT","summary":"glottal_lf.js — Phase 2 ParticleNN articulatory kernel. The full Liljencrants-Fant (LF) glottal flow DERIVATIVE model, replacing `speech/harmonic_source.js`'s raised-cosine \"LF-lite\" stand-in (`risk/GlottalSource.js` (R6)'s own docstring calls that shape a deliberate simplification and names `articulatory/glottal_lf.js` as the real implementation it stands in for). Per period, given control instants Te (glottal closure / main excitation, 0 < Te < T0), Tp (peak-flow instant, 0 < Tp < Te), Ta (return-phase time constant), and Ee (excitation strength), the classic two-segment LF waveform is: E(t) = E0 * exp(alpha*t) * sin(wg*t)                            0<=t<Te E(t) = -(Ee/(eps*Ta)) * (exp(-eps*(t-Te)) - exp(-eps*(T0-Te)))  Te<=t<T0 with `wg = pi/Tp`. `E0`, `alpha`, and `eps` are NOT free parameters — they are pinned by three physical constraints this file's author derived and verified algebraically (rather than recalling a textbook formula from memory, to avoid presenting an unverified transcendental equation as fact): 1. Boundary match at Te: E(Te-) = -Ee, giving `E0 = -Ee / (exp(alpha*Te) * sin(wg*Te))`. 2. `eps` solves `eps*Ta = 1 - exp(-eps*(T0-Te))` (the standard LF return-phase time-constant equation) via Newton-Raphson with the exact analytic derivative `f(eps)=eps*Ta-1+exp(-eps*(T0-Te))`, `f'(eps)=Ta-(T0-Te)*exp(-eps*(T0-Te))`, started at `eps0=1/Ta`. 3. `alpha` solves the area-balance constraint (glottal flow is periodic, so its derivative integrates to zero over one full period): substituting constraint 1 into the closed-form `int[0,Te] E0*exp(alpha*t)*sin(wg*t) dt` (standard `exp(at)sin(bt)` antiderivative) and the closed-form return-phase integral (simplified using constraint 2) gives `Area(alpha) = -Ee/sin(wg*Te) * N(alpha)/D(alpha)` where `N(alpha) = alpha*sin(wg*Te) - wg*cos(wg*Te) + wg*exp(-alpha*Te)` and `D(alpha) = alpha^2 + wg^2`; this is solved for `Area(alpha) = Ee/eps - Ee*(T0-Te)*exp(-eps*(T0-Te))/(eps*Ta)` via Newton-Raphson using the exact analytic derivative of `N/D` (quotient rule from `N'(alpha) = sin(wg*Te) - wg*Te*exp(-alpha*Te)`, `D'(alpha) = 2*alpha`), started at `alpha0 = 0` (a safe, singularity- free starting point: `D(0) = wg^2 != 0`). Both Newton solves run for a fixed, generous iteration count (8 each) — cheap scalar math, and every thread in this kernel redoes the same per-instance solve redundantly rather than solving once and broadcasting through workgroup memory: unlike `tract_waveguide.js`'s per-sample recurrence, LF generation has NO cross-sample dependency at all (like `harmonic_source.js`/`noise_source.js`), so the simplest correct design is one thread per (instance, sample) output element, matching those kernels' flat-parallel convention exactly. If per-period solve cost ever matters at scale, hoisting it into its own once-per-instance kernel (mirroring `tract_transfer.js`'s role for `tract_waveguide.js`) is a straightforward follow-up, not a design change. Every control instant is expressed in SAMPLES (not seconds), matching `harmonic_source.js`'s `period_samples`/`open_samples`/`start_phase` convention and this kernel's own absolute-sample-counter continuity requirement across chunk boundaries."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/glottal_lf.md","moduleTitle":"particle_voice/nn/kernels/articulatory/glottal_lf","source":"agi/particle_voice/nn/kernels/articulatory/glottal_lf.js","import":"/agi/particle_voice/nn/kernels/articulatory/glottal_lf.js","sourceHash":"1310ff7266290c426809da09eb2155d5b5b5f8cad49461cf445230069c1aca8c","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/articulatory/glottal_lf.js#0004:GLOTTAL_LF_WORKGROUP_SIZE","exportIndex":4,"name":"GLOTTAL_LF_WORKGROUP_SIZE","kind":"constant","signature":"GLOTTAL_LF_WORKGROUP_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/glottal_lf.md","moduleTitle":"particle_voice/nn/kernels/articulatory/glottal_lf","source":"agi/particle_voice/nn/kernels/articulatory/glottal_lf.js","import":"/agi/particle_voice/nn/kernels/articulatory/glottal_lf.js","sourceHash":"1310ff7266290c426809da09eb2155d5b5b5f8cad49461cf445230069c1aca8c","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/articulatory/glottal_lf.js#0005:GLOTTAL_LF_NEWTON_ITERATIONS","exportIndex":5,"name":"GLOTTAL_LF_NEWTON_ITERATIONS","kind":"constant","signature":"GLOTTAL_LF_NEWTON_ITERATIONS","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/lip_radiation.md","moduleTitle":"particle_voice/nn/kernels/articulatory/lip_radiation","source":"agi/particle_voice/nn/kernels/articulatory/lip_radiation.js","import":"/agi/particle_voice/nn/kernels/articulatory/lip_radiation.js","sourceHash":"10e584e9e268e4f325ffe169025591a1516586c2a40788083d0eddd2b222be06","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/kernels/articulatory/lip_radiation.js","title":"particle_voice/nn/kernels/articulatory/lip_radiation","summary":"lip_radiation.js — Phase 2 ParticleNN articulatory kernel. Idealized lip-radiation filter: a first difference, `radiated[n] = raw[n] - raw[n-1]`, matching `risk/KellyLochbaumWaveguide.js` (R6)'s `step()` exactly (`radiated = outputRaw - prevOutputRaw`) — the differentiating characteristic of radiation from an open end. Despite being defined via a one-sample recurrence, this is embarrassingly parallel: `raw[n-1]` for `n > 0` is just the previous element of the *same* input buffer (already fully computed, no accumulation), and only `n = 0` needs externally-supplied state (`prev_last_sample`, the previous chunk's final raw sample) — so every output sample can be computed independently with no sequential loop at all.","exportCount":3}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/lip_radiation.md","moduleTitle":"particle_voice/nn/kernels/articulatory/lip_radiation","source":"agi/particle_voice/nn/kernels/articulatory/lip_radiation.js","import":"/agi/particle_voice/nn/kernels/articulatory/lip_radiation.js","sourceHash":"10e584e9e268e4f325ffe169025591a1516586c2a40788083d0eddd2b222be06","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/articulatory/lip_radiation.js#0000:lipRadiationShader","exportIndex":0,"name":"lipRadiationShader","kind":"function","signature":"lipRadiationShader()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/lip_radiation.md","moduleTitle":"particle_voice/nn/kernels/articulatory/lip_radiation","source":"agi/particle_voice/nn/kernels/articulatory/lip_radiation.js","import":"/agi/particle_voice/nn/kernels/articulatory/lip_radiation.js","sourceHash":"10e584e9e268e4f325ffe169025591a1516586c2a40788083d0eddd2b222be06","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/articulatory/lip_radiation.js#0001:LIP_RADIATION_ENTRY_POINT","exportIndex":1,"name":"LIP_RADIATION_ENTRY_POINT","kind":"constant","signature":"LIP_RADIATION_ENTRY_POINT","summary":"lip_radiation.js — Phase 2 ParticleNN articulatory kernel. Idealized lip-radiation filter: a first difference, `radiated[n] = raw[n] - raw[n-1]`, matching `risk/KellyLochbaumWaveguide.js` (R6)'s `step()` exactly (`radiated = outputRaw - prevOutputRaw`) — the differentiating characteristic of radiation from an open end. Despite being defined via a one-sample recurrence, this is embarrassingly parallel: `raw[n-1]` for `n > 0` is just the previous element of the *same* input buffer (already fully computed, no accumulation), and only `n = 0` needs externally-supplied state (`prev_last_sample`, the previous chunk's final raw sample) — so every output sample can be computed independently with no sequential loop at all."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/lip_radiation.md","moduleTitle":"particle_voice/nn/kernels/articulatory/lip_radiation","source":"agi/particle_voice/nn/kernels/articulatory/lip_radiation.js","import":"/agi/particle_voice/nn/kernels/articulatory/lip_radiation.js","sourceHash":"10e584e9e268e4f325ffe169025591a1516586c2a40788083d0eddd2b222be06","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/articulatory/lip_radiation.js#0002:LIP_RADIATION_WORKGROUP_SIZE","exportIndex":2,"name":"LIP_RADIATION_WORKGROUP_SIZE","kind":"constant","signature":"LIP_RADIATION_WORKGROUP_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/nasal_junction.md","moduleTitle":"particle_voice/nn/kernels/articulatory/nasal_junction","source":"agi/particle_voice/nn/kernels/articulatory/nasal_junction.js","import":"/agi/particle_voice/nn/kernels/articulatory/nasal_junction.js","sourceHash":"734baaf1aa299d5c3bd78778865ce973467b8a232da59f37376895aff24d4d59","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/kernels/articulatory/nasal_junction.js","title":"particle_voice/nn/kernels/articulatory/nasal_junction","summary":"nasal_junction.js — Phase 2 ParticleNN articulatory kernel. Production nasal branch: a second, independent Kelly-Lochbaum tube chain generalizing risk/KellyLochbaumWaveguide.js (R6)'s proven createNasalBranch().step() to run a whole sample chunk times N instances on GPU, using the exact same one-thread-per-section / double-buffered-workgroup-memory / sequential-workgroupBarrier-per-sample structure as tract_waveguide.js (see that file's docstring for the full parallelization rationale, not repeated here). Differences from tract_waveguide.js's oral tract, matching R6's createNasalBranch() exactly: - The near end has no reflection term at all: nextRight[0] = inputFlow (R6's oral tract instead does sourceFlow + glottalReflection * left[0]) — the nasal branch is driven directly by a coupled fraction of an oral-tract tap signal, not its own glottal source. - The far end uses a single nostrilReflection coefficient (R6's lipReflection equivalent). `radiation_difference` selects whether the first-difference radiation filter is applied: 1.0 for R6's flow-domain parity path, 0.0 for ParticleTract's LF-derivative-domain production path. This kernel does not itself compute the oral-tract tap signal fed into inputFlow — that is tract_waveguide.js's nasal_tap output block, and inputFlow is an ordinary per-instance per-sample input buffer here, matching every other Phase 2 kernel's convention of not silently reaching into another kernel's state. input_gain is the velum/nasal COUPLING fraction. R6's createNasalBranch() has no such parameter because its caller pre-multiplied the tap signal (nasalCoupling * nasalTapSignal) before calling step(). On GPU that would force either a whole extra scaling kernel or a CPU round-trip in the middle of an otherwise GPU-resident chunk, so the scalar lives here instead — exactly where this file's own docstring already says the branch is \"driven by a coupled fraction of an oral-tract tap signal\". input_gain = 1.0 reproduces R6's step() bit-for-bit, which is what the parity test in phase2-dsp.html pins.","exportCount":5}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/nasal_junction.md","moduleTitle":"particle_voice/nn/kernels/articulatory/nasal_junction","source":"agi/particle_voice/nn/kernels/articulatory/nasal_junction.js","import":"/agi/particle_voice/nn/kernels/articulatory/nasal_junction.js","sourceHash":"734baaf1aa299d5c3bd78778865ce973467b8a232da59f37376895aff24d4d59","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/articulatory/nasal_junction.js#0000:nasalJunctionOutputLayout","exportIndex":0,"name":"nasalJunctionOutputLayout","kind":"function","signature":"nasalJunctionOutputLayout(numSections, numSamples, numInstances)","summary":"Shared flat-output-buffer layout — mirrors tractWaveguideOutputLayout() exactly (same three persisted-state pieces plus the radiated signal), kept as its own function per kernel so a future layout change to one tract type can never silently affect the other."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/nasal_junction.md","moduleTitle":"particle_voice/nn/kernels/articulatory/nasal_junction","source":"agi/particle_voice/nn/kernels/articulatory/nasal_junction.js","import":"/agi/particle_voice/nn/kernels/articulatory/nasal_junction.js","sourceHash":"734baaf1aa299d5c3bd78778865ce973467b8a232da59f37376895aff24d4d59","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/articulatory/nasal_junction.js#0001:nasalJunctionShader","exportIndex":1,"name":"nasalJunctionShader","kind":"function","signature":"nasalJunctionShader()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/nasal_junction.md","moduleTitle":"particle_voice/nn/kernels/articulatory/nasal_junction","source":"agi/particle_voice/nn/kernels/articulatory/nasal_junction.js","import":"/agi/particle_voice/nn/kernels/articulatory/nasal_junction.js","sourceHash":"734baaf1aa299d5c3bd78778865ce973467b8a232da59f37376895aff24d4d59","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/articulatory/nasal_junction.js#0002:NASAL_JUNCTION_MAX_SECTIONS","exportIndex":2,"name":"NASAL_JUNCTION_MAX_SECTIONS","kind":"constant","signature":"NASAL_JUNCTION_MAX_SECTIONS","summary":"nasal_junction.js — Phase 2 ParticleNN articulatory kernel. Production nasal branch: a second, independent Kelly-Lochbaum tube chain generalizing risk/KellyLochbaumWaveguide.js (R6)'s proven createNasalBranch().step() to run a whole sample chunk times N instances on GPU, using the exact same one-thread-per-section / double-buffered-workgroup-memory / sequential-workgroupBarrier-per-sample structure as tract_waveguide.js (see that file's docstring for the full parallelization rationale, not repeated here). Differences from tract_waveguide.js's oral tract, matching R6's createNasalBranch() exactly: - The near end has no reflection term at all: nextRight[0] = inputFlow (R6's oral tract instead does sourceFlow + glottalReflection * left[0]) — the nasal branch is driven directly by a coupled fraction of an oral-tract tap signal, not its own glottal source. - The far end uses a single nostrilReflection coefficient (R6's lipReflection equivalent). `radiation_difference` selects whether the first-difference radiation filter is applied: 1.0 for R6's flow-domain parity path, 0.0 for ParticleTract's LF-derivative-domain production path. This kernel does not itself compute the oral-tract tap signal fed into inputFlow — that is tract_waveguide.js's nasal_tap output block, and inputFlow is an ordinary per-instance per-sample input buffer here, matching every other Phase 2 kernel's convention of not silently reaching into another kernel's state. input_gain is the velum/nasal COUPLING fraction. R6's createNasalBranch() has no such parameter because its caller pre-multiplied the tap signal (nasalCoupling * nasalTapSignal) before calling step(). On GPU that would force either a whole extra scaling kernel or a CPU round-trip in the middle of an otherwise GPU-resident chunk, so the scalar lives here instead — exactly where this file's own docstring already says the branch is \"driven by a coupled fraction of an oral-tract tap signal\". input_gain = 1.0 reproduces R6's step() bit-for-bit, which is what the parity test in phase2-dsp.html pins."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/nasal_junction.md","moduleTitle":"particle_voice/nn/kernels/articulatory/nasal_junction","source":"agi/particle_voice/nn/kernels/articulatory/nasal_junction.js","import":"/agi/particle_voice/nn/kernels/articulatory/nasal_junction.js","sourceHash":"734baaf1aa299d5c3bd78778865ce973467b8a232da59f37376895aff24d4d59","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/articulatory/nasal_junction.js#0003:NASAL_JUNCTION_ENTRY_POINT","exportIndex":3,"name":"NASAL_JUNCTION_ENTRY_POINT","kind":"constant","signature":"NASAL_JUNCTION_ENTRY_POINT","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/nasal_junction.md","moduleTitle":"particle_voice/nn/kernels/articulatory/nasal_junction","source":"agi/particle_voice/nn/kernels/articulatory/nasal_junction.js","import":"/agi/particle_voice/nn/kernels/articulatory/nasal_junction.js","sourceHash":"734baaf1aa299d5c3bd78778865ce973467b8a232da59f37376895aff24d4d59","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/articulatory/nasal_junction.js#0004:NASAL_JUNCTION_WORKGROUP_SIZE","exportIndex":4,"name":"NASAL_JUNCTION_WORKGROUP_SIZE","kind":"constant","signature":"NASAL_JUNCTION_WORKGROUP_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/physiology_feedback_reduce.md","moduleTitle":"particle_voice/nn/kernels/articulatory/physiology_feedback_reduce","source":"agi/particle_voice/nn/kernels/articulatory/physiology_feedback_reduce.js","import":"/agi/particle_voice/nn/kernels/articulatory/physiology_feedback_reduce.js","sourceHash":"19003236581791c2a69dadf65ea6522e6b74738663abdc10aec1fc76f5f0b08c","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/kernels/articulatory/physiology_feedback_reduce.js","title":"particle_voice/nn/kernels/articulatory/physiology_feedback_reduce","summary":"physiology_feedback_reduce.js — Phase 2 ParticleNN articulatory kernel. Reduces a high-rate (32 kHz per `ARCHITECTURE.md` §3) per-sample waveguide/tract signal (e.g. `tract_waveguide.js`'s radiated output, or a raw right/left traveling-wave channel) down to one (mean, RMS) pair per fixed-size frame — the `PhysiologyFeedbackState` `ARCHITECTURE.md` §4 names as \"a reduced/decimated feedback signal from the acoustic solve back toward the model\", so the model's control-rate loop (100 Hz per `ARCHITECTURE.md` §3) can see a compact summary of what the acoustic solver actually produced last frame without reading back and processing the full high-rate PCM itself. `samples_per_frame` is expected to be one of the plan's fixed legal chunk buckets (first 12/16/24 frames, steady 32/48/64 frames at the activity frame size, or a caller-chosen block size for this specific feedback path) — this kernel does not itself enforce bucket membership, it just requires `num_samples == num_frames * samples_per_frame` exactly (no partial trailing frame), matching every other Phase 2 kernel's expectation that framing/bucketing is decided by the caller (`stft.js`/`overlap_add.js` take the same stance). One thread per (instance, frame) pair does its own small sequential reduction over `samples_per_frame` samples — deliberately not a parallel-reduction tree, since typical frame sizes here (tens to a few hundred samples) are small enough that per-thread sequential summation is simpler and cheaper than the synchronization a tree reduction would need, the same reasoning `breath_reservoir.js`'s per-instance single-thread recurrence gives for its own necessarily-sequential loop (this kernel's reduction isn't sequential for correctness, just small enough that a loop is the pragmatic choice).","exportCount":4}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/physiology_feedback_reduce.md","moduleTitle":"particle_voice/nn/kernels/articulatory/physiology_feedback_reduce","source":"agi/particle_voice/nn/kernels/articulatory/physiology_feedback_reduce.js","import":"/agi/particle_voice/nn/kernels/articulatory/physiology_feedback_reduce.js","sourceHash":"19003236581791c2a69dadf65ea6522e6b74738663abdc10aec1fc76f5f0b08c","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/articulatory/physiology_feedback_reduce.js#0000:physiologyFeedbackReduceOutputLayout","exportIndex":0,"name":"physiologyFeedbackReduceOutputLayout","kind":"function","signature":"physiologyFeedbackReduceOutputLayout(numFrames, numInstances)","summary":"Packed-output layout: [mean block (num_instances*num_frames)] then [rms block (num_instances*num_frames)] — kept as its own function so the WGSL offsets and any JS-side reader stay in lockstep, matching `tractWaveguideOutputLayout()`'s precedent."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/physiology_feedback_reduce.md","moduleTitle":"particle_voice/nn/kernels/articulatory/physiology_feedback_reduce","source":"agi/particle_voice/nn/kernels/articulatory/physiology_feedback_reduce.js","import":"/agi/particle_voice/nn/kernels/articulatory/physiology_feedback_reduce.js","sourceHash":"19003236581791c2a69dadf65ea6522e6b74738663abdc10aec1fc76f5f0b08c","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/articulatory/physiology_feedback_reduce.js#0001:physiologyFeedbackReduceShader","exportIndex":1,"name":"physiologyFeedbackReduceShader","kind":"function","signature":"physiologyFeedbackReduceShader()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/physiology_feedback_reduce.md","moduleTitle":"particle_voice/nn/kernels/articulatory/physiology_feedback_reduce","source":"agi/particle_voice/nn/kernels/articulatory/physiology_feedback_reduce.js","import":"/agi/particle_voice/nn/kernels/articulatory/physiology_feedback_reduce.js","sourceHash":"19003236581791c2a69dadf65ea6522e6b74738663abdc10aec1fc76f5f0b08c","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/articulatory/physiology_feedback_reduce.js#0002:PHYSIOLOGY_FEEDBACK_REDUCE_ENTRY_POINT","exportIndex":2,"name":"PHYSIOLOGY_FEEDBACK_REDUCE_ENTRY_POINT","kind":"constant","signature":"PHYSIOLOGY_FEEDBACK_REDUCE_ENTRY_POINT","summary":"physiology_feedback_reduce.js — Phase 2 ParticleNN articulatory kernel. Reduces a high-rate (32 kHz per `ARCHITECTURE.md` §3) per-sample waveguide/tract signal (e.g. `tract_waveguide.js`'s radiated output, or a raw right/left traveling-wave channel) down to one (mean, RMS) pair per fixed-size frame — the `PhysiologyFeedbackState` `ARCHITECTURE.md` §4 names as \"a reduced/decimated feedback signal from the acoustic solve back toward the model\", so the model's control-rate loop (100 Hz per `ARCHITECTURE.md` §3) can see a compact summary of what the acoustic solver actually produced last frame without reading back and processing the full high-rate PCM itself. `samples_per_frame` is expected to be one of the plan's fixed legal chunk buckets (first 12/16/24 frames, steady 32/48/64 frames at the activity frame size, or a caller-chosen block size for this specific feedback path) — this kernel does not itself enforce bucket membership, it just requires `num_samples == num_frames * samples_per_frame` exactly (no partial trailing frame), matching every other Phase 2 kernel's expectation that framing/bucketing is decided by the caller (`stft.js`/`overlap_add.js` take the same stance). One thread per (instance, frame) pair does its own small sequential reduction over `samples_per_frame` samples — deliberately not a parallel-reduction tree, since typical frame sizes here (tens to a few hundred samples) are small enough that per-thread sequential summation is simpler and cheaper than the synchronization a tree reduction would need, the same reasoning `breath_reservoir.js`'s per-instance single-thread recurrence gives for its own necessarily-sequential loop (this kernel's reduction isn't sequential for correctness, just small enough that a loop is the pragmatic choice)."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/physiology_feedback_reduce.md","moduleTitle":"particle_voice/nn/kernels/articulatory/physiology_feedback_reduce","source":"agi/particle_voice/nn/kernels/articulatory/physiology_feedback_reduce.js","import":"/agi/particle_voice/nn/kernels/articulatory/physiology_feedback_reduce.js","sourceHash":"19003236581791c2a69dadf65ea6522e6b74738663abdc10aec1fc76f5f0b08c","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/articulatory/physiology_feedback_reduce.js#0003:PHYSIOLOGY_FEEDBACK_REDUCE_WORKGROUP_SIZE","exportIndex":3,"name":"PHYSIOLOGY_FEEDBACK_REDUCE_WORKGROUP_SIZE","kind":"constant","signature":"PHYSIOLOGY_FEEDBACK_REDUCE_WORKGROUP_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/signal_add.md","moduleTitle":"particle_voice/nn/kernels/articulatory/signal_add","source":"agi/particle_voice/nn/kernels/articulatory/signal_add.js","import":"/agi/particle_voice/nn/kernels/articulatory/signal_add.js","sourceHash":"63ef0eb74c68d996aad31679a2b66ace574c90f5c541d582437772da18c423b3","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/kernels/articulatory/signal_add.js","title":"particle_voice/nn/kernels/articulatory/signal_add","summary":"signal_add.js — Phase 2 ParticleNN articulatory kernel. Elementwise sum of two equal-shaped signals: `out[i] = a[i] + b[i]`. `ParticleTract.js` needs exactly this twice, at the two points its signal graph merges: 1. **Glottal source mix** — `voicing` (`glottal_lf.js`) + `aspiration` (`constriction_noise.js` with a slowly-varying envelope) into the `source_flow` that `tract_waveguide.js` injects at the glottis. 2. **Output mix** — the oral tract's `radiated` signal plus the nasal branch's `radiated` signal (`nasal_junction.js`, already scaled by its own `input_gain` coupling), producing the final PCM. Note that FRICATION is deliberately NOT a third term here. Turbulence belongs at the constriction, not the glottis, so it is fed to `tract_waveguide.js`'s `constriction_noise` input and injected at `constriction_index` — only the cavity in front of the constriction then filters it, which is what makes a fricative sound like a fricative rather than a whisper. That is why this kernel takes two inputs and not three. This kernel exists because nothing in the registry could do it. There was no elementwise-add op, and `speech/crossfade.js` — the only existing two-signal combiner — is NOT a mixer: it sweeps its ratio across the buffer (`t = i/(length-1)`), making it a one-shot transition. Using it here would ramp the voicing/aspiration balance from 0 to 1 across every chunk. There are no gain inputs, deliberately: every amplitude this could scale is already a first-class parameter of the kernel that PRODUCES the term — `glottal_lf.js`'s per-instance `ee`, `constriction_noise.js`'s per-sample `amplitude_envelope`, and `nasal_junction.js`'s `input_gain`. Duplicating that control here would invite the two copies to disagree. Flat-parallel with no cross-sample dependency (one thread per output element), matching `lip_radiation.js`/`constriction_noise.js`. Instance layout is implicit: the caller passes `total_elements = num_instances * num_samples` and both inputs share the same `[num_instances, num_samples]` row-major shape, so no per-instance indexing is needed at all.","exportCount":3}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/signal_add.md","moduleTitle":"particle_voice/nn/kernels/articulatory/signal_add","source":"agi/particle_voice/nn/kernels/articulatory/signal_add.js","import":"/agi/particle_voice/nn/kernels/articulatory/signal_add.js","sourceHash":"63ef0eb74c68d996aad31679a2b66ace574c90f5c541d582437772da18c423b3","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/articulatory/signal_add.js#0000:signalAddShader","exportIndex":0,"name":"signalAddShader","kind":"function","signature":"signalAddShader()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/signal_add.md","moduleTitle":"particle_voice/nn/kernels/articulatory/signal_add","source":"agi/particle_voice/nn/kernels/articulatory/signal_add.js","import":"/agi/particle_voice/nn/kernels/articulatory/signal_add.js","sourceHash":"63ef0eb74c68d996aad31679a2b66ace574c90f5c541d582437772da18c423b3","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/articulatory/signal_add.js#0001:SIGNAL_ADD_ENTRY_POINT","exportIndex":1,"name":"SIGNAL_ADD_ENTRY_POINT","kind":"constant","signature":"SIGNAL_ADD_ENTRY_POINT","summary":"signal_add.js — Phase 2 ParticleNN articulatory kernel. Elementwise sum of two equal-shaped signals: `out[i] = a[i] + b[i]`. `ParticleTract.js` needs exactly this twice, at the two points its signal graph merges: 1. **Glottal source mix** — `voicing` (`glottal_lf.js`) + `aspiration` (`constriction_noise.js` with a slowly-varying envelope) into the `source_flow` that `tract_waveguide.js` injects at the glottis. 2. **Output mix** — the oral tract's `radiated` signal plus the nasal branch's `radiated` signal (`nasal_junction.js`, already scaled by its own `input_gain` coupling), producing the final PCM. Note that FRICATION is deliberately NOT a third term here. Turbulence belongs at the constriction, not the glottis, so it is fed to `tract_waveguide.js`'s `constriction_noise` input and injected at `constriction_index` — only the cavity in front of the constriction then filters it, which is what makes a fricative sound like a fricative rather than a whisper. That is why this kernel takes two inputs and not three. This kernel exists because nothing in the registry could do it. There was no elementwise-add op, and `speech/crossfade.js` — the only existing two-signal combiner — is NOT a mixer: it sweeps its ratio across the buffer (`t = i/(length-1)`), making it a one-shot transition. Using it here would ramp the voicing/aspiration balance from 0 to 1 across every chunk. There are no gain inputs, deliberately: every amplitude this could scale is already a first-class parameter of the kernel that PRODUCES the term — `glottal_lf.js`'s per-instance `ee`, `constriction_noise.js`'s per-sample `amplitude_envelope`, and `nasal_junction.js`'s `input_gain`. Duplicating that control here would invite the two copies to disagree. Flat-parallel with no cross-sample dependency (one thread per output element), matching `lip_radiation.js`/`constriction_noise.js`. Instance layout is implicit: the caller passes `total_elements = num_instances * num_samples` and both inputs share the same `[num_instances, num_samples]` row-major shape, so no per-instance indexing is needed at all."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/signal_add.md","moduleTitle":"particle_voice/nn/kernels/articulatory/signal_add","source":"agi/particle_voice/nn/kernels/articulatory/signal_add.js","import":"/agi/particle_voice/nn/kernels/articulatory/signal_add.js","sourceHash":"63ef0eb74c68d996aad31679a2b66ace574c90f5c541d582437772da18c423b3","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/articulatory/signal_add.js#0002:SIGNAL_ADD_WORKGROUP_SIZE","exportIndex":2,"name":"SIGNAL_ADD_WORKGROUP_SIZE","kind":"constant","signature":"SIGNAL_ADD_WORKGROUP_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/tract_transfer.md","moduleTitle":"particle_voice/nn/kernels/articulatory/tract_transfer","source":"agi/particle_voice/nn/kernels/articulatory/tract_transfer.js","import":"/agi/particle_voice/nn/kernels/articulatory/tract_transfer.js","sourceHash":"847c47587a8d0f908359c38795230967cd94abde570e5b705bb35eab1adda1c7","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/kernels/articulatory/tract_transfer.js","title":"particle_voice/nn/kernels/articulatory/tract_transfer","summary":"tract_transfer.js — Phase 2 ParticleNN articulatory kernel. Converts a per-instance tube cross-sectional area profile into Kelly- Lochbaum junction reflection coefficients — the exact formula `risk/KellyLochbaumWaveguide.js` (R6)'s proven `reflectionCoefficients()` uses: `k[i] = (A[i] - A[i+1]) / (A[i] + A[i+1] + 1e-6)`. `tract_waveguide.js`'s own docstring notes junction coefficients are \"computed CPU-side by the caller... not recomputed here\", matching `mel_filterbank.js`'s precedent for a fixed-shape precomputation — that is still correct for a STATIC area profile. This kernel exists for the case the plan's `NeuralPhysiologyState.TractGestureHead` implies: an area profile predicted fresh every control frame (100 Hz per `ARCHITECTURE.md` §3), which would otherwise force a GPU-to-CPU-to-GPU round trip every frame just to run one elementwise division — exactly the per-frame readback stall the plan's Production Contract and `engine/core/gpu/VGPUReadbackQueue.js`-style staged-readback convention are meant to avoid. Keeping the whole `TractGestureHead -> junction_k -> tract_waveguide.js` path on GPU is what \"single owned execution path\" requires once area profiles become per-frame instead of per-utterance. Purely elementwise across `(instance, junction)` pairs — no inter-junction dependency at all (unlike `tract_waveguide.js`'s per-sample recurrence), so this is one thread per output element with no workgroup memory or barriers needed.","exportCount":4}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/tract_transfer.md","moduleTitle":"particle_voice/nn/kernels/articulatory/tract_transfer","source":"agi/particle_voice/nn/kernels/articulatory/tract_transfer.js","import":"/agi/particle_voice/nn/kernels/articulatory/tract_transfer.js","sourceHash":"847c47587a8d0f908359c38795230967cd94abde570e5b705bb35eab1adda1c7","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/articulatory/tract_transfer.js#0000:tractTransferShader","exportIndex":0,"name":"tractTransferShader","kind":"function","signature":"tractTransferShader()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/tract_transfer.md","moduleTitle":"particle_voice/nn/kernels/articulatory/tract_transfer","source":"agi/particle_voice/nn/kernels/articulatory/tract_transfer.js","import":"/agi/particle_voice/nn/kernels/articulatory/tract_transfer.js","sourceHash":"847c47587a8d0f908359c38795230967cd94abde570e5b705bb35eab1adda1c7","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/articulatory/tract_transfer.js#0001:TRACT_TRANSFER_ENTRY_POINT","exportIndex":1,"name":"TRACT_TRANSFER_ENTRY_POINT","kind":"constant","signature":"TRACT_TRANSFER_ENTRY_POINT","summary":"tract_transfer.js — Phase 2 ParticleNN articulatory kernel. Converts a per-instance tube cross-sectional area profile into Kelly- Lochbaum junction reflection coefficients — the exact formula `risk/KellyLochbaumWaveguide.js` (R6)'s proven `reflectionCoefficients()` uses: `k[i] = (A[i] - A[i+1]) / (A[i] + A[i+1] + 1e-6)`. `tract_waveguide.js`'s own docstring notes junction coefficients are \"computed CPU-side by the caller... not recomputed here\", matching `mel_filterbank.js`'s precedent for a fixed-shape precomputation — that is still correct for a STATIC area profile. This kernel exists for the case the plan's `NeuralPhysiologyState.TractGestureHead` implies: an area profile predicted fresh every control frame (100 Hz per `ARCHITECTURE.md` §3), which would otherwise force a GPU-to-CPU-to-GPU round trip every frame just to run one elementwise division — exactly the per-frame readback stall the plan's Production Contract and `engine/core/gpu/VGPUReadbackQueue.js`-style staged-readback convention are meant to avoid. Keeping the whole `TractGestureHead -> junction_k -> tract_waveguide.js` path on GPU is what \"single owned execution path\" requires once area profiles become per-frame instead of per-utterance. Purely elementwise across `(instance, junction)` pairs — no inter-junction dependency at all (unlike `tract_waveguide.js`'s per-sample recurrence), so this is one thread per output element with no workgroup memory or barriers needed."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/tract_transfer.md","moduleTitle":"particle_voice/nn/kernels/articulatory/tract_transfer","source":"agi/particle_voice/nn/kernels/articulatory/tract_transfer.js","import":"/agi/particle_voice/nn/kernels/articulatory/tract_transfer.js","sourceHash":"847c47587a8d0f908359c38795230967cd94abde570e5b705bb35eab1adda1c7","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/articulatory/tract_transfer.js#0002:TRACT_TRANSFER_WORKGROUP_SIZE","exportIndex":2,"name":"TRACT_TRANSFER_WORKGROUP_SIZE","kind":"constant","signature":"TRACT_TRANSFER_WORKGROUP_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/tract_transfer.md","moduleTitle":"particle_voice/nn/kernels/articulatory/tract_transfer","source":"agi/particle_voice/nn/kernels/articulatory/tract_transfer.js","import":"/agi/particle_voice/nn/kernels/articulatory/tract_transfer.js","sourceHash":"847c47587a8d0f908359c38795230967cd94abde570e5b705bb35eab1adda1c7","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/articulatory/tract_transfer.js#0003:TRACT_TRANSFER_EPSILON","exportIndex":3,"name":"TRACT_TRANSFER_EPSILON","kind":"constant","signature":"TRACT_TRANSFER_EPSILON","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/tract_waveguide.md","moduleTitle":"particle_voice/nn/kernels/articulatory/tract_waveguide","source":"agi/particle_voice/nn/kernels/articulatory/tract_waveguide.js","import":"/agi/particle_voice/nn/kernels/articulatory/tract_waveguide.js","sourceHash":"1c9857a4ccdcae11da751c66f3d5172ad52aec375a70248ac33ec45f438f89ca","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/kernels/articulatory/tract_waveguide.js","title":"particle_voice/nn/kernels/articulatory/tract_waveguide","summary":"tract_waveguide.js — Phase 2 ParticleNN articulatory kernel. Production Kelly-Lochbaum single-delay-per-section digital waveguide vocal tract, generalizing `risk/KellyLochbaumWaveguide.js` (R6)'s proven `createVocalTract().step()` recurrence to run entirely on GPU across a whole chunk of samples and N simultaneous voice/capsule instances. Junction reflection coefficients (`k[i] = (A_i - A_{i+1}) / (A_i + A_{i+1})`) are computed CPU-side by the caller via `risk/KellyLochbaumWaveguide.js`'s `reflectionCoefficients` (a fixed-shape, typically-small computation — same rationale `mel_filterbank.js` gives for precomputing its filter matrix CPU-side rather than reproducing it in WGSL) and passed in as `junction_k`, not recomputed here. Constriction noise injection (`constriction_index` + `constriction_noise`) and the nasal TAP signal (`nasal_tap_index`) ARE implemented, as faithful ports of R6's proven `step()` options — they were deferred when this kernel was first written, but `ParticleTract.js` cannot produce real fricatives or real nasal coupling without them: - `constriction_index >= 0` adds that sample's `constriction_noise` value to the RIGHT-going wave entering junction `constriction_index`, exactly as R6's `if (i === constrictionIndex) incomingRight += constrictionNoiseSample`. Injecting at the junction (rather than mixing noise into `source_flow` at the glottis) is what makes a fricative a fricative: only the cavity IN FRONT of the constriction filters the turbulence. - `nasal_tap_index >= 0` writes `right[i] + left[i]` for that section into the packed output's `nasal_tap` block every sample, giving `nasal_junction.js` an anatomically-meaningful `input_flow` to be driven by. Matching R6 exactly, the tap is a READ-ONLY observation: the oral tract is not itself perturbed by it. That remains a simplification versus a rigorous 3-port scattering junction (R6's own docstring says the same); it is enough for controllable, stable nasal coupling, and the honest limitation is recorded here rather than overstated. Both are opt-in: a negative index disables that feature entirely, so callers that want neither pass `-1` and get bit-identical behavior to this kernel before they existed. ## `radiation_difference` must match what the SOURCE already is Lip radiation is approximately a differentiator, so R6's `step()` ends with `radiated = outputRaw - prevOutputRaw`. That is correct when the excitation is glottal FLOW, which is what R6's `GlottalSource.js` raised-cosine pulse produced. It is WRONG when the excitation is already the flow derivative. `glottal_lf.js` is explicitly the LF glottal flow DERIVATIVE model, so feeding it in and then differencing again yields the SECOND derivative: +6 dB/octave of spurious tilt (audibly reedy/buzzy) and a far spikier waveform, whose large crest factor then drives any downstream limiter into distorting every single pitch pulse. Injecting a derivative source and skipping the difference is what gives the correct radiated pressure, and is why formant synthesizers use the LF derivative directly. `radiation_difference` therefore has to agree with the caller's source: 1.0 for a flow source (R6 parity), 0.0 for `glottal_lf.js`. There is no safe default that suits both, so it is an explicit parameter rather than a built-in assumption. ## `wall_loss`: the tube was perfectly lossless, and that is audible Scattering at a Kelly-Lochbaum junction conserves energy exactly, so with only the glottis and lips absorbing anything, the formants of this tube had very high Q. Real vocal tracts lose energy continuously to yielding walls plus viscous and thermal effects, which is what gives formants their bandwidth (roughly 50-100 Hz for F1, more higher up). A resonator with too little damping rings after every excitation, and a whole tube of them reads as a metallic, synthetic buzz laid over the speech no matter how accurate the formant FREQUENCIES are — accurate centres with no bandwidth still does not sound human. `wall_loss` multiplies each traveling wave once per section per sample, so a wave crossing the whole tract is attenuated `wall_loss^num_sections`. Because it is applied per section rather than once at a boundary, the loss accumulates with distance travelled, which is the correct behaviour for a distributed effect. It is a frequency-INDEPENDENT approximation of a loss that really does grow with frequency; the honest limitation is recorded here rather than overstated, and a one-pole filter per junction would be the refinement. 1.0 restores the lossless tube exactly, which is what the R6 parity test uses. One digital-waveguide step is inherently sequential in time (sample n depends on sample n-1's right/left traveling-wave state), but the N-1 junction updates *within* one sample step are independent of each other (each reads only the previous sample's `right`/`left`, matching R6's `step()` computing a full `nextRight`/`nextLeft` array before committing it) — so this kernel assigns one thread per tube section (`local_invocation_id.x`), keeps the whole tract's traveling-wave state in workgroup memory (double-buffered, since every junction read is the *previous* sample's state), and walks the chunk's samples sequentially with a `workgroupBarrier()` between samples. `workgroup_id.x` selects which of up to `num_instances` simultaneous tracts to process, matching every other Phase 2 kernel's per-instance batching convention (`breath_reservoir.js`, `lip_radiation.js`). `MAX_SECTIONS = 64` is a compile-time workgroup-memory cap, comfortably above R6's proven `NUM_SECTIONS = 32` oral / `NASAL_SECTIONS = 16` nasal tract discretizations (`risk/VoiceBoxWaveguideProbe.js`) — `num_sections` over this cap is a caller error, not a silently-truncated tract. To keep this kernel within the project's \"N read-only storage inputs then one read_write storage output\" binding convention (`KernelRegistry.bindGroupLayoutEntriesFor`), all four pieces of kernel-produced data (`radiated_out`, the two persisted traveling-wave state arrays, and the persisted previous-lip-output scalar needed for the next chunk's radiation first-difference) are packed into ONE flat output buffer at fixed uniform-computed offsets, documented in the struct comments below, rather than needing four separate output bindings.","exportCount":5}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/tract_waveguide.md","moduleTitle":"particle_voice/nn/kernels/articulatory/tract_waveguide","source":"agi/particle_voice/nn/kernels/articulatory/tract_waveguide.js","import":"/agi/particle_voice/nn/kernels/articulatory/tract_waveguide.js","sourceHash":"1c9857a4ccdcae11da751c66f3d5172ad52aec375a70248ac33ec45f438f89ca","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/articulatory/tract_waveguide.js#0000:tractWaveguideOutputLayout","exportIndex":0,"name":"tractWaveguideOutputLayout","kind":"function","signature":"tractWaveguideOutputLayout(numSections, numSamples, numInstances)","summary":"Compute the flat-output-buffer layout `tract_waveguide.js` writes to and `TractWaveguideModel.js` (Phase 3+ consumer) must read from, given `numSections`/`numSamples`/`numInstances` — kept as one shared function so the WGSL offsets below and any future JS-side reader can never drift apart."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/tract_waveguide.md","moduleTitle":"particle_voice/nn/kernels/articulatory/tract_waveguide","source":"agi/particle_voice/nn/kernels/articulatory/tract_waveguide.js","import":"/agi/particle_voice/nn/kernels/articulatory/tract_waveguide.js","sourceHash":"1c9857a4ccdcae11da751c66f3d5172ad52aec375a70248ac33ec45f438f89ca","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/articulatory/tract_waveguide.js#0001:tractWaveguideShader","exportIndex":1,"name":"tractWaveguideShader","kind":"function","signature":"tractWaveguideShader()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/tract_waveguide.md","moduleTitle":"particle_voice/nn/kernels/articulatory/tract_waveguide","source":"agi/particle_voice/nn/kernels/articulatory/tract_waveguide.js","import":"/agi/particle_voice/nn/kernels/articulatory/tract_waveguide.js","sourceHash":"1c9857a4ccdcae11da751c66f3d5172ad52aec375a70248ac33ec45f438f89ca","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/articulatory/tract_waveguide.js#0002:TRACT_WAVEGUIDE_MAX_SECTIONS","exportIndex":2,"name":"TRACT_WAVEGUIDE_MAX_SECTIONS","kind":"constant","signature":"TRACT_WAVEGUIDE_MAX_SECTIONS","summary":"tract_waveguide.js — Phase 2 ParticleNN articulatory kernel. Production Kelly-Lochbaum single-delay-per-section digital waveguide vocal tract, generalizing `risk/KellyLochbaumWaveguide.js` (R6)'s proven `createVocalTract().step()` recurrence to run entirely on GPU across a whole chunk of samples and N simultaneous voice/capsule instances. Junction reflection coefficients (`k[i] = (A_i - A_{i+1}) / (A_i + A_{i+1})`) are computed CPU-side by the caller via `risk/KellyLochbaumWaveguide.js`'s `reflectionCoefficients` (a fixed-shape, typically-small computation — same rationale `mel_filterbank.js` gives for precomputing its filter matrix CPU-side rather than reproducing it in WGSL) and passed in as `junction_k`, not recomputed here. Constriction noise injection (`constriction_index` + `constriction_noise`) and the nasal TAP signal (`nasal_tap_index`) ARE implemented, as faithful ports of R6's proven `step()` options — they were deferred when this kernel was first written, but `ParticleTract.js` cannot produce real fricatives or real nasal coupling without them: - `constriction_index >= 0` adds that sample's `constriction_noise` value to the RIGHT-going wave entering junction `constriction_index`, exactly as R6's `if (i === constrictionIndex) incomingRight += constrictionNoiseSample`. Injecting at the junction (rather than mixing noise into `source_flow` at the glottis) is what makes a fricative a fricative: only the cavity IN FRONT of the constriction filters the turbulence. - `nasal_tap_index >= 0` writes `right[i] + left[i]` for that section into the packed output's `nasal_tap` block every sample, giving `nasal_junction.js` an anatomically-meaningful `input_flow` to be driven by. Matching R6 exactly, the tap is a READ-ONLY observation: the oral tract is not itself perturbed by it. That remains a simplification versus a rigorous 3-port scattering junction (R6's own docstring says the same); it is enough for controllable, stable nasal coupling, and the honest limitation is recorded here rather than overstated. Both are opt-in: a negative index disables that feature entirely, so callers that want neither pass `-1` and get bit-identical behavior to this kernel before they existed. ## `radiation_difference` must match what the SOURCE already is Lip radiation is approximately a differentiator, so R6's `step()` ends with `radiated = outputRaw - prevOutputRaw`. That is correct when the excitation is glottal FLOW, which is what R6's `GlottalSource.js` raised-cosine pulse produced. It is WRONG when the excitation is already the flow derivative. `glottal_lf.js` is explicitly the LF glottal flow DERIVATIVE model, so feeding it in and then differencing again yields the SECOND derivative: +6 dB/octave of spurious tilt (audibly reedy/buzzy) and a far spikier waveform, whose large crest factor then drives any downstream limiter into distorting every single pitch pulse. Injecting a derivative source and skipping the difference is what gives the correct radiated pressure, and is why formant synthesizers use the LF derivative directly. `radiation_difference` therefore has to agree with the caller's source: 1.0 for a flow source (R6 parity), 0.0 for `glottal_lf.js`. There is no safe default that suits both, so it is an explicit parameter rather than a built-in assumption. ## `wall_loss`: the tube was perfectly lossless, and that is audible Scattering at a Kelly-Lochbaum junction conserves energy exactly, so with only the glottis and lips absorbing anything, the formants of this tube had very high Q. Real vocal tracts lose energy continuously to yielding walls plus viscous and thermal effects, which is what gives formants their bandwidth (roughly 50-100 Hz for F1, more higher up). A resonator with too little damping rings after every excitation, and a whole tube of them reads as a metallic, synthetic buzz laid over the speech no matter how accurate the formant FREQUENCIES are — accurate centres with no bandwidth still does not sound human. `wall_loss` multiplies each traveling wave once per section per sample, so a wave crossing the whole tract is attenuated `wall_loss^num_sections`. Because it is applied per section rather than once at a boundary, the loss accumulates with distance travelled, which is the correct behaviour for a distributed effect. It is a frequency-INDEPENDENT approximation of a loss that really does grow with frequency; the honest limitation is recorded here rather than overstated, and a one-pole filter per junction would be the refinement. 1.0 restores the lossless tube exactly, which is what the R6 parity test uses. One digital-waveguide step is inherently sequential in time (sample n depends on sample n-1's right/left traveling-wave state), but the N-1 junction updates *within* one sample step are independent of each other (each reads only the previous sample's `right`/`left`, matching R6's `step()` computing a full `nextRight`/`nextLeft` array before committing it) — so this kernel assigns one thread per tube section (`local_invocation_id.x`), keeps the whole tract's traveling-wave state in workgroup memory (double-buffered, since every junction read is the *previous* sample's state), and walks the chunk's samples sequentially with a `workgroupBarrier()` between samples. `workgroup_id.x` selects which of up to `num_instances` simultaneous tracts to process, matching every other Phase 2 kernel's per-instance batching convention (`breath_reservoir.js`, `lip_radiation.js`). `MAX_SECTIONS = 64` is a compile-time workgroup-memory cap, comfortably above R6's proven `NUM_SECTIONS = 32` oral / `NASAL_SECTIONS = 16` nasal tract discretizations (`risk/VoiceBoxWaveguideProbe.js`) — `num_sections` over this cap is a caller error, not a silently-truncated tract. To keep this kernel within the project's \"N read-only storage inputs then one read_write storage output\" binding convention (`KernelRegistry.bindGroupLayoutEntriesFor`), all four pieces of kernel-produced data (`radiated_out`, the two persisted traveling-wave state arrays, and the persisted previous-lip-output scalar needed for the next chunk's radiation first-difference) are packed into ONE flat output buffer at fixed uniform-computed offsets, documented in the struct comments below, rather than needing four separate output bindings."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/tract_waveguide.md","moduleTitle":"particle_voice/nn/kernels/articulatory/tract_waveguide","source":"agi/particle_voice/nn/kernels/articulatory/tract_waveguide.js","import":"/agi/particle_voice/nn/kernels/articulatory/tract_waveguide.js","sourceHash":"1c9857a4ccdcae11da751c66f3d5172ad52aec375a70248ac33ec45f438f89ca","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/articulatory/tract_waveguide.js#0003:TRACT_WAVEGUIDE_ENTRY_POINT","exportIndex":3,"name":"TRACT_WAVEGUIDE_ENTRY_POINT","kind":"constant","signature":"TRACT_WAVEGUIDE_ENTRY_POINT","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/tract_waveguide.md","moduleTitle":"particle_voice/nn/kernels/articulatory/tract_waveguide","source":"agi/particle_voice/nn/kernels/articulatory/tract_waveguide.js","import":"/agi/particle_voice/nn/kernels/articulatory/tract_waveguide.js","sourceHash":"1c9857a4ccdcae11da751c66f3d5172ad52aec375a70248ac33ec45f438f89ca","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/articulatory/tract_waveguide.js#0004:TRACT_WAVEGUIDE_WORKGROUP_SIZE","exportIndex":4,"name":"TRACT_WAVEGUIDE_WORKGROUP_SIZE","kind":"constant","signature":"TRACT_WAVEGUIDE_WORKGROUP_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/visual_state_decimate.md","moduleTitle":"particle_voice/nn/kernels/articulatory/visual_state_decimate","source":"agi/particle_voice/nn/kernels/articulatory/visual_state_decimate.js","import":"/agi/particle_voice/nn/kernels/articulatory/visual_state_decimate.js","sourceHash":"ac0e231f3e305a5ebf4dedce4addca9b56a5b2ce171fefcb519601b33b5beb36","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/kernels/articulatory/visual_state_decimate.js","title":"particle_voice/nn/kernels/articulatory/visual_state_decimate","summary":"visual_state_decimate.js — Phase 2 ParticleNN articulatory kernel. Decimates a high-rate, multi-CHANNEL tract field (e.g. a per-section pressure-like signal, one channel per tube section) down to one box-averaged value per channel per fixed-size frame — the `VisualAirflowState` `ARCHITECTURE.md` §4 names as \"a decimated field for ribbon/particle/heatmap visualization\". Deliberately NOT a reuse of `physiology_feedback_reduce.js` despite the similar per-thread \"small sequential average over a window\" shape: that kernel reduces a single FLAT per-instance signal to (mean, RMS) pairs for model feedback (a statistics reduction); this kernel decimates a multi-CHANNEL per-instance FIELD (extra channel/section axis) down to mean-only per channel per frame, because a rendered airflow ribbon/ heatmap needs a representative value per tube section over time, not an energy statistic, and box-averaging over the decimation window (rather than picking every Nth raw sample) avoids visual aliasing/flicker in the downsampled field — ordinary decimation-filter practice, and consistent with how `overlap_add.js`/`stft.js` already treat windowing as the caller's/kernel's job rather than raw strided subsampling. `ARCHITECTURE.md` §4 also requires that visualization \"must be bit- identically disable-able without changing rendered PCM\" — this kernel reads its input field only (never writes back into it), so skipping this kernel's dispatch entirely when visualization is off cannot affect the `tract_waveguide.js`/`nasal_junction.js` PCM path in any way; that invariant is structural (this kernel has no read_write access to anything the acoustic path also reads), not merely a runtime convention.","exportCount":3}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/visual_state_decimate.md","moduleTitle":"particle_voice/nn/kernels/articulatory/visual_state_decimate","source":"agi/particle_voice/nn/kernels/articulatory/visual_state_decimate.js","import":"/agi/particle_voice/nn/kernels/articulatory/visual_state_decimate.js","sourceHash":"ac0e231f3e305a5ebf4dedce4addca9b56a5b2ce171fefcb519601b33b5beb36","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/articulatory/visual_state_decimate.js#0000:visualStateDecimateShader","exportIndex":0,"name":"visualStateDecimateShader","kind":"function","signature":"visualStateDecimateShader()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/visual_state_decimate.md","moduleTitle":"particle_voice/nn/kernels/articulatory/visual_state_decimate","source":"agi/particle_voice/nn/kernels/articulatory/visual_state_decimate.js","import":"/agi/particle_voice/nn/kernels/articulatory/visual_state_decimate.js","sourceHash":"ac0e231f3e305a5ebf4dedce4addca9b56a5b2ce171fefcb519601b33b5beb36","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/articulatory/visual_state_decimate.js#0001:VISUAL_STATE_DECIMATE_ENTRY_POINT","exportIndex":1,"name":"VISUAL_STATE_DECIMATE_ENTRY_POINT","kind":"constant","signature":"VISUAL_STATE_DECIMATE_ENTRY_POINT","summary":"visual_state_decimate.js — Phase 2 ParticleNN articulatory kernel. Decimates a high-rate, multi-CHANNEL tract field (e.g. a per-section pressure-like signal, one channel per tube section) down to one box-averaged value per channel per fixed-size frame — the `VisualAirflowState` `ARCHITECTURE.md` §4 names as \"a decimated field for ribbon/particle/heatmap visualization\". Deliberately NOT a reuse of `physiology_feedback_reduce.js` despite the similar per-thread \"small sequential average over a window\" shape: that kernel reduces a single FLAT per-instance signal to (mean, RMS) pairs for model feedback (a statistics reduction); this kernel decimates a multi-CHANNEL per-instance FIELD (extra channel/section axis) down to mean-only per channel per frame, because a rendered airflow ribbon/ heatmap needs a representative value per tube section over time, not an energy statistic, and box-averaging over the decimation window (rather than picking every Nth raw sample) avoids visual aliasing/flicker in the downsampled field — ordinary decimation-filter practice, and consistent with how `overlap_add.js`/`stft.js` already treat windowing as the caller's/kernel's job rather than raw strided subsampling. `ARCHITECTURE.md` §4 also requires that visualization \"must be bit- identically disable-able without changing rendered PCM\" — this kernel reads its input field only (never writes back into it), so skipping this kernel's dispatch entirely when visualization is off cannot affect the `tract_waveguide.js`/`nasal_junction.js` PCM path in any way; that invariant is structural (this kernel has no read_write access to anything the acoustic path also reads), not merely a runtime convention."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/articulatory/visual_state_decimate.md","moduleTitle":"particle_voice/nn/kernels/articulatory/visual_state_decimate","source":"agi/particle_voice/nn/kernels/articulatory/visual_state_decimate.js","import":"/agi/particle_voice/nn/kernels/articulatory/visual_state_decimate.js","sourceHash":"ac0e231f3e305a5ebf4dedce4addca9b56a5b2ce171fefcb519601b33b5beb36","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/articulatory/visual_state_decimate.js#0002:VISUAL_STATE_DECIMATE_WORKGROUP_SIZE","exportIndex":2,"name":"VISUAL_STATE_DECIMATE_WORKGROUP_SIZE","kind":"constant","signature":"VISUAL_STATE_DECIMATE_WORKGROUP_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/chunks/complex_math.md","moduleTitle":"particle_voice/nn/kernels/chunks/complex_math","source":"agi/particle_voice/nn/kernels/chunks/complex_math.js","import":"/agi/particle_voice/nn/kernels/chunks/complex_math.js","sourceHash":"e136ec85b076d78615a3364edf191b53d7ee160f0c0e2a6a5f2267f5bc545e75","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/kernels/chunks/complex_math.js","title":"particle_voice/nn/kernels/chunks/complex_math","summary":"chunks/complex_math.js — Phase 1 ParticleNN kernel chunk. Generic complex-arithmetic WGSL fragment (mul/add/sub/twiddle), split out as reusable infrastructure ahead of Phase 2's `fft/fft1024_f32.js` / `fft/complex_mul.js` kernels — R3's `risk/Fft1024Kernel.js` inlined its own twiddle multiply directly in the butterfly loop (fine for a disposable risk spike); Phase 2's production FFT kernel should compose this chunk instead of re-deriving the same four multiplies/two adds. Complex numbers are represented as `vec2<f32>` (`.x` = real, `.y` = imag) throughout, not a named struct, to keep it directly usable as a return type/local without an extra struct declaration at every call site.","exportCount":2}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/chunks/complex_math.md","moduleTitle":"particle_voice/nn/kernels/chunks/complex_math","source":"agi/particle_voice/nn/kernels/chunks/complex_math.js","import":"/agi/particle_voice/nn/kernels/chunks/complex_math.js","sourceHash":"e136ec85b076d78615a3364edf191b53d7ee160f0c0e2a6a5f2267f5bc545e75","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/chunks/complex_math.js#0000:complexMathChunk","exportIndex":0,"name":"complexMathChunk","kind":"function","signature":"complexMathChunk()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/chunks/complex_math.md","moduleTitle":"particle_voice/nn/kernels/chunks/complex_math","source":"agi/particle_voice/nn/kernels/chunks/complex_math.js","import":"/agi/particle_voice/nn/kernels/chunks/complex_math.js","sourceHash":"e136ec85b076d78615a3364edf191b53d7ee160f0c0e2a6a5f2267f5bc545e75","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/chunks/complex_math.js#0001:COMPLEX_MATH_CHUNK_NAME","exportIndex":1,"name":"COMPLEX_MATH_CHUNK_NAME","kind":"constant","signature":"COMPLEX_MATH_CHUNK_NAME","summary":"chunks/complex_math.js — Phase 1 ParticleNN kernel chunk. Generic complex-arithmetic WGSL fragment (mul/add/sub/twiddle), split out as reusable infrastructure ahead of Phase 2's `fft/fft1024_f32.js` / `fft/complex_mul.js` kernels — R3's `risk/Fft1024Kernel.js` inlined its own twiddle multiply directly in the butterfly loop (fine for a disposable risk spike); Phase 2's production FFT kernel should compose this chunk instead of re-deriving the same four multiplies/two adds. Complex numbers are represented as `vec2<f32>` (`.x` = real, `.y` = imag) throughout, not a named struct, to keep it directly usable as a return type/local without an extra struct declaration at every call site."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/chunks/f16_utils.md","moduleTitle":"particle_voice/nn/kernels/chunks/f16_utils","source":"agi/particle_voice/nn/kernels/chunks/f16_utils.js","import":"/agi/particle_voice/nn/kernels/chunks/f16_utils.js","sourceHash":"b0903d02074303a483db5686dc32a281895332f64a2a9da859b54750c7704d2b","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/kernels/chunks/f16_utils.js","title":"particle_voice/nn/kernels/chunks/f16_utils","summary":"chunks/f16_utils.js — Phase 1 ParticleNN kernel chunk. On the WGSL side, `f16` kernels use WGSL's native `f16` type directly (`enable f16;` + `f16`/`vec2h` etc.) when `shader-f16` is available — no bit-manipulation WGSL fragment is needed there, unlike `int8_pack.js`'s manual unpack (WGSL has no native `i8` storage type, but it DOES have a native `f16` type). This file's job is the *host-side* JS<->f16 bit conversion needed to build/verify f16 test vectors and read `ParticleTensor`'s raw `Uint16Array` f16 readback (`ParticleTensor.js`'s `wrapReadbackBuffer` deliberately leaves `f16` tensors as raw bit patterns — this is where they get decoded).","exportCount":6}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/chunks/f16_utils.md","moduleTitle":"particle_voice/nn/kernels/chunks/f16_utils","source":"agi/particle_voice/nn/kernels/chunks/f16_utils.js","import":"/agi/particle_voice/nn/kernels/chunks/f16_utils.js","sourceHash":"b0903d02074303a483db5686dc32a281895332f64a2a9da859b54750c7704d2b","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/chunks/f16_utils.js#0000:decodeF16","exportIndex":0,"name":"decodeF16","kind":"function","signature":"decodeF16(bits)","summary":"IEEE 754 binary16 -> JS float64."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/chunks/f16_utils.md","moduleTitle":"particle_voice/nn/kernels/chunks/f16_utils","source":"agi/particle_voice/nn/kernels/chunks/f16_utils.js","import":"/agi/particle_voice/nn/kernels/chunks/f16_utils.js","sourceHash":"b0903d02074303a483db5686dc32a281895332f64a2a9da859b54750c7704d2b","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/chunks/f16_utils.js#0001:encodeF16","exportIndex":1,"name":"encodeF16","kind":"function","signature":"encodeF16(value)","summary":"JS float64 -> IEEE 754 binary16 bit pattern (round-to-nearest-even is not implemented precisely — round-half-away-from-zero on the mantissa, adequate for test-vector construction, not for production-quality quantization-aware training)."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/chunks/f16_utils.md","moduleTitle":"particle_voice/nn/kernels/chunks/f16_utils","source":"agi/particle_voice/nn/kernels/chunks/f16_utils.js","import":"/agi/particle_voice/nn/kernels/chunks/f16_utils.js","sourceHash":"b0903d02074303a483db5686dc32a281895332f64a2a9da859b54750c7704d2b","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/chunks/f16_utils.js#0002:decodeF16Array","exportIndex":2,"name":"decodeF16Array","kind":"function","signature":"decodeF16Array(bitsArray)","summary":"Decode a raw f16-bits `Uint16Array` (e.g. from `ParticleTensor.getData()`) into a `Float64Array`."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/chunks/f16_utils.md","moduleTitle":"particle_voice/nn/kernels/chunks/f16_utils","source":"agi/particle_voice/nn/kernels/chunks/f16_utils.js","import":"/agi/particle_voice/nn/kernels/chunks/f16_utils.js","sourceHash":"b0903d02074303a483db5686dc32a281895332f64a2a9da859b54750c7704d2b","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/chunks/f16_utils.js#0003:encodeF16Array","exportIndex":3,"name":"encodeF16Array","kind":"function","signature":"encodeF16Array(values)","summary":"Encode a `Float32Array`/`Float64Array`/plain array into an f16-bits `Uint16Array`, suitable for `ParticleTensor` `data` with `dtype: 'f16'`."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/chunks/f16_utils.md","moduleTitle":"particle_voice/nn/kernels/chunks/f16_utils","source":"agi/particle_voice/nn/kernels/chunks/f16_utils.js","import":"/agi/particle_voice/nn/kernels/chunks/f16_utils.js","sourceHash":"b0903d02074303a483db5686dc32a281895332f64a2a9da859b54750c7704d2b","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/chunks/f16_utils.js#0004:F16_ABS_TOLERANCE","exportIndex":4,"name":"F16_ABS_TOLERANCE","kind":"re-export","signature":"F16_ABS_TOLERANCE","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/chunks/f16_utils.md","moduleTitle":"particle_voice/nn/kernels/chunks/f16_utils","source":"agi/particle_voice/nn/kernels/chunks/f16_utils.js","import":"/agi/particle_voice/nn/kernels/chunks/f16_utils.js","sourceHash":"b0903d02074303a483db5686dc32a281895332f64a2a9da859b54750c7704d2b","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/chunks/f16_utils.js#0005:F16_REL_TOLERANCE","exportIndex":5,"name":"F16_REL_TOLERANCE","kind":"re-export","signature":"F16_REL_TOLERANCE","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/chunks/int8_pack.md","moduleTitle":"particle_voice/nn/kernels/chunks/int8_pack","source":"agi/particle_voice/nn/kernels/chunks/int8_pack.js","import":"/agi/particle_voice/nn/kernels/chunks/int8_pack.js","sourceHash":"7dc96101978d5d20feffcdda25b6b0c086f10c33fba69f12f381d95d8a78b63f","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/kernels/chunks/int8_pack.js","title":"particle_voice/nn/kernels/chunks/int8_pack","summary":"chunks/int8_pack.js — Phase 1 ParticleNN kernel chunk. WGSL side: the `unpack_int8` fragment, extracted from R2's `risk/MatmulW8A16Kernel.js` (proven correct there — R2's parity test passed with max abs/rel error ~3.4e-7 against a JS scalar reference) into a shared chunk so `matmul_w8a16.js`/`conv1d_w8a16.js`/ `dequant_int8.js` all use the exact same unpack logic rather than each re-deriving it. JS side: the host-side symmetric block quantizer that produces the `packed`/`scales` pair this WGSL fragment expects, matching `ParticleTensor.js`'s documented `quant` scheme: `value = i8Value * scale` (zero-point-free, one scale per `blockSize`-sized block).","exportCount":4}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/chunks/int8_pack.md","moduleTitle":"particle_voice/nn/kernels/chunks/int8_pack","source":"agi/particle_voice/nn/kernels/chunks/int8_pack.js","import":"/agi/particle_voice/nn/kernels/chunks/int8_pack.js","sourceHash":"7dc96101978d5d20feffcdda25b6b0c086f10c33fba69f12f381d95d8a78b63f","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/chunks/int8_pack.js#0000:int8PackChunk","exportIndex":0,"name":"int8PackChunk","kind":"function","signature":"int8PackChunk()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/chunks/int8_pack.md","moduleTitle":"particle_voice/nn/kernels/chunks/int8_pack","source":"agi/particle_voice/nn/kernels/chunks/int8_pack.js","import":"/agi/particle_voice/nn/kernels/chunks/int8_pack.js","sourceHash":"7dc96101978d5d20feffcdda25b6b0c086f10c33fba69f12f381d95d8a78b63f","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/chunks/int8_pack.js#0001:quantizeInt8Blockwise","exportIndex":1,"name":"quantizeInt8Blockwise","kind":"function","signature":"quantizeInt8Blockwise(values, blockSize)","summary":"Symmetric per-block INT8 quantization: for each contiguous `blockSize`-sized block of `values`, scale = max(abs(block)) / 127, quantized = round(value / scale). Returns `{ packed: Uint32Array, scales: Float32Array, blockSize }`. `values.length` must be a multiple of 4 (four int8 values pack into one u32, matching R2's little-end-is-lowest-index layout)."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/chunks/int8_pack.md","moduleTitle":"particle_voice/nn/kernels/chunks/int8_pack","source":"agi/particle_voice/nn/kernels/chunks/int8_pack.js","import":"/agi/particle_voice/nn/kernels/chunks/int8_pack.js","sourceHash":"7dc96101978d5d20feffcdda25b6b0c086f10c33fba69f12f381d95d8a78b63f","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/chunks/int8_pack.js#0002:dequantizeInt8Blockwise","exportIndex":2,"name":"dequantizeInt8Blockwise","kind":"function","signature":"dequantizeInt8Blockwise(quantized, scales, blockSize)","summary":"Dequantize `quantizeInt8Blockwise`'s output back to a `Float32Array`, for host-side parity checking against a kernel's GPU output."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/chunks/int8_pack.md","moduleTitle":"particle_voice/nn/kernels/chunks/int8_pack","source":"agi/particle_voice/nn/kernels/chunks/int8_pack.js","import":"/agi/particle_voice/nn/kernels/chunks/int8_pack.js","sourceHash":"7dc96101978d5d20feffcdda25b6b0c086f10c33fba69f12f381d95d8a78b63f","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/chunks/int8_pack.js#0003:INT8_PACK_CHUNK_NAME","exportIndex":3,"name":"INT8_PACK_CHUNK_NAME","kind":"constant","signature":"INT8_PACK_CHUNK_NAME","summary":"chunks/int8_pack.js — Phase 1 ParticleNN kernel chunk. WGSL side: the `unpack_int8` fragment, extracted from R2's `risk/MatmulW8A16Kernel.js` (proven correct there — R2's parity test passed with max abs/rel error ~3.4e-7 against a JS scalar reference) into a shared chunk so `matmul_w8a16.js`/`conv1d_w8a16.js`/ `dequant_int8.js` all use the exact same unpack logic rather than each re-deriving it. JS side: the host-side symmetric block quantizer that produces the `packed`/`scales` pair this WGSL fragment expects, matching `ParticleTensor.js`'s documented `quant` scheme: `value = i8Value * scale` (zero-point-free, one scale per `blockSize`-sized block)."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/chunks/math_common.md","moduleTitle":"particle_voice/nn/kernels/chunks/math_common","source":"agi/particle_voice/nn/kernels/chunks/math_common.js","import":"/agi/particle_voice/nn/kernels/chunks/math_common.js","sourceHash":"c3bb5663ea36475ad26d0c6fc280a87c51cc761f9fc3e6fa171b0c4dce9ffedd","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/kernels/chunks/math_common.js","title":"particle_voice/nn/kernels/chunks/math_common","summary":"chunks/math_common.js — Phase 1 ParticleNN kernel chunk. Small reusable WGSL scalar-math fragments shared by multiple kernel generators, so e.g. `silu_f16.js` and any future fused-activation kernel define `siluScalar()`/`sigmoidScalar()` exactly once rather than each inlining its own copy (the kind of duplication the R2 spike's inline `unpack_int8` was an acceptable one-off for, but Phase 1 kernels should not repeat).","exportCount":2}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/chunks/math_common.md","moduleTitle":"particle_voice/nn/kernels/chunks/math_common","source":"agi/particle_voice/nn/kernels/chunks/math_common.js","import":"/agi/particle_voice/nn/kernels/chunks/math_common.js","sourceHash":"c3bb5663ea36475ad26d0c6fc280a87c51cc761f9fc3e6fa171b0c4dce9ffedd","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/chunks/math_common.js#0000:mathCommonChunk","exportIndex":0,"name":"mathCommonChunk","kind":"function","signature":"mathCommonChunk()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/chunks/math_common.md","moduleTitle":"particle_voice/nn/kernels/chunks/math_common","source":"agi/particle_voice/nn/kernels/chunks/math_common.js","import":"/agi/particle_voice/nn/kernels/chunks/math_common.js","sourceHash":"c3bb5663ea36475ad26d0c6fc280a87c51cc761f9fc3e6fa171b0c4dce9ffedd","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/chunks/math_common.js#0001:MATH_COMMON_CHUNK_NAME","exportIndex":1,"name":"MATH_COMMON_CHUNK_NAME","kind":"constant","signature":"MATH_COMMON_CHUNK_NAME","summary":"chunks/math_common.js — Phase 1 ParticleNN kernel chunk. Small reusable WGSL scalar-math fragments shared by multiple kernel generators, so e.g. `silu_f16.js` and any future fused-activation kernel define `siluScalar()`/`sigmoidScalar()` exactly once rather than each inlining its own copy (the kind of duplication the R2 spike's inline `unpack_int8` was an acceptable one-off for, but Phase 1 kernels should not repeat)."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/convolution/conv1d_w8a16.md","moduleTitle":"particle_voice/nn/kernels/convolution/conv1d_w8a16","source":"agi/particle_voice/nn/kernels/convolution/conv1d_w8a16.js","import":"/agi/particle_voice/nn/kernels/convolution/conv1d_w8a16.js","sourceHash":"a34e557313d05b525a9c7e579f1d27233a09b9d7c7b8519aa1159ba1eececbdf","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/kernels/convolution/conv1d_w8a16.js","title":"particle_voice/nn/kernels/convolution/conv1d_w8a16","summary":"convolution/conv1d_w8a16.js — Phase 1 ParticleNN kernel. 1D convolution, INT8 weights (same 4-packed-per-u32 layout and `unpack_int8` as `matmul_w8a16.js`) x FP16/FP32 activations, FP32 accumulation. `[inChannels, kernelWidth]` per output channel, `'same'` padding (input implicitly zero-padded so output length equals input length) — stride 1 only; dilation/stride are Phase 2+ follow-ups if a consumer needs them (R7's toy Conv1D model used stride 1 only, and no Phase -1/0 document commits to anything else yet). Weight layout: `packedWeights[outCh * ceil(inChannels*kernelWidth/4) + k4]`, a u32 whose 4 bytes are int8 weights for the flattened `(inCh, tap)` index `k = k4*4 + 0..3`, where `inCh = k / kernelWidth` and `tap = k % kernelWidth`. `scales[outCh]` is the per-output-channel scale. `inChannels * kernelWidth` must be a multiple of 4.","exportCount":3}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/convolution/conv1d_w8a16.md","moduleTitle":"particle_voice/nn/kernels/convolution/conv1d_w8a16","source":"agi/particle_voice/nn/kernels/convolution/conv1d_w8a16.js","import":"/agi/particle_voice/nn/kernels/convolution/conv1d_w8a16.js","sourceHash":"a34e557313d05b525a9c7e579f1d27233a09b9d7c7b8519aa1159ba1eececbdf","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/convolution/conv1d_w8a16.js#0000:conv1dW8a16Shader","exportIndex":0,"name":"conv1dW8a16Shader","kind":"function","signature":"conv1dW8a16Shader({ useShaderF16 = false } = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/convolution/conv1d_w8a16.md","moduleTitle":"particle_voice/nn/kernels/convolution/conv1d_w8a16","source":"agi/particle_voice/nn/kernels/convolution/conv1d_w8a16.js","import":"/agi/particle_voice/nn/kernels/convolution/conv1d_w8a16.js","sourceHash":"a34e557313d05b525a9c7e579f1d27233a09b9d7c7b8519aa1159ba1eececbdf","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/convolution/conv1d_w8a16.js#0001:CONV1D_W8A16_ENTRY_POINT","exportIndex":1,"name":"CONV1D_W8A16_ENTRY_POINT","kind":"constant","signature":"CONV1D_W8A16_ENTRY_POINT","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/convolution/conv1d_w8a16.md","moduleTitle":"particle_voice/nn/kernels/convolution/conv1d_w8a16","source":"agi/particle_voice/nn/kernels/convolution/conv1d_w8a16.js","import":"/agi/particle_voice/nn/kernels/convolution/conv1d_w8a16.js","sourceHash":"a34e557313d05b525a9c7e579f1d27233a09b9d7c7b8519aa1159ba1eececbdf","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/convolution/conv1d_w8a16.js#0002:CONV1D_W8A16_WORKGROUP_SIZE","exportIndex":2,"name":"CONV1D_W8A16_WORKGROUP_SIZE","kind":"constant","signature":"CONV1D_W8A16_WORKGROUP_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/core/transpose_2d.md","moduleTitle":"particle_voice/nn/kernels/core/transpose_2d","source":"agi/particle_voice/nn/kernels/core/transpose_2d.js","import":"/agi/particle_voice/nn/kernels/core/transpose_2d.js","sourceHash":"6b7fd18cd76b62f07db290eadb286780e8201d2dfa70c581682412d8716b93be","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/kernels/core/transpose_2d.js","title":"particle_voice/nn/kernels/core/transpose_2d","summary":"core/transpose_2d.js — Phase 3 ParticleNN kernel. 2D transpose: `out[c, r] = in[r, c]`, i.e. `[rows, cols]` → `[cols, rows]`, both row-major. ## Why this exists The Phase 1 kernels disagree about which axis is major, and building `PhonemeEncoder.js` is the first time anything composes them: - `speech/embedding_f16.js` writes `[numIds, embedDim]` — **sequence-major** (one row per token), the natural shape for a gather. - `convolution/conv1d_w8a16.js` reads `[inChannels, seqLen]` — **channel-major**, the natural shape for sliding a kernel along time. - `normalization/rmsnorm_f16.js` normalizes each ROW independently, so per-token normalization over the feature axis needs sequence-major again. Neither layout is wrong for its own kernel, but the encoder has to cross between them, and nothing in the registry could. Rather than duplicating a transposed variant of the convolution (or silently re-interpreting a buffer and producing scrambled activations), the axis swap is its own explicit, testable op. Deliberately naive: one thread per element, no tiling and no shared-memory staging. The encoder's tensors are small (tens of channels x hundreds of frames), so the uncoalesced write is not worth the complexity — and a tiled version can replace this later without changing a single caller, since the contract is just \"swap the axes\".","exportCount":3}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/core/transpose_2d.md","moduleTitle":"particle_voice/nn/kernels/core/transpose_2d","source":"agi/particle_voice/nn/kernels/core/transpose_2d.js","import":"/agi/particle_voice/nn/kernels/core/transpose_2d.js","sourceHash":"6b7fd18cd76b62f07db290eadb286780e8201d2dfa70c581682412d8716b93be","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/core/transpose_2d.js#0000:transpose2dShader","exportIndex":0,"name":"transpose2dShader","kind":"function","signature":"transpose2dShader({ useShaderF16 = false } = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/core/transpose_2d.md","moduleTitle":"particle_voice/nn/kernels/core/transpose_2d","source":"agi/particle_voice/nn/kernels/core/transpose_2d.js","import":"/agi/particle_voice/nn/kernels/core/transpose_2d.js","sourceHash":"6b7fd18cd76b62f07db290eadb286780e8201d2dfa70c581682412d8716b93be","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/core/transpose_2d.js#0001:TRANSPOSE_2D_ENTRY_POINT","exportIndex":1,"name":"TRANSPOSE_2D_ENTRY_POINT","kind":"constant","signature":"TRANSPOSE_2D_ENTRY_POINT","summary":"core/transpose_2d.js — Phase 3 ParticleNN kernel. 2D transpose: `out[c, r] = in[r, c]`, i.e. `[rows, cols]` → `[cols, rows]`, both row-major. ## Why this exists The Phase 1 kernels disagree about which axis is major, and building `PhonemeEncoder.js` is the first time anything composes them: - `speech/embedding_f16.js` writes `[numIds, embedDim]` — **sequence-major** (one row per token), the natural shape for a gather. - `convolution/conv1d_w8a16.js` reads `[inChannels, seqLen]` — **channel-major**, the natural shape for sliding a kernel along time. - `normalization/rmsnorm_f16.js` normalizes each ROW independently, so per-token normalization over the feature axis needs sequence-major again. Neither layout is wrong for its own kernel, but the encoder has to cross between them, and nothing in the registry could. Rather than duplicating a transposed variant of the convolution (or silently re-interpreting a buffer and producing scrambled activations), the axis swap is its own explicit, testable op. Deliberately naive: one thread per element, no tiling and no shared-memory staging. The encoder's tensors are small (tens of channels x hundreds of frames), so the uncoalesced write is not worth the complexity — and a tiled version can replace this later without changing a single caller, since the contract is just \"swap the axes\"."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/core/transpose_2d.md","moduleTitle":"particle_voice/nn/kernels/core/transpose_2d","source":"agi/particle_voice/nn/kernels/core/transpose_2d.js","import":"/agi/particle_voice/nn/kernels/core/transpose_2d.js","sourceHash":"6b7fd18cd76b62f07db290eadb286780e8201d2dfa70c581682412d8716b93be","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/core/transpose_2d.js#0002:TRANSPOSE_2D_WORKGROUP_SIZE","exportIndex":2,"name":"TRANSPOSE_2D_WORKGROUP_SIZE","kind":"constant","signature":"TRANSPOSE_2D_WORKGROUP_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/fft/complex_mul.md","moduleTitle":"particle_voice/nn/kernels/fft/complex_mul","source":"agi/particle_voice/nn/kernels/fft/complex_mul.js","import":"/agi/particle_voice/nn/kernels/fft/complex_mul.js","sourceHash":"3eb4e24f1739e1be87d89b2caa71a480dfafd00c7a9ef72e3d16ae21b642ae22","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/kernels/fft/complex_mul.js","title":"particle_voice/nn/kernels/fft/complex_mul","summary":"complex_mul.js — Phase 2 ParticleNN DSP kernel. Elementwise complex multiplication: `(a+bi)(c+di) = (ac-bd) + (ad+bc)i`, over interleaved `[re, im, re, im, ...]` buffers, matching `fft1024_f32.js`'s interleaved-complex layout so FFT output can feed this directly (e.g. frequency-domain filtering: `FFT(x) * H` then `IFFT`).","exportCount":3}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/fft/complex_mul.md","moduleTitle":"particle_voice/nn/kernels/fft/complex_mul","source":"agi/particle_voice/nn/kernels/fft/complex_mul.js","import":"/agi/particle_voice/nn/kernels/fft/complex_mul.js","sourceHash":"3eb4e24f1739e1be87d89b2caa71a480dfafd00c7a9ef72e3d16ae21b642ae22","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/fft/complex_mul.js#0000:complexMulShader","exportIndex":0,"name":"complexMulShader","kind":"function","signature":"complexMulShader()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/fft/complex_mul.md","moduleTitle":"particle_voice/nn/kernels/fft/complex_mul","source":"agi/particle_voice/nn/kernels/fft/complex_mul.js","import":"/agi/particle_voice/nn/kernels/fft/complex_mul.js","sourceHash":"3eb4e24f1739e1be87d89b2caa71a480dfafd00c7a9ef72e3d16ae21b642ae22","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/fft/complex_mul.js#0001:COMPLEX_MUL_ENTRY_POINT","exportIndex":1,"name":"COMPLEX_MUL_ENTRY_POINT","kind":"constant","signature":"COMPLEX_MUL_ENTRY_POINT","summary":"complex_mul.js — Phase 2 ParticleNN DSP kernel. Elementwise complex multiplication: `(a+bi)(c+di) = (ac-bd) + (ad+bc)i`, over interleaved `[re, im, re, im, ...]` buffers, matching `fft1024_f32.js`'s interleaved-complex layout so FFT output can feed this directly (e.g. frequency-domain filtering: `FFT(x) * H` then `IFFT`)."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/fft/complex_mul.md","moduleTitle":"particle_voice/nn/kernels/fft/complex_mul","source":"agi/particle_voice/nn/kernels/fft/complex_mul.js","import":"/agi/particle_voice/nn/kernels/fft/complex_mul.js","sourceHash":"3eb4e24f1739e1be87d89b2caa71a480dfafd00c7a9ef72e3d16ae21b642ae22","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/fft/complex_mul.js#0002:COMPLEX_MUL_WORKGROUP_SIZE","exportIndex":2,"name":"COMPLEX_MUL_WORKGROUP_SIZE","kind":"constant","signature":"COMPLEX_MUL_WORKGROUP_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/fft/fft1024_f32.md","moduleTitle":"particle_voice/nn/kernels/fft/fft1024_f32","source":"agi/particle_voice/nn/kernels/fft/fft1024_f32.js","import":"/agi/particle_voice/nn/kernels/fft/fft1024_f32.js","sourceHash":"371829d47fd3b9f85b62f0eee545ae270a10e5834e98acbf9de2ede297768fd5","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/kernels/fft/fft1024_f32.js","title":"particle_voice/nn/kernels/fft/fft1024_f32","summary":"fft1024_f32.js — Phase 2 ParticleNN DSP kernel. Single-workgroup, in-workgroup-memory, iterative radix-2 Cooley-Tukey forward FFT — generalizes `risk/Fft1024Kernel.js` (R3)'s proven butterfly network to run with **256 threads/workgroup** (each thread handles 2 butterfly operations per stage / 4 elements for load-scatter) instead of R3's 512, so it needs **no elevated `maxComputeWorkgroupSizeX` request** — every conformant WebGPU adapter guarantees 256 by default. This resolves the exact gap `spec/DeviceContract-v0.md` §4 flagged as an unresolved \"Phase 1/2 follow-up\": rather than requesting a higher limit with a fallback path for adapters that refuse it, this kernel simply never needs the higher limit. One workgroup computes exactly one 1024-point complex FFT; `workgroup_id.x` selects which frame of a batch to process (`dispatchWorkgroups(numFrames)`), matching R3's batching design. Complex numbers are interleaved `[re0, im0, re1, im1, ...]` in a single flat `array<f32>` per frame (`frame_base = wid.x * N * 2`) — one input buffer, one output buffer, matching every other Phase 1/2 kernel's single-input/single-output convention (unlike R3's separate real/imag arrays). No uniform buffer is needed (frame selection comes entirely from `workgroup_id`), so this kernel registers with `hasUniform: false` in `KernelRegistry.js`.","exportCount":7}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/fft/fft1024_f32.md","moduleTitle":"particle_voice/nn/kernels/fft/fft1024_f32","source":"agi/particle_voice/nn/kernels/fft/fft1024_f32.js","import":"/agi/particle_voice/nn/kernels/fft/fft1024_f32.js","sourceHash":"371829d47fd3b9f85b62f0eee545ae270a10e5834e98acbf9de2ede297768fd5","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/fft/fft1024_f32.js#0000:buildFft1024Shader","exportIndex":0,"name":"buildFft1024Shader","kind":"function","signature":"buildFft1024Shader(direction)","summary":"Shared by `fft1024_f32.js` and `ifft1024_f32.js` — `direction` (+1 forward, -1 inverse) is baked in at generation time, not read from a uniform, since each op is a distinct, fixed-behavior kernel."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/fft/fft1024_f32.md","moduleTitle":"particle_voice/nn/kernels/fft/fft1024_f32","source":"agi/particle_voice/nn/kernels/fft/fft1024_f32.js","import":"/agi/particle_voice/nn/kernels/fft/fft1024_f32.js","sourceHash":"371829d47fd3b9f85b62f0eee545ae270a10e5834e98acbf9de2ede297768fd5","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/fft/fft1024_f32.js#0001:fft1024F32Shader","exportIndex":1,"name":"fft1024F32Shader","kind":"function","signature":"fft1024F32Shader()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/fft/fft1024_f32.md","moduleTitle":"particle_voice/nn/kernels/fft/fft1024_f32","source":"agi/particle_voice/nn/kernels/fft/fft1024_f32.js","import":"/agi/particle_voice/nn/kernels/fft/fft1024_f32.js","sourceHash":"371829d47fd3b9f85b62f0eee545ae270a10e5834e98acbf9de2ede297768fd5","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/fft/fft1024_f32.js#0002:FFT_N","exportIndex":2,"name":"FFT_N","kind":"constant","signature":"FFT_N","summary":"fft1024_f32.js — Phase 2 ParticleNN DSP kernel. Single-workgroup, in-workgroup-memory, iterative radix-2 Cooley-Tukey forward FFT — generalizes `risk/Fft1024Kernel.js` (R3)'s proven butterfly network to run with **256 threads/workgroup** (each thread handles 2 butterfly operations per stage / 4 elements for load-scatter) instead of R3's 512, so it needs **no elevated `maxComputeWorkgroupSizeX` request** — every conformant WebGPU adapter guarantees 256 by default. This resolves the exact gap `spec/DeviceContract-v0.md` §4 flagged as an unresolved \"Phase 1/2 follow-up\": rather than requesting a higher limit with a fallback path for adapters that refuse it, this kernel simply never needs the higher limit. One workgroup computes exactly one 1024-point complex FFT; `workgroup_id.x` selects which frame of a batch to process (`dispatchWorkgroups(numFrames)`), matching R3's batching design. Complex numbers are interleaved `[re0, im0, re1, im1, ...]` in a single flat `array<f32>` per frame (`frame_base = wid.x * N * 2`) — one input buffer, one output buffer, matching every other Phase 1/2 kernel's single-input/single-output convention (unlike R3's separate real/imag arrays). No uniform buffer is needed (frame selection comes entirely from `workgroup_id`), so this kernel registers with `hasUniform: false` in `KernelRegistry.js`."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/fft/fft1024_f32.md","moduleTitle":"particle_voice/nn/kernels/fft/fft1024_f32","source":"agi/particle_voice/nn/kernels/fft/fft1024_f32.js","import":"/agi/particle_voice/nn/kernels/fft/fft1024_f32.js","sourceHash":"371829d47fd3b9f85b62f0eee545ae270a10e5834e98acbf9de2ede297768fd5","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/fft/fft1024_f32.js#0003:FFT_LOG2N","exportIndex":3,"name":"FFT_LOG2N","kind":"constant","signature":"FFT_LOG2N","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/fft/fft1024_f32.md","moduleTitle":"particle_voice/nn/kernels/fft/fft1024_f32","source":"agi/particle_voice/nn/kernels/fft/fft1024_f32.js","import":"/agi/particle_voice/nn/kernels/fft/fft1024_f32.js","sourceHash":"371829d47fd3b9f85b62f0eee545ae270a10e5834e98acbf9de2ede297768fd5","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/fft/fft1024_f32.js#0004:FFT_WORKGROUP_THREADS","exportIndex":4,"name":"FFT_WORKGROUP_THREADS","kind":"constant","signature":"FFT_WORKGROUP_THREADS","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/fft/fft1024_f32.md","moduleTitle":"particle_voice/nn/kernels/fft/fft1024_f32","source":"agi/particle_voice/nn/kernels/fft/fft1024_f32.js","import":"/agi/particle_voice/nn/kernels/fft/fft1024_f32.js","sourceHash":"371829d47fd3b9f85b62f0eee545ae270a10e5834e98acbf9de2ede297768fd5","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/fft/fft1024_f32.js#0005:FFT_ENTRY_POINT","exportIndex":5,"name":"FFT_ENTRY_POINT","kind":"constant","signature":"FFT_ENTRY_POINT","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/fft/fft1024_f32.md","moduleTitle":"particle_voice/nn/kernels/fft/fft1024_f32","source":"agi/particle_voice/nn/kernels/fft/fft1024_f32.js","import":"/agi/particle_voice/nn/kernels/fft/fft1024_f32.js","sourceHash":"371829d47fd3b9f85b62f0eee545ae270a10e5834e98acbf9de2ede297768fd5","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/fft/fft1024_f32.js#0006:FFT_WORKGROUP_SIZE","exportIndex":6,"name":"FFT_WORKGROUP_SIZE","kind":"constant","signature":"FFT_WORKGROUP_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/fft/ifft1024_f32.md","moduleTitle":"particle_voice/nn/kernels/fft/ifft1024_f32","source":"agi/particle_voice/nn/kernels/fft/ifft1024_f32.js","import":"/agi/particle_voice/nn/kernels/fft/ifft1024_f32.js","sourceHash":"22733db23e3f93bd6b455a5dc77e3308f377537ec606c8fe44d648b664fa4aa8","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/kernels/fft/ifft1024_f32.js","title":"particle_voice/nn/kernels/fft/ifft1024_f32","summary":"ifft1024_f32.js — Phase 2 ParticleNN DSP kernel. Inverse of `fft1024_f32.js`: same butterfly network (see that file's docstring for the full algorithm/limit-generalization rationale), with `direction = -1` baked in — conjugate the input, run the same forward butterfly network, conjugate + scale by `1/N` (`IFFT(X) = (1/N) * conj(FFT(conj(X)))`), matching R3's proven identity.","exportCount":5}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/fft/ifft1024_f32.md","moduleTitle":"particle_voice/nn/kernels/fft/ifft1024_f32","source":"agi/particle_voice/nn/kernels/fft/ifft1024_f32.js","import":"/agi/particle_voice/nn/kernels/fft/ifft1024_f32.js","sourceHash":"22733db23e3f93bd6b455a5dc77e3308f377537ec606c8fe44d648b664fa4aa8","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/fft/ifft1024_f32.js#0000:ifft1024F32Shader","exportIndex":0,"name":"ifft1024F32Shader","kind":"function","signature":"ifft1024F32Shader()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/fft/ifft1024_f32.md","moduleTitle":"particle_voice/nn/kernels/fft/ifft1024_f32","source":"agi/particle_voice/nn/kernels/fft/ifft1024_f32.js","import":"/agi/particle_voice/nn/kernels/fft/ifft1024_f32.js","sourceHash":"22733db23e3f93bd6b455a5dc77e3308f377537ec606c8fe44d648b664fa4aa8","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/fft/ifft1024_f32.js#0001:FFT_ENTRY_POINT","exportIndex":1,"name":"FFT_ENTRY_POINT","kind":"re-export","signature":"FFT_ENTRY_POINT","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/fft/ifft1024_f32.md","moduleTitle":"particle_voice/nn/kernels/fft/ifft1024_f32","source":"agi/particle_voice/nn/kernels/fft/ifft1024_f32.js","import":"/agi/particle_voice/nn/kernels/fft/ifft1024_f32.js","sourceHash":"22733db23e3f93bd6b455a5dc77e3308f377537ec606c8fe44d648b664fa4aa8","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/fft/ifft1024_f32.js#0002:FFT_LOG2N","exportIndex":2,"name":"FFT_LOG2N","kind":"re-export","signature":"FFT_LOG2N","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/fft/ifft1024_f32.md","moduleTitle":"particle_voice/nn/kernels/fft/ifft1024_f32","source":"agi/particle_voice/nn/kernels/fft/ifft1024_f32.js","import":"/agi/particle_voice/nn/kernels/fft/ifft1024_f32.js","sourceHash":"22733db23e3f93bd6b455a5dc77e3308f377537ec606c8fe44d648b664fa4aa8","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/fft/ifft1024_f32.js#0003:FFT_N","exportIndex":3,"name":"FFT_N","kind":"re-export","signature":"FFT_N","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/fft/ifft1024_f32.md","moduleTitle":"particle_voice/nn/kernels/fft/ifft1024_f32","source":"agi/particle_voice/nn/kernels/fft/ifft1024_f32.js","import":"/agi/particle_voice/nn/kernels/fft/ifft1024_f32.js","sourceHash":"22733db23e3f93bd6b455a5dc77e3308f377537ec606c8fe44d648b664fa4aa8","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/fft/ifft1024_f32.js#0004:FFT_WORKGROUP_SIZE","exportIndex":4,"name":"FFT_WORKGROUP_SIZE","kind":"re-export","signature":"FFT_WORKGROUP_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/matmul/matmul_w8a16.md","moduleTitle":"particle_voice/nn/kernels/matmul/matmul_w8a16","source":"agi/particle_voice/nn/kernels/matmul/matmul_w8a16.js","import":"/agi/particle_voice/nn/kernels/matmul/matmul_w8a16.js","sourceHash":"e573221354603c35e438ee83cd17121d00705091e6d472733ae2065c6ce38e18","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/kernels/matmul/matmul_w8a16.js","title":"particle_voice/nn/kernels/matmul/matmul_w8a16","summary":"matmul/matmul_w8a16.js — Phase 1 ParticleNN kernel. INT8 weights (4-packed per u32, per-output-channel scale, `chunks/int8_pack.js`'s `unpack_int8`) x FP16 activations, FP32 accumulation, FP16 output — the real target this plan names, superseding R2's FP32-activation stand-in (`risk/MatmulW8A16Kernel.js`) now that R1 has proven `shader-f16` is available on at least one reference device. Falls back to FP32 activations/output when `useShaderF16` is false (DeviceContract-v0's `no-f16` tier) — same kernel body, different element type, not two separately-maintained kernels. Weight layout (unchanged from R2, already proven): logical weights are [K, N]; `packedWeights[n * (K/4) + k4]` is a u32 whose 4 bytes are the int8 weights for k = k4*4 + 0..3 (little end = lowest k); `scales[n]` is the per-output-channel dequantization scale. K must be a multiple of 4.","exportCount":3}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/matmul/matmul_w8a16.md","moduleTitle":"particle_voice/nn/kernels/matmul/matmul_w8a16","source":"agi/particle_voice/nn/kernels/matmul/matmul_w8a16.js","import":"/agi/particle_voice/nn/kernels/matmul/matmul_w8a16.js","sourceHash":"e573221354603c35e438ee83cd17121d00705091e6d472733ae2065c6ce38e18","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/matmul/matmul_w8a16.js#0000:matmulW8a16Shader","exportIndex":0,"name":"matmulW8a16Shader","kind":"function","signature":"matmulW8a16Shader({ useShaderF16 = false } = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/matmul/matmul_w8a16.md","moduleTitle":"particle_voice/nn/kernels/matmul/matmul_w8a16","source":"agi/particle_voice/nn/kernels/matmul/matmul_w8a16.js","import":"/agi/particle_voice/nn/kernels/matmul/matmul_w8a16.js","sourceHash":"e573221354603c35e438ee83cd17121d00705091e6d472733ae2065c6ce38e18","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/matmul/matmul_w8a16.js#0001:MATMUL_W8A16_ENTRY_POINT","exportIndex":1,"name":"MATMUL_W8A16_ENTRY_POINT","kind":"constant","signature":"MATMUL_W8A16_ENTRY_POINT","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/matmul/matmul_w8a16.md","moduleTitle":"particle_voice/nn/kernels/matmul/matmul_w8a16","source":"agi/particle_voice/nn/kernels/matmul/matmul_w8a16.js","import":"/agi/particle_voice/nn/kernels/matmul/matmul_w8a16.js","sourceHash":"e573221354603c35e438ee83cd17121d00705091e6d472733ae2065c6ce38e18","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/matmul/matmul_w8a16.js#0002:MATMUL_W8A16_WORKGROUP_SIZE","exportIndex":2,"name":"MATMUL_W8A16_WORKGROUP_SIZE","kind":"constant","signature":"MATMUL_W8A16_WORKGROUP_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/normalization/rmsnorm_f16.md","moduleTitle":"particle_voice/nn/kernels/normalization/rmsnorm_f16","source":"agi/particle_voice/nn/kernels/normalization/rmsnorm_f16.js","import":"/agi/particle_voice/nn/kernels/normalization/rmsnorm_f16.js","sourceHash":"598ad539ca4a533d2d0a56a11133457094e133738631d217d01f9e5a35cfe5be","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/kernels/normalization/rmsnorm_f16.js","title":"particle_voice/nn/kernels/normalization/rmsnorm_f16","summary":"normalization/rmsnorm_f16.js — Phase 1 ParticleNN kernel. Row-wise RMSNorm: `out[i] = x[i] / sqrt(mean(x^2) + eps) * weight[i]`. One workgroup per row; workgroup-shared reduction for the sum-of-squares (standard tree reduction, `WORKGROUP_SIZE` must be a power of two). Accumulates in f32 regardless of `useShaderF16`, matching `matmul_w8a16.js`'s \"FP32 accumulation\" convention — only the input/output storage element type changes with the feature flag.","exportCount":3}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/normalization/rmsnorm_f16.md","moduleTitle":"particle_voice/nn/kernels/normalization/rmsnorm_f16","source":"agi/particle_voice/nn/kernels/normalization/rmsnorm_f16.js","import":"/agi/particle_voice/nn/kernels/normalization/rmsnorm_f16.js","sourceHash":"598ad539ca4a533d2d0a56a11133457094e133738631d217d01f9e5a35cfe5be","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/normalization/rmsnorm_f16.js#0000:rmsnormF16Shader","exportIndex":0,"name":"rmsnormF16Shader","kind":"function","signature":"rmsnormF16Shader({ useShaderF16 = false, eps = 1e-6 } = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/normalization/rmsnorm_f16.md","moduleTitle":"particle_voice/nn/kernels/normalization/rmsnorm_f16","source":"agi/particle_voice/nn/kernels/normalization/rmsnorm_f16.js","import":"/agi/particle_voice/nn/kernels/normalization/rmsnorm_f16.js","sourceHash":"598ad539ca4a533d2d0a56a11133457094e133738631d217d01f9e5a35cfe5be","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/normalization/rmsnorm_f16.js#0001:RMSNORM_F16_ENTRY_POINT","exportIndex":1,"name":"RMSNORM_F16_ENTRY_POINT","kind":"constant","signature":"RMSNORM_F16_ENTRY_POINT","summary":"normalization/rmsnorm_f16.js — Phase 1 ParticleNN kernel. Row-wise RMSNorm: `out[i] = x[i] / sqrt(mean(x^2) + eps) * weight[i]`. One workgroup per row; workgroup-shared reduction for the sum-of-squares (standard tree reduction, `WORKGROUP_SIZE` must be a power of two). Accumulates in f32 regardless of `useShaderF16`, matching `matmul_w8a16.js`'s \"FP32 accumulation\" convention — only the input/output storage element type changes with the feature flag."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/normalization/rmsnorm_f16.md","moduleTitle":"particle_voice/nn/kernels/normalization/rmsnorm_f16","source":"agi/particle_voice/nn/kernels/normalization/rmsnorm_f16.js","import":"/agi/particle_voice/nn/kernels/normalization/rmsnorm_f16.js","sourceHash":"598ad539ca4a533d2d0a56a11133457094e133738631d217d01f9e5a35cfe5be","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/normalization/rmsnorm_f16.js#0002:RMSNORM_F16_WORKGROUP_SIZE","exportIndex":2,"name":"RMSNORM_F16_WORKGROUP_SIZE","kind":"constant","signature":"RMSNORM_F16_WORKGROUP_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/quantization/dequant_int8.md","moduleTitle":"particle_voice/nn/kernels/quantization/dequant_int8","source":"agi/particle_voice/nn/kernels/quantization/dequant_int8.js","import":"/agi/particle_voice/nn/kernels/quantization/dequant_int8.js","sourceHash":"7bbca96258783b21efd68b02b9692a392ff0b24392eb92c285e9da9acbcd7ce1","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/kernels/quantization/dequant_int8.js","title":"particle_voice/nn/kernels/quantization/dequant_int8","summary":"quantization/dequant_int8.js — Phase 1 ParticleNN kernel. Standalone unpack+dequantize kernel: `matmul_w8a16.js`/`conv1d_w8a16.js` fuse unpack+dequant+multiply-accumulate inline for performance, but `WeightPageUploader.js`/tooling sometimes need a plain materialized dequantized tensor (e.g. for a CPU-side parity check, or a debug visualization) without running a full matmul — this is that kernel. Uses the same `chunks/int8_pack.js` `unpack_int8` and per-block scale scheme as `ParticleTensor.js`'s documented `quant` metadata.","exportCount":3}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/quantization/dequant_int8.md","moduleTitle":"particle_voice/nn/kernels/quantization/dequant_int8","source":"agi/particle_voice/nn/kernels/quantization/dequant_int8.js","import":"/agi/particle_voice/nn/kernels/quantization/dequant_int8.js","sourceHash":"7bbca96258783b21efd68b02b9692a392ff0b24392eb92c285e9da9acbcd7ce1","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/quantization/dequant_int8.js#0000:dequantInt8Shader","exportIndex":0,"name":"dequantInt8Shader","kind":"function","signature":"dequantInt8Shader({ useShaderF16 = false } = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/quantization/dequant_int8.md","moduleTitle":"particle_voice/nn/kernels/quantization/dequant_int8","source":"agi/particle_voice/nn/kernels/quantization/dequant_int8.js","import":"/agi/particle_voice/nn/kernels/quantization/dequant_int8.js","sourceHash":"7bbca96258783b21efd68b02b9692a392ff0b24392eb92c285e9da9acbcd7ce1","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/quantization/dequant_int8.js#0001:DEQUANT_INT8_ENTRY_POINT","exportIndex":1,"name":"DEQUANT_INT8_ENTRY_POINT","kind":"constant","signature":"DEQUANT_INT8_ENTRY_POINT","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/quantization/dequant_int8.md","moduleTitle":"particle_voice/nn/kernels/quantization/dequant_int8","source":"agi/particle_voice/nn/kernels/quantization/dequant_int8.js","import":"/agi/particle_voice/nn/kernels/quantization/dequant_int8.js","sourceHash":"7bbca96258783b21efd68b02b9692a392ff0b24392eb92c285e9da9acbcd7ce1","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/quantization/dequant_int8.js#0002:DEQUANT_INT8_WORKGROUP_SIZE","exportIndex":2,"name":"DEQUANT_INT8_WORKGROUP_SIZE","kind":"constant","signature":"DEQUANT_INT8_WORKGROUP_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/quantization/pack_unpack.md","moduleTitle":"particle_voice/nn/kernels/quantization/pack_unpack","source":"agi/particle_voice/nn/kernels/quantization/pack_unpack.js","import":"/agi/particle_voice/nn/kernels/quantization/pack_unpack.js","sourceHash":"90b0f96a8adb1b4a91da43cea0f3defb250926901d802fbe8edde199ec2d4d29","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/kernels/quantization/pack_unpack.js","title":"particle_voice/nn/kernels/quantization/pack_unpack","summary":"quantization/pack_unpack.js — Phase 1 ParticleNN kernel. The pack direction complementing `dequant_int8.js`'s unpack direction: a GPU kernel that bit-packs already-quantized int8 values (as `i32` inputs already rounded/clamped to [-127, 127] — computing the *scale* is a separate reduction pass, not this kernel's job) into 4-packed u32 words, matching `chunks/int8_pack.js`'s host-side `quantizeInt8Blockwise`'s packed-word layout exactly (so a GPU-side requantization pipeline and the JS host-side one are interchangeable).","exportCount":4}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/quantization/pack_unpack.md","moduleTitle":"particle_voice/nn/kernels/quantization/pack_unpack","source":"agi/particle_voice/nn/kernels/quantization/pack_unpack.js","import":"/agi/particle_voice/nn/kernels/quantization/pack_unpack.js","sourceHash":"90b0f96a8adb1b4a91da43cea0f3defb250926901d802fbe8edde199ec2d4d29","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/quantization/pack_unpack.js#0000:packInt8Shader","exportIndex":0,"name":"packInt8Shader","kind":"function","signature":"packInt8Shader()","summary":"Packs `array<i32>` (one already-quantized value per element, [-127,127]) into `array<u32>` (4 values per word). `count` must be a multiple of 4."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/quantization/pack_unpack.md","moduleTitle":"particle_voice/nn/kernels/quantization/pack_unpack","source":"agi/particle_voice/nn/kernels/quantization/pack_unpack.js","import":"/agi/particle_voice/nn/kernels/quantization/pack_unpack.js","sourceHash":"90b0f96a8adb1b4a91da43cea0f3defb250926901d802fbe8edde199ec2d4d29","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/quantization/pack_unpack.js#0001:packInt8Reference","exportIndex":1,"name":"packInt8Reference","kind":"function","signature":"packInt8Reference(quantizedInt8Array)","summary":"JS-side reference pack, for parity-testing `packInt8Shader` against a CPU implementation. Mirrors `chunks/int8_pack.js`'s packing loop exactly."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/quantization/pack_unpack.md","moduleTitle":"particle_voice/nn/kernels/quantization/pack_unpack","source":"agi/particle_voice/nn/kernels/quantization/pack_unpack.js","import":"/agi/particle_voice/nn/kernels/quantization/pack_unpack.js","sourceHash":"90b0f96a8adb1b4a91da43cea0f3defb250926901d802fbe8edde199ec2d4d29","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/quantization/pack_unpack.js#0002:PACK_INT8_ENTRY_POINT","exportIndex":2,"name":"PACK_INT8_ENTRY_POINT","kind":"constant","signature":"PACK_INT8_ENTRY_POINT","summary":"quantization/pack_unpack.js — Phase 1 ParticleNN kernel. The pack direction complementing `dequant_int8.js`'s unpack direction: a GPU kernel that bit-packs already-quantized int8 values (as `i32` inputs already rounded/clamped to [-127, 127] — computing the *scale* is a separate reduction pass, not this kernel's job) into 4-packed u32 words, matching `chunks/int8_pack.js`'s host-side `quantizeInt8Blockwise`'s packed-word layout exactly (so a GPU-side requantization pipeline and the JS host-side one are interchangeable)."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/quantization/pack_unpack.md","moduleTitle":"particle_voice/nn/kernels/quantization/pack_unpack","source":"agi/particle_voice/nn/kernels/quantization/pack_unpack.js","import":"/agi/particle_voice/nn/kernels/quantization/pack_unpack.js","sourceHash":"90b0f96a8adb1b4a91da43cea0f3defb250926901d802fbe8edde199ec2d4d29","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/quantization/pack_unpack.js#0003:PACK_INT8_WORKGROUP_SIZE","exportIndex":3,"name":"PACK_INT8_WORKGROUP_SIZE","kind":"constant","signature":"PACK_INT8_WORKGROUP_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/speech/crossfade.md","moduleTitle":"particle_voice/nn/kernels/speech/crossfade","source":"agi/particle_voice/nn/kernels/speech/crossfade.js","import":"/agi/particle_voice/nn/kernels/speech/crossfade.js","sourceHash":"6a6d8a82d15cff5ee5fc0818df6413afe55c7a9a1924fd11ccd7a8c236f9a6f1","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/kernels/speech/crossfade.js","title":"particle_voice/nn/kernels/speech/crossfade","summary":"crossfade.js — Phase 2 ParticleNN DSP kernel. Equal-power crossfade between two equal-length signals over their full length: `t = i/(length-1)`, `out = a*cos(t*pi/2) + b*sin(t*pi/2)` — equal-power (not linear) so the perceived loudness stays constant through the fade instead of dipping at the midpoint (linear crossfade's well-known flaw), matching the constant-power crossfade convention `ARCHITECTURE.md`'s reaction-system voice transitions call for.","exportCount":3}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/speech/crossfade.md","moduleTitle":"particle_voice/nn/kernels/speech/crossfade","source":"agi/particle_voice/nn/kernels/speech/crossfade.js","import":"/agi/particle_voice/nn/kernels/speech/crossfade.js","sourceHash":"6a6d8a82d15cff5ee5fc0818df6413afe55c7a9a1924fd11ccd7a8c236f9a6f1","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/speech/crossfade.js#0000:crossfadeShader","exportIndex":0,"name":"crossfadeShader","kind":"function","signature":"crossfadeShader()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/speech/crossfade.md","moduleTitle":"particle_voice/nn/kernels/speech/crossfade","source":"agi/particle_voice/nn/kernels/speech/crossfade.js","import":"/agi/particle_voice/nn/kernels/speech/crossfade.js","sourceHash":"6a6d8a82d15cff5ee5fc0818df6413afe55c7a9a1924fd11ccd7a8c236f9a6f1","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/speech/crossfade.js#0001:CROSSFADE_ENTRY_POINT","exportIndex":1,"name":"CROSSFADE_ENTRY_POINT","kind":"constant","signature":"CROSSFADE_ENTRY_POINT","summary":"crossfade.js — Phase 2 ParticleNN DSP kernel. Equal-power crossfade between two equal-length signals over their full length: `t = i/(length-1)`, `out = a*cos(t*pi/2) + b*sin(t*pi/2)` — equal-power (not linear) so the perceived loudness stays constant through the fade instead of dipping at the midpoint (linear crossfade's well-known flaw), matching the constant-power crossfade convention `ARCHITECTURE.md`'s reaction-system voice transitions call for."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/speech/crossfade.md","moduleTitle":"particle_voice/nn/kernels/speech/crossfade","source":"agi/particle_voice/nn/kernels/speech/crossfade.js","import":"/agi/particle_voice/nn/kernels/speech/crossfade.js","sourceHash":"6a6d8a82d15cff5ee5fc0818df6413afe55c7a9a1924fd11ccd7a8c236f9a6f1","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/speech/crossfade.js#0002:CROSSFADE_WORKGROUP_SIZE","exportIndex":2,"name":"CROSSFADE_WORKGROUP_SIZE","kind":"constant","signature":"CROSSFADE_WORKGROUP_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/speech/embedding_f16.md","moduleTitle":"particle_voice/nn/kernels/speech/embedding_f16","source":"agi/particle_voice/nn/kernels/speech/embedding_f16.js","import":"/agi/particle_voice/nn/kernels/speech/embedding_f16.js","sourceHash":"429357dde15d836e92ad885e48587bdaf14223107ea0287f4acee4ab0c1ca206","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/kernels/speech/embedding_f16.js","title":"particle_voice/nn/kernels/speech/embedding_f16","summary":"speech/embedding_f16.js — Phase 1 ParticleNN kernel. Row-gather embedding lookup: `output[i, :] = table[ids[i], :]`. Named under `speech/` (not `matmul/`) because its first production consumer is `PhonemeEncoder.js`'s phoneme-ID embedding (Phase 3), looking up rows out of `PhonemeSet-v0`'s fixed 42-entry table — but the kernel itself is generic over table/embedding-dim size. (That count read \"51\" until Phase 3: the spec's own summary line miscounted its vowel tables. `frontend/PhonemeSet.js` is the executable source of truth and exports `PHONEME_COUNT = 42`, which is what a caller should size `tableRows` from rather than any hard-coded literal.) Output layout is `[numIds, embedDim]` — SEQUENCE-major, one row per token. Note that `convolution/conv1d_w8a16.js` expects CHANNEL-major `[inChannels, seqLen]`, so composing the two requires `core/transpose_2d.js` in between; `PhonemeEncoder.js` does exactly that.","exportCount":3}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/speech/embedding_f16.md","moduleTitle":"particle_voice/nn/kernels/speech/embedding_f16","source":"agi/particle_voice/nn/kernels/speech/embedding_f16.js","import":"/agi/particle_voice/nn/kernels/speech/embedding_f16.js","sourceHash":"429357dde15d836e92ad885e48587bdaf14223107ea0287f4acee4ab0c1ca206","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/speech/embedding_f16.js#0000:embeddingF16Shader","exportIndex":0,"name":"embeddingF16Shader","kind":"function","signature":"embeddingF16Shader({ useShaderF16 = false } = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/speech/embedding_f16.md","moduleTitle":"particle_voice/nn/kernels/speech/embedding_f16","source":"agi/particle_voice/nn/kernels/speech/embedding_f16.js","import":"/agi/particle_voice/nn/kernels/speech/embedding_f16.js","sourceHash":"429357dde15d836e92ad885e48587bdaf14223107ea0287f4acee4ab0c1ca206","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/speech/embedding_f16.js#0001:EMBEDDING_F16_ENTRY_POINT","exportIndex":1,"name":"EMBEDDING_F16_ENTRY_POINT","kind":"constant","signature":"EMBEDDING_F16_ENTRY_POINT","summary":"speech/embedding_f16.js — Phase 1 ParticleNN kernel. Row-gather embedding lookup: `output[i, :] = table[ids[i], :]`. Named under `speech/` (not `matmul/`) because its first production consumer is `PhonemeEncoder.js`'s phoneme-ID embedding (Phase 3), looking up rows out of `PhonemeSet-v0`'s fixed 42-entry table — but the kernel itself is generic over table/embedding-dim size. (That count read \"51\" until Phase 3: the spec's own summary line miscounted its vowel tables. `frontend/PhonemeSet.js` is the executable source of truth and exports `PHONEME_COUNT = 42`, which is what a caller should size `tableRows` from rather than any hard-coded literal.) Output layout is `[numIds, embedDim]` — SEQUENCE-major, one row per token. Note that `convolution/conv1d_w8a16.js` expects CHANNEL-major `[inChannels, seqLen]`, so composing the two requires `core/transpose_2d.js` in between; `PhonemeEncoder.js` does exactly that."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/speech/embedding_f16.md","moduleTitle":"particle_voice/nn/kernels/speech/embedding_f16","source":"agi/particle_voice/nn/kernels/speech/embedding_f16.js","import":"/agi/particle_voice/nn/kernels/speech/embedding_f16.js","sourceHash":"429357dde15d836e92ad885e48587bdaf14223107ea0287f4acee4ab0c1ca206","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/speech/embedding_f16.js#0002:EMBEDDING_F16_WORKGROUP_SIZE","exportIndex":2,"name":"EMBEDDING_F16_WORKGROUP_SIZE","kind":"constant","signature":"EMBEDDING_F16_WORKGROUP_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/speech/harmonic_source.md","moduleTitle":"particle_voice/nn/kernels/speech/harmonic_source","source":"agi/particle_voice/nn/kernels/speech/harmonic_source.js","import":"/agi/particle_voice/nn/kernels/speech/harmonic_source.js","sourceHash":"e4c63320996de935a002ed90d7ee86a1c84839a087e94e90de90a1686366fd1f","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/kernels/speech/harmonic_source.js","title":"particle_voice/nn/kernels/speech/harmonic_source","summary":"harmonic_source.js — Phase 2 ParticleNN DSP kernel. Voiced glottal pulse train — the \"LF-lite\" raised-cosine shape proven in `risk/GlottalSource.js` (R6): flow(n) = 0.5*(1-cos(2*pi*cyclePos(n)/openSamples))  for cyclePos(n) < openSamples flow(n) = 0                                           otherwise Unlike R6's per-sample sequential CPU generator (which tracks `cyclePos` as running state, updated one sample at a time), this kernel computes every sample **in closed form and fully in parallel**: `cyclePos(n) = (start_phase + n) mod period_samples`, using an **absolute sample counter** (`start_phase`) the caller persists and advances across chunk boundaries — exactly the \"LF glottal source with absolute counter\" the plan's checklist calls for, and mathematically identical to R6's per-sample recurrence for as long as `period_samples`/`open_samples` hold constant across the dispatched chunk (the same constant-until-the- next-period-boundary assumption R6's own generator already makes). Aspiration noise is NOT mixed in here (unlike R6's spike, which combined both for simplicity) — that is `noise_source.js`'s job, mixed downstream, since the operator allowlist treats voiced and unvoiced excitation as independent ops that a later stage combines.","exportCount":3}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/speech/harmonic_source.md","moduleTitle":"particle_voice/nn/kernels/speech/harmonic_source","source":"agi/particle_voice/nn/kernels/speech/harmonic_source.js","import":"/agi/particle_voice/nn/kernels/speech/harmonic_source.js","sourceHash":"e4c63320996de935a002ed90d7ee86a1c84839a087e94e90de90a1686366fd1f","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/speech/harmonic_source.js#0000:harmonicSourceShader","exportIndex":0,"name":"harmonicSourceShader","kind":"function","signature":"harmonicSourceShader()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/speech/harmonic_source.md","moduleTitle":"particle_voice/nn/kernels/speech/harmonic_source","source":"agi/particle_voice/nn/kernels/speech/harmonic_source.js","import":"/agi/particle_voice/nn/kernels/speech/harmonic_source.js","sourceHash":"e4c63320996de935a002ed90d7ee86a1c84839a087e94e90de90a1686366fd1f","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/speech/harmonic_source.js#0001:HARMONIC_SOURCE_ENTRY_POINT","exportIndex":1,"name":"HARMONIC_SOURCE_ENTRY_POINT","kind":"constant","signature":"HARMONIC_SOURCE_ENTRY_POINT","summary":"harmonic_source.js — Phase 2 ParticleNN DSP kernel. Voiced glottal pulse train — the \"LF-lite\" raised-cosine shape proven in `risk/GlottalSource.js` (R6): flow(n) = 0.5*(1-cos(2*pi*cyclePos(n)/openSamples))  for cyclePos(n) < openSamples flow(n) = 0                                           otherwise Unlike R6's per-sample sequential CPU generator (which tracks `cyclePos` as running state, updated one sample at a time), this kernel computes every sample **in closed form and fully in parallel**: `cyclePos(n) = (start_phase + n) mod period_samples`, using an **absolute sample counter** (`start_phase`) the caller persists and advances across chunk boundaries — exactly the \"LF glottal source with absolute counter\" the plan's checklist calls for, and mathematically identical to R6's per-sample recurrence for as long as `period_samples`/`open_samples` hold constant across the dispatched chunk (the same constant-until-the- next-period-boundary assumption R6's own generator already makes). Aspiration noise is NOT mixed in here (unlike R6's spike, which combined both for simplicity) — that is `noise_source.js`'s job, mixed downstream, since the operator allowlist treats voiced and unvoiced excitation as independent ops that a later stage combines."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/speech/harmonic_source.md","moduleTitle":"particle_voice/nn/kernels/speech/harmonic_source","source":"agi/particle_voice/nn/kernels/speech/harmonic_source.js","import":"/agi/particle_voice/nn/kernels/speech/harmonic_source.js","sourceHash":"e4c63320996de935a002ed90d7ee86a1c84839a087e94e90de90a1686366fd1f","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/speech/harmonic_source.js#0002:HARMONIC_SOURCE_WORKGROUP_SIZE","exportIndex":2,"name":"HARMONIC_SOURCE_WORKGROUP_SIZE","kind":"constant","signature":"HARMONIC_SOURCE_WORKGROUP_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/speech/mel_filterbank.md","moduleTitle":"particle_voice/nn/kernels/speech/mel_filterbank","source":"agi/particle_voice/nn/kernels/speech/mel_filterbank.js","import":"/agi/particle_voice/nn/kernels/speech/mel_filterbank.js","sourceHash":"722bcc86cc8aa8e4f93c0be2d7ef3ca0b4a69f2d4bbf1a15ba1623645d0e3425","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/kernels/speech/mel_filterbank.js","title":"particle_voice/nn/kernels/speech/mel_filterbank","summary":"mel_filterbank.js — Phase 2 ParticleNN DSP kernel. Applies a precomputed triangular mel filterbank matrix to a power/ magnitude spectrogram: `mel[f, m] = sum_k filterbank[m, k] * spectrum[f, k]` — a small matmul-shaped reduction, not a general matmul (the filterbank is fixed-shape and typically far smaller than `matmul_w8a16.js`'s tile sizes, so a dedicated one-thread-per-output-element kernel is simpler and avoids forcing an INT8-quantized weight path onto filter coefficients that are naturally small dense f32 matrices, not learned weights). The filterbank matrix itself (triangular mel-scale filters for a given sample rate/`n_mels`/`fmin`/`fmax`) is computed once on the CPU at model-load time — this kernel only applies it.","exportCount":3}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/speech/mel_filterbank.md","moduleTitle":"particle_voice/nn/kernels/speech/mel_filterbank","source":"agi/particle_voice/nn/kernels/speech/mel_filterbank.js","import":"/agi/particle_voice/nn/kernels/speech/mel_filterbank.js","sourceHash":"722bcc86cc8aa8e4f93c0be2d7ef3ca0b4a69f2d4bbf1a15ba1623645d0e3425","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/speech/mel_filterbank.js#0000:melFilterbankShader","exportIndex":0,"name":"melFilterbankShader","kind":"function","signature":"melFilterbankShader()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/speech/mel_filterbank.md","moduleTitle":"particle_voice/nn/kernels/speech/mel_filterbank","source":"agi/particle_voice/nn/kernels/speech/mel_filterbank.js","import":"/agi/particle_voice/nn/kernels/speech/mel_filterbank.js","sourceHash":"722bcc86cc8aa8e4f93c0be2d7ef3ca0b4a69f2d4bbf1a15ba1623645d0e3425","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/speech/mel_filterbank.js#0001:MEL_FILTERBANK_ENTRY_POINT","exportIndex":1,"name":"MEL_FILTERBANK_ENTRY_POINT","kind":"constant","signature":"MEL_FILTERBANK_ENTRY_POINT","summary":"mel_filterbank.js — Phase 2 ParticleNN DSP kernel. Applies a precomputed triangular mel filterbank matrix to a power/ magnitude spectrogram: `mel[f, m] = sum_k filterbank[m, k] * spectrum[f, k]` — a small matmul-shaped reduction, not a general matmul (the filterbank is fixed-shape and typically far smaller than `matmul_w8a16.js`'s tile sizes, so a dedicated one-thread-per-output-element kernel is simpler and avoids forcing an INT8-quantized weight path onto filter coefficients that are naturally small dense f32 matrices, not learned weights). The filterbank matrix itself (triangular mel-scale filters for a given sample rate/`n_mels`/`fmin`/`fmax`) is computed once on the CPU at model-load time — this kernel only applies it."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/speech/mel_filterbank.md","moduleTitle":"particle_voice/nn/kernels/speech/mel_filterbank","source":"agi/particle_voice/nn/kernels/speech/mel_filterbank.js","import":"/agi/particle_voice/nn/kernels/speech/mel_filterbank.js","sourceHash":"722bcc86cc8aa8e4f93c0be2d7ef3ca0b4a69f2d4bbf1a15ba1623645d0e3425","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/speech/mel_filterbank.js#0002:MEL_FILTERBANK_WORKGROUP_SIZE","exportIndex":2,"name":"MEL_FILTERBANK_WORKGROUP_SIZE","kind":"constant","signature":"MEL_FILTERBANK_WORKGROUP_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/speech/noise_source.md","moduleTitle":"particle_voice/nn/kernels/speech/noise_source","source":"agi/particle_voice/nn/kernels/speech/noise_source.js","import":"/agi/particle_voice/nn/kernels/speech/noise_source.js","sourceHash":"ee9442eec7b42af87042930c1b84cea804189903a9c738b7410385c2c7201070","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/kernels/speech/noise_source.js","title":"particle_voice/nn/kernels/speech/noise_source","summary":"noise_source.js — Phase 2 ParticleNN DSP kernel. Deterministic, chunk-boundary-independent aspiration/turbulence noise — the exact integer hash proven in `risk/GlottalSource.js` (R6)'s `noiseAt(absoluteIndex, seed)` (itself the same technique as `StreamingContinuitySource.js`'s counter-based noise): a two-round Murmur-style avalanche hash of `absoluteIndex ^ seed`, mapped to `[-1, 1)`. Counter-based (not a stateful PRNG stream) so any two chunks covering the same absolute sample index always produce the same noise value, regardless of dispatch order or chunk boundaries — required for glitch-free streaming synthesis.","exportCount":3}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/speech/noise_source.md","moduleTitle":"particle_voice/nn/kernels/speech/noise_source","source":"agi/particle_voice/nn/kernels/speech/noise_source.js","import":"/agi/particle_voice/nn/kernels/speech/noise_source.js","sourceHash":"ee9442eec7b42af87042930c1b84cea804189903a9c738b7410385c2c7201070","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/speech/noise_source.js#0000:noiseSourceShader","exportIndex":0,"name":"noiseSourceShader","kind":"function","signature":"noiseSourceShader()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/speech/noise_source.md","moduleTitle":"particle_voice/nn/kernels/speech/noise_source","source":"agi/particle_voice/nn/kernels/speech/noise_source.js","import":"/agi/particle_voice/nn/kernels/speech/noise_source.js","sourceHash":"ee9442eec7b42af87042930c1b84cea804189903a9c738b7410385c2c7201070","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/speech/noise_source.js#0001:NOISE_SOURCE_ENTRY_POINT","exportIndex":1,"name":"NOISE_SOURCE_ENTRY_POINT","kind":"constant","signature":"NOISE_SOURCE_ENTRY_POINT","summary":"noise_source.js — Phase 2 ParticleNN DSP kernel. Deterministic, chunk-boundary-independent aspiration/turbulence noise — the exact integer hash proven in `risk/GlottalSource.js` (R6)'s `noiseAt(absoluteIndex, seed)` (itself the same technique as `StreamingContinuitySource.js`'s counter-based noise): a two-round Murmur-style avalanche hash of `absoluteIndex ^ seed`, mapped to `[-1, 1)`. Counter-based (not a stateful PRNG stream) so any two chunks covering the same absolute sample index always produce the same noise value, regardless of dispatch order or chunk boundaries — required for glitch-free streaming synthesis."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/speech/noise_source.md","moduleTitle":"particle_voice/nn/kernels/speech/noise_source","source":"agi/particle_voice/nn/kernels/speech/noise_source.js","import":"/agi/particle_voice/nn/kernels/speech/noise_source.js","sourceHash":"ee9442eec7b42af87042930c1b84cea804189903a9c738b7410385c2c7201070","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/speech/noise_source.js#0002:NOISE_SOURCE_WORKGROUP_SIZE","exportIndex":2,"name":"NOISE_SOURCE_WORKGROUP_SIZE","kind":"constant","signature":"NOISE_SOURCE_WORKGROUP_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/speech/overlap_add.md","moduleTitle":"particle_voice/nn/kernels/speech/overlap_add","source":"agi/particle_voice/nn/kernels/speech/overlap_add.js","import":"/agi/particle_voice/nn/kernels/speech/overlap_add.js","sourceHash":"d8034ad1def3f70176578813a48afd42eb3c50223999e246839a9e060ff454ed","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/kernels/speech/overlap_add.js","title":"particle_voice/nn/kernels/speech/overlap_add","summary":"overlap_add.js — Phase 2 ParticleNN DSP kernel. Synthesis overlap-add: reconstructs a continuous signal from overlapping `frame_size`-length windowed frames at `hop_size` stride, matching `risk/WolaSignals.js`'s proven `overlapAdd` reference. Implemented as a **gather**, not a scatter: each output thread owns exactly one output sample and sums every frame that overlaps it (`f*hop <= t < f*hop + frame_size`) — WGSL's core spec has no `atomic<f32>` add, so a scatter (`output[t] += ...` from many threads across overlapping frames) would race; gathering avoids that entirely with no atomics and no serialized per-frame dispatches needed. `component_stride` is the number of consecutive `f32` components per logical sample in `frames_in`, so this kernel can consume both layouts the pipeline actually produces: - `component_stride = 1` — flat real frames. - `component_stride = 2` — INTERLEAVED COMPLEX frames, which is exactly what `ifft1024_f32.js` emits. Only the REAL component is summed (the imaginary residue of an inverse-transformed real signal is numerical noise), making this the ISTFT synthesis stage directly, with no separate deinterleave kernel needed in between. Without this stride, `frames_in[f*frame_size + n]` reads the interleaved-complex buffer as if it were flat real — silently mixing real and imaginary components of the wrong samples together. That gap was found by the `tests/particle-voice/stft-istft-identity.html` integration test.","exportCount":3}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/speech/overlap_add.md","moduleTitle":"particle_voice/nn/kernels/speech/overlap_add","source":"agi/particle_voice/nn/kernels/speech/overlap_add.js","import":"/agi/particle_voice/nn/kernels/speech/overlap_add.js","sourceHash":"d8034ad1def3f70176578813a48afd42eb3c50223999e246839a9e060ff454ed","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/speech/overlap_add.js#0000:overlapAddShader","exportIndex":0,"name":"overlapAddShader","kind":"function","signature":"overlapAddShader()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/speech/overlap_add.md","moduleTitle":"particle_voice/nn/kernels/speech/overlap_add","source":"agi/particle_voice/nn/kernels/speech/overlap_add.js","import":"/agi/particle_voice/nn/kernels/speech/overlap_add.js","sourceHash":"d8034ad1def3f70176578813a48afd42eb3c50223999e246839a9e060ff454ed","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/speech/overlap_add.js#0001:OVERLAP_ADD_ENTRY_POINT","exportIndex":1,"name":"OVERLAP_ADD_ENTRY_POINT","kind":"constant","signature":"OVERLAP_ADD_ENTRY_POINT","summary":"overlap_add.js — Phase 2 ParticleNN DSP kernel. Synthesis overlap-add: reconstructs a continuous signal from overlapping `frame_size`-length windowed frames at `hop_size` stride, matching `risk/WolaSignals.js`'s proven `overlapAdd` reference. Implemented as a **gather**, not a scatter: each output thread owns exactly one output sample and sums every frame that overlaps it (`f*hop <= t < f*hop + frame_size`) — WGSL's core spec has no `atomic<f32>` add, so a scatter (`output[t] += ...` from many threads across overlapping frames) would race; gathering avoids that entirely with no atomics and no serialized per-frame dispatches needed. `component_stride` is the number of consecutive `f32` components per logical sample in `frames_in`, so this kernel can consume both layouts the pipeline actually produces: - `component_stride = 1` — flat real frames. - `component_stride = 2` — INTERLEAVED COMPLEX frames, which is exactly what `ifft1024_f32.js` emits. Only the REAL component is summed (the imaginary residue of an inverse-transformed real signal is numerical noise), making this the ISTFT synthesis stage directly, with no separate deinterleave kernel needed in between. Without this stride, `frames_in[f*frame_size + n]` reads the interleaved-complex buffer as if it were flat real — silently mixing real and imaginary components of the wrong samples together. That gap was found by the `tests/particle-voice/stft-istft-identity.html` integration test."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/speech/overlap_add.md","moduleTitle":"particle_voice/nn/kernels/speech/overlap_add","source":"agi/particle_voice/nn/kernels/speech/overlap_add.js","import":"/agi/particle_voice/nn/kernels/speech/overlap_add.js","sourceHash":"d8034ad1def3f70176578813a48afd42eb3c50223999e246839a9e060ff454ed","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/speech/overlap_add.js#0002:OVERLAP_ADD_WORKGROUP_SIZE","exportIndex":2,"name":"OVERLAP_ADD_WORKGROUP_SIZE","kind":"constant","signature":"OVERLAP_ADD_WORKGROUP_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/speech/stft.md","moduleTitle":"particle_voice/nn/kernels/speech/stft","source":"agi/particle_voice/nn/kernels/speech/stft.js","import":"/agi/particle_voice/nn/kernels/speech/stft.js","sourceHash":"2f1a0d7b155a23e65188b6f88b2782829ab86ed7cd51e9fed95c79fb5439d661","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/kernels/speech/stft.js","title":"particle_voice/nn/kernels/speech/stft","summary":"stft.js — Phase 2 ParticleNN DSP kernel. The framing half of STFT: slices overlapping `frame_size`-length windows from a flat mono signal at `hop_size` stride (zero-padded past the signal's end), matching `risk/WolaSignals.js`'s proven `sliceFrames` reference exactly. Writes each frame's samples into the real channel of an interleaved-complex output (`fft1024_f32.js`'s layout) with the imaginary channel zeroed, so the output can be windowed (`window.js`) then fed directly to `fft1024_f32.js` — the actual FFT transform is a separate op (already in the operator allowlist), not duplicated here.","exportCount":3}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/speech/stft.md","moduleTitle":"particle_voice/nn/kernels/speech/stft","source":"agi/particle_voice/nn/kernels/speech/stft.js","import":"/agi/particle_voice/nn/kernels/speech/stft.js","sourceHash":"2f1a0d7b155a23e65188b6f88b2782829ab86ed7cd51e9fed95c79fb5439d661","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/speech/stft.js#0000:stftShader","exportIndex":0,"name":"stftShader","kind":"function","signature":"stftShader()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/speech/stft.md","moduleTitle":"particle_voice/nn/kernels/speech/stft","source":"agi/particle_voice/nn/kernels/speech/stft.js","import":"/agi/particle_voice/nn/kernels/speech/stft.js","sourceHash":"2f1a0d7b155a23e65188b6f88b2782829ab86ed7cd51e9fed95c79fb5439d661","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/speech/stft.js#0001:STFT_ENTRY_POINT","exportIndex":1,"name":"STFT_ENTRY_POINT","kind":"constant","signature":"STFT_ENTRY_POINT","summary":"stft.js — Phase 2 ParticleNN DSP kernel. The framing half of STFT: slices overlapping `frame_size`-length windows from a flat mono signal at `hop_size` stride (zero-padded past the signal's end), matching `risk/WolaSignals.js`'s proven `sliceFrames` reference exactly. Writes each frame's samples into the real channel of an interleaved-complex output (`fft1024_f32.js`'s layout) with the imaginary channel zeroed, so the output can be windowed (`window.js`) then fed directly to `fft1024_f32.js` — the actual FFT transform is a separate op (already in the operator allowlist), not duplicated here."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/speech/stft.md","moduleTitle":"particle_voice/nn/kernels/speech/stft","source":"agi/particle_voice/nn/kernels/speech/stft.js","import":"/agi/particle_voice/nn/kernels/speech/stft.js","sourceHash":"2f1a0d7b155a23e65188b6f88b2782829ab86ed7cd51e9fed95c79fb5439d661","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/speech/stft.js#0002:STFT_WORKGROUP_SIZE","exportIndex":2,"name":"STFT_WORKGROUP_SIZE","kind":"constant","signature":"STFT_WORKGROUP_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/speech/window.md","moduleTitle":"particle_voice/nn/kernels/speech/window","source":"agi/particle_voice/nn/kernels/speech/window.js","import":"/agi/particle_voice/nn/kernels/speech/window.js","sourceHash":"ed9150e02394465ffea4789da4d3ed8b7d85d202fce393e562302d25b830f603","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/kernels/speech/window.js","title":"particle_voice/nn/kernels/speech/window","summary":"window.js — Phase 2 ParticleNN DSP kernel. Applies a Hann window in-place across framed audio: `out[f,n] = in[f,n] * 0.5*(1-cos(2*pi*n/(N-1)))`, matching `risk/WolaSignals.js`'s proven `hannWindow`/`applyWindow` CPU reference exactly (same coefficient formula) so R3's WOLA identity tests remain the ground truth this kernel is checked against. The coefficient is computed in-shader from the frame-relative index rather than read from a precomputed buffer — one fewer buffer to manage, and Hann's formula is cheap per-element. `stride` is the number of consecutive `f32` components per logical sample, so the same kernel windows both layouts this pipeline actually produces: - `stride = 1` — flat real frames (`[f0s0, f0s1, ...]`). - `stride = 2` — INTERLEAVED COMPLEX frames (`[re, im, re, im, ...]`), which is exactly what `stft.js` emits and what `fft1024_f32.js` consumes. Both the real and imaginary component of a sample get the SAME coefficient (the correct definition of windowing a complex signal), because `n` is derived from the logical sample index `i / stride`, not the raw component index. Without this stride, `n = i % frame_size` silently mis-assigns coefficients when handed interleaved-complex data (component index and sample index diverge by a factor of 2), so `stft.js`'s documented \"output can be windowed (window.js) then fed directly to fft1024_f32.js\" composition would produce a wrong window. That gap was found by the `tests/particle-voice/stft-istft-identity.html` integration test — each kernel passed its own parity test in isolation, but the composed WOLA round-trip did not reconstruct.","exportCount":3}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/speech/window.md","moduleTitle":"particle_voice/nn/kernels/speech/window","source":"agi/particle_voice/nn/kernels/speech/window.js","import":"/agi/particle_voice/nn/kernels/speech/window.js","sourceHash":"ed9150e02394465ffea4789da4d3ed8b7d85d202fce393e562302d25b830f603","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/speech/window.js#0000:windowShader","exportIndex":0,"name":"windowShader","kind":"function","signature":"windowShader()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/speech/window.md","moduleTitle":"particle_voice/nn/kernels/speech/window","source":"agi/particle_voice/nn/kernels/speech/window.js","import":"/agi/particle_voice/nn/kernels/speech/window.js","sourceHash":"ed9150e02394465ffea4789da4d3ed8b7d85d202fce393e562302d25b830f603","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/speech/window.js#0001:WINDOW_ENTRY_POINT","exportIndex":1,"name":"WINDOW_ENTRY_POINT","kind":"constant","signature":"WINDOW_ENTRY_POINT","summary":"window.js — Phase 2 ParticleNN DSP kernel. Applies a Hann window in-place across framed audio: `out[f,n] = in[f,n] * 0.5*(1-cos(2*pi*n/(N-1)))`, matching `risk/WolaSignals.js`'s proven `hannWindow`/`applyWindow` CPU reference exactly (same coefficient formula) so R3's WOLA identity tests remain the ground truth this kernel is checked against. The coefficient is computed in-shader from the frame-relative index rather than read from a precomputed buffer — one fewer buffer to manage, and Hann's formula is cheap per-element. `stride` is the number of consecutive `f32` components per logical sample, so the same kernel windows both layouts this pipeline actually produces: - `stride = 1` — flat real frames (`[f0s0, f0s1, ...]`). - `stride = 2` — INTERLEAVED COMPLEX frames (`[re, im, re, im, ...]`), which is exactly what `stft.js` emits and what `fft1024_f32.js` consumes. Both the real and imaginary component of a sample get the SAME coefficient (the correct definition of windowing a complex signal), because `n` is derived from the logical sample index `i / stride`, not the raw component index. Without this stride, `n = i % frame_size` silently mis-assigns coefficients when handed interleaved-complex data (component index and sample index diverge by a factor of 2), so `stft.js`'s documented \"output can be windowed (window.js) then fed directly to fft1024_f32.js\" composition would produce a wrong window. That gap was found by the `tests/particle-voice/stft-istft-identity.html` integration test — each kernel passed its own parity test in isolation, but the composed WOLA round-trip did not reconstruct."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/kernels/speech/window.md","moduleTitle":"particle_voice/nn/kernels/speech/window","source":"agi/particle_voice/nn/kernels/speech/window.js","import":"/agi/particle_voice/nn/kernels/speech/window.js","sourceHash":"ed9150e02394465ffea4789da4d3ed8b7d85d202fce393e562302d25b830f603","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/kernels/speech/window.js#0002:WINDOW_WORKGROUP_SIZE","exportIndex":2,"name":"WINDOW_WORKGROUP_SIZE","kind":"constant","signature":"WINDOW_WORKGROUP_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/memory/ActivationArena.md","moduleTitle":"particle_voice/nn/memory/ActivationArena","source":"agi/particle_voice/nn/memory/ActivationArena.js","import":"/agi/particle_voice/nn/memory/ActivationArena.js","sourceHash":"eac1b45ac84a89abb447f9b30ed89aa5ca5bbe4e83f48a03039097dd690d0d0c","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/memory/ActivationArena.js","title":"particle_voice/nn/memory/ActivationArena","summary":"ActivationArena.js — Phase 1 ParticleNN memory. Transient GPU-buffer pool for activation tensors, keyed by byte size: `acquire(tensorName, byteLength)` reuses a same-size buffer already released by an earlier tensor instead of allocating a new one, and `release(tensorName)` (driven by `TensorLifetimePlanner.freedAfter()`) returns a buffer to the pool the moment its last consumer has run.","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/memory/ActivationArena.md","moduleTitle":"particle_voice/nn/memory/ActivationArena","source":"agi/particle_voice/nn/memory/ActivationArena.js","import":"/agi/particle_voice/nn/memory/ActivationArena.js","sourceHash":"eac1b45ac84a89abb447f9b30ed89aa5ca5bbe4e83f48a03039097dd690d0d0c","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/memory/ActivationArena.js#0000:ActivationArena","exportIndex":0,"name":"ActivationArena","kind":"class","signature":"class ActivationArena","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/memory/GradientArena.md","moduleTitle":"particle_voice/nn/memory/GradientArena","source":"agi/particle_voice/nn/memory/GradientArena.js","import":"/agi/particle_voice/nn/memory/GradientArena.js","sourceHash":"8d1d44f0935d341b7e23d69e91cda856d6f1e8f909417d953dd2a5593c0ab6d4","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/memory/GradientArena.js","title":"particle_voice/nn/memory/GradientArena","summary":"GradientArena.js — Phase 1 ParticleNN memory. Transient GPU-buffer pool for gradient tensors during backward passes — identical pooling mechanism to `ActivationArena.js` (same size-bucketed acquire/release), given its own class identity/file per the plan's checklist rather than duplicated logic, since forward-pass activation buffers and backward-pass gradient buffers have separate lifetimes and should never be pooled together (an activation still needed for a backward computation must not be silently reused as a gradient buffer). Not wired into any executor until Phase 11 (autodiff), per the plan.","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/memory/GradientArena.md","moduleTitle":"particle_voice/nn/memory/GradientArena","source":"agi/particle_voice/nn/memory/GradientArena.js","import":"/agi/particle_voice/nn/memory/GradientArena.js","sourceHash":"8d1d44f0935d341b7e23d69e91cda856d6f1e8f909417d953dd2a5593c0ab6d4","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/memory/GradientArena.js#0000:GradientArena","exportIndex":0,"name":"GradientArena","kind":"class","signature":"class GradientArena extends ActivationArena","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/memory/TensorLifetimePlanner.md","moduleTitle":"particle_voice/nn/memory/TensorLifetimePlanner","source":"agi/particle_voice/nn/memory/TensorLifetimePlanner.js","import":"/agi/particle_voice/nn/memory/TensorLifetimePlanner.js","sourceHash":"bd72d9692af552d764704ccd9c39a049bba77431539f6f6a19ed2e1c7fc67330","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/memory/TensorLifetimePlanner.js","title":"particle_voice/nn/memory/TensorLifetimePlanner","summary":"TensorLifetimePlanner.js — Phase 1 ParticleNN memory. First/last-use analysis over a `ParticleProgram`'s step order: for every tensor name, which step produces it (or `-1` if it's an external input to the program) and which step is the last to read it. `ActivationArena.js`/ `GradientArena.js` use `freedAfter(stepIndex)` to know exactly when a buffer becomes free to hand to the next tensor that needs one, enabling buffer aliasing instead of one allocation per tensor per run.","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/memory/TensorLifetimePlanner.md","moduleTitle":"particle_voice/nn/memory/TensorLifetimePlanner","source":"agi/particle_voice/nn/memory/TensorLifetimePlanner.js","import":"/agi/particle_voice/nn/memory/TensorLifetimePlanner.js","sourceHash":"bd72d9692af552d764704ccd9c39a049bba77431539f6f6a19ed2e1c7fc67330","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/memory/TensorLifetimePlanner.js#0000:TensorLifetimePlanner","exportIndex":0,"name":"TensorLifetimePlanner","kind":"class","signature":"class TensorLifetimePlanner","summary":"TensorLifetimePlanner.js — Phase 1 ParticleNN memory. First/last-use analysis over a `ParticleProgram`'s step order: for every tensor name, which step produces it (or `-1` if it's an external input to the program) and which step is the last to read it. `ActivationArena.js`/ `GradientArena.js` use `freedAfter(stepIndex)` to know exactly when a buffer becomes free to hand to the next tensor that needs one, enabling buffer aliasing instead of one allocation per tensor per run."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/memory/WeightBindWindow.md","moduleTitle":"particle_voice/nn/memory/WeightBindWindow","source":"agi/particle_voice/nn/memory/WeightBindWindow.js","import":"/agi/particle_voice/nn/memory/WeightBindWindow.js","sourceHash":"5385ec8f358658553731ac75f55163cb44af8ad2ddbcb022af55bd8f20766561","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/memory/WeightBindWindow.js","title":"particle_voice/nn/memory/WeightBindWindow","summary":"WeightBindWindow.js — Phase 1 ParticleNN memory. Storage-buffer bind group for a program segment's resident weight pages (up to 16 pages, per the plan's \"never allocate one monolithic buffer over 128 MiB\" rule) — one GPU buffer per page (not one big buffer for the whole window), matching `WeightPageStore.js`'s per-page granularity.","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/memory/WeightBindWindow.md","moduleTitle":"particle_voice/nn/memory/WeightBindWindow","source":"agi/particle_voice/nn/memory/WeightBindWindow.js","import":"/agi/particle_voice/nn/memory/WeightBindWindow.js","sourceHash":"5385ec8f358658553731ac75f55163cb44af8ad2ddbcb022af55bd8f20766561","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/memory/WeightBindWindow.js#0000:WeightBindWindow","exportIndex":0,"name":"WeightBindWindow","kind":"class","signature":"class WeightBindWindow","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/memory/WeightPageStore.md","moduleTitle":"particle_voice/nn/memory/WeightPageStore","source":"agi/particle_voice/nn/memory/WeightPageStore.js","import":"/agi/particle_voice/nn/memory/WeightPageStore.js","sourceHash":"10d30c53acf5bdc1d72c5eafe213b77d08a60a2bebbba276ffd3d686a93b1e13","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/memory/WeightPageStore.js","title":"particle_voice/nn/memory/WeightPageStore","summary":"WeightPageStore.js — Phase 1 ParticleNN memory. Logical 16–32 MiB weight-page manifest: a page = a contiguous tensor set with its own SHA-256 hash, matching `PRNN-v0.md` §6's directory shape exactly (`{ index, byteLength, offset, hash }`) — the EXACT format R8 (`risk/WeightPagingProbe.js`) already proved works for interrupted downloads (retry, not silent data loss) and corruption detection (hash mismatch actually caught, not tautological). Network fetch is injected (`fetchPage(pageIndex, directoryEntry) => Promise<ArrayBuffer|TypedArray>`) rather than hardcoded to `fetch()`, so this store is testable with a deterministic fake fetcher (as R8 was) and still usable with a real HTTP fetch in production without a second implementation.","exportCount":2}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/memory/WeightPageStore.md","moduleTitle":"particle_voice/nn/memory/WeightPageStore","source":"agi/particle_voice/nn/memory/WeightPageStore.js","import":"/agi/particle_voice/nn/memory/WeightPageStore.js","sourceHash":"10d30c53acf5bdc1d72c5eafe213b77d08a60a2bebbba276ffd3d686a93b1e13","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/memory/WeightPageStore.js#0000:WeightPageStore","exportIndex":0,"name":"WeightPageStore","kind":"class","signature":"class WeightPageStore","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/memory/WeightPageStore.md","moduleTitle":"particle_voice/nn/memory/WeightPageStore","source":"agi/particle_voice/nn/memory/WeightPageStore.js","import":"/agi/particle_voice/nn/memory/WeightPageStore.js","sourceHash":"10d30c53acf5bdc1d72c5eafe213b77d08a60a2bebbba276ffd3d686a93b1e13","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/memory/WeightPageStore.js#0001:buildPageDirectory","exportIndex":1,"name":"buildPageDirectory","kind":"function","signature":"async buildPageDirectory(pages)","summary":"Build a `PRNN-v0` §6-shaped directory from page byte data, computing each page's real hash and cumulative byte offset."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/memory/WeightPageUploader.md","moduleTitle":"particle_voice/nn/memory/WeightPageUploader","source":"agi/particle_voice/nn/memory/WeightPageUploader.js","import":"/agi/particle_voice/nn/memory/WeightPageUploader.js","sourceHash":"7435c2d6f05cbf9de1c754623ffa329a6aa7a0bcbca522af8705bce2bdcb3a6b","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/memory/WeightPageUploader.js","title":"particle_voice/nn/memory/WeightPageUploader","summary":"WeightPageUploader.js — Phase 1 ParticleNN memory. Orchestrates `WeightPageStore.js` (download+hash-verify) and `WeightBindWindow.js` (GPU upload) together: priority-ordered upload, resumability (skip already-uploaded pages), and device-loss re-upload — the exact three properties R8 (`risk/WeightPagingProbe.js`) proved for a single/multi-page toy case, generalized here to an arbitrary page count and caller-chosen priority order.","exportCount":2}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/memory/WeightPageUploader.md","moduleTitle":"particle_voice/nn/memory/WeightPageUploader","source":"agi/particle_voice/nn/memory/WeightPageUploader.js","import":"/agi/particle_voice/nn/memory/WeightPageUploader.js","sourceHash":"7435c2d6f05cbf9de1c754623ffa329a6aa7a0bcbca522af8705bce2bdcb3a6b","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/memory/WeightPageUploader.js#0000:WeightPageUploader","exportIndex":0,"name":"WeightPageUploader","kind":"class","signature":"class WeightPageUploader","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/memory/WeightPageUploader.md","moduleTitle":"particle_voice/nn/memory/WeightPageUploader","source":"agi/particle_voice/nn/memory/WeightPageUploader.js","import":"/agi/particle_voice/nn/memory/WeightPageUploader.js","sourceHash":"7435c2d6f05cbf9de1c754623ffa329a6aa7a0bcbca522af8705bce2bdcb3a6b","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/memory/WeightPageUploader.js#0001:attachDeviceLossRecovery","exportIndex":1,"name":"attachDeviceLossRecovery","kind":"function","signature":"attachDeviceLossRecovery(device, uploader, recreateDevice, { maxBackoffMs = 8000 } = {})","summary":"Wire the `device.lost` recovery contract from `DeviceContract-v0.md` §5: skip recovery if `reason === 'destroyed'` (intentional disposal, not a crash); otherwise recreate the device with exponential backoff and call `uploader.reuploadAfterDeviceLoss(newDevice)`."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/memory/WeightResidencyPlan.md","moduleTitle":"particle_voice/nn/memory/WeightResidencyPlan","source":"agi/particle_voice/nn/memory/WeightResidencyPlan.js","import":"/agi/particle_voice/nn/memory/WeightResidencyPlan.js","sourceHash":"ea04fadf8b5ac2e88563b68ba19fbff2a0eae666f0ebb2b124c0a9a9465831cf","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/memory/WeightResidencyPlan.js","title":"particle_voice/nn/memory/WeightResidencyPlan","summary":"WeightResidencyPlan.js — Phase 1 ParticleNN memory. For each program segment (from a `PRNN-v0.md` §7 bind-window directory: `{ windows: [{ segmentId, pageIndices, bindGroupLayoutHash }] }`), which pages must be resident — plus the diff between two segments' page sets, so a scheduler can decide exactly which pages to load/evict when moving from one segment to the next instead of reloading everything.","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/memory/WeightResidencyPlan.md","moduleTitle":"particle_voice/nn/memory/WeightResidencyPlan","source":"agi/particle_voice/nn/memory/WeightResidencyPlan.js","import":"/agi/particle_voice/nn/memory/WeightResidencyPlan.js","sourceHash":"ea04fadf8b5ac2e88563b68ba19fbff2a0eae666f0ebb2b124c0a9a9465831cf","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/memory/WeightResidencyPlan.js#0000:WeightResidencyPlan","exportIndex":0,"name":"WeightResidencyPlan","kind":"class","signature":"class WeightResidencyPlan","summary":"WeightResidencyPlan.js — Phase 1 ParticleNN memory. For each program segment (from a `PRNN-v0.md` §7 bind-window directory: `{ windows: [{ segmentId, pageIndices, bindGroupLayoutHash }] }`), which pages must be resident — plus the diff between two segments' page sets, so a scheduler can decide exactly which pages to load/evict when moving from one segment to the next instead of reloading everything."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/runtime/DeviceProfile.md","moduleTitle":"particle_voice/nn/runtime/DeviceProfile","source":"agi/particle_voice/nn/runtime/DeviceProfile.js","import":"/agi/particle_voice/nn/runtime/DeviceProfile.js","sourceHash":"31c8954ef49265dc1501c24513283f86b700e9533fe31ec7db3e31157bb3bc05","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/runtime/DeviceProfile.js","title":"particle_voice/nn/runtime/DeviceProfile","summary":"DeviceProfile.js — Phase 1 ParticleNN runtime. Capability/tier detection, implementing exactly the tier rules frozen in `spec/DeviceContract-v0.md` §1–§2 (hard requirements + `full`/`no-f16`/ `unsupported` tiers) — not a new policy invented here. Reuses the engine's own WebGPU acquisition (`engine/core/gpu/GpuDevice.js`) rather than reimplementing adapter/device request logic, same as R1's `risk/DeviceMatrixProbe.js`.","exportCount":2}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/runtime/DeviceProfile.md","moduleTitle":"particle_voice/nn/runtime/DeviceProfile","source":"agi/particle_voice/nn/runtime/DeviceProfile.js","import":"/agi/particle_voice/nn/runtime/DeviceProfile.js","sourceHash":"31c8954ef49265dc1501c24513283f86b700e9533fe31ec7db3e31157bb3bc05","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/runtime/DeviceProfile.js#0000:detectDeviceProfile","exportIndex":0,"name":"detectDeviceProfile","kind":"function","signature":"async detectDeviceProfile()","summary":"Acquire a throwaway GPUDevice, classify its tier per DeviceContract-v0 §1–§2, then destroy it — mirrors R1's read-only probe discipline. The caller is expected to acquire its OWN long-lived device separately (this function is a classification probe, not a device provider)."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/runtime/DeviceProfile.md","moduleTitle":"particle_voice/nn/runtime/DeviceProfile","source":"agi/particle_voice/nn/runtime/DeviceProfile.js","import":"/agi/particle_voice/nn/runtime/DeviceProfile.js","sourceHash":"31c8954ef49265dc1501c24513283f86b700e9533fe31ec7db3e31157bb3bc05","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/runtime/DeviceProfile.js#0001:DEVICE_TIER","exportIndex":1,"name":"DEVICE_TIER","kind":"constant","signature":"DEVICE_TIER","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/runtime/KernelValidation.md","moduleTitle":"particle_voice/nn/runtime/KernelValidation","source":"agi/particle_voice/nn/runtime/KernelValidation.js","import":"/agi/particle_voice/nn/runtime/KernelValidation.js","sourceHash":"385a98aa791b1e1e4f2b0e4ded668e3ba44256cebc973d96161ec0d1f4282c9c","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/runtime/KernelValidation.js","title":"particle_voice/nn/runtime/KernelValidation","summary":"KernelValidation.js — Phase 1 ParticleNN testing. Reusable dispatch-and-readback plumbing plus the plan's required edge-case test-vector generators (\"odd dims, min dims, zeros, extreme FP16, quantized values\") — kept generic over binding shape rather than one runner-per-kernel, since Phase 1's six kernels all differ in bind-group layout but share the same \"encode uniform + storage buffers, dispatch, read one output buffer back, compare to a JS reference\" shape.","exportCount":7}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/runtime/KernelValidation.md","moduleTitle":"particle_voice/nn/runtime/KernelValidation","source":"agi/particle_voice/nn/runtime/KernelValidation.js","import":"/agi/particle_voice/nn/runtime/KernelValidation.js","sourceHash":"385a98aa791b1e1e4f2b0e4ded668e3ba44256cebc973d96161ec0d1f4282c9c","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/runtime/KernelValidation.js#0000:dispatchAndReadback","exportIndex":0,"name":"dispatchAndReadback","kind":"function","signature":"async dispatchAndReadback(device, wgslSource, { uniform, storageInputs = [], outputByteLength, entryPoint = 'main', label = 'KernelValidation' }, workgroups)","summary":"Run one compute dispatch against a set of storage/uniform buffers built from plain typed arrays, then read one designated output buffer back. Compiles `wgslSource` itself (rather than accepting a pre-built pipeline) so it can pair the shader module with the matching explicit bind group layout described above."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/runtime/KernelValidation.md","moduleTitle":"particle_voice/nn/runtime/KernelValidation","source":"agi/particle_voice/nn/runtime/KernelValidation.js","import":"/agi/particle_voice/nn/runtime/KernelValidation.js","sourceHash":"385a98aa791b1e1e4f2b0e4ded668e3ba44256cebc973d96161ec0d1f4282c9c","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/runtime/KernelValidation.js#0001:checkParity","exportIndex":1,"name":"checkParity","kind":"function","signature":"checkParity(actual, expected, tolerance)","summary":"Compare an actual numeric array to an expected one and return a parity-check result object matching R2's `MatmulBenchProbe.js` shape."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/runtime/KernelValidation.md","moduleTitle":"particle_voice/nn/runtime/KernelValidation","source":"agi/particle_voice/nn/runtime/KernelValidation.js","import":"/agi/particle_voice/nn/runtime/KernelValidation.js","sourceHash":"385a98aa791b1e1e4f2b0e4ded668e3ba44256cebc973d96161ec0d1f4282c9c","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/runtime/KernelValidation.js#0002:randomVector","exportIndex":2,"name":"randomVector","kind":"function","signature":"randomVector(length, seed = 1)","summary":"Random values in [-1, 1], deterministic given `seed`."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/runtime/KernelValidation.md","moduleTitle":"particle_voice/nn/runtime/KernelValidation","source":"agi/particle_voice/nn/runtime/KernelValidation.js","import":"/agi/particle_voice/nn/runtime/KernelValidation.js","sourceHash":"385a98aa791b1e1e4f2b0e4ded668e3ba44256cebc973d96161ec0d1f4282c9c","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/runtime/KernelValidation.js#0003:zerosVector","exportIndex":3,"name":"zerosVector","kind":"function","signature":"zerosVector(length)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/runtime/KernelValidation.md","moduleTitle":"particle_voice/nn/runtime/KernelValidation","source":"agi/particle_voice/nn/runtime/KernelValidation.js","import":"/agi/particle_voice/nn/runtime/KernelValidation.js","sourceHash":"385a98aa791b1e1e4f2b0e4ded668e3ba44256cebc973d96161ec0d1f4282c9c","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/runtime/KernelValidation.js#0004:extremeF16Vector","exportIndex":4,"name":"extremeF16Vector","kind":"function","signature":"extremeF16Vector(length)","summary":"Values right at/near the extremes a well-behaved f16 encoder/kernel must not silently clip or NaN on."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/runtime/KernelValidation.md","moduleTitle":"particle_voice/nn/runtime/KernelValidation","source":"agi/particle_voice/nn/runtime/KernelValidation.js","import":"/agi/particle_voice/nn/runtime/KernelValidation.js","sourceHash":"385a98aa791b1e1e4f2b0e4ded668e3ba44256cebc973d96161ec0d1f4282c9c","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/runtime/KernelValidation.js#0005:quantizedEdgeVector","exportIndex":5,"name":"quantizedEdgeVector","kind":"function","signature":"quantizedEdgeVector(length)","summary":"Values already rounded to representable int8 codes, for quantization-path parity tests."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/runtime/KernelValidation.md","moduleTitle":"particle_voice/nn/runtime/KernelValidation","source":"agi/particle_voice/nn/runtime/KernelValidation.js","import":"/agi/particle_voice/nn/runtime/KernelValidation.js","sourceHash":"385a98aa791b1e1e4f2b0e4ded668e3ba44256cebc973d96161ec0d1f4282c9c","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/runtime/KernelValidation.js#0006:EDGE_CASE_DIMENSIONS","exportIndex":6,"name":"EDGE_CASE_DIMENSIONS","kind":"constant","signature":"EDGE_CASE_DIMENSIONS","summary":"Standard edge-case dimension set: odd, minimal (1), and a \"normal\" power-of-two size, for sweeping a kernel's dimension parameter."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/runtime/NeuralExecutor.md","moduleTitle":"particle_voice/nn/runtime/NeuralExecutor","source":"agi/particle_voice/nn/runtime/NeuralExecutor.js","import":"/agi/particle_voice/nn/runtime/NeuralExecutor.js","sourceHash":"ef9bbe66fc96d55c08304075c6b5b97f93a57d069ce12fe5513a6cffe29ffcd6","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/runtime/NeuralExecutor.js","title":"particle_voice/nn/runtime/NeuralExecutor","summary":"NeuralExecutor.js — Phase 1 ParticleNN runtime. Dispatches a compiled `ParticleProgram`'s steps as one command encoder (one compute pass per step, in program order), then submits through the engine's own `GpuFrameBudgetBroker` when one is supplied — sharing the render queue's frame budget rather than a second, uncoordinated submission path. Falls back to a direct `device.queue.submit()` when no broker is given (e.g. an offline/background compile-and-run context with no render loop to share a budget with).","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/runtime/NeuralExecutor.md","moduleTitle":"particle_voice/nn/runtime/NeuralExecutor","source":"agi/particle_voice/nn/runtime/NeuralExecutor.js","import":"/agi/particle_voice/nn/runtime/NeuralExecutor.js","sourceHash":"ef9bbe66fc96d55c08304075c6b5b97f93a57d069ce12fe5513a6cffe29ffcd6","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/runtime/NeuralExecutor.js#0000:NeuralExecutor","exportIndex":0,"name":"NeuralExecutor","kind":"class","signature":"class NeuralExecutor","summary":"NeuralExecutor.js — Phase 1 ParticleNN runtime. Dispatches a compiled `ParticleProgram`'s steps as one command encoder (one compute pass per step, in program order), then submits through the engine's own `GpuFrameBudgetBroker` when one is supplied — sharing the render queue's frame budget rather than a second, uncoordinated submission path. Falls back to a direct `device.queue.submit()` when no broker is given (e.g. an offline/background compile-and-run context with no render loop to share a budget with)."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/runtime/NeuralScheduler.md","moduleTitle":"particle_voice/nn/runtime/NeuralScheduler","source":"agi/particle_voice/nn/runtime/NeuralScheduler.js","import":"/agi/particle_voice/nn/runtime/NeuralScheduler.js","sourceHash":"2363c74ee062bd1970e7142a890ea71a97e670380464ef8a87bc6513c5fa268a","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/runtime/NeuralScheduler.js","title":"particle_voice/nn/runtime/NeuralScheduler","summary":"NeuralScheduler.js — Phase 1 ParticleNN runtime. Priority-ordered queue of `NeuralExecutor.run()` requests — for when several `ParticleProgram` runs are pending at once (e.g. multiple NPCs queued to speak in the same frame window). Mirrors `engine/core/gpu/AsyncComputeScheduler.js`'s high/normal/low priority bucket design (reference, not imported — ParticleNN stays decoupled from the render-side scheduler's internals) layered on top of `NeuralExecutor.js`, which already defers to a shared `GpuFrameBudgetBroker` for actual frame-budget admission — this file's job is only ordering *which* run gets submitted next, not re-deriving budget admission itself.","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/runtime/NeuralScheduler.md","moduleTitle":"particle_voice/nn/runtime/NeuralScheduler","source":"agi/particle_voice/nn/runtime/NeuralScheduler.js","import":"/agi/particle_voice/nn/runtime/NeuralScheduler.js","sourceHash":"2363c74ee062bd1970e7142a890ea71a97e670380464ef8a87bc6513c5fa268a","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/runtime/NeuralScheduler.js#0000:NeuralScheduler","exportIndex":0,"name":"NeuralScheduler","kind":"class","signature":"class NeuralScheduler","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/runtime/NumericalTolerance.md","moduleTitle":"particle_voice/nn/runtime/NumericalTolerance","source":"agi/particle_voice/nn/runtime/NumericalTolerance.js","import":"/agi/particle_voice/nn/runtime/NumericalTolerance.js","sourceHash":"aa27534a4aa10491753d2c31f030baedb968226b0051d21db4d8c672eb76b387","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/runtime/NumericalTolerance.js","title":"particle_voice/nn/runtime/NumericalTolerance","summary":"NumericalTolerance.js — Phase 1 ParticleNN testing. Canonical tolerance constants (single source — `chunks/f16_utils.js` re-exports these rather than defining its own copy) and the shared abs/rel-error comparison used by `KernelValidation.js` and every kernel parity test, matching the exact convention R2's `MatmulBenchProbe.js` already proved out (`maxAbsError`/`maxRelError` against a JS scalar reference).","exportCount":8}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/runtime/NumericalTolerance.md","moduleTitle":"particle_voice/nn/runtime/NumericalTolerance","source":"agi/particle_voice/nn/runtime/NumericalTolerance.js","import":"/agi/particle_voice/nn/runtime/NumericalTolerance.js","sourceHash":"aa27534a4aa10491753d2c31f030baedb968226b0051d21db4d8c672eb76b387","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/runtime/NumericalTolerance.js#0000:maxErrors","exportIndex":0,"name":"maxErrors","kind":"function","signature":"maxErrors(actual, expected)","summary":"Elementwise max abs/rel error between two same-length numeric arrays."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/runtime/NumericalTolerance.md","moduleTitle":"particle_voice/nn/runtime/NumericalTolerance","source":"agi/particle_voice/nn/runtime/NumericalTolerance.js","import":"/agi/particle_voice/nn/runtime/NumericalTolerance.js","sourceHash":"aa27534a4aa10491753d2c31f030baedb968226b0051d21db4d8c672eb76b387","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/runtime/NumericalTolerance.js#0001:withinTolerance","exportIndex":1,"name":"withinTolerance","kind":"function","signature":"withinTolerance(actual, expected, { absTolerance, relTolerance })","summary":"True if `maxErrors(actual, expected)` is within `{ absTolerance, relTolerance }` (either bound satisfied per-element is sufficient — matches R2's tolerance semantics)."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/runtime/NumericalTolerance.md","moduleTitle":"particle_voice/nn/runtime/NumericalTolerance","source":"agi/particle_voice/nn/runtime/NumericalTolerance.js","import":"/agi/particle_voice/nn/runtime/NumericalTolerance.js","sourceHash":"aa27534a4aa10491753d2c31f030baedb968226b0051d21db4d8c672eb76b387","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/runtime/NumericalTolerance.js#0002:F16_ABS_TOLERANCE","exportIndex":2,"name":"F16_ABS_TOLERANCE","kind":"constant","signature":"F16_ABS_TOLERANCE","summary":"NumericalTolerance.js — Phase 1 ParticleNN testing. Canonical tolerance constants (single source — `chunks/f16_utils.js` re-exports these rather than defining its own copy) and the shared abs/rel-error comparison used by `KernelValidation.js` and every kernel parity test, matching the exact convention R2's `MatmulBenchProbe.js` already proved out (`maxAbsError`/`maxRelError` against a JS scalar reference)."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/runtime/NumericalTolerance.md","moduleTitle":"particle_voice/nn/runtime/NumericalTolerance","source":"agi/particle_voice/nn/runtime/NumericalTolerance.js","import":"/agi/particle_voice/nn/runtime/NumericalTolerance.js","sourceHash":"aa27534a4aa10491753d2c31f030baedb968226b0051d21db4d8c672eb76b387","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/runtime/NumericalTolerance.js#0003:F16_REL_TOLERANCE","exportIndex":3,"name":"F16_REL_TOLERANCE","kind":"constant","signature":"F16_REL_TOLERANCE","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/runtime/NumericalTolerance.md","moduleTitle":"particle_voice/nn/runtime/NumericalTolerance","source":"agi/particle_voice/nn/runtime/NumericalTolerance.js","import":"/agi/particle_voice/nn/runtime/NumericalTolerance.js","sourceHash":"aa27534a4aa10491753d2c31f030baedb968226b0051d21db4d8c672eb76b387","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/runtime/NumericalTolerance.js#0004:F32_ABS_TOLERANCE","exportIndex":4,"name":"F32_ABS_TOLERANCE","kind":"constant","signature":"F32_ABS_TOLERANCE","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/runtime/NumericalTolerance.md","moduleTitle":"particle_voice/nn/runtime/NumericalTolerance","source":"agi/particle_voice/nn/runtime/NumericalTolerance.js","import":"/agi/particle_voice/nn/runtime/NumericalTolerance.js","sourceHash":"aa27534a4aa10491753d2c31f030baedb968226b0051d21db4d8c672eb76b387","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/runtime/NumericalTolerance.js#0005:F32_REL_TOLERANCE","exportIndex":5,"name":"F32_REL_TOLERANCE","kind":"constant","signature":"F32_REL_TOLERANCE","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/runtime/NumericalTolerance.md","moduleTitle":"particle_voice/nn/runtime/NumericalTolerance","source":"agi/particle_voice/nn/runtime/NumericalTolerance.js","import":"/agi/particle_voice/nn/runtime/NumericalTolerance.js","sourceHash":"aa27534a4aa10491753d2c31f030baedb968226b0051d21db4d8c672eb76b387","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/runtime/NumericalTolerance.js#0006:INT8_ABS_TOLERANCE","exportIndex":6,"name":"INT8_ABS_TOLERANCE","kind":"constant","signature":"INT8_ABS_TOLERANCE","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/runtime/NumericalTolerance.md","moduleTitle":"particle_voice/nn/runtime/NumericalTolerance","source":"agi/particle_voice/nn/runtime/NumericalTolerance.js","import":"/agi/particle_voice/nn/runtime/NumericalTolerance.js","sourceHash":"aa27534a4aa10491753d2c31f030baedb968226b0051d21db4d8c672eb76b387","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/runtime/NumericalTolerance.js#0007:INT8_REL_TOLERANCE","exportIndex":7,"name":"INT8_REL_TOLERANCE","kind":"constant","signature":"INT8_REL_TOLERANCE","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/runtime/PipelineCache.md","moduleTitle":"particle_voice/nn/runtime/PipelineCache","source":"agi/particle_voice/nn/runtime/PipelineCache.js","import":"/agi/particle_voice/nn/runtime/PipelineCache.js","sourceHash":"50cf334c904b0186cb1557a0d705696c50062d74cf49c239339a70c010941e48","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/runtime/PipelineCache.js","title":"particle_voice/nn/runtime/PipelineCache","summary":"PipelineCache.js — Phase 1 ParticleNN runtime. Hash-keyed compute pipeline cache: avoids recompiling the same WGSL source + entry point on every dispatch. Keyed by a cheap string hash of the generated WGSL source (kernels are JS-generated, so byte-identical source for the same params is expected — see `nn/kernels/ShaderComposer.js`), not by kernel name + params (two different param sets can legitimately generate identical WGSL, and caching by source avoids a redundant compile in that case too).","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/runtime/PipelineCache.md","moduleTitle":"particle_voice/nn/runtime/PipelineCache","source":"agi/particle_voice/nn/runtime/PipelineCache.js","import":"/agi/particle_voice/nn/runtime/PipelineCache.js","sourceHash":"50cf334c904b0186cb1557a0d705696c50062d74cf49c239339a70c010941e48","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/runtime/PipelineCache.js#0000:PipelineCache","exportIndex":0,"name":"PipelineCache","kind":"class","signature":"class PipelineCache","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/runtime/PipelineUtils.md","moduleTitle":"particle_voice/nn/runtime/PipelineUtils","source":"agi/particle_voice/nn/runtime/PipelineUtils.js","import":"/agi/particle_voice/nn/runtime/PipelineUtils.js","sourceHash":"0c1b6e24952617f04e3c5e9573573fae2065095eda080ab65687c90c9a204150","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/nn/runtime/PipelineUtils.js","title":"particle_voice/nn/runtime/PipelineUtils","summary":"PipelineUtils.js — Phase 1 ParticleNN runtime. Deliberate byte-for-byte mirror of `agi/llm/kernels/PipelineUtils.js` (design reference, not imported) per the plan's explicit instruction to keep ParticleNN decoupled from the LLM runtime. Already proven correct — every Phase -1 risk spike (R2, R3, R9, etc.) has been using the LLM runtime's copy of this exact logic directly; this is the same logic under ParticleVoice's own module tree.","exportCount":2}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/runtime/PipelineUtils.md","moduleTitle":"particle_voice/nn/runtime/PipelineUtils","source":"agi/particle_voice/nn/runtime/PipelineUtils.js","import":"/agi/particle_voice/nn/runtime/PipelineUtils.js","sourceHash":"0c1b6e24952617f04e3c5e9573573fae2065095eda080ab65687c90c9a204150","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/runtime/PipelineUtils.js#0000:createComputePipelineChecked","exportIndex":0,"name":"createComputePipelineChecked","kind":"function","signature":"async createComputePipelineChecked(device, module, { label, name = label, entryPoint = 'main' } = {})","summary":"PipelineUtils.js — Phase 1 ParticleNN runtime. Deliberate byte-for-byte mirror of `agi/llm/kernels/PipelineUtils.js` (design reference, not imported) per the plan's explicit instruction to keep ParticleNN decoupled from the LLM runtime. Already proven correct — every Phase -1 risk spike (R2, R3, R9, etc.) has been using the LLM runtime's copy of this exact logic directly; this is the same logic under ParticleVoice's own module tree."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/nn/runtime/PipelineUtils.md","moduleTitle":"particle_voice/nn/runtime/PipelineUtils","source":"agi/particle_voice/nn/runtime/PipelineUtils.js","import":"/agi/particle_voice/nn/runtime/PipelineUtils.js","sourceHash":"0c1b6e24952617f04e3c5e9573573fae2065095eda080ab65687c90c9a204150","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/nn/runtime/PipelineUtils.js#0001:assertShaderCompiled","exportIndex":1,"name":"assertShaderCompiled","kind":"function","signature":"async assertShaderCompiled(module, name = 'shader')","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/ActivityIntegrationProbe.md","moduleTitle":"particle_voice/risk/ActivityIntegrationProbe","source":"agi/particle_voice/risk/ActivityIntegrationProbe.js","import":"/agi/particle_voice/risk/ActivityIntegrationProbe.js","sourceHash":"5f45a5c33268b24bad3b8fbfded957130d998bf5c63cebfe7dd5bfea83354342","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/risk/ActivityIntegrationProbe.js","title":"particle_voice/risk/ActivityIntegrationProbe","summary":"ActivityIntegrationProbe.js — R15 Phase -1 risk spike orchestrator.","exportCount":4}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/ActivityIntegrationProbe.md","moduleTitle":"particle_voice/risk/ActivityIntegrationProbe","source":"agi/particle_voice/risk/ActivityIntegrationProbe.js","import":"/agi/particle_voice/risk/ActivityIntegrationProbe.js","sourceHash":"5f45a5c33268b24bad3b8fbfded957130d998bf5c63cebfe7dd5bfea83354342","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/ActivityIntegrationProbe.js#0000:runActivityIntegrationProbe","exportIndex":0,"name":"runActivityIntegrationProbe","kind":"function","signature":"async runActivityIntegrationProbe()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/ActivityIntegrationProbe.md","moduleTitle":"particle_voice/risk/ActivityIntegrationProbe","source":"agi/particle_voice/risk/ActivityIntegrationProbe.js","import":"/agi/particle_voice/risk/ActivityIntegrationProbe.js","sourceHash":"5f45a5c33268b24bad3b8fbfded957130d998bf5c63cebfe7dd5bfea83354342","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/ActivityIntegrationProbe.js#0001:buildActivityIntegrationReceipt","exportIndex":1,"name":"buildActivityIntegrationReceipt","kind":"function","signature":"async buildActivityIntegrationReceipt(result)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/ActivityIntegrationProbe.md","moduleTitle":"particle_voice/risk/ActivityIntegrationProbe","source":"agi/particle_voice/risk/ActivityIntegrationProbe.js","import":"/agi/particle_voice/risk/ActivityIntegrationProbe.js","sourceHash":"5f45a5c33268b24bad3b8fbfded957130d998bf5c63cebfe7dd5bfea83354342","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/ActivityIntegrationProbe.js#0002:prepareActivityIntegrationReceiptDownload","exportIndex":2,"name":"prepareActivityIntegrationReceiptDownload","kind":"function","signature":"prepareActivityIntegrationReceiptDownload(receipt)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/ActivityIntegrationProbe.md","moduleTitle":"particle_voice/risk/ActivityIntegrationProbe","source":"agi/particle_voice/risk/ActivityIntegrationProbe.js","import":"/agi/particle_voice/risk/ActivityIntegrationProbe.js","sourceHash":"5f45a5c33268b24bad3b8fbfded957130d998bf5c63cebfe7dd5bfea83354342","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/ActivityIntegrationProbe.js#0003:R15_ACTIVITY_INTEGRATION_SCHEMA","exportIndex":3,"name":"R15_ACTIVITY_INTEGRATION_SCHEMA","kind":"constant","signature":"R15_ACTIVITY_INTEGRATION_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/BreathReservoir.md","moduleTitle":"particle_voice/risk/BreathReservoir","source":"agi/particle_voice/risk/BreathReservoir.js","import":"/agi/particle_voice/risk/BreathReservoir.js","sourceHash":"ffe089a7151a6c9efcf5216328a38ca4ad954711c30c25c3c205903c4603f543","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/risk/BreathReservoir.js","title":"particle_voice/risk/BreathReservoir","summary":"BreathReservoir.js — R6A Phase -1 risk spike. \"BreathReservoirState (lung pressure, compliance, target subglottal pressure) -> ParticleTract\" — particle-voice-26357c.md, Phase 2. Minimal first-order lag model: lung pressure exponentially approaches whatever target subglottal pressure RespiratoryDriveHead commands, rate set by `compliance` (higher compliance = slower to respond, matching the physical intuition of a more elastic reservoir). This is the mechanism that lets a physiology intervention on breath effort actually change the glottal source's amplitude sample-by-sample rather than jumping instantly.","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/BreathReservoir.md","moduleTitle":"particle_voice/risk/BreathReservoir","source":"agi/particle_voice/risk/BreathReservoir.js","import":"/agi/particle_voice/risk/BreathReservoir.js","sourceHash":"ffe089a7151a6c9efcf5216328a38ca4ad954711c30c25c3c205903c4603f543","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/BreathReservoir.js#0000:createBreathReservoir","exportIndex":0,"name":"createBreathReservoir","kind":"function","signature":"createBreathReservoir({ sampleRate, compliance = 0.15 })","summary":"BreathReservoir.js — R6A Phase -1 risk spike. \"BreathReservoirState (lung pressure, compliance, target subglottal pressure) -> ParticleTract\" — particle-voice-26357c.md, Phase 2. Minimal first-order lag model: lung pressure exponentially approaches whatever target subglottal pressure RespiratoryDriveHead commands, rate set by `compliance` (higher compliance = slower to respond, matching the physical intuition of a more elastic reservoir). This is the mechanism that lets a physiology intervention on breath effort actually change the glottal source's amplitude sample-by-sample rather than jumping instantly."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/CaptureGate.md","moduleTitle":"particle_voice/risk/CaptureGate","source":"agi/particle_voice/risk/CaptureGate.js","import":"/agi/particle_voice/risk/CaptureGate.js","sourceHash":"7366a995a49542c91c20e99483438c6071e8d4540ca4bf8c1bb0d2b25707a86e","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/risk/CaptureGate.js","title":"particle_voice/risk/CaptureGate","summary":"CaptureGate.js — R14 Phase -1 risk spike. \"Custom-voice capture rejects insufficient speech, low SNR, clipping, echo, music, another speaker, gain drift, device changes, dropped samples, silence, or poor coverage.\" — Phase -1. Each check is a cheap, independently testable heuristic proxy (not a trained classifier) over a session of R10 `ParticleEnergyMeter` frame analyses plus out-of-band capture metadata (device-change/dropped-sample counts, target-phrase coverage) that a real `MicrophoneAudioWorklet` / `MicrophoneStream` layer — not the energy meter — would track.","exportCount":13}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/CaptureGate.md","moduleTitle":"particle_voice/risk/CaptureGate","source":"agi/particle_voice/risk/CaptureGate.js","import":"/agi/particle_voice/risk/CaptureGate.js","sourceHash":"7366a995a49542c91c20e99483438c6071e8d4540ca4bf8c1bb0d2b25707a86e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/CaptureGate.js#0000:checkInsufficientSpeech","exportIndex":0,"name":"checkInsufficientSpeech","kind":"function","signature":"checkInsufficientSpeech(frames)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/CaptureGate.md","moduleTitle":"particle_voice/risk/CaptureGate","source":"agi/particle_voice/risk/CaptureGate.js","import":"/agi/particle_voice/risk/CaptureGate.js","sourceHash":"7366a995a49542c91c20e99483438c6071e8d4540ca4bf8c1bb0d2b25707a86e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/CaptureGate.js#0001:checkLowSnr","exportIndex":1,"name":"checkLowSnr","kind":"function","signature":"checkLowSnr(frames)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/CaptureGate.md","moduleTitle":"particle_voice/risk/CaptureGate","source":"agi/particle_voice/risk/CaptureGate.js","import":"/agi/particle_voice/risk/CaptureGate.js","sourceHash":"7366a995a49542c91c20e99483438c6071e8d4540ca4bf8c1bb0d2b25707a86e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/CaptureGate.js#0002:checkClipping","exportIndex":2,"name":"checkClipping","kind":"function","signature":"checkClipping(frames)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/CaptureGate.md","moduleTitle":"particle_voice/risk/CaptureGate","source":"agi/particle_voice/risk/CaptureGate.js","import":"/agi/particle_voice/risk/CaptureGate.js","sourceHash":"7366a995a49542c91c20e99483438c6071e8d4540ca4bf8c1bb0d2b25707a86e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/CaptureGate.js#0003:checkEcho","exportIndex":3,"name":"checkEcho","kind":"function","signature":"checkEcho(echoResidualRatio)","summary":"Echo contamination: strong correlation between the recording and a known TTS reference."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/CaptureGate.md","moduleTitle":"particle_voice/risk/CaptureGate","source":"agi/particle_voice/risk/CaptureGate.js","import":"/agi/particle_voice/risk/CaptureGate.js","sourceHash":"7366a995a49542c91c20e99483438c6071e8d4540ca4bf8c1bb0d2b25707a86e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/CaptureGate.js#0004:checkMusic","exportIndex":4,"name":"checkMusic","kind":"function","signature":"checkMusic(frames)","summary":"Music proxy: natural speech's frame-to-frame RMS is far less stable than sustained tonal/musical content."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/CaptureGate.md","moduleTitle":"particle_voice/risk/CaptureGate","source":"agi/particle_voice/risk/CaptureGate.js","import":"/agi/particle_voice/risk/CaptureGate.js","sourceHash":"7366a995a49542c91c20e99483438c6071e8d4540ca4bf8c1bb0d2b25707a86e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/CaptureGate.js#0005:checkAnotherSpeaker","exportIndex":5,"name":"checkAnotherSpeaker","kind":"function","signature":"checkAnotherSpeaker(frames)","summary":"Another-speaker proxy: an abrupt, sustained shift in low/high band energy balance partway through."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/CaptureGate.md","moduleTitle":"particle_voice/risk/CaptureGate","source":"agi/particle_voice/risk/CaptureGate.js","import":"/agi/particle_voice/risk/CaptureGate.js","sourceHash":"7366a995a49542c91c20e99483438c6071e8d4540ca4bf8c1bb0d2b25707a86e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/CaptureGate.js#0006:checkGainDrift","exportIndex":6,"name":"checkGainDrift","kind":"function","signature":"checkGainDrift(frames)","summary":"Gain drift: mean level of the last third vs first third of the speech should stay close."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/CaptureGate.md","moduleTitle":"particle_voice/risk/CaptureGate","source":"agi/particle_voice/risk/CaptureGate.js","import":"/agi/particle_voice/risk/CaptureGate.js","sourceHash":"7366a995a49542c91c20e99483438c6071e8d4540ca4bf8c1bb0d2b25707a86e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/CaptureGate.js#0007:checkDeviceChanges","exportIndex":7,"name":"checkDeviceChanges","kind":"function","signature":"checkDeviceChanges(deviceChangeEventCount)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/CaptureGate.md","moduleTitle":"particle_voice/risk/CaptureGate","source":"agi/particle_voice/risk/CaptureGate.js","import":"/agi/particle_voice/risk/CaptureGate.js","sourceHash":"7366a995a49542c91c20e99483438c6071e8d4540ca4bf8c1bb0d2b25707a86e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/CaptureGate.js#0008:checkDroppedSamples","exportIndex":8,"name":"checkDroppedSamples","kind":"function","signature":"checkDroppedSamples(droppedSampleCount)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/CaptureGate.md","moduleTitle":"particle_voice/risk/CaptureGate","source":"agi/particle_voice/risk/CaptureGate.js","import":"/agi/particle_voice/risk/CaptureGate.js","sourceHash":"7366a995a49542c91c20e99483438c6071e8d4540ca4bf8c1bb0d2b25707a86e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/CaptureGate.js#0009:checkTooMuchSilence","exportIndex":9,"name":"checkTooMuchSilence","kind":"function","signature":"checkTooMuchSilence(frames)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/CaptureGate.md","moduleTitle":"particle_voice/risk/CaptureGate","source":"agi/particle_voice/risk/CaptureGate.js","import":"/agi/particle_voice/risk/CaptureGate.js","sourceHash":"7366a995a49542c91c20e99483438c6071e8d4540ca4bf8c1bb0d2b25707a86e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/CaptureGate.js#0010:checkPoorCoverage","exportIndex":10,"name":"checkPoorCoverage","kind":"function","signature":"checkPoorCoverage(phraseCoverageRatio)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/CaptureGate.md","moduleTitle":"particle_voice/risk/CaptureGate","source":"agi/particle_voice/risk/CaptureGate.js","import":"/agi/particle_voice/risk/CaptureGate.js","sourceHash":"7366a995a49542c91c20e99483438c6071e8d4540ca4bf8c1bb0d2b25707a86e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/CaptureGate.js#0011:evaluateCaptureQuality","exportIndex":11,"name":"evaluateCaptureQuality","kind":"function","signature":"evaluateCaptureQuality(session)","summary":"`session` = { frames, echoResidualRatio, deviceChangeEventCount, droppedSampleCount, phraseCoverageRatio }."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/CaptureGate.md","moduleTitle":"particle_voice/risk/CaptureGate","source":"agi/particle_voice/risk/CaptureGate.js","import":"/agi/particle_voice/risk/CaptureGate.js","sourceHash":"7366a995a49542c91c20e99483438c6071e8d4540ca4bf8c1bb0d2b25707a86e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/CaptureGate.js#0012:CAPTURE_GATE_REASONS","exportIndex":12,"name":"CAPTURE_GATE_REASONS","kind":"constant","signature":"CAPTURE_GATE_REASONS","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/CaptureGateProbe.md","moduleTitle":"particle_voice/risk/CaptureGateProbe","source":"agi/particle_voice/risk/CaptureGateProbe.js","import":"/agi/particle_voice/risk/CaptureGateProbe.js","sourceHash":"b03045b72df9d73801add171378ba456834a7696c7c44a1eec4084f79fc2b151","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/risk/CaptureGateProbe.js","title":"particle_voice/risk/CaptureGateProbe","summary":"CaptureGateProbe.js — R14 Phase -1 risk spike orchestrator.","exportCount":4}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/CaptureGateProbe.md","moduleTitle":"particle_voice/risk/CaptureGateProbe","source":"agi/particle_voice/risk/CaptureGateProbe.js","import":"/agi/particle_voice/risk/CaptureGateProbe.js","sourceHash":"b03045b72df9d73801add171378ba456834a7696c7c44a1eec4084f79fc2b151","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/CaptureGateProbe.js#0000:runCaptureGateProbe","exportIndex":0,"name":"runCaptureGateProbe","kind":"function","signature":"async runCaptureGateProbe()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/CaptureGateProbe.md","moduleTitle":"particle_voice/risk/CaptureGateProbe","source":"agi/particle_voice/risk/CaptureGateProbe.js","import":"/agi/particle_voice/risk/CaptureGateProbe.js","sourceHash":"b03045b72df9d73801add171378ba456834a7696c7c44a1eec4084f79fc2b151","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/CaptureGateProbe.js#0001:buildCaptureGateReceipt","exportIndex":1,"name":"buildCaptureGateReceipt","kind":"function","signature":"async buildCaptureGateReceipt(result)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/CaptureGateProbe.md","moduleTitle":"particle_voice/risk/CaptureGateProbe","source":"agi/particle_voice/risk/CaptureGateProbe.js","import":"/agi/particle_voice/risk/CaptureGateProbe.js","sourceHash":"b03045b72df9d73801add171378ba456834a7696c7c44a1eec4084f79fc2b151","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/CaptureGateProbe.js#0002:prepareCaptureGateReceiptDownload","exportIndex":2,"name":"prepareCaptureGateReceiptDownload","kind":"function","signature":"prepareCaptureGateReceiptDownload(receipt)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/CaptureGateProbe.md","moduleTitle":"particle_voice/risk/CaptureGateProbe","source":"agi/particle_voice/risk/CaptureGateProbe.js","import":"/agi/particle_voice/risk/CaptureGateProbe.js","sourceHash":"b03045b72df9d73801add171378ba456834a7696c7c44a1eec4084f79fc2b151","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/CaptureGateProbe.js#0003:R14_CAPTURE_GATE_SCHEMA","exportIndex":3,"name":"R14_CAPTURE_GATE_SCHEMA","kind":"constant","signature":"R14_CAPTURE_GATE_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/DeviceMatrixProbe.md","moduleTitle":"particle_voice/risk/DeviceMatrixProbe","source":"agi/particle_voice/risk/DeviceMatrixProbe.js","import":"/agi/particle_voice/risk/DeviceMatrixProbe.js","sourceHash":"e268297bbe81287841f8f56f868f67537f54ce9cda6759f84147eff92d89369e","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/risk/DeviceMatrixProbe.js","title":"particle_voice/risk/DeviceMatrixProbe","summary":"DeviceMatrixProbe.js — R1 Phase -1 risk spike. \"device-matrix.html — record shader-f16, workgroup/storage/binding/invocation limits, AudioContext properties, crossOriginIsolated, AudioWorklet/ SharedArrayBuffer, OS VRAM quota.\" — particle-voice-26357c.md, Phase -1. Reuses the engine's own capability-probing primitives instead of reimplementing WebGPU adapter/device acquisition: - engine/core/gpu/GpuDevice.js  (GpuDevice.create, detectGpuPlatform) - engine/core/gpu/GpuInit.js    (isWebGpuSupported) - webgpu-os/kernel/VRAMTracker.js (default app/global quota) Read-only: the WebGPU device created here is destroyed immediately after limits/features are read, and the AudioContext is closed immediately after its properties are read.","exportCount":9}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/DeviceMatrixProbe.md","moduleTitle":"particle_voice/risk/DeviceMatrixProbe","source":"agi/particle_voice/risk/DeviceMatrixProbe.js","import":"/agi/particle_voice/risk/DeviceMatrixProbe.js","sourceHash":"e268297bbe81287841f8f56f868f67537f54ce9cda6759f84147eff92d89369e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/DeviceMatrixProbe.js#0000:probeWebGpu","exportIndex":0,"name":"probeWebGpu","kind":"function","signature":"async probeWebGpu()","summary":"Acquire a throwaway GPUDevice via the engine's own GpuDevice, read limits/features, destroy it."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/DeviceMatrixProbe.md","moduleTitle":"particle_voice/risk/DeviceMatrixProbe","source":"agi/particle_voice/risk/DeviceMatrixProbe.js","import":"/agi/particle_voice/risk/DeviceMatrixProbe.js","sourceHash":"e268297bbe81287841f8f56f868f67537f54ce9cda6759f84147eff92d89369e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/DeviceMatrixProbe.js#0001:probeAudioContext","exportIndex":1,"name":"probeAudioContext","kind":"function","signature":"async probeAudioContext()","summary":"Construct a throwaway AudioContext, read its properties, close it."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/DeviceMatrixProbe.md","moduleTitle":"particle_voice/risk/DeviceMatrixProbe","source":"agi/particle_voice/risk/DeviceMatrixProbe.js","import":"/agi/particle_voice/risk/DeviceMatrixProbe.js","sourceHash":"e268297bbe81287841f8f56f868f67537f54ce9cda6759f84147eff92d89369e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/DeviceMatrixProbe.js#0002:probeCrossOriginIsolation","exportIndex":2,"name":"probeCrossOriginIsolation","kind":"function","signature":"probeCrossOriginIsolation()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/DeviceMatrixProbe.md","moduleTitle":"particle_voice/risk/DeviceMatrixProbe","source":"agi/particle_voice/risk/DeviceMatrixProbe.js","import":"/agi/particle_voice/risk/DeviceMatrixProbe.js","sourceHash":"e268297bbe81287841f8f56f868f67537f54ce9cda6759f84147eff92d89369e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/DeviceMatrixProbe.js#0003:probeSharedArrayBuffer","exportIndex":3,"name":"probeSharedArrayBuffer","kind":"function","signature":"probeSharedArrayBuffer()","summary":"Confirm SharedArrayBuffer is not just present but actually constructible."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/DeviceMatrixProbe.md","moduleTitle":"particle_voice/risk/DeviceMatrixProbe","source":"agi/particle_voice/risk/DeviceMatrixProbe.js","import":"/agi/particle_voice/risk/DeviceMatrixProbe.js","sourceHash":"e268297bbe81287841f8f56f868f67537f54ce9cda6759f84147eff92d89369e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/DeviceMatrixProbe.js#0004:probeVramQuota","exportIndex":4,"name":"probeVramQuota","kind":"function","signature":"probeVramQuota()","summary":"Read the OS default VRAM quota (webgpu-os/kernel/VRAMTracker.js), no kernel required."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/DeviceMatrixProbe.md","moduleTitle":"particle_voice/risk/DeviceMatrixProbe","source":"agi/particle_voice/risk/DeviceMatrixProbe.js","import":"/agi/particle_voice/risk/DeviceMatrixProbe.js","sourceHash":"e268297bbe81287841f8f56f868f67537f54ce9cda6759f84147eff92d89369e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/DeviceMatrixProbe.js#0005:runDeviceMatrixProbe","exportIndex":5,"name":"runDeviceMatrixProbe","kind":"function","signature":"async runDeviceMatrixProbe()","summary":"Run every device-matrix probe and roll up an overall status. `unsupported` is a distinct outcome from `fail`, matching the plan's own Production Contract language (\"Unsupported hardware is reported explicitly as unsupported... the project does not degrade to an external runtime\"): - unsupported: WebGPU itself is unavailable on this device/browser. - fail: WebGPU is available, but a hard architectural requirement (crossOriginIsolated, SharedArrayBuffer, AudioWorklet) is missing — almost always a *serving* problem (missing COOP/COEP headers), not a hardware ceiling. Re-check via start_server.py before treating as real. - pass: WebGPU + AudioContext + cross-origin isolation + SharedArrayBuffer + AudioWorklet are all present."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/DeviceMatrixProbe.md","moduleTitle":"particle_voice/risk/DeviceMatrixProbe","source":"agi/particle_voice/risk/DeviceMatrixProbe.js","import":"/agi/particle_voice/risk/DeviceMatrixProbe.js","sourceHash":"e268297bbe81287841f8f56f868f67537f54ce9cda6759f84147eff92d89369e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/DeviceMatrixProbe.js#0006:buildDeviceMatrixReceipt","exportIndex":6,"name":"buildDeviceMatrixReceipt","kind":"function","signature":"async buildDeviceMatrixReceipt(result)","summary":"Wrap a raw probe result into the immutable JSON receipt described by the R1 exit gate: \"Per-device limits + capability table.\""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/DeviceMatrixProbe.md","moduleTitle":"particle_voice/risk/DeviceMatrixProbe","source":"agi/particle_voice/risk/DeviceMatrixProbe.js","import":"/agi/particle_voice/risk/DeviceMatrixProbe.js","sourceHash":"e268297bbe81287841f8f56f868f67537f54ce9cda6759f84147eff92d89369e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/DeviceMatrixProbe.js#0007:prepareDeviceMatrixReceiptDownload","exportIndex":7,"name":"prepareDeviceMatrixReceiptDownload","kind":"function","signature":"prepareDeviceMatrixReceiptDownload(receipt)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/DeviceMatrixProbe.md","moduleTitle":"particle_voice/risk/DeviceMatrixProbe","source":"agi/particle_voice/risk/DeviceMatrixProbe.js","import":"/agi/particle_voice/risk/DeviceMatrixProbe.js","sourceHash":"e268297bbe81287841f8f56f868f67537f54ce9cda6759f84147eff92d89369e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/DeviceMatrixProbe.js#0008:R1_DEVICE_MATRIX_SCHEMA","exportIndex":8,"name":"R1_DEVICE_MATRIX_SCHEMA","kind":"constant","signature":"R1_DEVICE_MATRIX_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/EchoBargeIn.md","moduleTitle":"particle_voice/risk/EchoBargeIn","source":"agi/particle_voice/risk/EchoBargeIn.js","import":"/agi/particle_voice/risk/EchoBargeIn.js","sourceHash":"211ae8237cd22101111d83b9733d5269a21814c04db1bb49493594748be9025e","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/risk/EchoBargeIn.js","title":"particle_voice/risk/EchoBargeIn","summary":"EchoBargeIn.js — R12 Phase -1 risk spike. \"echo reference ring, delay estimation, acoustic echo suppression, double-talk detection, no self-interruption.\" — Phase -1. Simplified fixed-delay echo cancellation (cross-correlation delay estimate + least-squares gain fit + direct subtraction), not an adaptive filter (NLMS/Kalman) — enough to prove the architecture correctly distinguishes pure echo from genuine double-talk. `AcousticEchoController.js` (Phase 2+) would use a real adaptive filter for real acoustic paths that drift over time; this fixed-delay model is a feasibility check.","exportCount":6}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/EchoBargeIn.md","moduleTitle":"particle_voice/risk/EchoBargeIn","source":"agi/particle_voice/risk/EchoBargeIn.js","import":"/agi/particle_voice/risk/EchoBargeIn.js","sourceHash":"211ae8237cd22101111d83b9733d5269a21814c04db1bb49493594748be9025e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/EchoBargeIn.js#0000:createEchoReferenceRing","exportIndex":0,"name":"createEchoReferenceRing","kind":"function","signature":"createEchoReferenceRing(capacitySamples)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/EchoBargeIn.md","moduleTitle":"particle_voice/risk/EchoBargeIn","source":"agi/particle_voice/risk/EchoBargeIn.js","import":"/agi/particle_voice/risk/EchoBargeIn.js","sourceHash":"211ae8237cd22101111d83b9733d5269a21814c04db1bb49493594748be9025e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/EchoBargeIn.js#0001:estimateDelay","exportIndex":1,"name":"estimateDelay","kind":"function","signature":"estimateDelay(reference, microphone, maxDelaySamples)","summary":"Cross-correlation delay estimate: which shift of `reference` best predicts `microphone`."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/EchoBargeIn.md","moduleTitle":"particle_voice/risk/EchoBargeIn","source":"agi/particle_voice/risk/EchoBargeIn.js","import":"/agi/particle_voice/risk/EchoBargeIn.js","sourceHash":"211ae8237cd22101111d83b9733d5269a21814c04db1bb49493594748be9025e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/EchoBargeIn.js#0002:estimateGain","exportIndex":2,"name":"estimateGain","kind":"function","signature":"estimateGain(referenceAligned, microphone)","summary":"Least-squares gain fit: minimizes ||microphone - gain*referenceAligned||^2."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/EchoBargeIn.md","moduleTitle":"particle_voice/risk/EchoBargeIn","source":"agi/particle_voice/risk/EchoBargeIn.js","import":"/agi/particle_voice/risk/EchoBargeIn.js","sourceHash":"211ae8237cd22101111d83b9733d5269a21814c04db1bb49493594748be9025e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/EchoBargeIn.js#0003:cancelEcho","exportIndex":3,"name":"cancelEcho","kind":"function","signature":"cancelEcho(microphone, reference, delay, gain)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/EchoBargeIn.md","moduleTitle":"particle_voice/risk/EchoBargeIn","source":"agi/particle_voice/risk/EchoBargeIn.js","import":"/agi/particle_voice/risk/EchoBargeIn.js","sourceHash":"211ae8237cd22101111d83b9733d5269a21814c04db1bb49493594748be9025e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/EchoBargeIn.js#0004:detectDoubleTalk","exportIndex":4,"name":"detectDoubleTalk","kind":"function","signature":"detectDoubleTalk(residual, referenceLevel, thresholdRatio = 0.3)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/EchoBargeIn.md","moduleTitle":"particle_voice/risk/EchoBargeIn","source":"agi/particle_voice/risk/EchoBargeIn.js","import":"/agi/particle_voice/risk/EchoBargeIn.js","sourceHash":"211ae8237cd22101111d83b9733d5269a21814c04db1bb49493594748be9025e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/EchoBargeIn.js#0005:createBargeInController","exportIndex":5,"name":"createBargeInController","kind":"function","signature":"createBargeInController({ minSustainedFrames = 3 } = {})","summary":"Commit bargeInConfirmed only when double-talk is detected AND sustained for `minSustainedFrames`."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/EchoBargeInProbe.md","moduleTitle":"particle_voice/risk/EchoBargeInProbe","source":"agi/particle_voice/risk/EchoBargeInProbe.js","import":"/agi/particle_voice/risk/EchoBargeInProbe.js","sourceHash":"72323014c2a785bb1f400fb706a023e439e73d6dc8e50b9ba6d275d2047f3388","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/risk/EchoBargeInProbe.js","title":"particle_voice/risk/EchoBargeInProbe","summary":"EchoBargeInProbe.js — R12 Phase -1 risk spike orchestrator.","exportCount":4}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/EchoBargeInProbe.md","moduleTitle":"particle_voice/risk/EchoBargeInProbe","source":"agi/particle_voice/risk/EchoBargeInProbe.js","import":"/agi/particle_voice/risk/EchoBargeInProbe.js","sourceHash":"72323014c2a785bb1f400fb706a023e439e73d6dc8e50b9ba6d275d2047f3388","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/EchoBargeInProbe.js#0000:runEchoBargeInProbe","exportIndex":0,"name":"runEchoBargeInProbe","kind":"function","signature":"async runEchoBargeInProbe()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/EchoBargeInProbe.md","moduleTitle":"particle_voice/risk/EchoBargeInProbe","source":"agi/particle_voice/risk/EchoBargeInProbe.js","import":"/agi/particle_voice/risk/EchoBargeInProbe.js","sourceHash":"72323014c2a785bb1f400fb706a023e439e73d6dc8e50b9ba6d275d2047f3388","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/EchoBargeInProbe.js#0001:buildEchoBargeInReceipt","exportIndex":1,"name":"buildEchoBargeInReceipt","kind":"function","signature":"async buildEchoBargeInReceipt(result)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/EchoBargeInProbe.md","moduleTitle":"particle_voice/risk/EchoBargeInProbe","source":"agi/particle_voice/risk/EchoBargeInProbe.js","import":"/agi/particle_voice/risk/EchoBargeInProbe.js","sourceHash":"72323014c2a785bb1f400fb706a023e439e73d6dc8e50b9ba6d275d2047f3388","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/EchoBargeInProbe.js#0002:prepareEchoBargeInReceiptDownload","exportIndex":2,"name":"prepareEchoBargeInReceiptDownload","kind":"function","signature":"prepareEchoBargeInReceiptDownload(receipt)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/EchoBargeInProbe.md","moduleTitle":"particle_voice/risk/EchoBargeInProbe","source":"agi/particle_voice/risk/EchoBargeInProbe.js","import":"/agi/particle_voice/risk/EchoBargeInProbe.js","sourceHash":"72323014c2a785bb1f400fb706a023e439e73d6dc8e50b9ba6d275d2047f3388","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/EchoBargeInProbe.js#0003:R12_ECHO_BARGE_IN_SCHEMA","exportIndex":3,"name":"R12_ECHO_BARGE_IN_SCHEMA","kind":"constant","signature":"R12_ECHO_BARGE_IN_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/EndpointController.md","moduleTitle":"particle_voice/risk/EndpointController","source":"agi/particle_voice/risk/EndpointController.js","import":"/agi/particle_voice/risk/EndpointController.js","sourceHash":"a2aef1d2ffeef9497bfae45565791554370edc51afe9a09b0613e99e48fa328e","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/risk/EndpointController.js","title":"particle_voice/risk/EndpointController","summary":"EndpointController.js — R13 Phase -1 risk spike. \"min speech/silence durations, max-segment cap, causal commit bits (no lookahead).\" — Phase -1. A plain frame-counting debounce state machine on top of a boolean VAD decision (e.g. R11's `hysteresisState`) — every `update()` call only consumes the CURRENT frame's VAD decision plus its own prior internal state, never anything from the future, by construction (no buffering of upcoming frames anywhere in this module).","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/EndpointController.md","moduleTitle":"particle_voice/risk/EndpointController","source":"agi/particle_voice/risk/EndpointController.js","import":"/agi/particle_voice/risk/EndpointController.js","sourceHash":"a2aef1d2ffeef9497bfae45565791554370edc51afe9a09b0613e99e48fa328e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/EndpointController.js#0000:createEndpointController","exportIndex":0,"name":"createEndpointController","kind":"function","signature":"createEndpointController({ frameMs, minSpeechMs = 200, minSilenceMs = 300, maxSegmentMs = 8000 })","summary":"EndpointController.js — R13 Phase -1 risk spike. \"min speech/silence durations, max-segment cap, causal commit bits (no lookahead).\" — Phase -1. A plain frame-counting debounce state machine on top of a boolean VAD decision (e.g. R11's `hysteresisState`) — every `update()` call only consumes the CURRENT frame's VAD decision plus its own prior internal state, never anything from the future, by construction (no buffering of upcoming frames anywhere in this module)."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/EndpointLatencyProbe.md","moduleTitle":"particle_voice/risk/EndpointLatencyProbe","source":"agi/particle_voice/risk/EndpointLatencyProbe.js","import":"/agi/particle_voice/risk/EndpointLatencyProbe.js","sourceHash":"e409bae8e8d4d9edd0d4674640e18338a59d7cc729f750d8841312a69a082561","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/risk/EndpointLatencyProbe.js","title":"particle_voice/risk/EndpointLatencyProbe","summary":"EndpointLatencyProbe.js — R13 Phase -1 risk spike orchestrator.","exportCount":4}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/EndpointLatencyProbe.md","moduleTitle":"particle_voice/risk/EndpointLatencyProbe","source":"agi/particle_voice/risk/EndpointLatencyProbe.js","import":"/agi/particle_voice/risk/EndpointLatencyProbe.js","sourceHash":"e409bae8e8d4d9edd0d4674640e18338a59d7cc729f750d8841312a69a082561","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/EndpointLatencyProbe.js#0000:runEndpointLatencyProbe","exportIndex":0,"name":"runEndpointLatencyProbe","kind":"function","signature":"async runEndpointLatencyProbe()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/EndpointLatencyProbe.md","moduleTitle":"particle_voice/risk/EndpointLatencyProbe","source":"agi/particle_voice/risk/EndpointLatencyProbe.js","import":"/agi/particle_voice/risk/EndpointLatencyProbe.js","sourceHash":"e409bae8e8d4d9edd0d4674640e18338a59d7cc729f750d8841312a69a082561","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/EndpointLatencyProbe.js#0001:buildEndpointLatencyReceipt","exportIndex":1,"name":"buildEndpointLatencyReceipt","kind":"function","signature":"async buildEndpointLatencyReceipt(result)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/EndpointLatencyProbe.md","moduleTitle":"particle_voice/risk/EndpointLatencyProbe","source":"agi/particle_voice/risk/EndpointLatencyProbe.js","import":"/agi/particle_voice/risk/EndpointLatencyProbe.js","sourceHash":"e409bae8e8d4d9edd0d4674640e18338a59d7cc729f750d8841312a69a082561","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/EndpointLatencyProbe.js#0002:prepareEndpointLatencyReceiptDownload","exportIndex":2,"name":"prepareEndpointLatencyReceiptDownload","kind":"function","signature":"prepareEndpointLatencyReceiptDownload(receipt)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/EndpointLatencyProbe.md","moduleTitle":"particle_voice/risk/EndpointLatencyProbe","source":"agi/particle_voice/risk/EndpointLatencyProbe.js","import":"/agi/particle_voice/risk/EndpointLatencyProbe.js","sourceHash":"e409bae8e8d4d9edd0d4674640e18338a59d7cc729f750d8841312a69a082561","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/EndpointLatencyProbe.js#0003:R13_ENDPOINT_LATENCY_SCHEMA","exportIndex":3,"name":"R13_ENDPOINT_LATENCY_SCHEMA","kind":"constant","signature":"R13_ENDPOINT_LATENCY_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/EnergyDomains.md","moduleTitle":"particle_voice/risk/EnergyDomains","source":"agi/particle_voice/risk/EnergyDomains.js","import":"/agi/particle_voice/risk/EnergyDomains.js","sourceHash":"206d716aeaa068d8688166ee3e9cf2436f2b4c0324c3dae4ccfa16e409c29ef3","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/risk/EnergyDomains.js","title":"particle_voice/risk/EnergyDomains","summary":"EnergyDomains.js — R15 Phase -1 risk spike. \"ObservedInputEnergy, GeneratedPhysiologyEnergy, and RenderedOutputEnergy are correctly separated; mic energy is labelled an uncertain acoustic-equivalent proxy, not lung pressure.\" — Phase -1. Three distinct, runtime-tagged value types plus an `assertDomain` guard that THROWS on cross-domain misuse — the concrete mechanism proving the architecture cannot silently conflate \"what the mic heard\" with \"what the physiology model generated\" or \"what the renderer produced\".","exportCount":8}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/EnergyDomains.md","moduleTitle":"particle_voice/risk/EnergyDomains","source":"agi/particle_voice/risk/EnergyDomains.js","import":"/agi/particle_voice/risk/EnergyDomains.js","sourceHash":"206d716aeaa068d8688166ee3e9cf2436f2b4c0324c3dae4ccfa16e409c29ef3","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/EnergyDomains.js#0000:ObservedInputEnergy","exportIndex":0,"name":"ObservedInputEnergy","kind":"class","signature":"class ObservedInputEnergy","summary":"Energy derived from the real microphone signal. This is explicitly an uncertain ACOUSTIC-EQUIVALENT proxy — it correlates with vocal effort but is NOT a measurement of lung pressure, glottal state, or any other physiological quantity (room acoustics, mic gain/placement, and background noise all corrupt the mapping)."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/EnergyDomains.md","moduleTitle":"particle_voice/risk/EnergyDomains","source":"agi/particle_voice/risk/EnergyDomains.js","import":"/agi/particle_voice/risk/EnergyDomains.js","sourceHash":"206d716aeaa068d8688166ee3e9cf2436f2b4c0324c3dae4ccfa16e409c29ef3","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/EnergyDomains.js#0001:GeneratedPhysiologyEnergy","exportIndex":1,"name":"GeneratedPhysiologyEnergy","kind":"class","signature":"class GeneratedPhysiologyEnergy","summary":"Energy/state produced by the neural physiology model (R6A NeuralPhysiologyState/BreathReservoir) driving the Voice Box."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/EnergyDomains.md","moduleTitle":"particle_voice/risk/EnergyDomains","source":"agi/particle_voice/risk/EnergyDomains.js","import":"/agi/particle_voice/risk/EnergyDomains.js","sourceHash":"206d716aeaa068d8688166ee3e9cf2436f2b4c0324c3dae4ccfa16e409c29ef3","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/EnergyDomains.js#0002:RenderedOutputEnergy","exportIndex":2,"name":"RenderedOutputEnergy","kind":"class","signature":"class RenderedOutputEnergy","summary":"Energy of the final rendered PCM output (post Voice Box waveguide render)."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/EnergyDomains.md","moduleTitle":"particle_voice/risk/EnergyDomains","source":"agi/particle_voice/risk/EnergyDomains.js","import":"/agi/particle_voice/risk/EnergyDomains.js","sourceHash":"206d716aeaa068d8688166ee3e9cf2436f2b4c0324c3dae4ccfa16e409c29ef3","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/EnergyDomains.js#0003:assertDomain","exportIndex":3,"name":"assertDomain","kind":"function","signature":"assertDomain(energyObject, expectedDomain, context)","summary":"Throws unless `energyObject.domain === expectedDomain` — the runtime separation guard."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/EnergyDomains.md","moduleTitle":"particle_voice/risk/EnergyDomains","source":"agi/particle_voice/risk/EnergyDomains.js","import":"/agi/particle_voice/risk/EnergyDomains.js","sourceHash":"206d716aeaa068d8688166ee3e9cf2436f2b4c0324c3dae4ccfa16e409c29ef3","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/EnergyDomains.js#0004:driveVoiceBox","exportIndex":4,"name":"driveVoiceBox","kind":"function","signature":"driveVoiceBox(energyObject)","summary":"Stand-in consumer: drives the Voice Box — must only ever accept generated-physiology energy."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/EnergyDomains.md","moduleTitle":"particle_voice/risk/EnergyDomains","source":"agi/particle_voice/risk/EnergyDomains.js","import":"/agi/particle_voice/risk/EnergyDomains.js","sourceHash":"206d716aeaa068d8688166ee3e9cf2436f2b4c0324c3dae4ccfa16e409c29ef3","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/EnergyDomains.js#0005:computeBargeInEvidence","exportIndex":5,"name":"computeBargeInEvidence","kind":"function","signature":"computeBargeInEvidence(energyObject)","summary":"Stand-in consumer: barge-in/VAD evidence — must only ever accept observed-input energy."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/EnergyDomains.md","moduleTitle":"particle_voice/risk/EnergyDomains","source":"agi/particle_voice/risk/EnergyDomains.js","import":"/agi/particle_voice/risk/EnergyDomains.js","sourceHash":"206d716aeaa068d8688166ee3e9cf2436f2b4c0324c3dae4ccfa16e409c29ef3","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/EnergyDomains.js#0006:computeLoudnessDisplay","exportIndex":6,"name":"computeLoudnessDisplay","kind":"function","signature":"computeLoudnessDisplay(energyObject)","summary":"Stand-in consumer: UI loudness meter for what actually came out of the speakers — must only ever accept rendered-output energy."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/EnergyDomains.md","moduleTitle":"particle_voice/risk/EnergyDomains","source":"agi/particle_voice/risk/EnergyDomains.js","import":"/agi/particle_voice/risk/EnergyDomains.js","sourceHash":"206d716aeaa068d8688166ee3e9cf2436f2b4c0324c3dae4ccfa16e409c29ef3","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/EnergyDomains.js#0007:ENERGY_DOMAIN","exportIndex":7,"name":"ENERGY_DOMAIN","kind":"constant","signature":"ENERGY_DOMAIN","summary":"EnergyDomains.js — R15 Phase -1 risk spike. \"ObservedInputEnergy, GeneratedPhysiologyEnergy, and RenderedOutputEnergy are correctly separated; mic energy is labelled an uncertain acoustic-equivalent proxy, not lung pressure.\" — Phase -1. Three distinct, runtime-tagged value types plus an `assertDomain` guard that THROWS on cross-domain misuse — the concrete mechanism proving the architecture cannot silently conflate \"what the mic heard\" with \"what the physiology model generated\" or \"what the renderer produced\"."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/EnergyMeterProbe.md","moduleTitle":"particle_voice/risk/EnergyMeterProbe","source":"agi/particle_voice/risk/EnergyMeterProbe.js","import":"/agi/particle_voice/risk/EnergyMeterProbe.js","sourceHash":"d89a83b81983dd55d12bb805a544754bd292c4bb8c21db04c546d2e6b09200a6","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/risk/EnergyMeterProbe.js","title":"particle_voice/risk/EnergyMeterProbe","summary":"EnergyMeterProbe.js — R10 Phase -1 risk spike orchestrator. No dedicated filename exists for R10 in the plan's risk/ page list either (named \"mic-energy-meter.html\" in the risk-page description text, used here directly).","exportCount":4}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/EnergyMeterProbe.md","moduleTitle":"particle_voice/risk/EnergyMeterProbe","source":"agi/particle_voice/risk/EnergyMeterProbe.js","import":"/agi/particle_voice/risk/EnergyMeterProbe.js","sourceHash":"d89a83b81983dd55d12bb805a544754bd292c4bb8c21db04c546d2e6b09200a6","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/EnergyMeterProbe.js#0000:runEnergyMeterProbe","exportIndex":0,"name":"runEnergyMeterProbe","kind":"function","signature":"async runEnergyMeterProbe()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/EnergyMeterProbe.md","moduleTitle":"particle_voice/risk/EnergyMeterProbe","source":"agi/particle_voice/risk/EnergyMeterProbe.js","import":"/agi/particle_voice/risk/EnergyMeterProbe.js","sourceHash":"d89a83b81983dd55d12bb805a544754bd292c4bb8c21db04c546d2e6b09200a6","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/EnergyMeterProbe.js#0001:buildEnergyMeterReceipt","exportIndex":1,"name":"buildEnergyMeterReceipt","kind":"function","signature":"async buildEnergyMeterReceipt(result)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/EnergyMeterProbe.md","moduleTitle":"particle_voice/risk/EnergyMeterProbe","source":"agi/particle_voice/risk/EnergyMeterProbe.js","import":"/agi/particle_voice/risk/EnergyMeterProbe.js","sourceHash":"d89a83b81983dd55d12bb805a544754bd292c4bb8c21db04c546d2e6b09200a6","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/EnergyMeterProbe.js#0002:prepareEnergyMeterReceiptDownload","exportIndex":2,"name":"prepareEnergyMeterReceiptDownload","kind":"function","signature":"prepareEnergyMeterReceiptDownload(receipt)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/EnergyMeterProbe.md","moduleTitle":"particle_voice/risk/EnergyMeterProbe","source":"agi/particle_voice/risk/EnergyMeterProbe.js","import":"/agi/particle_voice/risk/EnergyMeterProbe.js","sourceHash":"d89a83b81983dd55d12bb805a544754bd292c4bb8c21db04c546d2e6b09200a6","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/EnergyMeterProbe.js#0003:R10_ENERGY_METER_SCHEMA","exportIndex":3,"name":"R10_ENERGY_METER_SCHEMA","kind":"constant","signature":"R10_ENERGY_METER_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/Fft1024Kernel.md","moduleTitle":"particle_voice/risk/Fft1024Kernel","source":"agi/particle_voice/risk/Fft1024Kernel.js","import":"/agi/particle_voice/risk/Fft1024Kernel.js","sourceHash":"d8385c80c2b0d88c88054730ca0d8dc20dc53434321f2712ce1af4a997c9e740","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/risk/Fft1024Kernel.js","title":"particle_voice/risk/Fft1024Kernel","summary":"Fft1024Kernel.js — R3 Phase -1 risk spike WGSL generator. No raw `.wgsl` files (Engine Alignment invariant #1): exports a `shader(params)` function, matching the eventual `nn/kernels/fft/fft1024_f32.js` / `ifft1024_f32.js` production kernels. Single-workgroup, in-workgroup-memory, iterative radix-2 Cooley-Tukey FFT. One workgroup (512 threads) computes exactly one 1024-point complex FFT; `workgroup_id.x` selects which frame of a batch to process, so N frames can be transformed in a single dispatch of N workgroups (needed to batch many overlapping STFT frames for the WOLA test). Direction is a per-dispatch uniform, not two separate shaders: forward uses the standard e^{-i2*pi*k/N} twiddle; inverse conjugates the input, runs the same forward butterfly network, then conjugates + scales the output by 1/N (IFFT(X) = (1/N) * conj(FFT(conj(X)))). Buffer layout (flat, frame-major): inputReal/inputImag/outputReal/outputImag are each `numFrames * 1024` f32 values; frame f occupies [f*1024, f*1024+1024).","exportCount":7}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/Fft1024Kernel.md","moduleTitle":"particle_voice/risk/Fft1024Kernel","source":"agi/particle_voice/risk/Fft1024Kernel.js","import":"/agi/particle_voice/risk/Fft1024Kernel.js","sourceHash":"d8385c80c2b0d88c88054730ca0d8dc20dc53434321f2712ce1af4a997c9e740","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/Fft1024Kernel.js#0000:fft1024Shader","exportIndex":0,"name":"fft1024Shader","kind":"function","signature":"fft1024Shader()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/Fft1024Kernel.md","moduleTitle":"particle_voice/risk/Fft1024Kernel","source":"agi/particle_voice/risk/Fft1024Kernel.js","import":"/agi/particle_voice/risk/Fft1024Kernel.js","sourceHash":"d8385c80c2b0d88c88054730ca0d8dc20dc53434321f2712ce1af4a997c9e740","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/Fft1024Kernel.js#0001:FFT_N","exportIndex":1,"name":"FFT_N","kind":"constant","signature":"FFT_N","summary":"Fft1024Kernel.js — R3 Phase -1 risk spike WGSL generator. No raw `.wgsl` files (Engine Alignment invariant #1): exports a `shader(params)` function, matching the eventual `nn/kernels/fft/fft1024_f32.js` / `ifft1024_f32.js` production kernels. Single-workgroup, in-workgroup-memory, iterative radix-2 Cooley-Tukey FFT. One workgroup (512 threads) computes exactly one 1024-point complex FFT; `workgroup_id.x` selects which frame of a batch to process, so N frames can be transformed in a single dispatch of N workgroups (needed to batch many overlapping STFT frames for the WOLA test). Direction is a per-dispatch uniform, not two separate shaders: forward uses the standard e^{-i2*pi*k/N} twiddle; inverse conjugates the input, runs the same forward butterfly network, then conjugates + scales the output by 1/N (IFFT(X) = (1/N) * conj(FFT(conj(X)))). Buffer layout (flat, frame-major): inputReal/inputImag/outputReal/outputImag are each `numFrames * 1024` f32 values; frame f occupies [f*1024, f*1024+1024)."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/Fft1024Kernel.md","moduleTitle":"particle_voice/risk/Fft1024Kernel","source":"agi/particle_voice/risk/Fft1024Kernel.js","import":"/agi/particle_voice/risk/Fft1024Kernel.js","sourceHash":"d8385c80c2b0d88c88054730ca0d8dc20dc53434321f2712ce1af4a997c9e740","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/Fft1024Kernel.js#0002:FFT_LOG2N","exportIndex":2,"name":"FFT_LOG2N","kind":"constant","signature":"FFT_LOG2N","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/Fft1024Kernel.md","moduleTitle":"particle_voice/risk/Fft1024Kernel","source":"agi/particle_voice/risk/Fft1024Kernel.js","import":"/agi/particle_voice/risk/Fft1024Kernel.js","sourceHash":"d8385c80c2b0d88c88054730ca0d8dc20dc53434321f2712ce1af4a997c9e740","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/Fft1024Kernel.js#0003:FFT_ENTRY_POINT","exportIndex":3,"name":"FFT_ENTRY_POINT","kind":"constant","signature":"FFT_ENTRY_POINT","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/Fft1024Kernel.md","moduleTitle":"particle_voice/risk/Fft1024Kernel","source":"agi/particle_voice/risk/Fft1024Kernel.js","import":"/agi/particle_voice/risk/Fft1024Kernel.js","sourceHash":"d8385c80c2b0d88c88054730ca0d8dc20dc53434321f2712ce1af4a997c9e740","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/Fft1024Kernel.js#0004:FFT_WORKGROUP_SIZE","exportIndex":4,"name":"FFT_WORKGROUP_SIZE","kind":"constant","signature":"FFT_WORKGROUP_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/Fft1024Kernel.md","moduleTitle":"particle_voice/risk/Fft1024Kernel","source":"agi/particle_voice/risk/Fft1024Kernel.js","import":"/agi/particle_voice/risk/Fft1024Kernel.js","sourceHash":"d8385c80c2b0d88c88054730ca0d8dc20dc53434321f2712ce1af4a997c9e740","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/Fft1024Kernel.js#0005:FFT_DIRECTION_FORWARD","exportIndex":5,"name":"FFT_DIRECTION_FORWARD","kind":"constant","signature":"FFT_DIRECTION_FORWARD","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/Fft1024Kernel.md","moduleTitle":"particle_voice/risk/Fft1024Kernel","source":"agi/particle_voice/risk/Fft1024Kernel.js","import":"/agi/particle_voice/risk/Fft1024Kernel.js","sourceHash":"d8385c80c2b0d88c88054730ca0d8dc20dc53434321f2712ce1af4a997c9e740","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/Fft1024Kernel.js#0006:FFT_DIRECTION_INVERSE","exportIndex":6,"name":"FFT_DIRECTION_INVERSE","kind":"constant","signature":"FFT_DIRECTION_INVERSE","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/GlottalSource.md","moduleTitle":"particle_voice/risk/GlottalSource","source":"agi/particle_voice/risk/GlottalSource.js","import":"/agi/particle_voice/risk/GlottalSource.js","sourceHash":"3d797545905407c2092f248ef593d98e8be41b44b8b07a4647d54a90c4c5efcb","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/risk/GlottalSource.js","title":"particle_voice/risk/GlottalSource","summary":"GlottalSource.js — R6 Phase -1 risk spike. A simplified (\"LF-lite\") glottal flow source, not the full Liljencrants- Fant model (which requires an iterative numerical solve of its alpha/wg/ ta/b parameters from open/speed quotient — out of scope for a feasibility spike). Each glottal pulse is a raised-cosine bump over the open phase of the cycle: flow(n) = 0.5 * (1 - cos(2*pi*n/Topen))   for 0 <= n < Topen flow(n) = 0                                for Topen <= n < T This is deliberately C1-continuous and zero at both pulse boundaries — clicks are a discontinuity in the waveform or its derivative, and this shape has neither, by construction, regardless of how F0 (period T) changes from one pulse to the next. `articulatory/glottal_lf.js` (Phase 2) is the real LF implementation this stands in for. Aspiration noise is mixed in proportional to instantaneous flow (breathy voicing), driven by a counter-based hash so it is chunk-boundary independent (same technique as StreamingContinuitySource.js).","exportCount":2}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/GlottalSource.md","moduleTitle":"particle_voice/risk/GlottalSource","source":"agi/particle_voice/risk/GlottalSource.js","import":"/agi/particle_voice/risk/GlottalSource.js","sourceHash":"3d797545905407c2092f248ef593d98e8be41b44b8b07a4647d54a90c4c5efcb","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/GlottalSource.js#0000:createGlottalSource","exportIndex":0,"name":"createGlottalSource","kind":"function","signature":"createGlottalSource({ sampleRate, f0AtSample, openQuotient = 0.6, aspirationLevel = 0.0, noiseSeed = 777 })","summary":"Create a glottal source generator. `f0AtSample(n)` lets callers drive a pitch sweep (F0 varies per absolute sample index); `openQuotient` is the fraction of each pitch period the folds are open (typical modal voice ~0.5-0.7)."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/GlottalSource.md","moduleTitle":"particle_voice/risk/GlottalSource","source":"agi/particle_voice/risk/GlottalSource.js","import":"/agi/particle_voice/risk/GlottalSource.js","sourceHash":"3d797545905407c2092f248ef593d98e8be41b44b8b07a4647d54a90c4c5efcb","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/GlottalSource.js#0001:noiseAt","exportIndex":1,"name":"noiseAt","kind":"re-export","signature":"noiseAt","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/GpuReadbackRing.md","moduleTitle":"particle_voice/risk/GpuReadbackRing","source":"agi/particle_voice/risk/GpuReadbackRing.js","import":"/agi/particle_voice/risk/GpuReadbackRing.js","sourceHash":"3f7b6547d5aa87aaad922b56317a296d6f381e8679306f6685e94257ba6d0f33","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/risk/GpuReadbackRing.js","title":"particle_voice/risk/GpuReadbackRing","summary":"GpuReadbackRing.js — R4 Phase -1 risk spike. \"readback-audio.html — 6-8 MAP_READ slots, per-buffer mapAsync(), no global queue.onSubmittedWorkDone() for normal readback.\" — Phase -1. A minimal round-robin ring of MAP_READ|COPY_DST staging buffers. Each slot is copied into and mapped independently; the only synchronization primitive used is that slot's own `mapAsync()` promise — there is no `device.queue.onSubmittedWorkDone()` call anywhere in this module. Backpressure (more than `slotCount` requests in flight) is the caller's responsibility: `acquireFreeSlotIndex()` throws if no slot is free, so a caller must await/release before requesting more than `slotCount` ahead. This is a disposable Phase -1 probe, not the production `streaming/GPUReadbackRing.js` — same technique, smaller surface.","exportCount":3}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/GpuReadbackRing.md","moduleTitle":"particle_voice/risk/GpuReadbackRing","source":"agi/particle_voice/risk/GpuReadbackRing.js","import":"/agi/particle_voice/risk/GpuReadbackRing.js","sourceHash":"3f7b6547d5aa87aaad922b56317a296d6f381e8679306f6685e94257ba6d0f33","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/GpuReadbackRing.js#0000:createGpuReadbackRing","exportIndex":0,"name":"createGpuReadbackRing","kind":"function","signature":"createGpuReadbackRing(device, slotByteSize, slotCount = 8)","summary":"GpuReadbackRing.js — R4 Phase -1 risk spike. \"readback-audio.html — 6-8 MAP_READ slots, per-buffer mapAsync(), no global queue.onSubmittedWorkDone() for normal readback.\" — Phase -1. A minimal round-robin ring of MAP_READ|COPY_DST staging buffers. Each slot is copied into and mapped independently; the only synchronization primitive used is that slot's own `mapAsync()` promise — there is no `device.queue.onSubmittedWorkDone()` call anywhere in this module. Backpressure (more than `slotCount` requests in flight) is the caller's responsibility: `acquireFreeSlotIndex()` throws if no slot is free, so a caller must await/release before requesting more than `slotCount` ahead. This is a disposable Phase -1 probe, not the production `streaming/GPUReadbackRing.js` — same technique, smaller surface."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/GpuReadbackRing.md","moduleTitle":"particle_voice/risk/GpuReadbackRing","source":"agi/particle_voice/risk/GpuReadbackRing.js","import":"/agi/particle_voice/risk/GpuReadbackRing.js","sourceHash":"3f7b6547d5aa87aaad922b56317a296d6f381e8679306f6685e94257ba6d0f33","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/GpuReadbackRing.js#0001:runPipelinedReadbackBenchmark","exportIndex":1,"name":"runPipelinedReadbackBenchmark","kind":"function","signature":"async runPipelinedReadbackBenchmark(device, ring, sourceBuffer, byteSize, iterations, maxInFlight, makeFrame, updateBufferFn)","summary":"Run a pipelined readback benchmark: keeps up to `maxInFlight` mapAsync() requests outstanding at once (never more, never a global wait), writing a fresh frame into `sourceBuffer` before each new request."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/GpuReadbackRing.md","moduleTitle":"particle_voice/risk/GpuReadbackRing","source":"agi/particle_voice/risk/GpuReadbackRing.js","import":"/agi/particle_voice/risk/GpuReadbackRing.js","sourceHash":"3f7b6547d5aa87aaad922b56317a296d6f381e8679306f6685e94257ba6d0f33","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/GpuReadbackRing.js#0002:percentile","exportIndex":2,"name":"percentile","kind":"function","signature":"percentile(sortedValues, p)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/HeavySceneKernel.md","moduleTitle":"particle_voice/risk/HeavySceneKernel","source":"agi/particle_voice/risk/HeavySceneKernel.js","import":"/agi/particle_voice/risk/HeavySceneKernel.js","sourceHash":"86485a1c03599da0a83472d1b4a988408246a4d8312146de2dc8358a39d77107","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/risk/HeavySceneKernel.js","title":"particle_voice/risk/HeavySceneKernel","summary":"HeavySceneKernel.js — R9 Phase -1 risk spike. \"renderer-voice-stress.html — voice compute beside a representative heavy ParticleRealms scene.\" — Phase -1. A fully procedural instanced-triangle render (positions/colors derived from @builtin(instance_index) in the vertex shader, no vertex/instance buffers needed) standing in for \"a representative heavy scene\" — many draw-time vertices without needing real mesh/scene data for a disposable risk spike.","exportCount":3}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/HeavySceneKernel.md","moduleTitle":"particle_voice/risk/HeavySceneKernel","source":"agi/particle_voice/risk/HeavySceneKernel.js","import":"/agi/particle_voice/risk/HeavySceneKernel.js","sourceHash":"86485a1c03599da0a83472d1b4a988408246a4d8312146de2dc8358a39d77107","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/HeavySceneKernel.js#0000:heavySceneShader","exportIndex":0,"name":"heavySceneShader","kind":"function","signature":"heavySceneShader()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/HeavySceneKernel.md","moduleTitle":"particle_voice/risk/HeavySceneKernel","source":"agi/particle_voice/risk/HeavySceneKernel.js","import":"/agi/particle_voice/risk/HeavySceneKernel.js","sourceHash":"86485a1c03599da0a83472d1b4a988408246a4d8312146de2dc8358a39d77107","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/HeavySceneKernel.js#0001:HEAVY_SCENE_VERTEX_ENTRY","exportIndex":1,"name":"HEAVY_SCENE_VERTEX_ENTRY","kind":"constant","signature":"HEAVY_SCENE_VERTEX_ENTRY","summary":"HeavySceneKernel.js — R9 Phase -1 risk spike. \"renderer-voice-stress.html — voice compute beside a representative heavy ParticleRealms scene.\" — Phase -1. A fully procedural instanced-triangle render (positions/colors derived from @builtin(instance_index) in the vertex shader, no vertex/instance buffers needed) standing in for \"a representative heavy scene\" — many draw-time vertices without needing real mesh/scene data for a disposable risk spike."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/HeavySceneKernel.md","moduleTitle":"particle_voice/risk/HeavySceneKernel","source":"agi/particle_voice/risk/HeavySceneKernel.js","import":"/agi/particle_voice/risk/HeavySceneKernel.js","sourceHash":"86485a1c03599da0a83472d1b4a988408246a4d8312146de2dc8358a39d77107","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/HeavySceneKernel.js#0002:HEAVY_SCENE_FRAGMENT_ENTRY","exportIndex":2,"name":"HEAVY_SCENE_FRAGMENT_ENTRY","kind":"constant","signature":"HEAVY_SCENE_FRAGMENT_ENTRY","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/IntegrationManifest.md","moduleTitle":"particle_voice/risk/IntegrationManifest","source":"agi/particle_voice/risk/IntegrationManifest.js","import":"/agi/particle_voice/risk/IntegrationManifest.js","sourceHash":"cd58598576660846ac0d682383750b132f3eb7bfe0451a437b5738e934837c07","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/risk/IntegrationManifest.js","title":"particle_voice/risk/IntegrationManifest","summary":"IntegrationManifest.js — R0 Phase -1 risk spike data. Every named ParticleRealms module referenced by the ParticleVoice plan's \"Codebase Integration Points\" tables (particle-voice-26357c.md), with the named exports each entry is expected to provide. `integration-path-audit.html` dynamically imports each `path` and checks every name in `exports` is present on the resulting module namespace, producing a pass/fail/missing receipt. Paths are root-relative so they resolve the same regardless of which page imports this manifest (served from the repo root by start_server.py). Exports were verified directly against source (grep for `^export`), not assumed from the plan's prose \"What it provides\" column. Where the plan's description implied an export that does not actually exist at module scope, a `note` field records the discrepancy so the audit page can surface it even on entries that technically \"pass\" (file imports fine, but a *different* name provides the capability than the plan implied).","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/IntegrationManifest.md","moduleTitle":"particle_voice/risk/IntegrationManifest","source":"agi/particle_voice/risk/IntegrationManifest.js","import":"/agi/particle_voice/risk/IntegrationManifest.js","sourceHash":"cd58598576660846ac0d682383750b132f3eb7bfe0451a437b5738e934837c07","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/IntegrationManifest.js#0000:INTEGRATION_MANIFEST","exportIndex":0,"name":"INTEGRATION_MANIFEST","kind":"constant","signature":"INTEGRATION_MANIFEST","summary":"IntegrationManifest.js — R0 Phase -1 risk spike data. Every named ParticleRealms module referenced by the ParticleVoice plan's \"Codebase Integration Points\" tables (particle-voice-26357c.md), with the named exports each entry is expected to provide. `integration-path-audit.html` dynamically imports each `path` and checks every name in `exports` is present on the resulting module namespace, producing a pass/fail/missing receipt. Paths are root-relative so they resolve the same regardless of which page imports this manifest (served from the repo root by start_server.py). Exports were verified directly against source (grep for `^export`), not assumed from the plan's prose \"What it provides\" column. Where the plan's description implied an export that does not actually exist at module scope, a `note` field records the discrepancy so the audit page can surface it even on entries that technically \"pass\" (file imports fine, but a *different* name provides the capability than the plan implied)."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/IntegrationPathAudit.md","moduleTitle":"particle_voice/risk/IntegrationPathAudit","source":"agi/particle_voice/risk/IntegrationPathAudit.js","import":"/agi/particle_voice/risk/IntegrationPathAudit.js","sourceHash":"4703d3bae709246ef74517b4bb134c4402ce76338994faee0ab652c95e03960f","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/risk/IntegrationPathAudit.js","title":"particle_voice/risk/IntegrationPathAudit","summary":"IntegrationPathAudit.js — R0 Phase -1 risk spike runner. \"Dynamic import/export checks for every named ParticleRealms module\" — particle-voice-26357c.md, Phase -1 / R0 Integration exit receipt. For every entry in IntegrationManifest.js this dynamically imports the module and checks that each expected named export is present on the resulting namespace object. No network/file mutation; read-only probing.","exportCount":4}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/IntegrationPathAudit.md","moduleTitle":"particle_voice/risk/IntegrationPathAudit","source":"agi/particle_voice/risk/IntegrationPathAudit.js","import":"/agi/particle_voice/risk/IntegrationPathAudit.js","sourceHash":"4703d3bae709246ef74517b4bb134c4402ce76338994faee0ab652c95e03960f","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/IntegrationPathAudit.js#0000:runIntegrationPathAudit","exportIndex":0,"name":"runIntegrationPathAudit","kind":"function","signature":"async runIntegrationPathAudit({ manifest = INTEGRATION_MANIFEST, importer = (path)","summary":"Run the audit against a manifest."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/IntegrationPathAudit.md","moduleTitle":"particle_voice/risk/IntegrationPathAudit","source":"agi/particle_voice/risk/IntegrationPathAudit.js","import":"/agi/particle_voice/risk/IntegrationPathAudit.js","sourceHash":"4703d3bae709246ef74517b4bb134c4402ce76338994faee0ab652c95e03960f","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/IntegrationPathAudit.js#0001:buildIntegrationAuditReceipt","exportIndex":1,"name":"buildIntegrationAuditReceipt","kind":"function","signature":"async buildIntegrationAuditReceipt(result)","summary":"Wrap a raw audit result into the immutable JSON receipt described by the R0 exit gate: \"JSON file listing every named import, expected export, actual export, result pass/fail/missing.\""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/IntegrationPathAudit.md","moduleTitle":"particle_voice/risk/IntegrationPathAudit","source":"agi/particle_voice/risk/IntegrationPathAudit.js","import":"/agi/particle_voice/risk/IntegrationPathAudit.js","sourceHash":"4703d3bae709246ef74517b4bb134c4402ce76338994faee0ab652c95e03960f","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/IntegrationPathAudit.js#0002:prepareIntegrationAuditReceiptDownload","exportIndex":2,"name":"prepareIntegrationAuditReceiptDownload","kind":"function","signature":"prepareIntegrationAuditReceiptDownload(receipt)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/IntegrationPathAudit.md","moduleTitle":"particle_voice/risk/IntegrationPathAudit","source":"agi/particle_voice/risk/IntegrationPathAudit.js","import":"/agi/particle_voice/risk/IntegrationPathAudit.js","sourceHash":"4703d3bae709246ef74517b4bb134c4402ce76338994faee0ab652c95e03960f","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/IntegrationPathAudit.js#0003:R0_AUDIT_SCHEMA","exportIndex":3,"name":"R0_AUDIT_SCHEMA","kind":"constant","signature":"R0_AUDIT_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/KellyLochbaumWaveguide.md","moduleTitle":"particle_voice/risk/KellyLochbaumWaveguide","source":"agi/particle_voice/risk/KellyLochbaumWaveguide.js","import":"/agi/particle_voice/risk/KellyLochbaumWaveguide.js","sourceHash":"c3a21ba8e7ebcfdc7bef0f5f6e1f030344acc5adc1170a31aabb43f959c93796","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/risk/KellyLochbaumWaveguide.js","title":"particle_voice/risk/KellyLochbaumWaveguide","summary":"KellyLochbaumWaveguide.js — R6 Phase -1 risk spike. Single-delay-per-section digital waveguide vocal tract model (Kelly & Lochbaum 1962 scattering junctions, as described in e.g. Julius O. Smith's \"Physical Audio Signal Processing\"). N cylindrical tube sections with cross-sectional areas A[0..N-1] give N-1 internal junction reflection coefficients k_i = (A_i - A_{i+1}) / (A_i + A_{i+1}). Boundary conditions: - Glottal end: source flow is injected with a partial reflection (`glottalReflection`) of the wave returning from the tract. - Lip end: an idealized open-end reflection (`lipReflection`, negative) plus a first-difference \"radiation\" filter approximating the differentiating characteristic of lip radiation. All boundary/junction coefficients are kept strictly inside (-1, 1), so the closed-loop lattice is passive/BIBO-stable by construction (no combination of area profile changes can cause unbounded energy growth). Nasal coupling and constriction noise are deliberate simplifications, not a rigorous multi-port (3-way) junction scattering derivation — see createNasalBranch() and step()'s constrictionIndex handling. Phase 2's `NasalTractJunction.js`/`ConstrictionNoise.js` need the rigorous version; this is enough to prove the overall architecture is stable and produces plausible, controllable behavior.","exportCount":5}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/KellyLochbaumWaveguide.md","moduleTitle":"particle_voice/risk/KellyLochbaumWaveguide","source":"agi/particle_voice/risk/KellyLochbaumWaveguide.js","import":"/agi/particle_voice/risk/KellyLochbaumWaveguide.js","sourceHash":"c3a21ba8e7ebcfdc7bef0f5f6e1f030344acc5adc1170a31aabb43f959c93796","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/KellyLochbaumWaveguide.js#0000:reflectionCoefficients","exportIndex":0,"name":"reflectionCoefficients","kind":"function","signature":"reflectionCoefficients(areas)","summary":"KellyLochbaumWaveguide.js — R6 Phase -1 risk spike. Single-delay-per-section digital waveguide vocal tract model (Kelly & Lochbaum 1962 scattering junctions, as described in e.g. Julius O. Smith's \"Physical Audio Signal Processing\"). N cylindrical tube sections with cross-sectional areas A[0..N-1] give N-1 internal junction reflection coefficients k_i = (A_i - A_{i+1}) / (A_i + A_{i+1}). Boundary conditions: - Glottal end: source flow is injected with a partial reflection (`glottalReflection`) of the wave returning from the tract. - Lip end: an idealized open-end reflection (`lipReflection`, negative) plus a first-difference \"radiation\" filter approximating the differentiating characteristic of lip radiation. All boundary/junction coefficients are kept strictly inside (-1, 1), so the closed-loop lattice is passive/BIBO-stable by construction (no combination of area profile changes can cause unbounded energy growth). Nasal coupling and constriction noise are deliberate simplifications, not a rigorous multi-port (3-way) junction scattering derivation — see createNasalBranch() and step()'s constrictionIndex handling. Phase 2's `NasalTractJunction.js`/`ConstrictionNoise.js` need the rigorous version; this is enough to prove the overall architecture is stable and produces plausible, controllable behavior."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/KellyLochbaumWaveguide.md","moduleTitle":"particle_voice/risk/KellyLochbaumWaveguide","source":"agi/particle_voice/risk/KellyLochbaumWaveguide.js","import":"/agi/particle_voice/risk/KellyLochbaumWaveguide.js","sourceHash":"c3a21ba8e7ebcfdc7bef0f5f6e1f030344acc5adc1170a31aabb43f959c93796","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/KellyLochbaumWaveguide.js#0001:uniformAreaProfile","exportIndex":1,"name":"uniformAreaProfile","kind":"function","signature":"uniformAreaProfile(numSections, area)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/KellyLochbaumWaveguide.md","moduleTitle":"particle_voice/risk/KellyLochbaumWaveguide","source":"agi/particle_voice/risk/KellyLochbaumWaveguide.js","import":"/agi/particle_voice/risk/KellyLochbaumWaveguide.js","sourceHash":"c3a21ba8e7ebcfdc7bef0f5f6e1f030344acc5adc1170a31aabb43f959c93796","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/KellyLochbaumWaveguide.js#0002:shapedAreaProfile","exportIndex":2,"name":"shapedAreaProfile","kind":"function","signature":"shapedAreaProfile(numSections, controlPoints)","summary":"Linearly interpolated area profile through named (position, area) control points, position in [0, 1]."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/KellyLochbaumWaveguide.md","moduleTitle":"particle_voice/risk/KellyLochbaumWaveguide","source":"agi/particle_voice/risk/KellyLochbaumWaveguide.js","import":"/agi/particle_voice/risk/KellyLochbaumWaveguide.js","sourceHash":"c3a21ba8e7ebcfdc7bef0f5f6e1f030344acc5adc1170a31aabb43f959c93796","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/KellyLochbaumWaveguide.js#0003:createVocalTract","exportIndex":3,"name":"createVocalTract","kind":"function","signature":"createVocalTract({ numSections, areas, glottalReflection = 0.85, lipReflection = -0.9 })","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/KellyLochbaumWaveguide.md","moduleTitle":"particle_voice/risk/KellyLochbaumWaveguide","source":"agi/particle_voice/risk/KellyLochbaumWaveguide.js","import":"/agi/particle_voice/risk/KellyLochbaumWaveguide.js","sourceHash":"c3a21ba8e7ebcfdc7bef0f5f6e1f030344acc5adc1170a31aabb43f959c93796","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/KellyLochbaumWaveguide.js#0004:createNasalBranch","exportIndex":4,"name":"createNasalBranch","kind":"function","signature":"createNasalBranch({ numSections, areas, nostrilReflection = -0.9 })","summary":"Simplified nasal branch: its own short KL chain, driven by a coupled fraction of an oral-tract tap signal."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/MatmulBenchProbe.md","moduleTitle":"particle_voice/risk/MatmulBenchProbe","source":"agi/particle_voice/risk/MatmulBenchProbe.js","import":"/agi/particle_voice/risk/MatmulBenchProbe.js","sourceHash":"919734368b13c240185108e99c106e9b528a57204202d296b38b8f19cae4e406","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/risk/MatmulBenchProbe.js","title":"particle_voice/risk/MatmulBenchProbe","summary":"MatmulBenchProbe.js — R2 Phase -1 risk spike. \"matmul-bench.html — W8A16 packed INT8 x FP16 matmul, FP32 accumulation, FP16 output; representative TTS shapes; full-model cost projection with >=30% headroom.\" — particle-voice-26357c.md, Phase -1. Shapes are PROVISIONAL: Phase 0 (spec freeze) has not happened yet, so the plan does not fix concrete model dimensions. These are derived from C:\\Coding\\PS2\\configs\\r0.yaml's own \"architecture smoke test\" convention (d_model=256, d_ff=4x d_model, n_layers=6) — the same repo's precedent for sizing a first small model before a full spec exists — combined with this plan's own VoiceChunker steady-state chunk bucket (64 frames) and stated mel-bin candidate (128). Revisit once spec/DeviceContract-v0.md exists. Reuses engine primitives instead of reimplementing device/buffer/pipeline plumbing: GpuDevice (engine/core/gpu/GpuDevice.js), GpuBuffer helpers (engine/core/gpu/GpuBuffer.js), and createComputePipelineChecked (agi/llm/kernels/PipelineUtils.js).","exportCount":4}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/MatmulBenchProbe.md","moduleTitle":"particle_voice/risk/MatmulBenchProbe","source":"agi/particle_voice/risk/MatmulBenchProbe.js","import":"/agi/particle_voice/risk/MatmulBenchProbe.js","sourceHash":"919734368b13c240185108e99c106e9b528a57204202d296b38b8f19cae4e406","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/MatmulBenchProbe.js#0000:runMatmulBenchProbe","exportIndex":0,"name":"runMatmulBenchProbe","kind":"function","signature":"async runMatmulBenchProbe()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/MatmulBenchProbe.md","moduleTitle":"particle_voice/risk/MatmulBenchProbe","source":"agi/particle_voice/risk/MatmulBenchProbe.js","import":"/agi/particle_voice/risk/MatmulBenchProbe.js","sourceHash":"919734368b13c240185108e99c106e9b528a57204202d296b38b8f19cae4e406","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/MatmulBenchProbe.js#0001:buildMatmulBenchReceipt","exportIndex":1,"name":"buildMatmulBenchReceipt","kind":"function","signature":"async buildMatmulBenchReceipt(result)","summary":"Wrap a raw probe result into the R2 exit receipt."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/MatmulBenchProbe.md","moduleTitle":"particle_voice/risk/MatmulBenchProbe","source":"agi/particle_voice/risk/MatmulBenchProbe.js","import":"/agi/particle_voice/risk/MatmulBenchProbe.js","sourceHash":"919734368b13c240185108e99c106e9b528a57204202d296b38b8f19cae4e406","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/MatmulBenchProbe.js#0002:prepareMatmulBenchReceiptDownload","exportIndex":2,"name":"prepareMatmulBenchReceiptDownload","kind":"function","signature":"prepareMatmulBenchReceiptDownload(receipt)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/MatmulBenchProbe.md","moduleTitle":"particle_voice/risk/MatmulBenchProbe","source":"agi/particle_voice/risk/MatmulBenchProbe.js","import":"/agi/particle_voice/risk/MatmulBenchProbe.js","sourceHash":"919734368b13c240185108e99c106e9b528a57204202d296b38b8f19cae4e406","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/MatmulBenchProbe.js#0003:R2_MATMUL_BENCH_SCHEMA","exportIndex":3,"name":"R2_MATMUL_BENCH_SCHEMA","kind":"constant","signature":"R2_MATMUL_BENCH_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/MatmulReferenceCpu.md","moduleTitle":"particle_voice/risk/MatmulReferenceCpu","source":"agi/particle_voice/risk/MatmulReferenceCpu.js","import":"/agi/particle_voice/risk/MatmulReferenceCpu.js","sourceHash":"7a6851398ef3919b1c02cf5bb4d75c0edc36e040259214e3907b009cb6e025b6","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/risk/MatmulReferenceCpu.js","title":"particle_voice/risk/MatmulReferenceCpu","summary":"MatmulReferenceCpu.js — deterministic test-vector generation and a plain-JS scalar reference matmul for R2 (matmul-bench.html) parity checking. Mirrors the dequantization + accumulation order of MatmulW8A16Kernel.js's `main()` exactly (same k4 outer / b inner loop) so the only expected divergence between CPU (double) and GPU (f32) is floating-point rounding, not algorithmic difference.","exportCount":6}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/MatmulReferenceCpu.md","moduleTitle":"particle_voice/risk/MatmulReferenceCpu","source":"agi/particle_voice/risk/MatmulReferenceCpu.js","import":"/agi/particle_voice/risk/MatmulReferenceCpu.js","sourceHash":"7a6851398ef3919b1c02cf5bb4d75c0edc36e040259214e3907b009cb6e025b6","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/MatmulReferenceCpu.js#0000:randomInt8Weights","exportIndex":0,"name":"randomInt8Weights","kind":"function","signature":"randomInt8Weights(K, N, seed = 1)","summary":"Int8Array of length K*N, logical layout weights[n*K + k], values in [-127, 127]."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/MatmulReferenceCpu.md","moduleTitle":"particle_voice/risk/MatmulReferenceCpu","source":"agi/particle_voice/risk/MatmulReferenceCpu.js","import":"/agi/particle_voice/risk/MatmulReferenceCpu.js","sourceHash":"7a6851398ef3919b1c02cf5bb4d75c0edc36e040259214e3907b009cb6e025b6","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/MatmulReferenceCpu.js#0001:randomActivations","exportIndex":1,"name":"randomActivations","kind":"function","signature":"randomActivations(M, K, seed = 2)","summary":"Float32Array of length M*K, layout activations[m*K + k], values in [-1, 1]."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/MatmulReferenceCpu.md","moduleTitle":"particle_voice/risk/MatmulReferenceCpu","source":"agi/particle_voice/risk/MatmulReferenceCpu.js","import":"/agi/particle_voice/risk/MatmulReferenceCpu.js","sourceHash":"7a6851398ef3919b1c02cf5bb4d75c0edc36e040259214e3907b009cb6e025b6","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/MatmulReferenceCpu.js#0002:randomScales","exportIndex":2,"name":"randomScales","kind":"function","signature":"randomScales(N, seed = 3)","summary":"Float32Array of length N — typical per-channel INT8 quantization scales."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/MatmulReferenceCpu.md","moduleTitle":"particle_voice/risk/MatmulReferenceCpu","source":"agi/particle_voice/risk/MatmulReferenceCpu.js","import":"/agi/particle_voice/risk/MatmulReferenceCpu.js","sourceHash":"7a6851398ef3919b1c02cf5bb4d75c0edc36e040259214e3907b009cb6e025b6","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/MatmulReferenceCpu.js#0003:packWeightsInt8x4","exportIndex":3,"name":"packWeightsInt8x4","kind":"function","signature":"packWeightsInt8x4(weightsInt8, K, N)","summary":"Pack logical [K,N] int8 weights into the u32 layout MatmulW8A16Kernel.js expects."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/MatmulReferenceCpu.md","moduleTitle":"particle_voice/risk/MatmulReferenceCpu","source":"agi/particle_voice/risk/MatmulReferenceCpu.js","import":"/agi/particle_voice/risk/MatmulReferenceCpu.js","sourceHash":"7a6851398ef3919b1c02cf5bb4d75c0edc36e040259214e3907b009cb6e025b6","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/MatmulReferenceCpu.js#0004:referenceMatmul","exportIndex":4,"name":"referenceMatmul","kind":"function","signature":"referenceMatmul(activations, weightsInt8, scales, M, K, N)","summary":"Plain-JS reference matmul, same math/order as the WGSL kernel. Returns Float64Array[M*N]."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/MatmulReferenceCpu.md","moduleTitle":"particle_voice/risk/MatmulReferenceCpu","source":"agi/particle_voice/risk/MatmulReferenceCpu.js","import":"/agi/particle_voice/risk/MatmulReferenceCpu.js","sourceHash":"7a6851398ef3919b1c02cf5bb4d75c0edc36e040259214e3907b009cb6e025b6","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/MatmulReferenceCpu.js#0005:compareResults","exportIndex":5,"name":"compareResults","kind":"function","signature":"compareResults(gpuResult, referenceResult)","summary":"Max-abs and max-relative error between a GPU result and the CPU reference."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/MatmulW8A16Kernel.md","moduleTitle":"particle_voice/risk/MatmulW8A16Kernel","source":"agi/particle_voice/risk/MatmulW8A16Kernel.js","import":"/agi/particle_voice/risk/MatmulW8A16Kernel.js","sourceHash":"4722455b8d4b9a404fd972a26842a005b8fff3a90ad085da26365eb8e0579996","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/risk/MatmulW8A16Kernel.js","title":"particle_voice/risk/MatmulW8A16Kernel","summary":"MatmulW8A16Kernel.js — R2 Phase -1 risk spike WGSL generator. No raw `.wgsl` files (Engine Alignment invariant #1): this module exports a `shader(params)` function that returns a WGSL string, same convention as `agi/llm/kernels/shaders/*.js` and the eventual `nn/kernels/matmul/matmul_w8a16.js`. MVP scope for this spike: INT8 weights (4-packed per u32, per-output-channel scale) x FP32 activations, FP32 accumulation, FP32 output. This is a deliberately smaller slice of the plan's stated \"W8A16 packed INT8 x FP16 matmul, FP32 accumulation, FP16 output\" — FP16 activation/output packing needs its own bit-packing design (2xf16 per u32, gated on `shader-f16` from R1) and is left as an explicit follow-up rather than an unverified claim. Weight layout expected by this kernel: - Logical weights are [K, N] (K = input/hidden dim, N = output dim). - Packed as `packedWeights[n * (K/4) + k4]`, a u32 whose 4 bytes are the int8 weights for k = k4*4 + 0..3 (little end = lowest k). - `scales[n]` is the per-output-channel dequantization scale. - K must be a multiple of 4.","exportCount":3}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/MatmulW8A16Kernel.md","moduleTitle":"particle_voice/risk/MatmulW8A16Kernel","source":"agi/particle_voice/risk/MatmulW8A16Kernel.js","import":"/agi/particle_voice/risk/MatmulW8A16Kernel.js","sourceHash":"4722455b8d4b9a404fd972a26842a005b8fff3a90ad085da26365eb8e0579996","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/MatmulW8A16Kernel.js#0000:matmulW8a16Shader","exportIndex":0,"name":"matmulW8a16Shader","kind":"function","signature":"matmulW8a16Shader()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/MatmulW8A16Kernel.md","moduleTitle":"particle_voice/risk/MatmulW8A16Kernel","source":"agi/particle_voice/risk/MatmulW8A16Kernel.js","import":"/agi/particle_voice/risk/MatmulW8A16Kernel.js","sourceHash":"4722455b8d4b9a404fd972a26842a005b8fff3a90ad085da26365eb8e0579996","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/MatmulW8A16Kernel.js#0001:MATMUL_W8A16_ENTRY_POINT","exportIndex":1,"name":"MATMUL_W8A16_ENTRY_POINT","kind":"constant","signature":"MATMUL_W8A16_ENTRY_POINT","summary":"MatmulW8A16Kernel.js — R2 Phase -1 risk spike WGSL generator. No raw `.wgsl` files (Engine Alignment invariant #1): this module exports a `shader(params)` function that returns a WGSL string, same convention as `agi/llm/kernels/shaders/*.js` and the eventual `nn/kernels/matmul/matmul_w8a16.js`. MVP scope for this spike: INT8 weights (4-packed per u32, per-output-channel scale) x FP32 activations, FP32 accumulation, FP32 output. This is a deliberately smaller slice of the plan's stated \"W8A16 packed INT8 x FP16 matmul, FP32 accumulation, FP16 output\" — FP16 activation/output packing needs its own bit-packing design (2xf16 per u32, gated on `shader-f16` from R1) and is left as an explicit follow-up rather than an unverified claim. Weight layout expected by this kernel: - Logical weights are [K, N] (K = input/hidden dim, N = output dim). - Packed as `packedWeights[n * (K/4) + k4]`, a u32 whose 4 bytes are the int8 weights for k = k4*4 + 0..3 (little end = lowest k). - `scales[n]` is the per-output-channel dequantization scale. - K must be a multiple of 4."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/MatmulW8A16Kernel.md","moduleTitle":"particle_voice/risk/MatmulW8A16Kernel","source":"agi/particle_voice/risk/MatmulW8A16Kernel.js","import":"/agi/particle_voice/risk/MatmulW8A16Kernel.js","sourceHash":"4722455b8d4b9a404fd972a26842a005b8fff3a90ad085da26365eb8e0579996","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/MatmulW8A16Kernel.js#0002:MATMUL_W8A16_WORKGROUP_SIZE","exportIndex":2,"name":"MATMUL_W8A16_WORKGROUP_SIZE","kind":"constant","signature":"MATMUL_W8A16_WORKGROUP_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/NeuralPhysiologyState.md","moduleTitle":"particle_voice/risk/NeuralPhysiologyState","source":"agi/particle_voice/risk/NeuralPhysiologyState.js","import":"/agi/particle_voice/risk/NeuralPhysiologyState.js","sourceHash":"d4942e133aebf22e0c700ba6d5f6a12191915ee7ef0b2e8a46d787e3fee3fcac","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/risk/NeuralPhysiologyState.js","title":"particle_voice/risk/NeuralPhysiologyState","summary":"NeuralPhysiologyState.js — R6A Phase -1 risk spike. \"NeuralPhysiologyState schema: RespiratoryDriveHead, GlottalStateHead, TractGestureHead, ArticulationEventHead, UncertaintyHead version 0x00010000.\" — particle-voice-26357c.md, Phase 2 (adopted early here for the R6A wiring receipt). No trained `ArticulationHead` model exists yet (that's Phase 3+). This provides the state SCHEMA plus a deterministic scripted stand-in (\"fake head\") that produces plausible per-frame physiology values as a pure function of time and an `intervention` parameter set — enough to prove the wiring ArticulationHead -> NeuralPhysiologyState -> BreathReservoir/ParticleTract -> renderer actually routes control values through to the final PCM, which is what R6A's exit gate asks for.","exportCount":3}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/NeuralPhysiologyState.md","moduleTitle":"particle_voice/risk/NeuralPhysiologyState","source":"agi/particle_voice/risk/NeuralPhysiologyState.js","import":"/agi/particle_voice/risk/NeuralPhysiologyState.js","sourceHash":"d4942e133aebf22e0c700ba6d5f6a12191915ee7ef0b2e8a46d787e3fee3fcac","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/NeuralPhysiologyState.js#0000:createNeuralPhysiologyState","exportIndex":0,"name":"createNeuralPhysiologyState","kind":"function","signature":"createNeuralPhysiologyState({ timestampSeconds, respiratoryDrive, glottalState, tractGesture, articulationEvent, uncertainty, })","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/NeuralPhysiologyState.md","moduleTitle":"particle_voice/risk/NeuralPhysiologyState","source":"agi/particle_voice/risk/NeuralPhysiologyState.js","import":"/agi/particle_voice/risk/NeuralPhysiologyState.js","sourceHash":"d4942e133aebf22e0c700ba6d5f6a12191915ee7ef0b2e8a46d787e3fee3fcac","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/NeuralPhysiologyState.js#0001:createScriptedArticulationHead","exportIndex":1,"name":"createScriptedArticulationHead","kind":"function","signature":"createScriptedArticulationHead(intervention = {})","summary":"Deterministic scripted stand-in for a trained ArticulationHead: a short \"utterance\" that opens into a steady vowel then applies a brief closure gesture, with `intervention.respiratoryScale` and `intervention.constrictionOpennessFloor` letting a caller apply a physiology intervention and compare against a baseline run."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/NeuralPhysiologyState.md","moduleTitle":"particle_voice/risk/NeuralPhysiologyState","source":"agi/particle_voice/risk/NeuralPhysiologyState.js","import":"/agi/particle_voice/risk/NeuralPhysiologyState.js","sourceHash":"d4942e133aebf22e0c700ba6d5f6a12191915ee7ef0b2e8a46d787e3fee3fcac","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/NeuralPhysiologyState.js#0002:NEURAL_PHYSIOLOGY_STATE_VERSION","exportIndex":2,"name":"NEURAL_PHYSIOLOGY_STATE_VERSION","kind":"constant","signature":"NEURAL_PHYSIOLOGY_STATE_VERSION","summary":"NeuralPhysiologyState.js — R6A Phase -1 risk spike. \"NeuralPhysiologyState schema: RespiratoryDriveHead, GlottalStateHead, TractGestureHead, ArticulationEventHead, UncertaintyHead version 0x00010000.\" — particle-voice-26357c.md, Phase 2 (adopted early here for the R6A wiring receipt). No trained `ArticulationHead` model exists yet (that's Phase 3+). This provides the state SCHEMA plus a deterministic scripted stand-in (\"fake head\") that produces plausible per-frame physiology values as a pure function of time and an `intervention` parameter set — enough to prove the wiring ArticulationHead -> NeuralPhysiologyState -> BreathReservoir/ParticleTract -> renderer actually routes control values through to the final PCM, which is what R6A's exit gate asks for."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/OsMediaPermissionProbe.md","moduleTitle":"particle_voice/risk/OsMediaPermissionProbe","source":"agi/particle_voice/risk/OsMediaPermissionProbe.js","import":"/agi/particle_voice/risk/OsMediaPermissionProbe.js","sourceHash":"775b641f77d994d59d2cf38b6df546cc25a9044317ff469f874b483d3f960a5d","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/risk/OsMediaPermissionProbe.js","title":"particle_voice/risk/OsMediaPermissionProbe","summary":"OsMediaPermissionProbe.js — R16 Phase -1 risk spike. \"Secure context + user gesture + getUserMedia + enumerateDevices + AudioWorklet + SharedArrayBuffer all succeed through kernel.media.* / kernel.audio.* syscalls; media.audio / audio.play / microphone capabilities are correctly required and enforced by guardSyscalls; OsMediaBridge.js never touches raw navigator.mediaDevices.\" — Phase -1. `agi/particle_voice/activity/bridge/OsMediaBridge.js` does not exist yet (Phase -1 precedes Phase 1+ implementation) — that check is a forward contract placeholder here, not yet applicable. Everything else tests the REAL `webgpu-os/kernel/Syscalls.js` (`createSyscalls`, `guardSyscalls`) and `webgpu-os/kernel/Permissions.js` (`Permissions`) directly, not a stand-in — this spike is about the OS integration contract itself.","exportCount":4}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/OsMediaPermissionProbe.md","moduleTitle":"particle_voice/risk/OsMediaPermissionProbe","source":"agi/particle_voice/risk/OsMediaPermissionProbe.js","import":"/agi/particle_voice/risk/OsMediaPermissionProbe.js","sourceHash":"775b641f77d994d59d2cf38b6df546cc25a9044317ff469f874b483d3f960a5d","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/OsMediaPermissionProbe.js#0000:runOsMediaPermissionProbe","exportIndex":0,"name":"runOsMediaPermissionProbe","kind":"function","signature":"async runOsMediaPermissionProbe()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/OsMediaPermissionProbe.md","moduleTitle":"particle_voice/risk/OsMediaPermissionProbe","source":"agi/particle_voice/risk/OsMediaPermissionProbe.js","import":"/agi/particle_voice/risk/OsMediaPermissionProbe.js","sourceHash":"775b641f77d994d59d2cf38b6df546cc25a9044317ff469f874b483d3f960a5d","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/OsMediaPermissionProbe.js#0001:buildOsMediaPermissionReceipt","exportIndex":1,"name":"buildOsMediaPermissionReceipt","kind":"function","signature":"async buildOsMediaPermissionReceipt(result)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/OsMediaPermissionProbe.md","moduleTitle":"particle_voice/risk/OsMediaPermissionProbe","source":"agi/particle_voice/risk/OsMediaPermissionProbe.js","import":"/agi/particle_voice/risk/OsMediaPermissionProbe.js","sourceHash":"775b641f77d994d59d2cf38b6df546cc25a9044317ff469f874b483d3f960a5d","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/OsMediaPermissionProbe.js#0002:prepareOsMediaPermissionReceiptDownload","exportIndex":2,"name":"prepareOsMediaPermissionReceiptDownload","kind":"function","signature":"prepareOsMediaPermissionReceiptDownload(receipt)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/OsMediaPermissionProbe.md","moduleTitle":"particle_voice/risk/OsMediaPermissionProbe","source":"agi/particle_voice/risk/OsMediaPermissionProbe.js","import":"/agi/particle_voice/risk/OsMediaPermissionProbe.js","sourceHash":"775b641f77d994d59d2cf38b6df546cc25a9044317ff469f874b483d3f960a5d","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/OsMediaPermissionProbe.js#0003:R16_OS_MEDIA_PERMISSION_SCHEMA","exportIndex":3,"name":"R16_OS_MEDIA_PERMISSION_SCHEMA","kind":"constant","signature":"R16_OS_MEDIA_PERMISSION_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/ParticleEnergyMeter.md","moduleTitle":"particle_voice/risk/ParticleEnergyMeter","source":"agi/particle_voice/risk/ParticleEnergyMeter.js","import":"/agi/particle_voice/risk/ParticleEnergyMeter.js","sourceHash":"abf80a11fdc5019d8da1daed093b6d2a754ad786b47013015ded6fe4d781806d","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/risk/ParticleEnergyMeter.js","title":"particle_voice/risk/ParticleEnergyMeter","summary":"ParticleEnergyMeter.js — R10 Phase -1 risk spike. \"RMS, dBFS, peak, clipping, DC offset, crest factor, attack/release, SNR, low/mid/high band energy, spectral flux; adaptive noise floor while no speech/echo present.\" — Phase -1. Plain-JS CPU implementation (small analysis frames, not a GPU kernel — this is a metering/control-path computation, not a bulk DSP kernel like R3's FFT). Includes its own compact FFT for band energy/spectral flux rather than importing Fft1024Kernel.js, which generates a WGSL string for GPU dispatch, not a callable JS magnitude-spectrum function — a different form for a different execution context, same algorithm family as MatmulReferenceCpu.js is to matmul_w8a16.js.","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/ParticleEnergyMeter.md","moduleTitle":"particle_voice/risk/ParticleEnergyMeter","source":"agi/particle_voice/risk/ParticleEnergyMeter.js","import":"/agi/particle_voice/risk/ParticleEnergyMeter.js","sourceHash":"abf80a11fdc5019d8da1daed093b6d2a754ad786b47013015ded6fe4d781806d","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/ParticleEnergyMeter.js#0000:createParticleEnergyMeter","exportIndex":0,"name":"createParticleEnergyMeter","kind":"function","signature":"createParticleEnergyMeter({ sampleRate, frameSize = 256, attackMs = 5, releaseMs = 60, noiseFloorRecoveryPerFrame = 0.0008 })","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/ParticleVad.md","moduleTitle":"particle_voice/risk/ParticleVad","source":"agi/particle_voice/risk/ParticleVad.js","import":"/agi/particle_voice/risk/ParticleVad.js","sourceHash":"956bee93ed0dc39a6adc9930b4538632ba3b717918ceca6635cf1a9897cc2c3b","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/risk/ParticleVad.js","title":"particle_voice/risk/ParticleVad","summary":"ParticleVad.js — R11 Phase -1 risk spike. \"ParticleVAD-1 11-head output smoothness, hysteresis, no flicker; latency p50/p95 of speech-start/end decisions.\" — Phase -1. No trained ParticleVAD-1 model exists yet — this is a heuristic, energy/spectral-flux-driven stand-in (built on R10's ParticleEnergyMeter), not a neural VAD. The plan names \"11 continuous probability heads\" without enumerating all 11 in the sections read for this spike; the 11 names below are a reasonable, clearly-labeled interpretation, not a verified spec. Testing rigor here focuses on the primary `speechActive` head's smoothness/hysteresis/latency, since that is what a heuristic stand-in can meaningfully validate.","exportCount":2}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/ParticleVad.md","moduleTitle":"particle_voice/risk/ParticleVad","source":"agi/particle_voice/risk/ParticleVad.js","import":"/agi/particle_voice/risk/ParticleVad.js","sourceHash":"956bee93ed0dc39a6adc9930b4538632ba3b717918ceca6635cf1a9897cc2c3b","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/ParticleVad.js#0000:createParticleVad","exportIndex":0,"name":"createParticleVad","kind":"function","signature":"createParticleVad({ sampleRate, frameSize = 256, smoothingMs = 30, riseThreshold = 0.55, fallThreshold = 0.35 })","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/ParticleVad.md","moduleTitle":"particle_voice/risk/ParticleVad","source":"agi/particle_voice/risk/ParticleVad.js","import":"/agi/particle_voice/risk/ParticleVad.js","sourceHash":"956bee93ed0dc39a6adc9930b4538632ba3b717918ceca6635cf1a9897cc2c3b","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/ParticleVad.js#0001:VAD_HEAD_NAMES","exportIndex":1,"name":"VAD_HEAD_NAMES","kind":"constant","signature":"VAD_HEAD_NAMES","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/R4ReadbackAudioWorklet.worklet.md","moduleTitle":"particle_voice/risk/R4ReadbackAudioWorklet.worklet","source":"agi/particle_voice/risk/R4ReadbackAudioWorklet.worklet.js","import":"/agi/particle_voice/risk/R4ReadbackAudioWorklet.worklet.js","sourceHash":"1d3b3439793159b2564ce26fdb0b656cd168ef2b673b3a445fd62c50479a4d49","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/risk/R4ReadbackAudioWorklet.worklet.js","title":"particle_voice/risk/R4ReadbackAudioWorklet.worklet","summary":"R4ReadbackAudioWorklet.worklet.js — R4 Phase -1 risk spike. \"allocation-free AudioWorklet.\" — Phase -1. Reference/mirror target: engine/audio/synth/PatchRunner.worklet.js (SAB parameter reads, no allocation in process()). Consumes a single-producer/single-consumer PCM ring living in a SharedArrayBuffer (written by the main thread, standing in for what the production path would fill via GPUReadbackRing.js + SharedPCMRing.js). `process()` performs zero allocation: no `new`, no object/array literals, no `await`, no `throw`, no `JSON` — only typed-array indexing and Atomics on pre-existing SharedArrayBuffer-backed views. Control layout (Int32Array, SharedArrayBuffer, 4 x int32): [0] writeIndex   — next PCM slot the producer will write (main thread) [1] readIndex    — next PCM slot this processor will read [2] underrunCount — incremented whenever fewer than one quantum of samples are available [3] processCallCount — incremented every process() call This file cannot be dynamically `import()`-ed from a normal page context: `AudioWorkletProcessor`/`registerProcessor` only exist inside the AudioWorkletGlobalScope. Load it via `audioContext.audioWorklet.addModule(url)`.","exportCount":0}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/ReadbackAudioProbe.md","moduleTitle":"particle_voice/risk/ReadbackAudioProbe","source":"agi/particle_voice/risk/ReadbackAudioProbe.js","import":"/agi/particle_voice/risk/ReadbackAudioProbe.js","sourceHash":"ee382595d2205c5bad45378893ad5a64b97d46942e6561188fb10a94e4032e4e","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/risk/ReadbackAudioProbe.js","title":"particle_voice/risk/ReadbackAudioProbe","summary":"ReadbackAudioProbe.js — R4 Phase -1 risk spike. Exit gate: \"Per-buffer mapAsync() p50/p95/p99; AudioWorklet survives variable quantum and rebuild; one-hour zero-underrun baseline.\" — Phase -1. Honest scoping note: a literal one-hour automated soak is not run by this probe (impractical inside a single interactive/CI session). This runs a short deterministic soak (SHORT_BASELINE_SOAK_MS) as a scaled-down proxy, clearly labeled as such in the receipt, plus an underrun-detector self-test (proves the zero-underrun count is meaningful, not tautological) and a full teardown+rebuild cycle. The full one-hour soak is left as an explicit manual/CI follow-up — see `oneHourSoak` in the result. \"Variable quantum\" is not directly controllable from stable browser APIs (render quantum size is fixed at 128 in all current stable implementations); this is verified as a static property of the processor (R4ReadbackAudioWorklet.worklet.js reads `channel.length` for its loop bound rather than assuming 128) plus dynamic survival across two independent AudioContext instances (which may differ in `sampleRate`).","exportCount":10}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/ReadbackAudioProbe.md","moduleTitle":"particle_voice/risk/ReadbackAudioProbe","source":"agi/particle_voice/risk/ReadbackAudioProbe.js","import":"/agi/particle_voice/risk/ReadbackAudioProbe.js","sourceHash":"ee382595d2205c5bad45378893ad5a64b97d46942e6561188fb10a94e4032e4e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/ReadbackAudioProbe.js#0000:createSharedRing","exportIndex":0,"name":"createSharedRing","kind":"function","signature":"createSharedRing(sampleRate)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/ReadbackAudioProbe.md","moduleTitle":"particle_voice/risk/ReadbackAudioProbe","source":"agi/particle_voice/risk/ReadbackAudioProbe.js","import":"/agi/particle_voice/risk/ReadbackAudioProbe.js","sourceHash":"ee382595d2205c5bad45378893ad5a64b97d46942e6561188fb10a94e4032e4e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/ReadbackAudioProbe.js#0001:prefillRing","exportIndex":1,"name":"prefillRing","kind":"function","signature":"prefillRing(ring, sampleRate, prefillMs)","summary":"Synchronously write `prefillMs` of audio into the ring before the worklet node is ever pulled. Absorbs the startup race between the interval-based producer's first tick (~PRODUCER_INTERVAL_MS away) and the AudioWorklet's first process() call, which can happen sooner — without this, a handful of transient underruns at cold start are expected, not a sustained-rate problem, but they'd still show up in a \"zero-underrun baseline\" reading."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/ReadbackAudioProbe.md","moduleTitle":"particle_voice/risk/ReadbackAudioProbe","source":"agi/particle_voice/risk/ReadbackAudioProbe.js","import":"/agi/particle_voice/risk/ReadbackAudioProbe.js","sourceHash":"ee382595d2205c5bad45378893ad5a64b97d46942e6561188fb10a94e4032e4e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/ReadbackAudioProbe.js#0002:startProducer","exportIndex":2,"name":"startProducer","kind":"function","signature":"startProducer(ring, sampleRate, initialSamplesProduced = 0)","summary":"Wall-clock-paced producer: writes exactly enough samples each tick to match elapsed real time (minus whatever was already prefilled), so it neither underruns (falls behind) nor overflows the fixed-capacity ring (a fixed-chunk-per-tick producer would race arbitrarily far ahead of the consumer and wrap/corrupt the ring)."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/ReadbackAudioProbe.md","moduleTitle":"particle_voice/risk/ReadbackAudioProbe","source":"agi/particle_voice/risk/ReadbackAudioProbe.js","import":"/agi/particle_voice/risk/ReadbackAudioProbe.js","sourceHash":"ee382595d2205c5bad45378893ad5a64b97d46942e6561188fb10a94e4032e4e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/ReadbackAudioProbe.js#0003:createWorkletSetup","exportIndex":3,"name":"createWorkletSetup","kind":"function","signature":"async createWorkletSetup()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/ReadbackAudioProbe.md","moduleTitle":"particle_voice/risk/ReadbackAudioProbe","source":"agi/particle_voice/risk/ReadbackAudioProbe.js","import":"/agi/particle_voice/risk/ReadbackAudioProbe.js","sourceHash":"ee382595d2205c5bad45378893ad5a64b97d46942e6561188fb10a94e4032e4e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/ReadbackAudioProbe.js#0004:teardownWorkletSetup","exportIndex":4,"name":"teardownWorkletSetup","kind":"function","signature":"async teardownWorkletSetup(setup)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/ReadbackAudioProbe.md","moduleTitle":"particle_voice/risk/ReadbackAudioProbe","source":"agi/particle_voice/risk/ReadbackAudioProbe.js","import":"/agi/particle_voice/risk/ReadbackAudioProbe.js","sourceHash":"ee382595d2205c5bad45378893ad5a64b97d46942e6561188fb10a94e4032e4e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/ReadbackAudioProbe.js#0005:runReadbackAudioProbe","exportIndex":5,"name":"runReadbackAudioProbe","kind":"function","signature":"async runReadbackAudioProbe()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/ReadbackAudioProbe.md","moduleTitle":"particle_voice/risk/ReadbackAudioProbe","source":"agi/particle_voice/risk/ReadbackAudioProbe.js","import":"/agi/particle_voice/risk/ReadbackAudioProbe.js","sourceHash":"ee382595d2205c5bad45378893ad5a64b97d46942e6561188fb10a94e4032e4e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/ReadbackAudioProbe.js#0006:buildReadbackAudioReceipt","exportIndex":6,"name":"buildReadbackAudioReceipt","kind":"function","signature":"async buildReadbackAudioReceipt(result)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/ReadbackAudioProbe.md","moduleTitle":"particle_voice/risk/ReadbackAudioProbe","source":"agi/particle_voice/risk/ReadbackAudioProbe.js","import":"/agi/particle_voice/risk/ReadbackAudioProbe.js","sourceHash":"ee382595d2205c5bad45378893ad5a64b97d46942e6561188fb10a94e4032e4e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/ReadbackAudioProbe.js#0007:prepareReadbackAudioReceiptDownload","exportIndex":7,"name":"prepareReadbackAudioReceiptDownload","kind":"function","signature":"prepareReadbackAudioReceiptDownload(receipt)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/ReadbackAudioProbe.md","moduleTitle":"particle_voice/risk/ReadbackAudioProbe","source":"agi/particle_voice/risk/ReadbackAudioProbe.js","import":"/agi/particle_voice/risk/ReadbackAudioProbe.js","sourceHash":"ee382595d2205c5bad45378893ad5a64b97d46942e6561188fb10a94e4032e4e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/ReadbackAudioProbe.js#0008:runLongSoak","exportIndex":8,"name":"runLongSoak","kind":"function","signature":"async runLongSoak(durationMs)","summary":"Exposed on window for a human/CI to opt into the real one-hour soak manually."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/ReadbackAudioProbe.md","moduleTitle":"particle_voice/risk/ReadbackAudioProbe","source":"agi/particle_voice/risk/ReadbackAudioProbe.js","import":"/agi/particle_voice/risk/ReadbackAudioProbe.js","sourceHash":"ee382595d2205c5bad45378893ad5a64b97d46942e6561188fb10a94e4032e4e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/ReadbackAudioProbe.js#0009:R4_READBACK_AUDIO_SCHEMA","exportIndex":9,"name":"R4_READBACK_AUDIO_SCHEMA","kind":"constant","signature":"R4_READBACK_AUDIO_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/ReceiptCrypto.md","moduleTitle":"particle_voice/risk/ReceiptCrypto","source":"agi/particle_voice/risk/ReceiptCrypto.js","import":"/agi/particle_voice/risk/ReceiptCrypto.js","sourceHash":"6903c6afc41c12cb74b9ee40f4398a91d9816930f3f12257a7a3e8c68bfcfae2","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/risk/ReceiptCrypto.js","title":"particle_voice/risk/ReceiptCrypto","summary":"ReceiptCrypto.js — shared canonicalization + SHA-256 hashing for every Phase -1 risk-spike JSON receipt under `agi/particle_voice/risk/`. Kept tiny and dependency-free so any risk page can import it directly.","exportCount":4}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/ReceiptCrypto.md","moduleTitle":"particle_voice/risk/ReceiptCrypto","source":"agi/particle_voice/risk/ReceiptCrypto.js","import":"/agi/particle_voice/risk/ReceiptCrypto.js","sourceHash":"6903c6afc41c12cb74b9ee40f4398a91d9816930f3f12257a7a3e8c68bfcfae2","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/ReceiptCrypto.js#0000:canonicalizeForHash","exportIndex":0,"name":"canonicalizeForHash","kind":"function","signature":"canonicalizeForHash(value)","summary":"Recursively sort object keys so hashing is independent of insertion order."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/ReceiptCrypto.md","moduleTitle":"particle_voice/risk/ReceiptCrypto","source":"agi/particle_voice/risk/ReceiptCrypto.js","import":"/agi/particle_voice/risk/ReceiptCrypto.js","sourceHash":"6903c6afc41c12cb74b9ee40f4398a91d9816930f3f12257a7a3e8c68bfcfae2","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/ReceiptCrypto.js#0001:sha256HexOf","exportIndex":1,"name":"sha256HexOf","kind":"function","signature":"async sha256HexOf(value)","summary":"SHA-256 hex digest of a canonicalized JSON value, or null if WebCrypto is unavailable."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/ReceiptCrypto.md","moduleTitle":"particle_voice/risk/ReceiptCrypto","source":"agi/particle_voice/risk/ReceiptCrypto.js","import":"/agi/particle_voice/risk/ReceiptCrypto.js","sourceHash":"6903c6afc41c12cb74b9ee40f4398a91d9816930f3f12257a7a3e8c68bfcfae2","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/ReceiptCrypto.js#0002:receiptHashOf","exportIndex":2,"name":"receiptHashOf","kind":"function","signature":"async receiptHashOf(value)","summary":"Convenience: `sha256:<hex>` prefixed digest, or null."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/ReceiptCrypto.md","moduleTitle":"particle_voice/risk/ReceiptCrypto","source":"agi/particle_voice/risk/ReceiptCrypto.js","import":"/agi/particle_voice/risk/ReceiptCrypto.js","sourceHash":"6903c6afc41c12cb74b9ee40f4398a91d9816930f3f12257a7a3e8c68bfcfae2","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/ReceiptCrypto.js#0003:prepareJsonDownload","exportIndex":3,"name":"prepareJsonDownload","kind":"function","signature":"prepareJsonDownload(receipt, filenamePrefix)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/RendererVoiceStressProbe.md","moduleTitle":"particle_voice/risk/RendererVoiceStressProbe","source":"agi/particle_voice/risk/RendererVoiceStressProbe.js","import":"/agi/particle_voice/risk/RendererVoiceStressProbe.js","sourceHash":"a2a49b5f9103ab70f40983bde0956d59882809c0f9a93003b14b11c9f328c83a","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/risk/RendererVoiceStressProbe.js","title":"particle_voice/risk/RendererVoiceStressProbe","summary":"RendererVoiceStressProbe.js — R9 Phase -1 risk spike. Exit gate: \"Voice + heavy scene runs without audio underruns or persistent render frame drops.\" — Phase -1. Runs a heavy procedural instanced-triangle render pass and a batched FFT \"voice compute\" dispatch every animation frame, concurrently with R4's real AudioWorklet + SharedArrayBuffer PCM ring (imported directly, not reimplemented), for a few seconds. Measures both render frame-time health and audio underrun count over the same window.","exportCount":4}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/RendererVoiceStressProbe.md","moduleTitle":"particle_voice/risk/RendererVoiceStressProbe","source":"agi/particle_voice/risk/RendererVoiceStressProbe.js","import":"/agi/particle_voice/risk/RendererVoiceStressProbe.js","sourceHash":"a2a49b5f9103ab70f40983bde0956d59882809c0f9a93003b14b11c9f328c83a","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/RendererVoiceStressProbe.js#0000:runRendererVoiceStressProbe","exportIndex":0,"name":"runRendererVoiceStressProbe","kind":"function","signature":"async runRendererVoiceStressProbe()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/RendererVoiceStressProbe.md","moduleTitle":"particle_voice/risk/RendererVoiceStressProbe","source":"agi/particle_voice/risk/RendererVoiceStressProbe.js","import":"/agi/particle_voice/risk/RendererVoiceStressProbe.js","sourceHash":"a2a49b5f9103ab70f40983bde0956d59882809c0f9a93003b14b11c9f328c83a","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/RendererVoiceStressProbe.js#0001:buildRendererVoiceStressReceipt","exportIndex":1,"name":"buildRendererVoiceStressReceipt","kind":"function","signature":"async buildRendererVoiceStressReceipt(result)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/RendererVoiceStressProbe.md","moduleTitle":"particle_voice/risk/RendererVoiceStressProbe","source":"agi/particle_voice/risk/RendererVoiceStressProbe.js","import":"/agi/particle_voice/risk/RendererVoiceStressProbe.js","sourceHash":"a2a49b5f9103ab70f40983bde0956d59882809c0f9a93003b14b11c9f328c83a","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/RendererVoiceStressProbe.js#0002:prepareRendererVoiceStressReceiptDownload","exportIndex":2,"name":"prepareRendererVoiceStressReceiptDownload","kind":"function","signature":"prepareRendererVoiceStressReceiptDownload(receipt)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/RendererVoiceStressProbe.md","moduleTitle":"particle_voice/risk/RendererVoiceStressProbe","source":"agi/particle_voice/risk/RendererVoiceStressProbe.js","import":"/agi/particle_voice/risk/RendererVoiceStressProbe.js","sourceHash":"a2a49b5f9103ab70f40983bde0956d59882809c0f9a93003b14b11c9f328c83a","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/RendererVoiceStressProbe.js#0003:R9_RENDERER_VOICE_STRESS_SCHEMA","exportIndex":3,"name":"R9_RENDERER_VOICE_STRESS_SCHEMA","kind":"constant","signature":"R9_RENDERER_VOICE_STRESS_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/SignalMetrics.md","moduleTitle":"particle_voice/risk/SignalMetrics","source":"agi/particle_voice/risk/SignalMetrics.js","import":"/agi/particle_voice/risk/SignalMetrics.js","sourceHash":"4e86e594094b72b81c2e6a8b4a7dacac0c0a0db830c343558c3dd661be5c57d2","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/risk/SignalMetrics.js","title":"particle_voice/risk/SignalMetrics","summary":"SignalMetrics.js — shared signal-quality helpers for Phase -1 risk pages (extracted out of VoiceBoxWaveguideProbe.js when a third consumer appeared, to avoid a third copy-paste of rms/peakAbs/hasNonFinite).","exportCount":5}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/SignalMetrics.md","moduleTitle":"particle_voice/risk/SignalMetrics","source":"agi/particle_voice/risk/SignalMetrics.js","import":"/agi/particle_voice/risk/SignalMetrics.js","sourceHash":"4e86e594094b72b81c2e6a8b4a7dacac0c0a0db830c343558c3dd661be5c57d2","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/SignalMetrics.js#0000:rms","exportIndex":0,"name":"rms","kind":"function","signature":"rms(signal, start = 0, end = signal.length)","summary":"SignalMetrics.js — shared signal-quality helpers for Phase -1 risk pages (extracted out of VoiceBoxWaveguideProbe.js when a third consumer appeared, to avoid a third copy-paste of rms/peakAbs/hasNonFinite)."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/SignalMetrics.md","moduleTitle":"particle_voice/risk/SignalMetrics","source":"agi/particle_voice/risk/SignalMetrics.js","import":"/agi/particle_voice/risk/SignalMetrics.js","sourceHash":"4e86e594094b72b81c2e6a8b4a7dacac0c0a0db830c343558c3dd661be5c57d2","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/SignalMetrics.js#0001:peakAbs","exportIndex":1,"name":"peakAbs","kind":"function","signature":"peakAbs(signal, start = 0, end = signal.length)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/SignalMetrics.md","moduleTitle":"particle_voice/risk/SignalMetrics","source":"agi/particle_voice/risk/SignalMetrics.js","import":"/agi/particle_voice/risk/SignalMetrics.js","sourceHash":"4e86e594094b72b81c2e6a8b4a7dacac0c0a0db830c343558c3dd661be5c57d2","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/SignalMetrics.js#0002:hasNonFinite","exportIndex":2,"name":"hasNonFinite","kind":"function","signature":"hasNonFinite(signal)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/SignalMetrics.md","moduleTitle":"particle_voice/risk/SignalMetrics","source":"agi/particle_voice/risk/SignalMetrics.js","import":"/agi/particle_voice/risk/SignalMetrics.js","sourceHash":"4e86e594094b72b81c2e6a8b4a7dacac0c0a0db830c343558c3dd661be5c57d2","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/SignalMetrics.js#0003:maxAbsDiff","exportIndex":3,"name":"maxAbsDiff","kind":"function","signature":"maxAbsDiff(a, b, startIndex = 0, endIndex = a.length)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/SignalMetrics.md","moduleTitle":"particle_voice/risk/SignalMetrics","source":"agi/particle_voice/risk/SignalMetrics.js","import":"/agi/particle_voice/risk/SignalMetrics.js","sourceHash":"4e86e594094b72b81c2e6a8b4a7dacac0c0a0db830c343558c3dd661be5c57d2","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/SignalMetrics.js#0004:detectClicks","exportIndex":4,"name":"detectClicks","kind":"function","signature":"detectClicks(signal, windowSize = 256, thresholdMultiplier = 12)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/StftWolaProbe.md","moduleTitle":"particle_voice/risk/StftWolaProbe","source":"agi/particle_voice/risk/StftWolaProbe.js","import":"/agi/particle_voice/risk/StftWolaProbe.js","sourceHash":"9f75b40f63e418cbcf80db58e911d0939a429202201eedf2d681b4d9871b73f3","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/risk/StftWolaProbe.js","title":"particle_voice/risk/StftWolaProbe","summary":"StftWolaProbe.js — R3 Phase -1 risk spike. \"stft-wola.html — 1024-point f32 FFT/IFFT and normalized WOLA for 320-sample hop; identity, impulse, sweep, noise tests.\" — Phase -1. Exit gate: \"Identity tests pass; workgroup limits respected; normalized WOLA ripple below audible threshold.\" Identity tests run a single frame through forward FFT then inverse FFT (both on GPU) and compare to the original signal. The WOLA test runs many overlapping analysis-windowed frames through the same round trip, applies a synthesis window, overlap-adds, and divides by the exact sum-of-squares envelope — with exact normalization the round trip is mathematically identity, so any measured \"ripple\" is real FFT/window/OLA implementation error, not a windowing-shape artifact.","exportCount":4}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/StftWolaProbe.md","moduleTitle":"particle_voice/risk/StftWolaProbe","source":"agi/particle_voice/risk/StftWolaProbe.js","import":"/agi/particle_voice/risk/StftWolaProbe.js","sourceHash":"9f75b40f63e418cbcf80db58e911d0939a429202201eedf2d681b4d9871b73f3","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/StftWolaProbe.js#0000:runStftWolaProbe","exportIndex":0,"name":"runStftWolaProbe","kind":"function","signature":"async runStftWolaProbe()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/StftWolaProbe.md","moduleTitle":"particle_voice/risk/StftWolaProbe","source":"agi/particle_voice/risk/StftWolaProbe.js","import":"/agi/particle_voice/risk/StftWolaProbe.js","sourceHash":"9f75b40f63e418cbcf80db58e911d0939a429202201eedf2d681b4d9871b73f3","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/StftWolaProbe.js#0001:buildStftWolaReceipt","exportIndex":1,"name":"buildStftWolaReceipt","kind":"function","signature":"async buildStftWolaReceipt(result)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/StftWolaProbe.md","moduleTitle":"particle_voice/risk/StftWolaProbe","source":"agi/particle_voice/risk/StftWolaProbe.js","import":"/agi/particle_voice/risk/StftWolaProbe.js","sourceHash":"9f75b40f63e418cbcf80db58e911d0939a429202201eedf2d681b4d9871b73f3","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/StftWolaProbe.js#0002:prepareStftWolaReceiptDownload","exportIndex":2,"name":"prepareStftWolaReceiptDownload","kind":"function","signature":"prepareStftWolaReceiptDownload(receipt)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/StftWolaProbe.md","moduleTitle":"particle_voice/risk/StftWolaProbe","source":"agi/particle_voice/risk/StftWolaProbe.js","import":"/agi/particle_voice/risk/StftWolaProbe.js","sourceHash":"9f75b40f63e418cbcf80db58e911d0939a429202201eedf2d681b4d9871b73f3","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/StftWolaProbe.js#0003:R3_STFT_WOLA_SCHEMA","exportIndex":3,"name":"R3_STFT_WOLA_SCHEMA","kind":"constant","signature":"R3_STFT_WOLA_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/StreamingContinuityProbe.md","moduleTitle":"particle_voice/risk/StreamingContinuityProbe","source":"agi/particle_voice/risk/StreamingContinuityProbe.js","import":"/agi/particle_voice/risk/StreamingContinuityProbe.js","sourceHash":"f4d6893db72a4b9c236d7bc60ff856ec2e611b7cebf0611c04be930eb947a099","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/risk/StreamingContinuityProbe.js","title":"particle_voice/risk/StreamingContinuityProbe","summary":"StreamingContinuityProbe.js — R5 Phase -1 risk spike orchestrator. Pure JS, no GPU/AudioContext dependency: R5's exit gate is an architectural/correctness property of the counter design (does chunking change the output?), not a GPU performance question, so no kernel is needed to validate it. See StreamingContinuitySource.js for the mechanism.","exportCount":4}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/StreamingContinuityProbe.md","moduleTitle":"particle_voice/risk/StreamingContinuityProbe","source":"agi/particle_voice/risk/StreamingContinuityProbe.js","import":"/agi/particle_voice/risk/StreamingContinuityProbe.js","sourceHash":"f4d6893db72a4b9c236d7bc60ff856ec2e611b7cebf0611c04be930eb947a099","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/StreamingContinuityProbe.js#0000:runStreamingContinuityProbe","exportIndex":0,"name":"runStreamingContinuityProbe","kind":"function","signature":"async runStreamingContinuityProbe()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/StreamingContinuityProbe.md","moduleTitle":"particle_voice/risk/StreamingContinuityProbe","source":"agi/particle_voice/risk/StreamingContinuityProbe.js","import":"/agi/particle_voice/risk/StreamingContinuityProbe.js","sourceHash":"f4d6893db72a4b9c236d7bc60ff856ec2e611b7cebf0611c04be930eb947a099","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/StreamingContinuityProbe.js#0001:buildStreamingContinuityReceipt","exportIndex":1,"name":"buildStreamingContinuityReceipt","kind":"function","signature":"async buildStreamingContinuityReceipt(result)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/StreamingContinuityProbe.md","moduleTitle":"particle_voice/risk/StreamingContinuityProbe","source":"agi/particle_voice/risk/StreamingContinuityProbe.js","import":"/agi/particle_voice/risk/StreamingContinuityProbe.js","sourceHash":"f4d6893db72a4b9c236d7bc60ff856ec2e611b7cebf0611c04be930eb947a099","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/StreamingContinuityProbe.js#0002:prepareStreamingContinuityReceiptDownload","exportIndex":2,"name":"prepareStreamingContinuityReceiptDownload","kind":"function","signature":"prepareStreamingContinuityReceiptDownload(receipt)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/StreamingContinuityProbe.md","moduleTitle":"particle_voice/risk/StreamingContinuityProbe","source":"agi/particle_voice/risk/StreamingContinuityProbe.js","import":"/agi/particle_voice/risk/StreamingContinuityProbe.js","sourceHash":"f4d6893db72a4b9c236d7bc60ff856ec2e611b7cebf0611c04be930eb947a099","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/StreamingContinuityProbe.js#0003:R5_STREAMING_CONTINUITY_SCHEMA","exportIndex":3,"name":"R5_STREAMING_CONTINUITY_SCHEMA","kind":"constant","signature":"R5_STREAMING_CONTINUITY_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/StreamingContinuitySource.md","moduleTitle":"particle_voice/risk/StreamingContinuitySource","source":"agi/particle_voice/risk/StreamingContinuitySource.js","import":"/agi/particle_voice/risk/StreamingContinuitySource.js","sourceHash":"341d03da1e1b0ffd7eeb86ff7ca668715da617ee4885e39e3ace0cef2d8e1f26","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/risk/StreamingContinuitySource.js","title":"particle_voice/risk/StreamingContinuitySource","summary":"StreamingContinuitySource.js — R5 Phase -1 risk spike. Exit gate: \"Phase-continuous harmonic/noise across arbitrary chunk boundaries; absolute-counter noise chunk-independent.\" — Phase -1. There is no dedicated filename for R5 in the plan's risk/ page list (it names R0-R4, R6-R16 pages explicitly but not R5) — this file/page covers that exit gate directly. The technique: every sample's value is a pure function of its ABSOLUTE sample index (harmonic phase = 2*pi*f0*n/sampleRate; noise = a counter-based hash of n), with no persistent oscillator/PRNG state threaded between chunks and no chunk-relative counter anywhere. Chunking therefore cannot affect the output — not \"close enough\", bit-identical — because the per-sample computation never reads chunk position at all. This is the mechanism `harmonic_source.js`/`noise_source.js` (Phase 2) must use for random chunk-boundary training and streaming to work.","exportCount":5}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/StreamingContinuitySource.md","moduleTitle":"particle_voice/risk/StreamingContinuitySource","source":"agi/particle_voice/risk/StreamingContinuitySource.js","import":"/agi/particle_voice/risk/StreamingContinuitySource.js","sourceHash":"341d03da1e1b0ffd7eeb86ff7ca668715da617ee4885e39e3ace0cef2d8e1f26","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/StreamingContinuitySource.js#0000:noiseAt","exportIndex":0,"name":"noiseAt","kind":"function","signature":"noiseAt(absoluteIndex, seed)","summary":"Counter-based hash PRNG: deterministic pseudo-random float in [-1, 1], pure function of (index, seed)."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/StreamingContinuitySource.md","moduleTitle":"particle_voice/risk/StreamingContinuitySource","source":"agi/particle_voice/risk/StreamingContinuitySource.js","import":"/agi/particle_voice/risk/StreamingContinuitySource.js","sourceHash":"341d03da1e1b0ffd7eeb86ff7ca668715da617ee4885e39e3ace0cef2d8e1f26","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/StreamingContinuitySource.js#0001:harmonicAt","exportIndex":1,"name":"harmonicAt","kind":"function","signature":"harmonicAt(absoluteIndex, sampleRate, f0Hz)","summary":"Pure function of absolute sample index — no carried oscillator phase state."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/StreamingContinuitySource.md","moduleTitle":"particle_voice/risk/StreamingContinuitySource","source":"agi/particle_voice/risk/StreamingContinuitySource.js","import":"/agi/particle_voice/risk/StreamingContinuitySource.js","sourceHash":"341d03da1e1b0ffd7eeb86ff7ca668715da617ee4885e39e3ace0cef2d8e1f26","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/StreamingContinuitySource.js#0002:synthesizeAbsoluteCounter","exportIndex":2,"name":"synthesizeAbsoluteCounter","kind":"function","signature":"synthesizeAbsoluteCounter(totalSamples, sampleRate, f0Hz, noiseSeed, chunkSizes)","summary":"Correct (absolute-counter) synthesis: chunking `chunkSizes` (cycled) has zero effect on the output because each sample only ever reads its absolute index `n`, never a position relative to the current chunk."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/StreamingContinuitySource.md","moduleTitle":"particle_voice/risk/StreamingContinuitySource","source":"agi/particle_voice/risk/StreamingContinuitySource.js","import":"/agi/particle_voice/risk/StreamingContinuitySource.js","sourceHash":"341d03da1e1b0ffd7eeb86ff7ca668715da617ee4885e39e3ace0cef2d8e1f26","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/StreamingContinuitySource.js#0003:synthesizeChunkRelativeCounterBuggy","exportIndex":3,"name":"synthesizeChunkRelativeCounterBuggy","kind":"function","signature":"synthesizeChunkRelativeCounterBuggy(totalSamples, sampleRate, f0Hz, noiseSeed, chunkSizes)","summary":"Deliberately buggy (chunk-relative-counter) synthesis for the self-test: resets its local counter to 0 at the start of every chunk, so output DOES depend on how the signal was chunked — used only to prove the bit-exact comparison in this probe actually catches phase discontinuity."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/StreamingContinuitySource.md","moduleTitle":"particle_voice/risk/StreamingContinuitySource","source":"agi/particle_voice/risk/StreamingContinuitySource.js","import":"/agi/particle_voice/risk/StreamingContinuitySource.js","sourceHash":"341d03da1e1b0ffd7eeb86ff7ca668715da617ee4885e39e3ace0cef2d8e1f26","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/StreamingContinuitySource.js#0004:maxAbsDiff","exportIndex":4,"name":"maxAbsDiff","kind":"function","signature":"maxAbsDiff(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/TinyAutodiff.md","moduleTitle":"particle_voice/risk/TinyAutodiff","source":"agi/particle_voice/risk/TinyAutodiff.js","import":"/agi/particle_voice/risk/TinyAutodiff.js","sourceHash":"ec5c004232925a8f0fcac03bb0685a7bfdbdf568132330c3640e25bfed94b399","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/risk/TinyAutodiff.js","title":"particle_voice/risk/TinyAutodiff","summary":"TinyAutodiff.js — R7 Phase -1 risk spike. Hand-wired forward+backward layers (Linear, Conv1D, ReLU, Sigmoid), losses (MSE, BCE), and an AdamW optimizer — deliberately NOT a general computational-graph autodiff engine. `ParticleTape`/`BackwardGraphCompiler`/ `GradientGraph` (Phase 1, nn/autodiff/) are the real general system; R7's job is to prove models at this parameter scale can be forward+backward trained in-browser at all, not to build that general architecture early. All arrays are plain Float32Array with row/channel-major layouts documented per function; batch=1 throughout (a single fixed sequence/vector per step) is sufficient for R7's memorization-convergence test.","exportCount":9}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/TinyAutodiff.md","moduleTitle":"particle_voice/risk/TinyAutodiff","source":"agi/particle_voice/risk/TinyAutodiff.js","import":"/agi/particle_voice/risk/TinyAutodiff.js","sourceHash":"ec5c004232925a8f0fcac03bb0685a7bfdbdf568132330c3640e25bfed94b399","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/TinyAutodiff.js#0000:makeRng","exportIndex":0,"name":"makeRng","kind":"function","signature":"makeRng(seed)","summary":"TinyAutodiff.js — R7 Phase -1 risk spike. Hand-wired forward+backward layers (Linear, Conv1D, ReLU, Sigmoid), losses (MSE, BCE), and an AdamW optimizer — deliberately NOT a general computational-graph autodiff engine. `ParticleTape`/`BackwardGraphCompiler`/ `GradientGraph` (Phase 1, nn/autodiff/) are the real general system; R7's job is to prove models at this parameter scale can be forward+backward trained in-browser at all, not to build that general architecture early. All arrays are plain Float32Array with row/channel-major layouts documented per function; batch=1 throughout (a single fixed sequence/vector per step) is sufficient for R7's memorization-convergence test."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/TinyAutodiff.md","moduleTitle":"particle_voice/risk/TinyAutodiff","source":"agi/particle_voice/risk/TinyAutodiff.js","import":"/agi/particle_voice/risk/TinyAutodiff.js","sourceHash":"ec5c004232925a8f0fcac03bb0685a7bfdbdf568132330c3640e25bfed94b399","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/TinyAutodiff.js#0001:createLinear","exportIndex":1,"name":"createLinear","kind":"function","signature":"createLinear(inputDim, outputDim, rng)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/TinyAutodiff.md","moduleTitle":"particle_voice/risk/TinyAutodiff","source":"agi/particle_voice/risk/TinyAutodiff.js","import":"/agi/particle_voice/risk/TinyAutodiff.js","sourceHash":"ec5c004232925a8f0fcac03bb0685a7bfdbdf568132330c3640e25bfed94b399","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/TinyAutodiff.js#0002:createReLU","exportIndex":2,"name":"createReLU","kind":"function","signature":"createReLU()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/TinyAutodiff.md","moduleTitle":"particle_voice/risk/TinyAutodiff","source":"agi/particle_voice/risk/TinyAutodiff.js","import":"/agi/particle_voice/risk/TinyAutodiff.js","sourceHash":"ec5c004232925a8f0fcac03bb0685a7bfdbdf568132330c3640e25bfed94b399","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/TinyAutodiff.js#0003:createSigmoid","exportIndex":3,"name":"createSigmoid","kind":"function","signature":"createSigmoid()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/TinyAutodiff.md","moduleTitle":"particle_voice/risk/TinyAutodiff","source":"agi/particle_voice/risk/TinyAutodiff.js","import":"/agi/particle_voice/risk/TinyAutodiff.js","sourceHash":"ec5c004232925a8f0fcac03bb0685a7bfdbdf568132330c3640e25bfed94b399","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/TinyAutodiff.js#0004:createConv1D","exportIndex":4,"name":"createConv1D","kind":"function","signature":"createConv1D(inChannels, outChannels, kernelSize, rng)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/TinyAutodiff.md","moduleTitle":"particle_voice/risk/TinyAutodiff","source":"agi/particle_voice/risk/TinyAutodiff.js","import":"/agi/particle_voice/risk/TinyAutodiff.js","sourceHash":"ec5c004232925a8f0fcac03bb0685a7bfdbdf568132330c3640e25bfed94b399","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/TinyAutodiff.js#0005:mseLoss","exportIndex":5,"name":"mseLoss","kind":"function","signature":"mseLoss(pred, target)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/TinyAutodiff.md","moduleTitle":"particle_voice/risk/TinyAutodiff","source":"agi/particle_voice/risk/TinyAutodiff.js","import":"/agi/particle_voice/risk/TinyAutodiff.js","sourceHash":"ec5c004232925a8f0fcac03bb0685a7bfdbdf568132330c3640e25bfed94b399","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/TinyAutodiff.js#0006:bceLoss","exportIndex":6,"name":"bceLoss","kind":"function","signature":"bceLoss(pred, target)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/TinyAutodiff.md","moduleTitle":"particle_voice/risk/TinyAutodiff","source":"agi/particle_voice/risk/TinyAutodiff.js","import":"/agi/particle_voice/risk/TinyAutodiff.js","sourceHash":"ec5c004232925a8f0fcac03bb0685a7bfdbdf568132330c3640e25bfed94b399","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/TinyAutodiff.js#0007:clipGradGlobalNorm","exportIndex":7,"name":"clipGradGlobalNorm","kind":"function","signature":"clipGradGlobalNorm(gradArrays, maxNorm)","summary":"Clip the global L2 norm across all gradient arrays in place — cheap insurance against a deep stack diverging."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/TinyAutodiff.md","moduleTitle":"particle_voice/risk/TinyAutodiff","source":"agi/particle_voice/risk/TinyAutodiff.js","import":"/agi/particle_voice/risk/TinyAutodiff.js","sourceHash":"ec5c004232925a8f0fcac03bb0685a7bfdbdf568132330c3640e25bfed94b399","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/TinyAutodiff.js#0008:createAdamW","exportIndex":8,"name":"createAdamW","kind":"function","signature":"createAdamW(paramArrays, { lr = 0.01, beta1 = 0.9, beta2 = 0.999, eps = 1e-8, weightDecay = 0.01 } = {})","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/TinyModels.md","moduleTitle":"particle_voice/risk/TinyModels","source":"agi/particle_voice/risk/TinyModels.js","import":"/agi/particle_voice/risk/TinyModels.js","sourceHash":"cfde29bd4820222255a17e49e4d66d8c7fb1246a1116b488b0bacd8458a5dbd5","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/risk/TinyModels.js","title":"particle_voice/risk/TinyModels","summary":"TinyModels.js — R7 Phase -1 risk spike model definitions. \"1M-parameter model, 5M Conv1D model, tiny adversarial audio pair\" — particle-voice-26357c.md, Phase -1. Exact param counts land close to but not exactly at 1,000,000/5,000,000 (real counts are reported, not fudged to hit a round number) — the plan's own number is an order-of-magnitude descriptor.","exportCount":3}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/TinyModels.md","moduleTitle":"particle_voice/risk/TinyModels","source":"agi/particle_voice/risk/TinyModels.js","import":"/agi/particle_voice/risk/TinyModels.js","sourceHash":"cfde29bd4820222255a17e49e4d66d8c7fb1246a1116b488b0bacd8458a5dbd5","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/TinyModels.js#0000:createTinyMlpModel","exportIndex":0,"name":"createTinyMlpModel","kind":"function","signature":"createTinyMlpModel(rng)","summary":"~0.93M-param MLP: Linear(64,650)-ReLU x3 -Linear(650,64)."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/TinyModels.md","moduleTitle":"particle_voice/risk/TinyModels","source":"agi/particle_voice/risk/TinyModels.js","import":"/agi/particle_voice/risk/TinyModels.js","sourceHash":"cfde29bd4820222255a17e49e4d66d8c7fb1246a1116b488b0bacd8458a5dbd5","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/TinyModels.js#0001:createTinyConv1dModel","exportIndex":1,"name":"createTinyConv1dModel","kind":"function","signature":"createTinyConv1dModel(rng, sequenceLength = 16)","summary":"~4.5M-param Conv1D stack: Conv1D(16,384,5)-ReLU, 6x[Conv1D(384,384,5)-ReLU], Conv1D(384,16,5)."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/TinyModels.md","moduleTitle":"particle_voice/risk/TinyModels","source":"agi/particle_voice/risk/TinyModels.js","import":"/agi/particle_voice/risk/TinyModels.js","sourceHash":"cfde29bd4820222255a17e49e4d66d8c7fb1246a1116b488b0bacd8458a5dbd5","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/TinyModels.js#0002:createTinyGan","exportIndex":2,"name":"createTinyGan","kind":"function","signature":"createTinyGan(rng)","summary":"Tiny generator (noise[8] -> sample[16]) + discriminator (sample[16] -> real-probability)."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/TrainingSpikeProbe.md","moduleTitle":"particle_voice/risk/TrainingSpikeProbe","source":"agi/particle_voice/risk/TrainingSpikeProbe.js","import":"/agi/particle_voice/risk/TrainingSpikeProbe.js","sourceHash":"34634c487999f5b7f1c22135c140bc03790964bd27e4181e090db8dfdd818309","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/risk/TrainingSpikeProbe.js","title":"particle_voice/risk/TrainingSpikeProbe","summary":"TrainingSpikeProbe.js — R7 Phase -1 risk spike orchestrator. Exit gate: \"1M model converges; 5M Conv1D model converges; tiny GAN converges and checkpoints; AdamW memory estimate matches measurement.\" — Phase -1. \"OPFS cache behavior\" and \"device-loss re-upload\" are also named in the risk page description and covered here. Scoping notes (read before trusting a pass): - \"Converges\" here means memorizes a small fixed random input/target pair (loss drops sharply) — a feasibility/mechanics check, not a generalization claim. - \"Device-loss re-upload\" exercises the re-upload PROCEDURE after an intentional device.destroy(); there is no scriptable public API to force an uncontrolled device loss (crash), so that path is not tested.","exportCount":4}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/TrainingSpikeProbe.md","moduleTitle":"particle_voice/risk/TrainingSpikeProbe","source":"agi/particle_voice/risk/TrainingSpikeProbe.js","import":"/agi/particle_voice/risk/TrainingSpikeProbe.js","sourceHash":"34634c487999f5b7f1c22135c140bc03790964bd27e4181e090db8dfdd818309","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/TrainingSpikeProbe.js#0000:runTrainingSpikeProbe","exportIndex":0,"name":"runTrainingSpikeProbe","kind":"function","signature":"async runTrainingSpikeProbe()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/TrainingSpikeProbe.md","moduleTitle":"particle_voice/risk/TrainingSpikeProbe","source":"agi/particle_voice/risk/TrainingSpikeProbe.js","import":"/agi/particle_voice/risk/TrainingSpikeProbe.js","sourceHash":"34634c487999f5b7f1c22135c140bc03790964bd27e4181e090db8dfdd818309","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/TrainingSpikeProbe.js#0001:buildTrainingSpikeReceipt","exportIndex":1,"name":"buildTrainingSpikeReceipt","kind":"function","signature":"async buildTrainingSpikeReceipt(result)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/TrainingSpikeProbe.md","moduleTitle":"particle_voice/risk/TrainingSpikeProbe","source":"agi/particle_voice/risk/TrainingSpikeProbe.js","import":"/agi/particle_voice/risk/TrainingSpikeProbe.js","sourceHash":"34634c487999f5b7f1c22135c140bc03790964bd27e4181e090db8dfdd818309","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/TrainingSpikeProbe.js#0002:prepareTrainingSpikeReceiptDownload","exportIndex":2,"name":"prepareTrainingSpikeReceiptDownload","kind":"function","signature":"prepareTrainingSpikeReceiptDownload(receipt)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/TrainingSpikeProbe.md","moduleTitle":"particle_voice/risk/TrainingSpikeProbe","source":"agi/particle_voice/risk/TrainingSpikeProbe.js","import":"/agi/particle_voice/risk/TrainingSpikeProbe.js","sourceHash":"34634c487999f5b7f1c22135c140bc03790964bd27e4181e090db8dfdd818309","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/TrainingSpikeProbe.js#0003:R7_TRAINING_SPIKE_SCHEMA","exportIndex":3,"name":"R7_TRAINING_SPIKE_SCHEMA","kind":"constant","signature":"R7_TRAINING_SPIKE_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/VadContinuityProbe.md","moduleTitle":"particle_voice/risk/VadContinuityProbe","source":"agi/particle_voice/risk/VadContinuityProbe.js","import":"/agi/particle_voice/risk/VadContinuityProbe.js","sourceHash":"52324adc3b4c8c3586f795fbba86bfe2a4e34caf20617ae4d89a2f5d70965f59","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/risk/VadContinuityProbe.js","title":"particle_voice/risk/VadContinuityProbe","summary":"VadContinuityProbe.js — R11 Phase -1 risk spike orchestrator.","exportCount":4}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/VadContinuityProbe.md","moduleTitle":"particle_voice/risk/VadContinuityProbe","source":"agi/particle_voice/risk/VadContinuityProbe.js","import":"/agi/particle_voice/risk/VadContinuityProbe.js","sourceHash":"52324adc3b4c8c3586f795fbba86bfe2a4e34caf20617ae4d89a2f5d70965f59","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/VadContinuityProbe.js#0000:runVadContinuityProbe","exportIndex":0,"name":"runVadContinuityProbe","kind":"function","signature":"async runVadContinuityProbe()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/VadContinuityProbe.md","moduleTitle":"particle_voice/risk/VadContinuityProbe","source":"agi/particle_voice/risk/VadContinuityProbe.js","import":"/agi/particle_voice/risk/VadContinuityProbe.js","sourceHash":"52324adc3b4c8c3586f795fbba86bfe2a4e34caf20617ae4d89a2f5d70965f59","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/VadContinuityProbe.js#0001:buildVadContinuityReceipt","exportIndex":1,"name":"buildVadContinuityReceipt","kind":"function","signature":"async buildVadContinuityReceipt(result)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/VadContinuityProbe.md","moduleTitle":"particle_voice/risk/VadContinuityProbe","source":"agi/particle_voice/risk/VadContinuityProbe.js","import":"/agi/particle_voice/risk/VadContinuityProbe.js","sourceHash":"52324adc3b4c8c3586f795fbba86bfe2a4e34caf20617ae4d89a2f5d70965f59","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/VadContinuityProbe.js#0002:prepareVadContinuityReceiptDownload","exportIndex":2,"name":"prepareVadContinuityReceiptDownload","kind":"function","signature":"prepareVadContinuityReceiptDownload(receipt)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/VadContinuityProbe.md","moduleTitle":"particle_voice/risk/VadContinuityProbe","source":"agi/particle_voice/risk/VadContinuityProbe.js","import":"/agi/particle_voice/risk/VadContinuityProbe.js","sourceHash":"52324adc3b4c8c3586f795fbba86bfe2a4e34caf20617ae4d89a2f5d70965f59","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/VadContinuityProbe.js#0003:R11_VAD_CONTINUITY_SCHEMA","exportIndex":3,"name":"R11_VAD_CONTINUITY_SCHEMA","kind":"constant","signature":"R11_VAD_CONTINUITY_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/VoiceBoxPhysiologyProbe.md","moduleTitle":"particle_voice/risk/VoiceBoxPhysiologyProbe","source":"agi/particle_voice/risk/VoiceBoxPhysiologyProbe.js","import":"/agi/particle_voice/risk/VoiceBoxPhysiologyProbe.js","sourceHash":"b2a0067cf8691acb435642bc00cb315d07f58f9e2333f4ef5cd6f785e1244623","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/risk/VoiceBoxPhysiologyProbe.js","title":"particle_voice/risk/VoiceBoxPhysiologyProbe","summary":"VoiceBoxPhysiologyProbe.js — R6A Phase -1 risk spike orchestrator. Exit gate: \"ArticulationHead -> NeuralPhysiologyState -> BreathReservoir/ParticleTract -> acoustic renderer receipt; physiology intervention changes final PCM.\" — Phase -1. No dedicated filename exists for R6A in the plan's risk/ page list either (same situation as R5) — this page covers that exit gate directly. Wires: createScriptedArticulationHead (stand-in for the trained model) -> NeuralPhysiologyState -> createBreathReservoir -> createGlottalSource + createVocalTract (R6's waveguide, reused directly, not re-implemented) -> PCM. Renders the same scripted utterance twice — once at baseline, once with a reduced-respiratory-drive intervention — and requires the two PCM outputs to measurably differ while both remain stable.","exportCount":4}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/VoiceBoxPhysiologyProbe.md","moduleTitle":"particle_voice/risk/VoiceBoxPhysiologyProbe","source":"agi/particle_voice/risk/VoiceBoxPhysiologyProbe.js","import":"/agi/particle_voice/risk/VoiceBoxPhysiologyProbe.js","sourceHash":"b2a0067cf8691acb435642bc00cb315d07f58f9e2333f4ef5cd6f785e1244623","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/VoiceBoxPhysiologyProbe.js#0000:runVoiceBoxPhysiologyProbe","exportIndex":0,"name":"runVoiceBoxPhysiologyProbe","kind":"function","signature":"async runVoiceBoxPhysiologyProbe()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/VoiceBoxPhysiologyProbe.md","moduleTitle":"particle_voice/risk/VoiceBoxPhysiologyProbe","source":"agi/particle_voice/risk/VoiceBoxPhysiologyProbe.js","import":"/agi/particle_voice/risk/VoiceBoxPhysiologyProbe.js","sourceHash":"b2a0067cf8691acb435642bc00cb315d07f58f9e2333f4ef5cd6f785e1244623","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/VoiceBoxPhysiologyProbe.js#0001:buildVoiceBoxPhysiologyReceipt","exportIndex":1,"name":"buildVoiceBoxPhysiologyReceipt","kind":"function","signature":"async buildVoiceBoxPhysiologyReceipt(result)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/VoiceBoxPhysiologyProbe.md","moduleTitle":"particle_voice/risk/VoiceBoxPhysiologyProbe","source":"agi/particle_voice/risk/VoiceBoxPhysiologyProbe.js","import":"/agi/particle_voice/risk/VoiceBoxPhysiologyProbe.js","sourceHash":"b2a0067cf8691acb435642bc00cb315d07f58f9e2333f4ef5cd6f785e1244623","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/VoiceBoxPhysiologyProbe.js#0002:prepareVoiceBoxPhysiologyReceiptDownload","exportIndex":2,"name":"prepareVoiceBoxPhysiologyReceiptDownload","kind":"function","signature":"prepareVoiceBoxPhysiologyReceiptDownload(receipt)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/VoiceBoxPhysiologyProbe.md","moduleTitle":"particle_voice/risk/VoiceBoxPhysiologyProbe","source":"agi/particle_voice/risk/VoiceBoxPhysiologyProbe.js","import":"/agi/particle_voice/risk/VoiceBoxPhysiologyProbe.js","sourceHash":"b2a0067cf8691acb435642bc00cb315d07f58f9e2333f4ef5cd6f785e1244623","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/VoiceBoxPhysiologyProbe.js#0003:R6A_VOICEBOX_PHYSIOLOGY_SCHEMA","exportIndex":3,"name":"R6A_VOICEBOX_PHYSIOLOGY_SCHEMA","kind":"constant","signature":"R6A_VOICEBOX_PHYSIOLOGY_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/VoiceBoxWaveguideProbe.md","moduleTitle":"particle_voice/risk/VoiceBoxWaveguideProbe","source":"agi/particle_voice/risk/VoiceBoxWaveguideProbe.js","import":"/agi/particle_voice/risk/VoiceBoxWaveguideProbe.js","sourceHash":"fa42835c831bf9082202480a07446c2e7a96dc8d1bade4577a549f93584b189b","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/risk/VoiceBoxWaveguideProbe.js","title":"particle_voice/risk/VoiceBoxWaveguideProbe","summary":"VoiceBoxWaveguideProbe.js — R6 Phase -1 risk spike orchestrator. Exit gate: \"Stable vowels, nasal coupling, closure/release/frication, pitch sweeps with no clicks or energy explosions.\" — Phase -1. Pure JS/CPU (see KellyLochbaumWaveguide.js header for why): this proves the waveguide algorithm itself is stable and produces plausible, controllable behavior. GPU kernel parity (`tract_waveguide.js` etc.) is a separate Phase 2 concern, tested the same way R2 checked matmul parity.","exportCount":4}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/VoiceBoxWaveguideProbe.md","moduleTitle":"particle_voice/risk/VoiceBoxWaveguideProbe","source":"agi/particle_voice/risk/VoiceBoxWaveguideProbe.js","import":"/agi/particle_voice/risk/VoiceBoxWaveguideProbe.js","sourceHash":"fa42835c831bf9082202480a07446c2e7a96dc8d1bade4577a549f93584b189b","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/VoiceBoxWaveguideProbe.js#0000:runVoiceBoxWaveguideProbe","exportIndex":0,"name":"runVoiceBoxWaveguideProbe","kind":"function","signature":"async runVoiceBoxWaveguideProbe()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/VoiceBoxWaveguideProbe.md","moduleTitle":"particle_voice/risk/VoiceBoxWaveguideProbe","source":"agi/particle_voice/risk/VoiceBoxWaveguideProbe.js","import":"/agi/particle_voice/risk/VoiceBoxWaveguideProbe.js","sourceHash":"fa42835c831bf9082202480a07446c2e7a96dc8d1bade4577a549f93584b189b","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/VoiceBoxWaveguideProbe.js#0001:buildVoiceBoxWaveguideReceipt","exportIndex":1,"name":"buildVoiceBoxWaveguideReceipt","kind":"function","signature":"async buildVoiceBoxWaveguideReceipt(result)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/VoiceBoxWaveguideProbe.md","moduleTitle":"particle_voice/risk/VoiceBoxWaveguideProbe","source":"agi/particle_voice/risk/VoiceBoxWaveguideProbe.js","import":"/agi/particle_voice/risk/VoiceBoxWaveguideProbe.js","sourceHash":"fa42835c831bf9082202480a07446c2e7a96dc8d1bade4577a549f93584b189b","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/VoiceBoxWaveguideProbe.js#0002:prepareVoiceBoxWaveguideReceiptDownload","exportIndex":2,"name":"prepareVoiceBoxWaveguideReceiptDownload","kind":"function","signature":"prepareVoiceBoxWaveguideReceiptDownload(receipt)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/VoiceBoxWaveguideProbe.md","moduleTitle":"particle_voice/risk/VoiceBoxWaveguideProbe","source":"agi/particle_voice/risk/VoiceBoxWaveguideProbe.js","import":"/agi/particle_voice/risk/VoiceBoxWaveguideProbe.js","sourceHash":"fa42835c831bf9082202480a07446c2e7a96dc8d1bade4577a549f93584b189b","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/VoiceBoxWaveguideProbe.js#0003:R6_VOICEBOX_WAVEGUIDE_SCHEMA","exportIndex":3,"name":"R6_VOICEBOX_WAVEGUIDE_SCHEMA","kind":"constant","signature":"R6_VOICEBOX_WAVEGUIDE_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/WeightPagingProbe.md","moduleTitle":"particle_voice/risk/WeightPagingProbe","source":"agi/particle_voice/risk/WeightPagingProbe.js","import":"/agi/particle_voice/risk/WeightPagingProbe.js","sourceHash":"781fcb693818fca7bf27b02e1954d6b061309a4343fcdbee9521fa919e83e031","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/risk/WeightPagingProbe.js","title":"particle_voice/risk/WeightPagingProbe","summary":"WeightPagingProbe.js — R8 Phase -1 risk spike. \"Weight page download/recovery/page-hash/interrupted-download works; device-loss re-upload succeeds.\" — Phase -1. No dedicated filename exists for R8 in the plan's risk/ page list — named weight-paging.html here. Simulates WeightPageStore.js's core responsibilities: a per-page SHA-256 directory, an interrupted download that must retry (not silently drop data), corruption detection via hash mismatch, and multi-page device-loss re-upload (extends R7's single-buffer version to several pages).","exportCount":4}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/WeightPagingProbe.md","moduleTitle":"particle_voice/risk/WeightPagingProbe","source":"agi/particle_voice/risk/WeightPagingProbe.js","import":"/agi/particle_voice/risk/WeightPagingProbe.js","sourceHash":"781fcb693818fca7bf27b02e1954d6b061309a4343fcdbee9521fa919e83e031","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/WeightPagingProbe.js#0000:runWeightPagingProbe","exportIndex":0,"name":"runWeightPagingProbe","kind":"function","signature":"async runWeightPagingProbe()","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/WeightPagingProbe.md","moduleTitle":"particle_voice/risk/WeightPagingProbe","source":"agi/particle_voice/risk/WeightPagingProbe.js","import":"/agi/particle_voice/risk/WeightPagingProbe.js","sourceHash":"781fcb693818fca7bf27b02e1954d6b061309a4343fcdbee9521fa919e83e031","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/WeightPagingProbe.js#0001:buildWeightPagingReceipt","exportIndex":1,"name":"buildWeightPagingReceipt","kind":"function","signature":"async buildWeightPagingReceipt(result)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/WeightPagingProbe.md","moduleTitle":"particle_voice/risk/WeightPagingProbe","source":"agi/particle_voice/risk/WeightPagingProbe.js","import":"/agi/particle_voice/risk/WeightPagingProbe.js","sourceHash":"781fcb693818fca7bf27b02e1954d6b061309a4343fcdbee9521fa919e83e031","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/WeightPagingProbe.js#0002:prepareWeightPagingReceiptDownload","exportIndex":2,"name":"prepareWeightPagingReceiptDownload","kind":"function","signature":"prepareWeightPagingReceiptDownload(receipt)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/WeightPagingProbe.md","moduleTitle":"particle_voice/risk/WeightPagingProbe","source":"agi/particle_voice/risk/WeightPagingProbe.js","import":"/agi/particle_voice/risk/WeightPagingProbe.js","sourceHash":"781fcb693818fca7bf27b02e1954d6b061309a4343fcdbee9521fa919e83e031","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/WeightPagingProbe.js#0003:R8_WEIGHT_PAGING_SCHEMA","exportIndex":3,"name":"R8_WEIGHT_PAGING_SCHEMA","kind":"constant","signature":"R8_WEIGHT_PAGING_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/WolaSignals.md","moduleTitle":"particle_voice/risk/WolaSignals","source":"agi/particle_voice/risk/WolaSignals.js","import":"/agi/particle_voice/risk/WolaSignals.js","sourceHash":"87aae01bb39ae84e1a9a7530bc64e835f0c3b70616dcac4185f1543eb71ea775","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/risk/WolaSignals.js","title":"particle_voice/risk/WolaSignals","summary":"WolaSignals.js — deterministic test signals, Hann window, and CPU-side sum-of-squares WOLA normalization/overlap-add for R3 (stft-wola.html).","exportCount":12}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/WolaSignals.md","moduleTitle":"particle_voice/risk/WolaSignals","source":"agi/particle_voice/risk/WolaSignals.js","import":"/agi/particle_voice/risk/WolaSignals.js","sourceHash":"87aae01bb39ae84e1a9a7530bc64e835f0c3b70616dcac4185f1543eb71ea775","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/WolaSignals.js#0000:hannWindow","exportIndex":0,"name":"hannWindow","kind":"function","signature":"hannWindow(N)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/WolaSignals.md","moduleTitle":"particle_voice/risk/WolaSignals","source":"agi/particle_voice/risk/WolaSignals.js","import":"/agi/particle_voice/risk/WolaSignals.js","sourceHash":"87aae01bb39ae84e1a9a7530bc64e835f0c3b70616dcac4185f1543eb71ea775","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/WolaSignals.js#0001:impulseSignal","exportIndex":1,"name":"impulseSignal","kind":"function","signature":"impulseSignal(N)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/WolaSignals.md","moduleTitle":"particle_voice/risk/WolaSignals","source":"agi/particle_voice/risk/WolaSignals.js","import":"/agi/particle_voice/risk/WolaSignals.js","sourceHash":"87aae01bb39ae84e1a9a7530bc64e835f0c3b70616dcac4185f1543eb71ea775","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/WolaSignals.js#0002:sineSweepSignal","exportIndex":2,"name":"sineSweepSignal","kind":"function","signature":"sineSweepSignal(N, sampleRate, f0, f1)","summary":"Linear chirp from f0 to f1 Hz across N samples at sampleRate."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/WolaSignals.md","moduleTitle":"particle_voice/risk/WolaSignals","source":"agi/particle_voice/risk/WolaSignals.js","import":"/agi/particle_voice/risk/WolaSignals.js","sourceHash":"87aae01bb39ae84e1a9a7530bc64e835f0c3b70616dcac4185f1543eb71ea775","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/WolaSignals.js#0003:whiteNoiseSignal","exportIndex":3,"name":"whiteNoiseSignal","kind":"function","signature":"whiteNoiseSignal(N, seed = 7)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/WolaSignals.md","moduleTitle":"particle_voice/risk/WolaSignals","source":"agi/particle_voice/risk/WolaSignals.js","import":"/agi/particle_voice/risk/WolaSignals.js","sourceHash":"87aae01bb39ae84e1a9a7530bc64e835f0c3b70616dcac4185f1543eb71ea775","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/WolaSignals.js#0004:sineSignal","exportIndex":4,"name":"sineSignal","kind":"function","signature":"sineSignal(length, sampleRate, freqHz, amplitude = 1.0)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/WolaSignals.md","moduleTitle":"particle_voice/risk/WolaSignals","source":"agi/particle_voice/risk/WolaSignals.js","import":"/agi/particle_voice/risk/WolaSignals.js","sourceHash":"87aae01bb39ae84e1a9a7530bc64e835f0c3b70616dcac4185f1543eb71ea775","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/WolaSignals.js#0005:computeSumOfSquaresEnvelope","exportIndex":5,"name":"computeSumOfSquaresEnvelope","kind":"function","signature":"computeSumOfSquaresEnvelope(window, hop, totalLength, numFrames)","summary":"sum_k window[t - k*hop]^2 for every output sample t in [0, totalLength)."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/WolaSignals.md","moduleTitle":"particle_voice/risk/WolaSignals","source":"agi/particle_voice/risk/WolaSignals.js","import":"/agi/particle_voice/risk/WolaSignals.js","sourceHash":"87aae01bb39ae84e1a9a7530bc64e835f0c3b70616dcac4185f1543eb71ea775","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/WolaSignals.js#0006:overlapAdd","exportIndex":6,"name":"overlapAdd","kind":"function","signature":"overlapAdd(frames, hop, totalLength)","summary":"Overlap-add windowed frames (each already synthesis-windowed) into a flat buffer."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/WolaSignals.md","moduleTitle":"particle_voice/risk/WolaSignals","source":"agi/particle_voice/risk/WolaSignals.js","import":"/agi/particle_voice/risk/WolaSignals.js","sourceHash":"87aae01bb39ae84e1a9a7530bc64e835f0c3b70616dcac4185f1543eb71ea775","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/WolaSignals.js#0007:sliceFrames","exportIndex":7,"name":"sliceFrames","kind":"function","signature":"sliceFrames(signal, N, hop, numFrames)","summary":"Slice a flat signal into overlapping N-length frames at the given hop (zero-padded past the end)."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/WolaSignals.md","moduleTitle":"particle_voice/risk/WolaSignals","source":"agi/particle_voice/risk/WolaSignals.js","import":"/agi/particle_voice/risk/WolaSignals.js","sourceHash":"87aae01bb39ae84e1a9a7530bc64e835f0c3b70616dcac4185f1543eb71ea775","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/WolaSignals.js#0008:applyWindow","exportIndex":8,"name":"applyWindow","kind":"function","signature":"applyWindow(frame, window)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/WolaSignals.md","moduleTitle":"particle_voice/risk/WolaSignals","source":"agi/particle_voice/risk/WolaSignals.js","import":"/agi/particle_voice/risk/WolaSignals.js","sourceHash":"87aae01bb39ae84e1a9a7530bc64e835f0c3b70616dcac4185f1543eb71ea775","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/WolaSignals.js#0009:maxAbsDiff","exportIndex":9,"name":"maxAbsDiff","kind":"function","signature":"maxAbsDiff(a, b, startIndex = 0, endIndex = a.length)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/WolaSignals.md","moduleTitle":"particle_voice/risk/WolaSignals","source":"agi/particle_voice/risk/WolaSignals.js","import":"/agi/particle_voice/risk/WolaSignals.js","sourceHash":"87aae01bb39ae84e1a9a7530bc64e835f0c3b70616dcac4185f1543eb71ea775","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/WolaSignals.js#0010:peakAbs","exportIndex":10,"name":"peakAbs","kind":"function","signature":"peakAbs(a, startIndex = 0, endIndex = a.length)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/risk/WolaSignals.md","moduleTitle":"particle_voice/risk/WolaSignals","source":"agi/particle_voice/risk/WolaSignals.js","import":"/agi/particle_voice/risk/WolaSignals.js","sourceHash":"87aae01bb39ae84e1a9a7530bc64e835f0c3b70616dcac4185f1543eb71ea775","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/risk/WolaSignals.js#0011:toDb","exportIndex":11,"name":"toDb","kind":"function","signature":"toDb(ratio)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/streaming/GPUReadbackRing.md","moduleTitle":"particle_voice/streaming/GPUReadbackRing","source":"agi/particle_voice/streaming/GPUReadbackRing.js","import":"/agi/particle_voice/streaming/GPUReadbackRing.js","sourceHash":"ef614f2ef264549bc92360ea15a52ca4af03fbccd68d92d396f9fb6bec598695","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/streaming/GPUReadbackRing.js","title":"particle_voice/streaming/GPUReadbackRing","summary":"GPUReadbackRing.js — Phase 2 ParticleVoice audio bridge. Production generalization of `risk/GpuReadbackRing.js` (R4)'s proven round-robin `MAP_READ` staging-slot ring — same core technique (each slot is copied into and mapped independently; the ONLY synchronization primitive is that slot's own `mapAsync()` promise, never a global `device.queue.onSubmittedWorkDone()`), generalized from R4's single-fixed-size/offset-0 probe surface to the production needs this module's callers (`ParticleTract.js`'s per-chunk PCM readback, eventually `SharedPCMRing.js`'s producer side) actually have: a byte-offset/length per request (not always the whole buffer from 0), `inFlightCount()` for backpressure introspection instead of only a throw on exhaustion, and GPU buffer accounting via `engine/core/gpu/GpuMetrics.js` (matching `GpuBuffer.js`'s own convention for every other buffer this project creates). R4's exit gate (`ReadbackAudioProbe.js`) already measured this exact technique's p50/p95/p99 readback latency and zero-underrun behavior across an 8-slot ring — this module does not re-derive or change that proven synchronization discipline, only widens its calling surface.","exportCount":4}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/streaming/GPUReadbackRing.md","moduleTitle":"particle_voice/streaming/GPUReadbackRing","source":"agi/particle_voice/streaming/GPUReadbackRing.js","import":"/agi/particle_voice/streaming/GPUReadbackRing.js","sourceHash":"ef614f2ef264549bc92360ea15a52ca4af03fbccd68d92d396f9fb6bec598695","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/streaming/GPUReadbackRing.js#0000:GPUReadbackRing","exportIndex":0,"name":"GPUReadbackRing","kind":"class","signature":"class GPUReadbackRing","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/streaming/GPUReadbackRing.md","moduleTitle":"particle_voice/streaming/GPUReadbackRing","source":"agi/particle_voice/streaming/GPUReadbackRing.js","import":"/agi/particle_voice/streaming/GPUReadbackRing.js","sourceHash":"ef614f2ef264549bc92360ea15a52ca4af03fbccd68d92d396f9fb6bec598695","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/streaming/GPUReadbackRing.js#0001:createGPUReadbackRing","exportIndex":1,"name":"createGPUReadbackRing","kind":"function","signature":"createGPUReadbackRing(device, slotByteSize, options)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/streaming/GPUReadbackRing.md","moduleTitle":"particle_voice/streaming/GPUReadbackRing","source":"agi/particle_voice/streaming/GPUReadbackRing.js","import":"/agi/particle_voice/streaming/GPUReadbackRing.js","sourceHash":"ef614f2ef264549bc92360ea15a52ca4af03fbccd68d92d396f9fb6bec598695","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/streaming/GPUReadbackRing.js#0002:DEFAULT_READBACK_SLOT_COUNT","exportIndex":2,"name":"DEFAULT_READBACK_SLOT_COUNT","kind":"constant","signature":"DEFAULT_READBACK_SLOT_COUNT","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/streaming/GPUReadbackRing.md","moduleTitle":"particle_voice/streaming/GPUReadbackRing","source":"agi/particle_voice/streaming/GPUReadbackRing.js","import":"/agi/particle_voice/streaming/GPUReadbackRing.js","sourceHash":"ef614f2ef264549bc92360ea15a52ca4af03fbccd68d92d396f9fb6bec598695","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/streaming/GPUReadbackRing.js#0003:MIN_READBACK_SLOT_COUNT","exportIndex":3,"name":"MIN_READBACK_SLOT_COUNT","kind":"constant","signature":"MIN_READBACK_SLOT_COUNT","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/streaming/PolyphaseResampler.md","moduleTitle":"particle_voice/streaming/PolyphaseResampler","source":"agi/particle_voice/streaming/PolyphaseResampler.js","import":"/agi/particle_voice/streaming/PolyphaseResampler.js","sourceHash":"cab38b9f0b74b585dec4daf90c92eab6475519c18ce741132ca4d17edd295324","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/streaming/PolyphaseResampler.js","title":"particle_voice/streaming/PolyphaseResampler","summary":"PolyphaseResampler.js — Phase 2 ParticleVoice audio bridge. \"ParticleVoice's own DSP runs at 32 kHz internally and resamples via `PolyphaseResampler.js` at the audio bridge boundary\" — `ARCHITECTURE.md` §\"Measured lead values\" / `spec/DeviceContract-v0.md` §7 (measured `AudioContext.sampleRate` 48000 Hz on the reference device). No risk-spike precedent exists for this module (checked `risk/` and `engine/` — the only \"resample\" hits in `engine/` are unrelated texture/render resample passes), so this is a fresh CPU-side (not GPU-kernel) implementation — appropriate for the audio bridge, which is already CPU-side per the plan (`SharedPCMRing.js`, `ParticleVoiceProcessor.js`). Classic Crochiere/Rabiner polyphase interpolator-decimator: for an EXACT integer ratio L/M (`inputSampleRate`/`outputSampleRate` reduced by their GCD — both are integers in practice, e.g. 32000 -> 48000 reduces exactly to L=3, M=2), a single windowed-sinc lowpass FIR (cutoff at `min(inputRate, outputRate)/2`, designed at the upsampled L*inputRate rate to suppress both upsampling images and downsampling aliases) is decomposed into L phase sub-filters of `tapsPerPhase` taps each. Per output sample, only `tapsPerPhase` multiplies are needed regardless of L — the O(tapsPerPhase*L) cost is paid once at construction (filter design), not per sample. STREAMING correctness (critical for a chunked audio bridge, where `WaveguideAcousticState` chunks arrive as small windows, not one whole signal): `process()` keeps a persistent tail of not-yet-fully-consumed input samples across calls (`_history`/`_historyBaseIndex`) and a continuously-advancing upsampled-domain position (`_pos`), so `resampler.process(wholeSignal)` and `chunks.map(c => resampler.process(c))` concatenated produce IDENTICAL output — verified directly in `tests/particle-voice/polyphase-resampler.html`. Known limitation (documented, not hidden): the FIR filter's group delay (~`tapsPerPhase/2` input samples) means the first `tapsPerPhase/2`-ish output samples ramp up from a zero-padded history rather than being bit-perfect from sample 0 — a normal, bounded FIR startup transient, not a correctness bug (every streaming FIR filter has this).","exportCount":5}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/streaming/PolyphaseResampler.md","moduleTitle":"particle_voice/streaming/PolyphaseResampler","source":"agi/particle_voice/streaming/PolyphaseResampler.js","import":"/agi/particle_voice/streaming/PolyphaseResampler.js","sourceHash":"cab38b9f0b74b585dec4daf90c92eab6475519c18ce741132ca4d17edd295324","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/streaming/PolyphaseResampler.js#0000:PolyphaseResampler","exportIndex":0,"name":"PolyphaseResampler","kind":"class","signature":"class PolyphaseResampler","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/streaming/PolyphaseResampler.md","moduleTitle":"particle_voice/streaming/PolyphaseResampler","source":"agi/particle_voice/streaming/PolyphaseResampler.js","import":"/agi/particle_voice/streaming/PolyphaseResampler.js","sourceHash":"cab38b9f0b74b585dec4daf90c92eab6475519c18ce741132ca4d17edd295324","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/streaming/PolyphaseResampler.js#0001:gcd","exportIndex":1,"name":"gcd","kind":"function","signature":"gcd(a, b)","summary":"PolyphaseResampler.js — Phase 2 ParticleVoice audio bridge. \"ParticleVoice's own DSP runs at 32 kHz internally and resamples via `PolyphaseResampler.js` at the audio bridge boundary\" — `ARCHITECTURE.md` §\"Measured lead values\" / `spec/DeviceContract-v0.md` §7 (measured `AudioContext.sampleRate` 48000 Hz on the reference device). No risk-spike precedent exists for this module (checked `risk/` and `engine/` — the only \"resample\" hits in `engine/` are unrelated texture/render resample passes), so this is a fresh CPU-side (not GPU-kernel) implementation — appropriate for the audio bridge, which is already CPU-side per the plan (`SharedPCMRing.js`, `ParticleVoiceProcessor.js`). Classic Crochiere/Rabiner polyphase interpolator-decimator: for an EXACT integer ratio L/M (`inputSampleRate`/`outputSampleRate` reduced by their GCD — both are integers in practice, e.g. 32000 -> 48000 reduces exactly to L=3, M=2), a single windowed-sinc lowpass FIR (cutoff at `min(inputRate, outputRate)/2`, designed at the upsampled L*inputRate rate to suppress both upsampling images and downsampling aliases) is decomposed into L phase sub-filters of `tapsPerPhase` taps each. Per output sample, only `tapsPerPhase` multiplies are needed regardless of L — the O(tapsPerPhase*L) cost is paid once at construction (filter design), not per sample. STREAMING correctness (critical for a chunked audio bridge, where `WaveguideAcousticState` chunks arrive as small windows, not one whole signal): `process()` keeps a persistent tail of not-yet-fully-consumed input samples across calls (`_history`/`_historyBaseIndex`) and a continuously-advancing upsampled-domain position (`_pos`), so `resampler.process(wholeSignal)` and `chunks.map(c => resampler.process(c))` concatenated produce IDENTICAL output — verified directly in `tests/particle-voice/polyphase-resampler.html`. Known limitation (documented, not hidden): the FIR filter's group delay (~`tapsPerPhase/2` input samples) means the first `tapsPerPhase/2`-ish output samples ramp up from a zero-padded history rather than being bit-perfect from sample 0 — a normal, bounded FIR startup transient, not a correctness bug (every streaming FIR filter has this)."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/streaming/PolyphaseResampler.md","moduleTitle":"particle_voice/streaming/PolyphaseResampler","source":"agi/particle_voice/streaming/PolyphaseResampler.js","import":"/agi/particle_voice/streaming/PolyphaseResampler.js","sourceHash":"cab38b9f0b74b585dec4daf90c92eab6475519c18ce741132ca4d17edd295324","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/streaming/PolyphaseResampler.js#0002:designWindowedSincLowpass","exportIndex":2,"name":"designWindowedSincLowpass","kind":"function","signature":"designWindowedSincLowpass(numTaps, cutoff)","summary":"Windowed-sinc lowpass FIR, Hann-windowed, normalized to unity DC gain (`sum(h) === 1`). `cutoff` is normalized to the filter's OWN sample rate (0.5 = that rate's Nyquist) — callers designing a polyphase interpolator pass a cutoff normalized to the UPSAMPLED (L*inputRate) rate, per this module's `buildPolyphaseFilter`."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/streaming/PolyphaseResampler.md","moduleTitle":"particle_voice/streaming/PolyphaseResampler","source":"agi/particle_voice/streaming/PolyphaseResampler.js","import":"/agi/particle_voice/streaming/PolyphaseResampler.js","sourceHash":"cab38b9f0b74b585dec4daf90c92eab6475519c18ce741132ca4d17edd295324","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/streaming/PolyphaseResampler.js#0003:buildPolyphaseFilter","exportIndex":3,"name":"buildPolyphaseFilter","kind":"function","signature":"buildPolyphaseFilter(L, M, tapsPerPhase)","summary":"Builds the L-phase decomposition of a full-length windowed-sinc lowpass sized for L/M polyphase interpolation-decimation."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/streaming/PolyphaseResampler.md","moduleTitle":"particle_voice/streaming/PolyphaseResampler","source":"agi/particle_voice/streaming/PolyphaseResampler.js","import":"/agi/particle_voice/streaming/PolyphaseResampler.js","sourceHash":"cab38b9f0b74b585dec4daf90c92eab6475519c18ce741132ca4d17edd295324","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/streaming/PolyphaseResampler.js#0004:DEFAULT_TAPS_PER_PHASE","exportIndex":4,"name":"DEFAULT_TAPS_PER_PHASE","kind":"constant","signature":"DEFAULT_TAPS_PER_PHASE","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/streaming/SafetyLimiter.md","moduleTitle":"particle_voice/streaming/SafetyLimiter","source":"agi/particle_voice/streaming/SafetyLimiter.js","import":"/agi/particle_voice/streaming/SafetyLimiter.js","sourceHash":"3d2fed75098e26a8be33be3b1455a1569cffb40d96a13c2d30bd38b001f61f05","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/streaming/SafetyLimiter.js","title":"particle_voice/streaming/SafetyLimiter","summary":"SafetyLimiter.js — Phase 2 ParticleVoice audio bridge. \"SafetyLimiter.js — soft clip, DC removal, fade.\" No existing DC-blocker/soft-clip/limiter precedent exists in this codebase to reuse (checked `engine/audio/` — `PatchRunner.worklet.js`'s `distortion` node is a bare `Math.tanh(x*drive)` waveshaper, not a limiter/DC-blocker), so this is a fresh CPU-side implementation. Sits at the very end of the audio bridge, downstream of `PolyphaseResampler.js`, as the last line of defense before PCM reaches `SharedPCMRing.js`/the AudioContext — a physics/neural solver misbehaving upstream (an unstable `tract_waveguide.js` reflection coefficient, a runaway `glottal_lf.js` Newton-Raphson solve, etc.) should never be able to produce a harsh digital-clip transient, a DC offset, or a click at an utterance boundary — that is this module's entire job. Three independent, composable stages, applied per-sample in this order: 1. DC removal — the standard DC-blocking filter (Julius O. Smith's well-known form): `y[n] = x[n] - x[n-1] + R*y[n-1]`. At DC this converges to exactly 0 (the `z=1` zero cancels any constant component); `R` close to 1 keeps the notch narrow so audible low frequencies are essentially untouched. `R` is derived via this codebase's own established exponential-pole convention (`risk/BreathReservoir.js`'s `lagRate = 1 - exp(-1/(tau*sampleRate))` pattern) rather than inventing a new formula style: here `R = exp(-2*pi*cornerHz/sampleRate)`. 2. Fade — an explicit, persistent linear gain ramp (`beginFadeIn`/`beginFadeOut`), so an utterance start/stop or a cancellation (`SharedPCMRing.js`'s `resetSharedPCMRing()` discontinuity) can be given a clean few-millisecond ramp instead of an audible click. 3. Soft clip — a `tanh`-saturating soft knee above `softClipThreshold` (default 0.8): transparent (identity) below the threshold, then a C1-continuous (matching slope at the knee, so no audible kink) saturating curve that asymptotically approaches +/-1 but never reaches or exceeds it — i.e. this NEVER hard-clips, by construction. All three stages carry PERSISTENT state across `process()` calls (DC filter memory, fade envelope position) — `reset()` clears all of it in one call, mirroring `SharedPCMRing.js`/`PolyphaseResampler.js`'s reset-on-discontinuity convention, so a caller can reset the whole audio bridge chain in lockstep on cancellation/interruption.","exportCount":5}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/streaming/SafetyLimiter.md","moduleTitle":"particle_voice/streaming/SafetyLimiter","source":"agi/particle_voice/streaming/SafetyLimiter.js","import":"/agi/particle_voice/streaming/SafetyLimiter.js","sourceHash":"3d2fed75098e26a8be33be3b1455a1569cffb40d96a13c2d30bd38b001f61f05","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/streaming/SafetyLimiter.js#0000:SafetyLimiter","exportIndex":0,"name":"SafetyLimiter","kind":"class","signature":"class SafetyLimiter","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/streaming/SafetyLimiter.md","moduleTitle":"particle_voice/streaming/SafetyLimiter","source":"agi/particle_voice/streaming/SafetyLimiter.js","import":"/agi/particle_voice/streaming/SafetyLimiter.js","sourceHash":"3d2fed75098e26a8be33be3b1455a1569cffb40d96a13c2d30bd38b001f61f05","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/streaming/SafetyLimiter.js#0001:softClip","exportIndex":1,"name":"softClip","kind":"function","signature":"softClip(x, threshold = DEFAULT_SOFT_CLIP_THRESHOLD)","summary":"Pure, stateless: `tanh`-saturating soft knee. Identity below `threshold` in magnitude; above it, asymptotically approaches `+/-1` but never reaches or exceeds it. C1-continuous at the knee (`tanh'(0) === 1` matches the identity segment's slope exactly)."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/streaming/SafetyLimiter.md","moduleTitle":"particle_voice/streaming/SafetyLimiter","source":"agi/particle_voice/streaming/SafetyLimiter.js","import":"/agi/particle_voice/streaming/SafetyLimiter.js","sourceHash":"3d2fed75098e26a8be33be3b1455a1569cffb40d96a13c2d30bd38b001f61f05","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/streaming/SafetyLimiter.js#0002:DEFAULT_DC_BLOCK_CORNER_HZ","exportIndex":2,"name":"DEFAULT_DC_BLOCK_CORNER_HZ","kind":"constant","signature":"DEFAULT_DC_BLOCK_CORNER_HZ","summary":"SafetyLimiter.js — Phase 2 ParticleVoice audio bridge. \"SafetyLimiter.js — soft clip, DC removal, fade.\" No existing DC-blocker/soft-clip/limiter precedent exists in this codebase to reuse (checked `engine/audio/` — `PatchRunner.worklet.js`'s `distortion` node is a bare `Math.tanh(x*drive)` waveshaper, not a limiter/DC-blocker), so this is a fresh CPU-side implementation. Sits at the very end of the audio bridge, downstream of `PolyphaseResampler.js`, as the last line of defense before PCM reaches `SharedPCMRing.js`/the AudioContext — a physics/neural solver misbehaving upstream (an unstable `tract_waveguide.js` reflection coefficient, a runaway `glottal_lf.js` Newton-Raphson solve, etc.) should never be able to produce a harsh digital-clip transient, a DC offset, or a click at an utterance boundary — that is this module's entire job. Three independent, composable stages, applied per-sample in this order: 1. DC removal — the standard DC-blocking filter (Julius O. Smith's well-known form): `y[n] = x[n] - x[n-1] + R*y[n-1]`. At DC this converges to exactly 0 (the `z=1` zero cancels any constant component); `R` close to 1 keeps the notch narrow so audible low frequencies are essentially untouched. `R` is derived via this codebase's own established exponential-pole convention (`risk/BreathReservoir.js`'s `lagRate = 1 - exp(-1/(tau*sampleRate))` pattern) rather than inventing a new formula style: here `R = exp(-2*pi*cornerHz/sampleRate)`. 2. Fade — an explicit, persistent linear gain ramp (`beginFadeIn`/`beginFadeOut`), so an utterance start/stop or a cancellation (`SharedPCMRing.js`'s `resetSharedPCMRing()` discontinuity) can be given a clean few-millisecond ramp instead of an audible click. 3. Soft clip — a `tanh`-saturating soft knee above `softClipThreshold` (default 0.8): transparent (identity) below the threshold, then a C1-continuous (matching slope at the knee, so no audible kink) saturating curve that asymptotically approaches +/-1 but never reaches or exceeds it — i.e. this NEVER hard-clips, by construction. All three stages carry PERSISTENT state across `process()` calls (DC filter memory, fade envelope position) — `reset()` clears all of it in one call, mirroring `SharedPCMRing.js`/`PolyphaseResampler.js`'s reset-on-discontinuity convention, so a caller can reset the whole audio bridge chain in lockstep on cancellation/interruption."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/streaming/SafetyLimiter.md","moduleTitle":"particle_voice/streaming/SafetyLimiter","source":"agi/particle_voice/streaming/SafetyLimiter.js","import":"/agi/particle_voice/streaming/SafetyLimiter.js","sourceHash":"3d2fed75098e26a8be33be3b1455a1569cffb40d96a13c2d30bd38b001f61f05","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/streaming/SafetyLimiter.js#0003:DEFAULT_SOFT_CLIP_THRESHOLD","exportIndex":3,"name":"DEFAULT_SOFT_CLIP_THRESHOLD","kind":"constant","signature":"DEFAULT_SOFT_CLIP_THRESHOLD","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/streaming/SafetyLimiter.md","moduleTitle":"particle_voice/streaming/SafetyLimiter","source":"agi/particle_voice/streaming/SafetyLimiter.js","import":"/agi/particle_voice/streaming/SafetyLimiter.js","sourceHash":"3d2fed75098e26a8be33be3b1455a1569cffb40d96a13c2d30bd38b001f61f05","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/streaming/SafetyLimiter.js#0004:DEFAULT_FADE_MS","exportIndex":4,"name":"DEFAULT_FADE_MS","kind":"constant","signature":"DEFAULT_FADE_MS","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/streaming/SharedPCMRing.md","moduleTitle":"particle_voice/streaming/SharedPCMRing","source":"agi/particle_voice/streaming/SharedPCMRing.js","import":"/agi/particle_voice/streaming/SharedPCMRing.js","sourceHash":"cd27717ce41748bd7683f89d36fd0fe5761c9dd55ef57f4ca937e3bd7379727e","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/streaming/SharedPCMRing.js","title":"particle_voice/streaming/SharedPCMRing","summary":"SharedPCMRing.js — Phase 2 ParticleVoice audio bridge. Production generalization of `risk/ReadbackAudioProbe.js` (R4)'s proven `createSharedRing`/`prefillRing`/`startProducer` SharedArrayBuffer PCM ring (single-producer/single-consumer, `[writeIndex, readIndex, underrunCount, processCallCount]` control layout consumed by `R4ReadbackAudioWorklet.worklet.js`'s allocation-free `process()`). Adds the plan's explicit \"generation/sequence IDs\" requirement, which R4's risk spike did not need (a disposable probe never gets reset mid-run): - `generation` (control[4]): bumped by `resetSharedPCMRing()` whenever the producer discards the ring's contents outright (cancellation/ interruption per the plan's Phase 5 \"cancellation resets state cleanly\", or a device-loss GPU recovery restart). The CONSUMER side (`readCurrentGeneration`/the resync check in `worklet/ParticleVoiceProcessor.js`) compares its own cached generation against this value every `process()` call; on mismatch it resyncs `readIndex` to the CURRENT `writeIndex` (dropping whatever stale audio was in the ring before the reset) rather than trusting a `readIndex` that may now point at samples from a discarded utterance. - `writeSequence` (control[5]): incremented once per producer `writeSharedPCMRing()` call (a monotonic chunk counter, not a sample counter) — correlates a ring write with the `WaveguideAcousticState.sampleIndex` that produced it for diagnostics/telemetry; the consumer does not need to read it for correctness (unlike `generation`). The reader-side helper function here (`readAvailable`) is pure arithmetic over caller-supplied typed arrays — no allocation, no closures over per-call state — usable from a non-worklet consumer (e.g. a test harness) without violating an allocation-free constraint. `worklet/ParticleVoiceProcessor.js` (the AudioWorkletProcessor that actually drains this ring in real-time) does NOT import this module — both existing worklet files in this project (`engine/audio/synth/PatchRunner.worklet.js`, `risk/R4ReadbackAudioWorklet.worklet.js`) are self-contained with no ES imports, so `ParticleVoiceProcessor.js` duplicates `CONTROL_INDEX` and the read-position arithmetic inline rather than relying on an unverified assumption that `AudioWorkletGlobalScope` module imports behave identically to this project's other worklet loading paths. Both files' docstrings flag this duplication explicitly so the two `CONTROL_INDEX` definitions cannot silently drift apart unnoticed.","exportCount":7}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/streaming/SharedPCMRing.md","moduleTitle":"particle_voice/streaming/SharedPCMRing","source":"agi/particle_voice/streaming/SharedPCMRing.js","import":"/agi/particle_voice/streaming/SharedPCMRing.js","sourceHash":"cd27717ce41748bd7683f89d36fd0fe5761c9dd55ef57f4ca937e3bd7379727e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/streaming/SharedPCMRing.js#0000:createSharedPCMRing","exportIndex":0,"name":"createSharedPCMRing","kind":"function","signature":"createSharedPCMRing({ sampleRate, capacitySeconds = DEFAULT_RING_CAPACITY_SECONDS })","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/streaming/SharedPCMRing.md","moduleTitle":"particle_voice/streaming/SharedPCMRing","source":"agi/particle_voice/streaming/SharedPCMRing.js","import":"/agi/particle_voice/streaming/SharedPCMRing.js","sourceHash":"cd27717ce41748bd7683f89d36fd0fe5761c9dd55ef57f4ca937e3bd7379727e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/streaming/SharedPCMRing.js#0001:writeSharedPCMRing","exportIndex":1,"name":"writeSharedPCMRing","kind":"function","signature":"writeSharedPCMRing(ring, samples)","summary":"Producer-side write: copies `samples` into the ring starting at the current `writeIndex`, advancing it and incrementing `writeSequence`. Clamps to available free space (`capacity - 1 - available`, the usual ring-buffer one-slot gap to distinguish full from empty) rather than overflowing past the reader's current position and corrupting not-yet-read samples — R4's own `startProducer` avoided this by pacing writes to wall-clock time so it could never get ahead of the ring's capacity, but a production writer driven by GPU chunk completion (irregular timing) cannot assume that pacing, so this function must be defensive."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/streaming/SharedPCMRing.md","moduleTitle":"particle_voice/streaming/SharedPCMRing","source":"agi/particle_voice/streaming/SharedPCMRing.js","import":"/agi/particle_voice/streaming/SharedPCMRing.js","sourceHash":"cd27717ce41748bd7683f89d36fd0fe5761c9dd55ef57f4ca937e3bd7379727e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/streaming/SharedPCMRing.js#0002:resetSharedPCMRing","exportIndex":2,"name":"resetSharedPCMRing","kind":"function","signature":"resetSharedPCMRing(ring)","summary":"Producer-side reset: zeroes both indices and bumps `generation` so the consumer discards its cached read position on its next `process()` call rather than replaying stale audio. Does not zero the PCM data itself (unnecessary — the consumer will resync past it)."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/streaming/SharedPCMRing.md","moduleTitle":"particle_voice/streaming/SharedPCMRing","source":"agi/particle_voice/streaming/SharedPCMRing.js","import":"/agi/particle_voice/streaming/SharedPCMRing.js","sourceHash":"cd27717ce41748bd7683f89d36fd0fe5761c9dd55ef57f4ca937e3bd7379727e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/streaming/SharedPCMRing.js#0003:readAvailable","exportIndex":3,"name":"readAvailable","kind":"function","signature":"readAvailable(control, capacity)","summary":"Pure, allocation-free: samples currently available to read (does not mutate anything). Safe to call from `process()`."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/streaming/SharedPCMRing.md","moduleTitle":"particle_voice/streaming/SharedPCMRing","source":"agi/particle_voice/streaming/SharedPCMRing.js","import":"/agi/particle_voice/streaming/SharedPCMRing.js","sourceHash":"cd27717ce41748bd7683f89d36fd0fe5761c9dd55ef57f4ca937e3bd7379727e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/streaming/SharedPCMRing.js#0004:CONTROL_INDEX","exportIndex":4,"name":"CONTROL_INDEX","kind":"constant","signature":"CONTROL_INDEX","summary":"SharedPCMRing.js — Phase 2 ParticleVoice audio bridge. Production generalization of `risk/ReadbackAudioProbe.js` (R4)'s proven `createSharedRing`/`prefillRing`/`startProducer` SharedArrayBuffer PCM ring (single-producer/single-consumer, `[writeIndex, readIndex, underrunCount, processCallCount]` control layout consumed by `R4ReadbackAudioWorklet.worklet.js`'s allocation-free `process()`). Adds the plan's explicit \"generation/sequence IDs\" requirement, which R4's risk spike did not need (a disposable probe never gets reset mid-run): - `generation` (control[4]): bumped by `resetSharedPCMRing()` whenever the producer discards the ring's contents outright (cancellation/ interruption per the plan's Phase 5 \"cancellation resets state cleanly\", or a device-loss GPU recovery restart). The CONSUMER side (`readCurrentGeneration`/the resync check in `worklet/ParticleVoiceProcessor.js`) compares its own cached generation against this value every `process()` call; on mismatch it resyncs `readIndex` to the CURRENT `writeIndex` (dropping whatever stale audio was in the ring before the reset) rather than trusting a `readIndex` that may now point at samples from a discarded utterance. - `writeSequence` (control[5]): incremented once per producer `writeSharedPCMRing()` call (a monotonic chunk counter, not a sample counter) — correlates a ring write with the `WaveguideAcousticState.sampleIndex` that produced it for diagnostics/telemetry; the consumer does not need to read it for correctness (unlike `generation`). The reader-side helper function here (`readAvailable`) is pure arithmetic over caller-supplied typed arrays — no allocation, no closures over per-call state — usable from a non-worklet consumer (e.g. a test harness) without violating an allocation-free constraint. `worklet/ParticleVoiceProcessor.js` (the AudioWorkletProcessor that actually drains this ring in real-time) does NOT import this module — both existing worklet files in this project (`engine/audio/synth/PatchRunner.worklet.js`, `risk/R4ReadbackAudioWorklet.worklet.js`) are self-contained with no ES imports, so `ParticleVoiceProcessor.js` duplicates `CONTROL_INDEX` and the read-position arithmetic inline rather than relying on an unverified assumption that `AudioWorkletGlobalScope` module imports behave identically to this project's other worklet loading paths. Both files' docstrings flag this duplication explicitly so the two `CONTROL_INDEX` definitions cannot silently drift apart unnoticed."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/streaming/SharedPCMRing.md","moduleTitle":"particle_voice/streaming/SharedPCMRing","source":"agi/particle_voice/streaming/SharedPCMRing.js","import":"/agi/particle_voice/streaming/SharedPCMRing.js","sourceHash":"cd27717ce41748bd7683f89d36fd0fe5761c9dd55ef57f4ca937e3bd7379727e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/streaming/SharedPCMRing.js#0005:CONTROL_SLOT_COUNT","exportIndex":5,"name":"CONTROL_SLOT_COUNT","kind":"constant","signature":"CONTROL_SLOT_COUNT","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/streaming/SharedPCMRing.md","moduleTitle":"particle_voice/streaming/SharedPCMRing","source":"agi/particle_voice/streaming/SharedPCMRing.js","import":"/agi/particle_voice/streaming/SharedPCMRing.js","sourceHash":"cd27717ce41748bd7683f89d36fd0fe5761c9dd55ef57f4ca937e3bd7379727e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/streaming/SharedPCMRing.js#0006:DEFAULT_RING_CAPACITY_SECONDS","exportIndex":6,"name":"DEFAULT_RING_CAPACITY_SECONDS","kind":"constant","signature":"DEFAULT_RING_CAPACITY_SECONDS","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/streaming/VoiceChunker.md","moduleTitle":"particle_voice/streaming/VoiceChunker","source":"agi/particle_voice/streaming/VoiceChunker.js","import":"/agi/particle_voice/streaming/VoiceChunker.js","sourceHash":"9040300c209ffc11c5a59eec53c97faad951fdd844ca4c1c172c507d5bd62932","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/streaming/VoiceChunker.js","title":"particle_voice/streaming/VoiceChunker","summary":"VoiceChunker.js — Phase 2 ParticleVoice audio bridge. \"VoiceChunker.js — legal buckets: first 12/16/24 frames, steady 32/48/64 frames, 16-frame left context, 8-12 frame overlap.\" A \"frame\" here is the Activity frame size (`ARCHITECTURE.md`'s measured-lead-values table: 256 samples @ 32 kHz, 8 ms/frame) — NOT the 100 Hz plan-level analysis frame rate, which `LengthRegulator.js` (Phase 3) reconciles separately. `spec/PRNN-v0.md` §4 (\"Shape buckets\") directly reuses these exact bucket definitions so a compiled model's execution plan only needs to support this small fixed set of shapes rather than arbitrary sequence lengths — this module is the single source of truth those buckets come from, not a second independent copy of them: firstChunkFrames:  [12, 16, 24] steadyChunkFrames: [32, 48, 64] leftContextFrames: 16 overlapFrames:     [8, 12] `risk/StreamingContinuityProbe.js` (R5) already exercised exactly these bucket sizes (`[12, 16, 24, 32, 48, 64]`) as one of its chunk-boundary patterns and proved that an ABSOLUTE (not chunk-relative) sample/phase counter design makes chunking bit-identical to processing a whole signal at once — this module's `totalFramesEmitted` bookkeeping exists for exactly that reason (a caller can derive an absolute frame index from it), not merely as a diagnostic counter. SCOPE (Phase 2, before any real streaming model exists): this module only decides CHUNK SIZE SCHEDULING (which legal bucket to use next, given how many frames are currently available) — it does not itself run a model, apply left-context frames to a real tensor, or overlap-add output audio (that's `overlap_add.js`/`crossfade.js`, already built and verified in Phase 2's DSP kernels; a future model-execution layer composes THOSE with the chunk-size decisions THIS module makes). Latency/deadline tradeoffs (when to prefer a smaller, faster-available bucket over waiting for a larger one) are explicitly `VoiceDeadlineScheduler.js`'s job, not this module's — `nextChunk()` here always greedily picks the LARGEST legal bucket that currently fits, which is the natural default in the absence of an explicit deadline override.","exportCount":6}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/streaming/VoiceChunker.md","moduleTitle":"particle_voice/streaming/VoiceChunker","source":"agi/particle_voice/streaming/VoiceChunker.js","import":"/agi/particle_voice/streaming/VoiceChunker.js","sourceHash":"9040300c209ffc11c5a59eec53c97faad951fdd844ca4c1c172c507d5bd62932","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/streaming/VoiceChunker.js#0000:VoiceChunker","exportIndex":0,"name":"VoiceChunker","kind":"class","signature":"class VoiceChunker","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/streaming/VoiceChunker.md","moduleTitle":"particle_voice/streaming/VoiceChunker","source":"agi/particle_voice/streaming/VoiceChunker.js","import":"/agi/particle_voice/streaming/VoiceChunker.js","sourceHash":"9040300c209ffc11c5a59eec53c97faad951fdd844ca4c1c172c507d5bd62932","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/streaming/VoiceChunker.js#0001:FIRST_CHUNK_FRAME_BUCKETS","exportIndex":1,"name":"FIRST_CHUNK_FRAME_BUCKETS","kind":"constant","signature":"FIRST_CHUNK_FRAME_BUCKETS","summary":"VoiceChunker.js — Phase 2 ParticleVoice audio bridge. \"VoiceChunker.js — legal buckets: first 12/16/24 frames, steady 32/48/64 frames, 16-frame left context, 8-12 frame overlap.\" A \"frame\" here is the Activity frame size (`ARCHITECTURE.md`'s measured-lead-values table: 256 samples @ 32 kHz, 8 ms/frame) — NOT the 100 Hz plan-level analysis frame rate, which `LengthRegulator.js` (Phase 3) reconciles separately. `spec/PRNN-v0.md` §4 (\"Shape buckets\") directly reuses these exact bucket definitions so a compiled model's execution plan only needs to support this small fixed set of shapes rather than arbitrary sequence lengths — this module is the single source of truth those buckets come from, not a second independent copy of them: firstChunkFrames:  [12, 16, 24] steadyChunkFrames: [32, 48, 64] leftContextFrames: 16 overlapFrames:     [8, 12] `risk/StreamingContinuityProbe.js` (R5) already exercised exactly these bucket sizes (`[12, 16, 24, 32, 48, 64]`) as one of its chunk-boundary patterns and proved that an ABSOLUTE (not chunk-relative) sample/phase counter design makes chunking bit-identical to processing a whole signal at once — this module's `totalFramesEmitted` bookkeeping exists for exactly that reason (a caller can derive an absolute frame index from it), not merely as a diagnostic counter. SCOPE (Phase 2, before any real streaming model exists): this module only decides CHUNK SIZE SCHEDULING (which legal bucket to use next, given how many frames are currently available) — it does not itself run a model, apply left-context frames to a real tensor, or overlap-add output audio (that's `overlap_add.js`/`crossfade.js`, already built and verified in Phase 2's DSP kernels; a future model-execution layer composes THOSE with the chunk-size decisions THIS module makes). Latency/deadline tradeoffs (when to prefer a smaller, faster-available bucket over waiting for a larger one) are explicitly `VoiceDeadlineScheduler.js`'s job, not this module's — `nextChunk()` here always greedily picks the LARGEST legal bucket that currently fits, which is the natural default in the absence of an explicit deadline override."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/streaming/VoiceChunker.md","moduleTitle":"particle_voice/streaming/VoiceChunker","source":"agi/particle_voice/streaming/VoiceChunker.js","import":"/agi/particle_voice/streaming/VoiceChunker.js","sourceHash":"9040300c209ffc11c5a59eec53c97faad951fdd844ca4c1c172c507d5bd62932","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/streaming/VoiceChunker.js#0002:STEADY_CHUNK_FRAME_BUCKETS","exportIndex":2,"name":"STEADY_CHUNK_FRAME_BUCKETS","kind":"constant","signature":"STEADY_CHUNK_FRAME_BUCKETS","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/streaming/VoiceChunker.md","moduleTitle":"particle_voice/streaming/VoiceChunker","source":"agi/particle_voice/streaming/VoiceChunker.js","import":"/agi/particle_voice/streaming/VoiceChunker.js","sourceHash":"9040300c209ffc11c5a59eec53c97faad951fdd844ca4c1c172c507d5bd62932","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/streaming/VoiceChunker.js#0003:LEFT_CONTEXT_FRAMES","exportIndex":3,"name":"LEFT_CONTEXT_FRAMES","kind":"constant","signature":"LEFT_CONTEXT_FRAMES","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/streaming/VoiceChunker.md","moduleTitle":"particle_voice/streaming/VoiceChunker","source":"agi/particle_voice/streaming/VoiceChunker.js","import":"/agi/particle_voice/streaming/VoiceChunker.js","sourceHash":"9040300c209ffc11c5a59eec53c97faad951fdd844ca4c1c172c507d5bd62932","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/streaming/VoiceChunker.js#0004:OVERLAP_FRAME_BUCKETS","exportIndex":4,"name":"OVERLAP_FRAME_BUCKETS","kind":"constant","signature":"OVERLAP_FRAME_BUCKETS","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/streaming/VoiceChunker.md","moduleTitle":"particle_voice/streaming/VoiceChunker","source":"agi/particle_voice/streaming/VoiceChunker.js","import":"/agi/particle_voice/streaming/VoiceChunker.js","sourceHash":"9040300c209ffc11c5a59eec53c97faad951fdd844ca4c1c172c507d5bd62932","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/streaming/VoiceChunker.js#0005:DEFAULT_OVERLAP_FRAMES","exportIndex":5,"name":"DEFAULT_OVERLAP_FRAMES","kind":"constant","signature":"DEFAULT_OVERLAP_FRAMES","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/streaming/VoiceDeadlineScheduler.md","moduleTitle":"particle_voice/streaming/VoiceDeadlineScheduler","source":"agi/particle_voice/streaming/VoiceDeadlineScheduler.js","import":"/agi/particle_voice/streaming/VoiceDeadlineScheduler.js","sourceHash":"d5f19b8b05d4c3bbf56ca83b1ab5a36d630931026b0dbea4620ba66c9faed5ee","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/streaming/VoiceDeadlineScheduler.js","title":"particle_voice/streaming/VoiceDeadlineScheduler","summary":"VoiceDeadlineScheduler.js — Phase 2 ParticleVoice audio bridge. \"VoiceDeadlineScheduler.js — target >=300 ms, warning 200 ms, emergency 100 ms; GPU budget admission.\" These three thresholds classify how much PLAYBACK RUNWAY remains — how far ahead of the AudioContext's current playback position the produced-but-not-yet-played PCM currently extends (`bufferedAheadMs`, typically derived from `SharedPCMRing.js`'s `readAvailable()` via `bufferedAheadMsFromRing()` below) — into an urgency tier, and maps that tier onto EXISTING scheduling primitives rather than inventing new ones: - `NeuralScheduler.js`'s `'high'|'normal'|'low'` priority buckets (queue ordering among pending `ParticleProgram` runs). - `engine/core/gpu/GpuFrameBudgetBroker.js`'s `workClass === 'render-critical'` bypass (`beforeSubmit()`'s own docstring: \"Render- critical work bypasses the budget\") — this IS the \"GPU budget admission\" the plan names: in the `emergency` tier, this module recommends `workClass: 'render-critical'` so the broker admits the work immediately regardless of the current frame's compute budget, rather than letting a nearly-starved voice ring wait behind unrelated background GPU work. Tier boundaries (this module's own `v0` interpretation of the plan's three named thresholds — documented explicitly since the plan states three thresholds but only two transitions are unambiguous from the wording alone): bufferedAheadMs >= 300         -> 'target'      (healthy, target met) 200 <= bufferedAheadMs < 300   -> 'belowTarget'  (below target, not yet urgent) 100 <= bufferedAheadMs < 200   -> 'warning' bufferedAheadMs < 100          -> 'emergency'","exportCount":7}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/streaming/VoiceDeadlineScheduler.md","moduleTitle":"particle_voice/streaming/VoiceDeadlineScheduler","source":"agi/particle_voice/streaming/VoiceDeadlineScheduler.js","import":"/agi/particle_voice/streaming/VoiceDeadlineScheduler.js","sourceHash":"d5f19b8b05d4c3bbf56ca83b1ab5a36d630931026b0dbea4620ba66c9faed5ee","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/streaming/VoiceDeadlineScheduler.js#0000:VoiceDeadlineScheduler","exportIndex":0,"name":"VoiceDeadlineScheduler","kind":"class","signature":"class VoiceDeadlineScheduler","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/streaming/VoiceDeadlineScheduler.md","moduleTitle":"particle_voice/streaming/VoiceDeadlineScheduler","source":"agi/particle_voice/streaming/VoiceDeadlineScheduler.js","import":"/agi/particle_voice/streaming/VoiceDeadlineScheduler.js","sourceHash":"d5f19b8b05d4c3bbf56ca83b1ab5a36d630931026b0dbea4620ba66c9faed5ee","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/streaming/VoiceDeadlineScheduler.js#0001:classifyDeadlineTier","exportIndex":1,"name":"classifyDeadlineTier","kind":"function","signature":"classifyDeadlineTier(bufferedAheadMs)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/streaming/VoiceDeadlineScheduler.md","moduleTitle":"particle_voice/streaming/VoiceDeadlineScheduler","source":"agi/particle_voice/streaming/VoiceDeadlineScheduler.js","import":"/agi/particle_voice/streaming/VoiceDeadlineScheduler.js","sourceHash":"d5f19b8b05d4c3bbf56ca83b1ab5a36d630931026b0dbea4620ba66c9faed5ee","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/streaming/VoiceDeadlineScheduler.js#0002:admissionFor","exportIndex":2,"name":"admissionFor","kind":"function","signature":"admissionFor(bufferedAheadMs)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/streaming/VoiceDeadlineScheduler.md","moduleTitle":"particle_voice/streaming/VoiceDeadlineScheduler","source":"agi/particle_voice/streaming/VoiceDeadlineScheduler.js","import":"/agi/particle_voice/streaming/VoiceDeadlineScheduler.js","sourceHash":"d5f19b8b05d4c3bbf56ca83b1ab5a36d630931026b0dbea4620ba66c9faed5ee","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/streaming/VoiceDeadlineScheduler.js#0003:bufferedAheadMsFromRing","exportIndex":3,"name":"bufferedAheadMsFromRing","kind":"function","signature":"bufferedAheadMsFromRing(ring)","summary":"Composes with `SharedPCMRing.js`'s `readAvailable()` — the natural real-world source of `bufferedAheadMs` for a live audio bridge — rather than re-deriving ring-position arithmetic here."}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/streaming/VoiceDeadlineScheduler.md","moduleTitle":"particle_voice/streaming/VoiceDeadlineScheduler","source":"agi/particle_voice/streaming/VoiceDeadlineScheduler.js","import":"/agi/particle_voice/streaming/VoiceDeadlineScheduler.js","sourceHash":"d5f19b8b05d4c3bbf56ca83b1ab5a36d630931026b0dbea4620ba66c9faed5ee","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/streaming/VoiceDeadlineScheduler.js#0004:TARGET_BUFFERED_MS","exportIndex":4,"name":"TARGET_BUFFERED_MS","kind":"constant","signature":"TARGET_BUFFERED_MS","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/streaming/VoiceDeadlineScheduler.md","moduleTitle":"particle_voice/streaming/VoiceDeadlineScheduler","source":"agi/particle_voice/streaming/VoiceDeadlineScheduler.js","import":"/agi/particle_voice/streaming/VoiceDeadlineScheduler.js","sourceHash":"d5f19b8b05d4c3bbf56ca83b1ab5a36d630931026b0dbea4620ba66c9faed5ee","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/streaming/VoiceDeadlineScheduler.js#0005:WARNING_BUFFERED_MS","exportIndex":5,"name":"WARNING_BUFFERED_MS","kind":"constant","signature":"WARNING_BUFFERED_MS","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/streaming/VoiceDeadlineScheduler.md","moduleTitle":"particle_voice/streaming/VoiceDeadlineScheduler","source":"agi/particle_voice/streaming/VoiceDeadlineScheduler.js","import":"/agi/particle_voice/streaming/VoiceDeadlineScheduler.js","sourceHash":"d5f19b8b05d4c3bbf56ca83b1ab5a36d630931026b0dbea4620ba66c9faed5ee","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/streaming/VoiceDeadlineScheduler.js#0006:EMERGENCY_BUFFERED_MS","exportIndex":6,"name":"EMERGENCY_BUFFERED_MS","kind":"constant","signature":"EMERGENCY_BUFFERED_MS","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/streaming/VoicePlayback.md","moduleTitle":"particle_voice/streaming/VoicePlayback","source":"agi/particle_voice/streaming/VoicePlayback.js","import":"/agi/particle_voice/streaming/VoicePlayback.js","sourceHash":"413ad1fdadff4c8f7cfdf8d4274f8f0607fbbbbe1bed35a7709cc255cf257a6b","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/streaming/VoicePlayback.js","title":"particle_voice/streaming/VoicePlayback","summary":"VoicePlayback.js — Phase 3 ParticleVoice audio bridge. The last hop of the Phase 3 path: model PCM → resample → `SharedPCMRing` → `AudioWorklet` → audible speech. Every piece it composes was built and verified in Phase 2; this module only wires them, which is why it is small. ParticleVoiceModel (32 kHz) → PolyphaseResampler (32 kHz → AudioContext.sampleRate) → SafetyLimiter is already applied upstream by the model → SharedPCMRing (SAB, single-producer/single-consumer) → ParticleVoiceProcessor (AudioWorkletProcessor) ## The resample is mandatory, not optional The model's internal DSP rate is 32 kHz (R6's proven `SAMPLE_RATE`), but an `AudioContext` picks its own rate — commonly 48 kHz, sometimes 44.1 kHz. Writing 32 kHz samples into a 48 kHz ring without resampling does not error: it plays back **1.5× too fast and a fifth too high**, which sounds like a chipmunk rather than like a bug. `PolyphaseResampler` handles the exact-integer L/M case (32k→48k reduces to L=3, M=2) and is streaming-correct across chunk boundaries, so feeding it per-utterance or per-chunk gives identical output. ## Backpressure is the producer's problem `writeSharedPCMRing()` CLAMPS to available space and returns how much it actually accepted — it never overwrites unread audio. A producer that ignores the return value silently drops the tail of every utterance that does not fit. `enqueue()` therefore loops, awaiting drain, until everything has been accepted, and reports the total written so a caller can assert it. ## What this module deliberately does NOT do It does not own the `AudioContext`. Creating and resuming one requires a user gesture in a real page, its lifetime belongs to the application, and a test harness needs to build its own — so the context and worklet node are passed in via `attach()`. That also keeps this module testable without assuming any particular page structure.","exportCount":3}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/streaming/VoicePlayback.md","moduleTitle":"particle_voice/streaming/VoicePlayback","source":"agi/particle_voice/streaming/VoicePlayback.js","import":"/agi/particle_voice/streaming/VoicePlayback.js","sourceHash":"413ad1fdadff4c8f7cfdf8d4274f8f0607fbbbbe1bed35a7709cc255cf257a6b","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/streaming/VoicePlayback.js#0000:VoicePlayback","exportIndex":0,"name":"VoicePlayback","kind":"class","signature":"class VoicePlayback","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/streaming/VoicePlayback.md","moduleTitle":"particle_voice/streaming/VoicePlayback","source":"agi/particle_voice/streaming/VoicePlayback.js","import":"/agi/particle_voice/streaming/VoicePlayback.js","sourceHash":"413ad1fdadff4c8f7cfdf8d4274f8f0607fbbbbe1bed35a7709cc255cf257a6b","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/streaming/VoicePlayback.js#0001:createVoicePlayback","exportIndex":1,"name":"createVoicePlayback","kind":"function","signature":"createVoicePlayback(options)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/streaming/VoicePlayback.md","moduleTitle":"particle_voice/streaming/VoicePlayback","source":"agi/particle_voice/streaming/VoicePlayback.js","import":"/agi/particle_voice/streaming/VoicePlayback.js","sourceHash":"413ad1fdadff4c8f7cfdf8d4274f8f0607fbbbbe1bed35a7709cc255cf257a6b","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/particle_voice/streaming/VoicePlayback.js#0002:DEFAULT_PLAYBACK_CONFIG","exportIndex":2,"name":"DEFAULT_PLAYBACK_CONFIG","kind":"constant","signature":"DEFAULT_PLAYBACK_CONFIG","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/particle_voice/worklet/ParticleVoiceProcessor.md","moduleTitle":"particle_voice/worklet/ParticleVoiceProcessor","source":"agi/particle_voice/worklet/ParticleVoiceProcessor.js","import":"/agi/particle_voice/worklet/ParticleVoiceProcessor.js","sourceHash":"d5ddc22ad0776a4f1c4ebf078bc9a26ae840576f57ee6079f35f6f917435bb04","subsystem":"agi","recordType":"api-module","id":"module:agi/particle_voice/worklet/ParticleVoiceProcessor.js","title":"particle_voice/worklet/ParticleVoiceProcessor","summary":"ParticleVoiceProcessor.js — Phase 2 ParticleVoice audio bridge. Production AudioWorkletProcessor consuming `SharedPCMRing.js`'s ring, generalizing `risk/R4ReadbackAudioWorklet.worklet.js` (R4)'s proven allocation-free `process()` (no `new`, no object/array literals, no `await`, no `throw`, no `JSON` — only typed-array indexing and Atomics on pre-existing SharedArrayBuffer-backed views) with the plan's generation-aware resync requirement `SharedPCMRing.js`'s docstring describes. This file is deliberately SELF-CONTAINED (no ES module imports), matching this project's two existing worklet files (`engine/audio/synth/PatchRunner.worklet.js`, `risk/R4ReadbackAudioWorklet.worklet.js`) — `SharedPCMRing.js`'s `CONTROL_INDEX` constants are duplicated here as `CONTROL_INDEX` rather than imported; the two must be kept in sync by hand (flagged in both files' docstrings) rather than relying on an unverified assumption that `AudioWorkletGlobalScope` module imports behave identically to this project's other worklet loading paths. Control layout (Int32Array, SharedArrayBuffer, 6 x int32) — MUST match `SharedPCMRing.js`'s `CONTROL_INDEX` exactly: [0] writeIndex        — next PCM slot the producer will write [1] readIndex         — next PCM slot this processor will read [2] underrunCount     — incremented whenever fewer than one quantum of samples are available [3] processCallCount  — incremented every process() call [4] generation        — bumped by the producer's resetSharedPCMRing(); on change, this processor jumps readIndex to the CURRENT writeIndex (dropping stale pre-reset audio) instead of continuing from a readIndex that may now point at discarded samples. [5] writeSequence     — producer chunk counter; read-only from here, not required for correctness, exposed for parity with SharedPCMRing.js's layout only.","exportCount":0}
{"schemaVersion":1,"modulePath":"agi/reference/persistence/CheckpointContracts.md","moduleTitle":"persistence/CheckpointContracts","source":"agi/persistence/CheckpointContracts.js","import":"/agi/persistence/CheckpointContracts.js","sourceHash":"7d70b1dee5821f3e9c5445cf8a6b3a3a24d00ea2d860f754ec182b9c297225e6","subsystem":"agi","recordType":"api-module","id":"module:agi/persistence/CheckpointContracts.js","title":"persistence/CheckpointContracts","summary":"Accept legacy {config,parameters} documents and return canonical v1 data.","exportCount":10}
{"schemaVersion":1,"modulePath":"agi/reference/persistence/CheckpointContracts.md","moduleTitle":"persistence/CheckpointContracts","source":"agi/persistence/CheckpointContracts.js","import":"/agi/persistence/CheckpointContracts.js","sourceHash":"7d70b1dee5821f3e9c5445cf8a6b3a3a24d00ea2d860f754ec182b9c297225e6","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/persistence/CheckpointContracts.js#0000:createNetworkEnvelope","exportIndex":0,"name":"createNetworkEnvelope","kind":"function","signature":"createNetworkEnvelope(kind, config, parameters)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/persistence/CheckpointContracts.md","moduleTitle":"persistence/CheckpointContracts","source":"agi/persistence/CheckpointContracts.js","import":"/agi/persistence/CheckpointContracts.js","sourceHash":"7d70b1dee5821f3e9c5445cf8a6b3a3a24d00ea2d860f754ec182b9c297225e6","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/persistence/CheckpointContracts.js#0001:prepareNetworkEnvelope","exportIndex":1,"name":"prepareNetworkEnvelope","kind":"function","signature":"prepareNetworkEnvelope(input, expectedKind)","summary":"Accept legacy {config,parameters} documents and return canonical v1 data."}
{"schemaVersion":1,"modulePath":"agi/reference/persistence/CheckpointContracts.md","moduleTitle":"persistence/CheckpointContracts","source":"agi/persistence/CheckpointContracts.js","import":"/agi/persistence/CheckpointContracts.js","sourceHash":"7d70b1dee5821f3e9c5445cf8a6b3a3a24d00ea2d860f754ec182b9c297225e6","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/persistence/CheckpointContracts.js#0002:createCheckpointEnvelope","exportIndex":2,"name":"createCheckpointEnvelope","kind":"function","signature":"createCheckpointEnvelope(data)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/persistence/CheckpointContracts.md","moduleTitle":"persistence/CheckpointContracts","source":"agi/persistence/CheckpointContracts.js","import":"/agi/persistence/CheckpointContracts.js","sourceHash":"7d70b1dee5821f3e9c5445cf8a6b3a3a24d00ea2d860f754ec182b9c297225e6","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/persistence/CheckpointContracts.js#0003:prepareCheckpointEnvelope","exportIndex":3,"name":"prepareCheckpointEnvelope","kind":"function","signature":"prepareCheckpointEnvelope(input)","summary":"Validate both canonical v1 and the pre-envelope checkpoint shape."}
{"schemaVersion":1,"modulePath":"agi/reference/persistence/CheckpointContracts.md","moduleTitle":"persistence/CheckpointContracts","source":"agi/persistence/CheckpointContracts.js","import":"/agi/persistence/CheckpointContracts.js","sourceHash":"7d70b1dee5821f3e9c5445cf8a6b3a3a24d00ea2d860f754ec182b9c297225e6","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/persistence/CheckpointContracts.js#0004:AGI_NETWORK_SCHEMA","exportIndex":4,"name":"AGI_NETWORK_SCHEMA","kind":"constant","signature":"AGI_NETWORK_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/persistence/CheckpointContracts.md","moduleTitle":"persistence/CheckpointContracts","source":"agi/persistence/CheckpointContracts.js","import":"/agi/persistence/CheckpointContracts.js","sourceHash":"7d70b1dee5821f3e9c5445cf8a6b3a3a24d00ea2d860f754ec182b9c297225e6","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/persistence/CheckpointContracts.js#0005:AGI_CHECKPOINT_SCHEMA","exportIndex":5,"name":"AGI_CHECKPOINT_SCHEMA","kind":"constant","signature":"AGI_CHECKPOINT_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/persistence/CheckpointContracts.md","moduleTitle":"persistence/CheckpointContracts","source":"agi/persistence/CheckpointContracts.js","import":"/agi/persistence/CheckpointContracts.js","sourceHash":"7d70b1dee5821f3e9c5445cf8a6b3a3a24d00ea2d860f754ec182b9c297225e6","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/persistence/CheckpointContracts.js#0006:AGI_TRAINING_EXPORT_SCHEMA","exportIndex":6,"name":"AGI_TRAINING_EXPORT_SCHEMA","kind":"constant","signature":"AGI_TRAINING_EXPORT_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/persistence/CheckpointContracts.md","moduleTitle":"persistence/CheckpointContracts","source":"agi/persistence/CheckpointContracts.js","import":"/agi/persistence/CheckpointContracts.js","sourceHash":"7d70b1dee5821f3e9c5445cf8a6b3a3a24d00ea2d860f754ec182b9c297225e6","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/persistence/CheckpointContracts.js#0007:AGI_CURRICULUM_STATE_SCHEMA","exportIndex":7,"name":"AGI_CURRICULUM_STATE_SCHEMA","kind":"constant","signature":"AGI_CURRICULUM_STATE_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/persistence/CheckpointContracts.md","moduleTitle":"persistence/CheckpointContracts","source":"agi/persistence/CheckpointContracts.js","import":"/agi/persistence/CheckpointContracts.js","sourceHash":"7d70b1dee5821f3e9c5445cf8a6b3a3a24d00ea2d860f754ec182b9c297225e6","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/persistence/CheckpointContracts.js#0008:AGI_TRAINING_METRICS_SCHEMA","exportIndex":8,"name":"AGI_TRAINING_METRICS_SCHEMA","kind":"constant","signature":"AGI_TRAINING_METRICS_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/persistence/CheckpointContracts.md","moduleTitle":"persistence/CheckpointContracts","source":"agi/persistence/CheckpointContracts.js","import":"/agi/persistence/CheckpointContracts.js","sourceHash":"7d70b1dee5821f3e9c5445cf8a6b3a3a24d00ea2d860f754ec182b9c297225e6","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/persistence/CheckpointContracts.js#0009:AGI_SCHEMA_VERSION","exportIndex":9,"name":"AGI_SCHEMA_VERSION","kind":"constant","signature":"AGI_SCHEMA_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/rig/BrainVisualizer.md","moduleTitle":"rig/BrainVisualizer","source":"agi/rig/BrainVisualizer.js","import":"/agi/rig/BrainVisualizer.js","sourceHash":"cdcb1089acc0790674eb8ce4beaf1ff1e2b3a481c3ebc9d299683df93df58350","subsystem":"agi","recordType":"api-module","id":"module:agi/rig/BrainVisualizer.js","title":"rig/BrainVisualizer","summary":"Brain Visualizer Visualizes neural network activity on the brain sphere","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/rig/BrainVisualizer.md","moduleTitle":"rig/BrainVisualizer","source":"agi/rig/BrainVisualizer.js","import":"/agi/rig/BrainVisualizer.js","sourceHash":"cdcb1089acc0790674eb8ce4beaf1ff1e2b3a481c3ebc9d299683df93df58350","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/rig/BrainVisualizer.js#0000:BrainVisualizer","exportIndex":0,"name":"BrainVisualizer","kind":"class","signature":"class BrainVisualizer","summary":"Brain Visualizer Visualizes neural network activity on the brain sphere"}
{"schemaVersion":1,"modulePath":"agi/reference/rig/InjectionSystem.md","moduleTitle":"rig/InjectionSystem","source":"agi/rig/InjectionSystem.js","import":"/agi/rig/InjectionSystem.js","sourceHash":"b384b97f4e6e45069982e5f1d20f80fc59c23759da7c87a7750f211676f93fd2","subsystem":"agi","recordType":"api-module","id":"module:agi/rig/InjectionSystem.js","title":"rig/InjectionSystem","summary":"Injection System Manages tentacle attachment from brain to ragdoll bones","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/rig/InjectionSystem.md","moduleTitle":"rig/InjectionSystem","source":"agi/rig/InjectionSystem.js","import":"/agi/rig/InjectionSystem.js","sourceHash":"b384b97f4e6e45069982e5f1d20f80fc59c23759da7c87a7750f211676f93fd2","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/rig/InjectionSystem.js#0000:InjectionSystem","exportIndex":0,"name":"InjectionSystem","kind":"class","signature":"class InjectionSystem","summary":"Injection System Manages tentacle attachment from brain to ragdoll bones"}
{"schemaVersion":1,"modulePath":"agi/reference/rig/ParasiteRig.md","moduleTitle":"rig/ParasiteRig","source":"agi/rig/ParasiteRig.js","import":"/agi/rig/ParasiteRig.js","sourceHash":"8b107096e5395f4c85a419c851ffa4ba049f54b9842026891b7edd245b1b0857","subsystem":"agi","recordType":"api-module","id":"module:agi/rig/ParasiteRig.js","title":"rig/ParasiteRig","summary":"Parasite Rig The \"brain sphere\" entity that hovers above and controls the ragdoll","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/rig/ParasiteRig.md","moduleTitle":"rig/ParasiteRig","source":"agi/rig/ParasiteRig.js","import":"/agi/rig/ParasiteRig.js","sourceHash":"8b107096e5395f4c85a419c851ffa4ba049f54b9842026891b7edd245b1b0857","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/rig/ParasiteRig.js#0000:ParasiteRig","exportIndex":0,"name":"ParasiteRig","kind":"class","signature":"class ParasiteRig","summary":"Parasite Rig The \"brain sphere\" entity that hovers above and controls the ragdoll"}
{"schemaVersion":1,"modulePath":"agi/reference/rig/TentacleRenderer.md","moduleTitle":"rig/TentacleRenderer","source":"agi/rig/TentacleRenderer.js","import":"/agi/rig/TentacleRenderer.js","sourceHash":"58066109901eef62fbf56d532a1df8cbd13b373f11e48c0ed9ef78fd44659228","subsystem":"agi","recordType":"api-module","id":"module:agi/rig/TentacleRenderer.js","title":"rig/TentacleRenderer","summary":"Tentacle Renderer Renders tentacles using lightning/electricity effect","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/rig/TentacleRenderer.md","moduleTitle":"rig/TentacleRenderer","source":"agi/rig/TentacleRenderer.js","import":"/agi/rig/TentacleRenderer.js","sourceHash":"58066109901eef62fbf56d532a1df8cbd13b373f11e48c0ed9ef78fd44659228","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/rig/TentacleRenderer.js#0000:TentacleRenderer","exportIndex":0,"name":"TentacleRenderer","kind":"class","signature":"class TentacleRenderer","summary":"Tentacle Renderer Renders tentacles using lightning/electricity effect"}
{"schemaVersion":1,"modulePath":"agi/reference/scene/DebugVisualizer.md","moduleTitle":"scene/DebugVisualizer","source":"agi/scene/DebugVisualizer.js","import":"/agi/scene/DebugVisualizer.js","sourceHash":"964f8fc855e559602a3d576c2f475f7e17fd61b5c3233239300f28b5293c33ee","subsystem":"agi","recordType":"api-module","id":"module:agi/scene/DebugVisualizer.js","title":"scene/DebugVisualizer","summary":"Debug Visualizer Renders debug overlays for training visualization","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/scene/DebugVisualizer.md","moduleTitle":"scene/DebugVisualizer","source":"agi/scene/DebugVisualizer.js","import":"/agi/scene/DebugVisualizer.js","sourceHash":"964f8fc855e559602a3d576c2f475f7e17fd61b5c3233239300f28b5293c33ee","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/scene/DebugVisualizer.js#0000:DebugVisualizer","exportIndex":0,"name":"DebugVisualizer","kind":"class","signature":"class DebugVisualizer","summary":"Debug Visualizer Renders debug overlays for training visualization"}
{"schemaVersion":1,"modulePath":"agi/reference/scene/GroundPlane.md","moduleTitle":"scene/GroundPlane","source":"agi/scene/GroundPlane.js","import":"/agi/scene/GroundPlane.js","sourceHash":"e9284e9b81cb3630c56999d8fd7b8f305556d7614361ba66529aa1f1ac8fa659","subsystem":"agi","recordType":"api-module","id":"module:agi/scene/GroundPlane.js","title":"scene/GroundPlane","summary":"Ground Plane Infinite grid ground for training environment","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/scene/GroundPlane.md","moduleTitle":"scene/GroundPlane","source":"agi/scene/GroundPlane.js","import":"/agi/scene/GroundPlane.js","sourceHash":"e9284e9b81cb3630c56999d8fd7b8f305556d7614361ba66529aa1f1ac8fa659","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/scene/GroundPlane.js#0000:GroundPlane","exportIndex":0,"name":"GroundPlane","kind":"class","signature":"class GroundPlane","summary":"Ground Plane Infinite grid ground for training environment"}
{"schemaVersion":1,"modulePath":"agi/reference/scene/SceneRenderer.md","moduleTitle":"scene/SceneRenderer","source":"agi/scene/SceneRenderer.js","import":"/agi/scene/SceneRenderer.js","sourceHash":"25abe7add02fc13cfdac49e71c33230d25fff79e187fc5cdd5a40c7f75ecae0c","subsystem":"agi","recordType":"api-module","id":"module:agi/scene/SceneRenderer.js","title":"scene/SceneRenderer","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/scene/SceneRenderer.md","moduleTitle":"scene/SceneRenderer","source":"agi/scene/SceneRenderer.js","import":"/agi/scene/SceneRenderer.js","sourceHash":"25abe7add02fc13cfdac49e71c33230d25fff79e187fc5cdd5a40c7f75ecae0c","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/scene/SceneRenderer.js#0000:SceneRenderer","exportIndex":0,"name":"SceneRenderer","kind":"class","signature":"class SceneRenderer","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/scene/TrackingCamera.md","moduleTitle":"scene/TrackingCamera","source":"agi/scene/TrackingCamera.js","import":"/agi/scene/TrackingCamera.js","sourceHash":"fe8be2ef8487fed5e007c74ca1cd325d043db89f45e490e4e8bfb8f83e34d8ae","subsystem":"agi","recordType":"api-module","id":"module:agi/scene/TrackingCamera.js","title":"scene/TrackingCamera","summary":"Tracking Camera Smooth camera that follows the ragdoll","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/scene/TrackingCamera.md","moduleTitle":"scene/TrackingCamera","source":"agi/scene/TrackingCamera.js","import":"/agi/scene/TrackingCamera.js","sourceHash":"fe8be2ef8487fed5e007c74ca1cd325d043db89f45e490e4e8bfb8f83e34d8ae","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/scene/TrackingCamera.js#0000:TrackingCamera","exportIndex":0,"name":"TrackingCamera","kind":"class","signature":"class TrackingCamera","summary":"Tracking Camera Smooth camera that follows the ragdoll"}
{"schemaVersion":1,"modulePath":"agi/reference/scene/TrainingScene.md","moduleTitle":"scene/TrainingScene","source":"agi/scene/TrainingScene.js","import":"/agi/scene/TrainingScene.js","sourceHash":"bf308868a8cccca4f34704c445fed5b2ed881c21ec03b35662eedbe93c6381ce","subsystem":"agi","recordType":"api-module","id":"module:agi/scene/TrainingScene.js","title":"scene/TrainingScene","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/scene/TrainingScene.md","moduleTitle":"scene/TrainingScene","source":"agi/scene/TrainingScene.js","import":"/agi/scene/TrainingScene.js","sourceHash":"bf308868a8cccca4f34704c445fed5b2ed881c21ec03b35662eedbe93c6381ce","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/scene/TrainingScene.js#0000:TrainingScene","exportIndex":0,"name":"TrainingScene","kind":"class","signature":"class TrainingScene","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/studio/core/StudioApp.md","moduleTitle":"studio/core/StudioApp","source":"agi/studio/core/StudioApp.js","import":"/agi/studio/core/StudioApp.js","sourceHash":"ae3cf3abd3d8ad473bed34d84e4bf5359cacf1a75287d9d38ffa028e5f782c04","subsystem":"agi","recordType":"api-module","id":"module:agi/studio/core/StudioApp.js","title":"studio/core/StudioApp","summary":"Studio Application Main AGI Studio workspace application","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/studio/core/StudioApp.md","moduleTitle":"studio/core/StudioApp","source":"agi/studio/core/StudioApp.js","import":"/agi/studio/core/StudioApp.js","sourceHash":"ae3cf3abd3d8ad473bed34d84e4bf5359cacf1a75287d9d38ffa028e5f782c04","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/studio/core/StudioApp.js#0000:StudioApp","exportIndex":0,"name":"StudioApp","kind":"class","signature":"class StudioApp","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/studio/core/StudioDirectoryHandleStore.md","moduleTitle":"studio/core/StudioDirectoryHandleStore","source":"agi/studio/core/StudioDirectoryHandleStore.js","import":"/agi/studio/core/StudioDirectoryHandleStore.js","sourceHash":"c953ece45ab667f0812f2fc48f698e643c754c7f7a308c7f4331aa3b5017589d","subsystem":"agi","recordType":"api-module","id":"module:agi/studio/core/StudioDirectoryHandleStore.js","title":"studio/core/StudioDirectoryHandleStore","summary":"Versioned IndexedDB owner for AGI Studio directory handles.","exportCount":13}
{"schemaVersion":1,"modulePath":"agi/reference/studio/core/StudioDirectoryHandleStore.md","moduleTitle":"studio/core/StudioDirectoryHandleStore","source":"agi/studio/core/StudioDirectoryHandleStore.js","import":"/agi/studio/core/StudioDirectoryHandleStore.js","sourceHash":"c953ece45ab667f0812f2fc48f698e643c754c7f7a308c7f4331aa3b5017589d","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/studio/core/StudioDirectoryHandleStore.js#0000:AGIStudioHandleStoreError","exportIndex":0,"name":"AGIStudioHandleStoreError","kind":"class","signature":"class AGIStudioHandleStoreError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/studio/core/StudioDirectoryHandleStore.md","moduleTitle":"studio/core/StudioDirectoryHandleStore","source":"agi/studio/core/StudioDirectoryHandleStore.js","import":"/agi/studio/core/StudioDirectoryHandleStore.js","sourceHash":"c953ece45ab667f0812f2fc48f698e643c754c7f7a308c7f4331aa3b5017589d","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/studio/core/StudioDirectoryHandleStore.js#0001:StudioDirectoryHandleStore","exportIndex":1,"name":"StudioDirectoryHandleStore","kind":"class","signature":"class StudioDirectoryHandleStore","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/studio/core/StudioDirectoryHandleStore.md","moduleTitle":"studio/core/StudioDirectoryHandleStore","source":"agi/studio/core/StudioDirectoryHandleStore.js","import":"/agi/studio/core/StudioDirectoryHandleStore.js","sourceHash":"c953ece45ab667f0812f2fc48f698e643c754c7f7a308c7f4331aa3b5017589d","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/studio/core/StudioDirectoryHandleStore.js#0002:isAGIStudioDirectoryHandle","exportIndex":2,"name":"isAGIStudioDirectoryHandle","kind":"function","signature":"isAGIStudioDirectoryHandle(value)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/studio/core/StudioDirectoryHandleStore.md","moduleTitle":"studio/core/StudioDirectoryHandleStore","source":"agi/studio/core/StudioDirectoryHandleStore.js","import":"/agi/studio/core/StudioDirectoryHandleStore.js","sourceHash":"c953ece45ab667f0812f2fc48f698e643c754c7f7a308c7f4331aa3b5017589d","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/studio/core/StudioDirectoryHandleStore.js#0003:agiStudioDirectoryHandleCurrentKey","exportIndex":3,"name":"agiStudioDirectoryHandleCurrentKey","kind":"function","signature":"agiStudioDirectoryHandleCurrentKey(slot)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/studio/core/StudioDirectoryHandleStore.md","moduleTitle":"studio/core/StudioDirectoryHandleStore","source":"agi/studio/core/StudioDirectoryHandleStore.js","import":"/agi/studio/core/StudioDirectoryHandleStore.js","sourceHash":"c953ece45ab667f0812f2fc48f698e643c754c7f7a308c7f4331aa3b5017589d","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/studio/core/StudioDirectoryHandleStore.js#0004:prepareAGIStudioDirectoryHandleRecord","exportIndex":4,"name":"prepareAGIStudioDirectoryHandleRecord","kind":"function","signature":"prepareAGIStudioDirectoryHandleRecord(value, expectedSlot)","summary":"Validate a raw v1 handle or exact v2 envelope without serializing the handle."}
{"schemaVersion":1,"modulePath":"agi/reference/studio/core/StudioDirectoryHandleStore.md","moduleTitle":"studio/core/StudioDirectoryHandleStore","source":"agi/studio/core/StudioDirectoryHandleStore.js","import":"/agi/studio/core/StudioDirectoryHandleStore.js","sourceHash":"c953ece45ab667f0812f2fc48f698e643c754c7f7a308c7f4331aa3b5017589d","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/studio/core/StudioDirectoryHandleStore.js#0005:AGI_STUDIO_HANDLE_DB_NAME","exportIndex":5,"name":"AGI_STUDIO_HANDLE_DB_NAME","kind":"constant","signature":"AGI_STUDIO_HANDLE_DB_NAME","summary":"Versioned IndexedDB owner for AGI Studio directory handles."}
{"schemaVersion":1,"modulePath":"agi/reference/studio/core/StudioDirectoryHandleStore.md","moduleTitle":"studio/core/StudioDirectoryHandleStore","source":"agi/studio/core/StudioDirectoryHandleStore.js","import":"/agi/studio/core/StudioDirectoryHandleStore.js","sourceHash":"c953ece45ab667f0812f2fc48f698e643c754c7f7a308c7f4331aa3b5017589d","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/studio/core/StudioDirectoryHandleStore.js#0006:AGI_STUDIO_HANDLE_STORE_NAME","exportIndex":6,"name":"AGI_STUDIO_HANDLE_STORE_NAME","kind":"constant","signature":"AGI_STUDIO_HANDLE_STORE_NAME","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/studio/core/StudioDirectoryHandleStore.md","moduleTitle":"studio/core/StudioDirectoryHandleStore","source":"agi/studio/core/StudioDirectoryHandleStore.js","import":"/agi/studio/core/StudioDirectoryHandleStore.js","sourceHash":"c953ece45ab667f0812f2fc48f698e643c754c7f7a308c7f4331aa3b5017589d","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/studio/core/StudioDirectoryHandleStore.js#0007:AGI_STUDIO_HANDLE_DB_VERSION","exportIndex":7,"name":"AGI_STUDIO_HANDLE_DB_VERSION","kind":"constant","signature":"AGI_STUDIO_HANDLE_DB_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/studio/core/StudioDirectoryHandleStore.md","moduleTitle":"studio/core/StudioDirectoryHandleStore","source":"agi/studio/core/StudioDirectoryHandleStore.js","import":"/agi/studio/core/StudioDirectoryHandleStore.js","sourceHash":"c953ece45ab667f0812f2fc48f698e643c754c7f7a308c7f4331aa3b5017589d","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/studio/core/StudioDirectoryHandleStore.js#0008:AGI_STUDIO_DIRECTORY_HANDLE_SCHEMA","exportIndex":8,"name":"AGI_STUDIO_DIRECTORY_HANDLE_SCHEMA","kind":"constant","signature":"AGI_STUDIO_DIRECTORY_HANDLE_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/studio/core/StudioDirectoryHandleStore.md","moduleTitle":"studio/core/StudioDirectoryHandleStore","source":"agi/studio/core/StudioDirectoryHandleStore.js","import":"/agi/studio/core/StudioDirectoryHandleStore.js","sourceHash":"c953ece45ab667f0812f2fc48f698e643c754c7f7a308c7f4331aa3b5017589d","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/studio/core/StudioDirectoryHandleStore.js#0009:AGI_STUDIO_DIRECTORY_HANDLE_FORMAT","exportIndex":9,"name":"AGI_STUDIO_DIRECTORY_HANDLE_FORMAT","kind":"constant","signature":"AGI_STUDIO_DIRECTORY_HANDLE_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/studio/core/StudioDirectoryHandleStore.md","moduleTitle":"studio/core/StudioDirectoryHandleStore","source":"agi/studio/core/StudioDirectoryHandleStore.js","import":"/agi/studio/core/StudioDirectoryHandleStore.js","sourceHash":"c953ece45ab667f0812f2fc48f698e643c754c7f7a308c7f4331aa3b5017589d","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/studio/core/StudioDirectoryHandleStore.js#0010:AGI_STUDIO_DIRECTORY_HANDLE_VERSION","exportIndex":10,"name":"AGI_STUDIO_DIRECTORY_HANDLE_VERSION","kind":"constant","signature":"AGI_STUDIO_DIRECTORY_HANDLE_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/studio/core/StudioDirectoryHandleStore.md","moduleTitle":"studio/core/StudioDirectoryHandleStore","source":"agi/studio/core/StudioDirectoryHandleStore.js","import":"/agi/studio/core/StudioDirectoryHandleStore.js","sourceHash":"c953ece45ab667f0812f2fc48f698e643c754c7f7a308c7f4331aa3b5017589d","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/studio/core/StudioDirectoryHandleStore.js#0011:AGI_STUDIO_DIRECTORY_HANDLE_SLOTS","exportIndex":11,"name":"AGI_STUDIO_DIRECTORY_HANDLE_SLOTS","kind":"constant","signature":"AGI_STUDIO_DIRECTORY_HANDLE_SLOTS","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/studio/core/StudioDirectoryHandleStore.md","moduleTitle":"studio/core/StudioDirectoryHandleStore","source":"agi/studio/core/StudioDirectoryHandleStore.js","import":"/agi/studio/core/StudioDirectoryHandleStore.js","sourceHash":"c953ece45ab667f0812f2fc48f698e643c754c7f7a308c7f4331aa3b5017589d","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/studio/core/StudioDirectoryHandleStore.js#0012:AGI_STUDIO_HANDLE_LIMITS","exportIndex":12,"name":"AGI_STUDIO_HANDLE_LIMITS","kind":"constant","signature":"AGI_STUDIO_HANDLE_LIMITS","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/studio/main.md","moduleTitle":"studio/main","source":"agi/studio/main.js","import":"/agi/studio/main.js","sourceHash":"8236490f255c697417ba677755c07b3067c1999db3f8788477c3f705d5ee58b3","subsystem":"agi","recordType":"api-module","id":"module:agi/studio/main.js","title":"studio/main","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"agi/reference/studio/ui/LoadingProgress.md","moduleTitle":"studio/ui/LoadingProgress","source":"agi/studio/ui/LoadingProgress.js","import":"/agi/studio/ui/LoadingProgress.js","sourceHash":"ef1c4411a2e8cff7daee838096e98e64aeb42f80b83c01a549ddd5f3470f5dcb","subsystem":"agi","recordType":"api-module","id":"module:agi/studio/ui/LoadingProgress.js","title":"studio/ui/LoadingProgress","summary":"Loading Progress UI - Shows what's loading and progress","exportCount":2}
{"schemaVersion":1,"modulePath":"agi/reference/studio/ui/LoadingProgress.md","moduleTitle":"studio/ui/LoadingProgress","source":"agi/studio/ui/LoadingProgress.js","import":"/agi/studio/ui/LoadingProgress.js","sourceHash":"ef1c4411a2e8cff7daee838096e98e64aeb42f80b83c01a549ddd5f3470f5dcb","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/studio/ui/LoadingProgress.js#0000:LoadingProgress","exportIndex":0,"name":"LoadingProgress","kind":"class","signature":"class LoadingProgress","summary":"Loading Progress UI - Shows what's loading and progress"}
{"schemaVersion":1,"modulePath":"agi/reference/studio/ui/LoadingProgress.md","moduleTitle":"studio/ui/LoadingProgress","source":"agi/studio/ui/LoadingProgress.js","import":"/agi/studio/ui/LoadingProgress.js","sourceHash":"ef1c4411a2e8cff7daee838096e98e64aeb42f80b83c01a549ddd5f3470f5dcb","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/studio/ui/LoadingProgress.js#0001:loadingProgress","exportIndex":1,"name":"loadingProgress","kind":"constant","signature":"loadingProgress","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/tensor/ComputeGraph.md","moduleTitle":"tensor/ComputeGraph","source":"agi/tensor/ComputeGraph.js","import":"/agi/tensor/ComputeGraph.js","sourceHash":"26ca9b7e87d7e73cf8f8a75c9dcc10ae3f8b839e09d4eadead6913b9e81649ba","subsystem":"agi","recordType":"api-module","id":"module:agi/tensor/ComputeGraph.js","title":"tensor/ComputeGraph","summary":"Compute Graph Manages operation chaining and execution order for tensor operations","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/tensor/ComputeGraph.md","moduleTitle":"tensor/ComputeGraph","source":"agi/tensor/ComputeGraph.js","import":"/agi/tensor/ComputeGraph.js","sourceHash":"26ca9b7e87d7e73cf8f8a75c9dcc10ae3f8b839e09d4eadead6913b9e81649ba","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/tensor/ComputeGraph.js#0000:ComputeGraph","exportIndex":0,"name":"ComputeGraph","kind":"class","signature":"class ComputeGraph","summary":"Compute Graph Manages operation chaining and execution order for tensor operations"}
{"schemaVersion":1,"modulePath":"agi/reference/tensor/GradientTape.md","moduleTitle":"tensor/GradientTape","source":"agi/tensor/GradientTape.js","import":"/agi/tensor/GradientTape.js","sourceHash":"e96aeba07c60f4fbcfe8075ce345aa4b5fd8b38f4763454e74e31ad16969615b","subsystem":"agi","recordType":"api-module","id":"module:agi/tensor/GradientTape.js","title":"tensor/GradientTape","summary":"Gradient Tape - Automatic Differentiation Records operations for backward pass computation","exportCount":2}
{"schemaVersion":1,"modulePath":"agi/reference/tensor/GradientTape.md","moduleTitle":"tensor/GradientTape","source":"agi/tensor/GradientTape.js","import":"/agi/tensor/GradientTape.js","sourceHash":"e96aeba07c60f4fbcfe8075ce345aa4b5fd8b38f4763454e74e31ad16969615b","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/tensor/GradientTape.js#0000:GradientTape","exportIndex":0,"name":"GradientTape","kind":"class","signature":"class GradientTape","summary":"Gradient Tape - Automatic Differentiation Records operations for backward pass computation"}
{"schemaVersion":1,"modulePath":"agi/reference/tensor/GradientTape.md","moduleTitle":"tensor/GradientTape","source":"agi/tensor/GradientTape.js","import":"/agi/tensor/GradientTape.js","sourceHash":"e96aeba07c60f4fbcfe8075ce345aa4b5fd8b38f4763454e74e31ad16969615b","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/tensor/GradientTape.js#0001:GradientContext","exportIndex":1,"name":"GradientContext","kind":"class","signature":"class GradientContext","summary":"Context manager for gradient tape"}
{"schemaVersion":1,"modulePath":"agi/reference/tensor/Tensor.md","moduleTitle":"tensor/Tensor","source":"agi/tensor/Tensor.js","import":"/agi/tensor/Tensor.js","sourceHash":"684fca9422ac801e2437832d8ddab6095c08198f2a3a826cae4b9686a1ffd61e","subsystem":"agi","recordType":"api-module","id":"module:agi/tensor/Tensor.js","title":"tensor/Tensor","summary":"GPU-resident float32 tensor with explicit readback and ownership.","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/tensor/Tensor.md","moduleTitle":"tensor/Tensor","source":"agi/tensor/Tensor.js","import":"/agi/tensor/Tensor.js","sourceHash":"684fca9422ac801e2437832d8ddab6095c08198f2a3a826cae4b9686a1ffd61e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/tensor/Tensor.js#0000:Tensor","exportIndex":0,"name":"Tensor","kind":"class","signature":"class Tensor","summary":"GPU-resident float32 tensor with explicit readback and ownership."}
{"schemaVersion":1,"modulePath":"agi/reference/tensor/TensorCache.md","moduleTitle":"tensor/TensorCache","source":"agi/tensor/TensorCache.js","import":"/agi/tensor/TensorCache.js","sourceHash":"0d8979cee9446b90b1e9f552b93dc7e6c641a12ccfdabc01ef644285169a3751","subsystem":"agi","recordType":"api-module","id":"module:agi/tensor/TensorCache.js","title":"tensor/TensorCache","summary":"Tensor Cache - Memory Management for GPU Tensors Manages tensor buffer lifecycle and memory reuse","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/tensor/TensorCache.md","moduleTitle":"tensor/TensorCache","source":"agi/tensor/TensorCache.js","import":"/agi/tensor/TensorCache.js","sourceHash":"0d8979cee9446b90b1e9f552b93dc7e6c641a12ccfdabc01ef644285169a3751","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/tensor/TensorCache.js#0000:TensorCache","exportIndex":0,"name":"TensorCache","kind":"class","signature":"class TensorCache","summary":"Tensor Cache - Memory Management for GPU Tensors Manages tensor buffer lifecycle and memory reuse"}
{"schemaVersion":1,"modulePath":"agi/reference/tensor/TensorOps.md","moduleTitle":"tensor/TensorOps","source":"agi/tensor/TensorOps.js","import":"/agi/tensor/TensorOps.js","sourceHash":"f92f4df6708803a2fae8c8e333bfbc0a61b1a26b2f037a82bfccd69dc485a11e","subsystem":"agi","recordType":"api-module","id":"module:agi/tensor/TensorOps.js","title":"tensor/TensorOps","summary":"GPU-resident float32 elementwise and reduction operations.","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/tensor/TensorOps.md","moduleTitle":"tensor/TensorOps","source":"agi/tensor/TensorOps.js","import":"/agi/tensor/TensorOps.js","sourceHash":"f92f4df6708803a2fae8c8e333bfbc0a61b1a26b2f037a82bfccd69dc485a11e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/tensor/TensorOps.js#0000:TensorOps","exportIndex":0,"name":"TensorOps","kind":"class","signature":"class TensorOps","summary":"GPU-resident float32 elementwise and reduction operations."}
{"schemaVersion":1,"modulePath":"agi/reference/tensor/TensorOpsAdvanced.md","moduleTitle":"tensor/TensorOpsAdvanced","source":"agi/tensor/TensorOpsAdvanced.js","import":"/agi/tensor/TensorOpsAdvanced.js","sourceHash":"4646764c86d6e498d4a5b192df9b5d4c7df7fe8435b542b4c6ef9113a459549e","subsystem":"agi","recordType":"api-module","id":"module:agi/tensor/TensorOpsAdvanced.js","title":"tensor/TensorOpsAdvanced","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/tensor/TensorOpsAdvanced.md","moduleTitle":"tensor/TensorOpsAdvanced","source":"agi/tensor/TensorOpsAdvanced.js","import":"/agi/tensor/TensorOpsAdvanced.js","sourceHash":"4646764c86d6e498d4a5b192df9b5d4c7df7fe8435b542b4c6ef9113a459549e","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/tensor/TensorOpsAdvanced.js#0000:TensorOpsAdvanced","exportIndex":0,"name":"TensorOpsAdvanced","kind":"class","signature":"class TensorOpsAdvanced","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/tensor/shaders/activation.md","moduleTitle":"tensor/shaders/activation","source":"agi/tensor/shaders/activation.js","import":"/agi/tensor/shaders/activation.js","sourceHash":"2c123cb5af1d1adc7bf8699ef1dbe4d8c5af04ae5cbdc7d740a81aad92d86c6c","subsystem":"agi","recordType":"api-module","id":"module:agi/tensor/shaders/activation.js","title":"tensor/shaders/activation","summary":"Activation Function Compute Shaders ReLU, Tanh, Sigmoid, and their derivatives","exportCount":2}
{"schemaVersion":1,"modulePath":"agi/reference/tensor/shaders/activation.md","moduleTitle":"tensor/shaders/activation","source":"agi/tensor/shaders/activation.js","import":"/agi/tensor/shaders/activation.js","sourceHash":"2c123cb5af1d1adc7bf8699ef1dbe4d8c5af04ae5cbdc7d740a81aad92d86c6c","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/tensor/shaders/activation.js#0000:createActivationShader","exportIndex":0,"name":"createActivationShader","kind":"function","signature":"createActivationShader(activationType = 'relu', workgroupSize = 256)","summary":"Activation Function Compute Shaders ReLU, Tanh, Sigmoid, and their derivatives"}
{"schemaVersion":1,"modulePath":"agi/reference/tensor/shaders/activation.md","moduleTitle":"tensor/shaders/activation","source":"agi/tensor/shaders/activation.js","import":"/agi/tensor/shaders/activation.js","sourceHash":"2c123cb5af1d1adc7bf8699ef1dbe4d8c5af04ae5cbdc7d740a81aad92d86c6c","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/tensor/shaders/activation.js#0001:createActivationDerivativeShader","exportIndex":1,"name":"createActivationDerivativeShader","kind":"function","signature":"createActivationDerivativeShader(activationType = 'relu', workgroupSize = 256)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/tensor/shaders/matmul.md","moduleTitle":"tensor/shaders/matmul","source":"agi/tensor/shaders/matmul.js","import":"/agi/tensor/shaders/matmul.js","sourceHash":"0591fa80ce07d12cc1a7dcfe7f6a6e9ddc65b3f1987e43c664238859bb2900b7","subsystem":"agi","recordType":"api-module","id":"module:agi/tensor/shaders/matmul.js","title":"tensor/shaders/matmul","summary":"Matrix Multiplication Compute Shader C = A * B where A is [M x K] and B is [K x N]","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/tensor/shaders/matmul.md","moduleTitle":"tensor/shaders/matmul","source":"agi/tensor/shaders/matmul.js","import":"/agi/tensor/shaders/matmul.js","sourceHash":"0591fa80ce07d12cc1a7dcfe7f6a6e9ddc65b3f1987e43c664238859bb2900b7","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/tensor/shaders/matmul.js#0000:createMatmulShader","exportIndex":0,"name":"createMatmulShader","kind":"function","signature":"createMatmulShader(workgroupSize = 8)","summary":"Matrix Multiplication Compute Shader C = A * B where A is [M x K] and B is [K x N]"}
{"schemaVersion":1,"modulePath":"agi/reference/tensor/shaders/reduction.md","moduleTitle":"tensor/shaders/reduction","source":"agi/tensor/shaders/reduction.js","import":"/agi/tensor/shaders/reduction.js","sourceHash":"7f3ada19ad8db6a3d564df74178aa7cb8491dd3a7456547dee5e5c864b2bc668","subsystem":"agi","recordType":"api-module","id":"module:agi/tensor/shaders/reduction.js","title":"tensor/shaders/reduction","summary":"Reduction Operations Compute Shaders Sum, Max, Min reductions along axes","exportCount":4}
{"schemaVersion":1,"modulePath":"agi/reference/tensor/shaders/reduction.md","moduleTitle":"tensor/shaders/reduction","source":"agi/tensor/shaders/reduction.js","import":"/agi/tensor/shaders/reduction.js","sourceHash":"7f3ada19ad8db6a3d564df74178aa7cb8491dd3a7456547dee5e5c864b2bc668","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/tensor/shaders/reduction.js#0000:createSumReductionShader","exportIndex":0,"name":"createSumReductionShader","kind":"function","signature":"createSumReductionShader(workgroupSize = 256)","summary":"Reduction Operations Compute Shaders Sum, Max, Min reductions along axes"}
{"schemaVersion":1,"modulePath":"agi/reference/tensor/shaders/reduction.md","moduleTitle":"tensor/shaders/reduction","source":"agi/tensor/shaders/reduction.js","import":"/agi/tensor/shaders/reduction.js","sourceHash":"7f3ada19ad8db6a3d564df74178aa7cb8491dd3a7456547dee5e5c864b2bc668","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/tensor/shaders/reduction.js#0001:createMaxReductionShader","exportIndex":1,"name":"createMaxReductionShader","kind":"function","signature":"createMaxReductionShader(workgroupSize = 256)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/tensor/shaders/reduction.md","moduleTitle":"tensor/shaders/reduction","source":"agi/tensor/shaders/reduction.js","import":"/agi/tensor/shaders/reduction.js","sourceHash":"7f3ada19ad8db6a3d564df74178aa7cb8491dd3a7456547dee5e5c864b2bc668","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/tensor/shaders/reduction.js#0002:createMeanReductionShader","exportIndex":2,"name":"createMeanReductionShader","kind":"function","signature":"createMeanReductionShader(workgroupSize = 256)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/tensor/shaders/reduction.md","moduleTitle":"tensor/shaders/reduction","source":"agi/tensor/shaders/reduction.js","import":"/agi/tensor/shaders/reduction.js","sourceHash":"7f3ada19ad8db6a3d564df74178aa7cb8491dd3a7456547dee5e5c864b2bc668","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/tensor/shaders/reduction.js#0003:createSoftmaxShader","exportIndex":3,"name":"createSoftmaxShader","kind":"function","signature":"createSoftmaxShader(workgroupSize = 256)","summary":""}
{"schemaVersion":1,"modulePath":"agi/reference/ui/MetricsDisplay.md","moduleTitle":"ui/MetricsDisplay","source":"agi/ui/MetricsDisplay.js","import":"/agi/ui/MetricsDisplay.js","sourceHash":"bd57b45b09f3d3fb0e7aa3f6661bd2c4dc974362c16de34c4af133b912bd41fb","subsystem":"agi","recordType":"api-module","id":"module:agi/ui/MetricsDisplay.js","title":"ui/MetricsDisplay","summary":"Metrics Display Real-time training statistics display","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/ui/MetricsDisplay.md","moduleTitle":"ui/MetricsDisplay","source":"agi/ui/MetricsDisplay.js","import":"/agi/ui/MetricsDisplay.js","sourceHash":"bd57b45b09f3d3fb0e7aa3f6661bd2c4dc974362c16de34c4af133b912bd41fb","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/ui/MetricsDisplay.js#0000:MetricsDisplay","exportIndex":0,"name":"MetricsDisplay","kind":"class","signature":"class MetricsDisplay","summary":"Metrics Display Real-time training statistics display"}
{"schemaVersion":1,"modulePath":"agi/reference/ui/TrainingUI.md","moduleTitle":"ui/TrainingUI","source":"agi/ui/TrainingUI.js","import":"/agi/ui/TrainingUI.js","sourceHash":"b00b6b3bf2d60e010b022348ae2ec48b7a9b543d2605278c23c4d44bf93eed64","subsystem":"agi","recordType":"api-module","id":"module:agi/ui/TrainingUI.js","title":"ui/TrainingUI","summary":"Training UI Main control panel for training interface","exportCount":1}
{"schemaVersion":1,"modulePath":"agi/reference/ui/TrainingUI.md","moduleTitle":"ui/TrainingUI","source":"agi/ui/TrainingUI.js","import":"/agi/ui/TrainingUI.js","sourceHash":"b00b6b3bf2d60e010b022348ae2ec48b7a9b543d2605278c23c4d44bf93eed64","subsystem":"agi","recordType":"api-symbol","id":"symbol:agi/ui/TrainingUI.js#0000:TrainingUI","exportIndex":0,"name":"TrainingUI","kind":"class","signature":"class TrainingUI","summary":"Training UI Main control panel for training interface"}
{"schemaVersion":1,"modulePath":"editor/reference/EditorApp.md","moduleTitle":"EditorApp","source":"editor/js/EditorApp.js","import":"/editor/js/EditorApp.js","sourceHash":"15dce8760d6b57df398f8b909cb03eed49dc77b694ce58d828a62985bc95b9dc","subsystem":"editor","recordType":"api-module","id":"module:editor/js/EditorApp.js","title":"EditorApp","summary":"EditorApp - Main application controller (Modular) Uses lazy loading for heavy modules to improve initial load time","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/EditorApp.md","moduleTitle":"EditorApp","source":"editor/js/EditorApp.js","import":"/editor/js/EditorApp.js","sourceHash":"15dce8760d6b57df398f8b909cb03eed49dc77b694ce58d828a62985bc95b9dc","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/EditorApp.js#0000:EditorApp","exportIndex":0,"name":"EditorApp","kind":"class","signature":"class EditorApp","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/ProjectManager.md","moduleTitle":"ProjectManager","source":"editor/js/ProjectManager.js","import":"/editor/js/ProjectManager.js","sourceHash":"6da80fcdde3d1994783f6ae4efb8d78ae4351510d293fe49a37b77a2542a609b","subsystem":"editor","recordType":"api-module","id":"module:editor/js/ProjectManager.js","title":"ProjectManager","summary":"ProjectManager - Handles project folder selection and initialization","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/ProjectManager.md","moduleTitle":"ProjectManager","source":"editor/js/ProjectManager.js","import":"/editor/js/ProjectManager.js","sourceHash":"6da80fcdde3d1994783f6ae4efb8d78ae4351510d293fe49a37b77a2542a609b","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/ProjectManager.js#0000:ProjectManager","exportIndex":0,"name":"ProjectManager","kind":"class","signature":"class ProjectManager","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioEditorPanel.md","moduleTitle":"components/AudioEditorPanel","source":"editor/js/components/AudioEditorPanel.js","import":"/editor/js/components/AudioEditorPanel.js","sourceHash":"766e0e3423425583173c5bb5a9957d72ae0fb41367906d1d8e05637dea823ad9","subsystem":"editor","recordType":"api-module","id":"module:editor/js/components/AudioEditorPanel.js","title":"components/AudioEditorPanel","summary":"AudioEditorPanel.js - Main Audio Editor Panel Composes NodeGraph + Palette + Inspector + Materials + PreviewControls into a single editor tab panel for the engine editor.","exportCount":2}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioEditorPanel.md","moduleTitle":"components/AudioEditorPanel","source":"editor/js/components/AudioEditorPanel.js","import":"/editor/js/components/AudioEditorPanel.js","sourceHash":"766e0e3423425583173c5bb5a9957d72ae0fb41367906d1d8e05637dea823ad9","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/AudioEditorPanel.js#0000:createAudioEditorPanel","exportIndex":0,"name":"createAudioEditorPanel","kind":"function","signature":"createAudioEditorPanel(parentContainer, options = {})","summary":"Create the audio editor panel."}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioEditorPanel.md","moduleTitle":"components/AudioEditorPanel","source":"editor/js/components/AudioEditorPanel.js","import":"/editor/js/components/AudioEditorPanel.js","sourceHash":"766e0e3423425583173c5bb5a9957d72ae0fb41367906d1d8e05637dea823ad9","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/AudioEditorPanel.js#0001:destroyAudioEditorPanel","exportIndex":1,"name":"destroyAudioEditorPanel","kind":"function","signature":"destroyAudioEditorPanel(panel)","summary":"Destroy the audio editor panel."}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioMotionTimeline.md","moduleTitle":"components/AudioMotionTimeline","source":"editor/js/components/AudioMotionTimeline.js","import":"/editor/js/components/AudioMotionTimeline.js","sourceHash":"b660052fe2975e6a2a3e73691436ca533a01d3467b30ec2552ab461e6d83077d","subsystem":"editor","recordType":"api-module","id":"module:editor/js/components/AudioMotionTimeline.js","title":"components/AudioMotionTimeline","summary":"AudioMotionTimeline.js - Sound motion/automation timeline for Audio Editor V1 feature set: - Per-parameter tracks (nodeId + param) - Keyframe authoring (time, value, easing) - Loop + duration + playhead scrubbing - Runtime evaluation using AnimationTrack","exportCount":7}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioMotionTimeline.md","moduleTitle":"components/AudioMotionTimeline","source":"editor/js/components/AudioMotionTimeline.js","import":"/editor/js/components/AudioMotionTimeline.js","sourceHash":"b660052fe2975e6a2a3e73691436ca533a01d3467b30ec2552ab461e6d83077d","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/AudioMotionTimeline.js#0000:createAudioMotionTimeline","exportIndex":0,"name":"createAudioMotionTimeline","kind":"function","signature":"createAudioMotionTimeline(container, callbacks = {})","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioMotionTimeline.md","moduleTitle":"components/AudioMotionTimeline","source":"editor/js/components/AudioMotionTimeline.js","import":"/editor/js/components/AudioMotionTimeline.js","sourceHash":"b660052fe2975e6a2a3e73691436ca533a01d3467b30ec2552ab461e6d83077d","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/AudioMotionTimeline.js#0001:setMotionPatch","exportIndex":1,"name":"setMotionPatch","kind":"function","signature":"setMotionPatch(timeline, motionData, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioMotionTimeline.md","moduleTitle":"components/AudioMotionTimeline","source":"editor/js/components/AudioMotionTimeline.js","import":"/editor/js/components/AudioMotionTimeline.js","sourceHash":"b660052fe2975e6a2a3e73691436ca533a01d3467b30ec2552ab461e6d83077d","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/AudioMotionTimeline.js#0002:exportMotionPatch","exportIndex":2,"name":"exportMotionPatch","kind":"function","signature":"exportMotionPatch(timeline)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioMotionTimeline.md","moduleTitle":"components/AudioMotionTimeline","source":"editor/js/components/AudioMotionTimeline.js","import":"/editor/js/components/AudioMotionTimeline.js","sourceHash":"b660052fe2975e6a2a3e73691436ca533a01d3467b30ec2552ab461e6d83077d","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/AudioMotionTimeline.js#0003:evaluateMotionAtTime","exportIndex":3,"name":"evaluateMotionAtTime","kind":"function","signature":"evaluateMotionAtTime(timeline, tSec)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioMotionTimeline.md","moduleTitle":"components/AudioMotionTimeline","source":"editor/js/components/AudioMotionTimeline.js","import":"/editor/js/components/AudioMotionTimeline.js","sourceHash":"b660052fe2975e6a2a3e73691436ca533a01d3467b30ec2552ab461e6d83077d","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/AudioMotionTimeline.js#0004:evaluateActivityAtTime","exportIndex":4,"name":"evaluateActivityAtTime","kind":"function","signature":"evaluateActivityAtTime(timeline, tSec)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioMotionTimeline.md","moduleTitle":"components/AudioMotionTimeline","source":"editor/js/components/AudioMotionTimeline.js","import":"/editor/js/components/AudioMotionTimeline.js","sourceHash":"b660052fe2975e6a2a3e73691436ca533a01d3467b30ec2552ab461e6d83077d","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/AudioMotionTimeline.js#0005:resolveAudioMotionTimelineTime","exportIndex":5,"name":"resolveAudioMotionTimelineTime","kind":"function","signature":"resolveAudioMotionTimelineTime(timeline, tSec)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioMotionTimeline.md","moduleTitle":"components/AudioMotionTimeline","source":"editor/js/components/AudioMotionTimeline.js","import":"/editor/js/components/AudioMotionTimeline.js","sourceHash":"b660052fe2975e6a2a3e73691436ca533a01d3467b30ec2552ab461e6d83077d","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/AudioMotionTimeline.js#0006:destroyAudioMotionTimeline","exportIndex":6,"name":"destroyAudioMotionTimeline","kind":"function","signature":"destroyAudioMotionTimeline(timeline)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioNodeGraph.md","moduleTitle":"components/AudioNodeGraph","source":"editor/js/components/AudioNodeGraph.js","import":"/editor/js/components/AudioNodeGraph.js","sourceHash":"068e9a4c4007fdd8969ff58c87f32ccb71a50bc0d7aec4a637fb9be303c5e418","subsystem":"editor","recordType":"api-module","id":"module:editor/js/components/AudioNodeGraph.js","title":"components/AudioNodeGraph","summary":"AudioNodeGraph.js - Canvas-Based Node Graph Editor Draggable nodes, wire connections (audio=thick, control=thin/dashed), zoom/pan, selection, and serialization to/from patch JSON.","exportCount":18}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioNodeGraph.md","moduleTitle":"components/AudioNodeGraph","source":"editor/js/components/AudioNodeGraph.js","import":"/editor/js/components/AudioNodeGraph.js","sourceHash":"068e9a4c4007fdd8969ff58c87f32ccb71a50bc0d7aec4a637fb9be303c5e418","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/AudioNodeGraph.js#0000:createAudioNodeGraph","exportIndex":0,"name":"createAudioNodeGraph","kind":"function","signature":"createAudioNodeGraph(container, callbacks = {})","summary":"Create an audio node graph editor."}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioNodeGraph.md","moduleTitle":"components/AudioNodeGraph","source":"editor/js/components/AudioNodeGraph.js","import":"/editor/js/components/AudioNodeGraph.js","sourceHash":"068e9a4c4007fdd8969ff58c87f32ccb71a50bc0d7aec4a637fb9be303c5e418","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/AudioNodeGraph.js#0001:addNode","exportIndex":1,"name":"addNode","kind":"function","signature":"addNode(graph, type, x, y, params = {})","summary":"Add a node to the graph."}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioNodeGraph.md","moduleTitle":"components/AudioNodeGraph","source":"editor/js/components/AudioNodeGraph.js","import":"/editor/js/components/AudioNodeGraph.js","sourceHash":"068e9a4c4007fdd8969ff58c87f32ccb71a50bc0d7aec4a637fb9be303c5e418","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/AudioNodeGraph.js#0002:removeNode","exportIndex":2,"name":"removeNode","kind":"function","signature":"removeNode(graph, nodeId)","summary":"Remove a node and its wires."}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioNodeGraph.md","moduleTitle":"components/AudioNodeGraph","source":"editor/js/components/AudioNodeGraph.js","import":"/editor/js/components/AudioNodeGraph.js","sourceHash":"068e9a4c4007fdd8969ff58c87f32ccb71a50bc0d7aec4a637fb9be303c5e418","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/AudioNodeGraph.js#0003:addWire","exportIndex":3,"name":"addWire","kind":"function","signature":"addWire(graph, from, to)","summary":"Add a wire between two ports."}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioNodeGraph.md","moduleTitle":"components/AudioNodeGraph","source":"editor/js/components/AudioNodeGraph.js","import":"/editor/js/components/AudioNodeGraph.js","sourceHash":"068e9a4c4007fdd8969ff58c87f32ccb71a50bc0d7aec4a637fb9be303c5e418","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/AudioNodeGraph.js#0004:removeWire","exportIndex":4,"name":"removeWire","kind":"function","signature":"removeWire(graph, from, to)","summary":"Remove a wire."}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioNodeGraph.md","moduleTitle":"components/AudioNodeGraph","source":"editor/js/components/AudioNodeGraph.js","import":"/editor/js/components/AudioNodeGraph.js","sourceHash":"068e9a4c4007fdd8969ff58c87f32ccb71a50bc0d7aec4a637fb9be303c5e418","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/AudioNodeGraph.js#0005:duplicateNode","exportIndex":5,"name":"duplicateNode","kind":"function","signature":"duplicateNode(graph, nodeId)","summary":"Duplicate a node (offset position by 20,20)."}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioNodeGraph.md","moduleTitle":"components/AudioNodeGraph","source":"editor/js/components/AudioNodeGraph.js","import":"/editor/js/components/AudioNodeGraph.js","sourceHash":"068e9a4c4007fdd8969ff58c87f32ccb71a50bc0d7aec4a637fb9be303c5e418","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/AudioNodeGraph.js#0006:disconnectNode","exportIndex":6,"name":"disconnectNode","kind":"function","signature":"disconnectNode(graph, nodeId)","summary":"Disconnect all wires from a node."}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioNodeGraph.md","moduleTitle":"components/AudioNodeGraph","source":"editor/js/components/AudioNodeGraph.js","import":"/editor/js/components/AudioNodeGraph.js","sourceHash":"068e9a4c4007fdd8969ff58c87f32ccb71a50bc0d7aec4a637fb9be303c5e418","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/AudioNodeGraph.js#0007:fitToView","exportIndex":7,"name":"fitToView","kind":"function","signature":"fitToView(graph)","summary":"Fit view to show all nodes."}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioNodeGraph.md","moduleTitle":"components/AudioNodeGraph","source":"editor/js/components/AudioNodeGraph.js","import":"/editor/js/components/AudioNodeGraph.js","sourceHash":"068e9a4c4007fdd8969ff58c87f32ccb71a50bc0d7aec4a637fb9be303c5e418","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/AudioNodeGraph.js#0008:setNodeTypes","exportIndex":8,"name":"setNodeTypes","kind":"function","signature":"setNodeTypes(graph, types)","summary":"Register available node types."}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioNodeGraph.md","moduleTitle":"components/AudioNodeGraph","source":"editor/js/components/AudioNodeGraph.js","import":"/editor/js/components/AudioNodeGraph.js","sourceHash":"068e9a4c4007fdd8969ff58c87f32ccb71a50bc0d7aec4a637fb9be303c5e418","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/AudioNodeGraph.js#0009:selectNode","exportIndex":9,"name":"selectNode","kind":"function","signature":"selectNode(graph, nodeId)","summary":"Select a node."}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioNodeGraph.md","moduleTitle":"components/AudioNodeGraph","source":"editor/js/components/AudioNodeGraph.js","import":"/editor/js/components/AudioNodeGraph.js","sourceHash":"068e9a4c4007fdd8969ff58c87f32ccb71a50bc0d7aec4a637fb9be303c5e418","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/AudioNodeGraph.js#0010:exportPatch","exportIndex":10,"name":"exportPatch","kind":"function","signature":"exportPatch(graph)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioNodeGraph.md","moduleTitle":"components/AudioNodeGraph","source":"editor/js/components/AudioNodeGraph.js","import":"/editor/js/components/AudioNodeGraph.js","sourceHash":"068e9a4c4007fdd8969ff58c87f32ccb71a50bc0d7aec4a637fb9be303c5e418","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/AudioNodeGraph.js#0011:importPatch","exportIndex":11,"name":"importPatch","kind":"function","signature":"importPatch(graph, patch)","summary":"Import patch JSON into graph."}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioNodeGraph.md","moduleTitle":"components/AudioNodeGraph","source":"editor/js/components/AudioNodeGraph.js","import":"/editor/js/components/AudioNodeGraph.js","sourceHash":"068e9a4c4007fdd8969ff58c87f32ccb71a50bc0d7aec4a637fb9be303c5e418","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/AudioNodeGraph.js#0012:renderGraph","exportIndex":12,"name":"renderGraph","kind":"function","signature":"renderGraph(graph)","summary":"Render the entire graph."}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioNodeGraph.md","moduleTitle":"components/AudioNodeGraph","source":"editor/js/components/AudioNodeGraph.js","import":"/editor/js/components/AudioNodeGraph.js","sourceHash":"068e9a4c4007fdd8969ff58c87f32ccb71a50bc0d7aec4a637fb9be303c5e418","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/AudioNodeGraph.js#0013:startGraphAnimation","exportIndex":13,"name":"startGraphAnimation","kind":"function","signature":"startGraphAnimation(graph)","summary":"Start the animation loop for live waveform + wire animation."}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioNodeGraph.md","moduleTitle":"components/AudioNodeGraph","source":"editor/js/components/AudioNodeGraph.js","import":"/editor/js/components/AudioNodeGraph.js","sourceHash":"068e9a4c4007fdd8969ff58c87f32ccb71a50bc0d7aec4a637fb9be303c5e418","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/AudioNodeGraph.js#0014:stopGraphAnimation","exportIndex":14,"name":"stopGraphAnimation","kind":"function","signature":"stopGraphAnimation(graph)","summary":"Stop animation loop."}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioNodeGraph.md","moduleTitle":"components/AudioNodeGraph","source":"editor/js/components/AudioNodeGraph.js","import":"/editor/js/components/AudioNodeGraph.js","sourceHash":"068e9a4c4007fdd8969ff58c87f32ccb71a50bc0d7aec4a637fb9be303c5e418","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/AudioNodeGraph.js#0015:setNodeAnalysers","exportIndex":15,"name":"setNodeAnalysers","kind":"function","signature":"setNodeAnalysers(graph, analysers)","summary":"Set per-node analyser taps for live waveform display."}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioNodeGraph.md","moduleTitle":"components/AudioNodeGraph","source":"editor/js/components/AudioNodeGraph.js","import":"/editor/js/components/AudioNodeGraph.js","sourceHash":"068e9a4c4007fdd8969ff58c87f32ccb71a50bc0d7aec4a637fb9be303c5e418","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/AudioNodeGraph.js#0016:setMinimapContainer","exportIndex":16,"name":"setMinimapContainer","kind":"function","signature":"setMinimapContainer(graph, container)","summary":"Set an external container for the minimap (rendered separately from the main canvas)."}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioNodeGraph.md","moduleTitle":"components/AudioNodeGraph","source":"editor/js/components/AudioNodeGraph.js","import":"/editor/js/components/AudioNodeGraph.js","sourceHash":"068e9a4c4007fdd8969ff58c87f32ccb71a50bc0d7aec4a637fb9be303c5e418","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/AudioNodeGraph.js#0017:destroyAudioNodeGraph","exportIndex":17,"name":"destroyAudioNodeGraph","kind":"function","signature":"destroyAudioNodeGraph(graph)","summary":"Destroy the graph editor."}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioNodeInspector.md","moduleTitle":"components/AudioNodeInspector","source":"editor/js/components/AudioNodeInspector.js","import":"/editor/js/components/AudioNodeInspector.js","sourceHash":"4ffd492d0752e04b5141017fd58ce7cc6274fbd9d4f1acb61786bd3ecb41c1b9","subsystem":"editor","recordType":"api-module","id":"module:editor/js/components/AudioNodeInspector.js","title":"components/AudioNodeInspector","summary":"AudioNodeInspector.js - Right Panel for Selected Node Parameters Shows parameter knobs/sliders for the selected node. Uses SoundSchema when available for rich typed controls. Falls back to PARAM_HINTS for legacy/unschemaed node types.","exportCount":3}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioNodeInspector.md","moduleTitle":"components/AudioNodeInspector","source":"editor/js/components/AudioNodeInspector.js","import":"/editor/js/components/AudioNodeInspector.js","sourceHash":"4ffd492d0752e04b5141017fd58ce7cc6274fbd9d4f1acb61786bd3ecb41c1b9","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/AudioNodeInspector.js#0000:createAudioNodeInspector","exportIndex":0,"name":"createAudioNodeInspector","kind":"function","signature":"createAudioNodeInspector(container, onParamChanged)","summary":"Create the node inspector panel."}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioNodeInspector.md","moduleTitle":"components/AudioNodeInspector","source":"editor/js/components/AudioNodeInspector.js","import":"/editor/js/components/AudioNodeInspector.js","sourceHash":"4ffd492d0752e04b5141017fd58ce7cc6274fbd9d4f1acb61786bd3ecb41c1b9","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/AudioNodeInspector.js#0001:updateInspector","exportIndex":1,"name":"updateInspector","kind":"function","signature":"updateInspector(inspector, node)","summary":"Update the inspector to show a node's parameters."}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioNodeInspector.md","moduleTitle":"components/AudioNodeInspector","source":"editor/js/components/AudioNodeInspector.js","import":"/editor/js/components/AudioNodeInspector.js","sourceHash":"4ffd492d0752e04b5141017fd58ce7cc6274fbd9d4f1acb61786bd3ecb41c1b9","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/AudioNodeInspector.js#0002:destroyAudioNodeInspector","exportIndex":2,"name":"destroyAudioNodeInspector","kind":"function","signature":"destroyAudioNodeInspector(inspector)","summary":"Destroy the inspector."}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioNodePalette.md","moduleTitle":"components/AudioNodePalette","source":"editor/js/components/AudioNodePalette.js","import":"/editor/js/components/AudioNodePalette.js","sourceHash":"b4a519c1844fdc8843065d88def5692b13d3c903eee18f661f9749c6af9a7936","subsystem":"editor","recordType":"api-module","id":"module:editor/js/components/AudioNodePalette.js","title":"components/AudioNodePalette","summary":"AudioNodePalette.js - Side Panel with Node Types Lists all available node types grouped by category. Supports drag-to-create from palette onto the graph canvas.","exportCount":2}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioNodePalette.md","moduleTitle":"components/AudioNodePalette","source":"editor/js/components/AudioNodePalette.js","import":"/editor/js/components/AudioNodePalette.js","sourceHash":"b4a519c1844fdc8843065d88def5692b13d3c903eee18f661f9749c6af9a7936","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/AudioNodePalette.js#0000:createAudioNodePalette","exportIndex":0,"name":"createAudioNodePalette","kind":"function","signature":"createAudioNodePalette(container, onNodeDragStart)","summary":"Create the node palette panel."}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioNodePalette.md","moduleTitle":"components/AudioNodePalette","source":"editor/js/components/AudioNodePalette.js","import":"/editor/js/components/AudioNodePalette.js","sourceHash":"b4a519c1844fdc8843065d88def5692b13d3c903eee18f661f9749c6af9a7936","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/AudioNodePalette.js#0001:destroyAudioNodePalette","exportIndex":1,"name":"destroyAudioNodePalette","kind":"function","signature":"destroyAudioNodePalette(palette)","summary":"Destroy the palette."}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioPatchEditor.md","moduleTitle":"components/AudioPatchEditor","source":"editor/js/components/AudioPatchEditor.js","import":"/editor/js/components/AudioPatchEditor.js","sourceHash":"c44eea13f91ac176dc44ae0ae5828b867a2d11705ba76b91c601d531cbf02499","subsystem":"editor","recordType":"api-module","id":"module:editor/js/components/AudioPatchEditor.js","title":"components/AudioPatchEditor","summary":"AudioPatchEditor.js - Live Material Patch Editor for Sound Studio Reads real substance audio definitions from the SubstanceRegistry and lets you tweak them on the spot. Changes feed into the ProceduralPatches runtime override system. Edits persist with scene. Layout: Material list (compact cards) + Dedicated param panel below.","exportCount":4}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioPatchEditor.md","moduleTitle":"components/AudioPatchEditor","source":"editor/js/components/AudioPatchEditor.js","import":"/editor/js/components/AudioPatchEditor.js","sourceHash":"c44eea13f91ac176dc44ae0ae5828b867a2d11705ba76b91c601d531cbf02499","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/AudioPatchEditor.js#0000:createAudioPatchEditor","exportIndex":0,"name":"createAudioPatchEditor","kind":"function","signature":"createAudioPatchEditor(container, callbacks = {})","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioPatchEditor.md","moduleTitle":"components/AudioPatchEditor","source":"editor/js/components/AudioPatchEditor.js","import":"/editor/js/components/AudioPatchEditor.js","sourceHash":"c44eea13f91ac176dc44ae0ae5828b867a2d11705ba76b91c601d531cbf02499","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/AudioPatchEditor.js#0001:setPatchEditorAudioContext","exportIndex":1,"name":"setPatchEditorAudioContext","kind":"function","signature":"setPatchEditorAudioContext(editor, ctx)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioPatchEditor.md","moduleTitle":"components/AudioPatchEditor","source":"editor/js/components/AudioPatchEditor.js","import":"/editor/js/components/AudioPatchEditor.js","sourceHash":"c44eea13f91ac176dc44ae0ae5828b867a2d11705ba76b91c601d531cbf02499","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/AudioPatchEditor.js#0002:setPatchEditorApp","exportIndex":2,"name":"setPatchEditorApp","kind":"function","signature":"setPatchEditorApp(patchEditor, editorApp)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioPatchEditor.md","moduleTitle":"components/AudioPatchEditor","source":"editor/js/components/AudioPatchEditor.js","import":"/editor/js/components/AudioPatchEditor.js","sourceHash":"c44eea13f91ac176dc44ae0ae5828b867a2d11705ba76b91c601d531cbf02499","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/AudioPatchEditor.js#0003:destroyAudioPatchEditor","exportIndex":3,"name":"destroyAudioPatchEditor","kind":"function","signature":"destroyAudioPatchEditor(editor)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioPresetBrowser.md","moduleTitle":"components/AudioPresetBrowser","source":"editor/js/components/AudioPresetBrowser.js","import":"/editor/js/components/AudioPresetBrowser.js","sourceHash":"671b835d508541f9081ba61628e4970d90930454ec0a22e1cd0183db4d6f3fd1","subsystem":"editor","recordType":"api-module","id":"module:editor/js/components/AudioPresetBrowser.js","title":"components/AudioPresetBrowser","summary":"AudioPresetBrowser.js - Load/Save/Browse Patch Presets Browse built-in presets per substance, load/save patches as JSON.","exportCount":3}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioPresetBrowser.md","moduleTitle":"components/AudioPresetBrowser","source":"editor/js/components/AudioPresetBrowser.js","import":"/editor/js/components/AudioPresetBrowser.js","sourceHash":"671b835d508541f9081ba61628e4970d90930454ec0a22e1cd0183db4d6f3fd1","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/AudioPresetBrowser.js#0000:getPresetPatch","exportIndex":0,"name":"getPresetPatch","kind":"function","signature":"getPresetPatch(name)","summary":"Get a preset patch by name."}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioPresetBrowser.md","moduleTitle":"components/AudioPresetBrowser","source":"editor/js/components/AudioPresetBrowser.js","import":"/editor/js/components/AudioPresetBrowser.js","sourceHash":"671b835d508541f9081ba61628e4970d90930454ec0a22e1cd0183db4d6f3fd1","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/AudioPresetBrowser.js#0001:createAudioPresetBrowser","exportIndex":1,"name":"createAudioPresetBrowser","kind":"function","signature":"createAudioPresetBrowser(container, callbacks = {})","summary":"Create the preset browser panel."}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioPresetBrowser.md","moduleTitle":"components/AudioPresetBrowser","source":"editor/js/components/AudioPresetBrowser.js","import":"/editor/js/components/AudioPresetBrowser.js","sourceHash":"671b835d508541f9081ba61628e4970d90930454ec0a22e1cd0183db4d6f3fd1","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/AudioPresetBrowser.js#0002:destroyAudioPresetBrowser","exportIndex":2,"name":"destroyAudioPresetBrowser","kind":"function","signature":"destroyAudioPresetBrowser(browser)","summary":"Destroy the preset browser."}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioPreviewControls.md","moduleTitle":"components/AudioPreviewControls","source":"editor/js/components/AudioPreviewControls.js","import":"/editor/js/components/AudioPreviewControls.js","sourceHash":"beb0cc41520bc84678d17375eca4c1661b0a69be6d03fd428ec29b75cb76273f","subsystem":"editor","recordType":"api-module","id":"module:editor/js/components/AudioPreviewControls.js","title":"components/AudioPreviewControls","summary":"AudioPreviewControls.js - Professional Transport Bar Play/Pause/Stop with icons, elapsed time display, wave shape selector, volume control with arc knob, and waveform quick-switch.","exportCount":4}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioPreviewControls.md","moduleTitle":"components/AudioPreviewControls","source":"editor/js/components/AudioPreviewControls.js","import":"/editor/js/components/AudioPreviewControls.js","sourceHash":"beb0cc41520bc84678d17375eca4c1661b0a69be6d03fd428ec29b75cb76273f","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/AudioPreviewControls.js#0000:createAudioPreviewControls","exportIndex":0,"name":"createAudioPreviewControls","kind":"function","signature":"createAudioPreviewControls(container, callbacks = {})","summary":"Create the transport controls bar."}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioPreviewControls.md","moduleTitle":"components/AudioPreviewControls","source":"editor/js/components/AudioPreviewControls.js","import":"/editor/js/components/AudioPreviewControls.js","sourceHash":"beb0cc41520bc84678d17375eca4c1661b0a69be6d03fd428ec29b75cb76273f","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/AudioPreviewControls.js#0001:setPreviewPlaying","exportIndex":1,"name":"setPreviewPlaying","kind":"function","signature":"setPreviewPlaying(controls, playing)","summary":"Set playing state externally."}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioPreviewControls.md","moduleTitle":"components/AudioPreviewControls","source":"editor/js/components/AudioPreviewControls.js","import":"/editor/js/components/AudioPreviewControls.js","sourceHash":"beb0cc41520bc84678d17375eca4c1661b0a69be6d03fd428ec29b75cb76273f","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/AudioPreviewControls.js#0002:destroyAudioPreviewControls","exportIndex":2,"name":"destroyAudioPreviewControls","kind":"function","signature":"destroyAudioPreviewControls(controls)","summary":"Destroy preview controls."}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioPreviewControls.md","moduleTitle":"components/AudioPreviewControls","source":"editor/js/components/AudioPreviewControls.js","import":"/editor/js/components/AudioPreviewControls.js","sourceHash":"beb0cc41520bc84678d17375eca4c1661b0a69be6d03fd428ec29b75cb76273f","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/AudioPreviewControls.js#0003:connectAnalyser","exportIndex":3,"name":"connectAnalyser","kind":"function","signature":"connectAnalyser()","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioSignalAnalyzer.md","moduleTitle":"components/AudioSignalAnalyzer","source":"editor/js/components/AudioSignalAnalyzer.js","import":"/editor/js/components/AudioSignalAnalyzer.js","sourceHash":"449c3d3a53e86e85bef226b1f016e3b8a31b606514bea1d48dd52a9d377050bd","subsystem":"editor","recordType":"api-module","id":"module:editor/js/components/AudioSignalAnalyzer.js","title":"components/AudioSignalAnalyzer","summary":"AudioSignalAnalyzer.js - Professional Signal Analysis Panel Full-width bottom panel with switchable visualization modes: - Oscilloscope (time-domain waveform) - Spectrum Analyzer (FFT frequency bars, log scale) - Spectrogram (scrolling waterfall) Plus stereo VU/peak meter and freeze capability.","exportCount":4}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioSignalAnalyzer.md","moduleTitle":"components/AudioSignalAnalyzer","source":"editor/js/components/AudioSignalAnalyzer.js","import":"/editor/js/components/AudioSignalAnalyzer.js","sourceHash":"449c3d3a53e86e85bef226b1f016e3b8a31b606514bea1d48dd52a9d377050bd","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/AudioSignalAnalyzer.js#0000:createSignalAnalyzer","exportIndex":0,"name":"createSignalAnalyzer","kind":"function","signature":"createSignalAnalyzer(container)","summary":"Create the signal analyzer panel."}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioSignalAnalyzer.md","moduleTitle":"components/AudioSignalAnalyzer","source":"editor/js/components/AudioSignalAnalyzer.js","import":"/editor/js/components/AudioSignalAnalyzer.js","sourceHash":"449c3d3a53e86e85bef226b1f016e3b8a31b606514bea1d48dd52a9d377050bd","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/AudioSignalAnalyzer.js#0001:connectSignalAnalyzer","exportIndex":1,"name":"connectSignalAnalyzer","kind":"function","signature":"connectSignalAnalyzer(analyzer, analyserNode)","summary":"Connect an AnalyserNode for visualization."}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioSignalAnalyzer.md","moduleTitle":"components/AudioSignalAnalyzer","source":"editor/js/components/AudioSignalAnalyzer.js","import":"/editor/js/components/AudioSignalAnalyzer.js","sourceHash":"449c3d3a53e86e85bef226b1f016e3b8a31b606514bea1d48dd52a9d377050bd","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/AudioSignalAnalyzer.js#0002:disconnectSignalAnalyzer","exportIndex":2,"name":"disconnectSignalAnalyzer","kind":"function","signature":"disconnectSignalAnalyzer(analyzer)","summary":"Disconnect and stop rendering."}
{"schemaVersion":1,"modulePath":"editor/reference/components/AudioSignalAnalyzer.md","moduleTitle":"components/AudioSignalAnalyzer","source":"editor/js/components/AudioSignalAnalyzer.js","import":"/editor/js/components/AudioSignalAnalyzer.js","sourceHash":"449c3d3a53e86e85bef226b1f016e3b8a31b606514bea1d48dd52a9d377050bd","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/AudioSignalAnalyzer.js#0003:destroySignalAnalyzer","exportIndex":3,"name":"destroySignalAnalyzer","kind":"function","signature":"destroySignalAnalyzer(analyzer)","summary":"Destroy the analyzer."}
{"schemaVersion":1,"modulePath":"editor/reference/components/CollabPanel.md","moduleTitle":"components/CollabPanel","source":"editor/js/components/CollabPanel.js","import":"/editor/js/components/CollabPanel.js","sourceHash":"09963ebad00e9695a3af0be03441649c310a90d998ca19aa99557ced59be0413","subsystem":"editor","recordType":"api-module","id":"module:editor/js/components/CollabPanel.js","title":"components/CollabPanel","summary":"CollabPanel.js Collaboration sidebar panel for the editor.","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/components/CollabPanel.md","moduleTitle":"components/CollabPanel","source":"editor/js/components/CollabPanel.js","import":"/editor/js/components/CollabPanel.js","sourceHash":"09963ebad00e9695a3af0be03441649c310a90d998ca19aa99557ced59be0413","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/CollabPanel.js#0000:CollabPanel","exportIndex":0,"name":"CollabPanel","kind":"class","signature":"class CollabPanel","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/components/GraphPersistenceContracts.md","moduleTitle":"components/GraphPersistenceContracts","source":"editor/js/components/GraphPersistenceContracts.js","import":"/editor/js/components/GraphPersistenceContracts.js","sourceHash":"dfe90d08a06bc37381a730f6071b4345ac8ac66bdfb315b7f35aea9b520a781f","subsystem":"editor","recordType":"api-module","id":"module:editor/js/components/GraphPersistenceContracts.js","title":"components/GraphPersistenceContracts","summary":"Normalize legacy audio patches and validate the full candidate before use.","exportCount":6}
{"schemaVersion":1,"modulePath":"editor/reference/components/GraphPersistenceContracts.md","moduleTitle":"components/GraphPersistenceContracts","source":"editor/js/components/GraphPersistenceContracts.js","import":"/editor/js/components/GraphPersistenceContracts.js","sourceHash":"dfe90d08a06bc37381a730f6071b4345ac8ac66bdfb315b7f35aea9b520a781f","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/GraphPersistenceContracts.js#0000:UnsupportedGraphVersionError","exportIndex":0,"name":"UnsupportedGraphVersionError","kind":"class","signature":"class UnsupportedGraphVersionError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/components/GraphPersistenceContracts.md","moduleTitle":"components/GraphPersistenceContracts","source":"editor/js/components/GraphPersistenceContracts.js","import":"/editor/js/components/GraphPersistenceContracts.js","sourceHash":"dfe90d08a06bc37381a730f6071b4345ac8ac66bdfb315b7f35aea9b520a781f","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/GraphPersistenceContracts.js#0001:prepareAudioGraphDocument","exportIndex":1,"name":"prepareAudioGraphDocument","kind":"function","signature":"prepareAudioGraphDocument(input)","summary":"Normalize legacy audio patches and validate the full candidate before use."}
{"schemaVersion":1,"modulePath":"editor/reference/components/GraphPersistenceContracts.md","moduleTitle":"components/GraphPersistenceContracts","source":"editor/js/components/GraphPersistenceContracts.js","import":"/editor/js/components/GraphPersistenceContracts.js","sourceHash":"dfe90d08a06bc37381a730f6071b4345ac8ac66bdfb315b7f35aea9b520a781f","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/GraphPersistenceContracts.js#0002:prepareMaterialGraphDocument","exportIndex":2,"name":"prepareMaterialGraphDocument","kind":"function","signature":"prepareMaterialGraphDocument(input, { allowedNodeTypes = null } = {})","summary":"Normalize legacy material graphs and reject dangling connections/future schemas."}
{"schemaVersion":1,"modulePath":"editor/reference/components/GraphPersistenceContracts.md","moduleTitle":"components/GraphPersistenceContracts","source":"editor/js/components/GraphPersistenceContracts.js","import":"/editor/js/components/GraphPersistenceContracts.js","sourceHash":"dfe90d08a06bc37381a730f6071b4345ac8ac66bdfb315b7f35aea9b520a781f","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/GraphPersistenceContracts.js#0003:GRAPH_SCHEMA_VERSION","exportIndex":3,"name":"GRAPH_SCHEMA_VERSION","kind":"constant","signature":"GRAPH_SCHEMA_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/components/GraphPersistenceContracts.md","moduleTitle":"components/GraphPersistenceContracts","source":"editor/js/components/GraphPersistenceContracts.js","import":"/editor/js/components/GraphPersistenceContracts.js","sourceHash":"dfe90d08a06bc37381a730f6071b4345ac8ac66bdfb315b7f35aea9b520a781f","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/GraphPersistenceContracts.js#0004:AUDIO_GRAPH_SCHEMA","exportIndex":4,"name":"AUDIO_GRAPH_SCHEMA","kind":"constant","signature":"AUDIO_GRAPH_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/components/GraphPersistenceContracts.md","moduleTitle":"components/GraphPersistenceContracts","source":"editor/js/components/GraphPersistenceContracts.js","import":"/editor/js/components/GraphPersistenceContracts.js","sourceHash":"dfe90d08a06bc37381a730f6071b4345ac8ac66bdfb315b7f35aea9b520a781f","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/GraphPersistenceContracts.js#0005:MATERIAL_GRAPH_SCHEMA","exportIndex":5,"name":"MATERIAL_GRAPH_SCHEMA","kind":"constant","signature":"MATERIAL_GRAPH_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/components/MaterialNodeGraph.md","moduleTitle":"components/MaterialNodeGraph","source":"editor/js/components/MaterialNodeGraph.js","import":"/editor/js/components/MaterialNodeGraph.js","sourceHash":"932d345d001af2dbb7eeab81b266133893fcbb8e576db5620ffe71298a89284a","subsystem":"editor","recordType":"api-module","id":"module:editor/js/components/MaterialNodeGraph.js","title":"components/MaterialNodeGraph","summary":"MaterialNodeGraph.js - Canvas-based node graph editor for materials Features: pan/zoom, node drag, port connections, context menu to add nodes, node deletion, bezier connection rendering, port type coloring.","exportCount":2}
{"schemaVersion":1,"modulePath":"editor/reference/components/MaterialNodeGraph.md","moduleTitle":"components/MaterialNodeGraph","source":"editor/js/components/MaterialNodeGraph.js","import":"/editor/js/components/MaterialNodeGraph.js","sourceHash":"932d345d001af2dbb7eeab81b266133893fcbb8e576db5620ffe71298a89284a","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/MaterialNodeGraph.js#0000:createNodeGraph","exportIndex":0,"name":"createNodeGraph","kind":"function","signature":"createNodeGraph(container, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/components/MaterialNodeGraph.md","moduleTitle":"components/MaterialNodeGraph","source":"editor/js/components/MaterialNodeGraph.js","import":"/editor/js/components/MaterialNodeGraph.js","sourceHash":"932d345d001af2dbb7eeab81b266133893fcbb8e576db5620ffe71298a89284a","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/MaterialNodeGraph.js#0001:evaluateGraphData","exportIndex":1,"name":"evaluateGraphData","kind":"function","signature":"evaluateGraphData(graphData)","summary":"Standalone evaluator for raw graph data (no canvas UI needed). Used by headless preview animation."}
{"schemaVersion":1,"modulePath":"editor/reference/components/MaterialNodePresets.md","moduleTitle":"components/MaterialNodePresets","source":"editor/js/components/MaterialNodePresets.js","import":"/editor/js/components/MaterialNodePresets.js","sourceHash":"405e4ab4e6a46983ec88bad2d34b33a53c8ff5b80de54bce26794a8956a03c3c","subsystem":"editor","recordType":"api-module","id":"module:editor/js/components/MaterialNodePresets.js","title":"components/MaterialNodePresets","summary":"MaterialNodePresets.js - Pre-built node graph recipes for all built-in materials Each preset is a valid node graph using only standard MaterialNodeTypes nodes. These serve as demos showing users how to wire nodes to create materials. Graph structure: { nodes: [...], connections: [...], view: { panX, panY, zoom } } Node: { id, type, x, y, params } Connection: { fromNode, fromPort, toNode, toPort }","exportCount":6}
{"schemaVersion":1,"modulePath":"editor/reference/components/MaterialNodePresets.md","moduleTitle":"components/MaterialNodePresets","source":"editor/js/components/MaterialNodePresets.js","import":"/editor/js/components/MaterialNodePresets.js","sourceHash":"405e4ab4e6a46983ec88bad2d34b33a53c8ff5b80de54bce26794a8956a03c3c","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/MaterialNodePresets.js#0000:getPresetGraph","exportIndex":0,"name":"getPresetGraph","kind":"function","signature":"getPresetGraph(materialId)","summary":"Get the preset node graph for a built-in material."}
{"schemaVersion":1,"modulePath":"editor/reference/components/MaterialNodePresets.md","moduleTitle":"components/MaterialNodePresets","source":"editor/js/components/MaterialNodePresets.js","import":"/editor/js/components/MaterialNodePresets.js","sourceHash":"405e4ab4e6a46983ec88bad2d34b33a53c8ff5b80de54bce26794a8956a03c3c","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/MaterialNodePresets.js#0001:hasPresetGraph","exportIndex":1,"name":"hasPresetGraph","kind":"function","signature":"hasPresetGraph(materialId)","summary":"Check if a material has a preset graph."}
{"schemaVersion":1,"modulePath":"editor/reference/components/MaterialNodePresets.md","moduleTitle":"components/MaterialNodePresets","source":"editor/js/components/MaterialNodePresets.js","import":"/editor/js/components/MaterialNodePresets.js","sourceHash":"405e4ab4e6a46983ec88bad2d34b33a53c8ff5b80de54bce26794a8956a03c3c","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/MaterialNodePresets.js#0002:listPresetIds","exportIndex":2,"name":"listPresetIds","kind":"function","signature":"listPresetIds()","summary":"List all material IDs that have preset graphs."}
{"schemaVersion":1,"modulePath":"editor/reference/components/MaterialNodePresets.md","moduleTitle":"components/MaterialNodePresets","source":"editor/js/components/MaterialNodePresets.js","import":"/editor/js/components/MaterialNodePresets.js","sourceHash":"405e4ab4e6a46983ec88bad2d34b33a53c8ff5b80de54bce26794a8956a03c3c","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/MaterialNodePresets.js#0003:listSubstancePresetIds","exportIndex":3,"name":"listSubstancePresetIds","kind":"function","signature":"listSubstancePresetIds()","summary":"Get all substance-linked preset IDs."}
{"schemaVersion":1,"modulePath":"editor/reference/components/MaterialNodePresets.md","moduleTitle":"components/MaterialNodePresets","source":"editor/js/components/MaterialNodePresets.js","import":"/editor/js/components/MaterialNodePresets.js","sourceHash":"405e4ab4e6a46983ec88bad2d34b33a53c8ff5b80de54bce26794a8956a03c3c","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/MaterialNodePresets.js#0004:listAnimatedPresetIds","exportIndex":4,"name":"listAnimatedPresetIds","kind":"function","signature":"listAnimatedPresetIds()","summary":"Get all animated effect preset IDs (lava, water, hologram, etc.)."}
{"schemaVersion":1,"modulePath":"editor/reference/components/MaterialNodePresets.md","moduleTitle":"components/MaterialNodePresets","source":"editor/js/components/MaterialNodePresets.js","import":"/editor/js/components/MaterialNodePresets.js","sourceHash":"405e4ab4e6a46983ec88bad2d34b33a53c8ff5b80de54bce26794a8956a03c3c","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/MaterialNodePresets.js#0005:NODE_GRAPH_PRESETS","exportIndex":5,"name":"NODE_GRAPH_PRESETS","kind":"constant","signature":"NODE_GRAPH_PRESETS","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/components/MaterialNodeTypes.md","moduleTitle":"components/MaterialNodeTypes","source":"editor/js/components/MaterialNodeTypes.js","import":"/editor/js/components/MaterialNodeTypes.js","sourceHash":"ffda7220fade1a0c479119514992dd67d162e4e502c968a4ec4ccf10c150693c","subsystem":"editor","recordType":"api-module","id":"module:editor/js/components/MaterialNodeTypes.js","title":"components/MaterialNodeTypes","summary":"MaterialNodeTypes.js - Node type definitions for the material graph editor Modeled after Substance Designer / Material Maker / Unreal Material Editor. Each node type defines inputs, outputs, defaults, and an evaluate function. Port types: 'float', 'vec2', 'vec3', 'vec4', 'color', 'texture'","exportCount":4}
{"schemaVersion":1,"modulePath":"editor/reference/components/MaterialNodeTypes.md","moduleTitle":"components/MaterialNodeTypes","source":"editor/js/components/MaterialNodeTypes.js","import":"/editor/js/components/MaterialNodeTypes.js","sourceHash":"ffda7220fade1a0c479119514992dd67d162e4e502c968a4ec4ccf10c150693c","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/MaterialNodeTypes.js#0000:defaultForType","exportIndex":0,"name":"defaultForType","kind":"function","signature":"defaultForType(type)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/components/MaterialNodeTypes.md","moduleTitle":"components/MaterialNodeTypes","source":"editor/js/components/MaterialNodeTypes.js","import":"/editor/js/components/MaterialNodeTypes.js","sourceHash":"ffda7220fade1a0c479119514992dd67d162e4e502c968a4ec4ccf10c150693c","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/MaterialNodeTypes.js#0001:PORT_COLORS","exportIndex":1,"name":"PORT_COLORS","kind":"constant","signature":"PORT_COLORS","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/components/MaterialNodeTypes.md","moduleTitle":"components/MaterialNodeTypes","source":"editor/js/components/MaterialNodeTypes.js","import":"/editor/js/components/MaterialNodeTypes.js","sourceHash":"ffda7220fade1a0c479119514992dd67d162e4e502c968a4ec4ccf10c150693c","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/MaterialNodeTypes.js#0002:NODE_CATEGORIES","exportIndex":2,"name":"NODE_CATEGORIES","kind":"constant","signature":"NODE_CATEGORIES","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/components/MaterialNodeTypes.md","moduleTitle":"components/MaterialNodeTypes","source":"editor/js/components/MaterialNodeTypes.js","import":"/editor/js/components/MaterialNodeTypes.js","sourceHash":"ffda7220fade1a0c479119514992dd67d162e4e502c968a4ec4ccf10c150693c","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/MaterialNodeTypes.js#0003:NODE_TYPES","exportIndex":3,"name":"NODE_TYPES","kind":"constant","signature":"NODE_TYPES","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/components/MaterialPanel.md","moduleTitle":"components/MaterialPanel","source":"editor/js/components/MaterialPanel.js","import":"/editor/js/components/MaterialPanel.js","sourceHash":"93e49cf411fb1158505c830c65d3798296fa5a5d0c3da4f0133dc7e396767516","subsystem":"editor","recordType":"api-module","id":"module:editor/js/components/MaterialPanel.js","title":"components/MaterialPanel","summary":"MaterialPanel.js - Material Studio Panel Composes Library + PBR Inspector + 3D Preview into an overlay panel. Follows the Sound Studio (AudioEditorPanel.js) architecture.","exportCount":2}
{"schemaVersion":1,"modulePath":"editor/reference/components/MaterialPanel.md","moduleTitle":"components/MaterialPanel","source":"editor/js/components/MaterialPanel.js","import":"/editor/js/components/MaterialPanel.js","sourceHash":"93e49cf411fb1158505c830c65d3798296fa5a5d0c3da4f0133dc7e396767516","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/MaterialPanel.js#0000:createMaterialPanel","exportIndex":0,"name":"createMaterialPanel","kind":"function","signature":"createMaterialPanel(container, options = {})","summary":"Create the material panel contents inside the overlay body."}
{"schemaVersion":1,"modulePath":"editor/reference/components/MaterialPanel.md","moduleTitle":"components/MaterialPanel","source":"editor/js/components/MaterialPanel.js","import":"/editor/js/components/MaterialPanel.js","sourceHash":"93e49cf411fb1158505c830c65d3798296fa5a5d0c3da4f0133dc7e396767516","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/MaterialPanel.js#0001:destroyMaterialPanel","exportIndex":1,"name":"destroyMaterialPanel","kind":"function","signature":"destroyMaterialPanel(panel)","summary":"Destroy the material panel."}
{"schemaVersion":1,"modulePath":"editor/reference/components/MaterialPatchGraphs.md","moduleTitle":"components/MaterialPatchGraphs","source":"editor/js/components/MaterialPatchGraphs.js","import":"/editor/js/components/MaterialPatchGraphs.js","sourceHash":"a2e25f86d21e074d5b362db7899a1e86fd457cda9e11153a006451f9044b0078","subsystem":"editor","recordType":"api-module","id":"module:editor/js/components/MaterialPatchGraphs.js","title":"components/MaterialPatchGraphs","summary":"MaterialPatchGraphs.js - High-level node graph representations for ProceduralPatches.js These graphs provide design-facing topology for each material family. They intentionally summarize synthesis layers so editor UX stays readable even when runtime patches contain deeper stochastic/detail layers.","exportCount":2}
{"schemaVersion":1,"modulePath":"editor/reference/components/MaterialPatchGraphs.md","moduleTitle":"components/MaterialPatchGraphs","source":"editor/js/components/MaterialPatchGraphs.js","import":"/editor/js/components/MaterialPatchGraphs.js","sourceHash":"a2e25f86d21e074d5b362db7899a1e86fd457cda9e11153a006451f9044b0078","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/MaterialPatchGraphs.js#0000:getMaterialGraph","exportIndex":0,"name":"getMaterialGraph","kind":"function","signature":"getMaterialGraph(substanceId)","summary":"Get the node graph for a substance. Returns a deep copy so edits don't mutate the template."}
{"schemaVersion":1,"modulePath":"editor/reference/components/MaterialPatchGraphs.md","moduleTitle":"components/MaterialPatchGraphs","source":"editor/js/components/MaterialPatchGraphs.js","import":"/editor/js/components/MaterialPatchGraphs.js","sourceHash":"a2e25f86d21e074d5b362db7899a1e86fd457cda9e11153a006451f9044b0078","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/MaterialPatchGraphs.js#0001:MATERIAL_GRAPHS","exportIndex":1,"name":"MATERIAL_GRAPHS","kind":"constant","signature":"MATERIAL_GRAPHS","summary":"Maps substance IDs to editor-facing graph representations. Graphs are intentionally compact abstractions of runtime synthesis."}
{"schemaVersion":1,"modulePath":"editor/reference/components/MaterialStrip.md","moduleTitle":"components/MaterialStrip","source":"editor/js/components/MaterialStrip.js","import":"/editor/js/components/MaterialStrip.js","sourceHash":"1fba3ca727861ab9302f38016464c371ad0d5a3fec91c6cf81662ae553608ac4","subsystem":"editor","recordType":"api-module","id":"module:editor/js/components/MaterialStrip.js","title":"components/MaterialStrip","summary":"MaterialStrip.js - Compact material browser for bottom panel Horizontal scrollable strip of material thumbnails with preview sidebar. Designed to sit in the bottom panel alongside Console.","exportCount":2}
{"schemaVersion":1,"modulePath":"editor/reference/components/MaterialStrip.md","moduleTitle":"components/MaterialStrip","source":"editor/js/components/MaterialStrip.js","import":"/editor/js/components/MaterialStrip.js","sourceHash":"1fba3ca727861ab9302f38016464c371ad0d5a3fec91c6cf81662ae553608ac4","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/MaterialStrip.js#0000:createMaterialStrip","exportIndex":0,"name":"createMaterialStrip","kind":"function","signature":"createMaterialStrip(container, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/components/MaterialStrip.md","moduleTitle":"components/MaterialStrip","source":"editor/js/components/MaterialStrip.js","import":"/editor/js/components/MaterialStrip.js","sourceHash":"1fba3ca727861ab9302f38016464c371ad0d5a3fec91c6cf81662ae553608ac4","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/MaterialStrip.js#0001:destroyMaterialStrip","exportIndex":1,"name":"destroyMaterialStrip","kind":"function","signature":"destroyMaterialStrip(state)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/components/ParticleEffectControls.md","moduleTitle":"components/ParticleEffectControls","source":"editor/js/components/ParticleEffectControls.js","import":"/editor/js/components/ParticleEffectControls.js","sourceHash":"d61958379d6ce826791ccbb797e37abc969474e17c238f0e42260ddb48902daa","subsystem":"editor","recordType":"api-module","id":"module:editor/js/components/ParticleEffectControls.js","title":"components/ParticleEffectControls","summary":"ParticleEffectControls.js - Editor UI Controls for Custom Particle Effects Adds controls to the particle emitter inspector panel: - Checkbox to enable custom effects - Effect selector dropdown - Edit button to open shader editor - Parameter sliders for effect params","exportCount":2}
{"schemaVersion":1,"modulePath":"editor/reference/components/ParticleEffectControls.md","moduleTitle":"components/ParticleEffectControls","source":"editor/js/components/ParticleEffectControls.js","import":"/editor/js/components/ParticleEffectControls.js","sourceHash":"d61958379d6ce826791ccbb797e37abc969474e17c238f0e42260ddb48902daa","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/ParticleEffectControls.js#0000:ParticleEffectControls","exportIndex":0,"name":"ParticleEffectControls","kind":"class","signature":"class ParticleEffectControls","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/components/ParticleEffectControls.md","moduleTitle":"components/ParticleEffectControls","source":"editor/js/components/ParticleEffectControls.js","import":"/editor/js/components/ParticleEffectControls.js","sourceHash":"d61958379d6ce826791ccbb797e37abc969474e17c238f0e42260ddb48902daa","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/ParticleEffectControls.js#0001:createParticleEffectControls","exportIndex":1,"name":"createParticleEffectControls","kind":"function","signature":"createParticleEffectControls(options = {})","summary":"Create particle effect controls"}
{"schemaVersion":1,"modulePath":"editor/reference/components/ShaderCodeEditor.md","moduleTitle":"components/ShaderCodeEditor","source":"editor/js/components/ShaderCodeEditor.js","import":"/editor/js/components/ShaderCodeEditor.js","sourceHash":"8980f7408ced3e545163c0d35a4cc8fa6321b5274d5cb7e6df4d69b362e1a505","subsystem":"editor","recordType":"api-module","id":"module:editor/js/components/ShaderCodeEditor.js","title":"components/ShaderCodeEditor","summary":"ShaderCodeEditor.js - In-Editor WGSL Code Editor Popup A notepad-style popup for editing custom particle effect shaders. Features: - Syntax highlighting for WGSL - Real-time validation - Live preview - Template snippets - Error display with line numbers","exportCount":2}
{"schemaVersion":1,"modulePath":"editor/reference/components/ShaderCodeEditor.md","moduleTitle":"components/ShaderCodeEditor","source":"editor/js/components/ShaderCodeEditor.js","import":"/editor/js/components/ShaderCodeEditor.js","sourceHash":"8980f7408ced3e545163c0d35a4cc8fa6321b5274d5cb7e6df4d69b362e1a505","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/ShaderCodeEditor.js#0000:ShaderCodeEditor","exportIndex":0,"name":"ShaderCodeEditor","kind":"class","signature":"class ShaderCodeEditor","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/components/ShaderCodeEditor.md","moduleTitle":"components/ShaderCodeEditor","source":"editor/js/components/ShaderCodeEditor.js","import":"/editor/js/components/ShaderCodeEditor.js","sourceHash":"8980f7408ced3e545163c0d35a4cc8fa6321b5274d5cb7e6df4d69b362e1a505","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/components/ShaderCodeEditor.js#0001:openShaderCodeEditor","exportIndex":1,"name":"openShaderCodeEditor","kind":"function","signature":"openShaderCodeEditor(effect, options = {})","summary":"Create and open a shader code editor"}
{"schemaVersion":1,"modulePath":"editor/reference/loader-guard.md","moduleTitle":"loader-guard","source":"editor/js/loader-guard.js","import":"/editor/js/loader-guard.js","sourceHash":"8eabd08df80c70f13ef747bd81298c062fa46bca6f82479449db92ac63a2fce8","subsystem":"editor","recordType":"api-module","id":"module:editor/js/loader-guard.js","title":"loader-guard","summary":"Keep the loading veil's context-menu suppression CSP-safe and scoped to the short interval in which the veil can actually receive pointer input.","exportCount":0}
{"schemaVersion":1,"modulePath":"editor/reference/main.md","moduleTitle":"main","source":"editor/js/main.js","import":"/editor/js/main.js","sourceHash":"9424b5ca76dc78cc0d7368a15cc95591c98ada8218d8dd750bc15eb446826b51","subsystem":"editor","recordType":"api-module","id":"module:editor/js/main.js","title":"main","summary":"Main entry point for Game Editor","exportCount":0}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ColliderGenerators.md","moduleTitle":"modules/ColliderGenerators","source":"editor/js/modules/ColliderGenerators.js","import":"/editor/js/modules/ColliderGenerators.js","sourceHash":"983951e3576607473bc3f1f0e5062e9012c7d3326e685888ece3077e14576950","subsystem":"editor","recordType":"api-module","id":"module:editor/js/modules/ColliderGenerators.js","title":"modules/ColliderGenerators","summary":"ColliderGenerators.js - Procedural collider generation utilities Extracted from EditorPhysics.js for modularity Includes: - SDF-based collider generation with anti-aliasing - Line/curve to voxel colliders - Network-based colliders (trees, tunnels, pipes) - Noise-based procedural colliders - Spatial hash for collider queries","exportCount":32}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ColliderGenerators.md","moduleTitle":"modules/ColliderGenerators","source":"editor/js/modules/ColliderGenerators.js","import":"/editor/js/modules/ColliderGenerators.js","sourceHash":"983951e3576607473bc3f1f0e5062e9012c7d3326e685888ece3077e14576950","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ColliderGenerators.js#0000:generateCollidersFromSDF","exportIndex":0,"name":"generateCollidersFromSDF","kind":"function","signature":"generateCollidersFromSDF(sdfFunc, bounds, resolution = 10, options = {})","summary":"Generate colliders from ANY SDF function with anti-aliasing"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ColliderGenerators.md","moduleTitle":"modules/ColliderGenerators","source":"editor/js/modules/ColliderGenerators.js","import":"/editor/js/modules/ColliderGenerators.js","sourceHash":"983951e3576607473bc3f1f0e5062e9012c7d3326e685888ece3077e14576950","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ColliderGenerators.js#0001:generateConvexMeshFromSDF","exportIndex":1,"name":"generateConvexMeshFromSDF","kind":"function","signature":"generateConvexMeshFromSDF(sdfFunc, bounds, resolution = 16)","summary":"Generate a CONVEX MESH collider from SDF"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ColliderGenerators.md","moduleTitle":"modules/ColliderGenerators","source":"editor/js/modules/ColliderGenerators.js","import":"/editor/js/modules/ColliderGenerators.js","sourceHash":"983951e3576607473bc3f1f0e5062e9012c7d3326e685888ece3077e14576950","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ColliderGenerators.js#0002:colliderVertexHash","exportIndex":2,"name":"colliderVertexHash","kind":"function","signature":"colliderVertexHash(vertices)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ColliderGenerators.md","moduleTitle":"modules/ColliderGenerators","source":"editor/js/modules/ColliderGenerators.js","import":"/editor/js/modules/ColliderGenerators.js","sourceHash":"983951e3576607473bc3f1f0e5062e9012c7d3326e685888ece3077e14576950","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ColliderGenerators.js#0003:generateHollowTorusColliders","exportIndex":3,"name":"generateHollowTorusColliders","kind":"function","signature":"generateHollowTorusColliders(majorRadius, minorRadius, wallThickness, resolution = 12)","summary":"Generate hollow torus colliders"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ColliderGenerators.md","moduleTitle":"modules/ColliderGenerators","source":"editor/js/modules/ColliderGenerators.js","import":"/editor/js/modules/ColliderGenerators.js","sourceHash":"983951e3576607473bc3f1f0e5062e9012c7d3326e685888ece3077e14576950","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ColliderGenerators.js#0004:generateHollowConeColliders","exportIndex":4,"name":"generateHollowConeColliders","kind":"function","signature":"generateHollowConeColliders(angle, height, wallThickness, resolution = 12)","summary":"Generate hollow cone/funnel colliders"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ColliderGenerators.md","moduleTitle":"modules/ColliderGenerators","source":"editor/js/modules/ColliderGenerators.js","import":"/editor/js/modules/ColliderGenerators.js","sourceHash":"983951e3576607473bc3f1f0e5062e9012c7d3326e685888ece3077e14576950","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ColliderGenerators.js#0005:generateLineColliders","exportIndex":5,"name":"generateLineColliders","kind":"function","signature":"generateLineColliders(start, end, radius, resolution = 10)","summary":"Generate voxel colliders along a line segment"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ColliderGenerators.md","moduleTitle":"modules/ColliderGenerators","source":"editor/js/modules/ColliderGenerators.js","import":"/editor/js/modules/ColliderGenerators.js","sourceHash":"983951e3576607473bc3f1f0e5062e9012c7d3326e685888ece3077e14576950","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ColliderGenerators.js#0006:generateCurveColliders","exportIndex":6,"name":"generateCurveColliders","kind":"function","signature":"generateCurveColliders(points, radius, resolution = 10, segments = 20)","summary":"Generate voxel colliders along a curve"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ColliderGenerators.md","moduleTitle":"modules/ColliderGenerators","source":"editor/js/modules/ColliderGenerators.js","import":"/editor/js/modules/ColliderGenerators.js","sourceHash":"983951e3576607473bc3f1f0e5062e9012c7d3326e685888ece3077e14576950","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ColliderGenerators.js#0007:generateCollidersFromNetwork","exportIndex":7,"name":"generateCollidersFromNetwork","kind":"function","signature":"generateCollidersFromNetwork(network, resolution = 8)","summary":"Generate colliders from a LineNetwork"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ColliderGenerators.md","moduleTitle":"modules/ColliderGenerators","source":"editor/js/modules/ColliderGenerators.js","import":"/editor/js/modules/ColliderGenerators.js","sourceHash":"983951e3576607473bc3f1f0e5062e9012c7d3326e685888ece3077e14576950","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ColliderGenerators.js#0008:generateTreeColliders","exportIndex":8,"name":"generateTreeColliders","kind":"function","signature":"generateTreeColliders(options = {})","summary":"Generate tree-shaped colliders"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ColliderGenerators.md","moduleTitle":"modules/ColliderGenerators","source":"editor/js/modules/ColliderGenerators.js","import":"/editor/js/modules/ColliderGenerators.js","sourceHash":"983951e3576607473bc3f1f0e5062e9012c7d3326e685888ece3077e14576950","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ColliderGenerators.js#0009:generateRootColliders","exportIndex":9,"name":"generateRootColliders","kind":"function","signature":"generateRootColliders(options = {})","summary":"Generate root system colliders"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ColliderGenerators.md","moduleTitle":"modules/ColliderGenerators","source":"editor/js/modules/ColliderGenerators.js","import":"/editor/js/modules/ColliderGenerators.js","sourceHash":"983951e3576607473bc3f1f0e5062e9012c7d3326e685888ece3077e14576950","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ColliderGenerators.js#0010:generateTunnelColliders","exportIndex":10,"name":"generateTunnelColliders","kind":"function","signature":"generateTunnelColliders(options = {})","summary":"Generate tunnel/cave colliders"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ColliderGenerators.md","moduleTitle":"modules/ColliderGenerators","source":"editor/js/modules/ColliderGenerators.js","import":"/editor/js/modules/ColliderGenerators.js","sourceHash":"983951e3576607473bc3f1f0e5062e9012c7d3326e685888ece3077e14576950","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ColliderGenerators.js#0011:generatePipeNetworkColliders","exportIndex":11,"name":"generatePipeNetworkColliders","kind":"function","signature":"generatePipeNetworkColliders(nodes, connections, resolution = 8)","summary":"Generate custom pipe/beam network colliders"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ColliderGenerators.md","moduleTitle":"modules/ColliderGenerators","source":"editor/js/modules/ColliderGenerators.js","import":"/editor/js/modules/ColliderGenerators.js","sourceHash":"983951e3576607473bc3f1f0e5062e9012c7d3326e685888ece3077e14576950","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ColliderGenerators.js#0012:generateBezierColliders","exportIndex":12,"name":"generateBezierColliders","kind":"function","signature":"generateBezierColliders(p0, p1, p2, p3, radius, resolution = 10)","summary":"Generate colliders along a cubic Bezier curve"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ColliderGenerators.md","moduleTitle":"modules/ColliderGenerators","source":"editor/js/modules/ColliderGenerators.js","import":"/editor/js/modules/ColliderGenerators.js","sourceHash":"983951e3576607473bc3f1f0e5062e9012c7d3326e685888ece3077e14576950","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ColliderGenerators.js#0013:generateSplineColliders","exportIndex":13,"name":"generateSplineColliders","kind":"function","signature":"generateSplineColliders(controlPoints, radius, resolution = 10)","summary":"Generate colliders along a Bezier spline"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ColliderGenerators.md","moduleTitle":"modules/ColliderGenerators","source":"editor/js/modules/ColliderGenerators.js","import":"/editor/js/modules/ColliderGenerators.js","sourceHash":"983951e3576607473bc3f1f0e5062e9012c7d3326e685888ece3077e14576950","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ColliderGenerators.js#0014:testSphereSphere","exportIndex":14,"name":"testSphereSphere","kind":"function","signature":"testSphereSphere(c1, r1, c2, r2)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ColliderGenerators.md","moduleTitle":"modules/ColliderGenerators","source":"editor/js/modules/ColliderGenerators.js","import":"/editor/js/modules/ColliderGenerators.js","sourceHash":"983951e3576607473bc3f1f0e5062e9012c7d3326e685888ece3077e14576950","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ColliderGenerators.js#0015:testAABBAABB","exportIndex":15,"name":"testAABBAABB","kind":"function","signature":"testAABBAABB(min1, max1, min2, max2)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ColliderGenerators.md","moduleTitle":"modules/ColliderGenerators","source":"editor/js/modules/ColliderGenerators.js","import":"/editor/js/modules/ColliderGenerators.js","sourceHash":"983951e3576607473bc3f1f0e5062e9012c7d3326e685888ece3077e14576950","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ColliderGenerators.js#0016:testSphereAABB","exportIndex":16,"name":"testSphereAABB","kind":"function","signature":"testSphereAABB(center, radius, aabbMin, aabbMax)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ColliderGenerators.md","moduleTitle":"modules/ColliderGenerators","source":"editor/js/modules/ColliderGenerators.js","import":"/editor/js/modules/ColliderGenerators.js","sourceHash":"983951e3576607473bc3f1f0e5062e9012c7d3326e685888ece3077e14576950","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ColliderGenerators.js#0017:computeColliderAABB","exportIndex":17,"name":"computeColliderAABB","kind":"function","signature":"computeColliderAABB(colliders)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ColliderGenerators.md","moduleTitle":"modules/ColliderGenerators","source":"editor/js/modules/ColliderGenerators.js","import":"/editor/js/modules/ColliderGenerators.js","sourceHash":"983951e3576607473bc3f1f0e5062e9012c7d3326e685888ece3077e14576950","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ColliderGenerators.js#0018:generateNoisyColliders","exportIndex":18,"name":"generateNoisyColliders","kind":"function","signature":"generateNoisyColliders(baseSdf, bounds, options = {})","summary":"Generate rocky/organic colliders using noise-displaced SDF"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ColliderGenerators.md","moduleTitle":"modules/ColliderGenerators","source":"editor/js/modules/ColliderGenerators.js","import":"/editor/js/modules/ColliderGenerators.js","sourceHash":"983951e3576607473bc3f1f0e5062e9012c7d3326e685888ece3077e14576950","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ColliderGenerators.js#0019:generateRockySphereColliders","exportIndex":19,"name":"generateRockySphereColliders","kind":"function","signature":"generateRockySphereColliders(center, radius, roughness = 0.15, resolution = 12)","summary":"Generate rocky sphere collider"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ColliderGenerators.md","moduleTitle":"modules/ColliderGenerators","source":"editor/js/modules/ColliderGenerators.js","import":"/editor/js/modules/ColliderGenerators.js","sourceHash":"983951e3576607473bc3f1f0e5062e9012c7d3326e685888ece3077e14576950","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ColliderGenerators.js#0020:generateTerrainColliders","exportIndex":20,"name":"generateTerrainColliders","kind":"function","signature":"generateTerrainColliders(sizeX, sizeZ, height, resolution = 8, seed = 0)","summary":"Generate terrain chunk collider"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ColliderGenerators.md","moduleTitle":"modules/ColliderGenerators","source":"editor/js/modules/ColliderGenerators.js","import":"/editor/js/modules/ColliderGenerators.js","sourceHash":"983951e3576607473bc3f1f0e5062e9012c7d3326e685888ece3077e14576950","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ColliderGenerators.js#0021:generateCaveColliders","exportIndex":21,"name":"generateCaveColliders","kind":"function","signature":"generateCaveColliders(bounds, tunnelRadius = 1.5, resolution = 6, seed = 0)","summary":"Generate cave/hollow rock colliders"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ColliderGenerators.md","moduleTitle":"modules/ColliderGenerators","source":"editor/js/modules/ColliderGenerators.js","import":"/editor/js/modules/ColliderGenerators.js","sourceHash":"983951e3576607473bc3f1f0e5062e9012c7d3326e685888ece3077e14576950","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ColliderGenerators.js#0022:initColliderSpatialHash","exportIndex":22,"name":"initColliderSpatialHash","kind":"function","signature":"initColliderSpatialHash(cellSize = 2.0)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ColliderGenerators.md","moduleTitle":"modules/ColliderGenerators","source":"editor/js/modules/ColliderGenerators.js","import":"/editor/js/modules/ColliderGenerators.js","sourceHash":"983951e3576607473bc3f1f0e5062e9012c7d3326e685888ece3077e14576950","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ColliderGenerators.js#0023:addToSpatialHash","exportIndex":23,"name":"addToSpatialHash","kind":"function","signature":"addToSpatialHash(id, colliders, worldPosition = [0, 0, 0])","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ColliderGenerators.md","moduleTitle":"modules/ColliderGenerators","source":"editor/js/modules/ColliderGenerators.js","import":"/editor/js/modules/ColliderGenerators.js","sourceHash":"983951e3576607473bc3f1f0e5062e9012c7d3326e685888ece3077e14576950","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ColliderGenerators.js#0024:queryNearbyColliders","exportIndex":24,"name":"queryNearbyColliders","kind":"function","signature":"queryNearbyColliders(point, radius)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ColliderGenerators.md","moduleTitle":"modules/ColliderGenerators","source":"editor/js/modules/ColliderGenerators.js","import":"/editor/js/modules/ColliderGenerators.js","sourceHash":"983951e3576607473bc3f1f0e5062e9012c7d3326e685888ece3077e14576950","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ColliderGenerators.js#0025:clearColliderSpatialHash","exportIndex":25,"name":"clearColliderSpatialHash","kind":"function","signature":"clearColliderSpatialHash()","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ColliderGenerators.md","moduleTitle":"modules/ColliderGenerators","source":"editor/js/modules/ColliderGenerators.js","import":"/editor/js/modules/ColliderGenerators.js","sourceHash":"983951e3576607473bc3f1f0e5062e9012c7d3326e685888ece3077e14576950","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ColliderGenerators.js#0026:computeBounce","exportIndex":26,"name":"computeBounce","kind":"function","signature":"computeBounce(velocity, normal, restitution = 0.5)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ColliderGenerators.md","moduleTitle":"modules/ColliderGenerators","source":"editor/js/modules/ColliderGenerators.js","import":"/editor/js/modules/ColliderGenerators.js","sourceHash":"983951e3576607473bc3f1f0e5062e9012c7d3326e685888ece3077e14576950","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ColliderGenerators.js#0027:applyFriction","exportIndex":27,"name":"applyFriction","kind":"function","signature":"applyFriction(velocity, normal, friction, dt)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ColliderGenerators.md","moduleTitle":"modules/ColliderGenerators","source":"editor/js/modules/ColliderGenerators.js","import":"/editor/js/modules/ColliderGenerators.js","sourceHash":"983951e3576607473bc3f1f0e5062e9012c7d3326e685888ece3077e14576950","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ColliderGenerators.js#0028:predictLanding","exportIndex":28,"name":"predictLanding","kind":"function","signature":"predictLanding(start, velocity, gravity = 9.81)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ColliderGenerators.md","moduleTitle":"modules/ColliderGenerators","source":"editor/js/modules/ColliderGenerators.js","import":"/editor/js/modules/ColliderGenerators.js","sourceHash":"983951e3576607473bc3f1f0e5062e9012c7d3326e685888ece3077e14576950","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ColliderGenerators.js#0029:generateScatteredColliders","exportIndex":29,"name":"generateScatteredColliders","kind":"function","signature":"generateScatteredColliders(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ColliderGenerators.md","moduleTitle":"modules/ColliderGenerators","source":"editor/js/modules/ColliderGenerators.js","import":"/editor/js/modules/ColliderGenerators.js","sourceHash":"983951e3576607473bc3f1f0e5062e9012c7d3326e685888ece3077e14576950","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ColliderGenerators.js#0030:generateRockFieldColliders","exportIndex":30,"name":"generateRockFieldColliders","kind":"function","signature":"generateRockFieldColliders(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ColliderGenerators.md","moduleTitle":"modules/ColliderGenerators","source":"editor/js/modules/ColliderGenerators.js","import":"/editor/js/modules/ColliderGenerators.js","sourceHash":"983951e3576607473bc3f1f0e5062e9012c7d3326e685888ece3077e14576950","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ColliderGenerators.js#0031:LineNetwork","exportIndex":31,"name":"LineNetwork","kind":"re-export","signature":"LineNetwork","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/CollisionDebugOverlay.md","moduleTitle":"modules/CollisionDebugOverlay","source":"editor/js/modules/CollisionDebugOverlay.js","import":"/editor/js/modules/CollisionDebugOverlay.js","sourceHash":"d7029eedb6dbb3557a6f1d36fbc89f104c81321e3a8c3c24555d263f848d33a2","subsystem":"editor","recordType":"api-module","id":"module:editor/js/modules/CollisionDebugOverlay.js","title":"modules/CollisionDebugOverlay","summary":"CollisionDebugOverlay.js - Visual debug overlay for collision layers and modes Displays collision layer, mask, and mode information for selected entities and optionally renders debug visualizations for collision relationships.","exportCount":4}
{"schemaVersion":1,"modulePath":"editor/reference/modules/CollisionDebugOverlay.md","moduleTitle":"modules/CollisionDebugOverlay","source":"editor/js/modules/CollisionDebugOverlay.js","import":"/editor/js/modules/CollisionDebugOverlay.js","sourceHash":"d7029eedb6dbb3557a6f1d36fbc89f104c81321e3a8c3c24555d263f848d33a2","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/CollisionDebugOverlay.js#0000:createCollisionDebugPanel","exportIndex":0,"name":"createCollisionDebugPanel","kind":"function","signature":"createCollisionDebugPanel(editor)","summary":"Create collision debug overlay panel"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/CollisionDebugOverlay.md","moduleTitle":"modules/CollisionDebugOverlay","source":"editor/js/modules/CollisionDebugOverlay.js","import":"/editor/js/modules/CollisionDebugOverlay.js","sourceHash":"d7029eedb6dbb3557a6f1d36fbc89f104c81321e3a8c3c24555d263f848d33a2","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/CollisionDebugOverlay.js#0001:toggleCollisionDebugOverlay","exportIndex":1,"name":"toggleCollisionDebugOverlay","kind":"function","signature":"toggleCollisionDebugOverlay(editor)","summary":"Toggle collision debug overlay"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/CollisionDebugOverlay.md","moduleTitle":"modules/CollisionDebugOverlay","source":"editor/js/modules/CollisionDebugOverlay.js","import":"/editor/js/modules/CollisionDebugOverlay.js","sourceHash":"d7029eedb6dbb3557a6f1d36fbc89f104c81321e3a8c3c24555d263f848d33a2","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/CollisionDebugOverlay.js#0002:dumpCollisionInfo","exportIndex":2,"name":"dumpCollisionInfo","kind":"function","signature":"dumpCollisionInfo(editor)","summary":"Get collision debug info for all entities (for console debugging)"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/CollisionDebugOverlay.md","moduleTitle":"modules/CollisionDebugOverlay","source":"editor/js/modules/CollisionDebugOverlay.js","import":"/editor/js/modules/CollisionDebugOverlay.js","sourceHash":"d7029eedb6dbb3557a6f1d36fbc89f104c81321e3a8c3c24555d263f848d33a2","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/CollisionDebugOverlay.js#0003:checkCollisionConflicts","exportIndex":3,"name":"checkCollisionConflicts","kind":"function","signature":"checkCollisionConflicts(editor)","summary":"Check for collision layer conflicts (entities that should collide but don't)"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorAI.md","moduleTitle":"modules/EditorAI","source":"editor/js/modules/EditorAI.js","import":"/editor/js/modules/EditorAI.js","sourceHash":"4fad73e406a5e7125b4848bee6a9eb0d4d15e2566618dabd83dd90e94e13f0df","subsystem":"editor","recordType":"api-module","id":"module:editor/js/modules/EditorAI.js","title":"modules/EditorAI","summary":"EditorAI.js - AI, Navigation, Steering, and Behavior Trees for Editor Extracted from EditorPhysics.js for modularity","exportCount":37}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorAI.md","moduleTitle":"modules/EditorAI","source":"editor/js/modules/EditorAI.js","import":"/editor/js/modules/EditorAI.js","sourceHash":"4fad73e406a5e7125b4848bee6a9eb0d4d15e2566618dabd83dd90e94e13f0df","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorAI.js#0000:getOrCreateNavGrid","exportIndex":0,"name":"getOrCreateNavGrid","kind":"function","signature":"getOrCreateNavGrid(options = {})","summary":"Initialize or get the editor's navigation grid"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorAI.md","moduleTitle":"modules/EditorAI","source":"editor/js/modules/EditorAI.js","import":"/editor/js/modules/EditorAI.js","sourceHash":"4fad73e406a5e7125b4848bee6a9eb0d4d15e2566618dabd83dd90e94e13f0df","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorAI.js#0001:findPath","exportIndex":1,"name":"findPath","kind":"function","signature":"findPath(start, goal, options = {})","summary":"Find a path between two world positions"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorAI.md","moduleTitle":"modules/EditorAI","source":"editor/js/modules/EditorAI.js","import":"/editor/js/modules/EditorAI.js","sourceHash":"4fad73e406a5e7125b4848bee6a9eb0d4d15e2566618dabd83dd90e94e13f0df","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorAI.js#0002:updateNavGridFromColliders","exportIndex":2,"name":"updateNavGridFromColliders","kind":"function","signature":"updateNavGridFromColliders(colliders, walkable = false)","summary":"Mark cells as blocked/walkable based on colliders"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorAI.md","moduleTitle":"modules/EditorAI","source":"editor/js/modules/EditorAI.js","import":"/editor/js/modules/EditorAI.js","sourceHash":"4fad73e406a5e7125b4848bee6a9eb0d4d15e2566618dabd83dd90e94e13f0df","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorAI.js#0003:smoothPath","exportIndex":3,"name":"smoothPath","kind":"function","signature":"smoothPath(waypoints, smoothing = 0.5)","summary":"Smooth a path using string-pulling"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorAI.md","moduleTitle":"modules/EditorAI","source":"editor/js/modules/EditorAI.js","import":"/editor/js/modules/EditorAI.js","sourceHash":"4fad73e406a5e7125b4848bee6a9eb0d4d15e2566618dabd83dd90e94e13f0df","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorAI.js#0004:getPathSteering","exportIndex":4,"name":"getPathSteering","kind":"function","signature":"getPathSteering(currentPos, waypoints, lookahead = 1.0)","summary":"Get steering direction to follow a path"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorAI.md","moduleTitle":"modules/EditorAI","source":"editor/js/modules/EditorAI.js","import":"/editor/js/modules/EditorAI.js","sourceHash":"4fad73e406a5e7125b4848bee6a9eb0d4d15e2566618dabd83dd90e94e13f0df","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorAI.js#0005:getNavGridVisualization","exportIndex":5,"name":"getNavGridVisualization","kind":"function","signature":"getNavGridVisualization()","summary":"Debug: visualize nav grid walkability"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorAI.md","moduleTitle":"modules/EditorAI","source":"editor/js/modules/EditorAI.js","import":"/editor/js/modules/EditorAI.js","sourceHash":"4fad73e406a5e7125b4848bee6a9eb0d4d15e2566618dabd83dd90e94e13f0df","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorAI.js#0006:createAIAgent","exportIndex":6,"name":"createAIAgent","kind":"function","signature":"createAIAgent(options = {})","summary":"Create an AI agent with steering behaviors"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorAI.md","moduleTitle":"modules/EditorAI","source":"editor/js/modules/EditorAI.js","import":"/editor/js/modules/EditorAI.js","sourceHash":"4fad73e406a5e7125b4848bee6a9eb0d4d15e2566618dabd83dd90e94e13f0df","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorAI.js#0007:updateAIAgent","exportIndex":7,"name":"updateAIAgent","kind":"function","signature":"updateAIAgent(agent, behaviors, dt)","summary":"Update AI agent with combined steering behaviors"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorAI.md","moduleTitle":"modules/EditorAI","source":"editor/js/modules/EditorAI.js","import":"/editor/js/modules/EditorAI.js","sourceHash":"4fad73e406a5e7125b4848bee6a9eb0d4d15e2566618dabd83dd90e94e13f0df","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorAI.js#0008:createFlock","exportIndex":8,"name":"createFlock","kind":"function","signature":"createFlock(count, options = {})","summary":"Create a flock of AI agents"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorAI.md","moduleTitle":"modules/EditorAI","source":"editor/js/modules/EditorAI.js","import":"/editor/js/modules/EditorAI.js","sourceHash":"4fad73e406a5e7125b4848bee6a9eb0d4d15e2566618dabd83dd90e94e13f0df","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorAI.js#0009:updateFlock","exportIndex":9,"name":"updateFlock","kind":"function","signature":"updateFlock(agents, dt, options = {})","summary":"Update entire flock with flocking behavior"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorAI.md","moduleTitle":"modules/EditorAI","source":"editor/js/modules/EditorAI.js","import":"/editor/js/modules/EditorAI.js","sourceHash":"4fad73e406a5e7125b4848bee6a9eb0d4d15e2566618dabd83dd90e94e13f0df","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorAI.js#0010:createPatrolBehavior","exportIndex":10,"name":"createPatrolBehavior","kind":"function","signature":"createPatrolBehavior(waypoints)","summary":"Create a simple patrol behavior tree"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorAI.md","moduleTitle":"modules/EditorAI","source":"editor/js/modules/EditorAI.js","import":"/editor/js/modules/EditorAI.js","sourceHash":"4fad73e406a5e7125b4848bee6a9eb0d4d15e2566618dabd83dd90e94e13f0df","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorAI.js#0011:createChaseFleeBehavior","exportIndex":11,"name":"createChaseFleeBehavior","kind":"function","signature":"createChaseFleeBehavior(chaseRadius = 10, fleeHealth = 20)","summary":"Create a chase/flee behavior tree"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorAI.md","moduleTitle":"modules/EditorAI","source":"editor/js/modules/EditorAI.js","import":"/editor/js/modules/EditorAI.js","sourceHash":"4fad73e406a5e7125b4848bee6a9eb0d4d15e2566618dabd83dd90e94e13f0df","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorAI.js#0012:tickBehaviorTree","exportIndex":12,"name":"tickBehaviorTree","kind":"function","signature":"tickBehaviorTree(tree, blackboard, dt)","summary":"Run a behavior tree tick"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorAI.md","moduleTitle":"modules/EditorAI","source":"editor/js/modules/EditorAI.js","import":"/editor/js/modules/EditorAI.js","sourceHash":"4fad73e406a5e7125b4848bee6a9eb0d4d15e2566618dabd83dd90e94e13f0df","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorAI.js#0013:createAIPerception","exportIndex":13,"name":"createAIPerception","kind":"function","signature":"createAIPerception(options = {})","summary":"Create an AI perception component"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorAI.md","moduleTitle":"modules/EditorAI","source":"editor/js/modules/EditorAI.js","import":"/editor/js/modules/EditorAI.js","sourceHash":"4fad73e406a5e7125b4848bee6a9eb0d4d15e2566618dabd83dd90e94e13f0df","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorAI.js#0014:canSee","exportIndex":14,"name":"canSee","kind":"function","signature":"canSee(perception, position, forward, targetPos)","summary":"Check if an entity can see a target"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorAI.md","moduleTitle":"modules/EditorAI","source":"editor/js/modules/EditorAI.js","import":"/editor/js/modules/EditorAI.js","sourceHash":"4fad73e406a5e7125b4848bee6a9eb0d4d15e2566618dabd83dd90e94e13f0df","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorAI.js#0015:canHear","exportIndex":15,"name":"canHear","kind":"function","signature":"canHear(perception, position, soundPos, soundVolume = 1)","summary":"Check if an entity can hear a sound"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorAI.md","moduleTitle":"modules/EditorAI","source":"editor/js/modules/EditorAI.js","import":"/editor/js/modules/EditorAI.js","sourceHash":"4fad73e406a5e7125b4848bee6a9eb0d4d15e2566618dabd83dd90e94e13f0df","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorAI.js#0016:updateAIPerception","exportIndex":16,"name":"updateAIPerception","kind":"function","signature":"updateAIPerception(perception, position, forward, entities, dt)","summary":"Update perception - detect nearby entities"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorAI.md","moduleTitle":"modules/EditorAI","source":"editor/js/modules/EditorAI.js","import":"/editor/js/modules/EditorAI.js","sourceHash":"4fad73e406a5e7125b4848bee6a9eb0d4d15e2566618dabd83dd90e94e13f0df","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorAI.js#0017:getLastKnownPosition","exportIndex":17,"name":"getLastKnownPosition","kind":"function","signature":"getLastKnownPosition(perception, entityId)","summary":"Get last known position of an entity"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorAI.md","moduleTitle":"modules/EditorAI","source":"editor/js/modules/EditorAI.js","import":"/editor/js/modules/EditorAI.js","sourceHash":"4fad73e406a5e7125b4848bee6a9eb0d4d15e2566618dabd83dd90e94e13f0df","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorAI.js#0018:NODE_STATUS","exportIndex":18,"name":"NODE_STATUS","kind":"re-export","signature":"NODE_STATUS","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorAI.md","moduleTitle":"modules/EditorAI","source":"editor/js/modules/EditorAI.js","import":"/editor/js/modules/EditorAI.js","sourceHash":"4fad73e406a5e7125b4848bee6a9eb0d4d15e2566618dabd83dd90e94e13f0df","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorAI.js#0019:arrive","exportIndex":19,"name":"arrive","kind":"re-export","signature":"arrive","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorAI.md","moduleTitle":"modules/EditorAI","source":"editor/js/modules/EditorAI.js","import":"/editor/js/modules/EditorAI.js","sourceHash":"4fad73e406a5e7125b4848bee6a9eb0d4d15e2566618dabd83dd90e94e13f0df","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorAI.js#0020:createAction","exportIndex":20,"name":"createAction","kind":"re-export","signature":"createAction","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorAI.md","moduleTitle":"modules/EditorAI","source":"editor/js/modules/EditorAI.js","import":"/editor/js/modules/EditorAI.js","sourceHash":"4fad73e406a5e7125b4848bee6a9eb0d4d15e2566618dabd83dd90e94e13f0df","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorAI.js#0021:createCondition","exportIndex":21,"name":"createCondition","kind":"re-export","signature":"createCondition","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorAI.md","moduleTitle":"modules/EditorAI","source":"editor/js/modules/EditorAI.js","import":"/editor/js/modules/EditorAI.js","sourceHash":"4fad73e406a5e7125b4848bee6a9eb0d4d15e2566618dabd83dd90e94e13f0df","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorAI.js#0022:createNavGrid","exportIndex":22,"name":"createNavGrid","kind":"re-export","signature":"createNavGrid","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorAI.md","moduleTitle":"modules/EditorAI","source":"editor/js/modules/EditorAI.js","import":"/editor/js/modules/EditorAI.js","sourceHash":"4fad73e406a5e7125b4848bee6a9eb0d4d15e2566618dabd83dd90e94e13f0df","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorAI.js#0023:createSelector","exportIndex":23,"name":"createSelector","kind":"re-export","signature":"createSelector","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorAI.md","moduleTitle":"modules/EditorAI","source":"editor/js/modules/EditorAI.js","import":"/editor/js/modules/EditorAI.js","sourceHash":"4fad73e406a5e7125b4848bee6a9eb0d4d15e2566618dabd83dd90e94e13f0df","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorAI.js#0024:createSequence","exportIndex":24,"name":"createSequence","kind":"re-export","signature":"createSequence","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorAI.md","moduleTitle":"modules/EditorAI","source":"editor/js/modules/EditorAI.js","import":"/editor/js/modules/EditorAI.js","sourceHash":"4fad73e406a5e7125b4848bee6a9eb0d4d15e2566618dabd83dd90e94e13f0df","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorAI.js#0025:createSteeringAgent","exportIndex":25,"name":"createSteeringAgent","kind":"re-export","signature":"createSteeringAgent","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorAI.md","moduleTitle":"modules/EditorAI","source":"editor/js/modules/EditorAI.js","import":"/editor/js/modules/EditorAI.js","sourceHash":"4fad73e406a5e7125b4848bee6a9eb0d4d15e2566618dabd83dd90e94e13f0df","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorAI.js#0026:evade","exportIndex":26,"name":"evade","kind":"re-export","signature":"evade","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorAI.md","moduleTitle":"modules/EditorAI","source":"editor/js/modules/EditorAI.js","import":"/editor/js/modules/EditorAI.js","sourceHash":"4fad73e406a5e7125b4848bee6a9eb0d4d15e2566618dabd83dd90e94e13f0df","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorAI.js#0027:findPathInNavWorld","exportIndex":27,"name":"findPathInNavWorld","kind":"re-export","signature":"findPathInNavWorld","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorAI.md","moduleTitle":"modules/EditorAI","source":"editor/js/modules/EditorAI.js","import":"/editor/js/modules/EditorAI.js","sourceHash":"4fad73e406a5e7125b4848bee6a9eb0d4d15e2566618dabd83dd90e94e13f0df","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorAI.js#0028:findPathOnGrid","exportIndex":28,"name":"findPathOnGrid","kind":"re-export","signature":"findPathOnGrid","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorAI.md","moduleTitle":"modules/EditorAI","source":"editor/js/modules/EditorAI.js","import":"/editor/js/modules/EditorAI.js","sourceHash":"4fad73e406a5e7125b4848bee6a9eb0d4d15e2566618dabd83dd90e94e13f0df","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorAI.js#0029:flee","exportIndex":29,"name":"flee","kind":"re-export","signature":"flee","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorAI.md","moduleTitle":"modules/EditorAI","source":"editor/js/modules/EditorAI.js","import":"/editor/js/modules/EditorAI.js","sourceHash":"4fad73e406a5e7125b4848bee6a9eb0d4d15e2566618dabd83dd90e94e13f0df","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorAI.js#0030:flock","exportIndex":30,"name":"flock","kind":"re-export","signature":"flock","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorAI.md","moduleTitle":"modules/EditorAI","source":"editor/js/modules/EditorAI.js","import":"/editor/js/modules/EditorAI.js","sourceHash":"4fad73e406a5e7125b4848bee6a9eb0d4d15e2566618dabd83dd90e94e13f0df","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorAI.js#0031:gridToWorld","exportIndex":31,"name":"gridToWorld","kind":"re-export","signature":"gridToWorld","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorAI.md","moduleTitle":"modules/EditorAI","source":"editor/js/modules/EditorAI.js","import":"/editor/js/modules/EditorAI.js","sourceHash":"4fad73e406a5e7125b4848bee6a9eb0d4d15e2566618dabd83dd90e94e13f0df","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorAI.js#0032:pursue","exportIndex":32,"name":"pursue","kind":"re-export","signature":"pursue","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorAI.md","moduleTitle":"modules/EditorAI","source":"editor/js/modules/EditorAI.js","import":"/editor/js/modules/EditorAI.js","sourceHash":"4fad73e406a5e7125b4848bee6a9eb0d4d15e2566618dabd83dd90e94e13f0df","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorAI.js#0033:seek","exportIndex":33,"name":"seek","kind":"re-export","signature":"seek","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorAI.md","moduleTitle":"modules/EditorAI","source":"editor/js/modules/EditorAI.js","import":"/editor/js/modules/EditorAI.js","sourceHash":"4fad73e406a5e7125b4848bee6a9eb0d4d15e2566618dabd83dd90e94e13f0df","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorAI.js#0034:tickNode","exportIndex":34,"name":"tickNode","kind":"re-export","signature":"tickNode","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorAI.md","moduleTitle":"modules/EditorAI","source":"editor/js/modules/EditorAI.js","import":"/editor/js/modules/EditorAI.js","sourceHash":"4fad73e406a5e7125b4848bee6a9eb0d4d15e2566618dabd83dd90e94e13f0df","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorAI.js#0035:wander","exportIndex":35,"name":"wander","kind":"re-export","signature":"wander","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorAI.md","moduleTitle":"modules/EditorAI","source":"editor/js/modules/EditorAI.js","import":"/editor/js/modules/EditorAI.js","sourceHash":"4fad73e406a5e7125b4848bee6a9eb0d4d15e2566618dabd83dd90e94e13f0df","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorAI.js#0036:worldToGrid","exportIndex":36,"name":"worldToGrid","kind":"re-export","signature":"worldToGrid","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorAudio.md","moduleTitle":"modules/EditorAudio","source":"editor/js/modules/EditorAudio.js","import":"/editor/js/modules/EditorAudio.js","sourceHash":"9b83387e6c1b77bbf2e7ad681bb340ef23c4e893fcc4b6b3c7549d4740fb3f21","subsystem":"editor","recordType":"api-module","id":"module:editor/js/modules/EditorAudio.js","title":"modules/EditorAudio","summary":"EditorAudio.js - Simulation Audio Bridge for the Editor Manages the runtime AudioEngine lifecycle during play mode: - Initializes AudioEngine on first play - Ticks audio each frame while playing - Stops all sim audio on stop/pause - Bridges substance emitters → procedural audio","exportCount":7}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorAudio.md","moduleTitle":"modules/EditorAudio","source":"editor/js/modules/EditorAudio.js","import":"/editor/js/modules/EditorAudio.js","sourceHash":"9b83387e6c1b77bbf2e7ad681bb340ef23c4e893fcc4b6b3c7549d4740fb3f21","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorAudio.js#0000:startSimAudio","exportIndex":0,"name":"startSimAudio","kind":"function","signature":"async startSimAudio(editor)","summary":"Called when user enters play mode. Initializes engine if needed and starts audio."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorAudio.md","moduleTitle":"modules/EditorAudio","source":"editor/js/modules/EditorAudio.js","import":"/editor/js/modules/EditorAudio.js","sourceHash":"9b83387e6c1b77bbf2e7ad681bb340ef23c4e893fcc4b6b3c7549d4740fb3f21","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorAudio.js#0001:stopSimAudio","exportIndex":1,"name":"stopSimAudio","kind":"function","signature":"stopSimAudio()","summary":"Called when user exits play mode (Stop). Stops all active sources with a short fade."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorAudio.md","moduleTitle":"modules/EditorAudio","source":"editor/js/modules/EditorAudio.js","import":"/editor/js/modules/EditorAudio.js","sourceHash":"9b83387e6c1b77bbf2e7ad681bb340ef23c4e893fcc4b6b3c7549d4740fb3f21","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorAudio.js#0002:pauseSimAudio","exportIndex":2,"name":"pauseSimAudio","kind":"function","signature":"pauseSimAudio()","summary":"Called when user pauses. Suspends the AudioContext (freezes all audio in place)."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorAudio.md","moduleTitle":"modules/EditorAudio","source":"editor/js/modules/EditorAudio.js","import":"/editor/js/modules/EditorAudio.js","sourceHash":"9b83387e6c1b77bbf2e7ad681bb340ef23c4e893fcc4b6b3c7549d4740fb3f21","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorAudio.js#0003:resumeSimAudio","exportIndex":3,"name":"resumeSimAudio","kind":"function","signature":"async resumeSimAudio()","summary":"Called when user resumes from pause."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorAudio.md","moduleTitle":"modules/EditorAudio","source":"editor/js/modules/EditorAudio.js","import":"/editor/js/modules/EditorAudio.js","sourceHash":"9b83387e6c1b77bbf2e7ad681bb340ef23c4e893fcc4b6b3c7549d4740fb3f21","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorAudio.js#0004:tickSimAudio","exportIndex":4,"name":"tickSimAudio","kind":"function","signature":"tickSimAudio(dt)","summary":"Tick the audio engine. Call once per frame while playing."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorAudio.md","moduleTitle":"modules/EditorAudio","source":"editor/js/modules/EditorAudio.js","import":"/editor/js/modules/EditorAudio.js","sourceHash":"9b83387e6c1b77bbf2e7ad681bb340ef23c4e893fcc4b6b3c7549d4740fb3f21","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorAudio.js#0005:destroySimAudio","exportIndex":5,"name":"destroySimAudio","kind":"function","signature":"destroySimAudio()","summary":"Full cleanup. Call on editor close."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorAudio.md","moduleTitle":"modules/EditorAudio","source":"editor/js/modules/EditorAudio.js","import":"/editor/js/modules/EditorAudio.js","sourceHash":"9b83387e6c1b77bbf2e7ad681bb340ef23c4e893fcc4b6b3c7549d4740fb3f21","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorAudio.js#0006:getSimAudioEngine","exportIndex":6,"name":"getSimAudioEngine","kind":"function","signature":"getSimAudioEngine()","summary":"Get the current engine instance (for external integration)."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorAudioFX.md","moduleTitle":"modules/EditorAudioFX","source":"editor/js/modules/EditorAudioFX.js","import":"/editor/js/modules/EditorAudioFX.js","sourceHash":"27933ed0a89b878a1b03628f353cf7b636e4b6dc78f566456cead83085998f23","subsystem":"editor","recordType":"api-module","id":"module:editor/js/modules/EditorAudioFX.js","title":"modules/EditorAudioFX","summary":"EditorAudioFX.js - Procedural Editor Sound Effects All sounds are synthesized with Web Audio API oscillators & noise — no sample files. Provides: loading ambient pad, play/stop/pause chimes, UI clicks, error beeps. Usage: import { editorAudioFX } from './EditorAudioFX.js'; editorAudioFX.init();               // call once after first user gesture editorAudioFX.playChime();           // play-mode enter editorAudioFX.stopChime();           // play-mode exit editorAudioFX.pauseClick();          // pause toggle editorAudioFX.uiClick();             // generic button click editorAudioFX.uiHover();             // hover over interactive element editorAudioFX.errorBeep();           // error / invalid action editorAudioFX.startLoadingAmbient(); // loading screen ambient pad editorAudioFX.stopLoadingAmbient();  // fade out loading pad","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorAudioFX.md","moduleTitle":"modules/EditorAudioFX","source":"editor/js/modules/EditorAudioFX.js","import":"/editor/js/modules/EditorAudioFX.js","sourceHash":"27933ed0a89b878a1b03628f353cf7b636e4b6dc78f566456cead83085998f23","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorAudioFX.js#0000:editorAudioFX","exportIndex":0,"name":"editorAudioFX","kind":"constant","signature":"editorAudioFX","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorCollab.md","moduleTitle":"modules/EditorCollab","source":"editor/js/modules/EditorCollab.js","import":"/editor/js/modules/EditorCollab.js","sourceHash":"febf26bea6606fe4b8401149e6a7f273502d3da3fcb6f406059c25f7c3c499c0","subsystem":"editor","recordType":"api-module","id":"module:editor/js/modules/EditorCollab.js","title":"modules/EditorCollab","summary":"EditorCollab.js Editor-side integration for the collab system. Mounts onto EditorApp and wires all hooks. Hooks wired: - EditorHistory.pushAction  → broadcast op to peers - ProjectStorage.saveProject → broadcast snapshot - PrefabLibrary.save/delete  → broadcast prefab ops - Viewport render loop       → presence tick at 10 Hz - EditorApp.enterPlayMode    → broadcast play_sync - EditorApp.togglePause      → broadcast pause_sync - EditorApp.exitPlayMode     → broadcast stop_sync","exportCount":39}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorCollab.md","moduleTitle":"modules/EditorCollab","source":"editor/js/modules/EditorCollab.js","import":"/editor/js/modules/EditorCollab.js","sourceHash":"febf26bea6606fe4b8401149e6a7f273502d3da3fcb6f406059c25f7c3c499c0","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorCollab.js#0000:initEditorCollab","exportIndex":0,"name":"initEditorCollab","kind":"function","signature":"initEditorCollab(editor)","summary":"Initialize the collab system and attach it to the editor. Called from EditorApp.initialize() at the end."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorCollab.md","moduleTitle":"modules/EditorCollab","source":"editor/js/modules/EditorCollab.js","import":"/editor/js/modules/EditorCollab.js","sourceHash":"febf26bea6606fe4b8401149e6a7f273502d3da3fcb6f406059c25f7c3c499c0","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorCollab.js#0001:destroyEditorCollab","exportIndex":1,"name":"destroyEditorCollab","kind":"function","signature":"destroyEditorCollab(editor)","summary":"Destroy the collab system and remove all hooks."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorCollab.md","moduleTitle":"modules/EditorCollab","source":"editor/js/modules/EditorCollab.js","import":"/editor/js/modules/EditorCollab.js","sourceHash":"febf26bea6606fe4b8401149e6a7f273502d3da3fcb6f406059c25f7c3c499c0","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorCollab.js#0002:getCollabState","exportIndex":2,"name":"getCollabState","kind":"function","signature":"getCollabState(editor)","summary":"Get the current collab state from the editor."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorCollab.md","moduleTitle":"modules/EditorCollab","source":"editor/js/modules/EditorCollab.js","import":"/editor/js/modules/EditorCollab.js","sourceHash":"febf26bea6606fe4b8401149e6a7f273502d3da3fcb6f406059c25f7c3c499c0","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorCollab.js#0003:isCollabActive","exportIndex":3,"name":"isCollabActive","kind":"function","signature":"isCollabActive(editor)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorCollab.md","moduleTitle":"modules/EditorCollab","source":"editor/js/modules/EditorCollab.js","import":"/editor/js/modules/EditorCollab.js","sourceHash":"febf26bea6606fe4b8401149e6a7f273502d3da3fcb6f406059c25f7c3c499c0","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorCollab.js#0004:isCollabConnected","exportIndex":4,"name":"isCollabConnected","kind":"function","signature":"isCollabConnected(editor)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorCollab.md","moduleTitle":"modules/EditorCollab","source":"editor/js/modules/EditorCollab.js","import":"/editor/js/modules/EditorCollab.js","sourceHash":"febf26bea6606fe4b8401149e6a7f273502d3da3fcb6f406059c25f7c3c499c0","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorCollab.js#0005:getCollabPeers","exportIndex":5,"name":"getCollabPeers","kind":"function","signature":"getCollabPeers(editor)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorCollab.md","moduleTitle":"modules/EditorCollab","source":"editor/js/modules/EditorCollab.js","import":"/editor/js/modules/EditorCollab.js","sourceHash":"febf26bea6606fe4b8401149e6a7f273502d3da3fcb6f406059c25f7c3c499c0","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorCollab.js#0006:getCollabPresenceList","exportIndex":6,"name":"getCollabPresenceList","kind":"function","signature":"getCollabPresenceList(editor)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorCollab.md","moduleTitle":"modules/EditorCollab","source":"editor/js/modules/EditorCollab.js","import":"/editor/js/modules/EditorCollab.js","sourceHash":"febf26bea6606fe4b8401149e6a7f273502d3da3fcb6f406059c25f7c3c499c0","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorCollab.js#0007:getCollabInterpCamera","exportIndex":7,"name":"getCollabInterpCamera","kind":"function","signature":"getCollabInterpCamera(editor, peerId)","summary":"Get Hermite-interpolated camera for a remote peer (smooth, per-frame). Returns { pos: [x,y,z], target: [x,y,z] } or null."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorCollab.md","moduleTitle":"modules/EditorCollab","source":"editor/js/modules/EditorCollab.js","import":"/editor/js/modules/EditorCollab.js","sourceHash":"febf26bea6606fe4b8401149e6a7f273502d3da3fcb6f406059c25f7c3c499c0","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorCollab.js#0008:getCollabStats","exportIndex":8,"name":"getCollabStats","kind":"function","signature":"getCollabStats(editor)","summary":"Get collab camera interpolation + connection stats for UI display."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorCollab.md","moduleTitle":"modules/EditorCollab","source":"editor/js/modules/EditorCollab.js","import":"/editor/js/modules/EditorCollab.js","sourceHash":"febf26bea6606fe4b8401149e6a7f273502d3da3fcb6f406059c25f7c3c499c0","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorCollab.js#0009:getCollabRouterStats","exportIndex":9,"name":"getCollabRouterStats","kind":"function","signature":"getCollabRouterStats(editor)","summary":"Get message router stats for bandwidth monitoring. Returns { sent, dropped, coalesced, bytesSent, backpressureFrames, rateMultiplier }"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorCollab.md","moduleTitle":"modules/EditorCollab","source":"editor/js/modules/EditorCollab.js","import":"/editor/js/modules/EditorCollab.js","sourceHash":"febf26bea6606fe4b8401149e6a7f273502d3da3fcb6f406059c25f7c3c499c0","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorCollab.js#0010:getCollabInterpDelay","exportIndex":10,"name":"getCollabInterpDelay","kind":"function","signature":"getCollabInterpDelay(editor)","summary":"Get the current adaptive interpolation delay (ms). On LAN: ~20ms. On jittery connections: up to 150ms. Auto-adjusts each frame."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorCollab.md","moduleTitle":"modules/EditorCollab","source":"editor/js/modules/EditorCollab.js","import":"/editor/js/modules/EditorCollab.js","sourceHash":"febf26bea6606fe4b8401149e6a7f273502d3da3fcb6f406059c25f7c3c499c0","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorCollab.js#0011:collabPresenceTick","exportIndex":11,"name":"collabPresenceTick","kind":"function","signature":"collabPresenceTick(editor)","summary":"Called from Viewport render loop to send presence at 10 Hz."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorCollab.md","moduleTitle":"modules/EditorCollab","source":"editor/js/modules/EditorCollab.js","import":"/editor/js/modules/EditorCollab.js","sourceHash":"febf26bea6606fe4b8401149e6a7f273502d3da3fcb6f406059c25f7c3c499c0","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorCollab.js#0012:exportCollabTimeline","exportIndex":12,"name":"exportCollabTimeline","kind":"function","signature":"exportCollabTimeline(editor)","summary":"Export local timeline as JSON download."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorCollab.md","moduleTitle":"modules/EditorCollab","source":"editor/js/modules/EditorCollab.js","import":"/editor/js/modules/EditorCollab.js","sourceHash":"febf26bea6606fe4b8401149e6a7f273502d3da3fcb6f406059c25f7c3c499c0","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorCollab.js#0013:collabTrackGrab","exportIndex":13,"name":"collabTrackGrab","kind":"function","signature":"collabTrackGrab(editor, entityId)","summary":"Notify collab that local user started grabbing an entity (play mode). Claims per-entity ownership at GRABBED priority so our transforms are authoritative."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorCollab.md","moduleTitle":"modules/EditorCollab","source":"editor/js/modules/EditorCollab.js","import":"/editor/js/modules/EditorCollab.js","sourceHash":"febf26bea6606fe4b8401149e6a7f273502d3da3fcb6f406059c25f7c3c499c0","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorCollab.js#0014:collabUntrackGrab","exportIndex":14,"name":"collabUntrackGrab","kind":"function","signature":"collabUntrackGrab(editor, entityId)","summary":"Notify collab that local user released a grabbed entity. Releases per-entity ownership so default authority resumes."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorCollab.md","moduleTitle":"modules/EditorCollab","source":"editor/js/modules/EditorCollab.js","import":"/editor/js/modules/EditorCollab.js","sourceHash":"febf26bea6606fe4b8401149e6a7f273502d3da3fcb6f406059c25f7c3c499c0","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorCollab.js#0015:collabClaimSelected","exportIndex":15,"name":"collabClaimSelected","kind":"function","signature":"collabClaimSelected(editor, entityId)","summary":"Claim ownership of an entity at SELECTED priority (inspector editing)."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorCollab.md","moduleTitle":"modules/EditorCollab","source":"editor/js/modules/EditorCollab.js","import":"/editor/js/modules/EditorCollab.js","sourceHash":"febf26bea6606fe4b8401149e6a7f273502d3da3fcb6f406059c25f7c3c499c0","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorCollab.js#0016:collabReleaseEntity","exportIndex":16,"name":"collabReleaseEntity","kind":"function","signature":"collabReleaseEntity(editor, entityId)","summary":"Release ownership of an entity (selected or grabbed)."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorCollab.md","moduleTitle":"modules/EditorCollab","source":"editor/js/modules/EditorCollab.js","import":"/editor/js/modules/EditorCollab.js","sourceHash":"febf26bea6606fe4b8401149e6a7f273502d3da3fcb6f406059c25f7c3c499c0","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorCollab.js#0017:getCollabEntityOwner","exportIndex":17,"name":"getCollabEntityOwner","kind":"function","signature":"getCollabEntityOwner(editor, entityId)","summary":"Get the current owner of an entity. Returns { ownerId, priority } or null."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorCollab.md","moduleTitle":"modules/EditorCollab","source":"editor/js/modules/EditorCollab.js","import":"/editor/js/modules/EditorCollab.js","sourceHash":"febf26bea6606fe4b8401149e6a7f273502d3da3fcb6f406059c25f7c3c499c0","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorCollab.js#0018:isCollabEntityLocallyOwned","exportIndex":18,"name":"isCollabEntityLocallyOwned","kind":"function","signature":"isCollabEntityLocallyOwned(editor, entityId)","summary":"Check if the local peer owns an entity."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorCollab.md","moduleTitle":"modules/EditorCollab","source":"editor/js/modules/EditorCollab.js","import":"/editor/js/modules/EditorCollab.js","sourceHash":"febf26bea6606fe4b8401149e6a7f273502d3da3fcb6f406059c25f7c3c499c0","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorCollab.js#0019:getCollabGrabGlows","exportIndex":19,"name":"getCollabGrabGlows","kind":"function","signature":"getCollabGrabGlows(editor)","summary":"Get map of entityId → color hex for entities being grabbed by remote peers. Used by Viewport to render grab glow."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorCollab.md","moduleTitle":"modules/EditorCollab","source":"editor/js/modules/EditorCollab.js","import":"/editor/js/modules/EditorCollab.js","sourceHash":"febf26bea6606fe4b8401149e6a7f273502d3da3fcb6f406059c25f7c3c499c0","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorCollab.js#0020:isCollabPlayAuthority","exportIndex":20,"name":"isCollabPlayAuthority","kind":"function","signature":"isCollabPlayAuthority(editor)","summary":"Returns true if this peer is the physics authority during play mode. Non-authority peers should skip local physics stepping and instead receive transforms from the authority."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorCollab.md","moduleTitle":"modules/EditorCollab","source":"editor/js/modules/EditorCollab.js","import":"/editor/js/modules/EditorCollab.js","sourceHash":"febf26bea6606fe4b8401149e6a7f273502d3da3fcb6f406059c25f7c3c499c0","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorCollab.js#0021:collabInterpolateFrame","exportIndex":21,"name":"collabInterpolateFrame","kind":"function","signature":"collabInterpolateFrame(editor)","summary":"Interpolate buffered remote transforms. Call every render frame on non-authority peers. Smoothly tweens entity positions between received keyframes with a 100ms render delay."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorCollab.md","moduleTitle":"modules/EditorCollab","source":"editor/js/modules/EditorCollab.js","import":"/editor/js/modules/EditorCollab.js","sourceHash":"febf26bea6606fe4b8401149e6a7f273502d3da3fcb6f406059c25f7c3c499c0","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorCollab.js#0022:hostRoom","exportIndex":22,"name":"hostRoom","kind":"function","signature":"hostRoom(editor, roomId, wordKey, numberKey)","summary":"Host a room. Auto-generates word key and number key if not provided. Starts signaling so peers can discover this host."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorCollab.md","moduleTitle":"modules/EditorCollab","source":"editor/js/modules/EditorCollab.js","import":"/editor/js/modules/EditorCollab.js","sourceHash":"febf26bea6606fe4b8401149e6a7f273502d3da3fcb6f406059c25f7c3c499c0","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorCollab.js#0023:setCollabRoom","exportIndex":23,"name":"setCollabRoom","kind":"function","signature":"setCollabRoom(editor, roomId, wordKey, numberKey, hostId, hostFingerprint)","summary":"Join a room with dual-key authentication (all 3 must match the host). Legacy alias: setCollabRoomId calls this."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorCollab.md","moduleTitle":"modules/EditorCollab","source":"editor/js/modules/EditorCollab.js","import":"/editor/js/modules/EditorCollab.js","sourceHash":"febf26bea6606fe4b8401149e6a7f273502d3da3fcb6f406059c25f7c3c499c0","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorCollab.js#0024:setCollabRoomId","exportIndex":24,"name":"setCollabRoomId","kind":"function","signature":"setCollabRoomId(editor, roomId)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorCollab.md","moduleTitle":"modules/EditorCollab","source":"editor/js/modules/EditorCollab.js","import":"/editor/js/modules/EditorCollab.js","sourceHash":"febf26bea6606fe4b8401149e6a7f273502d3da3fcb6f406059c25f7c3c499c0","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorCollab.js#0025:setAnonMode","exportIndex":25,"name":"setAnonMode","kind":"function","signature":"setAnonMode(editor, enabled)","summary":"Toggle anonymous mode. Must be called BEFORE hostRoom/joinRoom. When enabled: - Peers get random anonymous IDs (different each session) - Real peer IDs are stripped from all ops - TURN-only relay hides IP addresses - Garlic encryption prevents relay from reading message content"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorCollab.md","moduleTitle":"modules/EditorCollab","source":"editor/js/modules/EditorCollab.js","import":"/editor/js/modules/EditorCollab.js","sourceHash":"febf26bea6606fe4b8401149e6a7f273502d3da3fcb6f406059c25f7c3c499c0","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorCollab.js#0026:leaveRoom","exportIndex":26,"name":"leaveRoom","kind":"function","signature":"leaveRoom(editor)","summary":"Leave the current room. Stops signaling and clears peer state. Does NOT destroy the collab system — user can Host/Join again."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorCollab.md","moduleTitle":"modules/EditorCollab","source":"editor/js/modules/EditorCollab.js","import":"/editor/js/modules/EditorCollab.js","sourceHash":"febf26bea6606fe4b8401149e6a7f273502d3da3fcb6f406059c25f7c3c499c0","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorCollab.js#0027:generateWordKey","exportIndex":27,"name":"generateWordKey","kind":"function","signature":"generateWordKey()","summary":"Generate a random word key (two words joined by a dash). 120 words × 120 words = 14,400 combinations per word pair."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorCollab.md","moduleTitle":"modules/EditorCollab","source":"editor/js/modules/EditorCollab.js","import":"/editor/js/modules/EditorCollab.js","sourceHash":"febf26bea6606fe4b8401149e6a7f273502d3da3fcb6f406059c25f7c3c499c0","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorCollab.js#0028:generateNumberKey","exportIndex":28,"name":"generateNumberKey","kind":"function","signature":"generateNumberKey()","summary":"Generate a random 6-digit number key. 900,000 combinations (100000-999999). Total key space with words: 120×120×900000 ≈ 12.96 billion combinations."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorCollab.md","moduleTitle":"modules/EditorCollab","source":"editor/js/modules/EditorCollab.js","import":"/editor/js/modules/EditorCollab.js","sourceHash":"febf26bea6606fe4b8401149e6a7f273502d3da3fcb6f406059c25f7c3c499c0","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorCollab.js#0029:encodeInviteCode","exportIndex":29,"name":"encodeInviteCode","kind":"function","signature":"encodeInviteCode(roomId, wordKey, numberKey, hostId, hostFingerprint)","summary":"Encode room credentials into a single invite code string. Format: PE-<base64url(roomId § wordKey § numberKey § hostId § hostFingerprint)> The hostFingerprint (16 hex chars) allows joiners to verify host identity."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorCollab.md","moduleTitle":"modules/EditorCollab","source":"editor/js/modules/EditorCollab.js","import":"/editor/js/modules/EditorCollab.js","sourceHash":"febf26bea6606fe4b8401149e6a7f273502d3da3fcb6f406059c25f7c3c499c0","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorCollab.js#0030:decodeInviteCode","exportIndex":30,"name":"decodeInviteCode","kind":"function","signature":"decodeInviteCode(code)","summary":"Decode an invite code back to { roomId, wordKey, numberKey, hostId, hostFingerprint }. Returns null if the code is invalid."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorCollab.md","moduleTitle":"modules/EditorCollab","source":"editor/js/modules/EditorCollab.js","import":"/editor/js/modules/EditorCollab.js","sourceHash":"febf26bea6606fe4b8401149e6a7f273502d3da3fcb6f406059c25f7c3c499c0","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorCollab.js#0031:setAutoMod","exportIndex":31,"name":"setAutoMod","kind":"function","signature":"setAutoMod(editor, enabled)","summary":"Toggle auto-moderation (auto-kick, mute, throttle from integrity violations). Only the host can enable/disable. Off by default."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorCollab.md","moduleTitle":"modules/EditorCollab","source":"editor/js/modules/EditorCollab.js","import":"/editor/js/modules/EditorCollab.js","sourceHash":"febf26bea6606fe4b8401149e6a7f273502d3da3fcb6f406059c25f7c3c499c0","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorCollab.js#0032:kickPeer","exportIndex":32,"name":"kickPeer","kind":"function","signature":"kickPeer(editor, peerId)","summary":"Kick a peer from the room. Only the host (first connected) should call this. Broadcasts a __kick__ op, then the kicked peer clears its stored credentials."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorCollab.md","moduleTitle":"modules/EditorCollab","source":"editor/js/modules/EditorCollab.js","import":"/editor/js/modules/EditorCollab.js","sourceHash":"febf26bea6606fe4b8401149e6a7f273502d3da3fcb6f406059c25f7c3c499c0","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorCollab.js#0033:getSavedRoomCredentials","exportIndex":33,"name":"getSavedRoomCredentials","kind":"function","signature":"getSavedRoomCredentials()","summary":"Get saved room credentials from localStorage."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorCollab.md","moduleTitle":"modules/EditorCollab","source":"editor/js/modules/EditorCollab.js","import":"/editor/js/modules/EditorCollab.js","sourceHash":"febf26bea6606fe4b8401149e6a7f273502d3da3fcb6f406059c25f7c3c499c0","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorCollab.js#0034:clearRoomCredentials","exportIndex":34,"name":"clearRoomCredentials","kind":"function","signature":"clearRoomCredentials()","summary":"Clear saved room credentials (called on kick or manual disconnect)."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorCollab.md","moduleTitle":"modules/EditorCollab","source":"editor/js/modules/EditorCollab.js","import":"/editor/js/modules/EditorCollab.js","sourceHash":"febf26bea6606fe4b8401149e6a7f273502d3da3fcb6f406059c25f7c3c499c0","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorCollab.js#0035:injectCollabStorageDeps","exportIndex":35,"name":"injectCollabStorageDeps","kind":"function","signature":"injectCollabStorageDeps(deps)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorCollab.md","moduleTitle":"modules/EditorCollab","source":"editor/js/modules/EditorCollab.js","import":"/editor/js/modules/EditorCollab.js","sourceHash":"febf26bea6606fe4b8401149e6a7f273502d3da3fcb6f406059c25f7c3c499c0","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorCollab.js#0036:injectCollabHistoryHelpers","exportIndex":36,"name":"injectCollabHistoryHelpers","kind":"function","signature":"injectCollabHistoryHelpers(helpers)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorCollab.md","moduleTitle":"modules/EditorCollab","source":"editor/js/modules/EditorCollab.js","import":"/editor/js/modules/EditorCollab.js","sourceHash":"febf26bea6606fe4b8401149e6a7f273502d3da3fcb6f406059c25f7c3c499c0","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorCollab.js#0037:editorCollabCompositeSuffix","exportIndex":37,"name":"editorCollabCompositeSuffix","kind":"function","signature":"editorCollabCompositeSuffix(raw)","summary":"Build a composite project ID from room + wordKey + numberKey. The composite is used as the BitTorrent info_hash seed, so only peers with all 3 matching values will discover each other on the swarm. IMPORTANT: NEVER returns a bare roomId. Even without keys, a random salt is included so two users with the same folder name can't collide. The hostId (selfId of host) is mixed in when hosting to guarantee that different hosts with identical room+word+number still get unique swarms. Uses FNV-1a 64-bit (emulated as two 32-bit hashes) for collision resistance."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorCollab.md","moduleTitle":"modules/EditorCollab","source":"editor/js/modules/EditorCollab.js","import":"/editor/js/modules/EditorCollab.js","sourceHash":"febf26bea6606fe4b8401149e6a7f273502d3da3fcb6f406059c25f7c3c499c0","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorCollab.js#0038:buildEditorCollabCompositeId","exportIndex":38,"name":"buildEditorCollabCompositeId","kind":"function","signature":"buildEditorCollabCompositeId(roomId, wordKey, numberKey, hostId)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorGuide.md","moduleTitle":"modules/EditorGuide","source":"editor/js/modules/EditorGuide.js","import":"/editor/js/modules/EditorGuide.js","sourceHash":"bcebabc41b9d2d8a731853d105c324bcdc521fd150b3059788b2f35df5bd0aa2","subsystem":"editor","recordType":"api-module","id":"module:editor/js/modules/EditorGuide.js","title":"modules/EditorGuide","summary":"EditorGuide.js — Fullscreen interactive guide overlay Future-proof feature list: - ARIA accessibility (role=dialog, aria-modal, focus trap) - Keyboard nav (Arrow keys sidebar, Tab sections, ? global shortcut) - Search / filter across all section text - localStorage progress tracking with completion badges - First-launch auto-show - Guide versioning — \"what's new\" badge on updates - Deep linking via URL hash (#guide-camera) - Scroll progress bar - Reading time estimates per section - Interactive demo placeholder canvases (ready for engine runtime) - Print-friendly CSS (@media print)","exportCount":6}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorGuide.md","moduleTitle":"modules/EditorGuide","source":"editor/js/modules/EditorGuide.js","import":"/editor/js/modules/EditorGuide.js","sourceHash":"bcebabc41b9d2d8a731853d105c324bcdc521fd150b3059788b2f35df5bd0aa2","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorGuide.js#0000:show","exportIndex":0,"name":"show","kind":"function","signature":"show(sectionId)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorGuide.md","moduleTitle":"modules/EditorGuide","source":"editor/js/modules/EditorGuide.js","import":"/editor/js/modules/EditorGuide.js","sourceHash":"bcebabc41b9d2d8a731853d105c324bcdc521fd150b3059788b2f35df5bd0aa2","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorGuide.js#0001:hide","exportIndex":1,"name":"hide","kind":"function","signature":"hide()","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorGuide.md","moduleTitle":"modules/EditorGuide","source":"editor/js/modules/EditorGuide.js","import":"/editor/js/modules/EditorGuide.js","sourceHash":"bcebabc41b9d2d8a731853d105c324bcdc521fd150b3059788b2f35df5bd0aa2","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorGuide.js#0002:toggle","exportIndex":2,"name":"toggle","kind":"function","signature":"toggle()","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorGuide.md","moduleTitle":"modules/EditorGuide","source":"editor/js/modules/EditorGuide.js","import":"/editor/js/modules/EditorGuide.js","sourceHash":"bcebabc41b9d2d8a731853d105c324bcdc521fd150b3059788b2f35df5bd0aa2","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorGuide.js#0003:isVisible","exportIndex":3,"name":"isVisible","kind":"function","signature":"isVisible()","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorGuide.md","moduleTitle":"modules/EditorGuide","source":"editor/js/modules/EditorGuide.js","import":"/editor/js/modules/EditorGuide.js","sourceHash":"bcebabc41b9d2d8a731853d105c324bcdc521fd150b3059788b2f35df5bd0aa2","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorGuide.js#0004:checkFirstLaunch","exportIndex":4,"name":"checkFirstLaunch","kind":"function","signature":"checkFirstLaunch()","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorGuide.md","moduleTitle":"modules/EditorGuide","source":"editor/js/modules/EditorGuide.js","import":"/editor/js/modules/EditorGuide.js","sourceHash":"bcebabc41b9d2d8a731853d105c324bcdc521fd150b3059788b2f35df5bd0aa2","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorGuide.js#0005:checkHashLink","exportIndex":5,"name":"checkHashLink","kind":"function","signature":"checkHashLink()","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorHistory.md","moduleTitle":"modules/EditorHistory","source":"editor/js/modules/EditorHistory.js","import":"/editor/js/modules/EditorHistory.js","sourceHash":"9b1878b55f15a8c5eac6585bd068fc313cf524da470f0ff0afbee7599612bf5e","subsystem":"editor","recordType":"api-module","id":"module:editor/js/modules/EditorHistory.js","title":"modules/EditorHistory","summary":"EditorHistory - Undo/Redo System with Clipboard Support Action types: - transform: Entity position/rotation/scale change - create: Entity creation - delete: Entity deletion - delete_multi: Multiple entity deletion - property: Component property change - model_animation: Imported model clip/playback state change - model_morph_weights: Imported model morph ownership/weight change - rename: Entity rename - reparent: Entity moved to different folder - paste: Paste operation (multiple entities) - folder_create: Folder creation - folder_delete: Folder deletion - folder_rename: Folder rename - component_add: Component added to entity - component_remove: Component removed from entity - selection: Selection change (for group operations) Memory optimizations: - Transform actions use quantized floats (0.001 precision for position) - Batches rapid transform changes into single action Component capture: - All ECS components listed in TRACKED_COMPONENTS are captured - Add new component types to TRACKED_COMPONENTS as they're added to engine","exportCount":32}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorHistory.md","moduleTitle":"modules/EditorHistory","source":"editor/js/modules/EditorHistory.js","import":"/editor/js/modules/EditorHistory.js","sourceHash":"9b1878b55f15a8c5eac6585bd068fc313cf524da470f0ff0afbee7599612bf5e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorHistory.js#0000:setCollabBroadcastHook","exportIndex":0,"name":"setCollabBroadcastHook","kind":"function","signature":"setCollabBroadcastHook(fn)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorHistory.md","moduleTitle":"modules/EditorHistory","source":"editor/js/modules/EditorHistory.js","import":"/editor/js/modules/EditorHistory.js","sourceHash":"9b1878b55f15a8c5eac6585bd068fc313cf524da470f0ff0afbee7599612bf5e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorHistory.js#0001:setCollabReplayFlag","exportIndex":1,"name":"setCollabReplayFlag","kind":"function","signature":"setCollabReplayFlag(v)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorHistory.md","moduleTitle":"modules/EditorHistory","source":"editor/js/modules/EditorHistory.js","import":"/editor/js/modules/EditorHistory.js","sourceHash":"9b1878b55f15a8c5eac6585bd068fc313cf524da470f0ff0afbee7599612bf5e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorHistory.js#0002:initHistory","exportIndex":2,"name":"initHistory","kind":"function","signature":"initHistory(editor)","summary":"Initialize history system with editor reference"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorHistory.md","moduleTitle":"modules/EditorHistory","source":"editor/js/modules/EditorHistory.js","import":"/editor/js/modules/EditorHistory.js","sourceHash":"9b1878b55f15a8c5eac6585bd068fc313cf524da470f0ff0afbee7599612bf5e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorHistory.js#0003:selectAll","exportIndex":3,"name":"selectAll","kind":"function","signature":"selectAll()","summary":"Select all entities"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorHistory.md","moduleTitle":"modules/EditorHistory","source":"editor/js/modules/EditorHistory.js","import":"/editor/js/modules/EditorHistory.js","sourceHash":"9b1878b55f15a8c5eac6585bd068fc313cf524da470f0ff0afbee7599612bf5e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorHistory.js#0004:pushAction","exportIndex":4,"name":"pushAction","kind":"function","signature":"pushAction(action)","summary":"Push an action to the undo stack"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorHistory.md","moduleTitle":"modules/EditorHistory","source":"editor/js/modules/EditorHistory.js","import":"/editor/js/modules/EditorHistory.js","sourceHash":"9b1878b55f15a8c5eac6585bd068fc313cf524da470f0ff0afbee7599612bf5e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorHistory.js#0005:recordTransform","exportIndex":5,"name":"recordTransform","kind":"function","signature":"recordTransform(entityId, beforePos, beforeRot, beforeScale, afterPos, afterRot, afterScale)","summary":"Record a transform change (with batching and compression)"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorHistory.md","moduleTitle":"modules/EditorHistory","source":"editor/js/modules/EditorHistory.js","import":"/editor/js/modules/EditorHistory.js","sourceHash":"9b1878b55f15a8c5eac6585bd068fc313cf524da470f0ff0afbee7599612bf5e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorHistory.js#0006:flushPendingTransform","exportIndex":6,"name":"flushPendingTransform","kind":"function","signature":"flushPendingTransform()","summary":"Force commit any pending transform (call before other operations)"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorHistory.md","moduleTitle":"modules/EditorHistory","source":"editor/js/modules/EditorHistory.js","import":"/editor/js/modules/EditorHistory.js","sourceHash":"9b1878b55f15a8c5eac6585bd068fc313cf524da470f0ff0afbee7599612bf5e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorHistory.js#0007:recordCreate","exportIndex":7,"name":"recordCreate","kind":"function","signature":"recordCreate(entityId, entityData)","summary":"Record entity creation"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorHistory.md","moduleTitle":"modules/EditorHistory","source":"editor/js/modules/EditorHistory.js","import":"/editor/js/modules/EditorHistory.js","sourceHash":"9b1878b55f15a8c5eac6585bd068fc313cf524da470f0ff0afbee7599612bf5e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorHistory.js#0008:recordDelete","exportIndex":8,"name":"recordDelete","kind":"function","signature":"recordDelete(entityId, entityData)","summary":"Record entity deletion"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorHistory.md","moduleTitle":"modules/EditorHistory","source":"editor/js/modules/EditorHistory.js","import":"/editor/js/modules/EditorHistory.js","sourceHash":"9b1878b55f15a8c5eac6585bd068fc313cf524da470f0ff0afbee7599612bf5e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorHistory.js#0009:recordProperty","exportIndex":9,"name":"recordProperty","kind":"function","signature":"recordProperty(entityId, componentName, propertyName, beforeValue, afterValue)","summary":"Record property change"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorHistory.md","moduleTitle":"modules/EditorHistory","source":"editor/js/modules/EditorHistory.js","import":"/editor/js/modules/EditorHistory.js","sourceHash":"9b1878b55f15a8c5eac6585bd068fc313cf524da470f0ff0afbee7599612bf5e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorHistory.js#0010:recordModelAnimation","exportIndex":10,"name":"recordModelAnimation","kind":"function","signature":"recordModelAnimation(entityId, beforeValue, afterValue)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorHistory.md","moduleTitle":"modules/EditorHistory","source":"editor/js/modules/EditorHistory.js","import":"/editor/js/modules/EditorHistory.js","sourceHash":"9b1878b55f15a8c5eac6585bd068fc313cf524da470f0ff0afbee7599612bf5e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorHistory.js#0011:recordModelMorphWeights","exportIndex":11,"name":"recordModelMorphWeights","kind":"function","signature":"recordModelMorphWeights(entityId, beforeValue, afterValue)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorHistory.md","moduleTitle":"modules/EditorHistory","source":"editor/js/modules/EditorHistory.js","import":"/editor/js/modules/EditorHistory.js","sourceHash":"9b1878b55f15a8c5eac6585bd068fc313cf524da470f0ff0afbee7599612bf5e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorHistory.js#0012:recordRename","exportIndex":12,"name":"recordRename","kind":"function","signature":"recordRename(entityId, beforeName, afterName)","summary":"Record rename"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorHistory.md","moduleTitle":"modules/EditorHistory","source":"editor/js/modules/EditorHistory.js","import":"/editor/js/modules/EditorHistory.js","sourceHash":"9b1878b55f15a8c5eac6585bd068fc313cf524da470f0ff0afbee7599612bf5e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorHistory.js#0013:recordReparent","exportIndex":13,"name":"recordReparent","kind":"function","signature":"recordReparent(entityId, beforeFolderId, afterFolderId)","summary":"Record entity reparent (move to different folder)"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorHistory.md","moduleTitle":"modules/EditorHistory","source":"editor/js/modules/EditorHistory.js","import":"/editor/js/modules/EditorHistory.js","sourceHash":"9b1878b55f15a8c5eac6585bd068fc313cf524da470f0ff0afbee7599612bf5e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorHistory.js#0014:recordFolderCreate","exportIndex":14,"name":"recordFolderCreate","kind":"function","signature":"recordFolderCreate(folderId, folderData)","summary":"Record folder creation"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorHistory.md","moduleTitle":"modules/EditorHistory","source":"editor/js/modules/EditorHistory.js","import":"/editor/js/modules/EditorHistory.js","sourceHash":"9b1878b55f15a8c5eac6585bd068fc313cf524da470f0ff0afbee7599612bf5e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorHistory.js#0015:recordFolderDelete","exportIndex":15,"name":"recordFolderDelete","kind":"function","signature":"recordFolderDelete(folderId, folderData, childEntities)","summary":"Record folder deletion"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorHistory.md","moduleTitle":"modules/EditorHistory","source":"editor/js/modules/EditorHistory.js","import":"/editor/js/modules/EditorHistory.js","sourceHash":"9b1878b55f15a8c5eac6585bd068fc313cf524da470f0ff0afbee7599612bf5e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorHistory.js#0016:recordFolderRename","exportIndex":16,"name":"recordFolderRename","kind":"function","signature":"recordFolderRename(folderId, beforeName, afterName)","summary":"Record folder rename"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorHistory.md","moduleTitle":"modules/EditorHistory","source":"editor/js/modules/EditorHistory.js","import":"/editor/js/modules/EditorHistory.js","sourceHash":"9b1878b55f15a8c5eac6585bd068fc313cf524da470f0ff0afbee7599612bf5e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorHistory.js#0017:recordComponentAdd","exportIndex":17,"name":"recordComponentAdd","kind":"function","signature":"recordComponentAdd(entityId, componentName, componentData)","summary":"Record component added to entity"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorHistory.md","moduleTitle":"modules/EditorHistory","source":"editor/js/modules/EditorHistory.js","import":"/editor/js/modules/EditorHistory.js","sourceHash":"9b1878b55f15a8c5eac6585bd068fc313cf524da470f0ff0afbee7599612bf5e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorHistory.js#0018:recordComponentRemove","exportIndex":18,"name":"recordComponentRemove","kind":"function","signature":"recordComponentRemove(entityId, componentName, componentData)","summary":"Record component removed from entity"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorHistory.md","moduleTitle":"modules/EditorHistory","source":"editor/js/modules/EditorHistory.js","import":"/editor/js/modules/EditorHistory.js","sourceHash":"9b1878b55f15a8c5eac6585bd068fc313cf524da470f0ff0afbee7599612bf5e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorHistory.js#0019:recordSelectionChange","exportIndex":19,"name":"recordSelectionChange","kind":"function","signature":"recordSelectionChange(beforeSelection, afterSelection)","summary":"Record selection change (for group operations)"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorHistory.md","moduleTitle":"modules/EditorHistory","source":"editor/js/modules/EditorHistory.js","import":"/editor/js/modules/EditorHistory.js","sourceHash":"9b1878b55f15a8c5eac6585bd068fc313cf524da470f0ff0afbee7599612bf5e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorHistory.js#0020:undo","exportIndex":20,"name":"undo","kind":"function","signature":"undo()","summary":"Undo last action"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorHistory.md","moduleTitle":"modules/EditorHistory","source":"editor/js/modules/EditorHistory.js","import":"/editor/js/modules/EditorHistory.js","sourceHash":"9b1878b55f15a8c5eac6585bd068fc313cf524da470f0ff0afbee7599612bf5e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorHistory.js#0021:redo","exportIndex":21,"name":"redo","kind":"function","signature":"redo()","summary":"Redo last undone action"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorHistory.md","moduleTitle":"modules/EditorHistory","source":"editor/js/modules/EditorHistory.js","import":"/editor/js/modules/EditorHistory.js","sourceHash":"9b1878b55f15a8c5eac6585bd068fc313cf524da470f0ff0afbee7599612bf5e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorHistory.js#0022:copy","exportIndex":22,"name":"copy","kind":"function","signature":"copy()","summary":"Copy selected entities to clipboard"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorHistory.md","moduleTitle":"modules/EditorHistory","source":"editor/js/modules/EditorHistory.js","import":"/editor/js/modules/EditorHistory.js","sourceHash":"9b1878b55f15a8c5eac6585bd068fc313cf524da470f0ff0afbee7599612bf5e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorHistory.js#0023:cut","exportIndex":23,"name":"cut","kind":"function","signature":"cut()","summary":"Cut selected entities (copy + delete)"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorHistory.md","moduleTitle":"modules/EditorHistory","source":"editor/js/modules/EditorHistory.js","import":"/editor/js/modules/EditorHistory.js","sourceHash":"9b1878b55f15a8c5eac6585bd068fc313cf524da470f0ff0afbee7599612bf5e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorHistory.js#0024:paste","exportIndex":24,"name":"paste","kind":"function","signature":"async paste()","summary":"Paste from clipboard"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorHistory.md","moduleTitle":"modules/EditorHistory","source":"editor/js/modules/EditorHistory.js","import":"/editor/js/modules/EditorHistory.js","sourceHash":"9b1878b55f15a8c5eac6585bd068fc313cf524da470f0ff0afbee7599612bf5e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorHistory.js#0025:duplicate","exportIndex":25,"name":"duplicate","kind":"function","signature":"async duplicate()","summary":"Duplicate selected entities"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorHistory.md","moduleTitle":"modules/EditorHistory","source":"editor/js/modules/EditorHistory.js","import":"/editor/js/modules/EditorHistory.js","sourceHash":"9b1878b55f15a8c5eac6585bd068fc313cf524da470f0ff0afbee7599612bf5e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorHistory.js#0026:deleteSelected","exportIndex":26,"name":"deleteSelected","kind":"function","signature":"deleteSelected()","summary":"Delete selected entities"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorHistory.md","moduleTitle":"modules/EditorHistory","source":"editor/js/modules/EditorHistory.js","import":"/editor/js/modules/EditorHistory.js","sourceHash":"9b1878b55f15a8c5eac6585bd068fc313cf524da470f0ff0afbee7599612bf5e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorHistory.js#0027:clearHistory","exportIndex":27,"name":"clearHistory","kind":"function","signature":"clearHistory()","summary":"Clear all history"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorHistory.md","moduleTitle":"modules/EditorHistory","source":"editor/js/modules/EditorHistory.js","import":"/editor/js/modules/EditorHistory.js","sourceHash":"9b1878b55f15a8c5eac6585bd068fc313cf524da470f0ff0afbee7599612bf5e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorHistory.js#0028:getHistoryState","exportIndex":28,"name":"getHistoryState","kind":"function","signature":"getHistoryState()","summary":"Get history state for debugging"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorHistory.md","moduleTitle":"modules/EditorHistory","source":"editor/js/modules/EditorHistory.js","import":"/editor/js/modules/EditorHistory.js","sourceHash":"9b1878b55f15a8c5eac6585bd068fc313cf524da470f0ff0afbee7599612bf5e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorHistory.js#0029:canUndo","exportIndex":29,"name":"canUndo","kind":"function","signature":"canUndo()","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorHistory.md","moduleTitle":"modules/EditorHistory","source":"editor/js/modules/EditorHistory.js","import":"/editor/js/modules/EditorHistory.js","sourceHash":"9b1878b55f15a8c5eac6585bd068fc313cf524da470f0ff0afbee7599612bf5e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorHistory.js#0030:canRedo","exportIndex":30,"name":"canRedo","kind":"function","signature":"canRedo()","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorHistory.md","moduleTitle":"modules/EditorHistory","source":"editor/js/modules/EditorHistory.js","import":"/editor/js/modules/EditorHistory.js","sourceHash":"9b1878b55f15a8c5eac6585bd068fc313cf524da470f0ff0afbee7599612bf5e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorHistory.js#0031:hasClipboard","exportIndex":31,"name":"hasClipboard","kind":"function","signature":"hasClipboard()","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorMeshConversions.md","moduleTitle":"modules/EditorMeshConversions","source":"editor/js/modules/EditorMeshConversions.js","import":"/editor/js/modules/EditorMeshConversions.js","sourceHash":"2ba141a3a6ac91d4e804c6cffae4e9a42f6fe3c93937e2f4dc0f2b62ab8f66c1","subsystem":"editor","recordType":"api-module","id":"module:editor/js/modules/EditorMeshConversions.js","title":"modules/EditorMeshConversions","summary":"============================================================================ EditorMeshConversions.js — Mesh conversion operations for editor entities  Bridges Kaolin conversion modules to the editor: - Mesh → Voxel grid (MeshToVoxel) - Mesh → Point cloud (MeshToPoints) - Mesh → Soft Body (AutoTetMesh → PBD sim) - Points → Mesh (PointsToMesh) - SDF → Mesh (SDFToMesh) - Export mesh as OBJ/PLY/STL (MeshIO) ============================================================================","exportCount":6}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorMeshConversions.md","moduleTitle":"modules/EditorMeshConversions","source":"editor/js/modules/EditorMeshConversions.js","import":"/editor/js/modules/EditorMeshConversions.js","sourceHash":"2ba141a3a6ac91d4e804c6cffae4e9a42f6fe3c93937e2f4dc0f2b62ab8f66c1","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorMeshConversions.js#0000:meshToVoxel","exportIndex":0,"name":"meshToVoxel","kind":"function","signature":"async meshToVoxel(editor, entityId, opts = {})","summary":"Voxelize an entity's mesh and spawn a new entity with the voxel data."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorMeshConversions.md","moduleTitle":"modules/EditorMeshConversions","source":"editor/js/modules/EditorMeshConversions.js","import":"/editor/js/modules/EditorMeshConversions.js","sourceHash":"2ba141a3a6ac91d4e804c6cffae4e9a42f6fe3c93937e2f4dc0f2b62ab8f66c1","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorMeshConversions.js#0001:meshToPoints","exportIndex":1,"name":"meshToPoints","kind":"function","signature":"async meshToPoints(editor, entityId, opts = {})","summary":"Sample points from an entity's mesh and spawn a point cloud entity."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorMeshConversions.md","moduleTitle":"modules/EditorMeshConversions","source":"editor/js/modules/EditorMeshConversions.js","import":"/editor/js/modules/EditorMeshConversions.js","sourceHash":"2ba141a3a6ac91d4e804c6cffae4e9a42f6fe3c93937e2f4dc0f2b62ab8f66c1","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorMeshConversions.js#0002:meshToSoftBody","exportIndex":2,"name":"meshToSoftBody","kind":"function","signature":"async meshToSoftBody(editor, entityId, opts = {})","summary":"Convert an entity's mesh to a soft body using AutoTetMesh."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorMeshConversions.md","moduleTitle":"modules/EditorMeshConversions","source":"editor/js/modules/EditorMeshConversions.js","import":"/editor/js/modules/EditorMeshConversions.js","sourceHash":"2ba141a3a6ac91d4e804c6cffae4e9a42f6fe3c93937e2f4dc0f2b62ab8f66c1","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorMeshConversions.js#0003:pointsToMesh","exportIndex":3,"name":"pointsToMesh","kind":"function","signature":"async pointsToMesh(editor, entityId, opts = {})","summary":"Reconstruct a mesh from a point cloud entity."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorMeshConversions.md","moduleTitle":"modules/EditorMeshConversions","source":"editor/js/modules/EditorMeshConversions.js","import":"/editor/js/modules/EditorMeshConversions.js","sourceHash":"2ba141a3a6ac91d4e804c6cffae4e9a42f6fe3c93937e2f4dc0f2b62ab8f66c1","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorMeshConversions.js#0004:sdfToMesh","exportIndex":4,"name":"sdfToMesh","kind":"function","signature":"async sdfToMesh(sdfFn, opts = {})","summary":"Generate a mesh from an SDF function."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorMeshConversions.md","moduleTitle":"modules/EditorMeshConversions","source":"editor/js/modules/EditorMeshConversions.js","import":"/editor/js/modules/EditorMeshConversions.js","sourceHash":"2ba141a3a6ac91d4e804c6cffae4e9a42f6fe3c93937e2f4dc0f2b62ab8f66c1","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorMeshConversions.js#0005:exportMesh","exportIndex":5,"name":"exportMesh","kind":"function","signature":"async exportMesh(editor, entityId, format = 'obj')","summary":"Export an entity's mesh as a downloadable file."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorMeshOps.md","moduleTitle":"modules/EditorMeshOps","source":"editor/js/modules/EditorMeshOps.js","import":"/editor/js/modules/EditorMeshOps.js","sourceHash":"ced3876feeee73fd7e7790e3c1eeebd7330414937bae02d305a76bf1b76665b6","subsystem":"editor","recordType":"api-module","id":"module:editor/js/modules/EditorMeshOps.js","title":"modules/EditorMeshOps","summary":"============================================================================ EditorMeshOps.js — Mesh operations for editor entities  Exposes Kaolin mesh ops (subdivide, smooth, normals, validate, flip) on selected entities. Each op clones the mesh, runs the Kaolin function, re-registers with CustomMeshRegistry + EntityMeshRenderer, and pushes an undo snapshot (hybrid: auto for <50k tris, confirm dialog for larger). ============================================================================","exportCount":2}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorMeshOps.md","moduleTitle":"modules/EditorMeshOps","source":"editor/js/modules/EditorMeshOps.js","import":"/editor/js/modules/EditorMeshOps.js","sourceHash":"ced3876feeee73fd7e7790e3c1eeebd7330414937bae02d305a76bf1b76665b6","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorMeshOps.js#0000:getMeshDataForEntity","exportIndex":0,"name":"getMeshDataForEntity","kind":"function","signature":"getMeshDataForEntity(editor, entityId)","summary":"Get mesh geometry data for an entity. Checks CustomMeshRegistry first, then EntityMeshRenderer cache."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorMeshOps.md","moduleTitle":"modules/EditorMeshOps","source":"editor/js/modules/EditorMeshOps.js","import":"/editor/js/modules/EditorMeshOps.js","sourceHash":"ced3876feeee73fd7e7790e3c1eeebd7330414937bae02d305a76bf1b76665b6","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorMeshOps.js#0001:applyMeshOp","exportIndex":1,"name":"applyMeshOp","kind":"function","signature":"async applyMeshOp(editor, entityId, opName, params = {})","summary":"Apply a mesh operation to an entity. Pipeline: get mesh → optional undo snapshot → run op → re-register → update entity."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorMetrics.md","moduleTitle":"modules/EditorMetrics","source":"editor/js/modules/EditorMetrics.js","import":"/editor/js/modules/EditorMetrics.js","sourceHash":"528d723e3e03ac2c4a476a2d8f96b7d74ce8f6f94877e71eb0b918f1f9b19b35","subsystem":"editor","recordType":"api-module","id":"module:editor/js/modules/EditorMetrics.js","title":"modules/EditorMetrics","summary":"============================================================================ EditorMetrics.js — 3D mesh comparison metrics for the editor console  Exposes Kaolin metrics (Chamfer Distance, Hausdorff, Volumetric IoU) as editor commands for comparing mesh entities.  Usage (from editor console or script): editor.compareMeshes(entityA, entityB) editor.meshMetrics(entityA, entityB, 'chamfer') ============================================================================","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorMetrics.md","moduleTitle":"modules/EditorMetrics","source":"editor/js/modules/EditorMetrics.js","import":"/editor/js/modules/EditorMetrics.js","sourceHash":"528d723e3e03ac2c4a476a2d8f96b7d74ce8f6f94877e71eb0b918f1f9b19b35","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorMetrics.js#0000:setupMetricsCommands","exportIndex":0,"name":"setupMetricsCommands","kind":"function","signature":"setupMetricsCommands(editor)","summary":"Setup mesh metrics commands on the editor instance. Call once during editor initialization."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticleSkinning.md","moduleTitle":"modules/EditorParticleSkinning","source":"editor/js/modules/EditorParticleSkinning.js","import":"/editor/js/modules/EditorParticleSkinning.js","sourceHash":"b90fd337b2461c7fccc731b67c50846d6b5d23722b20d4cf914c309c0ab0c169","subsystem":"editor","recordType":"api-module","id":"module:editor/js/modules/EditorParticleSkinning.js","title":"modules/EditorParticleSkinning","summary":"============================================================================ EditorParticleSkinning.js — Editor bridge for learned deformation skinning  Connects Kaolin's ParticleSkinning pipeline to the editor: 1. Capture deformation snapshots from a running soft body sim 2. Extract PCA deformation modes 3. Compute skinning weights 4. Bake to animation keyframes for replay without physics 5. Runtime preview via skinning evaluator  Usage (from editor console or context menu): editor.skinning.startCapture(entityId) editor.skinning.stopCapture(entityId) editor.skinning.train(entityId, { numModes: 8 }) editor.skinning.bake(entityId, { fps: 60 }) editor.skinning.playBaked(entityId) ============================================================================","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticleSkinning.md","moduleTitle":"modules/EditorParticleSkinning","source":"editor/js/modules/EditorParticleSkinning.js","import":"/editor/js/modules/EditorParticleSkinning.js","sourceHash":"b90fd337b2461c7fccc731b67c50846d6b5d23722b20d4cf914c309c0ab0c169","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticleSkinning.js#0000:setupSkinningCommands","exportIndex":0,"name":"setupSkinningCommands","kind":"function","signature":"setupSkinningCommands(editor)","summary":"Set up particle skinning commands on the editor instance."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-module","id":"module:editor/js/modules/EditorParticles.js","title":"modules/EditorParticles","summary":"Initialize the particle system for the editor","exportCount":105}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0000:applyParticleTimelineSettings","exportIndex":0,"name":"applyParticleTimelineSettings","kind":"function","signature":"applyParticleTimelineSettings(editor)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0001:initParticleSystem","exportIndex":1,"name":"initParticleSystem","kind":"function","signature":"async initParticleSystem(editor, device, format)","summary":"Initialize the particle system for the editor"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0002:stopParticleAudio","exportIndex":2,"name":"stopParticleAudio","kind":"function","signature":"stopParticleAudio()","summary":"Immediately stop all particle audio (impacts + ambients). Called when exiting play mode (Stop button)."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0003:destroyParticleSystem","exportIndex":3,"name":"destroyParticleSystem","kind":"function","signature":"destroyParticleSystem()","summary":"Destroy the particle system"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0004:syncWorldSystemsToEmitters","exportIndex":4,"name":"syncWorldSystemsToEmitters","kind":"function","signature":"syncWorldSystemsToEmitters()","summary":"Scan all active emitters' physics profiles and ensure required world systems are initialized. Call this after registering emitters or when emitter substances change."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0005:registerEmitter","exportIndex":5,"name":"registerEmitter","kind":"function","signature":"registerEmitter(entityId, config)","summary":"Register an emitter entity"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0006:unregisterEmitter","exportIndex":6,"name":"unregisterEmitter","kind":"function","signature":"unregisterEmitter(entityId)","summary":"Unregister an emitter entity"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0007:createComposedSpellEffect","exportIndex":7,"name":"createComposedSpellEffect","kind":"function","signature":"createComposedSpellEffect(editor, sourceEntityId, elements, baseConfig)","summary":"=== AUTO-BLENDING SPELL EFFECT COMPOSER === Applies composed spell effect properties directly to the source emitter. Does NOT create child entities — modifies the source emitter's visual properties based on the element mix to produce a richer, more layered look. The composer analyzes the element combination and applies: - Optimized color derived from element combo - Adjusted emit rate, size, lifetime for a \"spell-like\" feel - Temperature and material properties from element chemistry Called by \"Create Spell From This\" button in EmitterInspectorCard.js."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0008:updateEmitter","exportIndex":8,"name":"updateEmitter","kind":"function","signature":"updateEmitter(entityId, config)","summary":"Update emitter configuration"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0009:enableEmitter","exportIndex":9,"name":"enableEmitter","kind":"function","signature":"enableEmitter(entityId)","summary":"Enable an emitter"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0010:disableEmitter","exportIndex":10,"name":"disableEmitter","kind":"function","signature":"disableEmitter(entityId)","summary":"Disable an emitter"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0011:toggleEmitter","exportIndex":11,"name":"toggleEmitter","kind":"function","signature":"toggleEmitter(entityId)","summary":"Toggle emitter on/off"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0012:isEmitterEnabled","exportIndex":12,"name":"isEmitterEnabled","kind":"function","signature":"isEmitterEnabled(entityId)","summary":"Check if emitter is enabled"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0013:getEmitter","exportIndex":13,"name":"getEmitter","kind":"function","signature":"getEmitter(entityId)","summary":"Get emitter by entity ID (for inspector UI binding)"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0014:hasEmitter","exportIndex":14,"name":"hasEmitter","kind":"function","signature":"hasEmitter(entityId)","summary":"Check if an entity has an emitter"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0015:saveEmitterToECS","exportIndex":15,"name":"saveEmitterToECS","kind":"function","signature":"saveEmitterToECS(editor, entityId)","summary":"Save emitter config to entity metadata for serialization"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0016:seedParticleRng","exportIndex":16,"name":"seedParticleRng","kind":"function","signature":"seedParticleRng(seed, tick = 0)","summary":"Seed the particle RNG with a shared collab seed. Call at play start so all peers produce identical particle sequences."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0017:saveAllEmittersToECS","exportIndex":17,"name":"saveAllEmittersToECS","kind":"function","signature":"saveAllEmittersToECS(editor)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0018:updateParticleQuality","exportIndex":18,"name":"updateParticleQuality","kind":"function","signature":"updateParticleQuality(editor, frameDt, cameraPosition = null)","summary":"Feed the quality stack once per displayed frame using measured wall-clock time. Fixed simulation ticks must not drive this API because a constant 16.67 ms input hides real render pressure and prevents adaptive quality from reacting."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0019:getParticleQualityStackStatus","exportIndex":19,"name":"getParticleQualityStackStatus","kind":"function","signature":"getParticleQualityStackStatus()","summary":"Return a serializable, truthful snapshot of every active particle quality layer."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0020:stepParticles","exportIndex":20,"name":"stepParticles","kind":"function","signature":"stepParticles(editor, dt)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0021:prepareDebugRenderer","exportIndex":21,"name":"prepareDebugRenderer","kind":"function","signature":"async prepareDebugRenderer(mode)","summary":"Prepare a debug renderer for use (call before switching to debug mode)"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0022:isDebugRendererReady","exportIndex":22,"name":"isDebugRendererReady","kind":"function","signature":"isDebugRendererReady(mode)","summary":"Check if a debug renderer is ready"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0023:renderParticlesDepth","exportIndex":23,"name":"renderParticlesDepth","kind":"function","signature":"renderParticlesDepth(pass, camera)","summary":"Render particles to depth texture"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0024:renderParticlesNormals","exportIndex":24,"name":"renderParticlesNormals","kind":"function","signature":"renderParticlesNormals(pass, camera)","summary":"Render particles normals to texture"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0025:renderParticlesAlbedo","exportIndex":25,"name":"renderParticlesAlbedo","kind":"function","signature":"renderParticlesAlbedo(pass, camera)","summary":"Render particles albedo to texture"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0026:renderParticlesLighting","exportIndex":26,"name":"renderParticlesLighting","kind":"function","signature":"renderParticlesLighting(pass, camera)","summary":"Render particles lighting to texture"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0027:renderParticlesVelocity","exportIndex":27,"name":"renderParticlesVelocity","kind":"function","signature":"renderParticlesVelocity(pass, camera)","summary":"Render particles velocity to texture"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0028:renderParticlesAge","exportIndex":28,"name":"renderParticlesAge","kind":"function","signature":"renderParticlesAge(pass, camera)","summary":"Render particles age to texture"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0029:renderParticlesEmissive","exportIndex":29,"name":"renderParticlesEmissive","kind":"function","signature":"renderParticlesEmissive(pass, camera)","summary":"Render particles emissive to texture"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0030:renderParticlesSize","exportIndex":30,"name":"renderParticlesSize","kind":"function","signature":"renderParticlesSize(pass, camera)","summary":"Render particles size to texture"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0031:renderParticlesThermal","exportIndex":31,"name":"renderParticlesThermal","kind":"function","signature":"renderParticlesThermal(pass, camera)","summary":"Render particles thermal/blackbody to texture"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0032:setThermalEnabled","exportIndex":32,"name":"setThermalEnabled","kind":"function","signature":"setThermalEnabled(enabled)","summary":"Enable/disable blackbody thermal coloring in the main SDF render. When disabled (default), particles render with base colors only. Use the Thermal debug pass to visualize temperature separately."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0033:isThermalEnabled","exportIndex":33,"name":"isThermalEnabled","kind":"function","signature":"isThermalEnabled()","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0034:renderParticles","exportIndex":34,"name":"renderParticles","kind":"function","signature":"renderParticles(pass, camera, depthTextureView, depthScale)","summary":"Render particles to the current render pass"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0035:getParticleCount","exportIndex":35,"name":"getParticleCount","kind":"function","signature":"getParticleCount()","summary":"Get current particle count"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0036:clearParticles","exportIndex":36,"name":"clearParticles","kind":"function","signature":"clearParticles()","summary":"Clear all particles - kills all living particles immediately"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0037:getParticleDecals","exportIndex":37,"name":"getParticleDecals","kind":"function","signature":"getParticleDecals()","summary":"Get active decals for rendering (from collision events)"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0038:getDecalSpawner","exportIndex":38,"name":"getDecalSpawner","kind":"function","signature":"getDecalSpawner()","summary":"Get the decal spawner (for Viewport to create its renderer)"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0039:getExtractedParticleLights","exportIndex":39,"name":"getExtractedParticleLights","kind":"function","signature":"getExtractedParticleLights()","summary":"Get extracted particle lights for scene lighting"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0040:getParticleLightSystem","exportIndex":40,"name":"getParticleLightSystem","kind":"function","signature":"getParticleLightSystem()","summary":"Get the particle light system handle"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0041:getDistortionRenderer","exportIndex":41,"name":"getDistortionRenderer","kind":"function","signature":"getDistortionRenderer(width, height, sceneFormat)","summary":"Get or lazy-create the distortion renderer for heat haze effects"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0042:initDistortion","exportIndex":42,"name":"initDistortion","kind":"function","signature":"initDistortion(sceneColorView)","summary":"Initialize distortion bind groups (call when scene color view is available)"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0043:executeDistortionPass","exportIndex":43,"name":"executeDistortionPass","kind":"function","signature":"executeDistortionPass(encoder, frameData)","summary":"Execute distortion render pass (accumulate UV offsets from hot particles)"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0044:executeDistortionComposite","exportIndex":44,"name":"executeDistortionComposite","kind":"function","signature":"executeDistortionComposite(pass)","summary":"Composite distortion onto scene"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0045:resizeDistortion","exportIndex":45,"name":"resizeDistortion","kind":"function","signature":"resizeDistortion(width, height)","summary":"Resize distortion texture on viewport resize"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0046:getTrailHistorySystem","exportIndex":46,"name":"getTrailHistorySystem","kind":"function","signature":"getTrailHistorySystem()","summary":"Get the trail history system handle"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0047:renderTrailHistoryPass","exportIndex":47,"name":"renderTrailHistoryPass","kind":"function","signature":"renderTrailHistoryPass(pass, viewProj, cameraPos, time)","summary":"Render trail histories as additive fading billboards"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0048:getBeamRenderer","exportIndex":48,"name":"getBeamRenderer","kind":"function","signature":"getBeamRenderer(format)","summary":"Get or lazy-create the beam renderer"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0049:renderBeamPass","exportIndex":49,"name":"renderBeamPass","kind":"function","signature":"renderBeamPass(pass, viewProj, viewRight, viewUp, time, segmentCount)","summary":"Render beam particles"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0050:getBeamSegmentCount","exportIndex":50,"name":"getBeamSegmentCount","kind":"function","signature":"getBeamSegmentCount()","summary":"Get the number of beam segments to render. Returns 0 unless beam-type emitters are explicitly active in the scene. Prevents the beam renderer from treating all alive particles as a single chain."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0051:updateBeamParams","exportIndex":51,"name":"updateBeamParams","kind":"function","signature":"updateBeamParams(params)","summary":"Update beam parameters"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0052:getExistingMeshRenderer","exportIndex":52,"name":"getExistingMeshRenderer","kind":"function","signature":"getExistingMeshRenderer()","summary":"Get the existing mesh renderer without triggering creation. Returns null if not yet created. Used by shadow caster integration."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0053:getMeshRenderer","exportIndex":53,"name":"getMeshRenderer","kind":"function","signature":"getMeshRenderer(format, meshConfig)","summary":"Get or lazy-create the mesh particle renderer"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0054:setParticleMeshGeometry","exportIndex":54,"name":"setParticleMeshGeometry","kind":"function","signature":"setParticleMeshGeometry(mesh)","summary":"Set the mesh geometry for particle mesh rendering"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0055:renderMeshPass","exportIndex":55,"name":"renderMeshPass","kind":"function","signature":"renderMeshPass(pass, viewProj, cameraPos, time, instanceCount)","summary":"Render mesh particles"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0056:hasLiquidEmitters","exportIndex":56,"name":"hasLiquidEmitters","kind":"function","signature":"hasLiquidEmitters()","summary":"GAP 6: Query whether any active emitter has liquid-phase particles. Viewport uses this to auto-enable/disable SSFR rendering."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0057:getLiquidSurfaceTint","exportIndex":57,"name":"getLiquidSurfaceTint","kind":"function","signature":"getLiquidSurfaceTint()","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0058:getSPHSurfaceRendererHandle","exportIndex":58,"name":"getSPHSurfaceRendererHandle","kind":"function","signature":"getSPHSurfaceRendererHandle(format, width, height)","summary":"Get or lazy-create the SPH surface renderer"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0059:setSPHSurfaceTintColor","exportIndex":59,"name":"setSPHSurfaceTintColor","kind":"function","signature":"setSPHSurfaceTintColor(tint)","summary":"GAP 13: Set SSFR tint color from substance [r, g, b]."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0060:initSPHComposite","exportIndex":60,"name":"initSPHComposite","kind":"function","signature":"initSPHComposite(sceneColorView)","summary":"Initialize SPH composite bind group (needs scene color view)"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0061:renderSPHSurfacePass","exportIndex":61,"name":"renderSPHSurfacePass","kind":"function","signature":"renderSPHSurfacePass(encoder, options)","summary":"Render SPH fluid surface depth pass"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0062:compositeSPHSurfacePass","exportIndex":62,"name":"compositeSPHSurfacePass","kind":"function","signature":"compositeSPHSurfacePass(pass)","summary":"Composite SPH surface onto scene"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0063:getBondRenderer","exportIndex":63,"name":"getBondRenderer","kind":"function","signature":"getBondRenderer(format)","summary":"Get or lazy-create the bond renderer"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0064:computeAndUploadVisualBonds","exportIndex":64,"name":"computeAndUploadVisualBonds","kind":"function","signature":"computeAndUploadVisualBonds()","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0065:renderBondPass","exportIndex":65,"name":"renderBondPass","kind":"function","signature":"renderBondPass(pass, viewProj, cameraPos, viewRight, viewUp)","summary":"Render bonds"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0066:setBondVisualsEnabled","exportIndex":66,"name":"setBondVisualsEnabled","kind":"function","signature":"setBondVisualsEnabled(enabled)","summary":"Set bond visualization enabled/disabled"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0067:setBondRadius","exportIndex":67,"name":"setBondRadius","kind":"function","signature":"setBondRadius(radius)","summary":"Set bond radius for proximity detection"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0068:getFieldRenderer","exportIndex":68,"name":"getFieldRenderer","kind":"function","signature":"getFieldRenderer(format)","summary":"Get or lazy-create the field renderer"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0069:updateFieldVisualization","exportIndex":69,"name":"updateFieldVisualization","kind":"function","signature":"updateFieldVisualization(chargedParticles, gridConfig)","summary":"Update field probes from charged particles"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0070:renderFieldPass","exportIndex":70,"name":"renderFieldPass","kind":"function","signature":"renderFieldPass(pass, viewProj, cameraPos, viewRight, viewUp)","summary":"Render field arrows"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0071:getOrbitalRenderer","exportIndex":71,"name":"getOrbitalRenderer","kind":"function","signature":"getOrbitalRenderer(format)","summary":"Get or lazy-create the orbital renderer"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0072:renderOrbitalPass","exportIndex":72,"name":"renderOrbitalPass","kind":"function","signature":"renderOrbitalPass(pass, viewProj, cameraPos, viewRight, viewUp, instanceCount)","summary":"Render orbital electron clouds"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0073:isReady","exportIndex":73,"name":"isReady","kind":"function","signature":"isReady()","summary":"Check if particle system is ready"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0074:getActiveEmitters","exportIndex":74,"name":"getActiveEmitters","kind":"function","signature":"getActiveEmitters()","summary":"Get active emitters"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0075:clearAllEmitters","exportIndex":75,"name":"clearAllEmitters","kind":"function","signature":"clearAllEmitters()","summary":"Clear all emitters and particles (used before scene reload)"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0076:spawnBurst","exportIndex":76,"name":"spawnBurst","kind":"function","signature":"spawnBurst(position, preset = 'explosion', count = 50)","summary":"Spawn a burst of particles at a position"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0077:spawnDustPuff","exportIndex":77,"name":"spawnDustPuff","kind":"function","signature":"spawnDustPuff(position, color, intensity = 0.5, normal)","summary":"Spawn a dust puff at a world position when fragments take damage or break. Uses small, soft point particles colored to match the breaking material. Best-practice references (real-time VFX): - Unreal Niagara: one-shot burst, soft sprite, high drag, gravity settle - Unity VFX Graph: short lifetime, size-over-life bell curve, alpha fade - GDC \"The Art of Destruction\": dust = desaturated material color, 0.2-0.6s"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0078:getParticleSettings","exportIndex":78,"name":"getParticleSettings","kind":"function","signature":"getParticleSettings()","summary":"Get advanced particle system settings"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0079:getParticles","exportIndex":79,"name":"getParticles","kind":"function","signature":"getParticles()","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0080:setParticleSettings","exportIndex":80,"name":"setParticleSettings","kind":"function","signature":"setParticleSettings(settings)","summary":"Update advanced particle system settings"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0081:getParticlePerformanceStats","exportIndex":81,"name":"getParticlePerformanceStats","kind":"function","signature":"getParticlePerformanceStats()","summary":"Get particle system performance stats"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0082:startParticleRewind","exportIndex":82,"name":"startParticleRewind","kind":"function","signature":"startParticleRewind()","summary":"Start particle time rewind mode"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0083:stopParticleRewind","exportIndex":83,"name":"stopParticleRewind","kind":"function","signature":"stopParticleRewind()","summary":"Stop particle rewind and resume simulation"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0084:seekParticleTime","exportIndex":84,"name":"seekParticleTime","kind":"function","signature":"seekParticleTime(timeMs)","summary":"Seek to a specific time in particle history Restores FULL particle state including spawn/death events"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0085:setParticleRewindSpeed","exportIndex":85,"name":"setParticleRewindSpeed","kind":"function","signature":"setParticleRewindSpeed(speed)","summary":"Set particle rewind playback speed"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0086:getParticleRewindInfo","exportIndex":86,"name":"getParticleRewindInfo","kind":"function","signature":"getParticleRewindInfo()","summary":"Get particle rewind/snapshot info"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0087:isParticleRewinding","exportIndex":87,"name":"isParticleRewinding","kind":"function","signature":"isParticleRewinding()","summary":"Check if particles are currently rewinding"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0088:clearParticleSnapshots","exportIndex":88,"name":"clearParticleSnapshots","kind":"function","signature":"clearParticleSnapshots()","summary":"Clear all particle snapshots"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0089:truncateParticleSnapshotsAfterTime","exportIndex":89,"name":"truncateParticleSnapshotsAfterTime","kind":"function","signature":"truncateParticleSnapshotsAfterTime(timeMs)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0090:setParticleEasing","exportIndex":90,"name":"setParticleEasing","kind":"function","signature":"setParticleEasing(easingType)","summary":"Set particle easing type for timeline interpolation"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0091:setAdvancedInterpolation","exportIndex":91,"name":"setAdvancedInterpolation","kind":"function","signature":"setAdvancedInterpolation(enabled)","summary":"Enable/disable advanced interpolation (Catmull-Rom/Hermite splines)"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0092:getInterpolationMode","exportIndex":92,"name":"getInterpolationMode","kind":"function","signature":"getInterpolationMode()","summary":"Get current interpolation mode"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0093:getParticleEasingTypes","exportIndex":93,"name":"getParticleEasingTypes","kind":"function","signature":"getParticleEasingTypes()","summary":"Get available easing types for particle rewind"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0094:initAdvancedFeatures","exportIndex":94,"name":"initAdvancedFeatures","kind":"function","signature":"initAdvancedFeatures(options = {})","summary":"Initialize advanced particle features (spatial grid, line generation) Call after initParticleSystem for enhanced features"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0095:resetQualityScale","exportIndex":95,"name":"resetQualityScale","kind":"function","signature":"resetQualityScale()","summary":"Reset quality scale to 1.0 - call when entering play mode to ensure consistent emission"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0096:updateVolumeSystem","exportIndex":96,"name":"updateVolumeSystem","kind":"function","signature":"updateVolumeSystem(encoder, camera)","summary":"Update the hybrid volumetric system (call before render)"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0097:renderVolumeSystem","exportIndex":97,"name":"renderVolumeSystem","kind":"function","signature":"renderVolumeSystem(pass, sceneColorTexture, sceneDepthTexture)","summary":"Render the hybrid volumetric system"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0098:setVolumeMode","exportIndex":98,"name":"setVolumeMode","kind":"function","signature":"setVolumeMode(mode)","summary":"Set volume render mode"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0099:setVolumeEnabled","exportIndex":99,"name":"setVolumeEnabled","kind":"function","signature":"setVolumeEnabled(enabled)","summary":"Enable/disable volume rendering"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0100:toggleVolumeRendering","exportIndex":100,"name":"toggleVolumeRendering","kind":"function","signature":"toggleVolumeRendering()","summary":"Toggle volume rendering"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0101:isVolumeReady","exportIndex":101,"name":"isVolumeReady","kind":"function","signature":"isVolumeReady()","summary":"Check if volume system is ready"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0102:getVolumeStats","exportIndex":102,"name":"getVolumeStats","kind":"function","signature":"getVolumeStats()","summary":"Get volume system stats"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0103:setVolumeBounds","exportIndex":103,"name":"setVolumeBounds","kind":"function","signature":"setVolumeBounds(min, max)","summary":"Set volume bounds"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorParticles.md","moduleTitle":"modules/EditorParticles","source":"editor/js/modules/EditorParticles.js","import":"/editor/js/modules/EditorParticles.js","sourceHash":"f012c2c4e04973b5edd1f61e1e501a6bcbe584c18e867eababb4644436420133","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorParticles.js#0104:EMITTER_PRESETS","exportIndex":104,"name":"EMITTER_PRESETS","kind":"constant","signature":"EMITTER_PRESETS","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysicalMaterial.md","moduleTitle":"modules/EditorPhysicalMaterial","source":"editor/js/modules/EditorPhysicalMaterial.js","import":"/editor/js/modules/EditorPhysicalMaterial.js","sourceHash":"b585613d7811168f062b51013563a5b6ea88e890fabe689d28e22dee3abc25ff","subsystem":"editor","recordType":"api-module","id":"module:editor/js/modules/EditorPhysicalMaterial.js","title":"modules/EditorPhysicalMaterial","summary":"============================================================================ EditorPhysicalMaterial.js — Runtime bridge for physical material simulation  Connects PhysicalMaterial ECS component to existing physics systems: - Collision → damage accumulation - Damage exceeds threshold → deform (voxel crater) or fracture (Voronoi) - Fracture spawns real ECS entities with Renderable + PhysicsBody + Collider - Material-specific debris FX (dust, sparks, splinters) - Fragment count scales with impact energy - Brittleness determines shatter vs bend behavior  Lazy-loads heavy modules (VoronoiFracture, AutoTetMesh) only when triggered. ============================================================================","exportCount":10}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysicalMaterial.md","moduleTitle":"modules/EditorPhysicalMaterial","source":"editor/js/modules/EditorPhysicalMaterial.js","import":"/editor/js/modules/EditorPhysicalMaterial.js","sourceHash":"b585613d7811168f062b51013563a5b6ea88e890fabe689d28e22dee3abc25ff","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysicalMaterial.js#0000:clearPlayState","exportIndex":0,"name":"clearPlayState","kind":"function","signature":"clearPlayState()","summary":"Clear all play-session state. Must be called when exiting play mode so that damage/fracture/deformation caches don't persist into the next session."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysicalMaterial.md","moduleTitle":"modules/EditorPhysicalMaterial","source":"editor/js/modules/EditorPhysicalMaterial.js","import":"/editor/js/modules/EditorPhysicalMaterial.js","sourceHash":"b585613d7811168f062b51013563a5b6ea88e890fabe689d28e22dee3abc25ff","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysicalMaterial.js#0001:setupPhysicalMaterialBridge","exportIndex":1,"name":"setupPhysicalMaterialBridge","kind":"function","signature":"setupPhysicalMaterialBridge(editor)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysicalMaterial.md","moduleTitle":"modules/EditorPhysicalMaterial","source":"editor/js/modules/EditorPhysicalMaterial.js","import":"/editor/js/modules/EditorPhysicalMaterial.js","sourceHash":"b585613d7811168f062b51013563a5b6ea88e890fabe689d28e22dee3abc25ff","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysicalMaterial.js#0002:handleCollision","exportIndex":2,"name":"handleCollision","kind":"function","signature":"handleCollision(editor, entityIdA, entityIdB, impactForce, contactPoint, contactNormal, massA, massB)","summary":"Handle a collision between two entities. Called from EditorPhysics.js contact callback."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysicalMaterial.md","moduleTitle":"modules/EditorPhysicalMaterial","source":"editor/js/modules/EditorPhysicalMaterial.js","import":"/editor/js/modules/EditorPhysicalMaterial.js","sourceHash":"b585613d7811168f062b51013563a5b6ea88e890fabe689d28e22dee3abc25ff","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysicalMaterial.js#0003:applyDamage","exportIndex":3,"name":"applyDamage","kind":"function","signature":"applyDamage(editor, entityId, amount)","summary":"Apply direct damage to an entity (e.g., from explosions, scripts)."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysicalMaterial.md","moduleTitle":"modules/EditorPhysicalMaterial","source":"editor/js/modules/EditorPhysicalMaterial.js","import":"/editor/js/modules/EditorPhysicalMaterial.js","sourceHash":"b585613d7811168f062b51013563a5b6ea88e890fabe689d28e22dee3abc25ff","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysicalMaterial.js#0004:resetDamage","exportIndex":4,"name":"resetDamage","kind":"function","signature":"resetDamage(editor, entityId)","summary":"Reset damage on an entity."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysicalMaterial.md","moduleTitle":"modules/EditorPhysicalMaterial","source":"editor/js/modules/EditorPhysicalMaterial.js","import":"/editor/js/modules/EditorPhysicalMaterial.js","sourceHash":"b585613d7811168f062b51013563a5b6ea88e890fabe689d28e22dee3abc25ff","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysicalMaterial.js#0005:convertToSoftBody","exportIndex":5,"name":"convertToSoftBody","kind":"function","signature":"async convertToSoftBody(editor, entityId)","summary":"Convert a rigid entity to a soft body on-the-fly. Uses AutoTetMesh to generate tet volume, then PBD solver."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysicalMaterial.md","moduleTitle":"modules/EditorPhysicalMaterial","source":"editor/js/modules/EditorPhysicalMaterial.js","import":"/editor/js/modules/EditorPhysicalMaterial.js","sourceHash":"b585613d7811168f062b51013563a5b6ea88e890fabe689d28e22dee3abc25ff","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysicalMaterial.js#0006:deformAtImpact","exportIndex":6,"name":"deformAtImpact","kind":"function","signature":"async deformAtImpact(editor, entityId, contactPoint, contactNormal, normalizedForce)","summary":"Deform mesh at impact point by carving a crater via voxel subtraction. If the carve disconnects pieces, broken-off pieces become fragment entities."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysicalMaterial.md","moduleTitle":"modules/EditorPhysicalMaterial","source":"editor/js/modules/EditorPhysicalMaterial.js","import":"/editor/js/modules/EditorPhysicalMaterial.js","sourceHash":"b585613d7811168f062b51013563a5b6ea88e890fabe689d28e22dee3abc25ff","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysicalMaterial.js#0007:fractureEntity","exportIndex":7,"name":"fractureEntity","kind":"function","signature":"async fractureEntity(editor, entityId, contactPoint, contactNormal, impactForce, normalizedForce)","summary":"Fracture an entity into visible fragment ECS entities using VoronoiFracture. Each fragment gets its own Renderable, PhysicsBody, and Collider. Fragment count scales with impact energy (Phase D)."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysicalMaterial.md","moduleTitle":"modules/EditorPhysicalMaterial","source":"editor/js/modules/EditorPhysicalMaterial.js","import":"/editor/js/modules/EditorPhysicalMaterial.js","sourceHash":"b585613d7811168f062b51013563a5b6ea88e890fabe689d28e22dee3abc25ff","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysicalMaterial.js#0008:updateDebris","exportIndex":8,"name":"updateDebris","kind":"function","signature":"updateDebris(editor)","summary":"Update debris lifecycle — call from physics step. Removes expired debris entities."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysicalMaterial.md","moduleTitle":"modules/EditorPhysicalMaterial","source":"editor/js/modules/EditorPhysicalMaterial.js","import":"/editor/js/modules/EditorPhysicalMaterial.js","sourceHash":"b585613d7811168f062b51013563a5b6ea88e890fabe689d28e22dee3abc25ff","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysicalMaterial.js#0009:syncColliderFromMaterial","exportIndex":9,"name":"syncColliderFromMaterial","kind":"function","signature":"syncColliderFromMaterial(editor, entityId)","summary":"Sync collider friction/restitution from material properties. Call after material changes."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-module","id":"module:editor/js/modules/EditorPhysics.js","title":"modules/EditorPhysics","summary":"Public API to manually verify collision state (useful for debugging)","exportCount":192}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0000:initializePhysicsWorld","exportIndex":0,"name":"initializePhysicsWorld","kind":"function","signature":"async initializePhysicsWorld(editor)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0001:debugVerifyCollisions","exportIndex":1,"name":"debugVerifyCollisions","kind":"function","signature":"debugVerifyCollisions(editor)","summary":"Public API to manually verify collision state (useful for debugging)"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0002:destroyPhysicsWorld","exportIndex":2,"name":"destroyPhysicsWorld","kind":"function","signature":"destroyPhysicsWorld(editor)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0003:stepPhysics","exportIndex":3,"name":"stepPhysics","kind":"function","signature":"stepPhysics(editor, dt)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0004:createHingeJoint","exportIndex":4,"name":"createHingeJoint","kind":"function","signature":"createHingeJoint(world, bodyA, bodyB, options = {})","summary":"Create a hinge joint between two bodies"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0005:createBallJoint","exportIndex":5,"name":"createBallJoint","kind":"function","signature":"createBallJoint(world, bodyA, bodyB, options = {})","summary":"Create a ball-socket joint (spherical)"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0006:createSpringJoint","exportIndex":6,"name":"createSpringJoint","kind":"function","signature":"createSpringJoint(world, bodyA, bodyB, options = {})","summary":"Create a spring/distance joint"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0007:createParticleChain","exportIndex":7,"name":"createParticleChain","kind":"function","signature":"createParticleChain(options = {})","summary":"Create a particle chain using PBD (Position-Based Dynamics)"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0008:createChain","exportIndex":8,"name":"createChain","kind":"function","signature":"createChain(world, options = {})","summary":"Create a chain of rigid body links"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0009:createSoftBody","exportIndex":9,"name":"createSoftBody","kind":"function","signature":"createSoftBody(device, options = {})","summary":"Create a soft body simulation"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0010:generateSoftBodyParticles","exportIndex":10,"name":"generateSoftBodyParticles","kind":"function","signature":"generateSoftBodyParticles(sdfFunc, bounds, density = 100)","summary":"Generate particles for a soft body in a shape"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0011:initFractureSystem","exportIndex":11,"name":"initFractureSystem","kind":"function","signature":"initFractureSystem(device)","summary":"Initialize fracture system"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0012:preFractureMesh","exportIndex":12,"name":"preFractureMesh","kind":"function","signature":"preFractureMesh(mesh, options = {})","summary":"Pre-fracture a mesh into fragments"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0013:generateFragmentColliders","exportIndex":13,"name":"generateFragmentColliders","kind":"function","signature":"generateFragmentColliders(fragments, resolution = 6)","summary":"Generate colliders for each fragment"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0014:createBreakableCollider","exportIndex":14,"name":"createBreakableCollider","kind":"function","signature":"createBreakableCollider(options = {})","summary":"Create breakable compound collider that fractures on impact"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0015:raycast","exportIndex":15,"name":"raycast","kind":"function","signature":"raycast(world, origin, direction, maxDistance = 1000)","summary":"Cast a ray into the physics world"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0016:raycastCone","exportIndex":16,"name":"raycastCone","kind":"function","signature":"raycastCone(world, origin, direction, coneAngle, rayCount = 8, maxDistance = 100)","summary":"Cast multiple rays in a cone pattern (for shotgun spread, vision cone, etc.)"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0017:createTriggerZone","exportIndex":17,"name":"createTriggerZone","kind":"function","signature":"createTriggerZone(shape, size, position = [0, 0, 0])","summary":"Create a trigger zone collider config"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0018:pointInTrigger","exportIndex":18,"name":"pointInTrigger","kind":"function","signature":"pointInTrigger(point, trigger)","summary":"Check if a point is inside a trigger zone"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0019:overlapSphere","exportIndex":19,"name":"overlapSphere","kind":"function","signature":"overlapSphere(center, radius, entities)","summary":"Find all entities within a sphere (using spatial hash if available)"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0020:overlapBox","exportIndex":20,"name":"overlapBox","kind":"function","signature":"overlapBox(center, halfExtents, entities)","summary":"Find all entities within a box"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0021:getColliderForType","exportIndex":21,"name":"getColliderForType","kind":"function","signature":"getColliderForType(editor, type)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0022:getGeometryForType","exportIndex":22,"name":"getGeometryForType","kind":"function","signature":"getGeometryForType(type)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0023:addSimTime","exportIndex":23,"name":"addSimTime","kind":"function","signature":"addSimTime(editor, dt)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0024:recordHistorySnapshot","exportIndex":24,"name":"recordHistorySnapshot","kind":"function","signature":"recordHistorySnapshot(editor)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0025:seekToTime","exportIndex":25,"name":"seekToTime","kind":"function","signature":"seekToTime(editor, targetTime)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0026:registerPhysicsSystem","exportIndex":26,"name":"registerPhysicsSystem","kind":"function","signature":"async registerPhysicsSystem(editor)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0027:createGroundPlane","exportIndex":27,"name":"createGroundPlane","kind":"function","signature":"async createGroundPlane(editor)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0028:updatePhysicsWorld","exportIndex":28,"name":"updatePhysicsWorld","kind":"function","signature":"async updatePhysicsWorld(editor)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0029:createMeshColliderDecomposed","exportIndex":29,"name":"createMeshColliderDecomposed","kind":"function","signature":"createMeshColliderDecomposed(vertices, indices, options = {})","summary":"Create a mesh collider with automatic convex decomposition for complex shapes. Use this when you have a mesh that's too complex for a single convex hull."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0030:createSDFCollider","exportIndex":30,"name":"createSDFCollider","kind":"function","signature":"createSDFCollider(sdfFunc, bounds, options = {})","summary":"Create a collider from an SDF function with automatic voxelization. Use this for procedural or mathematical shapes."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0031:createVoxelCollider","exportIndex":31,"name":"createVoxelCollider","kind":"function","signature":"createVoxelCollider(voxels, sizeX, sizeY, sizeZ, voxelSize = 0.1)","summary":"Create a collider grid from a 3D voxel array. Use this when you already have voxel data."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0032:createSDFGridFromFunction","exportIndex":32,"name":"createSDFGridFromFunction","kind":"function","signature":"createSDFGridFromFunction(sdfFunc, bounds, resolution = 32)","summary":"Create an SDF grid for collision detection with complex shapes. Useful for soft-body or particle interactions."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0033:checkSDFCollision","exportIndex":33,"name":"checkSDFCollision","kind":"function","signature":"checkSDFCollision(grid, point, radius = 0)","summary":"Check if a point or sphere collides with an SDF grid."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0034:createPhysicsChain","exportIndex":34,"name":"createPhysicsChain","kind":"function","signature":"async createPhysicsChain(editor, startPos, endPos, options = {})","summary":"Create articulated chain between two points. Use for physics-based chains, ropes, cables."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0035:enableSpeculativeCCDForAll","exportIndex":35,"name":"enableSpeculativeCCDForAll","kind":"function","signature":"enableSpeculativeCCDForAll(editor)","summary":"Enable speculative CCD on all dynamic bodies in the physics world. Helps prevent fast-moving objects from tunneling through thin walls."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0036:createBroadPhaseGrid","exportIndex":36,"name":"createBroadPhaseGrid","kind":"function","signature":"createBroadPhaseGrid(cellSize = 1.0)","summary":"Create a spatial hash grid for fast broad-phase collision queries. Useful for custom collision detection with many objects."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0037:updateBroadPhaseGrid","exportIndex":37,"name":"updateBroadPhaseGrid","kind":"function","signature":"updateBroadPhaseGrid(editor, grid)","summary":"Update all bodies in a spatial hash grid from editor entities."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0038:getBroadPhasePairs","exportIndex":38,"name":"getBroadPhasePairs","kind":"function","signature":"getBroadPhasePairs(grid)","summary":"Get potential collision pairs from broad phase."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0039:createPhysicsRope","exportIndex":39,"name":"createPhysicsRope","kind":"constant","signature":"createPhysicsRope","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0040:createRope","exportIndex":40,"name":"createRope","kind":"constant","signature":"createRope","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0041:BezierSpline","exportIndex":41,"name":"BezierSpline","kind":"re-export","signature":"BezierSpline","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0042:ConstitutiveModel","exportIndex":42,"name":"ConstitutiveModel","kind":"re-export","signature":"ConstitutiveModel","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0043:ConstraintType","exportIndex":43,"name":"ConstraintType","kind":"re-export","signature":"ConstraintType","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0044:CubicBezier","exportIndex":44,"name":"CubicBezier","kind":"re-export","signature":"CubicBezier","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0045:DistanceConstraint","exportIndex":45,"name":"DistanceConstraint","kind":"re-export","signature":"DistanceConstraint","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0046:FRACTURE_PATTERNS","exportIndex":46,"name":"FRACTURE_PATTERNS","kind":"re-export","signature":"FRACTURE_PATTERNS","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0047:GPUSpatialHashGrid","exportIndex":47,"name":"GPUSpatialHashGrid","kind":"re-export","signature":"GPUSpatialHashGrid","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0048:LineNetwork","exportIndex":48,"name":"LineNetwork","kind":"re-export","signature":"LineNetwork","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0049:LineToVoxelizer","exportIndex":49,"name":"LineToVoxelizer","kind":"re-export","signature":"LineToVoxelizer","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0050:MLSMPMSolver","exportIndex":50,"name":"MLSMPMSolver","kind":"re-export","signature":"MLSMPMSolver","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0051:MaterialPresets","exportIndex":51,"name":"MaterialPresets","kind":"re-export","signature":"MaterialPresets","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0052:NODE_STATUS","exportIndex":52,"name":"NODE_STATUS","kind":"re-export","signature":"NODE_STATUS","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0053:NetworkEdge","exportIndex":53,"name":"NetworkEdge","kind":"re-export","signature":"NetworkEdge","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0054:NetworkNode","exportIndex":54,"name":"NetworkNode","kind":"re-export","signature":"NetworkNode","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0055:PBDParticle","exportIndex":55,"name":"PBDParticle","kind":"re-export","signature":"PBDParticle","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0056:PBDSolver","exportIndex":56,"name":"PBDSolver","kind":"re-export","signature":"PBDSolver","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0057:ParticleFlags","exportIndex":57,"name":"ParticleFlags","kind":"re-export","signature":"ParticleFlags","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0058:SCENT_TYPE","exportIndex":58,"name":"SCENT_TYPE","kind":"re-export","signature":"SCENT_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0059:SDFGrid","exportIndex":59,"name":"SDFGrid","kind":"re-export","signature":"SDFGrid","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0060:SDFOperations","exportIndex":60,"name":"SDFOperations","kind":"re-export","signature":"SDFOperations","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0061:SDFPrimitives","exportIndex":61,"name":"SDFPrimitives","kind":"re-export","signature":"SDFPrimitives","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0062:ShockPropagationSolver","exportIndex":62,"name":"ShockPropagationSolver","kind":"re-export","signature":"ShockPropagationSolver","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0063:SpatialHash","exportIndex":63,"name":"SpatialHash","kind":"re-export","signature":"SpatialHash","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0064:SpatialHashGrid","exportIndex":64,"name":"SpatialHashGrid","kind":"re-export","signature":"SpatialHashGrid","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0065:SpeculativeContactsSolver","exportIndex":65,"name":"SpeculativeContactsSolver","kind":"re-export","signature":"SpeculativeContactsSolver","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0066:VoronoiFracture","exportIndex":66,"name":"VoronoiFracture","kind":"re-export","signature":"VoronoiFracture","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0067:VoxelMaterials","exportIndex":67,"name":"VoxelMaterials","kind":"re-export","signature":"VoxelMaterials","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0068:aabbAABB","exportIndex":68,"name":"aabbAABB","kind":"re-export","signature":"aabbAABB","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0069:addArticulationToScene","exportIndex":69,"name":"addArticulationToScene","kind":"re-export","signature":"addArticulationToScene","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0070:addToSpatialHash","exportIndex":70,"name":"addToSpatialHash","kind":"re-export","signature":"addToSpatialHash","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0071:applyFriction","exportIndex":71,"name":"applyFriction","kind":"re-export","signature":"applyFriction","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0072:applyShockPropagation","exportIndex":72,"name":"applyShockPropagation","kind":"re-export","signature":"applyShockPropagation","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0073:arrive","exportIndex":73,"name":"arrive","kind":"re-export","signature":"arrive","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0074:canHear","exportIndex":74,"name":"canHear","kind":"re-export","signature":"canHear","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0075:canSee","exportIndex":75,"name":"canSee","kind":"re-export","signature":"canSee","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0076:clearAllWelds","exportIndex":76,"name":"clearAllWelds","kind":"re-export","signature":"clearAllWelds","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0077:clearColliderSpatialHash","exportIndex":77,"name":"clearColliderSpatialHash","kind":"re-export","signature":"clearColliderSpatialHash","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0078:computeBounce","exportIndex":78,"name":"computeBounce","kind":"re-export","signature":"computeBounce","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0079:computeColliderAABB","exportIndex":79,"name":"computeColliderAABB","kind":"re-export","signature":"computeColliderAABB","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0080:createAIAgent","exportIndex":80,"name":"createAIAgent","kind":"re-export","signature":"createAIAgent","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0081:createAIPerception","exportIndex":81,"name":"createAIPerception","kind":"re-export","signature":"createAIPerception","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0082:createAction","exportIndex":82,"name":"createAction","kind":"re-export","signature":"createAction","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0083:createArticulation","exportIndex":83,"name":"createArticulation","kind":"re-export","signature":"createArticulation","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0084:createChaseFleeBehavior","exportIndex":84,"name":"createChaseFleeBehavior","kind":"re-export","signature":"createChaseFleeBehavior","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0085:createChildLink","exportIndex":85,"name":"createChildLink","kind":"re-export","signature":"createChildLink","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0086:createCondition","exportIndex":86,"name":"createCondition","kind":"re-export","signature":"createCondition","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0087:createD6Joint","exportIndex":87,"name":"createD6Joint","kind":"re-export","signature":"createD6Joint","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0088:createDangerSense","exportIndex":88,"name":"createDangerSense","kind":"re-export","signature":"createDangerSense","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0089:createDecomposedCollider","exportIndex":89,"name":"createDecomposedCollider","kind":"re-export","signature":"createDecomposedCollider","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0090:createDistanceJoint","exportIndex":90,"name":"createDistanceJoint","kind":"re-export","signature":"createDistanceJoint","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0091:createFlock","exportIndex":91,"name":"createFlock","kind":"re-export","signature":"createFlock","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0092:createNavGrid","exportIndex":92,"name":"createNavGrid","kind":"re-export","signature":"createNavGrid","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0093:createPatrolBehavior","exportIndex":93,"name":"createPatrolBehavior","kind":"re-export","signature":"createPatrolBehavior","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0094:createPhysXRope","exportIndex":94,"name":"createPhysXRope","kind":"re-export","signature":"createPhysXRope","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0095:createRevoluteJoint","exportIndex":95,"name":"createRevoluteJoint","kind":"re-export","signature":"createRevoluteJoint","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0096:createRootLink","exportIndex":96,"name":"createRootLink","kind":"re-export","signature":"createRootLink","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0097:createSDFFromMesh","exportIndex":97,"name":"createSDFFromMesh","kind":"re-export","signature":"createSDFFromMesh","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0098:createScentParticle","exportIndex":98,"name":"createScentParticle","kind":"re-export","signature":"createScentParticle","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0099:createScentSystem","exportIndex":99,"name":"createScentSystem","kind":"re-export","signature":"createScentSystem","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0100:createScentTrail","exportIndex":100,"name":"createScentTrail","kind":"re-export","signature":"createScentTrail","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0101:createSelector","exportIndex":101,"name":"createSelector","kind":"re-export","signature":"createSelector","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0102:createSequence","exportIndex":102,"name":"createSequence","kind":"re-export","signature":"createSequence","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0103:createSphericalJoint","exportIndex":103,"name":"createSphericalJoint","kind":"re-export","signature":"createSphericalJoint","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0104:createSteeringAgent","exportIndex":104,"name":"createSteeringAgent","kind":"re-export","signature":"createSteeringAgent","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0105:decomposeMesh","exportIndex":105,"name":"decomposeMesh","kind":"re-export","signature":"decomposeMesh","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0106:elasticCollision","exportIndex":106,"name":"elasticCollision","kind":"re-export","signature":"elasticCollision","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0107:enablePhysXSpeculativeCCD","exportIndex":107,"name":"enablePhysXSpeculativeCCD","kind":"re-export","signature":"enablePhysXSpeculativeCCD","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0108:evade","exportIndex":108,"name":"evade","kind":"re-export","signature":"evade","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0109:fbm3D","exportIndex":109,"name":"fbm3D","kind":"re-export","signature":"fbm3D","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0110:findPath","exportIndex":110,"name":"findPath","kind":"re-export","signature":"findPath","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0111:findPathInNavWorld","exportIndex":111,"name":"findPathInNavWorld","kind":"re-export","signature":"findPathInNavWorld","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0112:findPathOnGrid","exportIndex":112,"name":"findPathOnGrid","kind":"re-export","signature":"findPathOnGrid","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0113:flee","exportIndex":113,"name":"flee","kind":"re-export","signature":"flee","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0114:flock","exportIndex":114,"name":"flock","kind":"re-export","signature":"flock","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0115:followScentTrail","exportIndex":115,"name":"followScentTrail","kind":"re-export","signature":"followScentTrail","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0116:generateBezierColliders","exportIndex":116,"name":"generateBezierColliders","kind":"re-export","signature":"generateBezierColliders","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0117:generateCaveColliders","exportIndex":117,"name":"generateCaveColliders","kind":"re-export","signature":"generateCaveColliders","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0118:generateCollidersFromNetwork","exportIndex":118,"name":"generateCollidersFromNetwork","kind":"re-export","signature":"generateCollidersFromNetwork","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0119:generateCollidersFromSDF","exportIndex":119,"name":"generateCollidersFromSDF","kind":"re-export","signature":"generateCollidersFromSDF","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0120:generateConvexMeshFromSDF","exportIndex":120,"name":"generateConvexMeshFromSDF","kind":"re-export","signature":"generateConvexMeshFromSDF","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0121:generateCurveColliders","exportIndex":121,"name":"generateCurveColliders","kind":"re-export","signature":"generateCurveColliders","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0122:generateHollowConeColliders","exportIndex":122,"name":"generateHollowConeColliders","kind":"re-export","signature":"generateHollowConeColliders","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0123:generateHollowTorusColliders","exportIndex":123,"name":"generateHollowTorusColliders","kind":"re-export","signature":"generateHollowTorusColliders","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0124:generateLineColliders","exportIndex":124,"name":"generateLineColliders","kind":"re-export","signature":"generateLineColliders","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0125:generateNoisyColliders","exportIndex":125,"name":"generateNoisyColliders","kind":"re-export","signature":"generateNoisyColliders","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0126:generatePipeNetworkColliders","exportIndex":126,"name":"generatePipeNetworkColliders","kind":"re-export","signature":"generatePipeNetworkColliders","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0127:generateRockFieldColliders","exportIndex":127,"name":"generateRockFieldColliders","kind":"re-export","signature":"generateRockFieldColliders","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0128:generateRockySphereColliders","exportIndex":128,"name":"generateRockySphereColliders","kind":"re-export","signature":"generateRockySphereColliders","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0129:generateRootColliders","exportIndex":129,"name":"generateRootColliders","kind":"re-export","signature":"generateRootColliders","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0130:generateScatteredColliders","exportIndex":130,"name":"generateScatteredColliders","kind":"re-export","signature":"generateScatteredColliders","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0131:generateSplineColliders","exportIndex":131,"name":"generateSplineColliders","kind":"re-export","signature":"generateSplineColliders","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0132:generateTerrainColliders","exportIndex":132,"name":"generateTerrainColliders","kind":"re-export","signature":"generateTerrainColliders","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0133:generateTreeColliders","exportIndex":133,"name":"generateTreeColliders","kind":"re-export","signature":"generateTreeColliders","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0134:generateTunnelColliders","exportIndex":134,"name":"generateTunnelColliders","kind":"re-export","signature":"generateTunnelColliders","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0135:getArticulationLinkTransforms","exportIndex":135,"name":"getArticulationLinkTransforms","kind":"re-export","signature":"getArticulationLinkTransforms","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0136:getLastKnownPosition","exportIndex":136,"name":"getLastKnownPosition","kind":"re-export","signature":"getLastKnownPosition","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0137:getNavGridVisualization","exportIndex":137,"name":"getNavGridVisualization","kind":"re-export","signature":"getNavGridVisualization","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0138:getOrCreateNavGrid","exportIndex":138,"name":"getOrCreateNavGrid","kind":"re-export","signature":"getOrCreateNavGrid","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0139:getPathSteering","exportIndex":139,"name":"getPathSteering","kind":"re-export","signature":"getPathSteering","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0140:getPhysXJointCapabilities","exportIndex":140,"name":"getPhysXJointCapabilities","kind":"re-export","signature":"getPhysXJointCapabilities","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0141:gridToWorld","exportIndex":141,"name":"gridToWorld","kind":"re-export","signature":"gridToWorld","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0142:initColliderSpatialHash","exportIndex":142,"name":"initColliderSpatialHash","kind":"re-export","signature":"initColliderSpatialHash","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0143:linearMotion","exportIndex":143,"name":"linearMotion","kind":"re-export","signature":"linearMotion","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0144:mulberry32","exportIndex":144,"name":"mulberry32","kind":"re-export","signature":"mulberry32","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0145:perlin3D","exportIndex":145,"name":"perlin3D","kind":"re-export","signature":"perlin3D","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0146:planeCollisionResponse","exportIndex":146,"name":"planeCollisionResponse","kind":"re-export","signature":"planeCollisionResponse","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0147:pointInAABB","exportIndex":147,"name":"pointInAABB","kind":"re-export","signature":"pointInAABB","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0148:pointInSphere","exportIndex":148,"name":"pointInSphere","kind":"re-export","signature":"pointInSphere","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0149:predictLanding","exportIndex":149,"name":"predictLanding","kind":"re-export","signature":"predictLanding","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0150:projectileMotion","exportIndex":150,"name":"projectileMotion","kind":"re-export","signature":"projectileMotion","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0151:projectilePosition","exportIndex":151,"name":"projectilePosition","kind":"re-export","signature":"projectilePosition","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0152:pursue","exportIndex":152,"name":"pursue","kind":"re-export","signature":"pursue","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0153:queryNearbyColliders","exportIndex":153,"name":"queryNearbyColliders","kind":"re-export","signature":"queryNearbyColliders","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0154:randomInSphere","exportIndex":154,"name":"randomInSphere","kind":"re-export","signature":"randomInSphere","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0155:randomOnSphere","exportIndex":155,"name":"randomOnSphere","kind":"re-export","signature":"randomOnSphere","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0156:raycastWorld","exportIndex":156,"name":"raycastWorld","kind":"re-export","signature":"raycastWorld","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0157:ridged3D","exportIndex":157,"name":"ridged3D","kind":"re-export","signature":"ridged3D","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0158:sdfBox3D","exportIndex":158,"name":"sdfBox3D","kind":"re-export","signature":"sdfBox3D","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0159:sdfCapsule","exportIndex":159,"name":"sdfCapsule","kind":"re-export","signature":"sdfCapsule","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0160:sdfCone","exportIndex":160,"name":"sdfCone","kind":"re-export","signature":"sdfCone","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0161:sdfCylinder","exportIndex":161,"name":"sdfCylinder","kind":"re-export","signature":"sdfCylinder","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0162:sdfIntersect","exportIndex":162,"name":"sdfIntersect","kind":"re-export","signature":"sdfIntersect","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0163:sdfOnion","exportIndex":163,"name":"sdfOnion","kind":"re-export","signature":"sdfOnion","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0164:sdfSmoothUnion","exportIndex":164,"name":"sdfSmoothUnion","kind":"re-export","signature":"sdfSmoothUnion","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0165:sdfSphere","exportIndex":165,"name":"sdfSphere","kind":"re-export","signature":"sdfSphere","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0166:sdfSubtract","exportIndex":166,"name":"sdfSubtract","kind":"re-export","signature":"sdfSubtract","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0167:sdfTorus","exportIndex":167,"name":"sdfTorus","kind":"re-export","signature":"sdfTorus","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0168:sdfUnion","exportIndex":168,"name":"sdfUnion","kind":"re-export","signature":"sdfUnion","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0169:seek","exportIndex":169,"name":"seek","kind":"re-export","signature":"seek","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0170:senseDanger","exportIndex":170,"name":"senseDanger","kind":"re-export","signature":"senseDanger","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0171:setAutoWeld","exportIndex":171,"name":"setAutoWeld","kind":"re-export","signature":"setAutoWeld","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0172:setRandomSeed","exportIndex":172,"name":"setRandomSeed","kind":"re-export","signature":"setRandomSeed","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0173:simplex3D","exportIndex":173,"name":"simplex3D","kind":"re-export","signature":"simplex3D","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0174:smellAt","exportIndex":174,"name":"smellAt","kind":"re-export","signature":"smellAt","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0175:smoothPath","exportIndex":175,"name":"smoothPath","kind":"re-export","signature":"smoothPath","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0176:sphereAABB","exportIndex":176,"name":"sphereAABB","kind":"re-export","signature":"sphereAABB","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0177:sphereCollisionResponse","exportIndex":177,"name":"sphereCollisionResponse","kind":"re-export","signature":"sphereCollisionResponse","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0178:sphereSphere","exportIndex":178,"name":"sphereSphere","kind":"re-export","signature":"sphereSphere","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0179:straightLine","exportIndex":179,"name":"straightLine","kind":"re-export","signature":"straightLine","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0180:testAABBAABB","exportIndex":180,"name":"testAABBAABB","kind":"re-export","signature":"testAABBAABB","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0181:testSphereAABB","exportIndex":181,"name":"testSphereAABB","kind":"re-export","signature":"testSphereAABB","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0182:testSphereSphere","exportIndex":182,"name":"testSphereSphere","kind":"re-export","signature":"testSphereSphere","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0183:tickBehaviorTree","exportIndex":183,"name":"tickBehaviorTree","kind":"re-export","signature":"tickBehaviorTree","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0184:tickNode","exportIndex":184,"name":"tickNode","kind":"re-export","signature":"tickNode","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0185:updateAIAgent","exportIndex":185,"name":"updateAIAgent","kind":"re-export","signature":"updateAIAgent","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0186:updateAIPerception","exportIndex":186,"name":"updateAIPerception","kind":"re-export","signature":"updateAIPerception","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0187:updateFlock","exportIndex":187,"name":"updateFlock","kind":"re-export","signature":"updateFlock","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0188:updateNavGridFromColliders","exportIndex":188,"name":"updateNavGridFromColliders","kind":"re-export","signature":"updateNavGridFromColliders","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0189:voronoi3D","exportIndex":189,"name":"voronoi3D","kind":"re-export","signature":"voronoi3D","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0190:wander","exportIndex":190,"name":"wander","kind":"re-export","signature":"wander","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysics.md","moduleTitle":"modules/EditorPhysics","source":"editor/js/modules/EditorPhysics.js","import":"/editor/js/modules/EditorPhysics.js","sourceHash":"9e8c5e79034b3bd00d349ab375562e1270ef24b28495dab5146397de045d9365","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysics.js#0191:worldToGrid","exportIndex":191,"name":"worldToGrid","kind":"re-export","signature":"worldToGrid","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysicsSim.md","moduleTitle":"modules/EditorPhysicsSim","source":"editor/js/modules/EditorPhysicsSim.js","import":"/editor/js/modules/EditorPhysicsSim.js","sourceHash":"78a1d8ac11b0233db08531ed42d155eaf8764a7000fdaa17cfd8be833dacf68e","subsystem":"editor","recordType":"api-module","id":"module:editor/js/modules/EditorPhysicsSim.js","title":"modules/EditorPhysicsSim","summary":"EditorPhysicsSim.js - Physics Simulation Management for Editor Manages rope, wire, hair, cloth, and soft body simulations in the editor. Uses PBD solver with OGC contact model for penetration-free simulation.","exportCount":20}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysicsSim.md","moduleTitle":"modules/EditorPhysicsSim","source":"editor/js/modules/EditorPhysicsSim.js","import":"/editor/js/modules/EditorPhysicsSim.js","sourceHash":"78a1d8ac11b0233db08531ed42d155eaf8764a7000fdaa17cfd8be833dacf68e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysicsSim.js#0000:initRopeSimulation","exportIndex":0,"name":"initRopeSimulation","kind":"function","signature":"initRopeSimulation(editor, entityId, position, opts)","summary":"Initialize rope simulation for an entity"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysicsSim.md","moduleTitle":"modules/EditorPhysicsSim","source":"editor/js/modules/EditorPhysicsSim.js","import":"/editor/js/modules/EditorPhysicsSim.js","sourceHash":"78a1d8ac11b0233db08531ed42d155eaf8764a7000fdaa17cfd8be833dacf68e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysicsSim.js#0001:initRopeSimulationBetweenPoints","exportIndex":1,"name":"initRopeSimulationBetweenPoints","kind":"function","signature":"initRopeSimulationBetweenPoints(editor, entityId, startPos, endPos, opts)","summary":"Initialize rope simulation between two points (for tool-created ropes)"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysicsSim.md","moduleTitle":"modules/EditorPhysicsSim","source":"editor/js/modules/EditorPhysicsSim.js","import":"/editor/js/modules/EditorPhysicsSim.js","sourceHash":"78a1d8ac11b0233db08531ed42d155eaf8764a7000fdaa17cfd8be833dacf68e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysicsSim.js#0002:initRopeSimulationFromComponent","exportIndex":2,"name":"initRopeSimulationFromComponent","kind":"function","signature":"initRopeSimulationFromComponent(editor, entityId)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysicsSim.md","moduleTitle":"modules/EditorPhysicsSim","source":"editor/js/modules/EditorPhysicsSim.js","import":"/editor/js/modules/EditorPhysicsSim.js","sourceHash":"78a1d8ac11b0233db08531ed42d155eaf8764a7000fdaa17cfd8be833dacf68e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysicsSim.js#0003:initPhysXRopeSimulation","exportIndex":3,"name":"initPhysXRopeSimulation","kind":"function","signature":"initPhysXRopeSimulation(editor, entityId, startPos, endPos, opts)","summary":"Initialize PhysX articulation-based rope simulation Uses NVIDIA PhysX for more stable, unified physics simulation"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysicsSim.md","moduleTitle":"modules/EditorPhysicsSim","source":"editor/js/modules/EditorPhysicsSim.js","import":"/editor/js/modules/EditorPhysicsSim.js","sourceHash":"78a1d8ac11b0233db08531ed42d155eaf8764a7000fdaa17cfd8be833dacf68e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysicsSim.js#0004:initGPURopeSimulation","exportIndex":4,"name":"initGPURopeSimulation","kind":"function","signature":"initGPURopeSimulation(editor, entityId, startPos, endPos, opts)","summary":"Initialize GPU-based rope simulation using unified particle system Uses GPU constraint solver for native rope physics (Phase 2)"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysicsSim.md","moduleTitle":"modules/EditorPhysicsSim","source":"editor/js/modules/EditorPhysicsSim.js","import":"/editor/js/modules/EditorPhysicsSim.js","sourceHash":"78a1d8ac11b0233db08531ed42d155eaf8764a7000fdaa17cfd8be833dacf68e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysicsSim.js#0005:initWireSimulation","exportIndex":5,"name":"initWireSimulation","kind":"function","signature":"initWireSimulation(editor, entityId, position, opts)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysicsSim.md","moduleTitle":"modules/EditorPhysicsSim","source":"editor/js/modules/EditorPhysicsSim.js","import":"/editor/js/modules/EditorPhysicsSim.js","sourceHash":"78a1d8ac11b0233db08531ed42d155eaf8764a7000fdaa17cfd8be833dacf68e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysicsSim.js#0006:initHairSimulation","exportIndex":6,"name":"initHairSimulation","kind":"function","signature":"initHairSimulation(editor, entityId, position, opts)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysicsSim.md","moduleTitle":"modules/EditorPhysicsSim","source":"editor/js/modules/EditorPhysicsSim.js","import":"/editor/js/modules/EditorPhysicsSim.js","sourceHash":"78a1d8ac11b0233db08531ed42d155eaf8764a7000fdaa17cfd8be833dacf68e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysicsSim.js#0007:initChainSimulation","exportIndex":7,"name":"initChainSimulation","kind":"function","signature":"initChainSimulation(editor, entityId, position, opts)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysicsSim.md","moduleTitle":"modules/EditorPhysicsSim","source":"editor/js/modules/EditorPhysicsSim.js","import":"/editor/js/modules/EditorPhysicsSim.js","sourceHash":"78a1d8ac11b0233db08531ed42d155eaf8764a7000fdaa17cfd8be833dacf68e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysicsSim.js#0008:initClothSimulation","exportIndex":8,"name":"initClothSimulation","kind":"function","signature":"async initClothSimulation(editor, entityId, position, opts)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysicsSim.md","moduleTitle":"modules/EditorPhysicsSim","source":"editor/js/modules/EditorPhysicsSim.js","import":"/editor/js/modules/EditorPhysicsSim.js","sourceHash":"78a1d8ac11b0233db08531ed42d155eaf8764a7000fdaa17cfd8be833dacf68e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysicsSim.js#0009:initSoftBodySimulation","exportIndex":9,"name":"initSoftBodySimulation","kind":"function","signature":"initSoftBodySimulation(editor, entityId, position, opts)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysicsSim.md","moduleTitle":"modules/EditorPhysicsSim","source":"editor/js/modules/EditorPhysicsSim.js","import":"/editor/js/modules/EditorPhysicsSim.js","sourceHash":"78a1d8ac11b0233db08531ed42d155eaf8764a7000fdaa17cfd8be833dacf68e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysicsSim.js#0010:initSoftBodyFromMesh","exportIndex":10,"name":"initSoftBodyFromMesh","kind":"function","signature":"async initSoftBodyFromMesh(editor, entityId, meshPositions, meshIndices, opts = {})","summary":"Initialize a soft body from an arbitrary surface mesh using AutoTetMesh. Converts the surface mesh to a tetrahedral volume mesh, then creates PBD particles and constraints from the tet nodes."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysicsSim.md","moduleTitle":"modules/EditorPhysicsSim","source":"editor/js/modules/EditorPhysicsSim.js","import":"/editor/js/modules/EditorPhysicsSim.js","sourceHash":"78a1d8ac11b0233db08531ed42d155eaf8764a7000fdaa17cfd8be833dacf68e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysicsSim.js#0011:initBalloonSimulation","exportIndex":11,"name":"initBalloonSimulation","kind":"function","signature":"initBalloonSimulation(editor, entityId, position, opts)","summary":"Initialize balloon simulation (pressure-based soft body)"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysicsSim.md","moduleTitle":"modules/EditorPhysicsSim","source":"editor/js/modules/EditorPhysicsSim.js","import":"/editor/js/modules/EditorPhysicsSim.js","sourceHash":"78a1d8ac11b0233db08531ed42d155eaf8764a7000fdaa17cfd8be833dacf68e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysicsSim.js#0012:initFluidSimulation","exportIndex":12,"name":"initFluidSimulation","kind":"function","signature":"initFluidSimulation(editor, entityId, position, opts)","summary":"Initialize fluid simulation (SPH density-based)"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysicsSim.md","moduleTitle":"modules/EditorPhysicsSim","source":"editor/js/modules/EditorPhysicsSim.js","import":"/editor/js/modules/EditorPhysicsSim.js","sourceHash":"78a1d8ac11b0233db08531ed42d155eaf8764a7000fdaa17cfd8be833dacf68e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysicsSim.js#0013:stepPhysicsSimulations","exportIndex":13,"name":"stepPhysicsSimulations","kind":"function","signature":"stepPhysicsSimulations(editor, dt)","summary":"Step all physics simulations"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysicsSim.md","moduleTitle":"modules/EditorPhysicsSim","source":"editor/js/modules/EditorPhysicsSim.js","import":"/editor/js/modules/EditorPhysicsSim.js","sourceHash":"78a1d8ac11b0233db08531ed42d155eaf8764a7000fdaa17cfd8be833dacf68e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysicsSim.js#0014:syncSimulationsToComponents","exportIndex":14,"name":"syncSimulationsToComponents","kind":"function","signature":"syncSimulationsToComponents(editor)","summary":"Sync all active simulation particle data to ECS components. Call this before saving the scene to ensure particles are persisted."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysicsSim.md","moduleTitle":"modules/EditorPhysicsSim","source":"editor/js/modules/EditorPhysicsSim.js","import":"/editor/js/modules/EditorPhysicsSim.js","sourceHash":"78a1d8ac11b0233db08531ed42d155eaf8764a7000fdaa17cfd8be833dacf68e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysicsSim.js#0015:initTwistedRopeSimulation","exportIndex":15,"name":"initTwistedRopeSimulation","kind":"function","signature":"initTwistedRopeSimulation(editor, entityId, startPos, endPos, opts = {})","summary":"Initialize a twisted rope simulation with multiple threads Creates helical thread arrangement that twists together like real rope fibers"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysicsSim.md","moduleTitle":"modules/EditorPhysicsSim","source":"editor/js/modules/EditorPhysicsSim.js","import":"/editor/js/modules/EditorPhysicsSim.js","sourceHash":"78a1d8ac11b0233db08531ed42d155eaf8764a7000fdaa17cfd8be833dacf68e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysicsSim.js#0016:destroyPhysicsSimulation","exportIndex":16,"name":"destroyPhysicsSimulation","kind":"function","signature":"destroyPhysicsSimulation(editor, entityId, options = {})","summary":"Destroy a physics simulation."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysicsSim.md","moduleTitle":"modules/EditorPhysicsSim","source":"editor/js/modules/EditorPhysicsSim.js","import":"/editor/js/modules/EditorPhysicsSim.js","sourceHash":"78a1d8ac11b0233db08531ed42d155eaf8764a7000fdaa17cfd8be833dacf68e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysicsSim.js#0017:updateRopeForAnchorMove","exportIndex":17,"name":"updateRopeForAnchorMove","kind":"function","signature":"updateRopeForAnchorMove(editor, ropeEntityId)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysicsSim.md","moduleTitle":"modules/EditorPhysicsSim","source":"editor/js/modules/EditorPhysicsSim.js","import":"/editor/js/modules/EditorPhysicsSim.js","sourceHash":"78a1d8ac11b0233db08531ed42d155eaf8764a7000fdaa17cfd8be833dacf68e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysicsSim.js#0018:updateRopesForEntityMove","exportIndex":18,"name":"updateRopesForEntityMove","kind":"function","signature":"updateRopesForEntityMove(editor, movedEntityId)","summary":"Check all ropes that are attached to a given entity and update them. Call this when an entity's transform changes in edit mode."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPhysicsSim.md","moduleTitle":"modules/EditorPhysicsSim","source":"editor/js/modules/EditorPhysicsSim.js","import":"/editor/js/modules/EditorPhysicsSim.js","sourceHash":"78a1d8ac11b0233db08531ed42d155eaf8764a7000fdaa17cfd8be833dacf68e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPhysicsSim.js#0019:setupPhysicsSim","exportIndex":19,"name":"setupPhysicsSim","kind":"function","signature":"setupPhysicsSim(editor)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPointCloud.md","moduleTitle":"modules/EditorPointCloud","source":"editor/js/modules/EditorPointCloud.js","import":"/editor/js/modules/EditorPointCloud.js","sourceHash":"f3a03b54c3fb686b110725b8d33341df54fb0f2587163fbecc495b1970faed3f","subsystem":"editor","recordType":"api-module","id":"module:editor/js/modules/EditorPointCloud.js","title":"modules/EditorPointCloud","summary":"============================================================================ EditorPointCloud.js — Point cloud entity management  Handles spawning point cloud entities from asset files (PLY/PCD/XYZ), managing the PointCloud component, and bridging to the EntityMeshRenderer point-sprite render pass. ============================================================================","exportCount":4}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPointCloud.md","moduleTitle":"modules/EditorPointCloud","source":"editor/js/modules/EditorPointCloud.js","import":"/editor/js/modules/EditorPointCloud.js","sourceHash":"f3a03b54c3fb686b110725b8d33341df54fb0f2587163fbecc495b1970faed3f","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPointCloud.js#0000:spawnPointCloudAsset","exportIndex":0,"name":"spawnPointCloudAsset","kind":"function","signature":"async spawnPointCloudAsset(editor, asset)","summary":"Load a point cloud asset, parse it, and create an entity in the scene."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPointCloud.md","moduleTitle":"modules/EditorPointCloud","source":"editor/js/modules/EditorPointCloud.js","import":"/editor/js/modules/EditorPointCloud.js","sourceHash":"f3a03b54c3fb686b110725b8d33341df54fb0f2587163fbecc495b1970faed3f","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPointCloud.js#0001:spawnPointCloudEntity","exportIndex":1,"name":"spawnPointCloudEntity","kind":"function","signature":"spawnPointCloudEntity(editor, pcData, opts = {})","summary":"Create a point cloud entity from raw point data."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPointCloud.md","moduleTitle":"modules/EditorPointCloud","source":"editor/js/modules/EditorPointCloud.js","import":"/editor/js/modules/EditorPointCloud.js","sourceHash":"f3a03b54c3fb686b110725b8d33341df54fb0f2587163fbecc495b1970faed3f","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPointCloud.js#0002:unregisterPointCloud","exportIndex":2,"name":"unregisterPointCloud","kind":"function","signature":"unregisterPointCloud(editor, entityId)","summary":"Unregister a point cloud entity from the renderer."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorPointCloud.md","moduleTitle":"modules/EditorPointCloud","source":"editor/js/modules/EditorPointCloud.js","import":"/editor/js/modules/EditorPointCloud.js","sourceHash":"f3a03b54c3fb686b110725b8d33341df54fb0f2587163fbecc495b1970faed3f","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorPointCloud.js#0003:getPointCloudData","exportIndex":3,"name":"getPointCloudData","kind":"function","signature":"getPointCloudData(editor, entityId)","summary":"Get point cloud data for an entity (reads PointCloud component)."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorScene.md","moduleTitle":"modules/EditorScene","source":"editor/js/modules/EditorScene.js","import":"/editor/js/modules/EditorScene.js","sourceHash":"4ba84c30c28325f8e9d73656ca97c42d1e2fd070ea24db7f408b7fcd702225fb","subsystem":"editor","recordType":"api-module","id":"module:editor/js/modules/EditorScene.js","title":"modules/EditorScene","summary":"Get all entities in a welded group (parent + all children) If the entity is a child, finds its parent and returns the whole group If the entity is a parent, returns itself + all children If not welded, returns just the entity","exportCount":17}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorScene.md","moduleTitle":"modules/EditorScene","source":"editor/js/modules/EditorScene.js","import":"/editor/js/modules/EditorScene.js","sourceHash":"4ba84c30c28325f8e9d73656ca97c42d1e2fd070ea24db7f408b7fcd702225fb","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorScene.js#0000:createEntity","exportIndex":0,"name":"createEntity","kind":"function","signature":"createEntity(editor, name = 'Entity', options = {})","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorScene.md","moduleTitle":"modules/EditorScene","source":"editor/js/modules/EditorScene.js","import":"/editor/js/modules/EditorScene.js","sourceHash":"4ba84c30c28325f8e9d73656ca97c42d1e2fd070ea24db7f408b7fcd702225fb","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorScene.js#0001:selectEntity","exportIndex":1,"name":"selectEntity","kind":"function","signature":"selectEntity(editor, entityId)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorScene.md","moduleTitle":"modules/EditorScene","source":"editor/js/modules/EditorScene.js","import":"/editor/js/modules/EditorScene.js","sourceHash":"4ba84c30c28325f8e9d73656ca97c42d1e2fd070ea24db7f408b7fcd702225fb","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorScene.js#0002:getWeldedGroup","exportIndex":2,"name":"getWeldedGroup","kind":"function","signature":"getWeldedGroup(editor, entityId)","summary":"Get all entities in a welded group (parent + all children) If the entity is a child, finds its parent and returns the whole group If the entity is a parent, returns itself + all children If not welded, returns just the entity"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorScene.md","moduleTitle":"modules/EditorScene","source":"editor/js/modules/EditorScene.js","import":"/editor/js/modules/EditorScene.js","sourceHash":"4ba84c30c28325f8e9d73656ca97c42d1e2fd070ea24db7f408b7fcd702225fb","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorScene.js#0003:deleteEntity","exportIndex":3,"name":"deleteEntity","kind":"function","signature":"async deleteEntity(editor, entityId)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorScene.md","moduleTitle":"modules/EditorScene","source":"editor/js/modules/EditorScene.js","import":"/editor/js/modules/EditorScene.js","sourceHash":"4ba84c30c28325f8e9d73656ca97c42d1e2fd070ea24db7f408b7fcd702225fb","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorScene.js#0004:createFolder","exportIndex":4,"name":"createFolder","kind":"function","signature":"createFolder(editor, name = 'New Folder', parentId = null)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorScene.md","moduleTitle":"modules/EditorScene","source":"editor/js/modules/EditorScene.js","import":"/editor/js/modules/EditorScene.js","sourceHash":"4ba84c30c28325f8e9d73656ca97c42d1e2fd070ea24db7f408b7fcd702225fb","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorScene.js#0005:setFolderParent","exportIndex":5,"name":"setFolderParent","kind":"function","signature":"setFolderParent(editor, folderId, parentId)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorScene.md","moduleTitle":"modules/EditorScene","source":"editor/js/modules/EditorScene.js","import":"/editor/js/modules/EditorScene.js","sourceHash":"4ba84c30c28325f8e9d73656ca97c42d1e2fd070ea24db7f408b7fcd702225fb","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorScene.js#0006:renameEntity","exportIndex":6,"name":"renameEntity","kind":"function","signature":"renameEntity(editor, entityId, newName)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorScene.md","moduleTitle":"modules/EditorScene","source":"editor/js/modules/EditorScene.js","import":"/editor/js/modules/EditorScene.js","sourceHash":"4ba84c30c28325f8e9d73656ca97c42d1e2fd070ea24db7f408b7fcd702225fb","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorScene.js#0007:renameFolder","exportIndex":7,"name":"renameFolder","kind":"function","signature":"renameFolder(editor, folderId, newName)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorScene.md","moduleTitle":"modules/EditorScene","source":"editor/js/modules/EditorScene.js","import":"/editor/js/modules/EditorScene.js","sourceHash":"4ba84c30c28325f8e9d73656ca97c42d1e2fd070ea24db7f408b7fcd702225fb","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorScene.js#0008:deleteFolder","exportIndex":8,"name":"deleteFolder","kind":"function","signature":"deleteFolder(editor, folderId)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorScene.md","moduleTitle":"modules/EditorScene","source":"editor/js/modules/EditorScene.js","import":"/editor/js/modules/EditorScene.js","sourceHash":"4ba84c30c28325f8e9d73656ca97c42d1e2fd070ea24db7f408b7fcd702225fb","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorScene.js#0009:setEntityParent","exportIndex":9,"name":"setEntityParent","kind":"function","signature":"setEntityParent(editor, entityId, parentId)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorScene.md","moduleTitle":"modules/EditorScene","source":"editor/js/modules/EditorScene.js","import":"/editor/js/modules/EditorScene.js","sourceHash":"4ba84c30c28325f8e9d73656ca97c42d1e2fd070ea24db7f408b7fcd702225fb","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorScene.js#0010:moveEntityToFolder","exportIndex":10,"name":"moveEntityToFolder","kind":"function","signature":"moveEntityToFolder(editor, entityId, folderId)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorScene.md","moduleTitle":"modules/EditorScene","source":"editor/js/modules/EditorScene.js","import":"/editor/js/modules/EditorScene.js","sourceHash":"4ba84c30c28325f8e9d73656ca97c42d1e2fd070ea24db7f408b7fcd702225fb","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorScene.js#0011:captureWorldSnapshot","exportIndex":11,"name":"captureWorldSnapshot","kind":"function","signature":"captureWorldSnapshot(editor)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorScene.md","moduleTitle":"modules/EditorScene","source":"editor/js/modules/EditorScene.js","import":"/editor/js/modules/EditorScene.js","sourceHash":"4ba84c30c28325f8e9d73656ca97c42d1e2fd070ea24db7f408b7fcd702225fb","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorScene.js#0012:captureWorldSnapshotDelta","exportIndex":12,"name":"captureWorldSnapshotDelta","kind":"function","signature":"captureWorldSnapshotDelta(editor)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorScene.md","moduleTitle":"modules/EditorScene","source":"editor/js/modules/EditorScene.js","import":"/editor/js/modules/EditorScene.js","sourceHash":"4ba84c30c28325f8e9d73656ca97c42d1e2fd070ea24db7f408b7fcd702225fb","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorScene.js#0013:restoreWorldSnapshot","exportIndex":13,"name":"restoreWorldSnapshot","kind":"function","signature":"restoreWorldSnapshot(editor, snapshot)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorScene.md","moduleTitle":"modules/EditorScene","source":"editor/js/modules/EditorScene.js","import":"/editor/js/modules/EditorScene.js","sourceHash":"4ba84c30c28325f8e9d73656ca97c42d1e2fd070ea24db7f408b7fcd702225fb","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorScene.js#0014:loadScene","exportIndex":14,"name":"loadScene","kind":"function","signature":"async loadScene(editor, scenePath)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorScene.md","moduleTitle":"modules/EditorScene","source":"editor/js/modules/EditorScene.js","import":"/editor/js/modules/EditorScene.js","sourceHash":"4ba84c30c28325f8e9d73656ca97c42d1e2fd070ea24db7f408b7fcd702225fb","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorScene.js#0015:saveScene","exportIndex":15,"name":"saveScene","kind":"function","signature":"async saveScene(editor)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorScene.md","moduleTitle":"modules/EditorScene","source":"editor/js/modules/EditorScene.js","import":"/editor/js/modules/EditorScene.js","sourceHash":"4ba84c30c28325f8e9d73656ca97c42d1e2fd070ea24db7f408b7fcd702225fb","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorScene.js#0016:cleanupInvalidEntities","exportIndex":16,"name":"cleanupInvalidEntities","kind":"function","signature":"cleanupInvalidEntities(editor, intervalMs = 1000)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorSettings.md","moduleTitle":"modules/EditorSettings","source":"editor/js/modules/EditorSettings.js","import":"/editor/js/modules/EditorSettings.js","sourceHash":"64488e796fd27229ba052fac79f30e4a6f0a6d2154a85487ae43f3b595b327dd","subsystem":"editor","recordType":"api-module","id":"module:editor/js/modules/EditorSettings.js","title":"modules/EditorSettings","summary":"EditorSettings.js - Global Editor Settings with Persistence Features: - Centralized settings management - localStorage persistence - Settings UI with categories/tabs - Live preview of changes","exportCount":4}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorSettings.md","moduleTitle":"modules/EditorSettings","source":"editor/js/modules/EditorSettings.js","import":"/editor/js/modules/EditorSettings.js","sourceHash":"64488e796fd27229ba052fac79f30e4a6f0a6d2154a85487ae43f3b595b327dd","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorSettings.js#0000:showSettingsDialog","exportIndex":0,"name":"showSettingsDialog","kind":"function","signature":"showSettingsDialog()","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorSettings.md","moduleTitle":"modules/EditorSettings","source":"editor/js/modules/EditorSettings.js","import":"/editor/js/modules/EditorSettings.js","sourceHash":"64488e796fd27229ba052fac79f30e4a6f0a6d2154a85487ae43f3b595b327dd","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorSettings.js#0001:editorSettings","exportIndex":1,"name":"editorSettings","kind":"constant","signature":"editorSettings","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorSettings.md","moduleTitle":"modules/EditorSettings","source":"editor/js/modules/EditorSettings.js","import":"/editor/js/modules/EditorSettings.js","sourceHash":"64488e796fd27229ba052fac79f30e4a6f0a6d2154a85487ae43f3b595b327dd","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorSettings.js#0002:DEFAULT_SETTINGS","exportIndex":2,"name":"DEFAULT_SETTINGS","kind":"re-export","signature":"DEFAULT_SETTINGS","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorSettings.md","moduleTitle":"modules/EditorSettings","source":"editor/js/modules/EditorSettings.js","import":"/editor/js/modules/EditorSettings.js","sourceHash":"64488e796fd27229ba052fac79f30e4a6f0a6d2154a85487ae43f3b595b327dd","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorSettings.js#0003:SETTINGS_METADATA","exportIndex":3,"name":"SETTINGS_METADATA","kind":"re-export","signature":"SETTINGS_METADATA","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorSpawnMenu.md","moduleTitle":"modules/EditorSpawnMenu","source":"editor/js/modules/EditorSpawnMenu.js","import":"/editor/js/modules/EditorSpawnMenu.js","sourceHash":"1e434a69cf2af629f3ad5efecd698e3e785f3e9aa9377fa7ea6a4ef3de578e70","subsystem":"editor","recordType":"api-module","id":"module:editor/js/modules/EditorSpawnMenu.js","title":"modules/EditorSpawnMenu","summary":"","exportCount":9}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorSpawnMenu.md","moduleTitle":"modules/EditorSpawnMenu","source":"editor/js/modules/EditorSpawnMenu.js","import":"/editor/js/modules/EditorSpawnMenu.js","sourceHash":"1e434a69cf2af629f3ad5efecd698e3e785f3e9aa9377fa7ea6a4ef3de578e70","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorSpawnMenu.js#0000:setupSpawnMenu","exportIndex":0,"name":"setupSpawnMenu","kind":"function","signature":"setupSpawnMenu(editor)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorSpawnMenu.md","moduleTitle":"modules/EditorSpawnMenu","source":"editor/js/modules/EditorSpawnMenu.js","import":"/editor/js/modules/EditorSpawnMenu.js","sourceHash":"1e434a69cf2af629f3ad5efecd698e3e785f3e9aa9377fa7ea6a4ef3de578e70","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorSpawnMenu.js#0001:renderSpawnCategories","exportIndex":1,"name":"renderSpawnCategories","kind":"function","signature":"renderSpawnCategories(editor)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorSpawnMenu.md","moduleTitle":"modules/EditorSpawnMenu","source":"editor/js/modules/EditorSpawnMenu.js","import":"/editor/js/modules/EditorSpawnMenu.js","sourceHash":"1e434a69cf2af629f3ad5efecd698e3e785f3e9aa9377fa7ea6a4ef3de578e70","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorSpawnMenu.js#0002:renderSpawnGrid","exportIndex":2,"name":"renderSpawnGrid","kind":"function","signature":"renderSpawnGrid(editor)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorSpawnMenu.md","moduleTitle":"modules/EditorSpawnMenu","source":"editor/js/modules/EditorSpawnMenu.js","import":"/editor/js/modules/EditorSpawnMenu.js","sourceHash":"1e434a69cf2af629f3ad5efecd698e3e785f3e9aa9377fa7ea6a4ef3de578e70","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorSpawnMenu.js#0003:spawnFromMenu","exportIndex":3,"name":"spawnFromMenu","kind":"function","signature":"spawnFromMenu(editor, item)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorSpawnMenu.md","moduleTitle":"modules/EditorSpawnMenu","source":"editor/js/modules/EditorSpawnMenu.js","import":"/editor/js/modules/EditorSpawnMenu.js","sourceHash":"1e434a69cf2af629f3ad5efecd698e3e785f3e9aa9377fa7ea6a4ef3de578e70","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorSpawnMenu.js#0004:createEmitter","exportIndex":4,"name":"createEmitter","kind":"function","signature":"createEmitter(editor, markerEntityId, type = 'gas')","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorSpawnMenu.md","moduleTitle":"modules/EditorSpawnMenu","source":"editor/js/modules/EditorSpawnMenu.js","import":"/editor/js/modules/EditorSpawnMenu.js","sourceHash":"1e434a69cf2af629f3ad5efecd698e3e785f3e9aa9377fa7ea6a4ef3de578e70","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorSpawnMenu.js#0005:getEmitterColor","exportIndex":5,"name":"getEmitterColor","kind":"function","signature":"getEmitterColor(type)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorSpawnMenu.md","moduleTitle":"modules/EditorSpawnMenu","source":"editor/js/modules/EditorSpawnMenu.js","import":"/editor/js/modules/EditorSpawnMenu.js","sourceHash":"1e434a69cf2af629f3ad5efecd698e3e785f3e9aa9377fa7ea6a4ef3de578e70","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorSpawnMenu.js#0006:toggleSpawnMenu","exportIndex":6,"name":"toggleSpawnMenu","kind":"function","signature":"toggleSpawnMenu(editor)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorSpawnMenu.md","moduleTitle":"modules/EditorSpawnMenu","source":"editor/js/modules/EditorSpawnMenu.js","import":"/editor/js/modules/EditorSpawnMenu.js","sourceHash":"1e434a69cf2af629f3ad5efecd698e3e785f3e9aa9377fa7ea6a4ef3de578e70","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorSpawnMenu.js#0007:openSpawnMenu","exportIndex":7,"name":"openSpawnMenu","kind":"function","signature":"openSpawnMenu(editor)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorSpawnMenu.md","moduleTitle":"modules/EditorSpawnMenu","source":"editor/js/modules/EditorSpawnMenu.js","import":"/editor/js/modules/EditorSpawnMenu.js","sourceHash":"1e434a69cf2af629f3ad5efecd698e3e785f3e9aa9377fa7ea6a4ef3de578e70","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorSpawnMenu.js#0008:closeSpawnMenu","exportIndex":8,"name":"closeSpawnMenu","kind":"function","signature":"closeSpawnMenu(editor)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorTools.md","moduleTitle":"modules/EditorTools","source":"editor/js/modules/EditorTools.js","import":"/editor/js/modules/EditorTools.js","sourceHash":"32096585bb4126a4ff0bd2c6500b8c8b9633c3ae11ba61a817ae96d1f1b8681e","subsystem":"editor","recordType":"api-module","id":"module:editor/js/modules/EditorTools.js","title":"modules/EditorTools","summary":"EditorTools.js - GMod-style Tool System Manages interactive tools like chain tool, weld tool, constraint tool. Tools are activated from spawn menu and handle click events in viewport.","exportCount":2}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorTools.md","moduleTitle":"modules/EditorTools","source":"editor/js/modules/EditorTools.js","import":"/editor/js/modules/EditorTools.js","sourceHash":"32096585bb4126a4ff0bd2c6500b8c8b9633c3ae11ba61a817ae96d1f1b8681e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorTools.js#0000:ToolManager","exportIndex":0,"name":"ToolManager","kind":"class","signature":"class ToolManager","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorTools.md","moduleTitle":"modules/EditorTools","source":"editor/js/modules/EditorTools.js","import":"/editor/js/modules/EditorTools.js","sourceHash":"32096585bb4126a4ff0bd2c6500b8c8b9633c3ae11ba61a817ae96d1f1b8681e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorTools.js#0001:setupTools","exportIndex":1,"name":"setupTools","kind":"function","signature":"setupTools(editor)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorTransitions.md","moduleTitle":"modules/EditorTransitions","source":"editor/js/modules/EditorTransitions.js","import":"/editor/js/modules/EditorTransitions.js","sourceHash":"cbc2634692fd4b08241eade27eb6796d12a9656b03268f9f02d65f2eadffdd86","subsystem":"editor","recordType":"api-module","id":"module:editor/js/modules/EditorTransitions.js","title":"modules/EditorTransitions","summary":"EditorTransitions.js - Transition Effects System Features: - Multiple transition effects (fade, dissolve, pixelate, wipe, zoom, etc.) - Canvas-based effects for complex transitions - Random effect selection - Configurable duration and easing - Can be used for dialogs, scenes, or any UI element","exportCount":3}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorTransitions.md","moduleTitle":"modules/EditorTransitions","source":"editor/js/modules/EditorTransitions.js","import":"/editor/js/modules/EditorTransitions.js","sourceHash":"cbc2634692fd4b08241eade27eb6796d12a9656b03268f9f02d65f2eadffdd86","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorTransitions.js#0000:transitions","exportIndex":0,"name":"transitions","kind":"constant","signature":"transitions","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorTransitions.md","moduleTitle":"modules/EditorTransitions","source":"editor/js/modules/EditorTransitions.js","import":"/editor/js/modules/EditorTransitions.js","sourceHash":"cbc2634692fd4b08241eade27eb6796d12a9656b03268f9f02d65f2eadffdd86","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorTransitions.js#0001:EASINGS","exportIndex":1,"name":"EASINGS","kind":"re-export","signature":"EASINGS","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorTransitions.md","moduleTitle":"modules/EditorTransitions","source":"editor/js/modules/EditorTransitions.js","import":"/editor/js/modules/EditorTransitions.js","sourceHash":"cbc2634692fd4b08241eade27eb6796d12a9656b03268f9f02d65f2eadffdd86","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorTransitions.js#0002:TRANSITIONS","exportIndex":2,"name":"TRANSITIONS","kind":"re-export","signature":"TRANSITIONS","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorUI.md","moduleTitle":"modules/EditorUI","source":"editor/js/modules/EditorUI.js","import":"/editor/js/modules/EditorUI.js","sourceHash":"db12507910225fd10e28fa70c6c7d8dc5f3a61b78fc90657c76b20e23815140f","subsystem":"editor","recordType":"api-module","id":"module:editor/js/modules/EditorUI.js","title":"modules/EditorUI","summary":"============================================================================ EditorUI.js - UI Setup and Menu Handling ============================================================================","exportCount":20}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorUI.md","moduleTitle":"modules/EditorUI","source":"editor/js/modules/EditorUI.js","import":"/editor/js/modules/EditorUI.js","sourceHash":"db12507910225fd10e28fa70c6c7d8dc5f3a61b78fc90657c76b20e23815140f","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorUI.js#0000:showPrompt","exportIndex":0,"name":"showPrompt","kind":"function","signature":"showPrompt(title, message, defaultValue = '')","summary":"Show a custom prompt dialog"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorUI.md","moduleTitle":"modules/EditorUI","source":"editor/js/modules/EditorUI.js","import":"/editor/js/modules/EditorUI.js","sourceHash":"db12507910225fd10e28fa70c6c7d8dc5f3a61b78fc90657c76b20e23815140f","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorUI.js#0001:showConfirm","exportIndex":1,"name":"showConfirm","kind":"function","signature":"showConfirm(title, message, options = {})","summary":"Show a custom confirm dialog"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorUI.md","moduleTitle":"modules/EditorUI","source":"editor/js/modules/EditorUI.js","import":"/editor/js/modules/EditorUI.js","sourceHash":"db12507910225fd10e28fa70c6c7d8dc5f3a61b78fc90657c76b20e23815140f","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorUI.js#0002:showAlert","exportIndex":2,"name":"showAlert","kind":"function","signature":"showAlert(title, message)","summary":"Show a custom alert dialog"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorUI.md","moduleTitle":"modules/EditorUI","source":"editor/js/modules/EditorUI.js","import":"/editor/js/modules/EditorUI.js","sourceHash":"db12507910225fd10e28fa70c6c7d8dc5f3a61b78fc90657c76b20e23815140f","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorUI.js#0003:setupInspectorTabs","exportIndex":3,"name":"setupInspectorTabs","kind":"function","signature":"setupInspectorTabs(editor)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorUI.md","moduleTitle":"modules/EditorUI","source":"editor/js/modules/EditorUI.js","import":"/editor/js/modules/EditorUI.js","sourceHash":"db12507910225fd10e28fa70c6c7d8dc5f3a61b78fc90657c76b20e23815140f","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorUI.js#0004:setupResizablePanels","exportIndex":4,"name":"setupResizablePanels","kind":"function","signature":"setupResizablePanels(editor)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorUI.md","moduleTitle":"modules/EditorUI","source":"editor/js/modules/EditorUI.js","import":"/editor/js/modules/EditorUI.js","sourceHash":"db12507910225fd10e28fa70c6c7d8dc5f3a61b78fc90657c76b20e23815140f","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorUI.js#0005:setupConsoleResize","exportIndex":5,"name":"setupConsoleResize","kind":"function","signature":"setupConsoleResize(editor, saveSizes)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorUI.md","moduleTitle":"modules/EditorUI","source":"editor/js/modules/EditorUI.js","import":"/editor/js/modules/EditorUI.js","sourceHash":"db12507910225fd10e28fa70c6c7d8dc5f3a61b78fc90657c76b20e23815140f","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorUI.js#0006:setupToolbar","exportIndex":6,"name":"setupToolbar","kind":"function","signature":"setupToolbar(editor)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorUI.md","moduleTitle":"modules/EditorUI","source":"editor/js/modules/EditorUI.js","import":"/editor/js/modules/EditorUI.js","sourceHash":"db12507910225fd10e28fa70c6c7d8dc5f3a61b78fc90657c76b20e23815140f","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorUI.js#0007:setupSceneSelector","exportIndex":7,"name":"setupSceneSelector","kind":"function","signature":"setupSceneSelector(editor)","summary":"Setup scene selector dropdown in viewport header"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorUI.md","moduleTitle":"modules/EditorUI","source":"editor/js/modules/EditorUI.js","import":"/editor/js/modules/EditorUI.js","sourceHash":"db12507910225fd10e28fa70c6c7d8dc5f3a61b78fc90657c76b20e23815140f","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorUI.js#0008:refreshSceneSelector","exportIndex":8,"name":"refreshSceneSelector","kind":"function","signature":"async refreshSceneSelector(editor)","summary":"Refresh scene selector with available scenes"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorUI.md","moduleTitle":"modules/EditorUI","source":"editor/js/modules/EditorUI.js","import":"/editor/js/modules/EditorUI.js","sourceHash":"db12507910225fd10e28fa70c6c7d8dc5f3a61b78fc90657c76b20e23815140f","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorUI.js#0009:setupViewportToolbar","exportIndex":9,"name":"setupViewportToolbar","kind":"function","signature":"setupViewportToolbar(editor)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorUI.md","moduleTitle":"modules/EditorUI","source":"editor/js/modules/EditorUI.js","import":"/editor/js/modules/EditorUI.js","sourceHash":"db12507910225fd10e28fa70c6c7d8dc5f3a61b78fc90657c76b20e23815140f","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorUI.js#0010:updateToolbarState","exportIndex":10,"name":"updateToolbarState","kind":"function","signature":"updateToolbarState(editor)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorUI.md","moduleTitle":"modules/EditorUI","source":"editor/js/modules/EditorUI.js","import":"/editor/js/modules/EditorUI.js","sourceHash":"db12507910225fd10e28fa70c6c7d8dc5f3a61b78fc90657c76b20e23815140f","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorUI.js#0011:handleMenuAction","exportIndex":11,"name":"handleMenuAction","kind":"function","signature":"async handleMenuAction(editor, action)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorUI.md","moduleTitle":"modules/EditorUI","source":"editor/js/modules/EditorUI.js","import":"/editor/js/modules/EditorUI.js","sourceHash":"db12507910225fd10e28fa70c6c7d8dc5f3a61b78fc90657c76b20e23815140f","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorUI.js#0012:setupTimelineScrubbing","exportIndex":12,"name":"setupTimelineScrubbing","kind":"function","signature":"setupTimelineScrubbing(editor)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorUI.md","moduleTitle":"modules/EditorUI","source":"editor/js/modules/EditorUI.js","import":"/editor/js/modules/EditorUI.js","sourceHash":"db12507910225fd10e28fa70c6c7d8dc5f3a61b78fc90657c76b20e23815140f","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorUI.js#0013:updateTimelineUI","exportIndex":13,"name":"updateTimelineUI","kind":"function","signature":"updateTimelineUI(editor, skipMarkers = false)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorUI.md","moduleTitle":"modules/EditorUI","source":"editor/js/modules/EditorUI.js","import":"/editor/js/modules/EditorUI.js","sourceHash":"db12507910225fd10e28fa70c6c7d8dc5f3a61b78fc90657c76b20e23815140f","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorUI.js#0014:setupBottomTabs","exportIndex":14,"name":"setupBottomTabs","kind":"function","signature":"setupBottomTabs(editor)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorUI.md","moduleTitle":"modules/EditorUI","source":"editor/js/modules/EditorUI.js","import":"/editor/js/modules/EditorUI.js","sourceHash":"db12507910225fd10e28fa70c6c7d8dc5f3a61b78fc90657c76b20e23815140f","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorUI.js#0015:setupConsole","exportIndex":15,"name":"setupConsole","kind":"function","signature":"setupConsole(editor)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorUI.md","moduleTitle":"modules/EditorUI","source":"editor/js/modules/EditorUI.js","import":"/editor/js/modules/EditorUI.js","sourceHash":"db12507910225fd10e28fa70c6c7d8dc5f3a61b78fc90657c76b20e23815140f","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorUI.js#0016:addConsoleLine","exportIndex":16,"name":"addConsoleLine","kind":"function","signature":"addConsoleLine(editor, type, text)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorUI.md","moduleTitle":"modules/EditorUI","source":"editor/js/modules/EditorUI.js","import":"/editor/js/modules/EditorUI.js","sourceHash":"db12507910225fd10e28fa70c6c7d8dc5f3a61b78fc90657c76b20e23815140f","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorUI.js#0017:isTypingInUi","exportIndex":17,"name":"isTypingInUi","kind":"function","signature":"isTypingInUi()","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorUI.md","moduleTitle":"modules/EditorUI","source":"editor/js/modules/EditorUI.js","import":"/editor/js/modules/EditorUI.js","sourceHash":"db12507910225fd10e28fa70c6c7d8dc5f3a61b78fc90657c76b20e23815140f","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorUI.js#0018:showContextMenu","exportIndex":18,"name":"showContextMenu","kind":"re-export","signature":"showContextMenu","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorUI.md","moduleTitle":"modules/EditorUI","source":"editor/js/modules/EditorUI.js","import":"/editor/js/modules/EditorUI.js","sourceHash":"db12507910225fd10e28fa70c6c7d8dc5f3a61b78fc90657c76b20e23815140f","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorUI.js#0019:toast","exportIndex":19,"name":"toast","kind":"re-export","signature":"toast","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorUIComponents.md","moduleTitle":"modules/EditorUIComponents","source":"editor/js/modules/EditorUIComponents.js","import":"/editor/js/modules/EditorUIComponents.js","sourceHash":"04f1f44a2520ebb1afaa4d136175eb50c1041d1c3175556256ae786ea045b2ce","subsystem":"editor","recordType":"api-module","id":"module:editor/js/modules/EditorUIComponents.js","title":"modules/EditorUIComponents","summary":"Show a toast notification","exportCount":12}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorUIComponents.md","moduleTitle":"modules/EditorUIComponents","source":"editor/js/modules/EditorUIComponents.js","import":"/editor/js/modules/EditorUIComponents.js","sourceHash":"04f1f44a2520ebb1afaa4d136175eb50c1041d1c3175556256ae786ea045b2ce","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorUIComponents.js#0000:showToast","exportIndex":0,"name":"showToast","kind":"function","signature":"showToast(message, options = {})","summary":"Show a toast notification"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorUIComponents.md","moduleTitle":"modules/EditorUIComponents","source":"editor/js/modules/EditorUIComponents.js","import":"/editor/js/modules/EditorUIComponents.js","sourceHash":"04f1f44a2520ebb1afaa4d136175eb50c1041d1c3175556256ae786ea045b2ce","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorUIComponents.js#0001:setTheme","exportIndex":1,"name":"setTheme","kind":"function","signature":"setTheme(themeName)","summary":"Apply a theme by name - delegates to themeManager"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorUIComponents.md","moduleTitle":"modules/EditorUIComponents","source":"editor/js/modules/EditorUIComponents.js","import":"/editor/js/modules/EditorUIComponents.js","sourceHash":"04f1f44a2520ebb1afaa4d136175eb50c1041d1c3175556256ae786ea045b2ce","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorUIComponents.js#0002:getCurrentTheme","exportIndex":2,"name":"getCurrentTheme","kind":"function","signature":"getCurrentTheme()","summary":"Get current theme name"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorUIComponents.md","moduleTitle":"modules/EditorUIComponents","source":"editor/js/modules/EditorUIComponents.js","import":"/editor/js/modules/EditorUIComponents.js","sourceHash":"04f1f44a2520ebb1afaa4d136175eb50c1041d1c3175556256ae786ea045b2ce","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorUIComponents.js#0003:getThemes","exportIndex":3,"name":"getThemes","kind":"function","signature":"getThemes()","summary":"Get all available themes"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorUIComponents.md","moduleTitle":"modules/EditorUIComponents","source":"editor/js/modules/EditorUIComponents.js","import":"/editor/js/modules/EditorUIComponents.js","sourceHash":"04f1f44a2520ebb1afaa4d136175eb50c1041d1c3175556256ae786ea045b2ce","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorUIComponents.js#0004:initTheme","exportIndex":4,"name":"initTheme","kind":"function","signature":"initTheme()","summary":"Initialize theme from localStorage"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorUIComponents.md","moduleTitle":"modules/EditorUIComponents","source":"editor/js/modules/EditorUIComponents.js","import":"/editor/js/modules/EditorUIComponents.js","sourceHash":"04f1f44a2520ebb1afaa4d136175eb50c1041d1c3175556256ae786ea045b2ce","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorUIComponents.js#0005:showThemePicker","exportIndex":5,"name":"showThemePicker","kind":"function","signature":"showThemePicker()","summary":"Show theme picker dialog with categories"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorUIComponents.md","moduleTitle":"modules/EditorUIComponents","source":"editor/js/modules/EditorUIComponents.js","import":"/editor/js/modules/EditorUIComponents.js","sourceHash":"04f1f44a2520ebb1afaa4d136175eb50c1041d1c3175556256ae786ea045b2ce","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorUIComponents.js#0006:showContextMenu","exportIndex":6,"name":"showContextMenu","kind":"function","signature":"showContextMenu(event, items)","summary":"Show a custom context menu"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorUIComponents.md","moduleTitle":"modules/EditorUIComponents","source":"editor/js/modules/EditorUIComponents.js","import":"/editor/js/modules/EditorUIComponents.js","sourceHash":"04f1f44a2520ebb1afaa4d136175eb50c1041d1c3175556256ae786ea045b2ce","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorUIComponents.js#0007:hideContextMenu","exportIndex":7,"name":"hideContextMenu","kind":"function","signature":"hideContextMenu()","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorUIComponents.md","moduleTitle":"modules/EditorUIComponents","source":"editor/js/modules/EditorUIComponents.js","import":"/editor/js/modules/EditorUIComponents.js","sourceHash":"04f1f44a2520ebb1afaa4d136175eb50c1041d1c3175556256ae786ea045b2ce","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorUIComponents.js#0008:initTooltips","exportIndex":8,"name":"initTooltips","kind":"function","signature":"initTooltips()","summary":"Initialize tooltip system"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorUIComponents.md","moduleTitle":"modules/EditorUIComponents","source":"editor/js/modules/EditorUIComponents.js","import":"/editor/js/modules/EditorUIComponents.js","sourceHash":"04f1f44a2520ebb1afaa4d136175eb50c1041d1c3175556256ae786ea045b2ce","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorUIComponents.js#0009:showShortcutsHelp","exportIndex":9,"name":"showShortcutsHelp","kind":"function","signature":"showShortcutsHelp()","summary":"Show keyboard shortcuts overlay"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorUIComponents.md","moduleTitle":"modules/EditorUIComponents","source":"editor/js/modules/EditorUIComponents.js","import":"/editor/js/modules/EditorUIComponents.js","sourceHash":"04f1f44a2520ebb1afaa4d136175eb50c1041d1c3175556256ae786ea045b2ce","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorUIComponents.js#0010:initUIComponents","exportIndex":10,"name":"initUIComponents","kind":"function","signature":"initUIComponents()","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorUIComponents.md","moduleTitle":"modules/EditorUIComponents","source":"editor/js/modules/EditorUIComponents.js","import":"/editor/js/modules/EditorUIComponents.js","sourceHash":"04f1f44a2520ebb1afaa4d136175eb50c1041d1c3175556256ae786ea045b2ce","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorUIComponents.js#0011:toast","exportIndex":11,"name":"toast","kind":"constant","signature":"toast","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorWelding.md","moduleTitle":"modules/EditorWelding","source":"editor/js/modules/EditorWelding.js","import":"/editor/js/modules/EditorWelding.js","sourceHash":"73359e558661f8e3f890de8cc23a17e4484ad7e2bf061ff4de7cd1b5ddb4fa5b","subsystem":"editor","recordType":"api-module","id":"module:editor/js/modules/EditorWelding.js","title":"modules/EditorWelding","summary":"EditorWelding.js - Auto-weld system for physics bodies Extracted from EditorPhysics.js for modularity Features: - Auto-weld colliding bodies into rigid compounds - D6 joint-based welding with PhysX optimizations - ECS component persistence for scene save/load - Emitter weld pre-scanning","exportCount":11}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorWelding.md","moduleTitle":"modules/EditorWelding","source":"editor/js/modules/EditorWelding.js","import":"/editor/js/modules/EditorWelding.js","sourceHash":"73359e558661f8e3f890de8cc23a17e4484ad7e2bf061ff4de7cd1b5ddb4fa5b","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorWelding.js#0000:createFixedJoint","exportIndex":0,"name":"createFixedJoint","kind":"function","signature":"createFixedJoint(editor, bodyA, bodyB, entityB)","summary":"Create a fixed joint between two bodies Uses D6 joint locked in all axes with PhysX optimizations"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorWelding.md","moduleTitle":"modules/EditorWelding","source":"editor/js/modules/EditorWelding.js","import":"/editor/js/modules/EditorWelding.js","sourceHash":"73359e558661f8e3f890de8cc23a17e4484ad7e2bf061ff4de7cd1b5ddb4fa5b","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorWelding.js#0001:restoreWeldsFromComponents","exportIndex":1,"name":"restoreWeldsFromComponents","kind":"function","signature":"restoreWeldsFromComponents(editor)","summary":"Restore welds from WeldConstraint components (for scene load)"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorWelding.md","moduleTitle":"modules/EditorWelding","source":"editor/js/modules/EditorWelding.js","import":"/editor/js/modules/EditorWelding.js","sourceHash":"73359e558661f8e3f890de8cc23a17e4484ad7e2bf061ff4de7cd1b5ddb4fa5b","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorWelding.js#0002:performInitialWelding","exportIndex":2,"name":"performInitialWelding","kind":"function","signature":"performInitialWelding(editor)","summary":"Perform initial welding of nearby bodies before simulation starts. Graph-based approach: 1. Filter eligible entities (skip ragdolls, skinned meshes, spheres/capsules) 2. Find all directly-touching pairs via AABB overlap 3. Create joints for each touching pair 4. detectWeldGroups (called after) finds connected components from joints Spheres and capsules are excluded because they are projectiles/characters, not structural elements. Only box/convexMesh entities form weldable structures."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorWelding.md","moduleTitle":"modules/EditorWelding","source":"editor/js/modules/EditorWelding.js","import":"/editor/js/modules/EditorWelding.js","sourceHash":"73359e558661f8e3f890de8cc23a17e4484ad7e2bf061ff4de7cd1b5ddb4fa5b","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorWelding.js#0003:setAutoWeld","exportIndex":3,"name":"setAutoWeld","kind":"function","signature":"setAutoWeld(editor, enabled)","summary":"Enable/disable auto-welding of colliding bodies"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorWelding.md","moduleTitle":"modules/EditorWelding","source":"editor/js/modules/EditorWelding.js","import":"/editor/js/modules/EditorWelding.js","sourceHash":"73359e558661f8e3f890de8cc23a17e4484ad7e2bf061ff4de7cd1b5ddb4fa5b","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorWelding.js#0004:processWeldContacts","exportIndex":4,"name":"processWeldContacts","kind":"function","signature":"processWeldContacts(editor)","summary":"Process potential welds by checking body proximity (runtime)"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorWelding.md","moduleTitle":"modules/EditorWelding","source":"editor/js/modules/EditorWelding.js","import":"/editor/js/modules/EditorWelding.js","sourceHash":"73359e558661f8e3f890de8cc23a17e4484ad7e2bf061ff4de7cd1b5ddb4fa5b","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorWelding.js#0005:clearAllWelds","exportIndex":5,"name":"clearAllWelds","kind":"function","signature":"clearAllWelds(editor)","summary":"Break all welds and reset"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorWelding.md","moduleTitle":"modules/EditorWelding","source":"editor/js/modules/EditorWelding.js","import":"/editor/js/modules/EditorWelding.js","sourceHash":"73359e558661f8e3f890de8cc23a17e4484ad7e2bf061ff4de7cd1b5ddb4fa5b","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorWelding.js#0006:preScanEmitterWelds","exportIndex":6,"name":"preScanEmitterWelds","kind":"function","signature":"preScanEmitterWelds(editor)","summary":"Pre-scan to detect which emitters should be welded based on AABB surface proximity. Uses entity scale and physics body extents to compute surface-to-surface distance, so emitters touching any face of a large/tall object get welded correctly."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorWelding.md","moduleTitle":"modules/EditorWelding","source":"editor/js/modules/EditorWelding.js","import":"/editor/js/modules/EditorWelding.js","sourceHash":"73359e558661f8e3f890de8cc23a17e4484ad7e2bf061ff4de7cd1b5ddb4fa5b","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorWelding.js#0007:detectWeldGroups","exportIndex":7,"name":"detectWeldGroups","kind":"function","signature":"detectWeldGroups(editor)","summary":"Detect connected components of welded entities (weld groups). Runs AFTER performInitialWelding — uses editor.weldParentChildren + weldJoints. Outputs stored on editor: weldGroups: Map<rootEntityId, Set<memberEntityIds>>  (root included in set) weldChildToRoot: Map<childEntityId, rootEntityId>    (O(1) render skip) weldGroupLocalTransforms: Map<entityId, {localPos, localRot, localScale}>"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorWelding.md","moduleTitle":"modules/EditorWelding","source":"editor/js/modules/EditorWelding.js","import":"/editor/js/modules/EditorWelding.js","sourceHash":"73359e558661f8e3f890de8cc23a17e4484ad7e2bf061ff4de7cd1b5ddb4fa5b","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorWelding.js#0008:buildWeldGroupMeshes","exportIndex":8,"name":"buildWeldGroupMeshes","kind":"function","signature":"buildWeldGroupMeshes(editor, entityMeshRenderer, inferMeshTypeFn)","summary":"Build merged meshes for each weld group and register them with EntityMeshRenderer. Follows Unity CombineMeshes pattern: transform child vertices into root's local space. Also stores per-member mesh segment info for per-frame vertex updates."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorWelding.md","moduleTitle":"modules/EditorWelding","source":"editor/js/modules/EditorWelding.js","import":"/editor/js/modules/EditorWelding.js","sourceHash":"73359e558661f8e3f890de8cc23a17e4484ad7e2bf061ff4de7cd1b5ddb4fa5b","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorWelding.js#0009:syncWeldedEntities","exportIndex":9,"name":"syncWeldedEntities","kind":"function","signature":"syncWeldedEntities(editor, rotateVectorByQuatFn)","summary":"Sync welded child entity transforms to their parent bodies Called from stepPhysics loop"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EditorWelding.md","moduleTitle":"modules/EditorWelding","source":"editor/js/modules/EditorWelding.js","import":"/editor/js/modules/EditorWelding.js","sourceHash":"73359e558661f8e3f890de8cc23a17e4484ad7e2bf061ff4de7cd1b5ddb4fa5b","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EditorWelding.js#0010:rotateVectorByQuat","exportIndex":10,"name":"rotateVectorByQuat","kind":"re-export","signature":"rotateVectorByQuat","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EntitySchema.md","moduleTitle":"modules/EntitySchema","source":"editor/js/modules/EntitySchema.js","import":"/editor/js/modules/EntitySchema.js","sourceHash":"9075a367d2be34df865573d3fb839aab0817e1be22ba69790ace78085e9e65c5","subsystem":"editor","recordType":"api-module","id":"module:editor/js/modules/EntitySchema.js","title":"modules/EntitySchema","summary":"Generate a full JSON schema for an entity","exportCount":6}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EntitySchema.md","moduleTitle":"modules/EntitySchema","source":"editor/js/modules/EntitySchema.js","import":"/editor/js/modules/EntitySchema.js","sourceHash":"9075a367d2be34df865573d3fb839aab0817e1be22ba69790ace78085e9e65c5","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EntitySchema.js#0000:generateEntitySchema","exportIndex":0,"name":"generateEntitySchema","kind":"function","signature":"generateEntitySchema(editor, entityId)","summary":"Generate a full JSON schema for an entity"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EntitySchema.md","moduleTitle":"modules/EntitySchema","source":"editor/js/modules/EntitySchema.js","import":"/editor/js/modules/EntitySchema.js","sourceHash":"9075a367d2be34df865573d3fb839aab0817e1be22ba69790ace78085e9e65c5","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EntitySchema.js#0001:generateSceneSchema","exportIndex":1,"name":"generateSceneSchema","kind":"function","signature":"generateSceneSchema(editor)","summary":"Generate schemas for all entities in the scene"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EntitySchema.md","moduleTitle":"modules/EntitySchema","source":"editor/js/modules/EntitySchema.js","import":"/editor/js/modules/EntitySchema.js","sourceHash":"9075a367d2be34df865573d3fb839aab0817e1be22ba69790ace78085e9e65c5","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EntitySchema.js#0002:exportSceneToJSON","exportIndex":2,"name":"exportSceneToJSON","kind":"function","signature":"exportSceneToJSON(editor, pretty = true)","summary":"Export scene schema to JSON string"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EntitySchema.md","moduleTitle":"modules/EntitySchema","source":"editor/js/modules/EntitySchema.js","import":"/editor/js/modules/EntitySchema.js","sourceHash":"9075a367d2be34df865573d3fb839aab0817e1be22ba69790ace78085e9e65c5","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EntitySchema.js#0003:debugEntitySchema","exportIndex":3,"name":"debugEntitySchema","kind":"function","signature":"debugEntitySchema(editor, entityId)","summary":"Print entity schema to console (for debugging)"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EntitySchema.md","moduleTitle":"modules/EntitySchema","source":"editor/js/modules/EntitySchema.js","import":"/editor/js/modules/EntitySchema.js","sourceHash":"9075a367d2be34df865573d3fb839aab0817e1be22ba69790ace78085e9e65c5","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EntitySchema.js#0004:debugSceneSchema","exportIndex":4,"name":"debugSceneSchema","kind":"function","signature":"debugSceneSchema(editor)","summary":"Print full scene schema to console (for debugging)"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/EntitySchema.md","moduleTitle":"modules/EntitySchema","source":"editor/js/modules/EntitySchema.js","import":"/editor/js/modules/EntitySchema.js","sourceHash":"9075a367d2be34df865573d3fb839aab0817e1be22ba69790ace78085e9e65c5","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/EntitySchema.js#0005:getRelationshipSummary","exportIndex":5,"name":"getRelationshipSummary","kind":"function","signature":"getRelationshipSummary(editor, entityId)","summary":"Get a summary of entity relationships"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/GeometryBuilders.md","moduleTitle":"modules/GeometryBuilders","source":"editor/js/modules/GeometryBuilders.js","import":"/editor/js/modules/GeometryBuilders.js","sourceHash":"a1c318aeafa8252015706b6eb5c40a20a1a5fa7d03904b1158970f4670ac0274","subsystem":"editor","recordType":"api-module","id":"module:editor/js/modules/GeometryBuilders.js","title":"modules/GeometryBuilders","summary":"GeometryBuilders.js - Procedural geometry generation for physics colliders Extracted from EditorPhysics.js for modularity","exportCount":7}
{"schemaVersion":1,"modulePath":"editor/reference/modules/GeometryBuilders.md","moduleTitle":"modules/GeometryBuilders","source":"editor/js/modules/GeometryBuilders.js","import":"/editor/js/modules/GeometryBuilders.js","sourceHash":"a1c318aeafa8252015706b6eb5c40a20a1a5fa7d03904b1158970f4670ac0274","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/GeometryBuilders.js#0000:createWedgeGeometry","exportIndex":0,"name":"createWedgeGeometry","kind":"function","signature":"createWedgeGeometry()","summary":"Create wedge/ramp geometry - flat bottom, sloped top"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/GeometryBuilders.md","moduleTitle":"modules/GeometryBuilders","source":"editor/js/modules/GeometryBuilders.js","import":"/editor/js/modules/GeometryBuilders.js","sourceHash":"a1c318aeafa8252015706b6eb5c40a20a1a5fa7d03904b1158970f4670ac0274","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/GeometryBuilders.js#0001:createPrismGeometry","exportIndex":1,"name":"createPrismGeometry","kind":"function","signature":"createPrismGeometry()","summary":"Create hexagonal prism geometry"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/GeometryBuilders.md","moduleTitle":"modules/GeometryBuilders","source":"editor/js/modules/GeometryBuilders.js","import":"/editor/js/modules/GeometryBuilders.js","sourceHash":"a1c318aeafa8252015706b6eb5c40a20a1a5fa7d03904b1158970f4670ac0274","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/GeometryBuilders.js#0002:createStairsGeometry","exportIndex":2,"name":"createStairsGeometry","kind":"function","signature":"createStairsGeometry()","summary":"Create stairs geometry (4 steps)"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/GeometryBuilders.md","moduleTitle":"modules/GeometryBuilders","source":"editor/js/modules/GeometryBuilders.js","import":"/editor/js/modules/GeometryBuilders.js","sourceHash":"a1c318aeafa8252015706b6eb5c40a20a1a5fa7d03904b1158970f4670ac0274","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/GeometryBuilders.js#0003:createArchGeometry","exportIndex":3,"name":"createArchGeometry","kind":"function","signature":"createArchGeometry()","summary":"Create arch geometry with legs and curved top"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/GeometryBuilders.md","moduleTitle":"modules/GeometryBuilders","source":"editor/js/modules/GeometryBuilders.js","import":"/editor/js/modules/GeometryBuilders.js","sourceHash":"a1c318aeafa8252015706b6eb5c40a20a1a5fa7d03904b1158970f4670ac0274","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/GeometryBuilders.js#0004:createHelixGeometry","exportIndex":4,"name":"createHelixGeometry","kind":"function","signature":"createHelixGeometry()","summary":"Create helix/spring geometry"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/GeometryBuilders.md","moduleTitle":"modules/GeometryBuilders","source":"editor/js/modules/GeometryBuilders.js","import":"/editor/js/modules/GeometryBuilders.js","sourceHash":"a1c318aeafa8252015706b6eb5c40a20a1a5fa7d03904b1158970f4670ac0274","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/GeometryBuilders.js#0005:createGearGeometry","exportIndex":5,"name":"createGearGeometry","kind":"function","signature":"createGearGeometry()","summary":"Create gear geometry with teeth"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/GeometryBuilders.md","moduleTitle":"modules/GeometryBuilders","source":"editor/js/modules/GeometryBuilders.js","import":"/editor/js/modules/GeometryBuilders.js","sourceHash":"a1c318aeafa8252015706b6eb5c40a20a1a5fa7d03904b1158970f4670ac0274","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/GeometryBuilders.js#0006:createStarGeometry","exportIndex":6,"name":"createStarGeometry","kind":"function","signature":"createStarGeometry()","summary":"Create 5-point star geometry"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/HotkeyManager.md","moduleTitle":"modules/HotkeyManager","source":"editor/js/modules/HotkeyManager.js","import":"/editor/js/modules/HotkeyManager.js","sourceHash":"c134ea2f1ecafdb513b204b761cee9edc47377d43af5597634f0e5c0dd9aa21a","subsystem":"editor","recordType":"api-module","id":"module:editor/js/modules/HotkeyManager.js","title":"modules/HotkeyManager","summary":"HotkeyManager.js - Centralized Hotkey System with YAML-style Configuration Features: - Centralized hotkey definitions - Easy configuration via config object (YAML-style) - Runtime hotkey rebinding - Hotkey editor UI - localStorage persistence for custom bindings - Conflict detection","exportCount":3}
{"schemaVersion":1,"modulePath":"editor/reference/modules/HotkeyManager.md","moduleTitle":"modules/HotkeyManager","source":"editor/js/modules/HotkeyManager.js","import":"/editor/js/modules/HotkeyManager.js","sourceHash":"c134ea2f1ecafdb513b204b761cee9edc47377d43af5597634f0e5c0dd9aa21a","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/HotkeyManager.js#0000:showHotkeyEditor","exportIndex":0,"name":"showHotkeyEditor","kind":"function","signature":"showHotkeyEditor()","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/HotkeyManager.md","moduleTitle":"modules/HotkeyManager","source":"editor/js/modules/HotkeyManager.js","import":"/editor/js/modules/HotkeyManager.js","sourceHash":"c134ea2f1ecafdb513b204b761cee9edc47377d43af5597634f0e5c0dd9aa21a","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/HotkeyManager.js#0001:DEFAULT_HOTKEYS","exportIndex":1,"name":"DEFAULT_HOTKEYS","kind":"re-export","signature":"DEFAULT_HOTKEYS","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/HotkeyManager.md","moduleTitle":"modules/HotkeyManager","source":"editor/js/modules/HotkeyManager.js","import":"/editor/js/modules/HotkeyManager.js","sourceHash":"c134ea2f1ecafdb513b204b761cee9edc47377d43af5597634f0e5c0dd9aa21a","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/HotkeyManager.js#0002:hotkeyManager","exportIndex":2,"name":"hotkeyManager","kind":"re-export","signature":"hotkeyManager","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/LoadingManager.md","moduleTitle":"modules/LoadingManager","source":"editor/js/modules/LoadingManager.js","import":"/editor/js/modules/LoadingManager.js","sourceHash":"50cda92dbe845c1833c7a286b8e8241b932b65df03453c7964b6db79878964c5","subsystem":"editor","recordType":"api-module","id":"module:editor/js/modules/LoadingManager.js","title":"modules/LoadingManager","summary":"LoadingManager.js - Advanced loading system with progress tracking Manages dynamic loading of editor components with real progress, stage tracking, and a polished loading screen UI.","exportCount":6}
{"schemaVersion":1,"modulePath":"editor/reference/modules/LoadingManager.md","moduleTitle":"modules/LoadingManager","source":"editor/js/modules/LoadingManager.js","import":"/editor/js/modules/LoadingManager.js","sourceHash":"50cda92dbe845c1833c7a286b8e8241b932b65df03453c7964b6db79878964c5","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/LoadingManager.js#0000:LoadingManager","exportIndex":0,"name":"LoadingManager","kind":"class","signature":"class LoadingManager","summary":"LoadingManager - Tracks and displays loading progress"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/LoadingManager.md","moduleTitle":"modules/LoadingManager","source":"editor/js/modules/LoadingManager.js","import":"/editor/js/modules/LoadingManager.js","sourceHash":"50cda92dbe845c1833c7a286b8e8241b932b65df03453c7964b6db79878964c5","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/LoadingManager.js#0001:getLoadingManager","exportIndex":1,"name":"getLoadingManager","kind":"function","signature":"getLoadingManager()","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/LoadingManager.md","moduleTitle":"modules/LoadingManager","source":"editor/js/modules/LoadingManager.js","import":"/editor/js/modules/LoadingManager.js","sourceHash":"50cda92dbe845c1833c7a286b8e8241b932b65df03453c7964b6db79878964c5","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/LoadingManager.js#0002:loadingStage","exportIndex":2,"name":"loadingStage","kind":"function","signature":"loadingStage(stageId, subtitle = '')","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/LoadingManager.md","moduleTitle":"modules/LoadingManager","source":"editor/js/modules/LoadingManager.js","import":"/editor/js/modules/LoadingManager.js","sourceHash":"50cda92dbe845c1833c7a286b8e8241b932b65df03453c7964b6db79878964c5","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/LoadingManager.js#0003:loadingProgress","exportIndex":3,"name":"loadingProgress","kind":"function","signature":"loadingProgress(progress)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/LoadingManager.md","moduleTitle":"modules/LoadingManager","source":"editor/js/modules/LoadingManager.js","import":"/editor/js/modules/LoadingManager.js","sourceHash":"50cda92dbe845c1833c7a286b8e8241b932b65df03453c7964b6db79878964c5","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/LoadingManager.js#0004:loadingComplete","exportIndex":4,"name":"loadingComplete","kind":"function","signature":"loadingComplete(stageId)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/LoadingManager.md","moduleTitle":"modules/LoadingManager","source":"editor/js/modules/LoadingManager.js","import":"/editor/js/modules/LoadingManager.js","sourceHash":"50cda92dbe845c1833c7a286b8e8241b932b65df03453c7964b6db79878964c5","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/LoadingManager.js#0005:loadingFinish","exportIndex":5,"name":"loadingFinish","kind":"function","signature":"loadingFinish()","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ModelImporter.md","moduleTitle":"modules/ModelImporter","source":"editor/js/modules/ModelImporter.js","import":"/editor/js/modules/ModelImporter.js","sourceHash":"3729d7852026829e792ba1b102941908c8965d475d84c88e09f2ed7f6cad7e18","subsystem":"editor","recordType":"api-module","id":"module:editor/js/modules/ModelImporter.js","title":"modules/ModelImporter","summary":"============================================================================ ModelImporter.js - OBJ / glTF / GLB parsers + entity spawning ============================================================================","exportCount":13}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ModelImporter.md","moduleTitle":"modules/ModelImporter","source":"editor/js/modules/ModelImporter.js","import":"/editor/js/modules/ModelImporter.js","sourceHash":"3729d7852026829e792ba1b102941908c8965d475d84c88e09f2ed7f6cad7e18","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ModelImporter.js#0000:parseModelFile","exportIndex":0,"name":"parseModelFile","kind":"function","signature":"async parseModelFile(file)","summary":"Parse a model File into geometry data."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ModelImporter.md","moduleTitle":"modules/ModelImporter","source":"editor/js/modules/ModelImporter.js","import":"/editor/js/modules/ModelImporter.js","sourceHash":"3729d7852026829e792ba1b102941908c8965d475d84c88e09f2ed7f6cad7e18","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ModelImporter.js#0001:parsePointCloudFile","exportIndex":1,"name":"parsePointCloudFile","kind":"function","signature":"async parsePointCloudFile(file)","summary":"Parse a point cloud file into point data."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ModelImporter.md","moduleTitle":"modules/ModelImporter","source":"editor/js/modules/ModelImporter.js","import":"/editor/js/modules/ModelImporter.js","sourceHash":"3729d7852026829e792ba1b102941908c8965d475d84c88e09f2ed7f6cad7e18","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ModelImporter.js#0002:parseOBJ","exportIndex":2,"name":"parseOBJ","kind":"function","signature":"parseOBJ(text)","summary":"Parse Wavefront OBJ text into indexed geometry. Handles v, vn, vt, f directives. Triangulates quads."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ModelImporter.md","moduleTitle":"modules/ModelImporter","source":"editor/js/modules/ModelImporter.js","import":"/editor/js/modules/ModelImporter.js","sourceHash":"3729d7852026829e792ba1b102941908c8965d475d84c88e09f2ed7f6cad7e18","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ModelImporter.js#0003:parseGLB","exportIndex":3,"name":"parseGLB","kind":"function","signature":"parseGLB(arrayBuffer, modelName)","summary":"Parse a GLB (binary glTF 2.0) ArrayBuffer. Extracts all mesh primitives as flat position/normal/uv/index arrays."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ModelImporter.md","moduleTitle":"modules/ModelImporter","source":"editor/js/modules/ModelImporter.js","import":"/editor/js/modules/ModelImporter.js","sourceHash":"3729d7852026829e792ba1b102941908c8965d475d84c88e09f2ed7f6cad7e18","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ModelImporter.js#0004:parseGLTFJson","exportIndex":4,"name":"parseGLTFJson","kind":"function","signature":"parseGLTFJson(gltf, binBuffer, modelName)","summary":"Parse glTF JSON + optional binary buffer into mesh geometries."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ModelImporter.md","moduleTitle":"modules/ModelImporter","source":"editor/js/modules/ModelImporter.js","import":"/editor/js/modules/ModelImporter.js","sourceHash":"3729d7852026829e792ba1b102941908c8965d475d84c88e09f2ed7f6cad7e18","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ModelImporter.js#0005:extractGLTFNodeAnimationGraph","exportIndex":5,"name":"extractGLTFNodeAnimationGraph","kind":"function","signature":"extractGLTFNodeAnimationGraph(gltf)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ModelImporter.md","moduleTitle":"modules/ModelImporter","source":"editor/js/modules/ModelImporter.js","import":"/editor/js/modules/ModelImporter.js","sourceHash":"3729d7852026829e792ba1b102941908c8965d475d84c88e09f2ed7f6cad7e18","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ModelImporter.js#0006:collectGLTFNodeInstances","exportIndex":6,"name":"collectGLTFNodeInstances","kind":"function","signature":"collectGLTFNodeInstances(gltf, suppliedGraph = null)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ModelImporter.md","moduleTitle":"modules/ModelImporter","source":"editor/js/modules/ModelImporter.js","import":"/editor/js/modules/ModelImporter.js","sourceHash":"3729d7852026829e792ba1b102941908c8965d475d84c88e09f2ed7f6cad7e18","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ModelImporter.js#0007:createModelInstanceId","exportIndex":7,"name":"createModelInstanceId","kind":"function","signature":"createModelInstanceId()","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ModelImporter.md","moduleTitle":"modules/ModelImporter","source":"editor/js/modules/ModelImporter.js","import":"/editor/js/modules/ModelImporter.js","sourceHash":"3729d7852026829e792ba1b102941908c8965d475d84c88e09f2ed7f6cad7e18","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ModelImporter.js#0008:createModelPartDescriptors","exportIndex":8,"name":"createModelPartDescriptors","kind":"function","signature":"createModelPartDescriptors(result, assetId, instanceId, existingParts = null)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ModelImporter.md","moduleTitle":"modules/ModelImporter","source":"editor/js/modules/ModelImporter.js","import":"/editor/js/modules/ModelImporter.js","sourceHash":"3729d7852026829e792ba1b102941908c8965d475d84c88e09f2ed7f6cad7e18","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ModelImporter.js#0009:computeModelBounds","exportIndex":9,"name":"computeModelBounds","kind":"function","signature":"computeModelBounds(result)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ModelImporter.md","moduleTitle":"modules/ModelImporter","source":"editor/js/modules/ModelImporter.js","import":"/editor/js/modules/ModelImporter.js","sourceHash":"3729d7852026829e792ba1b102941908c8965d475d84c88e09f2ed7f6cad7e18","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ModelImporter.js#0010:registerModelRuntimeMaterials","exportIndex":10,"name":"registerModelRuntimeMaterials","kind":"function","signature":"async registerModelRuntimeMaterials(editor, result, parts)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ModelImporter.md","moduleTitle":"modules/ModelImporter","source":"editor/js/modules/ModelImporter.js","import":"/editor/js/modules/ModelImporter.js","sourceHash":"3729d7852026829e792ba1b102941908c8965d475d84c88e09f2ed7f6cad7e18","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ModelImporter.js#0011:registerModelRuntimeMeshes","exportIndex":11,"name":"registerModelRuntimeMeshes","kind":"function","signature":"async registerModelRuntimeMeshes(editor, result, parts, modelInstanceId = null, modelAnimation = null, modelMorphWeights = null,)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ModelImporter.md","moduleTitle":"modules/ModelImporter","source":"editor/js/modules/ModelImporter.js","import":"/editor/js/modules/ModelImporter.js","sourceHash":"3729d7852026829e792ba1b102941908c8965d475d84c88e09f2ed7f6cad7e18","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ModelImporter.js#0012:spawnModelAsset","exportIndex":12,"name":"spawnModelAsset","kind":"function","signature":"async spawnModelAsset(editor, asset)","summary":"Load a model asset, register its mesh, and create an entity in the scene."}
{"schemaVersion":1,"modulePath":"editor/reference/modules/PrefabLibrary.md","moduleTitle":"modules/PrefabLibrary","source":"editor/js/modules/PrefabLibrary.js","import":"/editor/js/modules/PrefabLibrary.js","sourceHash":"cb7cf17ba1d40b8ac2a95a69e559b0fdff30b9e0eafc56523c134e4a4b6f8dce","subsystem":"editor","recordType":"api-module","id":"module:editor/js/modules/PrefabLibrary.js","title":"modules/PrefabLibrary","summary":"PrefabManager.js - Folder-based Prefab System (File-based) Based on J:\\game2 implementation - proper file persistence Every entity folder is a prefab that can be: - Exported to Assets/Prefabs/*.prefab.json - Imported/instantiated into any scene - Updated (re-export overwrites) - Listed and browsed","exportCount":10}
{"schemaVersion":1,"modulePath":"editor/reference/modules/PrefabLibrary.md","moduleTitle":"modules/PrefabLibrary","source":"editor/js/modules/PrefabLibrary.js","import":"/editor/js/modules/PrefabLibrary.js","sourceHash":"cb7cf17ba1d40b8ac2a95a69e559b0fdff30b9e0eafc56523c134e4a4b6f8dce","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/PrefabLibrary.js#0000:exportFolderAsPrefab","exportIndex":0,"name":"exportFolderAsPrefab","kind":"function","signature":"exportFolderAsPrefab(editor, folderId)","summary":"Export a folder as a prefab data structure"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/PrefabLibrary.md","moduleTitle":"modules/PrefabLibrary","source":"editor/js/modules/PrefabLibrary.js","import":"/editor/js/modules/PrefabLibrary.js","sourceHash":"cb7cf17ba1d40b8ac2a95a69e559b0fdff30b9e0eafc56523c134e4a4b6f8dce","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/PrefabLibrary.js#0001:setCollabPrefabHooks","exportIndex":1,"name":"setCollabPrefabHooks","kind":"function","signature":"setCollabPrefabHooks(onSave, onDelete)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/PrefabLibrary.md","moduleTitle":"modules/PrefabLibrary","source":"editor/js/modules/PrefabLibrary.js","import":"/editor/js/modules/PrefabLibrary.js","sourceHash":"cb7cf17ba1d40b8ac2a95a69e559b0fdff30b9e0eafc56523c134e4a4b6f8dce","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/PrefabLibrary.js#0002:savePrefabToFile","exportIndex":2,"name":"savePrefabToFile","kind":"function","signature":"async savePrefabToFile(editor, prefab)","summary":"Save prefab to Assets/Prefabs/ directory"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/PrefabLibrary.md","moduleTitle":"modules/PrefabLibrary","source":"editor/js/modules/PrefabLibrary.js","import":"/editor/js/modules/PrefabLibrary.js","sourceHash":"cb7cf17ba1d40b8ac2a95a69e559b0fdff30b9e0eafc56523c134e4a4b6f8dce","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/PrefabLibrary.js#0003:exportFolder","exportIndex":3,"name":"exportFolder","kind":"function","signature":"async exportFolder(editor, folderId)","summary":"Export folder and save to file (combined operation)"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/PrefabLibrary.md","moduleTitle":"modules/PrefabLibrary","source":"editor/js/modules/PrefabLibrary.js","import":"/editor/js/modules/PrefabLibrary.js","sourceHash":"cb7cf17ba1d40b8ac2a95a69e559b0fdff30b9e0eafc56523c134e4a4b6f8dce","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/PrefabLibrary.js#0004:listPrefabs","exportIndex":4,"name":"listPrefabs","kind":"function","signature":"async listPrefabs(editor)","summary":"List all available prefabs in Assets/Prefabs/"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/PrefabLibrary.md","moduleTitle":"modules/PrefabLibrary","source":"editor/js/modules/PrefabLibrary.js","import":"/editor/js/modules/PrefabLibrary.js","sourceHash":"cb7cf17ba1d40b8ac2a95a69e559b0fdff30b9e0eafc56523c134e4a4b6f8dce","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/PrefabLibrary.js#0005:loadPrefabFile","exportIndex":5,"name":"loadPrefabFile","kind":"function","signature":"async loadPrefabFile(editor, fileName)","summary":"Load prefab from file"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/PrefabLibrary.md","moduleTitle":"modules/PrefabLibrary","source":"editor/js/modules/PrefabLibrary.js","import":"/editor/js/modules/PrefabLibrary.js","sourceHash":"cb7cf17ba1d40b8ac2a95a69e559b0fdff30b9e0eafc56523c134e4a4b6f8dce","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/PrefabLibrary.js#0006:loadPrefabByUUID","exportIndex":6,"name":"loadPrefabByUUID","kind":"function","signature":"async loadPrefabByUUID(editor, uuid)","summary":"Load prefab by UUID"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/PrefabLibrary.md","moduleTitle":"modules/PrefabLibrary","source":"editor/js/modules/PrefabLibrary.js","import":"/editor/js/modules/PrefabLibrary.js","sourceHash":"cb7cf17ba1d40b8ac2a95a69e559b0fdff30b9e0eafc56523c134e4a4b6f8dce","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/PrefabLibrary.js#0007:instantiatePrefab","exportIndex":7,"name":"instantiatePrefab","kind":"function","signature":"instantiatePrefab(editor, prefab, targetFolderId = null, offset = [0, 0, 0])","summary":"Instantiate a prefab in the scene"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/PrefabLibrary.md","moduleTitle":"modules/PrefabLibrary","source":"editor/js/modules/PrefabLibrary.js","import":"/editor/js/modules/PrefabLibrary.js","sourceHash":"cb7cf17ba1d40b8ac2a95a69e559b0fdff30b9e0eafc56523c134e4a4b6f8dce","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/PrefabLibrary.js#0008:importPrefab","exportIndex":8,"name":"importPrefab","kind":"function","signature":"async importPrefab(editor, fileName, targetFolderId = null, offset = [0, 0, 0])","summary":"Import prefab from file and instantiate"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/PrefabLibrary.md","moduleTitle":"modules/PrefabLibrary","source":"editor/js/modules/PrefabLibrary.js","import":"/editor/js/modules/PrefabLibrary.js","sourceHash":"cb7cf17ba1d40b8ac2a95a69e559b0fdff30b9e0eafc56523c134e4a4b6f8dce","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/PrefabLibrary.js#0009:deletePrefab","exportIndex":9,"name":"deletePrefab","kind":"function","signature":"async deletePrefab(editor, fileName)","summary":"Delete prefab file"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ProjectStorage.md","moduleTitle":"modules/ProjectStorage","source":"editor/js/modules/ProjectStorage.js","import":"/editor/js/modules/ProjectStorage.js","sourceHash":"b412f8d2437921bce22b46c044e8b11da0435b6e755c38412420b103d96bd690","subsystem":"editor","recordType":"api-module","id":"module:editor/js/modules/ProjectStorage.js","title":"modules/ProjectStorage","summary":"ProjectManager - Save/load/export projects (pure browser, no Node.js) Uses IndexedDB + File System Access API","exportCount":12}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ProjectStorage.md","moduleTitle":"modules/ProjectStorage","source":"editor/js/modules/ProjectStorage.js","import":"/editor/js/modules/ProjectStorage.js","sourceHash":"b412f8d2437921bce22b46c044e8b11da0435b6e755c38412420b103d96bd690","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ProjectStorage.js#0000:setCollabSaveHook","exportIndex":0,"name":"setCollabSaveHook","kind":"function","signature":"setCollabSaveHook(fn)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ProjectStorage.md","moduleTitle":"modules/ProjectStorage","source":"editor/js/modules/ProjectStorage.js","import":"/editor/js/modules/ProjectStorage.js","sourceHash":"b412f8d2437921bce22b46c044e8b11da0435b6e755c38412420b103d96bd690","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ProjectStorage.js#0001:saveProject","exportIndex":1,"name":"saveProject","kind":"function","signature":"async saveProject(project)","summary":"Save project to IndexedDB"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ProjectStorage.md","moduleTitle":"modules/ProjectStorage","source":"editor/js/modules/ProjectStorage.js","import":"/editor/js/modules/ProjectStorage.js","sourceHash":"b412f8d2437921bce22b46c044e8b11da0435b6e755c38412420b103d96bd690","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ProjectStorage.js#0002:loadProject","exportIndex":2,"name":"loadProject","kind":"function","signature":"async loadProject(projectUuid)","summary":"Load project from IndexedDB"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ProjectStorage.md","moduleTitle":"modules/ProjectStorage","source":"editor/js/modules/ProjectStorage.js","import":"/editor/js/modules/ProjectStorage.js","sourceHash":"b412f8d2437921bce22b46c044e8b11da0435b6e755c38412420b103d96bd690","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ProjectStorage.js#0003:listProjects","exportIndex":3,"name":"listProjects","kind":"function","signature":"async listProjects()","summary":"List all projects"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ProjectStorage.md","moduleTitle":"modules/ProjectStorage","source":"editor/js/modules/ProjectStorage.js","import":"/editor/js/modules/ProjectStorage.js","sourceHash":"b412f8d2437921bce22b46c044e8b11da0435b6e755c38412420b103d96bd690","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ProjectStorage.js#0004:deleteProject","exportIndex":4,"name":"deleteProject","kind":"function","signature":"async deleteProject(projectUuid)","summary":"Delete project"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ProjectStorage.md","moduleTitle":"modules/ProjectStorage","source":"editor/js/modules/ProjectStorage.js","import":"/editor/js/modules/ProjectStorage.js","sourceHash":"b412f8d2437921bce22b46c044e8b11da0435b6e755c38412420b103d96bd690","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ProjectStorage.js#0005:getLastProjectUuid","exportIndex":5,"name":"getLastProjectUuid","kind":"function","signature":"getLastProjectUuid()","summary":"Get last opened project UUID"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ProjectStorage.md","moduleTitle":"modules/ProjectStorage","source":"editor/js/modules/ProjectStorage.js","import":"/editor/js/modules/ProjectStorage.js","sourceHash":"b412f8d2437921bce22b46c044e8b11da0435b6e755c38412420b103d96bd690","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ProjectStorage.js#0006:createProject","exportIndex":6,"name":"createProject","kind":"function","signature":"createProject(name = 'New Project')","summary":"Create new project"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ProjectStorage.md","moduleTitle":"modules/ProjectStorage","source":"editor/js/modules/ProjectStorage.js","import":"/editor/js/modules/ProjectStorage.js","sourceHash":"b412f8d2437921bce22b46c044e8b11da0435b6e755c38412420b103d96bd690","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ProjectStorage.js#0007:exportProject","exportIndex":7,"name":"exportProject","kind":"function","signature":"async exportProject(project, options = {})","summary":"Export project to ZIP for distribution Strips editor-only data and packs for runtime"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ProjectStorage.md","moduleTitle":"modules/ProjectStorage","source":"editor/js/modules/ProjectStorage.js","import":"/editor/js/modules/ProjectStorage.js","sourceHash":"b412f8d2437921bce22b46c044e8b11da0435b6e755c38412420b103d96bd690","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ProjectStorage.js#0008:downloadProjectBackup","exportIndex":8,"name":"downloadProjectBackup","kind":"function","signature":"async downloadProjectBackup(project)","summary":"Download project as JSON file (backup)"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ProjectStorage.md","moduleTitle":"modules/ProjectStorage","source":"editor/js/modules/ProjectStorage.js","import":"/editor/js/modules/ProjectStorage.js","sourceHash":"b412f8d2437921bce22b46c044e8b11da0435b6e755c38412420b103d96bd690","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ProjectStorage.js#0009:importProjectFromFile","exportIndex":9,"name":"importProjectFromFile","kind":"function","signature":"async importProjectFromFile(file)","summary":"Import project from JSON file"}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ProjectStorage.md","moduleTitle":"modules/ProjectStorage","source":"editor/js/modules/ProjectStorage.js","import":"/editor/js/modules/ProjectStorage.js","sourceHash":"b412f8d2437921bce22b46c044e8b11da0435b6e755c38412420b103d96bd690","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ProjectStorage.js#0010:enableAutoSave","exportIndex":10,"name":"enableAutoSave","kind":"function","signature":"enableAutoSave(project, intervalMs = 60000)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/ProjectStorage.md","moduleTitle":"modules/ProjectStorage","source":"editor/js/modules/ProjectStorage.js","import":"/editor/js/modules/ProjectStorage.js","sourceHash":"b412f8d2437921bce22b46c044e8b11da0435b6e755c38412420b103d96bd690","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/ProjectStorage.js#0011:disableAutoSave","exportIndex":11,"name":"disableAutoSave","kind":"function","signature":"disableAutoSave()","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/modules/SubScene.md","moduleTitle":"modules/SubScene","source":"editor/js/modules/SubScene.js","import":"/editor/js/modules/SubScene.js","sourceHash":"c4a015897c6e42b368c893ce975b6c0ff9803833c5a63f787bc5acad715bb79d","subsystem":"editor","recordType":"api-module","id":"module:editor/js/modules/SubScene.js","title":"modules/SubScene","summary":"============================================================================ SubScene.js — Parallel scene layer for debris, fragments & world environment  Lives alongside the editor scene but is NOT part of it. Objects here: - Are NOT in editor.scene.entities - Are NOT selectable, saveable, or undoable - Have their own PhysX bodies for physics simulation - Are rendered via EntityMeshRenderer in a dedicated pass - Have automatic lifecycle (fade, expire, cleanup)  Categories: 'debris'   — tiny short-lived particles (dust, sparks, splinters) 'fragment' — larger breakoff chunks from fractured meshes 'env'      — persistent world environment objects (no auto-expire)  Usage: const sub = editor.subScene; sub.spawn({ category: 'debris', meshType: 'cube', position, velocity, ... }); sub.spawnFragment(parentEntityId, { meshType, position, ... }); sub.tick(dt);          // called from stepPhysics sub.render(rp, vp, emr); // called from Viewport sub.clear();           // on play→edit transition ============================================================================","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/modules/SubScene.md","moduleTitle":"modules/SubScene","source":"editor/js/modules/SubScene.js","import":"/editor/js/modules/SubScene.js","sourceHash":"c4a015897c6e42b368c893ce975b6c0ff9803833c5a63f787bc5acad715bb79d","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/modules/SubScene.js#0000:SubScene","exportIndex":0,"name":"SubScene","kind":"class","signature":"class SubScene","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/panels/AssetPanel.md","moduleTitle":"panels/AssetPanel","source":"editor/js/panels/AssetPanel.js","import":"/editor/js/panels/AssetPanel.js","sourceHash":"7ede4830fa3b0f3dd3e1c9c067a13ddb6996f909e3a23351977c5b789da55f86","subsystem":"editor","recordType":"api-module","id":"module:editor/js/panels/AssetPanel.js","title":"panels/AssetPanel","summary":"============================================================================ AssetPanel.js - Bottom-panel asset browser (Unity/Unreal-inspired) ============================================================================","exportCount":7}
{"schemaVersion":1,"modulePath":"editor/reference/panels/AssetPanel.md","moduleTitle":"panels/AssetPanel","source":"editor/js/panels/AssetPanel.js","import":"/editor/js/panels/AssetPanel.js","sourceHash":"7ede4830fa3b0f3dd3e1c9c067a13ddb6996f909e3a23351977c5b789da55f86","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/panels/AssetPanel.js#0000:setupAssetPanel","exportIndex":0,"name":"setupAssetPanel","kind":"function","signature":"setupAssetPanel(editor)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/panels/AssetPanel.md","moduleTitle":"panels/AssetPanel","source":"editor/js/panels/AssetPanel.js","import":"/editor/js/panels/AssetPanel.js","sourceHash":"7ede4830fa3b0f3dd3e1c9c067a13ddb6996f909e3a23351977c5b789da55f86","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/panels/AssetPanel.js#0001:renderAssetGrid","exportIndex":1,"name":"renderAssetGrid","kind":"function","signature":"renderAssetGrid()","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/panels/AssetPanel.md","moduleTitle":"panels/AssetPanel","source":"editor/js/panels/AssetPanel.js","import":"/editor/js/panels/AssetPanel.js","sourceHash":"7ede4830fa3b0f3dd3e1c9c067a13ddb6996f909e3a23351977c5b789da55f86","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/panels/AssetPanel.js#0002:getSelectedAssetUuid","exportIndex":2,"name":"getSelectedAssetUuid","kind":"function","signature":"getSelectedAssetUuid()","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/panels/AssetPanel.md","moduleTitle":"panels/AssetPanel","source":"editor/js/panels/AssetPanel.js","import":"/editor/js/panels/AssetPanel.js","sourceHash":"7ede4830fa3b0f3dd3e1c9c067a13ddb6996f909e3a23351977c5b789da55f86","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/panels/AssetPanel.js#0003:refreshAssets","exportIndex":3,"name":"refreshAssets","kind":"function","signature":"refreshAssets()","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/panels/AssetPanel.md","moduleTitle":"panels/AssetPanel","source":"editor/js/panels/AssetPanel.js","import":"/editor/js/panels/AssetPanel.js","sourceHash":"7ede4830fa3b0f3dd3e1c9c067a13ddb6996f909e3a23351977c5b789da55f86","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/panels/AssetPanel.js#0004:sampleAssetAnimationTransforms","exportIndex":4,"name":"sampleAssetAnimationTransforms","kind":"function","signature":"sampleAssetAnimationTransforms(gltf, animIdx, time, binStart, buf)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/panels/AssetPanel.md","moduleTitle":"panels/AssetPanel","source":"editor/js/panels/AssetPanel.js","import":"/editor/js/panels/AssetPanel.js","sourceHash":"7ede4830fa3b0f3dd3e1c9c067a13ddb6996f909e3a23351977c5b789da55f86","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/panels/AssetPanel.js#0005:base64ToArrayBuffer","exportIndex":5,"name":"base64ToArrayBuffer","kind":"function","signature":"base64ToArrayBuffer(base64)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/panels/AssetPanel.md","moduleTitle":"panels/AssetPanel","source":"editor/js/panels/AssetPanel.js","import":"/editor/js/panels/AssetPanel.js","sourceHash":"7ede4830fa3b0f3dd3e1c9c067a13ddb6996f909e3a23351977c5b789da55f86","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/panels/AssetPanel.js#0006:handleRemoteAssetImport","exportIndex":6,"name":"handleRemoteAssetImport","kind":"function","signature":"async handleRemoteAssetImport(payload)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/panels/Hierarchy.md","moduleTitle":"panels/Hierarchy","source":"editor/js/panels/Hierarchy.js","import":"/editor/js/panels/Hierarchy.js","sourceHash":"92e5c243b81dd668f5c3df0833c79a150cc650d1c96dbd084a7a8113690cc298","subsystem":"editor","recordType":"api-module","id":"module:editor/js/panels/Hierarchy.js","title":"panels/Hierarchy","summary":"HierarchyPanel - Entity tree view","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/panels/Hierarchy.md","moduleTitle":"panels/Hierarchy","source":"editor/js/panels/Hierarchy.js","import":"/editor/js/panels/Hierarchy.js","sourceHash":"92e5c243b81dd668f5c3df0833c79a150cc650d1c96dbd084a7a8113690cc298","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/panels/Hierarchy.js#0000:HierarchyPanel","exportIndex":0,"name":"HierarchyPanel","kind":"class","signature":"class HierarchyPanel","summary":"HierarchyPanel - Entity tree view"}
{"schemaVersion":1,"modulePath":"editor/reference/panels/Inspector.md","moduleTitle":"panels/Inspector","source":"editor/js/panels/Inspector.js","import":"/editor/js/panels/Inspector.js","sourceHash":"800e63996182932ce48dca62638920636eae86737aadbfdba21b62c8f093d42d","subsystem":"editor","recordType":"api-module","id":"module:editor/js/panels/Inspector.js","title":"panels/Inspector","summary":"InspectorPanel - Component property editor","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/panels/Inspector.md","moduleTitle":"panels/Inspector","source":"editor/js/panels/Inspector.js","import":"/editor/js/panels/Inspector.js","sourceHash":"800e63996182932ce48dca62638920636eae86737aadbfdba21b62c8f093d42d","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/panels/Inspector.js#0000:InspectorPanel","exportIndex":0,"name":"InspectorPanel","kind":"class","signature":"class InspectorPanel","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/panels/SpellGeneratorPanel.md","moduleTitle":"panels/SpellGeneratorPanel","source":"editor/js/panels/SpellGeneratorPanel.js","import":"/editor/js/panels/SpellGeneratorPanel.js","sourceHash":"1352f7889193570da9c22f163a4bee80f2eefdfd2a78f40d49448657d7102914","subsystem":"editor","recordType":"api-module","id":"module:editor/js/panels/SpellGeneratorPanel.js","title":"panels/SpellGeneratorPanel","summary":"SpellGeneratorPanel.js - Spell Generator Editor UI A panel for procedurally generating spells in the editor. Features: - Element selection (with combination preview) - Spell type selection - Modifier toggles - Power level slider - Live preview - Save to spell library","exportCount":2}
{"schemaVersion":1,"modulePath":"editor/reference/panels/SpellGeneratorPanel.md","moduleTitle":"panels/SpellGeneratorPanel","source":"editor/js/panels/SpellGeneratorPanel.js","import":"/editor/js/panels/SpellGeneratorPanel.js","sourceHash":"1352f7889193570da9c22f163a4bee80f2eefdfd2a78f40d49448657d7102914","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/panels/SpellGeneratorPanel.js#0000:SpellGeneratorPanel","exportIndex":0,"name":"SpellGeneratorPanel","kind":"class","signature":"class SpellGeneratorPanel","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/panels/SpellGeneratorPanel.md","moduleTitle":"panels/SpellGeneratorPanel","source":"editor/js/panels/SpellGeneratorPanel.js","import":"/editor/js/panels/SpellGeneratorPanel.js","sourceHash":"1352f7889193570da9c22f163a4bee80f2eefdfd2a78f40d49448657d7102914","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/panels/SpellGeneratorPanel.js#0001:createSpellGeneratorPanel","exportIndex":1,"name":"createSpellGeneratorPanel","kind":"function","signature":"createSpellGeneratorPanel(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/panels/Viewport.md","moduleTitle":"panels/Viewport","source":"editor/js/panels/Viewport.js","import":"/editor/js/panels/Viewport.js","sourceHash":"74c753272ac0ba29420760ee99ea09b3f5a1cb742f114bbd03ef9786ae506ea8","subsystem":"editor","recordType":"api-module","id":"module:editor/js/panels/Viewport.js","title":"panels/Viewport","summary":"","exportCount":3}
{"schemaVersion":1,"modulePath":"editor/reference/panels/Viewport.md","moduleTitle":"panels/Viewport","source":"editor/js/panels/Viewport.js","import":"/editor/js/panels/Viewport.js","sourceHash":"74c753272ac0ba29420760ee99ea09b3f5a1cb742f114bbd03ef9786ae506ea8","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/panels/Viewport.js#0000:ViewportPanel","exportIndex":0,"name":"ViewportPanel","kind":"class","signature":"class ViewportPanel","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/panels/Viewport.md","moduleTitle":"panels/Viewport","source":"editor/js/panels/Viewport.js","import":"/editor/js/panels/Viewport.js","sourceHash":"74c753272ac0ba29420760ee99ea09b3f5a1cb742f114bbd03ef9786ae506ea8","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/panels/Viewport.js#0001:clearMeshTypeCache","exportIndex":1,"name":"clearMeshTypeCache","kind":"re-export","signature":"clearMeshTypeCache","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/panels/Viewport.md","moduleTitle":"panels/Viewport","source":"editor/js/panels/Viewport.js","import":"/editor/js/panels/Viewport.js","sourceHash":"74c753272ac0ba29420760ee99ea09b3f5a1cb742f114bbd03ef9786ae506ea8","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/panels/Viewport.js#0002:inferEntityMeshTypeAndColor","exportIndex":2,"name":"inferEntityMeshTypeAndColor","kind":"re-export","signature":"inferEntityMeshTypeAndColor","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/AssetRegistry.md","moduleTitle":"project/AssetRegistry","source":"editor/js/project/AssetRegistry.js","import":"/editor/js/project/AssetRegistry.js","sourceHash":"0642841e85cdaab6722229f350ace053cf4e9799c00d5cc96e58e9f2ff29e859","subsystem":"editor","recordType":"api-module","id":"module:editor/js/project/AssetRegistry.js","title":"project/AssetRegistry","summary":"AssetRegistry.js - UUID-based asset management Adapted from J:\\game2 - handles: - Asset registration and UUID assignment - Path ↔ UUID lookup - Lazy loading of asset data - Asset index persistence (Assets/index.json) - Import and update operations","exportCount":8}
{"schemaVersion":1,"modulePath":"editor/reference/project/AssetRegistry.md","moduleTitle":"project/AssetRegistry","source":"editor/js/project/AssetRegistry.js","import":"/editor/js/project/AssetRegistry.js","sourceHash":"0642841e85cdaab6722229f350ace053cf4e9799c00d5cc96e58e9f2ff29e859","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/AssetRegistry.js#0000:UnsupportedAssetIndexVersionError","exportIndex":0,"name":"UnsupportedAssetIndexVersionError","kind":"class","signature":"class UnsupportedAssetIndexVersionError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/AssetRegistry.md","moduleTitle":"project/AssetRegistry","source":"editor/js/project/AssetRegistry.js","import":"/editor/js/project/AssetRegistry.js","sourceHash":"0642841e85cdaab6722229f350ace053cf4e9799c00d5cc96e58e9f2ff29e859","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/AssetRegistry.js#0001:AssetRegistry","exportIndex":1,"name":"AssetRegistry","kind":"class","signature":"class AssetRegistry","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/AssetRegistry.md","moduleTitle":"project/AssetRegistry","source":"editor/js/project/AssetRegistry.js","import":"/editor/js/project/AssetRegistry.js","sourceHash":"0642841e85cdaab6722229f350ace053cf4e9799c00d5cc96e58e9f2ff29e859","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/AssetRegistry.js#0002:prepareAssetIndex","exportIndex":2,"name":"prepareAssetIndex","kind":"function","signature":"prepareAssetIndex(input)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/AssetRegistry.md","moduleTitle":"project/AssetRegistry","source":"editor/js/project/AssetRegistry.js","import":"/editor/js/project/AssetRegistry.js","sourceHash":"0642841e85cdaab6722229f350ace053cf4e9799c00d5cc96e58e9f2ff29e859","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/AssetRegistry.js#0003:getAssetTypeFromExtension","exportIndex":3,"name":"getAssetTypeFromExtension","kind":"function","signature":"getAssetTypeFromExtension(filename)","summary":"Get asset type from file extension"}
{"schemaVersion":1,"modulePath":"editor/reference/project/AssetRegistry.md","moduleTitle":"project/AssetRegistry","source":"editor/js/project/AssetRegistry.js","import":"/editor/js/project/AssetRegistry.js","sourceHash":"0642841e85cdaab6722229f350ace053cf4e9799c00d5cc96e58e9f2ff29e859","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/AssetRegistry.js#0004:getAssetRegistry","exportIndex":4,"name":"getAssetRegistry","kind":"function","signature":"getAssetRegistry()","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/AssetRegistry.md","moduleTitle":"project/AssetRegistry","source":"editor/js/project/AssetRegistry.js","import":"/editor/js/project/AssetRegistry.js","sourceHash":"0642841e85cdaab6722229f350ace053cf4e9799c00d5cc96e58e9f2ff29e859","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/AssetRegistry.js#0005:initAssetRegistry","exportIndex":5,"name":"initAssetRegistry","kind":"function","signature":"async initAssetRegistry(projectDir)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/AssetRegistry.md","moduleTitle":"project/AssetRegistry","source":"editor/js/project/AssetRegistry.js","import":"/editor/js/project/AssetRegistry.js","sourceHash":"0642841e85cdaab6722229f350ace053cf4e9799c00d5cc96e58e9f2ff29e859","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/AssetRegistry.js#0006:ASSET_INDEX_SCHEMA_VERSION","exportIndex":6,"name":"ASSET_INDEX_SCHEMA_VERSION","kind":"constant","signature":"ASSET_INDEX_SCHEMA_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/AssetRegistry.md","moduleTitle":"project/AssetRegistry","source":"editor/js/project/AssetRegistry.js","import":"/editor/js/project/AssetRegistry.js","sourceHash":"0642841e85cdaab6722229f350ace053cf4e9799c00d5cc96e58e9f2ff29e859","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/AssetRegistry.js#0007:ASSET_TYPES","exportIndex":7,"name":"ASSET_TYPES","kind":"constant","signature":"ASSET_TYPES","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/AutoSave.md","moduleTitle":"project/AutoSave","source":"editor/js/project/AutoSave.js","import":"/editor/js/project/AutoSave.js","sourceHash":"d948e46bc8254e6c26a3dad857ec670d6179028c5449571d6deda157c6815553","subsystem":"editor","recordType":"api-module","id":"module:editor/js/project/AutoSave.js","title":"project/AutoSave","summary":"Wrap editor methods to track dirty state","exportCount":5}
{"schemaVersion":1,"modulePath":"editor/reference/project/AutoSave.md","moduleTitle":"project/AutoSave","source":"editor/js/project/AutoSave.js","import":"/editor/js/project/AutoSave.js","sourceHash":"d948e46bc8254e6c26a3dad857ec670d6179028c5449571d6deda157c6815553","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/AutoSave.js#0000:DirtyTracker","exportIndex":0,"name":"DirtyTracker","kind":"class","signature":"class DirtyTracker","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/AutoSave.md","moduleTitle":"project/AutoSave","source":"editor/js/project/AutoSave.js","import":"/editor/js/project/AutoSave.js","sourceHash":"d948e46bc8254e6c26a3dad857ec670d6179028c5449571d6deda157c6815553","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/AutoSave.js#0001:AutoSaveManager","exportIndex":1,"name":"AutoSaveManager","kind":"class","signature":"class AutoSaveManager","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/AutoSave.md","moduleTitle":"project/AutoSave","source":"editor/js/project/AutoSave.js","import":"/editor/js/project/AutoSave.js","sourceHash":"d948e46bc8254e6c26a3dad857ec670d6179028c5449571d6deda157c6815553","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/AutoSave.js#0002:setupDirtyTracking","exportIndex":2,"name":"setupDirtyTracking","kind":"function","signature":"setupDirtyTracking(editor, autoSaveManager)","summary":"Wrap editor methods to track dirty state"}
{"schemaVersion":1,"modulePath":"editor/reference/project/AutoSave.md","moduleTitle":"project/AutoSave","source":"editor/js/project/AutoSave.js","import":"/editor/js/project/AutoSave.js","sourceHash":"d948e46bc8254e6c26a3dad857ec670d6179028c5449571d6deda157c6815553","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/AutoSave.js#0003:setupSaveShortcut","exportIndex":3,"name":"setupSaveShortcut","kind":"function","signature":"setupSaveShortcut(autoSaveManager)","summary":"Setup Ctrl+S shortcut"}
{"schemaVersion":1,"modulePath":"editor/reference/project/AutoSave.md","moduleTitle":"project/AutoSave","source":"editor/js/project/AutoSave.js","import":"/editor/js/project/AutoSave.js","sourceHash":"d948e46bc8254e6c26a3dad857ec670d6179028c5449571d6deda157c6815553","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/AutoSave.js#0004:setupNewSceneShortcut","exportIndex":4,"name":"setupNewSceneShortcut","kind":"function","signature":"setupNewSceneShortcut(editor)","summary":"Setup Ctrl+N for new scene"}
{"schemaVersion":1,"modulePath":"editor/reference/project/ProjectCompatibility.md","moduleTitle":"project/ProjectCompatibility","source":"editor/js/project/ProjectCompatibility.js","import":"/editor/js/project/ProjectCompatibility.js","sourceHash":"7eb298a0667049e0218024d39c4963b6f782aa0632a849b425edbd60c3ec82cd","subsystem":"editor","recordType":"api-module","id":"module:editor/js/project/ProjectCompatibility.js","title":"project/ProjectCompatibility","summary":"Normalize a persisted/imported project without mutating the source object.","exportCount":4}
{"schemaVersion":1,"modulePath":"editor/reference/project/ProjectCompatibility.md","moduleTitle":"project/ProjectCompatibility","source":"editor/js/project/ProjectCompatibility.js","import":"/editor/js/project/ProjectCompatibility.js","sourceHash":"7eb298a0667049e0218024d39c4963b6f782aa0632a849b425edbd60c3ec82cd","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/ProjectCompatibility.js#0000:prepareProjectSettings","exportIndex":0,"name":"prepareProjectSettings","kind":"function","signature":"prepareProjectSettings(input)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/ProjectCompatibility.md","moduleTitle":"project/ProjectCompatibility","source":"editor/js/project/ProjectCompatibility.js","import":"/editor/js/project/ProjectCompatibility.js","sourceHash":"7eb298a0667049e0218024d39c4963b6f782aa0632a849b425edbd60c3ec82cd","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/ProjectCompatibility.js#0001:prepareProjectRecord","exportIndex":1,"name":"prepareProjectRecord","kind":"function","signature":"prepareProjectRecord(input, { deserializeMaps = true } = {})","summary":"Normalize a persisted/imported project without mutating the source object."}
{"schemaVersion":1,"modulePath":"editor/reference/project/ProjectCompatibility.md","moduleTitle":"project/ProjectCompatibility","source":"editor/js/project/ProjectCompatibility.js","import":"/editor/js/project/ProjectCompatibility.js","sourceHash":"7eb298a0667049e0218024d39c4963b6f782aa0632a849b425edbd60c3ec82cd","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/ProjectCompatibility.js#0002:PROJECT_SETTINGS_SCHEMA_VERSION","exportIndex":2,"name":"PROJECT_SETTINGS_SCHEMA_VERSION","kind":"constant","signature":"PROJECT_SETTINGS_SCHEMA_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/ProjectCompatibility.md","moduleTitle":"project/ProjectCompatibility","source":"editor/js/project/ProjectCompatibility.js","import":"/editor/js/project/ProjectCompatibility.js","sourceHash":"7eb298a0667049e0218024d39c4963b6f782aa0632a849b425edbd60c3ec82cd","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/ProjectCompatibility.js#0003:PROJECT_RECORD_SCHEMA_VERSION","exportIndex":3,"name":"PROJECT_RECORD_SCHEMA_VERSION","kind":"constant","signature":"PROJECT_RECORD_SCHEMA_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/ProjectExporter.md","moduleTitle":"project/ProjectExporter","source":"editor/js/project/ProjectExporter.js","import":"/editor/js/project/ProjectExporter.js","sourceHash":"122818ce60344f4ba53fc8ff290abfb97d1ddbc6b7d2bb6e2d7f332bca367b91","subsystem":"editor","recordType":"api-module","id":"module:editor/js/project/ProjectExporter.js","title":"project/ProjectExporter","summary":"Pack data into binary format Format: [magic:4][version:4][indexOffset:4][...blobs...][index]","exportCount":7}
{"schemaVersion":1,"modulePath":"editor/reference/project/ProjectExporter.md","moduleTitle":"project/ProjectExporter","source":"editor/js/project/ProjectExporter.js","import":"/editor/js/project/ProjectExporter.js","sourceHash":"122818ce60344f4ba53fc8ff290abfb97d1ddbc6b7d2bb6e2d7f332bca367b91","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/ProjectExporter.js#0000:packData","exportIndex":0,"name":"packData","kind":"function","signature":"packData(entries)","summary":"Pack data into binary format Format: [magic:4][version:4][indexOffset:4][...blobs...][index]"}
{"schemaVersion":1,"modulePath":"editor/reference/project/ProjectExporter.md","moduleTitle":"project/ProjectExporter","source":"editor/js/project/ProjectExporter.js","import":"/editor/js/project/ProjectExporter.js","sourceHash":"122818ce60344f4ba53fc8ff290abfb97d1ddbc6b7d2bb6e2d7f332bca367b91","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/ProjectExporter.js#0001:unpackData","exportIndex":1,"name":"unpackData","kind":"function","signature":"unpackData(buffer)","summary":"Unpack binary data (for runtime)"}
{"schemaVersion":1,"modulePath":"editor/reference/project/ProjectExporter.md","moduleTitle":"project/ProjectExporter","source":"editor/js/project/ProjectExporter.js","import":"/editor/js/project/ProjectExporter.js","sourceHash":"122818ce60344f4ba53fc8ff290abfb97d1ddbc6b7d2bb6e2d7f332bca367b91","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/ProjectExporter.js#0002:exportScene","exportIndex":2,"name":"exportScene","kind":"function","signature":"async exportScene(editor, sceneData)","summary":"Export a single scene to packed binary"}
{"schemaVersion":1,"modulePath":"editor/reference/project/ProjectExporter.md","moduleTitle":"project/ProjectExporter","source":"editor/js/project/ProjectExporter.js","import":"/editor/js/project/ProjectExporter.js","sourceHash":"122818ce60344f4ba53fc8ff290abfb97d1ddbc6b7d2bb6e2d7f332bca367b91","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/ProjectExporter.js#0003:exportProject","exportIndex":3,"name":"exportProject","kind":"function","signature":"async exportProject(editor, sceneDataList, options = {})","summary":"Export full project with multiple scenes"}
{"schemaVersion":1,"modulePath":"editor/reference/project/ProjectExporter.md","moduleTitle":"project/ProjectExporter","source":"editor/js/project/ProjectExporter.js","import":"/editor/js/project/ProjectExporter.js","sourceHash":"122818ce60344f4ba53fc8ff290abfb97d1ddbc6b7d2bb6e2d7f332bca367b91","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/ProjectExporter.js#0004:downloadZip","exportIndex":4,"name":"downloadZip","kind":"function","signature":"downloadZip(zipBuffer, filename = 'game-export.zip')","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/ProjectExporter.md","moduleTitle":"project/ProjectExporter","source":"editor/js/project/ProjectExporter.js","import":"/editor/js/project/ProjectExporter.js","sourceHash":"122818ce60344f4ba53fc8ff290abfb97d1ddbc6b7d2bb6e2d7f332bca367b91","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/ProjectExporter.js#0005:exportAndDownload","exportIndex":5,"name":"exportAndDownload","kind":"function","signature":"async exportAndDownload(editor, sceneDataList, options = {})","summary":"Export and download project"}
{"schemaVersion":1,"modulePath":"editor/reference/project/ProjectExporter.md","moduleTitle":"project/ProjectExporter","source":"editor/js/project/ProjectExporter.js","import":"/editor/js/project/ProjectExporter.js","sourceHash":"122818ce60344f4ba53fc8ff290abfb97d1ddbc6b7d2bb6e2d7f332bca367b91","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/ProjectExporter.js#0006:RuntimeLoader","exportIndex":6,"name":"RuntimeLoader","kind":"re-export","signature":"RuntimeLoader","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/ProjectLauncher.md","moduleTitle":"project/ProjectLauncher","source":"editor/js/project/ProjectLauncher.js","import":"/editor/js/project/ProjectLauncher.js","sourceHash":"db928ae3a5aa441dc590f518de189ce7b4646cf4fad04503d1ab5821150dea7d","subsystem":"editor","recordType":"api-module","id":"module:editor/js/project/ProjectLauncher.js","title":"project/ProjectLauncher","summary":"ProjectLauncher.js - Startup screen with recent projects Adapted from J:\\game2 - Unity Hub / Godot style launcher: - Recent projects list with thumbnails - New project / Open project buttons - Project templates (future)","exportCount":9}
{"schemaVersion":1,"modulePath":"editor/reference/project/ProjectLauncher.md","moduleTitle":"project/ProjectLauncher","source":"editor/js/project/ProjectLauncher.js","import":"/editor/js/project/ProjectLauncher.js","sourceHash":"db928ae3a5aa441dc590f518de189ce7b4646cf4fad04503d1ab5821150dea7d","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/ProjectLauncher.js#0000:getRecentProjects","exportIndex":0,"name":"getRecentProjects","kind":"function","signature":"getRecentProjects()","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/ProjectLauncher.md","moduleTitle":"project/ProjectLauncher","source":"editor/js/project/ProjectLauncher.js","import":"/editor/js/project/ProjectLauncher.js","sourceHash":"db928ae3a5aa441dc590f518de189ce7b4646cf4fad04503d1ab5821150dea7d","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/ProjectLauncher.js#0001:addRecentProject","exportIndex":1,"name":"addRecentProject","kind":"function","signature":"addRecentProject(project)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/ProjectLauncher.md","moduleTitle":"project/ProjectLauncher","source":"editor/js/project/ProjectLauncher.js","import":"/editor/js/project/ProjectLauncher.js","sourceHash":"db928ae3a5aa441dc590f518de189ce7b4646cf4fad04503d1ab5821150dea7d","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/ProjectLauncher.js#0002:removeRecentProject","exportIndex":2,"name":"removeRecentProject","kind":"function","signature":"removeRecentProject(projectName)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/ProjectLauncher.md","moduleTitle":"project/ProjectLauncher","source":"editor/js/project/ProjectLauncher.js","import":"/editor/js/project/ProjectLauncher.js","sourceHash":"db928ae3a5aa441dc590f518de189ce7b4646cf4fad04503d1ab5821150dea7d","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/ProjectLauncher.js#0003:clearRecentProjects","exportIndex":3,"name":"clearRecentProjects","kind":"function","signature":"clearRecentProjects()","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/ProjectLauncher.md","moduleTitle":"project/ProjectLauncher","source":"editor/js/project/ProjectLauncher.js","import":"/editor/js/project/ProjectLauncher.js","sourceHash":"db928ae3a5aa441dc590f518de189ce7b4646cf4fad04503d1ab5821150dea7d","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/ProjectLauncher.js#0004:createLauncherUI","exportIndex":4,"name":"createLauncherUI","kind":"function","signature":"createLauncherUI()","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/ProjectLauncher.md","moduleTitle":"project/ProjectLauncher","source":"editor/js/project/ProjectLauncher.js","import":"/editor/js/project/ProjectLauncher.js","sourceHash":"db928ae3a5aa441dc590f518de189ce7b4646cf4fad04503d1ab5821150dea7d","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/ProjectLauncher.js#0005:renderRecentProjects","exportIndex":5,"name":"renderRecentProjects","kind":"function","signature":"renderRecentProjects(container)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/ProjectLauncher.md","moduleTitle":"project/ProjectLauncher","source":"editor/js/project/ProjectLauncher.js","import":"/editor/js/project/ProjectLauncher.js","sourceHash":"db928ae3a5aa441dc590f518de189ce7b4646cf4fad04503d1ab5821150dea7d","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/ProjectLauncher.js#0006:injectLauncherStyles","exportIndex":6,"name":"injectLauncherStyles","kind":"function","signature":"injectLauncherStyles()","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/ProjectLauncher.md","moduleTitle":"project/ProjectLauncher","source":"editor/js/project/ProjectLauncher.js","import":"/editor/js/project/ProjectLauncher.js","sourceHash":"db928ae3a5aa441dc590f518de189ce7b4646cf4fad04503d1ab5821150dea7d","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/ProjectLauncher.js#0007:showLauncher","exportIndex":7,"name":"showLauncher","kind":"function","signature":"async showLauncher(onProjectSelected)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/ProjectLauncher.md","moduleTitle":"project/ProjectLauncher","source":"editor/js/project/ProjectLauncher.js","import":"/editor/js/project/ProjectLauncher.js","sourceHash":"db928ae3a5aa441dc590f518de189ce7b4646cf4fad04503d1ab5821150dea7d","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/ProjectLauncher.js#0008:hideLauncher","exportIndex":8,"name":"hideLauncher","kind":"function","signature":"hideLauncher()","summary":"Hide launcher (for when editor is already initialized)"}
{"schemaVersion":1,"modulePath":"editor/reference/project/SceneManager.md","moduleTitle":"project/SceneManager","source":"editor/js/project/SceneManager.js","import":"/editor/js/project/SceneManager.js","sourceHash":"bfda4a9f7fbda4f8c4aa1829a5169029a5013e5e12cae0f94d531ef312bdc3f6","subsystem":"editor","recordType":"api-module","id":"module:editor/js/project/SceneManager.js","title":"project/SceneManager","summary":"SceneManager.js - Scene loading, saving, and management Handles: - Scene file I/O (Scenes/*.scene.json) - Scene serialization/deserialization - Multi-scene support - Scene switching","exportCount":34}
{"schemaVersion":1,"modulePath":"editor/reference/project/SceneManager.md","moduleTitle":"project/SceneManager","source":"editor/js/project/SceneManager.js","import":"/editor/js/project/SceneManager.js","sourceHash":"bfda4a9f7fbda4f8c4aa1829a5169029a5013e5e12cae0f94d531ef312bdc3f6","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/SceneManager.js#0000:layerMask","exportIndex":0,"name":"layerMask","kind":"function","signature":"layerMask(...layers)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/SceneManager.md","moduleTitle":"project/SceneManager","source":"editor/js/project/SceneManager.js","import":"/editor/js/project/SceneManager.js","sourceHash":"bfda4a9f7fbda4f8c4aa1829a5169029a5013e5e12cae0f94d531ef312bdc3f6","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/SceneManager.js#0001:hasLayer","exportIndex":1,"name":"hasLayer","kind":"function","signature":"hasLayer(mask, layer)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/SceneManager.md","moduleTitle":"project/SceneManager","source":"editor/js/project/SceneManager.js","import":"/editor/js/project/SceneManager.js","sourceHash":"bfda4a9f7fbda4f8c4aa1829a5169029a5013e5e12cae0f94d531ef312bdc3f6","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/SceneManager.js#0002:prepareSceneForImport","exportIndex":2,"name":"prepareSceneForImport","kind":"function","signature":"prepareSceneForImport(input)","summary":"Validate and fully normalize a serialized scene before touching live editor state. Missing schemaVersion is the legacy v1 format; future versions fail closed."}
{"schemaVersion":1,"modulePath":"editor/reference/project/SceneManager.md","moduleTitle":"project/SceneManager","source":"editor/js/project/SceneManager.js","import":"/editor/js/project/SceneManager.js","sourceHash":"bfda4a9f7fbda4f8c4aa1829a5169029a5013e5e12cae0f94d531ef312bdc3f6","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/SceneManager.js#0003:createSceneData","exportIndex":3,"name":"createSceneData","kind":"function","signature":"createSceneData(name = 'Untitled')","summary":"Create empty scene data with full Unity/Godot-style structure"}
{"schemaVersion":1,"modulePath":"editor/reference/project/SceneManager.md","moduleTitle":"project/SceneManager","source":"editor/js/project/SceneManager.js","import":"/editor/js/project/SceneManager.js","sourceHash":"bfda4a9f7fbda4f8c4aa1829a5169029a5013e5e12cae0f94d531ef312bdc3f6","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/SceneManager.js#0004:serializeScene","exportIndex":4,"name":"serializeScene","kind":"function","signature":"serializeScene(editor, sceneName = null)","summary":"Serialize current editor scene to JSON-compatible object"}
{"schemaVersion":1,"modulePath":"editor/reference/project/SceneManager.md","moduleTitle":"project/SceneManager","source":"editor/js/project/SceneManager.js","import":"/editor/js/project/SceneManager.js","sourceHash":"bfda4a9f7fbda4f8c4aa1829a5169029a5013e5e12cae0f94d531ef312bdc3f6","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/SceneManager.js#0005:deserializeScene","exportIndex":5,"name":"deserializeScene","kind":"function","signature":"async deserializeScene(editor, sceneData)","summary":"Validate and stage a complete scene before replacing live editor state. If an unexpected runtime failure occurs while applying it, restore the previously serialized scene so callers never inherit a half-loaded scene."}
{"schemaVersion":1,"modulePath":"editor/reference/project/SceneManager.md","moduleTitle":"project/SceneManager","source":"editor/js/project/SceneManager.js","import":"/editor/js/project/SceneManager.js","sourceHash":"bfda4a9f7fbda4f8c4aa1829a5169029a5013e5e12cae0f94d531ef312bdc3f6","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/SceneManager.js#0006:clearScene","exportIndex":6,"name":"clearScene","kind":"function","signature":"clearScene(editor)","summary":"Clear all entities and folders from scene"}
{"schemaVersion":1,"modulePath":"editor/reference/project/SceneManager.md","moduleTitle":"project/SceneManager","source":"editor/js/project/SceneManager.js","import":"/editor/js/project/SceneManager.js","sourceHash":"bfda4a9f7fbda4f8c4aa1829a5169029a5013e5e12cae0f94d531ef312bdc3f6","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/SceneManager.js#0007:saveSceneToFile","exportIndex":7,"name":"saveSceneToFile","kind":"function","signature":"async saveSceneToFile(editor, sceneName = null)","summary":"Save scene to file system"}
{"schemaVersion":1,"modulePath":"editor/reference/project/SceneManager.md","moduleTitle":"project/SceneManager","source":"editor/js/project/SceneManager.js","import":"/editor/js/project/SceneManager.js","sourceHash":"bfda4a9f7fbda4f8c4aa1829a5169029a5013e5e12cae0f94d531ef312bdc3f6","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/SceneManager.js#0008:loadSceneFromFile","exportIndex":8,"name":"loadSceneFromFile","kind":"function","signature":"async loadSceneFromFile(editor, fileName)","summary":"Load scene from file system"}
{"schemaVersion":1,"modulePath":"editor/reference/project/SceneManager.md","moduleTitle":"project/SceneManager","source":"editor/js/project/SceneManager.js","import":"/editor/js/project/SceneManager.js","sourceHash":"bfda4a9f7fbda4f8c4aa1829a5169029a5013e5e12cae0f94d531ef312bdc3f6","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/SceneManager.js#0009:listScenes","exportIndex":9,"name":"listScenes","kind":"function","signature":"async listScenes(editor)","summary":"List all scenes in project"}
{"schemaVersion":1,"modulePath":"editor/reference/project/SceneManager.md","moduleTitle":"project/SceneManager","source":"editor/js/project/SceneManager.js","import":"/editor/js/project/SceneManager.js","sourceHash":"bfda4a9f7fbda4f8c4aa1829a5169029a5013e5e12cae0f94d531ef312bdc3f6","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/SceneManager.js#0010:deleteSceneFile","exportIndex":10,"name":"deleteSceneFile","kind":"function","signature":"async deleteSceneFile(editor, fileName)","summary":"Delete scene file"}
{"schemaVersion":1,"modulePath":"editor/reference/project/SceneManager.md","moduleTitle":"project/SceneManager","source":"editor/js/project/SceneManager.js","import":"/editor/js/project/SceneManager.js","sourceHash":"bfda4a9f7fbda4f8c4aa1829a5169029a5013e5e12cae0f94d531ef312bdc3f6","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/SceneManager.js#0011:newScene","exportIndex":11,"name":"newScene","kind":"function","signature":"newScene(editor, name = 'Untitled')","summary":"Create new scene (clears current and sets name)"}
{"schemaVersion":1,"modulePath":"editor/reference/project/SceneManager.md","moduleTitle":"project/SceneManager","source":"editor/js/project/SceneManager.js","import":"/editor/js/project/SceneManager.js","sourceHash":"bfda4a9f7fbda4f8c4aa1829a5169029a5013e5e12cae0f94d531ef312bdc3f6","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/SceneManager.js#0012:findEntitiesByLayer","exportIndex":12,"name":"findEntitiesByLayer","kind":"function","signature":"findEntitiesByLayer(editor, layer)","summary":"Find all entities on a specific layer"}
{"schemaVersion":1,"modulePath":"editor/reference/project/SceneManager.md","moduleTitle":"project/SceneManager","source":"editor/js/project/SceneManager.js","import":"/editor/js/project/SceneManager.js","sourceHash":"bfda4a9f7fbda4f8c4aa1829a5169029a5013e5e12cae0f94d531ef312bdc3f6","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/SceneManager.js#0013:findEntitiesByLayerMask","exportIndex":13,"name":"findEntitiesByLayerMask","kind":"function","signature":"findEntitiesByLayerMask(editor, mask)","summary":"Find all entities matching a layer mask"}
{"schemaVersion":1,"modulePath":"editor/reference/project/SceneManager.md","moduleTitle":"project/SceneManager","source":"editor/js/project/SceneManager.js","import":"/editor/js/project/SceneManager.js","sourceHash":"bfda4a9f7fbda4f8c4aa1829a5169029a5013e5e12cae0f94d531ef312bdc3f6","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/SceneManager.js#0014:findEntitiesByTag","exportIndex":14,"name":"findEntitiesByTag","kind":"function","signature":"findEntitiesByTag(editor, tag)","summary":"Find all entities with a specific tag"}
{"schemaVersion":1,"modulePath":"editor/reference/project/SceneManager.md","moduleTitle":"project/SceneManager","source":"editor/js/project/SceneManager.js","import":"/editor/js/project/SceneManager.js","sourceHash":"bfda4a9f7fbda4f8c4aa1829a5169029a5013e5e12cae0f94d531ef312bdc3f6","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/SceneManager.js#0015:findEntityByTag","exportIndex":15,"name":"findEntityByTag","kind":"function","signature":"findEntityByTag(editor, tag)","summary":"Find first entity with a specific tag"}
{"schemaVersion":1,"modulePath":"editor/reference/project/SceneManager.md","moduleTitle":"project/SceneManager","source":"editor/js/project/SceneManager.js","import":"/editor/js/project/SceneManager.js","sourceHash":"bfda4a9f7fbda4f8c4aa1829a5169029a5013e5e12cae0f94d531ef312bdc3f6","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/SceneManager.js#0016:findEnabledEntities","exportIndex":16,"name":"findEnabledEntities","kind":"function","signature":"findEnabledEntities(editor)","summary":"Find all enabled entities (active in scene)"}
{"schemaVersion":1,"modulePath":"editor/reference/project/SceneManager.md","moduleTitle":"project/SceneManager","source":"editor/js/project/SceneManager.js","import":"/editor/js/project/SceneManager.js","sourceHash":"bfda4a9f7fbda4f8c4aa1829a5169029a5013e5e12cae0f94d531ef312bdc3f6","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/SceneManager.js#0017:findEntitiesByRenderFlags","exportIndex":17,"name":"findEntitiesByRenderFlags","kind":"function","signature":"findEntitiesByRenderFlags(editor, flags, matchAll = true)","summary":"Find all entities with specific render flags"}
{"schemaVersion":1,"modulePath":"editor/reference/project/SceneManager.md","moduleTitle":"project/SceneManager","source":"editor/js/project/SceneManager.js","import":"/editor/js/project/SceneManager.js","sourceHash":"bfda4a9f7fbda4f8c4aa1829a5169029a5013e5e12cae0f94d531ef312bdc3f6","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/SceneManager.js#0018:findPrefabInstances","exportIndex":18,"name":"findPrefabInstances","kind":"function","signature":"findPrefabInstances(editor, prefabUuid = null)","summary":"Find all prefab instances"}
{"schemaVersion":1,"modulePath":"editor/reference/project/SceneManager.md","moduleTitle":"project/SceneManager","source":"editor/js/project/SceneManager.js","import":"/editor/js/project/SceneManager.js","sourceHash":"bfda4a9f7fbda4f8c4aa1829a5169029a5013e5e12cae0f94d531ef312bdc3f6","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/SceneManager.js#0019:getEntityConnections","exportIndex":19,"name":"getEntityConnections","kind":"function","signature":"getEntityConnections(editor, entityId)","summary":"Get all connections for an entity (both incoming and outgoing)"}
{"schemaVersion":1,"modulePath":"editor/reference/project/SceneManager.md","moduleTitle":"project/SceneManager","source":"editor/js/project/SceneManager.js","import":"/editor/js/project/SceneManager.js","sourceHash":"bfda4a9f7fbda4f8c4aa1829a5169029a5013e5e12cae0f94d531ef312bdc3f6","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/SceneManager.js#0020:addConnection","exportIndex":20,"name":"addConnection","kind":"function","signature":"addConnection(editor, fromEntity, signal, toEntity, method, flags = 0, binds = [])","summary":"Add a signal connection between entities"}
{"schemaVersion":1,"modulePath":"editor/reference/project/SceneManager.md","moduleTitle":"project/SceneManager","source":"editor/js/project/SceneManager.js","import":"/editor/js/project/SceneManager.js","sourceHash":"bfda4a9f7fbda4f8c4aa1829a5169029a5013e5e12cae0f94d531ef312bdc3f6","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/SceneManager.js#0021:removeConnection","exportIndex":21,"name":"removeConnection","kind":"function","signature":"removeConnection(editor, fromEntity, signal, toEntity, method)","summary":"Remove a signal connection"}
{"schemaVersion":1,"modulePath":"editor/reference/project/SceneManager.md","moduleTitle":"project/SceneManager","source":"editor/js/project/SceneManager.js","import":"/editor/js/project/SceneManager.js","sourceHash":"bfda4a9f7fbda4f8c4aa1829a5169029a5013e5e12cae0f94d531ef312bdc3f6","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/SceneManager.js#0022:setEntityLayer","exportIndex":22,"name":"setEntityLayer","kind":"function","signature":"setEntityLayer(editor, entityId, layer)","summary":"Set entity layer"}
{"schemaVersion":1,"modulePath":"editor/reference/project/SceneManager.md","moduleTitle":"project/SceneManager","source":"editor/js/project/SceneManager.js","import":"/editor/js/project/SceneManager.js","sourceHash":"bfda4a9f7fbda4f8c4aa1829a5169029a5013e5e12cae0f94d531ef312bdc3f6","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/SceneManager.js#0023:setEntityTag","exportIndex":23,"name":"setEntityTag","kind":"function","signature":"setEntityTag(editor, entityId, tag)","summary":"Set entity tag"}
{"schemaVersion":1,"modulePath":"editor/reference/project/SceneManager.md","moduleTitle":"project/SceneManager","source":"editor/js/project/SceneManager.js","import":"/editor/js/project/SceneManager.js","sourceHash":"bfda4a9f7fbda4f8c4aa1829a5169029a5013e5e12cae0f94d531ef312bdc3f6","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/SceneManager.js#0024:addEntityTag","exportIndex":24,"name":"addEntityTag","kind":"function","signature":"addEntityTag(editor, entityId, tag)","summary":"Add tag to entity's tags array"}
{"schemaVersion":1,"modulePath":"editor/reference/project/SceneManager.md","moduleTitle":"project/SceneManager","source":"editor/js/project/SceneManager.js","import":"/editor/js/project/SceneManager.js","sourceHash":"bfda4a9f7fbda4f8c4aa1829a5169029a5013e5e12cae0f94d531ef312bdc3f6","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/SceneManager.js#0025:removeEntityTag","exportIndex":25,"name":"removeEntityTag","kind":"function","signature":"removeEntityTag(editor, entityId, tag)","summary":"Remove tag from entity's tags array"}
{"schemaVersion":1,"modulePath":"editor/reference/project/SceneManager.md","moduleTitle":"project/SceneManager","source":"editor/js/project/SceneManager.js","import":"/editor/js/project/SceneManager.js","sourceHash":"bfda4a9f7fbda4f8c4aa1829a5169029a5013e5e12cae0f94d531ef312bdc3f6","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/SceneManager.js#0026:setEntityRenderFlags","exportIndex":26,"name":"setEntityRenderFlags","kind":"function","signature":"setEntityRenderFlags(editor, entityId, flags)","summary":"Set entity render flags"}
{"schemaVersion":1,"modulePath":"editor/reference/project/SceneManager.md","moduleTitle":"project/SceneManager","source":"editor/js/project/SceneManager.js","import":"/editor/js/project/SceneManager.js","sourceHash":"bfda4a9f7fbda4f8c4aa1829a5169029a5013e5e12cae0f94d531ef312bdc3f6","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/SceneManager.js#0027:setEntityEnabled","exportIndex":27,"name":"setEntityEnabled","kind":"function","signature":"setEntityEnabled(editor, entityId, enabled)","summary":"Set entity enabled state"}
{"schemaVersion":1,"modulePath":"editor/reference/project/SceneManager.md","moduleTitle":"project/SceneManager","source":"editor/js/project/SceneManager.js","import":"/editor/js/project/SceneManager.js","sourceHash":"bfda4a9f7fbda4f8c4aa1829a5169029a5013e5e12cae0f94d531ef312bdc3f6","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/SceneManager.js#0028:SCENE_SCHEMA_VERSION","exportIndex":28,"name":"SCENE_SCHEMA_VERSION","kind":"constant","signature":"SCENE_SCHEMA_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/SceneManager.md","moduleTitle":"project/SceneManager","source":"editor/js/project/SceneManager.js","import":"/editor/js/project/SceneManager.js","sourceHash":"bfda4a9f7fbda4f8c4aa1829a5169029a5013e5e12cae0f94d531ef312bdc3f6","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/SceneManager.js#0029:LAYERS","exportIndex":29,"name":"LAYERS","kind":"constant","signature":"LAYERS","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/SceneManager.md","moduleTitle":"project/SceneManager","source":"editor/js/project/SceneManager.js","import":"/editor/js/project/SceneManager.js","sourceHash":"bfda4a9f7fbda4f8c4aa1829a5169029a5013e5e12cae0f94d531ef312bdc3f6","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/SceneManager.js#0030:LAYER_NAMES","exportIndex":30,"name":"LAYER_NAMES","kind":"constant","signature":"LAYER_NAMES","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/SceneManager.md","moduleTitle":"project/SceneManager","source":"editor/js/project/SceneManager.js","import":"/editor/js/project/SceneManager.js","sourceHash":"bfda4a9f7fbda4f8c4aa1829a5169029a5013e5e12cae0f94d531ef312bdc3f6","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/SceneManager.js#0031:BUILTIN_TAGS","exportIndex":31,"name":"BUILTIN_TAGS","kind":"constant","signature":"BUILTIN_TAGS","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/SceneManager.md","moduleTitle":"project/SceneManager","source":"editor/js/project/SceneManager.js","import":"/editor/js/project/SceneManager.js","sourceHash":"bfda4a9f7fbda4f8c4aa1829a5169029a5013e5e12cae0f94d531ef312bdc3f6","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/SceneManager.js#0032:RENDER_FLAGS","exportIndex":32,"name":"RENDER_FLAGS","kind":"constant","signature":"RENDER_FLAGS","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/SceneManager.md","moduleTitle":"project/SceneManager","source":"editor/js/project/SceneManager.js","import":"/editor/js/project/SceneManager.js","sourceHash":"bfda4a9f7fbda4f8c4aa1829a5169029a5013e5e12cae0f94d531ef312bdc3f6","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/SceneManager.js#0033:DEFAULT_RENDER_FLAGS","exportIndex":33,"name":"DEFAULT_RENDER_FLAGS","kind":"constant","signature":"DEFAULT_RENDER_FLAGS","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-module","id":"module:editor/js/project/index.js","title":"project/index","summary":"","exportCount":57}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0000:ASSET_TYPES","exportIndex":0,"name":"ASSET_TYPES","kind":"re-export","signature":"ASSET_TYPES","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0001:AssetRegistry","exportIndex":1,"name":"AssetRegistry","kind":"re-export","signature":"AssetRegistry","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0002:AutoSaveManager","exportIndex":2,"name":"AutoSaveManager","kind":"re-export","signature":"AutoSaveManager","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0003:BUILTIN_TAGS","exportIndex":3,"name":"BUILTIN_TAGS","kind":"re-export","signature":"BUILTIN_TAGS","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0004:DEFAULT_RENDER_FLAGS","exportIndex":4,"name":"DEFAULT_RENDER_FLAGS","kind":"re-export","signature":"DEFAULT_RENDER_FLAGS","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0005:DirtyTracker","exportIndex":5,"name":"DirtyTracker","kind":"re-export","signature":"DirtyTracker","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0006:LAYERS","exportIndex":6,"name":"LAYERS","kind":"re-export","signature":"LAYERS","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0007:LAYER_NAMES","exportIndex":7,"name":"LAYER_NAMES","kind":"re-export","signature":"LAYER_NAMES","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0008:ProjectExporter","exportIndex":8,"name":"ProjectExporter","kind":"re-export","signature":"ProjectExporter","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0009:ProjectLauncher","exportIndex":9,"name":"ProjectLauncher","kind":"re-export","signature":"ProjectLauncher","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0010:RENDER_FLAGS","exportIndex":10,"name":"RENDER_FLAGS","kind":"re-export","signature":"RENDER_FLAGS","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0011:SceneManager","exportIndex":11,"name":"SceneManager","kind":"re-export","signature":"SceneManager","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0012:addConnection","exportIndex":12,"name":"addConnection","kind":"re-export","signature":"addConnection","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0013:addEntityTag","exportIndex":13,"name":"addEntityTag","kind":"re-export","signature":"addEntityTag","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0014:addRecentProject","exportIndex":14,"name":"addRecentProject","kind":"re-export","signature":"addRecentProject","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0015:clearRecentProjects","exportIndex":15,"name":"clearRecentProjects","kind":"re-export","signature":"clearRecentProjects","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0016:clearScene","exportIndex":16,"name":"clearScene","kind":"re-export","signature":"clearScene","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0017:createSceneData","exportIndex":17,"name":"createSceneData","kind":"re-export","signature":"createSceneData","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0018:deleteSceneFile","exportIndex":18,"name":"deleteSceneFile","kind":"re-export","signature":"deleteSceneFile","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0019:deserializeScene","exportIndex":19,"name":"deserializeScene","kind":"re-export","signature":"deserializeScene","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0020:downloadZip","exportIndex":20,"name":"downloadZip","kind":"re-export","signature":"downloadZip","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0021:exportAndDownload","exportIndex":21,"name":"exportAndDownload","kind":"re-export","signature":"exportAndDownload","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0022:exportProject","exportIndex":22,"name":"exportProject","kind":"re-export","signature":"exportProject","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0023:exportScene","exportIndex":23,"name":"exportScene","kind":"re-export","signature":"exportScene","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0024:findEnabledEntities","exportIndex":24,"name":"findEnabledEntities","kind":"re-export","signature":"findEnabledEntities","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0025:findEntitiesByLayer","exportIndex":25,"name":"findEntitiesByLayer","kind":"re-export","signature":"findEntitiesByLayer","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0026:findEntitiesByLayerMask","exportIndex":26,"name":"findEntitiesByLayerMask","kind":"re-export","signature":"findEntitiesByLayerMask","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0027:findEntitiesByRenderFlags","exportIndex":27,"name":"findEntitiesByRenderFlags","kind":"re-export","signature":"findEntitiesByRenderFlags","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0028:findEntitiesByTag","exportIndex":28,"name":"findEntitiesByTag","kind":"re-export","signature":"findEntitiesByTag","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0029:findEntityByTag","exportIndex":29,"name":"findEntityByTag","kind":"re-export","signature":"findEntityByTag","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0030:findPrefabInstances","exportIndex":30,"name":"findPrefabInstances","kind":"re-export","signature":"findPrefabInstances","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0031:getAssetRegistry","exportIndex":31,"name":"getAssetRegistry","kind":"re-export","signature":"getAssetRegistry","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0032:getAssetTypeFromExtension","exportIndex":32,"name":"getAssetTypeFromExtension","kind":"re-export","signature":"getAssetTypeFromExtension","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0033:getEntityConnections","exportIndex":33,"name":"getEntityConnections","kind":"re-export","signature":"getEntityConnections","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0034:getRecentProjects","exportIndex":34,"name":"getRecentProjects","kind":"re-export","signature":"getRecentProjects","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0035:hasLayer","exportIndex":35,"name":"hasLayer","kind":"re-export","signature":"hasLayer","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0036:hideLauncher","exportIndex":36,"name":"hideLauncher","kind":"re-export","signature":"hideLauncher","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0037:initAssetRegistry","exportIndex":37,"name":"initAssetRegistry","kind":"re-export","signature":"initAssetRegistry","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0038:layerMask","exportIndex":38,"name":"layerMask","kind":"re-export","signature":"layerMask","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0039:listScenes","exportIndex":39,"name":"listScenes","kind":"re-export","signature":"listScenes","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0040:loadSceneFromFile","exportIndex":40,"name":"loadSceneFromFile","kind":"re-export","signature":"loadSceneFromFile","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0041:newScene","exportIndex":41,"name":"newScene","kind":"re-export","signature":"newScene","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0042:packData","exportIndex":42,"name":"packData","kind":"re-export","signature":"packData","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0043:removeConnection","exportIndex":43,"name":"removeConnection","kind":"re-export","signature":"removeConnection","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0044:removeEntityTag","exportIndex":44,"name":"removeEntityTag","kind":"re-export","signature":"removeEntityTag","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0045:removeRecentProject","exportIndex":45,"name":"removeRecentProject","kind":"re-export","signature":"removeRecentProject","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0046:saveSceneToFile","exportIndex":46,"name":"saveSceneToFile","kind":"re-export","signature":"saveSceneToFile","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0047:serializeScene","exportIndex":47,"name":"serializeScene","kind":"re-export","signature":"serializeScene","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0048:setEntityEnabled","exportIndex":48,"name":"setEntityEnabled","kind":"re-export","signature":"setEntityEnabled","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0049:setEntityLayer","exportIndex":49,"name":"setEntityLayer","kind":"re-export","signature":"setEntityLayer","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0050:setEntityRenderFlags","exportIndex":50,"name":"setEntityRenderFlags","kind":"re-export","signature":"setEntityRenderFlags","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0051:setEntityTag","exportIndex":51,"name":"setEntityTag","kind":"re-export","signature":"setEntityTag","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0052:setupDirtyTracking","exportIndex":52,"name":"setupDirtyTracking","kind":"re-export","signature":"setupDirtyTracking","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0053:setupNewSceneShortcut","exportIndex":53,"name":"setupNewSceneShortcut","kind":"re-export","signature":"setupNewSceneShortcut","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0054:setupSaveShortcut","exportIndex":54,"name":"setupSaveShortcut","kind":"re-export","signature":"setupSaveShortcut","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0055:showLauncher","exportIndex":55,"name":"showLauncher","kind":"re-export","signature":"showLauncher","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/project/index.md","moduleTitle":"project/index","source":"editor/js/project/index.js","import":"/editor/js/project/index.js","sourceHash":"6ef6d15c18d36cc7b26856ae7110d19faded52af27be953343ce0f1de68b9341","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/project/index.js#0056:unpackData","exportIndex":56,"name":"unpackData","kind":"re-export","signature":"unpackData","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/SpawnableItem.md","moduleTitle":"spawnables/SpawnableItem","source":"editor/js/spawnables/SpawnableItem.js","import":"/editor/js/spawnables/SpawnableItem.js","sourceHash":"8d3d8fbec0a5103ab4115ba186faebbe915687531cbc334c8954188364317463","subsystem":"editor","recordType":"api-module","id":"module:editor/js/spawnables/SpawnableItem.js","title":"spawnables/SpawnableItem","summary":"SpawnableItem - Base class for all spawnable objects in the editor. Physics collider options: - Override getCollider() to define custom colliders - Use helper imports from EditorPhysics for advanced physics: - generateCollidersFromSDF(sdfFunc, bounds, resolution) - createMeshColliderDecomposed(vertices, indices, options) - createSDFCollider(sdfFunc, bounds, options) - createVoxelCollider(voxels, sizeX, sizeY, sizeZ, voxelSize) ```js import { generateCollidersFromSDF } from '../../modules/EditorPhysics.js'; static getCollider() { return { shape: 'box', halfExtents: [0.01, 0.01, 0.01], compoundColliders: generateCollidersFromSDF( (x, y, z) => mySDF(x, y, z), { min: [-1, -1, -1], max: [1, 1, 1] }, 12 ), }; } ```","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/SpawnableItem.md","moduleTitle":"spawnables/SpawnableItem","source":"editor/js/spawnables/SpawnableItem.js","import":"/editor/js/spawnables/SpawnableItem.js","sourceHash":"8d3d8fbec0a5103ab4115ba186faebbe915687531cbc334c8954188364317463","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/SpawnableItem.js#0000:SpawnableItem","exportIndex":0,"name":"SpawnableItem","kind":"class","signature":"class SpawnableItem","summary":"SpawnableItem - Base class for all spawnable objects in the editor. Physics collider options: - Override getCollider() to define custom colliders - Use helper imports from EditorPhysics for advanced physics: - generateCollidersFromSDF(sdfFunc, bounds, resolution) - createMeshColliderDecomposed(vertices, indices, options) - createSDFCollider(sdfFunc, bounds, options) - createVoxelCollider(voxels, sizeX, sizeY, sizeZ, voxelSize) ```js import { generateCollidersFromSDF } from '../../modules/EditorPhysics.js'; static getCollider() { return { shape: 'box', halfExtents: [0.01, 0.01, 0.01], compoundColliders: generateCollidersFromSDF( (x, y, z) => mySDF(x, y, z), { min: [-1, -1, -1], max: [1, 1, 1] }, 12 ), }; } ```"}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/cameras/Camera.md","moduleTitle":"spawnables/cameras/Camera","source":"editor/js/spawnables/cameras/Camera.js","import":"/editor/js/spawnables/cameras/Camera.js","sourceHash":"373d99038e659a5b8c9b48c59fb0d90b8d6bfb01b326c6b82a4e40dcbf85ed8f","subsystem":"editor","recordType":"api-module","id":"module:editor/js/spawnables/cameras/Camera.js","title":"spawnables/cameras/Camera","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/cameras/Camera.md","moduleTitle":"spawnables/cameras/Camera","source":"editor/js/spawnables/cameras/Camera.js","import":"/editor/js/spawnables/cameras/Camera.js","sourceHash":"373d99038e659a5b8c9b48c59fb0d90b8d6bfb01b326c6b82a4e40dcbf85ed8f","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/cameras/Camera.js#0000:Camera","exportIndex":0,"name":"Camera","kind":"class","signature":"class Camera extends SpawnableItem","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/complex/Arch.md","moduleTitle":"spawnables/complex/Arch","source":"editor/js/spawnables/complex/Arch.js","import":"/editor/js/spawnables/complex/Arch.js","sourceHash":"a96c9e4bccf76ae59b891e014866ff082dc127d8b4890e6b8201f7ad5dd39c15","subsystem":"editor","recordType":"api-module","id":"module:editor/js/spawnables/complex/Arch.js","title":"spawnables/complex/Arch","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/complex/Arch.md","moduleTitle":"spawnables/complex/Arch","source":"editor/js/spawnables/complex/Arch.js","import":"/editor/js/spawnables/complex/Arch.js","sourceHash":"a96c9e4bccf76ae59b891e014866ff082dc127d8b4890e6b8201f7ad5dd39c15","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/complex/Arch.js#0000:Arch","exportIndex":0,"name":"Arch","kind":"class","signature":"class Arch extends SpawnableItem","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/complex/CSGShape.md","moduleTitle":"spawnables/complex/CSGShape","source":"editor/js/spawnables/complex/CSGShape.js","import":"/editor/js/spawnables/complex/CSGShape.js","sourceHash":"33c3c6862d88d3a4e1c889f50c277045c972df47aaabcb82181ca89a264cf24e","subsystem":"editor","recordType":"api-module","id":"module:editor/js/spawnables/complex/CSGShape.js","title":"spawnables/complex/CSGShape","summary":"============================================================================ CSGShape.js — CSG Boolean operations on mesh entities  Select 2 mesh entities → right-click → CSG Union / Subtract / Intersect V1: Voxelize both → VoxelOps boolean → SDFToMesh marching cubes reconstruct V2: Voxelize both → VoxelOps boolean → DualContouring for sharp features ============================================================================","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/complex/CSGShape.md","moduleTitle":"spawnables/complex/CSGShape","source":"editor/js/spawnables/complex/CSGShape.js","import":"/editor/js/spawnables/complex/CSGShape.js","sourceHash":"33c3c6862d88d3a4e1c889f50c277045c972df47aaabcb82181ca89a264cf24e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/complex/CSGShape.js#0000:performCSG","exportIndex":0,"name":"performCSG","kind":"function","signature":"async performCSG(editor, entityIdA, entityIdB, operation = 'union', opts = {})","summary":"Perform a CSG boolean operation on two mesh entities."}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/complex/Gear.md","moduleTitle":"spawnables/complex/Gear","source":"editor/js/spawnables/complex/Gear.js","import":"/editor/js/spawnables/complex/Gear.js","sourceHash":"4275567fb6f9a9aa30cdfcbd967b4d982f8e4341edccfdabffdf8f1af69bb84b","subsystem":"editor","recordType":"api-module","id":"module:editor/js/spawnables/complex/Gear.js","title":"spawnables/complex/Gear","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/complex/Gear.md","moduleTitle":"spawnables/complex/Gear","source":"editor/js/spawnables/complex/Gear.js","import":"/editor/js/spawnables/complex/Gear.js","sourceHash":"4275567fb6f9a9aa30cdfcbd967b4d982f8e4341edccfdabffdf8f1af69bb84b","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/complex/Gear.js#0000:Gear","exportIndex":0,"name":"Gear","kind":"class","signature":"class Gear extends SpawnableItem","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/complex/Helix.md","moduleTitle":"spawnables/complex/Helix","source":"editor/js/spawnables/complex/Helix.js","import":"/editor/js/spawnables/complex/Helix.js","sourceHash":"bfee49e017a88b56cfc267024d5c2b804930ee6a35894b50fe925b711a322a0e","subsystem":"editor","recordType":"api-module","id":"module:editor/js/spawnables/complex/Helix.js","title":"spawnables/complex/Helix","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/complex/Helix.md","moduleTitle":"spawnables/complex/Helix","source":"editor/js/spawnables/complex/Helix.js","import":"/editor/js/spawnables/complex/Helix.js","sourceHash":"bfee49e017a88b56cfc267024d5c2b804930ee6a35894b50fe925b711a322a0e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/complex/Helix.js#0000:Helix","exportIndex":0,"name":"Helix","kind":"class","signature":"class Helix extends SpawnableItem","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/complex/Prism.md","moduleTitle":"spawnables/complex/Prism","source":"editor/js/spawnables/complex/Prism.js","import":"/editor/js/spawnables/complex/Prism.js","sourceHash":"19a5024860b31323106b0a30c2d63ae33ac2de2fc82b86ed0a8ae9ebaf4fbd48","subsystem":"editor","recordType":"api-module","id":"module:editor/js/spawnables/complex/Prism.js","title":"spawnables/complex/Prism","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/complex/Prism.md","moduleTitle":"spawnables/complex/Prism","source":"editor/js/spawnables/complex/Prism.js","import":"/editor/js/spawnables/complex/Prism.js","sourceHash":"19a5024860b31323106b0a30c2d63ae33ac2de2fc82b86ed0a8ae9ebaf4fbd48","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/complex/Prism.js#0000:Prism","exportIndex":0,"name":"Prism","kind":"class","signature":"class Prism extends SpawnableItem","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/complex/Pyramid.md","moduleTitle":"spawnables/complex/Pyramid","source":"editor/js/spawnables/complex/Pyramid.js","import":"/editor/js/spawnables/complex/Pyramid.js","sourceHash":"523e067543404a729fa519d07a32f495c207d98949c1c3b80591899f3a4b144b","subsystem":"editor","recordType":"api-module","id":"module:editor/js/spawnables/complex/Pyramid.js","title":"spawnables/complex/Pyramid","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/complex/Pyramid.md","moduleTitle":"spawnables/complex/Pyramid","source":"editor/js/spawnables/complex/Pyramid.js","import":"/editor/js/spawnables/complex/Pyramid.js","sourceHash":"523e067543404a729fa519d07a32f495c207d98949c1c3b80591899f3a4b144b","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/complex/Pyramid.js#0000:Pyramid","exportIndex":0,"name":"Pyramid","kind":"class","signature":"class Pyramid extends SpawnableItem","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/complex/SDFShape.md","moduleTitle":"spawnables/complex/SDFShape","source":"editor/js/spawnables/complex/SDFShape.js","import":"/editor/js/spawnables/complex/SDFShape.js","sourceHash":"d915ac0c6428410d673e6a288f68746cc5bcd80c60e39952ef1135cc27897b93","subsystem":"editor","recordType":"api-module","id":"module:editor/js/spawnables/complex/SDFShape.js","title":"spawnables/complex/SDFShape","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/complex/SDFShape.md","moduleTitle":"spawnables/complex/SDFShape","source":"editor/js/spawnables/complex/SDFShape.js","import":"/editor/js/spawnables/complex/SDFShape.js","sourceHash":"d915ac0c6428410d673e6a288f68746cc5bcd80c60e39952ef1135cc27897b93","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/complex/SDFShape.js#0000:SDFShape","exportIndex":0,"name":"SDFShape","kind":"class","signature":"class SDFShape extends SpawnableItem","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/complex/Stairs.md","moduleTitle":"spawnables/complex/Stairs","source":"editor/js/spawnables/complex/Stairs.js","import":"/editor/js/spawnables/complex/Stairs.js","sourceHash":"0a0d107c1702209cb6cedcd7be8f06c28ac58c90dd1a75679ecc2181079d008b","subsystem":"editor","recordType":"api-module","id":"module:editor/js/spawnables/complex/Stairs.js","title":"spawnables/complex/Stairs","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/complex/Stairs.md","moduleTitle":"spawnables/complex/Stairs","source":"editor/js/spawnables/complex/Stairs.js","import":"/editor/js/spawnables/complex/Stairs.js","sourceHash":"0a0d107c1702209cb6cedcd7be8f06c28ac58c90dd1a75679ecc2181079d008b","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/complex/Stairs.js#0000:Stairs","exportIndex":0,"name":"Stairs","kind":"class","signature":"class Stairs extends SpawnableItem","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/complex/Star.md","moduleTitle":"spawnables/complex/Star","source":"editor/js/spawnables/complex/Star.js","import":"/editor/js/spawnables/complex/Star.js","sourceHash":"22be327fc9f38b152f8812d758b9e49cd448f52f68d8ca89eb597966f9e788bd","subsystem":"editor","recordType":"api-module","id":"module:editor/js/spawnables/complex/Star.js","title":"spawnables/complex/Star","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/complex/Star.md","moduleTitle":"spawnables/complex/Star","source":"editor/js/spawnables/complex/Star.js","import":"/editor/js/spawnables/complex/Star.js","sourceHash":"22be327fc9f38b152f8812d758b9e49cd448f52f68d8ca89eb597966f9e788bd","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/complex/Star.js#0000:Star","exportIndex":0,"name":"Star","kind":"class","signature":"class Star extends SpawnableItem","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/complex/Wedge.md","moduleTitle":"spawnables/complex/Wedge","source":"editor/js/spawnables/complex/Wedge.js","import":"/editor/js/spawnables/complex/Wedge.js","sourceHash":"b1db40a7a8e5aa94aae028ddf9da9a4c7245dcada86800445d7938af9df43687","subsystem":"editor","recordType":"api-module","id":"module:editor/js/spawnables/complex/Wedge.js","title":"spawnables/complex/Wedge","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/complex/Wedge.md","moduleTitle":"spawnables/complex/Wedge","source":"editor/js/spawnables/complex/Wedge.js","import":"/editor/js/spawnables/complex/Wedge.js","sourceHash":"b1db40a7a8e5aa94aae028ddf9da9a4c7245dcada86800445d7938af9df43687","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/complex/Wedge.js#0000:Wedge","exportIndex":0,"name":"Wedge","kind":"class","signature":"class Wedge extends SpawnableItem","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/emitters/ParticleEmitter.md","moduleTitle":"spawnables/emitters/ParticleEmitter","source":"editor/js/spawnables/emitters/ParticleEmitter.js","import":"/editor/js/spawnables/emitters/ParticleEmitter.js","sourceHash":"0f6094887e4f28a8bf9011d9e7c6a8bf134bc411d6a30f3f4689fc716d464b5c","subsystem":"editor","recordType":"api-module","id":"module:editor/js/spawnables/emitters/ParticleEmitter.js","title":"spawnables/emitters/ParticleEmitter","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/emitters/ParticleEmitter.md","moduleTitle":"spawnables/emitters/ParticleEmitter","source":"editor/js/spawnables/emitters/ParticleEmitter.js","import":"/editor/js/spawnables/emitters/ParticleEmitter.js","sourceHash":"0f6094887e4f28a8bf9011d9e7c6a8bf134bc411d6a30f3f4689fc716d464b5c","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/emitters/ParticleEmitter.js#0000:ParticleEmitter","exportIndex":0,"name":"ParticleEmitter","kind":"class","signature":"class ParticleEmitter extends SpawnableItem","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/emitters/PhaseEmitters.md","moduleTitle":"spawnables/emitters/PhaseEmitters","source":"editor/js/spawnables/emitters/PhaseEmitters.js","import":"/editor/js/spawnables/emitters/PhaseEmitters.js","sourceHash":"21043cc003c9a7477aeea843d30b7e6884bc868609a06484ee9bf52980b56a4e","subsystem":"editor","recordType":"api-module","id":"module:editor/js/spawnables/emitters/PhaseEmitters.js","title":"spawnables/emitters/PhaseEmitters","summary":"","exportCount":11}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/emitters/PhaseEmitters.md","moduleTitle":"spawnables/emitters/PhaseEmitters","source":"editor/js/spawnables/emitters/PhaseEmitters.js","import":"/editor/js/spawnables/emitters/PhaseEmitters.js","sourceHash":"21043cc003c9a7477aeea843d30b7e6884bc868609a06484ee9bf52980b56a4e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/emitters/PhaseEmitters.js#0000:FireEmitter","exportIndex":0,"name":"FireEmitter","kind":"constant","signature":"FireEmitter","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/emitters/PhaseEmitters.md","moduleTitle":"spawnables/emitters/PhaseEmitters","source":"editor/js/spawnables/emitters/PhaseEmitters.js","import":"/editor/js/spawnables/emitters/PhaseEmitters.js","sourceHash":"21043cc003c9a7477aeea843d30b7e6884bc868609a06484ee9bf52980b56a4e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/emitters/PhaseEmitters.js#0001:SmokeEmitter","exportIndex":1,"name":"SmokeEmitter","kind":"constant","signature":"SmokeEmitter","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/emitters/PhaseEmitters.md","moduleTitle":"spawnables/emitters/PhaseEmitters","source":"editor/js/spawnables/emitters/PhaseEmitters.js","import":"/editor/js/spawnables/emitters/PhaseEmitters.js","sourceHash":"21043cc003c9a7477aeea843d30b7e6884bc868609a06484ee9bf52980b56a4e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/emitters/PhaseEmitters.js#0002:SteamEmitter","exportIndex":2,"name":"SteamEmitter","kind":"constant","signature":"SteamEmitter","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/emitters/PhaseEmitters.md","moduleTitle":"spawnables/emitters/PhaseEmitters","source":"editor/js/spawnables/emitters/PhaseEmitters.js","import":"/editor/js/spawnables/emitters/PhaseEmitters.js","sourceHash":"21043cc003c9a7477aeea843d30b7e6884bc868609a06484ee9bf52980b56a4e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/emitters/PhaseEmitters.js#0003:WaterEmitter","exportIndex":3,"name":"WaterEmitter","kind":"constant","signature":"WaterEmitter","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/emitters/PhaseEmitters.md","moduleTitle":"spawnables/emitters/PhaseEmitters","source":"editor/js/spawnables/emitters/PhaseEmitters.js","import":"/editor/js/spawnables/emitters/PhaseEmitters.js","sourceHash":"21043cc003c9a7477aeea843d30b7e6884bc868609a06484ee9bf52980b56a4e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/emitters/PhaseEmitters.js#0004:FountainEmitter","exportIndex":4,"name":"FountainEmitter","kind":"constant","signature":"FountainEmitter","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/emitters/PhaseEmitters.md","moduleTitle":"spawnables/emitters/PhaseEmitters","source":"editor/js/spawnables/emitters/PhaseEmitters.js","import":"/editor/js/spawnables/emitters/PhaseEmitters.js","sourceHash":"21043cc003c9a7477aeea843d30b7e6884bc868609a06484ee9bf52980b56a4e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/emitters/PhaseEmitters.js#0005:LavaEmitter","exportIndex":5,"name":"LavaEmitter","kind":"constant","signature":"LavaEmitter","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/emitters/PhaseEmitters.md","moduleTitle":"spawnables/emitters/PhaseEmitters","source":"editor/js/spawnables/emitters/PhaseEmitters.js","import":"/editor/js/spawnables/emitters/PhaseEmitters.js","sourceHash":"21043cc003c9a7477aeea843d30b7e6884bc868609a06484ee9bf52980b56a4e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/emitters/PhaseEmitters.js#0006:SnowEmitter","exportIndex":6,"name":"SnowEmitter","kind":"constant","signature":"SnowEmitter","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/emitters/PhaseEmitters.md","moduleTitle":"spawnables/emitters/PhaseEmitters","source":"editor/js/spawnables/emitters/PhaseEmitters.js","import":"/editor/js/spawnables/emitters/PhaseEmitters.js","sourceHash":"21043cc003c9a7477aeea843d30b7e6884bc868609a06484ee9bf52980b56a4e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/emitters/PhaseEmitters.js#0007:SparksEmitter","exportIndex":7,"name":"SparksEmitter","kind":"constant","signature":"SparksEmitter","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/emitters/PhaseEmitters.md","moduleTitle":"spawnables/emitters/PhaseEmitters","source":"editor/js/spawnables/emitters/PhaseEmitters.js","import":"/editor/js/spawnables/emitters/PhaseEmitters.js","sourceHash":"21043cc003c9a7477aeea843d30b7e6884bc868609a06484ee9bf52980b56a4e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/emitters/PhaseEmitters.js#0008:DebrisEmitter","exportIndex":8,"name":"DebrisEmitter","kind":"constant","signature":"DebrisEmitter","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/emitters/PhaseEmitters.md","moduleTitle":"spawnables/emitters/PhaseEmitters","source":"editor/js/spawnables/emitters/PhaseEmitters.js","import":"/editor/js/spawnables/emitters/PhaseEmitters.js","sourceHash":"21043cc003c9a7477aeea843d30b7e6884bc868609a06484ee9bf52980b56a4e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/emitters/PhaseEmitters.js#0009:PlasmaEmitter","exportIndex":9,"name":"PlasmaEmitter","kind":"constant","signature":"PlasmaEmitter","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/emitters/PhaseEmitters.md","moduleTitle":"spawnables/emitters/PhaseEmitters","source":"editor/js/spawnables/emitters/PhaseEmitters.js","import":"/editor/js/spawnables/emitters/PhaseEmitters.js","sourceHash":"21043cc003c9a7477aeea843d30b7e6884bc868609a06484ee9bf52980b56a4e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/emitters/PhaseEmitters.js#0010:MagicEmitter","exportIndex":10,"name":"MagicEmitter","kind":"constant","signature":"MagicEmitter","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/index.md","moduleTitle":"spawnables/index","source":"editor/js/spawnables/index.js","import":"/editor/js/spawnables/index.js","sourceHash":"595aa31072a16cd734c338631a1f908df25824e2116306b23df370e1140eacb8","subsystem":"editor","recordType":"api-module","id":"module:editor/js/spawnables/index.js","title":"spawnables/index","summary":"","exportCount":7}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/index.md","moduleTitle":"spawnables/index","source":"editor/js/spawnables/index.js","import":"/editor/js/spawnables/index.js","sourceHash":"595aa31072a16cd734c338631a1f908df25824e2116306b23df370e1140eacb8","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/index.js#0000:getSpawnable","exportIndex":0,"name":"getSpawnable","kind":"function","signature":"getSpawnable(id)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/index.md","moduleTitle":"spawnables/index","source":"editor/js/spawnables/index.js","import":"/editor/js/spawnables/index.js","sourceHash":"595aa31072a16cd734c338631a1f908df25824e2116306b23df370e1140eacb8","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/index.js#0001:getSpawnablesByCategory","exportIndex":1,"name":"getSpawnablesByCategory","kind":"function","signature":"getSpawnablesByCategory(category)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/index.md","moduleTitle":"spawnables/index","source":"editor/js/spawnables/index.js","import":"/editor/js/spawnables/index.js","sourceHash":"595aa31072a16cd734c338631a1f908df25824e2116306b23df370e1140eacb8","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/index.js#0002:getAllCategories","exportIndex":2,"name":"getAllCategories","kind":"function","signature":"getAllCategories()","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/index.md","moduleTitle":"spawnables/index","source":"editor/js/spawnables/index.js","import":"/editor/js/spawnables/index.js","sourceHash":"595aa31072a16cd734c338631a1f908df25824e2116306b23df370e1140eacb8","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/index.js#0003:getAllSpawnables","exportIndex":3,"name":"getAllSpawnables","kind":"function","signature":"getAllSpawnables()","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/index.md","moduleTitle":"spawnables/index","source":"editor/js/spawnables/index.js","import":"/editor/js/spawnables/index.js","sourceHash":"595aa31072a16cd734c338631a1f908df25824e2116306b23df370e1140eacb8","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/index.js#0004:spawnables","exportIndex":4,"name":"spawnables","kind":"constant","signature":"spawnables","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/index.md","moduleTitle":"spawnables/index","source":"editor/js/spawnables/index.js","import":"/editor/js/spawnables/index.js","sourceHash":"595aa31072a16cd734c338631a1f908df25824e2116306b23df370e1140eacb8","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/index.js#0005:spawnableRegistry","exportIndex":5,"name":"spawnableRegistry","kind":"constant","signature":"spawnableRegistry","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/index.md","moduleTitle":"spawnables/index","source":"editor/js/spawnables/index.js","import":"/editor/js/spawnables/index.js","sourceHash":"595aa31072a16cd734c338631a1f908df25824e2116306b23df370e1140eacb8","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/index.js#0006:categories","exportIndex":6,"name":"categories","kind":"constant","signature":"categories","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/lights/DirectionalLight.md","moduleTitle":"spawnables/lights/DirectionalLight","source":"editor/js/spawnables/lights/DirectionalLight.js","import":"/editor/js/spawnables/lights/DirectionalLight.js","sourceHash":"68e2d9c5b23fa7cbe36f7013759eff47784d3a5c527353f175d7788e90cfb32c","subsystem":"editor","recordType":"api-module","id":"module:editor/js/spawnables/lights/DirectionalLight.js","title":"spawnables/lights/DirectionalLight","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/lights/DirectionalLight.md","moduleTitle":"spawnables/lights/DirectionalLight","source":"editor/js/spawnables/lights/DirectionalLight.js","import":"/editor/js/spawnables/lights/DirectionalLight.js","sourceHash":"68e2d9c5b23fa7cbe36f7013759eff47784d3a5c527353f175d7788e90cfb32c","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/lights/DirectionalLight.js#0000:DirectionalLight","exportIndex":0,"name":"DirectionalLight","kind":"class","signature":"class DirectionalLight extends SpawnableItem","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/lights/PointLight.md","moduleTitle":"spawnables/lights/PointLight","source":"editor/js/spawnables/lights/PointLight.js","import":"/editor/js/spawnables/lights/PointLight.js","sourceHash":"b14c8f757628b2ea39a44610abbf250a4fc858f11d5775a8a3256a2f6cfc2449","subsystem":"editor","recordType":"api-module","id":"module:editor/js/spawnables/lights/PointLight.js","title":"spawnables/lights/PointLight","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/lights/PointLight.md","moduleTitle":"spawnables/lights/PointLight","source":"editor/js/spawnables/lights/PointLight.js","import":"/editor/js/spawnables/lights/PointLight.js","sourceHash":"b14c8f757628b2ea39a44610abbf250a4fc858f11d5775a8a3256a2f6cfc2449","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/lights/PointLight.js#0000:PointLight","exportIndex":0,"name":"PointLight","kind":"class","signature":"class PointLight extends SpawnableItem","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/lights/SpotLight.md","moduleTitle":"spawnables/lights/SpotLight","source":"editor/js/spawnables/lights/SpotLight.js","import":"/editor/js/spawnables/lights/SpotLight.js","sourceHash":"eafd370d38d63f7348b618400e3a67795cd81a7b9961ddfdcb21a9c31d5d92e1","subsystem":"editor","recordType":"api-module","id":"module:editor/js/spawnables/lights/SpotLight.js","title":"spawnables/lights/SpotLight","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/lights/SpotLight.md","moduleTitle":"spawnables/lights/SpotLight","source":"editor/js/spawnables/lights/SpotLight.js","import":"/editor/js/spawnables/lights/SpotLight.js","sourceHash":"eafd370d38d63f7348b618400e3a67795cd81a7b9961ddfdcb21a9c31d5d92e1","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/lights/SpotLight.js#0000:SpotLight","exportIndex":0,"name":"SpotLight","kind":"class","signature":"class SpotLight extends SpawnableItem","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/physics/Balloon.md","moduleTitle":"spawnables/physics/Balloon","source":"editor/js/spawnables/physics/Balloon.js","import":"/editor/js/spawnables/physics/Balloon.js","sourceHash":"dabc368d2716c7738c65c676720f0f354b39888c674054038ce16841d9ab3861","subsystem":"editor","recordType":"api-module","id":"module:editor/js/spawnables/physics/Balloon.js","title":"spawnables/physics/Balloon","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/physics/Balloon.md","moduleTitle":"spawnables/physics/Balloon","source":"editor/js/spawnables/physics/Balloon.js","import":"/editor/js/spawnables/physics/Balloon.js","sourceHash":"dabc368d2716c7738c65c676720f0f354b39888c674054038ce16841d9ab3861","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/physics/Balloon.js#0000:Balloon","exportIndex":0,"name":"Balloon","kind":"class","signature":"class Balloon extends SpawnableItem","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/physics/Chain.md","moduleTitle":"spawnables/physics/Chain","source":"editor/js/spawnables/physics/Chain.js","import":"/editor/js/spawnables/physics/Chain.js","sourceHash":"3ec6d2b59ab238906d4c4f6b5956e2e16c8d0b706a990c035e6e177280e8af22","subsystem":"editor","recordType":"api-module","id":"module:editor/js/spawnables/physics/Chain.js","title":"spawnables/physics/Chain","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/physics/Chain.md","moduleTitle":"spawnables/physics/Chain","source":"editor/js/spawnables/physics/Chain.js","import":"/editor/js/spawnables/physics/Chain.js","sourceHash":"3ec6d2b59ab238906d4c4f6b5956e2e16c8d0b706a990c035e6e177280e8af22","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/physics/Chain.js#0000:Chain","exportIndex":0,"name":"Chain","kind":"class","signature":"class Chain extends SpawnableItem","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/physics/Cloth.md","moduleTitle":"spawnables/physics/Cloth","source":"editor/js/spawnables/physics/Cloth.js","import":"/editor/js/spawnables/physics/Cloth.js","sourceHash":"daa01e7b3324d11b95a12cdfb7243713132161f628099254ded2c001497c1c54","subsystem":"editor","recordType":"api-module","id":"module:editor/js/spawnables/physics/Cloth.js","title":"spawnables/physics/Cloth","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/physics/Cloth.md","moduleTitle":"spawnables/physics/Cloth","source":"editor/js/spawnables/physics/Cloth.js","import":"/editor/js/spawnables/physics/Cloth.js","sourceHash":"daa01e7b3324d11b95a12cdfb7243713132161f628099254ded2c001497c1c54","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/physics/Cloth.js#0000:Cloth","exportIndex":0,"name":"Cloth","kind":"class","signature":"class Cloth extends SpawnableItem","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/physics/Fluid.md","moduleTitle":"spawnables/physics/Fluid","source":"editor/js/spawnables/physics/Fluid.js","import":"/editor/js/spawnables/physics/Fluid.js","sourceHash":"723aa8d478a1254a151d7d966faf1d36ce04e038ff85018f614af2e4987e32e1","subsystem":"editor","recordType":"api-module","id":"module:editor/js/spawnables/physics/Fluid.js","title":"spawnables/physics/Fluid","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/physics/Fluid.md","moduleTitle":"spawnables/physics/Fluid","source":"editor/js/spawnables/physics/Fluid.js","import":"/editor/js/spawnables/physics/Fluid.js","sourceHash":"723aa8d478a1254a151d7d966faf1d36ce04e038ff85018f614af2e4987e32e1","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/physics/Fluid.js#0000:Fluid","exportIndex":0,"name":"Fluid","kind":"class","signature":"class Fluid extends SpawnableItem","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/physics/Hair.md","moduleTitle":"spawnables/physics/Hair","source":"editor/js/spawnables/physics/Hair.js","import":"/editor/js/spawnables/physics/Hair.js","sourceHash":"fa67f44ccd2519563f8a6777f829976372491396cf6cf0dfc102d1f2f973beec","subsystem":"editor","recordType":"api-module","id":"module:editor/js/spawnables/physics/Hair.js","title":"spawnables/physics/Hair","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/physics/Hair.md","moduleTitle":"spawnables/physics/Hair","source":"editor/js/spawnables/physics/Hair.js","import":"/editor/js/spawnables/physics/Hair.js","sourceHash":"fa67f44ccd2519563f8a6777f829976372491396cf6cf0dfc102d1f2f973beec","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/physics/Hair.js#0000:Hair","exportIndex":0,"name":"Hair","kind":"class","signature":"class Hair extends SpawnableItem","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/physics/Ragdoll.md","moduleTitle":"spawnables/physics/Ragdoll","source":"editor/js/spawnables/physics/Ragdoll.js","import":"/editor/js/spawnables/physics/Ragdoll.js","sourceHash":"51fbbc0849780fc09037b47a777daa32638ae8482b588e6653f75a9031e96bee","subsystem":"editor","recordType":"api-module","id":"module:editor/js/spawnables/physics/Ragdoll.js","title":"spawnables/physics/Ragdoll","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/physics/Ragdoll.md","moduleTitle":"spawnables/physics/Ragdoll","source":"editor/js/spawnables/physics/Ragdoll.js","import":"/editor/js/spawnables/physics/Ragdoll.js","sourceHash":"51fbbc0849780fc09037b47a777daa32638ae8482b588e6653f75a9031e96bee","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/physics/Ragdoll.js#0000:Ragdoll","exportIndex":0,"name":"Ragdoll","kind":"class","signature":"class Ragdoll extends SpawnableItem","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/physics/Rope.md","moduleTitle":"spawnables/physics/Rope","source":"editor/js/spawnables/physics/Rope.js","import":"/editor/js/spawnables/physics/Rope.js","sourceHash":"77ba73989bb0eb85d247005402fc0d1d46ace877555eadc27ef7f882d5724569","subsystem":"editor","recordType":"api-module","id":"module:editor/js/spawnables/physics/Rope.js","title":"spawnables/physics/Rope","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/physics/Rope.md","moduleTitle":"spawnables/physics/Rope","source":"editor/js/spawnables/physics/Rope.js","import":"/editor/js/spawnables/physics/Rope.js","sourceHash":"77ba73989bb0eb85d247005402fc0d1d46ace877555eadc27ef7f882d5724569","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/physics/Rope.js#0000:Rope","exportIndex":0,"name":"Rope","kind":"class","signature":"class Rope extends SpawnableItem","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/physics/Rope.md","moduleTitle":"spawnables/physics/Rope","source":"editor/js/spawnables/physics/Rope.js","import":"/editor/js/spawnables/physics/Rope.js","sourceHash":"77ba73989bb0eb85d247005402fc0d1d46ace877555eadc27ef7f882d5724569","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/physics/Rope.js#0001:FIBER_MATERIALS","exportIndex":1,"name":"FIBER_MATERIALS","kind":"re-export","signature":"FIBER_MATERIALS","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/physics/RopeSchema.md","moduleTitle":"spawnables/physics/RopeSchema","source":"editor/js/spawnables/physics/RopeSchema.js","import":"/editor/js/spawnables/physics/RopeSchema.js","sourceHash":"6467fdf238bb85fe79cb3513ddce92f719731e6ce66e34afee5b293e757c2f36","subsystem":"editor","recordType":"api-module","id":"module:editor/js/spawnables/physics/RopeSchema.js","title":"spawnables/physics/RopeSchema","summary":"============================================================================= ROPE SCHEMA - Shared schema for RopeTool and PhysicsRopeComponentEditor =============================================================================","exportCount":7}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/physics/RopeSchema.md","moduleTitle":"spawnables/physics/RopeSchema","source":"editor/js/spawnables/physics/RopeSchema.js","import":"/editor/js/spawnables/physics/RopeSchema.js","sourceHash":"6467fdf238bb85fe79cb3513ddce92f719731e6ce66e34afee5b293e757c2f36","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/physics/RopeSchema.js#0000:getFiberMaterial","exportIndex":0,"name":"getFiberMaterial","kind":"function","signature":"getFiberMaterial(name)","summary":"Get fiber material properties by name"}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/physics/RopeSchema.md","moduleTitle":"spawnables/physics/RopeSchema","source":"editor/js/spawnables/physics/RopeSchema.js","import":"/editor/js/spawnables/physics/RopeSchema.js","sourceHash":"6467fdf238bb85fe79cb3513ddce92f719731e6ce66e34afee5b293e757c2f36","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/physics/RopeSchema.js#0001:applyFiberMaterial","exportIndex":1,"name":"applyFiberMaterial","kind":"function","signature":"applyFiberMaterial(data, materialName)","summary":"Apply fiber material preset to rope data"}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/physics/RopeSchema.md","moduleTitle":"spawnables/physics/RopeSchema","source":"editor/js/spawnables/physics/RopeSchema.js","import":"/editor/js/spawnables/physics/RopeSchema.js","sourceHash":"6467fdf238bb85fe79cb3513ddce92f719731e6ce66e34afee5b293e757c2f36","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/physics/RopeSchema.js#0002:FIBER_MATERIALS","exportIndex":2,"name":"FIBER_MATERIALS","kind":"constant","signature":"FIBER_MATERIALS","summary":"Fiber material properties - affects both physics and rendering"}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/physics/RopeSchema.md","moduleTitle":"spawnables/physics/RopeSchema","source":"editor/js/spawnables/physics/RopeSchema.js","import":"/editor/js/spawnables/physics/RopeSchema.js","sourceHash":"6467fdf238bb85fe79cb3513ddce92f719731e6ce66e34afee5b293e757c2f36","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/physics/RopeSchema.js#0003:ROPE_DEFAULTS","exportIndex":3,"name":"ROPE_DEFAULTS","kind":"constant","signature":"ROPE_DEFAULTS","summary":"Default values for rope properties"}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/physics/RopeSchema.md","moduleTitle":"spawnables/physics/RopeSchema","source":"editor/js/spawnables/physics/RopeSchema.js","import":"/editor/js/spawnables/physics/RopeSchema.js","sourceHash":"6467fdf238bb85fe79cb3513ddce92f719731e6ce66e34afee5b293e757c2f36","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/physics/RopeSchema.js#0004:MATERIAL_PRESETS","exportIndex":4,"name":"MATERIAL_PRESETS","kind":"constant","signature":"MATERIAL_PRESETS","summary":"Material presets for quick setup"}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/physics/RopeSchema.md","moduleTitle":"spawnables/physics/RopeSchema","source":"editor/js/spawnables/physics/RopeSchema.js","import":"/editor/js/spawnables/physics/RopeSchema.js","sourceHash":"6467fdf238bb85fe79cb3513ddce92f719731e6ce66e34afee5b293e757c2f36","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/physics/RopeSchema.js#0005:FIBER_MATERIAL_OPTIONS","exportIndex":5,"name":"FIBER_MATERIAL_OPTIONS","kind":"constant","signature":"FIBER_MATERIAL_OPTIONS","summary":"Fiber material options for dropdown"}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/physics/RopeSchema.md","moduleTitle":"spawnables/physics/RopeSchema","source":"editor/js/spawnables/physics/RopeSchema.js","import":"/editor/js/spawnables/physics/RopeSchema.js","sourceHash":"6467fdf238bb85fe79cb3513ddce92f719731e6ce66e34afee5b293e757c2f36","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/physics/RopeSchema.js#0006:ROPE_INSPECTOR_SCHEMA","exportIndex":6,"name":"ROPE_INSPECTOR_SCHEMA","kind":"constant","signature":"ROPE_INSPECTOR_SCHEMA","summary":"Unified inspector schema for rope properties Used by both RopeTool and PhysicsRopeComponentEditor Organized into logical groups with the most commonly used options first"}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/physics/SoftBody.md","moduleTitle":"spawnables/physics/SoftBody","source":"editor/js/spawnables/physics/SoftBody.js","import":"/editor/js/spawnables/physics/SoftBody.js","sourceHash":"b23d60ae989bb6d57de17539a065a789b0ed29b0657193cec4fd4aef30d961c3","subsystem":"editor","recordType":"api-module","id":"module:editor/js/spawnables/physics/SoftBody.js","title":"spawnables/physics/SoftBody","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/physics/SoftBody.md","moduleTitle":"spawnables/physics/SoftBody","source":"editor/js/spawnables/physics/SoftBody.js","import":"/editor/js/spawnables/physics/SoftBody.js","sourceHash":"b23d60ae989bb6d57de17539a065a789b0ed29b0657193cec4fd4aef30d961c3","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/physics/SoftBody.js#0000:SoftBody","exportIndex":0,"name":"SoftBody","kind":"class","signature":"class SoftBody extends SpawnableItem","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/physics/Wire.md","moduleTitle":"spawnables/physics/Wire","source":"editor/js/spawnables/physics/Wire.js","import":"/editor/js/spawnables/physics/Wire.js","sourceHash":"9d95a3abc8add1dc4152c298a1dd1d4d1e0f1a1edff3052688acb5813c682084","subsystem":"editor","recordType":"api-module","id":"module:editor/js/spawnables/physics/Wire.js","title":"spawnables/physics/Wire","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/physics/Wire.md","moduleTitle":"spawnables/physics/Wire","source":"editor/js/spawnables/physics/Wire.js","import":"/editor/js/spawnables/physics/Wire.js","sourceHash":"9d95a3abc8add1dc4152c298a1dd1d4d1e0f1a1edff3052688acb5813c682084","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/physics/Wire.js#0000:Wire","exportIndex":0,"name":"Wire","kind":"class","signature":"class Wire extends SpawnableItem","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/primitives/Capsule.md","moduleTitle":"spawnables/primitives/Capsule","source":"editor/js/spawnables/primitives/Capsule.js","import":"/editor/js/spawnables/primitives/Capsule.js","sourceHash":"24cd6928e080999525051c4ba39cdfd23fa0e0fd98ff3b7f9e711b0db18a211d","subsystem":"editor","recordType":"api-module","id":"module:editor/js/spawnables/primitives/Capsule.js","title":"spawnables/primitives/Capsule","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/primitives/Capsule.md","moduleTitle":"spawnables/primitives/Capsule","source":"editor/js/spawnables/primitives/Capsule.js","import":"/editor/js/spawnables/primitives/Capsule.js","sourceHash":"24cd6928e080999525051c4ba39cdfd23fa0e0fd98ff3b7f9e711b0db18a211d","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/primitives/Capsule.js#0000:Capsule","exportIndex":0,"name":"Capsule","kind":"class","signature":"class Capsule extends SpawnableItem","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/primitives/Cone.md","moduleTitle":"spawnables/primitives/Cone","source":"editor/js/spawnables/primitives/Cone.js","import":"/editor/js/spawnables/primitives/Cone.js","sourceHash":"8761e98ef72045d9bef0892e3e97cc7d2a04fc8eccd6b7ae40650e36ee22ab0a","subsystem":"editor","recordType":"api-module","id":"module:editor/js/spawnables/primitives/Cone.js","title":"spawnables/primitives/Cone","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/primitives/Cone.md","moduleTitle":"spawnables/primitives/Cone","source":"editor/js/spawnables/primitives/Cone.js","import":"/editor/js/spawnables/primitives/Cone.js","sourceHash":"8761e98ef72045d9bef0892e3e97cc7d2a04fc8eccd6b7ae40650e36ee22ab0a","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/primitives/Cone.js#0000:Cone","exportIndex":0,"name":"Cone","kind":"class","signature":"class Cone extends SpawnableItem","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/primitives/Cube.md","moduleTitle":"spawnables/primitives/Cube","source":"editor/js/spawnables/primitives/Cube.js","import":"/editor/js/spawnables/primitives/Cube.js","sourceHash":"b7f0d0a0262792eee13c0b9d5c6c6c6883e8ab899c2d98055f40257da644fdc8","subsystem":"editor","recordType":"api-module","id":"module:editor/js/spawnables/primitives/Cube.js","title":"spawnables/primitives/Cube","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/primitives/Cube.md","moduleTitle":"spawnables/primitives/Cube","source":"editor/js/spawnables/primitives/Cube.js","import":"/editor/js/spawnables/primitives/Cube.js","sourceHash":"b7f0d0a0262792eee13c0b9d5c6c6c6883e8ab899c2d98055f40257da644fdc8","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/primitives/Cube.js#0000:Cube","exportIndex":0,"name":"Cube","kind":"class","signature":"class Cube extends SpawnableItem","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/primitives/Cylinder.md","moduleTitle":"spawnables/primitives/Cylinder","source":"editor/js/spawnables/primitives/Cylinder.js","import":"/editor/js/spawnables/primitives/Cylinder.js","sourceHash":"37023f7fd64ad3d14fccbeed0dab29f64e96e2fa287c4466c8416aff28075dc3","subsystem":"editor","recordType":"api-module","id":"module:editor/js/spawnables/primitives/Cylinder.js","title":"spawnables/primitives/Cylinder","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/primitives/Cylinder.md","moduleTitle":"spawnables/primitives/Cylinder","source":"editor/js/spawnables/primitives/Cylinder.js","import":"/editor/js/spawnables/primitives/Cylinder.js","sourceHash":"37023f7fd64ad3d14fccbeed0dab29f64e96e2fa287c4466c8416aff28075dc3","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/primitives/Cylinder.js#0000:Cylinder","exportIndex":0,"name":"Cylinder","kind":"class","signature":"class Cylinder extends SpawnableItem","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/primitives/Plane.md","moduleTitle":"spawnables/primitives/Plane","source":"editor/js/spawnables/primitives/Plane.js","import":"/editor/js/spawnables/primitives/Plane.js","sourceHash":"2da477b1d1ef7579bead9778849ee2584dcafa3641beabd2db9ae75fab16ba83","subsystem":"editor","recordType":"api-module","id":"module:editor/js/spawnables/primitives/Plane.js","title":"spawnables/primitives/Plane","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/primitives/Plane.md","moduleTitle":"spawnables/primitives/Plane","source":"editor/js/spawnables/primitives/Plane.js","import":"/editor/js/spawnables/primitives/Plane.js","sourceHash":"2da477b1d1ef7579bead9778849ee2584dcafa3641beabd2db9ae75fab16ba83","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/primitives/Plane.js#0000:Plane","exportIndex":0,"name":"Plane","kind":"class","signature":"class Plane extends SpawnableItem","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/primitives/Sphere.md","moduleTitle":"spawnables/primitives/Sphere","source":"editor/js/spawnables/primitives/Sphere.js","import":"/editor/js/spawnables/primitives/Sphere.js","sourceHash":"f0e528d593584f73e347c1e3947705cea5343e41855b0803536388a05bbd0553","subsystem":"editor","recordType":"api-module","id":"module:editor/js/spawnables/primitives/Sphere.js","title":"spawnables/primitives/Sphere","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/primitives/Sphere.md","moduleTitle":"spawnables/primitives/Sphere","source":"editor/js/spawnables/primitives/Sphere.js","import":"/editor/js/spawnables/primitives/Sphere.js","sourceHash":"f0e528d593584f73e347c1e3947705cea5343e41855b0803536388a05bbd0553","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/primitives/Sphere.js#0000:Sphere","exportIndex":0,"name":"Sphere","kind":"class","signature":"class Sphere extends SpawnableItem","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/primitives/Torus.md","moduleTitle":"spawnables/primitives/Torus","source":"editor/js/spawnables/primitives/Torus.js","import":"/editor/js/spawnables/primitives/Torus.js","sourceHash":"825162aac20dd5baec3991e82f67dd516570ed6c249225ae7d8852a4c77b45ec","subsystem":"editor","recordType":"api-module","id":"module:editor/js/spawnables/primitives/Torus.js","title":"spawnables/primitives/Torus","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/primitives/Torus.md","moduleTitle":"spawnables/primitives/Torus","source":"editor/js/spawnables/primitives/Torus.js","import":"/editor/js/spawnables/primitives/Torus.js","sourceHash":"825162aac20dd5baec3991e82f67dd516570ed6c249225ae7d8852a4c77b45ec","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/primitives/Torus.js#0000:Torus","exportIndex":0,"name":"Torus","kind":"class","signature":"class Torus extends SpawnableItem","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/tools/ConstraintTool.md","moduleTitle":"spawnables/tools/ConstraintTool","source":"editor/js/spawnables/tools/ConstraintTool.js","import":"/editor/js/spawnables/tools/ConstraintTool.js","sourceHash":"6e590ec574f3a1d6a2bcc482f4345b18340aa625570b2a9cc82d3e525e496d62","subsystem":"editor","recordType":"api-module","id":"module:editor/js/spawnables/tools/ConstraintTool.js","title":"spawnables/tools/ConstraintTool","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/tools/ConstraintTool.md","moduleTitle":"spawnables/tools/ConstraintTool","source":"editor/js/spawnables/tools/ConstraintTool.js","import":"/editor/js/spawnables/tools/ConstraintTool.js","sourceHash":"6e590ec574f3a1d6a2bcc482f4345b18340aa625570b2a9cc82d3e525e496d62","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/tools/ConstraintTool.js#0000:ConstraintTool","exportIndex":0,"name":"ConstraintTool","kind":"class","signature":"class ConstraintTool extends SpawnableItem","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/tools/RemoverTool.md","moduleTitle":"spawnables/tools/RemoverTool","source":"editor/js/spawnables/tools/RemoverTool.js","import":"/editor/js/spawnables/tools/RemoverTool.js","sourceHash":"77f116c0956e25ba142b02d0fd8b8674ef15d09538efa9c07df04402fa1d084c","subsystem":"editor","recordType":"api-module","id":"module:editor/js/spawnables/tools/RemoverTool.js","title":"spawnables/tools/RemoverTool","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/tools/RemoverTool.md","moduleTitle":"spawnables/tools/RemoverTool","source":"editor/js/spawnables/tools/RemoverTool.js","import":"/editor/js/spawnables/tools/RemoverTool.js","sourceHash":"77f116c0956e25ba142b02d0fd8b8674ef15d09538efa9c07df04402fa1d084c","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/tools/RemoverTool.js#0000:RemoverTool","exportIndex":0,"name":"RemoverTool","kind":"class","signature":"class RemoverTool extends SpawnableItem","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/tools/RopeTool.md","moduleTitle":"spawnables/tools/RopeTool","source":"editor/js/spawnables/tools/RopeTool.js","import":"/editor/js/spawnables/tools/RopeTool.js","sourceHash":"b295a96d0acc33f420f798e0427db3904e167a5f56ad3be852bf7aff99df7828","subsystem":"editor","recordType":"api-module","id":"module:editor/js/spawnables/tools/RopeTool.js","title":"spawnables/tools/RopeTool","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/tools/RopeTool.md","moduleTitle":"spawnables/tools/RopeTool","source":"editor/js/spawnables/tools/RopeTool.js","import":"/editor/js/spawnables/tools/RopeTool.js","sourceHash":"b295a96d0acc33f420f798e0427db3904e167a5f56ad3be852bf7aff99df7828","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/tools/RopeTool.js#0000:RopeTool","exportIndex":0,"name":"RopeTool","kind":"class","signature":"class RopeTool extends SpawnableItem","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/tools/SpringTool.md","moduleTitle":"spawnables/tools/SpringTool","source":"editor/js/spawnables/tools/SpringTool.js","import":"/editor/js/spawnables/tools/SpringTool.js","sourceHash":"969e5dd429a1fe9fc46c0a17dd995e446fbaf960e43911a99de030c3eb4d630f","subsystem":"editor","recordType":"api-module","id":"module:editor/js/spawnables/tools/SpringTool.js","title":"spawnables/tools/SpringTool","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/tools/SpringTool.md","moduleTitle":"spawnables/tools/SpringTool","source":"editor/js/spawnables/tools/SpringTool.js","import":"/editor/js/spawnables/tools/SpringTool.js","sourceHash":"969e5dd429a1fe9fc46c0a17dd995e446fbaf960e43911a99de030c3eb4d630f","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/tools/SpringTool.js#0000:SpringTool","exportIndex":0,"name":"SpringTool","kind":"class","signature":"class SpringTool extends SpawnableItem","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/tools/WeldTool.md","moduleTitle":"spawnables/tools/WeldTool","source":"editor/js/spawnables/tools/WeldTool.js","import":"/editor/js/spawnables/tools/WeldTool.js","sourceHash":"ef05323b964962e45aaf5d2c6daca79b5ed32ebe478ffb84ad6af472116b6501","subsystem":"editor","recordType":"api-module","id":"module:editor/js/spawnables/tools/WeldTool.js","title":"spawnables/tools/WeldTool","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/spawnables/tools/WeldTool.md","moduleTitle":"spawnables/tools/WeldTool","source":"editor/js/spawnables/tools/WeldTool.js","import":"/editor/js/spawnables/tools/WeldTool.js","sourceHash":"ef05323b964962e45aaf5d2c6daca79b5ed32ebe478ffb84ad6af472116b6501","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/spawnables/tools/WeldTool.js#0000:WeldTool","exportIndex":0,"name":"WeldTool","kind":"class","signature":"class WeldTool extends SpawnableItem","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/storage/EditorPreferenceContracts.md","moduleTitle":"storage/EditorPreferenceContracts","source":"editor/js/storage/EditorPreferenceContracts.js","import":"/editor/js/storage/EditorPreferenceContracts.js","sourceHash":"baa643eca439808d555ccc80d22f3198869ba478397fc0d355d6de8962a2a8d3","subsystem":"editor","recordType":"api-module","id":"module:editor/js/storage/EditorPreferenceContracts.js","title":"storage/EditorPreferenceContracts","summary":"Canonical localStorage contracts for structured editor preferences. The original keys remain v1 rollback mirrors. Current clients publish the legacy payload first and the v2 envelope last. The envelope remembers the exact legacy JSON it accompanied, allowing a later write from an older tab to be detected and read instead of being shadowed by stale v2 data.","exportCount":28}
{"schemaVersion":1,"modulePath":"editor/reference/storage/EditorPreferenceContracts.md","moduleTitle":"storage/EditorPreferenceContracts","source":"editor/js/storage/EditorPreferenceContracts.js","import":"/editor/js/storage/EditorPreferenceContracts.js","sourceHash":"baa643eca439808d555ccc80d22f3198869ba478397fc0d355d6de8962a2a8d3","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/storage/EditorPreferenceContracts.js#0000:EditorPreferenceContractError","exportIndex":0,"name":"EditorPreferenceContractError","kind":"class","signature":"class EditorPreferenceContractError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/storage/EditorPreferenceContracts.md","moduleTitle":"storage/EditorPreferenceContracts","source":"editor/js/storage/EditorPreferenceContracts.js","import":"/editor/js/storage/EditorPreferenceContracts.js","sourceHash":"baa643eca439808d555ccc80d22f3198869ba478397fc0d355d6de8962a2a8d3","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/storage/EditorPreferenceContracts.js#0001:readEditorSettings","exportIndex":1,"name":"readEditorSettings","kind":"function","signature":"readEditorSettings(storage)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/storage/EditorPreferenceContracts.md","moduleTitle":"storage/EditorPreferenceContracts","source":"editor/js/storage/EditorPreferenceContracts.js","import":"/editor/js/storage/EditorPreferenceContracts.js","sourceHash":"baa643eca439808d555ccc80d22f3198869ba478397fc0d355d6de8962a2a8d3","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/storage/EditorPreferenceContracts.js#0002:writeEditorSettings","exportIndex":2,"name":"writeEditorSettings","kind":"function","signature":"writeEditorSettings(value, storage)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/storage/EditorPreferenceContracts.md","moduleTitle":"storage/EditorPreferenceContracts","source":"editor/js/storage/EditorPreferenceContracts.js","import":"/editor/js/storage/EditorPreferenceContracts.js","sourceHash":"baa643eca439808d555ccc80d22f3198869ba478397fc0d355d6de8962a2a8d3","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/storage/EditorPreferenceContracts.js#0003:clearEditorSettings","exportIndex":3,"name":"clearEditorSettings","kind":"function","signature":"clearEditorSettings(storage)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/storage/EditorPreferenceContracts.md","moduleTitle":"storage/EditorPreferenceContracts","source":"editor/js/storage/EditorPreferenceContracts.js","import":"/editor/js/storage/EditorPreferenceContracts.js","sourceHash":"baa643eca439808d555ccc80d22f3198869ba478397fc0d355d6de8962a2a8d3","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/storage/EditorPreferenceContracts.js#0004:readEditorHotkeys","exportIndex":4,"name":"readEditorHotkeys","kind":"function","signature":"readEditorHotkeys(storage)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/storage/EditorPreferenceContracts.md","moduleTitle":"storage/EditorPreferenceContracts","source":"editor/js/storage/EditorPreferenceContracts.js","import":"/editor/js/storage/EditorPreferenceContracts.js","sourceHash":"baa643eca439808d555ccc80d22f3198869ba478397fc0d355d6de8962a2a8d3","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/storage/EditorPreferenceContracts.js#0005:writeEditorHotkeys","exportIndex":5,"name":"writeEditorHotkeys","kind":"function","signature":"writeEditorHotkeys(value, storage)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/storage/EditorPreferenceContracts.md","moduleTitle":"storage/EditorPreferenceContracts","source":"editor/js/storage/EditorPreferenceContracts.js","import":"/editor/js/storage/EditorPreferenceContracts.js","sourceHash":"baa643eca439808d555ccc80d22f3198869ba478397fc0d355d6de8962a2a8d3","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/storage/EditorPreferenceContracts.js#0006:clearEditorHotkeys","exportIndex":6,"name":"clearEditorHotkeys","kind":"function","signature":"clearEditorHotkeys(storage)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/storage/EditorPreferenceContracts.md","moduleTitle":"storage/EditorPreferenceContracts","source":"editor/js/storage/EditorPreferenceContracts.js","import":"/editor/js/storage/EditorPreferenceContracts.js","sourceHash":"baa643eca439808d555ccc80d22f3198869ba478397fc0d355d6de8962a2a8d3","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/storage/EditorPreferenceContracts.js#0007:readRecentProjects","exportIndex":7,"name":"readRecentProjects","kind":"function","signature":"readRecentProjects(storage)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/storage/EditorPreferenceContracts.md","moduleTitle":"storage/EditorPreferenceContracts","source":"editor/js/storage/EditorPreferenceContracts.js","import":"/editor/js/storage/EditorPreferenceContracts.js","sourceHash":"baa643eca439808d555ccc80d22f3198869ba478397fc0d355d6de8962a2a8d3","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/storage/EditorPreferenceContracts.js#0008:writeRecentProjects","exportIndex":8,"name":"writeRecentProjects","kind":"function","signature":"writeRecentProjects(value, storage)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/storage/EditorPreferenceContracts.md","moduleTitle":"storage/EditorPreferenceContracts","source":"editor/js/storage/EditorPreferenceContracts.js","import":"/editor/js/storage/EditorPreferenceContracts.js","sourceHash":"baa643eca439808d555ccc80d22f3198869ba478397fc0d355d6de8962a2a8d3","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/storage/EditorPreferenceContracts.js#0009:clearRecentProjectsRecord","exportIndex":9,"name":"clearRecentProjectsRecord","kind":"function","signature":"clearRecentProjectsRecord(storage)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/storage/EditorPreferenceContracts.md","moduleTitle":"storage/EditorPreferenceContracts","source":"editor/js/storage/EditorPreferenceContracts.js","import":"/editor/js/storage/EditorPreferenceContracts.js","sourceHash":"baa643eca439808d555ccc80d22f3198869ba478397fc0d355d6de8962a2a8d3","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/storage/EditorPreferenceContracts.js#0010:readWorldEnvironment","exportIndex":10,"name":"readWorldEnvironment","kind":"function","signature":"readWorldEnvironment(storage)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/storage/EditorPreferenceContracts.md","moduleTitle":"storage/EditorPreferenceContracts","source":"editor/js/storage/EditorPreferenceContracts.js","import":"/editor/js/storage/EditorPreferenceContracts.js","sourceHash":"baa643eca439808d555ccc80d22f3198869ba478397fc0d355d6de8962a2a8d3","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/storage/EditorPreferenceContracts.js#0011:writeWorldEnvironment","exportIndex":11,"name":"writeWorldEnvironment","kind":"function","signature":"writeWorldEnvironment(value, storage)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/storage/EditorPreferenceContracts.md","moduleTitle":"storage/EditorPreferenceContracts","source":"editor/js/storage/EditorPreferenceContracts.js","import":"/editor/js/storage/EditorPreferenceContracts.js","sourceHash":"baa643eca439808d555ccc80d22f3198869ba478397fc0d355d6de8962a2a8d3","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/storage/EditorPreferenceContracts.js#0012:readWorldPostprocess","exportIndex":12,"name":"readWorldPostprocess","kind":"function","signature":"readWorldPostprocess(storage)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/storage/EditorPreferenceContracts.md","moduleTitle":"storage/EditorPreferenceContracts","source":"editor/js/storage/EditorPreferenceContracts.js","import":"/editor/js/storage/EditorPreferenceContracts.js","sourceHash":"baa643eca439808d555ccc80d22f3198869ba478397fc0d355d6de8962a2a8d3","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/storage/EditorPreferenceContracts.js#0013:writeWorldPostprocess","exportIndex":13,"name":"writeWorldPostprocess","kind":"function","signature":"writeWorldPostprocess(value, storage)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/storage/EditorPreferenceContracts.md","moduleTitle":"storage/EditorPreferenceContracts","source":"editor/js/storage/EditorPreferenceContracts.js","import":"/editor/js/storage/EditorPreferenceContracts.js","sourceHash":"baa643eca439808d555ccc80d22f3198869ba478397fc0d355d6de8962a2a8d3","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/storage/EditorPreferenceContracts.js#0014:readWorldPanelCollapse","exportIndex":14,"name":"readWorldPanelCollapse","kind":"function","signature":"readWorldPanelCollapse(storage)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/storage/EditorPreferenceContracts.md","moduleTitle":"storage/EditorPreferenceContracts","source":"editor/js/storage/EditorPreferenceContracts.js","import":"/editor/js/storage/EditorPreferenceContracts.js","sourceHash":"baa643eca439808d555ccc80d22f3198869ba478397fc0d355d6de8962a2a8d3","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/storage/EditorPreferenceContracts.js#0015:writeWorldPanelCollapse","exportIndex":15,"name":"writeWorldPanelCollapse","kind":"function","signature":"writeWorldPanelCollapse(value, storage)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/storage/EditorPreferenceContracts.md","moduleTitle":"storage/EditorPreferenceContracts","source":"editor/js/storage/EditorPreferenceContracts.js","import":"/editor/js/storage/EditorPreferenceContracts.js","sourceHash":"baa643eca439808d555ccc80d22f3198869ba478397fc0d355d6de8962a2a8d3","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/storage/EditorPreferenceContracts.js#0016:readCollabRoom","exportIndex":16,"name":"readCollabRoom","kind":"function","signature":"readCollabRoom(storage)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/storage/EditorPreferenceContracts.md","moduleTitle":"storage/EditorPreferenceContracts","source":"editor/js/storage/EditorPreferenceContracts.js","import":"/editor/js/storage/EditorPreferenceContracts.js","sourceHash":"baa643eca439808d555ccc80d22f3198869ba478397fc0d355d6de8962a2a8d3","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/storage/EditorPreferenceContracts.js#0017:writeCollabRoom","exportIndex":17,"name":"writeCollabRoom","kind":"function","signature":"writeCollabRoom(value, storage)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/storage/EditorPreferenceContracts.md","moduleTitle":"storage/EditorPreferenceContracts","source":"editor/js/storage/EditorPreferenceContracts.js","import":"/editor/js/storage/EditorPreferenceContracts.js","sourceHash":"baa643eca439808d555ccc80d22f3198869ba478397fc0d355d6de8962a2a8d3","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/storage/EditorPreferenceContracts.js#0018:clearCollabRoom","exportIndex":18,"name":"clearCollabRoom","kind":"function","signature":"clearCollabRoom(storage)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/storage/EditorPreferenceContracts.md","moduleTitle":"storage/EditorPreferenceContracts","source":"editor/js/storage/EditorPreferenceContracts.js","import":"/editor/js/storage/EditorPreferenceContracts.js","sourceHash":"baa643eca439808d555ccc80d22f3198869ba478397fc0d355d6de8962a2a8d3","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/storage/EditorPreferenceContracts.js#0019:readAudioMotion","exportIndex":19,"name":"readAudioMotion","kind":"function","signature":"readAudioMotion(storage)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/storage/EditorPreferenceContracts.md","moduleTitle":"storage/EditorPreferenceContracts","source":"editor/js/storage/EditorPreferenceContracts.js","import":"/editor/js/storage/EditorPreferenceContracts.js","sourceHash":"baa643eca439808d555ccc80d22f3198869ba478397fc0d355d6de8962a2a8d3","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/storage/EditorPreferenceContracts.js#0020:writeAudioMotion","exportIndex":20,"name":"writeAudioMotion","kind":"function","signature":"writeAudioMotion(value, storage)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/storage/EditorPreferenceContracts.md","moduleTitle":"storage/EditorPreferenceContracts","source":"editor/js/storage/EditorPreferenceContracts.js","import":"/editor/js/storage/EditorPreferenceContracts.js","sourceHash":"baa643eca439808d555ccc80d22f3198869ba478397fc0d355d6de8962a2a8d3","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/storage/EditorPreferenceContracts.js#0021:readAudioFavorites","exportIndex":21,"name":"readAudioFavorites","kind":"function","signature":"readAudioFavorites(storage)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/storage/EditorPreferenceContracts.md","moduleTitle":"storage/EditorPreferenceContracts","source":"editor/js/storage/EditorPreferenceContracts.js","import":"/editor/js/storage/EditorPreferenceContracts.js","sourceHash":"baa643eca439808d555ccc80d22f3198869ba478397fc0d355d6de8962a2a8d3","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/storage/EditorPreferenceContracts.js#0022:writeAudioFavorites","exportIndex":22,"name":"writeAudioFavorites","kind":"function","signature":"writeAudioFavorites(value, storage)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/storage/EditorPreferenceContracts.md","moduleTitle":"storage/EditorPreferenceContracts","source":"editor/js/storage/EditorPreferenceContracts.js","import":"/editor/js/storage/EditorPreferenceContracts.js","sourceHash":"baa643eca439808d555ccc80d22f3198869ba478397fc0d355d6de8962a2a8d3","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/storage/EditorPreferenceContracts.js#0023:readAudioRecents","exportIndex":23,"name":"readAudioRecents","kind":"function","signature":"readAudioRecents(storage)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/storage/EditorPreferenceContracts.md","moduleTitle":"storage/EditorPreferenceContracts","source":"editor/js/storage/EditorPreferenceContracts.js","import":"/editor/js/storage/EditorPreferenceContracts.js","sourceHash":"baa643eca439808d555ccc80d22f3198869ba478397fc0d355d6de8962a2a8d3","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/storage/EditorPreferenceContracts.js#0024:writeAudioRecents","exportIndex":24,"name":"writeAudioRecents","kind":"function","signature":"writeAudioRecents(value, storage)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/storage/EditorPreferenceContracts.md","moduleTitle":"storage/EditorPreferenceContracts","source":"editor/js/storage/EditorPreferenceContracts.js","import":"/editor/js/storage/EditorPreferenceContracts.js","sourceHash":"baa643eca439808d555ccc80d22f3198869ba478397fc0d355d6de8962a2a8d3","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/storage/EditorPreferenceContracts.js#0025:EDITOR_PREFERENCE_SCHEMA_VERSION","exportIndex":25,"name":"EDITOR_PREFERENCE_SCHEMA_VERSION","kind":"constant","signature":"EDITOR_PREFERENCE_SCHEMA_VERSION","summary":"Canonical localStorage contracts for structured editor preferences. The original keys remain v1 rollback mirrors. Current clients publish the legacy payload first and the v2 envelope last. The envelope remembers the exact legacy JSON it accompanied, allowing a later write from an older tab to be detected and read instead of being shadowed by stale v2 data."}
{"schemaVersion":1,"modulePath":"editor/reference/storage/EditorPreferenceContracts.md","moduleTitle":"storage/EditorPreferenceContracts","source":"editor/js/storage/EditorPreferenceContracts.js","import":"/editor/js/storage/EditorPreferenceContracts.js","sourceHash":"baa643eca439808d555ccc80d22f3198869ba478397fc0d355d6de8962a2a8d3","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/storage/EditorPreferenceContracts.js#0026:EDITOR_PREFERENCE_MAX_RECORD_BYTES","exportIndex":26,"name":"EDITOR_PREFERENCE_MAX_RECORD_BYTES","kind":"constant","signature":"EDITOR_PREFERENCE_MAX_RECORD_BYTES","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/storage/EditorPreferenceContracts.md","moduleTitle":"storage/EditorPreferenceContracts","source":"editor/js/storage/EditorPreferenceContracts.js","import":"/editor/js/storage/EditorPreferenceContracts.js","sourceHash":"baa643eca439808d555ccc80d22f3198869ba478397fc0d355d6de8962a2a8d3","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/storage/EditorPreferenceContracts.js#0027:EDITOR_PREFERENCE_CONTRACTS","exportIndex":27,"name":"EDITOR_PREFERENCE_CONTRACTS","kind":"constant","signature":"EDITOR_PREFERENCE_CONTRACTS","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/storage/GameEditorDatabase.md","moduleTitle":"storage/GameEditorDatabase","source":"editor/js/storage/GameEditorDatabase.js","import":"/editor/js/storage/GameEditorDatabase.js","sourceHash":"919572adb5c8e5e38c64501e08be49397d748da4149becacf2fb092861c34635","subsystem":"editor","recordType":"api-module","id":"module:editor/js/storage/GameEditorDatabase.js","title":"storage/GameEditorDatabase","summary":"The single schema owner for editor IndexedDB persistence. Version 1 was opened independently by main.js and ProjectStorage.js, which meant only the first caller's object store was created. Version 2 expands the database to contain both stores without removing any version-1 data.","exportCount":6}
{"schemaVersion":1,"modulePath":"editor/reference/storage/GameEditorDatabase.md","moduleTitle":"storage/GameEditorDatabase","source":"editor/js/storage/GameEditorDatabase.js","import":"/editor/js/storage/GameEditorDatabase.js","sourceHash":"919572adb5c8e5e38c64501e08be49397d748da4149becacf2fb092861c34635","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/storage/GameEditorDatabase.js#0000:closeGameEditorDatabase","exportIndex":0,"name":"closeGameEditorDatabase","kind":"function","signature":"closeGameEditorDatabase()","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/storage/GameEditorDatabase.md","moduleTitle":"storage/GameEditorDatabase","source":"editor/js/storage/GameEditorDatabase.js","import":"/editor/js/storage/GameEditorDatabase.js","sourceHash":"919572adb5c8e5e38c64501e08be49397d748da4149becacf2fb092861c34635","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/storage/GameEditorDatabase.js#0001:openGameEditorDatabase","exportIndex":1,"name":"openGameEditorDatabase","kind":"function","signature":"openGameEditorDatabase()","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/storage/GameEditorDatabase.md","moduleTitle":"storage/GameEditorDatabase","source":"editor/js/storage/GameEditorDatabase.js","import":"/editor/js/storage/GameEditorDatabase.js","sourceHash":"919572adb5c8e5e38c64501e08be49397d748da4149becacf2fb092861c34635","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/storage/GameEditorDatabase.js#0002:GAME_EDITOR_DB_NAME","exportIndex":2,"name":"GAME_EDITOR_DB_NAME","kind":"constant","signature":"GAME_EDITOR_DB_NAME","summary":"The single schema owner for editor IndexedDB persistence. Version 1 was opened independently by main.js and ProjectStorage.js, which meant only the first caller's object store was created. Version 2 expands the database to contain both stores without removing any version-1 data."}
{"schemaVersion":1,"modulePath":"editor/reference/storage/GameEditorDatabase.md","moduleTitle":"storage/GameEditorDatabase","source":"editor/js/storage/GameEditorDatabase.js","import":"/editor/js/storage/GameEditorDatabase.js","sourceHash":"919572adb5c8e5e38c64501e08be49397d748da4149becacf2fb092861c34635","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/storage/GameEditorDatabase.js#0003:GAME_EDITOR_DB_VERSION","exportIndex":3,"name":"GAME_EDITOR_DB_VERSION","kind":"constant","signature":"GAME_EDITOR_DB_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/storage/GameEditorDatabase.md","moduleTitle":"storage/GameEditorDatabase","source":"editor/js/storage/GameEditorDatabase.js","import":"/editor/js/storage/GameEditorDatabase.js","sourceHash":"919572adb5c8e5e38c64501e08be49397d748da4149becacf2fb092861c34635","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/storage/GameEditorDatabase.js#0004:PROJECT_HANDLES_STORE","exportIndex":4,"name":"PROJECT_HANDLES_STORE","kind":"constant","signature":"PROJECT_HANDLES_STORE","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/storage/GameEditorDatabase.md","moduleTitle":"storage/GameEditorDatabase","source":"editor/js/storage/GameEditorDatabase.js","import":"/editor/js/storage/GameEditorDatabase.js","sourceHash":"919572adb5c8e5e38c64501e08be49397d748da4149becacf2fb092861c34635","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/storage/GameEditorDatabase.js#0005:PROJECTS_STORE","exportIndex":5,"name":"PROJECTS_STORE","kind":"constant","signature":"PROJECTS_STORE","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/themes/cyberpunk.md","moduleTitle":"themes/cyberpunk","source":"editor/js/themes/cyberpunk.js","import":"/editor/js/themes/cyberpunk.js","sourceHash":"01d96011663fc488e8c1a728199f0ecb8cf6ccf7442d99c0f1d165d920ecffbf","subsystem":"editor","recordType":"api-module","id":"module:editor/js/themes/cyberpunk.js","title":"themes/cyberpunk","summary":"Cyberpunk Theme - Neon pink and cyan","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/themes/cyberpunk.md","moduleTitle":"themes/cyberpunk","source":"editor/js/themes/cyberpunk.js","import":"/editor/js/themes/cyberpunk.js","sourceHash":"01d96011663fc488e8c1a728199f0ecb8cf6ccf7442d99c0f1d165d920ecffbf","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/themes/cyberpunk.js#0000:themeCyberpunk","exportIndex":0,"name":"themeCyberpunk","kind":"constant","signature":"themeCyberpunk","summary":"Cyberpunk Theme - Neon pink and cyan"}
{"schemaVersion":1,"modulePath":"editor/reference/themes/dark.md","moduleTitle":"themes/dark","source":"editor/js/themes/dark.js","import":"/editor/js/themes/dark.js","sourceHash":"2562929b9f74e2ae1e4b77c7adfe52037abf012350917bff42566f5ab5834771","subsystem":"editor","recordType":"api-module","id":"module:editor/js/themes/dark.js","title":"themes/dark","summary":"Dark Theme - Default editor theme","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/themes/dark.md","moduleTitle":"themes/dark","source":"editor/js/themes/dark.js","import":"/editor/js/themes/dark.js","sourceHash":"2562929b9f74e2ae1e4b77c7adfe52037abf012350917bff42566f5ab5834771","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/themes/dark.js#0000:themeDark","exportIndex":0,"name":"themeDark","kind":"constant","signature":"themeDark","summary":"Dark Theme - Default editor theme"}
{"schemaVersion":1,"modulePath":"editor/reference/themes/index.md","moduleTitle":"themes/index","source":"editor/js/themes/index.js","import":"/editor/js/themes/index.js","sourceHash":"f30d19f264bf5adee0759fb64421bbb783cd1d3d5a3c3747ab33fbddf6b35a25","subsystem":"editor","recordType":"api-module","id":"module:editor/js/themes/index.js","title":"themes/index","summary":"Theme System Index Central theme management with modular theme files","exportCount":2}
{"schemaVersion":1,"modulePath":"editor/reference/themes/index.md","moduleTitle":"themes/index","source":"editor/js/themes/index.js","import":"/editor/js/themes/index.js","sourceHash":"f30d19f264bf5adee0759fb64421bbb783cd1d3d5a3c3747ab33fbddf6b35a25","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/themes/index.js#0000:themes","exportIndex":0,"name":"themes","kind":"constant","signature":"themes","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/themes/index.md","moduleTitle":"themes/index","source":"editor/js/themes/index.js","import":"/editor/js/themes/index.js","sourceHash":"f30d19f264bf5adee0759fb64421bbb783cd1d3d5a3c3747ab33fbddf6b35a25","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/themes/index.js#0001:themeManager","exportIndex":1,"name":"themeManager","kind":"constant","signature":"themeManager","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/themes/light.md","moduleTitle":"themes/light","source":"editor/js/themes/light.js","import":"/editor/js/themes/light.js","sourceHash":"a9756ae07055ca2eed8cca4076e16f3f30ea481ba408abbea5825575fce94587","subsystem":"editor","recordType":"api-module","id":"module:editor/js/themes/light.js","title":"themes/light","summary":"Light Theme - Clean bright interface","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/themes/light.md","moduleTitle":"themes/light","source":"editor/js/themes/light.js","import":"/editor/js/themes/light.js","sourceHash":"a9756ae07055ca2eed8cca4076e16f3f30ea481ba408abbea5825575fce94587","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/themes/light.js#0000:themeLight","exportIndex":0,"name":"themeLight","kind":"constant","signature":"themeLight","summary":"Light Theme - Clean bright interface"}
{"schemaVersion":1,"modulePath":"editor/reference/themes/matrix.md","moduleTitle":"themes/matrix","source":"editor/js/themes/matrix.js","import":"/editor/js/themes/matrix.js","sourceHash":"0d8ab2841c7b55b443961e4f96c24c2cc35452493de7dcfedf1122ae9ac715fc","subsystem":"editor","recordType":"api-module","id":"module:editor/js/themes/matrix.js","title":"themes/matrix","summary":"Matrix Theme - Hacker green aesthetic","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/themes/matrix.md","moduleTitle":"themes/matrix","source":"editor/js/themes/matrix.js","import":"/editor/js/themes/matrix.js","sourceHash":"0d8ab2841c7b55b443961e4f96c24c2cc35452493de7dcfedf1122ae9ac715fc","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/themes/matrix.js#0000:themeMatrix","exportIndex":0,"name":"themeMatrix","kind":"constant","signature":"themeMatrix","summary":"Matrix Theme - Hacker green aesthetic"}
{"schemaVersion":1,"modulePath":"editor/reference/themes/midnight.md","moduleTitle":"themes/midnight","source":"editor/js/themes/midnight.js","import":"/editor/js/themes/midnight.js","sourceHash":"1f30dcc3fd0977c841142cc18484a199f527be2adeb0d1f19c96f47b9f8318e4","subsystem":"editor","recordType":"api-module","id":"module:editor/js/themes/midnight.js","title":"themes/midnight","summary":"Midnight Blue Theme - Deep blue professional theme","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/themes/midnight.md","moduleTitle":"themes/midnight","source":"editor/js/themes/midnight.js","import":"/editor/js/themes/midnight.js","sourceHash":"1f30dcc3fd0977c841142cc18484a199f527be2adeb0d1f19c96f47b9f8318e4","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/themes/midnight.js#0000:themeMidnight","exportIndex":0,"name":"themeMidnight","kind":"constant","signature":"themeMidnight","summary":"Midnight Blue Theme - Deep blue professional theme"}
{"schemaVersion":1,"modulePath":"editor/reference/themes/monokai.md","moduleTitle":"themes/monokai","source":"editor/js/themes/monokai.js","import":"/editor/js/themes/monokai.js","sourceHash":"efbfed2e342ca71ce9ea3b3d435e9b6b70644750e328ff1ac3c55910fa94a14b","subsystem":"editor","recordType":"api-module","id":"module:editor/js/themes/monokai.js","title":"themes/monokai","summary":"Monokai Theme - Classic code editor colors","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/themes/monokai.md","moduleTitle":"themes/monokai","source":"editor/js/themes/monokai.js","import":"/editor/js/themes/monokai.js","sourceHash":"efbfed2e342ca71ce9ea3b3d435e9b6b70644750e328ff1ac3c55910fa94a14b","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/themes/monokai.js#0000:themeMonokai","exportIndex":0,"name":"themeMonokai","kind":"constant","signature":"themeMonokai","summary":"Monokai Theme - Classic code editor colors"}
{"schemaVersion":1,"modulePath":"editor/reference/themes/nord.md","moduleTitle":"themes/nord","source":"editor/js/themes/nord.js","import":"/editor/js/themes/nord.js","sourceHash":"204cad676eba278d247f54f2e06125b0e257f412eb5cc171c5f78af904e3639e","subsystem":"editor","recordType":"api-module","id":"module:editor/js/themes/nord.js","title":"themes/nord","summary":"Nord Theme - Arctic, north-bluish color palette","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/themes/nord.md","moduleTitle":"themes/nord","source":"editor/js/themes/nord.js","import":"/editor/js/themes/nord.js","sourceHash":"204cad676eba278d247f54f2e06125b0e257f412eb5cc171c5f78af904e3639e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/themes/nord.js#0000:themeNord","exportIndex":0,"name":"themeNord","kind":"constant","signature":"themeNord","summary":"Nord Theme - Arctic, north-bluish color palette"}
{"schemaVersion":1,"modulePath":"editor/reference/themes/ocean.md","moduleTitle":"themes/ocean","source":"editor/js/themes/ocean.js","import":"/editor/js/themes/ocean.js","sourceHash":"ff0fc759e25e09c31cb4c85a2b08450a5320238c21cae7e92f741ae8f9ccf65e","subsystem":"editor","recordType":"api-module","id":"module:editor/js/themes/ocean.js","title":"themes/ocean","summary":"Ocean Theme - Deep sea blues and teals","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/themes/ocean.md","moduleTitle":"themes/ocean","source":"editor/js/themes/ocean.js","import":"/editor/js/themes/ocean.js","sourceHash":"ff0fc759e25e09c31cb4c85a2b08450a5320238c21cae7e92f741ae8f9ccf65e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/themes/ocean.js#0000:themeOcean","exportIndex":0,"name":"themeOcean","kind":"constant","signature":"themeOcean","summary":"Ocean Theme - Deep sea blues and teals"}
{"schemaVersion":1,"modulePath":"editor/reference/themes/purple.md","moduleTitle":"themes/purple","source":"editor/js/themes/purple.js","import":"/editor/js/themes/purple.js","sourceHash":"4957ca0ac55c9cf68ea5e4ee50e867f258e5793098b070e4ff0f427499f84bd9","subsystem":"editor","recordType":"api-module","id":"module:editor/js/themes/purple.js","title":"themes/purple","summary":"Purple Haze Theme - Vibrant purple aesthetic","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/themes/purple.md","moduleTitle":"themes/purple","source":"editor/js/themes/purple.js","import":"/editor/js/themes/purple.js","sourceHash":"4957ca0ac55c9cf68ea5e4ee50e867f258e5793098b070e4ff0f427499f84bd9","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/themes/purple.js#0000:themePurple","exportIndex":0,"name":"themePurple","kind":"constant","signature":"themePurple","summary":"Purple Haze Theme - Vibrant purple aesthetic"}
{"schemaVersion":1,"modulePath":"editor/reference/themes/solarized.md","moduleTitle":"themes/solarized","source":"editor/js/themes/solarized.js","import":"/editor/js/themes/solarized.js","sourceHash":"cff589dc6e883e521cab2c2e24b6700282068bad183d92c31dc83fe36971814e","subsystem":"editor","recordType":"api-module","id":"module:editor/js/themes/solarized.js","title":"themes/solarized","summary":"Solarized Dark Theme - Ethan Schoonover's iconic palette","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/themes/solarized.md","moduleTitle":"themes/solarized","source":"editor/js/themes/solarized.js","import":"/editor/js/themes/solarized.js","sourceHash":"cff589dc6e883e521cab2c2e24b6700282068bad183d92c31dc83fe36971814e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/themes/solarized.js#0000:themeSolarized","exportIndex":0,"name":"themeSolarized","kind":"constant","signature":"themeSolarized","summary":"Solarized Dark Theme - Ethan Schoonover's iconic palette"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/CompressionManager.md","moduleTitle":"utils/CompressionManager","source":"editor/js/utils/CompressionManager.js","import":"/editor/js/utils/CompressionManager.js","sourceHash":"388712d64979a40361c510ee48e21baea129a5f366d7b121636fe2e29981697c","subsystem":"editor","recordType":"api-module","id":"module:editor/js/utils/CompressionManager.js","title":"utils/CompressionManager","summary":"CompressionManager - Manages background compression via WebWorker Provides async compression/decompression for timeline and undo history","exportCount":5}
{"schemaVersion":1,"modulePath":"editor/reference/utils/CompressionManager.md","moduleTitle":"utils/CompressionManager","source":"editor/js/utils/CompressionManager.js","import":"/editor/js/utils/CompressionManager.js","sourceHash":"388712d64979a40361c510ee48e21baea129a5f366d7b121636fe2e29981697c","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/CompressionManager.js#0000:initCompressionWorker","exportIndex":0,"name":"initCompressionWorker","kind":"function","signature":"initCompressionWorker()","summary":"Initialize the compression worker"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/CompressionManager.md","moduleTitle":"utils/CompressionManager","source":"editor/js/utils/CompressionManager.js","import":"/editor/js/utils/CompressionManager.js","sourceHash":"388712d64979a40361c510ee48e21baea129a5f366d7b121636fe2e29981697c","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/CompressionManager.js#0001:compressSnapshot","exportIndex":1,"name":"compressSnapshot","kind":"function","signature":"async compressSnapshot(snapshot)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/CompressionManager.md","moduleTitle":"utils/CompressionManager","source":"editor/js/utils/CompressionManager.js","import":"/editor/js/utils/CompressionManager.js","sourceHash":"388712d64979a40361c510ee48e21baea129a5f366d7b121636fe2e29981697c","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/CompressionManager.js#0002:computeDelta","exportIndex":2,"name":"computeDelta","kind":"function","signature":"async computeDelta(prev, current)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/CompressionManager.md","moduleTitle":"utils/CompressionManager","source":"editor/js/utils/CompressionManager.js","import":"/editor/js/utils/CompressionManager.js","sourceHash":"388712d64979a40361c510ee48e21baea129a5f366d7b121636fe2e29981697c","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/CompressionManager.js#0003:decompressSnapshot","exportIndex":3,"name":"decompressSnapshot","kind":"function","signature":"async decompressSnapshot(compressed)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/CompressionManager.md","moduleTitle":"utils/CompressionManager","source":"editor/js/utils/CompressionManager.js","import":"/editor/js/utils/CompressionManager.js","sourceHash":"388712d64979a40361c510ee48e21baea129a5f366d7b121636fe2e29981697c","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/CompressionManager.js#0004:estimateCompressedSize","exportIndex":4,"name":"estimateCompressedSize","kind":"function","signature":"estimateCompressedSize(data)","summary":"Get memory estimate for compressed data"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/DialogAnimations.md","moduleTitle":"utils/DialogAnimations","source":"editor/js/utils/DialogAnimations.js","import":"/editor/js/utils/DialogAnimations.js","sourceHash":"d0906c8a193d6e0eb300d1483f43a4e5a07662e4ade8beffcfd58687a2f68cc9","subsystem":"editor","recordType":"api-module","id":"module:editor/js/utils/DialogAnimations.js","title":"utils/DialogAnimations","summary":"DialogAnimations.js - Smooth open/close animations for all dialogs Provides consistent animation utilities for modals and dialogs","exportCount":5}
{"schemaVersion":1,"modulePath":"editor/reference/utils/DialogAnimations.md","moduleTitle":"utils/DialogAnimations","source":"editor/js/utils/DialogAnimations.js","import":"/editor/js/utils/DialogAnimations.js","sourceHash":"d0906c8a193d6e0eb300d1483f43a4e5a07662e4ade8beffcfd58687a2f68cc9","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/DialogAnimations.js#0000:smoothCloseDialog","exportIndex":0,"name":"smoothCloseDialog","kind":"function","signature":"smoothCloseDialog(dialog, duration = 300)","summary":"Smoothly close a dialog with fade-out animation"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/DialogAnimations.md","moduleTitle":"utils/DialogAnimations","source":"editor/js/utils/DialogAnimations.js","import":"/editor/js/utils/DialogAnimations.js","sourceHash":"d0906c8a193d6e0eb300d1483f43a4e5a07662e4ade8beffcfd58687a2f68cc9","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/DialogAnimations.js#0001:smoothCloseModal","exportIndex":1,"name":"smoothCloseModal","kind":"function","signature":"smoothCloseModal(modal, duration = 300)","summary":"Smoothly close a modal with fade-out animation"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/DialogAnimations.md","moduleTitle":"utils/DialogAnimations","source":"editor/js/utils/DialogAnimations.js","import":"/editor/js/utils/DialogAnimations.js","sourceHash":"d0906c8a193d6e0eb300d1483f43a4e5a07662e4ade8beffcfd58687a2f68cc9","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/DialogAnimations.js#0002:closeOnBackdropClick","exportIndex":2,"name":"closeOnBackdropClick","kind":"function","signature":"closeOnBackdropClick(dialog, contentSelector = '.editor-dialog-box, .modal-content, .settings-dialog')","summary":"Close dialog on backdrop click (outside content area)"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/DialogAnimations.md","moduleTitle":"utils/DialogAnimations","source":"editor/js/utils/DialogAnimations.js","import":"/editor/js/utils/DialogAnimations.js","sourceHash":"d0906c8a193d6e0eb300d1483f43a4e5a07662e4ade8beffcfd58687a2f68cc9","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/DialogAnimations.js#0003:closeOnEscape","exportIndex":3,"name":"closeOnEscape","kind":"function","signature":"closeOnEscape(dialog)","summary":"Close dialog on Escape key"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/DialogAnimations.md","moduleTitle":"utils/DialogAnimations","source":"editor/js/utils/DialogAnimations.js","import":"/editor/js/utils/DialogAnimations.js","sourceHash":"d0906c8a193d6e0eb300d1483f43a4e5a07662e4ade8beffcfd58687a2f68cc9","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/DialogAnimations.js#0004:setupDialogCloseHandlers","exportIndex":4,"name":"setupDialogCloseHandlers","kind":"function","signature":"setupDialogCloseHandlers(dialog, options = {})","summary":"Setup all standard dialog close handlers"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/FrameSpikeDetector.md","moduleTitle":"utils/FrameSpikeDetector","source":"editor/js/utils/FrameSpikeDetector.js","import":"/editor/js/utils/FrameSpikeDetector.js","sourceHash":"03e62fbfbc0a4e09fde3ba4758d9a25818a70797f8f3d69392bd60af209648f5","subsystem":"editor","recordType":"api-module","id":"module:editor/js/utils/FrameSpikeDetector.js","title":"utils/FrameSpikeDetector","summary":"FrameSpikeDetector.js - Detect and log frame time spikes Monitors frame times and logs detailed information when spikes occur, helping identify performance bottlenecks and optimization opportunities.","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/utils/FrameSpikeDetector.md","moduleTitle":"utils/FrameSpikeDetector","source":"editor/js/utils/FrameSpikeDetector.js","import":"/editor/js/utils/FrameSpikeDetector.js","sourceHash":"03e62fbfbc0a4e09fde3ba4758d9a25818a70797f8f3d69392bd60af209648f5","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/FrameSpikeDetector.js#0000:FrameSpikeDetector","exportIndex":0,"name":"FrameSpikeDetector","kind":"class","signature":"class FrameSpikeDetector","summary":"FrameSpikeDetector.js - Detect and log frame time spikes Monitors frame times and logs detailed information when spikes occur, helping identify performance bottlenecks and optimization opportunities."}
{"schemaVersion":1,"modulePath":"editor/reference/utils/FrustumCulling.md","moduleTitle":"utils/FrustumCulling","source":"editor/js/utils/FrustumCulling.js","import":"/editor/js/utils/FrustumCulling.js","sourceHash":"59f878cb600c910cdac917199b413b636fc8ef9b3315464cd7002ee0ef0c0899","subsystem":"editor","recordType":"api-module","id":"module:editor/js/utils/FrustumCulling.js","title":"utils/FrustumCulling","summary":"Extract and normalize frustum planes from a 4×4 view-projection matrix. Uses Gribb-Hartmann method (column-major matrix). Must be called once per frame before any culling tests.","exportCount":15}
{"schemaVersion":1,"modulePath":"editor/reference/utils/FrustumCulling.md","moduleTitle":"utils/FrustumCulling","source":"editor/js/utils/FrustumCulling.js","import":"/editor/js/utils/FrustumCulling.js","sourceHash":"59f878cb600c910cdac917199b413b636fc8ef9b3315464cd7002ee0ef0c0899","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/FrustumCulling.js#0000:extractFrustumPlanes","exportIndex":0,"name":"extractFrustumPlanes","kind":"function","signature":"extractFrustumPlanes(vp)","summary":"Extract and normalize frustum planes from a 4×4 view-projection matrix. Uses Gribb-Hartmann method (column-major matrix). Must be called once per frame before any culling tests."}
{"schemaVersion":1,"modulePath":"editor/reference/utils/FrustumCulling.md","moduleTitle":"utils/FrustumCulling","source":"editor/js/utils/FrustumCulling.js","import":"/editor/js/utils/FrustumCulling.js","sourceHash":"59f878cb600c910cdac917199b413b636fc8ef9b3315464cd7002ee0ef0c0899","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/FrustumCulling.js#0001:isSphereInFrustum","exportIndex":1,"name":"isSphereInFrustum","kind":"function","signature":"isSphereInFrustum(center, radius, planes)","summary":"Test if a bounding sphere is inside or intersects the frustum."}
{"schemaVersion":1,"modulePath":"editor/reference/utils/FrustumCulling.md","moduleTitle":"utils/FrustumCulling","source":"editor/js/utils/FrustumCulling.js","import":"/editor/js/utils/FrustumCulling.js","sourceHash":"59f878cb600c910cdac917199b413b636fc8ef9b3315464cd7002ee0ef0c0899","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/FrustumCulling.js#0002:isAABBInFrustum","exportIndex":2,"name":"isAABBInFrustum","kind":"function","signature":"isAABBInFrustum(minX, minY, minZ, maxX, maxY, maxZ, planes)","summary":"Test if a world-space AABB intersects the frustum. Uses the P-vertex method: for each plane pick the AABB corner most in the direction of the plane normal (the \"positive\" vertex). If that corner is behind the plane, the entire box is outside."}
{"schemaVersion":1,"modulePath":"editor/reference/utils/FrustumCulling.md","moduleTitle":"utils/FrustumCulling","source":"editor/js/utils/FrustumCulling.js","import":"/editor/js/utils/FrustumCulling.js","sourceHash":"59f878cb600c910cdac917199b413b636fc8ef9b3315464cd7002ee0ef0c0899","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/FrustumCulling.js#0003:isAABBCenterExtentsInFrustum","exportIndex":3,"name":"isAABBCenterExtentsInFrustum","kind":"function","signature":"isAABBCenterExtentsInFrustum(cx, cy, cz, ex, ey, ez, planes)","summary":"Convenience: test AABB from center + half-extents (world space). Converts to min/max and delegates."}
{"schemaVersion":1,"modulePath":"editor/reference/utils/FrustumCulling.md","moduleTitle":"utils/FrustumCulling","source":"editor/js/utils/FrustumCulling.js","import":"/editor/js/utils/FrustumCulling.js","sourceHash":"59f878cb600c910cdac917199b413b636fc8ef9b3315464cd7002ee0ef0c0899","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/FrustumCulling.js#0004:isEntityAABBVisible","exportIndex":4,"name":"isEntityAABBVisible","kind":"function","signature":"isEntityAABBVisible(entityPos, entityScale, localCenter, localExtents, planes)","summary":"High-level entity visibility test using AABB. Takes the mesh's local-space AABB center+extents, the entity's world position and scale, and produces the world-space AABB for frustum testing."}
{"schemaVersion":1,"modulePath":"editor/reference/utils/FrustumCulling.md","moduleTitle":"utils/FrustumCulling","source":"editor/js/utils/FrustumCulling.js","import":"/editor/js/utils/FrustumCulling.js","sourceHash":"59f878cb600c910cdac917199b413b636fc8ef9b3315464cd7002ee0ef0c0899","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/FrustumCulling.js#0005:isEntitySphereVisible","exportIndex":5,"name":"isEntitySphereVisible","kind":"function","signature":"isEntitySphereVisible(position, scale, baseRadius)","summary":"Legacy: entity visibility using bounding sphere (kept for broad-phase / fallback)."}
{"schemaVersion":1,"modulePath":"editor/reference/utils/FrustumCulling.md","moduleTitle":"utils/FrustumCulling","source":"editor/js/utils/FrustumCulling.js","import":"/editor/js/utils/FrustumCulling.js","sourceHash":"59f878cb600c910cdac917199b413b636fc8ef9b3315464cd7002ee0ef0c0899","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/FrustumCulling.js#0006:getCullingStats","exportIndex":6,"name":"getCullingStats","kind":"function","signature":"getCullingStats()","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/FrustumCulling.md","moduleTitle":"utils/FrustumCulling","source":"editor/js/utils/FrustumCulling.js","import":"/editor/js/utils/FrustumCulling.js","sourceHash":"59f878cb600c910cdac917199b413b636fc8ef9b3315464cd7002ee0ef0c0899","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/FrustumCulling.js#0007:resetStats","exportIndex":7,"name":"resetStats","kind":"function","signature":"resetStats()","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/FrustumCulling.md","moduleTitle":"utils/FrustumCulling","source":"editor/js/utils/FrustumCulling.js","import":"/editor/js/utils/FrustumCulling.js","sourceHash":"59f878cb600c910cdac917199b413b636fc8ef9b3315464cd7002ee0ef0c0899","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/FrustumCulling.js#0008:getFrustumPlanes","exportIndex":8,"name":"getFrustumPlanes","kind":"function","signature":"getFrustumPlanes()","summary":"Get current frustum planes (for debugging / external use)"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/FrustumCulling.md","moduleTitle":"utils/FrustumCulling","source":"editor/js/utils/FrustumCulling.js","import":"/editor/js/utils/FrustumCulling.js","sourceHash":"59f878cb600c910cdac917199b413b636fc8ef9b3315464cd7002ee0ef0c0899","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/FrustumCulling.js#0009:getFrustumCorners","exportIndex":9,"name":"getFrustumCorners","kind":"function","signature":"getFrustumCorners(invViewProjMatrix)","summary":"Calculate frustum corners in world space (for debug visualization)"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/FrustumCulling.md","moduleTitle":"utils/FrustumCulling","source":"editor/js/utils/FrustumCulling.js","import":"/editor/js/utils/FrustumCulling.js","sourceHash":"59f878cb600c910cdac917199b413b636fc8ef9b3315464cd7002ee0ef0c0899","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/FrustumCulling.js#0010:frustumContainsAABB","exportIndex":10,"name":"frustumContainsAABB","kind":"re-export","signature":"frustumContainsAABB","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/FrustumCulling.md","moduleTitle":"utils/FrustumCulling","source":"editor/js/utils/FrustumCulling.js","import":"/editor/js/utils/FrustumCulling.js","sourceHash":"59f878cb600c910cdac917199b413b636fc8ef9b3315464cd7002ee0ef0c0899","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/FrustumCulling.js#0011:frustumContainsSphere","exportIndex":11,"name":"frustumContainsSphere","kind":"re-export","signature":"frustumContainsSphere","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/FrustumCulling.md","moduleTitle":"utils/FrustumCulling","source":"editor/js/utils/FrustumCulling.js","import":"/editor/js/utils/FrustumCulling.js","sourceHash":"59f878cb600c910cdac917199b413b636fc8ef9b3315464cd7002ee0ef0c0899","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/FrustumCulling.js#0012:frustumFromMatrix","exportIndex":12,"name":"frustumFromMatrix","kind":"re-export","signature":"frustumFromMatrix","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/FrustumCulling.md","moduleTitle":"utils/FrustumCulling","source":"editor/js/utils/FrustumCulling.js","import":"/editor/js/utils/FrustumCulling.js","sourceHash":"59f878cb600c910cdac917199b413b636fc8ef9b3315464cd7002ee0ef0c0899","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/FrustumCulling.js#0013:frustumNormalizePlanes","exportIndex":13,"name":"frustumNormalizePlanes","kind":"re-export","signature":"frustumNormalizePlanes","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/FrustumCulling.md","moduleTitle":"utils/FrustumCulling","source":"editor/js/utils/FrustumCulling.js","import":"/editor/js/utils/FrustumCulling.js","sourceHash":"59f878cb600c910cdac917199b413b636fc8ef9b3315464cd7002ee0ef0c0899","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/FrustumCulling.js#0014:frustumTestAABB","exportIndex":14,"name":"frustumTestAABB","kind":"re-export","signature":"frustumTestAABB","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/GPUBufferPool.md","moduleTitle":"utils/GPUBufferPool","source":"editor/js/utils/GPUBufferPool.js","import":"/editor/js/utils/GPUBufferPool.js","sourceHash":"c611b996bb56ae4f1ca94a1f74d51baf8cd5678309f0d3340072c7dbb7172ae7","subsystem":"editor","recordType":"api-module","id":"module:editor/js/utils/GPUBufferPool.js","title":"utils/GPUBufferPool","summary":"Get a buffer from pool or create new one","exportCount":5}
{"schemaVersion":1,"modulePath":"editor/reference/utils/GPUBufferPool.md","moduleTitle":"utils/GPUBufferPool","source":"editor/js/utils/GPUBufferPool.js","import":"/editor/js/utils/GPUBufferPool.js","sourceHash":"c611b996bb56ae4f1ca94a1f74d51baf8cd5678309f0d3340072c7dbb7172ae7","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/GPUBufferPool.js#0000:getBuffer","exportIndex":0,"name":"getBuffer","kind":"function","signature":"getBuffer(device, size, usage, label = '')","summary":"Get a buffer from pool or create new one"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/GPUBufferPool.md","moduleTitle":"utils/GPUBufferPool","source":"editor/js/utils/GPUBufferPool.js","import":"/editor/js/utils/GPUBufferPool.js","sourceHash":"c611b996bb56ae4f1ca94a1f74d51baf8cd5678309f0d3340072c7dbb7172ae7","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/GPUBufferPool.js#0001:releaseBuffer","exportIndex":1,"name":"releaseBuffer","kind":"function","signature":"releaseBuffer(buffer, usage)","summary":"Return a buffer to the pool"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/GPUBufferPool.md","moduleTitle":"utils/GPUBufferPool","source":"editor/js/utils/GPUBufferPool.js","import":"/editor/js/utils/GPUBufferPool.js","sourceHash":"c611b996bb56ae4f1ca94a1f74d51baf8cd5678309f0d3340072c7dbb7172ae7","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/GPUBufferPool.js#0002:getPoolStats","exportIndex":2,"name":"getPoolStats","kind":"function","signature":"getPoolStats()","summary":"Get pool statistics"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/GPUBufferPool.md","moduleTitle":"utils/GPUBufferPool","source":"editor/js/utils/GPUBufferPool.js","import":"/editor/js/utils/GPUBufferPool.js","sourceHash":"c611b996bb56ae4f1ca94a1f74d51baf8cd5678309f0d3340072c7dbb7172ae7","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/GPUBufferPool.js#0003:clearPools","exportIndex":3,"name":"clearPools","kind":"function","signature":"clearPools()","summary":"Clear all pools and destroy buffers"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/GPUBufferPool.md","moduleTitle":"utils/GPUBufferPool","source":"editor/js/utils/GPUBufferPool.js","import":"/editor/js/utils/GPUBufferPool.js","sourceHash":"c611b996bb56ae4f1ca94a1f74d51baf8cd5678309f0d3340072c7dbb7172ae7","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/GPUBufferPool.js#0004:trimPools","exportIndex":4,"name":"trimPools","kind":"function","signature":"trimPools(keepCount = 2)","summary":"Trim pools to reduce memory"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/InterpolationCurves.md","moduleTitle":"utils/InterpolationCurves","source":"editor/js/utils/InterpolationCurves.js","import":"/editor/js/utils/InterpolationCurves.js","sourceHash":"15f592eb2709edb8548608bb2cde818fdadf4af39a722a7c9be0d46f872db374","subsystem":"editor","recordType":"api-module","id":"module:editor/js/utils/InterpolationCurves.js","title":"utils/InterpolationCurves","summary":"Animation track - keyframe-based animation","exportCount":42}
{"schemaVersion":1,"modulePath":"editor/reference/utils/InterpolationCurves.md","moduleTitle":"utils/InterpolationCurves","source":"editor/js/utils/InterpolationCurves.js","import":"/editor/js/utils/InterpolationCurves.js","sourceHash":"15f592eb2709edb8548608bb2cde818fdadf4af39a722a7c9be0d46f872db374","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/InterpolationCurves.js#0000:AnimationTrack","exportIndex":0,"name":"AnimationTrack","kind":"class","signature":"class AnimationTrack","summary":"Animation track - keyframe-based animation"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/InterpolationCurves.md","moduleTitle":"utils/InterpolationCurves","source":"editor/js/utils/InterpolationCurves.js","import":"/editor/js/utils/InterpolationCurves.js","sourceHash":"15f592eb2709edb8548608bb2cde818fdadf4af39a722a7c9be0d46f872db374","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/InterpolationCurves.js#0001:Tween","exportIndex":1,"name":"Tween","kind":"class","signature":"class Tween","summary":"Tween - simple value animation"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/InterpolationCurves.md","moduleTitle":"utils/InterpolationCurves","source":"editor/js/utils/InterpolationCurves.js","import":"/editor/js/utils/InterpolationCurves.js","sourceHash":"15f592eb2709edb8548608bb2cde818fdadf4af39a722a7c9be0d46f872db374","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/InterpolationCurves.js#0002:smoothstep","exportIndex":2,"name":"smoothstep","kind":"function","signature":"smoothstep(t)","summary":"Smoothstep interpolation (Hermite)"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/InterpolationCurves.md","moduleTitle":"utils/InterpolationCurves","source":"editor/js/utils/InterpolationCurves.js","import":"/editor/js/utils/InterpolationCurves.js","sourceHash":"15f592eb2709edb8548608bb2cde818fdadf4af39a722a7c9be0d46f872db374","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/InterpolationCurves.js#0003:smootherstep","exportIndex":3,"name":"smootherstep","kind":"function","signature":"smootherstep(t)","summary":"Smootherstep (Ken Perlin's improved version)"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/InterpolationCurves.md","moduleTitle":"utils/InterpolationCurves","source":"editor/js/utils/InterpolationCurves.js","import":"/editor/js/utils/InterpolationCurves.js","sourceHash":"15f592eb2709edb8548608bb2cde818fdadf4af39a722a7c9be0d46f872db374","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/InterpolationCurves.js#0004:springInterpolation","exportIndex":4,"name":"springInterpolation","kind":"function","signature":"springInterpolation(t, stiffness = 100, damping = 10)","summary":"Spring interpolation with damping"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/InterpolationCurves.md","moduleTitle":"utils/InterpolationCurves","source":"editor/js/utils/InterpolationCurves.js","import":"/editor/js/utils/InterpolationCurves.js","sourceHash":"15f592eb2709edb8548608bb2cde818fdadf4af39a722a7c9be0d46f872db374","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/InterpolationCurves.js#0005:bounceInterpolation","exportIndex":5,"name":"bounceInterpolation","kind":"function","signature":"bounceInterpolation(t)","summary":"Bounce interpolation"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/InterpolationCurves.md","moduleTitle":"utils/InterpolationCurves","source":"editor/js/utils/InterpolationCurves.js","import":"/editor/js/utils/InterpolationCurves.js","sourceHash":"15f592eb2709edb8548608bb2cde818fdadf4af39a722a7c9be0d46f872db374","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/InterpolationCurves.js#0006:lerp","exportIndex":6,"name":"lerp","kind":"function","signature":"lerp(from, to, t, easing = 'linear')","summary":"Interpolate between two values with easing"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/InterpolationCurves.md","moduleTitle":"utils/InterpolationCurves","source":"editor/js/utils/InterpolationCurves.js","import":"/editor/js/utils/InterpolationCurves.js","sourceHash":"15f592eb2709edb8548608bb2cde818fdadf4af39a722a7c9be0d46f872db374","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/InterpolationCurves.js#0007:lerpVec3","exportIndex":7,"name":"lerpVec3","kind":"function","signature":"lerpVec3(from, to, t, easing = 'linear')","summary":"Interpolate between two vec3s with easing"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/InterpolationCurves.md","moduleTitle":"utils/InterpolationCurves","source":"editor/js/utils/InterpolationCurves.js","import":"/editor/js/utils/InterpolationCurves.js","sourceHash":"15f592eb2709edb8548608bb2cde818fdadf4af39a722a7c9be0d46f872db374","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/InterpolationCurves.js#0008:slerp","exportIndex":8,"name":"slerp","kind":"function","signature":"slerp(q1, q2, t, easing = 'linear')","summary":"Spherical linear interpolation for quaternions (SLERP)"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/InterpolationCurves.md","moduleTitle":"utils/InterpolationCurves","source":"editor/js/utils/InterpolationCurves.js","import":"/editor/js/utils/InterpolationCurves.js","sourceHash":"15f592eb2709edb8548608bb2cde818fdadf4af39a722a7c9be0d46f872db374","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/InterpolationCurves.js#0009:catmullRom","exportIndex":9,"name":"catmullRom","kind":"function","signature":"catmullRom(points, t, closed = false)","summary":"Catmull-Rom spline interpolation (passes through all control points)"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/InterpolationCurves.md","moduleTitle":"utils/InterpolationCurves","source":"editor/js/utils/InterpolationCurves.js","import":"/editor/js/utils/InterpolationCurves.js","sourceHash":"15f592eb2709edb8548608bb2cde818fdadf4af39a722a7c9be0d46f872db374","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/InterpolationCurves.js#0010:bSpline","exportIndex":10,"name":"bSpline","kind":"function","signature":"bSpline(points, t, degree = 3)","summary":"B-Spline interpolation (smooth curve, doesn't pass through control points)"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/InterpolationCurves.md","moduleTitle":"utils/InterpolationCurves","source":"editor/js/utils/InterpolationCurves.js","import":"/editor/js/utils/InterpolationCurves.js","sourceHash":"15f592eb2709edb8548608bb2cde818fdadf4af39a722a7c9be0d46f872db374","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/InterpolationCurves.js#0011:hermite","exportIndex":11,"name":"hermite","kind":"function","signature":"hermite(p0, m0, p1, m1, t)","summary":"Hermite spline interpolation"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/InterpolationCurves.md","moduleTitle":"utils/InterpolationCurves","source":"editor/js/utils/InterpolationCurves.js","import":"/editor/js/utils/InterpolationCurves.js","sourceHash":"15f592eb2709edb8548608bb2cde818fdadf4af39a722a7c9be0d46f872db374","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/InterpolationCurves.js#0012:EASING_FUNCTIONS","exportIndex":12,"name":"EASING_FUNCTIONS","kind":"constant","signature":"EASING_FUNCTIONS","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/InterpolationCurves.md","moduleTitle":"utils/InterpolationCurves","source":"editor/js/utils/InterpolationCurves.js","import":"/editor/js/utils/InterpolationCurves.js","sourceHash":"15f592eb2709edb8548608bb2cde818fdadf4af39a722a7c9be0d46f872db374","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/InterpolationCurves.js#0013:CubicBezier","exportIndex":13,"name":"CubicBezier","kind":"re-export","signature":"CubicBezier","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/InterpolationCurves.md","moduleTitle":"utils/InterpolationCurves","source":"editor/js/utils/InterpolationCurves.js","import":"/editor/js/utils/InterpolationCurves.js","sourceHash":"15f592eb2709edb8548608bb2cde818fdadf4af39a722a7c9be0d46f872db374","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/InterpolationCurves.js#0014:easeInBack","exportIndex":14,"name":"easeInBack","kind":"re-export","signature":"easeInBack","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/InterpolationCurves.md","moduleTitle":"utils/InterpolationCurves","source":"editor/js/utils/InterpolationCurves.js","import":"/editor/js/utils/InterpolationCurves.js","sourceHash":"15f592eb2709edb8548608bb2cde818fdadf4af39a722a7c9be0d46f872db374","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/InterpolationCurves.js#0015:easeInCirc","exportIndex":15,"name":"easeInCirc","kind":"re-export","signature":"easeInCirc","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/InterpolationCurves.md","moduleTitle":"utils/InterpolationCurves","source":"editor/js/utils/InterpolationCurves.js","import":"/editor/js/utils/InterpolationCurves.js","sourceHash":"15f592eb2709edb8548608bb2cde818fdadf4af39a722a7c9be0d46f872db374","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/InterpolationCurves.js#0016:easeInCubic","exportIndex":16,"name":"easeInCubic","kind":"re-export","signature":"easeInCubic","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/InterpolationCurves.md","moduleTitle":"utils/InterpolationCurves","source":"editor/js/utils/InterpolationCurves.js","import":"/editor/js/utils/InterpolationCurves.js","sourceHash":"15f592eb2709edb8548608bb2cde818fdadf4af39a722a7c9be0d46f872db374","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/InterpolationCurves.js#0017:easeInElastic","exportIndex":17,"name":"easeInElastic","kind":"re-export","signature":"easeInElastic","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/InterpolationCurves.md","moduleTitle":"utils/InterpolationCurves","source":"editor/js/utils/InterpolationCurves.js","import":"/editor/js/utils/InterpolationCurves.js","sourceHash":"15f592eb2709edb8548608bb2cde818fdadf4af39a722a7c9be0d46f872db374","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/InterpolationCurves.js#0018:easeInExpo","exportIndex":18,"name":"easeInExpo","kind":"re-export","signature":"easeInExpo","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/InterpolationCurves.md","moduleTitle":"utils/InterpolationCurves","source":"editor/js/utils/InterpolationCurves.js","import":"/editor/js/utils/InterpolationCurves.js","sourceHash":"15f592eb2709edb8548608bb2cde818fdadf4af39a722a7c9be0d46f872db374","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/InterpolationCurves.js#0019:easeInOutBack","exportIndex":19,"name":"easeInOutBack","kind":"re-export","signature":"easeInOutBack","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/InterpolationCurves.md","moduleTitle":"utils/InterpolationCurves","source":"editor/js/utils/InterpolationCurves.js","import":"/editor/js/utils/InterpolationCurves.js","sourceHash":"15f592eb2709edb8548608bb2cde818fdadf4af39a722a7c9be0d46f872db374","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/InterpolationCurves.js#0020:easeInOutCirc","exportIndex":20,"name":"easeInOutCirc","kind":"re-export","signature":"easeInOutCirc","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/InterpolationCurves.md","moduleTitle":"utils/InterpolationCurves","source":"editor/js/utils/InterpolationCurves.js","import":"/editor/js/utils/InterpolationCurves.js","sourceHash":"15f592eb2709edb8548608bb2cde818fdadf4af39a722a7c9be0d46f872db374","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/InterpolationCurves.js#0021:easeInOutCubic","exportIndex":21,"name":"easeInOutCubic","kind":"re-export","signature":"easeInOutCubic","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/InterpolationCurves.md","moduleTitle":"utils/InterpolationCurves","source":"editor/js/utils/InterpolationCurves.js","import":"/editor/js/utils/InterpolationCurves.js","sourceHash":"15f592eb2709edb8548608bb2cde818fdadf4af39a722a7c9be0d46f872db374","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/InterpolationCurves.js#0022:easeInOutElastic","exportIndex":22,"name":"easeInOutElastic","kind":"re-export","signature":"easeInOutElastic","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/InterpolationCurves.md","moduleTitle":"utils/InterpolationCurves","source":"editor/js/utils/InterpolationCurves.js","import":"/editor/js/utils/InterpolationCurves.js","sourceHash":"15f592eb2709edb8548608bb2cde818fdadf4af39a722a7c9be0d46f872db374","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/InterpolationCurves.js#0023:easeInOutExpo","exportIndex":23,"name":"easeInOutExpo","kind":"re-export","signature":"easeInOutExpo","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/InterpolationCurves.md","moduleTitle":"utils/InterpolationCurves","source":"editor/js/utils/InterpolationCurves.js","import":"/editor/js/utils/InterpolationCurves.js","sourceHash":"15f592eb2709edb8548608bb2cde818fdadf4af39a722a7c9be0d46f872db374","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/InterpolationCurves.js#0024:easeInOutQuad","exportIndex":24,"name":"easeInOutQuad","kind":"re-export","signature":"easeInOutQuad","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/InterpolationCurves.md","moduleTitle":"utils/InterpolationCurves","source":"editor/js/utils/InterpolationCurves.js","import":"/editor/js/utils/InterpolationCurves.js","sourceHash":"15f592eb2709edb8548608bb2cde818fdadf4af39a722a7c9be0d46f872db374","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/InterpolationCurves.js#0025:easeInOutQuart","exportIndex":25,"name":"easeInOutQuart","kind":"re-export","signature":"easeInOutQuart","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/InterpolationCurves.md","moduleTitle":"utils/InterpolationCurves","source":"editor/js/utils/InterpolationCurves.js","import":"/editor/js/utils/InterpolationCurves.js","sourceHash":"15f592eb2709edb8548608bb2cde818fdadf4af39a722a7c9be0d46f872db374","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/InterpolationCurves.js#0026:easeInOutQuint","exportIndex":26,"name":"easeInOutQuint","kind":"re-export","signature":"easeInOutQuint","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/InterpolationCurves.md","moduleTitle":"utils/InterpolationCurves","source":"editor/js/utils/InterpolationCurves.js","import":"/editor/js/utils/InterpolationCurves.js","sourceHash":"15f592eb2709edb8548608bb2cde818fdadf4af39a722a7c9be0d46f872db374","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/InterpolationCurves.js#0027:easeInOutSine","exportIndex":27,"name":"easeInOutSine","kind":"re-export","signature":"easeInOutSine","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/InterpolationCurves.md","moduleTitle":"utils/InterpolationCurves","source":"editor/js/utils/InterpolationCurves.js","import":"/editor/js/utils/InterpolationCurves.js","sourceHash":"15f592eb2709edb8548608bb2cde818fdadf4af39a722a7c9be0d46f872db374","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/InterpolationCurves.js#0028:easeInQuad","exportIndex":28,"name":"easeInQuad","kind":"re-export","signature":"easeInQuad","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/InterpolationCurves.md","moduleTitle":"utils/InterpolationCurves","source":"editor/js/utils/InterpolationCurves.js","import":"/editor/js/utils/InterpolationCurves.js","sourceHash":"15f592eb2709edb8548608bb2cde818fdadf4af39a722a7c9be0d46f872db374","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/InterpolationCurves.js#0029:easeInQuart","exportIndex":29,"name":"easeInQuart","kind":"re-export","signature":"easeInQuart","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/InterpolationCurves.md","moduleTitle":"utils/InterpolationCurves","source":"editor/js/utils/InterpolationCurves.js","import":"/editor/js/utils/InterpolationCurves.js","sourceHash":"15f592eb2709edb8548608bb2cde818fdadf4af39a722a7c9be0d46f872db374","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/InterpolationCurves.js#0030:easeInQuint","exportIndex":30,"name":"easeInQuint","kind":"re-export","signature":"easeInQuint","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/InterpolationCurves.md","moduleTitle":"utils/InterpolationCurves","source":"editor/js/utils/InterpolationCurves.js","import":"/editor/js/utils/InterpolationCurves.js","sourceHash":"15f592eb2709edb8548608bb2cde818fdadf4af39a722a7c9be0d46f872db374","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/InterpolationCurves.js#0031:easeInSine","exportIndex":31,"name":"easeInSine","kind":"re-export","signature":"easeInSine","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/InterpolationCurves.md","moduleTitle":"utils/InterpolationCurves","source":"editor/js/utils/InterpolationCurves.js","import":"/editor/js/utils/InterpolationCurves.js","sourceHash":"15f592eb2709edb8548608bb2cde818fdadf4af39a722a7c9be0d46f872db374","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/InterpolationCurves.js#0032:easeLinear","exportIndex":32,"name":"easeLinear","kind":"re-export","signature":"easeLinear","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/InterpolationCurves.md","moduleTitle":"utils/InterpolationCurves","source":"editor/js/utils/InterpolationCurves.js","import":"/editor/js/utils/InterpolationCurves.js","sourceHash":"15f592eb2709edb8548608bb2cde818fdadf4af39a722a7c9be0d46f872db374","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/InterpolationCurves.js#0033:easeOutBack","exportIndex":33,"name":"easeOutBack","kind":"re-export","signature":"easeOutBack","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/InterpolationCurves.md","moduleTitle":"utils/InterpolationCurves","source":"editor/js/utils/InterpolationCurves.js","import":"/editor/js/utils/InterpolationCurves.js","sourceHash":"15f592eb2709edb8548608bb2cde818fdadf4af39a722a7c9be0d46f872db374","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/InterpolationCurves.js#0034:easeOutCirc","exportIndex":34,"name":"easeOutCirc","kind":"re-export","signature":"easeOutCirc","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/InterpolationCurves.md","moduleTitle":"utils/InterpolationCurves","source":"editor/js/utils/InterpolationCurves.js","import":"/editor/js/utils/InterpolationCurves.js","sourceHash":"15f592eb2709edb8548608bb2cde818fdadf4af39a722a7c9be0d46f872db374","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/InterpolationCurves.js#0035:easeOutCubic","exportIndex":35,"name":"easeOutCubic","kind":"re-export","signature":"easeOutCubic","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/InterpolationCurves.md","moduleTitle":"utils/InterpolationCurves","source":"editor/js/utils/InterpolationCurves.js","import":"/editor/js/utils/InterpolationCurves.js","sourceHash":"15f592eb2709edb8548608bb2cde818fdadf4af39a722a7c9be0d46f872db374","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/InterpolationCurves.js#0036:easeOutElastic","exportIndex":36,"name":"easeOutElastic","kind":"re-export","signature":"easeOutElastic","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/InterpolationCurves.md","moduleTitle":"utils/InterpolationCurves","source":"editor/js/utils/InterpolationCurves.js","import":"/editor/js/utils/InterpolationCurves.js","sourceHash":"15f592eb2709edb8548608bb2cde818fdadf4af39a722a7c9be0d46f872db374","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/InterpolationCurves.js#0037:easeOutExpo","exportIndex":37,"name":"easeOutExpo","kind":"re-export","signature":"easeOutExpo","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/InterpolationCurves.md","moduleTitle":"utils/InterpolationCurves","source":"editor/js/utils/InterpolationCurves.js","import":"/editor/js/utils/InterpolationCurves.js","sourceHash":"15f592eb2709edb8548608bb2cde818fdadf4af39a722a7c9be0d46f872db374","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/InterpolationCurves.js#0038:easeOutQuad","exportIndex":38,"name":"easeOutQuad","kind":"re-export","signature":"easeOutQuad","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/InterpolationCurves.md","moduleTitle":"utils/InterpolationCurves","source":"editor/js/utils/InterpolationCurves.js","import":"/editor/js/utils/InterpolationCurves.js","sourceHash":"15f592eb2709edb8548608bb2cde818fdadf4af39a722a7c9be0d46f872db374","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/InterpolationCurves.js#0039:easeOutQuart","exportIndex":39,"name":"easeOutQuart","kind":"re-export","signature":"easeOutQuart","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/InterpolationCurves.md","moduleTitle":"utils/InterpolationCurves","source":"editor/js/utils/InterpolationCurves.js","import":"/editor/js/utils/InterpolationCurves.js","sourceHash":"15f592eb2709edb8548608bb2cde818fdadf4af39a722a7c9be0d46f872db374","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/InterpolationCurves.js#0040:easeOutQuint","exportIndex":40,"name":"easeOutQuint","kind":"re-export","signature":"easeOutQuint","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/InterpolationCurves.md","moduleTitle":"utils/InterpolationCurves","source":"editor/js/utils/InterpolationCurves.js","import":"/editor/js/utils/InterpolationCurves.js","sourceHash":"15f592eb2709edb8548608bb2cde818fdadf4af39a722a7c9be0d46f872db374","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/InterpolationCurves.js#0041:easeOutSine","exportIndex":41,"name":"easeOutSine","kind":"re-export","signature":"easeOutSine","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/MemoryIntegration.md","moduleTitle":"utils/MemoryIntegration","source":"editor/js/utils/MemoryIntegration.js","import":"/editor/js/utils/MemoryIntegration.js","sourceHash":"cd2fe6cdd7b0ed3a6891d326f9d5135313dc8899ec9a35c01def8ffd8f607e7d","subsystem":"editor","recordType":"api-module","id":"module:editor/js/utils/MemoryIntegration.js","title":"utils/MemoryIntegration","summary":"MemoryIntegration.js - Wires up off-heap memory to editor/engine systems Integrates OffHeapMemoryManager with: - Particle snapshot system (large frame buffers → WASM/Worker) - Editor history (old undo entries → IDB) - Asset cache (loaded assets → Worker memory) - Profiler timeline (frame history → off-heap)","exportCount":14}
{"schemaVersion":1,"modulePath":"editor/reference/utils/MemoryIntegration.md","moduleTitle":"utils/MemoryIntegration","source":"editor/js/utils/MemoryIntegration.js","import":"/editor/js/utils/MemoryIntegration.js","sourceHash":"cd2fe6cdd7b0ed3a6891d326f9d5135313dc8899ec9a35c01def8ffd8f607e7d","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/MemoryIntegration.js#0000:initMemoryIntegration","exportIndex":0,"name":"initMemoryIntegration","kind":"function","signature":"async initMemoryIntegration(gpuDevice = null)","summary":"Initialize memory integration"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/MemoryIntegration.md","moduleTitle":"utils/MemoryIntegration","source":"editor/js/utils/MemoryIntegration.js","import":"/editor/js/utils/MemoryIntegration.js","sourceHash":"cd2fe6cdd7b0ed3a6891d326f9d5135313dc8899ec9a35c01def8ffd8f607e7d","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/MemoryIntegration.js#0001:getMemoryPressure","exportIndex":1,"name":"getMemoryPressure","kind":"function","signature":"getMemoryPressure()","summary":"Get current memory pressure (0-1)"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/MemoryIntegration.md","moduleTitle":"utils/MemoryIntegration","source":"editor/js/utils/MemoryIntegration.js","import":"/editor/js/utils/MemoryIntegration.js","sourceHash":"cd2fe6cdd7b0ed3a6891d326f9d5135313dc8899ec9a35c01def8ffd8f607e7d","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/MemoryIntegration.js#0002:shouldOffload","exportIndex":2,"name":"shouldOffload","kind":"function","signature":"shouldOffload()","summary":"Check if we should offload to off-heap storage"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/MemoryIntegration.md","moduleTitle":"utils/MemoryIntegration","source":"editor/js/utils/MemoryIntegration.js","import":"/editor/js/utils/MemoryIntegration.js","sourceHash":"cd2fe6cdd7b0ed3a6891d326f9d5135313dc8899ec9a35c01def8ffd8f607e7d","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/MemoryIntegration.js#0003:storeParticleFrame","exportIndex":3,"name":"storeParticleFrame","kind":"function","signature":"async storeParticleFrame(frameIndex, frameData)","summary":"Store particle frame in off-heap memory Large frames (>100KB) go to worker memory"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/MemoryIntegration.md","moduleTitle":"utils/MemoryIntegration","source":"editor/js/utils/MemoryIntegration.js","import":"/editor/js/utils/MemoryIntegration.js","sourceHash":"cd2fe6cdd7b0ed3a6891d326f9d5135313dc8899ec9a35c01def8ffd8f607e7d","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/MemoryIntegration.js#0004:retrieveParticleFrame","exportIndex":4,"name":"retrieveParticleFrame","kind":"function","signature":"async retrieveParticleFrame(frameIndex)","summary":"Retrieve particle frame from off-heap storage"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/MemoryIntegration.md","moduleTitle":"utils/MemoryIntegration","source":"editor/js/utils/MemoryIntegration.js","import":"/editor/js/utils/MemoryIntegration.js","sourceHash":"cd2fe6cdd7b0ed3a6891d326f9d5135313dc8899ec9a35c01def8ffd8f607e7d","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/MemoryIntegration.js#0005:freeParticleFrame","exportIndex":5,"name":"freeParticleFrame","kind":"function","signature":"async freeParticleFrame(frameIndex)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/MemoryIntegration.md","moduleTitle":"utils/MemoryIntegration","source":"editor/js/utils/MemoryIntegration.js","import":"/editor/js/utils/MemoryIntegration.js","sourceHash":"cd2fe6cdd7b0ed3a6891d326f9d5135313dc8899ec9a35c01def8ffd8f607e7d","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/MemoryIntegration.js#0006:archiveHistoryEntry","exportIndex":6,"name":"archiveHistoryEntry","kind":"function","signature":"async archiveHistoryEntry(index, entry)","summary":"Store old history entry to IDB when memory pressure is high"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/MemoryIntegration.md","moduleTitle":"utils/MemoryIntegration","source":"editor/js/utils/MemoryIntegration.js","import":"/editor/js/utils/MemoryIntegration.js","sourceHash":"cd2fe6cdd7b0ed3a6891d326f9d5135313dc8899ec9a35c01def8ffd8f607e7d","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/MemoryIntegration.js#0007:retrieveHistoryEntry","exportIndex":7,"name":"retrieveHistoryEntry","kind":"function","signature":"async retrieveHistoryEntry(index)","summary":"Retrieve archived history entry from IDB"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/MemoryIntegration.md","moduleTitle":"utils/MemoryIntegration","source":"editor/js/utils/MemoryIntegration.js","import":"/editor/js/utils/MemoryIntegration.js","sourceHash":"cd2fe6cdd7b0ed3a6891d326f9d5135313dc8899ec9a35c01def8ffd8f607e7d","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/MemoryIntegration.js#0008:cacheAsset","exportIndex":8,"name":"cacheAsset","kind":"function","signature":"async cacheAsset(uuid, data)","summary":"Store large asset in worker memory"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/MemoryIntegration.md","moduleTitle":"utils/MemoryIntegration","source":"editor/js/utils/MemoryIntegration.js","import":"/editor/js/utils/MemoryIntegration.js","sourceHash":"cd2fe6cdd7b0ed3a6891d326f9d5135313dc8899ec9a35c01def8ffd8f607e7d","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/MemoryIntegration.js#0009:retrieveCachedAsset","exportIndex":9,"name":"retrieveCachedAsset","kind":"function","signature":"async retrieveCachedAsset(uuid, asText = false)","summary":"Retrieve cached asset from worker memory"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/MemoryIntegration.md","moduleTitle":"utils/MemoryIntegration","source":"editor/js/utils/MemoryIntegration.js","import":"/editor/js/utils/MemoryIntegration.js","sourceHash":"cd2fe6cdd7b0ed3a6891d326f9d5135313dc8899ec9a35c01def8ffd8f607e7d","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/MemoryIntegration.js#0010:storeProfilerFrames","exportIndex":10,"name":"storeProfilerFrames","kind":"function","signature":"storeProfilerFrames(frames)","summary":"Store profiler frame batch in WASM memory"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/MemoryIntegration.md","moduleTitle":"utils/MemoryIntegration","source":"editor/js/utils/MemoryIntegration.js","import":"/editor/js/utils/MemoryIntegration.js","sourceHash":"cd2fe6cdd7b0ed3a6891d326f9d5135313dc8899ec9a35c01def8ffd8f607e7d","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/MemoryIntegration.js#0011:getMemoryStats","exportIndex":11,"name":"getMemoryStats","kind":"function","signature":"async getMemoryStats()","summary":"Get comprehensive memory stats"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/MemoryIntegration.md","moduleTitle":"utils/MemoryIntegration","source":"editor/js/utils/MemoryIntegration.js","import":"/editor/js/utils/MemoryIntegration.js","sourceHash":"cd2fe6cdd7b0ed3a6891d326f9d5135313dc8899ec9a35c01def8ffd8f607e7d","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/MemoryIntegration.js#0012:formatMemoryForProfiler","exportIndex":12,"name":"formatMemoryForProfiler","kind":"function","signature":"formatMemoryForProfiler(stats)","summary":"Format memory stats for profiler display"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/MemoryIntegration.md","moduleTitle":"utils/MemoryIntegration","source":"editor/js/utils/MemoryIntegration.js","import":"/editor/js/utils/MemoryIntegration.js","sourceHash":"cd2fe6cdd7b0ed3a6891d326f9d5135313dc8899ec9a35c01def8ffd8f607e7d","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/MemoryIntegration.js#0013:getManager","exportIndex":13,"name":"getManager","kind":"function","signature":"getManager()","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/ObjectPool.md","moduleTitle":"utils/ObjectPool","source":"editor/js/utils/ObjectPool.js","import":"/editor/js/utils/ObjectPool.js","sourceHash":"4b5a94b58d6822b5d0b9a6b7cf858c5cf84ca8f1af947f93706d5d1b750ef984","subsystem":"editor","recordType":"api-module","id":"module:editor/js/utils/ObjectPool.js","title":"utils/ObjectPool","summary":"Get a Float32Array of specified size from pool","exportCount":15}
{"schemaVersion":1,"modulePath":"editor/reference/utils/ObjectPool.md","moduleTitle":"utils/ObjectPool","source":"editor/js/utils/ObjectPool.js","import":"/editor/js/utils/ObjectPool.js","sourceHash":"4b5a94b58d6822b5d0b9a6b7cf858c5cf84ca8f1af947f93706d5d1b750ef984","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/ObjectPool.js#0000:getFloat32Array","exportIndex":0,"name":"getFloat32Array","kind":"function","signature":"getFloat32Array(size)","summary":"Get a Float32Array of specified size from pool"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/ObjectPool.md","moduleTitle":"utils/ObjectPool","source":"editor/js/utils/ObjectPool.js","import":"/editor/js/utils/ObjectPool.js","sourceHash":"4b5a94b58d6822b5d0b9a6b7cf858c5cf84ca8f1af947f93706d5d1b750ef984","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/ObjectPool.js#0001:releaseFloat32Array","exportIndex":1,"name":"releaseFloat32Array","kind":"function","signature":"releaseFloat32Array(arr)","summary":"Return a Float32Array to the pool"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/ObjectPool.md","moduleTitle":"utils/ObjectPool","source":"editor/js/utils/ObjectPool.js","import":"/editor/js/utils/ObjectPool.js","sourceHash":"4b5a94b58d6822b5d0b9a6b7cf858c5cf84ca8f1af947f93706d5d1b750ef984","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/ObjectPool.js#0002:getArray","exportIndex":2,"name":"getArray","kind":"function","signature":"getArray()","summary":"Get a generic array from pool"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/ObjectPool.md","moduleTitle":"utils/ObjectPool","source":"editor/js/utils/ObjectPool.js","import":"/editor/js/utils/ObjectPool.js","sourceHash":"4b5a94b58d6822b5d0b9a6b7cf858c5cf84ca8f1af947f93706d5d1b750ef984","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/ObjectPool.js#0003:releaseArray","exportIndex":3,"name":"releaseArray","kind":"function","signature":"releaseArray(arr)","summary":"Return a generic array to the pool"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/ObjectPool.md","moduleTitle":"utils/ObjectPool","source":"editor/js/utils/ObjectPool.js","import":"/editor/js/utils/ObjectPool.js","sourceHash":"4b5a94b58d6822b5d0b9a6b7cf858c5cf84ca8f1af947f93706d5d1b750ef984","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/ObjectPool.js#0004:getVec3","exportIndex":4,"name":"getVec3","kind":"function","signature":"getVec3(x = 0, y = 0, z = 0)","summary":"Get a vec3 [x, y, z] from pool"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/ObjectPool.md","moduleTitle":"utils/ObjectPool","source":"editor/js/utils/ObjectPool.js","import":"/editor/js/utils/ObjectPool.js","sourceHash":"4b5a94b58d6822b5d0b9a6b7cf858c5cf84ca8f1af947f93706d5d1b750ef984","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/ObjectPool.js#0005:releaseVec3","exportIndex":5,"name":"releaseVec3","kind":"function","signature":"releaseVec3(v)","summary":"Return a vec3 to pool"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/ObjectPool.md","moduleTitle":"utils/ObjectPool","source":"editor/js/utils/ObjectPool.js","import":"/editor/js/utils/ObjectPool.js","sourceHash":"4b5a94b58d6822b5d0b9a6b7cf858c5cf84ca8f1af947f93706d5d1b750ef984","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/ObjectPool.js#0006:getVec4","exportIndex":6,"name":"getVec4","kind":"function","signature":"getVec4(x = 0, y = 0, z = 0, w = 1)","summary":"Get a vec4 [x, y, z, w] from pool"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/ObjectPool.md","moduleTitle":"utils/ObjectPool","source":"editor/js/utils/ObjectPool.js","import":"/editor/js/utils/ObjectPool.js","sourceHash":"4b5a94b58d6822b5d0b9a6b7cf858c5cf84ca8f1af947f93706d5d1b750ef984","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/ObjectPool.js#0007:releaseVec4","exportIndex":7,"name":"releaseVec4","kind":"function","signature":"releaseVec4(v)","summary":"Return a vec4 to pool"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/ObjectPool.md","moduleTitle":"utils/ObjectPool","source":"editor/js/utils/ObjectPool.js","import":"/editor/js/utils/ObjectPool.js","sourceHash":"4b5a94b58d6822b5d0b9a6b7cf858c5cf84ca8f1af947f93706d5d1b750ef984","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/ObjectPool.js#0008:getMat4","exportIndex":8,"name":"getMat4","kind":"function","signature":"getMat4()","summary":"Get a mat4 (16 floats) from pool"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/ObjectPool.md","moduleTitle":"utils/ObjectPool","source":"editor/js/utils/ObjectPool.js","import":"/editor/js/utils/ObjectPool.js","sourceHash":"4b5a94b58d6822b5d0b9a6b7cf858c5cf84ca8f1af947f93706d5d1b750ef984","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/ObjectPool.js#0009:releaseMat4","exportIndex":9,"name":"releaseMat4","kind":"function","signature":"releaseMat4(m)","summary":"Return a mat4 to pool"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/ObjectPool.md","moduleTitle":"utils/ObjectPool","source":"editor/js/utils/ObjectPool.js","import":"/editor/js/utils/ObjectPool.js","sourceHash":"4b5a94b58d6822b5d0b9a6b7cf858c5cf84ca8f1af947f93706d5d1b750ef984","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/ObjectPool.js#0010:getPoolStats","exportIndex":10,"name":"getPoolStats","kind":"function","signature":"getPoolStats()","summary":"Get pool statistics"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/ObjectPool.md","moduleTitle":"utils/ObjectPool","source":"editor/js/utils/ObjectPool.js","import":"/editor/js/utils/ObjectPool.js","sourceHash":"4b5a94b58d6822b5d0b9a6b7cf858c5cf84ca8f1af947f93706d5d1b750ef984","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/ObjectPool.js#0011:clearPools","exportIndex":11,"name":"clearPools","kind":"function","signature":"clearPools()","summary":"Clear all pools (for memory pressure situations)"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/ObjectPool.md","moduleTitle":"utils/ObjectPool","source":"editor/js/utils/ObjectPool.js","import":"/editor/js/utils/ObjectPool.js","sourceHash":"4b5a94b58d6822b5d0b9a6b7cf858c5cf84ca8f1af947f93706d5d1b750ef984","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/ObjectPool.js#0012:trimPools","exportIndex":12,"name":"trimPools","kind":"function","signature":"trimPools(keepRatio = 0.5)","summary":"Trim pools to reduce memory (keep some for reuse)"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/ObjectPool.md","moduleTitle":"utils/ObjectPool","source":"editor/js/utils/ObjectPool.js","import":"/editor/js/utils/ObjectPool.js","sourceHash":"4b5a94b58d6822b5d0b9a6b7cf858c5cf84ca8f1af947f93706d5d1b750ef984","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/ObjectPool.js#0013:transformPool","exportIndex":13,"name":"transformPool","kind":"constant","signature":"transformPool","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/ObjectPool.md","moduleTitle":"utils/ObjectPool","source":"editor/js/utils/ObjectPool.js","import":"/editor/js/utils/ObjectPool.js","sourceHash":"4b5a94b58d6822b5d0b9a6b7cf858c5cf84ca8f1af947f93706d5d1b750ef984","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/ObjectPool.js#0014:snapshotEntityPool","exportIndex":14,"name":"snapshotEntityPool","kind":"constant","signature":"snapshotEntityPool","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/OffHeapMemory.md","moduleTitle":"utils/OffHeapMemory","source":"editor/js/utils/OffHeapMemory.js","import":"/editor/js/utils/OffHeapMemory.js","sourceHash":"9c486be0279902350b24eacd1e64d7a1e3e0eef52dd1bcf87ad31e27185149a8","subsystem":"editor","recordType":"api-module","id":"module:editor/js/utils/OffHeapMemory.js","title":"utils/OffHeapMemory","summary":"OffHeapMemory.js - MAXIMUM Memory Expansion System Pushes browser memory limits to the absolute maximum using every available strategy: 1. Multi-WASM Pool - Multiple 4GB WASM modules (up to 16GB+ total) 2. Worker Memory Pool - Each worker has its own ~4GB heap 3. SharedArrayBuffer - Zero-copy cross-worker/thread communication 4. GPU Buffer Storage - VRAM is separate from system RAM limits 5. IndexedDB Sharding - Multiple databases for unlimited persistent storage 6. ArrayBuffer Pooling - Aggressive reuse to minimize GC pressure 7. Memory Pressure Management - Auto-offloading and tiered storage THEORETICAL MAXIMUM: - 4 WASM modules × 4GB = 16GB - 8 Workers × 4GB heap = 32GB (but shared address space limits this) - GPU buffers = Limited by VRAM (8-24GB on modern GPUs) - IndexedDB = Unlimited (disk-backed) PRACTICAL MAXIMUM: ~8-16GB usable off-heap memory","exportCount":16}
{"schemaVersion":1,"modulePath":"editor/reference/utils/OffHeapMemory.md","moduleTitle":"utils/OffHeapMemory","source":"editor/js/utils/OffHeapMemory.js","import":"/editor/js/utils/OffHeapMemory.js","sourceHash":"9c486be0279902350b24eacd1e64d7a1e3e0eef52dd1bcf87ad31e27185149a8","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/OffHeapMemory.js#0000:MultiWasmMemoryPool","exportIndex":0,"name":"MultiWasmMemoryPool","kind":"class","signature":"class MultiWasmMemoryPool","summary":"Multi-WASM Memory Pool Creates multiple WASM memory instances, each up to 4GB Total capacity: up to 16GB off-heap"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/OffHeapMemory.md","moduleTitle":"utils/OffHeapMemory","source":"editor/js/utils/OffHeapMemory.js","import":"/editor/js/utils/OffHeapMemory.js","sourceHash":"9c486be0279902350b24eacd1e64d7a1e3e0eef52dd1bcf87ad31e27185149a8","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/OffHeapMemory.js#0001:ArrayBufferPool","exportIndex":1,"name":"ArrayBufferPool","kind":"class","signature":"class ArrayBufferPool","summary":"ArrayBuffer pool for reducing GC pressure Reuses buffers instead of creating new ones"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/OffHeapMemory.md","moduleTitle":"utils/OffHeapMemory","source":"editor/js/utils/OffHeapMemory.js","import":"/editor/js/utils/OffHeapMemory.js","sourceHash":"9c486be0279902350b24eacd1e64d7a1e3e0eef52dd1bcf87ad31e27185149a8","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/OffHeapMemory.js#0002:GPUBufferStorage","exportIndex":2,"name":"GPUBufferStorage","kind":"class","signature":"class GPUBufferStorage","summary":"GPU buffer storage for large data Keeps data in VRAM instead of JS heap"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/OffHeapMemory.md","moduleTitle":"utils/OffHeapMemory","source":"editor/js/utils/OffHeapMemory.js","import":"/editor/js/utils/OffHeapMemory.js","sourceHash":"9c486be0279902350b24eacd1e64d7a1e3e0eef52dd1bcf87ad31e27185149a8","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/OffHeapMemory.js#0003:IndexedDBStorage","exportIndex":3,"name":"IndexedDBStorage","kind":"class","signature":"class IndexedDBStorage","summary":"IndexedDB storage for large persistent data"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/OffHeapMemory.md","moduleTitle":"utils/OffHeapMemory","source":"editor/js/utils/OffHeapMemory.js","import":"/editor/js/utils/OffHeapMemory.js","sourceHash":"9c486be0279902350b24eacd1e64d7a1e3e0eef52dd1bcf87ad31e27185149a8","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/OffHeapMemory.js#0004:WorkerMemoryPool","exportIndex":4,"name":"WorkerMemoryPool","kind":"class","signature":"class WorkerMemoryPool","summary":"Worker-based memory expansion Each Web Worker has its own JS heap (~4GB potential) Spawn multiple workers to multiply available memory"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/OffHeapMemory.md","moduleTitle":"utils/OffHeapMemory","source":"editor/js/utils/OffHeapMemory.js","import":"/editor/js/utils/OffHeapMemory.js","sourceHash":"9c486be0279902350b24eacd1e64d7a1e3e0eef52dd1bcf87ad31e27185149a8","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/OffHeapMemory.js#0005:SharedRingBuffer","exportIndex":5,"name":"SharedRingBuffer","kind":"class","signature":"class SharedRingBuffer","summary":"SharedArrayBuffer Ring Buffer Zero-copy data sharing between main thread and workers Requires Cross-Origin-Isolation headers"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/OffHeapMemory.md","moduleTitle":"utils/OffHeapMemory","source":"editor/js/utils/OffHeapMemory.js","import":"/editor/js/utils/OffHeapMemory.js","sourceHash":"9c486be0279902350b24eacd1e64d7a1e3e0eef52dd1bcf87ad31e27185149a8","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/OffHeapMemory.js#0006:MaxGPUBufferStorage","exportIndex":6,"name":"MaxGPUBufferStorage","kind":"class","signature":"class MaxGPUBufferStorage extends GPUBufferStorage","summary":"Maximum GPU Buffer Storage Aggressively uses VRAM for data storage"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/OffHeapMemory.md","moduleTitle":"utils/OffHeapMemory","source":"editor/js/utils/OffHeapMemory.js","import":"/editor/js/utils/OffHeapMemory.js","sourceHash":"9c486be0279902350b24eacd1e64d7a1e3e0eef52dd1bcf87ad31e27185149a8","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/OffHeapMemory.js#0007:OffHeapMemoryManager","exportIndex":7,"name":"OffHeapMemoryManager","kind":"class","signature":"class OffHeapMemoryManager","summary":"MAXIMUM Memory Expansion Manager Combines ALL strategies for absolute maximum memory capacity"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/OffHeapMemory.md","moduleTitle":"utils/OffHeapMemory","source":"editor/js/utils/OffHeapMemory.js","import":"/editor/js/utils/OffHeapMemory.js","sourceHash":"9c486be0279902350b24eacd1e64d7a1e3e0eef52dd1bcf87ad31e27185149a8","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/OffHeapMemory.js#0008:invalidateLegacyOffHeapCaches","exportIndex":8,"name":"invalidateLegacyOffHeapCaches","kind":"function","signature":"async invalidateLegacyOffHeapCaches(indexedDBApi = globalThis.indexedDB)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/OffHeapMemory.md","moduleTitle":"utils/OffHeapMemory","source":"editor/js/utils/OffHeapMemory.js","import":"/editor/js/utils/OffHeapMemory.js","sourceHash":"9c486be0279902350b24eacd1e64d7a1e3e0eef52dd1bcf87ad31e27185149a8","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/OffHeapMemory.js#0009:getOffHeapManager","exportIndex":9,"name":"getOffHeapManager","kind":"function","signature":"getOffHeapManager()","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/OffHeapMemory.md","moduleTitle":"utils/OffHeapMemory","source":"editor/js/utils/OffHeapMemory.js","import":"/editor/js/utils/OffHeapMemory.js","sourceHash":"9c486be0279902350b24eacd1e64d7a1e3e0eef52dd1bcf87ad31e27185149a8","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/OffHeapMemory.js#0010:initOffHeapManager","exportIndex":10,"name":"initOffHeapManager","kind":"function","signature":"async initOffHeapManager(device = null, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/OffHeapMemory.md","moduleTitle":"utils/OffHeapMemory","source":"editor/js/utils/OffHeapMemory.js","import":"/editor/js/utils/OffHeapMemory.js","sourceHash":"9c486be0279902350b24eacd1e64d7a1e3e0eef52dd1bcf87ad31e27185149a8","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/OffHeapMemory.js#0011:OFFHEAP_CACHE_NAMESPACE","exportIndex":11,"name":"OFFHEAP_CACHE_NAMESPACE","kind":"constant","signature":"OFFHEAP_CACHE_NAMESPACE","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/OffHeapMemory.md","moduleTitle":"utils/OffHeapMemory","source":"editor/js/utils/OffHeapMemory.js","import":"/editor/js/utils/OffHeapMemory.js","sourceHash":"9c486be0279902350b24eacd1e64d7a1e3e0eef52dd1bcf87ad31e27185149a8","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/OffHeapMemory.js#0012:OFFHEAP_CACHE_VERSION","exportIndex":12,"name":"OFFHEAP_CACHE_VERSION","kind":"constant","signature":"OFFHEAP_CACHE_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/OffHeapMemory.md","moduleTitle":"utils/OffHeapMemory","source":"editor/js/utils/OffHeapMemory.js","import":"/editor/js/utils/OffHeapMemory.js","sourceHash":"9c486be0279902350b24eacd1e64d7a1e3e0eef52dd1bcf87ad31e27185149a8","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/OffHeapMemory.js#0013:OFFHEAP_CACHE_DB_NAME","exportIndex":13,"name":"OFFHEAP_CACHE_DB_NAME","kind":"constant","signature":"OFFHEAP_CACHE_DB_NAME","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/OffHeapMemory.md","moduleTitle":"utils/OffHeapMemory","source":"editor/js/utils/OffHeapMemory.js","import":"/editor/js/utils/OffHeapMemory.js","sourceHash":"9c486be0279902350b24eacd1e64d7a1e3e0eef52dd1bcf87ad31e27185149a8","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/OffHeapMemory.js#0014:OFFHEAP_LEGACY_CACHE_DB_NAMES","exportIndex":14,"name":"OFFHEAP_LEGACY_CACHE_DB_NAMES","kind":"constant","signature":"OFFHEAP_LEGACY_CACHE_DB_NAMES","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/OffHeapMemory.md","moduleTitle":"utils/OffHeapMemory","source":"editor/js/utils/OffHeapMemory.js","import":"/editor/js/utils/OffHeapMemory.js","sourceHash":"9c486be0279902350b24eacd1e64d7a1e3e0eef52dd1bcf87ad31e27185149a8","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/OffHeapMemory.js#0015:WasmMemoryPool","exportIndex":15,"name":"WasmMemoryPool","kind":"constant","signature":"WasmMemoryPool","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/PhysicsBodyPool.md","moduleTitle":"utils/PhysicsBodyPool","source":"editor/js/utils/PhysicsBodyPool.js","import":"/editor/js/utils/PhysicsBodyPool.js","sourceHash":"38f7c419908abc9483ee5b89ec23beb008e85bc4965af46389b7f2dd8a36dff5","subsystem":"editor","recordType":"api-module","id":"module:editor/js/utils/PhysicsBodyPool.js","title":"utils/PhysicsBodyPool","summary":"Get a body handle from pool or signal that new one is needed","exportCount":7}
{"schemaVersion":1,"modulePath":"editor/reference/utils/PhysicsBodyPool.md","moduleTitle":"utils/PhysicsBodyPool","source":"editor/js/utils/PhysicsBodyPool.js","import":"/editor/js/utils/PhysicsBodyPool.js","sourceHash":"38f7c419908abc9483ee5b89ec23beb008e85bc4965af46389b7f2dd8a36dff5","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/PhysicsBodyPool.js#0000:getPooledBody","exportIndex":0,"name":"getPooledBody","kind":"function","signature":"getPooledBody(simMode, colliderShape)","summary":"Get a body handle from pool or signal that new one is needed"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/PhysicsBodyPool.md","moduleTitle":"utils/PhysicsBodyPool","source":"editor/js/utils/PhysicsBodyPool.js","import":"/editor/js/utils/PhysicsBodyPool.js","sourceHash":"38f7c419908abc9483ee5b89ec23beb008e85bc4965af46389b7f2dd8a36dff5","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/PhysicsBodyPool.js#0001:releaseBody","exportIndex":1,"name":"releaseBody","kind":"function","signature":"releaseBody(physicsWorld, bodyHandle, simMode, colliderShape)","summary":"Return a body to the pool for reuse"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/PhysicsBodyPool.md","moduleTitle":"utils/PhysicsBodyPool","source":"editor/js/utils/PhysicsBodyPool.js","import":"/editor/js/utils/PhysicsBodyPool.js","sourceHash":"38f7c419908abc9483ee5b89ec23beb008e85bc4965af46389b7f2dd8a36dff5","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/PhysicsBodyPool.js#0002:resetPooledBody","exportIndex":2,"name":"resetPooledBody","kind":"function","signature":"resetPooledBody(physicsWorld, bodyHandle, position, rotation, scale)","summary":"Reset a pooled body for reuse with new transform"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/PhysicsBodyPool.md","moduleTitle":"utils/PhysicsBodyPool","source":"editor/js/utils/PhysicsBodyPool.js","import":"/editor/js/utils/PhysicsBodyPool.js","sourceHash":"38f7c419908abc9483ee5b89ec23beb008e85bc4965af46389b7f2dd8a36dff5","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/PhysicsBodyPool.js#0003:getPoolStats","exportIndex":3,"name":"getPoolStats","kind":"function","signature":"getPoolStats()","summary":"Get pool statistics"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/PhysicsBodyPool.md","moduleTitle":"utils/PhysicsBodyPool","source":"editor/js/utils/PhysicsBodyPool.js","import":"/editor/js/utils/PhysicsBodyPool.js","sourceHash":"38f7c419908abc9483ee5b89ec23beb008e85bc4965af46389b7f2dd8a36dff5","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/PhysicsBodyPool.js#0004:clearPools","exportIndex":4,"name":"clearPools","kind":"function","signature":"clearPools(physicsWorld)","summary":"Clear all pools (destroys pooled bodies)"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/PhysicsBodyPool.md","moduleTitle":"utils/PhysicsBodyPool","source":"editor/js/utils/PhysicsBodyPool.js","import":"/editor/js/utils/PhysicsBodyPool.js","sourceHash":"38f7c419908abc9483ee5b89ec23beb008e85bc4965af46389b7f2dd8a36dff5","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/PhysicsBodyPool.js#0005:trimPools","exportIndex":5,"name":"trimPools","kind":"function","signature":"trimPools(keepCount = 5)","summary":"Trim pools to reduce memory"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/PhysicsBodyPool.md","moduleTitle":"utils/PhysicsBodyPool","source":"editor/js/utils/PhysicsBodyPool.js","import":"/editor/js/utils/PhysicsBodyPool.js","sourceHash":"38f7c419908abc9483ee5b89ec23beb008e85bc4965af46389b7f2dd8a36dff5","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/PhysicsBodyPool.js#0006:BODY_TYPES","exportIndex":6,"name":"BODY_TYPES","kind":"re-export","signature":"BODY_TYPES","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/RenderBundleCache.md","moduleTitle":"utils/RenderBundleCache","source":"editor/js/utils/RenderBundleCache.js","import":"/editor/js/utils/RenderBundleCache.js","sourceHash":"435b4b2309494af850cd462728e09854185e25137376dd16cef7f0e9e4996df9","subsystem":"editor","recordType":"api-module","id":"module:editor/js/utils/RenderBundleCache.js","title":"utils/RenderBundleCache","summary":"Create or get cached render bundle","exportCount":9}
{"schemaVersion":1,"modulePath":"editor/reference/utils/RenderBundleCache.md","moduleTitle":"utils/RenderBundleCache","source":"editor/js/utils/RenderBundleCache.js","import":"/editor/js/utils/RenderBundleCache.js","sourceHash":"435b4b2309494af850cd462728e09854185e25137376dd16cef7f0e9e4996df9","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/RenderBundleCache.js#0000:getOrCreateBundle","exportIndex":0,"name":"getOrCreateBundle","kind":"function","signature":"getOrCreateBundle(device, key, version, descriptor, recordFn)","summary":"Create or get cached render bundle"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/RenderBundleCache.md","moduleTitle":"utils/RenderBundleCache","source":"editor/js/utils/RenderBundleCache.js","import":"/editor/js/utils/RenderBundleCache.js","sourceHash":"435b4b2309494af850cd462728e09854185e25137376dd16cef7f0e9e4996df9","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/RenderBundleCache.js#0001:invalidateBundle","exportIndex":1,"name":"invalidateBundle","kind":"function","signature":"invalidateBundle(key)","summary":"Invalidate a specific bundle (force re-record next frame)"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/RenderBundleCache.md","moduleTitle":"utils/RenderBundleCache","source":"editor/js/utils/RenderBundleCache.js","import":"/editor/js/utils/RenderBundleCache.js","sourceHash":"435b4b2309494af850cd462728e09854185e25137376dd16cef7f0e9e4996df9","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/RenderBundleCache.js#0002:invalidateBundlesWithPrefix","exportIndex":2,"name":"invalidateBundlesWithPrefix","kind":"function","signature":"invalidateBundlesWithPrefix(prefix)","summary":"Invalidate all bundles matching a prefix"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/RenderBundleCache.md","moduleTitle":"utils/RenderBundleCache","source":"editor/js/utils/RenderBundleCache.js","import":"/editor/js/utils/RenderBundleCache.js","sourceHash":"435b4b2309494af850cd462728e09854185e25137376dd16cef7f0e9e4996df9","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/RenderBundleCache.js#0003:clearBundleCache","exportIndex":3,"name":"clearBundleCache","kind":"function","signature":"clearBundleCache()","summary":"Clear all cached bundles"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/RenderBundleCache.md","moduleTitle":"utils/RenderBundleCache","source":"editor/js/utils/RenderBundleCache.js","import":"/editor/js/utils/RenderBundleCache.js","sourceHash":"435b4b2309494af850cd462728e09854185e25137376dd16cef7f0e9e4996df9","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/RenderBundleCache.js#0004:pruneOldBundles","exportIndex":4,"name":"pruneOldBundles","kind":"function","signature":"pruneOldBundles(maxAgeMs = 60000)","summary":"Remove bundles not used recently"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/RenderBundleCache.md","moduleTitle":"utils/RenderBundleCache","source":"editor/js/utils/RenderBundleCache.js","import":"/editor/js/utils/RenderBundleCache.js","sourceHash":"435b4b2309494af850cd462728e09854185e25137376dd16cef7f0e9e4996df9","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/RenderBundleCache.js#0005:getCacheStats","exportIndex":5,"name":"getCacheStats","kind":"function","signature":"getCacheStats()","summary":"Get cache statistics"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/RenderBundleCache.md","moduleTitle":"utils/RenderBundleCache","source":"editor/js/utils/RenderBundleCache.js","import":"/editor/js/utils/RenderBundleCache.js","sourceHash":"435b4b2309494af850cd462728e09854185e25137376dd16cef7f0e9e4996df9","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/RenderBundleCache.js#0006:createStandardDescriptor","exportIndex":6,"name":"createStandardDescriptor","kind":"function","signature":"createStandardDescriptor(colorFormat = 'bgra8unorm', depthFormat = 'depth24plus')","summary":"Helper to create standard descriptor for color + depth rendering"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/RenderBundleCache.md","moduleTitle":"utils/RenderBundleCache","source":"editor/js/utils/RenderBundleCache.js","import":"/editor/js/utils/RenderBundleCache.js","sourceHash":"435b4b2309494af850cd462728e09854185e25137376dd16cef7f0e9e4996df9","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/RenderBundleCache.js#0007:executeBundles","exportIndex":7,"name":"executeBundles","kind":"function","signature":"executeBundles(passEncoder, bundles)","summary":"Execute render bundles in a render pass"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/RenderBundleCache.md","moduleTitle":"utils/RenderBundleCache","source":"editor/js/utils/RenderBundleCache.js","import":"/editor/js/utils/RenderBundleCache.js","sourceHash":"435b4b2309494af850cd462728e09854185e25137376dd16cef7f0e9e4996df9","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/RenderBundleCache.js#0008:EngineRenderBundleCache","exportIndex":8,"name":"EngineRenderBundleCache","kind":"re-export","signature":"EngineRenderBundleCache","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/SIMDMath.md","moduleTitle":"utils/SIMDMath","source":"editor/js/utils/SIMDMath.js","import":"/editor/js/utils/SIMDMath.js","sourceHash":"7c63032b5269c92c8a44ab789195c733b46b1aa6246998c4c86172b755552a2e","subsystem":"editor","recordType":"api-module","id":"module:editor/js/utils/SIMDMath.js","title":"utils/SIMDMath","summary":"Create a batch of vec3s in SoA format","exportCount":19}
{"schemaVersion":1,"modulePath":"editor/reference/utils/SIMDMath.md","moduleTitle":"utils/SIMDMath","source":"editor/js/utils/SIMDMath.js","import":"/editor/js/utils/SIMDMath.js","sourceHash":"7c63032b5269c92c8a44ab789195c733b46b1aa6246998c4c86172b755552a2e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/SIMDMath.js#0000:createVec3Batch","exportIndex":0,"name":"createVec3Batch","kind":"function","signature":"createVec3Batch(count)","summary":"Create a batch of vec3s in SoA format"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/SIMDMath.md","moduleTitle":"utils/SIMDMath","source":"editor/js/utils/SIMDMath.js","import":"/editor/js/utils/SIMDMath.js","sourceHash":"7c63032b5269c92c8a44ab789195c733b46b1aa6246998c4c86172b755552a2e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/SIMDMath.js#0001:vec3ArrayToBatch","exportIndex":1,"name":"vec3ArrayToBatch","kind":"function","signature":"vec3ArrayToBatch(vectors)","summary":"Create batch from array of [x,y,z] vectors"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/SIMDMath.md","moduleTitle":"utils/SIMDMath","source":"editor/js/utils/SIMDMath.js","import":"/editor/js/utils/SIMDMath.js","sourceHash":"7c63032b5269c92c8a44ab789195c733b46b1aa6246998c4c86172b755552a2e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/SIMDMath.js#0002:batchToVec3Array","exportIndex":2,"name":"batchToVec3Array","kind":"function","signature":"batchToVec3Array(batch)","summary":"Convert batch back to array of [x,y,z]"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/SIMDMath.md","moduleTitle":"utils/SIMDMath","source":"editor/js/utils/SIMDMath.js","import":"/editor/js/utils/SIMDMath.js","sourceHash":"7c63032b5269c92c8a44ab789195c733b46b1aa6246998c4c86172b755552a2e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/SIMDMath.js#0003:batchAdd","exportIndex":3,"name":"batchAdd","kind":"function","signature":"batchAdd(a, b, out = createVec3Batch(a.count)","summary":"Batch add: out = a + b"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/SIMDMath.md","moduleTitle":"utils/SIMDMath","source":"editor/js/utils/SIMDMath.js","import":"/editor/js/utils/SIMDMath.js","sourceHash":"7c63032b5269c92c8a44ab789195c733b46b1aa6246998c4c86172b755552a2e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/SIMDMath.js#0004:batchSub","exportIndex":4,"name":"batchSub","kind":"function","signature":"batchSub(a, b, out = createVec3Batch(a.count)","summary":"Batch subtract: out = a - b"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/SIMDMath.md","moduleTitle":"utils/SIMDMath","source":"editor/js/utils/SIMDMath.js","import":"/editor/js/utils/SIMDMath.js","sourceHash":"7c63032b5269c92c8a44ab789195c733b46b1aa6246998c4c86172b755552a2e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/SIMDMath.js#0005:batchScale","exportIndex":5,"name":"batchScale","kind":"function","signature":"batchScale(a, scalar, out = createVec3Batch(a.count)","summary":"Batch scale: out = a * scalar"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/SIMDMath.md","moduleTitle":"utils/SIMDMath","source":"editor/js/utils/SIMDMath.js","import":"/editor/js/utils/SIMDMath.js","sourceHash":"7c63032b5269c92c8a44ab789195c733b46b1aa6246998c4c86172b755552a2e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/SIMDMath.js#0006:batchMul","exportIndex":6,"name":"batchMul","kind":"function","signature":"batchMul(a, b, out = createVec3Batch(a.count)","summary":"Batch multiply component-wise: out = a * b"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/SIMDMath.md","moduleTitle":"utils/SIMDMath","source":"editor/js/utils/SIMDMath.js","import":"/editor/js/utils/SIMDMath.js","sourceHash":"7c63032b5269c92c8a44ab789195c733b46b1aa6246998c4c86172b755552a2e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/SIMDMath.js#0007:batchDot","exportIndex":7,"name":"batchDot","kind":"function","signature":"batchDot(a, b, out = new Float32Array(a.count)","summary":"Batch dot product: out[i] = dot(a[i], b[i])"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/SIMDMath.md","moduleTitle":"utils/SIMDMath","source":"editor/js/utils/SIMDMath.js","import":"/editor/js/utils/SIMDMath.js","sourceHash":"7c63032b5269c92c8a44ab789195c733b46b1aa6246998c4c86172b755552a2e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/SIMDMath.js#0008:batchCross","exportIndex":8,"name":"batchCross","kind":"function","signature":"batchCross(a, b, out = createVec3Batch(a.count)","summary":"Batch cross product: out = a × b"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/SIMDMath.md","moduleTitle":"utils/SIMDMath","source":"editor/js/utils/SIMDMath.js","import":"/editor/js/utils/SIMDMath.js","sourceHash":"7c63032b5269c92c8a44ab789195c733b46b1aa6246998c4c86172b755552a2e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/SIMDMath.js#0009:batchLengthSq","exportIndex":9,"name":"batchLengthSq","kind":"function","signature":"batchLengthSq(a, out = new Float32Array(a.count)","summary":"Batch length squared: out[i] = |a[i]|²"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/SIMDMath.md","moduleTitle":"utils/SIMDMath","source":"editor/js/utils/SIMDMath.js","import":"/editor/js/utils/SIMDMath.js","sourceHash":"7c63032b5269c92c8a44ab789195c733b46b1aa6246998c4c86172b755552a2e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/SIMDMath.js#0010:batchLength","exportIndex":10,"name":"batchLength","kind":"function","signature":"batchLength(a, out = new Float32Array(a.count)","summary":"Batch length: out[i] = |a[i]|"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/SIMDMath.md","moduleTitle":"utils/SIMDMath","source":"editor/js/utils/SIMDMath.js","import":"/editor/js/utils/SIMDMath.js","sourceHash":"7c63032b5269c92c8a44ab789195c733b46b1aa6246998c4c86172b755552a2e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/SIMDMath.js#0011:batchNormalize","exportIndex":11,"name":"batchNormalize","kind":"function","signature":"batchNormalize(a, out = createVec3Batch(a.count)","summary":"Batch normalize: out[i] = normalize(a[i])"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/SIMDMath.md","moduleTitle":"utils/SIMDMath","source":"editor/js/utils/SIMDMath.js","import":"/editor/js/utils/SIMDMath.js","sourceHash":"7c63032b5269c92c8a44ab789195c733b46b1aa6246998c4c86172b755552a2e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/SIMDMath.js#0012:batchLerp","exportIndex":12,"name":"batchLerp","kind":"function","signature":"batchLerp(a, b, t, out = createVec3Batch(a.count)","summary":"Batch lerp: out = lerp(a, b, t)"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/SIMDMath.md","moduleTitle":"utils/SIMDMath","source":"editor/js/utils/SIMDMath.js","import":"/editor/js/utils/SIMDMath.js","sourceHash":"7c63032b5269c92c8a44ab789195c733b46b1aa6246998c4c86172b755552a2e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/SIMDMath.js#0013:batchTransform","exportIndex":13,"name":"batchTransform","kind":"function","signature":"batchTransform(batch, m, out = createVec3Batch(batch.count)","summary":"Batch transform by 4x4 matrix"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/SIMDMath.md","moduleTitle":"utils/SIMDMath","source":"editor/js/utils/SIMDMath.js","import":"/editor/js/utils/SIMDMath.js","sourceHash":"7c63032b5269c92c8a44ab789195c733b46b1aa6246998c4c86172b755552a2e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/SIMDMath.js#0014:batchDistanceToPoint","exportIndex":14,"name":"batchDistanceToPoint","kind":"function","signature":"batchDistanceToPoint(batch, point, out = new Float32Array(batch.count)","summary":"Batch distance to point"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/SIMDMath.md","moduleTitle":"utils/SIMDMath","source":"editor/js/utils/SIMDMath.js","import":"/editor/js/utils/SIMDMath.js","sourceHash":"7c63032b5269c92c8a44ab789195c733b46b1aa6246998c4c86172b755552a2e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/SIMDMath.js#0015:batchDistanceSqToPoint","exportIndex":15,"name":"batchDistanceSqToPoint","kind":"function","signature":"batchDistanceSqToPoint(batch, point, out = new Float32Array(batch.count)","summary":"Batch distance squared to point (faster, for comparisons)"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/SIMDMath.md","moduleTitle":"utils/SIMDMath","source":"editor/js/utils/SIMDMath.js","import":"/editor/js/utils/SIMDMath.js","sourceHash":"7c63032b5269c92c8a44ab789195c733b46b1aa6246998c4c86172b755552a2e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/SIMDMath.js#0016:batchFindWithinRadius","exportIndex":16,"name":"batchFindWithinRadius","kind":"function","signature":"batchFindWithinRadius(batch, point, radius)","summary":"Find indices within radius of point"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/SIMDMath.md","moduleTitle":"utils/SIMDMath","source":"editor/js/utils/SIMDMath.js","import":"/editor/js/utils/SIMDMath.js","sourceHash":"7c63032b5269c92c8a44ab789195c733b46b1aa6246998c4c86172b755552a2e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/SIMDMath.js#0017:batchFindKNearest","exportIndex":17,"name":"batchFindKNearest","kind":"function","signature":"batchFindKNearest(batch, point, k)","summary":"Find K nearest neighbors"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/SIMDMath.md","moduleTitle":"utils/SIMDMath","source":"editor/js/utils/SIMDMath.js","import":"/editor/js/utils/SIMDMath.js","sourceHash":"7c63032b5269c92c8a44ab789195c733b46b1aa6246998c4c86172b755552a2e","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/SIMDMath.js#0018:batchComputeAABB","exportIndex":18,"name":"batchComputeAABB","kind":"function","signature":"batchComputeAABB(batch)","summary":"Batch AABB computation"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/SpatialIndex.md","moduleTitle":"utils/SpatialIndex","source":"editor/js/utils/SpatialIndex.js","import":"/editor/js/utils/SpatialIndex.js","sourceHash":"ce07bd44a5fc58434a7d2a31fc067d039310487ad753ce81e013ccede4c9244d","subsystem":"editor","recordType":"api-module","id":"module:editor/js/utils/SpatialIndex.js","title":"utils/SpatialIndex","summary":"Simple Octree for dynamic entity queries Better for frequently changing scenes than BVH","exportCount":4}
{"schemaVersion":1,"modulePath":"editor/reference/utils/SpatialIndex.md","moduleTitle":"utils/SpatialIndex","source":"editor/js/utils/SpatialIndex.js","import":"/editor/js/utils/SpatialIndex.js","sourceHash":"ce07bd44a5fc58434a7d2a31fc067d039310487ad753ce81e013ccede4c9244d","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/SpatialIndex.js#0000:Octree","exportIndex":0,"name":"Octree","kind":"class","signature":"class Octree","summary":"Simple Octree for dynamic entity queries Better for frequently changing scenes than BVH"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/SpatialIndex.md","moduleTitle":"utils/SpatialIndex","source":"editor/js/utils/SpatialIndex.js","import":"/editor/js/utils/SpatialIndex.js","sourceHash":"ce07bd44a5fc58434a7d2a31fc067d039310487ad753ce81e013ccede4c9244d","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/SpatialIndex.js#0001:EntitySpatialIndex","exportIndex":1,"name":"EntitySpatialIndex","kind":"class","signature":"class EntitySpatialIndex","summary":"EntitySpatialIndex - Manages spatial indexing for editor entities"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/SpatialIndex.md","moduleTitle":"utils/SpatialIndex","source":"editor/js/utils/SpatialIndex.js","import":"/editor/js/utils/SpatialIndex.js","sourceHash":"ce07bd44a5fc58434a7d2a31fc067d039310487ad753ce81e013ccede4c9244d","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/SpatialIndex.js#0002:BVHBuilder","exportIndex":2,"name":"BVHBuilder","kind":"re-export","signature":"BVHBuilder","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/SpatialIndex.md","moduleTitle":"utils/SpatialIndex","source":"editor/js/utils/SpatialIndex.js","import":"/editor/js/utils/SpatialIndex.js","sourceHash":"ce07bd44a5fc58434a7d2a31fc067d039310487ad753ce81e013ccede4c9244d","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/SpatialIndex.js#0003:BVHNode","exportIndex":3,"name":"BVHNode","kind":"re-export","signature":"BVHNode","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/utils/TextureCompression.md","moduleTitle":"utils/TextureCompression","source":"editor/js/utils/TextureCompression.js","import":"/editor/js/utils/TextureCompression.js","sourceHash":"41f6e7d6b4ff7ec44bb32b57773db17a5b8dcdd0c8017055fefda182d41816ab","subsystem":"editor","recordType":"api-module","id":"module:editor/js/utils/TextureCompression.js","title":"utils/TextureCompression","summary":"TextureCompression - WebGPU compressed texture format support. Supports: - BC formats (Desktop: DXT/S3TC) - ASTC formats (Mobile/Apple) - ETC2 formats (Android/WebGL fallback)","exportCount":7}
{"schemaVersion":1,"modulePath":"editor/reference/utils/TextureCompression.md","moduleTitle":"utils/TextureCompression","source":"editor/js/utils/TextureCompression.js","import":"/editor/js/utils/TextureCompression.js","sourceHash":"41f6e7d6b4ff7ec44bb32b57773db17a5b8dcdd0c8017055fefda182d41816ab","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/TextureCompression.js#0000:detectCompressedFormats","exportIndex":0,"name":"detectCompressedFormats","kind":"function","signature":"detectCompressedFormats(adapter)","summary":"Detect supported compressed texture formats."}
{"schemaVersion":1,"modulePath":"editor/reference/utils/TextureCompression.md","moduleTitle":"utils/TextureCompression","source":"editor/js/utils/TextureCompression.js","import":"/editor/js/utils/TextureCompression.js","sourceHash":"41f6e7d6b4ff7ec44bb32b57773db17a5b8dcdd0c8017055fefda182d41816ab","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/TextureCompression.js#0001:getOptimalFormat","exportIndex":1,"name":"getOptimalFormat","kind":"function","signature":"getOptimalFormat(adapter, needsAlpha = true)","summary":"Get optimal texture format for device."}
{"schemaVersion":1,"modulePath":"editor/reference/utils/TextureCompression.md","moduleTitle":"utils/TextureCompression","source":"editor/js/utils/TextureCompression.js","import":"/editor/js/utils/TextureCompression.js","sourceHash":"41f6e7d6b4ff7ec44bb32b57773db17a5b8dcdd0c8017055fefda182d41816ab","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/TextureCompression.js#0002:getCompressedSize","exportIndex":2,"name":"getCompressedSize","kind":"function","signature":"getCompressedSize(width, height, format)","summary":"Calculate compressed texture size."}
{"schemaVersion":1,"modulePath":"editor/reference/utils/TextureCompression.md","moduleTitle":"utils/TextureCompression","source":"editor/js/utils/TextureCompression.js","import":"/editor/js/utils/TextureCompression.js","sourceHash":"41f6e7d6b4ff7ec44bb32b57773db17a5b8dcdd0c8017055fefda182d41816ab","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/TextureCompression.js#0003:getMemorySavings","exportIndex":3,"name":"getMemorySavings","kind":"function","signature":"getMemorySavings(width, height, compressedFormat)","summary":"Calculate memory savings percentage."}
{"schemaVersion":1,"modulePath":"editor/reference/utils/TextureCompression.md","moduleTitle":"utils/TextureCompression","source":"editor/js/utils/TextureCompression.js","import":"/editor/js/utils/TextureCompression.js","sourceHash":"41f6e7d6b4ff7ec44bb32b57773db17a5b8dcdd0c8017055fefda182d41816ab","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/TextureCompression.js#0004:getQualitySizeScore","exportIndex":4,"name":"getQualitySizeScore","kind":"function","signature":"getQualitySizeScore(width, height, format, options = {})","summary":"Calculate a quality-size report for picker and audit UI."}
{"schemaVersion":1,"modulePath":"editor/reference/utils/TextureCompression.md","moduleTitle":"utils/TextureCompression","source":"editor/js/utils/TextureCompression.js","import":"/editor/js/utils/TextureCompression.js","sourceHash":"41f6e7d6b4ff7ec44bb32b57773db17a5b8dcdd0c8017055fefda182d41816ab","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/TextureCompression.js#0005:createCompressedTexture","exportIndex":5,"name":"createCompressedTexture","kind":"function","signature":"createCompressedTexture(device, adapter, descriptor)","summary":"Create compressed texture with fallback."}
{"schemaVersion":1,"modulePath":"editor/reference/utils/TextureCompression.md","moduleTitle":"utils/TextureCompression","source":"editor/js/utils/TextureCompression.js","import":"/editor/js/utils/TextureCompression.js","sourceHash":"41f6e7d6b4ff7ec44bb32b57773db17a5b8dcdd0c8017055fefda182d41816ab","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/TextureCompression.js#0006:getFormatInfo","exportIndex":6,"name":"getFormatInfo","kind":"function","signature":"getFormatInfo(format)","summary":"Get format info for display."}
{"schemaVersion":1,"modulePath":"editor/reference/utils/WeakCache.md","moduleTitle":"utils/WeakCache","source":"editor/js/utils/WeakCache.js","import":"/editor/js/utils/WeakCache.js","sourceHash":"56411761902844f58da03283d3f8b22627c15e1d731c5bedc1e79dbdc33435e8","subsystem":"editor","recordType":"api-module","id":"module:editor/js/utils/WeakCache.js","title":"utils/WeakCache","summary":"WeakValueMap - Map with weak references to values Values are auto-removed when garbage collected","exportCount":3}
{"schemaVersion":1,"modulePath":"editor/reference/utils/WeakCache.md","moduleTitle":"utils/WeakCache","source":"editor/js/utils/WeakCache.js","import":"/editor/js/utils/WeakCache.js","sourceHash":"56411761902844f58da03283d3f8b22627c15e1d731c5bedc1e79dbdc33435e8","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/WeakCache.js#0000:WeakValueMap","exportIndex":0,"name":"WeakValueMap","kind":"class","signature":"class WeakValueMap","summary":"WeakValueMap - Map with weak references to values Values are auto-removed when garbage collected"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/WeakCache.md","moduleTitle":"utils/WeakCache","source":"editor/js/utils/WeakCache.js","import":"/editor/js/utils/WeakCache.js","sourceHash":"56411761902844f58da03283d3f8b22627c15e1d731c5bedc1e79dbdc33435e8","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/WeakCache.js#0001:LRUCache","exportIndex":1,"name":"LRUCache","kind":"class","signature":"class LRUCache","summary":"LRUCache - Least Recently Used cache with max size"}
{"schemaVersion":1,"modulePath":"editor/reference/utils/WeakCache.md","moduleTitle":"utils/WeakCache","source":"editor/js/utils/WeakCache.js","import":"/editor/js/utils/WeakCache.js","sourceHash":"56411761902844f58da03283d3f8b22627c15e1d731c5bedc1e79dbdc33435e8","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/utils/WeakCache.js#0002:TTLCache","exportIndex":2,"name":"TTLCache","kind":"class","signature":"class TTLCache","summary":"TTLCache - Cache with time-to-live expiration"}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/AuraRenderer.md","moduleTitle":"viewport/AuraRenderer","source":"editor/js/viewport/AuraRenderer.js","import":"/editor/js/viewport/AuraRenderer.js","sourceHash":"8456893608ffdb4fc3c6ef6ab0aca21b16b199a18cc77098b5edb3495edadd60","subsystem":"editor","recordType":"api-module","id":"module:editor/js/viewport/AuraRenderer.js","title":"viewport/AuraRenderer","summary":"AuraRenderer — System 1: Outer Energy Shell / Aura Layer ========================================================= Renders the actual model mesh at slightly expanded scale with electric blue-cyan color — same approach as SkinRenderer but bigger and more transparent. No hull approximation needed; the real mesh IS the aura shell. LAYER ROLE: Outermost visible layer — glowing energy field that exactly traces the body shape at AURA_SCALE (8% larger than entity scale). VISUAL: - Full-res model mesh, electric blue-cyan [0.2, 0.7, 1.0, 0.15] - Scale multiplied by AURA_SCALE so it sits slightly outside the skin - High roughness for a soft diffuse glow look DATA SOURCE: EntityMeshRenderer already has 'custom_<uuid>' registered. No extra work. INDEPENDENCE: - No imports needed beyond EntityMeshRenderer (draw) - No reference to SkinRenderer, SkeletonRenderer, SDFColliderRenderer","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/AuraRenderer.md","moduleTitle":"viewport/AuraRenderer","source":"editor/js/viewport/AuraRenderer.js","import":"/editor/js/viewport/AuraRenderer.js","sourceHash":"8456893608ffdb4fc3c6ef6ab0aca21b16b199a18cc77098b5edb3495edadd60","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/viewport/AuraRenderer.js#0000:AuraRenderer","exportIndex":0,"name":"AuraRenderer","kind":"class","signature":"class AuraRenderer","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/CameraController.md","moduleTitle":"viewport/CameraController","source":"editor/js/viewport/CameraController.js","import":"/editor/js/viewport/CameraController.js","sourceHash":"0f3cf6284abebfff96e9c7edf52ce7b0fae14991b940d46703ee6ae908490459","subsystem":"editor","recordType":"api-module","id":"module:editor/js/viewport/CameraController.js","title":"viewport/CameraController","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/CameraController.md","moduleTitle":"viewport/CameraController","source":"editor/js/viewport/CameraController.js","import":"/editor/js/viewport/CameraController.js","sourceHash":"0f3cf6284abebfff96e9c7edf52ce7b0fae14991b940d46703ee6ae908490459","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/viewport/CameraController.js#0000:CameraController","exportIndex":0,"name":"CameraController","kind":"class","signature":"class CameraController","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/CollabOverlayRenderer.md","moduleTitle":"viewport/CollabOverlayRenderer","source":"editor/js/viewport/CollabOverlayRenderer.js","import":"/editor/js/viewport/CollabOverlayRenderer.js","sourceHash":"e5081da39c3b05c3657b2423b59f5afe6fee567013f27e6b5838a1d69d054dfa","subsystem":"editor","recordType":"api-module","id":"module:editor/js/viewport/CollabOverlayRenderer.js","title":"viewport/CollabOverlayRenderer","summary":"CollabOverlayRenderer.js Renders peer cameras as small 3D camcorder-style pyramids in the viewport, with colored tint matching the peer's chosen color and a floating name label. Uses the existing EntityMeshRenderer to draw pyramids (no new GPU pipelines needed). Name labels are HTML overlays positioned via 3D→2D projection.","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/CollabOverlayRenderer.md","moduleTitle":"viewport/CollabOverlayRenderer","source":"editor/js/viewport/CollabOverlayRenderer.js","import":"/editor/js/viewport/CollabOverlayRenderer.js","sourceHash":"e5081da39c3b05c3657b2423b59f5afe6fee567013f27e6b5838a1d69d054dfa","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/viewport/CollabOverlayRenderer.js#0000:CollabOverlayRenderer","exportIndex":0,"name":"CollabOverlayRenderer","kind":"class","signature":"class CollabOverlayRenderer","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/GhostPreviewRenderer.md","moduleTitle":"viewport/GhostPreviewRenderer","source":"editor/js/viewport/GhostPreviewRenderer.js","import":"/editor/js/viewport/GhostPreviewRenderer.js","sourceHash":"f5fba947677b0d389645ab7efc411b55dd416f1480714d8040c2fa90c0a5addf","subsystem":"editor","recordType":"api-module","id":"module:editor/js/viewport/GhostPreviewRenderer.js","title":"viewport/GhostPreviewRenderer","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/GhostPreviewRenderer.md","moduleTitle":"viewport/GhostPreviewRenderer","source":"editor/js/viewport/GhostPreviewRenderer.js","import":"/editor/js/viewport/GhostPreviewRenderer.js","sourceHash":"f5fba947677b0d389645ab7efc411b55dd416f1480714d8040c2fa90c0a5addf","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/viewport/GhostPreviewRenderer.js#0000:GhostPreviewRenderer","exportIndex":0,"name":"GhostPreviewRenderer","kind":"class","signature":"class GhostPreviewRenderer","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/SDFColliderRenderer.md","moduleTitle":"viewport/SDFColliderRenderer","source":"editor/js/viewport/SDFColliderRenderer.js","import":"/editor/js/viewport/SDFColliderRenderer.js","sourceHash":"a31e779474372f262f8866dc8fc0158cc25e822f6b13f88dd28ffe5de82ff887","subsystem":"editor","recordType":"api-module","id":"module:editor/js/viewport/SDFColliderRenderer.js","title":"viewport/SDFColliderRenderer","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/SDFColliderRenderer.md","moduleTitle":"viewport/SDFColliderRenderer","source":"editor/js/viewport/SDFColliderRenderer.js","import":"/editor/js/viewport/SDFColliderRenderer.js","sourceHash":"a31e779474372f262f8866dc8fc0158cc25e822f6b13f88dd28ffe5de82ff887","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/viewport/SDFColliderRenderer.js#0000:SDFColliderRenderer","exportIndex":0,"name":"SDFColliderRenderer","kind":"class","signature":"class SDFColliderRenderer","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/ShapeWireframes.md","moduleTitle":"viewport/ShapeWireframes","source":"editor/js/viewport/ShapeWireframes.js","import":"/editor/js/viewport/ShapeWireframes.js","sourceHash":"420ffad89328f100b5c1b77088cee47b5b0eb0189ce6eab94064cb94e843be6a","subsystem":"editor","recordType":"api-module","id":"module:editor/js/viewport/ShapeWireframes.js","title":"viewport/ShapeWireframes","summary":"ShapeWireframes.js — Shared shape-specific wireframe generators ================================================================ Used by SkeletonRenderer, SkinRenderer, and AuraRenderer to render shape-accurate wireframe overlays that match the SDF collider shapes. Each generator returns { joints: [[x,y,z],...], edges: [[i,j],...] } in LOCAL space. The caller transforms to world space.","exportCount":2}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/ShapeWireframes.md","moduleTitle":"viewport/ShapeWireframes","source":"editor/js/viewport/ShapeWireframes.js","import":"/editor/js/viewport/ShapeWireframes.js","sourceHash":"420ffad89328f100b5c1b77088cee47b5b0eb0189ce6eab94064cb94e843be6a","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/viewport/ShapeWireframes.js#0000:generateShapeWireframe","exportIndex":0,"name":"generateShapeWireframe","kind":"function","signature":"generateShapeWireframe(meshType, es, ep, er, doRot)","summary":"Generate a shape-specific wireframe for an entity."}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/ShapeWireframes.md","moduleTitle":"viewport/ShapeWireframes","source":"editor/js/viewport/ShapeWireframes.js","import":"/editor/js/viewport/ShapeWireframes.js","sourceHash":"420ffad89328f100b5c1b77088cee47b5b0eb0189ce6eab94064cb94e843be6a","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/viewport/ShapeWireframes.js#0001:quatFromDir","exportIndex":1,"name":"quatFromDir","kind":"function","signature":"quatFromDir(dx, dy, dz)","summary":"Compute quaternion that aligns Y-axis [0,1,0] with direction [dx,dy,dz]. Exported for use in renderers that draw capsule sticks between joints."}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/SkeletonRenderer.md","moduleTitle":"viewport/SkeletonRenderer","source":"editor/js/viewport/SkeletonRenderer.js","import":"/editor/js/viewport/SkeletonRenderer.js","sourceHash":"e7d4dbd709b5d554151d2f13c28b7264f2d82e653e3a3a024dcf50f00592acb6","subsystem":"editor","recordType":"api-module","id":"module:editor/js/viewport/SkeletonRenderer.js","title":"viewport/SkeletonRenderer","summary":"SkeletonRenderer — System 3: X-Ray Skeleton / Bone Layer ========================================================= Renders the internal skeleton as solid physical geometry — gold ball joints at each bone pivot, ivory metallic bone sticks connecting them. Think medical X-ray imaging or the internal rig view in a 3D animation tool. LAYER ROLE: Innermost visible layer — inside the skin capsules. Fully opaque metallic geometry. Shows the exact bone hierarchy as a physical rig. VISUAL: Ball joints: gold [1.0, 0.85, 0.3, 1.0], metallic=0.9, roughness=0.15 Bone sticks: ivory [0.95, 0.9, 0.8, 1.0], metallic=0.85, roughness=0.2 Sizes scaled by body height — proportionally correct DATA SOURCE: getAnimatedBoneShapes() → .joints[] (all joint world positions + child links) INDEPENDENCE: - Imports ONLY from SkeletalAnimation.js (data) and EntityMeshRenderer (draw) - No reference to AuraRenderer, SkinRenderer, SDFColliderRenderer - Can be deleted without affecting any other system EDIT MODE vs PLAY MODE: Edit: animated bone joints from getAnimatedBoneShapes() Play (ragdoll): bone positions from live physics bodies","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/SkeletonRenderer.md","moduleTitle":"viewport/SkeletonRenderer","source":"editor/js/viewport/SkeletonRenderer.js","import":"/editor/js/viewport/SkeletonRenderer.js","sourceHash":"e7d4dbd709b5d554151d2f13c28b7264f2d82e653e3a3a024dcf50f00592acb6","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/viewport/SkeletonRenderer.js#0000:SkeletonRenderer","exportIndex":0,"name":"SkeletonRenderer","kind":"class","signature":"class SkeletonRenderer","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/SkinRenderer.md","moduleTitle":"viewport/SkinRenderer","source":"editor/js/viewport/SkinRenderer.js","import":"/editor/js/viewport/SkinRenderer.js","sourceHash":"56e1889b47b491894bbe347759f68e378db4413251762af53a0762f31cf99f95","subsystem":"editor","recordType":"api-module","id":"module:editor/js/viewport/SkinRenderer.js","title":"viewport/SkinRenderer","summary":"SkinRenderer — System 2: High-Detail Body Skin ================================================ Renders the ACTUAL mesh geometry of the entity, semi-transparent, with a warm skin tone. Full triangle count of the imported model — this is NOT a hull approximation. The mesh IS the skin layer. LAYER ROLE: Inner visible layer — shows the real body geometry as a translucent skin shell. Since it uses the same mesh as the actual entity render, it is perfectly shape-accurate at full detail. VISUAL: - Full-res model mesh, warm skin tone [0.9, 0.6, 0.4, 0.28] - Rendered via the existing 'custom_<uuid>' mesh key already in EntityMeshRenderer - No separate mesh registration needed — the mesh is already uploaded DATA SOURCE: EntityMeshRenderer already has the 'custom_<uuid>' mesh registered when the entity loads. No separate computation needed — just pass entity transform directly. INDEPENDENCE: - No external imports needed beyond EntityMeshRenderer (draw) - No reference to AuraRenderer, SkeletonRenderer, SDFColliderRenderer","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/SkinRenderer.md","moduleTitle":"viewport/SkinRenderer","source":"editor/js/viewport/SkinRenderer.js","import":"/editor/js/viewport/SkinRenderer.js","sourceHash":"56e1889b47b491894bbe347759f68e378db4413251762af53a0762f31cf99f95","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/viewport/SkinRenderer.js#0000:SkinRenderer","exportIndex":0,"name":"SkinRenderer","kind":"class","signature":"class SkinRenderer","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/SurfaceGridRenderer.md","moduleTitle":"viewport/SurfaceGridRenderer","source":"editor/js/viewport/SurfaceGridRenderer.js","import":"/editor/js/viewport/SurfaceGridRenderer.js","sourceHash":"5e59066084c974ded5200d0a3b1faecb515b662ec38cb375cecaa2ab5d4efb2d","subsystem":"editor","recordType":"api-module","id":"module:editor/js/viewport/SurfaceGridRenderer.js","title":"viewport/SurfaceGridRenderer","summary":"SurfaceGridRenderer.js GMod-style surface grid overlay for precise tool placement Shows a transparent green grid aligned to the surface normal","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/SurfaceGridRenderer.md","moduleTitle":"viewport/SurfaceGridRenderer","source":"editor/js/viewport/SurfaceGridRenderer.js","import":"/editor/js/viewport/SurfaceGridRenderer.js","sourceHash":"5e59066084c974ded5200d0a3b1faecb515b662ec38cb375cecaa2ab5d4efb2d","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/viewport/SurfaceGridRenderer.js#0000:SurfaceGridRenderer","exportIndex":0,"name":"SurfaceGridRenderer","kind":"class","signature":"class SurfaceGridRenderer","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/ViewportMeshUtils.md","moduleTitle":"viewport/ViewportMeshUtils","source":"editor/js/viewport/ViewportMeshUtils.js","import":"/editor/js/viewport/ViewportMeshUtils.js","sourceHash":"d6a6704aa13454e7e3ded7da3955846153918de2125a8df9354938df0066c3ba","subsystem":"editor","recordType":"api-module","id":"module:editor/js/viewport/ViewportMeshUtils.js","title":"viewport/ViewportMeshUtils","summary":"ViewportMeshUtils - Mesh type inference and color mapping utilities Extracted from Viewport.js for modularity","exportCount":14}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/ViewportMeshUtils.md","moduleTitle":"viewport/ViewportMeshUtils","source":"editor/js/viewport/ViewportMeshUtils.js","import":"/editor/js/viewport/ViewportMeshUtils.js","sourceHash":"d6a6704aa13454e7e3ded7da3955846153918de2125a8df9354938df0066c3ba","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/viewport/ViewportMeshUtils.js#0000:getSpawnIdLower","exportIndex":0,"name":"getSpawnIdLower","kind":"function","signature":"getSpawnIdLower(entityMeta)","summary":"Get lowercase spawnId for an entityMeta (no caching — small string allocs are cheaper than WeakMap GC overhead)"}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/ViewportMeshUtils.md","moduleTitle":"viewport/ViewportMeshUtils","source":"editor/js/viewport/ViewportMeshUtils.js","import":"/editor/js/viewport/ViewportMeshUtils.js","sourceHash":"d6a6704aa13454e7e3ded7da3955846153918de2125a8df9354938df0066c3ba","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/viewport/ViewportMeshUtils.js#0001:isEmitterEntity","exportIndex":1,"name":"isEmitterEntity","kind":"function","signature":"isEmitterEntity(entityMeta)","summary":"Check if entityMeta represents an emitter"}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/ViewportMeshUtils.md","moduleTitle":"viewport/ViewportMeshUtils","source":"editor/js/viewport/ViewportMeshUtils.js","import":"/editor/js/viewport/ViewportMeshUtils.js","sourceHash":"d6a6704aa13454e7e3ded7da3955846153918de2125a8df9354938df0066c3ba","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/viewport/ViewportMeshUtils.js#0002:getEntityMeshTypes","exportIndex":2,"name":"getEntityMeshTypes","kind":"function","signature":"getEntityMeshTypes(entityMeta, fallbackMeshType = null)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/ViewportMeshUtils.md","moduleTitle":"viewport/ViewportMeshUtils","source":"editor/js/viewport/ViewportMeshUtils.js","import":"/editor/js/viewport/ViewportMeshUtils.js","sourceHash":"d6a6704aa13454e7e3ded7da3955846153918de2125a8df9354938df0066c3ba","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/viewport/ViewportMeshUtils.js#0003:getEntityMeshParts","exportIndex":3,"name":"getEntityMeshParts","kind":"function","signature":"getEntityMeshParts(entityMeta, fallbackMeshType = null)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/ViewportMeshUtils.md","moduleTitle":"viewport/ViewportMeshUtils","source":"editor/js/viewport/ViewportMeshUtils.js","import":"/editor/js/viewport/ViewportMeshUtils.js","sourceHash":"d6a6704aa13454e7e3ded7da3955846153918de2125a8df9354938df0066c3ba","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/viewport/ViewportMeshUtils.js#0004:getModelPartLocalMatrix","exportIndex":4,"name":"getModelPartLocalMatrix","kind":"function","signature":"getModelPartLocalMatrix(part, animatedMatrix = null)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/ViewportMeshUtils.md","moduleTitle":"viewport/ViewportMeshUtils","source":"editor/js/viewport/ViewportMeshUtils.js","import":"/editor/js/viewport/ViewportMeshUtils.js","sourceHash":"d6a6704aa13454e7e3ded7da3955846153918de2125a8df9354938df0066c3ba","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/viewport/ViewportMeshUtils.js#0005:composeEntityPartMatrix","exportIndex":5,"name":"composeEntityPartMatrix","kind":"function","signature":"composeEntityPartMatrix(position, rotation, scale, part, animatedMatrix = null)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/ViewportMeshUtils.md","moduleTitle":"viewport/ViewportMeshUtils","source":"editor/js/viewport/ViewportMeshUtils.js","import":"/editor/js/viewport/ViewportMeshUtils.js","sourceHash":"d6a6704aa13454e7e3ded7da3955846153918de2125a8df9354938df0066c3ba","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/viewport/ViewportMeshUtils.js#0006:transformAabbByMatrix","exportIndex":6,"name":"transformAabbByMatrix","kind":"function","signature":"transformAabbByMatrix(bounds, matrix)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/ViewportMeshUtils.md","moduleTitle":"viewport/ViewportMeshUtils","source":"editor/js/viewport/ViewportMeshUtils.js","import":"/editor/js/viewport/ViewportMeshUtils.js","sourceHash":"d6a6704aa13454e7e3ded7da3955846153918de2125a8df9354938df0066c3ba","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/viewport/ViewportMeshUtils.js#0007:getAggregateMeshBounds","exportIndex":7,"name":"getAggregateMeshBounds","kind":"function","signature":"getAggregateMeshBounds(entityMeta, meshRenderer, fallbackMeshType = null, resolveAnimatedMatrix = null)","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/ViewportMeshUtils.md","moduleTitle":"viewport/ViewportMeshUtils","source":"editor/js/viewport/ViewportMeshUtils.js","import":"/editor/js/viewport/ViewportMeshUtils.js","sourceHash":"d6a6704aa13454e7e3ded7da3955846153918de2125a8df9354938df0066c3ba","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/viewport/ViewportMeshUtils.js#0008:inferMeshMaterial","exportIndex":8,"name":"inferMeshMaterial","kind":"function","signature":"inferMeshMaterial(meshType)","summary":"Get PBR material properties for a mesh type"}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/ViewportMeshUtils.md","moduleTitle":"viewport/ViewportMeshUtils","source":"editor/js/viewport/ViewportMeshUtils.js","import":"/editor/js/viewport/ViewportMeshUtils.js","sourceHash":"d6a6704aa13454e7e3ded7da3955846153918de2125a8df9354938df0066c3ba","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/viewport/ViewportMeshUtils.js#0009:inferEntityMeshTypeAndColor","exportIndex":9,"name":"inferEntityMeshTypeAndColor","kind":"function","signature":"inferEntityMeshTypeAndColor(entityMeta)","summary":"Infer mesh type and color from entity metadata Results are cached for performance"}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/ViewportMeshUtils.md","moduleTitle":"viewport/ViewportMeshUtils","source":"editor/js/viewport/ViewportMeshUtils.js","import":"/editor/js/viewport/ViewportMeshUtils.js","sourceHash":"d6a6704aa13454e7e3ded7da3955846153918de2125a8df9354938df0066c3ba","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/viewport/ViewportMeshUtils.js#0010:clearMeshTypeCache","exportIndex":10,"name":"clearMeshTypeCache","kind":"function","signature":"clearMeshTypeCache()","summary":"Clear mesh type cache (call when entities are added/removed/renamed)"}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/ViewportMeshUtils.md","moduleTitle":"viewport/ViewportMeshUtils","source":"editor/js/viewport/ViewportMeshUtils.js","import":"/editor/js/viewport/ViewportMeshUtils.js","sourceHash":"d6a6704aa13454e7e3ded7da3955846153918de2125a8df9354938df0066c3ba","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/viewport/ViewportMeshUtils.js#0011:snapToGrid","exportIndex":11,"name":"snapToGrid","kind":"function","signature":"snapToGrid(value, gridSize, enabled)","summary":"Snap a value to grid"}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/ViewportMeshUtils.md","moduleTitle":"viewport/ViewportMeshUtils","source":"editor/js/viewport/ViewportMeshUtils.js","import":"/editor/js/viewport/ViewportMeshUtils.js","sourceHash":"d6a6704aa13454e7e3ded7da3955846153918de2125a8df9354938df0066c3ba","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/viewport/ViewportMeshUtils.js#0012:DEFAULT_COLOR","exportIndex":12,"name":"DEFAULT_COLOR","kind":"re-export","signature":"DEFAULT_COLOR","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/ViewportMeshUtils.md","moduleTitle":"viewport/ViewportMeshUtils","source":"editor/js/viewport/ViewportMeshUtils.js","import":"/editor/js/viewport/ViewportMeshUtils.js","sourceHash":"d6a6704aa13454e7e3ded7da3955846153918de2125a8df9354938df0066c3ba","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/viewport/ViewportMeshUtils.js#0013:MESH_TYPE_COLORS","exportIndex":13,"name":"MESH_TYPE_COLORS","kind":"re-export","signature":"MESH_TYPE_COLORS","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/ViewportProfiler.md","moduleTitle":"viewport/ViewportProfiler","source":"editor/js/viewport/ViewportProfiler.js","import":"/editor/js/viewport/ViewportProfiler.js","sourceHash":"750e6d51fe652b34b79d0df1b853823de999463ce03420cd85fc48845a886cf4","subsystem":"editor","recordType":"api-module","id":"module:editor/js/viewport/ViewportProfiler.js","title":"viewport/ViewportProfiler","summary":"ViewportProfiler - Performance profiler UI for the viewport Extracted from Viewport.js for modularity","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/ViewportProfiler.md","moduleTitle":"viewport/ViewportProfiler","source":"editor/js/viewport/ViewportProfiler.js","import":"/editor/js/viewport/ViewportProfiler.js","sourceHash":"750e6d51fe652b34b79d0df1b853823de999463ce03420cd85fc48845a886cf4","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/viewport/ViewportProfiler.js#0000:ViewportProfiler","exportIndex":0,"name":"ViewportProfiler","kind":"class","signature":"class ViewportProfiler","summary":""}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/ViewportRaycasting.md","moduleTitle":"viewport/ViewportRaycasting","source":"editor/js/viewport/ViewportRaycasting.js","import":"/editor/js/viewport/ViewportRaycasting.js","sourceHash":"aab744e4f628740bea2ded19bb0457fff83e07c1cc845bee2fcefd12265d4807","subsystem":"editor","recordType":"api-module","id":"module:editor/js/viewport/ViewportRaycasting.js","title":"viewport/ViewportRaycasting","summary":"ViewportRaycasting.js - Pure raycasting math utilities Extracted from Viewport.js for modularity","exportCount":7}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/ViewportRaycasting.md","moduleTitle":"viewport/ViewportRaycasting","source":"editor/js/viewport/ViewportRaycasting.js","import":"/editor/js/viewport/ViewportRaycasting.js","sourceHash":"aab744e4f628740bea2ded19bb0457fff83e07c1cc845bee2fcefd12265d4807","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/viewport/ViewportRaycasting.js#0000:rayGroundPlaneIntersect","exportIndex":0,"name":"rayGroundPlaneIntersect","kind":"function","signature":"rayGroundPlaneIntersect(rayOrigin, rayDir, planeY = 0)","summary":"Ray-ground plane intersection"}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/ViewportRaycasting.md","moduleTitle":"viewport/ViewportRaycasting","source":"editor/js/viewport/ViewportRaycasting.js","import":"/editor/js/viewport/ViewportRaycasting.js","sourceHash":"aab744e4f628740bea2ded19bb0457fff83e07c1cc845bee2fcefd12265d4807","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/viewport/ViewportRaycasting.js#0001:raySegmentDistance","exportIndex":1,"name":"raySegmentDistance","kind":"function","signature":"raySegmentDistance(rayOrigin, rayDir, segA, segB)","summary":"Calculate distance from ray to line segment (for rope picking)"}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/ViewportRaycasting.md","moduleTitle":"viewport/ViewportRaycasting","source":"editor/js/viewport/ViewportRaycasting.js","import":"/editor/js/viewport/ViewportRaycasting.js","sourceHash":"aab744e4f628740bea2ded19bb0457fff83e07c1cc845bee2fcefd12265d4807","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/viewport/ViewportRaycasting.js#0002:raySphereIntersect","exportIndex":2,"name":"raySphereIntersect","kind":"function","signature":"raySphereIntersect(rayOrigin, rayDir, sphereCenter, radius)","summary":"Ray-sphere intersection test"}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/ViewportRaycasting.md","moduleTitle":"viewport/ViewportRaycasting","source":"editor/js/viewport/ViewportRaycasting.js","import":"/editor/js/viewport/ViewportRaycasting.js","sourceHash":"aab744e4f628740bea2ded19bb0457fff83e07c1cc845bee2fcefd12265d4807","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/viewport/ViewportRaycasting.js#0003:rotatePointByQuaternion","exportIndex":3,"name":"rotatePointByQuaternion","kind":"function","signature":"rotatePointByQuaternion(point, quat)","summary":"Rotate a point by quaternion"}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/ViewportRaycasting.md","moduleTitle":"viewport/ViewportRaycasting","source":"editor/js/viewport/ViewportRaycasting.js","import":"/editor/js/viewport/ViewportRaycasting.js","sourceHash":"aab744e4f628740bea2ded19bb0457fff83e07c1cc845bee2fcefd12265d4807","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/viewport/ViewportRaycasting.js#0004:multiplyQuaternions","exportIndex":4,"name":"multiplyQuaternions","kind":"function","signature":"multiplyQuaternions(a, b)","summary":"Multiply two quaternions: result = a * b"}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/ViewportRaycasting.md","moduleTitle":"viewport/ViewportRaycasting","source":"editor/js/viewport/ViewportRaycasting.js","import":"/editor/js/viewport/ViewportRaycasting.js","sourceHash":"aab744e4f628740bea2ded19bb0457fff83e07c1cc845bee2fcefd12265d4807","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/viewport/ViewportRaycasting.js#0005:rayOBBIntersect","exportIndex":5,"name":"rayOBBIntersect","kind":"function","signature":"rayOBBIntersect(rayOrigin, rayDir, boxCenter, boxRotation, halfExtents)","summary":"Ray-OBB (Oriented Bounding Box) intersection"}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/ViewportRaycasting.md","moduleTitle":"viewport/ViewportRaycasting","source":"editor/js/viewport/ViewportRaycasting.js","import":"/editor/js/viewport/ViewportRaycasting.js","sourceHash":"aab744e4f628740bea2ded19bb0457fff83e07c1cc845bee2fcefd12265d4807","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/viewport/ViewportRaycasting.js#0006:closestPointOnAxis","exportIndex":6,"name":"closestPointOnAxis","kind":"function","signature":"closestPointOnAxis(rayOrigin, rayDir, axisOrigin, axisDir)","summary":"Closest point on axis from ray"}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/stages/FixedStepStages.md","moduleTitle":"viewport/stages/FixedStepStages","source":"editor/js/viewport/stages/FixedStepStages.js","import":"/editor/js/viewport/stages/FixedStepStages.js","sourceHash":"a47d08836d2629a90568ccbc1624487771562c3309f0396e2c5f3701070871c3","subsystem":"editor","recordType":"api-module","id":"module:editor/js/viewport/stages/FixedStepStages.js","title":"viewport/stages/FixedStepStages","summary":"FixedStepStages — Physics, elastic drag, sim audio, particle step. These run 0..N times per frame on a fixed timestep accumulator. Only active in play mode (condition-gated).","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/stages/FixedStepStages.md","moduleTitle":"viewport/stages/FixedStepStages","source":"editor/js/viewport/stages/FixedStepStages.js","import":"/editor/js/viewport/stages/FixedStepStages.js","sourceHash":"a47d08836d2629a90568ccbc1624487771562c3309f0396e2c5f3701070871c3","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/viewport/stages/FixedStepStages.js#0000:registerFixedStepStages","exportIndex":0,"name":"registerFixedStepStages","kind":"function","signature":"registerFixedStepStages(pipeline, vp)","summary":"Register all fixedStep-phase stages into the pipeline."}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/stages/PostRenderStages.md","moduleTitle":"viewport/stages/PostRenderStages","source":"editor/js/viewport/stages/PostRenderStages.js","import":"/editor/js/viewport/stages/PostRenderStages.js","sourceHash":"9e94d6f9f61ca501cba58a619e65410bc717ccde6eb69c3b95a86201ffbff715","subsystem":"editor","recordType":"api-module","id":"module:editor/js/viewport/stages/PostRenderStages.js","title":"viewport/stages/PostRenderStages","summary":"PostRenderStages — Composite passes, post-FX, GPU submit, profiler, spike detection, collab presence. During the transitional period, post-render work still lives inside Viewport.renderFrame(). These stages will be populated one-by-one as code is extracted.","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/stages/PostRenderStages.md","moduleTitle":"viewport/stages/PostRenderStages","source":"editor/js/viewport/stages/PostRenderStages.js","import":"/editor/js/viewport/stages/PostRenderStages.js","sourceHash":"9e94d6f9f61ca501cba58a619e65410bc717ccde6eb69c3b95a86201ffbff715","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/viewport/stages/PostRenderStages.js#0000:registerPostRenderStages","exportIndex":0,"name":"registerPostRenderStages","kind":"function","signature":"registerPostRenderStages(pipeline, vp)","summary":"Register all postRender-phase stages into the pipeline."}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/stages/RenderStages.md","moduleTitle":"viewport/stages/RenderStages","source":"editor/js/viewport/stages/RenderStages.js","import":"/editor/js/viewport/stages/RenderStages.js","sourceHash":"a98b5d5df8ab2502210769ef84efd71d8cf353142b99b859fc612abd776a010a","subsystem":"editor","recordType":"api-module","id":"module:editor/js/viewport/stages/RenderStages.js","title":"viewport/stages/RenderStages","summary":"RenderStages — GPU render pass stages: debug targets, volume compute, clear pass, grid, entities, physics lines, cloth, surface grid, particles, diagnostics, SDF colliders, bone directions, gizmos. During the transitional period, the main renderFrame() body still runs inline. These stages will be populated one-by-one as code is extracted from Viewport.renderFrame(). Stage order values reserve gaps (10, 20, 30…) so new stages can be inserted between existing ones without renumbering.","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/stages/RenderStages.md","moduleTitle":"viewport/stages/RenderStages","source":"editor/js/viewport/stages/RenderStages.js","import":"/editor/js/viewport/stages/RenderStages.js","sourceHash":"a98b5d5df8ab2502210769ef84efd71d8cf353142b99b859fc612abd776a010a","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/viewport/stages/RenderStages.js#0000:registerRenderStages","exportIndex":0,"name":"registerRenderStages","kind":"function","signature":"registerRenderStages(pipeline, vp)","summary":"Register all render-phase stages into the pipeline."}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/stages/UpdateStages.md","moduleTitle":"viewport/stages/UpdateStages","source":"editor/js/viewport/stages/UpdateStages.js","import":"/editor/js/viewport/stages/UpdateStages.js","sourceHash":"ba2e50edc6527a13cae7f49c699ac4d5568a61bfcde124de823b2ff859a94ddc","subsystem":"editor","recordType":"api-module","id":"module:editor/js/viewport/stages/UpdateStages.js","title":"viewport/stages/UpdateStages","summary":"UpdateStages — Per-frame update logic: timing, vGPU, camera, matrices, lights, animation, frustum, collab, stats UI, cleanup. Runs once per frame before GPU render passes.","exportCount":1}
{"schemaVersion":1,"modulePath":"editor/reference/viewport/stages/UpdateStages.md","moduleTitle":"viewport/stages/UpdateStages","source":"editor/js/viewport/stages/UpdateStages.js","import":"/editor/js/viewport/stages/UpdateStages.js","sourceHash":"ba2e50edc6527a13cae7f49c699ac4d5568a61bfcde124de823b2ff859a94ddc","subsystem":"editor","recordType":"api-symbol","id":"symbol:editor/js/viewport/stages/UpdateStages.js#0000:registerUpdateStages","exportIndex":0,"name":"registerUpdateStages","kind":"function","signature":"registerUpdateStages(pipeline, vp)","summary":"Register all update-phase stages into the pipeline."}
{"schemaVersion":1,"modulePath":"editor/reference/workers/CollabSignalWorker.md","moduleTitle":"workers/CollabSignalWorker","source":"editor/js/workers/CollabSignalWorker.js","import":"/editor/js/workers/CollabSignalWorker.js","sourceHash":"b432979ffa2747b6e60d4ae1562351b249c0241d08c1ed78edf65b672a7e71e9","subsystem":"editor","recordType":"api-module","id":"module:editor/js/workers/CollabSignalWorker.js","title":"workers/CollabSignalWorker","summary":"CollabSignalWorker.js — SharedWorker In-memory SDP relay for all editor tabs on the same machine. Runs once per origin, shared across all tabs. Message types (client → worker): HELLO    { peerId, username } OFFER    { from, to, offerId, payload } ANSWER   { from, to, offerId, payload } CANDIDATE { from, to, offerId, payload } LEAVE    { peerId } LIST     (request peer list) Message types (worker → client): HELLO_ACK   { peerId, peers: [{peerId, username}] } PEER_JOINED { peerId, username } PEER_LEFT   { peerId } OFFER       { from, to, offerId, payload } ANSWER      { from, to, offerId, payload } CANDIDATE   { from, to, offerId, payload } LIST        { peers: [{peerId, username}] }","exportCount":0}
{"schemaVersion":1,"modulePath":"editor/reference/workers/CompressionWorker.md","moduleTitle":"workers/CompressionWorker","source":"editor/js/workers/CompressionWorker.js","import":"/editor/js/workers/CompressionWorker.js","sourceHash":"da8c2f3f14a29e9c2dce9912936eef946bf180e835d7cea7b5e0423a72bc8b10","subsystem":"editor","recordType":"api-module","id":"module:editor/js/workers/CompressionWorker.js","title":"workers/CompressionWorker","summary":"CompressionWorker - Offloads timeline/history compression to background thread Uses delta+entropy residual encoding for lossless reconstruction","exportCount":0}
{"schemaVersion":1,"modulePath":"editor/reference/workers/ProfilerCanvasWorker.md","moduleTitle":"workers/ProfilerCanvasWorker","source":"editor/js/workers/ProfilerCanvasWorker.js","import":"/editor/js/workers/ProfilerCanvasWorker.js","sourceHash":"f8c087f2eada652469df7f1ca9ac12d12cc481164bd979ec154ad7071d29c150","subsystem":"editor","recordType":"api-module","id":"module:editor/js/workers/ProfilerCanvasWorker.js","title":"workers/ProfilerCanvasWorker","summary":"ProfilerCanvasWorker.js - OffscreenCanvas worker for profiler rendering Moves ALL canvas rendering off the main thread: - Timeline graph - Thread lanes - Flame graph bars Main thread only sends frame data, worker handles all drawing.","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/EcsImports.md","moduleTitle":"EcsImports","source":"engine/EcsImports.js","import":"/engine/EcsImports.js","sourceHash":"b34f5d45409cca55fac88d7cbd4ea3f85d5cd27da9a535a5a77b3544a1ddd966","subsystem":"engine","recordType":"api-module","id":"module:engine/EcsImports.js","title":"EcsImports","summary":"","exportCount":20}
{"schemaVersion":1,"modulePath":"engine/reference/EcsImports.md","moduleTitle":"EcsImports","source":"engine/EcsImports.js","import":"/engine/EcsImports.js","sourceHash":"b34f5d45409cca55fac88d7cbd4ea3f85d5cd27da9a535a5a77b3544a1ddd966","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EcsImports.js#0000:World","exportIndex":0,"name":"World","kind":"constant","signature":"World","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EcsImports.md","moduleTitle":"EcsImports","source":"engine/EcsImports.js","import":"/engine/EcsImports.js","sourceHash":"b34f5d45409cca55fac88d7cbd4ea3f85d5cd27da9a535a5a77b3544a1ddd966","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EcsImports.js#0001:Camera","exportIndex":1,"name":"Camera","kind":"constant","signature":"Camera","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EcsImports.md","moduleTitle":"EcsImports","source":"engine/EcsImports.js","import":"/engine/EcsImports.js","sourceHash":"b34f5d45409cca55fac88d7cbd4ea3f85d5cd27da9a535a5a77b3544a1ddd966","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EcsImports.js#0002:Light","exportIndex":2,"name":"Light","kind":"constant","signature":"Light","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EcsImports.md","moduleTitle":"EcsImports","source":"engine/EcsImports.js","import":"/engine/EcsImports.js","sourceHash":"b34f5d45409cca55fac88d7cbd4ea3f85d5cd27da9a535a5a77b3544a1ddd966","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EcsImports.js#0003:PhysicsBody","exportIndex":3,"name":"PhysicsBody","kind":"constant","signature":"PhysicsBody","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EcsImports.md","moduleTitle":"EcsImports","source":"engine/EcsImports.js","import":"/engine/EcsImports.js","sourceHash":"b34f5d45409cca55fac88d7cbd4ea3f85d5cd27da9a535a5a77b3544a1ddd966","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EcsImports.js#0004:Collider","exportIndex":4,"name":"Collider","kind":"constant","signature":"Collider","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EcsImports.md","moduleTitle":"EcsImports","source":"engine/EcsImports.js","import":"/engine/EcsImports.js","sourceHash":"b34f5d45409cca55fac88d7cbd4ea3f85d5cd27da9a535a5a77b3544a1ddd966","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EcsImports.js#0005:Transform","exportIndex":5,"name":"Transform","kind":"constant","signature":"Transform","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EcsImports.md","moduleTitle":"EcsImports","source":"engine/EcsImports.js","import":"/engine/EcsImports.js","sourceHash":"b34f5d45409cca55fac88d7cbd4ea3f85d5cd27da9a535a5a77b3544a1ddd966","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EcsImports.js#0006:ParticleEmitter","exportIndex":6,"name":"ParticleEmitter","kind":"constant","signature":"ParticleEmitter","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EcsImports.md","moduleTitle":"EcsImports","source":"engine/EcsImports.js","import":"/engine/EcsImports.js","sourceHash":"b34f5d45409cca55fac88d7cbd4ea3f85d5cd27da9a535a5a77b3544a1ddd966","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EcsImports.js#0007:NetReplicated","exportIndex":7,"name":"NetReplicated","kind":"constant","signature":"NetReplicated","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EcsImports.md","moduleTitle":"EcsImports","source":"engine/EcsImports.js","import":"/engine/EcsImports.js","sourceHash":"b34f5d45409cca55fac88d7cbd4ea3f85d5cd27da9a535a5a77b3544a1ddd966","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EcsImports.js#0008:ReplicationProfiles","exportIndex":8,"name":"ReplicationProfiles","kind":"constant","signature":"ReplicationProfiles","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EcsImports.md","moduleTitle":"EcsImports","source":"engine/EcsImports.js","import":"/engine/EcsImports.js","sourceHash":"b34f5d45409cca55fac88d7cbd4ea3f85d5cd27da9a535a5a77b3544a1ddd966","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EcsImports.js#0009:Storage","exportIndex":9,"name":"Storage","kind":"constant","signature":"Storage","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EcsImports.md","moduleTitle":"EcsImports","source":"engine/EcsImports.js","import":"/engine/EcsImports.js","sourceHash":"b34f5d45409cca55fac88d7cbd4ea3f85d5cd27da9a535a5a77b3544a1ddd966","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EcsImports.js#0010:createCamera","exportIndex":10,"name":"createCamera","kind":"constant","signature":"createCamera","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EcsImports.md","moduleTitle":"EcsImports","source":"engine/EcsImports.js","import":"/engine/EcsImports.js","sourceHash":"b34f5d45409cca55fac88d7cbd4ea3f85d5cd27da9a535a5a77b3544a1ddd966","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EcsImports.js#0011:createLight","exportIndex":11,"name":"createLight","kind":"constant","signature":"createLight","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EcsImports.md","moduleTitle":"EcsImports","source":"engine/EcsImports.js","import":"/engine/EcsImports.js","sourceHash":"b34f5d45409cca55fac88d7cbd4ea3f85d5cd27da9a535a5a77b3544a1ddd966","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EcsImports.js#0012:createPhysicsBody","exportIndex":12,"name":"createPhysicsBody","kind":"constant","signature":"createPhysicsBody","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EcsImports.md","moduleTitle":"EcsImports","source":"engine/EcsImports.js","import":"/engine/EcsImports.js","sourceHash":"b34f5d45409cca55fac88d7cbd4ea3f85d5cd27da9a535a5a77b3544a1ddd966","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EcsImports.js#0013:createCollider","exportIndex":13,"name":"createCollider","kind":"constant","signature":"createCollider","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EcsImports.md","moduleTitle":"EcsImports","source":"engine/EcsImports.js","import":"/engine/EcsImports.js","sourceHash":"b34f5d45409cca55fac88d7cbd4ea3f85d5cd27da9a535a5a77b3544a1ddd966","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EcsImports.js#0014:createTransform","exportIndex":14,"name":"createTransform","kind":"constant","signature":"createTransform","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EcsImports.md","moduleTitle":"EcsImports","source":"engine/EcsImports.js","import":"/engine/EcsImports.js","sourceHash":"b34f5d45409cca55fac88d7cbd4ea3f85d5cd27da9a535a5a77b3544a1ddd966","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EcsImports.js#0015:createParticleEmitter","exportIndex":15,"name":"createParticleEmitter","kind":"constant","signature":"createParticleEmitter","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EcsImports.md","moduleTitle":"EcsImports","source":"engine/EcsImports.js","import":"/engine/EcsImports.js","sourceHash":"b34f5d45409cca55fac88d7cbd4ea3f85d5cd27da9a535a5a77b3544a1ddd966","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EcsImports.js#0016:createNetReplicated","exportIndex":16,"name":"createNetReplicated","kind":"constant","signature":"createNetReplicated","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EcsImports.md","moduleTitle":"EcsImports","source":"engine/EcsImports.js","import":"/engine/EcsImports.js","sourceHash":"b34f5d45409cca55fac88d7cbd4ea3f85d5cd27da9a535a5a77b3544a1ddd966","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EcsImports.js#0017:setEntityComponent","exportIndex":17,"name":"setEntityComponent","kind":"constant","signature":"setEntityComponent","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EcsImports.md","moduleTitle":"EcsImports","source":"engine/EcsImports.js","import":"/engine/EcsImports.js","sourceHash":"b34f5d45409cca55fac88d7cbd4ea3f85d5cd27da9a535a5a77b3544a1ddd966","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EcsImports.js#0018:getEntityComponent","exportIndex":18,"name":"getEntityComponent","kind":"constant","signature":"getEntityComponent","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EcsImports.md","moduleTitle":"EcsImports","source":"engine/EcsImports.js","import":"/engine/EcsImports.js","sourceHash":"b34f5d45409cca55fac88d7cbd4ea3f85d5cd27da9a535a5a77b3544a1ddd966","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EcsImports.js#0019:removeEntityComponent","exportIndex":19,"name":"removeEntityComponent","kind":"constant","signature":"removeEntityComponent","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-module","id":"module:engine/EngineBootstrap.js","title":"EngineBootstrap","summary":"EngineBootstrap.js - Unified engine import for games and tests Single import point for all engine functionality: - Math utilities - ECS (Entity Component System) - Rendering (meshes, shaders, pipelines) - Tools (inspector, camera, physics sandbox) - GPU utilities (buffers, WebGPU init) - Simulation (particles, fluids) - Configuration","exportCount":678}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0000:Engine","exportIndex":0,"name":"Engine","kind":"constant","signature":"Engine","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0001:ADAPTIVE_QUALITY_TIERS","exportIndex":1,"name":"ADAPTIVE_QUALITY_TIERS","kind":"re-export","signature":"ADAPTIVE_QUALITY_TIERS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0002:AGI_CORE_FULL","exportIndex":2,"name":"AGI_CORE_FULL","kind":"re-export","signature":"AGI_CORE_FULL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0003:AGI_CORE_VERSION","exportIndex":3,"name":"AGI_CORE_VERSION","kind":"re-export","signature":"AGI_CORE_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0004:AI","exportIndex":4,"name":"AI","kind":"re-export","signature":"AI","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0005:AdaptiveQualityGovernor","exportIndex":5,"name":"AdaptiveQualityGovernor","kind":"re-export","signature":"AdaptiveQualityGovernor","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0006:Anatomy","exportIndex":6,"name":"Anatomy","kind":"re-export","signature":"Anatomy","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0007:Animation","exportIndex":7,"name":"Animation","kind":"re-export","signature":"Animation","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0008:AnimationLearning","exportIndex":8,"name":"AnimationLearning","kind":"re-export","signature":"AnimationLearning","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0009:Assets","exportIndex":9,"name":"Assets","kind":"re-export","signature":"Assets","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0010:Audio","exportIndex":10,"name":"Audio","kind":"re-export","signature":"Audio","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0011:BUILD_TAG","exportIndex":11,"name":"BUILD_TAG","kind":"re-export","signature":"BUILD_TAG","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0012:BVHBuilder","exportIndex":12,"name":"BVHBuilder","kind":"re-export","signature":"BVHBuilder","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0013:BVHNode","exportIndex":13,"name":"BVHNode","kind":"re-export","signature":"BVHNode","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0014:CAMERA_CONTROLLER_LIMITS","exportIndex":14,"name":"CAMERA_CONTROLLER_LIMITS","kind":"re-export","signature":"CAMERA_CONTROLLER_LIMITS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0015:CORE_STORYLETS","exportIndex":15,"name":"CORE_STORYLETS","kind":"re-export","signature":"CORE_STORYLETS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0016:CitySystem","exportIndex":16,"name":"CitySystem","kind":"re-export","signature":"CitySystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0017:Collab","exportIndex":17,"name":"Collab","kind":"re-export","signature":"Collab","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0018:Compat","exportIndex":18,"name":"Compat","kind":"re-export","signature":"Compat","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0019:Config","exportIndex":19,"name":"Config","kind":"re-export","signature":"Config","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0020:ContractSystem","exportIndex":20,"name":"ContractSystem","kind":"re-export","signature":"ContractSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0021:Core","exportIndex":21,"name":"Core","kind":"re-export","signature":"Core","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0022:CrimeType","exportIndex":22,"name":"CrimeType","kind":"re-export","signature":"CrimeType","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0023:DEFAULT_CONFIG","exportIndex":23,"name":"DEFAULT_CONFIG","kind":"re-export","signature":"DEFAULT_CONFIG","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0024:DEFAULT_CRYSTAL_PARAMS","exportIndex":24,"name":"DEFAULT_CRYSTAL_PARAMS","kind":"re-export","signature":"DEFAULT_CRYSTAL_PARAMS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0025:DEFAULT_PHYSICS","exportIndex":25,"name":"DEFAULT_PHYSICS","kind":"re-export","signature":"DEFAULT_PHYSICS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0026:DEFAULT_RENDER","exportIndex":26,"name":"DEFAULT_RENDER","kind":"re-export","signature":"DEFAULT_RENDER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0027:DEFAULT_STANDARD_INPUT_ACTION_MAP","exportIndex":27,"name":"DEFAULT_STANDARD_INPUT_ACTION_MAP","kind":"re-export","signature":"DEFAULT_STANDARD_INPUT_ACTION_MAP","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0028:DialogueRunner","exportIndex":28,"name":"DialogueRunner","kind":"re-export","signature":"DialogueRunner","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0029:DialogueSystem","exportIndex":29,"name":"DialogueSystem","kind":"re-export","signature":"DialogueSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0030:DirectorEventType","exportIndex":30,"name":"DirectorEventType","kind":"re-export","signature":"DirectorEventType","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0031:DomainGraph","exportIndex":31,"name":"DomainGraph","kind":"re-export","signature":"DomainGraph","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0032:DriveType","exportIndex":32,"name":"DriveType","kind":"re-export","signature":"DriveType","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0033:EDITOR_FULL","exportIndex":33,"name":"EDITOR_FULL","kind":"re-export","signature":"EDITOR_FULL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0034:EDITOR_STARTED","exportIndex":34,"name":"EDITOR_STARTED","kind":"re-export","signature":"EDITOR_STARTED","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0035:EDITOR_VERSION","exportIndex":35,"name":"EDITOR_VERSION","kind":"re-export","signature":"EDITOR_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0036:ELEMENTS","exportIndex":36,"name":"ELEMENTS","kind":"re-export","signature":"ELEMENTS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0037:EMITTER_TYPES","exportIndex":37,"name":"EMITTER_TYPES","kind":"re-export","signature":"EMITTER_TYPES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0038:ENGINE_FULL","exportIndex":38,"name":"ENGINE_FULL","kind":"re-export","signature":"ENGINE_FULL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0039:ENGINE_STARTED","exportIndex":39,"name":"ENGINE_STARTED","kind":"re-export","signature":"ENGINE_STARTED","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0040:ENGINE_VERSION","exportIndex":40,"name":"ENGINE_VERSION","kind":"re-export","signature":"ENGINE_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0041:EPSILON","exportIndex":41,"name":"EPSILON","kind":"re-export","signature":"EPSILON","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0042:EquipSlot","exportIndex":42,"name":"EquipSlot","kind":"re-export","signature":"EquipSlot","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0043:EventGraph","exportIndex":43,"name":"EventGraph","kind":"re-export","signature":"EventGraph","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0044:FactionAction","exportIndex":44,"name":"FactionAction","kind":"re-export","signature":"FactionAction","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0045:FactionGraph","exportIndex":45,"name":"FactionGraph","kind":"re-export","signature":"FactionGraph","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0046:FluidPhase","exportIndex":46,"name":"FluidPhase","kind":"re-export","signature":"FluidPhase","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0047:GPUTimestampProfiler","exportIndex":47,"name":"GPUTimestampProfiler","kind":"re-export","signature":"GPUTimestampProfiler","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0048:GRAB_CONTROLLER_LIMITS","exportIndex":48,"name":"GRAB_CONTROLLER_LIMITS","kind":"re-export","signature":"GRAB_CONTROLLER_LIMITS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0049:HiZPass","exportIndex":49,"name":"HiZPass","kind":"re-export","signature":"HiZPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0050:INF_T","exportIndex":50,"name":"INF_T","kind":"re-export","signature":"INF_T","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0051:ImageHeatHazePass","exportIndex":51,"name":"ImageHeatHazePass","kind":"re-export","signature":"ImageHeatHazePass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0052:IndexedClusterCuller","exportIndex":52,"name":"IndexedClusterCuller","kind":"re-export","signature":"IndexedClusterCuller","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0053:InstinctGraph","exportIndex":53,"name":"InstinctGraph","kind":"re-export","signature":"InstinctGraph","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0054:Inventory","exportIndex":54,"name":"Inventory","kind":"re-export","signature":"Inventory","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0055:ItemOwnership","exportIndex":55,"name":"ItemOwnership","kind":"re-export","signature":"ItemOwnership","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0056:ItemSoulSystem","exportIndex":56,"name":"ItemSoulSystem","kind":"re-export","signature":"ItemSoulSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0057:LawGraph","exportIndex":57,"name":"LawGraph","kind":"re-export","signature":"LawGraph","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0058:LifePhases","exportIndex":58,"name":"LifePhases","kind":"re-export","signature":"LifePhases","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0059:Math","exportIndex":59,"name":"Math","kind":"re-export","signature":"Math","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0060:MessageChannel","exportIndex":60,"name":"MessageChannel","kind":"re-export","signature":"MessageChannel","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0061:MotionClip","exportIndex":61,"name":"MotionClip","kind":"re-export","signature":"MotionClip","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0062:MotionDataset","exportIndex":62,"name":"MotionDataset","kind":"re-export","signature":"MotionDataset","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0063:MotionMatcher","exportIndex":63,"name":"MotionMatcher","kind":"re-export","signature":"MotionMatcher","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0064:NPCBrain","exportIndex":64,"name":"NPCBrain","kind":"re-export","signature":"NPCBrain","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0065:Network","exportIndex":65,"name":"Network","kind":"re-export","signature":"Network","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0066:NodeType","exportIndex":66,"name":"NodeType","kind":"re-export","signature":"NodeType","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0067:PARTICLE_PHASE_STRIDE","exportIndex":67,"name":"PARTICLE_PHASE_STRIDE","kind":"re-export","signature":"PARTICLE_PHASE_STRIDE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0068:PARTICLE_QUALITY_PRESETS","exportIndex":68,"name":"PARTICLE_QUALITY_PRESETS","kind":"re-export","signature":"PARTICLE_QUALITY_PRESETS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0069:PLAUNA_FULL","exportIndex":69,"name":"PLAUNA_FULL","kind":"re-export","signature":"PLAUNA_FULL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0070:PLAUNA_VERSION","exportIndex":70,"name":"PLAUNA_VERSION","kind":"re-export","signature":"PLAUNA_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0071:PROXY_MODE","exportIndex":71,"name":"PROXY_MODE","kind":"re-export","signature":"PROXY_MODE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0072:PROXY_TIER","exportIndex":72,"name":"PROXY_TIER","kind":"re-export","signature":"PROXY_TIER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0073:PathTracingPass","exportIndex":73,"name":"PathTracingPass","kind":"re-export","signature":"PathTracingPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0074:PerceptionGraph","exportIndex":74,"name":"PerceptionGraph","kind":"re-export","signature":"PerceptionGraph","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0075:PerceptionLevel","exportIndex":75,"name":"PerceptionLevel","kind":"re-export","signature":"PerceptionLevel","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0076:Phase","exportIndex":76,"name":"Phase","kind":"re-export","signature":"Phase","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0077:PhysXPhysicsWorld","exportIndex":77,"name":"PhysXPhysicsWorld","kind":"re-export","signature":"PhysXPhysicsWorld","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0078:PowerGraph","exportIndex":78,"name":"PowerGraph","kind":"re-export","signature":"PowerGraph","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0079:ProxyBillboardAlign","exportIndex":79,"name":"ProxyBillboardAlign","kind":"re-export","signature":"ProxyBillboardAlign","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0080:ProxyGBufferPass","exportIndex":80,"name":"ProxyGBufferPass","kind":"re-export","signature":"ProxyGBufferPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0081:ProxyGeometrySystem","exportIndex":81,"name":"ProxyGeometrySystem","kind":"re-export","signature":"ProxyGeometrySystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0082:ProxyMaskPass","exportIndex":82,"name":"ProxyMaskPass","kind":"re-export","signature":"ProxyMaskPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0083:ProxyOctahedralCache","exportIndex":83,"name":"ProxyOctahedralCache","kind":"re-export","signature":"ProxyOctahedralCache","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0084:ProxySDF","exportIndex":84,"name":"ProxySDF","kind":"re-export","signature":"ProxySDF","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0085:ProxyShadePass","exportIndex":85,"name":"ProxyShadePass","kind":"re-export","signature":"ProxyShadePass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0086:PunishmentType","exportIndex":86,"name":"PunishmentType","kind":"re-export","signature":"PunishmentType","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0087:RASTERIZER_MODE","exportIndex":87,"name":"RASTERIZER_MODE","kind":"re-export","signature":"RASTERIZER_MODE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0088:RAY_PICKER_LIMITS","exportIndex":88,"name":"RAY_PICKER_LIMITS","kind":"re-export","signature":"RAY_PICKER_LIMITS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0089:ROOM_PICKING_LIMITS","exportIndex":89,"name":"ROOM_PICKING_LIMITS","kind":"re-export","signature":"ROOM_PICKING_LIMITS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0090:ReSTIRGIPass","exportIndex":90,"name":"ReSTIRGIPass","kind":"re-export","signature":"ReSTIRGIPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0091:Render","exportIndex":91,"name":"Render","kind":"re-export","signature":"Render","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0092:ResolveSystem","exportIndex":92,"name":"ResolveSystem","kind":"re-export","signature":"ResolveSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0093:Rig","exportIndex":93,"name":"Rig","kind":"re-export","signature":"Rig","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0094:RuleCategory","exportIndex":94,"name":"RuleCategory","kind":"re-export","signature":"RuleCategory","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0095:RuleEffect","exportIndex":95,"name":"RuleEffect","kind":"re-export","signature":"RuleEffect","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0096:RuleGraph","exportIndex":96,"name":"RuleGraph","kind":"re-export","signature":"RuleGraph","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0097:SANDBOX_BEHAVIOR","exportIndex":97,"name":"SANDBOX_BEHAVIOR","kind":"re-export","signature":"SANDBOX_BEHAVIOR","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0098:SANDBOX_FLAGS","exportIndex":98,"name":"SANDBOX_FLAGS","kind":"re-export","signature":"SANDBOX_FLAGS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0099:SANDBOX_INTERACTION","exportIndex":99,"name":"SANDBOX_INTERACTION","kind":"re-export","signature":"SANDBOX_INTERACTION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0100:SANDBOX_OBJECT","exportIndex":100,"name":"SANDBOX_OBJECT","kind":"re-export","signature":"SANDBOX_OBJECT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0101:SANDBOX_OBJECTS","exportIndex":101,"name":"SANDBOX_OBJECTS","kind":"re-export","signature":"SANDBOX_OBJECTS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0102:SANDBOX_PHASE","exportIndex":102,"name":"SANDBOX_PHASE","kind":"re-export","signature":"SANDBOX_PHASE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0103:SANDBOX_REACTION","exportIndex":103,"name":"SANDBOX_REACTION","kind":"re-export","signature":"SANDBOX_REACTION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0104:SANDBOX_REFERENCE_TEMPERATURE_K","exportIndex":104,"name":"SANDBOX_REFERENCE_TEMPERATURE_K","kind":"re-export","signature":"SANDBOX_REFERENCE_TEMPERATURE_K","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0105:SANDBOX_SPECIES_CAPACITY","exportIndex":105,"name":"SANDBOX_SPECIES_CAPACITY","kind":"re-export","signature":"SANDBOX_SPECIES_CAPACITY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0106:SANDBOX_SUBSTANCE_CODE_BASE","exportIndex":106,"name":"SANDBOX_SUBSTANCE_CODE_BASE","kind":"re-export","signature":"SANDBOX_SUBSTANCE_CODE_BASE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0107:SANDBOX_TEMPERATURE_STEP_K","exportIndex":107,"name":"SANDBOX_TEMPERATURE_STEP_K","kind":"re-export","signature":"SANDBOX_TEMPERATURE_STEP_K","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0108:SAVE_SCHEMA_VERSION","exportIndex":108,"name":"SAVE_SCHEMA_VERSION","kind":"re-export","signature":"SAVE_SCHEMA_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0109:SCREEN_RAY_LIMITS","exportIndex":109,"name":"SCREEN_RAY_LIMITS","kind":"re-export","signature":"SCREEN_RAY_LIMITS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0110:SOUL_STAGE_NAMES","exportIndex":110,"name":"SOUL_STAGE_NAMES","kind":"re-export","signature":"SOUL_STAGE_NAMES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0111:SPAWN_TYPE_CATEGORIES","exportIndex":111,"name":"SPAWN_TYPE_CATEGORIES","kind":"re-export","signature":"SPAWN_TYPE_CATEGORIES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0112:SPAWN_TYPE_COLORS","exportIndex":112,"name":"SPAWN_TYPE_COLORS","kind":"re-export","signature":"SPAWN_TYPE_COLORS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0113:SPAWN_TYPE_MESHES","exportIndex":113,"name":"SPAWN_TYPE_MESHES","kind":"re-export","signature":"SPAWN_TYPE_MESHES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0114:SPELL_EFFECT_TYPES","exportIndex":114,"name":"SPELL_EFFECT_TYPES","kind":"re-export","signature":"SPELL_EFFECT_TYPES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0115:SPELL_PASS_TYPES","exportIndex":115,"name":"SPELL_PASS_TYPES","kind":"re-export","signature":"SPELL_PASS_TYPES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0116:STANDARD_CAMERA_LIMITS","exportIndex":116,"name":"STANDARD_CAMERA_LIMITS","kind":"re-export","signature":"STANDARD_CAMERA_LIMITS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0117:STANDARD_INPUT_LIMITS","exportIndex":117,"name":"STANDARD_INPUT_LIMITS","kind":"re-export","signature":"STANDARD_INPUT_LIMITS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0118:STATES","exportIndex":118,"name":"STATES","kind":"re-export","signature":"STATES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0119:STATE_FIRST_DIRTY","exportIndex":119,"name":"STATE_FIRST_DIRTY","kind":"re-export","signature":"STATE_FIRST_DIRTY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0120:STATE_FIRST_ECS_METADATA_VERSION","exportIndex":120,"name":"STATE_FIRST_ECS_METADATA_VERSION","kind":"re-export","signature":"STATE_FIRST_ECS_METADATA_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0121:STATE_FIRST_EXECUTION_BACKEND","exportIndex":121,"name":"STATE_FIRST_EXECUTION_BACKEND","kind":"re-export","signature":"STATE_FIRST_EXECUTION_BACKEND","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0122:STATE_FIRST_PARITY_STATUS","exportIndex":122,"name":"STATE_FIRST_PARITY_STATUS","kind":"re-export","signature":"STATE_FIRST_PARITY_STATUS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0123:STATE_FIRST_QUALITY_PROFILE","exportIndex":123,"name":"STATE_FIRST_QUALITY_PROFILE","kind":"re-export","signature":"STATE_FIRST_QUALITY_PROFILE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0124:STATE_FIRST_REPRESENTATION","exportIndex":124,"name":"STATE_FIRST_REPRESENTATION","kind":"re-export","signature":"STATE_FIRST_REPRESENTATION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0125:STATE_FIRST_REPRESENTATION_NAMES","exportIndex":125,"name":"STATE_FIRST_REPRESENTATION_NAMES","kind":"re-export","signature":"STATE_FIRST_REPRESENTATION_NAMES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0126:STATE_FIRST_RETAINED_INDEX_BYTES","exportIndex":126,"name":"STATE_FIRST_RETAINED_INDEX_BYTES","kind":"re-export","signature":"STATE_FIRST_RETAINED_INDEX_BYTES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0127:STATE_FIRST_RETAINED_RECORD_BYTES","exportIndex":127,"name":"STATE_FIRST_RETAINED_RECORD_BYTES","kind":"re-export","signature":"STATE_FIRST_RETAINED_RECORD_BYTES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0128:STATE_FIRST_RETAINED_RECORD_FLOATS","exportIndex":128,"name":"STATE_FIRST_RETAINED_RECORD_FLOATS","kind":"re-export","signature":"STATE_FIRST_RETAINED_RECORD_FLOATS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0129:STATE_FIRST_SOURCE","exportIndex":129,"name":"STATE_FIRST_SOURCE","kind":"re-export","signature":"STATE_FIRST_SOURCE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0130:STATE_FIRST_SOURCE_KIND","exportIndex":130,"name":"STATE_FIRST_SOURCE_KIND","kind":"re-export","signature":"STATE_FIRST_SOURCE_KIND","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0131:STATE_FIRST_SOURCE_VERSION","exportIndex":131,"name":"STATE_FIRST_SOURCE_VERSION","kind":"re-export","signature":"STATE_FIRST_SOURCE_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0132:STATS","exportIndex":132,"name":"STATS","kind":"re-export","signature":"STATS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0133:SVGFDenoise","exportIndex":133,"name":"SVGFDenoise","kind":"re-export","signature":"SVGFDenoise","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0134:SaveSystem","exportIndex":134,"name":"SaveSystem","kind":"re-export","signature":"SaveSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0135:SchemaValidator","exportIndex":135,"name":"SchemaValidator","kind":"re-export","signature":"SchemaValidator","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0136:SimLevel","exportIndex":136,"name":"SimLevel","kind":"re-export","signature":"SimLevel","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0137:SimulationManager","exportIndex":137,"name":"SimulationManager","kind":"re-export","signature":"SimulationManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0138:SituationBucket","exportIndex":138,"name":"SituationBucket","kind":"re-export","signature":"SituationBucket","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0139:SituationGraph","exportIndex":139,"name":"SituationGraph","kind":"re-export","signature":"SituationGraph","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0140:SkeletonHierarchy","exportIndex":140,"name":"SkeletonHierarchy","kind":"re-export","signature":"SkeletonHierarchy","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0141:SoulGraph","exportIndex":141,"name":"SoulGraph","kind":"re-export","signature":"SoulGraph","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0142:SoulGraphMessaging","exportIndex":142,"name":"SoulGraphMessaging","kind":"re-export","signature":"SoulGraphMessaging","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0143:SoulStage","exportIndex":143,"name":"SoulStage","kind":"re-export","signature":"SoulStage","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0144:State","exportIndex":144,"name":"State","kind":"re-export","signature":"State","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0145:StateFirstEcsSourceAdapter","exportIndex":145,"name":"StateFirstEcsSourceAdapter","kind":"re-export","signature":"StateFirstEcsSourceAdapter","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0146:StateFirstExecutionBackend","exportIndex":146,"name":"StateFirstExecutionBackend","kind":"re-export","signature":"StateFirstExecutionBackend","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0147:StateFirstGpuCuller","exportIndex":147,"name":"StateFirstGpuCuller","kind":"re-export","signature":"StateFirstGpuCuller","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0148:StateFirstRasterizer","exportIndex":148,"name":"StateFirstRasterizer","kind":"re-export","signature":"StateFirstRasterizer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0149:StateFirstRetainedStorage","exportIndex":149,"name":"StateFirstRetainedStorage","kind":"re-export","signature":"StateFirstRetainedStorage","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0150:StateFirstSourceBridge","exportIndex":150,"name":"StateFirstSourceBridge","kind":"re-export","signature":"StateFirstSourceBridge","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0151:StoryGraph","exportIndex":151,"name":"StoryGraph","kind":"re-export","signature":"StoryGraph","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0152:StoryletRarity","exportIndex":152,"name":"StoryletRarity","kind":"re-export","signature":"StoryletRarity","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0153:Structural","exportIndex":153,"name":"Structural","kind":"re-export","signature":"Structural","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0154:SurfaceCacheExtractor","exportIndex":154,"name":"SurfaceCacheExtractor","kind":"re-export","signature":"SurfaceCacheExtractor","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0155:Surfaces","exportIndex":155,"name":"Surfaces","kind":"re-export","signature":"Surfaces","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0156:TLASBuilder","exportIndex":156,"name":"TLASBuilder","kind":"re-export","signature":"TLASBuilder","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0157:TransferType","exportIndex":157,"name":"TransferType","kind":"re-export","signature":"TransferType","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0158:UnderwaterSiltField","exportIndex":158,"name":"UnderwaterSiltField","kind":"re-export","signature":"UnderwaterSiltField","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0159:VERSION_BANNER","exportIndex":159,"name":"VERSION_BANNER","kind":"re-export","signature":"VERSION_BANNER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0160:VoiceStyle","exportIndex":160,"name":"VoiceStyle","kind":"re-export","signature":"VoiceStyle","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0161:Voxel","exportIndex":161,"name":"Voxel","kind":"re-export","signature":"Voxel","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0162:World","exportIndex":162,"name":"World","kind":"re-export","signature":"World","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0163:WorldDirector","exportIndex":163,"name":"WorldDirector","kind":"re-export","signature":"WorldDirector","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0164:addGhostToSelection","exportIndex":164,"name":"addGhostToSelection","kind":"re-export","signature":"addGhostToSelection","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0165:applyBoundaries","exportIndex":165,"name":"applyBoundaries","kind":"re-export","signature":"applyBoundaries","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0166:applyEngineConfigToPhysics","exportIndex":166,"name":"applyEngineConfigToPhysics","kind":"re-export","signature":"applyEngineConfigToPhysics","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0167:applyEngineConfigToState","exportIndex":167,"name":"applyEngineConfigToState","kind":"re-export","signature":"applyEngineConfigToState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0168:applyPhaseVisuals","exportIndex":168,"name":"applyPhaseVisuals","kind":"re-export","signature":"applyPhaseVisuals","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0169:attachFluidWorld","exportIndex":169,"name":"attachFluidWorld","kind":"re-export","signature":"attachFluidWorld","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0170:attachInputListeners","exportIndex":170,"name":"attachInputListeners","kind":"re-export","signature":"attachInputListeners","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0171:attachInspectorPanel","exportIndex":171,"name":"attachInspectorPanel","kind":"re-export","signature":"attachInspectorPanel","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0172:attachPhysicsSandboxInspector","exportIndex":172,"name":"attachPhysicsSandboxInspector","kind":"re-export","signature":"attachPhysicsSandboxInspector","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0173:augmentGeoWithSkeleton","exportIndex":173,"name":"augmentGeoWithSkeleton","kind":"re-export","signature":"augmentGeoWithSkeleton","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0174:bakeNoiseTexture","exportIndex":174,"name":"bakeNoiseTexture","kind":"re-export","signature":"bakeNoiseTexture","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0175:beatFrequency","exportIndex":175,"name":"beatFrequency","kind":"re-export","signature":"beatFrequency","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0176:beginStandardRenderPass","exportIndex":176,"name":"beginStandardRenderPass","kind":"re-export","signature":"beginStandardRenderPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0177:bootstrapApp","exportIndex":177,"name":"bootstrapApp","kind":"re-export","signature":"bootstrapApp","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0178:branchNode","exportIndex":178,"name":"branchNode","kind":"re-export","signature":"branchNode","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0179:buildColliderBuffer","exportIndex":179,"name":"buildColliderBuffer","kind":"re-export","signature":"buildColliderBuffer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0180:buildEffectKeyFromElements","exportIndex":180,"name":"buildEffectKeyFromElements","kind":"re-export","signature":"buildEffectKeyFromElements","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0181:buildFluidDomainFromColliders","exportIndex":181,"name":"buildFluidDomainFromColliders","kind":"re-export","signature":"buildFluidDomainFromColliders","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0182:buildFluidSources","exportIndex":182,"name":"buildFluidSources","kind":"re-export","signature":"buildFluidSources","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0183:buildJointPositionDataset","exportIndex":183,"name":"buildJointPositionDataset","kind":"re-export","signature":"buildJointPositionDataset","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0184:buildMotionFeatureIndex","exportIndex":184,"name":"buildMotionFeatureIndex","kind":"re-export","signature":"buildMotionFeatureIndex","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0185:buildNeighborGrid","exportIndex":185,"name":"buildNeighborGrid","kind":"re-export","signature":"buildNeighborGrid","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0186:buildViewProjData","exportIndex":186,"name":"buildViewProjData","kind":"re-export","signature":"buildViewProjData","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0187:cameraCollisionOptionsReport","exportIndex":187,"name":"cameraCollisionOptionsReport","kind":"re-export","signature":"cameraCollisionOptionsReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0188:cameraControllerEntityReport","exportIndex":188,"name":"cameraControllerEntityReport","kind":"re-export","signature":"cameraControllerEntityReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0189:cameraControllerStepReport","exportIndex":189,"name":"cameraControllerStepReport","kind":"re-export","signature":"cameraControllerStepReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0190:cameraEntityBoundsReport","exportIndex":190,"name":"cameraEntityBoundsReport","kind":"re-export","signature":"cameraEntityBoundsReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0191:cameraEntityFocusReport","exportIndex":191,"name":"cameraEntityFocusReport","kind":"re-export","signature":"cameraEntityFocusReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0192:cameraFocusReport","exportIndex":192,"name":"cameraFocusReport","kind":"re-export","signature":"cameraFocusReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0193:cameraFocusTransitionReport","exportIndex":193,"name":"cameraFocusTransitionReport","kind":"re-export","signature":"cameraFocusTransitionReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0194:cameraModeSwitchReport","exportIndex":194,"name":"cameraModeSwitchReport","kind":"re-export","signature":"cameraModeSwitchReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0195:cancelGrabCandidate","exportIndex":195,"name":"cancelGrabCandidate","kind":"re-export","signature":"cancelGrabCandidate","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0196:choiceNode","exportIndex":196,"name":"choiceNode","kind":"re-export","signature":"choiceNode","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0197:chooseStateFirstRepresentation","exportIndex":197,"name":"chooseStateFirstRepresentation","kind":"re-export","signature":"chooseStateFirstRepresentation","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0198:clamp","exportIndex":198,"name":"clamp","kind":"re-export","signature":"clamp","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0199:clearFluidDensity","exportIndex":199,"name":"clearFluidDensity","kind":"re-export","signature":"clearFluidDensity","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0200:clearFluidSimWorld","exportIndex":200,"name":"clearFluidSimWorld","kind":"re-export","signature":"clearFluidSimWorld","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0201:clearFreezeRegion","exportIndex":201,"name":"clearFreezeRegion","kind":"re-export","signature":"clearFreezeRegion","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0202:clearGrabForEntity","exportIndex":202,"name":"clearGrabForEntity","kind":"re-export","signature":"clearGrabForEntity","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0203:compareLongRangeVectors","exportIndex":203,"name":"compareLongRangeVectors","kind":"re-export","signature":"compareLongRangeVectors","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0204:computeAimBetweenEntities","exportIndex":204,"name":"computeAimBetweenEntities","kind":"re-export","signature":"computeAimBetweenEntities","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0205:computeAimFromEntityToPoint","exportIndex":205,"name":"computeAimFromEntityToPoint","kind":"re-export","signature":"computeAimFromEntityToPoint","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0206:computeVisualPower","exportIndex":206,"name":"computeVisualPower","kind":"re-export","signature":"computeVisualPower","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0207:configureParticleLongRange","exportIndex":207,"name":"configureParticleLongRange","kind":"re-export","signature":"configureParticleLongRange","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0208:configurePhysicsSandboxScene","exportIndex":208,"name":"configurePhysicsSandboxScene","kind":"re-export","signature":"configurePhysicsSandboxScene","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0209:consumeMouseDelta","exportIndex":209,"name":"consumeMouseDelta","kind":"re-export","signature":"consumeMouseDelta","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0210:consumeZoomDelta","exportIndex":210,"name":"consumeZoomDelta","kind":"re-export","signature":"consumeZoomDelta","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0211:createAdaptiveQualityGovernor","exportIndex":211,"name":"createAdaptiveQualityGovernor","kind":"re-export","signature":"createAdaptiveQualityGovernor","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0212:createAllState","exportIndex":212,"name":"createAllState","kind":"re-export","signature":"createAllState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0213:createAudioEngine","exportIndex":213,"name":"createAudioEngine","kind":"re-export","signature":"createAudioEngine","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0214:createAudioState","exportIndex":214,"name":"createAudioState","kind":"re-export","signature":"createAudioState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0215:createBoundaryPipeline","exportIndex":215,"name":"createBoundaryPipeline","kind":"re-export","signature":"createBoundaryPipeline","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0216:createBoundaryShader","exportIndex":216,"name":"createBoundaryShader","kind":"re-export","signature":"createBoundaryShader","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0217:createCamera","exportIndex":217,"name":"createCamera","kind":"re-export","signature":"createCamera","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0218:createCameraState","exportIndex":218,"name":"createCameraState","kind":"re-export","signature":"createCameraState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0219:createCharacterAudioBridge","exportIndex":219,"name":"createCharacterAudioBridge","kind":"re-export","signature":"createCharacterAudioBridge","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0220:createCity","exportIndex":220,"name":"createCity","kind":"re-export","signature":"createCity","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0221:createCollider","exportIndex":221,"name":"createCollider","kind":"re-export","signature":"createCollider","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0222:createConfigState","exportIndex":222,"name":"createConfigState","kind":"re-export","signature":"createConfigState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0223:createCrimeRecord","exportIndex":223,"name":"createCrimeRecord","kind":"re-export","signature":"createCrimeRecord","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0224:createCrystallizationPipeline","exportIndex":224,"name":"createCrystallizationPipeline","kind":"re-export","signature":"createCrystallizationPipeline","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0225:createCrystallizationShader","exportIndex":225,"name":"createCrystallizationShader","kind":"re-export","signature":"createCrystallizationShader","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0226:createCubeGeometry","exportIndex":226,"name":"createCubeGeometry","kind":"re-export","signature":"createCubeGeometry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0227:createCylinderGeometry","exportIndex":227,"name":"createCylinderGeometry","kind":"re-export","signature":"createCylinderGeometry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0228:createDefaultFromSchema","exportIndex":228,"name":"createDefaultFromSchema","kind":"re-export","signature":"createDefaultFromSchema","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0229:createEcsState","exportIndex":229,"name":"createEcsState","kind":"re-export","signature":"createEcsState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0230:createEmitter","exportIndex":230,"name":"createEmitter","kind":"re-export","signature":"createEmitter","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0231:createEmittersForEffect","exportIndex":231,"name":"createEmittersForEffect","kind":"re-export","signature":"createEmittersForEffect","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0232:createEngineMesh","exportIndex":232,"name":"createEngineMesh","kind":"re-export","signature":"createEngineMesh","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0233:createEntity","exportIndex":233,"name":"createEntity","kind":"re-export","signature":"createEntity","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0234:createEvent","exportIndex":234,"name":"createEvent","kind":"re-export","signature":"createEvent","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0235:createFaction","exportIndex":235,"name":"createFaction","kind":"re-export","signature":"createFaction","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0236:createFluidSimWorld","exportIndex":236,"name":"createFluidSimWorld","kind":"re-export","signature":"createFluidSimWorld","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0237:createFluidWaterPass","exportIndex":237,"name":"createFluidWaterPass","kind":"re-export","signature":"createFluidWaterPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0238:createFmmSystem","exportIndex":238,"name":"createFmmSystem","kind":"re-export","signature":"createFmmSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0239:createGhostSelectionState","exportIndex":239,"name":"createGhostSelectionState","kind":"re-export","signature":"createGhostSelectionState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0240:createGpuState","exportIndex":240,"name":"createGpuState","kind":"re-export","signature":"createGpuState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0241:createGrabState","exportIndex":241,"name":"createGrabState","kind":"re-export","signature":"createGrabState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0242:createGroundGeometry","exportIndex":242,"name":"createGroundGeometry","kind":"re-export","signature":"createGroundGeometry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0243:createInputController","exportIndex":243,"name":"createInputController","kind":"re-export","signature":"createInputController","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0244:createInputState","exportIndex":244,"name":"createInputState","kind":"re-export","signature":"createInputState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0245:createInspectorConfig","exportIndex":245,"name":"createInspectorConfig","kind":"re-export","signature":"createInspectorConfig","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0246:createInventory","exportIndex":246,"name":"createInventory","kind":"re-export","signature":"createInventory","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0247:createLight","exportIndex":247,"name":"createLight","kind":"re-export","signature":"createLight","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0248:createLocalStorageAdapter","exportIndex":248,"name":"createLocalStorageAdapter","kind":"re-export","signature":"createLocalStorageAdapter","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0249:createMPMBuffers","exportIndex":249,"name":"createMPMBuffers","kind":"re-export","signature":"createMPMBuffers","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0250:createMPMPipelines","exportIndex":250,"name":"createMPMPipelines","kind":"re-export","signature":"createMPMPipelines","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0251:createMPMWorld","exportIndex":251,"name":"createMPMWorld","kind":"re-export","signature":"createMPMWorld","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0252:createMainLoop","exportIndex":252,"name":"createMainLoop","kind":"re-export","signature":"createMainLoop","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0253:createMeshLookup","exportIndex":253,"name":"createMeshLookup","kind":"re-export","signature":"createMeshLookup","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0254:createMeshParticleBuffers","exportIndex":254,"name":"createMeshParticleBuffers","kind":"re-export","signature":"createMeshParticleBuffers","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0255:createMessage","exportIndex":255,"name":"createMessage","kind":"re-export","signature":"createMessage","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0256:createMinimalWorld","exportIndex":256,"name":"createMinimalWorld","kind":"re-export","signature":"createMinimalWorld","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0257:createNBodySystem","exportIndex":257,"name":"createNBodySystem","kind":"re-export","signature":"createNBodySystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0258:createNeighborGridSystem","exportIndex":258,"name":"createNeighborGridSystem","kind":"re-export","signature":"createNeighborGridSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0259:createNoiseTextureSystem","exportIndex":259,"name":"createNoiseTextureSystem","kind":"re-export","signature":"createNoiseTextureSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0260:createOscillator","exportIndex":260,"name":"createOscillator","kind":"re-export","signature":"createOscillator","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0261:createOscillatorBank","exportIndex":261,"name":"createOscillatorBank","kind":"re-export","signature":"createOscillatorBank","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0262:createOwnedItem","exportIndex":262,"name":"createOwnedItem","kind":"re-export","signature":"createOwnedItem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0263:createParticleBillboardDataBindGroup","exportIndex":263,"name":"createParticleBillboardDataBindGroup","kind":"re-export","signature":"createParticleBillboardDataBindGroup","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0264:createParticleBillboardRenderer","exportIndex":264,"name":"createParticleBillboardRenderer","kind":"re-export","signature":"createParticleBillboardRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0265:createParticleMeshEwaldSystem","exportIndex":265,"name":"createParticleMeshEwaldSystem","kind":"re-export","signature":"createParticleMeshEwaldSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0266:createParticleQualityManager","exportIndex":266,"name":"createParticleQualityManager","kind":"re-export","signature":"createParticleQualityManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0267:createParticleSimWorld","exportIndex":267,"name":"createParticleSimWorld","kind":"re-export","signature":"createParticleSimWorld","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0268:createParticlesState","exportIndex":268,"name":"createParticlesState","kind":"re-export","signature":"createParticlesState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0269:createPhaseChangeBuffers","exportIndex":269,"name":"createPhaseChangeBuffers","kind":"re-export","signature":"createPhaseChangeBuffers","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0270:createPhysXVehicle","exportIndex":270,"name":"createPhysXVehicle","kind":"re-export","signature":"createPhysXVehicle","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0271:createPhysicsBody","exportIndex":271,"name":"createPhysicsBody","kind":"re-export","signature":"createPhysicsBody","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0272:createPhysicsState","exportIndex":272,"name":"createPhysicsState","kind":"re-export","signature":"createPhysicsState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0273:createPlaneGeometry","exportIndex":273,"name":"createPlaneGeometry","kind":"re-export","signature":"createPlaneGeometry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0274:createPower","exportIndex":274,"name":"createPower","kind":"re-export","signature":"createPower","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0275:createQuery","exportIndex":275,"name":"createQuery","kind":"re-export","signature":"createQuery","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0276:createRayPicker","exportIndex":276,"name":"createRayPicker","kind":"re-export","signature":"createRayPicker","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0277:createRenderState","exportIndex":277,"name":"createRenderState","kind":"re-export","signature":"createRenderState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0278:createRule","exportIndex":278,"name":"createRule","kind":"re-export","signature":"createRule","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0279:createSandboxMaterialCatalog","exportIndex":279,"name":"createSandboxMaterialCatalog","kind":"re-export","signature":"createSandboxMaterialCatalog","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0280:createSandboxSpeciesLut","exportIndex":280,"name":"createSandboxSpeciesLut","kind":"re-export","signature":"createSandboxSpeciesLut","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0281:createSceneFileInput","exportIndex":281,"name":"createSceneFileInput","kind":"re-export","signature":"createSceneFileInput","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0282:createSeedInjectionParams","exportIndex":282,"name":"createSeedInjectionParams","kind":"re-export","signature":"createSeedInjectionParams","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0283:createShaderLoader","exportIndex":283,"name":"createShaderLoader","kind":"re-export","signature":"createShaderLoader","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0284:createSkyboxGeometry","exportIndex":284,"name":"createSkyboxGeometry","kind":"re-export","signature":"createSkyboxGeometry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0285:createSmokeState","exportIndex":285,"name":"createSmokeState","kind":"re-export","signature":"createSmokeState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0286:createSmokeVolumeRenderer","exportIndex":286,"name":"createSmokeVolumeRenderer","kind":"re-export","signature":"createSmokeVolumeRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0287:createSolidMaskTexture","exportIndex":287,"name":"createSolidMaskTexture","kind":"re-export","signature":"createSolidMaskTexture","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0288:createSpawnState","exportIndex":288,"name":"createSpawnState","kind":"re-export","signature":"createSpawnState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0289:createSpellEffectPass","exportIndex":289,"name":"createSpellEffectPass","kind":"re-export","signature":"createSpellEffectPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0290:createSpellForce","exportIndex":290,"name":"createSpellForce","kind":"re-export","signature":"createSpellForce","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0291:createSphereGeometry","exportIndex":291,"name":"createSphereGeometry","kind":"re-export","signature":"createSphereGeometry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0292:createStandardEntityRenderResources","exportIndex":292,"name":"createStandardEntityRenderResources","kind":"re-export","signature":"createStandardEntityRenderResources","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0293:createStandardRoomRenderer","exportIndex":293,"name":"createStandardRoomRenderer","kind":"re-export","signature":"createStandardRoomRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0294:createStateFirstEcsSourceAdapter","exportIndex":294,"name":"createStateFirstEcsSourceAdapter","kind":"re-export","signature":"createStateFirstEcsSourceAdapter","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0295:createStateFirstExecutionBackend","exportIndex":295,"name":"createStateFirstExecutionBackend","kind":"re-export","signature":"createStateFirstExecutionBackend","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0296:createStateFirstGpuCuller","exportIndex":296,"name":"createStateFirstGpuCuller","kind":"re-export","signature":"createStateFirstGpuCuller","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0297:createStateFirstRasterizer","exportIndex":297,"name":"createStateFirstRasterizer","kind":"re-export","signature":"createStateFirstRasterizer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0298:createStateFirstRetainedStorage","exportIndex":298,"name":"createStateFirstRetainedStorage","kind":"re-export","signature":"createStateFirstRetainedStorage","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0299:createStateFirstSourceBridge","exportIndex":299,"name":"createStateFirstSourceBridge","kind":"re-export","signature":"createStateFirstSourceBridge","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0300:createStorageBuffer","exportIndex":300,"name":"createStorageBuffer","kind":"re-export","signature":"createStorageBuffer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0301:createStorylet","exportIndex":301,"name":"createStorylet","kind":"re-export","signature":"createStorylet","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0302:createTransform","exportIndex":302,"name":"createTransform","kind":"re-export","signature":"createTransform","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0303:createUniformBuffer","exportIndex":303,"name":"createUniformBuffer","kind":"re-export","signature":"createUniformBuffer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0304:createUnitCubeMesh","exportIndex":304,"name":"createUnitCubeMesh","kind":"re-export","signature":"createUnitCubeMesh","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0305:createVoxelWorldRenderer","exportIndex":305,"name":"createVoxelWorldRenderer","kind":"re-export","signature":"createVoxelWorldRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0306:createWaterPassState","exportIndex":306,"name":"createWaterPassState","kind":"re-export","signature":"createWaterPassState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0307:createWorld","exportIndex":307,"name":"createWorld","kind":"re-export","signature":"createWorld","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0308:createWorldFluidDomain","exportIndex":308,"name":"createWorldFluidDomain","kind":"re-export","signature":"createWorldFluidDomain","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0309:defaultResolveEquipSlot","exportIndex":309,"name":"defaultResolveEquipSlot","kind":"re-export","signature":"defaultResolveEquipSlot","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0310:defineComponentType","exportIndex":310,"name":"defineComponentType","kind":"re-export","signature":"defineComponentType","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0311:deleteEntity","exportIndex":311,"name":"deleteEntity","kind":"re-export","signature":"deleteEntity","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0312:deleteSelectedEntity","exportIndex":312,"name":"deleteSelectedEntity","kind":"re-export","signature":"deleteSelectedEntity","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0313:deriveColorFromElements","exportIndex":313,"name":"deriveColorFromElements","kind":"re-export","signature":"deriveColorFromElements","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0314:destroyAudioEngine","exportIndex":314,"name":"destroyAudioEngine","kind":"re-export","signature":"destroyAudioEngine","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0315:destroyBuffer","exportIndex":315,"name":"destroyBuffer","kind":"re-export","signature":"destroyBuffer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0316:destroyBuffers","exportIndex":316,"name":"destroyBuffers","kind":"re-export","signature":"destroyBuffers","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0317:destroyCharacterAudioBridge","exportIndex":317,"name":"destroyCharacterAudioBridge","kind":"re-export","signature":"destroyCharacterAudioBridge","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0318:destroyEntity","exportIndex":318,"name":"destroyEntity","kind":"re-export","signature":"destroyEntity","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0319:destroyFluidWaterPass","exportIndex":319,"name":"destroyFluidWaterPass","kind":"re-export","signature":"destroyFluidWaterPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0320:destroyFmmSystem","exportIndex":320,"name":"destroyFmmSystem","kind":"re-export","signature":"destroyFmmSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0321:destroyMPMWorld","exportIndex":321,"name":"destroyMPMWorld","kind":"re-export","signature":"destroyMPMWorld","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0322:destroyNBodySystem","exportIndex":322,"name":"destroyNBodySystem","kind":"re-export","signature":"destroyNBodySystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0323:destroyNeighborGridSystem","exportIndex":323,"name":"destroyNeighborGridSystem","kind":"re-export","signature":"destroyNeighborGridSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0324:destroyNoiseTextureSystem","exportIndex":324,"name":"destroyNoiseTextureSystem","kind":"re-export","signature":"destroyNoiseTextureSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0325:destroyParticleMeshEwaldSystem","exportIndex":325,"name":"destroyParticleMeshEwaldSystem","kind":"re-export","signature":"destroyParticleMeshEwaldSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0326:destroyParticleSimWorld","exportIndex":326,"name":"destroyParticleSimWorld","kind":"re-export","signature":"destroyParticleSimWorld","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0327:destroyPhaseChangeBuffers","exportIndex":327,"name":"destroyPhaseChangeBuffers","kind":"re-export","signature":"destroyPhaseChangeBuffers","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0328:destroyWorldFluidDomain","exportIndex":328,"name":"destroyWorldFluidDomain","kind":"re-export","signature":"destroyWorldFluidDomain","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0329:detachInputListeners","exportIndex":329,"name":"detachInputListeners","kind":"re-export","signature":"detachInputListeners","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0330:directLongRangeAccelerations","exportIndex":330,"name":"directLongRangeAccelerations","kind":"re-export","signature":"directLongRangeAccelerations","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0331:discoverStateFirstSource","exportIndex":331,"name":"discoverStateFirstSource","kind":"re-export","signature":"discoverStateFirstSource","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0332:downloadScene","exportIndex":332,"name":"downloadScene","kind":"re-export","signature":"downloadScene","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0333:drawMesh","exportIndex":333,"name":"drawMesh","kind":"re-export","signature":"drawMesh","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0334:drawMeshes","exportIndex":334,"name":"drawMeshes","kind":"re-export","signature":"drawMeshes","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0335:encodeEntitiesClusterCulling","exportIndex":335,"name":"encodeEntitiesClusterCulling","kind":"re-export","signature":"encodeEntitiesClusterCulling","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0336:encodeIndexedMeshClusterCulling","exportIndex":336,"name":"encodeIndexedMeshClusterCulling","kind":"re-export","signature":"encodeIndexedMeshClusterCulling","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0337:encodeOctahedralNormal","exportIndex":337,"name":"encodeOctahedralNormal","kind":"re-export","signature":"encodeOctahedralNormal","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0338:endNode","exportIndex":338,"name":"endNode","kind":"re-export","signature":"endNode","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0339:ensureDepthTexture","exportIndex":339,"name":"ensureDepthTexture","kind":"re-export","signature":"ensureDepthTexture","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0340:ensureSceneColorTexture","exportIndex":340,"name":"ensureSceneColorTexture","kind":"re-export","signature":"ensureSceneColorTexture","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0341:entityPickingOptionsReport","exportIndex":341,"name":"entityPickingOptionsReport","kind":"re-export","signature":"entityPickingOptionsReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0342:estimateFmmMemory","exportIndex":342,"name":"estimateFmmMemory","kind":"re-export","signature":"estimateFmmMemory","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0343:estimateParticleMeshMemory","exportIndex":343,"name":"estimateParticleMeshMemory","kind":"re-export","signature":"estimateParticleMeshMemory","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0344:executeFmm","exportIndex":344,"name":"executeFmm","kind":"re-export","signature":"executeFmm","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0345:executeNBody","exportIndex":345,"name":"executeNBody","kind":"re-export","signature":"executeNBody","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0346:executeParticleMeshEwald","exportIndex":346,"name":"executeParticleMeshEwald","kind":"re-export","signature":"executeParticleMeshEwald","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0347:exportSceneToJson","exportIndex":347,"name":"exportSceneToJson","kind":"re-export","signature":"exportSceneToJson","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0348:extractFrozenParticles","exportIndex":348,"name":"extractFrozenParticles","kind":"re-export","signature":"extractFrozenParticles","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0349:extractFrozenShape","exportIndex":349,"name":"extractFrozenShape","kind":"re-export","signature":"extractFrozenShape","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0350:extractMotionClipFromFbxAscii","exportIndex":350,"name":"extractMotionClipFromFbxAscii","kind":"re-export","signature":"extractMotionClipFromFbxAscii","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0351:extractMotionClipFromGltf","exportIndex":351,"name":"extractMotionClipFromGltf","kind":"re-export","signature":"extractMotionClipFromGltf","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0352:extractMotionDatasetFromFbxAsciiEntries","exportIndex":352,"name":"extractMotionDatasetFromFbxAsciiEntries","kind":"re-export","signature":"extractMotionDatasetFromFbxAsciiEntries","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0353:extractMotionDatasetFromFbxDirectoryHandle","exportIndex":353,"name":"extractMotionDatasetFromFbxDirectoryHandle","kind":"re-export","signature":"extractMotionDatasetFromFbxDirectoryHandle","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0354:extractMotionDatasetFromFbxFiles","exportIndex":354,"name":"extractMotionDatasetFromFbxFiles","kind":"re-export","signature":"extractMotionDatasetFromFbxFiles","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0355:extractMotionDatasetFromGltf","exportIndex":355,"name":"extractMotionDatasetFromGltf","kind":"re-export","signature":"extractMotionDatasetFromGltf","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0356:extractOriginTags","exportIndex":356,"name":"extractOriginTags","kind":"re-export","signature":"extractOriginTags","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0357:fillRagdollFeature","exportIndex":357,"name":"fillRagdollFeature","kind":"re-export","signature":"fillRagdollFeature","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0358:fmmCellCoordinate","exportIndex":358,"name":"fmmCellCoordinate","kind":"re-export","signature":"fmmCellCoordinate","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0359:fmmInteractionCells","exportIndex":359,"name":"fmmInteractionCells","kind":"re-export","signature":"fmmInteractionCells","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0360:fmmLevelCellCount","exportIndex":360,"name":"fmmLevelCellCount","kind":"re-export","signature":"fmmLevelCellCount","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0361:fmmLevelOffset","exportIndex":361,"name":"fmmLevelOffset","kind":"re-export","signature":"fmmLevelOffset","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0362:fmmMortonCellIndex","exportIndex":362,"name":"fmmMortonCellIndex","kind":"re-export","signature":"fmmMortonCellIndex","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0363:fmmSelectDepth","exportIndex":363,"name":"fmmSelectDepth","kind":"re-export","signature":"fmmSelectDepth","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0364:fmmTotalCellCount","exportIndex":364,"name":"fmmTotalCellCount","kind":"re-export","signature":"fmmTotalCellCount","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0365:focusThirdPersonCamera","exportIndex":365,"name":"focusThirdPersonCamera","kind":"re-export","signature":"focusThirdPersonCamera","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0366:focusThirdPersonCameraOnEntities","exportIndex":366,"name":"focusThirdPersonCameraOnEntities","kind":"re-export","signature":"focusThirdPersonCameraOnEntities","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0367:forEachEntity","exportIndex":367,"name":"forEachEntity","kind":"re-export","signature":"forEachEntity","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0368:generateMeshParticlesIntoParticlesState","exportIndex":368,"name":"generateMeshParticlesIntoParticlesState","kind":"re-export","signature":"generateMeshParticlesIntoParticlesState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0369:generateMeshParticlesIntoWorld","exportIndex":369,"name":"generateMeshParticlesIntoWorld","kind":"re-export","signature":"generateMeshParticlesIntoWorld","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0370:generateOrigin","exportIndex":370,"name":"generateOrigin","kind":"re-export","signature":"generateOrigin","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0371:generateProceduralSkeleton","exportIndex":371,"name":"generateProceduralSkeleton","kind":"re-export","signature":"generateProceduralSkeleton","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0372:generateProlateSplitTable","exportIndex":372,"name":"generateProlateSplitTable","kind":"re-export","signature":"generateProlateSplitTable","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0373:generateProlateWindowTable","exportIndex":373,"name":"generateProlateWindowTable","kind":"re-export","signature":"generateProlateWindowTable","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0374:getActiveGhost","exportIndex":374,"name":"getActiveGhost","kind":"re-export","signature":"getActiveGhost","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0375:getActiveGhostWorldPosition","exportIndex":375,"name":"getActiveGhostWorldPosition","kind":"re-export","signature":"getActiveGhostWorldPosition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0376:getAvailableSpawnTypes","exportIndex":376,"name":"getAvailableSpawnTypes","kind":"re-export","signature":"getAvailableSpawnTypes","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0377:getCameraEyeBasisFromState","exportIndex":377,"name":"getCameraEyeBasisFromState","kind":"re-export","signature":"getCameraEyeBasisFromState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0378:getComponentDefinition","exportIndex":378,"name":"getComponentDefinition","kind":"re-export","signature":"getComponentDefinition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0379:getComponentSchema","exportIndex":379,"name":"getComponentSchema","kind":"re-export","signature":"getComponentSchema","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0380:getElements","exportIndex":380,"name":"getElements","kind":"re-export","signature":"getElements","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0381:getEmitterPreset","exportIndex":381,"name":"getEmitterPreset","kind":"re-export","signature":"getEmitterPreset","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0382:getEmitterTypes","exportIndex":382,"name":"getEmitterTypes","kind":"re-export","signature":"getEmitterTypes","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0383:getEntityComponent","exportIndex":383,"name":"getEntityComponent","kind":"re-export","signature":"getEntityComponent","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0384:getEntityWorldPosition","exportIndex":384,"name":"getEntityWorldPosition","kind":"re-export","signature":"getEntityWorldPosition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0385:getGhostPreviewInfo","exportIndex":385,"name":"getGhostPreviewInfo","kind":"re-export","signature":"getGhostPreviewInfo","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0386:getGhostWorldPosition","exportIndex":386,"name":"getGhostWorldPosition","kind":"re-export","signature":"getGhostWorldPosition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0387:getInputActionMap","exportIndex":387,"name":"getInputActionMap","kind":"re-export","signature":"getInputActionMap","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0388:getInputActions","exportIndex":388,"name":"getInputActions","kind":"re-export","signature":"getInputActions","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0389:getKeys","exportIndex":389,"name":"getKeys","kind":"re-export","signature":"getKeys","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0390:getLastMousePosition","exportIndex":390,"name":"getLastMousePosition","kind":"re-export","signature":"getLastMousePosition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0391:getMovementAxes","exportIndex":391,"name":"getMovementAxes","kind":"re-export","signature":"getMovementAxes","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0392:getNeighborGridBuffers","exportIndex":392,"name":"getNeighborGridBuffers","kind":"re-export","signature":"getNeighborGridBuffers","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0393:getParticleLongRangeState","exportIndex":393,"name":"getParticleLongRangeState","kind":"re-export","signature":"getParticleLongRangeState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0394:getPickRayForCanvasFromScreen","exportIndex":394,"name":"getPickRayForCanvasFromScreen","kind":"re-export","signature":"getPickRayForCanvasFromScreen","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0395:getPickRayFromState","exportIndex":395,"name":"getPickRayFromState","kind":"re-export","signature":"getPickRayFromState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0396:getRegisteredSystems","exportIndex":396,"name":"getRegisteredSystems","kind":"re-export","signature":"getRegisteredSystems","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0397:getSpawnTypeColor","exportIndex":397,"name":"getSpawnTypeColor","kind":"re-export","signature":"getSpawnTypeColor","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0398:getSpawnTypeMeshKey","exportIndex":398,"name":"getSpawnTypeMeshKey","kind":"re-export","signature":"getSpawnTypeMeshKey","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0399:getSpawnTypesByCategory","exportIndex":399,"name":"getSpawnTypesByCategory","kind":"re-export","signature":"getSpawnTypesByCategory","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0400:getStandardCameraEyeBasis","exportIndex":400,"name":"getStandardCameraEyeBasis","kind":"re-export","signature":"getStandardCameraEyeBasis","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0401:getStates","exportIndex":401,"name":"getStates","kind":"re-export","signature":"getStates","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0402:getVertexBufferLayoutForMesh","exportIndex":402,"name":"getVertexBufferLayoutForMesh","kind":"re-export","signature":"getVertexBufferLayoutForMesh","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0403:grabControllerEntityReport","exportIndex":403,"name":"grabControllerEntityReport","kind":"re-export","signature":"grabControllerEntityReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0404:grabControllerRayReport","exportIndex":404,"name":"grabControllerRayReport","kind":"re-export","signature":"grabControllerRayReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0405:grabControllerTimingReport","exportIndex":405,"name":"grabControllerTimingReport","kind":"re-export","signature":"grabControllerTimingReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0406:initAudioEngine","exportIndex":406,"name":"initAudioEngine","kind":"re-export","signature":"initAudioEngine","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0407:initEcsWorld","exportIndex":407,"name":"initEcsWorld","kind":"re-export","signature":"initEcsWorld","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0408:initFluidSimWorldLazy","exportIndex":408,"name":"initFluidSimWorldLazy","kind":"re-export","signature":"initFluidSimWorldLazy","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0409:initFmmBindGroups","exportIndex":409,"name":"initFmmBindGroups","kind":"re-export","signature":"initFmmBindGroups","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0410:initGpuState","exportIndex":410,"name":"initGpuState","kind":"re-export","signature":"initGpuState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0411:initNBodyBindGroups","exportIndex":411,"name":"initNBodyBindGroups","kind":"re-export","signature":"initNBodyBindGroups","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0412:initNeighborGridBindGroups","exportIndex":412,"name":"initNeighborGridBindGroups","kind":"re-export","signature":"initNeighborGridBindGroups","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0413:initParticleMeshEwaldBindGroups","exportIndex":413,"name":"initParticleMeshEwaldBindGroups","kind":"re-export","signature":"initParticleMeshEwaldBindGroups","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0414:initParticleSystem","exportIndex":414,"name":"initParticleSystem","kind":"re-export","signature":"initParticleSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0415:initSimulationRendering","exportIndex":415,"name":"initSimulationRendering","kind":"re-export","signature":"initSimulationRendering","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0416:initSlotTracking","exportIndex":416,"name":"initSlotTracking","kind":"re-export","signature":"initSlotTracking","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0417:initSmokeRenderer","exportIndex":417,"name":"initSmokeRenderer","kind":"re-export","signature":"initSmokeRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0418:initWebGpuCanvas","exportIndex":418,"name":"initWebGpuCanvas","kind":"re-export","signature":"initWebGpuCanvas","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0419:injectFreezeSeeds","exportIndex":419,"name":"injectFreezeSeeds","kind":"re-export","signature":"injectFreezeSeeds","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0420:injectHeatSeeds","exportIndex":420,"name":"injectHeatSeeds","kind":"re-export","signature":"injectHeatSeeds","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0421:injectMeltedFluid","exportIndex":421,"name":"injectMeltedFluid","kind":"re-export","signature":"injectMeltedFluid","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0422:inverseLerp","exportIndex":422,"name":"inverseLerp","kind":"re-export","signature":"inverseLerp","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0423:isPhysXVehicleSupported","exportIndex":423,"name":"isPhysXVehicleSupported","kind":"re-export","signature":"isPhysXVehicleSupported","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0424:isWebGpuSupported","exportIndex":424,"name":"isWebGpuSupported","kind":"re-export","signature":"isWebGpuSupported","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0425:lerp","exportIndex":425,"name":"lerp","kind":"re-export","signature":"lerp","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0426:listComponentDefinitions","exportIndex":426,"name":"listComponentDefinitions","kind":"re-export","signature":"listComponentDefinitions","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0427:loadSceneFromFile","exportIndex":427,"name":"loadSceneFromFile","kind":"re-export","signature":"loadSceneFromFile","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0428:loadSceneFromJson","exportIndex":428,"name":"loadSceneFromJson","kind":"re-export","signature":"loadSceneFromJson","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0429:mapTagsToOrigin","exportIndex":429,"name":"mapTagsToOrigin","kind":"re-export","signature":"mapTagsToOrigin","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0430:mat4FromRotationTranslation","exportIndex":430,"name":"mat4FromRotationTranslation","kind":"re-export","signature":"mat4FromRotationTranslation","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0431:mat4Identity","exportIndex":431,"name":"mat4Identity","kind":"re-export","signature":"mat4Identity","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0432:mat4Inverse","exportIndex":432,"name":"mat4Inverse","kind":"re-export","signature":"mat4Inverse","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0433:mat4LookAt","exportIndex":433,"name":"mat4LookAt","kind":"re-export","signature":"mat4LookAt","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0434:mat4Multiply","exportIndex":434,"name":"mat4Multiply","kind":"re-export","signature":"mat4Multiply","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0435:mat4Orthographic","exportIndex":435,"name":"mat4Orthographic","kind":"re-export","signature":"mat4Orthographic","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0436:mat4OrthographicWebGPU","exportIndex":436,"name":"mat4OrthographicWebGPU","kind":"re-export","signature":"mat4OrthographicWebGPU","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0437:mat4PerspectiveDeg","exportIndex":437,"name":"mat4PerspectiveDeg","kind":"re-export","signature":"mat4PerspectiveDeg","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0438:mat4PerspectiveDegWebGPU","exportIndex":438,"name":"mat4PerspectiveDegWebGPU","kind":"re-export","signature":"mat4PerspectiveDegWebGPU","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0439:mat4PerspectiveRad","exportIndex":439,"name":"mat4PerspectiveRad","kind":"re-export","signature":"mat4PerspectiveRad","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0440:mat4PerspectiveRadWebGPU","exportIndex":440,"name":"mat4PerspectiveRadWebGPU","kind":"re-export","signature":"mat4PerspectiveRadWebGPU","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0441:mat4Scale","exportIndex":441,"name":"mat4Scale","kind":"re-export","signature":"mat4Scale","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0442:mat4Translate","exportIndex":442,"name":"mat4Translate","kind":"re-export","signature":"mat4Translate","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0443:mixElementPower","exportIndex":443,"name":"mixElementPower","kind":"re-export","signature":"mixElementPower","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0444:network","exportIndex":444,"name":"network","kind":"re-export","signature":"network","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0445:node","exportIndex":445,"name":"node","kind":"re-export","signature":"node","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0446:normalizeElementPower","exportIndex":446,"name":"normalizeElementPower","kind":"re-export","signature":"normalizeElementPower","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0447:normalizeFmmConfig","exportIndex":447,"name":"normalizeFmmConfig","kind":"re-export","signature":"normalizeFmmConfig","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0448:normalizeParticleMeshConfig","exportIndex":448,"name":"normalizeParticleMeshConfig","kind":"re-export","signature":"normalizeParticleMeshConfig","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0449:packSandboxCell","exportIndex":449,"name":"packSandboxCell","kind":"re-export","signature":"packSandboxCell","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0450:packSandboxObject","exportIndex":450,"name":"packSandboxObject","kind":"re-export","signature":"packSandboxObject","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0451:parseSceneJson","exportIndex":451,"name":"parseSceneJson","kind":"re-export","signature":"parseSceneJson","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0452:particleAI","exportIndex":452,"name":"particleAI","kind":"re-export","signature":"particleAI","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0453:particleAIUtility","exportIndex":453,"name":"particleAIUtility","kind":"re-export","signature":"particleAIUtility","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0454:particleAIVehicles","exportIndex":454,"name":"particleAIVehicles","kind":"re-export","signature":"particleAIVehicles","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0455:particleAnatomy","exportIndex":455,"name":"particleAnatomy","kind":"re-export","signature":"particleAnatomy","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0456:particleAssets","exportIndex":456,"name":"particleAssets","kind":"re-export","signature":"particleAssets","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0457:particleMathGeometry","exportIndex":457,"name":"particleMathGeometry","kind":"re-export","signature":"particleMathGeometry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0458:particleMathRandom","exportIndex":458,"name":"particleMathRandom","kind":"re-export","signature":"particleMathRandom","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0459:particlePBD","exportIndex":459,"name":"particlePBD","kind":"re-export","signature":"particlePBD","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0460:particlePhysXPhysicsWorld","exportIndex":460,"name":"particlePhysXPhysicsWorld","kind":"re-export","signature":"particlePhysXPhysicsWorld","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0461:particlePhysXVehicle","exportIndex":461,"name":"particlePhysXVehicle","kind":"re-export","signature":"particlePhysXVehicle","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0462:particleRig","exportIndex":462,"name":"particleRig","kind":"re-export","signature":"particleRig","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0463:particleState","exportIndex":463,"name":"particleState","kind":"re-export","signature":"particleState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0464:particleStructural","exportIndex":464,"name":"particleStructural","kind":"re-export","signature":"particleStructural","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0465:particleSubstances","exportIndex":465,"name":"particleSubstances","kind":"re-export","signature":"particleSubstances","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0466:particleSurfaces","exportIndex":466,"name":"particleSurfaces","kind":"re-export","signature":"particleSurfaces","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0467:particleVoxel","exportIndex":467,"name":"particleVoxel","kind":"re-export","signature":"particleVoxel","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0468:phaseCoherence","exportIndex":468,"name":"phaseCoherence","kind":"re-export","signature":"phaseCoherence","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0469:pickEntityFromRay","exportIndex":469,"name":"pickEntityFromRay","kind":"re-export","signature":"pickEntityFromRay","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0470:pickRoomSurfaceFromRay","exportIndex":470,"name":"pickRoomSurfaceFromRay","kind":"re-export","signature":"pickRoomSurfaceFromRay","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0471:pickingRayReport","exportIndex":471,"name":"pickingRayReport","kind":"re-export","signature":"pickingRayReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0472:playBuffer","exportIndex":472,"name":"playBuffer","kind":"re-export","signature":"playBuffer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0473:playStandardGamepadHaptics","exportIndex":473,"name":"playStandardGamepadHaptics","kind":"re-export","signature":"playStandardGamepadHaptics","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0474:pollInputGamepad","exportIndex":474,"name":"pollInputGamepad","kind":"re-export","signature":"pollInputGamepad","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0475:projectImagePointToViewport","exportIndex":475,"name":"projectImagePointToViewport","kind":"re-export","signature":"projectImagePointToViewport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0476:prolateSplitFourierResponse","exportIndex":476,"name":"prolateSplitFourierResponse","kind":"re-export","signature":"prolateSplitFourierResponse","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0477:quatConjugate","exportIndex":477,"name":"quatConjugate","kind":"re-export","signature":"quatConjugate","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0478:quatDifference","exportIndex":478,"name":"quatDifference","kind":"re-export","signature":"quatDifference","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0479:quatFromAxisAngle","exportIndex":479,"name":"quatFromAxisAngle","kind":"re-export","signature":"quatFromAxisAngle","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0480:quatFromEuler","exportIndex":480,"name":"quatFromEuler","kind":"re-export","signature":"quatFromEuler","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0481:quatIdentity","exportIndex":481,"name":"quatIdentity","kind":"re-export","signature":"quatIdentity","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0482:quatInverse","exportIndex":482,"name":"quatInverse","kind":"re-export","signature":"quatInverse","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0483:quatLookAt","exportIndex":483,"name":"quatLookAt","kind":"re-export","signature":"quatLookAt","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0484:quatMultiply","exportIndex":484,"name":"quatMultiply","kind":"re-export","signature":"quatMultiply","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0485:quatNormalize","exportIndex":485,"name":"quatNormalize","kind":"re-export","signature":"quatNormalize","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0486:quatRotateTowards","exportIndex":486,"name":"quatRotateTowards","kind":"re-export","signature":"quatRotateTowards","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0487:quatRotateVec3","exportIndex":487,"name":"quatRotateVec3","kind":"re-export","signature":"quatRotateVec3","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0488:quatSlerp","exportIndex":488,"name":"quatSlerp","kind":"re-export","signature":"quatSlerp","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0489:rayPickerOptionsReport","exportIndex":489,"name":"rayPickerOptionsReport","kind":"re-export","signature":"rayPickerOptionsReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0490:rayTerminationWGSL","exportIndex":490,"name":"rayTerminationWGSL","kind":"re-export","signature":"rayTerminationWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0491:readFmmDiagnostics","exportIndex":491,"name":"readFmmDiagnostics","kind":"re-export","signature":"readFmmDiagnostics","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0492:readParticleMeshEwaldDiagnostics","exportIndex":492,"name":"readParticleMeshEwaldDiagnostics","kind":"re-export","signature":"readParticleMeshEwaldDiagnostics","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0493:rebindStandardInputAction","exportIndex":493,"name":"rebindStandardInputAction","kind":"re-export","signature":"rebindStandardInputAction","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0494:rebuildSolidMask","exportIndex":494,"name":"rebuildSolidMask","kind":"re-export","signature":"rebuildSolidMask","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0495:registerAudioEvent","exportIndex":495,"name":"registerAudioEvent","kind":"re-export","signature":"registerAudioEvent","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0496:registerFootstepEvents","exportIndex":496,"name":"registerFootstepEvents","kind":"re-export","signature":"registerFootstepEvents","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0497:registerSystem","exportIndex":497,"name":"registerSystem","kind":"re-export","signature":"registerSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0498:releaseGrabbed","exportIndex":498,"name":"releaseGrabbed","kind":"re-export","signature":"releaseGrabbed","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0499:remap","exportIndex":499,"name":"remap","kind":"re-export","signature":"remap","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0500:removeCharacter","exportIndex":500,"name":"removeCharacter","kind":"re-export","signature":"removeCharacter","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0501:removeEntityComponent","exportIndex":501,"name":"removeEntityComponent","kind":"re-export","signature":"removeEntityComponent","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0502:removeEntityFromStorage","exportIndex":502,"name":"removeEntityFromStorage","kind":"re-export","signature":"removeEntityFromStorage","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0503:renderEntities","exportIndex":503,"name":"renderEntities","kind":"re-export","signature":"renderEntities","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0504:renderFluidWater","exportIndex":504,"name":"renderFluidWater","kind":"re-export","signature":"renderFluidWater","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0505:renderLightCube","exportIndex":505,"name":"renderLightCube","kind":"re-export","signature":"renderLightCube","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0506:renderParticleBillboards","exportIndex":506,"name":"renderParticleBillboards","kind":"re-export","signature":"renderParticleBillboards","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0507:renderRoom","exportIndex":507,"name":"renderRoom","kind":"re-export","signature":"renderRoom","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0508:renderSpellEffects","exportIndex":508,"name":"renderSpellEffects","kind":"re-export","signature":"renderSpellEffects","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0509:renderVolumetricSmoke","exportIndex":509,"name":"renderVolumetricSmoke","kind":"re-export","signature":"renderVolumetricSmoke","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0510:resizeFluidWaterPass","exportIndex":510,"name":"resizeFluidWaterPass","kind":"re-export","signature":"resizeFluidWaterPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0511:resolveFootstepMaterial","exportIndex":511,"name":"resolveFootstepMaterial","kind":"re-export","signature":"resolveFootstepMaterial","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0512:resolvePickFovRadians","exportIndex":512,"name":"resolvePickFovRadians","kind":"re-export","signature":"resolvePickFovRadians","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0513:resolveSpawnAppearance","exportIndex":513,"name":"resolveSpawnAppearance","kind":"re-export","signature":"resolveSpawnAppearance","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0514:resonanceWeight","exportIndex":514,"name":"resonanceWeight","kind":"re-export","signature":"resonanceWeight","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0515:restirGuidePolicyWGSL","exportIndex":515,"name":"restirGuidePolicyWGSL","kind":"re-export","signature":"restirGuidePolicyWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0516:resumeAudioEngine","exportIndex":516,"name":"resumeAudioEngine","kind":"re-export","signature":"resumeAudioEngine","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0517:roomPickingOptionsReport","exportIndex":517,"name":"roomPickingOptionsReport","kind":"re-export","signature":"roomPickingOptionsReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0518:rootAlgebraBasisName","exportIndex":518,"name":"rootAlgebraBasisName","kind":"re-export","signature":"rootAlgebraBasisName","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0519:rootAlgebraCompileExecutionPlan","exportIndex":519,"name":"rootAlgebraCompileExecutionPlan","kind":"re-export","signature":"rootAlgebraCompileExecutionPlan","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0520:rootAlgebraDimension","exportIndex":520,"name":"rootAlgebraDimension","kind":"re-export","signature":"rootAlgebraDimension","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0521:rootAlgebraEncodedMultiply","exportIndex":521,"name":"rootAlgebraEncodedMultiply","kind":"re-export","signature":"rootAlgebraEncodedMultiply","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0522:rootAlgebraEncodedTrace","exportIndex":522,"name":"rootAlgebraEncodedTrace","kind":"re-export","signature":"rootAlgebraEncodedTrace","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0523:rootAlgebraEvaluateExecutionPlan","exportIndex":523,"name":"rootAlgebraEvaluateExecutionPlan","kind":"re-export","signature":"rootAlgebraEvaluateExecutionPlan","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0524:rootAlgebraExecutionPlanWGSL","exportIndex":524,"name":"rootAlgebraExecutionPlanWGSL","kind":"re-export","signature":"rootAlgebraExecutionPlanWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0525:rootAlgebraFindSimpleZeroDivisors","exportIndex":525,"name":"rootAlgebraFindSimpleZeroDivisors","kind":"re-export","signature":"rootAlgebraFindSimpleZeroDivisors","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0526:rootAlgebraFormatElement","exportIndex":526,"name":"rootAlgebraFormatElement","kind":"re-export","signature":"rootAlgebraFormatElement","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0527:rootAlgebraGenerateTable","exportIndex":527,"name":"rootAlgebraGenerateTable","kind":"re-export","signature":"rootAlgebraGenerateTable","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0528:rootAlgebraGeneratorName","exportIndex":528,"name":"rootAlgebraGeneratorName","kind":"re-export","signature":"rootAlgebraGeneratorName","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0529:rootAlgebraMask","exportIndex":529,"name":"rootAlgebraMask","kind":"re-export","signature":"rootAlgebraMask","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0530:rootAlgebraMultiply","exportIndex":530,"name":"rootAlgebraMultiply","kind":"re-export","signature":"rootAlgebraMultiply","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0531:rootAlgebraPropertyReport","exportIndex":531,"name":"rootAlgebraPropertyReport","kind":"re-export","signature":"rootAlgebraPropertyReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0532:rootAlgebraReverseMaskBits","exportIndex":532,"name":"rootAlgebraReverseMaskBits","kind":"re-export","signature":"rootAlgebraReverseMaskBits","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0533:rootAlgebraSearchEncodedMultipliers","exportIndex":533,"name":"rootAlgebraSearchEncodedMultipliers","kind":"re-export","signature":"rootAlgebraSearchEncodedMultipliers","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0534:rootAlgebraSquare","exportIndex":534,"name":"rootAlgebraSquare","kind":"re-export","signature":"rootAlgebraSquare","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0535:rootAlgebraTraceMultiply","exportIndex":535,"name":"rootAlgebraTraceMultiply","kind":"re-export","signature":"rootAlgebraTraceMultiply","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0536:rootAlgebraValidate","exportIndex":536,"name":"rootAlgebraValidate","kind":"re-export","signature":"rootAlgebraValidate","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0537:runApp","exportIndex":537,"name":"runApp","kind":"re-export","signature":"runApp","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0538:sampleAmplitudeModulated","exportIndex":538,"name":"sampleAmplitudeModulated","kind":"re-export","signature":"sampleAmplitudeModulated","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0539:sampleOscillator","exportIndex":539,"name":"sampleOscillator","kind":"re-export","signature":"sampleOscillator","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0540:samplePhaseModulated","exportIndex":540,"name":"samplePhaseModulated","kind":"re-export","signature":"samplePhaseModulated","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0541:sampleRingModulated","exportIndex":541,"name":"sampleRingModulated","kind":"re-export","signature":"sampleRingModulated","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0542:sampleWave","exportIndex":542,"name":"sampleWave","kind":"re-export","signature":"sampleWave","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0543:sandboxBucketToTemperature","exportIndex":543,"name":"sandboxBucketToTemperature","kind":"re-export","signature":"sandboxBucketToTemperature","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0544:sandboxSpeciesIdForSubstance","exportIndex":544,"name":"sandboxSpeciesIdForSubstance","kind":"re-export","signature":"sandboxSpeciesIdForSubstance","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0545:saturate","exportIndex":545,"name":"saturate","kind":"re-export","signature":"saturate","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0546:screenCameraBasisReport","exportIndex":546,"name":"screenCameraBasisReport","kind":"re-export","signature":"screenCameraBasisReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0547:screenCameraStateReport","exportIndex":547,"name":"screenCameraStateReport","kind":"re-export","signature":"screenCameraStateReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0548:screenPickInputReport","exportIndex":548,"name":"screenPickInputReport","kind":"re-export","signature":"screenPickInputReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0549:serializeBVHForGPU","exportIndex":549,"name":"serializeBVHForGPU","kind":"re-export","signature":"serializeBVHForGPU","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0550:serializeScene","exportIndex":550,"name":"serializeScene","kind":"re-export","signature":"serializeScene","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0551:setActiveGhostBasePosition","exportIndex":551,"name":"setActiveGhostBasePosition","kind":"re-export","signature":"setActiveGhostBasePosition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0552:setActiveGhostInSelection","exportIndex":552,"name":"setActiveGhostInSelection","kind":"re-export","signature":"setActiveGhostInSelection","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0553:setActiveGhostOffset","exportIndex":553,"name":"setActiveGhostOffset","kind":"re-export","signature":"setActiveGhostOffset","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0554:setBusVolumeByName","exportIndex":554,"name":"setBusVolumeByName","kind":"re-export","signature":"setBusVolumeByName","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0555:setEntityComponent","exportIndex":555,"name":"setEntityComponent","kind":"re-export","signature":"setEntityComponent","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0556:setMPMWorldBounds","exportIndex":556,"name":"setMPMWorldBounds","kind":"re-export","signature":"setMPMWorldBounds","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0557:setMasterVolume","exportIndex":557,"name":"setMasterVolume","kind":"re-export","signature":"setMasterVolume","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0558:setNode","exportIndex":558,"name":"setNode","kind":"re-export","signature":"setNode","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0559:setParticleBillboardParams","exportIndex":559,"name":"setParticleBillboardParams","kind":"re-export","signature":"setParticleBillboardParams","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0560:setSystemEnabled","exportIndex":560,"name":"setSystemEnabled","kind":"re-export","signature":"setSystemEnabled","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0561:setSystemGroupEnabled","exportIndex":561,"name":"setSystemGroupEnabled","kind":"re-export","signature":"setSystemGroupEnabled","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0562:smoothstep","exportIndex":562,"name":"smoothstep","kind":"re-export","signature":"smoothstep","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0563:spawnEntity","exportIndex":563,"name":"spawnEntity","kind":"re-export","signature":"spawnEntity","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0564:spawnParticleEmitter","exportIndex":564,"name":"spawnParticleEmitter","kind":"re-export","signature":"spawnParticleEmitter","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0565:spawnPhysicsObjectAtPosition","exportIndex":565,"name":"spawnPhysicsObjectAtPosition","kind":"re-export","signature":"spawnPhysicsObjectAtPosition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0566:spellConfigToInstance","exportIndex":566,"name":"spellConfigToInstance","kind":"re-export","signature":"spellConfigToInstance","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0567:spellElementToEffectType","exportIndex":567,"name":"spellElementToEffectType","kind":"re-export","signature":"spellElementToEffectType","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0568:splatFluidSources","exportIndex":568,"name":"splatFluidSources","kind":"re-export","signature":"splatFluidSources","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0569:splatParticleDensity","exportIndex":569,"name":"splatParticleDensity","kind":"re-export","signature":"splatParticleDensity","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0570:standardCameraBoomReport","exportIndex":570,"name":"standardCameraBoomReport","kind":"re-export","signature":"standardCameraBoomReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0571:standardCameraBoundsFocusReport","exportIndex":571,"name":"standardCameraBoundsFocusReport","kind":"re-export","signature":"standardCameraBoundsFocusReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0572:standardCameraBoundsReport","exportIndex":572,"name":"standardCameraBoundsReport","kind":"re-export","signature":"standardCameraBoundsReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0573:standardCameraFocusReport","exportIndex":573,"name":"standardCameraFocusReport","kind":"re-export","signature":"standardCameraFocusReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0574:standardCameraFocusTransitionReport","exportIndex":574,"name":"standardCameraFocusTransitionReport","kind":"re-export","signature":"standardCameraFocusTransitionReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0575:standardCameraKeysReport","exportIndex":575,"name":"standardCameraKeysReport","kind":"re-export","signature":"standardCameraKeysReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0576:standardCameraMovementIntentReport","exportIndex":576,"name":"standardCameraMovementIntentReport","kind":"re-export","signature":"standardCameraMovementIntentReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0577:standardCameraMovementResponseReport","exportIndex":577,"name":"standardCameraMovementResponseReport","kind":"re-export","signature":"standardCameraMovementResponseReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0578:standardCameraOptionsReport","exportIndex":578,"name":"standardCameraOptionsReport","kind":"re-export","signature":"standardCameraOptionsReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0579:standardCameraSphereFitReport","exportIndex":579,"name":"standardCameraSphereFitReport","kind":"re-export","signature":"standardCameraSphereFitReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0580:standardCameraStateReport","exportIndex":580,"name":"standardCameraStateReport","kind":"re-export","signature":"standardCameraStateReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0581:standardCameraUpdateReport","exportIndex":581,"name":"standardCameraUpdateReport","kind":"re-export","signature":"standardCameraUpdateReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0582:standardCameraZoomReport","exportIndex":582,"name":"standardCameraZoomReport","kind":"re-export","signature":"standardCameraZoomReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0583:standardGamepadButtonReport","exportIndex":583,"name":"standardGamepadButtonReport","kind":"re-export","signature":"standardGamepadButtonReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0584:standardGamepadHapticEffectReport","exportIndex":584,"name":"standardGamepadHapticEffectReport","kind":"re-export","signature":"standardGamepadHapticEffectReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0585:standardGamepadInputReport","exportIndex":585,"name":"standardGamepadInputReport","kind":"re-export","signature":"standardGamepadInputReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0586:standardGamepadMovementReport","exportIndex":586,"name":"standardGamepadMovementReport","kind":"re-export","signature":"standardGamepadMovementReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0587:standardInputActionMapReport","exportIndex":587,"name":"standardInputActionMapReport","kind":"re-export","signature":"standardInputActionMapReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0588:standardInputActionStateReport","exportIndex":588,"name":"standardInputActionStateReport","kind":"re-export","signature":"standardInputActionStateReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0589:standardInputWheelZoomReport","exportIndex":589,"name":"standardInputWheelZoomReport","kind":"re-export","signature":"standardInputWheelZoomReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0590:startGrabCandidate","exportIndex":590,"name":"startGrabCandidate","kind":"re-export","signature":"startGrabCandidate","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0591:startImageHeatHaze","exportIndex":591,"name":"startImageHeatHaze","kind":"re-export","signature":"startImageHeatHaze","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0592:startUnderwaterSiltField","exportIndex":592,"name":"startUnderwaterSiltField","kind":"re-export","signature":"startUnderwaterSiltField","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0593:stateFirstModeLabel","exportIndex":593,"name":"stateFirstModeLabel","kind":"re-export","signature":"stateFirstModeLabel","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0594:stepAllSimulations","exportIndex":594,"name":"stepAllSimulations","kind":"re-export","signature":"stepAllSimulations","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0595:stepCamera","exportIndex":595,"name":"stepCamera","kind":"re-export","signature":"stepCamera","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0596:stepCoupledOscillators","exportIndex":596,"name":"stepCoupledOscillators","kind":"re-export","signature":"stepCoupledOscillators","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0597:stepCrystallization","exportIndex":597,"name":"stepCrystallization","kind":"re-export","signature":"stepCrystallization","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0598:stepEmitters","exportIndex":598,"name":"stepEmitters","kind":"re-export","signature":"stepEmitters","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0599:stepFluid","exportIndex":599,"name":"stepFluid","kind":"re-export","signature":"stepFluid","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0600:stepFluidSimWorld","exportIndex":600,"name":"stepFluidSimWorld","kind":"re-export","signature":"stepFluidSimWorld","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0601:stepMPMWorld","exportIndex":601,"name":"stepMPMWorld","kind":"re-export","signature":"stepMPMWorld","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0602:stepParticleSimWorld","exportIndex":602,"name":"stepParticleSimWorld","kind":"re-export","signature":"stepParticleSimWorld","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0603:stepParticles","exportIndex":603,"name":"stepParticles","kind":"re-export","signature":"stepParticles","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0604:stepWorld","exportIndex":604,"name":"stepWorld","kind":"re-export","signature":"stepWorld","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0605:stepWorldFrame","exportIndex":605,"name":"stepWorldFrame","kind":"re-export","signature":"stepWorldFrame","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0606:stopAllSources","exportIndex":606,"name":"stopAllSources","kind":"re-export","signature":"stopAllSources","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0607:stopSource","exportIndex":607,"name":"stopSource","kind":"re-export","signature":"stopSource","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0608:switchCameraMode","exportIndex":608,"name":"switchCameraMode","kind":"re-export","signature":"switchCameraMode","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0609:syncCameraToEcs","exportIndex":609,"name":"syncCameraToEcs","kind":"re-export","signature":"syncCameraToEcs","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0610:temperatureToSandboxBucket","exportIndex":610,"name":"temperatureToSandboxBucket","kind":"re-export","signature":"temperatureToSandboxBucket","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0611:textNode","exportIndex":611,"name":"textNode","kind":"re-export","signature":"textNode","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0612:tickAudioEngine","exportIndex":612,"name":"tickAudioEngine","kind":"re-export","signature":"tickAudioEngine","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0613:tickCharacterAudio","exportIndex":613,"name":"tickCharacterAudio","kind":"re-export","signature":"tickCharacterAudio","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0614:triggerAudioEvent","exportIndex":614,"name":"triggerAudioEvent","kind":"re-export","signature":"triggerAudioEvent","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0615:unpackSandboxCell","exportIndex":615,"name":"unpackSandboxCell","kind":"re-export","signature":"unpackSandboxCell","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0616:unpackSandboxObject","exportIndex":616,"name":"unpackSandboxObject","kind":"re-export","signature":"unpackSandboxObject","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0617:unregisterAudioEvent","exportIndex":617,"name":"unregisterAudioEvent","kind":"re-export","signature":"unregisterAudioEvent","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0618:unregisterFootstepEvents","exportIndex":618,"name":"unregisterFootstepEvents","kind":"re-export","signature":"unregisterFootstepEvents","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0619:unregisterSystem","exportIndex":619,"name":"unregisterSystem","kind":"re-export","signature":"unregisterSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0620:updateAttachedParticlesIntoParticlesState","exportIndex":620,"name":"updateAttachedParticlesIntoParticlesState","kind":"re-export","signature":"updateAttachedParticlesIntoParticlesState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0621:updateAttachedParticlesIntoWorld","exportIndex":621,"name":"updateAttachedParticlesIntoWorld","kind":"re-export","signature":"updateAttachedParticlesIntoWorld","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0622:updateAudioListener","exportIndex":622,"name":"updateAudioListener","kind":"re-export","signature":"updateAudioListener","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0623:updateBuffer","exportIndex":623,"name":"updateBuffer","kind":"re-export","signature":"updateBuffer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0624:updateCameraFull","exportIndex":624,"name":"updateCameraFull","kind":"re-export","signature":"updateCameraFull","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0625:updateGrabbedEntity","exportIndex":625,"name":"updateGrabbedEntity","kind":"re-export","signature":"updateGrabbedEntity","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0626:updateParticleCounts","exportIndex":626,"name":"updateParticleCounts","kind":"re-export","signature":"updateParticleCounts","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0627:updateStandardCamera","exportIndex":627,"name":"updateStandardCamera","kind":"re-export","signature":"updateStandardCamera","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0628:updateStandardLights","exportIndex":628,"name":"updateStandardLights","kind":"re-export","signature":"updateStandardLights","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0629:updateStandardUniforms","exportIndex":629,"name":"updateStandardUniforms","kind":"re-export","signature":"updateStandardUniforms","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0630:updateVoxelWorldFrameUniforms","exportIndex":630,"name":"updateVoxelWorldFrameUniforms","kind":"re-export","signature":"updateVoxelWorldFrameUniforms","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0631:updateWorldFluidDomainParams","exportIndex":631,"name":"updateWorldFluidDomainParams","kind":"re-export","signature":"updateWorldFluidDomainParams","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0632:validateComponentSchema","exportIndex":632,"name":"validateComponentSchema","kind":"re-export","signature":"validateComponentSchema","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0633:validateSandboxMaterialCatalog","exportIndex":633,"name":"validateSandboxMaterialCatalog","kind":"re-export","signature":"validateSandboxMaterialCatalog","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0634:vec2","exportIndex":634,"name":"vec2","kind":"re-export","signature":"vec2","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0635:vec2Add","exportIndex":635,"name":"vec2Add","kind":"re-export","signature":"vec2Add","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0636:vec2Clone","exportIndex":636,"name":"vec2Clone","kind":"re-export","signature":"vec2Clone","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0637:vec2Distance","exportIndex":637,"name":"vec2Distance","kind":"re-export","signature":"vec2Distance","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0638:vec2Dot","exportIndex":638,"name":"vec2Dot","kind":"re-export","signature":"vec2Dot","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0639:vec2Length","exportIndex":639,"name":"vec2Length","kind":"re-export","signature":"vec2Length","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0640:vec2Lerp","exportIndex":640,"name":"vec2Lerp","kind":"re-export","signature":"vec2Lerp","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0641:vec2Normalize","exportIndex":641,"name":"vec2Normalize","kind":"re-export","signature":"vec2Normalize","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0642:vec2Scale","exportIndex":642,"name":"vec2Scale","kind":"re-export","signature":"vec2Scale","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0643:vec2Sub","exportIndex":643,"name":"vec2Sub","kind":"re-export","signature":"vec2Sub","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0644:vec3","exportIndex":644,"name":"vec3","kind":"re-export","signature":"vec3","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0645:vec3Add","exportIndex":645,"name":"vec3Add","kind":"re-export","signature":"vec3Add","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0646:vec3Bounce","exportIndex":646,"name":"vec3Bounce","kind":"re-export","signature":"vec3Bounce","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0647:vec3Clone","exportIndex":647,"name":"vec3Clone","kind":"re-export","signature":"vec3Clone","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0648:vec3Cross","exportIndex":648,"name":"vec3Cross","kind":"re-export","signature":"vec3Cross","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0649:vec3DirectionTo","exportIndex":649,"name":"vec3DirectionTo","kind":"re-export","signature":"vec3DirectionTo","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0650:vec3Distance","exportIndex":650,"name":"vec3Distance","kind":"re-export","signature":"vec3Distance","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0651:vec3DistanceSq","exportIndex":651,"name":"vec3DistanceSq","kind":"re-export","signature":"vec3DistanceSq","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0652:vec3Dot","exportIndex":652,"name":"vec3Dot","kind":"re-export","signature":"vec3Dot","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0653:vec3FaceForward","exportIndex":653,"name":"vec3FaceForward","kind":"re-export","signature":"vec3FaceForward","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0654:vec3Forward","exportIndex":654,"name":"vec3Forward","kind":"re-export","signature":"vec3Forward","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0655:vec3Length","exportIndex":655,"name":"vec3Length","kind":"re-export","signature":"vec3Length","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0656:vec3LengthSq","exportIndex":656,"name":"vec3LengthSq","kind":"re-export","signature":"vec3LengthSq","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0657:vec3Lerp","exportIndex":657,"name":"vec3Lerp","kind":"re-export","signature":"vec3Lerp","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0658:vec3Midpoint","exportIndex":658,"name":"vec3Midpoint","kind":"re-export","signature":"vec3Midpoint","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0659:vec3Mul","exportIndex":659,"name":"vec3Mul","kind":"re-export","signature":"vec3Mul","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0660:vec3Negate","exportIndex":660,"name":"vec3Negate","kind":"re-export","signature":"vec3Negate","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0661:vec3Normalize","exportIndex":661,"name":"vec3Normalize","kind":"re-export","signature":"vec3Normalize","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0662:vec3OctDecode","exportIndex":662,"name":"vec3OctDecode","kind":"re-export","signature":"vec3OctDecode","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0663:vec3OctEncode","exportIndex":663,"name":"vec3OctEncode","kind":"re-export","signature":"vec3OctEncode","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0664:vec3One","exportIndex":664,"name":"vec3One","kind":"re-export","signature":"vec3One","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0665:vec3Project","exportIndex":665,"name":"vec3Project","kind":"re-export","signature":"vec3Project","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0666:vec3Reflect","exportIndex":666,"name":"vec3Reflect","kind":"re-export","signature":"vec3Reflect","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0667:vec3Refract","exportIndex":667,"name":"vec3Refract","kind":"re-export","signature":"vec3Refract","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0668:vec3Right","exportIndex":668,"name":"vec3Right","kind":"re-export","signature":"vec3Right","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0669:vec3RotateTowards","exportIndex":669,"name":"vec3RotateTowards","kind":"re-export","signature":"vec3RotateTowards","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0670:vec3Saturate","exportIndex":670,"name":"vec3Saturate","kind":"re-export","signature":"vec3Saturate","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0671:vec3Scale","exportIndex":671,"name":"vec3Scale","kind":"re-export","signature":"vec3Scale","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0672:vec3SmoothDamp","exportIndex":672,"name":"vec3SmoothDamp","kind":"re-export","signature":"vec3SmoothDamp","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0673:vec3Sub","exportIndex":673,"name":"vec3Sub","kind":"re-export","signature":"vec3Sub","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0674:vec3Up","exportIndex":674,"name":"vec3Up","kind":"re-export","signature":"vec3Up","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0675:vec3Zero","exportIndex":675,"name":"vec3Zero","kind":"re-export","signature":"vec3Zero","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0676:voxel","exportIndex":676,"name":"voxel","kind":"re-export","signature":"voxel","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineBootstrap.md","moduleTitle":"EngineBootstrap","source":"engine/EngineBootstrap.js","import":"/engine/EngineBootstrap.js","sourceHash":"5505cfd446c76de676c7da6c248e1e33232dd3ab1421b16eb9968df018a7db1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineBootstrap.js#0677:waitForCanvasReady","exportIndex":677,"name":"waitForCanvasReady","kind":"re-export","signature":"waitForCanvasReady","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineEditorBootstrap.md","moduleTitle":"EngineEditorBootstrap","source":"engine/EngineEditorBootstrap.js","import":"/engine/EngineEditorBootstrap.js","sourceHash":"a8fe16ba18fadfc618d35d10f0047efe5c658b3ba1cef5823a387fdc2da65443","subsystem":"engine","recordType":"api-module","id":"module:engine/EngineEditorBootstrap.js","title":"EngineEditorBootstrap","summary":"EngineEditorBootstrap.js - Combined Engine + Editor entry point Use this as the entry point when you want the FULL library bundled: - All engine modules (math, ECS, rendering, simulation, audio, tools) - All editor modules (viewport, physics sim, particles, collab, UI) Usage: python bundle_engine.py --entry engine/EngineEditorBootstrap.js --eager The bundled runtime exposes everything on window.PE / window.ParticleEngine: PE.vec3(), PE.createWorld(), PE.EditorApp, etc.","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/EngineEditorBootstrap.md","moduleTitle":"EngineEditorBootstrap","source":"engine/EngineEditorBootstrap.js","import":"/engine/EngineEditorBootstrap.js","sourceHash":"a8fe16ba18fadfc618d35d10f0047efe5c658b3ba1cef5823a387fdc2da65443","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineEditorBootstrap.js#0000:initializePlauna","exportIndex":0,"name":"initializePlauna","kind":"function","signature":"async initializePlauna(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineEditorBootstrap.md","moduleTitle":"EngineEditorBootstrap","source":"engine/EngineEditorBootstrap.js","import":"/engine/EngineEditorBootstrap.js","sourceHash":"a8fe16ba18fadfc618d35d10f0047efe5c658b3ba1cef5823a387fdc2da65443","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineEditorBootstrap.js#0001:Editor","exportIndex":1,"name":"Editor","kind":"constant","signature":"Editor","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineEditorBootstrap.md","moduleTitle":"EngineEditorBootstrap","source":"engine/EngineEditorBootstrap.js","import":"/engine/EngineEditorBootstrap.js","sourceHash":"a8fe16ba18fadfc618d35d10f0047efe5c658b3ba1cef5823a387fdc2da65443","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineEditorBootstrap.js#0002:EditorApp","exportIndex":2,"name":"EditorApp","kind":"re-export","signature":"EditorApp","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineEditorBootstrap.md","moduleTitle":"EngineEditorBootstrap","source":"engine/EngineEditorBootstrap.js","import":"/engine/EngineEditorBootstrap.js","sourceHash":"a8fe16ba18fadfc618d35d10f0047efe5c658b3ba1cef5823a387fdc2da65443","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineEditorBootstrap.js#0003:Engine","exportIndex":3,"name":"Engine","kind":"re-export","signature":"Engine","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineEditorBootstrap.md","moduleTitle":"EngineEditorBootstrap","source":"engine/EngineEditorBootstrap.js","import":"/engine/EngineEditorBootstrap.js","sourceHash":"a8fe16ba18fadfc618d35d10f0047efe5c658b3ba1cef5823a387fdc2da65443","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineEditorBootstrap.js#0004:ProjectManager","exportIndex":4,"name":"ProjectManager","kind":"re-export","signature":"ProjectManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineEditorBootstrap.md","moduleTitle":"EngineEditorBootstrap","source":"engine/EngineEditorBootstrap.js","import":"/engine/EngineEditorBootstrap.js","sourceHash":"a8fe16ba18fadfc618d35d10f0047efe5c658b3ba1cef5823a387fdc2da65443","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineEditorBootstrap.js#0005:createPlaunaApp","exportIndex":5,"name":"createPlaunaApp","kind":"re-export","signature":"createPlaunaApp","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-module","id":"module:engine/EngineImports.js","title":"EngineImports","summary":"Global barrel for engine modules, grouped by domain. This is intended for games/tests/tools that want a single import and then access Math/Gpu/Ecs/Render/Tools/etc as namespaces.","exportCount":51}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0000:Aim","exportIndex":0,"name":"Aim","kind":"re-export","signature":"Aim","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0001:Animation","exportIndex":1,"name":"Animation","kind":"re-export","signature":"Animation","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0002:Camera","exportIndex":2,"name":"Camera","kind":"re-export","signature":"Camera","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0003:CameraTools","exportIndex":3,"name":"CameraTools","kind":"re-export","signature":"CameraTools","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0004:Collider","exportIndex":4,"name":"Collider","kind":"re-export","signature":"Collider","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0005:Config","exportIndex":5,"name":"Config","kind":"re-export","signature":"Config","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0006:CoreSave","exportIndex":6,"name":"CoreSave","kind":"re-export","signature":"CoreSave","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0007:CoreSchema","exportIndex":7,"name":"CoreSchema","kind":"re-export","signature":"CoreSchema","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0008:GameplayAI","exportIndex":8,"name":"GameplayAI","kind":"re-export","signature":"GameplayAI","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0009:GameplayEvents","exportIndex":9,"name":"GameplayEvents","kind":"re-export","signature":"GameplayEvents","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0010:GameplayInventory","exportIndex":10,"name":"GameplayInventory","kind":"re-export","signature":"GameplayInventory","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0011:GameplayItems","exportIndex":11,"name":"GameplayItems","kind":"re-export","signature":"GameplayItems","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0012:GameplayPerception","exportIndex":12,"name":"GameplayPerception","kind":"re-export","signature":"GameplayPerception","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0013:GameplayProgression","exportIndex":13,"name":"GameplayProgression","kind":"re-export","signature":"GameplayProgression","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0014:GameplayRules","exportIndex":14,"name":"GameplayRules","kind":"re-export","signature":"GameplayRules","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0015:GameplaySimulation","exportIndex":15,"name":"GameplaySimulation","kind":"re-export","signature":"GameplaySimulation","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0016:GameplaySocial","exportIndex":16,"name":"GameplaySocial","kind":"re-export","signature":"GameplaySocial","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0017:GameplaySociety","exportIndex":17,"name":"GameplaySociety","kind":"re-export","signature":"GameplaySociety","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0018:Geometry","exportIndex":18,"name":"Geometry","kind":"re-export","signature":"Geometry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0019:Ghost","exportIndex":19,"name":"Ghost","kind":"re-export","signature":"Ghost","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0020:Gpu","exportIndex":20,"name":"Gpu","kind":"re-export","signature":"Gpu","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0021:GpuDevice","exportIndex":21,"name":"GpuDevice","kind":"re-export","signature":"GpuDevice","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0022:Grab","exportIndex":22,"name":"Grab","kind":"re-export","signature":"Grab","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0023:Inspector","exportIndex":23,"name":"Inspector","kind":"re-export","signature":"Inspector","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0024:Light","exportIndex":24,"name":"Light","kind":"re-export","signature":"Light","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0025:Math","exportIndex":25,"name":"Math","kind":"re-export","signature":"Math","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0026:Mesh","exportIndex":26,"name":"Mesh","kind":"re-export","signature":"Mesh","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0027:Narrative","exportIndex":27,"name":"Narrative","kind":"re-export","signature":"Narrative","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0028:NetReplicated","exportIndex":28,"name":"NetReplicated","kind":"re-export","signature":"NetReplicated","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0029:Network","exportIndex":29,"name":"Network","kind":"re-export","signature":"Network","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0030:ParticleBillboards","exportIndex":30,"name":"ParticleBillboards","kind":"re-export","signature":"ParticleBillboards","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0031:ParticleEmitter","exportIndex":31,"name":"ParticleEmitter","kind":"re-export","signature":"ParticleEmitter","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0032:ParticleQuality","exportIndex":32,"name":"ParticleQuality","kind":"re-export","signature":"ParticleQuality","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0033:PhysicsBody","exportIndex":33,"name":"PhysicsBody","kind":"re-export","signature":"PhysicsBody","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0034:PhysicsScenes","exportIndex":34,"name":"PhysicsScenes","kind":"re-export","signature":"PhysicsScenes","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0035:Picking","exportIndex":35,"name":"Picking","kind":"re-export","signature":"Picking","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0036:Platform","exportIndex":36,"name":"Platform","kind":"re-export","signature":"Platform","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0037:ReplicationProfiles","exportIndex":37,"name":"ReplicationProfiles","kind":"re-export","signature":"ReplicationProfiles","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0038:Rig","exportIndex":38,"name":"Rig","kind":"re-export","signature":"Rig","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0039:ScreenRayCaster","exportIndex":39,"name":"ScreenRayCaster","kind":"re-export","signature":"ScreenRayCaster","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0040:Shaders","exportIndex":40,"name":"Shaders","kind":"re-export","signature":"Shaders","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0041:SmokeVolumes","exportIndex":41,"name":"SmokeVolumes","kind":"re-export","signature":"SmokeVolumes","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0042:Spawn","exportIndex":42,"name":"Spawn","kind":"re-export","signature":"Spawn","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0043:SpectralRender","exportIndex":43,"name":"SpectralRender","kind":"re-export","signature":"SpectralRender","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0044:StandardEntityRenderResources","exportIndex":44,"name":"StandardEntityRenderResources","kind":"re-export","signature":"StandardEntityRenderResources","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0045:StandardRoom","exportIndex":45,"name":"StandardRoom","kind":"re-export","signature":"StandardRoom","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0046:StandardUniforms","exportIndex":46,"name":"StandardUniforms","kind":"re-export","signature":"StandardUniforms","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0047:Storage","exportIndex":47,"name":"Storage","kind":"re-export","signature":"Storage","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0048:Transform","exportIndex":48,"name":"Transform","kind":"re-export","signature":"Transform","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0049:VoxelWorld","exportIndex":49,"name":"VoxelWorld","kind":"re-export","signature":"VoxelWorld","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/EngineImports.md","moduleTitle":"EngineImports","source":"engine/EngineImports.js","import":"/engine/EngineImports.js","sourceHash":"11e1315d0714124ddeae94e60169e42c525a1fd50fc47c1e822e5b5819dc7ffb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/EngineImports.js#0050:World","exportIndex":50,"name":"World","kind":"re-export","signature":"World","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/MathImports.md","moduleTitle":"MathImports","source":"engine/MathImports.js","import":"/engine/MathImports.js","sourceHash":"751a3e0d53604a3c63c6793aab8f1b79580e202a43a82ed29b09bcabfd30eb6d","subsystem":"engine","recordType":"api-module","id":"module:engine/MathImports.js","title":"MathImports","summary":"MathImports: convenience barrel for engine math utilities. Provides both a grouped Math namespace and flat re-exports for common ops.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/MathImports.md","moduleTitle":"MathImports","source":"engine/MathImports.js","import":"/engine/MathImports.js","sourceHash":"751a3e0d53604a3c63c6793aab8f1b79580e202a43a82ed29b09bcabfd30eb6d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/MathImports.js#0000:Math","exportIndex":0,"name":"Math","kind":"constant","signature":"Math","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/RenderImports.md","moduleTitle":"RenderImports","source":"engine/RenderImports.js","import":"/engine/RenderImports.js","sourceHash":"0ca25a938e4c7e6bdf092ed2af5977ee930ea805a80bcb5b1052885148588b9e","subsystem":"engine","recordType":"api-module","id":"module:engine/RenderImports.js","title":"RenderImports","summary":"","exportCount":31}
{"schemaVersion":1,"modulePath":"engine/reference/RenderImports.md","moduleTitle":"RenderImports","source":"engine/RenderImports.js","import":"/engine/RenderImports.js","sourceHash":"0ca25a938e4c7e6bdf092ed2af5977ee930ea805a80bcb5b1052885148588b9e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/RenderImports.js#0000:RenderMesh","exportIndex":0,"name":"RenderMesh","kind":"constant","signature":"RenderMesh","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/RenderImports.md","moduleTitle":"RenderImports","source":"engine/RenderImports.js","import":"/engine/RenderImports.js","sourceHash":"0ca25a938e4c7e6bdf092ed2af5977ee930ea805a80bcb5b1052885148588b9e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/RenderImports.js#0001:RenderGeometry","exportIndex":1,"name":"RenderGeometry","kind":"constant","signature":"RenderGeometry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/RenderImports.md","moduleTitle":"RenderImports","source":"engine/RenderImports.js","import":"/engine/RenderImports.js","sourceHash":"0ca25a938e4c7e6bdf092ed2af5977ee930ea805a80bcb5b1052885148588b9e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/RenderImports.js#0002:RenderShaders","exportIndex":2,"name":"RenderShaders","kind":"constant","signature":"RenderShaders","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/RenderImports.md","moduleTitle":"RenderImports","source":"engine/RenderImports.js","import":"/engine/RenderImports.js","sourceHash":"0ca25a938e4c7e6bdf092ed2af5977ee930ea805a80bcb5b1052885148588b9e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/RenderImports.js#0003:RenderRoom","exportIndex":3,"name":"RenderRoom","kind":"constant","signature":"RenderRoom","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/RenderImports.md","moduleTitle":"RenderImports","source":"engine/RenderImports.js","import":"/engine/RenderImports.js","sourceHash":"0ca25a938e4c7e6bdf092ed2af5977ee930ea805a80bcb5b1052885148588b9e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/RenderImports.js#0004:RenderVoxelWorld","exportIndex":4,"name":"RenderVoxelWorld","kind":"constant","signature":"RenderVoxelWorld","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/RenderImports.md","moduleTitle":"RenderImports","source":"engine/RenderImports.js","import":"/engine/RenderImports.js","sourceHash":"0ca25a938e4c7e6bdf092ed2af5977ee930ea805a80bcb5b1052885148588b9e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/RenderImports.js#0005:RenderUniforms","exportIndex":5,"name":"RenderUniforms","kind":"constant","signature":"RenderUniforms","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/RenderImports.md","moduleTitle":"RenderImports","source":"engine/RenderImports.js","import":"/engine/RenderImports.js","sourceHash":"0ca25a938e4c7e6bdf092ed2af5977ee930ea805a80bcb5b1052885148588b9e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/RenderImports.js#0006:RenderEntityResources","exportIndex":6,"name":"RenderEntityResources","kind":"constant","signature":"RenderEntityResources","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/RenderImports.md","moduleTitle":"RenderImports","source":"engine/RenderImports.js","import":"/engine/RenderImports.js","sourceHash":"0ca25a938e4c7e6bdf092ed2af5977ee930ea805a80bcb5b1052885148588b9e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/RenderImports.js#0007:RenderSpectral","exportIndex":7,"name":"RenderSpectral","kind":"constant","signature":"RenderSpectral","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/RenderImports.md","moduleTitle":"RenderImports","source":"engine/RenderImports.js","import":"/engine/RenderImports.js","sourceHash":"0ca25a938e4c7e6bdf092ed2af5977ee930ea805a80bcb5b1052885148588b9e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/RenderImports.js#0008:createUnitCubeMesh","exportIndex":8,"name":"createUnitCubeMesh","kind":"constant","signature":"createUnitCubeMesh","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/RenderImports.md","moduleTitle":"RenderImports","source":"engine/RenderImports.js","import":"/engine/RenderImports.js","sourceHash":"0ca25a938e4c7e6bdf092ed2af5977ee930ea805a80bcb5b1052885148588b9e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/RenderImports.js#0009:getVertexBufferLayoutForMesh","exportIndex":9,"name":"getVertexBufferLayoutForMesh","kind":"constant","signature":"getVertexBufferLayoutForMesh","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/RenderImports.md","moduleTitle":"RenderImports","source":"engine/RenderImports.js","import":"/engine/RenderImports.js","sourceHash":"0ca25a938e4c7e6bdf092ed2af5977ee930ea805a80bcb5b1052885148588b9e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/RenderImports.js#0010:createEngineMesh","exportIndex":10,"name":"createEngineMesh","kind":"constant","signature":"createEngineMesh","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/RenderImports.md","moduleTitle":"RenderImports","source":"engine/RenderImports.js","import":"/engine/RenderImports.js","sourceHash":"0ca25a938e4c7e6bdf092ed2af5977ee930ea805a80bcb5b1052885148588b9e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/RenderImports.js#0011:createSkyboxGeometry","exportIndex":11,"name":"createSkyboxGeometry","kind":"constant","signature":"createSkyboxGeometry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/RenderImports.md","moduleTitle":"RenderImports","source":"engine/RenderImports.js","import":"/engine/RenderImports.js","sourceHash":"0ca25a938e4c7e6bdf092ed2af5977ee930ea805a80bcb5b1052885148588b9e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/RenderImports.js#0012:createCubeGeometry","exportIndex":12,"name":"createCubeGeometry","kind":"constant","signature":"createCubeGeometry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/RenderImports.md","moduleTitle":"RenderImports","source":"engine/RenderImports.js","import":"/engine/RenderImports.js","sourceHash":"0ca25a938e4c7e6bdf092ed2af5977ee930ea805a80bcb5b1052885148588b9e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/RenderImports.js#0013:createGroundGeometry","exportIndex":13,"name":"createGroundGeometry","kind":"constant","signature":"createGroundGeometry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/RenderImports.md","moduleTitle":"RenderImports","source":"engine/RenderImports.js","import":"/engine/RenderImports.js","sourceHash":"0ca25a938e4c7e6bdf092ed2af5977ee930ea805a80bcb5b1052885148588b9e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/RenderImports.js#0014:createPlaneGeometry","exportIndex":14,"name":"createPlaneGeometry","kind":"constant","signature":"createPlaneGeometry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/RenderImports.md","moduleTitle":"RenderImports","source":"engine/RenderImports.js","import":"/engine/RenderImports.js","sourceHash":"0ca25a938e4c7e6bdf092ed2af5977ee930ea805a80bcb5b1052885148588b9e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/RenderImports.js#0015:createSphereGeometry","exportIndex":15,"name":"createSphereGeometry","kind":"constant","signature":"createSphereGeometry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/RenderImports.md","moduleTitle":"RenderImports","source":"engine/RenderImports.js","import":"/engine/RenderImports.js","sourceHash":"0ca25a938e4c7e6bdf092ed2af5977ee930ea805a80bcb5b1052885148588b9e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/RenderImports.js#0016:createCylinderGeometry","exportIndex":16,"name":"createCylinderGeometry","kind":"constant","signature":"createCylinderGeometry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/RenderImports.md","moduleTitle":"RenderImports","source":"engine/RenderImports.js","import":"/engine/RenderImports.js","sourceHash":"0ca25a938e4c7e6bdf092ed2af5977ee930ea805a80bcb5b1052885148588b9e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/RenderImports.js#0017:createShaderLoader","exportIndex":17,"name":"createShaderLoader","kind":"constant","signature":"createShaderLoader","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/RenderImports.md","moduleTitle":"RenderImports","source":"engine/RenderImports.js","import":"/engine/RenderImports.js","sourceHash":"0ca25a938e4c7e6bdf092ed2af5977ee930ea805a80bcb5b1052885148588b9e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/RenderImports.js#0018:createStandardRoomRenderer","exportIndex":18,"name":"createStandardRoomRenderer","kind":"constant","signature":"createStandardRoomRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/RenderImports.md","moduleTitle":"RenderImports","source":"engine/RenderImports.js","import":"/engine/RenderImports.js","sourceHash":"0ca25a938e4c7e6bdf092ed2af5977ee930ea805a80bcb5b1052885148588b9e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/RenderImports.js#0019:createVoxelWorldRenderer","exportIndex":19,"name":"createVoxelWorldRenderer","kind":"constant","signature":"createVoxelWorldRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/RenderImports.md","moduleTitle":"RenderImports","source":"engine/RenderImports.js","import":"/engine/RenderImports.js","sourceHash":"0ca25a938e4c7e6bdf092ed2af5977ee930ea805a80bcb5b1052885148588b9e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/RenderImports.js#0020:updateVoxelWorldFrameUniforms","exportIndex":20,"name":"updateVoxelWorldFrameUniforms","kind":"constant","signature":"updateVoxelWorldFrameUniforms","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/RenderImports.md","moduleTitle":"RenderImports","source":"engine/RenderImports.js","import":"/engine/RenderImports.js","sourceHash":"0ca25a938e4c7e6bdf092ed2af5977ee930ea805a80bcb5b1052885148588b9e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/RenderImports.js#0021:updateStandardLights","exportIndex":21,"name":"updateStandardLights","kind":"constant","signature":"updateStandardLights","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/RenderImports.md","moduleTitle":"RenderImports","source":"engine/RenderImports.js","import":"/engine/RenderImports.js","sourceHash":"0ca25a938e4c7e6bdf092ed2af5977ee930ea805a80bcb5b1052885148588b9e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/RenderImports.js#0022:updateStandardUniforms","exportIndex":22,"name":"updateStandardUniforms","kind":"constant","signature":"updateStandardUniforms","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/RenderImports.md","moduleTitle":"RenderImports","source":"engine/RenderImports.js","import":"/engine/RenderImports.js","sourceHash":"0ca25a938e4c7e6bdf092ed2af5977ee930ea805a80bcb5b1052885148588b9e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/RenderImports.js#0023:createStandardEntityRenderResources","exportIndex":23,"name":"createStandardEntityRenderResources","kind":"constant","signature":"createStandardEntityRenderResources","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/RenderImports.md","moduleTitle":"RenderImports","source":"engine/RenderImports.js","import":"/engine/RenderImports.js","sourceHash":"0ca25a938e4c7e6bdf092ed2af5977ee930ea805a80bcb5b1052885148588b9e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/RenderImports.js#0024:createSmokeVolumeRenderer","exportIndex":24,"name":"createSmokeVolumeRenderer","kind":"constant","signature":"createSmokeVolumeRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/RenderImports.md","moduleTitle":"RenderImports","source":"engine/RenderImports.js","import":"/engine/RenderImports.js","sourceHash":"0ca25a938e4c7e6bdf092ed2af5977ee930ea805a80bcb5b1052885148588b9e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/RenderImports.js#0025:createParticleBillboardRenderer","exportIndex":25,"name":"createParticleBillboardRenderer","kind":"constant","signature":"createParticleBillboardRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/RenderImports.md","moduleTitle":"RenderImports","source":"engine/RenderImports.js","import":"/engine/RenderImports.js","sourceHash":"0ca25a938e4c7e6bdf092ed2af5977ee930ea805a80bcb5b1052885148588b9e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/RenderImports.js#0026:createParticleBillboardDataBindGroup","exportIndex":26,"name":"createParticleBillboardDataBindGroup","kind":"constant","signature":"createParticleBillboardDataBindGroup","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/RenderImports.md","moduleTitle":"RenderImports","source":"engine/RenderImports.js","import":"/engine/RenderImports.js","sourceHash":"0ca25a938e4c7e6bdf092ed2af5977ee930ea805a80bcb5b1052885148588b9e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/RenderImports.js#0027:setParticleBillboardParams","exportIndex":27,"name":"setParticleBillboardParams","kind":"constant","signature":"setParticleBillboardParams","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/RenderImports.md","moduleTitle":"RenderImports","source":"engine/RenderImports.js","import":"/engine/RenderImports.js","sourceHash":"0ca25a938e4c7e6bdf092ed2af5977ee930ea805a80bcb5b1052885148588b9e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/RenderImports.js#0028:createParticleQualityManager","exportIndex":28,"name":"createParticleQualityManager","kind":"constant","signature":"createParticleQualityManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/RenderImports.md","moduleTitle":"RenderImports","source":"engine/RenderImports.js","import":"/engine/RenderImports.js","sourceHash":"0ca25a938e4c7e6bdf092ed2af5977ee930ea805a80bcb5b1052885148588b9e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/RenderImports.js#0029:PARTICLE_QUALITY_PRESETS","exportIndex":29,"name":"PARTICLE_QUALITY_PRESETS","kind":"constant","signature":"PARTICLE_QUALITY_PRESETS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/RenderImports.md","moduleTitle":"RenderImports","source":"engine/RenderImports.js","import":"/engine/RenderImports.js","sourceHash":"0ca25a938e4c7e6bdf092ed2af5977ee930ea805a80bcb5b1052885148588b9e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/RenderImports.js#0030:IndexedClusterCuller","exportIndex":30,"name":"IndexedClusterCuller","kind":"re-export","signature":"IndexedClusterCuller","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-module","id":"module:engine/ToolsImports.js","title":"ToolsImports","summary":"","exportCount":69}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0000:ToolsInspector","exportIndex":0,"name":"ToolsInspector","kind":"constant","signature":"ToolsInspector","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0001:ToolsSpawn","exportIndex":1,"name":"ToolsSpawn","kind":"constant","signature":"ToolsSpawn","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0002:ToolsGhost","exportIndex":2,"name":"ToolsGhost","kind":"constant","signature":"ToolsGhost","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0003:ToolsPicking","exportIndex":3,"name":"ToolsPicking","kind":"constant","signature":"ToolsPicking","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0004:ToolsScreenRay","exportIndex":4,"name":"ToolsScreenRay","kind":"constant","signature":"ToolsScreenRay","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0005:ROOM_PICKING_LIMITS","exportIndex":5,"name":"ROOM_PICKING_LIMITS","kind":"constant","signature":"ROOM_PICKING_LIMITS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0006:pickingRayReport","exportIndex":6,"name":"pickingRayReport","kind":"constant","signature":"pickingRayReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0007:roomPickingOptionsReport","exportIndex":7,"name":"roomPickingOptionsReport","kind":"constant","signature":"roomPickingOptionsReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0008:entityPickingOptionsReport","exportIndex":8,"name":"entityPickingOptionsReport","kind":"constant","signature":"entityPickingOptionsReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0009:SCREEN_RAY_LIMITS","exportIndex":9,"name":"SCREEN_RAY_LIMITS","kind":"constant","signature":"SCREEN_RAY_LIMITS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0010:screenPickInputReport","exportIndex":10,"name":"screenPickInputReport","kind":"constant","signature":"screenPickInputReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0011:screenCameraBasisReport","exportIndex":11,"name":"screenCameraBasisReport","kind":"constant","signature":"screenCameraBasisReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0012:screenCameraStateReport","exportIndex":12,"name":"screenCameraStateReport","kind":"constant","signature":"screenCameraStateReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0013:ToolsCamera","exportIndex":13,"name":"ToolsCamera","kind":"constant","signature":"ToolsCamera","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0014:ToolsGrab","exportIndex":14,"name":"ToolsGrab","kind":"constant","signature":"ToolsGrab","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0015:ToolsPhysicsScenes","exportIndex":15,"name":"ToolsPhysicsScenes","kind":"constant","signature":"ToolsPhysicsScenes","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0016:ToolsRigging","exportIndex":16,"name":"ToolsRigging","kind":"constant","signature":"ToolsRigging","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0017:ToolsAnimation","exportIndex":17,"name":"ToolsAnimation","kind":"constant","signature":"ToolsAnimation","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0018:attachInspectorPanel","exportIndex":18,"name":"attachInspectorPanel","kind":"constant","signature":"attachInspectorPanel","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0019:spawnPhysicsObjectAtPosition","exportIndex":19,"name":"spawnPhysicsObjectAtPosition","kind":"constant","signature":"spawnPhysicsObjectAtPosition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0020:getGhostPreviewInfo","exportIndex":20,"name":"getGhostPreviewInfo","kind":"constant","signature":"getGhostPreviewInfo","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0021:createGhostSelectionState","exportIndex":21,"name":"createGhostSelectionState","kind":"constant","signature":"createGhostSelectionState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0022:addGhostToSelection","exportIndex":22,"name":"addGhostToSelection","kind":"constant","signature":"addGhostToSelection","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0023:setActiveGhostInSelection","exportIndex":23,"name":"setActiveGhostInSelection","kind":"constant","signature":"setActiveGhostInSelection","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0024:setActiveGhostBasePosition","exportIndex":24,"name":"setActiveGhostBasePosition","kind":"constant","signature":"setActiveGhostBasePosition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0025:setActiveGhostOffset","exportIndex":25,"name":"setActiveGhostOffset","kind":"constant","signature":"setActiveGhostOffset","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0026:getGhostWorldPosition","exportIndex":26,"name":"getGhostWorldPosition","kind":"constant","signature":"getGhostWorldPosition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0027:getActiveGhost","exportIndex":27,"name":"getActiveGhost","kind":"constant","signature":"getActiveGhost","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0028:getActiveGhostWorldPosition","exportIndex":28,"name":"getActiveGhostWorldPosition","kind":"constant","signature":"getActiveGhostWorldPosition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0029:pickRoomSurfaceFromRay","exportIndex":29,"name":"pickRoomSurfaceFromRay","kind":"constant","signature":"pickRoomSurfaceFromRay","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0030:pickEntityFromRay","exportIndex":30,"name":"pickEntityFromRay","kind":"constant","signature":"pickEntityFromRay","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0031:getPickRayForCanvasFromScreen","exportIndex":31,"name":"getPickRayForCanvasFromScreen","kind":"constant","signature":"getPickRayForCanvasFromScreen","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0032:updateStandardCamera","exportIndex":32,"name":"updateStandardCamera","kind":"constant","signature":"updateStandardCamera","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0033:getStandardCameraEyeBasis","exportIndex":33,"name":"getStandardCameraEyeBasis","kind":"constant","signature":"getStandardCameraEyeBasis","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0034:STANDARD_CAMERA_LIMITS","exportIndex":34,"name":"STANDARD_CAMERA_LIMITS","kind":"constant","signature":"STANDARD_CAMERA_LIMITS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0035:standardCameraStateReport","exportIndex":35,"name":"standardCameraStateReport","kind":"constant","signature":"standardCameraStateReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0036:standardCameraOptionsReport","exportIndex":36,"name":"standardCameraOptionsReport","kind":"constant","signature":"standardCameraOptionsReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0037:standardCameraUpdateReport","exportIndex":37,"name":"standardCameraUpdateReport","kind":"constant","signature":"standardCameraUpdateReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0038:standardCameraKeysReport","exportIndex":38,"name":"standardCameraKeysReport","kind":"constant","signature":"standardCameraKeysReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0039:standardCameraMovementResponseReport","exportIndex":39,"name":"standardCameraMovementResponseReport","kind":"constant","signature":"standardCameraMovementResponseReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0040:standardCameraZoomReport","exportIndex":40,"name":"standardCameraZoomReport","kind":"constant","signature":"standardCameraZoomReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0041:standardCameraBoomReport","exportIndex":41,"name":"standardCameraBoomReport","kind":"constant","signature":"standardCameraBoomReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0042:standardCameraFocusReport","exportIndex":42,"name":"standardCameraFocusReport","kind":"constant","signature":"standardCameraFocusReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0043:standardCameraFocusTransitionReport","exportIndex":43,"name":"standardCameraFocusTransitionReport","kind":"constant","signature":"standardCameraFocusTransitionReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0044:standardCameraSphereFitReport","exportIndex":44,"name":"standardCameraSphereFitReport","kind":"constant","signature":"standardCameraSphereFitReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0045:standardCameraBoundsReport","exportIndex":45,"name":"standardCameraBoundsReport","kind":"constant","signature":"standardCameraBoundsReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0046:standardCameraBoundsFocusReport","exportIndex":46,"name":"standardCameraBoundsFocusReport","kind":"constant","signature":"standardCameraBoundsFocusReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0047:standardCameraMovementIntentReport","exportIndex":47,"name":"standardCameraMovementIntentReport","kind":"constant","signature":"standardCameraMovementIntentReport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0048:createGrabState","exportIndex":48,"name":"createGrabState","kind":"constant","signature":"createGrabState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0049:startGrabCandidate","exportIndex":49,"name":"startGrabCandidate","kind":"constant","signature":"startGrabCandidate","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0050:cancelGrabCandidate","exportIndex":50,"name":"cancelGrabCandidate","kind":"constant","signature":"cancelGrabCandidate","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0051:releaseGrabbed","exportIndex":51,"name":"releaseGrabbed","kind":"constant","signature":"releaseGrabbed","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0052:configurePhysicsSandboxScene","exportIndex":52,"name":"configurePhysicsSandboxScene","kind":"constant","signature":"configurePhysicsSandboxScene","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0053:buildSourceSurfaceBVH","exportIndex":53,"name":"buildSourceSurfaceBVH","kind":"constant","signature":"buildSourceSurfaceBVH","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0054:estimateAlignmentICP","exportIndex":54,"name":"estimateAlignmentICP","kind":"constant","signature":"estimateAlignmentICP","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0055:transferSkinWeightsCPU","exportIndex":55,"name":"transferSkinWeightsCPU","kind":"constant","signature":"transferSkinWeightsCPU","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0056:transferSkinWeightsGPU","exportIndex":56,"name":"transferSkinWeightsGPU","kind":"constant","signature":"transferSkinWeightsGPU","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0057:SkinWeightTransferGPU","exportIndex":57,"name":"SkinWeightTransferGPU","kind":"constant","signature":"SkinWeightTransferGPU","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0058:parseFBXAscii","exportIndex":58,"name":"parseFBXAscii","kind":"constant","signature":"parseFBXAscii","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0059:buildMixamoSkeletonFromFBX","exportIndex":59,"name":"buildMixamoSkeletonFromFBX","kind":"constant","signature":"buildMixamoSkeletonFromFBX","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0060:sampleMixamoFBXAnimationClip","exportIndex":60,"name":"sampleMixamoFBXAnimationClip","kind":"constant","signature":"sampleMixamoFBXAnimationClip","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0061:loadMixamoFBXAscii","exportIndex":61,"name":"loadMixamoFBXAscii","kind":"constant","signature":"loadMixamoFBXAscii","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0062:findSkeletonJointIndexByName","exportIndex":62,"name":"findSkeletonJointIndexByName","kind":"constant","signature":"findSkeletonJointIndexByName","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0063:computeClipLocalMatricesAtFrame","exportIndex":63,"name":"computeClipLocalMatricesAtFrame","kind":"constant","signature":"computeClipLocalMatricesAtFrame","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0064:computeClipGlobalMatricesAtFrame","exportIndex":64,"name":"computeClipGlobalMatricesAtFrame","kind":"constant","signature":"computeClipGlobalMatricesAtFrame","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0065:extractRootTranslationTrack","exportIndex":65,"name":"extractRootTranslationTrack","kind":"constant","signature":"extractRootTranslationTrack","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0066:extractRootMotion","exportIndex":66,"name":"extractRootMotion","kind":"constant","signature":"extractRootMotion","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0067:buildTeacherJointPositionDataset","exportIndex":67,"name":"buildTeacherJointPositionDataset","kind":"constant","signature":"buildTeacherJointPositionDataset","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ToolsImports.md","moduleTitle":"ToolsImports","source":"engine/ToolsImports.js","import":"/engine/ToolsImports.js","sourceHash":"6e3c6ea002d569dbe64cf7168a7d15ce5837389c39bbcb37e0cb5bd4f94b6bfa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ToolsImports.js#0068:attachPhysicsSandboxInspector","exportIndex":68,"name":"attachPhysicsSandboxInspector","kind":"re-export","signature":"attachPhysicsSandboxInspector","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/animation/index.md","moduleTitle":"animation/index","source":"engine/animation/index.js","import":"/engine/animation/index.js","sourceHash":"2b2418c8c52d0bd67acd1a22e3f6658cbc6b7115101383aab4be30550cdba945","subsystem":"engine","recordType":"api-module","id":"module:engine/animation/index.js","title":"animation/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/animation/learning/FbxMotionExtractor.md","moduleTitle":"animation/learning/FbxMotionExtractor","source":"engine/animation/learning/FbxMotionExtractor.js","import":"/engine/animation/learning/FbxMotionExtractor.js","sourceHash":"ca2eb5b9b2f21aadf374bf8cff0a32cab8f3193d24217d3f775eace806153834","subsystem":"engine","recordType":"api-module","id":"module:engine/animation/learning/FbxMotionExtractor.js","title":"animation/learning/FbxMotionExtractor","summary":"","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/animation/learning/FbxMotionExtractor.md","moduleTitle":"animation/learning/FbxMotionExtractor","source":"engine/animation/learning/FbxMotionExtractor.js","import":"/engine/animation/learning/FbxMotionExtractor.js","sourceHash":"ca2eb5b9b2f21aadf374bf8cff0a32cab8f3193d24217d3f775eace806153834","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/animation/learning/FbxMotionExtractor.js#0000:extractMotionClipFromFbxAscii","exportIndex":0,"name":"extractMotionClipFromFbxAscii","kind":"function","signature":"extractMotionClipFromFbxAscii(text, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/animation/learning/FbxMotionExtractor.md","moduleTitle":"animation/learning/FbxMotionExtractor","source":"engine/animation/learning/FbxMotionExtractor.js","import":"/engine/animation/learning/FbxMotionExtractor.js","sourceHash":"ca2eb5b9b2f21aadf374bf8cff0a32cab8f3193d24217d3f775eace806153834","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/animation/learning/FbxMotionExtractor.js#0001:extractMotionDatasetFromFbxAsciiEntries","exportIndex":1,"name":"extractMotionDatasetFromFbxAsciiEntries","kind":"function","signature":"extractMotionDatasetFromFbxAsciiEntries(entries, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/animation/learning/FbxMotionExtractor.md","moduleTitle":"animation/learning/FbxMotionExtractor","source":"engine/animation/learning/FbxMotionExtractor.js","import":"/engine/animation/learning/FbxMotionExtractor.js","sourceHash":"ca2eb5b9b2f21aadf374bf8cff0a32cab8f3193d24217d3f775eace806153834","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/animation/learning/FbxMotionExtractor.js#0002:extractMotionDatasetFromFbxFiles","exportIndex":2,"name":"extractMotionDatasetFromFbxFiles","kind":"function","signature":"async extractMotionDatasetFromFbxFiles(files, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/animation/learning/FbxMotionExtractor.md","moduleTitle":"animation/learning/FbxMotionExtractor","source":"engine/animation/learning/FbxMotionExtractor.js","import":"/engine/animation/learning/FbxMotionExtractor.js","sourceHash":"ca2eb5b9b2f21aadf374bf8cff0a32cab8f3193d24217d3f775eace806153834","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/animation/learning/FbxMotionExtractor.js#0003:extractMotionDatasetFromFbxDirectoryHandle","exportIndex":3,"name":"extractMotionDatasetFromFbxDirectoryHandle","kind":"function","signature":"async extractMotionDatasetFromFbxDirectoryHandle(dirHandle, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/animation/learning/GltfMotionExtractor.md","moduleTitle":"animation/learning/GltfMotionExtractor","source":"engine/animation/learning/GltfMotionExtractor.js","import":"/engine/animation/learning/GltfMotionExtractor.js","sourceHash":"6a43763f7c966d4c825678cba2a37bb81636905f047966f68ec069a6bb8dbacd","subsystem":"engine","recordType":"api-module","id":"module:engine/animation/learning/GltfMotionExtractor.js","title":"animation/learning/GltfMotionExtractor","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/animation/learning/GltfMotionExtractor.md","moduleTitle":"animation/learning/GltfMotionExtractor","source":"engine/animation/learning/GltfMotionExtractor.js","import":"/engine/animation/learning/GltfMotionExtractor.js","sourceHash":"6a43763f7c966d4c825678cba2a37bb81636905f047966f68ec069a6bb8dbacd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/animation/learning/GltfMotionExtractor.js#0000:extractMotionDatasetFromGltf","exportIndex":0,"name":"extractMotionDatasetFromGltf","kind":"function","signature":"extractMotionDatasetFromGltf(gltf, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/animation/learning/GltfMotionExtractor.md","moduleTitle":"animation/learning/GltfMotionExtractor","source":"engine/animation/learning/GltfMotionExtractor.js","import":"/engine/animation/learning/GltfMotionExtractor.js","sourceHash":"6a43763f7c966d4c825678cba2a37bb81636905f047966f68ec069a6bb8dbacd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/animation/learning/GltfMotionExtractor.js#0001:extractMotionClipFromGltf","exportIndex":1,"name":"extractMotionClipFromGltf","kind":"function","signature":"extractMotionClipFromGltf(gltf, animationIndex = 0, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/animation/learning/MotionClip.md","moduleTitle":"animation/learning/MotionClip","source":"engine/animation/learning/MotionClip.js","import":"/engine/animation/learning/MotionClip.js","sourceHash":"4a7962568bb34c96d7325c6e5faad14bb6882f889bfb3f50b0e7e4e31d6b946e","subsystem":"engine","recordType":"api-module","id":"module:engine/animation/learning/MotionClip.js","title":"animation/learning/MotionClip","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/animation/learning/MotionClip.md","moduleTitle":"animation/learning/MotionClip","source":"engine/animation/learning/MotionClip.js","import":"/engine/animation/learning/MotionClip.js","sourceHash":"4a7962568bb34c96d7325c6e5faad14bb6882f889bfb3f50b0e7e4e31d6b946e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/animation/learning/MotionClip.js#0000:MotionClip","exportIndex":0,"name":"MotionClip","kind":"class","signature":"class MotionClip","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/animation/learning/MotionDataset.md","moduleTitle":"animation/learning/MotionDataset","source":"engine/animation/learning/MotionDataset.js","import":"/engine/animation/learning/MotionDataset.js","sourceHash":"30624d36dbb13d2b4c2dcb507f67915c076ad04bf5f5171037dc98662a9620f9","subsystem":"engine","recordType":"api-module","id":"module:engine/animation/learning/MotionDataset.js","title":"animation/learning/MotionDataset","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/animation/learning/MotionDataset.md","moduleTitle":"animation/learning/MotionDataset","source":"engine/animation/learning/MotionDataset.js","import":"/engine/animation/learning/MotionDataset.js","sourceHash":"30624d36dbb13d2b4c2dcb507f67915c076ad04bf5f5171037dc98662a9620f9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/animation/learning/MotionDataset.js#0000:MotionDataset","exportIndex":0,"name":"MotionDataset","kind":"class","signature":"class MotionDataset","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/animation/learning/MotionFeatures.md","moduleTitle":"animation/learning/MotionFeatures","source":"engine/animation/learning/MotionFeatures.js","import":"/engine/animation/learning/MotionFeatures.js","sourceHash":"d56aed9f4496c2a70aa38b0744eb5ae47e8f7c3497b380b70634de9b1bea8946","subsystem":"engine","recordType":"api-module","id":"module:engine/animation/learning/MotionFeatures.js","title":"animation/learning/MotionFeatures","summary":"","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/animation/learning/MotionFeatures.md","moduleTitle":"animation/learning/MotionFeatures","source":"engine/animation/learning/MotionFeatures.js","import":"/engine/animation/learning/MotionFeatures.js","sourceHash":"d56aed9f4496c2a70aa38b0744eb5ae47e8f7c3497b380b70634de9b1bea8946","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/animation/learning/MotionFeatures.js#0000:buildJointPositionDataset","exportIndex":0,"name":"buildJointPositionDataset","kind":"function","signature":"buildJointPositionDataset(clip, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/animation/learning/MotionFeatures.md","moduleTitle":"animation/learning/MotionFeatures","source":"engine/animation/learning/MotionFeatures.js","import":"/engine/animation/learning/MotionFeatures.js","sourceHash":"d56aed9f4496c2a70aa38b0744eb5ae47e8f7c3497b380b70634de9b1bea8946","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/animation/learning/MotionFeatures.js#0001:buildMotionFeatureIndex","exportIndex":1,"name":"buildMotionFeatureIndex","kind":"function","signature":"buildMotionFeatureIndex(dataset, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/animation/learning/MotionFeatures.md","moduleTitle":"animation/learning/MotionFeatures","source":"engine/animation/learning/MotionFeatures.js","import":"/engine/animation/learning/MotionFeatures.js","sourceHash":"d56aed9f4496c2a70aa38b0744eb5ae47e8f7c3497b380b70634de9b1bea8946","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/animation/learning/MotionFeatures.js#0002:fillRagdollFeature","exportIndex":2,"name":"fillRagdollFeature","kind":"function","signature":"fillRagdollFeature(ragdoll, boneIndices, out, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/animation/learning/MotionMatcher.md","moduleTitle":"animation/learning/MotionMatcher","source":"engine/animation/learning/MotionMatcher.js","import":"/engine/animation/learning/MotionMatcher.js","sourceHash":"ad9575d3bcf1cc16f915ec88aca49e1ab104dc6aa1fa1c230502942dcfc860e2","subsystem":"engine","recordType":"api-module","id":"module:engine/animation/learning/MotionMatcher.js","title":"animation/learning/MotionMatcher","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/animation/learning/MotionMatcher.md","moduleTitle":"animation/learning/MotionMatcher","source":"engine/animation/learning/MotionMatcher.js","import":"/engine/animation/learning/MotionMatcher.js","sourceHash":"ad9575d3bcf1cc16f915ec88aca49e1ab104dc6aa1fa1c230502942dcfc860e2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/animation/learning/MotionMatcher.js#0000:MotionMatcher","exportIndex":0,"name":"MotionMatcher","kind":"class","signature":"class MotionMatcher","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/animation/learning/SkeletonHierarchy.md","moduleTitle":"animation/learning/SkeletonHierarchy","source":"engine/animation/learning/SkeletonHierarchy.js","import":"/engine/animation/learning/SkeletonHierarchy.js","sourceHash":"07eb01ad4cec4324262e68fc5d369d133cb66a700cdbffb31f1685d6328c4b1e","subsystem":"engine","recordType":"api-module","id":"module:engine/animation/learning/SkeletonHierarchy.js","title":"animation/learning/SkeletonHierarchy","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/animation/learning/SkeletonHierarchy.md","moduleTitle":"animation/learning/SkeletonHierarchy","source":"engine/animation/learning/SkeletonHierarchy.js","import":"/engine/animation/learning/SkeletonHierarchy.js","sourceHash":"07eb01ad4cec4324262e68fc5d369d133cb66a700cdbffb31f1685d6328c4b1e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/animation/learning/SkeletonHierarchy.js#0000:SkeletonHierarchy","exportIndex":0,"name":"SkeletonHierarchy","kind":"class","signature":"class SkeletonHierarchy","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/animation/learning/index.md","moduleTitle":"animation/learning/index","source":"engine/animation/learning/index.js","import":"/engine/animation/learning/index.js","sourceHash":"df2275b655b63429e63d936d5d5b2709d71e3af9864906686bd94665f5f8b7a0","subsystem":"engine","recordType":"api-module","id":"module:engine/animation/learning/index.js","title":"animation/learning/index","summary":"","exportCount":14}
{"schemaVersion":1,"modulePath":"engine/reference/animation/learning/index.md","moduleTitle":"animation/learning/index","source":"engine/animation/learning/index.js","import":"/engine/animation/learning/index.js","sourceHash":"df2275b655b63429e63d936d5d5b2709d71e3af9864906686bd94665f5f8b7a0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/animation/learning/index.js#0000:AnimationLearning","exportIndex":0,"name":"AnimationLearning","kind":"constant","signature":"AnimationLearning","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/animation/learning/index.md","moduleTitle":"animation/learning/index","source":"engine/animation/learning/index.js","import":"/engine/animation/learning/index.js","sourceHash":"df2275b655b63429e63d936d5d5b2709d71e3af9864906686bd94665f5f8b7a0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/animation/learning/index.js#0001:MotionClip","exportIndex":1,"name":"MotionClip","kind":"re-export","signature":"MotionClip","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/animation/learning/index.md","moduleTitle":"animation/learning/index","source":"engine/animation/learning/index.js","import":"/engine/animation/learning/index.js","sourceHash":"df2275b655b63429e63d936d5d5b2709d71e3af9864906686bd94665f5f8b7a0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/animation/learning/index.js#0002:MotionDataset","exportIndex":2,"name":"MotionDataset","kind":"re-export","signature":"MotionDataset","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/animation/learning/index.md","moduleTitle":"animation/learning/index","source":"engine/animation/learning/index.js","import":"/engine/animation/learning/index.js","sourceHash":"df2275b655b63429e63d936d5d5b2709d71e3af9864906686bd94665f5f8b7a0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/animation/learning/index.js#0003:MotionMatcher","exportIndex":3,"name":"MotionMatcher","kind":"re-export","signature":"MotionMatcher","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/animation/learning/index.md","moduleTitle":"animation/learning/index","source":"engine/animation/learning/index.js","import":"/engine/animation/learning/index.js","sourceHash":"df2275b655b63429e63d936d5d5b2709d71e3af9864906686bd94665f5f8b7a0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/animation/learning/index.js#0004:SkeletonHierarchy","exportIndex":4,"name":"SkeletonHierarchy","kind":"re-export","signature":"SkeletonHierarchy","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/animation/learning/index.md","moduleTitle":"animation/learning/index","source":"engine/animation/learning/index.js","import":"/engine/animation/learning/index.js","sourceHash":"df2275b655b63429e63d936d5d5b2709d71e3af9864906686bd94665f5f8b7a0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/animation/learning/index.js#0005:buildJointPositionDataset","exportIndex":5,"name":"buildJointPositionDataset","kind":"re-export","signature":"buildJointPositionDataset","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/animation/learning/index.md","moduleTitle":"animation/learning/index","source":"engine/animation/learning/index.js","import":"/engine/animation/learning/index.js","sourceHash":"df2275b655b63429e63d936d5d5b2709d71e3af9864906686bd94665f5f8b7a0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/animation/learning/index.js#0006:buildMotionFeatureIndex","exportIndex":6,"name":"buildMotionFeatureIndex","kind":"re-export","signature":"buildMotionFeatureIndex","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/animation/learning/index.md","moduleTitle":"animation/learning/index","source":"engine/animation/learning/index.js","import":"/engine/animation/learning/index.js","sourceHash":"df2275b655b63429e63d936d5d5b2709d71e3af9864906686bd94665f5f8b7a0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/animation/learning/index.js#0007:extractMotionClipFromFbxAscii","exportIndex":7,"name":"extractMotionClipFromFbxAscii","kind":"re-export","signature":"extractMotionClipFromFbxAscii","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/animation/learning/index.md","moduleTitle":"animation/learning/index","source":"engine/animation/learning/index.js","import":"/engine/animation/learning/index.js","sourceHash":"df2275b655b63429e63d936d5d5b2709d71e3af9864906686bd94665f5f8b7a0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/animation/learning/index.js#0008:extractMotionClipFromGltf","exportIndex":8,"name":"extractMotionClipFromGltf","kind":"re-export","signature":"extractMotionClipFromGltf","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/animation/learning/index.md","moduleTitle":"animation/learning/index","source":"engine/animation/learning/index.js","import":"/engine/animation/learning/index.js","sourceHash":"df2275b655b63429e63d936d5d5b2709d71e3af9864906686bd94665f5f8b7a0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/animation/learning/index.js#0009:extractMotionDatasetFromFbxAsciiEntries","exportIndex":9,"name":"extractMotionDatasetFromFbxAsciiEntries","kind":"re-export","signature":"extractMotionDatasetFromFbxAsciiEntries","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/animation/learning/index.md","moduleTitle":"animation/learning/index","source":"engine/animation/learning/index.js","import":"/engine/animation/learning/index.js","sourceHash":"df2275b655b63429e63d936d5d5b2709d71e3af9864906686bd94665f5f8b7a0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/animation/learning/index.js#0010:extractMotionDatasetFromFbxDirectoryHandle","exportIndex":10,"name":"extractMotionDatasetFromFbxDirectoryHandle","kind":"re-export","signature":"extractMotionDatasetFromFbxDirectoryHandle","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/animation/learning/index.md","moduleTitle":"animation/learning/index","source":"engine/animation/learning/index.js","import":"/engine/animation/learning/index.js","sourceHash":"df2275b655b63429e63d936d5d5b2709d71e3af9864906686bd94665f5f8b7a0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/animation/learning/index.js#0011:extractMotionDatasetFromFbxFiles","exportIndex":11,"name":"extractMotionDatasetFromFbxFiles","kind":"re-export","signature":"extractMotionDatasetFromFbxFiles","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/animation/learning/index.md","moduleTitle":"animation/learning/index","source":"engine/animation/learning/index.js","import":"/engine/animation/learning/index.js","sourceHash":"df2275b655b63429e63d936d5d5b2709d71e3af9864906686bd94665f5f8b7a0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/animation/learning/index.js#0012:extractMotionDatasetFromGltf","exportIndex":12,"name":"extractMotionDatasetFromGltf","kind":"re-export","signature":"extractMotionDatasetFromGltf","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/animation/learning/index.md","moduleTitle":"animation/learning/index","source":"engine/animation/learning/index.js","import":"/engine/animation/learning/index.js","sourceHash":"df2275b655b63429e63d936d5d5b2709d71e3af9864906686bd94665f5f8b7a0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/animation/learning/index.js#0013:fillRagdollFeature","exportIndex":13,"name":"fillRagdollFeature","kind":"re-export","signature":"fillRagdollFeature","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/AssetCache.md","moduleTitle":"assets/AssetCache","source":"engine/assets/AssetCache.js","import":"/engine/assets/AssetCache.js","sourceHash":"700860a49d88a6109b03a826e70ecdc7d18c26e3950c3471e5ef15692768e5c9","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/AssetCache.js","title":"assets/AssetCache","summary":"engine/assets/AssetCache.js — local engine cache (spec §3, cache://).  Converted artifacts (engine binaries, preview meshes, thumbnails, colliders, SDFs, material packs) are cached under cache:// keyed by content hash so a re-import of the same source is instant. The primary backend is the Origin Private File System (OPFS) — origin-private and optimized for file access; an in-memory Map backs environments without OPFS (Node tests, locked-down contexts) so the rest of the runtime is backend-agnostic.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/assets/AssetCache.md","moduleTitle":"assets/AssetCache","source":"engine/assets/AssetCache.js","import":"/engine/assets/AssetCache.js","sourceHash":"700860a49d88a6109b03a826e70ecdc7d18c26e3950c3471e5ef15692768e5c9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/AssetCache.js#0000:AssetCache","exportIndex":0,"name":"AssetCache","kind":"class","signature":"class AssetCache","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/AssetDeduper.md","moduleTitle":"assets/AssetDeduper","source":"engine/assets/AssetDeduper.js","import":"/engine/assets/AssetDeduper.js","sourceHash":"9d8bc22ec241e7ae3637d79abc0f32d087f0fdd0ce9a39a9ebbcaf405f89bbfc","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/AssetDeduper.js","title":"assets/AssetDeduper","summary":"engine/assets/AssetDeduper.js — content-hash dedup (spec §3).  Assets are deduplicated by source content hash. We separate source / mesh / material hashes so that the dedup rules can distinguish exact duplicates from variants and conflicts: same source hash               = same source asset (exact duplicate) same name + different hash      = version/conflict same mesh hash + diff material  = variant same texture hash               = shared texture Hashing prefers Web Crypto SHA-256; in a non-secure context it falls back to a deterministic FNV-1a stamp (clearly tagged so callers know it isn't crypto).","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/assets/AssetDeduper.md","moduleTitle":"assets/AssetDeduper","source":"engine/assets/AssetDeduper.js","import":"/engine/assets/AssetDeduper.js","sourceHash":"9d8bc22ec241e7ae3637d79abc0f32d087f0fdd0ce9a39a9ebbcaf405f89bbfc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/AssetDeduper.js#0000:assetDeduperFallbackHash","exportIndex":0,"name":"assetDeduperFallbackHash","kind":"function","signature":"assetDeduperFallbackHash(data)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/AssetDeduper.md","moduleTitle":"assets/AssetDeduper","source":"engine/assets/AssetDeduper.js","import":"/engine/assets/AssetDeduper.js","sourceHash":"9d8bc22ec241e7ae3637d79abc0f32d087f0fdd0ce9a39a9ebbcaf405f89bbfc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/AssetDeduper.js#0001:hashContent","exportIndex":1,"name":"hashContent","kind":"function","signature":"async hashContent(data)","summary":"Content hash of arbitrary data. Returns 'sha256:<hex>' (secure) or 'fnv1a:<hex>' (fallback). Async because Web Crypto digest is async."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/AssetDeduper.md","moduleTitle":"assets/AssetDeduper","source":"engine/assets/AssetDeduper.js","import":"/engine/assets/AssetDeduper.js","sourceHash":"9d8bc22ec241e7ae3637d79abc0f32d087f0fdd0ce9a39a9ebbcaf405f89bbfc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/AssetDeduper.js#0002:classify","exportIndex":2,"name":"classify","kind":"function","signature":"classify(candidate, records)","summary":"Classify a candidate against the existing records."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/AssetDeduper.md","moduleTitle":"assets/AssetDeduper","source":"engine/assets/AssetDeduper.js","import":"/engine/assets/AssetDeduper.js","sourceHash":"9d8bc22ec241e7ae3637d79abc0f32d087f0fdd0ce9a39a9ebbcaf405f89bbfc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/AssetDeduper.js#0003:DEDUP","exportIndex":3,"name":"DEDUP","kind":"constant","signature":"DEDUP","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/AssetRecord.md","moduleTitle":"assets/AssetRecord","source":"engine/assets/AssetRecord.js","import":"/engine/assets/AssetRecord.js","sourceHash":"ae8548acb69b9c38101f96a2451c4439ff7072708c9d422fee73faa5cb1697d0","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/AssetRecord.js","title":"assets/AssetRecord","summary":"engine/assets/AssetRecord.js — the registry's record for one source asset.  The asset registry (not the filesystem) is the source of truth. Each record tracks the source content hash, a primary virtual path, redundant backup paths, the set of converted engine artifacts, and license metadata. Records are deduplicated by source hash; variants/conflicts are linked, never merged blindly (see AssetDeduper / AssetRegistry).","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/assets/AssetRecord.md","moduleTitle":"assets/AssetRecord","source":"engine/assets/AssetRecord.js","import":"/engine/assets/AssetRecord.js","sourceHash":"ae8548acb69b9c38101f96a2451c4439ff7072708c9d422fee73faa5cb1697d0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/AssetRecord.js#0000:createAssetRecord","exportIndex":0,"name":"createAssetRecord","kind":"function","signature":"createAssetRecord(init = {})","summary":"Create an asset record."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/AssetRecord.md","moduleTitle":"assets/AssetRecord","source":"engine/assets/AssetRecord.js","import":"/engine/assets/AssetRecord.js","sourceHash":"ae8548acb69b9c38101f96a2451c4439ff7072708c9d422fee73faa5cb1697d0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/AssetRecord.js#0001:createLicenseBlock","exportIndex":1,"name":"createLicenseBlock","kind":"function","signature":"createLicenseBlock(init = {})","summary":"License metadata is mandatory before import (unknown is allowed but flagged). Marketplace assets are licensed, not sold — track it and warn on restricted."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/AssetRecord.md","moduleTitle":"assets/AssetRecord","source":"engine/assets/AssetRecord.js","import":"/engine/assets/AssetRecord.js","sourceHash":"ae8548acb69b9c38101f96a2451c4439ff7072708c9d422fee73faa5cb1697d0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/AssetRecord.js#0002:licenseNeedsReview","exportIndex":2,"name":"licenseNeedsReview","kind":"function","signature":"licenseNeedsReview(license)","summary":"True if the license is unknown or explicitly disallows engine conversion."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/AssetRecord.md","moduleTitle":"assets/AssetRecord","source":"engine/assets/AssetRecord.js","import":"/engine/assets/AssetRecord.js","sourceHash":"ae8548acb69b9c38101f96a2451c4439ff7072708c9d422fee73faa5cb1697d0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/AssetRecord.js#0003:ASSET_TYPES","exportIndex":3,"name":"ASSET_TYPES","kind":"constant","signature":"ASSET_TYPES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/AssetRegistry.md","moduleTitle":"assets/AssetRegistry","source":"engine/assets/AssetRegistry.js","import":"/engine/assets/AssetRegistry.js","sourceHash":"53ee2abb9003fa79df6f7a8fc163bfcf1d13a8ae199d2400109ea9ef58444206","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/AssetRegistry.js","title":"assets/AssetRegistry","summary":"engine/assets/AssetRegistry.js — the source of truth (spec §3, rule 3).  The registry (not the filesystem) owns asset identity. Sources are deduplicated by content hash; the registry links exact duplicates, variants, and conflicts rather than merging them blindly. Registering an already-known source returns the canonical record (idempotent), so re-importing the same file never produces a second asset.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/assets/AssetRegistry.md","moduleTitle":"assets/AssetRegistry","source":"engine/assets/AssetRegistry.js","import":"/engine/assets/AssetRegistry.js","sourceHash":"53ee2abb9003fa79df6f7a8fc163bfcf1d13a8ae199d2400109ea9ef58444206","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/AssetRegistry.js#0000:AssetRegistry","exportIndex":0,"name":"AssetRegistry","kind":"class","signature":"class AssetRegistry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/AssetResolver.md","moduleTitle":"assets/AssetResolver","source":"engine/assets/AssetResolver.js","import":"/engine/assets/AssetResolver.js","sourceHash":"71434beddaf555a895ce7cfc2fbfd032dc2be9bd87a70595e5dd5b43007bca51","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/AssetResolver.js","title":"assets/AssetResolver","summary":"engine/assets/AssetResolver.js — virtual-path resolution + backup repair (spec §3, rule 5). Files move, browser permissions expire, cloud mirrors lag. The resolver maps a scheme:// path to a concrete backend and, when reading a registered asset, tries the primary then each backup, verifying by content hash. If a backup matches the expected hash it repairs the primary; if a candidate's hash differs it is flagged a conflict (never silently accepted).","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/assets/AssetResolver.md","moduleTitle":"assets/AssetResolver","source":"engine/assets/AssetResolver.js","import":"/engine/assets/AssetResolver.js","sourceHash":"71434beddaf555a895ce7cfc2fbfd032dc2be9bd87a70595e5dd5b43007bca51","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/AssetResolver.js#0000:AssetResolver","exportIndex":0,"name":"AssetResolver","kind":"class","signature":"class AssetResolver","summary":"A backend is { async read(path) -> Uint8Array|null, async write?(path, bytes) }. Schemes without a registered backend simply fail to resolve (caller falls back)."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/AssetResolver.md","moduleTitle":"assets/AssetResolver","source":"engine/assets/AssetResolver.js","import":"/engine/assets/AssetResolver.js","sourceHash":"71434beddaf555a895ce7cfc2fbfd032dc2be9bd87a70595e5dd5b43007bca51","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/AssetResolver.js#0001:backendFromCache","exportIndex":1,"name":"backendFromCache","kind":"function","signature":"backendFromCache(cache)","summary":"Adapt an AssetCache instance to a resolver backend (cache:// scheme)."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/AssetResolver.md","moduleTitle":"assets/AssetResolver","source":"engine/assets/AssetResolver.js","import":"/engine/assets/AssetResolver.js","sourceHash":"71434beddaf555a895ce7cfc2fbfd032dc2be9bd87a70595e5dd5b43007bca51","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/AssetResolver.js#0002:makeFetchBackend","exportIndex":2,"name":"makeFetchBackend","kind":"function","signature":"makeFetchBackend(base)","summary":"A read-only backend that fetches relative to a base URL (asset://, cloud://)."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/AssetResolver.md","moduleTitle":"assets/AssetResolver","source":"engine/assets/AssetResolver.js","import":"/engine/assets/AssetResolver.js","sourceHash":"71434beddaf555a895ce7cfc2fbfd032dc2be9bd87a70595e5dd5b43007bca51","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/AssetResolver.js#0003:makeMemoryBackend","exportIndex":3,"name":"makeMemoryBackend","kind":"function","signature":"makeMemoryBackend(initial = {})","summary":"A simple in-memory backend (temp:// drag-drop, user:// session mounts)."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/CanonicalSpace.md","moduleTitle":"assets/CanonicalSpace","source":"engine/assets/CanonicalSpace.js","import":"/engine/assets/CanonicalSpace.js","sourceHash":"4d32f0a2c6fbf749f08abeeb4f8b0d6166ac6706c45d93406ce44ca3b1a8cc1c","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/CanonicalSpace.js","title":"assets/CanonicalSpace","summary":"engine/assets/CanonicalSpace.js — the engine's canonical coordinate frame.  Y = up, Z = forward, X = side (right), unit = meter, origin = logical root.  Source files come from Blender/Maya/Max/CAD/Unity/Unreal/etc. with inconsistent axes, scale, and origin. We never trust source orientation and never rewrite it destructively — instead we compute a non-destructive axis correction (a quaternion + uniform scale) that maps the declared source frame into this canonical frame, and store it on the model's ImportTransform.","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/assets/CanonicalSpace.md","moduleTitle":"assets/CanonicalSpace","source":"engine/assets/CanonicalSpace.js","import":"/engine/assets/CanonicalSpace.js","sourceHash":"4d32f0a2c6fbf749f08abeeb4f8b0d6166ac6706c45d93406ce44ca3b1a8cc1c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/CanonicalSpace.js#0000:axisVector","exportIndex":0,"name":"axisVector","kind":"function","signature":"axisVector(token)","summary":"Resolve an axis token ('+Y', '-Z', …) to a unit vector."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/CanonicalSpace.md","moduleTitle":"assets/CanonicalSpace","source":"engine/assets/CanonicalSpace.js","import":"/engine/assets/CanonicalSpace.js","sourceHash":"4d32f0a2c6fbf749f08abeeb4f8b0d6166ac6706c45d93406ce44ca3b1a8cc1c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/CanonicalSpace.js#0001:axisCorrectionQuat","exportIndex":1,"name":"axisCorrectionQuat","kind":"function","signature":"axisCorrectionQuat(upAxis = '+Y', forwardAxis = '+Z')","summary":"Quaternion (xyzw) that rotates a vector from a source frame (declared by its up + forward axes) into the canonical Y-up / Z-forward frame."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/CanonicalSpace.md","moduleTitle":"assets/CanonicalSpace","source":"engine/assets/CanonicalSpace.js","import":"/engine/assets/CanonicalSpace.js","sourceHash":"4d32f0a2c6fbf749f08abeeb4f8b0d6166ac6706c45d93406ce44ca3b1a8cc1c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/CanonicalSpace.js#0002:mat3ToQuat","exportIndex":2,"name":"mat3ToQuat","kind":"function","signature":"mat3ToQuat(m)","summary":"Convert a row-major 3x3 rotation matrix to a quaternion (xyzw)."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/CanonicalSpace.md","moduleTitle":"assets/CanonicalSpace","source":"engine/assets/CanonicalSpace.js","import":"/engine/assets/CanonicalSpace.js","sourceHash":"4d32f0a2c6fbf749f08abeeb4f8b0d6166ac6706c45d93406ce44ca3b1a8cc1c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/CanonicalSpace.js#0003:rotateVecByQuat","exportIndex":3,"name":"rotateVecByQuat","kind":"function","signature":"rotateVecByQuat(v, q)","summary":"Rotate a 3-vector by a quaternion (xyzw)."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/CanonicalSpace.md","moduleTitle":"assets/CanonicalSpace","source":"engine/assets/CanonicalSpace.js","import":"/engine/assets/CanonicalSpace.js","sourceHash":"4d32f0a2c6fbf749f08abeeb4f8b0d6166ac6706c45d93406ce44ca3b1a8cc1c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/CanonicalSpace.js#0004:unitScaleToMeters","exportIndex":4,"name":"unitScaleToMeters","kind":"function","signature":"unitScaleToMeters(unit)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/CanonicalSpace.md","moduleTitle":"assets/CanonicalSpace","source":"engine/assets/CanonicalSpace.js","import":"/engine/assets/CanonicalSpace.js","sourceHash":"4d32f0a2c6fbf749f08abeeb4f8b0d6166ac6706c45d93406ce44ca3b1a8cc1c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/CanonicalSpace.js#0005:CANONICAL","exportIndex":5,"name":"CANONICAL","kind":"constant","signature":"CANONICAL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/CanonicalSpace.md","moduleTitle":"assets/CanonicalSpace","source":"engine/assets/CanonicalSpace.js","import":"/engine/assets/CanonicalSpace.js","sourceHash":"4d32f0a2c6fbf749f08abeeb4f8b0d6166ac6706c45d93406ce44ca3b1a8cc1c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/CanonicalSpace.js#0006:UNIT_TO_METERS","exportIndex":6,"name":"UNIT_TO_METERS","kind":"constant","signature":"UNIT_TO_METERS","summary":"Common unit guesses for formats that don't carry units (e.g. STL). Returns a scale factor to convert the source unit to meters. These are *guesses* — the editor exposes an override per import."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/EngineModel.md","moduleTitle":"assets/EngineModel","source":"engine/assets/EngineModel.js","import":"/engine/assets/EngineModel.js","sourceHash":"b7af5e3efddc8d291cb2069460b22c9fcef1319b6cd30097dca52c8b10ee8201","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/EngineModel.js","title":"assets/EngineModel","summary":"engine/assets/EngineModel.js — the unified runtime object.  Core rule of the ingestion runtime: a model file is raw evidence, not the runtime object. The importer parses a source file into an EngineModel, which keeps every layer explicitly separate (source ≠ visual mesh ≠ material ≠ collider ≠ SDF ≠ skeleton ≠ animation ≠ runtime rig ≠ render surface). Layers that have not been built yet are explicitly null/empty — never faked — so the editor can show exactly what was detected vs generated.  Corrections (axis/scale/origin, material fixes, rig edits) live in metadata as an ImportTransform / import profile and are NEVER baked destructively into the source: the original imported look must always be recoverable.","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/assets/EngineModel.md","moduleTitle":"assets/EngineModel","source":"engine/assets/EngineModel.js","import":"/engine/assets/EngineModel.js","sourceHash":"b7af5e3efddc8d291cb2069460b22c9fcef1319b6cd30097dca52c8b10ee8201","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/EngineModel.js#0000:createEngineModel","exportIndex":0,"name":"createEngineModel","kind":"function","signature":"createEngineModel(init = {})","summary":"Create an empty EngineModel with every layer present but unbuilt."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/EngineModel.md","moduleTitle":"assets/EngineModel","source":"engine/assets/EngineModel.js","import":"/engine/assets/EngineModel.js","sourceHash":"b7af5e3efddc8d291cb2069460b22c9fcef1319b6cd30097dca52c8b10ee8201","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/EngineModel.js#0001:createImportTransform","exportIndex":1,"name":"createImportTransform","kind":"function","signature":"createImportTransform(init = {})","summary":"A non-destructive correction applied at runtime (never baked into source). Confidence drives the auto-apply / review / preview / neutral policy."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/EngineModel.md","moduleTitle":"assets/EngineModel","source":"engine/assets/EngineModel.js","import":"/engine/assets/EngineModel.js","sourceHash":"b7af5e3efddc8d291cb2069460b22c9fcef1319b6cd30097dca52c8b10ee8201","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/EngineModel.js#0002:createEngineNode","exportIndex":2,"name":"createEngineNode","kind":"function","signature":"createEngineNode(init = {})","summary":"A node in the preserved source hierarchy (transforms kept as-authored)."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/EngineModel.md","moduleTitle":"assets/EngineModel","source":"engine/assets/EngineModel.js","import":"/engine/assets/EngineModel.js","sourceHash":"b7af5e3efddc8d291cb2069460b22c9fcef1319b6cd30097dca52c8b10ee8201","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/EngineModel.js#0003:createEngineMesh","exportIndex":3,"name":"createEngineMesh","kind":"function","signature":"createEngineMesh(init = {})","summary":"A mesh = a set of primitives (submeshes), each with its own material."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/EngineModel.md","moduleTitle":"assets/EngineModel","source":"engine/assets/EngineModel.js","import":"/engine/assets/EngineModel.js","sourceHash":"b7af5e3efddc8d291cb2069460b22c9fcef1319b6cd30097dca52c8b10ee8201","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/EngineModel.js#0004:createEnginePrimitive","exportIndex":4,"name":"createEnginePrimitive","kind":"function","signature":"createEnginePrimitive(init = {})","summary":"A primitive/submesh: geometry + a single material binding."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/EngineModel.md","moduleTitle":"assets/EngineModel","source":"engine/assets/EngineModel.js","import":"/engine/assets/EngineModel.js","sourceHash":"b7af5e3efddc8d291cb2069460b22c9fcef1319b6cd30097dca52c8b10ee8201","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/EngineModel.js#0005:layerStatus","exportIndex":5,"name":"layerStatus","kind":"function","signature":"layerStatus(model)","summary":"Report which layers are built (non-empty) vs explicitly unbuilt."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/EngineModel.md","moduleTitle":"assets/EngineModel","source":"engine/assets/EngineModel.js","import":"/engine/assets/EngineModel.js","sourceHash":"b7af5e3efddc8d291cb2069460b22c9fcef1319b6cd30097dca52c8b10ee8201","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/EngineModel.js#0006:ENGINE_MODEL_LAYERS","exportIndex":6,"name":"ENGINE_MODEL_LAYERS","kind":"constant","signature":"ENGINE_MODEL_LAYERS","summary":"Canonical layer list — used by the editor to show built vs unbuilt layers."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/LicenseTracker.md","moduleTitle":"assets/LicenseTracker","source":"engine/assets/LicenseTracker.js","import":"/engine/assets/LicenseTracker.js","sourceHash":"513338d08c844774cb8ef324bb5dad544a377208d3f41db4d6264925e1a8dd83","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/LicenseTracker.js","title":"assets/LicenseTracker","summary":"engine/assets/LicenseTracker.js — license metadata + import gate (spec §21).  License metadata is mandatory before import. Marketplace assets are licensed, not sold, and portability varies. The hard rules: only import assets the user owns or is licensed to use; never rip copyrighted game assets; never bypass DRM; store license metadata; warn on unknown/restricted licenses. This gate is advisory by default (warn) and can be set strict (block) per project.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/assets/LicenseTracker.md","moduleTitle":"assets/LicenseTracker","source":"engine/assets/LicenseTracker.js","import":"/engine/assets/LicenseTracker.js","sourceHash":"513338d08c844774cb8ef324bb5dad544a377208d3f41db4d6264925e1a8dd83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/LicenseTracker.js#0000:LicenseTracker","exportIndex":0,"name":"LicenseTracker","kind":"class","signature":"class LicenseTracker","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/LicenseTracker.md","moduleTitle":"assets/LicenseTracker","source":"engine/assets/LicenseTracker.js","import":"/engine/assets/LicenseTracker.js","sourceHash":"513338d08c844774cb8ef324bb5dad544a377208d3f41db4d6264925e1a8dd83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/LicenseTracker.js#0001:GATE","exportIndex":1,"name":"GATE","kind":"constant","signature":"GATE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/geometry/PrincipalAxes.md","moduleTitle":"assets/geometry/PrincipalAxes","source":"engine/assets/geometry/PrincipalAxes.js","import":"/engine/assets/geometry/PrincipalAxes.js","sourceHash":"398bad06d2d3026c86be0c9e4e0faf52184dcd19bd24cecf297a28e8c81555be","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/geometry/PrincipalAxes.js","title":"assets/geometry/PrincipalAxes","summary":"engine/assets/geometry/PrincipalAxes.js — Principal Component Analysis of an EngineModel node's geometry. Small, dependency-free, GPU-free, and reusable: any engine system can ask for the natural axes of a mesh (oriented bounds, alignment, the axle of a wheel disc, the long axis of a barrel, etc.).  PCA finds the orthogonal axes of greatest → least variance of the vertex cloud. A disc/cylinder is thin along its axle, so its axle is the axis of LEAST variance — orientation- and mirror-proof, unlike axis-aligned guesses.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/assets/geometry/PrincipalAxes.md","moduleTitle":"assets/geometry/PrincipalAxes","source":"engine/assets/geometry/PrincipalAxes.js","import":"/engine/assets/geometry/PrincipalAxes.js","sourceHash":"398bad06d2d3026c86be0c9e4e0faf52184dcd19bd24cecf297a28e8c81555be","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/geometry/PrincipalAxes.js#0000:eigSym3","exportIndex":0,"name":"eigSym3","kind":"function","signature":"eigSym3(m)","summary":"Jacobi eigen-decomposition of a symmetric 3×3 (row-major length-9 array)."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/geometry/PrincipalAxes.md","moduleTitle":"assets/geometry/PrincipalAxes","source":"engine/assets/geometry/PrincipalAxes.js","import":"/engine/assets/geometry/PrincipalAxes.js","sourceHash":"398bad06d2d3026c86be0c9e4e0faf52184dcd19bd24cecf297a28e8c81555be","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/geometry/PrincipalAxes.js#0001:principalAxes","exportIndex":1,"name":"principalAxes","kind":"function","signature":"principalAxes(model, nodeId, opts = {})","summary":"PCA of a node's mesh-local vertex cloud."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/geometry/PrincipalAxes.md","moduleTitle":"assets/geometry/PrincipalAxes","source":"engine/assets/geometry/PrincipalAxes.js","import":"/engine/assets/geometry/PrincipalAxes.js","sourceHash":"398bad06d2d3026c86be0c9e4e0faf52184dcd19bd24cecf297a28e8c81555be","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/geometry/PrincipalAxes.js#0002:leastVarianceAxis","exportIndex":2,"name":"leastVarianceAxis","kind":"function","signature":"leastVarianceAxis(model, nodeId, opts = {})","summary":"Convenience: the axis of LEAST variance (e.g. a wheel/disc axle), or null."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/humanoid/BoneMapper.md","moduleTitle":"assets/humanoid/BoneMapper","source":"engine/assets/humanoid/BoneMapper.js","import":"/engine/assets/humanoid/BoneMapper.js","sourceHash":"6917a9903e9a9314b36c226271149b75cfcb898a0b7e19f966a770431b9307ea","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/humanoid/BoneMapper.js","title":"assets/humanoid/BoneMapper","summary":"engine/assets/humanoid/BoneMapper.js — map a source skeleton's bones onto the canonical humanoid slots (HumanoidRig) by NAME first (Mixamo / VRM / generic rig conventions), then hierarchy for the spine chain. Every mapping is a hint; ambiguous/extra bones are reported as `unmapped` and missing required slots as `missing` so the editor can correct (rule 62). Pure + GPU-free (gate-testable).","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/assets/humanoid/BoneMapper.md","moduleTitle":"assets/humanoid/BoneMapper","source":"engine/assets/humanoid/BoneMapper.js","import":"/engine/assets/humanoid/BoneMapper.js","sourceHash":"6917a9903e9a9314b36c226271149b75cfcb898a0b7e19f966a770431b9307ea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/humanoid/BoneMapper.js#0000:mapBones","exportIndex":0,"name":"mapBones","kind":"function","signature":"mapBones(model, opts = {})","summary":"Map a model's skeleton to canonical humanoid bones."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/humanoid/FingerGenerator.md","moduleTitle":"assets/humanoid/FingerGenerator","source":"engine/assets/humanoid/FingerGenerator.js","import":"/engine/assets/humanoid/FingerGenerator.js","sourceHash":"cb943cae4105ba41aea90d9fb6808c107bf4d07f8cc7589307b2a7b7339bf110","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/humanoid/FingerGenerator.js","title":"assets/humanoid/FingerGenerator","summary":"engine/assets/humanoid/FingerGenerator.js — synthesize finger bones from a hand mesh when the source skeleton has none (the browser-friendly geometric approach: detect open-hand fingertip \"lobes\", not ML). Method: 1. Build a hand frame from the wrist→fingertip direction; the lateral spread axis (fingers fan out) and palm normal (thinnest) come from 2-D PCA of the vertices in the plane perpendicular to forward. 2. Take the far band of vertices (toward the tips) and cluster them along the lateral axis — each cluster is one finger lobe. 3. Label the shortest extreme lobe as the thumb; order the rest index→pinky. 4. Emit a short straight bone chain (proximal→intermediate→distal→tip) per finger. If fewer than four lobes separate (a closed fist / low-poly hand), report `detected:false` so the caller falls back to a single paddle.  Pure geometry, GPU-free, deterministic → unit-testable.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/assets/humanoid/FingerGenerator.md","moduleTitle":"assets/humanoid/FingerGenerator","source":"engine/assets/humanoid/FingerGenerator.js","import":"/engine/assets/humanoid/FingerGenerator.js","sourceHash":"cb943cae4105ba41aea90d9fb6808c107bf4d07f8cc7589307b2a7b7339bf110","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/humanoid/FingerGenerator.js#0000:generateFingers","exportIndex":0,"name":"generateFingers","kind":"function","signature":"generateFingers(vertices, opts = {})","summary":"Generate finger bones from hand vertices."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/humanoid/FingerMapper.md","moduleTitle":"assets/humanoid/FingerMapper","source":"engine/assets/humanoid/FingerMapper.js","import":"/engine/assets/humanoid/FingerMapper.js","sourceHash":"77accd50503ad68da9e1bc0e4914685b3416701d076ca12b15d41d86fa17e081","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/humanoid/FingerMapper.js","title":"assets/humanoid/FingerMapper","summary":"engine/assets/humanoid/FingerMapper.js — detect EXISTING finger bones under a hand node by name (Mixamo \"LeftHandIndex1..3\", VRM \"J_Bip_L_Index_Proximal\", generic \"index_01\"), grouping them into canonical fingers with palm→tip joint order. Used before procedural generation: if the artist rigged fingers, keep them; only synthesize when none are found.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/assets/humanoid/FingerMapper.md","moduleTitle":"assets/humanoid/FingerMapper","source":"engine/assets/humanoid/FingerMapper.js","import":"/engine/assets/humanoid/FingerMapper.js","sourceHash":"77accd50503ad68da9e1bc0e4914685b3416701d076ca12b15d41d86fa17e081","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/humanoid/FingerMapper.js#0000:mapFingers","exportIndex":0,"name":"mapFingers","kind":"function","signature":"mapFingers(model, handNodeId)","summary":"Map existing finger bones under a hand node."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/humanoid/HandRig.md","moduleTitle":"assets/humanoid/HandRig","source":"engine/assets/humanoid/HandRig.js","import":"/engine/assets/humanoid/HandRig.js","sourceHash":"37eab586ed8a836c4cf5578fccb8c468fc736c1eb4e51df40e6f3cecea1bf400","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/humanoid/HandRig.js","title":"assets/humanoid/HandRig","summary":"engine/assets/humanoid/HandRig.js — hand + finger rig schema (spec §12). A hand is a wrist + up to five fingers, each a short bone chain. Fingers come from one of three sources: the source skeleton's named bones (`skeleton`), procedurally GENERATED from the hand mesh when the skeleton has none (`generated`), or a single paddle bone when the hand is a closed fist / too low-poly (`paddle`).","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/assets/humanoid/HandRig.md","moduleTitle":"assets/humanoid/HandRig","source":"engine/assets/humanoid/HandRig.js","import":"/engine/assets/humanoid/HandRig.js","sourceHash":"37eab586ed8a836c4cf5578fccb8c468fc736c1eb4e51df40e6f3cecea1bf400","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/humanoid/HandRig.js#0000:createFinger","exportIndex":0,"name":"createFinger","kind":"function","signature":"createFinger(init = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/humanoid/HandRig.md","moduleTitle":"assets/humanoid/HandRig","source":"engine/assets/humanoid/HandRig.js","import":"/engine/assets/humanoid/HandRig.js","sourceHash":"37eab586ed8a836c4cf5578fccb8c468fc736c1eb4e51df40e6f3cecea1bf400","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/humanoid/HandRig.js#0001:createHandRig","exportIndex":1,"name":"createHandRig","kind":"function","signature":"createHandRig(init = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/humanoid/HandRig.md","moduleTitle":"assets/humanoid/HandRig","source":"engine/assets/humanoid/HandRig.js","import":"/engine/assets/humanoid/HandRig.js","sourceHash":"37eab586ed8a836c4cf5578fccb8c468fc736c1eb4e51df40e6f3cecea1bf400","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/humanoid/HandRig.js#0002:FINGERS","exportIndex":2,"name":"FINGERS","kind":"constant","signature":"FINGERS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/humanoid/HandRig.md","moduleTitle":"assets/humanoid/HandRig","source":"engine/assets/humanoid/HandRig.js","import":"/engine/assets/humanoid/HandRig.js","sourceHash":"37eab586ed8a836c4cf5578fccb8c468fc736c1eb4e51df40e6f3cecea1bf400","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/humanoid/HandRig.js#0003:FINGER_JOINTS","exportIndex":3,"name":"FINGER_JOINTS","kind":"constant","signature":"FINGER_JOINTS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/humanoid/HandRig.md","moduleTitle":"assets/humanoid/HandRig","source":"engine/assets/humanoid/HandRig.js","import":"/engine/assets/humanoid/HandRig.js","sourceHash":"37eab586ed8a836c4cf5578fccb8c468fc736c1eb4e51df40e6f3cecea1bf400","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/humanoid/HandRig.js#0004:HAND_SOURCE","exportIndex":4,"name":"HAND_SOURCE","kind":"constant","signature":"HAND_SOURCE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/humanoid/HandRigBuilder.md","moduleTitle":"assets/humanoid/HandRigBuilder","source":"engine/assets/humanoid/HandRigBuilder.js","import":"/engine/assets/humanoid/HandRigBuilder.js","sourceHash":"662dcceb30f7d3aa441e94819fb50c4d63357181ff00fdcafd53e5b443e2ff6f","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/humanoid/HandRigBuilder.js","title":"assets/humanoid/HandRigBuilder","summary":"engine/assets/humanoid/HandRigBuilder.js — build a hand rig for each hand of a humanoid. Priority: (1) use named finger bones if the skeleton has them; else (2) PROBE the hand mesh (vertices skinned to the hand joint) and GENERATE finger bones geometrically; else (3) a single paddle. Wrist + forward come from the humanoid rig (hand world position, and the lowerArm→hand direction).","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/assets/humanoid/HandRigBuilder.md","moduleTitle":"assets/humanoid/HandRigBuilder","source":"engine/assets/humanoid/HandRigBuilder.js","import":"/engine/assets/humanoid/HandRigBuilder.js","sourceHash":"662dcceb30f7d3aa441e94819fb50c4d63357181ff00fdcafd53e5b443e2ff6f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/humanoid/HandRigBuilder.js#0000:extractHandVertices","exportIndex":0,"name":"extractHandVertices","kind":"function","signature":"extractHandVertices(model, handNodeId, thresh = 0.4, pose = null)","summary":"Vertices skinned (weight ≥ thresh) to the hand joint, in node-hierarchy SCENE space (so they match the wrist + the rendered mesh). `pose` is a node→world map."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/humanoid/HandRigBuilder.md","moduleTitle":"assets/humanoid/HandRigBuilder","source":"engine/assets/humanoid/HandRigBuilder.js","import":"/engine/assets/humanoid/HandRigBuilder.js","sourceHash":"662dcceb30f7d3aa441e94819fb50c4d63357181ff00fdcafd53e5b443e2ff6f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/humanoid/HandRigBuilder.js#0001:buildHandRig","exportIndex":1,"name":"buildHandRig","kind":"function","signature":"buildHandRig(model, opts = {})","summary":"Build a single hand rig."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/humanoid/HandRigBuilder.md","moduleTitle":"assets/humanoid/HandRigBuilder","source":"engine/assets/humanoid/HandRigBuilder.js","import":"/engine/assets/humanoid/HandRigBuilder.js","sourceHash":"662dcceb30f7d3aa441e94819fb50c4d63357181ff00fdcafd53e5b443e2ff6f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/humanoid/HandRigBuilder.js#0002:buildHands","exportIndex":2,"name":"buildHands","kind":"function","signature":"buildHands(model, opts = {})","summary":"Build both hands for a model that already has a humanoid rig; attaches them at model.rigs.hand = { left, right } and humanoidRig.hands."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/humanoid/HumanoidRig.md","moduleTitle":"assets/humanoid/HumanoidRig","source":"engine/assets/humanoid/HumanoidRig.js","import":"/engine/assets/humanoid/HumanoidRig.js","sourceHash":"6cb50cb963fa46d4cafdfd1540bc25186158e8df7239412f404a4fff78c00308","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/humanoid/HumanoidRig.js","title":"assets/humanoid/HumanoidRig","summary":"engine/assets/humanoid/HumanoidRig.js — canonical humanoid bone slots + rig schema (spec §12). A humanoid is NOT its skeleton: it's a mapping from the source skeleton's bones onto a canonical slot set (Unity Mecanim / VRM style) plus rest-pose + correction metadata, so animation can retarget and physics can build a ragdoll regardless of how the artist named or oriented the rig. Every mapping is a HINT with confidence; unmapped/ambiguous bones go to the editor.","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/assets/humanoid/HumanoidRig.md","moduleTitle":"assets/humanoid/HumanoidRig","source":"engine/assets/humanoid/HumanoidRig.js","import":"/engine/assets/humanoid/HumanoidRig.js","sourceHash":"6cb50cb963fa46d4cafdfd1540bc25186158e8df7239412f404a4fff78c00308","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/humanoid/HumanoidRig.js#0000:createHumanoidRig","exportIndex":0,"name":"createHumanoidRig","kind":"function","signature":"createHumanoidRig(init = {})","summary":"Create a humanoid rig descriptor."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/humanoid/HumanoidRig.md","moduleTitle":"assets/humanoid/HumanoidRig","source":"engine/assets/humanoid/HumanoidRig.js","import":"/engine/assets/humanoid/HumanoidRig.js","sourceHash":"6cb50cb963fa46d4cafdfd1540bc25186158e8df7239412f404a4fff78c00308","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/humanoid/HumanoidRig.js#0001:boneSide","exportIndex":1,"name":"boneSide","kind":"function","signature":"boneSide(slot)","summary":"Is a canonical slot a left/right limb (vs a center/spine bone)?"}
{"schemaVersion":1,"modulePath":"engine/reference/assets/humanoid/HumanoidRig.md","moduleTitle":"assets/humanoid/HumanoidRig","source":"engine/assets/humanoid/HumanoidRig.js","import":"/engine/assets/humanoid/HumanoidRig.js","sourceHash":"6cb50cb963fa46d4cafdfd1540bc25186158e8df7239412f404a4fff78c00308","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/humanoid/HumanoidRig.js#0002:mirrorBone","exportIndex":2,"name":"mirrorBone","kind":"function","signature":"mirrorBone(slot)","summary":"The mirrored slot for a left/right bone (e.g. leftHand ↔ rightHand), or null."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/humanoid/HumanoidRig.md","moduleTitle":"assets/humanoid/HumanoidRig","source":"engine/assets/humanoid/HumanoidRig.js","import":"/engine/assets/humanoid/HumanoidRig.js","sourceHash":"6cb50cb963fa46d4cafdfd1540bc25186158e8df7239412f404a4fff78c00308","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/humanoid/HumanoidRig.js#0003:HUMANOID_BONES","exportIndex":3,"name":"HUMANOID_BONES","kind":"constant","signature":"HUMANOID_BONES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/humanoid/HumanoidRig.md","moduleTitle":"assets/humanoid/HumanoidRig","source":"engine/assets/humanoid/HumanoidRig.js","import":"/engine/assets/humanoid/HumanoidRig.js","sourceHash":"6cb50cb963fa46d4cafdfd1540bc25186158e8df7239412f404a4fff78c00308","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/humanoid/HumanoidRig.js#0004:REQUIRED_BONES","exportIndex":4,"name":"REQUIRED_BONES","kind":"constant","signature":"REQUIRED_BONES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/humanoid/HumanoidRig.md","moduleTitle":"assets/humanoid/HumanoidRig","source":"engine/assets/humanoid/HumanoidRig.js","import":"/engine/assets/humanoid/HumanoidRig.js","sourceHash":"6cb50cb963fa46d4cafdfd1540bc25186158e8df7239412f404a4fff78c00308","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/humanoid/HumanoidRig.js#0005:BODY_SIDE","exportIndex":5,"name":"BODY_SIDE","kind":"constant","signature":"BODY_SIDE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/humanoid/HumanoidRigBuilder.md","moduleTitle":"assets/humanoid/HumanoidRigBuilder","source":"engine/assets/humanoid/HumanoidRigBuilder.js","import":"/engine/assets/humanoid/HumanoidRigBuilder.js","sourceHash":"2d667b0a0db64ef0e209cc484e292e3f5f4481497985dcb8992048790a4d084a","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/humanoid/HumanoidRigBuilder.js","title":"assets/humanoid/HumanoidRigBuilder","summary":"engine/assets/humanoid/HumanoidRigBuilder.js — assemble a HumanoidRig from a model's skeleton (spec §12). Maps bones (BoneMapper), snapshots the rest pose, classifies the pose (T vs A) from the arm direction, and flags needsCorrection when required bones are missing — never guessing past the evidence. The rig is the retarget/ragdoll target: it references the source nodes, it does not bake.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/assets/humanoid/HumanoidRigBuilder.md","moduleTitle":"assets/humanoid/HumanoidRigBuilder","source":"engine/assets/humanoid/HumanoidRigBuilder.js","import":"/engine/assets/humanoid/HumanoidRigBuilder.js","sourceHash":"2d667b0a0db64ef0e209cc484e292e3f5f4481497985dcb8992048790a4d084a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/humanoid/HumanoidRigBuilder.js#0000:buildHumanoidRig","exportIndex":0,"name":"buildHumanoidRig","kind":"function","signature":"buildHumanoidRig(model, opts = {})","summary":"Build a humanoid rig and attach it at model.rigs.humanoid."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/humanoid/SkeletonHeal.md","moduleTitle":"assets/humanoid/SkeletonHeal","source":"engine/assets/humanoid/SkeletonHeal.js","import":"/engine/assets/humanoid/SkeletonHeal.js","sourceHash":"b4a8f4ae556d703b1d48d143f2032116e53092cf0ccb41bf74426ded124a8d08","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/humanoid/SkeletonHeal.js","title":"assets/humanoid/SkeletonHeal","summary":"engine/assets/humanoid/SkeletonHeal.js — anatomy-aware, NON-DESTRUCTIVE skeleton repair. When a rig is missing or mislabels core bones, infer them from anatomy (the same heuristics auto-riggers use): • Pelvis = the point between the two hip joints (and the retarget root must be the pelvis, NOT a ground/root-motion bone — so a \"Root\"/Armature bone at the floor is replaced by the leg-derived pelvis). • Missing spine / chest / neck are interpolated along the hips→head chain. • A missing left/right limb is MIRRORED from the present side across the body's sagittal plane (auto-mirror). Inferred joints are written to `rig.synthesized` (slot → position) — the source model is never modified. `humanoidBonePosition()` returns the real joint if it exists, else the synthesized one.","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/assets/humanoid/SkeletonHeal.md","moduleTitle":"assets/humanoid/SkeletonHeal","source":"engine/assets/humanoid/SkeletonHeal.js","import":"/engine/assets/humanoid/SkeletonHeal.js","sourceHash":"b4a8f4ae556d703b1d48d143f2032116e53092cf0ccb41bf74426ded124a8d08","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/humanoid/SkeletonHeal.js#0000:humanoidBonePosition","exportIndex":0,"name":"humanoidBonePosition","kind":"function","signature":"humanoidBonePosition(rig, slot, pose)","summary":"Real or synthesized world position for a canonical slot (or null)."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/humanoid/SkeletonHeal.md","moduleTitle":"assets/humanoid/SkeletonHeal","source":"engine/assets/humanoid/SkeletonHeal.js","import":"/engine/assets/humanoid/SkeletonHeal.js","sourceHash":"b4a8f4ae556d703b1d48d143f2032116e53092cf0ccb41bf74426ded124a8d08","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/humanoid/SkeletonHeal.js#0001:healHumanoid","exportIndex":1,"name":"healHumanoid","kind":"function","signature":"healHumanoid(model, rig, pose)","summary":"Repair a humanoid rig in place (non-destructively): fills `rig.synthesized` with inferred joints and `rig.healed` with a list of what was repaired."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/humanoid/SkeletonHeal.md","moduleTitle":"assets/humanoid/SkeletonHeal","source":"engine/assets/humanoid/SkeletonHeal.js","import":"/engine/assets/humanoid/SkeletonHeal.js","sourceHash":"b4a8f4ae556d703b1d48d143f2032116e53092cf0ccb41bf74426ded124a8d08","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/humanoid/SkeletonHeal.js#0002:analyzeSymmetry","exportIndex":2,"name":"analyzeSymmetry","kind":"function","signature":"analyzeSymmetry(model, pose)","summary":"Find the skeleton's plane of bilateral symmetry."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/humanoid/SkeletonHeal.md","moduleTitle":"assets/humanoid/SkeletonHeal","source":"engine/assets/humanoid/SkeletonHeal.js","import":"/engine/assets/humanoid/SkeletonHeal.js","sourceHash":"b4a8f4ae556d703b1d48d143f2032116e53092cf0ccb41bf74426ded124a8d08","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/humanoid/SkeletonHeal.js#0003:healSkeleton","exportIndex":3,"name":"healSkeleton","kind":"function","signature":"healSkeleton(model, pose)","summary":"Heal a generic skeleton by mirroring limbs that exist on only one side."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/humanoid/SkinPose.md","moduleTitle":"assets/humanoid/SkinPose","source":"engine/assets/humanoid/SkinPose.js","import":"/engine/assets/humanoid/SkinPose.js","sourceHash":"db2735cd134348a9c124fd7543a73c5441908aff54084bd836788ab902046bbc","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/humanoid/SkinPose.js","title":"assets/humanoid/SkinPose","summary":"engine/assets/humanoid/SkinPose.js — scene-space skeleton pose used by rig overlays + hand probing.  IMPORTANT (verified with scripts/probe_skeleton.py across real rigs): the correct space for placing the skeleton so it lands on the RENDERED mesh is the NODE-HIERARCHY world, because the importer/renderer draw the (unskinned) mesh through that same node hierarchy + importTransform. `inverse(IBM)` instead lives in the armature-local / unscaled space (e.g. hips ≈ 0.03 while the node-hierarchy hips ≈ 2.77 with a ×100 mesh-node scale), so using it for the overlay either collapses the skeleton (missing node scale) or double-rotates it (re-applying the armature transform). We therefore use the node hierarchy here; the IBMs are still imported and available (invert4) for true-bind / retarget work later.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/assets/humanoid/SkinPose.md","moduleTitle":"assets/humanoid/SkinPose","source":"engine/assets/humanoid/SkinPose.js","import":"/engine/assets/humanoid/SkinPose.js","sourceHash":"db2735cd134348a9c124fd7543a73c5441908aff54084bd836788ab902046bbc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/humanoid/SkinPose.js#0000:invert4","exportIndex":0,"name":"invert4","kind":"function","signature":"invert4(m)","summary":"Invert a column-major 4×4 (returns a new Float32Array, or null if singular)."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/humanoid/SkinPose.md","moduleTitle":"assets/humanoid/SkinPose","source":"engine/assets/humanoid/SkinPose.js","import":"/engine/assets/humanoid/SkinPose.js","sourceHash":"db2735cd134348a9c124fd7543a73c5441908aff54084bd836788ab902046bbc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/humanoid/SkinPose.js#0001:buildBindPose","exportIndex":1,"name":"buildBindPose","kind":"function","signature":"buildBindPose(model)","summary":"Scene-space pose for every node = the node-hierarchy world (TRS composed down the tree). This is exactly the space the renderer draws the mesh in, so the skeleton overlay + hand probing align with the mesh for any export."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/humanoid/SkinPose.md","moduleTitle":"assets/humanoid/SkinPose","source":"engine/assets/humanoid/SkinPose.js","import":"/engine/assets/humanoid/SkinPose.js","sourceHash":"db2735cd134348a9c124fd7543a73c5441908aff54084bd836788ab902046bbc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/humanoid/SkinPose.js#0002:jointPosition","exportIndex":2,"name":"jointPosition","kind":"function","signature":"jointPosition(pose, nodeId)","summary":"World position of a node in a pose map (or null)."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/import/Detectors.md","moduleTitle":"assets/import/Detectors","source":"engine/assets/import/Detectors.js","import":"/engine/assets/import/Detectors.js","sourceHash":"9b741dc0e21f679cac3184b6622df3360d4709c9849b0c5ad45acdcd2503cd99","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/import/Detectors.js","title":"assets/import/Detectors","summary":"engine/assets/import/Detectors.js — hierarchy, part, and semantic detection (spec §6). These produce hints, never assertions: every detection carries a confidence and is editor-correctable. Detection by name is the cheap first pass; geometry-based detection (cylinders → wheels, symmetry, etc.) is layered in by the phase that needs it (vehicles, humanoids, weapons).","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/assets/import/Detectors.md","moduleTitle":"assets/import/Detectors","source":"engine/assets/import/Detectors.js","import":"/engine/assets/import/Detectors.js","sourceHash":"9b741dc0e21f679cac3184b6622df3360d4709c9849b0c5ad45acdcd2503cd99","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/import/Detectors.js#0000:detectHierarchy","exportIndex":0,"name":"detectHierarchy","kind":"function","signature":"detectHierarchy(model)","summary":"Summarize the preserved source hierarchy."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/import/Detectors.md","moduleTitle":"assets/import/Detectors","source":"engine/assets/import/Detectors.js","import":"/engine/assets/import/Detectors.js","sourceHash":"9b741dc0e21f679cac3184b6622df3360d4709c9849b0c5ad45acdcd2503cd99","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/import/Detectors.js#0001:detectParts","exportIndex":1,"name":"detectParts","kind":"function","signature":"detectParts(model)","summary":"Detect semantic parts by node name. Populates model.detectedParts."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/import/Detectors.md","moduleTitle":"assets/import/Detectors","source":"engine/assets/import/Detectors.js","import":"/engine/assets/import/Detectors.js","sourceHash":"9b741dc0e21f679cac3184b6622df3360d4709c9849b0c5ad45acdcd2503cd99","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/import/Detectors.js#0002:detectSemanticDomain","exportIndex":2,"name":"detectSemanticDomain","kind":"function","signature":"detectSemanticDomain(model)","summary":"Roll detected parts up to a guessed runtime domain (vehicle/humanoid/weapon)."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/import/FormatDetector.md","moduleTitle":"assets/import/FormatDetector","source":"engine/assets/import/FormatDetector.js","import":"/engine/assets/import/FormatDetector.js","sourceHash":"69a346175700b26dc908881d942a3dd16b9bb8482ae85dd55c710699878ccc52","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/import/FormatDetector.js","title":"assets/import/FormatDetector","summary":"engine/assets/import/FormatDetector.js — detect format by extension + magic bytes (spec §5). Never trust the filename alone: the magic-byte sniff wins when it disagrees with the extension, and a confidence is reported so the pipeline can fall back to the editor when unsure.","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/assets/import/FormatDetector.md","moduleTitle":"assets/import/FormatDetector","source":"engine/assets/import/FormatDetector.js","import":"/engine/assets/import/FormatDetector.js","sourceHash":"69a346175700b26dc908881d942a3dd16b9bb8482ae85dd55c710699878ccc52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/import/FormatDetector.js#0000:sniffMagic","exportIndex":0,"name":"sniffMagic","kind":"function","signature":"sniffMagic(head)","summary":"Sniff a format from a leading byte slice. Returns a format token or null. Pass at least the first 16 bytes for reliable results."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/import/FormatDetector.md","moduleTitle":"assets/import/FormatDetector","source":"engine/assets/import/FormatDetector.js","import":"/engine/assets/import/FormatDetector.js","sourceHash":"69a346175700b26dc908881d942a3dd16b9bb8482ae85dd55c710699878ccc52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/import/FormatDetector.js#0001:classOf","exportIndex":1,"name":"classOf","kind":"function","signature":"classOf(format)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/import/FormatDetector.md","moduleTitle":"assets/import/FormatDetector","source":"engine/assets/import/FormatDetector.js","import":"/engine/assets/import/FormatDetector.js","sourceHash":"69a346175700b26dc908881d942a3dd16b9bb8482ae85dd55c710699878ccc52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/import/FormatDetector.js#0002:detectFormat","exportIndex":2,"name":"detectFormat","kind":"function","signature":"detectFormat(name, head = null)","summary":"Detect a file's format from its name and (optional) leading bytes."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/import/FormatDetector.md","moduleTitle":"assets/import/FormatDetector","source":"engine/assets/import/FormatDetector.js","import":"/engine/assets/import/FormatDetector.js","sourceHash":"69a346175700b26dc908881d942a3dd16b9bb8482ae85dd55c710699878ccc52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/import/FormatDetector.js#0003:FORMAT_CLASS","exportIndex":3,"name":"FORMAT_CLASS","kind":"constant","signature":"FORMAT_CLASS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/import/FormatDetector.md","moduleTitle":"assets/import/FormatDetector","source":"engine/assets/import/FormatDetector.js","import":"/engine/assets/import/FormatDetector.js","sourceHash":"69a346175700b26dc908881d942a3dd16b9bb8482ae85dd55c710699878ccc52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/import/FormatDetector.js#0004:BRIDGE_FORMATS","exportIndex":4,"name":"BRIDGE_FORMATS","kind":"re-export","signature":"BRIDGE_FORMATS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/import/FormatDetector.md","moduleTitle":"assets/import/FormatDetector","source":"engine/assets/import/FormatDetector.js","import":"/engine/assets/import/FormatDetector.js","sourceHash":"69a346175700b26dc908881d942a3dd16b9bb8482ae85dd55c710699878ccc52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/import/FormatDetector.js#0005:IMAGE_FORMATS","exportIndex":5,"name":"IMAGE_FORMATS","kind":"re-export","signature":"IMAGE_FORMATS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/import/FormatDetector.md","moduleTitle":"assets/import/FormatDetector","source":"engine/assets/import/FormatDetector.js","import":"/engine/assets/import/FormatDetector.js","sourceHash":"69a346175700b26dc908881d942a3dd16b9bb8482ae85dd55c710699878ccc52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/import/FormatDetector.js#0006:NATIVE_FORMATS","exportIndex":6,"name":"NATIVE_FORMATS","kind":"re-export","signature":"NATIVE_FORMATS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/import/GltfSceneImporter.md","moduleTitle":"assets/import/GltfSceneImporter","source":"engine/assets/import/GltfSceneImporter.js","import":"/engine/assets/import/GltfSceneImporter.js","sourceHash":"0c194246b9ce63e769ff713a13070fb778c24ef61d86631f952ad4cedd6c7cc4","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/import/GltfSceneImporter.js","title":"assets/import/GltfSceneImporter","summary":"engine/assets/import/GltfSceneImporter.js — full glTF/GLB scene → EngineModel.  glTF is the preferred runtime delivery format (nodes, meshes, materials, skins, animations, buffers, textures). This importer parses the whole scene graph — not just motion — reusing the engine's accessor toolkit (core/math/MeshAttributeMath) to decode vertex/index data exactly. Materials and textures are preserved as raw blocks here and normalized in Phase 2; the original look must always be recoverable.","exportCount":9}
{"schemaVersion":1,"modulePath":"engine/reference/assets/import/GltfSceneImporter.md","moduleTitle":"assets/import/GltfSceneImporter","source":"engine/assets/import/GltfSceneImporter.js","import":"/engine/assets/import/GltfSceneImporter.js","sourceHash":"0c194246b9ce63e769ff713a13070fb778c24ef61d86631f952ad4cedd6c7cc4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/import/GltfSceneImporter.js#0000:parseGlb","exportIndex":0,"name":"parseGlb","kind":"function","signature":"parseGlb(bytes)","summary":"Parse a binary GLB into { json, bin }."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/import/GltfSceneImporter.md","moduleTitle":"assets/import/GltfSceneImporter","source":"engine/assets/import/GltfSceneImporter.js","import":"/engine/assets/import/GltfSceneImporter.js","sourceHash":"0c194246b9ce63e769ff713a13070fb778c24ef61d86631f952ad4cedd6c7cc4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/import/GltfSceneImporter.js#0001:decodeGltfDataUri","exportIndex":1,"name":"decodeGltfDataUri","kind":"function","signature":"decodeGltfDataUri(uri)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/import/GltfSceneImporter.md","moduleTitle":"assets/import/GltfSceneImporter","source":"engine/assets/import/GltfSceneImporter.js","import":"/engine/assets/import/GltfSceneImporter.js","sourceHash":"0c194246b9ce63e769ff713a13070fb778c24ef61d86631f952ad4cedd6c7cc4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/import/GltfSceneImporter.js#0002:gltfExternalUriReport","exportIndex":2,"name":"gltfExternalUriReport","kind":"function","signature":"gltfExternalUriReport(uri)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/import/GltfSceneImporter.md","moduleTitle":"assets/import/GltfSceneImporter","source":"engine/assets/import/GltfSceneImporter.js","import":"/engine/assets/import/GltfSceneImporter.js","sourceHash":"0c194246b9ce63e769ff713a13070fb778c24ef61d86631f952ad4cedd6c7cc4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/import/GltfSceneImporter.js#0003:gltfExternalResourceReferences","exportIndex":3,"name":"gltfExternalResourceReferences","kind":"function","signature":"gltfExternalResourceReferences(json)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/import/GltfSceneImporter.md","moduleTitle":"assets/import/GltfSceneImporter","source":"engine/assets/import/GltfSceneImporter.js","import":"/engine/assets/import/GltfSceneImporter.js","sourceHash":"0c194246b9ce63e769ff713a13070fb778c24ef61d86631f952ad4cedd6c7cc4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/import/GltfSceneImporter.js#0004:packageLooseGltfFiles","exportIndex":4,"name":"packageLooseGltfFiles","kind":"function","signature":"async packageLooseGltfFiles(inputFiles)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/import/GltfSceneImporter.md","moduleTitle":"assets/import/GltfSceneImporter","source":"engine/assets/import/GltfSceneImporter.js","import":"/engine/assets/import/GltfSceneImporter.js","sourceHash":"0c194246b9ce63e769ff713a13070fb778c24ef61d86631f952ad4cedd6c7cc4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/import/GltfSceneImporter.js#0005:extractGltfMaterialPayload","exportIndex":5,"name":"extractGltfMaterialPayload","kind":"function","signature":"extractGltfMaterialPayload(json, buffers = [], externalImages = null)","summary":"Extract the recoverable glTF material/texture payload from already-resolved buffers. This is shared by the full asset pipeline and the editor mesh importer so both paths normalize exactly the same source records."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/import/GltfSceneImporter.md","moduleTitle":"assets/import/GltfSceneImporter","source":"engine/assets/import/GltfSceneImporter.js","import":"/engine/assets/import/GltfSceneImporter.js","sourceHash":"0c194246b9ce63e769ff713a13070fb778c24ef61d86631f952ad4cedd6c7cc4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/import/GltfSceneImporter.js#0006:importGltf","exportIndex":6,"name":"importGltf","kind":"function","signature":"async importGltf(data, opts = {})","summary":"Import a glTF/GLB into an EngineModel."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/import/GltfSceneImporter.md","moduleTitle":"assets/import/GltfSceneImporter","source":"engine/assets/import/GltfSceneImporter.js","import":"/engine/assets/import/GltfSceneImporter.js","sourceHash":"0c194246b9ce63e769ff713a13070fb778c24ef61d86631f952ad4cedd6c7cc4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/import/GltfSceneImporter.js#0007:GLTF_EXTERNAL_RESOURCE_LIMITS","exportIndex":7,"name":"GLTF_EXTERNAL_RESOURCE_LIMITS","kind":"constant","signature":"GLTF_EXTERNAL_RESOURCE_LIMITS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/import/GltfSceneImporter.md","moduleTitle":"assets/import/GltfSceneImporter","source":"engine/assets/import/GltfSceneImporter.js","import":"/engine/assets/import/GltfSceneImporter.js","sourceHash":"0c194246b9ce63e769ff713a13070fb778c24ef61d86631f952ad4cedd6c7cc4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/import/GltfSceneImporter.js#0008:GLTF_COMPONENT_TYPES","exportIndex":8,"name":"GLTF_COMPONENT_TYPES","kind":"re-export","signature":"GLTF_COMPONENT_TYPES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/import/GpuUploader.md","moduleTitle":"assets/import/GpuUploader","source":"engine/assets/import/GpuUploader.js","import":"/engine/assets/import/GpuUploader.js","sourceHash":"69a206c0426cd6429d8481247b59aa1de99f8a6cd7f1e8dab37dac6a0ec868da","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/import/GpuUploader.js","title":"assets/import/GpuUploader","summary":"engine/assets/import/GpuUploader.js — upload EngineModel primitives to the GPU.  Parsing is GPU-free; this is the separate, device-driven step (spec §9: upload GPU buffers incrementally). Each primitive is interleaved into a standard [position(3), normal(3), uv(2)] vertex layout (generating flat normals when a source lacks them) plus an optional index buffer, so the importer/viewer and the engine renderer can draw it with one shared layout. Buffers are recorded on `primitive.gpu`; `model.gpuReady` flips true when all primitives upload.","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/assets/import/GpuUploader.md","moduleTitle":"assets/import/GpuUploader","source":"engine/assets/import/GpuUploader.js","import":"/engine/assets/import/GpuUploader.js","sourceHash":"69a206c0426cd6429d8481247b59aa1de99f8a6cd7f1e8dab37dac6a0ec868da","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/import/GpuUploader.js#0000:standardVertexLayout","exportIndex":0,"name":"standardVertexLayout","kind":"function","signature":"standardVertexLayout()","summary":"The WebGPU vertex buffer layout matching interleaveStandard()."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/import/GpuUploader.md","moduleTitle":"assets/import/GpuUploader","source":"engine/assets/import/GpuUploader.js","import":"/engine/assets/import/GpuUploader.js","sourceHash":"69a206c0426cd6429d8481247b59aa1de99f8a6cd7f1e8dab37dac6a0ec868da","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/import/GpuUploader.js#0001:interleaveStandard","exportIndex":1,"name":"interleaveStandard","kind":"function","signature":"interleaveStandard(primitive)","summary":"Interleave a primitive's attributes into the standard layout."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/import/GpuUploader.md","moduleTitle":"assets/import/GpuUploader","source":"engine/assets/import/GpuUploader.js","import":"/engine/assets/import/GpuUploader.js","sourceHash":"69a206c0426cd6429d8481247b59aa1de99f8a6cd7f1e8dab37dac6a0ec868da","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/import/GpuUploader.js#0002:uploadPrimitive","exportIndex":2,"name":"uploadPrimitive","kind":"function","signature":"uploadPrimitive(device, primitive)","summary":"Upload one primitive to the GPU. Records `primitive.gpu`."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/import/GpuUploader.md","moduleTitle":"assets/import/GpuUploader","source":"engine/assets/import/GpuUploader.js","import":"/engine/assets/import/GpuUploader.js","sourceHash":"69a206c0426cd6429d8481247b59aa1de99f8a6cd7f1e8dab37dac6a0ec868da","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/import/GpuUploader.js#0003:uploadModel","exportIndex":3,"name":"uploadModel","kind":"function","signature":"uploadModel(device, model)","summary":"Upload every primitive in a model. Returns the number uploaded."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/import/GpuUploader.md","moduleTitle":"assets/import/GpuUploader","source":"engine/assets/import/GpuUploader.js","import":"/engine/assets/import/GpuUploader.js","sourceHash":"69a206c0426cd6429d8481247b59aa1de99f8a6cd7f1e8dab37dac6a0ec868da","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/import/GpuUploader.js#0004:releaseModelGpu","exportIndex":4,"name":"releaseModelGpu","kind":"function","signature":"releaseModelGpu(model)","summary":"Free GPU buffers held by a model's primitives."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/import/GpuUploader.md","moduleTitle":"assets/import/GpuUploader","source":"engine/assets/import/GpuUploader.js","import":"/engine/assets/import/GpuUploader.js","sourceHash":"69a206c0426cd6429d8481247b59aa1de99f8a6cd7f1e8dab37dac6a0ec868da","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/import/GpuUploader.js#0005:STANDARD_STRIDE_FLOATS","exportIndex":5,"name":"STANDARD_STRIDE_FLOATS","kind":"constant","signature":"STANDARD_STRIDE_FLOATS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/import/ImportPipeline.md","moduleTitle":"assets/import/ImportPipeline","source":"engine/assets/import/ImportPipeline.js","import":"/engine/assets/import/ImportPipeline.js","sourceHash":"a4c0ab1a8b0a21a9f9b358d7101384e6b8dda16622f3be1b8117040760d9b6ac","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/import/ImportPipeline.js","title":"assets/import/ImportPipeline","summary":"engine/assets/import/ImportPipeline.js — orchestrates the ingestion flow (spec §5 pipeline): detect → license-gate → parse → normalize orientation → detect hierarchy/parts/domain → deduplicate/register. GPU upload is a separate explicit step (GpuUploader) because parsing must stay GPU-free and worker-able.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/assets/import/ImportPipeline.md","moduleTitle":"assets/import/ImportPipeline","source":"engine/assets/import/ImportPipeline.js","import":"/engine/assets/import/ImportPipeline.js","sourceHash":"a4c0ab1a8b0a21a9f9b358d7101384e6b8dda16622f3be1b8117040760d9b6ac","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/import/ImportPipeline.js#0000:parseToModel","exportIndex":0,"name":"parseToModel","kind":"function","signature":"async parseToModel(format, data, opts = {})","summary":"Parse raw bytes of a known format into an EngineModel (no GPU, no registry)."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/import/ImportPipeline.md","moduleTitle":"assets/import/ImportPipeline","source":"engine/assets/import/ImportPipeline.js","import":"/engine/assets/import/ImportPipeline.js","sourceHash":"a4c0ab1a8b0a21a9f9b358d7101384e6b8dda16622f3be1b8117040760d9b6ac","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/import/ImportPipeline.js#0001:importFile","exportIndex":1,"name":"importFile","kind":"function","signature":"async importFile(args)","summary":"Full import of a single file."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/import/ObjImporter.md","moduleTitle":"assets/import/ObjImporter","source":"engine/assets/import/ObjImporter.js","import":"/engine/assets/import/ObjImporter.js","sourceHash":"6be5b53cfeab30b8a2a9b6cc8422e76d7fbfe12ac0e99c3634ebda576daca872","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/import/ObjImporter.js","title":"assets/import/ObjImporter","summary":"engine/assets/import/ObjImporter.js — Wavefront OBJ (+ optional MTL) → EngineModel.  OBJ is static geometry + simple material references. We preserve groups/objects and per-face material assignment by splitting into one primitive per material group. Polygons are triangulated (fan). MTL parsing is light (names + a few PBR-ish factors) and the full material decode happens in Phase 2.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/assets/import/ObjImporter.md","moduleTitle":"assets/import/ObjImporter","source":"engine/assets/import/ObjImporter.js","import":"/engine/assets/import/ObjImporter.js","sourceHash":"6be5b53cfeab30b8a2a9b6cc8422e76d7fbfe12ac0e99c3634ebda576daca872","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/import/ObjImporter.js#0000:parseMtl","exportIndex":0,"name":"parseMtl","kind":"function","signature":"parseMtl(text)","summary":"Parse a minimal MTL into a map of name → material descriptor."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/import/ObjImporter.md","moduleTitle":"assets/import/ObjImporter","source":"engine/assets/import/ObjImporter.js","import":"/engine/assets/import/ObjImporter.js","sourceHash":"6be5b53cfeab30b8a2a9b6cc8422e76d7fbfe12ac0e99c3634ebda576daca872","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/import/ObjImporter.js#0001:importObj","exportIndex":1,"name":"importObj","kind":"function","signature":"importObj(data, opts = {})","summary":"Import OBJ text/bytes into an EngineModel."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/import/OrientationResolver.md","moduleTitle":"assets/import/OrientationResolver","source":"engine/assets/import/OrientationResolver.js","import":"/engine/assets/import/OrientationResolver.js","sourceHash":"32197f5fccdd200a1e646256b0d6dba37aaf1187fd510f4961cf6e57bd908ba9","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/import/OrientationResolver.js","title":"assets/import/OrientationResolver","summary":"engine/assets/import/OrientationResolver.js — axis/scale/origin inference (spec §6). Never trust source orientation; never bake corrections into source. We infer a non-destructive ImportTransform (axis correction quat + scale + origin) with a confidence, and a policy decides whether to auto-apply, mark reviewable, preview only, or stay neutral and require manual correction.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/assets/import/OrientationResolver.md","moduleTitle":"assets/import/OrientationResolver","source":"engine/assets/import/OrientationResolver.js","import":"/engine/assets/import/OrientationResolver.js","sourceHash":"32197f5fccdd200a1e646256b0d6dba37aaf1187fd510f4961cf6e57bd908ba9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/import/OrientationResolver.js#0000:classifyConfidence","exportIndex":0,"name":"classifyConfidence","kind":"function","signature":"classifyConfidence(c)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/import/OrientationResolver.md","moduleTitle":"assets/import/OrientationResolver","source":"engine/assets/import/OrientationResolver.js","import":"/engine/assets/import/OrientationResolver.js","sourceHash":"32197f5fccdd200a1e646256b0d6dba37aaf1187fd510f4961cf6e57bd908ba9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/import/OrientationResolver.js#0001:resolveOrientation","exportIndex":1,"name":"resolveOrientation","kind":"function","signature":"resolveOrientation(model, opts = {})","summary":"Infer an ImportTransform for a model."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/import/OrientationResolver.md","moduleTitle":"assets/import/OrientationResolver","source":"engine/assets/import/OrientationResolver.js","import":"/engine/assets/import/OrientationResolver.js","sourceHash":"32197f5fccdd200a1e646256b0d6dba37aaf1187fd510f4961cf6e57bd908ba9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/import/OrientationResolver.js#0002:CONFIDENCE_POLICY","exportIndex":2,"name":"CONFIDENCE_POLICY","kind":"constant","signature":"CONFIDENCE_POLICY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/import/PlyImporter.md","moduleTitle":"assets/import/PlyImporter","source":"engine/assets/import/PlyImporter.js","import":"/engine/assets/import/PlyImporter.js","sourceHash":"fb4d0d16eb083ffa8719149edee418193468036aee354f44f1c89467f9b3a52f","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/import/PlyImporter.js","title":"assets/import/PlyImporter","summary":"engine/assets/import/PlyImporter.js — Stanford PLY (ASCII + binary LE) → EngineModel.  PLY is a point/mesh utility format. We read the vertex element (position + optional normal/color) and the face element (triangulated), producing one indexed primitive. Big-endian binary is uncommon for web assets and is not supported here (the editor can flag it).","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/assets/import/PlyImporter.md","moduleTitle":"assets/import/PlyImporter","source":"engine/assets/import/PlyImporter.js","import":"/engine/assets/import/PlyImporter.js","sourceHash":"fb4d0d16eb083ffa8719149edee418193468036aee354f44f1c89467f9b3a52f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/import/PlyImporter.js#0000:importPly","exportIndex":0,"name":"importPly","kind":"function","signature":"importPly(data, opts = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/import/StlImporter.md","moduleTitle":"assets/import/StlImporter","source":"engine/assets/import/StlImporter.js","import":"/engine/assets/import/StlImporter.js","sourceHash":"55daa8dd205faf69683e87d0dc96577878c25179078be68e8f180427da5c8054","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/import/StlImporter.js","title":"assets/import/StlImporter","summary":"engine/assets/import/StlImporter.js — STL (binary + ASCII) → EngineModel.  STL is CAD/printable part geometry: triangles only, no materials, no hierarchy, no declared units. We import geometry faithfully and leave the unit guess to the OrientationResolver / editor. Output is a single non-indexed primitive with per-vertex positions and face normals.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/assets/import/StlImporter.md","moduleTitle":"assets/import/StlImporter","source":"engine/assets/import/StlImporter.js","import":"/engine/assets/import/StlImporter.js","sourceHash":"55daa8dd205faf69683e87d0dc96577878c25179078be68e8f180427da5c8054","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/import/StlImporter.js#0000:importStl","exportIndex":0,"name":"importStl","kind":"function","signature":"importStl(data, opts = {})","summary":"Import STL bytes or text into an EngineModel."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/index.js","title":"assets/index","summary":"engine/assets/index.js — Global Asset Ingestion Runtime barrel.  Turns any source file into an EngineModel and a usable simulation object: decode → normalize → deduplicate → preserve hierarchy/materials/animations → generate colliders/SDF/rigs/surfaces → cache → spawn.  Build status: [x] Phase 0  foundations (EngineModel, AssetRecord, vpath, canonical space) [x] Phase 1  asset core (dedup, cache/OPFS, registry, resolver, importers) [x] Phase 2  materials & textures (decode, bindings, segments, variants) [x] Phase 3  vehicles (wheel/chassis detect, rig builder, suspension/tire/sync) [x] Render   reusable model rendering (shader/pipeline, GPU drawables, wheel-spin, ModelRenderer) + geometry PCA — shared by demos, editor, and runtime so importing/viewing assets is one call. [ ] Phase 4  render surfaces [ ] Phase 5  humanoids, hands & weapons","exportCount":168}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0000:ALPHA_MODE","exportIndex":0,"name":"ALPHA_MODE","kind":"re-export","signature":"ALPHA_MODE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0001:ASSET_TYPES","exportIndex":1,"name":"ASSET_TYPES","kind":"re-export","signature":"ASSET_TYPES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0002:AssetCache","exportIndex":2,"name":"AssetCache","kind":"re-export","signature":"AssetCache","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0003:AssetRegistry","exportIndex":3,"name":"AssetRegistry","kind":"re-export","signature":"AssetRegistry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0004:AssetResolver","exportIndex":4,"name":"AssetResolver","kind":"re-export","signature":"AssetResolver","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0005:BODY_SIDE","exportIndex":5,"name":"BODY_SIDE","kind":"re-export","signature":"BODY_SIDE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0006:BRIDGE_FORMATS","exportIndex":6,"name":"BRIDGE_FORMATS","kind":"re-export","signature":"BRIDGE_FORMATS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0007:CANONICAL","exportIndex":7,"name":"CANONICAL","kind":"re-export","signature":"CANONICAL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0008:COLOR_SPACE","exportIndex":8,"name":"COLOR_SPACE","kind":"re-export","signature":"COLOR_SPACE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0009:CONFIDENCE_POLICY","exportIndex":9,"name":"CONFIDENCE_POLICY","kind":"re-export","signature":"CONFIDENCE_POLICY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0010:DEDUP","exportIndex":10,"name":"DEDUP","kind":"re-export","signature":"DEDUP","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0011:DRIVETRAIN","exportIndex":11,"name":"DRIVETRAIN","kind":"re-export","signature":"DRIVETRAIN","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0012:ENGINE_MODEL_LAYERS","exportIndex":12,"name":"ENGINE_MODEL_LAYERS","kind":"re-export","signature":"ENGINE_MODEL_LAYERS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0013:FINGERS","exportIndex":13,"name":"FINGERS","kind":"re-export","signature":"FINGERS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0014:FINGER_JOINTS","exportIndex":14,"name":"FINGER_JOINTS","kind":"re-export","signature":"FINGER_JOINTS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0015:FORMAT_CLASS","exportIndex":15,"name":"FORMAT_CLASS","kind":"re-export","signature":"FORMAT_CLASS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0016:GATE","exportIndex":16,"name":"GATE","kind":"re-export","signature":"GATE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0017:HAND_SOURCE","exportIndex":17,"name":"HAND_SOURCE","kind":"re-export","signature":"HAND_SOURCE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0018:HUMANOID_BONES","exportIndex":18,"name":"HUMANOID_BONES","kind":"re-export","signature":"HUMANOID_BONES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0019:IMAGE_FORMATS","exportIndex":19,"name":"IMAGE_FORMATS","kind":"re-export","signature":"IMAGE_FORMATS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0020:LIT_MODEL_SHADER","exportIndex":20,"name":"LIT_MODEL_SHADER","kind":"re-export","signature":"LIT_MODEL_SHADER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0021:LicenseTracker","exportIndex":21,"name":"LicenseTracker","kind":"re-export","signature":"LicenseTracker","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0022:MODEL_UNIFORM_BYTES","exportIndex":22,"name":"MODEL_UNIFORM_BYTES","kind":"re-export","signature":"MODEL_UNIFORM_BYTES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0023:MODEL_UNIFORM_FLOATS","exportIndex":23,"name":"MODEL_UNIFORM_FLOATS","kind":"re-export","signature":"MODEL_UNIFORM_FLOATS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0024:MOVING_PART","exportIndex":24,"name":"MOVING_PART","kind":"re-export","signature":"MOVING_PART","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0025:NATIVE_FORMATS","exportIndex":25,"name":"NATIVE_FORMATS","kind":"re-export","signature":"NATIVE_FORMATS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0026:REQUIRED_BONES","exportIndex":26,"name":"REQUIRED_BONES","kind":"re-export","signature":"REQUIRED_BONES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0027:REQUIRED_SOCKETS","exportIndex":27,"name":"REQUIRED_SOCKETS","kind":"re-export","signature":"REQUIRED_SOCKETS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0028:SCULPTURE_COURT_BACKDROP_SHADER","exportIndex":28,"name":"SCULPTURE_COURT_BACKDROP_SHADER","kind":"re-export","signature":"SCULPTURE_COURT_BACKDROP_SHADER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0029:SCULPTURE_COURT_MODEL_SHADER","exportIndex":29,"name":"SCULPTURE_COURT_MODEL_SHADER","kind":"re-export","signature":"SCULPTURE_COURT_MODEL_SHADER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0030:SEGMENT_MODE","exportIndex":30,"name":"SEGMENT_MODE","kind":"re-export","signature":"SEGMENT_MODE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0031:STANDARD_STRIDE_FLOATS","exportIndex":31,"name":"STANDARD_STRIDE_FLOATS","kind":"re-export","signature":"STANDARD_STRIDE_FLOATS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0032:TEXTURE_SLOTS","exportIndex":32,"name":"TEXTURE_SLOTS","kind":"re-export","signature":"TEXTURE_SLOTS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0033:TEXTURE_USAGE","exportIndex":33,"name":"TEXTURE_USAGE","kind":"re-export","signature":"TEXTURE_USAGE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0034:UNIT_TO_METERS","exportIndex":34,"name":"UNIT_TO_METERS","kind":"re-export","signature":"UNIT_TO_METERS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0035:VPATH_SCHEMES","exportIndex":35,"name":"VPATH_SCHEMES","kind":"re-export","signature":"VPATH_SCHEMES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0036:WEAPON_EVENT","exportIndex":36,"name":"WEAPON_EVENT","kind":"re-export","signature":"WEAPON_EVENT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0037:WEAPON_INPUT","exportIndex":37,"name":"WEAPON_INPUT","kind":"re-export","signature":"WEAPON_INPUT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0038:WEAPON_SOCKET","exportIndex":38,"name":"WEAPON_SOCKET","kind":"re-export","signature":"WEAPON_SOCKET","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0039:WEAPON_STATE","exportIndex":39,"name":"WEAPON_STATE","kind":"re-export","signature":"WEAPON_STATE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0040:WEAPON_TYPE","exportIndex":40,"name":"WEAPON_TYPE","kind":"re-export","signature":"WEAPON_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0041:WHEEL_PHYSICS_MODE","exportIndex":41,"name":"WHEEL_PHYSICS_MODE","kind":"re-export","signature":"WHEEL_PHYSICS_MODE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0042:WORKFLOW","exportIndex":42,"name":"WORKFLOW","kind":"re-export","signature":"WORKFLOW","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0043:advanceSpin","exportIndex":43,"name":"advanceSpin","kind":"re-export","signature":"advanceSpin","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0044:analyzeSymmetry","exportIndex":44,"name":"analyzeSymmetry","kind":"re-export","signature":"analyzeSymmetry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0045:approximateToMetallicRoughness","exportIndex":45,"name":"approximateToMetallicRoughness","kind":"re-export","signature":"approximateToMetallicRoughness","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0046:axisCorrectionQuat","exportIndex":46,"name":"axisCorrectionQuat","kind":"re-export","signature":"axisCorrectionQuat","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0047:axisVector","exportIndex":47,"name":"axisVector","kind":"re-export","signature":"axisVector","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0048:backendFromCache","exportIndex":48,"name":"backendFromCache","kind":"re-export","signature":"backendFromCache","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0049:bakeSegment","exportIndex":49,"name":"bakeSegment","kind":"re-export","signature":"bakeSegment","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0050:bakeSkinnedMeshes","exportIndex":50,"name":"bakeSkinnedMeshes","kind":"re-export","signature":"bakeSkinnedMeshes","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0051:boneSide","exportIndex":51,"name":"boneSide","kind":"re-export","signature":"boneSide","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0052:buildBindPose","exportIndex":52,"name":"buildBindPose","kind":"re-export","signature":"buildBindPose","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0053:buildHandRig","exportIndex":53,"name":"buildHandRig","kind":"re-export","signature":"buildHandRig","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0054:buildHands","exportIndex":54,"name":"buildHands","kind":"re-export","signature":"buildHands","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0055:buildHumanoidRig","exportIndex":55,"name":"buildHumanoidRig","kind":"re-export","signature":"buildHumanoidRig","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0056:buildModelDrawables","exportIndex":56,"name":"buildModelDrawables","kind":"re-export","signature":"buildModelDrawables","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0057:buildSurfaceBindings","exportIndex":57,"name":"buildSurfaceBindings","kind":"re-export","signature":"buildSurfaceBindings","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0058:buildVehicleRig","exportIndex":58,"name":"buildVehicleRig","kind":"re-export","signature":"buildVehicleRig","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0059:buildWeaponRig","exportIndex":59,"name":"buildWeaponRig","kind":"re-export","signature":"buildWeaponRig","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0060:buildWheelSpinMap","exportIndex":60,"name":"buildWheelSpinMap","kind":"re-export","signature":"buildWheelSpinMap","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0061:cachePathFor","exportIndex":61,"name":"cachePathFor","kind":"re-export","signature":"cachePathFor","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0062:classOf","exportIndex":62,"name":"classOf","kind":"re-export","signature":"classOf","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0063:classify","exportIndex":63,"name":"classify","kind":"re-export","signature":"classify","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0064:classifyConfidence","exportIndex":64,"name":"classifyConfidence","kind":"re-export","signature":"classifyConfidence","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0065:computeWorldMatrices","exportIndex":65,"name":"computeWorldMatrices","kind":"re-export","signature":"computeWorldMatrices","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0066:createAssetRecord","exportIndex":66,"name":"createAssetRecord","kind":"re-export","signature":"createAssetRecord","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0067:createDefaultSampler","exportIndex":67,"name":"createDefaultSampler","kind":"re-export","signature":"createDefaultSampler","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0068:createEngineMaterial","exportIndex":68,"name":"createEngineMaterial","kind":"re-export","signature":"createEngineMaterial","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0069:createEngineMesh","exportIndex":69,"name":"createEngineMesh","kind":"re-export","signature":"createEngineMesh","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0070:createEngineModel","exportIndex":70,"name":"createEngineModel","kind":"re-export","signature":"createEngineModel","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0071:createEngineNode","exportIndex":71,"name":"createEngineNode","kind":"re-export","signature":"createEngineNode","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0072:createEnginePrimitive","exportIndex":72,"name":"createEnginePrimitive","kind":"re-export","signature":"createEnginePrimitive","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0073:createFinger","exportIndex":73,"name":"createFinger","kind":"re-export","signature":"createFinger","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0074:createHandRig","exportIndex":74,"name":"createHandRig","kind":"re-export","signature":"createHandRig","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0075:createHumanoidRig","exportIndex":75,"name":"createHumanoidRig","kind":"re-export","signature":"createHumanoidRig","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0076:createImportTransform","exportIndex":76,"name":"createImportTransform","kind":"re-export","signature":"createImportTransform","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0077:createLicenseBlock","exportIndex":77,"name":"createLicenseBlock","kind":"re-export","signature":"createLicenseBlock","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0078:createMaterialVariant","exportIndex":78,"name":"createMaterialVariant","kind":"re-export","signature":"createMaterialVariant","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0079:createModelPipeline","exportIndex":79,"name":"createModelPipeline","kind":"re-export","signature":"createModelPipeline","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0080:createModelRenderer","exportIndex":80,"name":"createModelRenderer","kind":"re-export","signature":"createModelRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0081:createSegmentView","exportIndex":81,"name":"createSegmentView","kind":"re-export","signature":"createSegmentView","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0082:createSuspension","exportIndex":82,"name":"createSuspension","kind":"re-export","signature":"createSuspension","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0083:createTextureBinding","exportIndex":83,"name":"createTextureBinding","kind":"re-export","signature":"createTextureBinding","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0084:createTimelinePlayer","exportIndex":84,"name":"createTimelinePlayer","kind":"re-export","signature":"createTimelinePlayer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0085:createTireProfile","exportIndex":85,"name":"createTireProfile","kind":"re-export","signature":"createTireProfile","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0086:createVehicleAsset","exportIndex":86,"name":"createVehicleAsset","kind":"re-export","signature":"createVehicleAsset","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0087:createWeaponAction","exportIndex":87,"name":"createWeaponAction","kind":"re-export","signature":"createWeaponAction","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0088:createWeaponRig","exportIndex":88,"name":"createWeaponRig","kind":"re-export","signature":"createWeaponRig","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0089:createWeaponStateMachine","exportIndex":89,"name":"createWeaponStateMachine","kind":"re-export","signature":"createWeaponStateMachine","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0090:createWheelSlot","exportIndex":90,"name":"createWheelSlot","kind":"re-export","signature":"createWheelSlot","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0091:createWhiteTexture","exportIndex":91,"name":"createWhiteTexture","kind":"re-export","signature":"createWhiteTexture","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0092:decodeAllTextures","exportIndex":92,"name":"decodeAllTextures","kind":"re-export","signature":"decodeAllTextures","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0093:decodeTexture","exportIndex":93,"name":"decodeTexture","kind":"re-export","signature":"decodeTexture","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0094:defaultChannelMap","exportIndex":94,"name":"defaultChannelMap","kind":"re-export","signature":"defaultChannelMap","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0095:defaultFireAction","exportIndex":95,"name":"defaultFireAction","kind":"re-export","signature":"defaultFireAction","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0096:defaultReloadAction","exportIndex":96,"name":"defaultReloadAction","kind":"re-export","signature":"defaultReloadAction","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0097:detectChassis","exportIndex":97,"name":"detectChassis","kind":"re-export","signature":"detectChassis","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0098:detectFormat","exportIndex":98,"name":"detectFormat","kind":"re-export","signature":"detectFormat","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0099:detectHierarchy","exportIndex":99,"name":"detectHierarchy","kind":"re-export","signature":"detectHierarchy","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0100:detectParts","exportIndex":100,"name":"detectParts","kind":"re-export","signature":"detectParts","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0101:detectSemanticDomain","exportIndex":101,"name":"detectSemanticDomain","kind":"re-export","signature":"detectSemanticDomain","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0102:detectWeapon","exportIndex":102,"name":"detectWeapon","kind":"re-export","signature":"detectWeapon","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0103:detectWheels","exportIndex":103,"name":"detectWheels","kind":"re-export","signature":"detectWheels","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0104:eigSym3","exportIndex":104,"name":"eigSym3","kind":"re-export","signature":"eigSym3","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0105:eventsBetween","exportIndex":105,"name":"eventsBetween","kind":"re-export","signature":"eventsBetween","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0106:extractHandVertices","exportIndex":106,"name":"extractHandVertices","kind":"re-export","signature":"extractHandVertices","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0107:frameBounds","exportIndex":107,"name":"frameBounds","kind":"re-export","signature":"frameBounds","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0108:freeRollAngularVelocity","exportIndex":108,"name":"freeRollAngularVelocity","kind":"re-export","signature":"freeRollAngularVelocity","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0109:generateFingers","exportIndex":109,"name":"generateFingers","kind":"re-export","signature":"generateFingers","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0110:hasTextureTransform","exportIndex":110,"name":"hasTextureTransform","kind":"re-export","signature":"hasTextureTransform","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0111:hashContent","exportIndex":111,"name":"hashContent","kind":"re-export","signature":"hashContent","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0112:healHumanoid","exportIndex":112,"name":"healHumanoid","kind":"re-export","signature":"healHumanoid","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0113:healSkeleton","exportIndex":113,"name":"healSkeleton","kind":"re-export","signature":"healSkeleton","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0114:humanoidBonePosition","exportIndex":114,"name":"humanoidBonePosition","kind":"re-export","signature":"humanoidBonePosition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0115:importFile","exportIndex":115,"name":"importFile","kind":"re-export","signature":"importFile","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0116:importGltf","exportIndex":116,"name":"importGltf","kind":"re-export","signature":"importGltf","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0117:importMaterials","exportIndex":117,"name":"importMaterials","kind":"re-export","signature":"importMaterials","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0118:importMatrixOf","exportIndex":118,"name":"importMatrixOf","kind":"re-export","signature":"importMatrixOf","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0119:importObj","exportIndex":119,"name":"importObj","kind":"re-export","signature":"importObj","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0120:importPly","exportIndex":120,"name":"importPly","kind":"re-export","signature":"importPly","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0121:importStl","exportIndex":121,"name":"importStl","kind":"re-export","signature":"importStl","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0122:interleaveStandard","exportIndex":122,"name":"interleaveStandard","kind":"re-export","signature":"interleaveStandard","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0123:invert4","exportIndex":123,"name":"invert4","kind":"re-export","signature":"invert4","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0124:isVPath","exportIndex":124,"name":"isVPath","kind":"re-export","signature":"isVPath","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0125:jointPosition","exportIndex":125,"name":"jointPosition","kind":"re-export","signature":"jointPosition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0126:layerStatus","exportIndex":126,"name":"layerStatus","kind":"re-export","signature":"layerStatus","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0127:leastVarianceAxis","exportIndex":127,"name":"leastVarianceAxis","kind":"re-export","signature":"leastVarianceAxis","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0128:licenseNeedsReview","exportIndex":128,"name":"licenseNeedsReview","kind":"re-export","signature":"licenseNeedsReview","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0129:longitudinalSlip","exportIndex":129,"name":"longitudinalSlip","kind":"re-export","signature":"longitudinalSlip","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0130:makeFetchBackend","exportIndex":130,"name":"makeFetchBackend","kind":"re-export","signature":"makeFetchBackend","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0131:makeGpuTexture","exportIndex":131,"name":"makeGpuTexture","kind":"re-export","signature":"makeGpuTexture","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0132:makeMemoryBackend","exportIndex":132,"name":"makeMemoryBackend","kind":"re-export","signature":"makeMemoryBackend","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0133:makeVPath","exportIndex":133,"name":"makeVPath","kind":"re-export","signature":"makeVPath","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0134:mapBones","exportIndex":134,"name":"mapBones","kind":"re-export","signature":"mapBones","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0135:mapFingers","exportIndex":135,"name":"mapFingers","kind":"re-export","signature":"mapFingers","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0136:mat3ToQuat","exportIndex":136,"name":"mat3ToQuat","kind":"re-export","signature":"mat3ToQuat","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0137:mirrorBone","exportIndex":137,"name":"mirrorBone","kind":"re-export","signature":"mirrorBone","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0138:normalizeSegments","exportIndex":138,"name":"normalizeSegments","kind":"re-export","signature":"normalizeSegments","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0139:normalizeTextures","exportIndex":139,"name":"normalizeTextures","kind":"re-export","signature":"normalizeTextures","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0140:parseGlb","exportIndex":140,"name":"parseGlb","kind":"re-export","signature":"parseGlb","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0141:parseMtl","exportIndex":141,"name":"parseMtl","kind":"re-export","signature":"parseMtl","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0142:parseToModel","exportIndex":142,"name":"parseToModel","kind":"re-export","signature":"parseToModel","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0143:parseVPath","exportIndex":143,"name":"parseVPath","kind":"re-export","signature":"parseVPath","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0144:pivotSpin","exportIndex":144,"name":"pivotSpin","kind":"re-export","signature":"pivotSpin","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0145:primitiveColor","exportIndex":145,"name":"primitiveColor","kind":"re-export","signature":"primitiveColor","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0146:principalAxes","exportIndex":146,"name":"principalAxes","kind":"re-export","signature":"principalAxes","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0147:releaseDrawables","exportIndex":147,"name":"releaseDrawables","kind":"re-export","signature":"releaseDrawables","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0148:releaseModelGpu","exportIndex":148,"name":"releaseModelGpu","kind":"re-export","signature":"releaseModelGpu","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0149:resolveOrientation","exportIndex":149,"name":"resolveOrientation","kind":"re-export","signature":"resolveOrientation","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0150:restoreOriginal","exportIndex":150,"name":"restoreOriginal","kind":"re-export","signature":"restoreOriginal","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0151:rollAngle","exportIndex":151,"name":"rollAngle","kind":"re-export","signature":"rollAngle","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0152:rotAxis","exportIndex":152,"name":"rotAxis","kind":"re-export","signature":"rotAxis","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0153:rotateVecByQuat","exportIndex":153,"name":"rotateVecByQuat","kind":"re-export","signature":"rotateVecByQuat","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0154:sniffMagic","exportIndex":154,"name":"sniffMagic","kind":"re-export","signature":"sniffMagic","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0155:standardVertexLayout","exportIndex":155,"name":"standardVertexLayout","kind":"re-export","signature":"standardVertexLayout","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0156:suspensionForce","exportIndex":156,"name":"suspensionForce","kind":"re-export","signature":"suspensionForce","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0157:tireForce","exportIndex":157,"name":"tireForce","kind":"re-export","signature":"tireForce","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0158:unitScaleToMeters","exportIndex":158,"name":"unitScaleToMeters","kind":"re-export","signature":"unitScaleToMeters","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0159:uploadModel","exportIndex":159,"name":"uploadModel","kind":"re-export","signature":"uploadModel","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0160:uploadModelTextures","exportIndex":160,"name":"uploadModelTextures","kind":"re-export","signature":"uploadModelTextures","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0161:uploadPrimitive","exportIndex":161,"name":"uploadPrimitive","kind":"re-export","signature":"uploadPrimitive","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0162:vehicleComposeTRS","exportIndex":162,"name":"vehicleComposeTRS","kind":"re-export","signature":"vehicleComposeTRS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0163:vehicleTransformPoint","exportIndex":163,"name":"vehicleTransformPoint","kind":"re-export","signature":"vehicleTransformPoint","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0164:visualWheelMatrix","exportIndex":164,"name":"visualWheelMatrix","kind":"re-export","signature":"visualWheelMatrix","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0165:vpathBasename","exportIndex":165,"name":"vpathBasename","kind":"re-export","signature":"vpathBasename","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0166:vpathExtension","exportIndex":166,"name":"vpathExtension","kind":"re-export","signature":"vpathExtension","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/index.md","moduleTitle":"assets/index","source":"engine/assets/index.js","import":"/engine/assets/index.js","sourceHash":"72b007a62a505f281986f10e4ff2fad818edffcf12299481e69f310c0af65846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/index.js#0167:withScheme","exportIndex":167,"name":"withScheme","kind":"re-export","signature":"withScheme","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/material/EngineMaterial.md","moduleTitle":"assets/material/EngineMaterial","source":"engine/assets/material/EngineMaterial.js","import":"/engine/assets/material/EngineMaterial.js","sourceHash":"5263a4543010e12caf42252671ca0f259cc28a9ed32ac3643a6e2c6303b0c729","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/material/EngineMaterial.js","title":"assets/material/EngineMaterial","summary":"engine/assets/material/EngineMaterial.js — normalized material + texture binding schemas (spec §7). Materials are decoded, not guessed. Textures bind to surfaces (not loose images); UV sets, sampler wrap/filter, and texture transforms must survive import; packed channels are read exactly. The raw source material is always preserved on `.original` so the imported look stays recoverable even after engine normalization or shader-model approximation.","exportCount":9}
{"schemaVersion":1,"modulePath":"engine/reference/assets/material/EngineMaterial.md","moduleTitle":"assets/material/EngineMaterial","source":"engine/assets/material/EngineMaterial.js","import":"/engine/assets/material/EngineMaterial.js","sourceHash":"5263a4543010e12caf42252671ca0f259cc28a9ed32ac3643a6e2c6303b0c729","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/material/EngineMaterial.js#0000:defaultChannelMap","exportIndex":0,"name":"defaultChannelMap","kind":"function","signature":"defaultChannelMap(slot)","summary":"glTF default packing: metallic=B, roughness=G, occlusion=R."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/material/EngineMaterial.md","moduleTitle":"assets/material/EngineMaterial","source":"engine/assets/material/EngineMaterial.js","import":"/engine/assets/material/EngineMaterial.js","sourceHash":"5263a4543010e12caf42252671ca0f259cc28a9ed32ac3643a6e2c6303b0c729","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/material/EngineMaterial.js#0001:createEngineMaterial","exportIndex":1,"name":"createEngineMaterial","kind":"function","signature":"createEngineMaterial(init = {})","summary":"Create a normalized engine material."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/material/EngineMaterial.md","moduleTitle":"assets/material/EngineMaterial","source":"engine/assets/material/EngineMaterial.js","import":"/engine/assets/material/EngineMaterial.js","sourceHash":"5263a4543010e12caf42252671ca0f259cc28a9ed32ac3643a6e2c6303b0c729","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/material/EngineMaterial.js#0002:createTextureBinding","exportIndex":2,"name":"createTextureBinding","kind":"function","signature":"createTextureBinding(init = {})","summary":"Create a texture binding (a texture bound to a material slot on a surface)."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/material/EngineMaterial.md","moduleTitle":"assets/material/EngineMaterial","source":"engine/assets/material/EngineMaterial.js","import":"/engine/assets/material/EngineMaterial.js","sourceHash":"5263a4543010e12caf42252671ca0f259cc28a9ed32ac3643a6e2c6303b0c729","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/material/EngineMaterial.js#0003:hasTextureTransform","exportIndex":3,"name":"hasTextureTransform","kind":"function","signature":"hasTextureTransform(binding)","summary":"Has this binding a non-identity UV transform (KHR_texture_transform)?"}
{"schemaVersion":1,"modulePath":"engine/reference/assets/material/EngineMaterial.md","moduleTitle":"assets/material/EngineMaterial","source":"engine/assets/material/EngineMaterial.js","import":"/engine/assets/material/EngineMaterial.js","sourceHash":"5263a4543010e12caf42252671ca0f259cc28a9ed32ac3643a6e2c6303b0c729","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/material/EngineMaterial.js#0004:WORKFLOW","exportIndex":4,"name":"WORKFLOW","kind":"constant","signature":"WORKFLOW","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/material/EngineMaterial.md","moduleTitle":"assets/material/EngineMaterial","source":"engine/assets/material/EngineMaterial.js","import":"/engine/assets/material/EngineMaterial.js","sourceHash":"5263a4543010e12caf42252671ca0f259cc28a9ed32ac3643a6e2c6303b0c729","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/material/EngineMaterial.js#0005:ALPHA_MODE","exportIndex":5,"name":"ALPHA_MODE","kind":"constant","signature":"ALPHA_MODE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/material/EngineMaterial.md","moduleTitle":"assets/material/EngineMaterial","source":"engine/assets/material/EngineMaterial.js","import":"/engine/assets/material/EngineMaterial.js","sourceHash":"5263a4543010e12caf42252671ca0f259cc28a9ed32ac3643a6e2c6303b0c729","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/material/EngineMaterial.js#0006:TEXTURE_SLOTS","exportIndex":6,"name":"TEXTURE_SLOTS","kind":"constant","signature":"TEXTURE_SLOTS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/material/EngineMaterial.md","moduleTitle":"assets/material/EngineMaterial","source":"engine/assets/material/EngineMaterial.js","import":"/engine/assets/material/EngineMaterial.js","sourceHash":"5263a4543010e12caf42252671ca0f259cc28a9ed32ac3643a6e2c6303b0c729","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/material/EngineMaterial.js#0007:COLOR_SPACE","exportIndex":7,"name":"COLOR_SPACE","kind":"constant","signature":"COLOR_SPACE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/material/EngineMaterial.md","moduleTitle":"assets/material/EngineMaterial","source":"engine/assets/material/EngineMaterial.js","import":"/engine/assets/material/EngineMaterial.js","sourceHash":"5263a4543010e12caf42252671ca0f259cc28a9ed32ac3643a6e2c6303b0c729","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/material/EngineMaterial.js#0008:TEXTURE_USAGE","exportIndex":8,"name":"TEXTURE_USAGE","kind":"constant","signature":"TEXTURE_USAGE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/material/MaterialImport.md","moduleTitle":"assets/material/MaterialImport","source":"engine/assets/material/MaterialImport.js","import":"/engine/assets/material/MaterialImport.js","sourceHash":"da7e38b82758c500023db3f6794903b0966414587abe40c284879193041c1f18","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/material/MaterialImport.js","title":"assets/material/MaterialImport","summary":"engine/assets/material/MaterialImport.js — decode source materials into the normalized EngineMaterial (spec §7). Materials are decoded exactly, never guessed: UV sets, sampler wrap/filter, and KHR_texture_transform survive; packed channels are read per the format (metadata wins over filename). The raw material is preserved on `.original` so the imported look stays recoverable.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/assets/material/MaterialImport.md","moduleTitle":"assets/material/MaterialImport","source":"engine/assets/material/MaterialImport.js","import":"/engine/assets/material/MaterialImport.js","sourceHash":"da7e38b82758c500023db3f6794903b0966414587abe40c284879193041c1f18","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/material/MaterialImport.js#0000:importMaterials","exportIndex":0,"name":"importMaterials","kind":"function","signature":"importMaterials(model)","summary":"Decode every material in a model into EngineMaterial in place. Idempotent: a material already carrying `.original` is left untouched."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/material/MaterialImport.md","moduleTitle":"assets/material/MaterialImport","source":"engine/assets/material/MaterialImport.js","import":"/engine/assets/material/MaterialImport.js","sourceHash":"da7e38b82758c500023db3f6794903b0966414587abe40c284879193041c1f18","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/material/MaterialImport.js#0001:ALPHA_MODE","exportIndex":1,"name":"ALPHA_MODE","kind":"re-export","signature":"ALPHA_MODE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/material/MaterialImport.md","moduleTitle":"assets/material/MaterialImport","source":"engine/assets/material/MaterialImport.js","import":"/engine/assets/material/MaterialImport.js","sourceHash":"da7e38b82758c500023db3f6794903b0966414587abe40c284879193041c1f18","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/material/MaterialImport.js#0002:WORKFLOW","exportIndex":2,"name":"WORKFLOW","kind":"re-export","signature":"WORKFLOW","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/material/MaterialVariant.md","moduleTitle":"assets/material/MaterialVariant","source":"engine/assets/material/MaterialVariant.js","import":"/engine/assets/material/MaterialVariant.js","sourceHash":"7afaca740fffc5347263d83dbe15e44a96075b1161ab797aea87e2db18e66bc8","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/material/MaterialVariant.js","title":"assets/material/MaterialVariant","summary":"engine/assets/material/MaterialVariant.js — variants + shader-model fallback (spec §7). Imported materials won't always match the engine shader model, so we normalize into EngineMaterial, can generate a metallic-roughness fallback approximation when needed, and always keep the original recoverable. Variants (e.g. a re-tinted body panel) share the source material and only narrow/adjust.","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/assets/material/MaterialVariant.md","moduleTitle":"assets/material/MaterialVariant","source":"engine/assets/material/MaterialVariant.js","import":"/engine/assets/material/MaterialVariant.js","sourceHash":"7afaca740fffc5347263d83dbe15e44a96075b1161ab797aea87e2db18e66bc8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/material/MaterialVariant.js#0000:createMaterialVariant","exportIndex":0,"name":"createMaterialVariant","kind":"function","signature":"createMaterialVariant(base, overrides = {})","summary":"Create a material variant that overrides a few fields of a base material while preserving the original (recoverable) and recording the variant lineage."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/material/MaterialVariant.md","moduleTitle":"assets/material/MaterialVariant","source":"engine/assets/material/MaterialVariant.js","import":"/engine/assets/material/MaterialVariant.js","sourceHash":"7afaca740fffc5347263d83dbe15e44a96075b1161ab797aea87e2db18e66bc8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/material/MaterialVariant.js#0001:approximateToMetallicRoughness","exportIndex":1,"name":"approximateToMetallicRoughness","kind":"function","signature":"approximateToMetallicRoughness(material)","summary":"Approximate a non-metallic-roughness material as metallic-roughness for the engine's PBR shader. The original is preserved so the imported look can always be restored. This is a deliberate, labelled approximation — not an exact port."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/material/MaterialVariant.md","moduleTitle":"assets/material/MaterialVariant","source":"engine/assets/material/MaterialVariant.js","import":"/engine/assets/material/MaterialVariant.js","sourceHash":"7afaca740fffc5347263d83dbe15e44a96075b1161ab797aea87e2db18e66bc8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/material/MaterialVariant.js#0002:restoreOriginal","exportIndex":2,"name":"restoreOriginal","kind":"function","signature":"restoreOriginal(material)","summary":"Restore the original imported material descriptor (the raw source block)."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/material/MaterialVariant.md","moduleTitle":"assets/material/MaterialVariant","source":"engine/assets/material/MaterialVariant.js","import":"/engine/assets/material/MaterialVariant.js","sourceHash":"7afaca740fffc5347263d83dbe15e44a96075b1161ab797aea87e2db18e66bc8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/material/MaterialVariant.js#0003:COLOR_SPACE","exportIndex":3,"name":"COLOR_SPACE","kind":"re-export","signature":"COLOR_SPACE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/material/SegmentView.md","moduleTitle":"assets/material/SegmentView","source":"engine/assets/material/SegmentView.js","import":"/engine/assets/material/SegmentView.js","sourceHash":"59cbce841d98a50317470dee357ebac013ec5ed1bd41acf8df4aa181150912f5","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/material/SegmentView.js","title":"assets/material/SegmentView","summary":"engine/assets/material/SegmentView.js — non-destructive segmentation (spec §8).  We need modular breaking (swap tires, detach doors, tint glass, split a magazine) WITHOUT destroying the source. A SegmentView references original primitive ids / index ranges / materials — it never copies or rewrites geometry. A physical split is only baked later, on export or when a detachable part is actually created. This keeps skeletons, UVs, and morph targets intact.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/assets/material/SegmentView.md","moduleTitle":"assets/material/SegmentView","source":"engine/assets/material/SegmentView.js","import":"/engine/assets/material/SegmentView.js","sourceHash":"59cbce841d98a50317470dee357ebac013ec5ed1bd41acf8df4aa181150912f5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/material/SegmentView.js#0000:createSegmentView","exportIndex":0,"name":"createSegmentView","kind":"function","signature":"createSegmentView(model, mode = SEGMENT_MODE.MATERIAL)","summary":"Create a non-destructive segment view of a model."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/material/SegmentView.md","moduleTitle":"assets/material/SegmentView","source":"engine/assets/material/SegmentView.js","import":"/engine/assets/material/SegmentView.js","sourceHash":"59cbce841d98a50317470dee357ebac013ec5ed1bd41acf8df4aa181150912f5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/material/SegmentView.js#0001:bakeSegment","exportIndex":1,"name":"bakeSegment","kind":"function","signature":"bakeSegment(model, segmentView, segmentKey)","summary":"Bake a single segment into a standalone EngineModel-like payload (only when a detachable part is actually needed — e.g. export). Geometry is copied here, the source model is left untouched."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/material/SegmentView.md","moduleTitle":"assets/material/SegmentView","source":"engine/assets/material/SegmentView.js","import":"/engine/assets/material/SegmentView.js","sourceHash":"59cbce841d98a50317470dee357ebac013ec5ed1bd41acf8df4aa181150912f5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/material/SegmentView.js#0002:SEGMENT_MODE","exportIndex":2,"name":"SEGMENT_MODE","kind":"constant","signature":"SEGMENT_MODE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/material/SurfaceBinding.md","moduleTitle":"assets/material/SurfaceBinding","source":"engine/assets/material/SurfaceBinding.js","import":"/engine/assets/material/SurfaceBinding.js","sourceHash":"8ec083e0428da712dafe8880c3bd63a03e1f76acb70d34b05d1424212db7feb4","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/material/SurfaceBinding.js","title":"assets/material/SurfaceBinding","summary":"engine/assets/material/SurfaceBinding.js — bind materials to surfaces (spec §7).  Material assignment happens at the primitive/submesh level, not per-image. A SurfaceBinding records exactly which node/mesh/primitive a material covers, which UV set it uses, and (when known) the semantic part — so segmentation and editing can target real surfaces and bindings survive non-destructive splits.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/assets/material/SurfaceBinding.md","moduleTitle":"assets/material/SurfaceBinding","source":"engine/assets/material/SurfaceBinding.js","import":"/engine/assets/material/SurfaceBinding.js","sourceHash":"8ec083e0428da712dafe8880c3bd63a03e1f76acb70d34b05d1424212db7feb4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/material/SurfaceBinding.js#0000:buildSurfaceBindings","exportIndex":0,"name":"buildSurfaceBindings","kind":"function","signature":"buildSurfaceBindings(model)","summary":"Build surface bindings for a model (material ↔ primitive). Populates model.surfaceBindings and returns them."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/material/TextureImport.md","moduleTitle":"assets/material/TextureImport","source":"engine/assets/material/TextureImport.js","import":"/engine/assets/material/TextureImport.js","sourceHash":"69b4d12fac4a38ef129660fef6d7f2eab09611c7f10ca8102fc9cd01cbc6b544","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/material/TextureImport.js","title":"assets/material/TextureImport","summary":"engine/assets/material/TextureImport.js — normalize textures + decode pixels (spec §7). A texture's colour space and usage are inferred from the material slots that bind it (sRGB for colour/emissive, linear for data/normal/ORM), so the same image used as colour vs data is handled correctly. Pixel decode is a separate, browser-only step (createImageBitmap) kept out of parsing. KTX2/ Basis stay compressed here and are routed by TextureManager to the existing native upload or registered decoder/transcoder hook path.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/assets/material/TextureImport.md","moduleTitle":"assets/material/TextureImport","source":"engine/assets/material/TextureImport.js","import":"/engine/assets/material/TextureImport.js","sourceHash":"69b4d12fac4a38ef129660fef6d7f2eab09611c7f10ca8102fc9cd01cbc6b544","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/material/TextureImport.js#0000:normalizeTextures","exportIndex":0,"name":"normalizeTextures","kind":"function","signature":"normalizeTextures(model)","summary":"Infer per-texture colour space + usage from the decoded material bindings, and normalize model.textures into self-describing EngineTexture records. Requires importMaterials() to have run first (so bindings exist)."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/material/TextureImport.md","moduleTitle":"assets/material/TextureImport","source":"engine/assets/material/TextureImport.js","import":"/engine/assets/material/TextureImport.js","sourceHash":"69b4d12fac4a38ef129660fef6d7f2eab09611c7f10ca8102fc9cd01cbc6b544","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/material/TextureImport.js#0001:decodeTexture","exportIndex":1,"name":"decodeTexture","kind":"function","signature":"async decodeTexture(tex)","summary":"Decode a normalized texture's pixels to an ImageBitmap (browser only). Returns the bitmap (also cached on the texture) or null when undecodable (no bytes, external uri, or a compressed format with no transcoder)."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/material/TextureImport.md","moduleTitle":"assets/material/TextureImport","source":"engine/assets/material/TextureImport.js","import":"/engine/assets/material/TextureImport.js","sourceHash":"69b4d12fac4a38ef129660fef6d7f2eab09611c7f10ca8102fc9cd01cbc6b544","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/material/TextureImport.js#0002:decodeAllTextures","exportIndex":2,"name":"decodeAllTextures","kind":"function","signature":"async decodeAllTextures(model)","summary":"Decode every decodable texture in a model. Returns the count decoded."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/material/composite/CompositeMaterialContracts.md","moduleTitle":"assets/material/composite/CompositeMaterialContracts","source":"engine/assets/material/composite/CompositeMaterialContracts.js","import":"/engine/assets/material/composite/CompositeMaterialContracts.js","sourceHash":"76f00592a36bbf5ad2ac8534c0489ff44bd96f0f7bcd26817281bfacd381b0ea","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/material/composite/CompositeMaterialContracts.js","title":"assets/material/composite/CompositeMaterialContracts","summary":"Strict, app-neutral contracts for immutable composite material data.","exportCount":8}
{"schemaVersion":1,"modulePath":"engine/reference/assets/material/composite/CompositeMaterialContracts.md","moduleTitle":"assets/material/composite/CompositeMaterialContracts","source":"engine/assets/material/composite/CompositeMaterialContracts.js","import":"/engine/assets/material/composite/CompositeMaterialContracts.js","sourceHash":"76f00592a36bbf5ad2ac8534c0489ff44bd96f0f7bcd26817281bfacd381b0ea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/material/composite/CompositeMaterialContracts.js#0000:isPlainCompositeMaterialObject","exportIndex":0,"name":"isPlainCompositeMaterialObject","kind":"function","signature":"isPlainCompositeMaterialObject(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/material/composite/CompositeMaterialContracts.md","moduleTitle":"assets/material/composite/CompositeMaterialContracts","source":"engine/assets/material/composite/CompositeMaterialContracts.js","import":"/engine/assets/material/composite/CompositeMaterialContracts.js","sourceHash":"76f00592a36bbf5ad2ac8534c0489ff44bd96f0f7bcd26817281bfacd381b0ea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/material/composite/CompositeMaterialContracts.js#0001:validateCompositeMaterialFacets","exportIndex":1,"name":"validateCompositeMaterialFacets","kind":"function","signature":"validateCompositeMaterialFacets(value, path = '$.facets')","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/material/composite/CompositeMaterialContracts.md","moduleTitle":"assets/material/composite/CompositeMaterialContracts","source":"engine/assets/material/composite/CompositeMaterialContracts.js","import":"/engine/assets/material/composite/CompositeMaterialContracts.js","sourceHash":"76f00592a36bbf5ad2ac8534c0489ff44bd96f0f7bcd26817281bfacd381b0ea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/material/composite/CompositeMaterialContracts.js#0002:validateCompositeMaterialProvenance","exportIndex":2,"name":"validateCompositeMaterialProvenance","kind":"function","signature":"validateCompositeMaterialProvenance({ facets, sources, fieldSources }, path = '$')","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/material/composite/CompositeMaterialContracts.md","moduleTitle":"assets/material/composite/CompositeMaterialContracts","source":"engine/assets/material/composite/CompositeMaterialContracts.js","import":"/engine/assets/material/composite/CompositeMaterialContracts.js","sourceHash":"76f00592a36bbf5ad2ac8534c0489ff44bd96f0f7bcd26817281bfacd381b0ea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/material/composite/CompositeMaterialContracts.js#0003:validateEngineCompositeMaterialResource","exportIndex":3,"name":"validateEngineCompositeMaterialResource","kind":"function","signature":"validateEngineCompositeMaterialResource(value, path = '$')","summary":"Validate a complete built-in catalog resource. Returns the input unchanged."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/material/composite/CompositeMaterialContracts.md","moduleTitle":"assets/material/composite/CompositeMaterialContracts","source":"engine/assets/material/composite/CompositeMaterialContracts.js","import":"/engine/assets/material/composite/CompositeMaterialContracts.js","sourceHash":"76f00592a36bbf5ad2ac8534c0489ff44bd96f0f7bcd26817281bfacd381b0ea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/material/composite/CompositeMaterialContracts.js#0004:ENGINE_COMPOSITE_MATERIAL_SCHEMA","exportIndex":4,"name":"ENGINE_COMPOSITE_MATERIAL_SCHEMA","kind":"constant","signature":"ENGINE_COMPOSITE_MATERIAL_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/material/composite/CompositeMaterialContracts.md","moduleTitle":"assets/material/composite/CompositeMaterialContracts","source":"engine/assets/material/composite/CompositeMaterialContracts.js","import":"/engine/assets/material/composite/CompositeMaterialContracts.js","sourceHash":"76f00592a36bbf5ad2ac8534c0489ff44bd96f0f7bcd26817281bfacd381b0ea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/material/composite/CompositeMaterialContracts.js#0005:ENGINE_COMPOSITE_MATERIAL_VERSION","exportIndex":5,"name":"ENGINE_COMPOSITE_MATERIAL_VERSION","kind":"constant","signature":"ENGINE_COMPOSITE_MATERIAL_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/material/composite/CompositeMaterialContracts.md","moduleTitle":"assets/material/composite/CompositeMaterialContracts","source":"engine/assets/material/composite/CompositeMaterialContracts.js","import":"/engine/assets/material/composite/CompositeMaterialContracts.js","sourceHash":"76f00592a36bbf5ad2ac8534c0489ff44bd96f0f7bcd26817281bfacd381b0ea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/material/composite/CompositeMaterialContracts.js#0006:COMPOSITE_MATERIAL_FACETS","exportIndex":6,"name":"COMPOSITE_MATERIAL_FACETS","kind":"constant","signature":"COMPOSITE_MATERIAL_FACETS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/material/composite/CompositeMaterialContracts.md","moduleTitle":"assets/material/composite/CompositeMaterialContracts","source":"engine/assets/material/composite/CompositeMaterialContracts.js","import":"/engine/assets/material/composite/CompositeMaterialContracts.js","sourceHash":"76f00592a36bbf5ad2ac8534c0489ff44bd96f0f7bcd26817281bfacd381b0ea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/material/composite/CompositeMaterialContracts.js#0007:COMPOSITE_MATERIAL_FACET_FIELDS","exportIndex":7,"name":"COMPOSITE_MATERIAL_FACET_FIELDS","kind":"constant","signature":"COMPOSITE_MATERIAL_FACET_FIELDS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/material/composite/EngineCompositeMaterialCatalog.md","moduleTitle":"assets/material/composite/EngineCompositeMaterialCatalog","source":"engine/assets/material/composite/EngineCompositeMaterialCatalog.js","import":"/engine/assets/material/composite/EngineCompositeMaterialCatalog.js","sourceHash":"6f53168c9843e015d4bfdd7fefe369109990f9b40187e0a20a867b5caf53202f","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/material/composite/EngineCompositeMaterialCatalog.js","title":"assets/material/composite/EngineCompositeMaterialCatalog","summary":"Browser-native JSON loader. Callers may inject an equivalent fetch boundary.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/assets/material/composite/EngineCompositeMaterialCatalog.md","moduleTitle":"assets/material/composite/EngineCompositeMaterialCatalog","source":"engine/assets/material/composite/EngineCompositeMaterialCatalog.js","import":"/engine/assets/material/composite/EngineCompositeMaterialCatalog.js","sourceHash":"6f53168c9843e015d4bfdd7fefe369109990f9b40187e0a20a867b5caf53202f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/material/composite/EngineCompositeMaterialCatalog.js#0000:EngineCompositeMaterialCatalog","exportIndex":0,"name":"EngineCompositeMaterialCatalog","kind":"class","signature":"class EngineCompositeMaterialCatalog","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/material/composite/EngineCompositeMaterialCatalog.md","moduleTitle":"assets/material/composite/EngineCompositeMaterialCatalog","source":"engine/assets/material/composite/EngineCompositeMaterialCatalog.js","import":"/engine/assets/material/composite/EngineCompositeMaterialCatalog.js","sourceHash":"6f53168c9843e015d4bfdd7fefe369109990f9b40187e0a20a867b5caf53202f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/material/composite/EngineCompositeMaterialCatalog.js#0001:loadEngineCompositeMaterialCatalog","exportIndex":1,"name":"loadEngineCompositeMaterialCatalog","kind":"function","signature":"async loadEngineCompositeMaterialCatalog({ fetchImpl = globalThis.fetch, urls = ENGINE_COMPOSITE_MATERIAL_RESOURCE_URLS, } = {})","summary":"Browser-native JSON loader. Callers may inject an equivalent fetch boundary."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/material/composite/EngineCompositeMaterialCatalog.md","moduleTitle":"assets/material/composite/EngineCompositeMaterialCatalog","source":"engine/assets/material/composite/EngineCompositeMaterialCatalog.js","import":"/engine/assets/material/composite/EngineCompositeMaterialCatalog.js","sourceHash":"6f53168c9843e015d4bfdd7fefe369109990f9b40187e0a20a867b5caf53202f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/material/composite/EngineCompositeMaterialCatalog.js#0002:ENGINE_COMPOSITE_MATERIAL_RESOURCE_URLS","exportIndex":2,"name":"ENGINE_COMPOSITE_MATERIAL_RESOURCE_URLS","kind":"constant","signature":"ENGINE_COMPOSITE_MATERIAL_RESOURCE_URLS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/material/composite/index.md","moduleTitle":"assets/material/composite/index","source":"engine/assets/material/composite/index.js","import":"/engine/assets/material/composite/index.js","sourceHash":"2ceda7202ea6cdeadd439ee7f876432743481f80d5633533339ed0e0e9b34c8a","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/material/composite/index.js","title":"assets/material/composite/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/assets/render/ModelGpu.md","moduleTitle":"assets/render/ModelGpu","source":"engine/assets/render/ModelGpu.js","import":"/engine/assets/render/ModelGpu.js","sourceHash":"44186713557f036c993cb9325b5a3461167457943f8d587cd3c06390fdd0e74e","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/render/ModelGpu.js","title":"assets/render/ModelGpu","summary":"engine/assets/render/ModelGpu.js — reusable GPU-side helpers to turn an uploaded EngineModel into drawable items. Small, composable, and shared by the importer/viewer, the editor, and the runtime so nobody re-implements texture upload, per-primitive bind groups, world-matrix flattening, or bounds framing.  Pairs with ModelShader (uniform block) and GpuUploader (vertex layout). Pure data in → GPU objects out; callers own the render pass and camera.","exportCount":11}
{"schemaVersion":1,"modulePath":"engine/reference/assets/render/ModelGpu.md","moduleTitle":"assets/render/ModelGpu","source":"engine/assets/render/ModelGpu.js","import":"/engine/assets/render/ModelGpu.js","sourceHash":"44186713557f036c993cb9325b5a3461167457943f8d587cd3c06390fdd0e74e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/render/ModelGpu.js#0000:createDefaultSampler","exportIndex":0,"name":"createDefaultSampler","kind":"function","signature":"createDefaultSampler(device)","summary":"A linear, repeating sampler — a sane default for model albedo."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/render/ModelGpu.md","moduleTitle":"assets/render/ModelGpu","source":"engine/assets/render/ModelGpu.js","import":"/engine/assets/render/ModelGpu.js","sourceHash":"44186713557f036c993cb9325b5a3461167457943f8d587cd3c06390fdd0e74e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/render/ModelGpu.js#0001:createWhiteTexture","exportIndex":1,"name":"createWhiteTexture","kind":"function","signature":"createWhiteTexture(device)","summary":"A 1×1 white texture so untextured primitives sample white (albedo = color)."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/render/ModelGpu.md","moduleTitle":"assets/render/ModelGpu","source":"engine/assets/render/ModelGpu.js","import":"/engine/assets/render/ModelGpu.js","sourceHash":"44186713557f036c993cb9325b5a3461167457943f8d587cd3c06390fdd0e74e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/render/ModelGpu.js#0002:makeGpuTexture","exportIndex":2,"name":"makeGpuTexture","kind":"function","signature":"makeGpuTexture(device, bitmap, srgb)","summary":"Upload one decoded bitmap to a GPU texture (sRGB for colour, linear for data)."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/render/ModelGpu.md","moduleTitle":"assets/render/ModelGpu","source":"engine/assets/render/ModelGpu.js","import":"/engine/assets/render/ModelGpu.js","sourceHash":"44186713557f036c993cb9325b5a3461167457943f8d587cd3c06390fdd0e74e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/render/ModelGpu.js#0003:uploadModelTextures","exportIndex":3,"name":"uploadModelTextures","kind":"function","signature":"async uploadModelTextures(device, model)","summary":"Decode + upload every embedded texture in a model."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/render/ModelGpu.md","moduleTitle":"assets/render/ModelGpu","source":"engine/assets/render/ModelGpu.js","import":"/engine/assets/render/ModelGpu.js","sourceHash":"44186713557f036c993cb9325b5a3461167457943f8d587cd3c06390fdd0e74e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/render/ModelGpu.js#0004:primitiveColor","exportIndex":4,"name":"primitiveColor","kind":"function","signature":"primitiveColor(model, prim)","summary":"Deterministic fallback colour for a primitive lacking a baseColorFactor."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/render/ModelGpu.md","moduleTitle":"assets/render/ModelGpu","source":"engine/assets/render/ModelGpu.js","import":"/engine/assets/render/ModelGpu.js","sourceHash":"44186713557f036c993cb9325b5a3461167457943f8d587cd3c06390fdd0e74e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/render/ModelGpu.js#0005:buildModelDrawables","exportIndex":5,"name":"buildModelDrawables","kind":"function","signature":"buildModelDrawables(device, model, opts)","summary":"Build drawable items for an uploaded model: one per primitive, each with its world draw matrix, uniform buffer, bind group, fallback colour, and (optional) wheel-spin descriptor keyed by node id."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/render/ModelGpu.md","moduleTitle":"assets/render/ModelGpu","source":"engine/assets/render/ModelGpu.js","import":"/engine/assets/render/ModelGpu.js","sourceHash":"44186713557f036c993cb9325b5a3461167457943f8d587cd3c06390fdd0e74e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/render/ModelGpu.js#0006:bakeSkinnedMeshes","exportIndex":6,"name":"bakeSkinnedMeshes","kind":"function","signature":"bakeSkinnedMeshes(model)","summary":"CPU-skin every skinned mesh to its DEFAULT pose so the static viewer draws the mesh wrapped around the node-hierarchy skeleton (per the glTF rule that a skinned mesh's own node transform is ignored). For each skinned vertex: v' = Σ wⱼ · (jointNodeWorld(j) · inverseBindMatrix(j)) · v   (scene space) Positions/normals are replaced in place (original kept on `_bindPosition`) and the primitive is flagged `_skinnedBaked`. No-op without skins/IBMs. GPU-free."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/render/ModelGpu.md","moduleTitle":"assets/render/ModelGpu","source":"engine/assets/render/ModelGpu.js","import":"/engine/assets/render/ModelGpu.js","sourceHash":"44186713557f036c993cb9325b5a3461167457943f8d587cd3c06390fdd0e74e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/render/ModelGpu.js#0007:releaseDrawables","exportIndex":7,"name":"releaseDrawables","kind":"function","signature":"releaseDrawables(items)","summary":"Free per-item uniform buffers built by buildModelDrawables."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/render/ModelGpu.md","moduleTitle":"assets/render/ModelGpu","source":"engine/assets/render/ModelGpu.js","import":"/engine/assets/render/ModelGpu.js","sourceHash":"44186713557f036c993cb9325b5a3461167457943f8d587cd3c06390fdd0e74e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/render/ModelGpu.js#0008:frameBounds","exportIndex":8,"name":"frameBounds","kind":"function","signature":"frameBounds(items)","summary":"World-space bounds of a set of drawables, for camera framing."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/render/ModelGpu.md","moduleTitle":"assets/render/ModelGpu","source":"engine/assets/render/ModelGpu.js","import":"/engine/assets/render/ModelGpu.js","sourceHash":"44186713557f036c993cb9325b5a3461167457943f8d587cd3c06390fdd0e74e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/render/ModelGpu.js#0009:importMatrixOf","exportIndex":9,"name":"importMatrixOf","kind":"function","signature":"importMatrixOf(model)","summary":"Compose the standard import-correction matrix from a model's importTransform."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/render/ModelGpu.md","moduleTitle":"assets/render/ModelGpu","source":"engine/assets/render/ModelGpu.js","import":"/engine/assets/render/ModelGpu.js","sourceHash":"44186713557f036c993cb9325b5a3461167457943f8d587cd3c06390fdd0e74e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/render/ModelGpu.js#0010:nodeLocalMatrix","exportIndex":10,"name":"nodeLocalMatrix","kind":"re-export","signature":"nodeLocalMatrix","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/render/ModelRenderer.md","moduleTitle":"assets/render/ModelRenderer","source":"engine/assets/render/ModelRenderer.js","import":"/engine/assets/render/ModelRenderer.js","sourceHash":"c6a36dd5b5da0e229d6e60e1e4b8f1c70c3130a51aeb0a2f8b098418e9445f29","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/render/ModelRenderer.js","title":"assets/render/ModelRenderer","summary":"engine/assets/render/ModelRenderer.js — the batteries-included way to draw an EngineModel. It composes the small render modules (ModelShader + ModelGpu) and the vehicle wheel-spin helper, applying sensible DEFAULTS so any engine system can go from \"I have an EngineModel\" to \"it's on screen\" in two calls:  const r = createModelRenderer(device, { format }); await r.setModel(model, { wheelSpin: true, rig });   // upload + drawables per frame: r.render(pass, { mvp, eye, distance });  The caller still owns the render pass + camera (so it slots into any pipeline); the renderer owns the model's GPU lifetime and offers a depth-texture + camera- framing convenience. Override the shader/format/cull via opts when needed.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/assets/render/ModelRenderer.md","moduleTitle":"assets/render/ModelRenderer","source":"engine/assets/render/ModelRenderer.js","import":"/engine/assets/render/ModelRenderer.js","sourceHash":"c6a36dd5b5da0e229d6e60e1e4b8f1c70c3130a51aeb0a2f8b098418e9445f29","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/render/ModelRenderer.js#0000:createModelRenderer","exportIndex":0,"name":"createModelRenderer","kind":"function","signature":"createModelRenderer(device, opts = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/render/ModelShader.md","moduleTitle":"assets/render/ModelShader","source":"engine/assets/render/ModelShader.js","import":"/engine/assets/render/ModelShader.js","sourceHash":"b1420623bb52cc09c9245fb726251b7f616554f3d45f9032474717a8cc637a36","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/render/ModelShader.js","title":"assets/render/ModelShader","summary":"engine/assets/render/ModelShader.js — the default lit WGSL shader + pipeline for drawing an EngineModel's standard-layout primitives. Small and overridable: any engine system can grab LIT_MODEL_SHADER for a sensible default, or pass its own WGSL to createModelPipeline. The shader pairs with standardVertexLayout() (pos3 + nrm3 + uv2) and the 160-byte uniform block written by ModelGpu.","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/assets/render/ModelShader.md","moduleTitle":"assets/render/ModelShader","source":"engine/assets/render/ModelShader.js","import":"/engine/assets/render/ModelShader.js","sourceHash":"b1420623bb52cc09c9245fb726251b7f616554f3d45f9032474717a8cc637a36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/render/ModelShader.js#0000:createModelPipeline","exportIndex":0,"name":"createModelPipeline","kind":"function","signature":"createModelPipeline(device, opts = {})","summary":"Build the render pipeline for EngineModel primitives."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/render/ModelShader.md","moduleTitle":"assets/render/ModelShader","source":"engine/assets/render/ModelShader.js","import":"/engine/assets/render/ModelShader.js","sourceHash":"b1420623bb52cc09c9245fb726251b7f616554f3d45f9032474717a8cc637a36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/render/ModelShader.js#0001:MODEL_UNIFORM_BYTES","exportIndex":1,"name":"MODEL_UNIFORM_BYTES","kind":"constant","signature":"MODEL_UNIFORM_BYTES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/render/ModelShader.md","moduleTitle":"assets/render/ModelShader","source":"engine/assets/render/ModelShader.js","import":"/engine/assets/render/ModelShader.js","sourceHash":"b1420623bb52cc09c9245fb726251b7f616554f3d45f9032474717a8cc637a36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/render/ModelShader.js#0002:MODEL_UNIFORM_FLOATS","exportIndex":2,"name":"MODEL_UNIFORM_FLOATS","kind":"constant","signature":"MODEL_UNIFORM_FLOATS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/render/ModelShader.md","moduleTitle":"assets/render/ModelShader","source":"engine/assets/render/ModelShader.js","import":"/engine/assets/render/ModelShader.js","sourceHash":"b1420623bb52cc09c9245fb726251b7f616554f3d45f9032474717a8cc637a36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/render/ModelShader.js#0003:LIT_MODEL_SHADER","exportIndex":3,"name":"LIT_MODEL_SHADER","kind":"constant","signature":"LIT_MODEL_SHADER","summary":"A neutral physically-plausible lit shader with albedo floor + additive rim."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/render/ModelShader.md","moduleTitle":"assets/render/ModelShader","source":"engine/assets/render/ModelShader.js","import":"/engine/assets/render/ModelShader.js","sourceHash":"b1420623bb52cc09c9245fb726251b7f616554f3d45f9032474717a8cc637a36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/render/ModelShader.js#0004:SCULPTURE_COURT_MODEL_SHADER","exportIndex":4,"name":"SCULPTURE_COURT_MODEL_SHADER","kind":"constant","signature":"SCULPTURE_COURT_MODEL_SHADER","summary":"Gallery raster lighting derived from the Astral Sculpture Court studies: warm broad key, restrained green-cyan fill, cool portal rim, park/studio environment response, Khronos PBR Neutral, and stable one-LSB dithering. It deliberately preserves the default renderer bind/uniform contract."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/render/ModelShader.md","moduleTitle":"assets/render/ModelShader","source":"engine/assets/render/ModelShader.js","import":"/engine/assets/render/ModelShader.js","sourceHash":"b1420623bb52cc09c9245fb726251b7f616554f3d45f9032474717a8cc637a36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/render/ModelShader.js#0005:SCULPTURE_COURT_BACKDROP_SHADER","exportIndex":5,"name":"SCULPTURE_COURT_BACKDROP_SHADER","kind":"constant","signature":"SCULPTURE_COURT_BACKDROP_SHADER","summary":"Full-screen gallery/park environment paired with the sculpture shader."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/BodyTemplateExport.md","moduleTitle":"assets/rig/BodyTemplateExport","source":"engine/assets/rig/BodyTemplateExport.js","import":"/engine/assets/rig/BodyTemplateExport.js","sourceHash":"1d06fcadb655308eef0a6e35413bc074674226b481d6d412aa8888696d8cc96e","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/rig/BodyTemplateExport.js","title":"assets/rig/BodyTemplateExport","summary":"engine/assets/rig/BodyTemplateExport.js — turn a generated `CharacterPhysicsAsset` into a starting-point `life.body.v1`-shaped body template JSON (the schema `Life/data/bodies/*.json` + `engine/assets/rig/active-body/BodyAssembler.js` consume).  This mirrors how every mainstream engine handles the generated-vs-hand-authored split (Unreal's Physics Asset auto-generate, Unity's Ragdoll Wizard, Godot's \"Create Physical Skeleton\"): the generator produces a complete, valid STARTING POINT for skeleton/joint/collision structure — never silently re-applied over hand-tuned data afterward. A dev generates this once for a new creature/character variant, saves it as a plain JSON file, and hand-tunes gameplay-only concerns on top (anatomy/organs, ligaments, muscle model, strength/mass presets) that have no generator and are intentionally hand-authored. This is the \"easy for devs to achieve anything\" on-ramp: zero-authoring skeleton for a new body, full hand-tuning power afterward.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/BodyTemplateExport.md","moduleTitle":"assets/rig/BodyTemplateExport","source":"engine/assets/rig/BodyTemplateExport.js","import":"/engine/assets/rig/BodyTemplateExport.js","sourceHash":"1d06fcadb655308eef0a6e35413bc074674226b481d6d412aa8888696d8cc96e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/BodyTemplateExport.js#0000:characterPhysicsAssetToBodyTemplate","exportIndex":0,"name":"characterPhysicsAssetToBodyTemplate","kind":"function","signature":"characterPhysicsAssetToBodyTemplate(asset, opts = {})","summary":"Convert a `CharacterPhysicsAsset` (from `createCharacterPhysicsAsset()`) into a `life.body.v1` body template — a ready-to-save JSON starting point for a new creature/character variant. Only the skeleton/joint/collision structure is generated; `anatomy`/`ligaments`/`muscleModel`/`presets` are left as explicit, clearly-commented empty stubs since no generator authors those — every mainstream engine's ragdoll generator stops at the same boundary."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/CharacterPhysicsAsset.md","moduleTitle":"assets/rig/CharacterPhysicsAsset","source":"engine/assets/rig/CharacterPhysicsAsset.js","import":"/engine/assets/rig/CharacterPhysicsAsset.js","sourceHash":"4ed8411eaa0e53054ff4c5471d47644968e21da0eb4e4a556dfb0d2228c66ccf","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/rig/CharacterPhysicsAsset.js","title":"assets/rig/CharacterPhysicsAsset","summary":"engine/assets/rig/CharacterPhysicsAsset.js — the single generated packaging layer for a character's physics structure. This is NOT a new generator: it wraps `buildRagdoll()` (RagdollBuilder.js) + `buildJointLimits()` (JointLimits.js) and repackages their output into one serializable schema that every consumer (ActiveRigController/PhysX, RagdollSim, RagdollSkinning, Life's BodyAssembler, RealmForge's compilers, legacy PBDRagdoll wrapper) can read instead of inventing its own bone/joint shape. GPU-free + deterministic.  Schema fields: skeletonFingerprint, boneMap, bodyDefs, jointDefs, jointLimits, massProfile, collisionFilters, driveProfiles, skinningOffsets, particleCageDef (reserved for the future flesh-cage system), validationReport.","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/CharacterPhysicsAsset.md","moduleTitle":"assets/rig/CharacterPhysicsAsset","source":"engine/assets/rig/CharacterPhysicsAsset.js","import":"/engine/assets/rig/CharacterPhysicsAsset.js","sourceHash":"4ed8411eaa0e53054ff4c5471d47644968e21da0eb4e4a556dfb0d2228c66ccf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/CharacterPhysicsAsset.js#0000:computeSkeletonFingerprint","exportIndex":0,"name":"computeSkeletonFingerprint","kind":"function","signature":"computeSkeletonFingerprint(bodyDefs)","summary":"Stable fingerprint for a bone topology — same skeleton shape (names + parent links, order-independent per bone but position-stable) hashes the same way twice. Used to detect when a cached CharacterPhysicsAsset can be reused vs. must be rebuilt."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/CharacterPhysicsAsset.md","moduleTitle":"assets/rig/CharacterPhysicsAsset","source":"engine/assets/rig/CharacterPhysicsAsset.js","import":"/engine/assets/rig/CharacterPhysicsAsset.js","sourceHash":"4ed8411eaa0e53054ff4c5471d47644968e21da0eb4e4a556dfb0d2228c66ccf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/CharacterPhysicsAsset.js#0001:createCharacterPhysicsAsset","exportIndex":1,"name":"createCharacterPhysicsAsset","kind":"function","signature":"createCharacterPhysicsAsset(model, opts = {})","summary":"Build a `CharacterPhysicsAsset` for a model. Humanoid path when a humanoid rig is present, otherwise generic topology — identical branch selection to `buildRagdoll()`, which this function delegates to."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/CharacterPhysicsAsset.md","moduleTitle":"assets/rig/CharacterPhysicsAsset","source":"engine/assets/rig/CharacterPhysicsAsset.js","import":"/engine/assets/rig/CharacterPhysicsAsset.js","sourceHash":"4ed8411eaa0e53054ff4c5471d47644968e21da0eb4e4a556dfb0d2228c66ccf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/CharacterPhysicsAsset.js#0002:validateCharacterPhysicsAsset","exportIndex":2,"name":"validateCharacterPhysicsAsset","kind":"function","signature":"validateCharacterPhysicsAsset(asset)","summary":"Validate a CharacterPhysicsAsset's internal consistency (indices resolve, joint types known, mass/limit values finite). Follows the same `{ ok, errors, warnings, counts }` pattern as Life's `BodySpecValidator.js`, adapted to this schema's shape."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/CharacterPhysicsAsset.md","moduleTitle":"assets/rig/CharacterPhysicsAsset","source":"engine/assets/rig/CharacterPhysicsAsset.js","import":"/engine/assets/rig/CharacterPhysicsAsset.js","sourceHash":"4ed8411eaa0e53054ff4c5471d47644968e21da0eb4e4a556dfb0d2228c66ccf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/CharacterPhysicsAsset.js#0003:CHARACTER_PHYSICS_ASSET_SCHEMA_VERSION","exportIndex":3,"name":"CHARACTER_PHYSICS_ASSET_SCHEMA_VERSION","kind":"constant","signature":"CHARACTER_PHYSICS_ASSET_SCHEMA_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/CharacterPhysicsAsset.md","moduleTitle":"assets/rig/CharacterPhysicsAsset","source":"engine/assets/rig/CharacterPhysicsAsset.js","import":"/engine/assets/rig/CharacterPhysicsAsset.js","sourceHash":"4ed8411eaa0e53054ff4c5471d47644968e21da0eb4e4a556dfb0d2228c66ccf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/CharacterPhysicsAsset.js#0004:inferDriveType","exportIndex":4,"name":"inferDriveType","kind":"re-export","signature":"inferDriveType","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/JointLimits.md","moduleTitle":"assets/rig/JointLimits","source":"engine/assets/rig/JointLimits.js","import":"/engine/assets/rig/JointLimits.js","sourceHash":"819bd4dca674bea5ddf92ad8d79541ce11cac04ec5c02ed31ff5cefc0d03f49f","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/rig/JointLimits.js","title":"assets/rig/JointLimits","summary":"engine/assets/rig/JointLimits.js — automatically derive per-joint movement limits (range of motion) from a model, the way Life's BodyAssembler does it: every joint gets a TYPE (ball / hinge / saddle / twist / root) plus a swing cone + twist limit (degrees → radians), and hinge joints get a bend AXIS taken from the bind-pose geometry (perpendicular to the parent→joint→child bend plane). Two paths: • humanoid — role-based anatomical profile keyed by canonical bone slots. • generic  — topology inference (children count + segment straightness) so spiders, dogs, cats, birds, etc. get sensible limits with no template: hub/limb-root joints → ball, straight mid-limb segments → hinge, leaves → fixed. GPU-free + deterministic → gate-testable.","exportCount":15}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/JointLimits.md","moduleTitle":"assets/rig/JointLimits","source":"engine/assets/rig/JointLimits.js","import":"/engine/assets/rig/JointLimits.js","sourceHash":"819bd4dca674bea5ddf92ad8d79541ce11cac04ec5c02ed31ff5cefc0d03f49f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/JointLimits.js#0000:hingeAxis","exportIndex":0,"name":"hingeAxis","kind":"function","signature":"hingeAxis(parentPos, jointPos, childPos)","summary":"Hinge bend axis = normal of the parent→joint→child plane (the axis a knee/elbow actually bends about). Falls back to a perpendicular of the bone direction."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/JointLimits.md","moduleTitle":"assets/rig/JointLimits","source":"engine/assets/rig/JointLimits.js","import":"/engine/assets/rig/JointLimits.js","sourceHash":"819bd4dca674bea5ddf92ad8d79541ce11cac04ec5c02ed31ff5cefc0d03f49f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/JointLimits.js#0001:deriveJointType","exportIndex":1,"name":"deriveJointType","kind":"function","signature":"deriveJointType(prof)","summary":"Joint type carried by an anatomical profile (ball/hinge/saddle/twist/root)."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/JointLimits.md","moduleTitle":"assets/rig/JointLimits","source":"engine/assets/rig/JointLimits.js","import":"/engine/assets/rig/JointLimits.js","sourceHash":"819bd4dca674bea5ddf92ad8d79541ce11cac04ec5c02ed31ff5cefc0d03f49f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/JointLimits.js#0002:deriveSwingCone","exportIndex":2,"name":"deriveSwingCone","kind":"function","signature":"deriveSwingCone(prof)","summary":"Swing-cone half-angle (degrees) carried by a profile."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/JointLimits.md","moduleTitle":"assets/rig/JointLimits","source":"engine/assets/rig/JointLimits.js","import":"/engine/assets/rig/JointLimits.js","sourceHash":"819bd4dca674bea5ddf92ad8d79541ce11cac04ec5c02ed31ff5cefc0d03f49f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/JointLimits.js#0003:deriveHingeLimit","exportIndex":3,"name":"deriveHingeLimit","kind":"function","signature":"deriveHingeLimit(prof)","summary":"Hinge bend-range (degrees). By Life's hinge convention this value is carried in the profile's `twist` field (a hinge drives one axis), so this is semantically distinct from `deriveTwistLimit` even though both read the same underlying number for a hinge profile."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/JointLimits.md","moduleTitle":"assets/rig/JointLimits","source":"engine/assets/rig/JointLimits.js","import":"/engine/assets/rig/JointLimits.js","sourceHash":"819bd4dca674bea5ddf92ad8d79541ce11cac04ec5c02ed31ff5cefc0d03f49f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/JointLimits.js#0004:deriveTwistLimit","exportIndex":4,"name":"deriveTwistLimit","kind":"function","signature":"deriveTwistLimit(prof)","summary":"Twist limit (degrees) for a non-hinge (ball/saddle/twist) profile."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/JointLimits.md","moduleTitle":"assets/rig/JointLimits","source":"engine/assets/rig/JointLimits.js","import":"/engine/assets/rig/JointLimits.js","sourceHash":"819bd4dca674bea5ddf92ad8d79541ce11cac04ec5c02ed31ff5cefc0d03f49f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/JointLimits.js#0005:mirrorLeftRightLimits","exportIndex":5,"name":"mirrorLeftRightLimits","kind":"function","signature":"mirrorLeftRightLimits(leftLimit, rightLimit)","summary":"Verify (and defensively enforce) left/right symmetry between two derived limits — swing/twist degrees must match (anatomy is bilaterally symmetric); axes are expected to differ (mirrored bind-pose geometry) and are left untouched. Explicit, testable version of the symmetry `profileFor()` already guarantees implicitly by stripping the left/right prefix before profile lookup."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/JointLimits.md","moduleTitle":"assets/rig/JointLimits","source":"engine/assets/rig/JointLimits.js","import":"/engine/assets/rig/JointLimits.js","sourceHash":"819bd4dca674bea5ddf92ad8d79541ce11cac04ec5c02ed31ff5cefc0d03f49f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/JointLimits.js#0006:inferDriveType","exportIndex":6,"name":"inferDriveType","kind":"function","signature":"inferDriveType(name = '')","summary":"Infer a coarse drive role (neck/shoulder/elbow/wrist/spineUpper/pelvis/hip/ knee/ankle/toe/default) from a bone/slot name via string matching. Shared so RagdollBuilder, CharacterPhysicsAsset, and future adapters don't each reimplement this heuristic independently."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/JointLimits.md","moduleTitle":"assets/rig/JointLimits","source":"engine/assets/rig/JointLimits.js","import":"/engine/assets/rig/JointLimits.js","sourceHash":"819bd4dca674bea5ddf92ad8d79541ce11cac04ec5c02ed31ff5cefc0d03f49f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/JointLimits.js#0007:deriveHumanoidJointLimits","exportIndex":7,"name":"deriveHumanoidJointLimits","kind":"function","signature":"deriveHumanoidJointLimits(model, pose)","summary":"Derive joint limits for a humanoid rig."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/JointLimits.md","moduleTitle":"assets/rig/JointLimits","source":"engine/assets/rig/JointLimits.js","import":"/engine/assets/rig/JointLimits.js","sourceHash":"819bd4dca674bea5ddf92ad8d79541ce11cac04ec5c02ed31ff5cefc0d03f49f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/JointLimits.js#0008:deriveSkeletonJointLimits","exportIndex":8,"name":"deriveSkeletonJointLimits","kind":"function","signature":"deriveSkeletonJointLimits(model, pose)","summary":"Derive joint limits for ANY skeleton by topology + geometry (spiders, dogs, cats, birds…). No names required."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/JointLimits.md","moduleTitle":"assets/rig/JointLimits","source":"engine/assets/rig/JointLimits.js","import":"/engine/assets/rig/JointLimits.js","sourceHash":"819bd4dca674bea5ddf92ad8d79541ce11cac04ec5c02ed31ff5cefc0d03f49f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/JointLimits.js#0009:validJointTypeSet","exportIndex":9,"name":"validJointTypeSet","kind":"function","signature":"validJointTypeSet()","summary":"The set of valid joint-type strings (`root`/`ball`/`hinge`/`saddle`/`twist`/ `fixed`) as a `Set`, for membership checks — single source of truth so a validator never hand-declares its own copy that can silently drift from `JOINT_TYPE` (this is exactly how `CharacterPhysicsAsset.js` and Life's `BodySpecValidator.js` used to each keep their own disconnected copy)."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/JointLimits.md","moduleTitle":"assets/rig/JointLimits","source":"engine/assets/rig/JointLimits.js","import":"/engine/assets/rig/JointLimits.js","sourceHash":"819bd4dca674bea5ddf92ad8d79541ce11cac04ec5c02ed31ff5cefc0d03f49f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/JointLimits.js#0010:validateBoneTopology","exportIndex":10,"name":"validateBoneTopology","kind":"function","signature":"validateBoneTopology(bones)","summary":"Shared bone-topology structural validation — the literally-duplicated core every ragdoll/body validator needs (bone id uniqueness, parent-reference resolution), extracted once so `CharacterPhysicsAsset.validateCharacterPhysicsAsset` and Life's `BodySpecValidator.validateBodyTemplate` can never silently drift apart on these checks again. Each caller still owns its own shape-specific checks (mass/position for CharacterPhysicsAsset; anatomy/ligaments/skeleton extensions for Life)."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/JointLimits.md","moduleTitle":"assets/rig/JointLimits","source":"engine/assets/rig/JointLimits.js","import":"/engine/assets/rig/JointLimits.js","sourceHash":"819bd4dca674bea5ddf92ad8d79541ce11cac04ec5c02ed31ff5cefc0d03f49f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/JointLimits.js#0011:countTypes","exportIndex":11,"name":"countTypes","kind":"function","signature":"countTypes(limits)","summary":"Count joint types in a limit map (for inspectors/gates)."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/JointLimits.md","moduleTitle":"assets/rig/JointLimits","source":"engine/assets/rig/JointLimits.js","import":"/engine/assets/rig/JointLimits.js","sourceHash":"819bd4dca674bea5ddf92ad8d79541ce11cac04ec5c02ed31ff5cefc0d03f49f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/JointLimits.js#0012:buildJointLimits","exportIndex":12,"name":"buildJointLimits","kind":"function","signature":"buildJointLimits(model, opts = {})","summary":"Auto-derive and attach joint limits to a model. Humanoid path when a humanoid rig is present, otherwise generic topology inference."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/JointLimits.md","moduleTitle":"assets/rig/JointLimits","source":"engine/assets/rig/JointLimits.js","import":"/engine/assets/rig/JointLimits.js","sourceHash":"819bd4dca674bea5ddf92ad8d79541ce11cac04ec5c02ed31ff5cefc0d03f49f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/JointLimits.js#0013:JOINT_TYPE","exportIndex":13,"name":"JOINT_TYPE","kind":"constant","signature":"JOINT_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/JointLimits.md","moduleTitle":"assets/rig/JointLimits","source":"engine/assets/rig/JointLimits.js","import":"/engine/assets/rig/JointLimits.js","sourceHash":"819bd4dca674bea5ddf92ad8d79541ce11cac04ec5c02ed31ff5cefc0d03f49f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/JointLimits.js#0014:deriveBendDirection","exportIndex":14,"name":"deriveBendDirection","kind":"constant","signature":"deriveBendDirection","summary":"Alias for `hingeAxis` — the joint bend-direction deriver, named for the generic \"derive*\" family used by RagdollBuilder/CharacterPhysicsAsset."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/RagdollBuilder.md","moduleTitle":"assets/rig/RagdollBuilder","source":"engine/assets/rig/RagdollBuilder.js","import":"/engine/assets/rig/RagdollBuilder.js","sourceHash":"3219bdafb093ddd462650abca51bc7748628095090a714c9b82280a633174cbc","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/rig/RagdollBuilder.js","title":"assets/rig/RagdollBuilder","summary":"engine/assets/rig/RagdollBuilder.js — turn a detected skeleton + auto-derived joint limits into a RAGDOLL descriptor: one capsule body per bone (sized from the bone length, mass from its volume) plus a constrained joint to its parent using the JointLimits type + swing/twist + bend axis. Pure data (no physics engine here) so it can drive `sim/physics/PBDRagdoll` / articulations or the editor's ragdoll. Works for humanoids (canonical bones, incl. healed ones) and for any creature via generic topology. GPU-free + deterministic.","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/RagdollBuilder.md","moduleTitle":"assets/rig/RagdollBuilder","source":"engine/assets/rig/RagdollBuilder.js","import":"/engine/assets/rig/RagdollBuilder.js","sourceHash":"3219bdafb093ddd462650abca51bc7748628095090a714c9b82280a633174cbc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/RagdollBuilder.js#0000:radiusRatio","exportIndex":0,"name":"radiusRatio","kind":"function","signature":"radiusRatio(slot)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/RagdollBuilder.md","moduleTitle":"assets/rig/RagdollBuilder","source":"engine/assets/rig/RagdollBuilder.js","import":"/engine/assets/rig/RagdollBuilder.js","sourceHash":"3219bdafb093ddd462650abca51bc7748628095090a714c9b82280a633174cbc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/RagdollBuilder.js#0001:buildHumanoidRagdoll","exportIndex":1,"name":"buildHumanoidRagdoll","kind":"function","signature":"buildHumanoidRagdoll(model, rig, pose, opts = {})","summary":"Build a ragdoll from a humanoid rig (canonical bones, including healed ones)."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/RagdollBuilder.md","moduleTitle":"assets/rig/RagdollBuilder","source":"engine/assets/rig/RagdollBuilder.js","import":"/engine/assets/rig/RagdollBuilder.js","sourceHash":"3219bdafb093ddd462650abca51bc7748628095090a714c9b82280a633174cbc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/RagdollBuilder.js#0002:buildGenericRagdoll","exportIndex":2,"name":"buildGenericRagdoll","kind":"function","signature":"buildGenericRagdoll(model, pose, opts = {})","summary":"Build a ragdoll from any skeleton by generic topology (spiders, dogs, …)."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/RagdollBuilder.md","moduleTitle":"assets/rig/RagdollBuilder","source":"engine/assets/rig/RagdollBuilder.js","import":"/engine/assets/rig/RagdollBuilder.js","sourceHash":"3219bdafb093ddd462650abca51bc7748628095090a714c9b82280a633174cbc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/RagdollBuilder.js#0003:buildRagdoll","exportIndex":3,"name":"buildRagdoll","kind":"function","signature":"buildRagdoll(model, opts = {})","summary":"Build a ragdoll for a model and attach it at model.rigs.ragdoll. Humanoid path when a humanoid rig is present, otherwise generic topology."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/RagdollSim.md","moduleTitle":"assets/rig/RagdollSim","source":"engine/assets/rig/RagdollSim.js","import":"/engine/assets/rig/RagdollSim.js","sourceHash":"ba132a2e83b14009e3b87c7ed76badd6e5235926dab036135d4fe07990219f54","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/rig/RagdollSim.js","title":"assets/rig/RagdollSim","summary":"engine/assets/rig/RagdollSim.js — a tiny, GENERIC Verlet/PBD ragdoll runtime that simulates ANY ragdoll descriptor from RagdollBuilder (humanoid, creature, healed/mirrored limbs). Each bone joint is a particle; each bone is a distance constraint to its parent (Jakobsen \"Advanced Character Physics\"). Gravity + ground + a few constraint iterations give a stable, believable flop with no dependency on a fixed humanoid template. Pure JS / deterministic / GPU-free.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/RagdollSim.md","moduleTitle":"assets/rig/RagdollSim","source":"engine/assets/rig/RagdollSim.js","import":"/engine/assets/rig/RagdollSim.js","sourceHash":"ba132a2e83b14009e3b87c7ed76badd6e5235926dab036135d4fe07990219f54","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/RagdollSim.js#0000:createRagdollSim","exportIndex":0,"name":"createRagdollSim","kind":"function","signature":"createRagdollSim(ragdoll, opts = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/RagdollSkinning.md","moduleTitle":"assets/rig/RagdollSkinning","source":"engine/assets/rig/RagdollSkinning.js","import":"/engine/assets/rig/RagdollSkinning.js","sourceHash":"9be76ff7d4c494127670641cef62879a6e58a2c8df98363482c8bb5b370af5fe","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/rig/RagdollSkinning.js","title":"assets/rig/RagdollSkinning","summary":"engine/assets/rig/RagdollSkinning.js — make the live MESH follow a ragdoll.  The ragdoll sim (RagdollSim) only moves joint POSITIONS. To deform the skinned mesh with it we need a per-joint world transform. We build a ragdoll over the model's actual SKIN JOINTS (1:1 with the skin's joint slots, so vertex skin weights index straight into it) and, each frame, derive a per-bone rotation from the rest→current bone direction. Skinning is then the standard linear blend in SCENE space (the renderer applies importMatrix afterwards):  v' = Σ wⱼ · ( Rⱼ · (v − bindPosⱼ) + curPosⱼ )  At the bind pose Rⱼ=I and curPos=bindPos, so v'=v (the baked mesh). This needs no inverse-bind matrices because jointBindWorld·IBM = I per joint. Pure JS.","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/RagdollSkinning.md","moduleTitle":"assets/rig/RagdollSkinning","source":"engine/assets/rig/RagdollSkinning.js","import":"/engine/assets/rig/RagdollSkinning.js","sourceHash":"9be76ff7d4c494127670641cef62879a6e58a2c8df98363482c8bb5b370af5fe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/RagdollSkinning.js#0000:buildSkinnedRagdoll","exportIndex":0,"name":"buildSkinnedRagdoll","kind":"function","signature":"buildSkinnedRagdoll(model, opts = {})","summary":"Build a ragdoll over a model's skin joints (1:1 with skin slot indices) and a sim for it. Joint limits come from the humanoid rig where mapped, else generic topology. Returns null when the model has no skin to drive."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/RagdollSkinning.md","moduleTitle":"assets/rig/RagdollSkinning","source":"engine/assets/rig/RagdollSkinning.js","import":"/engine/assets/rig/RagdollSkinning.js","sourceHash":"9be76ff7d4c494127670641cef62879a6e58a2c8df98363482c8bb5b370af5fe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/RagdollSkinning.js#0001:ragdollBoneFrames","exportIndex":1,"name":"ragdollBoneFrames","kind":"function","signature":"ragdollBoneFrames(state)","summary":"Per-bone frames for the current sim state: rotation (3×3 row-major), current position, and bind position. Bones with no child inherit their parent's rotation (so leaf verts swing with the limb)."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/RagdollSkinning.md","moduleTitle":"assets/rig/RagdollSkinning","source":"engine/assets/rig/RagdollSkinning.js","import":"/engine/assets/rig/RagdollSkinning.js","sourceHash":"9be76ff7d4c494127670641cef62879a6e58a2c8df98363482c8bb5b370af5fe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/RagdollSkinning.js#0002:skinPrimitiveInterleaved","exportIndex":2,"name":"skinPrimitiveInterleaved","kind":"function","signature":"skinPrimitiveInterleaved(prim, frames, jointCount, outInterleaved)","summary":"Linear-blend skin a primitive into a standard interleaved [pos3,nrm3,uv2] buffer (UVs at o+6/o+7 are left untouched). Writes scene-space positions so the renderer's importMatrix lands them correctly. Mutates + returns `outInterleaved`."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/RagdollSkinning.md","moduleTitle":"assets/rig/RagdollSkinning","source":"engine/assets/rig/RagdollSkinning.js","import":"/engine/assets/rig/RagdollSkinning.js","sourceHash":"9be76ff7d4c494127670641cef62879a6e58a2c8df98363482c8bb5b370af5fe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/RagdollSkinning.js#0003:logSkinnedRagdoll","exportIndex":3,"name":"logSkinnedRagdoll","kind":"function","signature":"logSkinnedRagdoll(state, logFn)","summary":"One-time STATIC report of a built ragdoll: every joint's type + auto-detected limits, and the full constraint breakdown (bone sticks, hub bracing, ROM, signed hinges, swing cones). Prints rich console.tables when available; always returns a one-line summary string (also handed to `logFn` for the in-app console)."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/RagdollSkinning.md","moduleTitle":"assets/rig/RagdollSkinning","source":"engine/assets/rig/RagdollSkinning.js","import":"/engine/assets/rig/RagdollSkinning.js","sourceHash":"9be76ff7d4c494127670641cef62879a6e58a2c8df98363482c8bb5b370af5fe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/RagdollSkinning.js#0004:ragdollDebugStats","exportIndex":4,"name":"ragdollDebugStats","kind":"function","signature":"ragdollDebugStats(state)","summary":"LIVE per-frame measurement: each hinge's current bend, each cone's current swing, and each ROM constraint's grandparent distance — all vs their limits, with an `ok` flag. Use it to PROVE the limits hold during simulation (and to spot violations)."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ActiveBodyFallbackReport.md","moduleTitle":"assets/rig/active-body/ActiveBodyFallbackReport","source":"engine/assets/rig/active-body/ActiveBodyFallbackReport.js","import":"/engine/assets/rig/active-body/ActiveBodyFallbackReport.js","sourceHash":"ef39b05df9c3da010ba3d8e74cda5a24939a294606394fbb186a14c62b6d3f75","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/rig/active-body/ActiveBodyFallbackReport.js","title":"assets/rig/active-body/ActiveBodyFallbackReport","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ActiveBodyFallbackReport.md","moduleTitle":"assets/rig/active-body/ActiveBodyFallbackReport","source":"engine/assets/rig/active-body/ActiveBodyFallbackReport.js","import":"/engine/assets/rig/active-body/ActiveBodyFallbackReport.js","sourceHash":"ef39b05df9c3da010ba3d8e74cda5a24939a294606394fbb186a14c62b6d3f75","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ActiveBodyFallbackReport.js#0000:getActiveBodyFallbackReport","exportIndex":0,"name":"getActiveBodyFallbackReport","kind":"function","signature":"getActiveBodyFallbackReport(gpu = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ActiveBodyFallbackReport.md","moduleTitle":"assets/rig/active-body/ActiveBodyFallbackReport","source":"engine/assets/rig/active-body/ActiveBodyFallbackReport.js","import":"/engine/assets/rig/active-body/ActiveBodyFallbackReport.js","sourceHash":"ef39b05df9c3da010ba3d8e74cda5a24939a294606394fbb186a14c62b6d3f75","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ActiveBodyFallbackReport.js#0001:isActiveBodyFallbackReportOk","exportIndex":1,"name":"isActiveBodyFallbackReportOk","kind":"function","signature":"isActiveBodyFallbackReportOk(report)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ActiveBodyPerformanceBudgets.md","moduleTitle":"assets/rig/active-body/ActiveBodyPerformanceBudgets","source":"engine/assets/rig/active-body/ActiveBodyPerformanceBudgets.js","import":"/engine/assets/rig/active-body/ActiveBodyPerformanceBudgets.js","sourceHash":"3a407693a4d638e03264838e2dc1dff7f408b90033a6b84862168604789c078e","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/rig/active-body/ActiveBodyPerformanceBudgets.js","title":"assets/rig/active-body/ActiveBodyPerformanceBudgets","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ActiveBodyPerformanceBudgets.md","moduleTitle":"assets/rig/active-body/ActiveBodyPerformanceBudgets","source":"engine/assets/rig/active-body/ActiveBodyPerformanceBudgets.js","import":"/engine/assets/rig/active-body/ActiveBodyPerformanceBudgets.js","sourceHash":"3a407693a4d638e03264838e2dc1dff7f408b90033a6b84862168604789c078e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ActiveBodyPerformanceBudgets.js#0000:getActiveBodyPerformanceBudgetReport","exportIndex":0,"name":"getActiveBodyPerformanceBudgetReport","kind":"function","signature":"getActiveBodyPerformanceBudgetReport(bodyCount = 0, measurements = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ActiveBodyPerformanceBudgets.md","moduleTitle":"assets/rig/active-body/ActiveBodyPerformanceBudgets","source":"engine/assets/rig/active-body/ActiveBodyPerformanceBudgets.js","import":"/engine/assets/rig/active-body/ActiveBodyPerformanceBudgets.js","sourceHash":"3a407693a4d638e03264838e2dc1dff7f408b90033a6b84862168604789c078e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ActiveBodyPerformanceBudgets.js#0001:ACTIVE_BODY_PERFORMANCE_BUDGETS","exportIndex":1,"name":"ACTIVE_BODY_PERFORMANCE_BUDGETS","kind":"constant","signature":"ACTIVE_BODY_PERFORMANCE_BUDGETS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ActiveBodyRigBuilder.md","moduleTitle":"assets/rig/active-body/ActiveBodyRigBuilder","source":"engine/assets/rig/active-body/ActiveBodyRigBuilder.js","import":"/engine/assets/rig/active-body/ActiveBodyRigBuilder.js","sourceHash":"351fc559a428de447b5d1fe7be25cbec2ddd29e6c502602571a5547ce2cd682c","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/rig/active-body/ActiveBodyRigBuilder.js","title":"assets/rig/active-body/ActiveBodyRigBuilder","summary":"HumanoidRigBuilder — Builds a physics-ready humanoid rig (skeleton, bodies, joints, mass profile, drive profile) from entity phenotype data. Produces a StickmanRagdoll-compatible component that ActiveBodySystem can spawn as a PhysX articulation via the engine's ActiveRigController. Moved from editor/people-preview/PeoplePhenotypeRig.js into the game simulation layer so any game entity can have an active body.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ActiveBodyRigBuilder.md","moduleTitle":"assets/rig/active-body/ActiveBodyRigBuilder","source":"engine/assets/rig/active-body/ActiveBodyRigBuilder.js","import":"/engine/assets/rig/active-body/ActiveBodyRigBuilder.js","sourceHash":"351fc559a428de447b5d1fe7be25cbec2ddd29e6c502602571a5547ce2cd682c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ActiveBodyRigBuilder.js#0000:buildHumanoidRig","exportIndex":0,"name":"buildHumanoidRig","kind":"function","signature":"buildHumanoidRig(config)","summary":"Build a complete humanoid rig from entity data."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ActiveBodyRigBuilder.md","moduleTitle":"assets/rig/active-body/ActiveBodyRigBuilder","source":"engine/assets/rig/active-body/ActiveBodyRigBuilder.js","import":"/engine/assets/rig/active-body/ActiveBodyRigBuilder.js","sourceHash":"351fc559a428de447b5d1fe7be25cbec2ddd29e6c502602571a5547ce2cd682c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ActiveBodyRigBuilder.js#0001:buildActiveBodyPayload","exportIndex":1,"name":"buildActiveBodyPayload","kind":"function","signature":"buildActiveBodyPayload(config, worldPosition = [0, 0, 0])","summary":"Build a spawn-ready payload for ActiveBodySystem."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ActiveBodySimulationTiers.md","moduleTitle":"assets/rig/active-body/ActiveBodySimulationTiers","source":"engine/assets/rig/active-body/ActiveBodySimulationTiers.js","import":"/engine/assets/rig/active-body/ActiveBodySimulationTiers.js","sourceHash":"72bfa79a52952a11c5945d8777811a8e8b218c34ae09d8dbf4885400d96d1b76","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/rig/active-body/ActiveBodySimulationTiers.js","title":"assets/rig/active-body/ActiveBodySimulationTiers","summary":"","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ActiveBodySimulationTiers.md","moduleTitle":"assets/rig/active-body/ActiveBodySimulationTiers","source":"engine/assets/rig/active-body/ActiveBodySimulationTiers.js","import":"/engine/assets/rig/active-body/ActiveBodySimulationTiers.js","sourceHash":"72bfa79a52952a11c5945d8777811a8e8b218c34ae09d8dbf4885400d96d1b76","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ActiveBodySimulationTiers.js#0000:classifyActiveBodySimulationTier","exportIndex":0,"name":"classifyActiveBodySimulationTier","kind":"function","signature":"classifyActiveBodySimulationTier(input = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ActiveBodySimulationTiers.md","moduleTitle":"assets/rig/active-body/ActiveBodySimulationTiers","source":"engine/assets/rig/active-body/ActiveBodySimulationTiers.js","import":"/engine/assets/rig/active-body/ActiveBodySimulationTiers.js","sourceHash":"72bfa79a52952a11c5945d8777811a8e8b218c34ae09d8dbf4885400d96d1b76","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ActiveBodySimulationTiers.js#0001:buildActiveBodySimulationTierReport","exportIndex":1,"name":"buildActiveBodySimulationTierReport","kind":"function","signature":"buildActiveBodySimulationTierReport(bodies = [], observer = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ActiveBodySimulationTiers.md","moduleTitle":"assets/rig/active-body/ActiveBodySimulationTiers","source":"engine/assets/rig/active-body/ActiveBodySimulationTiers.js","import":"/engine/assets/rig/active-body/ActiveBodySimulationTiers.js","sourceHash":"72bfa79a52952a11c5945d8777811a8e8b218c34ae09d8dbf4885400d96d1b76","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ActiveBodySimulationTiers.js#0002:estimateActiveBodyImportance","exportIndex":2,"name":"estimateActiveBodyImportance","kind":"function","signature":"estimateActiveBodyImportance(body = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ActiveBodySimulationTiers.md","moduleTitle":"assets/rig/active-body/ActiveBodySimulationTiers","source":"engine/assets/rig/active-body/ActiveBodySimulationTiers.js","import":"/engine/assets/rig/active-body/ActiveBodySimulationTiers.js","sourceHash":"72bfa79a52952a11c5945d8777811a8e8b218c34ae09d8dbf4885400d96d1b76","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ActiveBodySimulationTiers.js#0003:ACTIVE_BODY_SIMULATION_TIERS","exportIndex":3,"name":"ACTIVE_BODY_SIMULATION_TIERS","kind":"constant","signature":"ACTIVE_BODY_SIMULATION_TIERS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ActiveBodySystem.md","moduleTitle":"assets/rig/active-body/ActiveBodySystem","source":"engine/assets/rig/active-body/ActiveBodySystem.js","import":"/engine/assets/rig/active-body/ActiveBodySystem.js","sourceHash":"dc2f6aafc210a72158a2ffd494413d8d619d31907bc92d48cdcf51784100bfd3","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/rig/active-body/ActiveBodySystem.js","title":"assets/rig/active-body/ActiveBodySystem","summary":"","exportCount":24}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ActiveBodySystem.md","moduleTitle":"assets/rig/active-body/ActiveBodySystem","source":"engine/assets/rig/active-body/ActiveBodySystem.js","import":"/engine/assets/rig/active-body/ActiveBodySystem.js","sourceHash":"dc2f6aafc210a72158a2ffd494413d8d619d31907bc92d48cdcf51784100bfd3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ActiveBodySystem.js#0000:ActiveBodySystem","exportIndex":0,"name":"ActiveBodySystem","kind":"class","signature":"class ActiveBodySystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ActiveBodySystem.md","moduleTitle":"assets/rig/active-body/ActiveBodySystem","source":"engine/assets/rig/active-body/ActiveBodySystem.js","import":"/engine/assets/rig/active-body/ActiveBodySystem.js","sourceHash":"dc2f6aafc210a72158a2ffd494413d8d619d31907bc92d48cdcf51784100bfd3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ActiveBodySystem.js#0001:BONE_NAMES","exportIndex":1,"name":"BONE_NAMES","kind":"re-export","signature":"BONE_NAMES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ActiveBodySystem.md","moduleTitle":"assets/rig/active-body/ActiveBodySystem","source":"engine/assets/rig/active-body/ActiveBodySystem.js","import":"/engine/assets/rig/active-body/ActiveBodySystem.js","sourceHash":"dc2f6aafc210a72158a2ffd494413d8d619d31907bc92d48cdcf51784100bfd3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ActiveBodySystem.js#0002:buildDirectionDiagnostics","exportIndex":2,"name":"buildDirectionDiagnostics","kind":"re-export","signature":"buildDirectionDiagnostics","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ActiveBodySystem.md","moduleTitle":"assets/rig/active-body/ActiveBodySystem","source":"engine/assets/rig/active-body/ActiveBodySystem.js","import":"/engine/assets/rig/active-body/ActiveBodySystem.js","sourceHash":"dc2f6aafc210a72158a2ffd494413d8d619d31907bc92d48cdcf51784100bfd3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ActiveBodySystem.js#0003:clamp01","exportIndex":3,"name":"clamp01","kind":"re-export","signature":"clamp01","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ActiveBodySystem.md","moduleTitle":"assets/rig/active-body/ActiveBodySystem","source":"engine/assets/rig/active-body/ActiveBodySystem.js","import":"/engine/assets/rig/active-body/ActiveBodySystem.js","sourceHash":"dc2f6aafc210a72158a2ffd494413d8d619d31907bc92d48cdcf51784100bfd3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ActiveBodySystem.js#0004:clampSigned","exportIndex":4,"name":"clampSigned","kind":"re-export","signature":"clampSigned","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ActiveBodySystem.md","moduleTitle":"assets/rig/active-body/ActiveBodySystem","source":"engine/assets/rig/active-body/ActiveBodySystem.js","import":"/engine/assets/rig/active-body/ActiveBodySystem.js","sourceHash":"dc2f6aafc210a72158a2ffd494413d8d619d31907bc92d48cdcf51784100bfd3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ActiveBodySystem.js#0005:computeSignedAngleOnHorizontal","exportIndex":5,"name":"computeSignedAngleOnHorizontal","kind":"re-export","signature":"computeSignedAngleOnHorizontal","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ActiveBodySystem.md","moduleTitle":"assets/rig/active-body/ActiveBodySystem","source":"engine/assets/rig/active-body/ActiveBodySystem.js","import":"/engine/assets/rig/active-body/ActiveBodySystem.js","sourceHash":"dc2f6aafc210a72158a2ffd494413d8d619d31907bc92d48cdcf51784100bfd3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ActiveBodySystem.js#0006:copyFunctionalSensorAnchor","exportIndex":6,"name":"copyFunctionalSensorAnchor","kind":"re-export","signature":"copyFunctionalSensorAnchor","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ActiveBodySystem.md","moduleTitle":"assets/rig/active-body/ActiveBodySystem","source":"engine/assets/rig/active-body/ActiveBodySystem.js","import":"/engine/assets/rig/active-body/ActiveBodySystem.js","sourceHash":"dc2f6aafc210a72158a2ffd494413d8d619d31907bc92d48cdcf51784100bfd3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ActiveBodySystem.js#0007:estimateAverageFatigue","exportIndex":7,"name":"estimateAverageFatigue","kind":"re-export","signature":"estimateAverageFatigue","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ActiveBodySystem.md","moduleTitle":"assets/rig/active-body/ActiveBodySystem","source":"engine/assets/rig/active-body/ActiveBodySystem.js","import":"/engine/assets/rig/active-body/ActiveBodySystem.js","sourceHash":"dc2f6aafc210a72158a2ffd494413d8d619d31907bc92d48cdcf51784100bfd3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ActiveBodySystem.js#0008:groundYFromFoot","exportIndex":8,"name":"groundYFromFoot","kind":"re-export","signature":"groundYFromFoot","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ActiveBodySystem.md","moduleTitle":"assets/rig/active-body/ActiveBodySystem","source":"engine/assets/rig/active-body/ActiveBodySystem.js","import":"/engine/assets/rig/active-body/ActiveBodySystem.js","sourceHash":"dc2f6aafc210a72158a2ffd494413d8d619d31907bc92d48cdcf51784100bfd3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ActiveBodySystem.js#0009:makeBalanceState","exportIndex":9,"name":"makeBalanceState","kind":"re-export","signature":"makeBalanceState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ActiveBodySystem.md","moduleTitle":"assets/rig/active-body/ActiveBodySystem","source":"engine/assets/rig/active-body/ActiveBodySystem.js","import":"/engine/assets/rig/active-body/ActiveBodySystem.js","sourceHash":"dc2f6aafc210a72158a2ffd494413d8d619d31907bc92d48cdcf51784100bfd3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ActiveBodySystem.js#0010:normalizePhase01","exportIndex":10,"name":"normalizePhase01","kind":"re-export","signature":"normalizePhase01","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ActiveBodySystem.md","moduleTitle":"assets/rig/active-body/ActiveBodySystem","source":"engine/assets/rig/active-body/ActiveBodySystem.js","import":"/engine/assets/rig/active-body/ActiveBodySystem.js","sourceHash":"dc2f6aafc210a72158a2ffd494413d8d619d31907bc92d48cdcf51784100bfd3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ActiveBodySystem.js#0011:normalizeRadians","exportIndex":11,"name":"normalizeRadians","kind":"re-export","signature":"normalizeRadians","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ActiveBodySystem.md","moduleTitle":"assets/rig/active-body/ActiveBodySystem","source":"engine/assets/rig/active-body/ActiveBodySystem.js","import":"/engine/assets/rig/active-body/ActiveBodySystem.js","sourceHash":"dc2f6aafc210a72158a2ffd494413d8d619d31907bc92d48cdcf51784100bfd3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ActiveBodySystem.js#0012:organStatusColor","exportIndex":12,"name":"organStatusColor","kind":"re-export","signature":"organStatusColor","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ActiveBodySystem.md","moduleTitle":"assets/rig/active-body/ActiveBodySystem","source":"engine/assets/rig/active-body/ActiveBodySystem.js","import":"/engine/assets/rig/active-body/ActiveBodySystem.js","sourceHash":"dc2f6aafc210a72158a2ffd494413d8d619d31907bc92d48cdcf51784100bfd3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ActiveBodySystem.js#0013:percentSignal","exportIndex":13,"name":"percentSignal","kind":"re-export","signature":"percentSignal","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ActiveBodySystem.md","moduleTitle":"assets/rig/active-body/ActiveBodySystem","source":"engine/assets/rig/active-body/ActiveBodySystem.js","import":"/engine/assets/rig/active-body/ActiveBodySystem.js","sourceHash":"dc2f6aafc210a72158a2ffd494413d8d619d31907bc92d48cdcf51784100bfd3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ActiveBodySystem.js#0014:radiansToDebugDegrees","exportIndex":14,"name":"radiansToDebugDegrees","kind":"re-export","signature":"radiansToDebugDegrees","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ActiveBodySystem.md","moduleTitle":"assets/rig/active-body/ActiveBodySystem","source":"engine/assets/rig/active-body/ActiveBodySystem.js","import":"/engine/assets/rig/active-body/ActiveBodySystem.js","sourceHash":"dc2f6aafc210a72158a2ffd494413d8d619d31907bc92d48cdcf51784100bfd3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ActiveBodySystem.js#0015:resolveFunctionalSensorAnchors","exportIndex":15,"name":"resolveFunctionalSensorAnchors","kind":"re-export","signature":"resolveFunctionalSensorAnchors","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ActiveBodySystem.md","moduleTitle":"assets/rig/active-body/ActiveBodySystem","source":"engine/assets/rig/active-body/ActiveBodySystem.js","import":"/engine/assets/rig/active-body/ActiveBodySystem.js","sourceHash":"dc2f6aafc210a72158a2ffd494413d8d619d31907bc92d48cdcf51784100bfd3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ActiveBodySystem.js#0016:round4","exportIndex":16,"name":"round4","kind":"re-export","signature":"round4","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ActiveBodySystem.md","moduleTitle":"assets/rig/active-body/ActiveBodySystem","source":"engine/assets/rig/active-body/ActiveBodySystem.js","import":"/engine/assets/rig/active-body/ActiveBodySystem.js","sourceHash":"dc2f6aafc210a72158a2ffd494413d8d619d31907bc92d48cdcf51784100bfd3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ActiveBodySystem.js#0017:setParticleVelocity","exportIndex":17,"name":"setParticleVelocity","kind":"re-export","signature":"setParticleVelocity","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ActiveBodySystem.md","moduleTitle":"assets/rig/active-body/ActiveBodySystem","source":"engine/assets/rig/active-body/ActiveBodySystem.js","import":"/engine/assets/rig/active-body/ActiveBodySystem.js","sourceHash":"dc2f6aafc210a72158a2ffd494413d8d619d31907bc92d48cdcf51784100bfd3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ActiveBodySystem.js#0018:signedAngularDelta","exportIndex":18,"name":"signedAngularDelta","kind":"re-export","signature":"signedAngularDelta","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ActiveBodySystem.md","moduleTitle":"assets/rig/active-body/ActiveBodySystem","source":"engine/assets/rig/active-body/ActiveBodySystem.js","import":"/engine/assets/rig/active-body/ActiveBodySystem.js","sourceHash":"dc2f6aafc210a72158a2ffd494413d8d619d31907bc92d48cdcf51784100bfd3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ActiveBodySystem.js#0019:slewRadians","exportIndex":19,"name":"slewRadians","kind":"re-export","signature":"slewRadians","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ActiveBodySystem.md","moduleTitle":"assets/rig/active-body/ActiveBodySystem","source":"engine/assets/rig/active-body/ActiveBodySystem.js","import":"/engine/assets/rig/active-body/ActiveBodySystem.js","sourceHash":"dc2f6aafc210a72158a2ffd494413d8d619d31907bc92d48cdcf51784100bfd3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ActiveBodySystem.js#0020:supportCenter","exportIndex":20,"name":"supportCenter","kind":"re-export","signature":"supportCenter","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ActiveBodySystem.md","moduleTitle":"assets/rig/active-body/ActiveBodySystem","source":"engine/assets/rig/active-body/ActiveBodySystem.js","import":"/engine/assets/rig/active-body/ActiveBodySystem.js","sourceHash":"dc2f6aafc210a72158a2ffd494413d8d619d31907bc92d48cdcf51784100bfd3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ActiveBodySystem.js#0021:unitSignal","exportIndex":21,"name":"unitSignal","kind":"re-export","signature":"unitSignal","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ActiveBodySystem.md","moduleTitle":"assets/rig/active-body/ActiveBodySystem","source":"engine/assets/rig/active-body/ActiveBodySystem.js","import":"/engine/assets/rig/active-body/ActiveBodySystem.js","sourceHash":"dc2f6aafc210a72158a2ffd494413d8d619d31907bc92d48cdcf51784100bfd3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ActiveBodySystem.js#0022:unitSignalDefault","exportIndex":22,"name":"unitSignalDefault","kind":"re-export","signature":"unitSignalDefault","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ActiveBodySystem.md","moduleTitle":"assets/rig/active-body/ActiveBodySystem","source":"engine/assets/rig/active-body/ActiveBodySystem.js","import":"/engine/assets/rig/active-body/ActiveBodySystem.js","sourceHash":"dc2f6aafc210a72158a2ffd494413d8d619d31907bc92d48cdcf51784100bfd3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ActiveBodySystem.js#0023:yawDeg","exportIndex":23,"name":"yawDeg","kind":"re-export","signature":"yawDeg","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/rig/active-body/AnimalLocomotion.js","title":"assets/rig/active-body/AnimalLocomotion","summary":"engine/assets/rig/active-body/AnimalLocomotion.js — extracted from ActiveBodySystem.js (Ragdoll Stack Consolidation Roadmap, Phase 7). Owns the animal (quadruped/ arachnid) active-body path: anatomy spec generation, PBD ragdoll assembly, per-frame locomotion (gait, leg targets, tail, neural residual blending), and animal-only debug tracing. Every function here takes its dependencies as explicit parameters (ragdoll/entry/skeleton/dt/...) — none of them close over ActiveBodySystem module state, so this extraction is a pure move, not a redesign. Shared helpers (contact telemetry, balance, small math/format utils) stay in ActiveBodySystem.js and are imported back here; the reverse (the handful of names ActiveBodySystem.js still calls into, e.g. stepAnimalActiveBody) are exported from here.","exportCount":77}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0000:createAnimalAnatomySpec","exportIndex":0,"name":"createAnimalAnatomySpec","kind":"function","signature":"createAnimalAnatomySpec(skeleton)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0001:createQuadrupedAnatomySpec","exportIndex":1,"name":"createQuadrupedAnatomySpec","kind":"function","signature":"createQuadrupedAnatomySpec(skeleton)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0002:createArachnidAnatomySpec","exportIndex":2,"name":"createArachnidAnatomySpec","kind":"function","signature":"createArachnidAnatomySpec(skeleton)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0003:createAnimalBrainProfile","exportIndex":3,"name":"createAnimalBrainProfile","kind":"function","signature":"createAnimalBrainProfile(skeleton, options = {}, entityId = 'animal')","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0004:cloneAnimalSkeleton","exportIndex":4,"name":"cloneAnimalSkeleton","kind":"function","signature":"cloneAnimalSkeleton(skeleton)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0005:animalVerticalScaleFor","exportIndex":5,"name":"animalVerticalScaleFor","kind":"function","signature":"animalVerticalScaleFor(skeleton, scale = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0006:animalPoseVerticalScale","exportIndex":6,"name":"animalPoseVerticalScale","kind":"function","signature":"animalPoseVerticalScale(entry)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0007:animalLocalToWorldPosition","exportIndex":7,"name":"animalLocalToWorldPosition","kind":"function","signature":"animalLocalToWorldPosition(origin, yaw, scale, local, verticalScale = scale)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0008:createAnimalPbdRagdoll","exportIndex":8,"name":"createAnimalPbdRagdoll","kind":"function","signature":"createAnimalPbdRagdoll(skeleton, worldPosition, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0009:animalParentConstraintStiffness","exportIndex":9,"name":"animalParentConstraintStiffness","kind":"function","signature":"animalParentConstraintStiffness(bone, parent, skeleton)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0010:animalLegSpanConstraintStiffness","exportIndex":10,"name":"animalLegSpanConstraintStiffness","kind":"function","signature":"animalLegSpanConstraintStiffness(skeleton)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0011:computeAnimalStructuralLimits","exportIndex":11,"name":"computeAnimalStructuralLimits","kind":"function","signature":"computeAnimalStructuralLimits(skeleton, boneMap)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0012:animalBoneMass","exportIndex":12,"name":"animalBoneMass","kind":"function","signature":"animalBoneMass(bone, skeleton)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0013:animalBoneRadius","exportIndex":13,"name":"animalBoneRadius","kind":"function","signature":"animalBoneRadius(bone, skeleton, scale)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0014:stepAnimalActiveBody","exportIndex":14,"name":"stepAnimalActiveBody","kind":"function","signature":"stepAnimalActiveBody(entry, dt, groundY = 0, sensors = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0015:resolveAnimalMotion","exportIndex":15,"name":"resolveAnimalMotion","kind":"function","signature":"resolveAnimalMotion(entry, root)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0016:animalGaitPhaseAdvance","exportIndex":16,"name":"animalGaitPhaseAdvance","kind":"function","signature":"animalGaitPhaseAdvance(entry, motion, dt)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0017:animalGaitDriveSpeed","exportIndex":17,"name":"animalGaitDriveSpeed","kind":"function","signature":"animalGaitDriveSpeed(entry, motion)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0018:animalIntendedSpeedScale","exportIndex":18,"name":"animalIntendedSpeedScale","kind":"function","signature":"animalIntendedSpeedScale(entry, motion)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0019:animalMotionForwardVector","exportIndex":19,"name":"animalMotionForwardVector","kind":"function","signature":"animalMotionForwardVector(entry, motion)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0020:animalRootForwardVelocityDot","exportIndex":20,"name":"animalRootForwardVelocityDot","kind":"function","signature":"animalRootForwardVelocityDot(entry, motion)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0021:animalShouldReplantLegsForDirection","exportIndex":21,"name":"animalShouldReplantLegsForDirection","kind":"function","signature":"animalShouldReplantLegsForDirection(entry, motion, moving)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0022:isAnimalDebugTarget","exportIndex":22,"name":"isAnimalDebugTarget","kind":"function","signature":"isAnimalDebugTarget(entry)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0023:logAnimalActiveBodyTrace","exportIndex":23,"name":"logAnimalActiveBodyTrace","kind":"function","signature":"logAnimalActiveBodyTrace(entry, frame, groundY = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0024:animalDebugBodyAxis","exportIndex":24,"name":"animalDebugBodyAxis","kind":"function","signature":"animalDebugBodyAxis(entry)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0025:animalDebugWorstBoneSpeed","exportIndex":25,"name":"animalDebugWorstBoneSpeed","kind":"function","signature":"animalDebugWorstBoneSpeed(entry)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0026:formatAnimalNeuralDebug","exportIndex":26,"name":"formatAnimalNeuralDebug","kind":"function","signature":"formatAnimalNeuralDebug(entry)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0027:formatAnimalDirectionDebug","exportIndex":27,"name":"formatAnimalDirectionDebug","kind":"function","signature":"formatAnimalDirectionDebug(entry)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0028:formatAnimalLegDebug","exportIndex":28,"name":"formatAnimalLegDebug","kind":"function","signature":"formatAnimalLegDebug(entry, groundY = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0029:formatAnimalTailDebug","exportIndex":29,"name":"formatAnimalTailDebug","kind":"function","signature":"formatAnimalTailDebug(entry, groundY = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0030:animalLegDebugLabel","exportIndex":30,"name":"animalLegDebugLabel","kind":"function","signature":"animalLegDebugLabel(descriptor)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0031:signedAnimalYawDeltaDegrees","exportIndex":31,"name":"signedAnimalYawDeltaDegrees","kind":"function","signature":"signedAnimalYawDeltaDegrees(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0032:applyAnimalPoseDrive","exportIndex":32,"name":"applyAnimalPoseDrive","kind":"function","signature":"applyAnimalPoseDrive(entry, dt, groundY, motion)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0033:computeAnimalLegTargets","exportIndex":33,"name":"computeAnimalLegTargets","kind":"function","signature":"computeAnimalLegTargets(entry, root, rootLocal, groundY, motion, basis)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0034:applyAnimalNeuralMotor","exportIndex":34,"name":"applyAnimalNeuralMotor","kind":"function","signature":"applyAnimalNeuralMotor(entry, legTargets, tailTargets, motion, groundY, dt)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0035:animalNeuralTierCap","exportIndex":35,"name":"animalNeuralTierCap","kind":"function","signature":"animalNeuralTierCap(tier)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0036:animalBodyVerticality","exportIndex":36,"name":"animalBodyVerticality","kind":"function","signature":"animalBodyVerticality(entry, groundY = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0037:animalNeuralReward","exportIndex":37,"name":"animalNeuralReward","kind":"function","signature":"animalNeuralReward(entry, motion, currentV, targetV, coreV)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0038:animalNeuralBonesByName","exportIndex":38,"name":"animalNeuralBonesByName","kind":"function","signature":"animalNeuralBonesByName(entry)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0039:animalNeuralTargetAliases","exportIndex":39,"name":"animalNeuralTargetAliases","kind":"function","signature":"animalNeuralTargetAliases(entry, legTargets, tailTargets)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0040:applyAnimalNeuralLegOffsets","exportIndex":40,"name":"applyAnimalNeuralLegOffsets","kind":"function","signature":"applyAnimalNeuralLegOffsets(entry, legTargets, offsets, weight)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0041:animalNeuralOffsetScale","exportIndex":41,"name":"animalNeuralOffsetScale","kind":"function","signature":"animalNeuralOffsetScale(entry, footPlanted)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0042:addAnimalNeuralOffset","exportIndex":42,"name":"addAnimalNeuralOffset","kind":"function","signature":"addAnimalNeuralOffset(target, offsets, alias, weight, footPlanted)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0043:computeAnimalTailTargets","exportIndex":43,"name":"computeAnimalTailTargets","kind":"function","signature":"computeAnimalTailTargets(entry, root, rootLocal, groundY, motion, basis, dt)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0044:resolveAnimalTailAffect","exportIndex":44,"name":"resolveAnimalTailAffect","kind":"function","signature":"resolveAnimalTailAffect(entry, motion)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0045:animalTailSpecies","exportIndex":45,"name":"animalTailSpecies","kind":"function","signature":"animalTailSpecies(entry, packet = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0046:animalTailDriveScale","exportIndex":46,"name":"animalTailDriveScale","kind":"function","signature":"animalTailDriveScale(entry)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0047:animalTailCarryProfile","exportIndex":47,"name":"animalTailCarryProfile","kind":"function","signature":"animalTailCarryProfile(species)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0048:animalRootTargetY","exportIndex":48,"name":"animalRootTargetY","kind":"function","signature":"animalRootTargetY(entry, groundY = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0049:animalLowestSupportFootLocalY","exportIndex":49,"name":"animalLowestSupportFootLocalY","kind":"function","signature":"animalLowestSupportFootLocalY(entry)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0050:animalSupportRoot","exportIndex":50,"name":"animalSupportRoot","kind":"function","signature":"animalSupportRoot(entry, root, groundY, motion, basis)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0051:animalRootVerticalDriveWeight","exportIndex":51,"name":"animalRootVerticalDriveWeight","kind":"function","signature":"animalRootVerticalDriveWeight(entry)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0052:animalBodyPostureOffset","exportIndex":52,"name":"animalBodyPostureOffset","kind":"function","signature":"animalBodyPostureOffset(entry, role, basis)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0053:animalStrideLength","exportIndex":53,"name":"animalStrideLength","kind":"function","signature":"animalStrideLength(entry, speedScale)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0054:animalStrideDriveScale","exportIndex":54,"name":"animalStrideDriveScale","kind":"function","signature":"animalStrideDriveScale(entry)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0055:animalSwingLateralSweep","exportIndex":55,"name":"animalSwingLateralSweep","kind":"function","signature":"animalSwingLateralSweep(entry, descriptor, lift, swingAhead)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0056:animalSwingLiftHeight","exportIndex":56,"name":"animalSwingLiftHeight","kind":"function","signature":"animalSwingLiftHeight(entry)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0057:animalPoseDriveGains","exportIndex":57,"name":"animalPoseDriveGains","kind":"function","signature":"animalPoseDriveGains(role, id, bodyType)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0058:animalRestWorld","exportIndex":58,"name":"animalRestWorld","kind":"function","signature":"animalRestWorld(root, rootLocal, local, scale, basis, verticalScale = scale)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0059:animalLegPhase","exportIndex":59,"name":"animalLegPhase","kind":"function","signature":"animalLegPhase(entry, descriptor, legCount, speedScale = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0060:animalDutyFactor","exportIndex":60,"name":"animalDutyFactor","kind":"function","signature":"animalDutyFactor(entry, legCount, speedScale)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0061:animalStanceRollback","exportIndex":61,"name":"animalStanceRollback","kind":"function","signature":"animalStanceRollback(entry, speedScale)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0062:applyAnimalLegChainTargets","exportIndex":62,"name":"applyAnimalLegChainTargets","kind":"function","signature":"applyAnimalLegChainTargets(entry, targets, info, descriptor, root, bodyRootLocal, footTarget, lift, swing, basis)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0063:animalCurrentSpeedScale","exportIndex":63,"name":"animalCurrentSpeedScale","kind":"function","signature":"animalCurrentSpeedScale(entry)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0064:animalStanceRootPush","exportIndex":64,"name":"animalStanceRootPush","kind":"function","signature":"animalStanceRootPush(entry, descriptor, speedScale)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0065:animalLegShapeWeight","exportIndex":65,"name":"animalLegShapeWeight","kind":"function","signature":"animalLegShapeWeight(entry, descriptor, swing)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0066:animalLegJointPulse","exportIndex":66,"name":"animalLegJointPulse","kind":"function","signature":"animalLegJointPulse(entry, descriptor, jointIndex, chainLength, lift, swing, basis)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0067:animalStructuralPasses","exportIndex":67,"name":"animalStructuralPasses","kind":"function","signature":"animalStructuralPasses(entry)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0068:clampAnimalBoneVelocities","exportIndex":68,"name":"clampAnimalBoneVelocities","kind":"function","signature":"clampAnimalBoneVelocities(entry, dt)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0069:enforceAnimalGroundContact","exportIndex":69,"name":"enforceAnimalGroundContact","kind":"function","signature":"enforceAnimalGroundContact(entry, groundY, dt = 1/60, sensors = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0070:enforceAnimalPlantedFootContacts","exportIndex":70,"name":"enforceAnimalPlantedFootContacts","kind":"function","signature":"enforceAnimalPlantedFootContacts(entry, groundY, dt = 1/60, sensors = null, motion = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0071:animalPlantedFootHold","exportIndex":71,"name":"animalPlantedFootHold","kind":"function","signature":"animalPlantedFootHold(entry, moving)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0072:animalPlantedFootDamping","exportIndex":72,"name":"animalPlantedFootDamping","kind":"function","signature":"animalPlantedFootDamping(entry, moving)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0073:applyAnimalNoIntentSettleBrake","exportIndex":73,"name":"applyAnimalNoIntentSettleBrake","kind":"function","signature":"applyAnimalNoIntentSettleBrake(entry, dt = 1/60, motion = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0074:applyAnimalWrongWayBrake","exportIndex":74,"name":"applyAnimalWrongWayBrake","kind":"function","signature":"applyAnimalWrongWayBrake(entry, dt = 1/60, motion = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0075:computeAnimalBalance","exportIndex":75,"name":"computeAnimalBalance","kind":"function","signature":"computeAnimalBalance(entry, groundY = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/AnimalLocomotion.md","moduleTitle":"assets/rig/active-body/AnimalLocomotion","source":"engine/assets/rig/active-body/AnimalLocomotion.js","import":"/engine/assets/rig/active-body/AnimalLocomotion.js","sourceHash":"fb5c208dbf693335ac9010b4ecc9677ec5b351a04e7467e6997c62628b17ef83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/AnimalLocomotion.js#0076:ANIMAL_DEBUG_ENTITY_IDS","exportIndex":76,"name":"ANIMAL_DEBUG_ENTITY_IDS","kind":"constant","signature":"ANIMAL_DEBUG_ENTITY_IDS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BalanceMotor.md","moduleTitle":"assets/rig/active-body/BalanceMotor","source":"engine/assets/rig/active-body/BalanceMotor.js","import":"/engine/assets/rig/active-body/BalanceMotor.js","sourceHash":"652a9b091371c3ef28082744735ab6c60c84070ecef3dd7b870b942b4590fbff","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/rig/active-body/BalanceMotor.js","title":"assets/rig/active-body/BalanceMotor","summary":"engine/assets/rig/active-body/BalanceMotor.js — extracted from ActiveBodySystem.js (Ragdoll Stack Consolidation Roadmap, Phase 7). Owns humanoid COM-based balance (Winter mass fractions) and the idle/locomotion/stumble/fallen/ getup/ko state machine that reads it. Kept as one module per the Phase 7 pre-work findings — the state machine and balance computation are tightly entangled (updateState reads balance.error/groundedFeet every frame) and splitting them would just add a needless import hop.","exportCount":12}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BalanceMotor.md","moduleTitle":"assets/rig/active-body/BalanceMotor","source":"engine/assets/rig/active-body/BalanceMotor.js","import":"/engine/assets/rig/active-body/BalanceMotor.js","sourceHash":"652a9b091371c3ef28082744735ab6c60c84070ecef3dd7b870b942b4590fbff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BalanceMotor.js#0000:computeBalance","exportIndex":0,"name":"computeBalance","kind":"function","signature":"computeBalance(ragdoll)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BalanceMotor.md","moduleTitle":"assets/rig/active-body/BalanceMotor","source":"engine/assets/rig/active-body/BalanceMotor.js","import":"/engine/assets/rig/active-body/BalanceMotor.js","sourceHash":"652a9b091371c3ef28082744735ab6c60c84070ecef3dd7b870b942b4590fbff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BalanceMotor.js#0001:makeBalanceState","exportIndex":1,"name":"makeBalanceState","kind":"function","signature":"makeBalanceState(entry, balance)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BalanceMotor.md","moduleTitle":"assets/rig/active-body/BalanceMotor","source":"engine/assets/rig/active-body/BalanceMotor.js","import":"/engine/assets/rig/active-body/BalanceMotor.js","sourceHash":"652a9b091371c3ef28082744735ab6c60c84070ecef3dd7b870b942b4590fbff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BalanceMotor.js#0002:toBalanceControllerState","exportIndex":2,"name":"toBalanceControllerState","kind":"function","signature":"toBalanceControllerState(state)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BalanceMotor.md","moduleTitle":"assets/rig/active-body/BalanceMotor","source":"engine/assets/rig/active-body/BalanceMotor.js","import":"/engine/assets/rig/active-body/BalanceMotor.js","sourceHash":"652a9b091371c3ef28082744735ab6c60c84070ecef3dd7b870b942b4590fbff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BalanceMotor.js#0003:copyBalanceState","exportIndex":3,"name":"copyBalanceState","kind":"function","signature":"copyBalanceState(balance)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BalanceMotor.md","moduleTitle":"assets/rig/active-body/BalanceMotor","source":"engine/assets/rig/active-body/BalanceMotor.js","import":"/engine/assets/rig/active-body/BalanceMotor.js","sourceHash":"652a9b091371c3ef28082744735ab6c60c84070ecef3dd7b870b942b4590fbff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BalanceMotor.js#0004:updateState","exportIndex":4,"name":"updateState","kind":"function","signature":"updateState(entry, balance, dt)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BalanceMotor.md","moduleTitle":"assets/rig/active-body/BalanceMotor","source":"engine/assets/rig/active-body/BalanceMotor.js","import":"/engine/assets/rig/active-body/BalanceMotor.js","sourceHash":"652a9b091371c3ef28082744735ab6c60c84070ecef3dd7b870b942b4590fbff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BalanceMotor.js#0005:snapshotGetupOrientation","exportIndex":5,"name":"snapshotGetupOrientation","kind":"function","signature":"snapshotGetupOrientation(entry)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BalanceMotor.md","moduleTitle":"assets/rig/active-body/BalanceMotor","source":"engine/assets/rig/active-body/BalanceMotor.js","import":"/engine/assets/rig/active-body/BalanceMotor.js","sourceHash":"652a9b091371c3ef28082744735ab6c60c84070ecef3dd7b870b942b4590fbff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BalanceMotor.js#0006:MASS_FRACTIONS","exportIndex":6,"name":"MASS_FRACTIONS","kind":"constant","signature":"MASS_FRACTIONS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BalanceMotor.md","moduleTitle":"assets/rig/active-body/BalanceMotor","source":"engine/assets/rig/active-body/BalanceMotor.js","import":"/engine/assets/rig/active-body/BalanceMotor.js","sourceHash":"652a9b091371c3ef28082744735ab6c60c84070ecef3dd7b870b942b4590fbff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BalanceMotor.js#0007:STUMBLE_THRESHOLD","exportIndex":7,"name":"STUMBLE_THRESHOLD","kind":"constant","signature":"STUMBLE_THRESHOLD","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BalanceMotor.md","moduleTitle":"assets/rig/active-body/BalanceMotor","source":"engine/assets/rig/active-body/BalanceMotor.js","import":"/engine/assets/rig/active-body/BalanceMotor.js","sourceHash":"652a9b091371c3ef28082744735ab6c60c84070ecef3dd7b870b942b4590fbff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BalanceMotor.js#0008:FALL_THRESHOLD","exportIndex":8,"name":"FALL_THRESHOLD","kind":"constant","signature":"FALL_THRESHOLD","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BalanceMotor.md","moduleTitle":"assets/rig/active-body/BalanceMotor","source":"engine/assets/rig/active-body/BalanceMotor.js","import":"/engine/assets/rig/active-body/BalanceMotor.js","sourceHash":"652a9b091371c3ef28082744735ab6c60c84070ecef3dd7b870b942b4590fbff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BalanceMotor.js#0009:LOCOMOTION_STUMBLE_THRESHOLD","exportIndex":9,"name":"LOCOMOTION_STUMBLE_THRESHOLD","kind":"constant","signature":"LOCOMOTION_STUMBLE_THRESHOLD","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BalanceMotor.md","moduleTitle":"assets/rig/active-body/BalanceMotor","source":"engine/assets/rig/active-body/BalanceMotor.js","import":"/engine/assets/rig/active-body/BalanceMotor.js","sourceHash":"652a9b091371c3ef28082744735ab6c60c84070ecef3dd7b870b942b4590fbff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BalanceMotor.js#0010:LOCOMOTION_STUMBLE_TIME","exportIndex":10,"name":"LOCOMOTION_STUMBLE_TIME","kind":"constant","signature":"LOCOMOTION_STUMBLE_TIME","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BalanceMotor.md","moduleTitle":"assets/rig/active-body/BalanceMotor","source":"engine/assets/rig/active-body/BalanceMotor.js","import":"/engine/assets/rig/active-body/BalanceMotor.js","sourceHash":"652a9b091371c3ef28082744735ab6c60c84070ecef3dd7b870b942b4590fbff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BalanceMotor.js#0011:STUMBLE_FALL_TIME","exportIndex":11,"name":"STUMBLE_FALL_TIME","kind":"constant","signature":"STUMBLE_FALL_TIME","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodyAssembler.md","moduleTitle":"assets/rig/active-body/BodyAssembler","source":"engine/assets/rig/active-body/BodyAssembler.js","import":"/engine/assets/rig/active-body/BodyAssembler.js","sourceHash":"ef5c9931a4c2f892f1908492c6ce109c9d3399b83afce9dc8ca97245f3d34cf2","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/rig/active-body/BodyAssembler.js","title":"assets/rig/active-body/BodyAssembler","summary":"BodyAssembler — Data-driven ragdoll spec from body template + part catalog. Reads: - data/bodies/humanoid_default.json (bone hierarchy + collision rules) - data/parts/construction_volumes/*.json (per-part collision metadata) Produces a `RagdollSpec` consumable by ActiveBodySystem: { bones: [{ id, parent, partId, side, joint, collision, mass }, ...] ignorePairs: Set<\"a|b\"> // bone-pair keys for self-collision exclusion ignoreGroupsActive: Set<\"groupA|groupB\"> joints: { ball: {...}, hinge: {...}, ... } drives: { ball: {...}, hinge: {...}, ... } anatomy: { thorax, organs, collisionShells } skeletonExtensions: { mode, spineSegments, structuralBones } } This is the single source of truth for ragdoll structure. Edit the JSON files to change the body without touching code.","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodyAssembler.md","moduleTitle":"assets/rig/active-body/BodyAssembler","source":"engine/assets/rig/active-body/BodyAssembler.js","import":"/engine/assets/rig/active-body/BodyAssembler.js","sourceHash":"ef5c9931a4c2f892f1908492c6ce109c9d3399b83afce9dc8ca97245f3d34cf2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BodyAssembler.js#0000:loadBodyTemplate","exportIndex":0,"name":"loadBodyTemplate","kind":"function","signature":"async loadBodyTemplate(url = '/data/bodies/humanoid_default.json')","summary":"Load the humanoid body template (cached after first call)."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodyAssembler.md","moduleTitle":"assets/rig/active-body/BodyAssembler","source":"engine/assets/rig/active-body/BodyAssembler.js","import":"/engine/assets/rig/active-body/BodyAssembler.js","sourceHash":"ef5c9931a4c2f892f1908492c6ce109c9d3399b83afce9dc8ca97245f3d34cf2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BodyAssembler.js#0001:assembleBody","exportIndex":1,"name":"assembleBody","kind":"function","signature":"assembleBody(template, partCatalog, options = {})","summary":"Build a ragdoll spec from a body template + part catalog."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodyAssembler.md","moduleTitle":"assets/rig/active-body/BodyAssembler","source":"engine/assets/rig/active-body/BodyAssembler.js","import":"/engine/assets/rig/active-body/BodyAssembler.js","sourceHash":"ef5c9931a4c2f892f1908492c6ce109c9d3399b83afce9dc8ca97245f3d34cf2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BodyAssembler.js#0002:shouldBonesCollide","exportIndex":2,"name":"shouldBonesCollide","kind":"function","signature":"shouldBonesCollide(spec, boneA, boneB, isActive)","summary":"Test if two bones should collide given a ragdoll spec."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodyAssembler.md","moduleTitle":"assets/rig/active-body/BodyAssembler","source":"engine/assets/rig/active-body/BodyAssembler.js","import":"/engine/assets/rig/active-body/BodyAssembler.js","sourceHash":"ef5c9931a4c2f892f1908492c6ce109c9d3399b83afce9dc8ca97245f3d34cf2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BodyAssembler.js#0003:getFootBones","exportIndex":3,"name":"getFootBones","kind":"function","signature":"getFootBones(spec)","summary":"Get bone IDs that are foot contacts (for ground sensing / balance)."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodyAssembler.md","moduleTitle":"assets/rig/active-body/BodyAssembler","source":"engine/assets/rig/active-body/BodyAssembler.js","import":"/engine/assets/rig/active-body/BodyAssembler.js","sourceHash":"ef5c9931a4c2f892f1908492c6ce109c9d3399b83afce9dc8ca97245f3d34cf2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BodyAssembler.js#0004:getBone","exportIndex":4,"name":"getBone","kind":"function","signature":"getBone(spec, id)","summary":"Get a bone by id."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodyPoses.md","moduleTitle":"assets/rig/active-body/BodyPoses","source":"engine/assets/rig/active-body/BodyPoses.js","import":"/engine/assets/rig/active-body/BodyPoses.js","sourceHash":"6ccaef6560d326634fe50249a9de24d0717a93b8f2059559d61887543d9b1a1f","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/rig/active-body/BodyPoses.js","title":"assets/rig/active-body/BodyPoses","summary":"BodyPoses — Data-driven pose library + biomechanical motor controller. ══════════════════════════════════════════════════════════════════════ POSE DATA ══════════════════════════════════════════════════════════════════════ Poses live in /data/poses/*.json. Each has: id, referenceHeight, rootBone, facing, bones{name:[x,y,z]}, rotations{name:[x,y,z,w]} verticality (0..100) — used by the blend space Sequences live in /data/sequences/*.json and chain poses, though the NEW verticality system (see getPoseAtVerticality) supersedes discrete sequence-time for getup — bodies blend continuously between adjacent rungs of the verticality ladder: 0 ── 15 ── 25 ── 35 ── 45 ── 50 ── (>50 reserved) prone pushup quad  kneel half  stand   tiptoe/jump/reach kneel The ladder is based on the clinical Postural Verticality Scale (PVS) used in stroke rehab, cross-referenced with the Gross Motor Function Measure (GMFM) and standard 1D animation blend trees. ══════════════════════════════════════════════════════════════════════ MOTOR: applyKinematicBlend — FOUR STACKED LAYERS ══════════════════════════════════════════════════════════════════════ For each bone we apply, in order: 1. SOFT POSITION NUDGE  (kinematic lerp, small % per frame) Guarantees pose convergence even when forces can't. 2. VELOCITY-CLAMPED PURSUIT  (capped at muscleSpeed m/s) Close to target = slower approach (ease-in). Far = full speed. 3. MASS-SCALED PD FORCE  (the one that actually does work) Kp = m · ω² Kd = 2 · m · ω · ζ          (ζ = dampingRatio) F  = Kp·(target - pos) - Kd·velocity Mass-scaled means a 20 kg pelvis and a 0.5 kg hand have the SAME natural frequency. Like real biological muscle — body parts reach their targets on the same time scale regardless of weight. 4. MUSCLE-TONE GRAVITY COMPENSATION  (postural) Bones above knee-height get 75% of their weight canceled so posture holds without the motor doing all the lifting. Real humans use passive muscle tone; we model the same. + FORCE RISE-TIME FILTER (on the final force) Real muscles can't change force instantly. Rate-of-force- development (RFD) is 800-1500 N/s for untrained adults. Per-bone multipliers: thighs 0.7× (slow recruitment, biggest muscles), hands 1.4× (fast, small motor units). From EMG studies. + ERROR-GATED DAMPING (near target) Within 5 cm of target, velocity is damped 30% per frame. Kills steady-state jitter where the PD motor fights imperceptible position deltas. Doesn't affect in-flight motion. ══════════════════════════════════════════════════════════════════════ BIOMECHANICAL CALIBRATION  (do not \"fix\" these without reading!) ══════════════════════════════════════════════════════════════════════ forcePerKg = 15 × g    — untrained adult (not Olympic athlete) peak quad ≈ 15g × 8kg = 1176 N (realistic) maxForce = 1500 N      — absolute cap (big muscle groups) forceRiseRate = 1200 N/s — typical RFD. Bumping this to 3000 makes bodies feel robotic (athlete-level). omega = 6-9 rad/s      — muscle response frequency (postural 5-7, voluntary 8-12). Above 12 = twitchy. dampingRatio = 0.7     — slight overshoot (natural muscle feel). 1.0 = critical, 1.2+ = sluggish/locked. gravityTone = 0.75     — 75% of bone weight canceled via feedforward for bones above toneYThreshold. Human postural muscles do this automatically. ══════════════════════════════════════════════════════════════════════","exportCount":30}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodyPoses.md","moduleTitle":"assets/rig/active-body/BodyPoses","source":"engine/assets/rig/active-body/BodyPoses.js","import":"/engine/assets/rig/active-body/BodyPoses.js","sourceHash":"6ccaef6560d326634fe50249a9de24d0717a93b8f2059559d61887543d9b1a1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BodyPoses.js#0000:normalizePose","exportIndex":0,"name":"normalizePose","kind":"function","signature":"normalizePose(data)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodyPoses.md","moduleTitle":"assets/rig/active-body/BodyPoses","source":"engine/assets/rig/active-body/BodyPoses.js","import":"/engine/assets/rig/active-body/BodyPoses.js","sourceHash":"6ccaef6560d326634fe50249a9de24d0717a93b8f2059559d61887543d9b1a1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BodyPoses.js#0001:loadPose","exportIndex":1,"name":"loadPose","kind":"function","signature":"async loadPose(id)","summary":"Load a single pose by id. Cached after first fetch. URL matches the BodyAssembler pattern (`/data/...`) since the server roots `Life/data/` as `/data/`."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodyPoses.md","moduleTitle":"assets/rig/active-body/BodyPoses","source":"engine/assets/rig/active-body/BodyPoses.js","import":"/engine/assets/rig/active-body/BodyPoses.js","sourceHash":"6ccaef6560d326634fe50249a9de24d0717a93b8f2059559d61887543d9b1a1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BodyPoses.js#0002:loadSequence","exportIndex":2,"name":"loadSequence","kind":"function","signature":"async loadSequence(id)","summary":"Load a sequence and pre-load all poses referenced by its phases."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodyPoses.md","moduleTitle":"assets/rig/active-body/BodyPoses","source":"engine/assets/rig/active-body/BodyPoses.js","import":"/engine/assets/rig/active-body/BodyPoses.js","sourceHash":"6ccaef6560d326634fe50249a9de24d0717a93b8f2059559d61887543d9b1a1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BodyPoses.js#0003:preloadStandardPoses","exportIndex":3,"name":"preloadStandardPoses","kind":"function","signature":"async preloadStandardPoses()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodyPoses.md","moduleTitle":"assets/rig/active-body/BodyPoses","source":"engine/assets/rig/active-body/BodyPoses.js","import":"/engine/assets/rig/active-body/BodyPoses.js","sourceHash":"6ccaef6560d326634fe50249a9de24d0717a93b8f2059559d61887543d9b1a1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BodyPoses.js#0004:bracketWalkCyclePhase","exportIndex":4,"name":"bracketWalkCyclePhase","kind":"function","signature":"bracketWalkCyclePhase(gaitPhase)","summary":"Map gait phase (rad) to two adjacent walk-cycle poses and blend factor."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodyPoses.md","moduleTitle":"assets/rig/active-body/BodyPoses","source":"engine/assets/rig/active-body/BodyPoses.js","import":"/engine/assets/rig/active-body/BodyPoses.js","sourceHash":"6ccaef6560d326634fe50249a9de24d0717a93b8f2059559d61887543d9b1a1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BodyPoses.js#0005:getWalkCycleWorldTargets","exportIndex":5,"name":"getWalkCycleWorldTargets","kind":"function","signature":"getWalkCycleWorldTargets(gaitPhase, measurements, anchor, yaw)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodyPoses.md","moduleTitle":"assets/rig/active-body/BodyPoses","source":"engine/assets/rig/active-body/BodyPoses.js","import":"/engine/assets/rig/active-body/BodyPoses.js","sourceHash":"6ccaef6560d326634fe50249a9de24d0717a93b8f2059559d61887543d9b1a1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BodyPoses.js#0006:getWalkCycleWorldPoseTargets","exportIndex":6,"name":"getWalkCycleWorldPoseTargets","kind":"function","signature":"getWalkCycleWorldPoseTargets(gaitPhase, measurements, anchor, yaw)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodyPoses.md","moduleTitle":"assets/rig/active-body/BodyPoses","source":"engine/assets/rig/active-body/BodyPoses.js","import":"/engine/assets/rig/active-body/BodyPoses.js","sourceHash":"6ccaef6560d326634fe50249a9de24d0717a93b8f2059559d61887543d9b1a1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BodyPoses.js#0007:blendPositionTargetMaps","exportIndex":7,"name":"blendPositionTargetMaps","kind":"function","signature":"blendPositionTargetMaps(base, overlay, t)","summary":"Linear blend of bone world positions (stand + walk-cycle additive layer)."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodyPoses.md","moduleTitle":"assets/rig/active-body/BodyPoses","source":"engine/assets/rig/active-body/BodyPoses.js","import":"/engine/assets/rig/active-body/BodyPoses.js","sourceHash":"6ccaef6560d326634fe50249a9de24d0717a93b8f2059559d61887543d9b1a1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BodyPoses.js#0008:blendWorldPoseTargets","exportIndex":8,"name":"blendWorldPoseTargets","kind":"function","signature":"blendWorldPoseTargets(base, overlay, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodyPoses.md","moduleTitle":"assets/rig/active-body/BodyPoses","source":"engine/assets/rig/active-body/BodyPoses.js","import":"/engine/assets/rig/active-body/BodyPoses.js","sourceHash":"6ccaef6560d326634fe50249a9de24d0717a93b8f2059559d61887543d9b1a1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BodyPoses.js#0009:getPoseBoneWorldPosition","exportIndex":9,"name":"getPoseBoneWorldPosition","kind":"function","signature":"getPoseBoneWorldPosition(pose, boneId, measurements, anchor, yaw)","summary":"Compute the world-space target position of a single bone for a given pose. Applies scale (measurements.height / pose.referenceHeight), yaw rotation around +Y (body facing direction), and translation to anchor."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodyPoses.md","moduleTitle":"assets/rig/active-body/BodyPoses","source":"engine/assets/rig/active-body/BodyPoses.js","import":"/engine/assets/rig/active-body/BodyPoses.js","sourceHash":"6ccaef6560d326634fe50249a9de24d0717a93b8f2059559d61887543d9b1a1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BodyPoses.js#0010:getPoseBoneLocalPosition","exportIndex":10,"name":"getPoseBoneLocalPosition","kind":"function","signature":"getPoseBoneLocalPosition(pose, boneId)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodyPoses.md","moduleTitle":"assets/rig/active-body/BodyPoses","source":"engine/assets/rig/active-body/BodyPoses.js","import":"/engine/assets/rig/active-body/BodyPoses.js","sourceHash":"6ccaef6560d326634fe50249a9de24d0717a93b8f2059559d61887543d9b1a1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BodyPoses.js#0011:getPoseBoneLocalRotation","exportIndex":11,"name":"getPoseBoneLocalRotation","kind":"function","signature":"getPoseBoneLocalRotation(pose, boneId)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodyPoses.md","moduleTitle":"assets/rig/active-body/BodyPoses","source":"engine/assets/rig/active-body/BodyPoses.js","import":"/engine/assets/rig/active-body/BodyPoses.js","sourceHash":"6ccaef6560d326634fe50249a9de24d0717a93b8f2059559d61887543d9b1a1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BodyPoses.js#0012:getPoseBoneWorldRotation","exportIndex":12,"name":"getPoseBoneWorldRotation","kind":"function","signature":"getPoseBoneWorldRotation(pose, boneId, yaw)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodyPoses.md","moduleTitle":"assets/rig/active-body/BodyPoses","source":"engine/assets/rig/active-body/BodyPoses.js","import":"/engine/assets/rig/active-body/BodyPoses.js","sourceHash":"6ccaef6560d326634fe50249a9de24d0717a93b8f2059559d61887543d9b1a1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BodyPoses.js#0013:getPoseWorldTargets","exportIndex":13,"name":"getPoseWorldTargets","kind":"function","signature":"getPoseWorldTargets(pose, measurements, anchor, yaw)","summary":"Compute all target positions for a pose, keyed by bone id."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodyPoses.md","moduleTitle":"assets/rig/active-body/BodyPoses","source":"engine/assets/rig/active-body/BodyPoses.js","import":"/engine/assets/rig/active-body/BodyPoses.js","sourceHash":"6ccaef6560d326634fe50249a9de24d0717a93b8f2059559d61887543d9b1a1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BodyPoses.js#0014:getPoseWorldPoseTargets","exportIndex":14,"name":"getPoseWorldPoseTargets","kind":"function","signature":"getPoseWorldPoseTargets(pose, measurements, anchor, yaw)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodyPoses.md","moduleTitle":"assets/rig/active-body/BodyPoses","source":"engine/assets/rig/active-body/BodyPoses.js","import":"/engine/assets/rig/active-body/BodyPoses.js","sourceHash":"6ccaef6560d326634fe50249a9de24d0717a93b8f2059559d61887543d9b1a1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BodyPoses.js#0015:interpolatePoses","exportIndex":15,"name":"interpolatePoses","kind":"function","signature":"interpolatePoses(poseA, poseB, t, measurements, anchor, yaw)","summary":"Interpolate between two poses. Returns a target-position map for all bones that exist in both. Useful for smooth phase transitions within a sequence."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodyPoses.md","moduleTitle":"assets/rig/active-body/BodyPoses","source":"engine/assets/rig/active-body/BodyPoses.js","import":"/engine/assets/rig/active-body/BodyPoses.js","sourceHash":"6ccaef6560d326634fe50249a9de24d0717a93b8f2059559d61887543d9b1a1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BodyPoses.js#0016:interpolatePoseTargets","exportIndex":16,"name":"interpolatePoseTargets","kind":"function","signature":"interpolatePoseTargets(poseA, poseB, t, measurements, anchor, yaw)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodyPoses.md","moduleTitle":"assets/rig/active-body/BodyPoses","source":"engine/assets/rig/active-body/BodyPoses.js","import":"/engine/assets/rig/active-body/BodyPoses.js","sourceHash":"6ccaef6560d326634fe50249a9de24d0717a93b8f2059559d61887543d9b1a1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BodyPoses.js#0017:applyKinematicBlend","exportIndex":17,"name":"applyKinematicBlend","kind":"function","signature":"applyKinematicBlend(ragdoll, targets, blendRate = 0.04, options = {})","summary":"Hybrid muscle-motor blend — mixes kinematic pose delivery with PD-force behavior to produce realistic active-ragdoll motion that FEELS muscular rather than teleport-y. Four layers stacked per bone: 1. SOFT POSITION NUDGE — small kinematic lerp (2-4% per frame). Guarantees pose delivery; prevents drift from constraints/collisions. 2. VELOCITY-CLAMPED PURSUIT — computes a desired velocity toward the target and caps it at a \"muscle speed\" limit. Far bones move at max speed; close bones slow down (ease-in on arrival). 3. PD STABILIZATION — small spring-damper toward target adds subtle inertia/settling that pure position lerp lacks. Uses applyForce so gravity/collisions/distance constraints still dominate. 4. MUSCLE-TONE GRAVITY COMP — above-ground bones get 70% gravity cancellation (like real postural muscles keeping you upright). Per-bone activation timing: big postural muscles (pelvis, thighs, chest) lead; smaller bones (hands, head) follow. Creates the \"stage-by-stage effort\" look real people have when getting up."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodyPoses.md","moduleTitle":"assets/rig/active-body/BodyPoses","source":"engine/assets/rig/active-body/BodyPoses.js","import":"/engine/assets/rig/active-body/BodyPoses.js","sourceHash":"6ccaef6560d326634fe50249a9de24d0717a93b8f2059559d61887543d9b1a1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BodyPoses.js#0018:applyMotorToTargets","exportIndex":18,"name":"applyMotorToTargets","kind":"function","signature":"applyMotorToTargets(ragdoll, targets, options = {})","summary":"Apply PD (proportional-derivative) motor FORCES to drive the ragdoll toward a target pose. This is the proper active-ragdoll approach used in DeepMimic / NaturalMotion Euphoria / Karl Sims creatures: F = Kp * (target_pos - pos) - Kd * velocity Forces are applied via `solver.applyForce()` BEFORE the physics step so they get integrated as acceleration through the Verlet solver. The body rises by physically PUSHING against the ground (via collision friction on its hands/feet) — not by teleporting particles to target positions. Key properties: - Mass matters: Kp scales per bone mass so acceleration is consistent. - Kd damps overshoot and oscillation (critical damping formula below). - Gravity, collisions, and distance constraints ALL still act normally. - Momentum is preserved — no teleportation. PHASE RAMP: `phaseBoost` multiplier scales stiffness over the phase duration so the motor grows stronger as the body approaches the pose. ADAPTIVE GAIN: bones far from target get a proportional force boost — the \"ramp muscle output until it works\" behavior. Still applied through PD force, not position teleport. MAX FORCE CAP: prevents instability from runaway forces at large errors."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodyPoses.md","moduleTitle":"assets/rig/active-body/BodyPoses","source":"engine/assets/rig/active-body/BodyPoses.js","import":"/engine/assets/rig/active-body/BodyPoses.js","sourceHash":"6ccaef6560d326634fe50249a9de24d0717a93b8f2059559d61887543d9b1a1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BodyPoses.js#0019:getSequenceState","exportIndex":19,"name":"getSequenceState","kind":"function","signature":"getSequenceState(sequence, elapsed)","summary":"Run one tick of a sequence. Returns progress info so the caller can decide when the sequence completes or what phase is active."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodyPoses.md","moduleTitle":"assets/rig/active-body/BodyPoses","source":"engine/assets/rig/active-body/BodyPoses.js","import":"/engine/assets/rig/active-body/BodyPoses.js","sourceHash":"6ccaef6560d326634fe50249a9de24d0717a93b8f2059559d61887543d9b1a1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BodyPoses.js#0020:getCachedPose","exportIndex":20,"name":"getCachedPose","kind":"function","signature":"getCachedPose(id)","summary":"Read a cached pose without loading. Returns null if not loaded."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodyPoses.md","moduleTitle":"assets/rig/active-body/BodyPoses","source":"engine/assets/rig/active-body/BodyPoses.js","import":"/engine/assets/rig/active-body/BodyPoses.js","sourceHash":"6ccaef6560d326634fe50249a9de24d0717a93b8f2059559d61887543d9b1a1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BodyPoses.js#0021:getVerticalityLadder","exportIndex":21,"name":"getVerticalityLadder","kind":"function","signature":"getVerticalityLadder()","summary":"Return a sorted ladder of {verticality, pose} for every cached pose that declares one. Sorted ascending by score."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodyPoses.md","moduleTitle":"assets/rig/active-body/BodyPoses","source":"engine/assets/rig/active-body/BodyPoses.js","import":"/engine/assets/rig/active-body/BodyPoses.js","sourceHash":"6ccaef6560d326634fe50249a9de24d0717a93b8f2059559d61887543d9b1a1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BodyPoses.js#0022:bracketVerticality","exportIndex":22,"name":"bracketVerticality","kind":"function","signature":"bracketVerticality(v, ladder = null)","summary":"Find the two adjacent rungs bracketing verticality `v`, plus the interpolation factor between them. Returns { lower, upper, t } where t ∈ [0,1]; t=0 means exactly lower. If v is below min or above max, clamps to end and t=0 or 1."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodyPoses.md","moduleTitle":"assets/rig/active-body/BodyPoses","source":"engine/assets/rig/active-body/BodyPoses.js","import":"/engine/assets/rig/active-body/BodyPoses.js","sourceHash":"6ccaef6560d326634fe50249a9de24d0717a93b8f2059559d61887543d9b1a1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BodyPoses.js#0023:getPoseAtVerticality","exportIndex":23,"name":"getPoseAtVerticality","kind":"function","signature":"getPoseAtVerticality(v, measurements, anchor, yaw)","summary":"Get world-space bone targets for an arbitrary verticality score. Blends between the two adjacent ladder poses, so the caller never has to know which discrete pose is \"current\" — just \"how vertical\"."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodyPoses.md","moduleTitle":"assets/rig/active-body/BodyPoses","source":"engine/assets/rig/active-body/BodyPoses.js","import":"/engine/assets/rig/active-body/BodyPoses.js","sourceHash":"6ccaef6560d326634fe50249a9de24d0717a93b8f2059559d61887543d9b1a1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BodyPoses.js#0024:getPoseTargetsAtVerticality","exportIndex":24,"name":"getPoseTargetsAtVerticality","kind":"function","signature":"getPoseTargetsAtVerticality(v, measurements, anchor, yaw)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodyPoses.md","moduleTitle":"assets/rig/active-body/BodyPoses","source":"engine/assets/rig/active-body/BodyPoses.js","import":"/engine/assets/rig/active-body/BodyPoses.js","sourceHash":"6ccaef6560d326634fe50249a9de24d0717a93b8f2059559d61887543d9b1a1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BodyPoses.js#0025:measureBodyVerticality","exportIndex":25,"name":"measureBodyVerticality","kind":"function","signature":"measureBodyVerticality(ragdoll)","summary":"Measure the current body's verticality from live physics state. Uses pelvis height as fraction of the stand-pose pelvis height, mapped onto the scale so stand = 50. Below stand scales linearly; above stand (for future jumping/reaching) grows proportionally."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodyPoses.md","moduleTitle":"assets/rig/active-body/BodyPoses","source":"engine/assets/rig/active-body/BodyPoses.js","import":"/engine/assets/rig/active-body/BodyPoses.js","sourceHash":"6ccaef6560d326634fe50249a9de24d0717a93b8f2059559d61887543d9b1a1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BodyPoses.js#0026:getCachedSequence","exportIndex":26,"name":"getCachedSequence","kind":"function","signature":"getCachedSequence(id)","summary":"Read a cached sequence without loading. Returns null if not loaded."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodyPoses.md","moduleTitle":"assets/rig/active-body/BodyPoses","source":"engine/assets/rig/active-body/BodyPoses.js","import":"/engine/assets/rig/active-body/BodyPoses.js","sourceHash":"6ccaef6560d326634fe50249a9de24d0717a93b8f2059559d61887543d9b1a1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BodyPoses.js#0027:getSequenceDuration","exportIndex":27,"name":"getSequenceDuration","kind":"function","signature":"getSequenceDuration(sequence)","summary":"Compute total duration of a sequence in seconds."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodyPoses.md","moduleTitle":"assets/rig/active-body/BodyPoses","source":"engine/assets/rig/active-body/BodyPoses.js","import":"/engine/assets/rig/active-body/BodyPoses.js","sourceHash":"6ccaef6560d326634fe50249a9de24d0717a93b8f2059559d61887543d9b1a1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BodyPoses.js#0028:WALK_CYCLE_POSE_IDS","exportIndex":28,"name":"WALK_CYCLE_POSE_IDS","kind":"constant","signature":"WALK_CYCLE_POSE_IDS","summary":"Warm-cache everything we need for the active controller. Loads both prone (face-down) and supine (face-up) getup sequences so the controller can pick the right one based on the body's orientation when it decides to stand up."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodyPoses.md","moduleTitle":"assets/rig/active-body/BodyPoses","source":"engine/assets/rig/active-body/BodyPoses.js","import":"/engine/assets/rig/active-body/BodyPoses.js","sourceHash":"6ccaef6560d326634fe50249a9de24d0717a93b8f2059559d61887543d9b1a1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BodyPoses.js#0029:WALK_CYCLE_PHASE_OFFSET","exportIndex":29,"name":"WALK_CYCLE_PHASE_OFFSET","kind":"constant","signature":"WALK_CYCLE_PHASE_OFFSET","summary":"Align CPG gait phase (φ=0 toe-off) with walk_cycle_q* heel-strike keys."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodyRhythms.md","moduleTitle":"assets/rig/active-body/BodyRhythms","source":"engine/assets/rig/active-body/BodyRhythms.js","import":"/engine/assets/rig/active-body/BodyRhythms.js","sourceHash":"121018efc0b9fbc25ff8a7bfaf493049723ea2556702701476cd70a991d0570d","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/rig/active-body/BodyRhythms.js","title":"assets/rig/active-body/BodyRhythms","summary":"BodyRhythms — Coupled phase oscillators that generate body rhythms. ══════════════════════════════════════════════════════════════════════ WHAT THIS IS ══════════════════════════════════════════════════════════════════════ Every living body has SYNCHRONIZED internal oscillators: - HEART      ~1.0-1.5 Hz resting (60-90 bpm) - BREATH     ~0.2-0.3 Hz resting (12-18 breaths/min) - GAIT_L     ~1.0 Hz walking cadence (left leg) - GAIT_R     ~1.0 Hz antiphase to left (π offset) - ARM_L      counter-swings with RIGHT leg (inphase with GAIT_R) - ARM_R      counter-swings with LEFT leg (inphase with GAIT_L) These are the output of CENTRAL PATTERN GENERATORS (CPGs) — spinal neural circuits that don't need brain input to produce rhythm. They sync via Kuramoto-like coupling so all the oscillators lock into phase-locked relationships automatically. Engine provides the math (engine/core/math/MathOscillator.js): stepKuramotoPhases  — Euler step for coupled oscillator network phaseCoherence      — measure of synchrony (0=chaos, 1=lockstep) stepKuramotoDriven  — with external forcing (metronome, music, etc) ══════════════════════════════════════════════════════════════════════ USES IN THE ACTIVE BODY SYSTEM ══════════════════════════════════════════════════════════════════════ 1. NN OBSERVATION INPUT The NN sees sin/cos of key phases, so it knows WHERE in the gait cycle the body is. This lets it learn rhythmic actions — step forward on left foot during gait_L peak, etc. 2. POSE MODULATION (future) When intent = walk, leg targets can be modulated by gait phase to produce a stepping motion automatically. 3. VISIBLE RHYTHM (future) Chest rises with breath, head bobs with heart, body sways with gait — alive-looking NPCs even when standing still. 4. DRUG/DISEASE EFFECTS Arrhythmia = desynchronized heart. Panic = tachycardia (faster heart + breath). Paralysis = no gait coupling. Loss of coherence (order parameter drops) indicates systemic failure. ══════════════════════════════════════════════════════════════════════ COUPLING MATRIX  (who synchronizes with whom, how strongly) ══════════════════════════════════════════════════════════════════════ HEART  BREATH  GAIT_L  GAIT_R  ARM_L  ARM_R HEART     -    0.3     0       0       0      0 BREATH    0.3  -       0.1     0.1     0      0 GAIT_L    0    0.1     -      -1.0    0      1.0      (antiphase L↔R, counter with arms) GAIT_R    0    0.1     -1.0    -       1.0   0 ARM_L     0    0       0       1.0    -     -1.0 ARM_R     0    0       1.0     0      -1.0  - Positive weight = inphase pull (synchronize), negative = antiphase. Kuramoto coupling term: sin(phase_j - phase_i) × weight.","exportCount":9}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodyRhythms.md","moduleTitle":"assets/rig/active-body/BodyRhythms","source":"engine/assets/rig/active-body/BodyRhythms.js","import":"/engine/assets/rig/active-body/BodyRhythms.js","sourceHash":"121018efc0b9fbc25ff8a7bfaf493049723ea2556702701476cd70a991d0570d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BodyRhythms.js#0000:createRhythmState","exportIndex":0,"name":"createRhythmState","kind":"function","signature":"createRhythmState(rng = Math.random)","summary":"Create a new rhythm state for a body. Initial phases are seeded from a per-entity RNG so different bodies aren't in lockstep (a crowd of NPCs should look like independent individuals, not a marching band)."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodyRhythms.md","moduleTitle":"assets/rig/active-body/BodyRhythms","source":"engine/assets/rig/active-body/BodyRhythms.js","import":"/engine/assets/rig/active-body/BodyRhythms.js","sourceHash":"121018efc0b9fbc25ff8a7bfaf493049723ea2556702701476cd70a991d0570d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BodyRhythms.js#0001:stepRhythms","exportIndex":1,"name":"stepRhythms","kind":"function","signature":"stepRhythms(state, dt, opts = {})","summary":"Advance the rhythm state by dt seconds using the Kuramoto model. Modulates natural frequencies based on body state: - walking intent      → gait and arms non-zero - high adrenaline     → faster heart and breath - high fatigue        → slightly elevated heart, faster breath"}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodyRhythms.md","moduleTitle":"assets/rig/active-body/BodyRhythms","source":"engine/assets/rig/active-body/BodyRhythms.js","import":"/engine/assets/rig/active-body/BodyRhythms.js","sourceHash":"121018efc0b9fbc25ff8a7bfaf493049723ea2556702701476cd70a991d0570d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BodyRhythms.js#0002:rhythmSample","exportIndex":2,"name":"rhythmSample","kind":"function","signature":"rhythmSample(state, rhythmIdx)","summary":"Return sin/cos of a rhythm phase — what the NN sees. sin/cos pair is the standard representation of a circular variable for neural networks (avoids wraparound discontinuity at 2π)."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodyRhythms.md","moduleTitle":"assets/rig/active-body/BodyRhythms","source":"engine/assets/rig/active-body/BodyRhythms.js","import":"/engine/assets/rig/active-body/BodyRhythms.js","sourceHash":"121018efc0b9fbc25ff8a7bfaf493049723ea2556702701476cd70a991d0570d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BodyRhythms.js#0003:shatterRhythm","exportIndex":3,"name":"shatterRhythm","kind":"function","signature":"shatterRhythm(state, severity = 0.5, rng = Math.random)","summary":"Desynchronize rhythms (simulate arrhythmia / panic breakdown). Adds random noise to phases and reduces coupling strength."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodyRhythms.md","moduleTitle":"assets/rig/active-body/BodyRhythms","source":"engine/assets/rig/active-body/BodyRhythms.js","import":"/engine/assets/rig/active-body/BodyRhythms.js","sourceHash":"121018efc0b9fbc25ff8a7bfaf493049723ea2556702701476cd70a991d0570d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BodyRhythms.js#0004:restoreRhythm","exportIndex":4,"name":"restoreRhythm","kind":"function","signature":"restoreRhythm(state)","summary":"Re-establish healthy coupling after disruption (recovery)."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodyRhythms.md","moduleTitle":"assets/rig/active-body/BodyRhythms","source":"engine/assets/rig/active-body/BodyRhythms.js","import":"/engine/assets/rig/active-body/BodyRhythms.js","sourceHash":"121018efc0b9fbc25ff8a7bfaf493049723ea2556702701476cd70a991d0570d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BodyRhythms.js#0005:RHYTHM","exportIndex":5,"name":"RHYTHM","kind":"constant","signature":"RHYTHM","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodyRhythms.md","moduleTitle":"assets/rig/active-body/BodyRhythms","source":"engine/assets/rig/active-body/BodyRhythms.js","import":"/engine/assets/rig/active-body/BodyRhythms.js","sourceHash":"121018efc0b9fbc25ff8a7bfaf493049723ea2556702701476cd70a991d0570d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BodyRhythms.js#0006:NUM_RHYTHMS","exportIndex":6,"name":"NUM_RHYTHMS","kind":"constant","signature":"NUM_RHYTHMS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodyRhythms.md","moduleTitle":"assets/rig/active-body/BodyRhythms","source":"engine/assets/rig/active-body/BodyRhythms.js","import":"/engine/assets/rig/active-body/BodyRhythms.js","sourceHash":"121018efc0b9fbc25ff8a7bfaf493049723ea2556702701476cd70a991d0570d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BodyRhythms.js#0007:kuramotoOrderParameter","exportIndex":7,"name":"kuramotoOrderParameter","kind":"re-export","signature":"kuramotoOrderParameter","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodyRhythms.md","moduleTitle":"assets/rig/active-body/BodyRhythms","source":"engine/assets/rig/active-body/BodyRhythms.js","import":"/engine/assets/rig/active-body/BodyRhythms.js","sourceHash":"121018efc0b9fbc25ff8a7bfaf493049723ea2556702701476cd70a991d0570d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BodyRhythms.js#0008:phaseCoherence","exportIndex":8,"name":"phaseCoherence","kind":"re-export","signature":"phaseCoherence","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodySpecValidator.md","moduleTitle":"assets/rig/active-body/BodySpecValidator","source":"engine/assets/rig/active-body/BodySpecValidator.js","import":"/engine/assets/rig/active-body/BodySpecValidator.js","sourceHash":"9b89f455778c4f08b4c70b1291d4839d6ab8bd523e833ed1750b2ed05512acff","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/rig/active-body/BodySpecValidator.js","title":"assets/rig/active-body/BodySpecValidator","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BodySpecValidator.md","moduleTitle":"assets/rig/active-body/BodySpecValidator","source":"engine/assets/rig/active-body/BodySpecValidator.js","import":"/engine/assets/rig/active-body/BodySpecValidator.js","sourceHash":"9b89f455778c4f08b4c70b1291d4839d6ab8bd523e833ed1750b2ed05512acff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BodySpecValidator.js#0000:validateBodyTemplate","exportIndex":0,"name":"validateBodyTemplate","kind":"function","signature":"validateBodyTemplate(template)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BrainProfile.md","moduleTitle":"assets/rig/active-body/BrainProfile","source":"engine/assets/rig/active-body/BrainProfile.js","import":"/engine/assets/rig/active-body/BrainProfile.js","sourceHash":"a14878af2d5e21c16bc92dd2827d2b47b7b100a6d10ddf39f72d38257499e190","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/rig/active-body/BrainProfile.js","title":"assets/rig/active-body/BrainProfile","summary":"engine/assets/rig/active-body/BrainProfile.js — extracted from ActiveBodySystem.js (Ragdoll Stack Consolidation Roadmap, Phase 7). Owns humanoid brain-profile creation/loading (NN tier, motor profile key resolution, lazy brain-file load) and the trust/anatomy/brain readback helpers consumed by getReadback().","exportCount":8}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BrainProfile.md","moduleTitle":"assets/rig/active-body/BrainProfile","source":"engine/assets/rig/active-body/BrainProfile.js","import":"/engine/assets/rig/active-body/BrainProfile.js","sourceHash":"a14878af2d5e21c16bc92dd2827d2b47b7b100a6d10ddf39f72d38257499e190","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BrainProfile.js#0000:createHumanoidBrainProfile","exportIndex":0,"name":"createHumanoidBrainProfile","kind":"function","signature":"createHumanoidBrainProfile(entityId, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BrainProfile.md","moduleTitle":"assets/rig/active-body/BrainProfile","source":"engine/assets/rig/active-body/BrainProfile.js","import":"/engine/assets/rig/active-body/BrainProfile.js","sourceHash":"a14878af2d5e21c16bc92dd2827d2b47b7b100a6d10ddf39f72d38257499e190","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BrainProfile.js#0001:neuralTierAuthorityCap","exportIndex":1,"name":"neuralTierAuthorityCap","kind":"function","signature":"neuralTierAuthorityCap(tier)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BrainProfile.md","moduleTitle":"assets/rig/active-body/BrainProfile","source":"engine/assets/rig/active-body/BrainProfile.js","import":"/engine/assets/rig/active-body/BrainProfile.js","sourceHash":"a14878af2d5e21c16bc92dd2827d2b47b7b100a6d10ddf39f72d38257499e190","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BrainProfile.js#0002:estimateNeuralMotorTrust","exportIndex":2,"name":"estimateNeuralMotorTrust","kind":"function","signature":"estimateNeuralMotorTrust(motor, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BrainProfile.md","moduleTitle":"assets/rig/active-body/BrainProfile","source":"engine/assets/rig/active-body/BrainProfile.js","import":"/engine/assets/rig/active-body/BrainProfile.js","sourceHash":"a14878af2d5e21c16bc92dd2827d2b47b7b100a6d10ddf39f72d38257499e190","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BrainProfile.js#0003:getBrainReadback","exportIndex":3,"name":"getBrainReadback","kind":"function","signature":"getBrainReadback(entry)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BrainProfile.md","moduleTitle":"assets/rig/active-body/BrainProfile","source":"engine/assets/rig/active-body/BrainProfile.js","import":"/engine/assets/rig/active-body/BrainProfile.js","sourceHash":"a14878af2d5e21c16bc92dd2827d2b47b7b100a6d10ddf39f72d38257499e190","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BrainProfile.js#0004:getAnatomyReadback","exportIndex":4,"name":"getAnatomyReadback","kind":"function","signature":"getAnatomyReadback(entry)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BrainProfile.md","moduleTitle":"assets/rig/active-body/BrainProfile","source":"engine/assets/rig/active-body/BrainProfile.js","import":"/engine/assets/rig/active-body/BrainProfile.js","sourceHash":"a14878af2d5e21c16bc92dd2827d2b47b7b100a6d10ddf39f72d38257499e190","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BrainProfile.js#0005:applyBodySpecMetadata","exportIndex":5,"name":"applyBodySpecMetadata","kind":"function","signature":"applyBodySpecMetadata(entry, bodySpec)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BrainProfile.md","moduleTitle":"assets/rig/active-body/BrainProfile","source":"engine/assets/rig/active-body/BrainProfile.js","import":"/engine/assets/rig/active-body/BrainProfile.js","sourceHash":"a14878af2d5e21c16bc92dd2827d2b47b7b100a6d10ddf39f72d38257499e190","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BrainProfile.js#0006:ensureBrainLoaded","exportIndex":6,"name":"ensureBrainLoaded","kind":"function","signature":"ensureBrainLoaded(entry)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/BrainProfile.md","moduleTitle":"assets/rig/active-body/BrainProfile","source":"engine/assets/rig/active-body/BrainProfile.js","import":"/engine/assets/rig/active-body/BrainProfile.js","sourceHash":"a14878af2d5e21c16bc92dd2827d2b47b7b100a6d10ddf39f72d38257499e190","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/BrainProfile.js#0007:defaultMotorProfileKey","exportIndex":7,"name":"defaultMotorProfileKey","kind":"function","signature":"defaultMotorProfileKey(entityId, preset, tier)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ContactTelemetry.md","moduleTitle":"assets/rig/active-body/ContactTelemetry","source":"engine/assets/rig/active-body/ContactTelemetry.js","import":"/engine/assets/rig/active-body/ContactTelemetry.js","sourceHash":"fddfe8a3344fad9001683b7a25ae10ca2e894199220228872bbdf2ad45301967","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/rig/active-body/ContactTelemetry.js","title":"assets/rig/active-body/ContactTelemetry","summary":"engine/assets/rig/active-body/ContactTelemetry.js — extracted from ActiveBodySystem.js (Ragdoll Stack Consolidation Roadmap, Phase 7). Owns ground-contact resolution (Coulomb friction), per-bone/per-foot/per-sensor-anchor contact telemetry (humanoid AND animal — buildContactTelemetry dispatches to buildAnimalContactTelemetry internally so both paths share one entry point), and the contact-related debug overlay builders. Every function here takes its dependencies as explicit parameters, matching the same extraction pattern as AnimalLocomotion.js.","exportCount":26}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ContactTelemetry.md","moduleTitle":"assets/rig/active-body/ContactTelemetry","source":"engine/assets/rig/active-body/ContactTelemetry.js","import":"/engine/assets/rig/active-body/ContactTelemetry.js","sourceHash":"fddfe8a3344fad9001683b7a25ae10ca2e894199220228872bbdf2ad45301967","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ContactTelemetry.js#0000:enforceGroundContact","exportIndex":0,"name":"enforceGroundContact","kind":"function","signature":"enforceGroundContact(ragdoll, groundY, dt = 1/60, sensors = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ContactTelemetry.md","moduleTitle":"assets/rig/active-body/ContactTelemetry","source":"engine/assets/rig/active-body/ContactTelemetry.js","import":"/engine/assets/rig/active-body/ContactTelemetry.js","sourceHash":"fddfe8a3344fad9001683b7a25ae10ca2e894199220228872bbdf2ad45301967","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ContactTelemetry.js#0001:clampSurfaceFriction","exportIndex":1,"name":"clampSurfaceFriction","kind":"function","signature":"clampSurfaceFriction(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ContactTelemetry.md","moduleTitle":"assets/rig/active-body/ContactTelemetry","source":"engine/assets/rig/active-body/ContactTelemetry.js","import":"/engine/assets/rig/active-body/ContactTelemetry.js","sourceHash":"fddfe8a3344fad9001683b7a25ae10ca2e894199220228872bbdf2ad45301967","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ContactTelemetry.js#0002:buildContactTelemetry","exportIndex":2,"name":"buildContactTelemetry","kind":"function","signature":"buildContactTelemetry(entry, groundY = 0, sensors = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ContactTelemetry.md","moduleTitle":"assets/rig/active-body/ContactTelemetry","source":"engine/assets/rig/active-body/ContactTelemetry.js","import":"/engine/assets/rig/active-body/ContactTelemetry.js","sourceHash":"fddfe8a3344fad9001683b7a25ae10ca2e894199220228872bbdf2ad45301967","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ContactTelemetry.js#0003:buildAnimalContactTelemetry","exportIndex":3,"name":"buildAnimalContactTelemetry","kind":"function","signature":"buildAnimalContactTelemetry(entry, groundY = 0, sensors = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ContactTelemetry.md","moduleTitle":"assets/rig/active-body/ContactTelemetry","source":"engine/assets/rig/active-body/ContactTelemetry.js","import":"/engine/assets/rig/active-body/ContactTelemetry.js","sourceHash":"fddfe8a3344fad9001683b7a25ae10ca2e894199220228872bbdf2ad45301967","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ContactTelemetry.js#0004:buildBoneContactRecord","exportIndex":4,"name":"buildBoneContactRecord","kind":"function","signature":"buildBoneContactRecord(entry, spec, p, groundY, sensors)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ContactTelemetry.md","moduleTitle":"assets/rig/active-body/ContactTelemetry","source":"engine/assets/rig/active-body/ContactTelemetry.js","import":"/engine/assets/rig/active-body/ContactTelemetry.js","sourceHash":"fddfe8a3344fad9001683b7a25ae10ca2e894199220228872bbdf2ad45301967","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ContactTelemetry.js#0005:buildSensorAnchorTelemetry","exportIndex":5,"name":"buildSensorAnchorTelemetry","kind":"function","signature":"buildSensorAnchorTelemetry(entry, groundY = 0, sensors = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ContactTelemetry.md","moduleTitle":"assets/rig/active-body/ContactTelemetry","source":"engine/assets/rig/active-body/ContactTelemetry.js","import":"/engine/assets/rig/active-body/ContactTelemetry.js","sourceHash":"fddfe8a3344fad9001683b7a25ae10ca2e894199220228872bbdf2ad45301967","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ContactTelemetry.js#0006:buildSensorAnchorRecord","exportIndex":6,"name":"buildSensorAnchorRecord","kind":"function","signature":"buildSensorAnchorRecord(entry, anchor, groundY, sensors)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ContactTelemetry.md","moduleTitle":"assets/rig/active-body/ContactTelemetry","source":"engine/assets/rig/active-body/ContactTelemetry.js","import":"/engine/assets/rig/active-body/ContactTelemetry.js","sourceHash":"fddfe8a3344fad9001683b7a25ae10ca2e894199220228872bbdf2ad45301967","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ContactTelemetry.js#0007:approximateSensorAnchorPoint","exportIndex":7,"name":"approximateSensorAnchorPoint","kind":"function","signature":"approximateSensorAnchorPoint(entry, anchor, driver, reference = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ContactTelemetry.md","moduleTitle":"assets/rig/active-body/ContactTelemetry","source":"engine/assets/rig/active-body/ContactTelemetry.js","import":"/engine/assets/rig/active-body/ContactTelemetry.js","sourceHash":"fddfe8a3344fad9001683b7a25ae10ca2e894199220228872bbdf2ad45301967","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ContactTelemetry.js#0008:makeSensorAnchorBasis","exportIndex":8,"name":"makeSensorAnchorBasis","kind":"function","signature":"makeSensorAnchorBasis(entry, anchor, driver, reference = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ContactTelemetry.md","moduleTitle":"assets/rig/active-body/ContactTelemetry","source":"engine/assets/rig/active-body/ContactTelemetry.js","import":"/engine/assets/rig/active-body/ContactTelemetry.js","sourceHash":"fddfe8a3344fad9001683b7a25ae10ca2e894199220228872bbdf2ad45301967","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ContactTelemetry.js#0009:isFootAnchor","exportIndex":9,"name":"isFootAnchor","kind":"function","signature":"isFootAnchor(anchor)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ContactTelemetry.md","moduleTitle":"assets/rig/active-body/ContactTelemetry","source":"engine/assets/rig/active-body/ContactTelemetry.js","import":"/engine/assets/rig/active-body/ContactTelemetry.js","sourceHash":"fddfe8a3344fad9001683b7a25ae10ca2e894199220228872bbdf2ad45301967","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ContactTelemetry.js#0010:isHandAnchor","exportIndex":10,"name":"isHandAnchor","kind":"function","signature":"isHandAnchor(anchor)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ContactTelemetry.md","moduleTitle":"assets/rig/active-body/ContactTelemetry","source":"engine/assets/rig/active-body/ContactTelemetry.js","import":"/engine/assets/rig/active-body/ContactTelemetry.js","sourceHash":"fddfe8a3344fad9001683b7a25ae10ca2e894199220228872bbdf2ad45301967","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ContactTelemetry.js#0011:anchorContactPatch","exportIndex":11,"name":"anchorContactPatch","kind":"function","signature":"anchorContactPatch(anchor)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ContactTelemetry.md","moduleTitle":"assets/rig/active-body/ContactTelemetry","source":"engine/assets/rig/active-body/ContactTelemetry.js","import":"/engine/assets/rig/active-body/ContactTelemetry.js","sourceHash":"fddfe8a3344fad9001683b7a25ae10ca2e894199220228872bbdf2ad45301967","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ContactTelemetry.js#0012:readContactSurface","exportIndex":12,"name":"readContactSurface","kind":"function","signature":"readContactSurface(sensors, x, z)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ContactTelemetry.md","moduleTitle":"assets/rig/active-body/ContactTelemetry","source":"engine/assets/rig/active-body/ContactTelemetry.js","import":"/engine/assets/rig/active-body/ContactTelemetry.js","sourceHash":"fddfe8a3344fad9001683b7a25ae10ca2e894199220228872bbdf2ad45301967","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ContactTelemetry.js#0013:buildFootContactDerived","exportIndex":13,"name":"buildFootContactDerived","kind":"function","signature":"buildFootContactDerived(entry, side, record)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ContactTelemetry.md","moduleTitle":"assets/rig/active-body/ContactTelemetry","source":"engine/assets/rig/active-body/ContactTelemetry.js","import":"/engine/assets/rig/active-body/ContactTelemetry.js","sourceHash":"fddfe8a3344fad9001683b7a25ae10ca2e894199220228872bbdf2ad45301967","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ContactTelemetry.js#0014:copyContactTelemetry","exportIndex":14,"name":"copyContactTelemetry","kind":"function","signature":"copyContactTelemetry(contactTelemetry)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ContactTelemetry.md","moduleTitle":"assets/rig/active-body/ContactTelemetry","source":"engine/assets/rig/active-body/ContactTelemetry.js","import":"/engine/assets/rig/active-body/ContactTelemetry.js","sourceHash":"fddfe8a3344fad9001683b7a25ae10ca2e894199220228872bbdf2ad45301967","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ContactTelemetry.js#0015:copySensorAnchorTelemetry","exportIndex":15,"name":"copySensorAnchorTelemetry","kind":"function","signature":"copySensorAnchorTelemetry(sensorAnchors)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ContactTelemetry.md","moduleTitle":"assets/rig/active-body/ContactTelemetry","source":"engine/assets/rig/active-body/ContactTelemetry.js","import":"/engine/assets/rig/active-body/ContactTelemetry.js","sourceHash":"fddfe8a3344fad9001683b7a25ae10ca2e894199220228872bbdf2ad45301967","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ContactTelemetry.js#0016:copyContactRecord","exportIndex":16,"name":"copyContactRecord","kind":"function","signature":"copyContactRecord(record)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ContactTelemetry.md","moduleTitle":"assets/rig/active-body/ContactTelemetry","source":"engine/assets/rig/active-body/ContactTelemetry.js","import":"/engine/assets/rig/active-body/ContactTelemetry.js","sourceHash":"fddfe8a3344fad9001683b7a25ae10ca2e894199220228872bbdf2ad45301967","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ContactTelemetry.js#0017:makeContactOverlay","exportIndex":17,"name":"makeContactOverlay","kind":"function","signature":"makeContactOverlay(contactTelemetry)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ContactTelemetry.md","moduleTitle":"assets/rig/active-body/ContactTelemetry","source":"engine/assets/rig/active-body/ContactTelemetry.js","import":"/engine/assets/rig/active-body/ContactTelemetry.js","sourceHash":"fddfe8a3344fad9001683b7a25ae10ca2e894199220228872bbdf2ad45301967","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ContactTelemetry.js#0018:makeContactFootOverlay","exportIndex":18,"name":"makeContactFootOverlay","kind":"function","signature":"makeContactFootOverlay(record)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ContactTelemetry.md","moduleTitle":"assets/rig/active-body/ContactTelemetry","source":"engine/assets/rig/active-body/ContactTelemetry.js","import":"/engine/assets/rig/active-body/ContactTelemetry.js","sourceHash":"fddfe8a3344fad9001683b7a25ae10ca2e894199220228872bbdf2ad45301967","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ContactTelemetry.js#0019:contactOverlayColor","exportIndex":19,"name":"contactOverlayColor","kind":"function","signature":"contactOverlayColor(record)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ContactTelemetry.md","moduleTitle":"assets/rig/active-body/ContactTelemetry","source":"engine/assets/rig/active-body/ContactTelemetry.js","import":"/engine/assets/rig/active-body/ContactTelemetry.js","sourceHash":"fddfe8a3344fad9001683b7a25ae10ca2e894199220228872bbdf2ad45301967","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ContactTelemetry.js#0020:logContactTrace","exportIndex":20,"name":"logContactTrace","kind":"function","signature":"logContactTrace(entry)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ContactTelemetry.md","moduleTitle":"assets/rig/active-body/ContactTelemetry","source":"engine/assets/rig/active-body/ContactTelemetry.js","import":"/engine/assets/rig/active-body/ContactTelemetry.js","sourceHash":"fddfe8a3344fad9001683b7a25ae10ca2e894199220228872bbdf2ad45301967","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ContactTelemetry.js#0021:formatFootContactTrace","exportIndex":21,"name":"formatFootContactTrace","kind":"function","signature":"formatFootContactTrace(record)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ContactTelemetry.md","moduleTitle":"assets/rig/active-body/ContactTelemetry","source":"engine/assets/rig/active-body/ContactTelemetry.js","import":"/engine/assets/rig/active-body/ContactTelemetry.js","sourceHash":"fddfe8a3344fad9001683b7a25ae10ca2e894199220228872bbdf2ad45301967","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ContactTelemetry.js#0022:scaledAnimalContactWindow","exportIndex":22,"name":"scaledAnimalContactWindow","kind":"function","signature":"scaledAnimalContactWindow(entry, base)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ContactTelemetry.md","moduleTitle":"assets/rig/active-body/ContactTelemetry","source":"engine/assets/rig/active-body/ContactTelemetry.js","import":"/engine/assets/rig/active-body/ContactTelemetry.js","sourceHash":"fddfe8a3344fad9001683b7a25ae10ca2e894199220228872bbdf2ad45301967","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ContactTelemetry.js#0023:FOOT_PARTICLE_SOLE_HEIGHT","exportIndex":23,"name":"FOOT_PARTICLE_SOLE_HEIGHT","kind":"constant","signature":"FOOT_PARTICLE_SOLE_HEIGHT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ContactTelemetry.md","moduleTitle":"assets/rig/active-body/ContactTelemetry","source":"engine/assets/rig/active-body/ContactTelemetry.js","import":"/engine/assets/rig/active-body/ContactTelemetry.js","sourceHash":"fddfe8a3344fad9001683b7a25ae10ca2e894199220228872bbdf2ad45301967","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ContactTelemetry.js#0024:FOOT_PARTICLE_CONTACT_HEIGHT","exportIndex":24,"name":"FOOT_PARTICLE_CONTACT_HEIGHT","kind":"constant","signature":"FOOT_PARTICLE_CONTACT_HEIGHT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/ContactTelemetry.md","moduleTitle":"assets/rig/active-body/ContactTelemetry","source":"engine/assets/rig/active-body/ContactTelemetry.js","import":"/engine/assets/rig/active-body/ContactTelemetry.js","sourceHash":"fddfe8a3344fad9001683b7a25ae10ca2e894199220228872bbdf2ad45301967","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/ContactTelemetry.js#0025:CONTACT_SENSOR_BONES","exportIndex":25,"name":"CONTACT_SENSOR_BONES","kind":"constant","signature":"CONTACT_SENSOR_BONES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/DebugOverlay.md","moduleTitle":"assets/rig/active-body/DebugOverlay","source":"engine/assets/rig/active-body/DebugOverlay.js","import":"/engine/assets/rig/active-body/DebugOverlay.js","sourceHash":"b4d26f1ab15130b1c02d45728e7b886b3caa32f23be0aae8228d8837b7b42beb","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/rig/active-body/DebugOverlay.js","title":"assets/rig/active-body/DebugOverlay","summary":"engine/assets/rig/active-body/DebugOverlay.js — extracted from ActiveBodySystem.js (Ragdoll Stack Consolidation Roadmap, Phase 7). Owns pure display/readback helpers: overlay toggle resolution and the make*Overlay builders consumed by ActiveBodySystem.getDebugOverlay()/getReadback(). Deliberately excludes buildMotorAuthorityMap — despite being overlay-adjacent, it's also consumed by live simulation (applyFootReflexTarget/applyBraceProtection Targets), so it stays with the reflex/motor-authority code, not here.","exportCount":14}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/DebugOverlay.md","moduleTitle":"assets/rig/active-body/DebugOverlay","source":"engine/assets/rig/active-body/DebugOverlay.js","import":"/engine/assets/rig/active-body/DebugOverlay.js","sourceHash":"b4d26f1ab15130b1c02d45728e7b886b3caa32f23be0aae8228d8837b7b42beb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/DebugOverlay.js#0000:makeOverlayToggleMap","exportIndex":0,"name":"makeOverlayToggleMap","kind":"function","signature":"makeOverlayToggleMap(source = null, fallback = DEFAULT_ACTIVE_BODY_OVERLAY_TOGGLES)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/DebugOverlay.md","moduleTitle":"assets/rig/active-body/DebugOverlay","source":"engine/assets/rig/active-body/DebugOverlay.js","import":"/engine/assets/rig/active-body/DebugOverlay.js","sourceHash":"b4d26f1ab15130b1c02d45728e7b886b3caa32f23be0aae8228d8837b7b42beb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/DebugOverlay.js#0001:resolveOverlayToggle","exportIndex":1,"name":"resolveOverlayToggle","kind":"function","signature":"resolveOverlayToggle(value, fallback)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/DebugOverlay.md","moduleTitle":"assets/rig/active-body/DebugOverlay","source":"engine/assets/rig/active-body/DebugOverlay.js","import":"/engine/assets/rig/active-body/DebugOverlay.js","sourceHash":"b4d26f1ab15130b1c02d45728e7b886b3caa32f23be0aae8228d8837b7b42beb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/DebugOverlay.js#0002:makeComOverlay","exportIndex":2,"name":"makeComOverlay","kind":"function","signature":"makeComOverlay(balance)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/DebugOverlay.md","moduleTitle":"assets/rig/active-body/DebugOverlay","source":"engine/assets/rig/active-body/DebugOverlay.js","import":"/engine/assets/rig/active-body/DebugOverlay.js","sourceHash":"b4d26f1ab15130b1c02d45728e7b886b3caa32f23be0aae8228d8837b7b42beb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/DebugOverlay.js#0003:makeSupportOverlay","exportIndex":3,"name":"makeSupportOverlay","kind":"function","signature":"makeSupportOverlay(entry)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/DebugOverlay.md","moduleTitle":"assets/rig/active-body/DebugOverlay","source":"engine/assets/rig/active-body/DebugOverlay.js","import":"/engine/assets/rig/active-body/DebugOverlay.js","sourceHash":"b4d26f1ab15130b1c02d45728e7b886b3caa32f23be0aae8228d8837b7b42beb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/DebugOverlay.js#0004:getSupportFootBoneIds","exportIndex":4,"name":"getSupportFootBoneIds","kind":"function","signature":"getSupportFootBoneIds(entry)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/DebugOverlay.md","moduleTitle":"assets/rig/active-body/DebugOverlay","source":"engine/assets/rig/active-body/DebugOverlay.js","import":"/engine/assets/rig/active-body/DebugOverlay.js","sourceHash":"b4d26f1ab15130b1c02d45728e7b886b3caa32f23be0aae8228d8837b7b42beb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/DebugOverlay.js#0005:makeFatigueOverlay","exportIndex":5,"name":"makeFatigueOverlay","kind":"function","signature":"makeFatigueOverlay(entry)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/DebugOverlay.md","moduleTitle":"assets/rig/active-body/DebugOverlay","source":"engine/assets/rig/active-body/DebugOverlay.js","import":"/engine/assets/rig/active-body/DebugOverlay.js","sourceHash":"b4d26f1ab15130b1c02d45728e7b886b3caa32f23be0aae8228d8837b7b42beb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/DebugOverlay.js#0006:makeOrganStatusOverlay","exportIndex":6,"name":"makeOrganStatusOverlay","kind":"function","signature":"makeOrganStatusOverlay(entry)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/DebugOverlay.md","moduleTitle":"assets/rig/active-body/DebugOverlay","source":"engine/assets/rig/active-body/DebugOverlay.js","import":"/engine/assets/rig/active-body/DebugOverlay.js","sourceHash":"b4d26f1ab15130b1c02d45728e7b886b3caa32f23be0aae8228d8837b7b42beb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/DebugOverlay.js#0007:makePoseTargetOverlay","exportIndex":7,"name":"makePoseTargetOverlay","kind":"function","signature":"makePoseTargetOverlay(entry)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/DebugOverlay.md","moduleTitle":"assets/rig/active-body/DebugOverlay","source":"engine/assets/rig/active-body/DebugOverlay.js","import":"/engine/assets/rig/active-body/DebugOverlay.js","sourceHash":"b4d26f1ab15130b1c02d45728e7b886b3caa32f23be0aae8228d8837b7b42beb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/DebugOverlay.js#0008:makeJointErrorOverlay","exportIndex":8,"name":"makeJointErrorOverlay","kind":"function","signature":"makeJointErrorOverlay(entry)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/DebugOverlay.md","moduleTitle":"assets/rig/active-body/DebugOverlay","source":"engine/assets/rig/active-body/DebugOverlay.js","import":"/engine/assets/rig/active-body/DebugOverlay.js","sourceHash":"b4d26f1ab15130b1c02d45728e7b886b3caa32f23be0aae8228d8837b7b42beb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/DebugOverlay.js#0009:copyRotationTargetSummary","exportIndex":9,"name":"copyRotationTargetSummary","kind":"function","signature":"copyRotationTargetSummary(rotationTargets)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/DebugOverlay.md","moduleTitle":"assets/rig/active-body/DebugOverlay","source":"engine/assets/rig/active-body/DebugOverlay.js","import":"/engine/assets/rig/active-body/DebugOverlay.js","sourceHash":"b4d26f1ab15130b1c02d45728e7b886b3caa32f23be0aae8228d8837b7b42beb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/DebugOverlay.js#0010:copyRotationResidualSummary","exportIndex":10,"name":"copyRotationResidualSummary","kind":"function","signature":"copyRotationResidualSummary(residuals)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/DebugOverlay.md","moduleTitle":"assets/rig/active-body/DebugOverlay","source":"engine/assets/rig/active-body/DebugOverlay.js","import":"/engine/assets/rig/active-body/DebugOverlay.js","sourceHash":"b4d26f1ab15130b1c02d45728e7b886b3caa32f23be0aae8228d8837b7b42beb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/DebugOverlay.js#0011:copyReflexState","exportIndex":11,"name":"copyReflexState","kind":"function","signature":"copyReflexState(reflexState)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/DebugOverlay.md","moduleTitle":"assets/rig/active-body/DebugOverlay","source":"engine/assets/rig/active-body/DebugOverlay.js","import":"/engine/assets/rig/active-body/DebugOverlay.js","sourceHash":"b4d26f1ab15130b1c02d45728e7b886b3caa32f23be0aae8228d8837b7b42beb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/DebugOverlay.js#0012:copyMotorAuthorityMap","exportIndex":12,"name":"copyMotorAuthorityMap","kind":"function","signature":"copyMotorAuthorityMap(map)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/DebugOverlay.md","moduleTitle":"assets/rig/active-body/DebugOverlay","source":"engine/assets/rig/active-body/DebugOverlay.js","import":"/engine/assets/rig/active-body/DebugOverlay.js","sourceHash":"b4d26f1ab15130b1c02d45728e7b886b3caa32f23be0aae8228d8837b7b42beb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/DebugOverlay.js#0013:DEFAULT_ACTIVE_BODY_OVERLAY_TOGGLES","exportIndex":13,"name":"DEFAULT_ACTIVE_BODY_OVERLAY_TOGGLES","kind":"constant","signature":"DEFAULT_ACTIVE_BODY_OVERLAY_TOGGLES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/DirectionDiagnostics.md","moduleTitle":"assets/rig/active-body/DirectionDiagnostics","source":"engine/assets/rig/active-body/DirectionDiagnostics.js","import":"/engine/assets/rig/active-body/DirectionDiagnostics.js","sourceHash":"b6133ceccfc7030eb57c84b1011f9b406580352c6cf4e0eaefd7c30559fd8bcc","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/rig/active-body/DirectionDiagnostics.js","title":"assets/rig/active-body/DirectionDiagnostics","summary":"engine/assets/rig/active-body/DirectionDiagnostics.js — extracted from ActiveBodySystem.js (Ragdoll Stack Consolidation Roadmap, Phase 7). Owns per-frame pelvis-displacement direction tracking (updateDirectionMotion) and the direction/facing diagnostics readback consumed by getDirectionDiagnostics()/getReadback() and the orientation-audit debug logging (still in ActiveBodySystem.js).","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/DirectionDiagnostics.md","moduleTitle":"assets/rig/active-body/DirectionDiagnostics","source":"engine/assets/rig/active-body/DirectionDiagnostics.js","import":"/engine/assets/rig/active-body/DirectionDiagnostics.js","sourceHash":"b6133ceccfc7030eb57c84b1011f9b406580352c6cf4e0eaefd7c30559fd8bcc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/DirectionDiagnostics.js#0000:updateDirectionMotion","exportIndex":0,"name":"updateDirectionMotion","kind":"function","signature":"updateDirectionMotion(entry, dt)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/DirectionDiagnostics.md","moduleTitle":"assets/rig/active-body/DirectionDiagnostics","source":"engine/assets/rig/active-body/DirectionDiagnostics.js","import":"/engine/assets/rig/active-body/DirectionDiagnostics.js","sourceHash":"b6133ceccfc7030eb57c84b1011f9b406580352c6cf4e0eaefd7c30559fd8bcc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/DirectionDiagnostics.js#0001:buildDirectionDiagnostics","exportIndex":1,"name":"buildDirectionDiagnostics","kind":"function","signature":"buildDirectionDiagnostics(entry)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/DirectionDiagnostics.md","moduleTitle":"assets/rig/active-body/DirectionDiagnostics","source":"engine/assets/rig/active-body/DirectionDiagnostics.js","import":"/engine/assets/rig/active-body/DirectionDiagnostics.js","sourceHash":"b6133ceccfc7030eb57c84b1011f9b406580352c6cf4e0eaefd7c30559fd8bcc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/DirectionDiagnostics.js#0002:resolveIntentDirection","exportIndex":2,"name":"resolveIntentDirection","kind":"function","signature":"resolveIntentDirection(entry, pelvis)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/DirectionDiagnostics.md","moduleTitle":"assets/rig/active-body/DirectionDiagnostics","source":"engine/assets/rig/active-body/DirectionDiagnostics.js","import":"/engine/assets/rig/active-body/DirectionDiagnostics.js","sourceHash":"b6133ceccfc7030eb57c84b1011f9b406580352c6cf4e0eaefd7c30559fd8bcc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/DirectionDiagnostics.js#0003:normalize2","exportIndex":3,"name":"normalize2","kind":"function","signature":"normalize2(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/DirectionDiagnostics.md","moduleTitle":"assets/rig/active-body/DirectionDiagnostics","source":"engine/assets/rig/active-body/DirectionDiagnostics.js","import":"/engine/assets/rig/active-body/DirectionDiagnostics.js","sourceHash":"b6133ceccfc7030eb57c84b1011f9b406580352c6cf4e0eaefd7c30559fd8bcc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/DirectionDiagnostics.js#0004:dot2","exportIndex":4,"name":"dot2","kind":"function","signature":"dot2(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/DirectionDiagnostics.md","moduleTitle":"assets/rig/active-body/DirectionDiagnostics","source":"engine/assets/rig/active-body/DirectionDiagnostics.js","import":"/engine/assets/rig/active-body/DirectionDiagnostics.js","sourceHash":"b6133ceccfc7030eb57c84b1011f9b406580352c6cf4e0eaefd7c30559fd8bcc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/DirectionDiagnostics.js#0005:classifyDirectionStatus","exportIndex":5,"name":"classifyDirectionStatus","kind":"function","signature":"classifyDirectionStatus(intentDotVelocity, speed)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/DirectionDiagnostics.md","moduleTitle":"assets/rig/active-body/DirectionDiagnostics","source":"engine/assets/rig/active-body/DirectionDiagnostics.js","import":"/engine/assets/rig/active-body/DirectionDiagnostics.js","sourceHash":"b6133ceccfc7030eb57c84b1011f9b406580352c6cf4e0eaefd7c30559fd8bcc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/DirectionDiagnostics.js#0006:boneNameForParticle","exportIndex":6,"name":"boneNameForParticle","kind":"function","signature":"boneNameForParticle(ragdoll, particle)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/MotionPriorTraining.md","moduleTitle":"assets/rig/active-body/MotionPriorTraining","source":"engine/assets/rig/active-body/MotionPriorTraining.js","import":"/engine/assets/rig/active-body/MotionPriorTraining.js","sourceHash":"20ca80ab20cdc4f3f0fab1672da622ac831bdc7a014ae8ab260db863724cf238","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/rig/active-body/MotionPriorTraining.js","title":"assets/rig/active-body/MotionPriorTraining","summary":"","exportCount":11}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/MotionPriorTraining.md","moduleTitle":"assets/rig/active-body/MotionPriorTraining","source":"engine/assets/rig/active-body/MotionPriorTraining.js","import":"/engine/assets/rig/active-body/MotionPriorTraining.js","sourceHash":"20ca80ab20cdc4f3f0fab1672da622ac831bdc7a014ae8ab260db863724cf238","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/MotionPriorTraining.js#0000:createAniMotionPriorState","exportIndex":0,"name":"createAniMotionPriorState","kind":"function","signature":"createAniMotionPriorState()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/MotionPriorTraining.md","moduleTitle":"assets/rig/active-body/MotionPriorTraining","source":"engine/assets/rig/active-body/MotionPriorTraining.js","import":"/engine/assets/rig/active-body/MotionPriorTraining.js","sourceHash":"20ca80ab20cdc4f3f0fab1672da622ac831bdc7a014ae8ab260db863724cf238","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/MotionPriorTraining.js#0001:getAniMotionPriorReport","exportIndex":1,"name":"getAniMotionPriorReport","kind":"function","signature":"getAniMotionPriorReport(state)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/MotionPriorTraining.md","moduleTitle":"assets/rig/active-body/MotionPriorTraining","source":"engine/assets/rig/active-body/MotionPriorTraining.js","import":"/engine/assets/rig/active-body/MotionPriorTraining.js","sourceHash":"20ca80ab20cdc4f3f0fab1672da622ac831bdc7a014ae8ab260db863724cf238","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/MotionPriorTraining.js#0002:loadAniMotionPrior","exportIndex":2,"name":"loadAniMotionPrior","kind":"function","signature":"async loadAniMotionPrior(state, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/MotionPriorTraining.md","moduleTitle":"assets/rig/active-body/MotionPriorTraining","source":"engine/assets/rig/active-body/MotionPriorTraining.js","import":"/engine/assets/rig/active-body/MotionPriorTraining.js","sourceHash":"20ca80ab20cdc4f3f0fab1672da622ac831bdc7a014ae8ab260db863724cf238","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/MotionPriorTraining.js#0003:mixAniMotionTeacher","exportIndex":3,"name":"mixAniMotionTeacher","kind":"function","signature":"mixAniMotionTeacher(teacher, state, entry, ragdoll, bonesByName, intent = null, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/MotionPriorTraining.md","moduleTitle":"assets/rig/active-body/MotionPriorTraining","source":"engine/assets/rig/active-body/MotionPriorTraining.js","import":"/engine/assets/rig/active-body/MotionPriorTraining.js","sourceHash":"20ca80ab20cdc4f3f0fab1672da622ac831bdc7a014ae8ab260db863724cf238","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/MotionPriorTraining.js#0004:normalizeAniMotionIndexEnvelope","exportIndex":4,"name":"normalizeAniMotionIndexEnvelope","kind":"function","signature":"normalizeAniMotionIndexEnvelope(input)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/MotionPriorTraining.md","moduleTitle":"assets/rig/active-body/MotionPriorTraining","source":"engine/assets/rig/active-body/MotionPriorTraining.js","import":"/engine/assets/rig/active-body/MotionPriorTraining.js","sourceHash":"20ca80ab20cdc4f3f0fab1672da622ac831bdc7a014ae8ab260db863724cf238","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/MotionPriorTraining.js#0005:createAi4AnimationMotionClipFromJson","exportIndex":5,"name":"createAi4AnimationMotionClipFromJson","kind":"function","signature":"createAi4AnimationMotionClipFromJson(json, fileName)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/MotionPriorTraining.md","moduleTitle":"assets/rig/active-body/MotionPriorTraining","source":"engine/assets/rig/active-body/MotionPriorTraining.js","import":"/engine/assets/rig/active-body/MotionPriorTraining.js","sourceHash":"20ca80ab20cdc4f3f0fab1672da622ac831bdc7a014ae8ab260db863724cf238","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/MotionPriorTraining.js#0006:ANI_MOTION_INDEX_FORMAT","exportIndex":6,"name":"ANI_MOTION_INDEX_FORMAT","kind":"constant","signature":"ANI_MOTION_INDEX_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/MotionPriorTraining.md","moduleTitle":"assets/rig/active-body/MotionPriorTraining","source":"engine/assets/rig/active-body/MotionPriorTraining.js","import":"/engine/assets/rig/active-body/MotionPriorTraining.js","sourceHash":"20ca80ab20cdc4f3f0fab1672da622ac831bdc7a014ae8ab260db863724cf238","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/MotionPriorTraining.js#0007:ANI_MOTION_MANIFEST_FORMAT","exportIndex":7,"name":"ANI_MOTION_MANIFEST_FORMAT","kind":"constant","signature":"ANI_MOTION_MANIFEST_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/MotionPriorTraining.md","moduleTitle":"assets/rig/active-body/MotionPriorTraining","source":"engine/assets/rig/active-body/MotionPriorTraining.js","import":"/engine/assets/rig/active-body/MotionPriorTraining.js","sourceHash":"20ca80ab20cdc4f3f0fab1672da622ac831bdc7a014ae8ab260db863724cf238","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/MotionPriorTraining.js#0008:ANI_MOTION_JSON_FORMAT","exportIndex":8,"name":"ANI_MOTION_JSON_FORMAT","kind":"constant","signature":"ANI_MOTION_JSON_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/MotionPriorTraining.md","moduleTitle":"assets/rig/active-body/MotionPriorTraining","source":"engine/assets/rig/active-body/MotionPriorTraining.js","import":"/engine/assets/rig/active-body/MotionPriorTraining.js","sourceHash":"20ca80ab20cdc4f3f0fab1672da622ac831bdc7a014ae8ab260db863724cf238","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/MotionPriorTraining.js#0009:ANI_MOTION_HTTP_SCHEMA_VERSION","exportIndex":9,"name":"ANI_MOTION_HTTP_SCHEMA_VERSION","kind":"constant","signature":"ANI_MOTION_HTTP_SCHEMA_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/MotionPriorTraining.md","moduleTitle":"assets/rig/active-body/MotionPriorTraining","source":"engine/assets/rig/active-body/MotionPriorTraining.js","import":"/engine/assets/rig/active-body/MotionPriorTraining.js","sourceHash":"20ca80ab20cdc4f3f0fab1672da622ac831bdc7a014ae8ab260db863724cf238","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/MotionPriorTraining.js#0010:ANI_MOTION_HTTP_READ_VERSIONS","exportIndex":10,"name":"ANI_MOTION_HTTP_READ_VERSIONS","kind":"constant","signature":"ANI_MOTION_HTTP_READ_VERSIONS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuralMotor.md","moduleTitle":"assets/rig/active-body/NeuralMotor","source":"engine/assets/rig/active-body/NeuralMotor.js","import":"/engine/assets/rig/active-body/NeuralMotor.js","sourceHash":"754f47de710bb4fc1226e9b57f095d16fdb2127bf792012f99507876b4008322","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/rig/active-body/NeuralMotor.js","title":"assets/rig/active-body/NeuralMotor","summary":"NeuralMotor — per-entity self-training MLP for active-ragdoll control. ══════════════════════════════════════════════════════════════════════ WHAT THIS IS (read first) ══════════════════════════════════════════════════════════════════════ The NN adds position RESIDUAL offsets (±8cm per bone) on top of the kinematic verticality pose targets. It is NOT a force generator. The force that actually lifts the body comes from the PD motor in BodyPoses.js, which uses the (NN-refined) targets. This is called \"residual policy learning\" — same approach used by DReCon (Ubisoft, 2020) and DeepMimic. The NN learns the RESIDUAL between hand-authored poses and what the body actually needs. targets_kinematic  (from verticality blend) + NN_residual  (from this file, trained online) = targets_final → PD motor tracks targets_final with realistic muscle force ══════════════════════════════════════════════════════════════════════ TRAINING ALGORITHM: AWR (Advantage-Weighted Regression) ══════════════════════════════════════════════════════════════════════ Every frame: 1. Compute REWARD from body state (pose match, upright, stable, goal progress — see computeReward). 2. Maintain an EMA baseline of reward. 3. Advantage = reward - baseline. 4. Gradient weight = clamp(exp(β·advantage), 0.25, 3). 5. Teacher = what the kinematic controller would nudge this frame. 6. Loss = awrWeight × MSE(NN_output, teacher). 7. One SGD step per frame. Effect: NN imitates the teacher MORE in above-average states and LESS in below-average. This turns behavior cloning into a proper RL method. We don't need full PPO with rollout buffers — training is online and stable because the teacher is always available. STABILITY GATE: training is skipped when the body is thrashing (core velocity > 24 m/s or head below pelvis). Chaotic frames produce noise teacher signals that would corrupt the NN. ══════════════════════════════════════════════════════════════════════ BRAIN TIERS ══════════════════════════════════════════════════════════════════════ tiny   (default NPCs):  43→64→64→60             ≈ 41 KB small  (named NPCs):    43→128→128→60           ≈ 130 KB medium (player default):43→256→256→256→60       ≈ 1.2 MB large  (player upgrade):43→512→1024→1024→60     ≈ 6.6 MB huge   (endgame cap):   43→768→1024³→60         ≈ 10 MB (Input dim 43 = 36 body state + 4 intent one-hot + 3 goal vector.) 10 MB hard cap per brain (enforced at serialize-time). Upgrades via Net2Net weight transplant (upgradeBrain) — preserves learned behavior, new neurons start near-zero and learn later. ══════════════════════════════════════════════════════════════════════ DETERMINISM ══════════════════════════════════════════════════════════════════════ Per-entity seeded PRNG (engine's mulberry32 + FNV-1a string hash of entity id). Same id always produces the same initial brain. Different ids (player, npc_parent, thief_jin) diverge immediately into unique \"personalities\". Drug/seizure/tremor effects also use the per-entity RNG, so effects are reproducible per body. ══════════════════════════════════════════════════════════════════════ NEUROMODIFIERS (drugs, disease, damage) ══════════════════════════════════════════════════════════════════════ The forward pass accepts five perturbations applied to hidden-layer activations, grounded in real pharmacology: noise      — Gaussian σ (alcohol → loss of coordination) dropout    — random activation kill (seizure / KO) scale      — output multiplier (paralytic=0, stimulant=1.4) tremor     — coherent sinusoidal (Parkinsonian 4-6 Hz) delay      — observation buffer lag (concussion) seizureAmp — random spikes in activations See NeuroModifiers.js for preset profiles. ══════════════════════════════════════════════════════════════════════ No external ML library — pure JS, uses engine/core/math/MathRandom.js for shared PRNG utilities. Runs on CPU at 60 Hz for ~20 bodies on a laptop. Training cost ~0.3ms per body per frame (tiny tier).","exportCount":36}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuralMotor.md","moduleTitle":"assets/rig/active-body/NeuralMotor","source":"engine/assets/rig/active-body/NeuralMotor.js","import":"/engine/assets/rig/active-body/NeuralMotor.js","sourceHash":"754f47de710bb4fc1226e9b57f095d16fdb2127bf792012f99507876b4008322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/NeuralMotor.js#0000:tierFromIntelligence","exportIndex":0,"name":"tierFromIntelligence","kind":"function","signature":"tierFromIntelligence(score, magical = false)","summary":"Map an intelligence score to the appropriate tier name. Magical tiers (IQ > 100) only return when `magical=true` — otherwise the character is capped at the highest mortal tier (huge)."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuralMotor.md","moduleTitle":"assets/rig/active-body/NeuralMotor","source":"engine/assets/rig/active-body/NeuralMotor.js","import":"/engine/assets/rig/active-body/NeuralMotor.js","sourceHash":"754f47de710bb4fc1226e9b57f095d16fdb2127bf792012f99507876b4008322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/NeuralMotor.js#0001:nextTier","exportIndex":1,"name":"nextTier","kind":"function","signature":"nextTier(currentTier)","summary":"Get the next tier above the current one, or null if already at top."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuralMotor.md","moduleTitle":"assets/rig/active-body/NeuralMotor","source":"engine/assets/rig/active-body/NeuralMotor.js","import":"/engine/assets/rig/active-body/NeuralMotor.js","sourceHash":"754f47de710bb4fc1226e9b57f095d16fdb2127bf792012f99507876b4008322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/NeuralMotor.js#0002:createNeuralMotor","exportIndex":2,"name":"createNeuralMotor","kind":"function","signature":"createNeuralMotor(tier = DEFAULT_TIER, seedSource = null)","summary":"Create a NeuralMotor. If `seedSource` is given (typically the entity id string), initialization uses a deterministic PRNG — the same id always produces the same starting brain. Different ids get different brains (different \"personalities\") via string hashing."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuralMotor.md","moduleTitle":"assets/rig/active-body/NeuralMotor","source":"engine/assets/rig/active-body/NeuralMotor.js","import":"/engine/assets/rig/active-body/NeuralMotor.js","sourceHash":"754f47de710bb4fc1226e9b57f095d16fdb2127bf792012f99507876b4008322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/NeuralMotor.js#0003:buildObservation","exportIndex":3,"name":"buildObservation","kind":"function","signature":"buildObservation(ragdoll, bonesByName, currentV, targetV, intent = null, rhythms = null, sensors = null)","summary":"Build the observation vector. Dimensions [21..23] originally held a static gravity vector placeholder — we've REPURPOSED these for CPG RHYTHM signals, which give the NN an internal time-base for rhythmic motor actions (walking, breathing): [0..2]   pelvis position (x,y,z) [3..5]   pelvis velocity [6..8]   chest - pelvis (spine vector) [9..11]  shoulder axis (rShoulder - lShoulder) [12..14] COM - pelvis [15]     verticality (0..1, normalized to /50) [16]     verticality gap (target - current, normalized) [17..20] foot contacts (lFoot y, rFoot y, lFoot vy, rFoot vy) [21]     sin(gait_L phase)  ← CPG: left-leg step cycle [22]     cos(gait_L phase) [23]     sin(breath phase)  ← CPG: breathing cycle [24..35] left/right hand/knee positions relative to pelvis [36..39] intent one-hot (stand/walk/duck/act) [40]     target verticality / 50 (goal normalized) [41..42] target direction (xz, world-space, for walk/act) [43..46] terrain (height below / ahead / slope / lateral) — see OBS_SIZE comment [47..50] social (nearest-agent rel xz + rel vxz) [51..54] high-level motor intent (guard/brace/attack/recover) [55..77] tactile/proprioception block The sin/cos encoding of phase is standard NN representation for circular variables (avoids wraparound discontinuity at 2π)."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuralMotor.md","moduleTitle":"assets/rig/active-body/NeuralMotor","source":"engine/assets/rig/active-body/NeuralMotor.js","import":"/engine/assets/rig/active-body/NeuralMotor.js","sourceHash":"754f47de710bb4fc1226e9b57f095d16fdb2127bf792012f99507876b4008322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/NeuralMotor.js#0004:neuralMotorForward","exportIndex":4,"name":"neuralMotorForward","kind":"function","signature":"neuralMotorForward(motor, obs, time = 0, options = null)","summary":"Forward pass through the network with neuromodifier effects applied. Returns per-bone Δxyz offsets (in ragdoll name order)."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuralMotor.md","moduleTitle":"assets/rig/active-body/NeuralMotor","source":"engine/assets/rig/active-body/NeuralMotor.js","import":"/engine/assets/rig/active-body/NeuralMotor.js","sourceHash":"754f47de710bb4fc1226e9b57f095d16fdb2127bf792012f99507876b4008322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/NeuralMotor.js#0005:getNeuralInferenceBackendReport","exportIndex":5,"name":"getNeuralInferenceBackendReport","kind":"function","signature":"getNeuralInferenceBackendReport(bodyCount = 0, gpu = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuralMotor.md","moduleTitle":"assets/rig/active-body/NeuralMotor","source":"engine/assets/rig/active-body/NeuralMotor.js","import":"/engine/assets/rig/active-body/NeuralMotor.js","sourceHash":"754f47de710bb4fc1226e9b57f095d16fdb2127bf792012f99507876b4008322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/NeuralMotor.js#0006:computeReward","exportIndex":6,"name":"computeReward","kind":"function","signature":"computeReward(ragdoll, bonesByName, poseTargets, intent)","summary":"Compute a scalar reward for the current body state. Real DeepMimic-style reward function — additive terms with sensible weights. All terms ∈ [0, 1] so total ≤ sum of weights (~5). poseMatch     — mean bone distance to pose target (closer = higher) upright       — head Y above pelvis Y, normalized (no face-plant) stable        — low velocity = higher (not thrashing) goalProgress  — state-dependent (verticality match, walk speed, etc) Returns: reward ∈ [0, ~5] approximately; scale to [0, 1] with r/5 for AWR weight"}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuralMotor.md","moduleTitle":"assets/rig/active-body/NeuralMotor","source":"engine/assets/rig/active-body/NeuralMotor.js","import":"/engine/assets/rig/active-body/NeuralMotor.js","sourceHash":"754f47de710bb4fc1226e9b57f095d16fdb2127bf792012f99507876b4008322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/NeuralMotor.js#0007:trainNeuralMotor","exportIndex":7,"name":"trainNeuralMotor","kind":"function","signature":"trainNeuralMotor(motor, obs, teacherOffsets, reward = null, opts = {})","summary":"Advantage-Weighted Regression (AWR) training step. Standard behavior cloning: minimize MSE(NN_out, teacher) AWR: minimize reward_weight * MSE(NN_out, teacher) Effect: NN imitates the teacher ONLY when the state is good (high reward). Bad states contribute ~0 gradient. This implicitly learns which actions lead to high reward — a form of reinforcement learning without full PPO machinery. Used in shipping games (DReCon) and research (AWR, RWR)."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuralMotor.md","moduleTitle":"assets/rig/active-body/NeuralMotor","source":"engine/assets/rig/active-body/NeuralMotor.js","import":"/engine/assets/rig/active-body/NeuralMotor.js","sourceHash":"754f47de710bb4fc1226e9b57f095d16fdb2127bf792012f99507876b4008322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/NeuralMotor.js#0008:getNeuralMotorDebugReport","exportIndex":8,"name":"getNeuralMotorDebugReport","kind":"function","signature":"getNeuralMotorDebugReport(motor)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuralMotor.md","moduleTitle":"assets/rig/active-body/NeuralMotor","source":"engine/assets/rig/active-body/NeuralMotor.js","import":"/engine/assets/rig/active-body/NeuralMotor.js","sourceHash":"754f47de710bb4fc1226e9b57f095d16fdb2127bf792012f99507876b4008322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/NeuralMotor.js#0009:applyNeuralOffsets","exportIndex":9,"name":"applyNeuralOffsets","kind":"function","signature":"applyNeuralOffsets(offsets, targets)","summary":"Apply motor output as per-bone target offsets. Call AFTER the kinematic blend has computed its targets; the NN adds corrective deltas."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuralMotor.md","moduleTitle":"assets/rig/active-body/NeuralMotor","source":"engine/assets/rig/active-body/NeuralMotor.js","import":"/engine/assets/rig/active-body/NeuralMotor.js","sourceHash":"754f47de710bb4fc1226e9b57f095d16fdb2127bf792012f99507876b4008322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/NeuralMotor.js#0010:computeTeacherSignal","exportIndex":10,"name":"computeTeacherSignal","kind":"function","signature":"computeTeacherSignal(kinematicTargets, ragdoll, bonesByName, rate = 0.15)","summary":"Compute the \"teacher signal\" — the delta the kinematic controller would apply this frame. For DAgger training, this is what the NN tries to predict. Simple formula: (kinematic_target - actual_position) × rate."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuralMotor.md","moduleTitle":"assets/rig/active-body/NeuralMotor","source":"engine/assets/rig/active-body/NeuralMotor.js","import":"/engine/assets/rig/active-body/NeuralMotor.js","sourceHash":"754f47de710bb4fc1226e9b57f095d16fdb2127bf792012f99507876b4008322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/NeuralMotor.js#0011:serializeMotor","exportIndex":11,"name":"serializeMotor","kind":"function","signature":"serializeMotor(motor)","summary":"Serialize a NeuralMotor to a compact JSON-safe object. Weights are packed as base64-encoded Float32 bytes. Enforces 10 MB per-brain cap. Layout: { magic, version, tier, hiddens[], bytes (base64), framesTrained, lossEMA }"}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuralMotor.md","moduleTitle":"assets/rig/active-body/NeuralMotor","source":"engine/assets/rig/active-body/NeuralMotor.js","import":"/engine/assets/rig/active-body/NeuralMotor.js","sourceHash":"754f47de710bb4fc1226e9b57f095d16fdb2127bf792012f99507876b4008322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/NeuralMotor.js#0012:deserializeMotor","exportIndex":12,"name":"deserializeMotor","kind":"function","signature":"deserializeMotor(motor, data, options = {})","summary":"Load serialized brain data into an existing motor (replaces weights). Rebuilds layer chain if hiddens differ. Returns true on success."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuralMotor.md","moduleTitle":"assets/rig/active-body/NeuralMotor","source":"engine/assets/rig/active-body/NeuralMotor.js","import":"/engine/assets/rig/active-body/NeuralMotor.js","sourceHash":"754f47de710bb4fc1226e9b57f095d16fdb2127bf792012f99507876b4008322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/NeuralMotor.js#0013:analyzeMotorStorage","exportIndex":13,"name":"analyzeMotorStorage","kind":"function","signature":"analyzeMotorStorage(motor, packedBytes = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuralMotor.md","moduleTitle":"assets/rig/active-body/NeuralMotor","source":"engine/assets/rig/active-body/NeuralMotor.js","import":"/engine/assets/rig/active-body/NeuralMotor.js","sourceHash":"754f47de710bb4fc1226e9b57f095d16fdb2127bf792012f99507876b4008322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/NeuralMotor.js#0014:saveBrain","exportIndex":14,"name":"saveBrain","kind":"function","signature":"async saveBrain(id, motor)","summary":"Save a brain under `id`. Enforces 10 MB per-brain cap."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuralMotor.md","moduleTitle":"assets/rig/active-body/NeuralMotor","source":"engine/assets/rig/active-body/NeuralMotor.js","import":"/engine/assets/rig/active-body/NeuralMotor.js","sourceHash":"754f47de710bb4fc1226e9b57f095d16fdb2127bf792012f99507876b4008322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/NeuralMotor.js#0015:loadBrain","exportIndex":15,"name":"loadBrain","kind":"function","signature":"async loadBrain(id)","summary":"Load a brain by id. Returns serialized data or null."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuralMotor.md","moduleTitle":"assets/rig/active-body/NeuralMotor","source":"engine/assets/rig/active-body/NeuralMotor.js","import":"/engine/assets/rig/active-body/NeuralMotor.js","sourceHash":"754f47de710bb4fc1226e9b57f095d16fdb2127bf792012f99507876b4008322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/NeuralMotor.js#0016:deleteBrain","exportIndex":16,"name":"deleteBrain","kind":"function","signature":"async deleteBrain(id)","summary":"Delete a brain."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuralMotor.md","moduleTitle":"assets/rig/active-body/NeuralMotor","source":"engine/assets/rig/active-body/NeuralMotor.js","import":"/engine/assets/rig/active-body/NeuralMotor.js","sourceHash":"754f47de710bb4fc1226e9b57f095d16fdb2127bf792012f99507876b4008322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/NeuralMotor.js#0017:listBrains","exportIndex":17,"name":"listBrains","kind":"function","signature":"async listBrains()","summary":"List all saved brain ids with their sizes."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuralMotor.md","moduleTitle":"assets/rig/active-body/NeuralMotor","source":"engine/assets/rig/active-body/NeuralMotor.js","import":"/engine/assets/rig/active-body/NeuralMotor.js","sourceHash":"754f47de710bb4fc1226e9b57f095d16fdb2127bf792012f99507876b4008322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/NeuralMotor.js#0018:exportBrainAsJson","exportIndex":18,"name":"exportBrainAsJson","kind":"function","signature":"exportBrainAsJson(motor)","summary":"Export a brain as a downloadable JSON file (base64 inside). Useful for sharing trained brains between players."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuralMotor.md","moduleTitle":"assets/rig/active-body/NeuralMotor","source":"engine/assets/rig/active-body/NeuralMotor.js","import":"/engine/assets/rig/active-body/NeuralMotor.js","sourceHash":"754f47de710bb4fc1226e9b57f095d16fdb2127bf792012f99507876b4008322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/NeuralMotor.js#0019:exportBrainAsCompressedJson","exportIndex":19,"name":"exportBrainAsCompressedJson","kind":"function","signature":"async exportBrainAsCompressedJson(motor)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuralMotor.md","moduleTitle":"assets/rig/active-body/NeuralMotor","source":"engine/assets/rig/active-body/NeuralMotor.js","import":"/engine/assets/rig/active-body/NeuralMotor.js","sourceHash":"754f47de710bb4fc1226e9b57f095d16fdb2127bf792012f99507876b4008322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/NeuralMotor.js#0020:importBrainFromJson","exportIndex":20,"name":"importBrainFromJson","kind":"function","signature":"importBrainFromJson(motor, jsonStr)","summary":"Import a JSON string (from exportBrainAsJson) into a motor."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuralMotor.md","moduleTitle":"assets/rig/active-body/NeuralMotor","source":"engine/assets/rig/active-body/NeuralMotor.js","import":"/engine/assets/rig/active-body/NeuralMotor.js","sourceHash":"754f47de710bb4fc1226e9b57f095d16fdb2127bf792012f99507876b4008322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/NeuralMotor.js#0021:importBrainFromJsonAsync","exportIndex":21,"name":"importBrainFromJsonAsync","kind":"function","signature":"async importBrainFromJsonAsync(motor, jsonStr)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuralMotor.md","moduleTitle":"assets/rig/active-body/NeuralMotor","source":"engine/assets/rig/active-body/NeuralMotor.js","import":"/engine/assets/rig/active-body/NeuralMotor.js","sourceHash":"754f47de710bb4fc1226e9b57f095d16fdb2127bf792012f99507876b4008322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/NeuralMotor.js#0022:upgradeBrain","exportIndex":22,"name":"upgradeBrain","kind":"function","signature":"upgradeBrain(motor, newTier)","summary":"Upgrade a motor to a bigger tier. Weight matrices are transplanted so the pre-upgrade behavior is preserved; new neurons start with near-zero influence and gradually learn new behaviors. Returns true if upgraded, false if target tier isn't actually bigger."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuralMotor.md","moduleTitle":"assets/rig/active-body/NeuralMotor","source":"engine/assets/rig/active-body/NeuralMotor.js","import":"/engine/assets/rig/active-body/NeuralMotor.js","sourceHash":"754f47de710bb4fc1226e9b57f095d16fdb2127bf792012f99507876b4008322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/NeuralMotor.js#0023:getUpgradeOptions","exportIndex":23,"name":"getUpgradeOptions","kind":"function","signature":"getUpgradeOptions(currentTier)","summary":"Check which tiers an entity can upgrade to (tier order: tiny→small→medium→large→huge)."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuralMotor.md","moduleTitle":"assets/rig/active-body/NeuralMotor","source":"engine/assets/rig/active-body/NeuralMotor.js","import":"/engine/assets/rig/active-body/NeuralMotor.js","sourceHash":"754f47de710bb4fc1226e9b57f095d16fdb2127bf792012f99507876b4008322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/NeuralMotor.js#0024:BRAIN_TIERS","exportIndex":24,"name":"BRAIN_TIERS","kind":"constant","signature":"BRAIN_TIERS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuralMotor.md","moduleTitle":"assets/rig/active-body/NeuralMotor","source":"engine/assets/rig/active-body/NeuralMotor.js","import":"/engine/assets/rig/active-body/NeuralMotor.js","sourceHash":"754f47de710bb4fc1226e9b57f095d16fdb2127bf792012f99507876b4008322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/NeuralMotor.js#0025:TIER_LADDER","exportIndex":25,"name":"TIER_LADDER","kind":"constant","signature":"TIER_LADDER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuralMotor.md","moduleTitle":"assets/rig/active-body/NeuralMotor","source":"engine/assets/rig/active-body/NeuralMotor.js","import":"/engine/assets/rig/active-body/NeuralMotor.js","sourceHash":"754f47de710bb4fc1226e9b57f095d16fdb2127bf792012f99507876b4008322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/NeuralMotor.js#0026:MAGICAL_TIERS","exportIndex":26,"name":"MAGICAL_TIERS","kind":"constant","signature":"MAGICAL_TIERS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuralMotor.md","moduleTitle":"assets/rig/active-body/NeuralMotor","source":"engine/assets/rig/active-body/NeuralMotor.js","import":"/engine/assets/rig/active-body/NeuralMotor.js","sourceHash":"754f47de710bb4fc1226e9b57f095d16fdb2127bf792012f99507876b4008322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/NeuralMotor.js#0027:INTELLIGENCE_TIERS","exportIndex":27,"name":"INTELLIGENCE_TIERS","kind":"constant","signature":"INTELLIGENCE_TIERS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuralMotor.md","moduleTitle":"assets/rig/active-body/NeuralMotor","source":"engine/assets/rig/active-body/NeuralMotor.js","import":"/engine/assets/rig/active-body/NeuralMotor.js","sourceHash":"754f47de710bb4fc1226e9b57f095d16fdb2127bf792012f99507876b4008322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/NeuralMotor.js#0028:MAX_BRAIN_BYTES","exportIndex":28,"name":"MAX_BRAIN_BYTES","kind":"constant","signature":"MAX_BRAIN_BYTES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuralMotor.md","moduleTitle":"assets/rig/active-body/NeuralMotor","source":"engine/assets/rig/active-body/NeuralMotor.js","import":"/engine/assets/rig/active-body/NeuralMotor.js","sourceHash":"754f47de710bb4fc1226e9b57f095d16fdb2127bf792012f99507876b4008322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/NeuralMotor.js#0029:WARN_BRAIN_BYTES","exportIndex":29,"name":"WARN_BRAIN_BYTES","kind":"constant","signature":"WARN_BRAIN_BYTES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuralMotor.md","moduleTitle":"assets/rig/active-body/NeuralMotor","source":"engine/assets/rig/active-body/NeuralMotor.js","import":"/engine/assets/rig/active-body/NeuralMotor.js","sourceHash":"754f47de710bb4fc1226e9b57f095d16fdb2127bf792012f99507876b4008322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/NeuralMotor.js#0030:MAX_PLAYER_SLOTS","exportIndex":30,"name":"MAX_PLAYER_SLOTS","kind":"constant","signature":"MAX_PLAYER_SLOTS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuralMotor.md","moduleTitle":"assets/rig/active-body/NeuralMotor","source":"engine/assets/rig/active-body/NeuralMotor.js","import":"/engine/assets/rig/active-body/NeuralMotor.js","sourceHash":"754f47de710bb4fc1226e9b57f095d16fdb2127bf792012f99507876b4008322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/NeuralMotor.js#0031:STATE_INTENTS","exportIndex":31,"name":"STATE_INTENTS","kind":"constant","signature":"STATE_INTENTS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuralMotor.md","moduleTitle":"assets/rig/active-body/NeuralMotor","source":"engine/assets/rig/active-body/NeuralMotor.js","import":"/engine/assets/rig/active-body/NeuralMotor.js","sourceHash":"754f47de710bb4fc1226e9b57f095d16fdb2127bf792012f99507876b4008322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/NeuralMotor.js#0032:NUM_INTENTS","exportIndex":32,"name":"NUM_INTENTS","kind":"constant","signature":"NUM_INTENTS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuralMotor.md","moduleTitle":"assets/rig/active-body/NeuralMotor","source":"engine/assets/rig/active-body/NeuralMotor.js","import":"/engine/assets/rig/active-body/NeuralMotor.js","sourceHash":"754f47de710bb4fc1226e9b57f095d16fdb2127bf792012f99507876b4008322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/NeuralMotor.js#0033:ACTION_SIZE","exportIndex":33,"name":"ACTION_SIZE","kind":"re-export","signature":"ACTION_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuralMotor.md","moduleTitle":"assets/rig/active-body/NeuralMotor","source":"engine/assets/rig/active-body/NeuralMotor.js","import":"/engine/assets/rig/active-body/NeuralMotor.js","sourceHash":"754f47de710bb4fc1226e9b57f095d16fdb2127bf792012f99507876b4008322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/NeuralMotor.js#0034:BONE_ORDER","exportIndex":34,"name":"BONE_ORDER","kind":"re-export","signature":"BONE_ORDER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuralMotor.md","moduleTitle":"assets/rig/active-body/NeuralMotor","source":"engine/assets/rig/active-body/NeuralMotor.js","import":"/engine/assets/rig/active-body/NeuralMotor.js","sourceHash":"754f47de710bb4fc1226e9b57f095d16fdb2127bf792012f99507876b4008322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/NeuralMotor.js#0035:OBS_SIZE","exportIndex":35,"name":"OBS_SIZE","kind":"re-export","signature":"OBS_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuralResidualController.md","moduleTitle":"assets/rig/active-body/NeuralResidualController","source":"engine/assets/rig/active-body/NeuralResidualController.js","import":"/engine/assets/rig/active-body/NeuralResidualController.js","sourceHash":"fe1dcf5e7ba692d548678bb06744070359634ca587c725af7b8114cab12321c7","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/rig/active-body/NeuralResidualController.js","title":"assets/rig/active-body/NeuralResidualController","summary":"engine/assets/rig/active-body/NeuralResidualController.js — extracted from ActiveBodySystem.js (Ragdoll Stack Consolidation Roadmap, Phase 7). Owns the humanoid rotation-residual cluster: converting NN bone offsets into axis-angle residuals blended on top of kinematic rotation targets, and zeroing out idle-state NN drift on the horizontal (and, for a fixed set of upper-body bones, vertical) axes so a \"resting\" NN doesn't slowly walk the pose off-target. Pure functions — callers (the pose-target pipeline, still in ActiveBodySystem.js) own all the surrounding per-frame state.","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuralResidualController.md","moduleTitle":"assets/rig/active-body/NeuralResidualController","source":"engine/assets/rig/active-body/NeuralResidualController.js","import":"/engine/assets/rig/active-body/NeuralResidualController.js","sourceHash":"fe1dcf5e7ba692d548678bb06744070359634ca587c725af7b8114cab12321c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/NeuralResidualController.js#0000:dampIdleNeuralOffsets","exportIndex":0,"name":"dampIdleNeuralOffsets","kind":"function","signature":"dampIdleNeuralOffsets(offsets)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuralResidualController.md","moduleTitle":"assets/rig/active-body/NeuralResidualController","source":"engine/assets/rig/active-body/NeuralResidualController.js","import":"/engine/assets/rig/active-body/NeuralResidualController.js","sourceHash":"fe1dcf5e7ba692d548678bb06744070359634ca587c725af7b8114cab12321c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/NeuralResidualController.js#0001:extractRotationTargets","exportIndex":1,"name":"extractRotationTargets","kind":"function","signature":"extractRotationTargets(poseTargets)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuralResidualController.md","moduleTitle":"assets/rig/active-body/NeuralResidualController","source":"engine/assets/rig/active-body/NeuralResidualController.js","import":"/engine/assets/rig/active-body/NeuralResidualController.js","sourceHash":"fe1dcf5e7ba692d548678bb06744070359634ca587c725af7b8114cab12321c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/NeuralResidualController.js#0002:computeNeuralRotationResidualHints","exportIndex":2,"name":"computeNeuralRotationResidualHints","kind":"function","signature":"computeNeuralRotationResidualHints(rotationTargets, poseState, neuralOffsets = null, weight = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuralResidualController.md","moduleTitle":"assets/rig/active-body/NeuralResidualController","source":"engine/assets/rig/active-body/NeuralResidualController.js","import":"/engine/assets/rig/active-body/NeuralResidualController.js","sourceHash":"fe1dcf5e7ba692d548678bb06744070359634ca587c725af7b8114cab12321c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/NeuralResidualController.js#0003:neuralOffsetToAxisAngle","exportIndex":3,"name":"neuralOffsetToAxisAngle","kind":"function","signature":"neuralOffsetToAxisAngle(neuralOffsets, boneId, weight = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuralResidualController.md","moduleTitle":"assets/rig/active-body/NeuralResidualController","source":"engine/assets/rig/active-body/NeuralResidualController.js","import":"/engine/assets/rig/active-body/NeuralResidualController.js","sourceHash":"fe1dcf5e7ba692d548678bb06744070359634ca587c725af7b8114cab12321c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/NeuralResidualController.js#0004:IDLE_NEURAL_VERTICAL_BLOCK_BONES","exportIndex":4,"name":"IDLE_NEURAL_VERTICAL_BLOCK_BONES","kind":"constant","signature":"IDLE_NEURAL_VERTICAL_BLOCK_BONES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuroModifiers.md","moduleTitle":"assets/rig/active-body/NeuroModifiers","source":"engine/assets/rig/active-body/NeuroModifiers.js","import":"/engine/assets/rig/active-body/NeuroModifiers.js","sourceHash":"a77dd92362a606bd2d59ed2f3821b4ad91a3a897ab4cda04d26e2487caa30ac9","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/rig/active-body/NeuroModifiers.js","title":"assets/rig/active-body/NeuroModifiers","summary":"NeuroModifiers — preset effect profiles that corrupt the NeuralMotor's forward pass to produce realistic neurological symptoms. Each profile mutates the `motor.modifiers` bag on a NeuralMotor instance. Multiple effects stack by summing noise/dropout and multiplying scale. Grounded in real pharmacology/neurology: - alcohol:   inhibits GABA → activation noise + slow reaction (delay) - paralytic: blocks ACh at NMJ → output scale → 0 (limp) - stimulant: excess catecholamines → amplified output, jitter - tranq:    dopamine block → output scale 0.4, delay 3 - poison:   neural death → growing dropout + decreasing scale - seizure:  hypersynchronous discharge → huge activation spikes - tremor:   basal-ganglia dysfn (Parkinson) → coherent 4-6 Hz oscillation","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuroModifiers.md","moduleTitle":"assets/rig/active-body/NeuroModifiers","source":"engine/assets/rig/active-body/NeuroModifiers.js","import":"/engine/assets/rig/active-body/NeuroModifiers.js","sourceHash":"a77dd92362a606bd2d59ed2f3821b4ad91a3a897ab4cda04d26e2487caa30ac9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/NeuroModifiers.js#0000:applyNeuroProfile","exportIndex":0,"name":"applyNeuroProfile","kind":"function","signature":"applyNeuroProfile(motor, profileName)","summary":"Apply a preset profile to a NeuralMotor (replaces current modifiers)."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuroModifiers.md","moduleTitle":"assets/rig/active-body/NeuroModifiers","source":"engine/assets/rig/active-body/NeuroModifiers.js","import":"/engine/assets/rig/active-body/NeuroModifiers.js","sourceHash":"a77dd92362a606bd2d59ed2f3821b4ad91a3a897ab4cda04d26e2487caa30ac9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/NeuroModifiers.js#0001:rampNeuroProfile","exportIndex":1,"name":"rampNeuroProfile","kind":"function","signature":"rampNeuroProfile(motor, profileName, t)","summary":"Blend toward a profile over time — e.g. poison progression. `t` ∈ [0,1] is how far along the progression is."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuroModifiers.md","moduleTitle":"assets/rig/active-body/NeuroModifiers","source":"engine/assets/rig/active-body/NeuroModifiers.js","import":"/engine/assets/rig/active-body/NeuroModifiers.js","sourceHash":"a77dd92362a606bd2d59ed2f3821b4ad91a3a897ab4cda04d26e2487caa30ac9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/NeuroModifiers.js#0002:clearNeuroModifiers","exportIndex":2,"name":"clearNeuroModifiers","kind":"function","signature":"clearNeuroModifiers(motor)","summary":"Reset all neuromodifiers to healthy."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuroModifiers.md","moduleTitle":"assets/rig/active-body/NeuroModifiers","source":"engine/assets/rig/active-body/NeuroModifiers.js","import":"/engine/assets/rig/active-body/NeuroModifiers.js","sourceHash":"a77dd92362a606bd2d59ed2f3821b4ad91a3a897ab4cda04d26e2487caa30ac9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/NeuroModifiers.js#0003:applyNeuroJerks","exportIndex":3,"name":"applyNeuroJerks","kind":"function","signature":"applyNeuroJerks(ragdoll, motor, time, dt)","summary":"Apply neuromodifier effects DIRECTLY to the ragdoll bones, bypassing the NN. Needed because the NN only runs during `getup` state; seizures etc. should be visible in ANY state (idle, fallen, walking). This is the physical manifestation of motor-cortex corruption: tremor      → coherent sinusoidal force (Parkinsonian shake) seizureAmp  → random large impulses (tonic-clonic thrashing) noise       → Gaussian jitter on force (alcohol wobble) scale       → global force multiplier (paralytic = 0 → body goes limp) Scales with bone mass so effects feel right (heavy pelvis thrashes harder than hand). Called each frame in the main update loop."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/NeuroModifiers.md","moduleTitle":"assets/rig/active-body/NeuroModifiers","source":"engine/assets/rig/active-body/NeuroModifiers.js","import":"/engine/assets/rig/active-body/NeuroModifiers.js","sourceHash":"a77dd92362a606bd2d59ed2f3821b4ad91a3a897ab4cda04d26e2487caa30ac9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/NeuroModifiers.js#0004:NEURO_PROFILES","exportIndex":4,"name":"NEURO_PROFILES","kind":"constant","signature":"NEURO_PROFILES","summary":"NeuroModifiers — preset effect profiles that corrupt the NeuralMotor's forward pass to produce realistic neurological symptoms. Each profile mutates the `motor.modifiers` bag on a NeuralMotor instance. Multiple effects stack by summing noise/dropout and multiplying scale. Grounded in real pharmacology/neurology: - alcohol:   inhibits GABA → activation noise + slow reaction (delay) - paralytic: blocks ACh at NMJ → output scale → 0 (limp) - stimulant: excess catecholamines → amplified output, jitter - tranq:    dopamine block → output scale 0.4, delay 3 - poison:   neural death → growing dropout + decreasing scale - seizure:  hypersynchronous discharge → huge activation spikes - tremor:   basal-ganglia dysfn (Parkinson) → coherent 4-6 Hz oscillation"}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/OrientationAudit.md","moduleTitle":"assets/rig/active-body/OrientationAudit","source":"engine/assets/rig/active-body/OrientationAudit.js","import":"/engine/assets/rig/active-body/OrientationAudit.js","sourceHash":"d757e89e70564ee44da99e3e9999a90d76b1b5fac75f567f017c1adc23146f95","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/rig/active-body/OrientationAudit.js","title":"assets/rig/active-body/OrientationAudit","summary":"engine/assets/rig/active-body/OrientationAudit.js — extracted from ActiveBodySystem.js (Ragdoll Stack Consolidation Roadmap, Phase 7). Owns pure console.log debug tracing: per-frame locomotion-target deltas, the body-vs-particle-vs-facing orientation audit, and the authored-pose directional-consistency self-check (knees/elbows/toes/belly orientation). Distinct from DebugOverlay.js's structured readback data — this is developer-console tracing only, no return values consumed by callers.","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/OrientationAudit.md","moduleTitle":"assets/rig/active-body/OrientationAudit","source":"engine/assets/rig/active-body/OrientationAudit.js","import":"/engine/assets/rig/active-body/OrientationAudit.js","sourceHash":"d757e89e70564ee44da99e3e9999a90d76b1b5fac75f567f017c1adc23146f95","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/OrientationAudit.js#0000:logLocomotionTargetTrace","exportIndex":0,"name":"logLocomotionTargetTrace","kind":"function","signature":"logLocomotionTargetTrace(entry, ragdoll, targets, meta)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/OrientationAudit.md","moduleTitle":"assets/rig/active-body/OrientationAudit","source":"engine/assets/rig/active-body/OrientationAudit.js","import":"/engine/assets/rig/active-body/OrientationAudit.js","sourceHash":"d757e89e70564ee44da99e3e9999a90d76b1b5fac75f567f017c1adc23146f95","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/OrientationAudit.js#0001:logOrientationAudit","exportIndex":1,"name":"logOrientationAudit","kind":"function","signature":"logOrientationAudit(entry, ragdoll)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/OrientationAudit.md","moduleTitle":"assets/rig/active-body/OrientationAudit","source":"engine/assets/rig/active-body/OrientationAudit.js","import":"/engine/assets/rig/active-body/OrientationAudit.js","sourceHash":"d757e89e70564ee44da99e3e9999a90d76b1b5fac75f567f017c1adc23146f95","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/OrientationAudit.js#0002:logFinalDirectionAudit","exportIndex":2,"name":"logFinalDirectionAudit","kind":"function","signature":"logFinalDirectionAudit(entry)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/OrientationAudit.md","moduleTitle":"assets/rig/active-body/OrientationAudit","source":"engine/assets/rig/active-body/OrientationAudit.js","import":"/engine/assets/rig/active-body/OrientationAudit.js","sourceHash":"d757e89e70564ee44da99e3e9999a90d76b1b5fac75f567f017c1adc23146f95","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/OrientationAudit.js#0003:lHandDelta","exportIndex":3,"name":"lHandDelta","kind":"function","signature":"lHandDelta(yaw, bfX, bfZ)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/OrientationAudit.md","moduleTitle":"assets/rig/active-body/OrientationAudit","source":"engine/assets/rig/active-body/OrientationAudit.js","import":"/engine/assets/rig/active-body/OrientationAudit.js","sourceHash":"d757e89e70564ee44da99e3e9999a90d76b1b5fac75f567f017c1adc23146f95","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/OrientationAudit.js#0004:auditAllPoses","exportIndex":4,"name":"auditAllPoses","kind":"function","signature":"auditAllPoses()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/OrientationAudit.md","moduleTitle":"assets/rig/active-body/OrientationAudit","source":"engine/assets/rig/active-body/OrientationAudit.js","import":"/engine/assets/rig/active-body/OrientationAudit.js","sourceHash":"d757e89e70564ee44da99e3e9999a90d76b1b5fac75f567f017c1adc23146f95","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/OrientationAudit.js#0005:auditPose","exportIndex":5,"name":"auditPose","kind":"function","signature":"auditPose(pose)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/PhysicsMotor.md","moduleTitle":"assets/rig/active-body/PhysicsMotor","source":"engine/assets/rig/active-body/PhysicsMotor.js","import":"/engine/assets/rig/active-body/PhysicsMotor.js","sourceHash":"cf857e1668d16cbc09c776cc9492c6dce8a3c9de4dbbef11b2714b151520981f","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/rig/active-body/PhysicsMotor.js","title":"assets/rig/active-body/PhysicsMotor","summary":"engine/assets/rig/active-body/PhysicsMotor.js — extracted from ActiveBodySystem.js (Ragdoll Stack Consolidation Roadmap, Phase 7). Owns the pure physics-application layer for the humanoid Verlet/PBD ragdoll: initial walking-skeleton kinematic pose construction, pelvis anchoring, per-bone joint-torque drive, and hinge-limit computation/enforcement + compliance scaling. Separate concern from pose-TARGET computation (still in ActiveBodySystem.js) — this module only turns targets/limits into forces applied to the ragdoll's particles.","exportCount":12}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/PhysicsMotor.md","moduleTitle":"assets/rig/active-body/PhysicsMotor","source":"engine/assets/rig/active-body/PhysicsMotor.js","import":"/engine/assets/rig/active-body/PhysicsMotor.js","sourceHash":"cf857e1668d16cbc09c776cc9492c6dce8a3c9de4dbbef11b2714b151520981f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/PhysicsMotor.js#0000:buildWalkingSkeleton","exportIndex":0,"name":"buildWalkingSkeleton","kind":"function","signature":"buildWalkingSkeleton(anchor, nav, m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/PhysicsMotor.md","moduleTitle":"assets/rig/active-body/PhysicsMotor","source":"engine/assets/rig/active-body/PhysicsMotor.js","import":"/engine/assets/rig/active-body/PhysicsMotor.js","sourceHash":"cf857e1668d16cbc09c776cc9492c6dce8a3c9de4dbbef11b2714b151520981f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/PhysicsMotor.js#0001:setRagdollPose","exportIndex":1,"name":"setRagdollPose","kind":"function","signature":"setRagdollPose(ragdoll, anchor, m, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/PhysicsMotor.md","moduleTitle":"assets/rig/active-body/PhysicsMotor","source":"engine/assets/rig/active-body/PhysicsMotor.js","import":"/engine/assets/rig/active-body/PhysicsMotor.js","sourceHash":"cf857e1668d16cbc09c776cc9492c6dce8a3c9de4dbbef11b2714b151520981f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/PhysicsMotor.js#0002:currentPelvisPosition","exportIndex":2,"name":"currentPelvisPosition","kind":"function","signature":"currentPelvisPosition(ragdoll)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/PhysicsMotor.md","moduleTitle":"assets/rig/active-body/PhysicsMotor","source":"engine/assets/rig/active-body/PhysicsMotor.js","import":"/engine/assets/rig/active-body/PhysicsMotor.js","sourceHash":"cf857e1668d16cbc09c776cc9492c6dce8a3c9de4dbbef11b2714b151520981f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/PhysicsMotor.js#0003:applyPelvisAnchor","exportIndex":3,"name":"applyPelvisAnchor","kind":"function","signature":"applyPelvisAnchor(ragdoll, skeleton, dt)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/PhysicsMotor.md","moduleTitle":"assets/rig/active-body/PhysicsMotor","source":"engine/assets/rig/active-body/PhysicsMotor.js","import":"/engine/assets/rig/active-body/PhysicsMotor.js","sourceHash":"cf857e1668d16cbc09c776cc9492c6dce8a3c9de4dbbef11b2714b151520981f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/PhysicsMotor.js#0004:applyJointTorques","exportIndex":4,"name":"applyJointTorques","kind":"function","signature":"applyJointTorques(ragdoll, skeleton, dt, state, driveByBone = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/PhysicsMotor.md","moduleTitle":"assets/rig/active-body/PhysicsMotor","source":"engine/assets/rig/active-body/PhysicsMotor.js","import":"/engine/assets/rig/active-body/PhysicsMotor.js","sourceHash":"cf857e1668d16cbc09c776cc9492c6dce8a3c9de4dbbef11b2714b151520981f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/PhysicsMotor.js#0005:computeHingeLimits","exportIndex":5,"name":"computeHingeLimits","kind":"function","signature":"computeHingeLimits(ragdoll, m, jointLimitsByBone = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/PhysicsMotor.md","moduleTitle":"assets/rig/active-body/PhysicsMotor","source":"engine/assets/rig/active-body/PhysicsMotor.js","import":"/engine/assets/rig/active-body/PhysicsMotor.js","sourceHash":"cf857e1668d16cbc09c776cc9492c6dce8a3c9de4dbbef11b2714b151520981f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/PhysicsMotor.js#0006:applyHingeLimits","exportIndex":6,"name":"applyHingeLimits","kind":"function","signature":"applyHingeLimits(limits)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/PhysicsMotor.md","moduleTitle":"assets/rig/active-body/PhysicsMotor","source":"engine/assets/rig/active-body/PhysicsMotor.js","import":"/engine/assets/rig/active-body/PhysicsMotor.js","sourceHash":"cf857e1668d16cbc09c776cc9492c6dce8a3c9de4dbbef11b2714b151520981f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/PhysicsMotor.js#0007:complianceStrength","exportIndex":7,"name":"complianceStrength","kind":"function","signature":"complianceStrength(jointLimitsByBone)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/PhysicsMotor.md","moduleTitle":"assets/rig/active-body/PhysicsMotor","source":"engine/assets/rig/active-body/PhysicsMotor.js","import":"/engine/assets/rig/active-body/PhysicsMotor.js","sourceHash":"cf857e1668d16cbc09c776cc9492c6dce8a3c9de4dbbef11b2714b151520981f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/PhysicsMotor.js#0008:complianceStrengthFor","exportIndex":8,"name":"complianceStrengthFor","kind":"function","signature":"complianceStrengthFor(jointLimitsByBone, names, fallback = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/PhysicsMotor.md","moduleTitle":"assets/rig/active-body/PhysicsMotor","source":"engine/assets/rig/active-body/PhysicsMotor.js","import":"/engine/assets/rig/active-body/PhysicsMotor.js","sourceHash":"cf857e1668d16cbc09c776cc9492c6dce8a3c9de4dbbef11b2714b151520981f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/PhysicsMotor.js#0009:jointSwingScaleFor","exportIndex":9,"name":"jointSwingScaleFor","kind":"function","signature":"jointSwingScaleFor(jointLimitsByBone, names, defaultSwingDeg)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/PhysicsMotor.md","moduleTitle":"assets/rig/active-body/PhysicsMotor","source":"engine/assets/rig/active-body/PhysicsMotor.js","import":"/engine/assets/rig/active-body/PhysicsMotor.js","sourceHash":"cf857e1668d16cbc09c776cc9492c6dce8a3c9de4dbbef11b2714b151520981f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/PhysicsMotor.js#0010:jointTwistScaleFor","exportIndex":10,"name":"jointTwistScaleFor","kind":"function","signature":"jointTwistScaleFor(jointLimitsByBone, names, defaultTwistDeg)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/PhysicsMotor.md","moduleTitle":"assets/rig/active-body/PhysicsMotor","source":"engine/assets/rig/active-body/PhysicsMotor.js","import":"/engine/assets/rig/active-body/PhysicsMotor.js","sourceHash":"cf857e1668d16cbc09c776cc9492c6dce8a3c9de4dbbef11b2714b151520981f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/PhysicsMotor.js#0011:JOINT_STIFFNESS","exportIndex":11,"name":"JOINT_STIFFNESS","kind":"constant","signature":"JOINT_STIFFNESS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/PoseAuthority.md","moduleTitle":"assets/rig/active-body/PoseAuthority","source":"engine/assets/rig/active-body/PoseAuthority.js","import":"/engine/assets/rig/active-body/PoseAuthority.js","sourceHash":"20aa316053b6aa08d91e1a16c3092bff57fce0304131ef23c077a7fd24e34987","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/rig/active-body/PoseAuthority.js","title":"assets/rig/active-body/PoseAuthority","summary":"engine/assets/rig/active-body/PoseAuthority.js — extracted from ActiveBodySystem.js (Ragdoll Stack Consolidation Roadmap, Phase 7). This is the hardest and last Phase 7 cluster: the humanoid standing/getup pose-target pipeline — applyStandingController (kinematic pose blending, walk-cycle overlay, balance correction, rhythm/breathing modulation, contact reflexes, brace protection, NN residual blending, training) and applyGetupController (orientation-aware rise sequencing), plus every helper they call (limb/shoulder/head stabilization, reflex classification, motor-authority mapping, pose-state resolution). Deliberately NOT split further — these helpers are tightly entangled with the two controller functions and with each other; see the Phase 7 pre-work notes in the roadmap doc.","exportCount":31}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/PoseAuthority.md","moduleTitle":"assets/rig/active-body/PoseAuthority","source":"engine/assets/rig/active-body/PoseAuthority.js","import":"/engine/assets/rig/active-body/PoseAuthority.js","sourceHash":"20aa316053b6aa08d91e1a16c3092bff57fce0304131ef23c077a7fd24e34987","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/PoseAuthority.js#0000:coupleShoulderGirdleTargets","exportIndex":0,"name":"coupleShoulderGirdleTargets","kind":"function","signature":"coupleShoulderGirdleTargets(entry, ragdoll, targets, yaw)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/PoseAuthority.md","moduleTitle":"assets/rig/active-body/PoseAuthority","source":"engine/assets/rig/active-body/PoseAuthority.js","import":"/engine/assets/rig/active-body/PoseAuthority.js","sourceHash":"20aa316053b6aa08d91e1a16c3092bff57fce0304131ef23c077a7fd24e34987","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/PoseAuthority.js#0001:getBodySideAxis","exportIndex":1,"name":"getBodySideAxis","kind":"function","signature":"getBodySideAxis(entry, ragdoll, yaw = null, preferYaw = false)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/PoseAuthority.md","moduleTitle":"assets/rig/active-body/PoseAuthority","source":"engine/assets/rig/active-body/PoseAuthority.js","import":"/engine/assets/rig/active-body/PoseAuthority.js","sourceHash":"20aa316053b6aa08d91e1a16c3092bff57fce0304131ef23c077a7fd24e34987","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/PoseAuthority.js#0002:clampTargetToSide","exportIndex":2,"name":"clampTargetToSide","kind":"function","signature":"clampTargetToSide(targets, name, base, side, minSide, isLeft, strength = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/PoseAuthority.md","moduleTitle":"assets/rig/active-body/PoseAuthority","source":"engine/assets/rig/active-body/PoseAuthority.js","import":"/engine/assets/rig/active-body/PoseAuthority.js","sourceHash":"20aa316053b6aa08d91e1a16c3092bff57fce0304131ef23c077a7fd24e34987","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/PoseAuthority.js#0003:alignFootToeTargets","exportIndex":3,"name":"alignFootToeTargets","kind":"function","signature":"alignFootToeTargets(entry, targets, yaw, leftLegIsSwing = false, rightLegIsSwing = false, isWalking = false)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/PoseAuthority.md","moduleTitle":"assets/rig/active-body/PoseAuthority","source":"engine/assets/rig/active-body/PoseAuthority.js","import":"/engine/assets/rig/active-body/PoseAuthority.js","sourceHash":"20aa316053b6aa08d91e1a16c3092bff57fce0304131ef23c077a7fd24e34987","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/PoseAuthority.js#0004:clampLimbSideTargets","exportIndex":4,"name":"clampLimbSideTargets","kind":"function","signature":"clampLimbSideTargets(entry, ragdoll, targets, yaw = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/PoseAuthority.md","moduleTitle":"assets/rig/active-body/PoseAuthority","source":"engine/assets/rig/active-body/PoseAuthority.js","import":"/engine/assets/rig/active-body/PoseAuthority.js","sourceHash":"20aa316053b6aa08d91e1a16c3092bff57fce0304131ef23c077a7fd24e34987","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/PoseAuthority.js#0005:stabilizeLimbSideFrame","exportIndex":5,"name":"stabilizeLimbSideFrame","kind":"function","signature":"stabilizeLimbSideFrame(entry, ragdoll, dt)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/PoseAuthority.md","moduleTitle":"assets/rig/active-body/PoseAuthority","source":"engine/assets/rig/active-body/PoseAuthority.js","import":"/engine/assets/rig/active-body/PoseAuthority.js","sourceHash":"20aa316053b6aa08d91e1a16c3092bff57fce0304131ef23c077a7fd24e34987","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/PoseAuthority.js#0006:stabilizeShoulderGirdleFrame","exportIndex":6,"name":"stabilizeShoulderGirdleFrame","kind":"function","signature":"stabilizeShoulderGirdleFrame(entry, ragdoll)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/PoseAuthority.md","moduleTitle":"assets/rig/active-body/PoseAuthority","source":"engine/assets/rig/active-body/PoseAuthority.js","import":"/engine/assets/rig/active-body/PoseAuthority.js","sourceHash":"20aa316053b6aa08d91e1a16c3092bff57fce0304131ef23c077a7fd24e34987","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/PoseAuthority.js#0007:dampRelativeVelocity","exportIndex":7,"name":"dampRelativeVelocity","kind":"function","signature":"dampRelativeVelocity(child, parent, keep, dt)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/PoseAuthority.md","moduleTitle":"assets/rig/active-body/PoseAuthority","source":"engine/assets/rig/active-body/PoseAuthority.js","import":"/engine/assets/rig/active-body/PoseAuthority.js","sourceHash":"20aa316053b6aa08d91e1a16c3092bff57fce0304131ef23c077a7fd24e34987","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/PoseAuthority.js#0008:stabilizeHeadNeckFrame","exportIndex":8,"name":"stabilizeHeadNeckFrame","kind":"function","signature":"stabilizeHeadNeckFrame(entry, ragdoll, dt)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/PoseAuthority.md","moduleTitle":"assets/rig/active-body/PoseAuthority","source":"engine/assets/rig/active-body/PoseAuthority.js","import":"/engine/assets/rig/active-body/PoseAuthority.js","sourceHash":"20aa316053b6aa08d91e1a16c3092bff57fce0304131ef23c077a7fd24e34987","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/PoseAuthority.js#0009:hasActiveMoveIntent","exportIndex":9,"name":"hasActiveMoveIntent","kind":"function","signature":"hasActiveMoveIntent(entry)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/PoseAuthority.md","moduleTitle":"assets/rig/active-body/PoseAuthority","source":"engine/assets/rig/active-body/PoseAuthority.js","import":"/engine/assets/rig/active-body/PoseAuthority.js","sourceHash":"20aa316053b6aa08d91e1a16c3092bff57fce0304131ef23c077a7fd24e34987","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/PoseAuthority.js#0010:applyGroundedNoIntentSettleBrake","exportIndex":10,"name":"applyGroundedNoIntentSettleBrake","kind":"function","signature":"applyGroundedNoIntentSettleBrake(entry, ragdoll, dt)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/PoseAuthority.md","moduleTitle":"assets/rig/active-body/PoseAuthority","source":"engine/assets/rig/active-body/PoseAuthority.js","import":"/engine/assets/rig/active-body/PoseAuthority.js","sourceHash":"20aa316053b6aa08d91e1a16c3092bff57fce0304131ef23c077a7fd24e34987","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/PoseAuthority.js#0011:applyBalanceCorrectionToTargets","exportIndex":11,"name":"applyBalanceCorrectionToTargets","kind":"function","signature":"applyBalanceCorrectionToTargets(targets, balanceState, weight = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/PoseAuthority.md","moduleTitle":"assets/rig/active-body/PoseAuthority","source":"engine/assets/rig/active-body/PoseAuthority.js","import":"/engine/assets/rig/active-body/PoseAuthority.js","sourceHash":"20aa316053b6aa08d91e1a16c3092bff57fce0304131ef23c077a7fd24e34987","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/PoseAuthority.js#0012:applyRhythmPoseModulation","exportIndex":12,"name":"applyRhythmPoseModulation","kind":"function","signature":"applyRhythmPoseModulation(targets, rhythms, weight = 1, fatigue = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/PoseAuthority.md","moduleTitle":"assets/rig/active-body/PoseAuthority","source":"engine/assets/rig/active-body/PoseAuthority.js","import":"/engine/assets/rig/active-body/PoseAuthority.js","sourceHash":"20aa316053b6aa08d91e1a16c3092bff57fce0304131ef23c077a7fd24e34987","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/PoseAuthority.js#0013:makeReflexState","exportIndex":13,"name":"makeReflexState","kind":"function","signature":"makeReflexState()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/PoseAuthority.md","moduleTitle":"assets/rig/active-body/PoseAuthority","source":"engine/assets/rig/active-body/PoseAuthority.js","import":"/engine/assets/rig/active-body/PoseAuthority.js","sourceHash":"20aa316053b6aa08d91e1a16c3092bff57fce0304131ef23c077a7fd24e34987","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/PoseAuthority.js#0014:applyContactReflexTargets","exportIndex":14,"name":"applyContactReflexTargets","kind":"function","signature":"applyContactReflexTargets(entry, ragdoll, targets, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/PoseAuthority.md","moduleTitle":"assets/rig/active-body/PoseAuthority","source":"engine/assets/rig/active-body/PoseAuthority.js","import":"/engine/assets/rig/active-body/PoseAuthority.js","sourceHash":"20aa316053b6aa08d91e1a16c3092bff57fce0304131ef23c077a7fd24e34987","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/PoseAuthority.js#0015:classifyReflexMode","exportIndex":15,"name":"classifyReflexMode","kind":"function","signature":"classifyReflexMode(entry, options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/PoseAuthority.md","moduleTitle":"assets/rig/active-body/PoseAuthority","source":"engine/assets/rig/active-body/PoseAuthority.js","import":"/engine/assets/rig/active-body/PoseAuthority.js","sourceHash":"20aa316053b6aa08d91e1a16c3092bff57fce0304131ef23c077a7fd24e34987","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/PoseAuthority.js#0016:reflexConfidence","exportIndex":16,"name":"reflexConfidence","kind":"function","signature":"reflexConfidence(contactTelemetry, mode, leftTrust, rightTrust)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/PoseAuthority.md","moduleTitle":"assets/rig/active-body/PoseAuthority","source":"engine/assets/rig/active-body/PoseAuthority.js","import":"/engine/assets/rig/active-body/PoseAuthority.js","sourceHash":"20aa316053b6aa08d91e1a16c3092bff57fce0304131ef23c077a7fd24e34987","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/PoseAuthority.js#0017:buildMotorAuthorityMap","exportIndex":17,"name":"buildMotorAuthorityMap","kind":"function","signature":"buildMotorAuthorityMap(entry, contactTelemetry)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/PoseAuthority.md","moduleTitle":"assets/rig/active-body/PoseAuthority","source":"engine/assets/rig/active-body/PoseAuthority.js","import":"/engine/assets/rig/active-body/PoseAuthority.js","sourceHash":"20aa316053b6aa08d91e1a16c3092bff57fce0304131ef23c077a7fd24e34987","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/PoseAuthority.js#0018:applyFootReflexTarget","exportIndex":18,"name":"applyFootReflexTarget","kind":"function","signature":"applyFootReflexTarget(entry, targets, record, options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/PoseAuthority.md","moduleTitle":"assets/rig/active-body/PoseAuthority","source":"engine/assets/rig/active-body/PoseAuthority.js","import":"/engine/assets/rig/active-body/PoseAuthority.js","sourceHash":"20aa316053b6aa08d91e1a16c3092bff57fce0304131ef23c077a7fd24e34987","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/PoseAuthority.js#0019:applyBraceProtectionTargets","exportIndex":19,"name":"applyBraceProtectionTargets","kind":"function","signature":"applyBraceProtectionTargets(contactTelemetry, targets, options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/PoseAuthority.md","moduleTitle":"assets/rig/active-body/PoseAuthority","source":"engine/assets/rig/active-body/PoseAuthority.js","import":"/engine/assets/rig/active-body/PoseAuthority.js","sourceHash":"20aa316053b6aa08d91e1a16c3092bff57fce0304131ef23c077a7fd24e34987","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/PoseAuthority.js#0020:resolveActivePoseState","exportIndex":20,"name":"resolveActivePoseState","kind":"function","signature":"resolveActivePoseState(entry)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/PoseAuthority.md","moduleTitle":"assets/rig/active-body/PoseAuthority","source":"engine/assets/rig/active-body/PoseAuthority.js","import":"/engine/assets/rig/active-body/PoseAuthority.js","sourceHash":"20aa316053b6aa08d91e1a16c3092bff57fce0304131ef23c077a7fd24e34987","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/PoseAuthority.js#0021:makePoseStateMeta","exportIndex":21,"name":"makePoseStateMeta","kind":"function","signature":"makePoseStateMeta(stateId)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/PoseAuthority.md","moduleTitle":"assets/rig/active-body/PoseAuthority","source":"engine/assets/rig/active-body/PoseAuthority.js","import":"/engine/assets/rig/active-body/PoseAuthority.js","sourceHash":"20aa316053b6aa08d91e1a16c3092bff57fce0304131ef23c077a7fd24e34987","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/PoseAuthority.js#0022:applyStandingController","exportIndex":22,"name":"applyStandingController","kind":"function","signature":"applyStandingController(ragdoll, entry, dt)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/PoseAuthority.md","moduleTitle":"assets/rig/active-body/PoseAuthority","source":"engine/assets/rig/active-body/PoseAuthority.js","import":"/engine/assets/rig/active-body/PoseAuthority.js","sourceHash":"20aa316053b6aa08d91e1a16c3092bff57fce0304131ef23c077a7fd24e34987","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/PoseAuthority.js#0023:_bonesByName","exportIndex":23,"name":"_bonesByName","kind":"function","signature":"_bonesByName(ragdoll)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/PoseAuthority.md","moduleTitle":"assets/rig/active-body/PoseAuthority","source":"engine/assets/rig/active-body/PoseAuthority.js","import":"/engine/assets/rig/active-body/PoseAuthority.js","sourceHash":"20aa316053b6aa08d91e1a16c3092bff57fce0304131ef23c077a7fd24e34987","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/PoseAuthority.js#0024:applyGetupController","exportIndex":24,"name":"applyGetupController","kind":"function","signature":"applyGetupController(ragdoll, entry, dt)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/PoseAuthority.md","moduleTitle":"assets/rig/active-body/PoseAuthority","source":"engine/assets/rig/active-body/PoseAuthority.js","import":"/engine/assets/rig/active-body/PoseAuthority.js","sourceHash":"20aa316053b6aa08d91e1a16c3092bff57fce0304131ef23c077a7fd24e34987","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/PoseAuthority.js#0025:getBoneRadius","exportIndex":25,"name":"getBoneRadius","kind":"function","signature":"getBoneRadius(boneId, m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/PoseAuthority.md","moduleTitle":"assets/rig/active-body/PoseAuthority","source":"engine/assets/rig/active-body/PoseAuthority.js","import":"/engine/assets/rig/active-body/PoseAuthority.js","sourceHash":"20aa316053b6aa08d91e1a16c3092bff57fce0304131ef23c077a7fd24e34987","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/PoseAuthority.js#0026:stateToString","exportIndex":26,"name":"stateToString","kind":"function","signature":"stateToString(state)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/PoseAuthority.md","moduleTitle":"assets/rig/active-body/PoseAuthority","source":"engine/assets/rig/active-body/PoseAuthority.js","import":"/engine/assets/rig/active-body/PoseAuthority.js","sourceHash":"20aa316053b6aa08d91e1a16c3092bff57fce0304131ef23c077a7fd24e34987","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/PoseAuthority.js#0027:WALK_HORIZONTAL_SCALE_BY_BONE","exportIndex":27,"name":"WALK_HORIZONTAL_SCALE_BY_BONE","kind":"constant","signature":"WALK_HORIZONTAL_SCALE_BY_BONE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/PoseAuthority.md","moduleTitle":"assets/rig/active-body/PoseAuthority","source":"engine/assets/rig/active-body/PoseAuthority.js","import":"/engine/assets/rig/active-body/PoseAuthority.js","sourceHash":"20aa316053b6aa08d91e1a16c3092bff57fce0304131ef23c077a7fd24e34987","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/PoseAuthority.js#0028:WALK_HORIZONTAL_DAMPING_SCALE_BY_BONE","exportIndex":28,"name":"WALK_HORIZONTAL_DAMPING_SCALE_BY_BONE","kind":"constant","signature":"WALK_HORIZONTAL_DAMPING_SCALE_BY_BONE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/PoseAuthority.md","moduleTitle":"assets/rig/active-body/PoseAuthority","source":"engine/assets/rig/active-body/PoseAuthority.js","import":"/engine/assets/rig/active-body/PoseAuthority.js","sourceHash":"20aa316053b6aa08d91e1a16c3092bff57fce0304131ef23c077a7fd24e34987","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/PoseAuthority.js#0029:IDLE_HORIZONTAL_SCALE_BY_BONE","exportIndex":29,"name":"IDLE_HORIZONTAL_SCALE_BY_BONE","kind":"constant","signature":"IDLE_HORIZONTAL_SCALE_BY_BONE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/PoseAuthority.md","moduleTitle":"assets/rig/active-body/PoseAuthority","source":"engine/assets/rig/active-body/PoseAuthority.js","import":"/engine/assets/rig/active-body/PoseAuthority.js","sourceHash":"20aa316053b6aa08d91e1a16c3092bff57fce0304131ef23c077a7fd24e34987","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/PoseAuthority.js#0030:IDLE_HORIZONTAL_DAMPING_SCALE_BY_BONE","exportIndex":30,"name":"IDLE_HORIZONTAL_DAMPING_SCALE_BY_BONE","kind":"constant","signature":"IDLE_HORIZONTAL_DAMPING_SCALE_BY_BONE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/UniversalLegScheduler.md","moduleTitle":"assets/rig/active-body/UniversalLegScheduler","source":"engine/assets/rig/active-body/UniversalLegScheduler.js","import":"/engine/assets/rig/active-body/UniversalLegScheduler.js","sourceHash":"6ec7aa4e3c3db39543b7b9e9b493e84c081c39aef12d69178f923d4d344ec31c","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/rig/active-body/UniversalLegScheduler.js","title":"assets/rig/active-body/UniversalLegScheduler","summary":"engine/assets/rig/active-body/UniversalLegScheduler.js — extracted from ActiveBodySystem.js (Ragdoll Stack Consolidation Roadmap, Phase 7). Owns N-legged support-polygon analysis and gait-preset recommendation for the generic/readback-only \"universal leg scheduler\" — the leg discovery, phase, and support-polygon math shared conceptually with the animal gait system, but exposed here purely as debug/readback (ActiveBodySystem's getReadback() is the only call site; it does not drive live pose targets).","exportCount":22}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/UniversalLegScheduler.md","moduleTitle":"assets/rig/active-body/UniversalLegScheduler","source":"engine/assets/rig/active-body/UniversalLegScheduler.js","import":"/engine/assets/rig/active-body/UniversalLegScheduler.js","sourceHash":"6ec7aa4e3c3db39543b7b9e9b493e84c081c39aef12d69178f923d4d344ec31c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/UniversalLegScheduler.js#0000:makeUniversalLegSchedulerReadback","exportIndex":0,"name":"makeUniversalLegSchedulerReadback","kind":"function","signature":"makeUniversalLegSchedulerReadback(entry, contactTelemetry)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/UniversalLegScheduler.md","moduleTitle":"assets/rig/active-body/UniversalLegScheduler","source":"engine/assets/rig/active-body/UniversalLegScheduler.js","import":"/engine/assets/rig/active-body/UniversalLegScheduler.js","sourceHash":"6ec7aa4e3c3db39543b7b9e9b493e84c081c39aef12d69178f923d4d344ec31c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/UniversalLegScheduler.js#0001:discoverUniversalLegs","exportIndex":1,"name":"discoverUniversalLegs","kind":"function","signature":"discoverUniversalLegs(entry)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/UniversalLegScheduler.md","moduleTitle":"assets/rig/active-body/UniversalLegScheduler","source":"engine/assets/rig/active-body/UniversalLegScheduler.js","import":"/engine/assets/rig/active-body/UniversalLegScheduler.js","sourceHash":"6ec7aa4e3c3db39543b7b9e9b493e84c081c39aef12d69178f923d4d344ec31c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/UniversalLegScheduler.js#0002:normalizeUniversalLegDescriptors","exportIndex":2,"name":"normalizeUniversalLegDescriptors","kind":"function","signature":"normalizeUniversalLegDescriptors(descriptors, entry, allowMetadataOnly = true)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/UniversalLegScheduler.md","moduleTitle":"assets/rig/active-body/UniversalLegScheduler","source":"engine/assets/rig/active-body/UniversalLegScheduler.js","import":"/engine/assets/rig/active-body/UniversalLegScheduler.js","sourceHash":"6ec7aa4e3c3db39543b7b9e9b493e84c081c39aef12d69178f923d4d344ec31c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/UniversalLegScheduler.js#0003:defaultUniversalLegRhythmIndex","exportIndex":3,"name":"defaultUniversalLegRhythmIndex","kind":"function","signature":"defaultUniversalLegRhythmIndex(descriptor)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/UniversalLegScheduler.md","moduleTitle":"assets/rig/active-body/UniversalLegScheduler","source":"engine/assets/rig/active-body/UniversalLegScheduler.js","import":"/engine/assets/rig/active-body/UniversalLegScheduler.js","sourceHash":"6ec7aa4e3c3db39543b7b9e9b493e84c081c39aef12d69178f923d4d344ec31c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/UniversalLegScheduler.js#0004:makeUniversalLegReadback","exportIndex":4,"name":"makeUniversalLegReadback","kind":"function","signature":"makeUniversalLegReadback(entry, leg, contactTelemetry)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/UniversalLegScheduler.md","moduleTitle":"assets/rig/active-body/UniversalLegScheduler","source":"engine/assets/rig/active-body/UniversalLegScheduler.js","import":"/engine/assets/rig/active-body/UniversalLegScheduler.js","sourceHash":"6ec7aa4e3c3db39543b7b9e9b493e84c081c39aef12d69178f923d4d344ec31c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/UniversalLegScheduler.js#0005:makeUniversalSupportAnalysis","exportIndex":5,"name":"makeUniversalSupportAnalysis","kind":"function","signature":"makeUniversalSupportAnalysis(entry, legs)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/UniversalLegScheduler.md","moduleTitle":"assets/rig/active-body/UniversalLegScheduler","source":"engine/assets/rig/active-body/UniversalLegScheduler.js","import":"/engine/assets/rig/active-body/UniversalLegScheduler.js","sourceHash":"6ec7aa4e3c3db39543b7b9e9b493e84c081c39aef12d69178f923d4d344ec31c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/UniversalLegScheduler.js#0006:universalLegState","exportIndex":6,"name":"universalLegState","kind":"function","signature":"universalLegState(contact, swingAmount)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/UniversalLegScheduler.md","moduleTitle":"assets/rig/active-body/UniversalLegScheduler","source":"engine/assets/rig/active-body/UniversalLegScheduler.js","import":"/engine/assets/rig/active-body/UniversalLegScheduler.js","sourceHash":"6ec7aa4e3c3db39543b7b9e9b493e84c081c39aef12d69178f923d4d344ec31c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/UniversalLegScheduler.js#0007:getUniversalLegPhase","exportIndex":7,"name":"getUniversalLegPhase","kind":"function","signature":"getUniversalLegPhase(entry, leg)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/UniversalLegScheduler.md","moduleTitle":"assets/rig/active-body/UniversalLegScheduler","source":"engine/assets/rig/active-body/UniversalLegScheduler.js","import":"/engine/assets/rig/active-body/UniversalLegScheduler.js","sourceHash":"6ec7aa4e3c3db39543b7b9e9b493e84c081c39aef12d69178f923d4d344ec31c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/UniversalLegScheduler.js#0008:supportModeFor","exportIndex":8,"name":"supportModeFor","kind":"function","signature":"supportModeFor(pointCount, legCount)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/UniversalLegScheduler.md","moduleTitle":"assets/rig/active-body/UniversalLegScheduler","source":"engine/assets/rig/active-body/UniversalLegScheduler.js","import":"/engine/assets/rig/active-body/UniversalLegScheduler.js","sourceHash":"6ec7aa4e3c3db39543b7b9e9b493e84c081c39aef12d69178f923d4d344ec31c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/UniversalLegScheduler.js#0009:supportComMargin","exportIndex":9,"name":"supportComMargin","kind":"function","signature":"supportComMargin(com, points)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/UniversalLegScheduler.md","moduleTitle":"assets/rig/active-body/UniversalLegScheduler","source":"engine/assets/rig/active-body/UniversalLegScheduler.js","import":"/engine/assets/rig/active-body/UniversalLegScheduler.js","sourceHash":"6ec7aa4e3c3db39543b7b9e9b493e84c081c39aef12d69178f923d4d344ec31c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/UniversalLegScheduler.js#0010:recoveryDirection","exportIndex":10,"name":"recoveryDirection","kind":"function","signature":"recoveryDirection(com, center)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/UniversalLegScheduler.md","moduleTitle":"assets/rig/active-body/UniversalLegScheduler","source":"engine/assets/rig/active-body/UniversalLegScheduler.js","import":"/engine/assets/rig/active-body/UniversalLegScheduler.js","sourceHash":"6ec7aa4e3c3db39543b7b9e9b493e84c081c39aef12d69178f923d4d344ec31c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/UniversalLegScheduler.js#0011:signedPolygonMargin2D","exportIndex":11,"name":"signedPolygonMargin2D","kind":"function","signature":"signedPolygonMargin2D(point, polygon)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/UniversalLegScheduler.md","moduleTitle":"assets/rig/active-body/UniversalLegScheduler","source":"engine/assets/rig/active-body/UniversalLegScheduler.js","import":"/engine/assets/rig/active-body/UniversalLegScheduler.js","sourceHash":"6ec7aa4e3c3db39543b7b9e9b493e84c081c39aef12d69178f923d4d344ec31c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/UniversalLegScheduler.js#0012:pointInPolygon2D","exportIndex":12,"name":"pointInPolygon2D","kind":"function","signature":"pointInPolygon2D(point, polygon)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/UniversalLegScheduler.md","moduleTitle":"assets/rig/active-body/UniversalLegScheduler","source":"engine/assets/rig/active-body/UniversalLegScheduler.js","import":"/engine/assets/rig/active-body/UniversalLegScheduler.js","sourceHash":"6ec7aa4e3c3db39543b7b9e9b493e84c081c39aef12d69178f923d4d344ec31c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/UniversalLegScheduler.js#0013:distancePointToSegment2D","exportIndex":13,"name":"distancePointToSegment2D","kind":"function","signature":"distancePointToSegment2D(point, a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/UniversalLegScheduler.md","moduleTitle":"assets/rig/active-body/UniversalLegScheduler","source":"engine/assets/rig/active-body/UniversalLegScheduler.js","import":"/engine/assets/rig/active-body/UniversalLegScheduler.js","sourceHash":"6ec7aa4e3c3db39543b7b9e9b493e84c081c39aef12d69178f923d4d344ec31c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/UniversalLegScheduler.js#0014:distance2D","exportIndex":14,"name":"distance2D","kind":"function","signature":"distance2D(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/UniversalLegScheduler.md","moduleTitle":"assets/rig/active-body/UniversalLegScheduler","source":"engine/assets/rig/active-body/UniversalLegScheduler.js","import":"/engine/assets/rig/active-body/UniversalLegScheduler.js","sourceHash":"6ec7aa4e3c3db39543b7b9e9b493e84c081c39aef12d69178f923d4d344ec31c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/UniversalLegScheduler.js#0015:particlePoint","exportIndex":15,"name":"particlePoint","kind":"function","signature":"particlePoint(entry, boneName)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/UniversalLegScheduler.md","moduleTitle":"assets/rig/active-body/UniversalLegScheduler","source":"engine/assets/rig/active-body/UniversalLegScheduler.js","import":"/engine/assets/rig/active-body/UniversalLegScheduler.js","sourceHash":"6ec7aa4e3c3db39543b7b9e9b493e84c081c39aef12d69178f923d4d344ec31c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/UniversalLegScheduler.js#0016:hasBone","exportIndex":16,"name":"hasBone","kind":"function","signature":"hasBone(entry, boneName)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/UniversalLegScheduler.md","moduleTitle":"assets/rig/active-body/UniversalLegScheduler","source":"engine/assets/rig/active-body/UniversalLegScheduler.js","import":"/engine/assets/rig/active-body/UniversalLegScheduler.js","sourceHash":"6ec7aa4e3c3db39543b7b9e9b493e84c081c39aef12d69178f923d4d344ec31c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/UniversalLegScheduler.js#0017:recommendUniversalGaitPreset","exportIndex":17,"name":"recommendUniversalGaitPreset","kind":"function","signature":"recommendUniversalGaitPreset(entry, legCount)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/UniversalLegScheduler.md","moduleTitle":"assets/rig/active-body/UniversalLegScheduler","source":"engine/assets/rig/active-body/UniversalLegScheduler.js","import":"/engine/assets/rig/active-body/UniversalLegScheduler.js","sourceHash":"6ec7aa4e3c3db39543b7b9e9b493e84c081c39aef12d69178f923d4d344ec31c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/UniversalLegScheduler.js#0018:copyUniversalGaitPresets","exportIndex":18,"name":"copyUniversalGaitPresets","kind":"function","signature":"copyUniversalGaitPresets(legCount)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/UniversalLegScheduler.md","moduleTitle":"assets/rig/active-body/UniversalLegScheduler","source":"engine/assets/rig/active-body/UniversalLegScheduler.js","import":"/engine/assets/rig/active-body/UniversalLegScheduler.js","sourceHash":"6ec7aa4e3c3db39543b7b9e9b493e84c081c39aef12d69178f923d4d344ec31c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/UniversalLegScheduler.js#0019:copyUniversalGaitPresetMap","exportIndex":19,"name":"copyUniversalGaitPresetMap","kind":"function","signature":"copyUniversalGaitPresetMap()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/UniversalLegScheduler.md","moduleTitle":"assets/rig/active-body/UniversalLegScheduler","source":"engine/assets/rig/active-body/UniversalLegScheduler.js","import":"/engine/assets/rig/active-body/UniversalLegScheduler.js","sourceHash":"6ec7aa4e3c3db39543b7b9e9b493e84c081c39aef12d69178f923d4d344ec31c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/UniversalLegScheduler.js#0020:makeGenericOddLegWavePreset","exportIndex":20,"name":"makeGenericOddLegWavePreset","kind":"function","signature":"makeGenericOddLegWavePreset(legCount)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/UniversalLegScheduler.md","moduleTitle":"assets/rig/active-body/UniversalLegScheduler","source":"engine/assets/rig/active-body/UniversalLegScheduler.js","import":"/engine/assets/rig/active-body/UniversalLegScheduler.js","sourceHash":"6ec7aa4e3c3db39543b7b9e9b493e84c081c39aef12d69178f923d4d344ec31c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/UniversalLegScheduler.js#0021:UNIVERSAL_GAIT_PRESETS","exportIndex":21,"name":"UNIVERSAL_GAIT_PRESETS","kind":"constant","signature":"UNIVERSAL_GAIT_PRESETS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/anatomy/BioelectricSignals.md","moduleTitle":"assets/rig/active-body/anatomy/BioelectricSignals","source":"engine/assets/rig/active-body/anatomy/BioelectricSignals.js","import":"/engine/assets/rig/active-body/anatomy/BioelectricSignals.js","sourceHash":"61797b795d584da214afec1b25e0bd58f7fde93d342a10c406d7546f50e583f8","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/rig/active-body/anatomy/BioelectricSignals.js","title":"assets/rig/active-body/anatomy/BioelectricSignals","summary":"","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/anatomy/BioelectricSignals.md","moduleTitle":"assets/rig/active-body/anatomy/BioelectricSignals","source":"engine/assets/rig/active-body/anatomy/BioelectricSignals.js","import":"/engine/assets/rig/active-body/anatomy/BioelectricSignals.js","sourceHash":"61797b795d584da214afec1b25e0bd58f7fde93d342a10c406d7546f50e583f8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/anatomy/BioelectricSignals.js#0000:createBioelectricSignalState","exportIndex":0,"name":"createBioelectricSignalState","kind":"function","signature":"createBioelectricSignalState()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/anatomy/BioelectricSignals.md","moduleTitle":"assets/rig/active-body/anatomy/BioelectricSignals","source":"engine/assets/rig/active-body/anatomy/BioelectricSignals.js","import":"/engine/assets/rig/active-body/anatomy/BioelectricSignals.js","sourceHash":"61797b795d584da214afec1b25e0bd58f7fde93d342a10c406d7546f50e583f8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/anatomy/BioelectricSignals.js#0001:stepBioelectricSignals","exportIndex":1,"name":"stepBioelectricSignals","kind":"function","signature":"stepBioelectricSignals(state, inputs = {}, dt = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/anatomy/BioelectricSignals.md","moduleTitle":"assets/rig/active-body/anatomy/BioelectricSignals","source":"engine/assets/rig/active-body/anatomy/BioelectricSignals.js","import":"/engine/assets/rig/active-body/anatomy/BioelectricSignals.js","sourceHash":"61797b795d584da214afec1b25e0bd58f7fde93d342a10c406d7546f50e583f8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/anatomy/BioelectricSignals.js#0002:getBioelectricSignalReadback","exportIndex":2,"name":"getBioelectricSignalReadback","kind":"function","signature":"getBioelectricSignalReadback(state)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/anatomy/BreathingBodyCoupling.md","moduleTitle":"assets/rig/active-body/anatomy/BreathingBodyCoupling","source":"engine/assets/rig/active-body/anatomy/BreathingBodyCoupling.js","import":"/engine/assets/rig/active-body/anatomy/BreathingBodyCoupling.js","sourceHash":"46522ef6b4ff5ed2a3acd567e1acaaeb34f3955a8d9ec84706b4cd4aafe48a92","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/rig/active-body/anatomy/BreathingBodyCoupling.js","title":"assets/rig/active-body/anatomy/BreathingBodyCoupling","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/anatomy/BreathingBodyCoupling.md","moduleTitle":"assets/rig/active-body/anatomy/BreathingBodyCoupling","source":"engine/assets/rig/active-body/anatomy/BreathingBodyCoupling.js","import":"/engine/assets/rig/active-body/anatomy/BreathingBodyCoupling.js","sourceHash":"46522ef6b4ff5ed2a3acd567e1acaaeb34f3955a8d9ec84706b4cd4aafe48a92","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/anatomy/BreathingBodyCoupling.js#0000:getBreathingBodyCouplingReadback","exportIndex":0,"name":"getBreathingBodyCouplingReadback","kind":"function","signature":"getBreathingBodyCouplingReadback(diaphragm = null, rhythms = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/anatomy/CirculatorySystem.md","moduleTitle":"assets/rig/active-body/anatomy/CirculatorySystem","source":"engine/assets/rig/active-body/anatomy/CirculatorySystem.js","import":"/engine/assets/rig/active-body/anatomy/CirculatorySystem.js","sourceHash":"3a48443b0fde9fe6798c124e204a89919e5647a08f327f4b4d3774943d6c7757","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/rig/active-body/anatomy/CirculatorySystem.js","title":"assets/rig/active-body/anatomy/CirculatorySystem","summary":"","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/anatomy/CirculatorySystem.md","moduleTitle":"assets/rig/active-body/anatomy/CirculatorySystem","source":"engine/assets/rig/active-body/anatomy/CirculatorySystem.js","import":"/engine/assets/rig/active-body/anatomy/CirculatorySystem.js","sourceHash":"3a48443b0fde9fe6798c124e204a89919e5647a08f327f4b4d3774943d6c7757","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/anatomy/CirculatorySystem.js#0000:createCirculatoryState","exportIndex":0,"name":"createCirculatoryState","kind":"function","signature":"createCirculatoryState()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/anatomy/CirculatorySystem.md","moduleTitle":"assets/rig/active-body/anatomy/CirculatorySystem","source":"engine/assets/rig/active-body/anatomy/CirculatorySystem.js","import":"/engine/assets/rig/active-body/anatomy/CirculatorySystem.js","sourceHash":"3a48443b0fde9fe6798c124e204a89919e5647a08f327f4b4d3774943d6c7757","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/anatomy/CirculatorySystem.js#0001:stepCirculation","exportIndex":1,"name":"stepCirculation","kind":"function","signature":"stepCirculation(state, inputs = {}, dt = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/anatomy/CirculatorySystem.md","moduleTitle":"assets/rig/active-body/anatomy/CirculatorySystem","source":"engine/assets/rig/active-body/anatomy/CirculatorySystem.js","import":"/engine/assets/rig/active-body/anatomy/CirculatorySystem.js","sourceHash":"3a48443b0fde9fe6798c124e204a89919e5647a08f327f4b4d3774943d6c7757","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/anatomy/CirculatorySystem.js#0002:getCirculatoryReadback","exportIndex":2,"name":"getCirculatoryReadback","kind":"function","signature":"getCirculatoryReadback(state)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/anatomy/CirculatorySystem.md","moduleTitle":"assets/rig/active-body/anatomy/CirculatorySystem","source":"engine/assets/rig/active-body/anatomy/CirculatorySystem.js","import":"/engine/assets/rig/active-body/anatomy/CirculatorySystem.js","sourceHash":"3a48443b0fde9fe6798c124e204a89919e5647a08f327f4b4d3774943d6c7757","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/anatomy/CirculatorySystem.js#0003:getCirculationGraphReadback","exportIndex":3,"name":"getCirculationGraphReadback","kind":"function","signature":"getCirculationGraphReadback(state)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/anatomy/DiaphragmSystem.md","moduleTitle":"assets/rig/active-body/anatomy/DiaphragmSystem","source":"engine/assets/rig/active-body/anatomy/DiaphragmSystem.js","import":"/engine/assets/rig/active-body/anatomy/DiaphragmSystem.js","sourceHash":"0db0ed59c44426ea5ed69947470eeaa284cc8a46f9ae6047db717a8af912d8ec","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/rig/active-body/anatomy/DiaphragmSystem.js","title":"assets/rig/active-body/anatomy/DiaphragmSystem","summary":"","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/anatomy/DiaphragmSystem.md","moduleTitle":"assets/rig/active-body/anatomy/DiaphragmSystem","source":"engine/assets/rig/active-body/anatomy/DiaphragmSystem.js","import":"/engine/assets/rig/active-body/anatomy/DiaphragmSystem.js","sourceHash":"0db0ed59c44426ea5ed69947470eeaa284cc8a46f9ae6047db717a8af912d8ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/anatomy/DiaphragmSystem.js#0000:createDiaphragmState","exportIndex":0,"name":"createDiaphragmState","kind":"function","signature":"createDiaphragmState(anatomy = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/anatomy/DiaphragmSystem.md","moduleTitle":"assets/rig/active-body/anatomy/DiaphragmSystem","source":"engine/assets/rig/active-body/anatomy/DiaphragmSystem.js","import":"/engine/assets/rig/active-body/anatomy/DiaphragmSystem.js","sourceHash":"0db0ed59c44426ea5ed69947470eeaa284cc8a46f9ae6047db717a8af912d8ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/anatomy/DiaphragmSystem.js#0001:stepDiaphragm","exportIndex":1,"name":"stepDiaphragm","kind":"function","signature":"stepDiaphragm(state, rhythms = null, dt = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/anatomy/DiaphragmSystem.md","moduleTitle":"assets/rig/active-body/anatomy/DiaphragmSystem","source":"engine/assets/rig/active-body/anatomy/DiaphragmSystem.js","import":"/engine/assets/rig/active-body/anatomy/DiaphragmSystem.js","sourceHash":"0db0ed59c44426ea5ed69947470eeaa284cc8a46f9ae6047db717a8af912d8ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/anatomy/DiaphragmSystem.js#0002:getDiaphragmReadback","exportIndex":2,"name":"getDiaphragmReadback","kind":"function","signature":"getDiaphragmReadback(state)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/anatomy/NervousSystem.md","moduleTitle":"assets/rig/active-body/anatomy/NervousSystem","source":"engine/assets/rig/active-body/anatomy/NervousSystem.js","import":"/engine/assets/rig/active-body/anatomy/NervousSystem.js","sourceHash":"87c053a072fbf4c61c0774e0b2691a08945ccbaa7078cec74e1a2039d5e40e5f","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/rig/active-body/anatomy/NervousSystem.js","title":"assets/rig/active-body/anatomy/NervousSystem","summary":"","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/anatomy/NervousSystem.md","moduleTitle":"assets/rig/active-body/anatomy/NervousSystem","source":"engine/assets/rig/active-body/anatomy/NervousSystem.js","import":"/engine/assets/rig/active-body/anatomy/NervousSystem.js","sourceHash":"87c053a072fbf4c61c0774e0b2691a08945ccbaa7078cec74e1a2039d5e40e5f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/anatomy/NervousSystem.js#0000:createNervousSystemState","exportIndex":0,"name":"createNervousSystemState","kind":"function","signature":"createNervousSystemState()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/anatomy/NervousSystem.md","moduleTitle":"assets/rig/active-body/anatomy/NervousSystem","source":"engine/assets/rig/active-body/anatomy/NervousSystem.js","import":"/engine/assets/rig/active-body/anatomy/NervousSystem.js","sourceHash":"87c053a072fbf4c61c0774e0b2691a08945ccbaa7078cec74e1a2039d5e40e5f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/anatomy/NervousSystem.js#0001:stepNervousSystem","exportIndex":1,"name":"stepNervousSystem","kind":"function","signature":"stepNervousSystem(state, inputs = {}, dt = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/anatomy/NervousSystem.md","moduleTitle":"assets/rig/active-body/anatomy/NervousSystem","source":"engine/assets/rig/active-body/anatomy/NervousSystem.js","import":"/engine/assets/rig/active-body/anatomy/NervousSystem.js","sourceHash":"87c053a072fbf4c61c0774e0b2691a08945ccbaa7078cec74e1a2039d5e40e5f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/anatomy/NervousSystem.js#0002:getNervousSystemReadback","exportIndex":2,"name":"getNervousSystemReadback","kind":"function","signature":"getNervousSystemReadback(state)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/anatomy/NervousSystem.md","moduleTitle":"assets/rig/active-body/anatomy/NervousSystem","source":"engine/assets/rig/active-body/anatomy/NervousSystem.js","import":"/engine/assets/rig/active-body/anatomy/NervousSystem.js","sourceHash":"87c053a072fbf4c61c0774e0b2691a08945ccbaa7078cec74e1a2039d5e40e5f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/anatomy/NervousSystem.js#0003:getNerveGraphReadback","exportIndex":3,"name":"getNerveGraphReadback","kind":"function","signature":"getNerveGraphReadback(state)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/anatomy/OrganDamageSystem.md","moduleTitle":"assets/rig/active-body/anatomy/OrganDamageSystem","source":"engine/assets/rig/active-body/anatomy/OrganDamageSystem.js","import":"/engine/assets/rig/active-body/anatomy/OrganDamageSystem.js","sourceHash":"d966140a921de055dc49c061d895728a05fbde0a55bd68492a69488ebb70f4f7","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/rig/active-body/anatomy/OrganDamageSystem.js","title":"assets/rig/active-body/anatomy/OrganDamageSystem","summary":"","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/anatomy/OrganDamageSystem.md","moduleTitle":"assets/rig/active-body/anatomy/OrganDamageSystem","source":"engine/assets/rig/active-body/anatomy/OrganDamageSystem.js","import":"/engine/assets/rig/active-body/anatomy/OrganDamageSystem.js","sourceHash":"d966140a921de055dc49c061d895728a05fbde0a55bd68492a69488ebb70f4f7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/anatomy/OrganDamageSystem.js#0000:createOrganDamageState","exportIndex":0,"name":"createOrganDamageState","kind":"function","signature":"createOrganDamageState()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/anatomy/OrganDamageSystem.md","moduleTitle":"assets/rig/active-body/anatomy/OrganDamageSystem","source":"engine/assets/rig/active-body/anatomy/OrganDamageSystem.js","import":"/engine/assets/rig/active-body/anatomy/OrganDamageSystem.js","sourceHash":"d966140a921de055dc49c061d895728a05fbde0a55bd68492a69488ebb70f4f7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/anatomy/OrganDamageSystem.js#0001:applyOrganDamage","exportIndex":1,"name":"applyOrganDamage","kind":"function","signature":"applyOrganDamage(state, organs, target, amount, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/anatomy/OrganDamageSystem.md","moduleTitle":"assets/rig/active-body/anatomy/OrganDamageSystem","source":"engine/assets/rig/active-body/anatomy/OrganDamageSystem.js","import":"/engine/assets/rig/active-body/anatomy/OrganDamageSystem.js","sourceHash":"d966140a921de055dc49c061d895728a05fbde0a55bd68492a69488ebb70f4f7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/anatomy/OrganDamageSystem.js#0002:stepOrganDamage","exportIndex":2,"name":"stepOrganDamage","kind":"function","signature":"stepOrganDamage(state, organs, inputs = {}, dt = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/anatomy/OrganDamageSystem.md","moduleTitle":"assets/rig/active-body/anatomy/OrganDamageSystem","source":"engine/assets/rig/active-body/anatomy/OrganDamageSystem.js","import":"/engine/assets/rig/active-body/anatomy/OrganDamageSystem.js","sourceHash":"d966140a921de055dc49c061d895728a05fbde0a55bd68492a69488ebb70f4f7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/anatomy/OrganDamageSystem.js#0003:getOrganDamageReadback","exportIndex":3,"name":"getOrganDamageReadback","kind":"function","signature":"getOrganDamageReadback(state)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/anatomy/OrganSystem.md","moduleTitle":"assets/rig/active-body/anatomy/OrganSystem","source":"engine/assets/rig/active-body/anatomy/OrganSystem.js","import":"/engine/assets/rig/active-body/anatomy/OrganSystem.js","sourceHash":"4e1b03b28a3094b80f377571e87a40d239efe596e0954418d4b6a4380b8542f9","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/rig/active-body/anatomy/OrganSystem.js","title":"assets/rig/active-body/anatomy/OrganSystem","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/anatomy/OrganSystem.md","moduleTitle":"assets/rig/active-body/anatomy/OrganSystem","source":"engine/assets/rig/active-body/anatomy/OrganSystem.js","import":"/engine/assets/rig/active-body/anatomy/OrganSystem.js","sourceHash":"4e1b03b28a3094b80f377571e87a40d239efe596e0954418d4b6a4380b8542f9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/anatomy/OrganSystem.js#0000:createOrganState","exportIndex":0,"name":"createOrganState","kind":"function","signature":"createOrganState(anatomy = null, attachments = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/anatomy/OrganSystem.md","moduleTitle":"assets/rig/active-body/anatomy/OrganSystem","source":"engine/assets/rig/active-body/anatomy/OrganSystem.js","import":"/engine/assets/rig/active-body/anatomy/OrganSystem.js","sourceHash":"4e1b03b28a3094b80f377571e87a40d239efe596e0954418d4b6a4380b8542f9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/anatomy/OrganSystem.js#0001:getOrganReadback","exportIndex":1,"name":"getOrganReadback","kind":"function","signature":"getOrganReadback(organs)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/anatomy/PBPKSystem.md","moduleTitle":"assets/rig/active-body/anatomy/PBPKSystem","source":"engine/assets/rig/active-body/anatomy/PBPKSystem.js","import":"/engine/assets/rig/active-body/anatomy/PBPKSystem.js","sourceHash":"61dd070c8f412c089b00f2be106c6e3894e6f06786aa9aa9629be82d9da5c638","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/rig/active-body/anatomy/PBPKSystem.js","title":"assets/rig/active-body/anatomy/PBPKSystem","summary":"","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/anatomy/PBPKSystem.md","moduleTitle":"assets/rig/active-body/anatomy/PBPKSystem","source":"engine/assets/rig/active-body/anatomy/PBPKSystem.js","import":"/engine/assets/rig/active-body/anatomy/PBPKSystem.js","sourceHash":"61dd070c8f412c089b00f2be106c6e3894e6f06786aa9aa9629be82d9da5c638","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/anatomy/PBPKSystem.js#0000:createPBPKState","exportIndex":0,"name":"createPBPKState","kind":"function","signature":"createPBPKState()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/anatomy/PBPKSystem.md","moduleTitle":"assets/rig/active-body/anatomy/PBPKSystem","source":"engine/assets/rig/active-body/anatomy/PBPKSystem.js","import":"/engine/assets/rig/active-body/anatomy/PBPKSystem.js","sourceHash":"61dd070c8f412c089b00f2be106c6e3894e6f06786aa9aa9629be82d9da5c638","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/anatomy/PBPKSystem.js#0001:addPBPKDose","exportIndex":1,"name":"addPBPKDose","kind":"function","signature":"addPBPKDose(state, substanceId, amount, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/anatomy/PBPKSystem.md","moduleTitle":"assets/rig/active-body/anatomy/PBPKSystem","source":"engine/assets/rig/active-body/anatomy/PBPKSystem.js","import":"/engine/assets/rig/active-body/anatomy/PBPKSystem.js","sourceHash":"61dd070c8f412c089b00f2be106c6e3894e6f06786aa9aa9629be82d9da5c638","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/anatomy/PBPKSystem.js#0002:stepPBPK","exportIndex":2,"name":"stepPBPK","kind":"function","signature":"stepPBPK(state, inputs = {}, dt = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/anatomy/PBPKSystem.md","moduleTitle":"assets/rig/active-body/anatomy/PBPKSystem","source":"engine/assets/rig/active-body/anatomy/PBPKSystem.js","import":"/engine/assets/rig/active-body/anatomy/PBPKSystem.js","sourceHash":"61dd070c8f412c089b00f2be106c6e3894e6f06786aa9aa9629be82d9da5c638","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/anatomy/PBPKSystem.js#0003:getPBPKReadback","exportIndex":3,"name":"getPBPKReadback","kind":"function","signature":"getPBPKReadback(state)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/anatomy/SoftTissueSystem.md","moduleTitle":"assets/rig/active-body/anatomy/SoftTissueSystem","source":"engine/assets/rig/active-body/anatomy/SoftTissueSystem.js","import":"/engine/assets/rig/active-body/anatomy/SoftTissueSystem.js","sourceHash":"b8e9554b27f3a970a7b3ca7fe065387da8487914c2a3498218f380f81bd44761","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/rig/active-body/anatomy/SoftTissueSystem.js","title":"assets/rig/active-body/anatomy/SoftTissueSystem","summary":"","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/anatomy/SoftTissueSystem.md","moduleTitle":"assets/rig/active-body/anatomy/SoftTissueSystem","source":"engine/assets/rig/active-body/anatomy/SoftTissueSystem.js","import":"/engine/assets/rig/active-body/anatomy/SoftTissueSystem.js","sourceHash":"b8e9554b27f3a970a7b3ca7fe065387da8487914c2a3498218f380f81bd44761","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/anatomy/SoftTissueSystem.js#0000:createSoftTissueState","exportIndex":0,"name":"createSoftTissueState","kind":"function","signature":"createSoftTissueState(anatomy = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/anatomy/SoftTissueSystem.md","moduleTitle":"assets/rig/active-body/anatomy/SoftTissueSystem","source":"engine/assets/rig/active-body/anatomy/SoftTissueSystem.js","import":"/engine/assets/rig/active-body/anatomy/SoftTissueSystem.js","sourceHash":"b8e9554b27f3a970a7b3ca7fe065387da8487914c2a3498218f380f81bd44761","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/anatomy/SoftTissueSystem.js#0001:stepSoftTissue","exportIndex":1,"name":"stepSoftTissue","kind":"function","signature":"stepSoftTissue(state, inputs = {}, dt = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/anatomy/SoftTissueSystem.md","moduleTitle":"assets/rig/active-body/anatomy/SoftTissueSystem","source":"engine/assets/rig/active-body/anatomy/SoftTissueSystem.js","import":"/engine/assets/rig/active-body/anatomy/SoftTissueSystem.js","sourceHash":"b8e9554b27f3a970a7b3ca7fe065387da8487914c2a3498218f380f81bd44761","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/anatomy/SoftTissueSystem.js#0002:getSoftTissueReadback","exportIndex":2,"name":"getSoftTissueReadback","kind":"function","signature":"getSoftTissueReadback(state)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/anatomy/SoftTissueSystem.md","moduleTitle":"assets/rig/active-body/anatomy/SoftTissueSystem","source":"engine/assets/rig/active-body/anatomy/SoftTissueSystem.js","import":"/engine/assets/rig/active-body/anatomy/SoftTissueSystem.js","sourceHash":"b8e9554b27f3a970a7b3ca7fe065387da8487914c2a3498218f380f81bd44761","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/anatomy/SoftTissueSystem.js#0003:sampleSoftTissueBoneMotion","exportIndex":3,"name":"sampleSoftTissueBoneMotion","kind":"function","signature":"sampleSoftTissueBoneMotion(ragdoll = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/anatomy/VitalSigns.md","moduleTitle":"assets/rig/active-body/anatomy/VitalSigns","source":"engine/assets/rig/active-body/anatomy/VitalSigns.js","import":"/engine/assets/rig/active-body/anatomy/VitalSigns.js","sourceHash":"ebbe7e8ce0a1f373c30c10d2cfc5432910d89e3694ed05673b638a9ce2d9d4d9","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/rig/active-body/anatomy/VitalSigns.js","title":"assets/rig/active-body/anatomy/VitalSigns","summary":"","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/anatomy/VitalSigns.md","moduleTitle":"assets/rig/active-body/anatomy/VitalSigns","source":"engine/assets/rig/active-body/anatomy/VitalSigns.js","import":"/engine/assets/rig/active-body/anatomy/VitalSigns.js","sourceHash":"ebbe7e8ce0a1f373c30c10d2cfc5432910d89e3694ed05673b638a9ce2d9d4d9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/anatomy/VitalSigns.js#0000:createVitalSignsState","exportIndex":0,"name":"createVitalSignsState","kind":"function","signature":"createVitalSignsState()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/anatomy/VitalSigns.md","moduleTitle":"assets/rig/active-body/anatomy/VitalSigns","source":"engine/assets/rig/active-body/anatomy/VitalSigns.js","import":"/engine/assets/rig/active-body/anatomy/VitalSigns.js","sourceHash":"ebbe7e8ce0a1f373c30c10d2cfc5432910d89e3694ed05673b638a9ce2d9d4d9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/anatomy/VitalSigns.js#0001:stepVitalSigns","exportIndex":1,"name":"stepVitalSigns","kind":"function","signature":"stepVitalSigns(state, inputs = {}, dt = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/anatomy/VitalSigns.md","moduleTitle":"assets/rig/active-body/anatomy/VitalSigns","source":"engine/assets/rig/active-body/anatomy/VitalSigns.js","import":"/engine/assets/rig/active-body/anatomy/VitalSigns.js","sourceHash":"ebbe7e8ce0a1f373c30c10d2cfc5432910d89e3694ed05673b638a9ce2d9d4d9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/active-body/anatomy/VitalSigns.js#0002:getVitalSignsReadback","exportIndex":2,"name":"getVitalSignsReadback","kind":"function","signature":"getVitalSignsReadback(state)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/active-body/anatomy/index.md","moduleTitle":"assets/rig/active-body/anatomy/index","source":"engine/assets/rig/active-body/anatomy/index.js","import":"/engine/assets/rig/active-body/anatomy/index.js","sourceHash":"91f6bf23500772b0a1250ca2d2cd83a7756d7e77302a50fd41155c496e782d4b","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/rig/active-body/anatomy/index.js","title":"assets/rig/active-body/anatomy/index","summary":"engine/assets/rig/active-body/anatomy/index.js — anatomy subsystem barrel. Every other subsystem in the engine exposes a barrel (`voxel/index.js`, `sim/ai/index.js`, `gameplay/perception/index.js`); the anatomy modules did not, which is part of why they were unreachable from any compiled bundle. This is purely additive — no module below is modified, and nothing that already imports these files by path is affected. The subsystem models a body as interacting physiological systems rather than a hit-point total: - `OrganSystem`        per-organ integrity, perfusion, oxygenation, function - `OrganDamageSystem`  wounds by mechanism, bleeding, hypoxia, shock - `CirculatorySystem`  cardiac output, per-limb and per-organ blood flow - `NervousSystem`      spinal cord, 16 peripheral regions, motor authority, and per-region motor/sensory/touch/pain channels - `VitalSigns`         heart rate, respiration, blood pressure, SpO2 - `DiaphragmSystem`    breathing drive and rib/sternum coupling - `BreathingBodyCoupling` breathing translated into bone pose offsets - `SoftTissueSystem`   mass-spring tissue displacement and strain - `PBPKSystem`         multi-compartment pharmacokinetics for any substance - `BioelectricSignals` low-level signal propagation","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/index.md","moduleTitle":"assets/rig/index","source":"engine/assets/rig/index.js","import":"/engine/assets/rig/index.js","sourceHash":"6e52ae51a35af1202bed06c804bcbd9b5d23a577c3912a3ccd615b01f3eb2dfe","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/rig/index.js","title":"assets/rig/index","summary":"Stable public rig surface for raw modules, Engine.Rig, and bundled PE.Rig. The named groups preserve each source module's boundary while the flat functions keep the existing engine/assets API available without adapters.","exportCount":37}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/index.md","moduleTitle":"assets/rig/index","source":"engine/assets/rig/index.js","import":"/engine/assets/rig/index.js","sourceHash":"6e52ae51a35af1202bed06c804bcbd9b5d23a577c3912a3ccd615b01f3eb2dfe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/index.js#0000:JointLimits","exportIndex":0,"name":"JointLimits","kind":"constant","signature":"JointLimits","summary":"Stable public rig surface for raw modules, Engine.Rig, and bundled PE.Rig. The named groups preserve each source module's boundary while the flat functions keep the existing engine/assets API available without adapters."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/index.md","moduleTitle":"assets/rig/index","source":"engine/assets/rig/index.js","import":"/engine/assets/rig/index.js","sourceHash":"6e52ae51a35af1202bed06c804bcbd9b5d23a577c3912a3ccd615b01f3eb2dfe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/index.js#0001:RagdollBuilder","exportIndex":1,"name":"RagdollBuilder","kind":"constant","signature":"RagdollBuilder","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/index.md","moduleTitle":"assets/rig/index","source":"engine/assets/rig/index.js","import":"/engine/assets/rig/index.js","sourceHash":"6e52ae51a35af1202bed06c804bcbd9b5d23a577c3912a3ccd615b01f3eb2dfe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/index.js#0002:RagdollSim","exportIndex":2,"name":"RagdollSim","kind":"constant","signature":"RagdollSim","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/index.md","moduleTitle":"assets/rig/index","source":"engine/assets/rig/index.js","import":"/engine/assets/rig/index.js","sourceHash":"6e52ae51a35af1202bed06c804bcbd9b5d23a577c3912a3ccd615b01f3eb2dfe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/index.js#0003:RagdollSkinning","exportIndex":3,"name":"RagdollSkinning","kind":"constant","signature":"RagdollSkinning","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/index.md","moduleTitle":"assets/rig/index","source":"engine/assets/rig/index.js","import":"/engine/assets/rig/index.js","sourceHash":"6e52ae51a35af1202bed06c804bcbd9b5d23a577c3912a3ccd615b01f3eb2dfe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/index.js#0004:CharacterPhysicsAsset","exportIndex":4,"name":"CharacterPhysicsAsset","kind":"constant","signature":"CharacterPhysicsAsset","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/index.md","moduleTitle":"assets/rig/index","source":"engine/assets/rig/index.js","import":"/engine/assets/rig/index.js","sourceHash":"6e52ae51a35af1202bed06c804bcbd9b5d23a577c3912a3ccd615b01f3eb2dfe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/index.js#0005:BodyTemplateExport","exportIndex":5,"name":"BodyTemplateExport","kind":"constant","signature":"BodyTemplateExport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/index.md","moduleTitle":"assets/rig/index","source":"engine/assets/rig/index.js","import":"/engine/assets/rig/index.js","sourceHash":"6e52ae51a35af1202bed06c804bcbd9b5d23a577c3912a3ccd615b01f3eb2dfe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/index.js#0006:Rig","exportIndex":6,"name":"Rig","kind":"constant","signature":"Rig","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/index.md","moduleTitle":"assets/rig/index","source":"engine/assets/rig/index.js","import":"/engine/assets/rig/index.js","sourceHash":"6e52ae51a35af1202bed06c804bcbd9b5d23a577c3912a3ccd615b01f3eb2dfe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/index.js#0007:CHARACTER_PHYSICS_ASSET_SCHEMA_VERSION","exportIndex":7,"name":"CHARACTER_PHYSICS_ASSET_SCHEMA_VERSION","kind":"re-export","signature":"CHARACTER_PHYSICS_ASSET_SCHEMA_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/index.md","moduleTitle":"assets/rig/index","source":"engine/assets/rig/index.js","import":"/engine/assets/rig/index.js","sourceHash":"6e52ae51a35af1202bed06c804bcbd9b5d23a577c3912a3ccd615b01f3eb2dfe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/index.js#0008:JOINT_TYPE","exportIndex":8,"name":"JOINT_TYPE","kind":"re-export","signature":"JOINT_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/index.md","moduleTitle":"assets/rig/index","source":"engine/assets/rig/index.js","import":"/engine/assets/rig/index.js","sourceHash":"6e52ae51a35af1202bed06c804bcbd9b5d23a577c3912a3ccd615b01f3eb2dfe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/index.js#0009:buildGenericRagdoll","exportIndex":9,"name":"buildGenericRagdoll","kind":"re-export","signature":"buildGenericRagdoll","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/index.md","moduleTitle":"assets/rig/index","source":"engine/assets/rig/index.js","import":"/engine/assets/rig/index.js","sourceHash":"6e52ae51a35af1202bed06c804bcbd9b5d23a577c3912a3ccd615b01f3eb2dfe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/index.js#0010:buildHumanoidRagdoll","exportIndex":10,"name":"buildHumanoidRagdoll","kind":"re-export","signature":"buildHumanoidRagdoll","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/index.md","moduleTitle":"assets/rig/index","source":"engine/assets/rig/index.js","import":"/engine/assets/rig/index.js","sourceHash":"6e52ae51a35af1202bed06c804bcbd9b5d23a577c3912a3ccd615b01f3eb2dfe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/index.js#0011:buildJointLimits","exportIndex":11,"name":"buildJointLimits","kind":"re-export","signature":"buildJointLimits","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/index.md","moduleTitle":"assets/rig/index","source":"engine/assets/rig/index.js","import":"/engine/assets/rig/index.js","sourceHash":"6e52ae51a35af1202bed06c804bcbd9b5d23a577c3912a3ccd615b01f3eb2dfe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/index.js#0012:buildRagdoll","exportIndex":12,"name":"buildRagdoll","kind":"re-export","signature":"buildRagdoll","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/index.md","moduleTitle":"assets/rig/index","source":"engine/assets/rig/index.js","import":"/engine/assets/rig/index.js","sourceHash":"6e52ae51a35af1202bed06c804bcbd9b5d23a577c3912a3ccd615b01f3eb2dfe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/index.js#0013:buildSkinnedRagdoll","exportIndex":13,"name":"buildSkinnedRagdoll","kind":"re-export","signature":"buildSkinnedRagdoll","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/index.md","moduleTitle":"assets/rig/index","source":"engine/assets/rig/index.js","import":"/engine/assets/rig/index.js","sourceHash":"6e52ae51a35af1202bed06c804bcbd9b5d23a577c3912a3ccd615b01f3eb2dfe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/index.js#0014:characterPhysicsAssetToBodyTemplate","exportIndex":14,"name":"characterPhysicsAssetToBodyTemplate","kind":"re-export","signature":"characterPhysicsAssetToBodyTemplate","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/index.md","moduleTitle":"assets/rig/index","source":"engine/assets/rig/index.js","import":"/engine/assets/rig/index.js","sourceHash":"6e52ae51a35af1202bed06c804bcbd9b5d23a577c3912a3ccd615b01f3eb2dfe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/index.js#0015:computeSkeletonFingerprint","exportIndex":15,"name":"computeSkeletonFingerprint","kind":"re-export","signature":"computeSkeletonFingerprint","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/index.md","moduleTitle":"assets/rig/index","source":"engine/assets/rig/index.js","import":"/engine/assets/rig/index.js","sourceHash":"6e52ae51a35af1202bed06c804bcbd9b5d23a577c3912a3ccd615b01f3eb2dfe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/index.js#0016:countTypes","exportIndex":16,"name":"countTypes","kind":"re-export","signature":"countTypes","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/index.md","moduleTitle":"assets/rig/index","source":"engine/assets/rig/index.js","import":"/engine/assets/rig/index.js","sourceHash":"6e52ae51a35af1202bed06c804bcbd9b5d23a577c3912a3ccd615b01f3eb2dfe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/index.js#0017:createCharacterPhysicsAsset","exportIndex":17,"name":"createCharacterPhysicsAsset","kind":"re-export","signature":"createCharacterPhysicsAsset","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/index.md","moduleTitle":"assets/rig/index","source":"engine/assets/rig/index.js","import":"/engine/assets/rig/index.js","sourceHash":"6e52ae51a35af1202bed06c804bcbd9b5d23a577c3912a3ccd615b01f3eb2dfe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/index.js#0018:createRagdollSim","exportIndex":18,"name":"createRagdollSim","kind":"re-export","signature":"createRagdollSim","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/index.md","moduleTitle":"assets/rig/index","source":"engine/assets/rig/index.js","import":"/engine/assets/rig/index.js","sourceHash":"6e52ae51a35af1202bed06c804bcbd9b5d23a577c3912a3ccd615b01f3eb2dfe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/index.js#0019:deriveBendDirection","exportIndex":19,"name":"deriveBendDirection","kind":"re-export","signature":"deriveBendDirection","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/index.md","moduleTitle":"assets/rig/index","source":"engine/assets/rig/index.js","import":"/engine/assets/rig/index.js","sourceHash":"6e52ae51a35af1202bed06c804bcbd9b5d23a577c3912a3ccd615b01f3eb2dfe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/index.js#0020:deriveHingeLimit","exportIndex":20,"name":"deriveHingeLimit","kind":"re-export","signature":"deriveHingeLimit","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/index.md","moduleTitle":"assets/rig/index","source":"engine/assets/rig/index.js","import":"/engine/assets/rig/index.js","sourceHash":"6e52ae51a35af1202bed06c804bcbd9b5d23a577c3912a3ccd615b01f3eb2dfe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/index.js#0021:deriveHumanoidJointLimits","exportIndex":21,"name":"deriveHumanoidJointLimits","kind":"re-export","signature":"deriveHumanoidJointLimits","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/index.md","moduleTitle":"assets/rig/index","source":"engine/assets/rig/index.js","import":"/engine/assets/rig/index.js","sourceHash":"6e52ae51a35af1202bed06c804bcbd9b5d23a577c3912a3ccd615b01f3eb2dfe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/index.js#0022:deriveJointType","exportIndex":22,"name":"deriveJointType","kind":"re-export","signature":"deriveJointType","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/index.md","moduleTitle":"assets/rig/index","source":"engine/assets/rig/index.js","import":"/engine/assets/rig/index.js","sourceHash":"6e52ae51a35af1202bed06c804bcbd9b5d23a577c3912a3ccd615b01f3eb2dfe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/index.js#0023:deriveSkeletonJointLimits","exportIndex":23,"name":"deriveSkeletonJointLimits","kind":"re-export","signature":"deriveSkeletonJointLimits","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/index.md","moduleTitle":"assets/rig/index","source":"engine/assets/rig/index.js","import":"/engine/assets/rig/index.js","sourceHash":"6e52ae51a35af1202bed06c804bcbd9b5d23a577c3912a3ccd615b01f3eb2dfe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/index.js#0024:deriveSwingCone","exportIndex":24,"name":"deriveSwingCone","kind":"re-export","signature":"deriveSwingCone","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/index.md","moduleTitle":"assets/rig/index","source":"engine/assets/rig/index.js","import":"/engine/assets/rig/index.js","sourceHash":"6e52ae51a35af1202bed06c804bcbd9b5d23a577c3912a3ccd615b01f3eb2dfe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/index.js#0025:deriveTwistLimit","exportIndex":25,"name":"deriveTwistLimit","kind":"re-export","signature":"deriveTwistLimit","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/index.md","moduleTitle":"assets/rig/index","source":"engine/assets/rig/index.js","import":"/engine/assets/rig/index.js","sourceHash":"6e52ae51a35af1202bed06c804bcbd9b5d23a577c3912a3ccd615b01f3eb2dfe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/index.js#0026:hingeAxis","exportIndex":26,"name":"hingeAxis","kind":"re-export","signature":"hingeAxis","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/index.md","moduleTitle":"assets/rig/index","source":"engine/assets/rig/index.js","import":"/engine/assets/rig/index.js","sourceHash":"6e52ae51a35af1202bed06c804bcbd9b5d23a577c3912a3ccd615b01f3eb2dfe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/index.js#0027:inferDriveType","exportIndex":27,"name":"inferDriveType","kind":"re-export","signature":"inferDriveType","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/index.md","moduleTitle":"assets/rig/index","source":"engine/assets/rig/index.js","import":"/engine/assets/rig/index.js","sourceHash":"6e52ae51a35af1202bed06c804bcbd9b5d23a577c3912a3ccd615b01f3eb2dfe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/index.js#0028:logSkinnedRagdoll","exportIndex":28,"name":"logSkinnedRagdoll","kind":"re-export","signature":"logSkinnedRagdoll","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/index.md","moduleTitle":"assets/rig/index","source":"engine/assets/rig/index.js","import":"/engine/assets/rig/index.js","sourceHash":"6e52ae51a35af1202bed06c804bcbd9b5d23a577c3912a3ccd615b01f3eb2dfe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/index.js#0029:mirrorLeftRightLimits","exportIndex":29,"name":"mirrorLeftRightLimits","kind":"re-export","signature":"mirrorLeftRightLimits","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/index.md","moduleTitle":"assets/rig/index","source":"engine/assets/rig/index.js","import":"/engine/assets/rig/index.js","sourceHash":"6e52ae51a35af1202bed06c804bcbd9b5d23a577c3912a3ccd615b01f3eb2dfe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/index.js#0030:radiusRatio","exportIndex":30,"name":"radiusRatio","kind":"re-export","signature":"radiusRatio","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/index.md","moduleTitle":"assets/rig/index","source":"engine/assets/rig/index.js","import":"/engine/assets/rig/index.js","sourceHash":"6e52ae51a35af1202bed06c804bcbd9b5d23a577c3912a3ccd615b01f3eb2dfe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/index.js#0031:ragdollBoneFrames","exportIndex":31,"name":"ragdollBoneFrames","kind":"re-export","signature":"ragdollBoneFrames","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/index.md","moduleTitle":"assets/rig/index","source":"engine/assets/rig/index.js","import":"/engine/assets/rig/index.js","sourceHash":"6e52ae51a35af1202bed06c804bcbd9b5d23a577c3912a3ccd615b01f3eb2dfe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/index.js#0032:ragdollDebugStats","exportIndex":32,"name":"ragdollDebugStats","kind":"re-export","signature":"ragdollDebugStats","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/index.md","moduleTitle":"assets/rig/index","source":"engine/assets/rig/index.js","import":"/engine/assets/rig/index.js","sourceHash":"6e52ae51a35af1202bed06c804bcbd9b5d23a577c3912a3ccd615b01f3eb2dfe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/index.js#0033:skinPrimitiveInterleaved","exportIndex":33,"name":"skinPrimitiveInterleaved","kind":"re-export","signature":"skinPrimitiveInterleaved","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/index.md","moduleTitle":"assets/rig/index","source":"engine/assets/rig/index.js","import":"/engine/assets/rig/index.js","sourceHash":"6e52ae51a35af1202bed06c804bcbd9b5d23a577c3912a3ccd615b01f3eb2dfe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/index.js#0034:validJointTypeSet","exportIndex":34,"name":"validJointTypeSet","kind":"re-export","signature":"validJointTypeSet","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/index.md","moduleTitle":"assets/rig/index","source":"engine/assets/rig/index.js","import":"/engine/assets/rig/index.js","sourceHash":"6e52ae51a35af1202bed06c804bcbd9b5d23a577c3912a3ccd615b01f3eb2dfe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/index.js#0035:validateBoneTopology","exportIndex":35,"name":"validateBoneTopology","kind":"re-export","signature":"validateBoneTopology","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/rig/index.md","moduleTitle":"assets/rig/index","source":"engine/assets/rig/index.js","import":"/engine/assets/rig/index.js","sourceHash":"6e52ae51a35af1202bed06c804bcbd9b5d23a577c3912a3ccd615b01f3eb2dfe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/rig/index.js#0036:validateCharacterPhysicsAsset","exportIndex":36,"name":"validateCharacterPhysicsAsset","kind":"re-export","signature":"validateCharacterPhysicsAsset","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/vehicle/ChassisDetector.md","moduleTitle":"assets/vehicle/ChassisDetector","source":"engine/assets/vehicle/ChassisDetector.js","import":"/engine/assets/vehicle/ChassisDetector.js","sourceHash":"742a859046945478eb2e322a0c673ac52e3acd82014e03d02892abc5554b42cd","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/vehicle/ChassisDetector.js","title":"assets/vehicle/ChassisDetector","summary":"engine/assets/vehicle/ChassisDetector.js — identify the chassis + body parts (spec §11). The chassis is the largest non-wheel mesh; remaining meshes are categorized by name (glass/lights/doors) so segmentation and material edits (tint glass, emissive headlights, detach doors) can target them.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/assets/vehicle/ChassisDetector.md","moduleTitle":"assets/vehicle/ChassisDetector","source":"engine/assets/vehicle/ChassisDetector.js","import":"/engine/assets/vehicle/ChassisDetector.js","sourceHash":"742a859046945478eb2e322a0c673ac52e3acd82014e03d02892abc5554b42cd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/vehicle/ChassisDetector.js#0000:detectChassis","exportIndex":0,"name":"detectChassis","kind":"function","signature":"detectChassis(model, wheelNodeIds = [])","summary":"Identify chassis + body part nodes, excluding the given wheel node ids."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/vehicle/VehicleMath.md","moduleTitle":"assets/vehicle/VehicleMath","source":"engine/assets/vehicle/VehicleMath.js","import":"/engine/assets/vehicle/VehicleMath.js","sourceHash":"1d45737d4a68487d4ebc3ee5e0179f41a482accbb25f3a00b191459187305d33","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/vehicle/VehicleMath.js","title":"assets/vehicle/VehicleMath","summary":"engine/assets/vehicle/VehicleMath.js — minimal column-major 4x4 + quaternion helpers for vehicle rig assembly and the visual wheel transform chain. Kept local and dependency-free so the vehicle layer is self-contained and the math stays deterministic (and gate-testable without the renderer).","exportCount":8}
{"schemaVersion":1,"modulePath":"engine/reference/assets/vehicle/VehicleMath.md","moduleTitle":"assets/vehicle/VehicleMath","source":"engine/assets/vehicle/VehicleMath.js","import":"/engine/assets/vehicle/VehicleMath.js","sourceHash":"1d45737d4a68487d4ebc3ee5e0179f41a482accbb25f3a00b191459187305d33","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/vehicle/VehicleMath.js#0000:identity","exportIndex":0,"name":"identity","kind":"function","signature":"identity()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/vehicle/VehicleMath.md","moduleTitle":"assets/vehicle/VehicleMath","source":"engine/assets/vehicle/VehicleMath.js","import":"/engine/assets/vehicle/VehicleMath.js","sourceHash":"1d45737d4a68487d4ebc3ee5e0179f41a482accbb25f3a00b191459187305d33","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/vehicle/VehicleMath.js#0001:multiply","exportIndex":1,"name":"multiply","kind":"function","signature":"multiply(a, b)","summary":"Column-major multiply: out = a * b."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/vehicle/VehicleMath.md","moduleTitle":"assets/vehicle/VehicleMath","source":"engine/assets/vehicle/VehicleMath.js","import":"/engine/assets/vehicle/VehicleMath.js","sourceHash":"1d45737d4a68487d4ebc3ee5e0179f41a482accbb25f3a00b191459187305d33","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/vehicle/VehicleMath.js#0002:composeTRS","exportIndex":2,"name":"composeTRS","kind":"function","signature":"composeTRS(t = [0, 0, 0], q = [0, 0, 0, 1], s = 1)","summary":"Compose a TRS matrix (scale may be a number or [x,y,z])."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/vehicle/VehicleMath.md","moduleTitle":"assets/vehicle/VehicleMath","source":"engine/assets/vehicle/VehicleMath.js","import":"/engine/assets/vehicle/VehicleMath.js","sourceHash":"1d45737d4a68487d4ebc3ee5e0179f41a482accbb25f3a00b191459187305d33","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/vehicle/VehicleMath.js#0003:quatFromAxisAngle","exportIndex":3,"name":"quatFromAxisAngle","kind":"function","signature":"quatFromAxisAngle(axis, angle)","summary":"Quaternion (xyzw) from an axis + angle (radians)."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/vehicle/VehicleMath.md","moduleTitle":"assets/vehicle/VehicleMath","source":"engine/assets/vehicle/VehicleMath.js","import":"/engine/assets/vehicle/VehicleMath.js","sourceHash":"1d45737d4a68487d4ebc3ee5e0179f41a482accbb25f3a00b191459187305d33","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/vehicle/VehicleMath.js#0004:quatMul","exportIndex":4,"name":"quatMul","kind":"function","signature":"quatMul(a, b)","summary":"Hamilton product a*b (xyzw)."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/vehicle/VehicleMath.md","moduleTitle":"assets/vehicle/VehicleMath","source":"engine/assets/vehicle/VehicleMath.js","import":"/engine/assets/vehicle/VehicleMath.js","sourceHash":"1d45737d4a68487d4ebc3ee5e0179f41a482accbb25f3a00b191459187305d33","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/vehicle/VehicleMath.js#0005:transformPoint","exportIndex":5,"name":"transformPoint","kind":"function","signature":"transformPoint(m, p)","summary":"Transform a point (vec3) by a column-major 4x4."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/vehicle/VehicleMath.md","moduleTitle":"assets/vehicle/VehicleMath","source":"engine/assets/vehicle/VehicleMath.js","import":"/engine/assets/vehicle/VehicleMath.js","sourceHash":"1d45737d4a68487d4ebc3ee5e0179f41a482accbb25f3a00b191459187305d33","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/vehicle/VehicleMath.js#0006:nodeLocalMatrix","exportIndex":6,"name":"nodeLocalMatrix","kind":"function","signature":"nodeLocalMatrix(node)","summary":"Local transform of a node (matrix override or TRS)."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/vehicle/VehicleMath.md","moduleTitle":"assets/vehicle/VehicleMath","source":"engine/assets/vehicle/VehicleMath.js","import":"/engine/assets/vehicle/VehicleMath.js","sourceHash":"1d45737d4a68487d4ebc3ee5e0179f41a482accbb25f3a00b191459187305d33","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/vehicle/VehicleMath.js#0007:computeWorldMatrices","exportIndex":7,"name":"computeWorldMatrices","kind":"function","signature":"computeWorldMatrices(model)","summary":"World matrices for every node, accumulating the parent chain. Returns a Map(nodeId → Float32Array(16))."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/vehicle/VehicleRigBuilder.md","moduleTitle":"assets/vehicle/VehicleRigBuilder","source":"engine/assets/vehicle/VehicleRigBuilder.js","import":"/engine/assets/vehicle/VehicleRigBuilder.js","sourceHash":"8ae5808e9db0c4398735978f0ef4a470d7b5c2cf2471ac2263d9243d573b326a","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/vehicle/VehicleRigBuilder.js","title":"assets/vehicle/VehicleRigBuilder","summary":"engine/assets/vehicle/VehicleRigBuilder.js — assemble a VehicleAsset (spec §11).  Vehicles are rigged, not merely loaded. This turns detected wheels + chassis into explicit runtime data: WheelSlots (with suspension/tire/drivetrain), front-axle steering, a compound-collider descriptor for the chassis (built via the engine's ConvexDecomposition on demand), and a confidence. Detection failures (e.g. wheels merged into the body) flag needsCorrection rather than guessing — the editor exposes every decision (rule 62).","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/assets/vehicle/VehicleRigBuilder.md","moduleTitle":"assets/vehicle/VehicleRigBuilder","source":"engine/assets/vehicle/VehicleRigBuilder.js","import":"/engine/assets/vehicle/VehicleRigBuilder.js","sourceHash":"8ae5808e9db0c4398735978f0ef4a470d7b5c2cf2471ac2263d9243d573b326a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/vehicle/VehicleRigBuilder.js#0000:buildVehicleRig","exportIndex":0,"name":"buildVehicleRig","kind":"function","signature":"buildVehicleRig(model, opts = {})","summary":"Build a vehicle rig for a model and attach it at model.rigs.vehicle."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/vehicle/WheelDetector.md","moduleTitle":"assets/vehicle/WheelDetector","source":"engine/assets/vehicle/WheelDetector.js","import":"/engine/assets/vehicle/WheelDetector.js","sourceHash":"0a28f7df6d11591d8f3f1ba60d0a1193ccc36f056e2ed8ee0189fdaf361c20b3","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/vehicle/WheelDetector.js","title":"assets/vehicle/WheelDetector","summary":"engine/assets/vehicle/WheelDetector.js — find wheels (spec §11).  Detection chain (cheap → expensive), each a HINT with a confidence, never an assertion: name match → cylinder geometry → symmetry / low-corner position → (editor correction). Wheels that are merged into the body mesh won't be found here and fall through to the editor (see VehicleRigBuilder.needsCorrection).","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/assets/vehicle/WheelDetector.md","moduleTitle":"assets/vehicle/WheelDetector","source":"engine/assets/vehicle/WheelDetector.js","import":"/engine/assets/vehicle/WheelDetector.js","sourceHash":"0a28f7df6d11591d8f3f1ba60d0a1193ccc36f056e2ed8ee0189fdaf361c20b3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/vehicle/WheelDetector.js#0000:detectWheels","exportIndex":0,"name":"detectWheels","kind":"function","signature":"detectWheels(model, opts = {})","summary":"Detect wheel candidates in a model."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/vehicle/WheelPhysics.md","moduleTitle":"assets/vehicle/WheelPhysics","source":"engine/assets/vehicle/WheelPhysics.js","import":"/engine/assets/vehicle/WheelPhysics.js","sourceHash":"d9c654cdd156c548ed3635a3b794c4a83b3a2587facfd90b338f45486179b343","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/vehicle/WheelPhysics.js","title":"assets/vehicle/WheelPhysics","summary":"engine/assets/vehicle/WheelPhysics.js — suspension, tire slip, and the visual wheel transform chain (spec §11). Deterministic CPU model used for the inspector/demo and gates; production deployments route the same WheelSlot data into the engine's GPUVehicle. Wheel visuals FOLLOW physics state: chassisWorld · socket · suspension · steer · spin · meshCorrection.","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/assets/vehicle/WheelPhysics.md","moduleTitle":"assets/vehicle/WheelPhysics","source":"engine/assets/vehicle/WheelPhysics.js","import":"/engine/assets/vehicle/WheelPhysics.js","sourceHash":"d9c654cdd156c548ed3635a3b794c4a83b3a2587facfd90b338f45486179b343","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/vehicle/WheelPhysics.js#0000:suspensionForce","exportIndex":0,"name":"suspensionForce","kind":"function","signature":"suspensionForce({ restLength, currentLength, stiffness, damping, compressionVelocity = 0 })","summary":"Suspension spring + damper force. compression   = restLength - currentLength springForce   = stiffness * compression damperForce   = damping  * compressionVelocity normalLoad    = max(0, springForce + damperForce)"}
{"schemaVersion":1,"modulePath":"engine/reference/assets/vehicle/WheelPhysics.md","moduleTitle":"assets/vehicle/WheelPhysics","source":"engine/assets/vehicle/WheelPhysics.js","import":"/engine/assets/vehicle/WheelPhysics.js","sourceHash":"d9c654cdd156c548ed3635a3b794c4a83b3a2587facfd90b338f45486179b343","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/vehicle/WheelPhysics.js#0001:tireForce","exportIndex":1,"name":"tireForce","kind":"function","signature":"tireForce(slip, normalLoad, grip, slipStiffness = 12)","summary":"A slip-based tire force (Pacejka-lite): linear near zero slip, saturating at the friction limit `normalLoad * grip`. `slipStiffness` shapes the knee."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/vehicle/WheelPhysics.md","moduleTitle":"assets/vehicle/WheelPhysics","source":"engine/assets/vehicle/WheelPhysics.js","import":"/engine/assets/vehicle/WheelPhysics.js","sourceHash":"d9c654cdd156c548ed3635a3b794c4a83b3a2587facfd90b338f45486179b343","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/vehicle/WheelPhysics.js#0002:longitudinalSlip","exportIndex":2,"name":"longitudinalSlip","kind":"function","signature":"longitudinalSlip(wheelAngularVel, radius, groundSpeed)","summary":"Longitudinal slip ratio from wheel surface speed vs ground speed."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/vehicle/WheelPhysics.md","moduleTitle":"assets/vehicle/WheelPhysics","source":"engine/assets/vehicle/WheelPhysics.js","import":"/engine/assets/vehicle/WheelPhysics.js","sourceHash":"d9c654cdd156c548ed3635a3b794c4a83b3a2587facfd90b338f45486179b343","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/vehicle/WheelPhysics.js#0003:freeRollAngularVelocity","exportIndex":3,"name":"freeRollAngularVelocity","kind":"function","signature":"freeRollAngularVelocity(groundSpeed, radius)","summary":"Free-rolling angular velocity (rad/s) for a given ground speed."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/vehicle/WheelPhysics.md","moduleTitle":"assets/vehicle/WheelPhysics","source":"engine/assets/vehicle/WheelPhysics.js","import":"/engine/assets/vehicle/WheelPhysics.js","sourceHash":"d9c654cdd156c548ed3635a3b794c4a83b3a2587facfd90b338f45486179b343","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/vehicle/WheelPhysics.js#0004:visualWheelMatrix","exportIndex":4,"name":"visualWheelMatrix","kind":"function","signature":"visualWheelMatrix(chassisWorld, slot, state = {})","summary":"Compose the visual world matrix for a wheel from chassis world + slot + state."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/vehicle/WheelPhysics.md","moduleTitle":"assets/vehicle/WheelPhysics","source":"engine/assets/vehicle/WheelPhysics.js","import":"/engine/assets/vehicle/WheelPhysics.js","sourceHash":"d9c654cdd156c548ed3635a3b794c4a83b3a2587facfd90b338f45486179b343","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/vehicle/WheelPhysics.js#0005:advanceSpin","exportIndex":5,"name":"advanceSpin","kind":"function","signature":"advanceSpin(spinAngle, groundSpeed, radius, dt)","summary":"Advance a wheel's spin angle from a ground speed (visual integration)."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/vehicle/WheelSlot.md","moduleTitle":"assets/vehicle/WheelSlot","source":"engine/assets/vehicle/WheelSlot.js","import":"/engine/assets/vehicle/WheelSlot.js","sourceHash":"1bc4ed1f7983abd720d317bc82fd6eeac2657fdfc4cc027f4247c674c05de034","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/vehicle/WheelSlot.js","title":"assets/vehicle/WheelSlot","summary":"engine/assets/vehicle/WheelSlot.js — vehicle rig schemas (spec §11).  A vehicle is NOT a mesh: it's a visual model + chassis collider + wheel slots + suspension + tire model + drivetrain. Wheel runtime data is explicit and separate from the visible wheel mesh (matching Jolt/Unity wheel colliders), so visuals follow physics rather than the other way around.","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/assets/vehicle/WheelSlot.md","moduleTitle":"assets/vehicle/WheelSlot","source":"engine/assets/vehicle/WheelSlot.js","import":"/engine/assets/vehicle/WheelSlot.js","sourceHash":"1bc4ed1f7983abd720d317bc82fd6eeac2657fdfc4cc027f4247c674c05de034","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/vehicle/WheelSlot.js#0000:createWheelSlot","exportIndex":0,"name":"createWheelSlot","kind":"function","signature":"createWheelSlot(init = {})","summary":"A wheel slot: the runtime data for one wheel, decoupled from its visual mesh."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/vehicle/WheelSlot.md","moduleTitle":"assets/vehicle/WheelSlot","source":"engine/assets/vehicle/WheelSlot.js","import":"/engine/assets/vehicle/WheelSlot.js","sourceHash":"1bc4ed1f7983abd720d317bc82fd6eeac2657fdfc4cc027f4247c674c05de034","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/vehicle/WheelSlot.js#0001:createSuspension","exportIndex":1,"name":"createSuspension","kind":"function","signature":"createSuspension(init = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/vehicle/WheelSlot.md","moduleTitle":"assets/vehicle/WheelSlot","source":"engine/assets/vehicle/WheelSlot.js","import":"/engine/assets/vehicle/WheelSlot.js","sourceHash":"1bc4ed1f7983abd720d317bc82fd6eeac2657fdfc4cc027f4247c674c05de034","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/vehicle/WheelSlot.js#0002:createTireProfile","exportIndex":2,"name":"createTireProfile","kind":"function","signature":"createTireProfile(init = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/vehicle/WheelSlot.md","moduleTitle":"assets/vehicle/WheelSlot","source":"engine/assets/vehicle/WheelSlot.js","import":"/engine/assets/vehicle/WheelSlot.js","sourceHash":"1bc4ed1f7983abd720d317bc82fd6eeac2657fdfc4cc027f4247c674c05de034","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/vehicle/WheelSlot.js#0003:createVehicleAsset","exportIndex":3,"name":"createVehicleAsset","kind":"function","signature":"createVehicleAsset(init = {})","summary":"The assembled vehicle rig produced by VehicleRigBuilder. It references the model's nodes/meshes and carries explicit runtime data; it can drive the engine's GPUVehicle physics or the CPU WheelPhysics fallback."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/vehicle/WheelSlot.md","moduleTitle":"assets/vehicle/WheelSlot","source":"engine/assets/vehicle/WheelSlot.js","import":"/engine/assets/vehicle/WheelSlot.js","sourceHash":"1bc4ed1f7983abd720d317bc82fd6eeac2657fdfc4cc027f4247c674c05de034","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/vehicle/WheelSlot.js#0004:DRIVETRAIN","exportIndex":4,"name":"DRIVETRAIN","kind":"constant","signature":"DRIVETRAIN","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/vehicle/WheelSlot.md","moduleTitle":"assets/vehicle/WheelSlot","source":"engine/assets/vehicle/WheelSlot.js","import":"/engine/assets/vehicle/WheelSlot.js","sourceHash":"1bc4ed1f7983abd720d317bc82fd6eeac2657fdfc4cc027f4247c674c05de034","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/vehicle/WheelSlot.js#0005:WHEEL_PHYSICS_MODE","exportIndex":5,"name":"WHEEL_PHYSICS_MODE","kind":"constant","signature":"WHEEL_PHYSICS_MODE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/vehicle/WheelSpinVisual.md","moduleTitle":"assets/vehicle/WheelSpinVisual","source":"engine/assets/vehicle/WheelSpinVisual.js","import":"/engine/assets/vehicle/WheelSpinVisual.js","sourceHash":"1dbf87409513016dd0b22c6afec003812002217d6e1a45a81f12e9760776db8d","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/vehicle/WheelSpinVisual.js","title":"assets/vehicle/WheelSpinVisual","summary":"engine/assets/vehicle/WheelSpinVisual.js — visual wheel-spin transforms for a rigged vehicle. Separated from physics (WheelPhysics) and detection so the importer/viewer, the editor preview, and the runtime can all reuse one correct implementation.  Approach (matches Unity `transform.Rotate(..,Space.Self)` / Godot `rotate_object_local`): the spin is built in the wheel's MESH-LOCAL space from the detector's per-wheel hub (`localPivot`) and axle (`axleAxisLocal`), then the node hierarchy + import correction carry it to the right world position and orientation automatically (the renderer does `draw = baseDraw · spin_local`).  This avoids transforming the axle into world space, PCA axis ambiguity on low-poly wheels, and pivot guessing — the failure modes of a world-space spin. The only world-space step is a per-wheel SIGN so mirrored wheels roll the same way; the axle vector itself stays the exact per-wheel local axis.","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/assets/vehicle/WheelSpinVisual.md","moduleTitle":"assets/vehicle/WheelSpinVisual","source":"engine/assets/vehicle/WheelSpinVisual.js","import":"/engine/assets/vehicle/WheelSpinVisual.js","sourceHash":"1dbf87409513016dd0b22c6afec003812002217d6e1a45a81f12e9760776db8d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/vehicle/WheelSpinVisual.js#0000:rotAxis","exportIndex":0,"name":"rotAxis","kind":"function","signature":"rotAxis(axis, angle)","summary":"Column-major rotation about an arbitrary (unit-normalized) axis."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/vehicle/WheelSpinVisual.md","moduleTitle":"assets/vehicle/WheelSpinVisual","source":"engine/assets/vehicle/WheelSpinVisual.js","import":"/engine/assets/vehicle/WheelSpinVisual.js","sourceHash":"1dbf87409513016dd0b22c6afec003812002217d6e1a45a81f12e9760776db8d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/vehicle/WheelSpinVisual.js#0001:pivotSpin","exportIndex":1,"name":"pivotSpin","kind":"function","signature":"pivotSpin(pivot, axis, angle)","summary":"Spin about an axis through a pivot: T(pivot) · R(axis,angle) · T(-pivot)."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/vehicle/WheelSpinVisual.md","moduleTitle":"assets/vehicle/WheelSpinVisual","source":"engine/assets/vehicle/WheelSpinVisual.js","import":"/engine/assets/vehicle/WheelSpinVisual.js","sourceHash":"1dbf87409513016dd0b22c6afec003812002217d6e1a45a81f12e9760776db8d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/vehicle/WheelSpinVisual.js#0002:buildWheelSpinMap","exportIndex":2,"name":"buildWheelSpinMap","kind":"function","signature":"buildWheelSpinMap(model, importMatrix, rig)","summary":"Build a per-wheel spin descriptor map for a rigged model. Each entry carries the wheel's MESH-LOCAL pivot + axle (so the renderer applies the spin in local space: `draw = baseDraw · pivotSpin(pivot, axle, angle)`). The local axle is pre-signed so every wheel rolls the same visual direction. Steerable wheels also carry their local steer axis so the renderer can yaw them with input."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/vehicle/WheelSpinVisual.md","moduleTitle":"assets/vehicle/WheelSpinVisual","source":"engine/assets/vehicle/WheelSpinVisual.js","import":"/engine/assets/vehicle/WheelSpinVisual.js","sourceHash":"1dbf87409513016dd0b22c6afec003812002217d6e1a45a81f12e9760776db8d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/vehicle/WheelSpinVisual.js#0003:rollAngle","exportIndex":3,"name":"rollAngle","kind":"function","signature":"rollAngle(distance, radius)","summary":"Spin angle (radians) for a wheel that has rolled `distance` metres."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/vpath.md","moduleTitle":"assets/vpath","source":"engine/assets/vpath.js","import":"/engine/assets/vpath.js","sourceHash":"4f5897a9052fa17fdabd4412f6122b7aa1f8e81ca7315656205ccc879420d756","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/vpath.js","title":"assets/vpath","summary":"engine/assets/vpath.js — virtual path system.  Users never manage raw filesystem paths. Everything addresses through a scheme://path virtual path. The resolver (AssetResolver) maps a virtual path to a concrete backend handle; this module only parses/normalizes/builds them.  asset://   project asset library user://    user-selected local folder (File System Access) cache://   OPFS / local engine cache cloud://   optional remote mirror temp://    transient drag-drop import surface:// live render surface (no backing file)","exportCount":9}
{"schemaVersion":1,"modulePath":"engine/reference/assets/vpath.md","moduleTitle":"assets/vpath","source":"engine/assets/vpath.js","import":"/engine/assets/vpath.js","sourceHash":"4f5897a9052fa17fdabd4412f6122b7aa1f8e81ca7315656205ccc879420d756","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/vpath.js#0000:parseVPath","exportIndex":0,"name":"parseVPath","kind":"function","signature":"parseVPath(vpath)","summary":"Parse a virtual path into { scheme, path, segments }."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/vpath.md","moduleTitle":"assets/vpath","source":"engine/assets/vpath.js","import":"/engine/assets/vpath.js","sourceHash":"4f5897a9052fa17fdabd4412f6122b7aa1f8e81ca7315656205ccc879420d756","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/vpath.js#0001:isVPath","exportIndex":1,"name":"isVPath","kind":"function","signature":"isVPath(vpath)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/vpath.md","moduleTitle":"assets/vpath","source":"engine/assets/vpath.js","import":"/engine/assets/vpath.js","sourceHash":"4f5897a9052fa17fdabd4412f6122b7aa1f8e81ca7315656205ccc879420d756","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/vpath.js#0002:makeVPath","exportIndex":2,"name":"makeVPath","kind":"function","signature":"makeVPath(scheme, ...parts)","summary":"Build a virtual path from a scheme + path parts."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/vpath.md","moduleTitle":"assets/vpath","source":"engine/assets/vpath.js","import":"/engine/assets/vpath.js","sourceHash":"4f5897a9052fa17fdabd4412f6122b7aa1f8e81ca7315656205ccc879420d756","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/vpath.js#0003:normalizeSegments","exportIndex":3,"name":"normalizeSegments","kind":"function","signature":"normalizeSegments(path)","summary":"Collapse duplicate/empty separators and strip leading/trailing slashes."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/vpath.md","moduleTitle":"assets/vpath","source":"engine/assets/vpath.js","import":"/engine/assets/vpath.js","sourceHash":"4f5897a9052fa17fdabd4412f6122b7aa1f8e81ca7315656205ccc879420d756","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/vpath.js#0004:withScheme","exportIndex":4,"name":"withScheme","kind":"function","signature":"withScheme(vpath, scheme)","summary":"Swap the scheme of a virtual path, keeping the same path (e.g. for backups)."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/vpath.md","moduleTitle":"assets/vpath","source":"engine/assets/vpath.js","import":"/engine/assets/vpath.js","sourceHash":"4f5897a9052fa17fdabd4412f6122b7aa1f8e81ca7315656205ccc879420d756","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/vpath.js#0005:vpathBasename","exportIndex":5,"name":"vpathBasename","kind":"function","signature":"vpathBasename(vpath)","summary":"The basename (last segment) and extension of a virtual path."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/vpath.md","moduleTitle":"assets/vpath","source":"engine/assets/vpath.js","import":"/engine/assets/vpath.js","sourceHash":"4f5897a9052fa17fdabd4412f6122b7aa1f8e81ca7315656205ccc879420d756","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/vpath.js#0006:vpathExtension","exportIndex":6,"name":"vpathExtension","kind":"function","signature":"vpathExtension(vpath)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/vpath.md","moduleTitle":"assets/vpath","source":"engine/assets/vpath.js","import":"/engine/assets/vpath.js","sourceHash":"4f5897a9052fa17fdabd4412f6122b7aa1f8e81ca7315656205ccc879420d756","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/vpath.js#0007:cachePathFor","exportIndex":7,"name":"cachePathFor","kind":"function","signature":"cachePathFor(kind, sourceHash, ext)","summary":"Standard cache path for a converted artifact, keyed by content hash."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/vpath.md","moduleTitle":"assets/vpath","source":"engine/assets/vpath.js","import":"/engine/assets/vpath.js","sourceHash":"4f5897a9052fa17fdabd4412f6122b7aa1f8e81ca7315656205ccc879420d756","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/vpath.js#0008:VPATH_SCHEMES","exportIndex":8,"name":"VPATH_SCHEMES","kind":"constant","signature":"VPATH_SCHEMES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/weapon/WeaponRig.md","moduleTitle":"assets/weapon/WeaponRig","source":"engine/assets/weapon/WeaponRig.js","import":"/engine/assets/weapon/WeaponRig.js","sourceHash":"12c66e75b48142d53b006fba9493966f81413c1502d5207dc3b1cf4d11d615fb","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/weapon/WeaponRig.js","title":"assets/weapon/WeaponRig","summary":"engine/assets/weapon/WeaponRig.js — canonical weapon socket/part schema (spec §13). A weapon is a model + sockets (muzzle/chamber/grips/sight/…) + moving parts (slide/bolt/hammer/…) + a fire/reload timeline + a state machine. This is a GAME ABSTRACTION: sockets/timings are gameplay anchors, not real-firearm data. Every detection is a hint with confidence; ambiguous nodes go to the editor.","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/assets/weapon/WeaponRig.md","moduleTitle":"assets/weapon/WeaponRig","source":"engine/assets/weapon/WeaponRig.js","import":"/engine/assets/weapon/WeaponRig.js","sourceHash":"12c66e75b48142d53b006fba9493966f81413c1502d5207dc3b1cf4d11d615fb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/weapon/WeaponRig.js#0000:createWeaponRig","exportIndex":0,"name":"createWeaponRig","kind":"function","signature":"createWeaponRig(init = {})","summary":"Create a weapon rig descriptor."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/weapon/WeaponRig.md","moduleTitle":"assets/weapon/WeaponRig","source":"engine/assets/weapon/WeaponRig.js","import":"/engine/assets/weapon/WeaponRig.js","sourceHash":"12c66e75b48142d53b006fba9493966f81413c1502d5207dc3b1cf4d11d615fb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/weapon/WeaponRig.js#0001:WEAPON_SOCKET","exportIndex":1,"name":"WEAPON_SOCKET","kind":"constant","signature":"WEAPON_SOCKET","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/weapon/WeaponRig.md","moduleTitle":"assets/weapon/WeaponRig","source":"engine/assets/weapon/WeaponRig.js","import":"/engine/assets/weapon/WeaponRig.js","sourceHash":"12c66e75b48142d53b006fba9493966f81413c1502d5207dc3b1cf4d11d615fb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/weapon/WeaponRig.js#0002:MOVING_PART","exportIndex":2,"name":"MOVING_PART","kind":"constant","signature":"MOVING_PART","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/weapon/WeaponRig.md","moduleTitle":"assets/weapon/WeaponRig","source":"engine/assets/weapon/WeaponRig.js","import":"/engine/assets/weapon/WeaponRig.js","sourceHash":"12c66e75b48142d53b006fba9493966f81413c1502d5207dc3b1cf4d11d615fb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/weapon/WeaponRig.js#0003:WEAPON_TYPE","exportIndex":3,"name":"WEAPON_TYPE","kind":"constant","signature":"WEAPON_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/weapon/WeaponRig.md","moduleTitle":"assets/weapon/WeaponRig","source":"engine/assets/weapon/WeaponRig.js","import":"/engine/assets/weapon/WeaponRig.js","sourceHash":"12c66e75b48142d53b006fba9493966f81413c1502d5207dc3b1cf4d11d615fb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/weapon/WeaponRig.js#0004:REQUIRED_SOCKETS","exportIndex":4,"name":"REQUIRED_SOCKETS","kind":"constant","signature":"REQUIRED_SOCKETS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/weapon/WeaponRigBuilder.md","moduleTitle":"assets/weapon/WeaponRigBuilder","source":"engine/assets/weapon/WeaponRigBuilder.js","import":"/engine/assets/weapon/WeaponRigBuilder.js","sourceHash":"10b7eea5d7c0f6964a6f32f673b2dc924c69d9b9cbc589d5e1ccfaf707f43300","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/weapon/WeaponRigBuilder.js","title":"assets/weapon/WeaponRigBuilder","summary":"engine/assets/weapon/WeaponRigBuilder.js — assemble a WeaponRig from a model: detect sockets + moving parts + forward/muzzle, attach default fire/reload timelines and a state machine seed, and flag needsCorrection when required sockets are missing. Attaches at model.rigs.weapon. GAME ABSTRACTION ONLY.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/assets/weapon/WeaponRigBuilder.md","moduleTitle":"assets/weapon/WeaponRigBuilder","source":"engine/assets/weapon/WeaponRigBuilder.js","import":"/engine/assets/weapon/WeaponRigBuilder.js","sourceHash":"10b7eea5d7c0f6964a6f32f673b2dc924c69d9b9cbc589d5e1ccfaf707f43300","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/weapon/WeaponRigBuilder.js#0000:buildWeaponRig","exportIndex":0,"name":"buildWeaponRig","kind":"function","signature":"buildWeaponRig(model, opts = {})","summary":"Build a weapon rig and attach it at model.rigs.weapon."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/weapon/WeaponSocketDetector.md","moduleTitle":"assets/weapon/WeaponSocketDetector","source":"engine/assets/weapon/WeaponSocketDetector.js","import":"/engine/assets/weapon/WeaponSocketDetector.js","sourceHash":"fbe8b094e5ae632d425e3f79a464052701f7ee9bb1a00ce56945f4bd2d9e5aea","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/weapon/WeaponSocketDetector.js","title":"assets/weapon/WeaponSocketDetector","summary":"engine/assets/weapon/WeaponSocketDetector.js — find weapon sockets + moving parts by NAME (priority-ordered patterns) and resolve the forward/aim axis + muzzle by geometry (a firearm is long along the barrel; the muzzle is the front-most node along that axis). Hints + confidence; ambiguous → editor. GAME ABSTRACTION ONLY — no real-firearm dimensions or ballistics here.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/assets/weapon/WeaponSocketDetector.md","moduleTitle":"assets/weapon/WeaponSocketDetector","source":"engine/assets/weapon/WeaponSocketDetector.js","import":"/engine/assets/weapon/WeaponSocketDetector.js","sourceHash":"fbe8b094e5ae632d425e3f79a464052701f7ee9bb1a00ce56945f4bd2d9e5aea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/weapon/WeaponSocketDetector.js#0000:detectWeapon","exportIndex":0,"name":"detectWeapon","kind":"function","signature":"detectWeapon(model)","summary":"Detect weapon sockets, moving parts, forward axis, and muzzle."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/weapon/WeaponStateMachine.md","moduleTitle":"assets/weapon/WeaponStateMachine","source":"engine/assets/weapon/WeaponStateMachine.js","import":"/engine/assets/weapon/WeaponStateMachine.js","sourceHash":"7dab2b294914eaedd3b9ca3be42f82e58f0f36bd5d6fd0cfbd205ac8b2754c1e","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/weapon/WeaponStateMachine.js","title":"assets/weapon/WeaponStateMachine","summary":"engine/assets/weapon/WeaponStateMachine.js — a small, deterministic weapon state machine: idle ⇄ firing ⇄ empty, with reloading. It models a magazine + a chambered round (total = ammo + chambered) and auto-cycles a fresh round after each shot, so dry-fire, last-round, and reload-from-empty all behave correctly. GAME ABSTRACTION ONLY — no real-firearm mechanism is modelled.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/assets/weapon/WeaponStateMachine.md","moduleTitle":"assets/weapon/WeaponStateMachine","source":"engine/assets/weapon/WeaponStateMachine.js","import":"/engine/assets/weapon/WeaponStateMachine.js","sourceHash":"7dab2b294914eaedd3b9ca3be42f82e58f0f36bd5d6fd0cfbd205ac8b2754c1e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/weapon/WeaponStateMachine.js#0000:createWeaponStateMachine","exportIndex":0,"name":"createWeaponStateMachine","kind":"function","signature":"createWeaponStateMachine(init = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/weapon/WeaponStateMachine.md","moduleTitle":"assets/weapon/WeaponStateMachine","source":"engine/assets/weapon/WeaponStateMachine.js","import":"/engine/assets/weapon/WeaponStateMachine.js","sourceHash":"7dab2b294914eaedd3b9ca3be42f82e58f0f36bd5d6fd0cfbd205ac8b2754c1e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/weapon/WeaponStateMachine.js#0001:WEAPON_STATE","exportIndex":1,"name":"WEAPON_STATE","kind":"constant","signature":"WEAPON_STATE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/weapon/WeaponStateMachine.md","moduleTitle":"assets/weapon/WeaponStateMachine","source":"engine/assets/weapon/WeaponStateMachine.js","import":"/engine/assets/weapon/WeaponStateMachine.js","sourceHash":"7dab2b294914eaedd3b9ca3be42f82e58f0f36bd5d6fd0cfbd205ac8b2754c1e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/weapon/WeaponStateMachine.js#0002:WEAPON_INPUT","exportIndex":2,"name":"WEAPON_INPUT","kind":"constant","signature":"WEAPON_INPUT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/assets/weapon/WeaponTimeline.md","moduleTitle":"assets/weapon/WeaponTimeline","source":"engine/assets/weapon/WeaponTimeline.js","import":"/engine/assets/weapon/WeaponTimeline.js","sourceHash":"2899e4d083d03a272dce26c7759d17305eaf80e81b0fa63b4a0dcc368fcd9902","subsystem":"engine","recordType":"api-module","id":"module:engine/assets/weapon/WeaponTimeline.js","title":"assets/weapon/WeaponTimeline","summary":"engine/assets/weapon/WeaponTimeline.js — keyframed event tracks for weapon actions (fire, reload). An action is an ordered list of { t, type, payload } events over a duration; `eventsBetween` returns events crossed in a time step so the host fires them exactly once (deterministic, frame-rate independent). GAME ABSTRACTION — timings are gameplay anchors, not real mechanisms.","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/assets/weapon/WeaponTimeline.md","moduleTitle":"assets/weapon/WeaponTimeline","source":"engine/assets/weapon/WeaponTimeline.js","import":"/engine/assets/weapon/WeaponTimeline.js","sourceHash":"2899e4d083d03a272dce26c7759d17305eaf80e81b0fa63b4a0dcc368fcd9902","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/weapon/WeaponTimeline.js#0000:createWeaponAction","exportIndex":0,"name":"createWeaponAction","kind":"function","signature":"createWeaponAction(init = {})","summary":"Create a single action timeline (e.g. one shot, or a reload)."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/weapon/WeaponTimeline.md","moduleTitle":"assets/weapon/WeaponTimeline","source":"engine/assets/weapon/WeaponTimeline.js","import":"/engine/assets/weapon/WeaponTimeline.js","sourceHash":"2899e4d083d03a272dce26c7759d17305eaf80e81b0fa63b4a0dcc368fcd9902","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/weapon/WeaponTimeline.js#0001:defaultFireAction","exportIndex":1,"name":"defaultFireAction","kind":"function","signature":"defaultFireAction(duration = 0.12)","summary":"A default semi-auto fire action (normalized 0..duration seconds)."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/weapon/WeaponTimeline.md","moduleTitle":"assets/weapon/WeaponTimeline","source":"engine/assets/weapon/WeaponTimeline.js","import":"/engine/assets/weapon/WeaponTimeline.js","sourceHash":"2899e4d083d03a272dce26c7759d17305eaf80e81b0fa63b4a0dcc368fcd9902","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/weapon/WeaponTimeline.js#0002:defaultReloadAction","exportIndex":2,"name":"defaultReloadAction","kind":"function","signature":"defaultReloadAction(duration = 2.0)","summary":"A default reload action."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/weapon/WeaponTimeline.md","moduleTitle":"assets/weapon/WeaponTimeline","source":"engine/assets/weapon/WeaponTimeline.js","import":"/engine/assets/weapon/WeaponTimeline.js","sourceHash":"2899e4d083d03a272dce26c7759d17305eaf80e81b0fa63b4a0dcc368fcd9902","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/weapon/WeaponTimeline.js#0003:eventsBetween","exportIndex":3,"name":"eventsBetween","kind":"function","signature":"eventsBetween(action, t0, t1)","summary":"Events whose time t lies in (t0, t1]. Use with an advancing playhead so each event fires exactly once regardless of frame rate."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/weapon/WeaponTimeline.md","moduleTitle":"assets/weapon/WeaponTimeline","source":"engine/assets/weapon/WeaponTimeline.js","import":"/engine/assets/weapon/WeaponTimeline.js","sourceHash":"2899e4d083d03a272dce26c7759d17305eaf80e81b0fa63b4a0dcc368fcd9902","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/weapon/WeaponTimeline.js#0004:createTimelinePlayer","exportIndex":4,"name":"createTimelinePlayer","kind":"function","signature":"createTimelinePlayer(action)","summary":"A small play-once cursor over an action."}
{"schemaVersion":1,"modulePath":"engine/reference/assets/weapon/WeaponTimeline.md","moduleTitle":"assets/weapon/WeaponTimeline","source":"engine/assets/weapon/WeaponTimeline.js","import":"/engine/assets/weapon/WeaponTimeline.js","sourceHash":"2899e4d083d03a272dce26c7759d17305eaf80e81b0fa63b4a0dcc368fcd9902","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/assets/weapon/WeaponTimeline.js#0005:WEAPON_EVENT","exportIndex":5,"name":"WEAPON_EVENT","kind":"constant","signature":"WEAPON_EVENT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/SpatialAudioEnvironment.md","moduleTitle":"audio/SpatialAudioEnvironment","source":"engine/audio/SpatialAudioEnvironment.js","import":"/engine/audio/SpatialAudioEnvironment.js","sourceHash":"9d17ad3179968712a771f5e4b29bd6020940bc5e7a9fc9b4b82e86c01c8536fa","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/SpatialAudioEnvironment.js","title":"audio/SpatialAudioEnvironment","summary":"SpatialAudioEnvironment.js - Advanced Spatial Audio Processing Industry-grade environment audio: material absorption, ground reflection, environment zones (underwater/cave/outdoor), diffraction, and dynamic reverb. Research basis: - FMOD/Wwise material absorption coefficients (ISO 354 standard) - Image-source method for early reflections (Allen & Berkley 1979) - Underwater acoustics: 300Hz LPF + extended reverb (Wikipedia/Navy research) - Diffraction: UTD edge diffraction approximation (Kouyoumjian & Pathak 1974) - Ground reflection: single-bounce mirror source below floor plane All processing uses Web Audio API nodes (BiquadFilter, Gain, Delay, Convolver). Zero external dependencies.","exportCount":15}
{"schemaVersion":1,"modulePath":"engine/reference/audio/SpatialAudioEnvironment.md","moduleTitle":"audio/SpatialAudioEnvironment","source":"engine/audio/SpatialAudioEnvironment.js","import":"/engine/audio/SpatialAudioEnvironment.js","sourceHash":"9d17ad3179968712a771f5e4b29bd6020940bc5e7a9fc9b4b82e86c01c8536fa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/SpatialAudioEnvironment.js#0000:createSpatialEnvironment","exportIndex":0,"name":"createSpatialEnvironment","kind":"function","signature":"createSpatialEnvironment(ctx, config = {})","summary":"Create the spatial audio environment system. Attaches to an existing AudioContext and provides environment processing."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/SpatialAudioEnvironment.md","moduleTitle":"audio/SpatialAudioEnvironment","source":"engine/audio/SpatialAudioEnvironment.js","import":"/engine/audio/SpatialAudioEnvironment.js","sourceHash":"9d17ad3179968712a771f5e4b29bd6020940bc5e7a9fc9b4b82e86c01c8536fa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/SpatialAudioEnvironment.js#0001:setEnvironmentRaycast","exportIndex":1,"name":"setEnvironmentRaycast","kind":"function","signature":"setEnvironmentRaycast(env, fn)","summary":"Set the raycast function for environment probing. Function signature: (origin: [x,y,z], direction: [x,y,z], maxDist: number) => { hit, distance, position, normal, entityId } | null"}
{"schemaVersion":1,"modulePath":"engine/reference/audio/SpatialAudioEnvironment.md","moduleTitle":"audio/SpatialAudioEnvironment","source":"engine/audio/SpatialAudioEnvironment.js","import":"/engine/audio/SpatialAudioEnvironment.js","sourceHash":"9d17ad3179968712a771f5e4b29bd6020940bc5e7a9fc9b4b82e86c01c8536fa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/SpatialAudioEnvironment.js#0002:setEntityMaterialLookup","exportIndex":2,"name":"setEntityMaterialLookup","kind":"function","signature":"setEntityMaterialLookup(env, fn)","summary":"Set the entity material lookup function. Function signature: (entityId) => 'stone' | 'wood' | 'metal' | etc."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/SpatialAudioEnvironment.md","moduleTitle":"audio/SpatialAudioEnvironment","source":"engine/audio/SpatialAudioEnvironment.js","import":"/engine/audio/SpatialAudioEnvironment.js","sourceHash":"9d17ad3179968712a771f5e4b29bd6020940bc5e7a9fc9b4b82e86c01c8536fa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/SpatialAudioEnvironment.js#0003:setWaterSurfaceY","exportIndex":3,"name":"setWaterSurfaceY","kind":"function","signature":"setWaterSurfaceY(env, y)","summary":"Set the water surface Y level. Listener below this = underwater. Pass null to disable underwater detection."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/SpatialAudioEnvironment.md","moduleTitle":"audio/SpatialAudioEnvironment","source":"engine/audio/SpatialAudioEnvironment.js","import":"/engine/audio/SpatialAudioEnvironment.js","sourceHash":"9d17ad3179968712a771f5e4b29bd6020940bc5e7a9fc9b4b82e86c01c8536fa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/SpatialAudioEnvironment.js#0004:updateEnvironment","exportIndex":4,"name":"updateEnvironment","kind":"function","signature":"updateEnvironment(env, listenerPos, listenerFwd)","summary":"Update the environment system each frame. Detects environment zone, updates ground reflection, handles underwater."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/SpatialAudioEnvironment.md","moduleTitle":"audio/SpatialAudioEnvironment","source":"engine/audio/SpatialAudioEnvironment.js","import":"/engine/audio/SpatialAudioEnvironment.js","sourceHash":"9d17ad3179968712a771f5e4b29bd6020940bc5e7a9fc9b4b82e86c01c8536fa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/SpatialAudioEnvironment.js#0005:computeOcclusion","exportIndex":5,"name":"computeOcclusion","kind":"function","signature":"computeOcclusion(env, srcPos)","summary":"Compute material-aware occlusion between a source and the listener. Returns { factor: 0-1, lpfMult: 0-1 } where factor affects volume, lpfMult affects high-frequency content (material filtering)."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/SpatialAudioEnvironment.md","moduleTitle":"audio/SpatialAudioEnvironment","source":"engine/audio/SpatialAudioEnvironment.js","import":"/engine/audio/SpatialAudioEnvironment.js","sourceHash":"9d17ad3179968712a771f5e4b29bd6020940bc5e7a9fc9b4b82e86c01c8536fa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/SpatialAudioEnvironment.js#0006:computeDiffraction","exportIndex":6,"name":"computeDiffraction","kind":"function","signature":"computeDiffraction(env, srcPos)","summary":"Compute diffraction factor for partially occluded sources. Casts multiple rays slightly offset from the direct path. If some rays get through, the sound is partially diffracted (not fully blocked)."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/SpatialAudioEnvironment.md","moduleTitle":"audio/SpatialAudioEnvironment","source":"engine/audio/SpatialAudioEnvironment.js","import":"/engine/audio/SpatialAudioEnvironment.js","sourceHash":"9d17ad3179968712a771f5e4b29bd6020940bc5e7a9fc9b4b82e86c01c8536fa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/SpatialAudioEnvironment.js#0007:computeFullOcclusion","exportIndex":7,"name":"computeFullOcclusion","kind":"function","signature":"computeFullOcclusion(env, srcPos)","summary":"Compute full spatial occlusion for a sound source. Combines material-based occlusion with edge diffraction. Returns 0-1 where 0 = fully blocked, 1 = clear."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/SpatialAudioEnvironment.md","moduleTitle":"audio/SpatialAudioEnvironment","source":"engine/audio/SpatialAudioEnvironment.js","import":"/engine/audio/SpatialAudioEnvironment.js","sourceHash":"9d17ad3179968712a771f5e4b29bd6020940bc5e7a9fc9b4b82e86c01c8536fa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/SpatialAudioEnvironment.js#0008:getEnvironmentIR","exportIndex":8,"name":"getEnvironmentIR","kind":"function","signature":"getEnvironmentIR(env, zoneName)","summary":"Generate a procedural impulse response for a given environment. Cached per environment to avoid regeneration."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/SpatialAudioEnvironment.md","moduleTitle":"audio/SpatialAudioEnvironment","source":"engine/audio/SpatialAudioEnvironment.js","import":"/engine/audio/SpatialAudioEnvironment.js","sourceHash":"9d17ad3179968712a771f5e4b29bd6020940bc5e7a9fc9b4b82e86c01c8536fa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/SpatialAudioEnvironment.js#0009:connectToBridge","exportIndex":9,"name":"connectToBridge","kind":"function","signature":"connectToBridge(env, bridge)","summary":"Connect the environment system's master filters into the audio bridge's output chain. Call once after both bridge and environment are created. Inserts: bridge.masterGain → env.masterHPF → env.masterLPF → ctx.destination Also connects ground reflection send from bridge.compressor."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/SpatialAudioEnvironment.md","moduleTitle":"audio/SpatialAudioEnvironment","source":"engine/audio/SpatialAudioEnvironment.js","import":"/engine/audio/SpatialAudioEnvironment.js","sourceHash":"9d17ad3179968712a771f5e4b29bd6020940bc5e7a9fc9b4b82e86c01c8536fa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/SpatialAudioEnvironment.js#0010:getMaterialAbsorption","exportIndex":10,"name":"getMaterialAbsorption","kind":"function","signature":"getMaterialAbsorption(materialKey)","summary":"Get absorption data for a material key."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/SpatialAudioEnvironment.md","moduleTitle":"audio/SpatialAudioEnvironment","source":"engine/audio/SpatialAudioEnvironment.js","import":"/engine/audio/SpatialAudioEnvironment.js","sourceHash":"9d17ad3179968712a771f5e4b29bd6020940bc5e7a9fc9b4b82e86c01c8536fa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/SpatialAudioEnvironment.js#0011:getEnvironmentPresets","exportIndex":11,"name":"getEnvironmentPresets","kind":"function","signature":"getEnvironmentPresets()","summary":"Get all available environment presets."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/SpatialAudioEnvironment.md","moduleTitle":"audio/SpatialAudioEnvironment","source":"engine/audio/SpatialAudioEnvironment.js","import":"/engine/audio/SpatialAudioEnvironment.js","sourceHash":"9d17ad3179968712a771f5e4b29bd6020940bc5e7a9fc9b4b82e86c01c8536fa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/SpatialAudioEnvironment.js#0012:forceEnvironmentZone","exportIndex":12,"name":"forceEnvironmentZone","kind":"function","signature":"forceEnvironmentZone(env, zoneName)","summary":"Force a specific environment zone (overrides auto-detection). Pass null to re-enable auto-detection."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/SpatialAudioEnvironment.md","moduleTitle":"audio/SpatialAudioEnvironment","source":"engine/audio/SpatialAudioEnvironment.js","import":"/engine/audio/SpatialAudioEnvironment.js","sourceHash":"9d17ad3179968712a771f5e4b29bd6020940bc5e7a9fc9b4b82e86c01c8536fa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/SpatialAudioEnvironment.js#0013:getEnvironmentStats","exportIndex":13,"name":"getEnvironmentStats","kind":"function","signature":"getEnvironmentStats(env)","summary":"Get current environment stats."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/SpatialAudioEnvironment.md","moduleTitle":"audio/SpatialAudioEnvironment","source":"engine/audio/SpatialAudioEnvironment.js","import":"/engine/audio/SpatialAudioEnvironment.js","sourceHash":"9d17ad3179968712a771f5e4b29bd6020940bc5e7a9fc9b4b82e86c01c8536fa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/SpatialAudioEnvironment.js#0014:destroySpatialEnvironment","exportIndex":14,"name":"destroySpatialEnvironment","kind":"function","signature":"destroySpatialEnvironment(env)","summary":"Destroy the environment system and release all audio nodes."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/CharacterAudioBridge.md","moduleTitle":"audio/bridge/CharacterAudioBridge","source":"engine/audio/bridge/CharacterAudioBridge.js","import":"/engine/audio/bridge/CharacterAudioBridge.js","sourceHash":"faeb41ced2018fdc8cd0190e0a117d84bb57b8501253a09408ed4541de7ac0a7","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/bridge/CharacterAudioBridge.js","title":"audio/bridge/CharacterAudioBridge","summary":"CharacterAudioBridge.js - Character Movement → Audio Events Triggers footsteps, jumps, lands, and body foley based on character movement state (velocity, grounded, etc).","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/CharacterAudioBridge.md","moduleTitle":"audio/bridge/CharacterAudioBridge","source":"engine/audio/bridge/CharacterAudioBridge.js","import":"/engine/audio/bridge/CharacterAudioBridge.js","sourceHash":"faeb41ced2018fdc8cd0190e0a117d84bb57b8501253a09408ed4541de7ac0a7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/CharacterAudioBridge.js#0000:createCharacterAudioBridge","exportIndex":0,"name":"createCharacterAudioBridge","kind":"function","signature":"createCharacterAudioBridge(config = {})","summary":"Create a character movement audio bridge."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/CharacterAudioBridge.md","moduleTitle":"audio/bridge/CharacterAudioBridge","source":"engine/audio/bridge/CharacterAudioBridge.js","import":"/engine/audio/bridge/CharacterAudioBridge.js","sourceHash":"faeb41ced2018fdc8cd0190e0a117d84bb57b8501253a09408ed4541de7ac0a7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/CharacterAudioBridge.js#0001:tickCharacterAudio","exportIndex":1,"name":"tickCharacterAudio","kind":"function","signature":"tickCharacterAudio(bridge, audioEngine, entityId, state, dt)","summary":"Tick the character audio bridge for a single character. Call once per frame per character entity."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/CharacterAudioBridge.md","moduleTitle":"audio/bridge/CharacterAudioBridge","source":"engine/audio/bridge/CharacterAudioBridge.js","import":"/engine/audio/bridge/CharacterAudioBridge.js","sourceHash":"faeb41ced2018fdc8cd0190e0a117d84bb57b8501253a09408ed4541de7ac0a7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/CharacterAudioBridge.js#0002:removeCharacter","exportIndex":2,"name":"removeCharacter","kind":"function","signature":"removeCharacter(bridge, entityId)","summary":"Clean up character state when entity is destroyed."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/CharacterAudioBridge.md","moduleTitle":"audio/bridge/CharacterAudioBridge","source":"engine/audio/bridge/CharacterAudioBridge.js","import":"/engine/audio/bridge/CharacterAudioBridge.js","sourceHash":"faeb41ced2018fdc8cd0190e0a117d84bb57b8501253a09408ed4541de7ac0a7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/CharacterAudioBridge.js#0003:destroyCharacterAudioBridge","exportIndex":3,"name":"destroyCharacterAudioBridge","kind":"function","signature":"destroyCharacterAudioBridge(bridge)","summary":"Destroy the character audio bridge and clean up all state."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/DestructionAudioBridge.md","moduleTitle":"audio/bridge/DestructionAudioBridge","source":"engine/audio/bridge/DestructionAudioBridge.js","import":"/engine/audio/bridge/DestructionAudioBridge.js","sourceHash":"6b537bf9e7f8068842094c2b507970b3786d72a65150c66d997bb7c0ebfc16c8","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/bridge/DestructionAudioBridge.js","title":"audio/bridge/DestructionAudioBridge","summary":"DestructionAudioBridge.js - Destruction Events → Audio Hooks into VoronoiFracture, UnifiedDamageSystem, SeismicSystem, and ShockPropagation to trigger shattering, crumbling, rumble, and explosion sounds.","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/DestructionAudioBridge.md","moduleTitle":"audio/bridge/DestructionAudioBridge","source":"engine/audio/bridge/DestructionAudioBridge.js","import":"/engine/audio/bridge/DestructionAudioBridge.js","sourceHash":"6b537bf9e7f8068842094c2b507970b3786d72a65150c66d997bb7c0ebfc16c8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/DestructionAudioBridge.js#0000:createDestructionAudioBridge","exportIndex":0,"name":"createDestructionAudioBridge","kind":"function","signature":"createDestructionAudioBridge(config = {})","summary":"Create a destruction audio bridge."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/DestructionAudioBridge.md","moduleTitle":"audio/bridge/DestructionAudioBridge","source":"engine/audio/bridge/DestructionAudioBridge.js","import":"/engine/audio/bridge/DestructionAudioBridge.js","sourceHash":"6b537bf9e7f8068842094c2b507970b3786d72a65150c66d997bb7c0ebfc16c8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/DestructionAudioBridge.js#0001:processDamageAudioEvent","exportIndex":1,"name":"processDamageAudioEvent","kind":"function","signature":"processDamageAudioEvent(bridge, event, currentTime)","summary":"Process a damage event."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/DestructionAudioBridge.md","moduleTitle":"audio/bridge/DestructionAudioBridge","source":"engine/audio/bridge/DestructionAudioBridge.js","import":"/engine/audio/bridge/DestructionAudioBridge.js","sourceHash":"6b537bf9e7f8068842094c2b507970b3786d72a65150c66d997bb7c0ebfc16c8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/DestructionAudioBridge.js#0002:processFractureAudioEvent","exportIndex":2,"name":"processFractureAudioEvent","kind":"function","signature":"processFractureAudioEvent(bridge, event, currentTime)","summary":"Process a fracture event (Voronoi fracture)."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/DestructionAudioBridge.md","moduleTitle":"audio/bridge/DestructionAudioBridge","source":"engine/audio/bridge/DestructionAudioBridge.js","import":"/engine/audio/bridge/DestructionAudioBridge.js","sourceHash":"6b537bf9e7f8068842094c2b507970b3786d72a65150c66d997bb7c0ebfc16c8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/DestructionAudioBridge.js#0003:processSeismicAudioEvent","exportIndex":3,"name":"processSeismicAudioEvent","kind":"function","signature":"processSeismicAudioEvent(bridge, event, currentTime)","summary":"Process a seismic event (earthquake rumble)."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/DestructionAudioBridge.md","moduleTitle":"audio/bridge/DestructionAudioBridge","source":"engine/audio/bridge/DestructionAudioBridge.js","import":"/engine/audio/bridge/DestructionAudioBridge.js","sourceHash":"6b537bf9e7f8068842094c2b507970b3786d72a65150c66d997bb7c0ebfc16c8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/DestructionAudioBridge.js#0004:flushDestructionAudio","exportIndex":4,"name":"flushDestructionAudio","kind":"function","signature":"flushDestructionAudio(bridge)","summary":"Flush pending destruction audio events."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/DestructionAudioBridge.md","moduleTitle":"audio/bridge/DestructionAudioBridge","source":"engine/audio/bridge/DestructionAudioBridge.js","import":"/engine/audio/bridge/DestructionAudioBridge.js","sourceHash":"6b537bf9e7f8068842094c2b507970b3786d72a65150c66d997bb7c0ebfc16c8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/DestructionAudioBridge.js#0005:setDestructionAudioListenerPos","exportIndex":5,"name":"setDestructionAudioListenerPos","kind":"function","signature":"setDestructionAudioListenerPos(bridge, pos)","summary":"Update listener position."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/DestructionAudioBridge.md","moduleTitle":"audio/bridge/DestructionAudioBridge","source":"engine/audio/bridge/DestructionAudioBridge.js","import":"/engine/audio/bridge/DestructionAudioBridge.js","sourceHash":"6b537bf9e7f8068842094c2b507970b3786d72a65150c66d997bb7c0ebfc16c8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/DestructionAudioBridge.js#0006:destroyDestructionAudioBridge","exportIndex":6,"name":"destroyDestructionAudioBridge","kind":"function","signature":"destroyDestructionAudioBridge(bridge)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/EmitterAmbientBridge.md","moduleTitle":"audio/bridge/EmitterAmbientBridge","source":"engine/audio/bridge/EmitterAmbientBridge.js","import":"/engine/audio/bridge/EmitterAmbientBridge.js","sourceHash":"f87cc0433101804b597cb6e28e01d5620b415026904dcfb6cb3162ffdf4c6668","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/bridge/EmitterAmbientBridge.js","title":"audio/bridge/EmitterAmbientBridge","summary":"EmitterAmbientBridge.js - Active Emitters → Continuous Ambient Loops When a substance emitter is active and has an ambientLoop defined, this bridge manages a looping spatial audio source at the emitter position. Sources are created when emitters start and removed when they stop.","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/EmitterAmbientBridge.md","moduleTitle":"audio/bridge/EmitterAmbientBridge","source":"engine/audio/bridge/EmitterAmbientBridge.js","import":"/engine/audio/bridge/EmitterAmbientBridge.js","sourceHash":"f87cc0433101804b597cb6e28e01d5620b415026904dcfb6cb3162ffdf4c6668","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/EmitterAmbientBridge.js#0000:createEmitterAmbientBridge","exportIndex":0,"name":"createEmitterAmbientBridge","kind":"function","signature":"createEmitterAmbientBridge(config = {})","summary":"Create an emitter ambient bridge."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/EmitterAmbientBridge.md","moduleTitle":"audio/bridge/EmitterAmbientBridge","source":"engine/audio/bridge/EmitterAmbientBridge.js","import":"/engine/audio/bridge/EmitterAmbientBridge.js","sourceHash":"f87cc0433101804b597cb6e28e01d5620b415026904dcfb6cb3162ffdf4c6668","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/EmitterAmbientBridge.js#0001:syncEmitterAmbients","exportIndex":1,"name":"syncEmitterAmbients","kind":"function","signature":"syncEmitterAmbients(bridge, emitters)","summary":"Sync active emitters with ambient audio loops. Call each frame with the current list of active emitters."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/EmitterAmbientBridge.md","moduleTitle":"audio/bridge/EmitterAmbientBridge","source":"engine/audio/bridge/EmitterAmbientBridge.js","import":"/engine/audio/bridge/EmitterAmbientBridge.js","sourceHash":"f87cc0433101804b597cb6e28e01d5620b415026904dcfb6cb3162ffdf4c6668","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/EmitterAmbientBridge.js#0002:registerEmitterLoop","exportIndex":2,"name":"registerEmitterLoop","kind":"function","signature":"registerEmitterLoop(bridge, emitterId, sourceId, substanceId, position)","summary":"Register that a loop was started (store sourceId)."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/EmitterAmbientBridge.md","moduleTitle":"audio/bridge/EmitterAmbientBridge","source":"engine/audio/bridge/EmitterAmbientBridge.js","import":"/engine/audio/bridge/EmitterAmbientBridge.js","sourceHash":"f87cc0433101804b597cb6e28e01d5620b415026904dcfb6cb3162ffdf4c6668","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/EmitterAmbientBridge.js#0003:stopAllEmitterAmbients","exportIndex":3,"name":"stopAllEmitterAmbients","kind":"function","signature":"stopAllEmitterAmbients(bridge)","summary":"Stop all active ambient loops."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/EmitterAmbientBridge.md","moduleTitle":"audio/bridge/EmitterAmbientBridge","source":"engine/audio/bridge/EmitterAmbientBridge.js","import":"/engine/audio/bridge/EmitterAmbientBridge.js","sourceHash":"f87cc0433101804b597cb6e28e01d5620b415026904dcfb6cb3162ffdf4c6668","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/EmitterAmbientBridge.js#0004:destroyEmitterAmbientBridge","exportIndex":4,"name":"destroyEmitterAmbientBridge","kind":"function","signature":"destroyEmitterAmbientBridge(bridge)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/FluidAudioBridge.md","moduleTitle":"audio/bridge/FluidAudioBridge","source":"engine/audio/bridge/FluidAudioBridge.js","import":"/engine/audio/bridge/FluidAudioBridge.js","sourceHash":"26cfc36459e286d87f27857e771f93a162b4872968f13bcfa1cd9cc9fa3d1aca","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/bridge/FluidAudioBridge.js","title":"audio/bridge/FluidAudioBridge","summary":"FluidAudioBridge.js - Fluid Events → Audio Hooks into fluid simulation (splashes, phase changes) and triggers appropriate audio events.","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/FluidAudioBridge.md","moduleTitle":"audio/bridge/FluidAudioBridge","source":"engine/audio/bridge/FluidAudioBridge.js","import":"/engine/audio/bridge/FluidAudioBridge.js","sourceHash":"26cfc36459e286d87f27857e771f93a162b4872968f13bcfa1cd9cc9fa3d1aca","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/FluidAudioBridge.js#0000:createFluidAudioBridge","exportIndex":0,"name":"createFluidAudioBridge","kind":"function","signature":"createFluidAudioBridge(config = {})","summary":"Create a fluid audio bridge."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/FluidAudioBridge.md","moduleTitle":"audio/bridge/FluidAudioBridge","source":"engine/audio/bridge/FluidAudioBridge.js","import":"/engine/audio/bridge/FluidAudioBridge.js","sourceHash":"26cfc36459e286d87f27857e771f93a162b4872968f13bcfa1cd9cc9fa3d1aca","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/FluidAudioBridge.js#0001:processFluidSplash","exportIndex":1,"name":"processFluidSplash","kind":"function","signature":"processFluidSplash(bridge, position, magnitude, currentTime)","summary":"Process a fluid splash event."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/FluidAudioBridge.md","moduleTitle":"audio/bridge/FluidAudioBridge","source":"engine/audio/bridge/FluidAudioBridge.js","import":"/engine/audio/bridge/FluidAudioBridge.js","sourceHash":"26cfc36459e286d87f27857e771f93a162b4872968f13bcfa1cd9cc9fa3d1aca","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/FluidAudioBridge.js#0002:processPhaseChangeAudio","exportIndex":2,"name":"processPhaseChangeAudio","kind":"function","signature":"processPhaseChangeAudio(bridge, phaseType, position, magnitude, currentTime)","summary":"Process a phase change event."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/FluidAudioBridge.md","moduleTitle":"audio/bridge/FluidAudioBridge","source":"engine/audio/bridge/FluidAudioBridge.js","import":"/engine/audio/bridge/FluidAudioBridge.js","sourceHash":"26cfc36459e286d87f27857e771f93a162b4872968f13bcfa1cd9cc9fa3d1aca","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/FluidAudioBridge.js#0003:flushFluidAudio","exportIndex":3,"name":"flushFluidAudio","kind":"function","signature":"flushFluidAudio(bridge)","summary":"Flush pending fluid audio events."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/FluidAudioBridge.md","moduleTitle":"audio/bridge/FluidAudioBridge","source":"engine/audio/bridge/FluidAudioBridge.js","import":"/engine/audio/bridge/FluidAudioBridge.js","sourceHash":"26cfc36459e286d87f27857e771f93a162b4872968f13bcfa1cd9cc9fa3d1aca","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/FluidAudioBridge.js#0004:setFluidAudioListenerPos","exportIndex":4,"name":"setFluidAudioListenerPos","kind":"function","signature":"setFluidAudioListenerPos(bridge, pos)","summary":"Update listener position."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/FluidAudioBridge.md","moduleTitle":"audio/bridge/FluidAudioBridge","source":"engine/audio/bridge/FluidAudioBridge.js","import":"/engine/audio/bridge/FluidAudioBridge.js","sourceHash":"26cfc36459e286d87f27857e771f93a162b4872968f13bcfa1cd9cc9fa3d1aca","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/FluidAudioBridge.js#0005:destroyFluidAudioBridge","exportIndex":5,"name":"destroyFluidAudioBridge","kind":"function","signature":"destroyFluidAudioBridge(bridge)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/PhysicsAudioBridge.md","moduleTitle":"audio/bridge/PhysicsAudioBridge","source":"engine/audio/bridge/PhysicsAudioBridge.js","import":"/engine/audio/bridge/PhysicsAudioBridge.js","sourceHash":"735e1df8d20e76dd61f54d2759e1032a42c8cf70b78cc806b80ce3efb1bcb71e","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/bridge/PhysicsAudioBridge.js","title":"audio/bridge/PhysicsAudioBridge","summary":"PhysicsAudioBridge.js - Physics Collision → Audio Events Hooks into physics contact callbacks (PhysX/PBD) and triggers material-aware impact sounds via the AudioEngine.","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/PhysicsAudioBridge.md","moduleTitle":"audio/bridge/PhysicsAudioBridge","source":"engine/audio/bridge/PhysicsAudioBridge.js","import":"/engine/audio/bridge/PhysicsAudioBridge.js","sourceHash":"735e1df8d20e76dd61f54d2759e1032a42c8cf70b78cc806b80ce3efb1bcb71e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/PhysicsAudioBridge.js#0000:createPhysicsAudioBridge","exportIndex":0,"name":"createPhysicsAudioBridge","kind":"function","signature":"createPhysicsAudioBridge(config = {})","summary":"Create a physics audio bridge."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/PhysicsAudioBridge.md","moduleTitle":"audio/bridge/PhysicsAudioBridge","source":"engine/audio/bridge/PhysicsAudioBridge.js","import":"/engine/audio/bridge/PhysicsAudioBridge.js","sourceHash":"735e1df8d20e76dd61f54d2759e1032a42c8cf70b78cc806b80ce3efb1bcb71e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/PhysicsAudioBridge.js#0001:processPhysicsContact","exportIndex":1,"name":"processPhysicsContact","kind":"function","signature":"processPhysicsContact(bridge, contact, currentTime)","summary":"Process a physics contact event."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/PhysicsAudioBridge.md","moduleTitle":"audio/bridge/PhysicsAudioBridge","source":"engine/audio/bridge/PhysicsAudioBridge.js","import":"/engine/audio/bridge/PhysicsAudioBridge.js","sourceHash":"735e1df8d20e76dd61f54d2759e1032a42c8cf70b78cc806b80ce3efb1bcb71e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/PhysicsAudioBridge.js#0002:flushPhysicsAudio","exportIndex":2,"name":"flushPhysicsAudio","kind":"function","signature":"flushPhysicsAudio(bridge)","summary":"Flush pending physics audio events."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/PhysicsAudioBridge.md","moduleTitle":"audio/bridge/PhysicsAudioBridge","source":"engine/audio/bridge/PhysicsAudioBridge.js","import":"/engine/audio/bridge/PhysicsAudioBridge.js","sourceHash":"735e1df8d20e76dd61f54d2759e1032a42c8cf70b78cc806b80ce3efb1bcb71e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/PhysicsAudioBridge.js#0003:setPhysicsAudioListenerPos","exportIndex":3,"name":"setPhysicsAudioListenerPos","kind":"function","signature":"setPhysicsAudioListenerPos(bridge, pos)","summary":"Update listener position."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/PhysicsAudioBridge.md","moduleTitle":"audio/bridge/PhysicsAudioBridge","source":"engine/audio/bridge/PhysicsAudioBridge.js","import":"/engine/audio/bridge/PhysicsAudioBridge.js","sourceHash":"735e1df8d20e76dd61f54d2759e1032a42c8cf70b78cc806b80ce3efb1bcb71e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/PhysicsAudioBridge.js#0004:destroyPhysicsAudioBridge","exportIndex":4,"name":"destroyPhysicsAudioBridge","kind":"function","signature":"destroyPhysicsAudioBridge(bridge)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/SpellAudioBridge.md","moduleTitle":"audio/bridge/SpellAudioBridge","source":"engine/audio/bridge/SpellAudioBridge.js","import":"/engine/audio/bridge/SpellAudioBridge.js","sourceHash":"80dd6a4fec88ec956e67f9252b14ee662f354f8576bbc91e38f34c78605900db","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/bridge/SpellAudioBridge.js","title":"audio/bridge/SpellAudioBridge","summary":"SpellAudioBridge.js - Spell Cast → Audio Events Resolves soundHint strings from SpellGenerator and SpellElementMixer into AudioEngine trigger calls.","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/SpellAudioBridge.md","moduleTitle":"audio/bridge/SpellAudioBridge","source":"engine/audio/bridge/SpellAudioBridge.js","import":"/engine/audio/bridge/SpellAudioBridge.js","sourceHash":"80dd6a4fec88ec956e67f9252b14ee662f354f8576bbc91e38f34c78605900db","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/SpellAudioBridge.js#0000:createSpellAudioBridge","exportIndex":0,"name":"createSpellAudioBridge","kind":"function","signature":"createSpellAudioBridge(config = {})","summary":"Create a spell audio bridge."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/SpellAudioBridge.md","moduleTitle":"audio/bridge/SpellAudioBridge","source":"engine/audio/bridge/SpellAudioBridge.js","import":"/engine/audio/bridge/SpellAudioBridge.js","sourceHash":"80dd6a4fec88ec956e67f9252b14ee662f354f8576bbc91e38f34c78605900db","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/SpellAudioBridge.js#0001:buildSpellAudioTrigger","exportIndex":1,"name":"buildSpellAudioTrigger","kind":"function","signature":"buildSpellAudioTrigger(bridge, spell, position, currentTime)","summary":"Build audio trigger config from a spell cast."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/SpellAudioBridge.md","moduleTitle":"audio/bridge/SpellAudioBridge","source":"engine/audio/bridge/SpellAudioBridge.js","import":"/engine/audio/bridge/SpellAudioBridge.js","sourceHash":"80dd6a4fec88ec956e67f9252b14ee662f354f8576bbc91e38f34c78605900db","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/SpellAudioBridge.js#0002:buildSoundHintTrigger","exportIndex":2,"name":"buildSoundHintTrigger","kind":"function","signature":"buildSoundHintTrigger(bridge, soundHint, position, currentTime)","summary":"Build audio trigger from a raw soundHint string."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/SpellAudioBridge.md","moduleTitle":"audio/bridge/SpellAudioBridge","source":"engine/audio/bridge/SpellAudioBridge.js","import":"/engine/audio/bridge/SpellAudioBridge.js","sourceHash":"80dd6a4fec88ec956e67f9252b14ee662f354f8576bbc91e38f34c78605900db","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/SpellAudioBridge.js#0003:destroySpellAudioBridge","exportIndex":3,"name":"destroySpellAudioBridge","kind":"function","signature":"destroySpellAudioBridge(bridge)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/SubstanceAudioResolver.md","moduleTitle":"audio/bridge/SubstanceAudioResolver","source":"engine/audio/bridge/SubstanceAudioResolver.js","import":"/engine/audio/bridge/SubstanceAudioResolver.js","sourceHash":"fc713974b4cee46b4a5db9312cca40eba034b2de50c983132b920a70cbcfd5ef","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/bridge/SubstanceAudioResolver.js","title":"audio/bridge/SubstanceAudioResolver","summary":"SubstanceAudioResolver.js - Resolve substance key → audio config Maps substance IDs to audio event configurations, supporting both sample-based fallback and procedural patch references.","exportCount":10}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/SubstanceAudioResolver.md","moduleTitle":"audio/bridge/SubstanceAudioResolver","source":"engine/audio/bridge/SubstanceAudioResolver.js","import":"/engine/audio/bridge/SubstanceAudioResolver.js","sourceHash":"fc713974b4cee46b4a5db9312cca40eba034b2de50c983132b920a70cbcfd5ef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/SubstanceAudioResolver.js#0000:resolveSubstanceAudio","exportIndex":0,"name":"resolveSubstanceAudio","kind":"function","signature":"resolveSubstanceAudio(substanceId)","summary":"Resolve a substance key to its audio configuration."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/SubstanceAudioResolver.md","moduleTitle":"audio/bridge/SubstanceAudioResolver","source":"engine/audio/bridge/SubstanceAudioResolver.js","import":"/engine/audio/bridge/SubstanceAudioResolver.js","sourceHash":"fc713974b4cee46b4a5db9312cca40eba034b2de50c983132b920a70cbcfd5ef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/SubstanceAudioResolver.js#0001:getSubstanceImpactSound","exportIndex":1,"name":"getSubstanceImpactSound","kind":"function","signature":"getSubstanceImpactSound(substanceId)","summary":"Get the impact sound event ID for a substance."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/SubstanceAudioResolver.md","moduleTitle":"audio/bridge/SubstanceAudioResolver","source":"engine/audio/bridge/SubstanceAudioResolver.js","import":"/engine/audio/bridge/SubstanceAudioResolver.js","sourceHash":"fc713974b4cee46b4a5db9312cca40eba034b2de50c983132b920a70cbcfd5ef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/SubstanceAudioResolver.js#0002:getSubstanceAmbientLoop","exportIndex":2,"name":"getSubstanceAmbientLoop","kind":"function","signature":"getSubstanceAmbientLoop(substanceId)","summary":"Get the ambient loop event ID for a substance."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/SubstanceAudioResolver.md","moduleTitle":"audio/bridge/SubstanceAudioResolver","source":"engine/audio/bridge/SubstanceAudioResolver.js","import":"/engine/audio/bridge/SubstanceAudioResolver.js","sourceHash":"fc713974b4cee46b4a5db9312cca40eba034b2de50c983132b920a70cbcfd5ef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/SubstanceAudioResolver.js#0003:getSubstanceCollisionSound","exportIndex":3,"name":"getSubstanceCollisionSound","kind":"function","signature":"getSubstanceCollisionSound(substanceId)","summary":"Get the collision sound event ID for a substance."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/SubstanceAudioResolver.md","moduleTitle":"audio/bridge/SubstanceAudioResolver","source":"engine/audio/bridge/SubstanceAudioResolver.js","import":"/engine/audio/bridge/SubstanceAudioResolver.js","sourceHash":"fc713974b4cee46b4a5db9312cca40eba034b2de50c983132b920a70cbcfd5ef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/SubstanceAudioResolver.js#0004:getSubstanceProceduralPatch","exportIndex":4,"name":"getSubstanceProceduralPatch","kind":"function","signature":"getSubstanceProceduralPatch(substanceId)","summary":"Get procedural patch ID for a substance (if defined)."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/SubstanceAudioResolver.md","moduleTitle":"audio/bridge/SubstanceAudioResolver","source":"engine/audio/bridge/SubstanceAudioResolver.js","import":"/engine/audio/bridge/SubstanceAudioResolver.js","sourceHash":"fc713974b4cee46b4a5db9312cca40eba034b2de50c983132b920a70cbcfd5ef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/SubstanceAudioResolver.js#0005:getSubstanceParamMap","exportIndex":5,"name":"getSubstanceParamMap","kind":"function","signature":"getSubstanceParamMap(substanceId)","summary":"Get parameter mapping for procedural synthesis. Maps emitter params → synth params."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/SubstanceAudioResolver.md","moduleTitle":"audio/bridge/SubstanceAudioResolver","source":"engine/audio/bridge/SubstanceAudioResolver.js","import":"/engine/audio/bridge/SubstanceAudioResolver.js","sourceHash":"fc713974b4cee46b4a5db9312cca40eba034b2de50c983132b920a70cbcfd5ef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/SubstanceAudioResolver.js#0006:getSubstanceAudioDefaults","exportIndex":6,"name":"getSubstanceAudioDefaults","kind":"function","signature":"getSubstanceAudioDefaults(substanceId)","summary":"Get normalized default procedural params for a substance."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/SubstanceAudioResolver.md","moduleTitle":"audio/bridge/SubstanceAudioResolver","source":"engine/audio/bridge/SubstanceAudioResolver.js","import":"/engine/audio/bridge/SubstanceAudioResolver.js","sourceHash":"fc713974b4cee46b4a5db9312cca40eba034b2de50c983132b920a70cbcfd5ef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/SubstanceAudioResolver.js#0007:applySubstanceParamMap","exportIndex":7,"name":"applySubstanceParamMap","kind":"function","signature":"applySubstanceParamMap(substanceId, params = {}, mapOverrides = null)","summary":"Apply a substance paramMap to source params. Supports runtime map override keys: _map_<src>_scale / _map_<src>_offset."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/SubstanceAudioResolver.md","moduleTitle":"audio/bridge/SubstanceAudioResolver","source":"engine/audio/bridge/SubstanceAudioResolver.js","import":"/engine/audio/bridge/SubstanceAudioResolver.js","sourceHash":"fc713974b4cee46b4a5db9312cca40eba034b2de50c983132b920a70cbcfd5ef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/SubstanceAudioResolver.js#0008:buildSubstancePreviewParams","exportIndex":8,"name":"buildSubstancePreviewParams","kind":"function","signature":"buildSubstancePreviewParams(substanceId, overrides = {}, sourceParams = {})","summary":"Build preview/runtime-friendly patch params with shared defaults + paramMap transform."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/SubstanceAudioResolver.md","moduleTitle":"audio/bridge/SubstanceAudioResolver","source":"engine/audio/bridge/SubstanceAudioResolver.js","import":"/engine/audio/bridge/SubstanceAudioResolver.js","sourceHash":"fc713974b4cee46b4a5db9312cca40eba034b2de50c983132b920a70cbcfd5ef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/SubstanceAudioResolver.js#0009:buildSubstanceTriggerConfig","exportIndex":9,"name":"buildSubstanceTriggerConfig","kind":"function","signature":"buildSubstanceTriggerConfig(substanceId, eventType, params = {})","summary":"Build a complete audio trigger config from substance + event params."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/WeatherAudioBridge.md","moduleTitle":"audio/bridge/WeatherAudioBridge","source":"engine/audio/bridge/WeatherAudioBridge.js","import":"/engine/audio/bridge/WeatherAudioBridge.js","sourceHash":"783378b26ae984f3d69b7267cca1273be421eac7a0a985b89396c60a698bbab0","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/bridge/WeatherAudioBridge.js","title":"audio/bridge/WeatherAudioBridge","summary":"WeatherAudioBridge.js - Weather/Time → Ambient Audio Crossfades ambient audio loops based on WorldTime day/night cycle, seasons, and weather conditions.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/WeatherAudioBridge.md","moduleTitle":"audio/bridge/WeatherAudioBridge","source":"engine/audio/bridge/WeatherAudioBridge.js","import":"/engine/audio/bridge/WeatherAudioBridge.js","sourceHash":"783378b26ae984f3d69b7267cca1273be421eac7a0a985b89396c60a698bbab0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/WeatherAudioBridge.js#0000:createWeatherAudioBridge","exportIndex":0,"name":"createWeatherAudioBridge","kind":"function","signature":"createWeatherAudioBridge(config = {})","summary":"Create a weather audio bridge."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/WeatherAudioBridge.md","moduleTitle":"audio/bridge/WeatherAudioBridge","source":"engine/audio/bridge/WeatherAudioBridge.js","import":"/engine/audio/bridge/WeatherAudioBridge.js","sourceHash":"783378b26ae984f3d69b7267cca1273be421eac7a0a985b89396c60a698bbab0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/WeatherAudioBridge.js#0001:tickWeatherAudio","exportIndex":1,"name":"tickWeatherAudio","kind":"function","signature":"tickWeatherAudio(bridge, worldTime, weather, currentTime)","summary":"Tick weather audio — check time of day and weather, crossfade ambients."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/WeatherAudioBridge.md","moduleTitle":"audio/bridge/WeatherAudioBridge","source":"engine/audio/bridge/WeatherAudioBridge.js","import":"/engine/audio/bridge/WeatherAudioBridge.js","sourceHash":"783378b26ae984f3d69b7267cca1273be421eac7a0a985b89396c60a698bbab0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/WeatherAudioBridge.js#0002:destroyWeatherAudioBridge","exportIndex":2,"name":"destroyWeatherAudioBridge","kind":"function","signature":"destroyWeatherAudioBridge(bridge)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/index.md","moduleTitle":"audio/bridge/index","source":"engine/audio/bridge/index.js","import":"/engine/audio/bridge/index.js","sourceHash":"43a17939bffb0af449fd66b5484939e7b89405a2169c18056798e694bad806c1","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/bridge/index.js","title":"audio/bridge/index","summary":"engine/audio/bridge/index.js — Barrel export for audio bridges.","exportCount":41}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/index.md","moduleTitle":"audio/bridge/index","source":"engine/audio/bridge/index.js","import":"/engine/audio/bridge/index.js","sourceHash":"43a17939bffb0af449fd66b5484939e7b89405a2169c18056798e694bad806c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/index.js#0000:buildSoundHintTrigger","exportIndex":0,"name":"buildSoundHintTrigger","kind":"re-export","signature":"buildSoundHintTrigger","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/index.md","moduleTitle":"audio/bridge/index","source":"engine/audio/bridge/index.js","import":"/engine/audio/bridge/index.js","sourceHash":"43a17939bffb0af449fd66b5484939e7b89405a2169c18056798e694bad806c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/index.js#0001:buildSpellAudioTrigger","exportIndex":1,"name":"buildSpellAudioTrigger","kind":"re-export","signature":"buildSpellAudioTrigger","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/index.md","moduleTitle":"audio/bridge/index","source":"engine/audio/bridge/index.js","import":"/engine/audio/bridge/index.js","sourceHash":"43a17939bffb0af449fd66b5484939e7b89405a2169c18056798e694bad806c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/index.js#0002:buildSubstanceTriggerConfig","exportIndex":2,"name":"buildSubstanceTriggerConfig","kind":"re-export","signature":"buildSubstanceTriggerConfig","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/index.md","moduleTitle":"audio/bridge/index","source":"engine/audio/bridge/index.js","import":"/engine/audio/bridge/index.js","sourceHash":"43a17939bffb0af449fd66b5484939e7b89405a2169c18056798e694bad806c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/index.js#0003:createCharacterAudioBridge","exportIndex":3,"name":"createCharacterAudioBridge","kind":"re-export","signature":"createCharacterAudioBridge","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/index.md","moduleTitle":"audio/bridge/index","source":"engine/audio/bridge/index.js","import":"/engine/audio/bridge/index.js","sourceHash":"43a17939bffb0af449fd66b5484939e7b89405a2169c18056798e694bad806c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/index.js#0004:createDestructionAudioBridge","exportIndex":4,"name":"createDestructionAudioBridge","kind":"re-export","signature":"createDestructionAudioBridge","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/index.md","moduleTitle":"audio/bridge/index","source":"engine/audio/bridge/index.js","import":"/engine/audio/bridge/index.js","sourceHash":"43a17939bffb0af449fd66b5484939e7b89405a2169c18056798e694bad806c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/index.js#0005:createEmitterAmbientBridge","exportIndex":5,"name":"createEmitterAmbientBridge","kind":"re-export","signature":"createEmitterAmbientBridge","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/index.md","moduleTitle":"audio/bridge/index","source":"engine/audio/bridge/index.js","import":"/engine/audio/bridge/index.js","sourceHash":"43a17939bffb0af449fd66b5484939e7b89405a2169c18056798e694bad806c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/index.js#0006:createFluidAudioBridge","exportIndex":6,"name":"createFluidAudioBridge","kind":"re-export","signature":"createFluidAudioBridge","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/index.md","moduleTitle":"audio/bridge/index","source":"engine/audio/bridge/index.js","import":"/engine/audio/bridge/index.js","sourceHash":"43a17939bffb0af449fd66b5484939e7b89405a2169c18056798e694bad806c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/index.js#0007:createPhysicsAudioBridge","exportIndex":7,"name":"createPhysicsAudioBridge","kind":"re-export","signature":"createPhysicsAudioBridge","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/index.md","moduleTitle":"audio/bridge/index","source":"engine/audio/bridge/index.js","import":"/engine/audio/bridge/index.js","sourceHash":"43a17939bffb0af449fd66b5484939e7b89405a2169c18056798e694bad806c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/index.js#0008:createSpellAudioBridge","exportIndex":8,"name":"createSpellAudioBridge","kind":"re-export","signature":"createSpellAudioBridge","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/index.md","moduleTitle":"audio/bridge/index","source":"engine/audio/bridge/index.js","import":"/engine/audio/bridge/index.js","sourceHash":"43a17939bffb0af449fd66b5484939e7b89405a2169c18056798e694bad806c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/index.js#0009:createWeatherAudioBridge","exportIndex":9,"name":"createWeatherAudioBridge","kind":"re-export","signature":"createWeatherAudioBridge","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/index.md","moduleTitle":"audio/bridge/index","source":"engine/audio/bridge/index.js","import":"/engine/audio/bridge/index.js","sourceHash":"43a17939bffb0af449fd66b5484939e7b89405a2169c18056798e694bad806c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/index.js#0010:destroyCharacterAudioBridge","exportIndex":10,"name":"destroyCharacterAudioBridge","kind":"re-export","signature":"destroyCharacterAudioBridge","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/index.md","moduleTitle":"audio/bridge/index","source":"engine/audio/bridge/index.js","import":"/engine/audio/bridge/index.js","sourceHash":"43a17939bffb0af449fd66b5484939e7b89405a2169c18056798e694bad806c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/index.js#0011:destroyDestructionAudioBridge","exportIndex":11,"name":"destroyDestructionAudioBridge","kind":"re-export","signature":"destroyDestructionAudioBridge","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/index.md","moduleTitle":"audio/bridge/index","source":"engine/audio/bridge/index.js","import":"/engine/audio/bridge/index.js","sourceHash":"43a17939bffb0af449fd66b5484939e7b89405a2169c18056798e694bad806c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/index.js#0012:destroyEmitterAmbientBridge","exportIndex":12,"name":"destroyEmitterAmbientBridge","kind":"re-export","signature":"destroyEmitterAmbientBridge","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/index.md","moduleTitle":"audio/bridge/index","source":"engine/audio/bridge/index.js","import":"/engine/audio/bridge/index.js","sourceHash":"43a17939bffb0af449fd66b5484939e7b89405a2169c18056798e694bad806c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/index.js#0013:destroyFluidAudioBridge","exportIndex":13,"name":"destroyFluidAudioBridge","kind":"re-export","signature":"destroyFluidAudioBridge","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/index.md","moduleTitle":"audio/bridge/index","source":"engine/audio/bridge/index.js","import":"/engine/audio/bridge/index.js","sourceHash":"43a17939bffb0af449fd66b5484939e7b89405a2169c18056798e694bad806c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/index.js#0014:destroyPhysicsAudioBridge","exportIndex":14,"name":"destroyPhysicsAudioBridge","kind":"re-export","signature":"destroyPhysicsAudioBridge","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/index.md","moduleTitle":"audio/bridge/index","source":"engine/audio/bridge/index.js","import":"/engine/audio/bridge/index.js","sourceHash":"43a17939bffb0af449fd66b5484939e7b89405a2169c18056798e694bad806c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/index.js#0015:destroySpellAudioBridge","exportIndex":15,"name":"destroySpellAudioBridge","kind":"re-export","signature":"destroySpellAudioBridge","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/index.md","moduleTitle":"audio/bridge/index","source":"engine/audio/bridge/index.js","import":"/engine/audio/bridge/index.js","sourceHash":"43a17939bffb0af449fd66b5484939e7b89405a2169c18056798e694bad806c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/index.js#0016:destroyWeatherAudioBridge","exportIndex":16,"name":"destroyWeatherAudioBridge","kind":"re-export","signature":"destroyWeatherAudioBridge","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/index.md","moduleTitle":"audio/bridge/index","source":"engine/audio/bridge/index.js","import":"/engine/audio/bridge/index.js","sourceHash":"43a17939bffb0af449fd66b5484939e7b89405a2169c18056798e694bad806c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/index.js#0017:flushDestructionAudio","exportIndex":17,"name":"flushDestructionAudio","kind":"re-export","signature":"flushDestructionAudio","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/index.md","moduleTitle":"audio/bridge/index","source":"engine/audio/bridge/index.js","import":"/engine/audio/bridge/index.js","sourceHash":"43a17939bffb0af449fd66b5484939e7b89405a2169c18056798e694bad806c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/index.js#0018:flushFluidAudio","exportIndex":18,"name":"flushFluidAudio","kind":"re-export","signature":"flushFluidAudio","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/index.md","moduleTitle":"audio/bridge/index","source":"engine/audio/bridge/index.js","import":"/engine/audio/bridge/index.js","sourceHash":"43a17939bffb0af449fd66b5484939e7b89405a2169c18056798e694bad806c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/index.js#0019:flushPhysicsAudio","exportIndex":19,"name":"flushPhysicsAudio","kind":"re-export","signature":"flushPhysicsAudio","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/index.md","moduleTitle":"audio/bridge/index","source":"engine/audio/bridge/index.js","import":"/engine/audio/bridge/index.js","sourceHash":"43a17939bffb0af449fd66b5484939e7b89405a2169c18056798e694bad806c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/index.js#0020:getSubstanceAmbientLoop","exportIndex":20,"name":"getSubstanceAmbientLoop","kind":"re-export","signature":"getSubstanceAmbientLoop","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/index.md","moduleTitle":"audio/bridge/index","source":"engine/audio/bridge/index.js","import":"/engine/audio/bridge/index.js","sourceHash":"43a17939bffb0af449fd66b5484939e7b89405a2169c18056798e694bad806c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/index.js#0021:getSubstanceCollisionSound","exportIndex":21,"name":"getSubstanceCollisionSound","kind":"re-export","signature":"getSubstanceCollisionSound","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/index.md","moduleTitle":"audio/bridge/index","source":"engine/audio/bridge/index.js","import":"/engine/audio/bridge/index.js","sourceHash":"43a17939bffb0af449fd66b5484939e7b89405a2169c18056798e694bad806c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/index.js#0022:getSubstanceImpactSound","exportIndex":22,"name":"getSubstanceImpactSound","kind":"re-export","signature":"getSubstanceImpactSound","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/index.md","moduleTitle":"audio/bridge/index","source":"engine/audio/bridge/index.js","import":"/engine/audio/bridge/index.js","sourceHash":"43a17939bffb0af449fd66b5484939e7b89405a2169c18056798e694bad806c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/index.js#0023:getSubstanceParamMap","exportIndex":23,"name":"getSubstanceParamMap","kind":"re-export","signature":"getSubstanceParamMap","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/index.md","moduleTitle":"audio/bridge/index","source":"engine/audio/bridge/index.js","import":"/engine/audio/bridge/index.js","sourceHash":"43a17939bffb0af449fd66b5484939e7b89405a2169c18056798e694bad806c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/index.js#0024:getSubstanceProceduralPatch","exportIndex":24,"name":"getSubstanceProceduralPatch","kind":"re-export","signature":"getSubstanceProceduralPatch","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/index.md","moduleTitle":"audio/bridge/index","source":"engine/audio/bridge/index.js","import":"/engine/audio/bridge/index.js","sourceHash":"43a17939bffb0af449fd66b5484939e7b89405a2169c18056798e694bad806c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/index.js#0025:processDamageAudioEvent","exportIndex":25,"name":"processDamageAudioEvent","kind":"re-export","signature":"processDamageAudioEvent","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/index.md","moduleTitle":"audio/bridge/index","source":"engine/audio/bridge/index.js","import":"/engine/audio/bridge/index.js","sourceHash":"43a17939bffb0af449fd66b5484939e7b89405a2169c18056798e694bad806c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/index.js#0026:processFluidSplash","exportIndex":26,"name":"processFluidSplash","kind":"re-export","signature":"processFluidSplash","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/index.md","moduleTitle":"audio/bridge/index","source":"engine/audio/bridge/index.js","import":"/engine/audio/bridge/index.js","sourceHash":"43a17939bffb0af449fd66b5484939e7b89405a2169c18056798e694bad806c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/index.js#0027:processFractureAudioEvent","exportIndex":27,"name":"processFractureAudioEvent","kind":"re-export","signature":"processFractureAudioEvent","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/index.md","moduleTitle":"audio/bridge/index","source":"engine/audio/bridge/index.js","import":"/engine/audio/bridge/index.js","sourceHash":"43a17939bffb0af449fd66b5484939e7b89405a2169c18056798e694bad806c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/index.js#0028:processPhaseChangeAudio","exportIndex":28,"name":"processPhaseChangeAudio","kind":"re-export","signature":"processPhaseChangeAudio","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/index.md","moduleTitle":"audio/bridge/index","source":"engine/audio/bridge/index.js","import":"/engine/audio/bridge/index.js","sourceHash":"43a17939bffb0af449fd66b5484939e7b89405a2169c18056798e694bad806c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/index.js#0029:processPhysicsContact","exportIndex":29,"name":"processPhysicsContact","kind":"re-export","signature":"processPhysicsContact","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/index.md","moduleTitle":"audio/bridge/index","source":"engine/audio/bridge/index.js","import":"/engine/audio/bridge/index.js","sourceHash":"43a17939bffb0af449fd66b5484939e7b89405a2169c18056798e694bad806c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/index.js#0030:processSeismicAudioEvent","exportIndex":30,"name":"processSeismicAudioEvent","kind":"re-export","signature":"processSeismicAudioEvent","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/index.md","moduleTitle":"audio/bridge/index","source":"engine/audio/bridge/index.js","import":"/engine/audio/bridge/index.js","sourceHash":"43a17939bffb0af449fd66b5484939e7b89405a2169c18056798e694bad806c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/index.js#0031:registerEmitterLoop","exportIndex":31,"name":"registerEmitterLoop","kind":"re-export","signature":"registerEmitterLoop","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/index.md","moduleTitle":"audio/bridge/index","source":"engine/audio/bridge/index.js","import":"/engine/audio/bridge/index.js","sourceHash":"43a17939bffb0af449fd66b5484939e7b89405a2169c18056798e694bad806c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/index.js#0032:removeCharacter","exportIndex":32,"name":"removeCharacter","kind":"re-export","signature":"removeCharacter","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/index.md","moduleTitle":"audio/bridge/index","source":"engine/audio/bridge/index.js","import":"/engine/audio/bridge/index.js","sourceHash":"43a17939bffb0af449fd66b5484939e7b89405a2169c18056798e694bad806c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/index.js#0033:resolveSubstanceAudio","exportIndex":33,"name":"resolveSubstanceAudio","kind":"re-export","signature":"resolveSubstanceAudio","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/index.md","moduleTitle":"audio/bridge/index","source":"engine/audio/bridge/index.js","import":"/engine/audio/bridge/index.js","sourceHash":"43a17939bffb0af449fd66b5484939e7b89405a2169c18056798e694bad806c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/index.js#0034:setDestructionAudioListenerPos","exportIndex":34,"name":"setDestructionAudioListenerPos","kind":"re-export","signature":"setDestructionAudioListenerPos","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/index.md","moduleTitle":"audio/bridge/index","source":"engine/audio/bridge/index.js","import":"/engine/audio/bridge/index.js","sourceHash":"43a17939bffb0af449fd66b5484939e7b89405a2169c18056798e694bad806c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/index.js#0035:setFluidAudioListenerPos","exportIndex":35,"name":"setFluidAudioListenerPos","kind":"re-export","signature":"setFluidAudioListenerPos","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/index.md","moduleTitle":"audio/bridge/index","source":"engine/audio/bridge/index.js","import":"/engine/audio/bridge/index.js","sourceHash":"43a17939bffb0af449fd66b5484939e7b89405a2169c18056798e694bad806c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/index.js#0036:setPhysicsAudioListenerPos","exportIndex":36,"name":"setPhysicsAudioListenerPos","kind":"re-export","signature":"setPhysicsAudioListenerPos","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/index.md","moduleTitle":"audio/bridge/index","source":"engine/audio/bridge/index.js","import":"/engine/audio/bridge/index.js","sourceHash":"43a17939bffb0af449fd66b5484939e7b89405a2169c18056798e694bad806c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/index.js#0037:stopAllEmitterAmbients","exportIndex":37,"name":"stopAllEmitterAmbients","kind":"re-export","signature":"stopAllEmitterAmbients","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/index.md","moduleTitle":"audio/bridge/index","source":"engine/audio/bridge/index.js","import":"/engine/audio/bridge/index.js","sourceHash":"43a17939bffb0af449fd66b5484939e7b89405a2169c18056798e694bad806c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/index.js#0038:syncEmitterAmbients","exportIndex":38,"name":"syncEmitterAmbients","kind":"re-export","signature":"syncEmitterAmbients","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/index.md","moduleTitle":"audio/bridge/index","source":"engine/audio/bridge/index.js","import":"/engine/audio/bridge/index.js","sourceHash":"43a17939bffb0af449fd66b5484939e7b89405a2169c18056798e694bad806c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/index.js#0039:tickCharacterAudio","exportIndex":39,"name":"tickCharacterAudio","kind":"re-export","signature":"tickCharacterAudio","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/bridge/index.md","moduleTitle":"audio/bridge/index","source":"engine/audio/bridge/index.js","import":"/engine/audio/bridge/index.js","sourceHash":"43a17939bffb0af449fd66b5484939e7b89405a2169c18056798e694bad806c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/bridge/index.js#0040:tickWeatherAudio","exportIndex":40,"name":"tickWeatherAudio","kind":"re-export","signature":"tickWeatherAudio","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioAssetManager.md","moduleTitle":"audio/core/AudioAssetManager","source":"engine/audio/core/AudioAssetManager.js","import":"/engine/audio/core/AudioAssetManager.js","sourceHash":"38fe6ee6917396b3ee8e0094a5f25c8015372af52da3e9205347d3387c83fc0a","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/core/AudioAssetManager.js","title":"audio/core/AudioAssetManager","summary":"AudioAssetManager.js - Audio Asset Loading & Caching Fetches, decodes, and caches AudioBuffers. Supports pooling and streaming for large files (music).","exportCount":11}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioAssetManager.md","moduleTitle":"audio/core/AudioAssetManager","source":"engine/audio/core/AudioAssetManager.js","import":"/engine/audio/core/AudioAssetManager.js","sourceHash":"38fe6ee6917396b3ee8e0094a5f25c8015372af52da3e9205347d3387c83fc0a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioAssetManager.js#0000:createAudioAssetManager","exportIndex":0,"name":"createAudioAssetManager","kind":"function","signature":"createAudioAssetManager(context)","summary":"Create an audio asset manager."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioAssetManager.md","moduleTitle":"audio/core/AudioAssetManager","source":"engine/audio/core/AudioAssetManager.js","import":"/engine/audio/core/AudioAssetManager.js","sourceHash":"38fe6ee6917396b3ee8e0094a5f25c8015372af52da3e9205347d3387c83fc0a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioAssetManager.js#0001:loadAudioAsset","exportIndex":1,"name":"loadAudioAsset","kind":"function","signature":"async loadAudioAsset(manager, path)","summary":"Load and decode an audio file. Returns cached buffer if already loaded."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioAssetManager.md","moduleTitle":"audio/core/AudioAssetManager","source":"engine/audio/core/AudioAssetManager.js","import":"/engine/audio/core/AudioAssetManager.js","sourceHash":"38fe6ee6917396b3ee8e0094a5f25c8015372af52da3e9205347d3387c83fc0a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioAssetManager.js#0002:preloadAudioAssets","exportIndex":2,"name":"preloadAudioAssets","kind":"function","signature":"async preloadAudioAssets(manager, paths)","summary":"Preload multiple audio assets."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioAssetManager.md","moduleTitle":"audio/core/AudioAssetManager","source":"engine/audio/core/AudioAssetManager.js","import":"/engine/audio/core/AudioAssetManager.js","sourceHash":"38fe6ee6917396b3ee8e0094a5f25c8015372af52da3e9205347d3387c83fc0a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioAssetManager.js#0003:registerAudioBuffer","exportIndex":3,"name":"registerAudioBuffer","kind":"function","signature":"registerAudioBuffer(manager, path, buffer)","summary":"Register a pre-decoded AudioBuffer directly."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioAssetManager.md","moduleTitle":"audio/core/AudioAssetManager","source":"engine/audio/core/AudioAssetManager.js","import":"/engine/audio/core/AudioAssetManager.js","sourceHash":"38fe6ee6917396b3ee8e0094a5f25c8015372af52da3e9205347d3387c83fc0a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioAssetManager.js#0004:getAudioBuffer","exportIndex":4,"name":"getAudioBuffer","kind":"function","signature":"getAudioBuffer(manager, path)","summary":"Get a cached buffer (synchronous)."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioAssetManager.md","moduleTitle":"audio/core/AudioAssetManager","source":"engine/audio/core/AudioAssetManager.js","import":"/engine/audio/core/AudioAssetManager.js","sourceHash":"38fe6ee6917396b3ee8e0094a5f25c8015372af52da3e9205347d3387c83fc0a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioAssetManager.js#0005:hasAudioBuffer","exportIndex":5,"name":"hasAudioBuffer","kind":"function","signature":"hasAudioBuffer(manager, path)","summary":"Check if a buffer is cached."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioAssetManager.md","moduleTitle":"audio/core/AudioAssetManager","source":"engine/audio/core/AudioAssetManager.js","import":"/engine/audio/core/AudioAssetManager.js","sourceHash":"38fe6ee6917396b3ee8e0094a5f25c8015372af52da3e9205347d3387c83fc0a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioAssetManager.js#0006:unloadAudioAsset","exportIndex":6,"name":"unloadAudioAsset","kind":"function","signature":"unloadAudioAsset(manager, path)","summary":"Remove a cached buffer."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioAssetManager.md","moduleTitle":"audio/core/AudioAssetManager","source":"engine/audio/core/AudioAssetManager.js","import":"/engine/audio/core/AudioAssetManager.js","sourceHash":"38fe6ee6917396b3ee8e0094a5f25c8015372af52da3e9205347d3387c83fc0a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioAssetManager.js#0007:clearAudioCache","exportIndex":7,"name":"clearAudioCache","kind":"function","signature":"clearAudioCache(manager)","summary":"Clear all cached buffers."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioAssetManager.md","moduleTitle":"audio/core/AudioAssetManager","source":"engine/audio/core/AudioAssetManager.js","import":"/engine/audio/core/AudioAssetManager.js","sourceHash":"38fe6ee6917396b3ee8e0094a5f25c8015372af52da3e9205347d3387c83fc0a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioAssetManager.js#0008:setAudioBaseUrl","exportIndex":8,"name":"setAudioBaseUrl","kind":"function","signature":"setAudioBaseUrl(manager, url)","summary":"Set base URL for relative asset paths."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioAssetManager.md","moduleTitle":"audio/core/AudioAssetManager","source":"engine/audio/core/AudioAssetManager.js","import":"/engine/audio/core/AudioAssetManager.js","sourceHash":"38fe6ee6917396b3ee8e0094a5f25c8015372af52da3e9205347d3387c83fc0a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioAssetManager.js#0009:destroyAudioAssetManager","exportIndex":9,"name":"destroyAudioAssetManager","kind":"function","signature":"destroyAudioAssetManager(manager)","summary":"Destroy the asset manager and clear all caches."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioAssetManager.md","moduleTitle":"audio/core/AudioAssetManager","source":"engine/audio/core/AudioAssetManager.js","import":"/engine/audio/core/AudioAssetManager.js","sourceHash":"38fe6ee6917396b3ee8e0094a5f25c8015372af52da3e9205347d3387c83fc0a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioAssetManager.js#0010:_origCreate","exportIndex":10,"name":"_origCreate","kind":"re-export","signature":"_origCreate","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioBus.md","moduleTitle":"audio/core/AudioBus","source":"engine/audio/core/AudioBus.js","import":"/engine/audio/core/AudioBus.js","sourceHash":"a21f721057e287f7058767604cd58b05e396865461c4de6d239e68e0dc0a86b7","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/core/AudioBus.js","title":"audio/core/AudioBus","summary":"AudioBus.js - Audio Category Bus A bus is a GainNode chain representing an audio category (sfx, music, ambient, voice, ui). Supports volume, mute, solo, and ducking (automatic volume reduction when another bus plays).","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioBus.md","moduleTitle":"audio/core/AudioBus","source":"engine/audio/core/AudioBus.js","import":"/engine/audio/core/AudioBus.js","sourceHash":"a21f721057e287f7058767604cd58b05e396865461c4de6d239e68e0dc0a86b7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioBus.js#0000:createAudioBus","exportIndex":0,"name":"createAudioBus","kind":"function","signature":"createAudioBus(context, destination, config = {})","summary":"Create an audio bus."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioBus.md","moduleTitle":"audio/core/AudioBus","source":"engine/audio/core/AudioBus.js","import":"/engine/audio/core/AudioBus.js","sourceHash":"a21f721057e287f7058767604cd58b05e396865461c4de6d239e68e0dc0a86b7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioBus.js#0001:setBusVolume","exportIndex":1,"name":"setBusVolume","kind":"function","signature":"setBusVolume(bus, volume, currentTime)","summary":"Set bus volume."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioBus.md","moduleTitle":"audio/core/AudioBus","source":"engine/audio/core/AudioBus.js","import":"/engine/audio/core/AudioBus.js","sourceHash":"a21f721057e287f7058767604cd58b05e396865461c4de6d239e68e0dc0a86b7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioBus.js#0002:setBusMute","exportIndex":2,"name":"setBusMute","kind":"function","signature":"setBusMute(bus, muted)","summary":"Mute/unmute the bus."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioBus.md","moduleTitle":"audio/core/AudioBus","source":"engine/audio/core/AudioBus.js","import":"/engine/audio/core/AudioBus.js","sourceHash":"a21f721057e287f7058767604cd58b05e396865461c4de6d239e68e0dc0a86b7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioBus.js#0003:setBusDuck","exportIndex":3,"name":"setBusDuck","kind":"function","signature":"setBusDuck(bus, amount)","summary":"Set duck amount (used for automatic ducking, e.g. voice ducks music)."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioBus.md","moduleTitle":"audio/core/AudioBus","source":"engine/audio/core/AudioBus.js","import":"/engine/audio/core/AudioBus.js","sourceHash":"a21f721057e287f7058767604cd58b05e396865461c4de6d239e68e0dc0a86b7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioBus.js#0004:getBusOutput","exportIndex":4,"name":"getBusOutput","kind":"function","signature":"getBusOutput(bus)","summary":"Get the bus's output node (for sources to connect to)."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioBus.md","moduleTitle":"audio/core/AudioBus","source":"engine/audio/core/AudioBus.js","import":"/engine/audio/core/AudioBus.js","sourceHash":"a21f721057e287f7058767604cd58b05e396865461c4de6d239e68e0dc0a86b7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioBus.js#0005:destroyAudioBus","exportIndex":5,"name":"destroyAudioBus","kind":"function","signature":"destroyAudioBus(bus)","summary":"Destroy a bus and disconnect it."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioConcurrency.md","moduleTitle":"audio/core/AudioConcurrency","source":"engine/audio/core/AudioConcurrency.js","import":"/engine/audio/core/AudioConcurrency.js","sourceHash":"296812ede59c58d3a8aaae34f7780f32e2aec1662a387b1a81a3c45d1fa309c8","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/core/AudioConcurrency.js","title":"audio/core/AudioConcurrency","summary":"AudioConcurrency.js - Voice Management & Stealing Manages the maximum number of concurrent voices. When the limit is reached, uses priority-based voice stealing (quietest, oldest, or farthest).","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioConcurrency.md","moduleTitle":"audio/core/AudioConcurrency","source":"engine/audio/core/AudioConcurrency.js","import":"/engine/audio/core/AudioConcurrency.js","sourceHash":"296812ede59c58d3a8aaae34f7780f32e2aec1662a387b1a81a3c45d1fa309c8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioConcurrency.js#0000:createAudioConcurrency","exportIndex":0,"name":"createAudioConcurrency","kind":"function","signature":"createAudioConcurrency(config = {})","summary":"Create a concurrency manager."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioConcurrency.md","moduleTitle":"audio/core/AudioConcurrency","source":"engine/audio/core/AudioConcurrency.js","import":"/engine/audio/core/AudioConcurrency.js","sourceHash":"296812ede59c58d3a8aaae34f7780f32e2aec1662a387b1a81a3c45d1fa309c8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioConcurrency.js#0001:tickConcurrency","exportIndex":1,"name":"tickConcurrency","kind":"function","signature":"tickConcurrency(concurrency, activeSources, time)","summary":"Tick concurrency — steal voices if over limit."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioConcurrency.md","moduleTitle":"audio/core/AudioConcurrency","source":"engine/audio/core/AudioConcurrency.js","import":"/engine/audio/core/AudioConcurrency.js","sourceHash":"296812ede59c58d3a8aaae34f7780f32e2aec1662a387b1a81a3c45d1fa309c8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioConcurrency.js#0002:canAddVoice","exportIndex":2,"name":"canAddVoice","kind":"function","signature":"canAddVoice(concurrency, activeSources, newPriority)","summary":"Check if a new voice can be added, or which voice to steal."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioConcurrency.md","moduleTitle":"audio/core/AudioConcurrency","source":"engine/audio/core/AudioConcurrency.js","import":"/engine/audio/core/AudioConcurrency.js","sourceHash":"296812ede59c58d3a8aaae34f7780f32e2aec1662a387b1a81a3c45d1fa309c8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioConcurrency.js#0003:destroyAudioConcurrency","exportIndex":3,"name":"destroyAudioConcurrency","kind":"function","signature":"destroyAudioConcurrency(concurrency)","summary":"Destroy concurrency manager."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioDoppler.md","moduleTitle":"audio/core/AudioDoppler","source":"engine/audio/core/AudioDoppler.js","import":"/engine/audio/core/AudioDoppler.js","sourceHash":"3b6295268c33090d7148300099c326d5114797226a2df3d71475c16b0238126c","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/core/AudioDoppler.js","title":"audio/core/AudioDoppler","summary":"AudioDoppler.js - Doppler Effect Manually computes pitch shift from radial velocity between source and listener. Web Audio's built-in Doppler was removed from the spec, so we implement it ourselves. Doppler ratio = (speedOfSound + listenerRadialVelocity) / (speedOfSound + sourceRadialVelocity)","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioDoppler.md","moduleTitle":"audio/core/AudioDoppler","source":"engine/audio/core/AudioDoppler.js","import":"/engine/audio/core/AudioDoppler.js","sourceHash":"3b6295268c33090d7148300099c326d5114797226a2df3d71475c16b0238126c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioDoppler.js#0000:createAudioDoppler","exportIndex":0,"name":"createAudioDoppler","kind":"function","signature":"createAudioDoppler(config = {})","summary":"Create a Doppler processor."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioDoppler.md","moduleTitle":"audio/core/AudioDoppler","source":"engine/audio/core/AudioDoppler.js","import":"/engine/audio/core/AudioDoppler.js","sourceHash":"3b6295268c33090d7148300099c326d5114797226a2df3d71475c16b0238126c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioDoppler.js#0001:tickDoppler","exportIndex":1,"name":"tickDoppler","kind":"function","signature":"tickDoppler(doppler, activeSources, listenerPos, listenerVel)","summary":"Tick Doppler — adjust pitch of all spatial sources based on relative velocity."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioDoppler.md","moduleTitle":"audio/core/AudioDoppler","source":"engine/audio/core/AudioDoppler.js","import":"/engine/audio/core/AudioDoppler.js","sourceHash":"3b6295268c33090d7148300099c326d5114797226a2df3d71475c16b0238126c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioDoppler.js#0002:destroyAudioDoppler","exportIndex":2,"name":"destroyAudioDoppler","kind":"function","signature":"destroyAudioDoppler(doppler)","summary":"Destroy Doppler processor."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioEngine.md","moduleTitle":"audio/core/AudioEngine","source":"engine/audio/core/AudioEngine.js","import":"/engine/audio/core/AudioEngine.js","sourceHash":"0455e0b457e5b4d8678e4d24ca33b62fb14761f92dcb4e6d32f588c15a730661","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/core/AudioEngine.js","title":"audio/core/AudioEngine","summary":"AudioEngine.js - Core Audio Engine Central audio system for the engine. Manages AudioContext lifecycle, master gain, tick loop, and coordinates all audio subsystems. Usage: const engine = createAudioEngine({ maxVoices: 64 }); await initAudioEngine(engine); // In main loop: tickAudioEngine(engine, dt); // Cleanup: destroyAudioEngine(engine);","exportCount":14}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioEngine.md","moduleTitle":"audio/core/AudioEngine","source":"engine/audio/core/AudioEngine.js","import":"/engine/audio/core/AudioEngine.js","sourceHash":"0455e0b457e5b4d8678e4d24ca33b62fb14761f92dcb4e6d32f588c15a730661","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioEngine.js#0000:createAudioEngine","exportIndex":0,"name":"createAudioEngine","kind":"function","signature":"createAudioEngine(config = {})","summary":"Create an audio engine instance."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioEngine.md","moduleTitle":"audio/core/AudioEngine","source":"engine/audio/core/AudioEngine.js","import":"/engine/audio/core/AudioEngine.js","sourceHash":"0455e0b457e5b4d8678e4d24ca33b62fb14761f92dcb4e6d32f588c15a730661","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioEngine.js#0001:initAudioEngine","exportIndex":1,"name":"initAudioEngine","kind":"function","signature":"async initAudioEngine(engine)","summary":"Initialize the audio engine. Creates AudioContext and all subsystems. Must be called after a user gesture (click/tap) to comply with autoplay policy."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioEngine.md","moduleTitle":"audio/core/AudioEngine","source":"engine/audio/core/AudioEngine.js","import":"/engine/audio/core/AudioEngine.js","sourceHash":"0455e0b457e5b4d8678e4d24ca33b62fb14761f92dcb4e6d32f588c15a730661","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioEngine.js#0002:resumeAudioEngine","exportIndex":2,"name":"resumeAudioEngine","kind":"function","signature":"async resumeAudioEngine(engine)","summary":"Ensure the AudioContext is resumed (call after user gesture)."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioEngine.md","moduleTitle":"audio/core/AudioEngine","source":"engine/audio/core/AudioEngine.js","import":"/engine/audio/core/AudioEngine.js","sourceHash":"0455e0b457e5b4d8678e4d24ca33b62fb14761f92dcb4e6d32f588c15a730661","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioEngine.js#0003:tickAudioEngine","exportIndex":3,"name":"tickAudioEngine","kind":"function","signature":"tickAudioEngine(engine, dt)","summary":"Tick the audio engine. Updates active sources, cleans up finished ones."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioEngine.md","moduleTitle":"audio/core/AudioEngine","source":"engine/audio/core/AudioEngine.js","import":"/engine/audio/core/AudioEngine.js","sourceHash":"0455e0b457e5b4d8678e4d24ca33b62fb14761f92dcb4e6d32f588c15a730661","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioEngine.js#0004:triggerAudioEvent","exportIndex":4,"name":"triggerAudioEvent","kind":"function","signature":"triggerAudioEvent(engine, eventId, options = {})","summary":"Trigger an audio event by ID."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioEngine.md","moduleTitle":"audio/core/AudioEngine","source":"engine/audio/core/AudioEngine.js","import":"/engine/audio/core/AudioEngine.js","sourceHash":"0455e0b457e5b4d8678e4d24ca33b62fb14761f92dcb4e6d32f588c15a730661","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioEngine.js#0005:playSound","exportIndex":5,"name":"playSound","kind":"function","signature":"playSound(engine, eventId, options = {})","summary":"Backward-compatible alias used by older bridge code."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioEngine.md","moduleTitle":"audio/core/AudioEngine","source":"engine/audio/core/AudioEngine.js","import":"/engine/audio/core/AudioEngine.js","sourceHash":"0455e0b457e5b4d8678e4d24ca33b62fb14761f92dcb4e6d32f588c15a730661","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioEngine.js#0006:playBuffer","exportIndex":6,"name":"playBuffer","kind":"function","signature":"playBuffer(engine, buffer, options = {})","summary":"Play a buffer directly (bypasses event resolution)."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioEngine.md","moduleTitle":"audio/core/AudioEngine","source":"engine/audio/core/AudioEngine.js","import":"/engine/audio/core/AudioEngine.js","sourceHash":"0455e0b457e5b4d8678e4d24ca33b62fb14761f92dcb4e6d32f588c15a730661","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioEngine.js#0007:stopSource","exportIndex":7,"name":"stopSource","kind":"function","signature":"stopSource(engine, sourceId, fadeOut = 0.05)","summary":"Stop a specific source by ID."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioEngine.md","moduleTitle":"audio/core/AudioEngine","source":"engine/audio/core/AudioEngine.js","import":"/engine/audio/core/AudioEngine.js","sourceHash":"0455e0b457e5b4d8678e4d24ca33b62fb14761f92dcb4e6d32f588c15a730661","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioEngine.js#0008:stopAllSources","exportIndex":8,"name":"stopAllSources","kind":"function","signature":"stopAllSources(engine, fadeOut = 0.1)","summary":"Stop all active sources."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioEngine.md","moduleTitle":"audio/core/AudioEngine","source":"engine/audio/core/AudioEngine.js","import":"/engine/audio/core/AudioEngine.js","sourceHash":"0455e0b457e5b4d8678e4d24ca33b62fb14761f92dcb4e6d32f588c15a730661","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioEngine.js#0009:registerAudioEvent","exportIndex":9,"name":"registerAudioEvent","kind":"function","signature":"registerAudioEvent(engine, eventId, descriptor)","summary":"Register an audio event descriptor."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioEngine.md","moduleTitle":"audio/core/AudioEngine","source":"engine/audio/core/AudioEngine.js","import":"/engine/audio/core/AudioEngine.js","sourceHash":"0455e0b457e5b4d8678e4d24ca33b62fb14761f92dcb4e6d32f588c15a730661","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioEngine.js#0010:unregisterAudioEvent","exportIndex":10,"name":"unregisterAudioEvent","kind":"function","signature":"unregisterAudioEvent(engine, eventId)","summary":"Unregister an audio event."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioEngine.md","moduleTitle":"audio/core/AudioEngine","source":"engine/audio/core/AudioEngine.js","import":"/engine/audio/core/AudioEngine.js","sourceHash":"0455e0b457e5b4d8678e4d24ca33b62fb14761f92dcb4e6d32f588c15a730661","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioEngine.js#0011:setMasterVolume","exportIndex":11,"name":"setMasterVolume","kind":"function","signature":"setMasterVolume(engine, volume)","summary":"Set master volume."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioEngine.md","moduleTitle":"audio/core/AudioEngine","source":"engine/audio/core/AudioEngine.js","import":"/engine/audio/core/AudioEngine.js","sourceHash":"0455e0b457e5b4d8678e4d24ca33b62fb14761f92dcb4e6d32f588c15a730661","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioEngine.js#0012:setBusVolumeByName","exportIndex":12,"name":"setBusVolumeByName","kind":"function","signature":"setBusVolumeByName(engine, busName, volume)","summary":"Set volume for a specific bus."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioEngine.md","moduleTitle":"audio/core/AudioEngine","source":"engine/audio/core/AudioEngine.js","import":"/engine/audio/core/AudioEngine.js","sourceHash":"0455e0b457e5b4d8678e4d24ca33b62fb14761f92dcb4e6d32f588c15a730661","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioEngine.js#0013:destroyAudioEngine","exportIndex":13,"name":"destroyAudioEngine","kind":"function","signature":"destroyAudioEngine(engine)","summary":"Destroy the audio engine and release all resources."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioEvent.md","moduleTitle":"audio/core/AudioEvent","source":"engine/audio/core/AudioEvent.js","import":"/engine/audio/core/AudioEvent.js","sourceHash":"18b63dee437451122e88de88571fd6309b803b71a51f3280e4ddacaf8c778fa9","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/core/AudioEvent.js","title":"audio/core/AudioEvent","summary":"AudioEvent.js - Audio Event Descriptors Defines how audio events are resolved: one-shots, random containers, sequences, and loops. An event maps an ID to concrete playback params. Event descriptor format: { type: 'oneshot' | 'random' | 'sequence' | 'loop', sounds: ['path1.ogg', 'path2.ogg'],  // Pool of sounds volume: [0.8, 1.0],       // Random range or fixed value pitch: [0.9, 1.1],        // Random range or fixed value bus: 'sfx',               // Target bus priority: 0,              // Voice stealing priority cooldown: 0,              // Min seconds between triggers maxInstances: 0,          // Max simultaneous (0 = unlimited) }","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioEvent.md","moduleTitle":"audio/core/AudioEvent","source":"engine/audio/core/AudioEvent.js","import":"/engine/audio/core/AudioEvent.js","sourceHash":"18b63dee437451122e88de88571fd6309b803b71a51f3280e4ddacaf8c778fa9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioEvent.js#0000:resolveAudioEvent","exportIndex":0,"name":"resolveAudioEvent","kind":"function","signature":"resolveAudioEvent(event, eventId, options, time)","summary":"Resolve an audio event descriptor to concrete play parameters."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioEvent.md","moduleTitle":"audio/core/AudioEvent","source":"engine/audio/core/AudioEvent.js","import":"/engine/audio/core/AudioEvent.js","sourceHash":"18b63dee437451122e88de88571fd6309b803b71a51f3280e4ddacaf8c778fa9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioEvent.js#0001:createAudioEventDescriptor","exportIndex":1,"name":"createAudioEventDescriptor","kind":"function","signature":"createAudioEventDescriptor(config = {})","summary":"Create an audio event descriptor."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioListener.md","moduleTitle":"audio/core/AudioListener","source":"engine/audio/core/AudioListener.js","import":"/engine/audio/core/AudioListener.js","sourceHash":"7d354373c91c1c5d7da4b316e5864eb6c3df65f741f4b77d08826e18144e6855","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/core/AudioListener.js","title":"audio/core/AudioListener","summary":"AudioListener.js - 3D Audio Listener Wraps the Web Audio API AudioListener, syncing camera position, orientation, and velocity for accurate 3D spatialization.","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioListener.md","moduleTitle":"audio/core/AudioListener","source":"engine/audio/core/AudioListener.js","import":"/engine/audio/core/AudioListener.js","sourceHash":"7d354373c91c1c5d7da4b316e5864eb6c3df65f741f4b77d08826e18144e6855","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioListener.js#0000:createAudioListener","exportIndex":0,"name":"createAudioListener","kind":"function","signature":"createAudioListener(context)","summary":"Create an audio listener wrapper."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioListener.md","moduleTitle":"audio/core/AudioListener","source":"engine/audio/core/AudioListener.js","import":"/engine/audio/core/AudioListener.js","sourceHash":"7d354373c91c1c5d7da4b316e5864eb6c3df65f741f4b77d08826e18144e6855","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioListener.js#0001:updateAudioListener","exportIndex":1,"name":"updateAudioListener","kind":"function","signature":"updateAudioListener(listener, position, forward, up, dt)","summary":"Update listener position, orientation, and velocity. Call once per frame with camera data."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioListener.md","moduleTitle":"audio/core/AudioListener","source":"engine/audio/core/AudioListener.js","import":"/engine/audio/core/AudioListener.js","sourceHash":"7d354373c91c1c5d7da4b316e5864eb6c3df65f741f4b77d08826e18144e6855","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioListener.js#0002:getListenerPosition","exportIndex":2,"name":"getListenerPosition","kind":"function","signature":"getListenerPosition(listener)","summary":"Get the listener's current position."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioListener.md","moduleTitle":"audio/core/AudioListener","source":"engine/audio/core/AudioListener.js","import":"/engine/audio/core/AudioListener.js","sourceHash":"7d354373c91c1c5d7da4b316e5864eb6c3df65f741f4b77d08826e18144e6855","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioListener.js#0003:getListenerVelocity","exportIndex":3,"name":"getListenerVelocity","kind":"function","signature":"getListenerVelocity(listener)","summary":"Get the listener's current velocity."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioListener.md","moduleTitle":"audio/core/AudioListener","source":"engine/audio/core/AudioListener.js","import":"/engine/audio/core/AudioListener.js","sourceHash":"7d354373c91c1c5d7da4b316e5864eb6c3df65f741f4b77d08826e18144e6855","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioListener.js#0004:destroyAudioListener","exportIndex":4,"name":"destroyAudioListener","kind":"function","signature":"destroyAudioListener(listener)","summary":"Destroy the listener wrapper."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioOcclusion.md","moduleTitle":"audio/core/AudioOcclusion","source":"engine/audio/core/AudioOcclusion.js","import":"/engine/audio/core/AudioOcclusion.js","sourceHash":"84e29371a45c10d42fd9f26529566765d4a0533a5ef94d97105c8a4bb94569fb","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/core/AudioOcclusion.js","title":"audio/core/AudioOcclusion","summary":"AudioOcclusion.js - Sound Occlusion via Raycasting Casts a ray from each active source to the listener. If the ray intersects occluders (walls, objects), applies lowpass filter + volume attenuation to simulate sound being blocked/muffled. Uses simple AABB intersection for performance. Can be upgraded to use the engine's physics raycasts (PhysX/PBD) for higher fidelity.","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioOcclusion.md","moduleTitle":"audio/core/AudioOcclusion","source":"engine/audio/core/AudioOcclusion.js","import":"/engine/audio/core/AudioOcclusion.js","sourceHash":"84e29371a45c10d42fd9f26529566765d4a0533a5ef94d97105c8a4bb94569fb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioOcclusion.js#0000:createAudioOcclusion","exportIndex":0,"name":"createAudioOcclusion","kind":"function","signature":"createAudioOcclusion(config = {})","summary":"Create an occlusion system."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioOcclusion.md","moduleTitle":"audio/core/AudioOcclusion","source":"engine/audio/core/AudioOcclusion.js","import":"/engine/audio/core/AudioOcclusion.js","sourceHash":"84e29371a45c10d42fd9f26529566765d4a0533a5ef94d97105c8a4bb94569fb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioOcclusion.js#0001:addOccluder","exportIndex":1,"name":"addOccluder","kind":"function","signature":"addOccluder(occlusion, min, max, transmission = 0.2)","summary":"Add an AABB occluder."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioOcclusion.md","moduleTitle":"audio/core/AudioOcclusion","source":"engine/audio/core/AudioOcclusion.js","import":"/engine/audio/core/AudioOcclusion.js","sourceHash":"84e29371a45c10d42fd9f26529566765d4a0533a5ef94d97105c8a4bb94569fb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioOcclusion.js#0002:removeOccluder","exportIndex":2,"name":"removeOccluder","kind":"function","signature":"removeOccluder(occlusion, index)","summary":"Remove an occluder by index."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioOcclusion.md","moduleTitle":"audio/core/AudioOcclusion","source":"engine/audio/core/AudioOcclusion.js","import":"/engine/audio/core/AudioOcclusion.js","sourceHash":"84e29371a45c10d42fd9f26529566765d4a0533a5ef94d97105c8a4bb94569fb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioOcclusion.js#0003:clearOccluders","exportIndex":3,"name":"clearOccluders","kind":"function","signature":"clearOccluders(occlusion)","summary":"Clear all occluders."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioOcclusion.md","moduleTitle":"audio/core/AudioOcclusion","source":"engine/audio/core/AudioOcclusion.js","import":"/engine/audio/core/AudioOcclusion.js","sourceHash":"84e29371a45c10d42fd9f26529566765d4a0533a5ef94d97105c8a4bb94569fb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioOcclusion.js#0004:tickOcclusion","exportIndex":4,"name":"tickOcclusion","kind":"function","signature":"tickOcclusion(occlusion, activeSources, listenerPos, context, dt)","summary":"Tick occlusion: check sources against occluders and apply filters."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioOcclusion.md","moduleTitle":"audio/core/AudioOcclusion","source":"engine/audio/core/AudioOcclusion.js","import":"/engine/audio/core/AudioOcclusion.js","sourceHash":"84e29371a45c10d42fd9f26529566765d4a0533a5ef94d97105c8a4bb94569fb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioOcclusion.js#0005:destroyAudioOcclusion","exportIndex":5,"name":"destroyAudioOcclusion","kind":"function","signature":"destroyAudioOcclusion(occlusion)","summary":"Destroy occlusion system."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioReverbZone.md","moduleTitle":"audio/core/AudioReverbZone","source":"engine/audio/core/AudioReverbZone.js","import":"/engine/audio/core/AudioReverbZone.js","sourceHash":"6f50ecb4b37f0dfcd16df0fd38cbcff9ee6b356aff9d6613b109f8daff9d48da","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/core/AudioReverbZone.js","title":"audio/core/AudioReverbZone","summary":"Create a reverb zone system.","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioReverbZone.md","moduleTitle":"audio/core/AudioReverbZone","source":"engine/audio/core/AudioReverbZone.js","import":"/engine/audio/core/AudioReverbZone.js","sourceHash":"6f50ecb4b37f0dfcd16df0fd38cbcff9ee6b356aff9d6613b109f8daff9d48da","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioReverbZone.js#0000:createReverbZoneSystem","exportIndex":0,"name":"createReverbZoneSystem","kind":"function","signature":"createReverbZoneSystem(context, destination)","summary":"Create a reverb zone system."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioReverbZone.md","moduleTitle":"audio/core/AudioReverbZone","source":"engine/audio/core/AudioReverbZone.js","import":"/engine/audio/core/AudioReverbZone.js","sourceHash":"6f50ecb4b37f0dfcd16df0fd38cbcff9ee6b356aff9d6613b109f8daff9d48da","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioReverbZone.js#0001:addReverbZone","exportIndex":1,"name":"addReverbZone","kind":"function","signature":"addReverbZone(system, config = {})","summary":"Add a reverb zone."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioReverbZone.md","moduleTitle":"audio/core/AudioReverbZone","source":"engine/audio/core/AudioReverbZone.js","import":"/engine/audio/core/AudioReverbZone.js","sourceHash":"6f50ecb4b37f0dfcd16df0fd38cbcff9ee6b356aff9d6613b109f8daff9d48da","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioReverbZone.js#0002:removeReverbZone","exportIndex":2,"name":"removeReverbZone","kind":"function","signature":"removeReverbZone(system, index)","summary":"Remove a reverb zone."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioReverbZone.md","moduleTitle":"audio/core/AudioReverbZone","source":"engine/audio/core/AudioReverbZone.js","import":"/engine/audio/core/AudioReverbZone.js","sourceHash":"6f50ecb4b37f0dfcd16df0fd38cbcff9ee6b356aff9d6613b109f8daff9d48da","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioReverbZone.js#0003:tickReverbZones","exportIndex":3,"name":"tickReverbZones","kind":"function","signature":"tickReverbZones(system, listenerPos)","summary":"Tick reverb zones — blend based on listener position."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioReverbZone.md","moduleTitle":"audio/core/AudioReverbZone","source":"engine/audio/core/AudioReverbZone.js","import":"/engine/audio/core/AudioReverbZone.js","sourceHash":"6f50ecb4b37f0dfcd16df0fd38cbcff9ee6b356aff9d6613b109f8daff9d48da","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioReverbZone.js#0004:connectSourceToReverb","exportIndex":4,"name":"connectSourceToReverb","kind":"function","signature":"connectSourceToReverb(system, source, sendLevel = 0.3)","summary":"Connect a source to the reverb system's convolver (send)."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioReverbZone.md","moduleTitle":"audio/core/AudioReverbZone","source":"engine/audio/core/AudioReverbZone.js","import":"/engine/audio/core/AudioReverbZone.js","sourceHash":"6f50ecb4b37f0dfcd16df0fd38cbcff9ee6b356aff9d6613b109f8daff9d48da","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioReverbZone.js#0005:destroyReverbZoneSystem","exportIndex":5,"name":"destroyReverbZoneSystem","kind":"function","signature":"destroyReverbZoneSystem(system)","summary":"Destroy reverb zone system."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioReverbZone.md","moduleTitle":"audio/core/AudioReverbZone","source":"engine/audio/core/AudioReverbZone.js","import":"/engine/audio/core/AudioReverbZone.js","sourceHash":"6f50ecb4b37f0dfcd16df0fd38cbcff9ee6b356aff9d6613b109f8daff9d48da","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioReverbZone.js#0006:REVERB_PRESETS","exportIndex":6,"name":"REVERB_PRESETS","kind":"constant","signature":"REVERB_PRESETS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioSource.md","moduleTitle":"audio/core/AudioSource","source":"engine/audio/core/AudioSource.js","import":"/engine/audio/core/AudioSource.js","sourceHash":"79f188697e20356be5026adeac4afc043613a60d6e2e201414b17f0d0825f7be","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/core/AudioSource.js","title":"audio/core/AudioSource","summary":"AudioSource.js - 3D Sound Emitter Wraps a BufferSourceNode + PannerNode (HRTF) + GainNode chain. Represents a single playing sound in 3D space.","exportCount":9}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioSource.md","moduleTitle":"audio/core/AudioSource","source":"engine/audio/core/AudioSource.js","import":"/engine/audio/core/AudioSource.js","sourceHash":"79f188697e20356be5026adeac4afc043613a60d6e2e201414b17f0d0825f7be","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioSource.js#0000:createAudioSource","exportIndex":0,"name":"createAudioSource","kind":"function","signature":"createAudioSource(context, config = {})","summary":"Create and start an audio source."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioSource.md","moduleTitle":"audio/core/AudioSource","source":"engine/audio/core/AudioSource.js","import":"/engine/audio/core/AudioSource.js","sourceHash":"79f188697e20356be5026adeac4afc043613a60d6e2e201414b17f0d0825f7be","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioSource.js#0001:tickAudioSource","exportIndex":1,"name":"tickAudioSource","kind":"function","signature":"tickAudioSource(source, dt)","summary":"Tick a source (per-frame update)."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioSource.md","moduleTitle":"audio/core/AudioSource","source":"engine/audio/core/AudioSource.js","import":"/engine/audio/core/AudioSource.js","sourceHash":"79f188697e20356be5026adeac4afc043613a60d6e2e201414b17f0d0825f7be","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioSource.js#0002:setSourcePosition","exportIndex":2,"name":"setSourcePosition","kind":"function","signature":"setSourcePosition(source, position)","summary":"Update source 3D position explicitly."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioSource.md","moduleTitle":"audio/core/AudioSource","source":"engine/audio/core/AudioSource.js","import":"/engine/audio/core/AudioSource.js","sourceHash":"79f188697e20356be5026adeac4afc043613a60d6e2e201414b17f0d0825f7be","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioSource.js#0003:setSourceVolume","exportIndex":3,"name":"setSourceVolume","kind":"function","signature":"setSourceVolume(source, volume)","summary":"Set source volume."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioSource.md","moduleTitle":"audio/core/AudioSource","source":"engine/audio/core/AudioSource.js","import":"/engine/audio/core/AudioSource.js","sourceHash":"79f188697e20356be5026adeac4afc043613a60d6e2e201414b17f0d0825f7be","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioSource.js#0004:setSourcePitch","exportIndex":4,"name":"setSourcePitch","kind":"function","signature":"setSourcePitch(source, pitch)","summary":"Set source pitch/playback rate."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioSource.md","moduleTitle":"audio/core/AudioSource","source":"engine/audio/core/AudioSource.js","import":"/engine/audio/core/AudioSource.js","sourceHash":"79f188697e20356be5026adeac4afc043613a60d6e2e201414b17f0d0825f7be","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioSource.js#0005:stopAudioSource","exportIndex":5,"name":"stopAudioSource","kind":"function","signature":"stopAudioSource(source, fadeOut = 0.05)","summary":"Stop a source with optional fade-out."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioSource.md","moduleTitle":"audio/core/AudioSource","source":"engine/audio/core/AudioSource.js","import":"/engine/audio/core/AudioSource.js","sourceHash":"79f188697e20356be5026adeac4afc043613a60d6e2e201414b17f0d0825f7be","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioSource.js#0006:isSourceDone","exportIndex":6,"name":"isSourceDone","kind":"function","signature":"isSourceDone(source)","summary":"Check if source is finished playing."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioSource.md","moduleTitle":"audio/core/AudioSource","source":"engine/audio/core/AudioSource.js","import":"/engine/audio/core/AudioSource.js","sourceHash":"79f188697e20356be5026adeac4afc043613a60d6e2e201414b17f0d0825f7be","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioSource.js#0007:getSourceEffectiveVolume","exportIndex":7,"name":"getSourceEffectiveVolume","kind":"function","signature":"getSourceEffectiveVolume(source)","summary":"Get effective volume (volume × occlusion)."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/AudioSource.md","moduleTitle":"audio/core/AudioSource","source":"engine/audio/core/AudioSource.js","import":"/engine/audio/core/AudioSource.js","sourceHash":"79f188697e20356be5026adeac4afc043613a60d6e2e201414b17f0d0825f7be","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/AudioSource.js#0008:destroyAudioSource","exportIndex":8,"name":"destroyAudioSource","kind":"function","signature":"destroyAudioSource(source)","summary":"Destroy a source and disconnect all nodes."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/FootstepEvents.md","moduleTitle":"audio/core/FootstepEvents","source":"engine/audio/core/FootstepEvents.js","import":"/engine/audio/core/FootstepEvents.js","sourceHash":"7a955a1924b3bda009cc7120c0e483f056ae0202ebe0d74203c6390fb4ec5483","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/core/FootstepEvents.js","title":"audio/core/FootstepEvents","summary":"FootstepEvents.js - Footstep Audio Event Registration Registers all footstep and land audio events with the AudioEngine. Called during engine initialization.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/FootstepEvents.md","moduleTitle":"audio/core/FootstepEvents","source":"engine/audio/core/FootstepEvents.js","import":"/engine/audio/core/FootstepEvents.js","sourceHash":"7a955a1924b3bda009cc7120c0e483f056ae0202ebe0d74203c6390fb4ec5483","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/FootstepEvents.js#0000:registerFootstepEvents","exportIndex":0,"name":"registerFootstepEvents","kind":"function","signature":"registerFootstepEvents(audioEngine)","summary":"Register all footstep audio events with the AudioEngine. Should be called once during engine initialization."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/FootstepEvents.md","moduleTitle":"audio/core/FootstepEvents","source":"engine/audio/core/FootstepEvents.js","import":"/engine/audio/core/FootstepEvents.js","sourceHash":"7a955a1924b3bda009cc7120c0e483f056ae0202ebe0d74203c6390fb4ec5483","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/FootstepEvents.js#0001:unregisterFootstepEvents","exportIndex":1,"name":"unregisterFootstepEvents","kind":"function","signature":"unregisterFootstepEvents(audioEngine)","summary":"Unregister all footstep events (for cleanup)."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/FootstepMaterials.md","moduleTitle":"audio/core/FootstepMaterials","source":"engine/audio/core/FootstepMaterials.js","import":"/engine/audio/core/FootstepMaterials.js","sourceHash":"279bc841de0f173a8cf65ed0929bf7706d2f8a5bdef2c2bfb5083573ebf8c0e9","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/core/FootstepMaterials.js","title":"audio/core/FootstepMaterials","summary":"FootstepMaterials.js - Footstep Material Taxonomy & Mapping Defines acoustic materials for footsteps (distinct from physics materials) and provides mapping from physics/voxel materials to footstep materials.","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/FootstepMaterials.md","moduleTitle":"audio/core/FootstepMaterials","source":"engine/audio/core/FootstepMaterials.js","import":"/engine/audio/core/FootstepMaterials.js","sourceHash":"279bc841de0f173a8cf65ed0929bf7706d2f8a5bdef2c2bfb5083573ebf8c0e9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/FootstepMaterials.js#0000:resolveFootstepMaterial","exportIndex":0,"name":"resolveFootstepMaterial","kind":"function","signature":"resolveFootstepMaterial(material)","summary":"Resolve a physics material ID to a footstep material key."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/FootstepMaterials.md","moduleTitle":"audio/core/FootstepMaterials","source":"engine/audio/core/FootstepMaterials.js","import":"/engine/audio/core/FootstepMaterials.js","sourceHash":"279bc841de0f173a8cf65ed0929bf7706d2f8a5bdef2c2bfb5083573ebf8c0e9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/FootstepMaterials.js#0001:getFootstepConfig","exportIndex":1,"name":"getFootstepConfig","kind":"function","signature":"getFootstepConfig(materialKey)","summary":"Get footstep material config."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/FootstepMaterials.md","moduleTitle":"audio/core/FootstepMaterials","source":"engine/audio/core/FootstepMaterials.js","import":"/engine/audio/core/FootstepMaterials.js","sourceHash":"279bc841de0f173a8cf65ed0929bf7706d2f8a5bdef2c2bfb5083573ebf8c0e9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/FootstepMaterials.js#0002:getAllFootstepMaterials","exportIndex":2,"name":"getAllFootstepMaterials","kind":"function","signature":"getAllFootstepMaterials()","summary":"Get all footstep material keys."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/FootstepMaterials.md","moduleTitle":"audio/core/FootstepMaterials","source":"engine/audio/core/FootstepMaterials.js","import":"/engine/audio/core/FootstepMaterials.js","sourceHash":"279bc841de0f173a8cf65ed0929bf7706d2f8a5bdef2c2bfb5083573ebf8c0e9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/FootstepMaterials.js#0003:FOOTSTEP_MATERIALS","exportIndex":3,"name":"FOOTSTEP_MATERIALS","kind":"constant","signature":"FOOTSTEP_MATERIALS","summary":"Footstep material configurations. Each defines the procedural patch to use and number of variants."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/FootstepMaterials.md","moduleTitle":"audio/core/FootstepMaterials","source":"engine/audio/core/FootstepMaterials.js","import":"/engine/audio/core/FootstepMaterials.js","sourceHash":"279bc841de0f173a8cf65ed0929bf7706d2f8a5bdef2c2bfb5083573ebf8c0e9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/FootstepMaterials.js#0004:PHYSICS_TO_FOOTSTEP","exportIndex":4,"name":"PHYSICS_TO_FOOTSTEP","kind":"constant","signature":"PHYSICS_TO_FOOTSTEP","summary":"Map physics material IDs to footstep materials. Physics materials are from PhysicsAudioBridge.js MATERIAL_TO_SUBSTANCE."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/FootstepMaterials.md","moduleTitle":"audio/core/FootstepMaterials","source":"engine/audio/core/FootstepMaterials.js","import":"/engine/audio/core/FootstepMaterials.js","sourceHash":"279bc841de0f173a8cf65ed0929bf7706d2f8a5bdef2c2bfb5083573ebf8c0e9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/FootstepMaterials.js#0005:VOXEL_TO_FOOTSTEP","exportIndex":5,"name":"VOXEL_TO_FOOTSTEP","kind":"constant","signature":"VOXEL_TO_FOOTSTEP","summary":"Map voxel/terrain material strings to footstep materials. Used when querying terrain directly."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/core/index.js","title":"audio/core/index","summary":"engine/audio/core/index.js — Barrel export for core audio engine.","exportCount":74}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0000:FOOTSTEP_MATERIALS","exportIndex":0,"name":"FOOTSTEP_MATERIALS","kind":"re-export","signature":"FOOTSTEP_MATERIALS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0001:PHYSICS_TO_FOOTSTEP","exportIndex":1,"name":"PHYSICS_TO_FOOTSTEP","kind":"re-export","signature":"PHYSICS_TO_FOOTSTEP","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0002:REVERB_PRESETS","exportIndex":2,"name":"REVERB_PRESETS","kind":"re-export","signature":"REVERB_PRESETS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0003:VOXEL_TO_FOOTSTEP","exportIndex":3,"name":"VOXEL_TO_FOOTSTEP","kind":"re-export","signature":"VOXEL_TO_FOOTSTEP","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0004:addOccluder","exportIndex":4,"name":"addOccluder","kind":"re-export","signature":"addOccluder","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0005:addReverbZone","exportIndex":5,"name":"addReverbZone","kind":"re-export","signature":"addReverbZone","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0006:canAddVoice","exportIndex":6,"name":"canAddVoice","kind":"re-export","signature":"canAddVoice","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0007:clearAudioCache","exportIndex":7,"name":"clearAudioCache","kind":"re-export","signature":"clearAudioCache","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0008:clearOccluders","exportIndex":8,"name":"clearOccluders","kind":"re-export","signature":"clearOccluders","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0009:connectSourceToReverb","exportIndex":9,"name":"connectSourceToReverb","kind":"re-export","signature":"connectSourceToReverb","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0010:createAudioAssetManager","exportIndex":10,"name":"createAudioAssetManager","kind":"re-export","signature":"createAudioAssetManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0011:createAudioBus","exportIndex":11,"name":"createAudioBus","kind":"re-export","signature":"createAudioBus","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0012:createAudioConcurrency","exportIndex":12,"name":"createAudioConcurrency","kind":"re-export","signature":"createAudioConcurrency","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0013:createAudioDoppler","exportIndex":13,"name":"createAudioDoppler","kind":"re-export","signature":"createAudioDoppler","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0014:createAudioEngine","exportIndex":14,"name":"createAudioEngine","kind":"re-export","signature":"createAudioEngine","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0015:createAudioEventDescriptor","exportIndex":15,"name":"createAudioEventDescriptor","kind":"re-export","signature":"createAudioEventDescriptor","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0016:createAudioListener","exportIndex":16,"name":"createAudioListener","kind":"re-export","signature":"createAudioListener","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0017:createAudioOcclusion","exportIndex":17,"name":"createAudioOcclusion","kind":"re-export","signature":"createAudioOcclusion","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0018:createAudioSource","exportIndex":18,"name":"createAudioSource","kind":"re-export","signature":"createAudioSource","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0019:createReverbZoneSystem","exportIndex":19,"name":"createReverbZoneSystem","kind":"re-export","signature":"createReverbZoneSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0020:destroyAudioAssetManager","exportIndex":20,"name":"destroyAudioAssetManager","kind":"re-export","signature":"destroyAudioAssetManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0021:destroyAudioBus","exportIndex":21,"name":"destroyAudioBus","kind":"re-export","signature":"destroyAudioBus","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0022:destroyAudioConcurrency","exportIndex":22,"name":"destroyAudioConcurrency","kind":"re-export","signature":"destroyAudioConcurrency","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0023:destroyAudioDoppler","exportIndex":23,"name":"destroyAudioDoppler","kind":"re-export","signature":"destroyAudioDoppler","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0024:destroyAudioEngine","exportIndex":24,"name":"destroyAudioEngine","kind":"re-export","signature":"destroyAudioEngine","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0025:destroyAudioListener","exportIndex":25,"name":"destroyAudioListener","kind":"re-export","signature":"destroyAudioListener","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0026:destroyAudioOcclusion","exportIndex":26,"name":"destroyAudioOcclusion","kind":"re-export","signature":"destroyAudioOcclusion","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0027:destroyAudioSource","exportIndex":27,"name":"destroyAudioSource","kind":"re-export","signature":"destroyAudioSource","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0028:destroyReverbZoneSystem","exportIndex":28,"name":"destroyReverbZoneSystem","kind":"re-export","signature":"destroyReverbZoneSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0029:getAllFootstepMaterials","exportIndex":29,"name":"getAllFootstepMaterials","kind":"re-export","signature":"getAllFootstepMaterials","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0030:getAudioBuffer","exportIndex":30,"name":"getAudioBuffer","kind":"re-export","signature":"getAudioBuffer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0031:getBusOutput","exportIndex":31,"name":"getBusOutput","kind":"re-export","signature":"getBusOutput","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0032:getFootstepConfig","exportIndex":32,"name":"getFootstepConfig","kind":"re-export","signature":"getFootstepConfig","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0033:getListenerPosition","exportIndex":33,"name":"getListenerPosition","kind":"re-export","signature":"getListenerPosition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0034:getListenerVelocity","exportIndex":34,"name":"getListenerVelocity","kind":"re-export","signature":"getListenerVelocity","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0035:getSourceEffectiveVolume","exportIndex":35,"name":"getSourceEffectiveVolume","kind":"re-export","signature":"getSourceEffectiveVolume","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0036:hasAudioBuffer","exportIndex":36,"name":"hasAudioBuffer","kind":"re-export","signature":"hasAudioBuffer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0037:initAudioEngine","exportIndex":37,"name":"initAudioEngine","kind":"re-export","signature":"initAudioEngine","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0038:isSourceDone","exportIndex":38,"name":"isSourceDone","kind":"re-export","signature":"isSourceDone","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0039:loadAudioAsset","exportIndex":39,"name":"loadAudioAsset","kind":"re-export","signature":"loadAudioAsset","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0040:playBuffer","exportIndex":40,"name":"playBuffer","kind":"re-export","signature":"playBuffer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0041:playSound","exportIndex":41,"name":"playSound","kind":"re-export","signature":"playSound","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0042:preloadAudioAssets","exportIndex":42,"name":"preloadAudioAssets","kind":"re-export","signature":"preloadAudioAssets","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0043:registerAudioBuffer","exportIndex":43,"name":"registerAudioBuffer","kind":"re-export","signature":"registerAudioBuffer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0044:registerAudioEvent","exportIndex":44,"name":"registerAudioEvent","kind":"re-export","signature":"registerAudioEvent","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0045:registerFootstepEvents","exportIndex":45,"name":"registerFootstepEvents","kind":"re-export","signature":"registerFootstepEvents","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0046:removeOccluder","exportIndex":46,"name":"removeOccluder","kind":"re-export","signature":"removeOccluder","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0047:removeReverbZone","exportIndex":47,"name":"removeReverbZone","kind":"re-export","signature":"removeReverbZone","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0048:resolveAudioEvent","exportIndex":48,"name":"resolveAudioEvent","kind":"re-export","signature":"resolveAudioEvent","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0049:resolveFootstepMaterial","exportIndex":49,"name":"resolveFootstepMaterial","kind":"re-export","signature":"resolveFootstepMaterial","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0050:resumeAudioEngine","exportIndex":50,"name":"resumeAudioEngine","kind":"re-export","signature":"resumeAudioEngine","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0051:setAudioBaseUrl","exportIndex":51,"name":"setAudioBaseUrl","kind":"re-export","signature":"setAudioBaseUrl","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0052:setBusDuck","exportIndex":52,"name":"setBusDuck","kind":"re-export","signature":"setBusDuck","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0053:setBusMute","exportIndex":53,"name":"setBusMute","kind":"re-export","signature":"setBusMute","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0054:setBusVolume","exportIndex":54,"name":"setBusVolume","kind":"re-export","signature":"setBusVolume","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0055:setBusVolumeByName","exportIndex":55,"name":"setBusVolumeByName","kind":"re-export","signature":"setBusVolumeByName","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0056:setMasterVolume","exportIndex":56,"name":"setMasterVolume","kind":"re-export","signature":"setMasterVolume","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0057:setSourcePitch","exportIndex":57,"name":"setSourcePitch","kind":"re-export","signature":"setSourcePitch","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0058:setSourcePosition","exportIndex":58,"name":"setSourcePosition","kind":"re-export","signature":"setSourcePosition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0059:setSourceVolume","exportIndex":59,"name":"setSourceVolume","kind":"re-export","signature":"setSourceVolume","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0060:stopAllSources","exportIndex":60,"name":"stopAllSources","kind":"re-export","signature":"stopAllSources","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0061:stopAudioSource","exportIndex":61,"name":"stopAudioSource","kind":"re-export","signature":"stopAudioSource","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0062:stopSource","exportIndex":62,"name":"stopSource","kind":"re-export","signature":"stopSource","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0063:tickAudioEngine","exportIndex":63,"name":"tickAudioEngine","kind":"re-export","signature":"tickAudioEngine","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0064:tickAudioSource","exportIndex":64,"name":"tickAudioSource","kind":"re-export","signature":"tickAudioSource","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0065:tickConcurrency","exportIndex":65,"name":"tickConcurrency","kind":"re-export","signature":"tickConcurrency","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0066:tickDoppler","exportIndex":66,"name":"tickDoppler","kind":"re-export","signature":"tickDoppler","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0067:tickOcclusion","exportIndex":67,"name":"tickOcclusion","kind":"re-export","signature":"tickOcclusion","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0068:tickReverbZones","exportIndex":68,"name":"tickReverbZones","kind":"re-export","signature":"tickReverbZones","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0069:triggerAudioEvent","exportIndex":69,"name":"triggerAudioEvent","kind":"re-export","signature":"triggerAudioEvent","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0070:unloadAudioAsset","exportIndex":70,"name":"unloadAudioAsset","kind":"re-export","signature":"unloadAudioAsset","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0071:unregisterAudioEvent","exportIndex":71,"name":"unregisterAudioEvent","kind":"re-export","signature":"unregisterAudioEvent","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0072:unregisterFootstepEvents","exportIndex":72,"name":"unregisterFootstepEvents","kind":"re-export","signature":"unregisterFootstepEvents","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/core/index.md","moduleTitle":"audio/core/index","source":"engine/audio/core/index.js","import":"/engine/audio/core/index.js","sourceHash":"cd7a0a62955a9370419f0dec2a1cd3e60cf904fe0d12698ff5906cb63157a11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/core/index.js#0073:updateAudioListener","exportIndex":73,"name":"updateAudioListener","kind":"re-export","signature":"updateAudioListener","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/index.md","moduleTitle":"audio/index","source":"engine/audio/index.js","import":"/engine/audio/index.js","sourceHash":"3a9da152ea1a90b39ef4fcf78e0de55f830d2d6d67b7f46f8223fbf3ba0d0080","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/index.js","title":"audio/index","summary":"engine/audio/index.js — Top-level barrel export for the complete audio system. Exports: Core engine, Spatial pipeline, Bridges, Synth kernel, Sound atoms, Physics models.","exportCount":21}
{"schemaVersion":1,"modulePath":"engine/reference/audio/index.md","moduleTitle":"audio/index","source":"engine/audio/index.js","import":"/engine/audio/index.js","sourceHash":"3a9da152ea1a90b39ef4fcf78e0de55f830d2d6d67b7f46f8223fbf3ba0d0080","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/index.js#0000:MAX_EMITTERS","exportIndex":0,"name":"MAX_EMITTERS","kind":"re-export","signature":"MAX_EMITTERS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/index.md","moduleTitle":"audio/index","source":"engine/audio/index.js","import":"/engine/audio/index.js","sourceHash":"3a9da152ea1a90b39ef4fcf78e0de55f830d2d6d67b7f46f8223fbf3ba0d0080","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/index.js#0001:PARAMS_PER_EMITTER","exportIndex":1,"name":"PARAMS_PER_EMITTER","kind":"re-export","signature":"PARAMS_PER_EMITTER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/index.md","moduleTitle":"audio/index","source":"engine/audio/index.js","import":"/engine/audio/index.js","sourceHash":"3a9da152ea1a90b39ef4fcf78e0de55f830d2d6d67b7f46f8223fbf3ba0d0080","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/index.js#0002:PARAM_LAYOUT","exportIndex":2,"name":"PARAM_LAYOUT","kind":"re-export","signature":"PARAM_LAYOUT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/index.md","moduleTitle":"audio/index","source":"engine/audio/index.js","import":"/engine/audio/index.js","sourceHash":"3a9da152ea1a90b39ef4fcf78e0de55f830d2d6d67b7f46f8223fbf3ba0d0080","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/index.js#0003:TOTAL_FLOAT_COUNT","exportIndex":3,"name":"TOTAL_FLOAT_COUNT","kind":"re-export","signature":"TOTAL_FLOAT_COUNT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/index.md","moduleTitle":"audio/index","source":"engine/audio/index.js","import":"/engine/audio/index.js","sourceHash":"3a9da152ea1a90b39ef4fcf78e0de55f830d2d6d67b7f46f8223fbf3ba0d0080","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/index.js#0004:clearAllEmitterStats","exportIndex":4,"name":"clearAllEmitterStats","kind":"re-export","signature":"clearAllEmitterStats","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/index.md","moduleTitle":"audio/index","source":"engine/audio/index.js","import":"/engine/audio/index.js","sourceHash":"3a9da152ea1a90b39ef4fcf78e0de55f830d2d6d67b7f46f8223fbf3ba0d0080","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/index.js#0005:clearEmitterStats","exportIndex":5,"name":"clearEmitterStats","kind":"re-export","signature":"clearEmitterStats","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/index.md","moduleTitle":"audio/index","source":"engine/audio/index.js","import":"/engine/audio/index.js","sourceHash":"3a9da152ea1a90b39ef4fcf78e0de55f830d2d6d67b7f46f8223fbf3ba0d0080","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/index.js#0006:createCombustionPatch","exportIndex":6,"name":"createCombustionPatch","kind":"re-export","signature":"createCombustionPatch","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/index.md","moduleTitle":"audio/index","source":"engine/audio/index.js","import":"/engine/audio/index.js","sourceHash":"3a9da152ea1a90b39ef4fcf78e0de55f830d2d6d67b7f46f8223fbf3ba0d0080","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/index.js#0007:createCrackleAtomPatch","exportIndex":7,"name":"createCrackleAtomPatch","kind":"re-export","signature":"createCrackleAtomPatch","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/index.md","moduleTitle":"audio/index","source":"engine/audio/index.js","import":"/engine/audio/index.js","sourceHash":"3a9da152ea1a90b39ef4fcf78e0de55f830d2d6d67b7f46f8223fbf3ba0d0080","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/index.js#0008:createDropAtomPatch","exportIndex":8,"name":"createDropAtomPatch","kind":"re-export","signature":"createDropAtomPatch","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/index.md","moduleTitle":"audio/index","source":"engine/audio/index.js","import":"/engine/audio/index.js","sourceHash":"3a9da152ea1a90b39ef4fcf78e0de55f830d2d6d67b7f46f8223fbf3ba0d0080","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/index.js#0009:createFluidPatch","exportIndex":9,"name":"createFluidPatch","kind":"re-export","signature":"createFluidPatch","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/index.md","moduleTitle":"audio/index","source":"engine/audio/index.js","import":"/engine/audio/index.js","sourceHash":"3a9da152ea1a90b39ef4fcf78e0de55f830d2d6d67b7f46f8223fbf3ba0d0080","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/index.js#0010:createHissAtomPatch","exportIndex":10,"name":"createHissAtomPatch","kind":"re-export","signature":"createHissAtomPatch","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/index.md","moduleTitle":"audio/index","source":"engine/audio/index.js","import":"/engine/audio/index.js","sourceHash":"3a9da152ea1a90b39ef4fcf78e0de55f830d2d6d67b7f46f8223fbf3ba0d0080","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/index.js#0011:createModalImpactPatch","exportIndex":11,"name":"createModalImpactPatch","kind":"re-export","signature":"createModalImpactPatch","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/index.md","moduleTitle":"audio/index","source":"engine/audio/index.js","import":"/engine/audio/index.js","sourceHash":"3a9da152ea1a90b39ef4fcf78e0de55f830d2d6d67b7f46f8223fbf3ba0d0080","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/index.js#0012:createRumbleAtomPatch","exportIndex":12,"name":"createRumbleAtomPatch","kind":"re-export","signature":"createRumbleAtomPatch","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/index.md","moduleTitle":"audio/index","source":"engine/audio/index.js","import":"/engine/audio/index.js","sourceHash":"3a9da152ea1a90b39ef4fcf78e0de55f830d2d6d67b7f46f8223fbf3ba0d0080","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/index.js#0013:createSharedParamBuffer","exportIndex":13,"name":"createSharedParamBuffer","kind":"re-export","signature":"createSharedParamBuffer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/index.md","moduleTitle":"audio/index","source":"engine/audio/index.js","import":"/engine/audio/index.js","sourceHash":"3a9da152ea1a90b39ef4fcf78e0de55f830d2d6d67b7f46f8223fbf3ba0d0080","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/index.js#0014:createWeatherPatch","exportIndex":14,"name":"createWeatherPatch","kind":"re-export","signature":"createWeatherPatch","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/index.md","moduleTitle":"audio/index","source":"engine/audio/index.js","import":"/engine/audio/index.js","sourceHash":"3a9da152ea1a90b39ef4fcf78e0de55f830d2d6d67b7f46f8223fbf3ba0d0080","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/index.js#0015:createWhooshAtomPatch","exportIndex":15,"name":"createWhooshAtomPatch","kind":"re-export","signature":"createWhooshAtomPatch","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/index.md","moduleTitle":"audio/index","source":"engine/audio/index.js","import":"/engine/audio/index.js","sourceHash":"3a9da152ea1a90b39ef4fcf78e0de55f830d2d6d67b7f46f8223fbf3ba0d0080","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/index.js#0016:createWindPatch","exportIndex":16,"name":"createWindPatch","kind":"re-export","signature":"createWindPatch","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/index.md","moduleTitle":"audio/index","source":"engine/audio/index.js","import":"/engine/audio/index.js","sourceHash":"3a9da152ea1a90b39ef4fcf78e0de55f830d2d6d67b7f46f8223fbf3ba0d0080","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/index.js#0017:getModalMaterials","exportIndex":17,"name":"getModalMaterials","kind":"re-export","signature":"getModalMaterials","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/index.md","moduleTitle":"audio/index","source":"engine/audio/index.js","import":"/engine/audio/index.js","sourceHash":"3a9da152ea1a90b39ef4fcf78e0de55f830d2d6d67b7f46f8223fbf3ba0d0080","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/index.js#0018:getModalPreset","exportIndex":18,"name":"getModalPreset","kind":"re-export","signature":"getModalPreset","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/index.md","moduleTitle":"audio/index","source":"engine/audio/index.js","import":"/engine/audio/index.js","sourceHash":"3a9da152ea1a90b39ef4fcf78e0de55f830d2d6d67b7f46f8223fbf3ba0d0080","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/index.js#0019:readEmitterParam","exportIndex":19,"name":"readEmitterParam","kind":"re-export","signature":"readEmitterParam","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/index.md","moduleTitle":"audio/index","source":"engine/audio/index.js","import":"/engine/audio/index.js","sourceHash":"3a9da152ea1a90b39ef4fcf78e0de55f830d2d6d67b7f46f8223fbf3ba0d0080","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/index.js#0020:writeEmitterStats","exportIndex":20,"name":"writeEmitterStats","kind":"re-export","signature":"writeEmitterStats","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/BodyFoleyPatches.md","moduleTitle":"audio/synth/BodyFoleyPatches","source":"engine/audio/synth/BodyFoleyPatches.js","import":"/engine/audio/synth/BodyFoleyPatches.js","sourceHash":"44ecb543510169eb6ce1d49710583c861e044fec2d1da32c36e68585c1b37597","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/synth/BodyFoleyPatches.js","title":"audio/synth/BodyFoleyPatches","summary":"Jump effort sound — short vocal grunt (bandpassed noise + formant)","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/BodyFoleyPatches.md","moduleTitle":"audio/synth/BodyFoleyPatches","source":"engine/audio/synth/BodyFoleyPatches.js","import":"/engine/audio/synth/BodyFoleyPatches.js","sourceHash":"44ecb543510169eb6ce1d49710583c861e044fec2d1da32c36e68585c1b37597","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/BodyFoleyPatches.js#0000:body_jump_effort","exportIndex":0,"name":"body_jump_effort","kind":"function","signature":"body_jump_effort(ctx, dest, p)","summary":"Jump effort sound — short vocal grunt (bandpassed noise + formant)"}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/BodyFoleyPatches.md","moduleTitle":"audio/synth/BodyFoleyPatches","source":"engine/audio/synth/BodyFoleyPatches.js","import":"/engine/audio/synth/BodyFoleyPatches.js","sourceHash":"44ecb543510169eb6ce1d49710583c861e044fec2d1da32c36e68585c1b37597","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/BodyFoleyPatches.js#0001:body_slide","exportIndex":1,"name":"body_slide","kind":"function","signature":"body_slide(ctx, dest, p)","summary":"Slide friction sound — continuous lowpass swept noise"}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/BodyFoleyPatches.md","moduleTitle":"audio/synth/BodyFoleyPatches","source":"engine/audio/synth/BodyFoleyPatches.js","import":"/engine/audio/synth/BodyFoleyPatches.js","sourceHash":"44ecb543510169eb6ce1d49710583c861e044fec2d1da32c36e68585c1b37597","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/BodyFoleyPatches.js#0002:body_cloth","exportIndex":2,"name":"body_cloth","kind":"function","signature":"body_cloth(ctx, dest, p)","summary":"Cloth rustle — short high-freq noise burst"}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/BodyFoleyPatches.md","moduleTitle":"audio/synth/BodyFoleyPatches","source":"engine/audio/synth/BodyFoleyPatches.js","import":"/engine/audio/synth/BodyFoleyPatches.js","sourceHash":"44ecb543510169eb6ce1d49710583c861e044fec2d1da32c36e68585c1b37597","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/BodyFoleyPatches.js#0003:body_breath_light","exportIndex":3,"name":"body_breath_light","kind":"function","signature":"body_breath_light(ctx, dest, p)","summary":"Light breathing — soft airy noise with bandpass"}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/BodyFoleyPatches.md","moduleTitle":"audio/synth/BodyFoleyPatches","source":"engine/audio/synth/BodyFoleyPatches.js","import":"/engine/audio/synth/BodyFoleyPatches.js","sourceHash":"44ecb543510169eb6ce1d49710583c861e044fec2d1da32c36e68585c1b37597","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/BodyFoleyPatches.js#0004:body_breath_heavy","exportIndex":4,"name":"body_breath_heavy","kind":"function","signature":"body_breath_heavy(ctx, dest, p)","summary":"Heavy breathing — louder breath with low-end rumble"}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/BodyFoleyPatches.md","moduleTitle":"audio/synth/BodyFoleyPatches","source":"engine/audio/synth/BodyFoleyPatches.js","import":"/engine/audio/synth/BodyFoleyPatches.js","sourceHash":"44ecb543510169eb6ce1d49710583c861e044fec2d1da32c36e68585c1b37597","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/BodyFoleyPatches.js#0005:BODY_FOLEY_PATCHES","exportIndex":5,"name":"BODY_FOLEY_PATCHES","kind":"constant","signature":"BODY_FOLEY_PATCHES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/FootstepPatches.md","moduleTitle":"audio/synth/FootstepPatches","source":"engine/audio/synth/FootstepPatches.js","import":"/engine/audio/synth/FootstepPatches.js","sourceHash":"aee0f7394cadde2be30a8bfaee8bbe20fd64726a9dce58e04517da4f732f9fd0","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/synth/FootstepPatches.js","title":"audio/synth/FootstepPatches","summary":"FootstepPatches.js - Procedural Footstep Sound Generators Generates material-specific footstep sounds procedurally using Web Audio API. Each patch creates layered sounds (body impact + surface texture) with parameters for speed, weight, and pitch variation.","exportCount":22}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/FootstepPatches.md","moduleTitle":"audio/synth/FootstepPatches","source":"engine/audio/synth/FootstepPatches.js","import":"/engine/audio/synth/FootstepPatches.js","sourceHash":"aee0f7394cadde2be30a8bfaee8bbe20fd64726a9dce58e04517da4f732f9fd0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/FootstepPatches.js#0000:footstep_dirt","exportIndex":0,"name":"footstep_dirt","kind":"function","signature":"footstep_dirt(ctx, dest, p)","summary":"Dirt footstep — muffled thud + grain scatter"}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/FootstepPatches.md","moduleTitle":"audio/synth/FootstepPatches","source":"engine/audio/synth/FootstepPatches.js","import":"/engine/audio/synth/FootstepPatches.js","sourceHash":"aee0f7394cadde2be30a8bfaee8bbe20fd64726a9dce58e04517da4f732f9fd0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/FootstepPatches.js#0001:footstep_grass","exportIndex":1,"name":"footstep_grass","kind":"function","signature":"footstep_grass(ctx, dest, p)","summary":"Grass footstep — soft rustle + muffled thud"}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/FootstepPatches.md","moduleTitle":"audio/synth/FootstepPatches","source":"engine/audio/synth/FootstepPatches.js","import":"/engine/audio/synth/FootstepPatches.js","sourceHash":"aee0f7394cadde2be30a8bfaee8bbe20fd64726a9dce58e04517da4f732f9fd0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/FootstepPatches.js#0002:footstep_sand","exportIndex":2,"name":"footstep_sand","kind":"function","signature":"footstep_sand(ctx, dest, p)","summary":"Sand footstep — soft grain scatter + muffled impact"}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/FootstepPatches.md","moduleTitle":"audio/synth/FootstepPatches","source":"engine/audio/synth/FootstepPatches.js","import":"/engine/audio/synth/FootstepPatches.js","sourceHash":"aee0f7394cadde2be30a8bfaee8bbe20fd64726a9dce58e04517da4f732f9fd0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/FootstepPatches.js#0003:footstep_gravel","exportIndex":3,"name":"footstep_gravel","kind":"function","signature":"footstep_gravel(ctx, dest, p)","summary":"Gravel footstep — sharp scatter + rattle"}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/FootstepPatches.md","moduleTitle":"audio/synth/FootstepPatches","source":"engine/audio/synth/FootstepPatches.js","import":"/engine/audio/synth/FootstepPatches.js","sourceHash":"aee0f7394cadde2be30a8bfaee8bbe20fd64726a9dce58e04517da4f732f9fd0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/FootstepPatches.js#0004:footstep_mud","exportIndex":4,"name":"footstep_mud","kind":"function","signature":"footstep_mud(ctx, dest, p)","summary":"Mud footstep — wet squelch + suction release"}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/FootstepPatches.md","moduleTitle":"audio/synth/FootstepPatches","source":"engine/audio/synth/FootstepPatches.js","import":"/engine/audio/synth/FootstepPatches.js","sourceHash":"aee0f7394cadde2be30a8bfaee8bbe20fd64726a9dce58e04517da4f732f9fd0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/FootstepPatches.js#0005:footstep_snow","exportIndex":5,"name":"footstep_snow","kind":"function","signature":"footstep_snow(ctx, dest, p)","summary":"Snow footstep — soft crunch + squeak"}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/FootstepPatches.md","moduleTitle":"audio/synth/FootstepPatches","source":"engine/audio/synth/FootstepPatches.js","import":"/engine/audio/synth/FootstepPatches.js","sourceHash":"aee0f7394cadde2be30a8bfaee8bbe20fd64726a9dce58e04517da4f732f9fd0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/FootstepPatches.js#0006:footstep_stone","exportIndex":6,"name":"footstep_stone","kind":"function","signature":"footstep_stone(ctx, dest, p)","summary":"Stone footstep — hard impact + high-freq crack"}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/FootstepPatches.md","moduleTitle":"audio/synth/FootstepPatches","source":"engine/audio/synth/FootstepPatches.js","import":"/engine/audio/synth/FootstepPatches.js","sourceHash":"aee0f7394cadde2be30a8bfaee8bbe20fd64726a9dce58e04517da4f732f9fd0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/FootstepPatches.js#0007:footstep_concrete","exportIndex":7,"name":"footstep_concrete","kind":"function","signature":"footstep_concrete(ctx, dest, p)","summary":"Concrete footstep — dull thud + mid-freq resonance"}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/FootstepPatches.md","moduleTitle":"audio/synth/FootstepPatches","source":"engine/audio/synth/FootstepPatches.js","import":"/engine/audio/synth/FootstepPatches.js","sourceHash":"aee0f7394cadde2be30a8bfaee8bbe20fd64726a9dce58e04517da4f732f9fd0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/FootstepPatches.js#0008:footstep_marble","exportIndex":8,"name":"footstep_marble","kind":"function","signature":"footstep_marble(ctx, dest, p)","summary":"Marble footstep — bright click + ring"}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/FootstepPatches.md","moduleTitle":"audio/synth/FootstepPatches","source":"engine/audio/synth/FootstepPatches.js","import":"/engine/audio/synth/FootstepPatches.js","sourceHash":"aee0f7394cadde2be30a8bfaee8bbe20fd64726a9dce58e04517da4f732f9fd0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/FootstepPatches.js#0009:footstep_brick","exportIndex":9,"name":"footstep_brick","kind":"function","signature":"footstep_brick(ctx, dest, p)","summary":"Brick footstep — textured impact + dust scatter"}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/FootstepPatches.md","moduleTitle":"audio/synth/FootstepPatches","source":"engine/audio/synth/FootstepPatches.js","import":"/engine/audio/synth/FootstepPatches.js","sourceHash":"aee0f7394cadde2be30a8bfaee8bbe20fd64726a9dce58e04517da4f732f9fd0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/FootstepPatches.js#0010:footstep_wood_plank","exportIndex":10,"name":"footstep_wood_plank","kind":"function","signature":"footstep_wood_plank(ctx, dest, p)","summary":"Wood plank footstep — resonant body + plank slap"}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/FootstepPatches.md","moduleTitle":"audio/synth/FootstepPatches","source":"engine/audio/synth/FootstepPatches.js","import":"/engine/audio/synth/FootstepPatches.js","sourceHash":"aee0f7394cadde2be30a8bfaee8bbe20fd64726a9dce58e04517da4f732f9fd0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/FootstepPatches.js#0011:footstep_wood_creak","exportIndex":11,"name":"footstep_wood_creak","kind":"function","signature":"footstep_wood_creak(ctx, dest, p)","summary":"Wood creak footstep — creaking friction + resonance"}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/FootstepPatches.md","moduleTitle":"audio/synth/FootstepPatches","source":"engine/audio/synth/FootstepPatches.js","import":"/engine/audio/synth/FootstepPatches.js","sourceHash":"aee0f7394cadde2be30a8bfaee8bbe20fd64726a9dce58e04517da4f732f9fd0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/FootstepPatches.js#0012:footstep_metal_solid","exportIndex":12,"name":"footstep_metal_solid","kind":"function","signature":"footstep_metal_solid(ctx, dest, p)","summary":"Metal solid footstep — clang + ring"}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/FootstepPatches.md","moduleTitle":"audio/synth/FootstepPatches","source":"engine/audio/synth/FootstepPatches.js","import":"/engine/audio/synth/FootstepPatches.js","sourceHash":"aee0f7394cadde2be30a8bfaee8bbe20fd64726a9dce58e04517da4f732f9fd0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/FootstepPatches.js#0013:footstep_metal_grate","exportIndex":13,"name":"footstep_metal_grate","kind":"function","signature":"footstep_metal_grate(ctx, dest, p)","summary":"Metal grate footstep — rattle + metallic ring"}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/FootstepPatches.md","moduleTitle":"audio/synth/FootstepPatches","source":"engine/audio/synth/FootstepPatches.js","import":"/engine/audio/synth/FootstepPatches.js","sourceHash":"aee0f7394cadde2be30a8bfaee8bbe20fd64726a9dce58e04517da4f732f9fd0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/FootstepPatches.js#0014:footstep_water_shallow","exportIndex":14,"name":"footstep_water_shallow","kind":"function","signature":"footstep_water_shallow(ctx, dest, p)","summary":"Water shallow footstep — splash + plop"}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/FootstepPatches.md","moduleTitle":"audio/synth/FootstepPatches","source":"engine/audio/synth/FootstepPatches.js","import":"/engine/audio/synth/FootstepPatches.js","sourceHash":"aee0f7394cadde2be30a8bfaee8bbe20fd64726a9dce58e04517da4f732f9fd0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/FootstepPatches.js#0015:footstep_water_puddle","exportIndex":15,"name":"footstep_water_puddle","kind":"function","signature":"footstep_water_puddle(ctx, dest, p)","summary":"Water puddle footstep — small splash"}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/FootstepPatches.md","moduleTitle":"audio/synth/FootstepPatches","source":"engine/audio/synth/FootstepPatches.js","import":"/engine/audio/synth/FootstepPatches.js","sourceHash":"aee0f7394cadde2be30a8bfaee8bbe20fd64726a9dce58e04517da4f732f9fd0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/FootstepPatches.js#0016:footstep_leaves","exportIndex":16,"name":"footstep_leaves","kind":"function","signature":"footstep_leaves(ctx, dest, p)","summary":"Leaves footstep — crunch + rustle"}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/FootstepPatches.md","moduleTitle":"audio/synth/FootstepPatches","source":"engine/audio/synth/FootstepPatches.js","import":"/engine/audio/synth/FootstepPatches.js","sourceHash":"aee0f7394cadde2be30a8bfaee8bbe20fd64726a9dce58e04517da4f732f9fd0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/FootstepPatches.js#0017:footstep_glass","exportIndex":17,"name":"footstep_glass","kind":"function","signature":"footstep_glass(ctx, dest, p)","summary":"Glass footstep — delicate clink + shimmer"}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/FootstepPatches.md","moduleTitle":"audio/synth/FootstepPatches","source":"engine/audio/synth/FootstepPatches.js","import":"/engine/audio/synth/FootstepPatches.js","sourceHash":"aee0f7394cadde2be30a8bfaee8bbe20fd64726a9dce58e04517da4f732f9fd0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/FootstepPatches.js#0018:footstep_ice","exportIndex":18,"name":"footstep_ice","kind":"function","signature":"footstep_ice(ctx, dest, p)","summary":"Ice footstep — crack + slide"}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/FootstepPatches.md","moduleTitle":"audio/synth/FootstepPatches","source":"engine/audio/synth/FootstepPatches.js","import":"/engine/audio/synth/FootstepPatches.js","sourceHash":"aee0f7394cadde2be30a8bfaee8bbe20fd64726a9dce58e04517da4f732f9fd0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/FootstepPatches.js#0019:land_generic","exportIndex":19,"name":"land_generic","kind":"function","signature":"land_generic(ctx, dest, p)","summary":"Generic land sound — reuses footstep patch but with heavier weight/volume Can be used as a wrapper for any footstep material"}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/FootstepPatches.md","moduleTitle":"audio/synth/FootstepPatches","source":"engine/audio/synth/FootstepPatches.js","import":"/engine/audio/synth/FootstepPatches.js","sourceHash":"aee0f7394cadde2be30a8bfaee8bbe20fd64726a9dce58e04517da4f732f9fd0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/FootstepPatches.js#0020:getFootstepPatch","exportIndex":20,"name":"getFootstepPatch","kind":"function","signature":"getFootstepPatch(material)","summary":"Get footstep patch function by material key."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/FootstepPatches.md","moduleTitle":"audio/synth/FootstepPatches","source":"engine/audio/synth/FootstepPatches.js","import":"/engine/audio/synth/FootstepPatches.js","sourceHash":"aee0f7394cadde2be30a8bfaee8bbe20fd64726a9dce58e04517da4f732f9fd0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/FootstepPatches.js#0021:FOOTSTEP_PATCHES","exportIndex":21,"name":"FOOTSTEP_PATCHES","kind":"constant","signature":"FOOTSTEP_PATCHES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/NodeRegistry.md","moduleTitle":"audio/synth/NodeRegistry","source":"engine/audio/synth/NodeRegistry.js","import":"/engine/audio/synth/NodeRegistry.js","sourceHash":"6882e7630a9314ff81cf6368b193daa1ea90649951b50c96b23b6b365abf8eb6","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/synth/NodeRegistry.js","title":"audio/synth/NodeRegistry","summary":"NodeRegistry.js — Unified Node Type Registry Single source of truth for mapping node type names to their Web Audio factory functions and worklet processor names. Usage: import { getNodeFactory, getRegisteredTypes } from './NodeRegistry.js'; const factory = getNodeFactory('Waveguide'); const node = factory(ctx, params, pitchRatio);","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/NodeRegistry.md","moduleTitle":"audio/synth/NodeRegistry","source":"engine/audio/synth/NodeRegistry.js","import":"/engine/audio/synth/NodeRegistry.js","sourceHash":"6882e7630a9314ff81cf6368b193daa1ea90649951b50c96b23b6b365abf8eb6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/NodeRegistry.js#0000:getNodeFactory","exportIndex":0,"name":"getNodeFactory","kind":"function","signature":"getNodeFactory(type)","summary":"Get the Web Audio factory function for a node type. Returns a function: (ctx, nodeDefinition, pitchRatio) => { output, input, sources }"}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/NodeRegistry.md","moduleTitle":"audio/synth/NodeRegistry","source":"engine/audio/synth/NodeRegistry.js","import":"/engine/audio/synth/NodeRegistry.js","sourceHash":"6882e7630a9314ff81cf6368b193daa1ea90649951b50c96b23b6b365abf8eb6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/NodeRegistry.js#0001:getRegisteredTypes","exportIndex":1,"name":"getRegisteredTypes","kind":"function","signature":"getRegisteredTypes()","summary":"Get all registered type names."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/NodeRegistry.md","moduleTitle":"audio/synth/NodeRegistry","source":"engine/audio/synth/NodeRegistry.js","import":"/engine/audio/synth/NodeRegistry.js","sourceHash":"6882e7630a9314ff81cf6368b193daa1ea90649951b50c96b23b6b365abf8eb6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/NodeRegistry.js#0002:getNodeCategory","exportIndex":2,"name":"getNodeCategory","kind":"function","signature":"getNodeCategory(type)","summary":"Get the category for a node type."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/NodeRegistry.md","moduleTitle":"audio/synth/NodeRegistry","source":"engine/audio/synth/NodeRegistry.js","import":"/engine/audio/synth/NodeRegistry.js","sourceHash":"6882e7630a9314ff81cf6368b193daa1ea90649951b50c96b23b6b365abf8eb6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/NodeRegistry.js#0003:hasWorkletProcessor","exportIndex":3,"name":"hasWorkletProcessor","kind":"function","signature":"hasWorkletProcessor(type)","summary":"Check if a type has a worklet processor implementation."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/NodeRegistry.md","moduleTitle":"audio/synth/NodeRegistry","source":"engine/audio/synth/NodeRegistry.js","import":"/engine/audio/synth/NodeRegistry.js","sourceHash":"6882e7630a9314ff81cf6368b193daa1ea90649951b50c96b23b6b365abf8eb6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/NodeRegistry.js#0004:NODE_CATEGORIES","exportIndex":4,"name":"NODE_CATEGORIES","kind":"constant","signature":"NODE_CATEGORIES","summary":"Node category definitions for organization/UI."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/NodeRegistry.md","moduleTitle":"audio/synth/NodeRegistry","source":"engine/audio/synth/NodeRegistry.js","import":"/engine/audio/synth/NodeRegistry.js","sourceHash":"6882e7630a9314ff81cf6368b193daa1ea90649951b50c96b23b6b365abf8eb6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/NodeRegistry.js#0005:ALL_NODE_TYPES","exportIndex":5,"name":"ALL_NODE_TYPES","kind":"constant","signature":"ALL_NODE_TYPES","summary":"All registered node type names (flat list)."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/PatchCompiler.md","moduleTitle":"audio/synth/PatchCompiler","source":"engine/audio/synth/PatchCompiler.js","import":"/engine/audio/synth/PatchCompiler.js","sourceHash":"663570e9e9b3543e9b0f9168b193f52ca26ccd39b166752ff1db22d52793f97f","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/synth/PatchCompiler.js","title":"audio/synth/PatchCompiler","summary":"PatchCompiler.js - Compile Patch JSON → Execution Graph Parses a patch JSON descriptor, validates nodes and wires, performs topological sort, detects feedback loops, and outputs a compiled execution plan for PatchRunner.worklet.js.","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/PatchCompiler.md","moduleTitle":"audio/synth/PatchCompiler","source":"engine/audio/synth/PatchCompiler.js","import":"/engine/audio/synth/PatchCompiler.js","sourceHash":"663570e9e9b3543e9b0f9168b193f52ca26ccd39b166752ff1db22d52793f97f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/PatchCompiler.js#0000:registerNodeType","exportIndex":0,"name":"registerNodeType","kind":"function","signature":"registerNodeType(type, def)","summary":"Register a node type for the compiler."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/PatchCompiler.md","moduleTitle":"audio/synth/PatchCompiler","source":"engine/audio/synth/PatchCompiler.js","import":"/engine/audio/synth/PatchCompiler.js","sourceHash":"663570e9e9b3543e9b0f9168b193f52ca26ccd39b166752ff1db22d52793f97f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/PatchCompiler.js#0001:getNodeTypes","exportIndex":1,"name":"getNodeTypes","kind":"function","signature":"getNodeTypes()","summary":"Get all registered node types."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/PatchCompiler.md","moduleTitle":"audio/synth/PatchCompiler","source":"engine/audio/synth/PatchCompiler.js","import":"/engine/audio/synth/PatchCompiler.js","sourceHash":"663570e9e9b3543e9b0f9168b193f52ca26ccd39b166752ff1db22d52793f97f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/PatchCompiler.js#0002:compilePatch","exportIndex":2,"name":"compilePatch","kind":"function","signature":"compilePatch(patch)","summary":"Compile a patch JSON into an execution plan."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/PatchCompiler.md","moduleTitle":"audio/synth/PatchCompiler","source":"engine/audio/synth/PatchCompiler.js","import":"/engine/audio/synth/PatchCompiler.js","sourceHash":"663570e9e9b3543e9b0f9168b193f52ca26ccd39b166752ff1db22d52793f97f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/PatchCompiler.js#0003:validatePatch","exportIndex":3,"name":"validatePatch","kind":"function","signature":"validatePatch(patch)","summary":"Validate a patch without fully compiling."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/PatchRunner.worklet.md","moduleTitle":"audio/synth/PatchRunner.worklet","source":"engine/audio/synth/PatchRunner.worklet.js","import":"/engine/audio/synth/PatchRunner.worklet.js","sourceHash":"6e8edf6343ab3edecefe41874c6056dc422ec3b839f1b8681ce79c68e9c133ba","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/synth/PatchRunner.worklet.js","title":"audio/synth/PatchRunner.worklet","summary":"PatchRunner.worklet.js - AudioWorkletProcessor Executes a compiled patch graph at sample rate (128 samples/block). Receives compiled plans via MessagePort, reads game params from SharedArrayBuffer, and outputs synthesized audio. Register with: audioContext.audioWorklet.addModule('PatchRunner.worklet.js')","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/ProceduralPatches.md","moduleTitle":"audio/synth/ProceduralPatches","source":"engine/audio/synth/ProceduralPatches.js","import":"/engine/audio/synth/ProceduralPatches.js","sourceHash":"99019ac19beb5cd6099c25f60010903dfd9e0205356c578aacd8fd23812a4498","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/synth/ProceduralPatches.js","title":"audio/synth/ProceduralPatches","summary":"ProceduralPatches.js - Real-time procedural sound patches for particle substances Each patch is a factory: (ctx, destination, params) => { stop(), update?(params) } ctx         — AudioContext destination — AudioNode (pre-spatialized via PannerNode) params      — { volume, pitch, speed, temperature, ... } Impact patches are one-shot (auto-stop). Ambient patches loop until stop() is called, and support update() for real-time modulation.","exportCount":26}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/ProceduralPatches.md","moduleTitle":"audio/synth/ProceduralPatches","source":"engine/audio/synth/ProceduralPatches.js","import":"/engine/audio/synth/ProceduralPatches.js","sourceHash":"99019ac19beb5cd6099c25f60010903dfd9e0205356c578aacd8fd23812a4498","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/ProceduralPatches.js#0000:impact_fluid","exportIndex":0,"name":"impact_fluid","kind":"function","signature":"impact_fluid(ctx, dest, p)","summary":"Water/fluid impact — velocity-driven splat/drip/splash. Sound design based on real water acoustics: - \"Plop\" body: fast sine pitch-sweep downward (Helmholtz cavity resonance). A water droplet traps an air bubble on impact; the bubble oscillates at a frequency that sweeps down as it grows. Duration ~15-40ms. - \"Spray\" transient: ultra-short highpass noise burst (<20ms) for the broadband crack of water hitting a surface. Only audible at higher speeds. - Bubble resonances: at high speed, 1-3 random short sine pips simulate secondary bubbles breaking the surface. Speed mapping: slow  (< 1)  → gentle drip: mostly plop body, minimal spray medium (1-4)  → splat: plop + moderate spray fast  (> 4)  → full splash: plop + loud spray + bubble pips"}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/ProceduralPatches.md","moduleTitle":"audio/synth/ProceduralPatches","source":"engine/audio/synth/ProceduralPatches.js","import":"/engine/audio/synth/ProceduralPatches.js","sourceHash":"99019ac19beb5cd6099c25f60010903dfd9e0205356c578aacd8fd23812a4498","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/ProceduralPatches.js#0001:impact_metal","exportIndex":1,"name":"impact_metal","kind":"function","signature":"impact_metal(ctx, dest, p)","summary":"Metal clang — multi-partial ring + noise transient"}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/ProceduralPatches.md","moduleTitle":"audio/synth/ProceduralPatches","source":"engine/audio/synth/ProceduralPatches.js","import":"/engine/audio/synth/ProceduralPatches.js","sourceHash":"99019ac19beb5cd6099c25f60010903dfd9e0205356c578aacd8fd23812a4498","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/ProceduralPatches.js#0002:impact_glass","exportIndex":2,"name":"impact_glass","kind":"function","signature":"impact_glass(ctx, dest, p)","summary":"Glass clink — high FM harmonics, crystalline"}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/ProceduralPatches.md","moduleTitle":"audio/synth/ProceduralPatches","source":"engine/audio/synth/ProceduralPatches.js","import":"/engine/audio/synth/ProceduralPatches.js","sourceHash":"99019ac19beb5cd6099c25f60010903dfd9e0205356c578aacd8fd23812a4498","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/ProceduralPatches.js#0003:impact_stone","exportIndex":3,"name":"impact_stone","kind":"function","signature":"impact_stone(ctx, dest, p)","summary":"Stone/debris thud — low filtered noise + crack + sub thump"}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/ProceduralPatches.md","moduleTitle":"audio/synth/ProceduralPatches","source":"engine/audio/synth/ProceduralPatches.js","import":"/engine/audio/synth/ProceduralPatches.js","sourceHash":"99019ac19beb5cd6099c25f60010903dfd9e0205356c578aacd8fd23812a4498","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/ProceduralPatches.js#0004:impact_wood","exportIndex":4,"name":"impact_wood","kind":"function","signature":"impact_wood(ctx, dest, p)","summary":"Wood knock — multi-mode resonant body + knock transient"}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/ProceduralPatches.md","moduleTitle":"audio/synth/ProceduralPatches","source":"engine/audio/synth/ProceduralPatches.js","import":"/engine/audio/synth/ProceduralPatches.js","sourceHash":"99019ac19beb5cd6099c25f60010903dfd9e0205356c578aacd8fd23812a4498","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/ProceduralPatches.js#0005:impact_ice","exportIndex":5,"name":"impact_ice","kind":"function","signature":"impact_ice(ctx, dest, p)","summary":"Ice crack — sharp noise + crystalline inharmonic pings"}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/ProceduralPatches.md","moduleTitle":"audio/synth/ProceduralPatches","source":"engine/audio/synth/ProceduralPatches.js","import":"/engine/audio/synth/ProceduralPatches.js","sourceHash":"99019ac19beb5cd6099c25f60010903dfd9e0205356c578aacd8fd23812a4498","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/ProceduralPatches.js#0006:impact_combustion","exportIndex":6,"name":"impact_combustion","kind":"function","signature":"impact_combustion(ctx, dest, p)","summary":"Fire/lava impact burst — noise burst + low boom + rumble tail"}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/ProceduralPatches.md","moduleTitle":"audio/synth/ProceduralPatches","source":"engine/audio/synth/ProceduralPatches.js","import":"/engine/audio/synth/ProceduralPatches.js","sourceHash":"99019ac19beb5cd6099c25f60010903dfd9e0205356c578aacd8fd23812a4498","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/ProceduralPatches.js#0007:impact_sand","exportIndex":7,"name":"impact_sand","kind":"function","signature":"impact_sand(ctx, dest, p)","summary":"Sand soft impact — muffled body + grain scatter"}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/ProceduralPatches.md","moduleTitle":"audio/synth/ProceduralPatches","source":"engine/audio/synth/ProceduralPatches.js","import":"/engine/audio/synth/ProceduralPatches.js","sourceHash":"99019ac19beb5cd6099c25f60010903dfd9e0205356c578aacd8fd23812a4498","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/ProceduralPatches.js#0008:impact_drop","exportIndex":8,"name":"impact_drop","kind":"function","signature":"impact_drop(ctx, dest, p)","summary":"Viscous liquid drop/drip — thicker plop than water, low resonance, no spray"}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/ProceduralPatches.md","moduleTitle":"audio/synth/ProceduralPatches","source":"engine/audio/synth/ProceduralPatches.js","import":"/engine/audio/synth/ProceduralPatches.js","sourceHash":"99019ac19beb5cd6099c25f60010903dfd9e0205356c578aacd8fd23812a4498","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/ProceduralPatches.js#0009:impact_hiss","exportIndex":9,"name":"impact_hiss","kind":"function","signature":"impact_hiss(ctx, dest, p)","summary":"Gas/vapor/granular hiss — soft broadband whoosh, not a hard impact"}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/ProceduralPatches.md","moduleTitle":"audio/synth/ProceduralPatches","source":"engine/audio/synth/ProceduralPatches.js","import":"/engine/audio/synth/ProceduralPatches.js","sourceHash":"99019ac19beb5cd6099c25f60010903dfd9e0205356c578aacd8fd23812a4498","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/ProceduralPatches.js#0010:impact_crackle","exportIndex":10,"name":"impact_crackle","kind":"function","signature":"impact_crackle(ctx, dest, p)","summary":"Spark/debris crackle — scattered hard micro-transients"}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/ProceduralPatches.md","moduleTitle":"audio/synth/ProceduralPatches","source":"engine/audio/synth/ProceduralPatches.js","import":"/engine/audio/synth/ProceduralPatches.js","sourceHash":"99019ac19beb5cd6099c25f60010903dfd9e0205356c578aacd8fd23812a4498","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/ProceduralPatches.js#0011:impact_electric","exportIndex":11,"name":"impact_electric","kind":"function","signature":"impact_electric(ctx, dest, p)","summary":"Plasma/spark electric snap"}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/ProceduralPatches.md","moduleTitle":"audio/synth/ProceduralPatches","source":"engine/audio/synth/ProceduralPatches.js","import":"/engine/audio/synth/ProceduralPatches.js","sourceHash":"99019ac19beb5cd6099c25f60010903dfd9e0205356c578aacd8fd23812a4498","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/ProceduralPatches.js#0012:ambient_combustion","exportIndex":12,"name":"ambient_combustion","kind":"function","signature":"ambient_combustion(ctx, dest, p)","summary":"Fire/lava crackling ambient — random noise bursts + low rumble"}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/ProceduralPatches.md","moduleTitle":"audio/synth/ProceduralPatches","source":"engine/audio/synth/ProceduralPatches.js","import":"/engine/audio/synth/ProceduralPatches.js","sourceHash":"99019ac19beb5cd6099c25f60010903dfd9e0205356c578aacd8fd23812a4498","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/ProceduralPatches.js#0013:ambient_fluid","exportIndex":13,"name":"ambient_fluid","kind":"function","signature":"ambient_fluid(ctx, dest, p)","summary":"Viscous/fluid flow ambient — subtle high-freq trickle. Shared by water + viscous liquids through AMBIENT_PATCHES aliases."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/ProceduralPatches.md","moduleTitle":"audio/synth/ProceduralPatches","source":"engine/audio/synth/ProceduralPatches.js","import":"/engine/audio/synth/ProceduralPatches.js","sourceHash":"99019ac19beb5cd6099c25f60010903dfd9e0205356c578aacd8fd23812a4498","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/ProceduralPatches.js#0014:ambient_electric","exportIndex":14,"name":"ambient_electric","kind":"function","signature":"ambient_electric(ctx, dest, p)","summary":"Plasma/electric buzz ambient — FM buzz + noise crackle"}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/ProceduralPatches.md","moduleTitle":"audio/synth/ProceduralPatches","source":"engine/audio/synth/ProceduralPatches.js","import":"/engine/audio/synth/ProceduralPatches.js","sourceHash":"99019ac19beb5cd6099c25f60010903dfd9e0205356c578aacd8fd23812a4498","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/ProceduralPatches.js#0015:ambient_wind","exportIndex":15,"name":"ambient_wind","kind":"function","signature":"ambient_wind(ctx, dest, p)","summary":"Smoke/steam/wind ambient — airy bandpass sweep"}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/ProceduralPatches.md","moduleTitle":"audio/synth/ProceduralPatches","source":"engine/audio/synth/ProceduralPatches.js","import":"/engine/audio/synth/ProceduralPatches.js","sourceHash":"99019ac19beb5cd6099c25f60010903dfd9e0205356c578aacd8fd23812a4498","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/ProceduralPatches.js#0016:getImpactPatch","exportIndex":16,"name":"getImpactPatch","kind":"function","signature":"getImpactPatch(key)","summary":"Get the impact patch function for a substance key. If runtime overrides exist for this key, returns a wrapper that merges them."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/ProceduralPatches.md","moduleTitle":"audio/synth/ProceduralPatches","source":"engine/audio/synth/ProceduralPatches.js","import":"/engine/audio/synth/ProceduralPatches.js","sourceHash":"99019ac19beb5cd6099c25f60010903dfd9e0205356c578aacd8fd23812a4498","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/ProceduralPatches.js#0017:getAmbientPatch","exportIndex":17,"name":"getAmbientPatch","kind":"function","signature":"getAmbientPatch(key)","summary":"Get the ambient patch function for a substance key. If runtime overrides exist for this key, returns a wrapper that merges them."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/ProceduralPatches.md","moduleTitle":"audio/synth/ProceduralPatches","source":"engine/audio/synth/ProceduralPatches.js","import":"/engine/audio/synth/ProceduralPatches.js","sourceHash":"99019ac19beb5cd6099c25f60010903dfd9e0205356c578aacd8fd23812a4498","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/ProceduralPatches.js#0018:setPatchOverride","exportIndex":18,"name":"setPatchOverride","kind":"function","signature":"setPatchOverride(key, param, value)","summary":"Set a param override for a material patch. These overrides are merged into patch params at call time."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/ProceduralPatches.md","moduleTitle":"audio/synth/ProceduralPatches","source":"engine/audio/synth/ProceduralPatches.js","import":"/engine/audio/synth/ProceduralPatches.js","sourceHash":"99019ac19beb5cd6099c25f60010903dfd9e0205356c578aacd8fd23812a4498","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/ProceduralPatches.js#0019:setPatchOverrides","exportIndex":19,"name":"setPatchOverrides","kind":"function","signature":"setPatchOverrides(key, overrides)","summary":"Set all overrides for a material at once."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/ProceduralPatches.md","moduleTitle":"audio/synth/ProceduralPatches","source":"engine/audio/synth/ProceduralPatches.js","import":"/engine/audio/synth/ProceduralPatches.js","sourceHash":"99019ac19beb5cd6099c25f60010903dfd9e0205356c578aacd8fd23812a4498","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/ProceduralPatches.js#0020:getPatchOverride","exportIndex":20,"name":"getPatchOverride","kind":"function","signature":"getPatchOverride(key)","summary":"Get current overrides for a material."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/ProceduralPatches.md","moduleTitle":"audio/synth/ProceduralPatches","source":"engine/audio/synth/ProceduralPatches.js","import":"/engine/audio/synth/ProceduralPatches.js","sourceHash":"99019ac19beb5cd6099c25f60010903dfd9e0205356c578aacd8fd23812a4498","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/ProceduralPatches.js#0021:clearPatchOverrides","exportIndex":21,"name":"clearPatchOverrides","kind":"function","signature":"clearPatchOverrides()","summary":"Clear all runtime overrides (reset to defaults)."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/ProceduralPatches.md","moduleTitle":"audio/synth/ProceduralPatches","source":"engine/audio/synth/ProceduralPatches.js","import":"/engine/audio/synth/ProceduralPatches.js","sourceHash":"99019ac19beb5cd6099c25f60010903dfd9e0205356c578aacd8fd23812a4498","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/ProceduralPatches.js#0022:getAllPatchKeys","exportIndex":22,"name":"getAllPatchKeys","kind":"function","signature":"getAllPatchKeys()","summary":"Get all unique canonical material keys (de-duplicated patch function names). Returns objects with { key, type, patchFn } for both impact and ambient."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/ProceduralPatches.md","moduleTitle":"audio/synth/ProceduralPatches","source":"engine/audio/synth/ProceduralPatches.js","import":"/engine/audio/synth/ProceduralPatches.js","sourceHash":"99019ac19beb5cd6099c25f60010903dfd9e0205356c578aacd8fd23812a4498","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/ProceduralPatches.js#0023:getAllMaterialAliases","exportIndex":23,"name":"getAllMaterialAliases","kind":"function","signature":"getAllMaterialAliases()","summary":"Get a flat list of all material alias keys (including duplicates)."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/ProceduralPatches.md","moduleTitle":"audio/synth/ProceduralPatches","source":"engine/audio/synth/ProceduralPatches.js","import":"/engine/audio/synth/ProceduralPatches.js","sourceHash":"99019ac19beb5cd6099c25f60010903dfd9e0205356c578aacd8fd23812a4498","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/ProceduralPatches.js#0024:IMPACT_PATCHES","exportIndex":24,"name":"IMPACT_PATCHES","kind":"constant","signature":"IMPACT_PATCHES","summary":"Map of proceduralPatch strings → impact patch functions"}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/ProceduralPatches.md","moduleTitle":"audio/synth/ProceduralPatches","source":"engine/audio/synth/ProceduralPatches.js","import":"/engine/audio/synth/ProceduralPatches.js","sourceHash":"99019ac19beb5cd6099c25f60010903dfd9e0205356c578aacd8fd23812a4498","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/ProceduralPatches.js#0025:AMBIENT_PATCHES","exportIndex":25,"name":"AMBIENT_PATCHES","kind":"constant","signature":"AMBIENT_PATCHES","summary":"Map of proceduralPatch strings → ambient patch functions"}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SfxGenerator.md","moduleTitle":"audio/synth/SfxGenerator","source":"engine/audio/synth/SfxGenerator.js","import":"/engine/audio/synth/SfxGenerator.js","sourceHash":"3aa06ed5eec2acd85533c12646fe0d15b79b53d91636c4700be6541084c4adae","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/synth/SfxGenerator.js","title":"audio/synth/SfxGenerator","summary":"SfxGenerator.js — Parametric Sound Effect Generator sfxr-inspired procedural SFX system. Every sound is defined by a compact parameter object — no samples needed. Renders to AudioBuffer or plays directly via Web Audio. Parameters cover: waveform, envelope, frequency sweep, vibrato, arpeggiation, duty cycle, retrigger, flanger, LP/HP filter, gain. Preset categories with randomize/mutate for instant sound creation: Pickup, Laser, Explosion, Powerup, Hit, Jump, Blip, Click, Error, Coin Usage: import { createSfxParams, randomizePreset, mutateSfx, renderSfx, playSfx } from './SfxGenerator.js'; const params = randomizePreset('laser'); const buffer = renderSfx(audioCtx, params); playSfx(audioCtx, buffer);","exportCount":10}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SfxGenerator.md","moduleTitle":"audio/synth/SfxGenerator","source":"engine/audio/synth/SfxGenerator.js","import":"/engine/audio/synth/SfxGenerator.js","sourceHash":"3aa06ed5eec2acd85533c12646fe0d15b79b53d91636c4700be6541084c4adae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SfxGenerator.js#0000:createSfxParams","exportIndex":0,"name":"createSfxParams","kind":"function","signature":"createSfxParams()","summary":"Create a default SFX parameter set. All values normalized to sensible ranges."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SfxGenerator.md","moduleTitle":"audio/synth/SfxGenerator","source":"engine/audio/synth/SfxGenerator.js","import":"/engine/audio/synth/SfxGenerator.js","sourceHash":"3aa06ed5eec2acd85533c12646fe0d15b79b53d91636c4700be6541084c4adae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SfxGenerator.js#0001:randomizePreset","exportIndex":1,"name":"randomizePreset","kind":"function","signature":"randomizePreset(preset)","summary":"Generate a randomized SFX from a preset category."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SfxGenerator.md","moduleTitle":"audio/synth/SfxGenerator","source":"engine/audio/synth/SfxGenerator.js","import":"/engine/audio/synth/SfxGenerator.js","sourceHash":"3aa06ed5eec2acd85533c12646fe0d15b79b53d91636c4700be6541084c4adae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SfxGenerator.js#0002:randomizeFull","exportIndex":2,"name":"randomizeFull","kind":"function","signature":"randomizeFull()","summary":"Fully random SFX (no preset bias)."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SfxGenerator.md","moduleTitle":"audio/synth/SfxGenerator","source":"engine/audio/synth/SfxGenerator.js","import":"/engine/audio/synth/SfxGenerator.js","sourceHash":"3aa06ed5eec2acd85533c12646fe0d15b79b53d91636c4700be6541084c4adae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SfxGenerator.js#0003:mutateSfx","exportIndex":3,"name":"mutateSfx","kind":"function","signature":"mutateSfx(params, amount = 0.05)","summary":"Mutate an existing SFX params slightly (small random nudge to each param)."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SfxGenerator.md","moduleTitle":"audio/synth/SfxGenerator","source":"engine/audio/synth/SfxGenerator.js","import":"/engine/audio/synth/SfxGenerator.js","sourceHash":"3aa06ed5eec2acd85533c12646fe0d15b79b53d91636c4700be6541084c4adae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SfxGenerator.js#0004:getPresetNames","exportIndex":4,"name":"getPresetNames","kind":"function","signature":"getPresetNames()","summary":"Get list of available preset names."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SfxGenerator.md","moduleTitle":"audio/synth/SfxGenerator","source":"engine/audio/synth/SfxGenerator.js","import":"/engine/audio/synth/SfxGenerator.js","sourceHash":"3aa06ed5eec2acd85533c12646fe0d15b79b53d91636c4700be6541084c4adae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SfxGenerator.js#0005:renderSfx","exportIndex":5,"name":"renderSfx","kind":"function","signature":"renderSfx(ctx, params)","summary":"Render an SFX to an AudioBuffer. This is a pure software synthesizer — runs offline, produces a buffer."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SfxGenerator.md","moduleTitle":"audio/synth/SfxGenerator","source":"engine/audio/synth/SfxGenerator.js","import":"/engine/audio/synth/SfxGenerator.js","sourceHash":"3aa06ed5eec2acd85533c12646fe0d15b79b53d91636c4700be6541084c4adae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SfxGenerator.js#0006:playSfx","exportIndex":6,"name":"playSfx","kind":"function","signature":"playSfx(ctx, buffer, options = {})","summary":"Play a rendered SFX buffer."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SfxGenerator.md","moduleTitle":"audio/synth/SfxGenerator","source":"engine/audio/synth/SfxGenerator.js","import":"/engine/audio/synth/SfxGenerator.js","sourceHash":"3aa06ed5eec2acd85533c12646fe0d15b79b53d91636c4700be6541084c4adae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SfxGenerator.js#0007:renderAndPlay","exportIndex":7,"name":"renderAndPlay","kind":"function","signature":"renderAndPlay(ctx, params, options = {})","summary":"Render and immediately play an SFX."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SfxGenerator.md","moduleTitle":"audio/synth/SfxGenerator","source":"engine/audio/synth/SfxGenerator.js","import":"/engine/audio/synth/SfxGenerator.js","sourceHash":"3aa06ed5eec2acd85533c12646fe0d15b79b53d91636c4700be6541084c4adae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SfxGenerator.js#0008:encodeSfxParams","exportIndex":8,"name":"encodeSfxParams","kind":"function","signature":"encodeSfxParams(params)","summary":"Encode SFX params to a compact JSON string."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SfxGenerator.md","moduleTitle":"audio/synth/SfxGenerator","source":"engine/audio/synth/SfxGenerator.js","import":"/engine/audio/synth/SfxGenerator.js","sourceHash":"3aa06ed5eec2acd85533c12646fe0d15b79b53d91636c4700be6541084c4adae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SfxGenerator.js#0009:decodeSfxParams","exportIndex":9,"name":"decodeSfxParams","kind":"function","signature":"decodeSfxParams(str)","summary":"Decode SFX params from a JSON string."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SharedParamBuffer.md","moduleTitle":"audio/synth/SharedParamBuffer","source":"engine/audio/synth/SharedParamBuffer.js","import":"/engine/audio/synth/SharedParamBuffer.js","sourceHash":"9e32094f0ecc6dc49ab5c06a27b4709467a611d042e709920dcc24f7e5830273","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/synth/SharedParamBuffer.js","title":"audio/synth/SharedParamBuffer","summary":"SharedParamBuffer.js - Game → AudioWorklet Parameter Streaming Allocates a SharedArrayBuffer for zero-copy, zero-latency parameter updates from the main game thread to the AudioWorklet synthesis thread. Layout: Float32Array where each slot maps to an exposed synth parameter. The main thread writes emitter aggregate stats each frame; the worklet reads them.","exportCount":9}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SharedParamBuffer.md","moduleTitle":"audio/synth/SharedParamBuffer","source":"engine/audio/synth/SharedParamBuffer.js","import":"/engine/audio/synth/SharedParamBuffer.js","sourceHash":"9e32094f0ecc6dc49ab5c06a27b4709467a611d042e709920dcc24f7e5830273","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SharedParamBuffer.js#0000:createSharedParamBuffer","exportIndex":0,"name":"createSharedParamBuffer","kind":"function","signature":"createSharedParamBuffer()","summary":"Create a shared parameter buffer."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SharedParamBuffer.md","moduleTitle":"audio/synth/SharedParamBuffer","source":"engine/audio/synth/SharedParamBuffer.js","import":"/engine/audio/synth/SharedParamBuffer.js","sourceHash":"9e32094f0ecc6dc49ab5c06a27b4709467a611d042e709920dcc24f7e5830273","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SharedParamBuffer.js#0001:writeEmitterStats","exportIndex":1,"name":"writeEmitterStats","kind":"function","signature":"writeEmitterStats(view, emitterIndex, stats)","summary":"Write emitter aggregate stats to the shared buffer."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SharedParamBuffer.md","moduleTitle":"audio/synth/SharedParamBuffer","source":"engine/audio/synth/SharedParamBuffer.js","import":"/engine/audio/synth/SharedParamBuffer.js","sourceHash":"9e32094f0ecc6dc49ab5c06a27b4709467a611d042e709920dcc24f7e5830273","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SharedParamBuffer.js#0002:clearAllEmitterStats","exportIndex":2,"name":"clearAllEmitterStats","kind":"function","signature":"clearAllEmitterStats(view)","summary":"Clear all emitter stats (e.g. when emitters stop)."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SharedParamBuffer.md","moduleTitle":"audio/synth/SharedParamBuffer","source":"engine/audio/synth/SharedParamBuffer.js","import":"/engine/audio/synth/SharedParamBuffer.js","sourceHash":"9e32094f0ecc6dc49ab5c06a27b4709467a611d042e709920dcc24f7e5830273","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SharedParamBuffer.js#0003:clearEmitterStats","exportIndex":3,"name":"clearEmitterStats","kind":"function","signature":"clearEmitterStats(view, emitterIndex)","summary":"Clear stats for a specific emitter."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SharedParamBuffer.md","moduleTitle":"audio/synth/SharedParamBuffer","source":"engine/audio/synth/SharedParamBuffer.js","import":"/engine/audio/synth/SharedParamBuffer.js","sourceHash":"9e32094f0ecc6dc49ab5c06a27b4709467a611d042e709920dcc24f7e5830273","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SharedParamBuffer.js#0004:readEmitterParam","exportIndex":4,"name":"readEmitterParam","kind":"function","signature":"readEmitterParam(view, emitterIndex, paramIndex)","summary":"Read a single param value from the shared buffer."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SharedParamBuffer.md","moduleTitle":"audio/synth/SharedParamBuffer","source":"engine/audio/synth/SharedParamBuffer.js","import":"/engine/audio/synth/SharedParamBuffer.js","sourceHash":"9e32094f0ecc6dc49ab5c06a27b4709467a611d042e709920dcc24f7e5830273","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SharedParamBuffer.js#0005:PARAM_LAYOUT","exportIndex":5,"name":"PARAM_LAYOUT","kind":"constant","signature":"PARAM_LAYOUT","summary":"Standard parameter indices for emitter → synth streaming. Each active emitter gets one set of these slots."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SharedParamBuffer.md","moduleTitle":"audio/synth/SharedParamBuffer","source":"engine/audio/synth/SharedParamBuffer.js","import":"/engine/audio/synth/SharedParamBuffer.js","sourceHash":"9e32094f0ecc6dc49ab5c06a27b4709467a611d042e709920dcc24f7e5830273","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SharedParamBuffer.js#0006:PARAMS_PER_EMITTER","exportIndex":6,"name":"PARAMS_PER_EMITTER","kind":"constant","signature":"PARAMS_PER_EMITTER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SharedParamBuffer.md","moduleTitle":"audio/synth/SharedParamBuffer","source":"engine/audio/synth/SharedParamBuffer.js","import":"/engine/audio/synth/SharedParamBuffer.js","sourceHash":"9e32094f0ecc6dc49ab5c06a27b4709467a611d042e709920dcc24f7e5830273","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SharedParamBuffer.js#0007:MAX_EMITTERS","exportIndex":7,"name":"MAX_EMITTERS","kind":"constant","signature":"MAX_EMITTERS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SharedParamBuffer.md","moduleTitle":"audio/synth/SharedParamBuffer","source":"engine/audio/synth/SharedParamBuffer.js","import":"/engine/audio/synth/SharedParamBuffer.js","sourceHash":"9e32094f0ecc6dc49ab5c06a27b4709467a611d042e709920dcc24f7e5830273","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SharedParamBuffer.js#0008:TOTAL_FLOAT_COUNT","exportIndex":8,"name":"TOTAL_FLOAT_COUNT","kind":"constant","signature":"TOTAL_FLOAT_COUNT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SoundBlender.md","moduleTitle":"audio/synth/SoundBlender","source":"engine/audio/synth/SoundBlender.js","import":"/engine/audio/synth/SoundBlender.js","sourceHash":"05fc5a76d35f0d966a4ca68f1c4e953f7d5b884dfbeaddddbcdb0d6da527fe9b","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/synth/SoundBlender.js","title":"audio/synth/SoundBlender","summary":"SoundBlender.js — Multi-Layer Sound Effect Mixer Blends 2-4 sound sources (AudioBuffers) with per-layer controls: - Volume, pitch shift, delay offset - Crossfade curves (linear, equal-power, cosine) - Random variation ranges per parameter - Trigger modes: simultaneous, sequential, random-pick, round-robin Produces infinite unique variations from a small set of source sounds. Usage: import { createBlendPreset, renderBlend, playBlend } from './SoundBlender.js'; const preset = createBlendPreset([buffer1, buffer2], { layers: [ { volume: 0.8, pitch: 1.0, delay: 0, volumeRandom: 0.1, pitchRandom: 0.05 }, { volume: 0.5, pitch: 1.2, delay: 0.05, volumeRandom: 0.2, pitchRandom: 0.1 } ], mode: 'simultaneous' }); playBlend(ctx, preset);","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SoundBlender.md","moduleTitle":"audio/synth/SoundBlender","source":"engine/audio/synth/SoundBlender.js","import":"/engine/audio/synth/SoundBlender.js","sourceHash":"05fc5a76d35f0d966a4ca68f1c4e953f7d5b884dfbeaddddbcdb0d6da527fe9b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SoundBlender.js#0000:createBlendPreset","exportIndex":0,"name":"createBlendPreset","kind":"function","signature":"createBlendPreset(buffers = [], config = {})","summary":"Create a blend preset from source buffers and layer config."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SoundBlender.md","moduleTitle":"audio/synth/SoundBlender","source":"engine/audio/synth/SoundBlender.js","import":"/engine/audio/synth/SoundBlender.js","sourceHash":"05fc5a76d35f0d966a4ca68f1c4e953f7d5b884dfbeaddddbcdb0d6da527fe9b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SoundBlender.js#0001:addLayer","exportIndex":1,"name":"addLayer","kind":"function","signature":"addLayer(preset, buffer, layerConfig = {})","summary":"Add a layer to an existing preset."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SoundBlender.md","moduleTitle":"audio/synth/SoundBlender","source":"engine/audio/synth/SoundBlender.js","import":"/engine/audio/synth/SoundBlender.js","sourceHash":"05fc5a76d35f0d966a4ca68f1c4e953f7d5b884dfbeaddddbcdb0d6da527fe9b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SoundBlender.js#0002:removeLayer","exportIndex":2,"name":"removeLayer","kind":"function","signature":"removeLayer(preset, index)","summary":"Remove a layer by index."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SoundBlender.md","moduleTitle":"audio/synth/SoundBlender","source":"engine/audio/synth/SoundBlender.js","import":"/engine/audio/synth/SoundBlender.js","sourceHash":"05fc5a76d35f0d966a4ca68f1c4e953f7d5b884dfbeaddddbcdb0d6da527fe9b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SoundBlender.js#0003:playBlend","exportIndex":3,"name":"playBlend","kind":"function","signature":"playBlend(ctx, preset, options = {})","summary":"Play a blend preset. Returns an object with stop() method."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SoundBlender.md","moduleTitle":"audio/synth/SoundBlender","source":"engine/audio/synth/SoundBlender.js","import":"/engine/audio/synth/SoundBlender.js","sourceHash":"05fc5a76d35f0d966a4ca68f1c4e953f7d5b884dfbeaddddbcdb0d6da527fe9b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SoundBlender.js#0004:renderBlend","exportIndex":4,"name":"renderBlend","kind":"function","signature":"async renderBlend(ctx, preset)","summary":"Render a blend preset to a single AudioBuffer (offline)."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SoundBlender.md","moduleTitle":"audio/synth/SoundBlender","source":"engine/audio/synth/SoundBlender.js","import":"/engine/audio/synth/SoundBlender.js","sourceHash":"05fc5a76d35f0d966a4ca68f1c4e953f7d5b884dfbeaddddbcdb0d6da527fe9b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SoundBlender.js#0005:generateVariations","exportIndex":5,"name":"generateVariations","kind":"function","signature":"async generateVariations(ctx, preset, count = 10)","summary":"Generate N unique variations of a blend preset. Each variation resolves random ranges differently."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SoundSchema.md","moduleTitle":"audio/synth/SoundSchema","source":"engine/audio/synth/SoundSchema.js","import":"/engine/audio/synth/SoundSchema.js","sourceHash":"9c5e67309f1f069f25bf97421a91d0eda50390734700a100cb92f5c1b25d482c","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/synth/SoundSchema.js","title":"audio/synth/SoundSchema","summary":"SoundSchema.js — JSON Schema Definitions for All Sound Types Each schema defines every parameter with: type, min, max, step, default, label, description, unit, group Used by: - AudioNodeInspector: auto-generate UI controls from schema - VariationGenerator: derive ranges/limits automatically - Validation: validateParams() catches bad data on import/paste - Sound Palette: self-describing serialized entries Schema field types: 'float'   → slider (min/max/step) 'int'     → integer slider or number input 'enum'    → dropdown (options array) 'bool'    → toggle 'string'  → text input 'array'   → special handling per context","exportCount":20}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SoundSchema.md","moduleTitle":"audio/synth/SoundSchema","source":"engine/audio/synth/SoundSchema.js","import":"/engine/audio/synth/SoundSchema.js","sourceHash":"9c5e67309f1f069f25bf97421a91d0eda50390734700a100cb92f5c1b25d482c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SoundSchema.js#0000:getSchema","exportIndex":0,"name":"getSchema","kind":"function","signature":"getSchema(type)","summary":"Get a schema by type name."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SoundSchema.md","moduleTitle":"audio/synth/SoundSchema","source":"engine/audio/synth/SoundSchema.js","import":"/engine/audio/synth/SoundSchema.js","sourceHash":"9c5e67309f1f069f25bf97421a91d0eda50390734700a100cb92f5c1b25d482c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SoundSchema.js#0001:getSchemaNames","exportIndex":1,"name":"getSchemaNames","kind":"function","signature":"getSchemaNames()","summary":"Get all schema names."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SoundSchema.md","moduleTitle":"audio/synth/SoundSchema","source":"engine/audio/synth/SoundSchema.js","import":"/engine/audio/synth/SoundSchema.js","sourceHash":"9c5e67309f1f069f25bf97421a91d0eda50390734700a100cb92f5c1b25d482c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SoundSchema.js#0002:validateParams","exportIndex":2,"name":"validateParams","kind":"function","signature":"validateParams(params, schema)","summary":"Validate a params object against a schema. Returns { valid, errors, sanitized }. - sanitized: a clean copy with missing keys filled from defaults and out-of-range values clamped. - errors: array of { key, message } for any issues found."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SoundSchema.md","moduleTitle":"audio/synth/SoundSchema","source":"engine/audio/synth/SoundSchema.js","import":"/engine/audio/synth/SoundSchema.js","sourceHash":"9c5e67309f1f069f25bf97421a91d0eda50390734700a100cb92f5c1b25d482c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SoundSchema.js#0003:defaultsFromSchema","exportIndex":3,"name":"defaultsFromSchema","kind":"function","signature":"defaultsFromSchema(schema)","summary":"Create default params from a schema."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SoundSchema.md","moduleTitle":"audio/synth/SoundSchema","source":"engine/audio/synth/SoundSchema.js","import":"/engine/audio/synth/SoundSchema.js","sourceHash":"9c5e67309f1f069f25bf97421a91d0eda50390734700a100cb92f5c1b25d482c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SoundSchema.js#0004:variationRangesFromSchema","exportIndex":4,"name":"variationRangesFromSchema","kind":"function","signature":"variationRangesFromSchema(schema, proportion = 0.1)","summary":"Extract variation ranges from a schema (for VariationGenerator). Returns { ranges, limits } where: ranges[key] = (max - min) * proportion limits[key] = [min, max]"}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SoundSchema.md","moduleTitle":"audio/synth/SoundSchema","source":"engine/audio/synth/SoundSchema.js","import":"/engine/audio/synth/SoundSchema.js","sourceHash":"9c5e67309f1f069f25bf97421a91d0eda50390734700a100cb92f5c1b25d482c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SoundSchema.js#0005:getParamGroups","exportIndex":5,"name":"getParamGroups","kind":"function","signature":"getParamGroups(schema)","summary":"Get parameter groups from a schema (for UI grouping)."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SoundSchema.md","moduleTitle":"audio/synth/SoundSchema","source":"engine/audio/synth/SoundSchema.js","import":"/engine/audio/synth/SoundSchema.js","sourceHash":"9c5e67309f1f069f25bf97421a91d0eda50390734700a100cb92f5c1b25d482c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SoundSchema.js#0006:SFX_SCHEMA","exportIndex":6,"name":"SFX_SCHEMA","kind":"constant","signature":"SFX_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SoundSchema.md","moduleTitle":"audio/synth/SoundSchema","source":"engine/audio/synth/SoundSchema.js","import":"/engine/audio/synth/SoundSchema.js","sourceHash":"9c5e67309f1f069f25bf97421a91d0eda50390734700a100cb92f5c1b25d482c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SoundSchema.js#0007:FM_SCHEMA","exportIndex":7,"name":"FM_SCHEMA","kind":"constant","signature":"FM_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SoundSchema.md","moduleTitle":"audio/synth/SoundSchema","source":"engine/audio/synth/SoundSchema.js","import":"/engine/audio/synth/SoundSchema.js","sourceHash":"9c5e67309f1f069f25bf97421a91d0eda50390734700a100cb92f5c1b25d482c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SoundSchema.js#0008:KARPLUS_SCHEMA","exportIndex":8,"name":"KARPLUS_SCHEMA","kind":"constant","signature":"KARPLUS_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SoundSchema.md","moduleTitle":"audio/synth/SoundSchema","source":"engine/audio/synth/SoundSchema.js","import":"/engine/audio/synth/SoundSchema.js","sourceHash":"9c5e67309f1f069f25bf97421a91d0eda50390734700a100cb92f5c1b25d482c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SoundSchema.js#0009:GRANULAR_SCHEMA","exportIndex":9,"name":"GRANULAR_SCHEMA","kind":"constant","signature":"GRANULAR_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SoundSchema.md","moduleTitle":"audio/synth/SoundSchema","source":"engine/audio/synth/SoundSchema.js","import":"/engine/audio/synth/SoundSchema.js","sourceHash":"9c5e67309f1f069f25bf97421a91d0eda50390734700a100cb92f5c1b25d482c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SoundSchema.js#0010:OSCILLATOR_SCHEMA","exportIndex":10,"name":"OSCILLATOR_SCHEMA","kind":"constant","signature":"OSCILLATOR_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SoundSchema.md","moduleTitle":"audio/synth/SoundSchema","source":"engine/audio/synth/SoundSchema.js","import":"/engine/audio/synth/SoundSchema.js","sourceHash":"9c5e67309f1f069f25bf97421a91d0eda50390734700a100cb92f5c1b25d482c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SoundSchema.js#0011:NOISE_SCHEMA","exportIndex":11,"name":"NOISE_SCHEMA","kind":"constant","signature":"NOISE_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SoundSchema.md","moduleTitle":"audio/synth/SoundSchema","source":"engine/audio/synth/SoundSchema.js","import":"/engine/audio/synth/SoundSchema.js","sourceHash":"9c5e67309f1f069f25bf97421a91d0eda50390734700a100cb92f5c1b25d482c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SoundSchema.js#0012:IMPULSE_SCHEMA","exportIndex":12,"name":"IMPULSE_SCHEMA","kind":"constant","signature":"IMPULSE_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SoundSchema.md","moduleTitle":"audio/synth/SoundSchema","source":"engine/audio/synth/SoundSchema.js","import":"/engine/audio/synth/SoundSchema.js","sourceHash":"9c5e67309f1f069f25bf97421a91d0eda50390734700a100cb92f5c1b25d482c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SoundSchema.js#0013:MODAL_SCHEMA","exportIndex":13,"name":"MODAL_SCHEMA","kind":"constant","signature":"MODAL_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SoundSchema.md","moduleTitle":"audio/synth/SoundSchema","source":"engine/audio/synth/SoundSchema.js","import":"/engine/audio/synth/SoundSchema.js","sourceHash":"9c5e67309f1f069f25bf97421a91d0eda50390734700a100cb92f5c1b25d482c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SoundSchema.js#0014:WAVEGUIDE_SCHEMA","exportIndex":14,"name":"WAVEGUIDE_SCHEMA","kind":"constant","signature":"WAVEGUIDE_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SoundSchema.md","moduleTitle":"audio/synth/SoundSchema","source":"engine/audio/synth/SoundSchema.js","import":"/engine/audio/synth/SoundSchema.js","sourceHash":"9c5e67309f1f069f25bf97421a91d0eda50390734700a100cb92f5c1b25d482c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SoundSchema.js#0015:SAMPLE_SCHEMA","exportIndex":15,"name":"SAMPLE_SCHEMA","kind":"constant","signature":"SAMPLE_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SoundSchema.md","moduleTitle":"audio/synth/SoundSchema","source":"engine/audio/synth/SoundSchema.js","import":"/engine/audio/synth/SoundSchema.js","sourceHash":"9c5e67309f1f069f25bf97421a91d0eda50390734700a100cb92f5c1b25d482c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SoundSchema.js#0016:FORMANT_SCHEMA","exportIndex":16,"name":"FORMANT_SCHEMA","kind":"constant","signature":"FORMANT_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SoundSchema.md","moduleTitle":"audio/synth/SoundSchema","source":"engine/audio/synth/SoundSchema.js","import":"/engine/audio/synth/SoundSchema.js","sourceHash":"9c5e67309f1f069f25bf97421a91d0eda50390734700a100cb92f5c1b25d482c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SoundSchema.js#0017:BLEND_SCHEMA","exportIndex":17,"name":"BLEND_SCHEMA","kind":"constant","signature":"BLEND_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SoundSchema.md","moduleTitle":"audio/synth/SoundSchema","source":"engine/audio/synth/SoundSchema.js","import":"/engine/audio/synth/SoundSchema.js","sourceHash":"9c5e67309f1f069f25bf97421a91d0eda50390734700a100cb92f5c1b25d482c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SoundSchema.js#0018:BLEND_LAYER_SCHEMA","exportIndex":18,"name":"BLEND_LAYER_SCHEMA","kind":"constant","signature":"BLEND_LAYER_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SoundSchema.md","moduleTitle":"audio/synth/SoundSchema","source":"engine/audio/synth/SoundSchema.js","import":"/engine/audio/synth/SoundSchema.js","sourceHash":"9c5e67309f1f069f25bf97421a91d0eda50390734700a100cb92f5c1b25d482c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SoundSchema.js#0019:SOUND_SCHEMAS","exportIndex":19,"name":"SOUND_SCHEMAS","kind":"constant","signature":"SOUND_SCHEMAS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SynthManager.md","moduleTitle":"audio/synth/SynthManager","source":"engine/audio/synth/SynthManager.js","import":"/engine/audio/synth/SynthManager.js","sourceHash":"10574ebe84a1e8ab5f6681470aa3acb8b276b0bd170460e8a698e864c0c0d872","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/synth/SynthManager.js","title":"audio/synth/SynthManager","summary":"SynthManager.js - Main-Thread Synthesis Orchestrator Manages AudioWorklet registration, patch instance lifecycle, parameter updates via MessagePort and SharedArrayBuffer.","exportCount":10}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SynthManager.md","moduleTitle":"audio/synth/SynthManager","source":"engine/audio/synth/SynthManager.js","import":"/engine/audio/synth/SynthManager.js","sourceHash":"10574ebe84a1e8ab5f6681470aa3acb8b276b0bd170460e8a698e864c0c0d872","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SynthManager.js#0000:createSynthManager","exportIndex":0,"name":"createSynthManager","kind":"function","signature":"createSynthManager(context, destination)","summary":"Create a synth manager."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SynthManager.md","moduleTitle":"audio/synth/SynthManager","source":"engine/audio/synth/SynthManager.js","import":"/engine/audio/synth/SynthManager.js","sourceHash":"10574ebe84a1e8ab5f6681470aa3acb8b276b0bd170460e8a698e864c0c0d872","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SynthManager.js#0001:initSynthManager","exportIndex":1,"name":"initSynthManager","kind":"function","signature":"async initSynthManager(manager, workletUrl)","summary":"Initialize the synth manager — register the AudioWorklet."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SynthManager.md","moduleTitle":"audio/synth/SynthManager","source":"engine/audio/synth/SynthManager.js","import":"/engine/audio/synth/SynthManager.js","sourceHash":"10574ebe84a1e8ab5f6681470aa3acb8b276b0bd170460e8a698e864c0c0d872","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SynthManager.js#0002:registerPatch","exportIndex":2,"name":"registerPatch","kind":"function","signature":"registerPatch(manager, patchJson)","summary":"Register a patch in the library (compile and cache)."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SynthManager.md","moduleTitle":"audio/synth/SynthManager","source":"engine/audio/synth/SynthManager.js","import":"/engine/audio/synth/SynthManager.js","sourceHash":"10574ebe84a1e8ab5f6681470aa3acb8b276b0bd170460e8a698e864c0c0d872","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SynthManager.js#0003:getPatch","exportIndex":3,"name":"getPatch","kind":"function","signature":"getPatch(manager, patchId)","summary":"Get a compiled patch plan."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SynthManager.md","moduleTitle":"audio/synth/SynthManager","source":"engine/audio/synth/SynthManager.js","import":"/engine/audio/synth/SynthManager.js","sourceHash":"10574ebe84a1e8ab5f6681470aa3acb8b276b0bd170460e8a698e864c0c0d872","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SynthManager.js#0004:createPatchInstance","exportIndex":4,"name":"createPatchInstance","kind":"function","signature":"createPatchInstance(manager, patchId, options = {})","summary":"Create and start a patch instance (a playing synth voice)."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SynthManager.md","moduleTitle":"audio/synth/SynthManager","source":"engine/audio/synth/SynthManager.js","import":"/engine/audio/synth/SynthManager.js","sourceHash":"10574ebe84a1e8ab5f6681470aa3acb8b276b0bd170460e8a698e864c0c0d872","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SynthManager.js#0005:setInstanceParam","exportIndex":5,"name":"setInstanceParam","kind":"function","signature":"setInstanceParam(manager, instanceId, paramName, value)","summary":"Set an exposed parameter on a running instance."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SynthManager.md","moduleTitle":"audio/synth/SynthManager","source":"engine/audio/synth/SynthManager.js","import":"/engine/audio/synth/SynthManager.js","sourceHash":"10574ebe84a1e8ab5f6681470aa3acb8b276b0bd170460e8a698e864c0c0d872","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SynthManager.js#0006:setInstanceVolume","exportIndex":6,"name":"setInstanceVolume","kind":"function","signature":"setInstanceVolume(manager, instanceId, volume)","summary":"Set volume on a running instance."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SynthManager.md","moduleTitle":"audio/synth/SynthManager","source":"engine/audio/synth/SynthManager.js","import":"/engine/audio/synth/SynthManager.js","sourceHash":"10574ebe84a1e8ab5f6681470aa3acb8b276b0bd170460e8a698e864c0c0d872","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SynthManager.js#0007:destroyPatchInstance","exportIndex":7,"name":"destroyPatchInstance","kind":"function","signature":"destroyPatchInstance(manager, instanceId, fadeOut = 0.05)","summary":"Stop and destroy a patch instance."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SynthManager.md","moduleTitle":"audio/synth/SynthManager","source":"engine/audio/synth/SynthManager.js","import":"/engine/audio/synth/SynthManager.js","sourceHash":"10574ebe84a1e8ab5f6681470aa3acb8b276b0bd170460e8a698e864c0c0d872","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SynthManager.js#0008:destroyAllInstances","exportIndex":8,"name":"destroyAllInstances","kind":"function","signature":"destroyAllInstances(manager)","summary":"Stop all instances."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/SynthManager.md","moduleTitle":"audio/synth/SynthManager","source":"engine/audio/synth/SynthManager.js","import":"/engine/audio/synth/SynthManager.js","sourceHash":"10574ebe84a1e8ab5f6681470aa3acb8b276b0bd170460e8a698e864c0c0d872","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/SynthManager.js#0009:destroySynthManager","exportIndex":9,"name":"destroySynthManager","kind":"function","signature":"destroySynthManager(manager)","summary":"Destroy the synth manager."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/VariationGenerator.md","moduleTitle":"audio/synth/VariationGenerator","source":"engine/audio/synth/VariationGenerator.js","import":"/engine/audio/synth/VariationGenerator.js","sourceHash":"f3de018051ff20daaadcb62b160bc1ef0bbe8620a942ec45f3e3354b6a74247a","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/synth/VariationGenerator.js","title":"audio/synth/VariationGenerator","summary":"VariationGenerator.js — Automatic Sound Variation System Takes any parametric sound definition and generates N unique variations by randomizing parameters within user-defined ranges. Works with: - SfxGenerator params - FM synthesis configs - Karplus-Strong configs - Any flat parameter object Also provides batch rendering to AudioBuffer arrays and a sound palette system for saving/loading favorites. Usage: import { createVariationConfig, generateVariations, renderVariationBatch } from './VariationGenerator.js'; const vc = createVariationConfig(baseParams, { startFrequency: 0.1, decayTime: 0.05 }); const variations = generateVariations(vc, 20); const buffers = await renderVariationBatch(ctx, variations, renderFn);","exportCount":22}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/VariationGenerator.md","moduleTitle":"audio/synth/VariationGenerator","source":"engine/audio/synth/VariationGenerator.js","import":"/engine/audio/synth/VariationGenerator.js","sourceHash":"f3de018051ff20daaadcb62b160bc1ef0bbe8620a942ec45f3e3354b6a74247a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/VariationGenerator.js#0000:createVariationConfig","exportIndex":0,"name":"createVariationConfig","kind":"function","signature":"createVariationConfig(baseParams, ranges = {}, options = {})","summary":"Create a variation configuration."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/VariationGenerator.md","moduleTitle":"audio/synth/VariationGenerator","source":"engine/audio/synth/VariationGenerator.js","import":"/engine/audio/synth/VariationGenerator.js","sourceHash":"f3de018051ff20daaadcb62b160bc1ef0bbe8620a942ec45f3e3354b6a74247a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/VariationGenerator.js#0001:createVariationConfigFromSchema","exportIndex":1,"name":"createVariationConfigFromSchema","kind":"function","signature":"createVariationConfigFromSchema(baseParams, schema, proportion = 0.1, options = {})","summary":"Create a variation config from a SoundSchema. Auto-derives ranges and limits from the schema definition."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/VariationGenerator.md","moduleTitle":"audio/synth/VariationGenerator","source":"engine/audio/synth/VariationGenerator.js","import":"/engine/audio/synth/VariationGenerator.js","sourceHash":"f3de018051ff20daaadcb62b160bc1ef0bbe8620a942ec45f3e3354b6a74247a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/VariationGenerator.js#0002:lockParam","exportIndex":2,"name":"lockParam","kind":"function","signature":"lockParam(vc, key)","summary":"Lock a parameter so it won't be varied."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/VariationGenerator.md","moduleTitle":"audio/synth/VariationGenerator","source":"engine/audio/synth/VariationGenerator.js","import":"/engine/audio/synth/VariationGenerator.js","sourceHash":"f3de018051ff20daaadcb62b160bc1ef0bbe8620a942ec45f3e3354b6a74247a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/VariationGenerator.js#0003:unlockParam","exportIndex":3,"name":"unlockParam","kind":"function","signature":"unlockParam(vc, key)","summary":"Unlock a parameter for variation."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/VariationGenerator.md","moduleTitle":"audio/synth/VariationGenerator","source":"engine/audio/synth/VariationGenerator.js","import":"/engine/audio/synth/VariationGenerator.js","sourceHash":"f3de018051ff20daaadcb62b160bc1ef0bbe8620a942ec45f3e3354b6a74247a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/VariationGenerator.js#0004:setRange","exportIndex":4,"name":"setRange","kind":"function","signature":"setRange(vc, key, range)","summary":"Set the random range for a specific parameter."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/VariationGenerator.md","moduleTitle":"audio/synth/VariationGenerator","source":"engine/audio/synth/VariationGenerator.js","import":"/engine/audio/synth/VariationGenerator.js","sourceHash":"f3de018051ff20daaadcb62b160bc1ef0bbe8620a942ec45f3e3354b6a74247a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/VariationGenerator.js#0005:setLimits","exportIndex":5,"name":"setLimits","kind":"function","signature":"setLimits(vc, key, min, max)","summary":"Set per-key min/max limits."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/VariationGenerator.md","moduleTitle":"audio/synth/VariationGenerator","source":"engine/audio/synth/VariationGenerator.js","import":"/engine/audio/synth/VariationGenerator.js","sourceHash":"f3de018051ff20daaadcb62b160bc1ef0bbe8620a942ec45f3e3354b6a74247a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/VariationGenerator.js#0006:generateVariations","exportIndex":6,"name":"generateVariations","kind":"function","signature":"generateVariations(vc, count = 10)","summary":"Generate N parameter variations from a variation config."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/VariationGenerator.md","moduleTitle":"audio/synth/VariationGenerator","source":"engine/audio/synth/VariationGenerator.js","import":"/engine/audio/synth/VariationGenerator.js","sourceHash":"f3de018051ff20daaadcb62b160bc1ef0bbe8620a942ec45f3e3354b6a74247a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/VariationGenerator.js#0007:generateOneVariation","exportIndex":7,"name":"generateOneVariation","kind":"function","signature":"generateOneVariation(vc)","summary":"Generate a single variation."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/VariationGenerator.md","moduleTitle":"audio/synth/VariationGenerator","source":"engine/audio/synth/VariationGenerator.js","import":"/engine/audio/synth/VariationGenerator.js","sourceHash":"f3de018051ff20daaadcb62b160bc1ef0bbe8620a942ec45f3e3354b6a74247a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/VariationGenerator.js#0008:renderVariationBatch","exportIndex":8,"name":"renderVariationBatch","kind":"function","signature":"renderVariationBatch(ctx, paramsList, renderFn)","summary":"Render an array of parameter variations to AudioBuffers."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/VariationGenerator.md","moduleTitle":"audio/synth/VariationGenerator","source":"engine/audio/synth/VariationGenerator.js","import":"/engine/audio/synth/VariationGenerator.js","sourceHash":"f3de018051ff20daaadcb62b160bc1ef0bbe8620a942ec45f3e3354b6a74247a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/VariationGenerator.js#0009:renderVariationBatchAsync","exportIndex":9,"name":"renderVariationBatchAsync","kind":"function","signature":"async renderVariationBatchAsync(ctx, paramsList, renderFn, onProgress = null)","summary":"Render variations async (yields between each to avoid blocking)."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/VariationGenerator.md","moduleTitle":"audio/synth/VariationGenerator","source":"engine/audio/synth/VariationGenerator.js","import":"/engine/audio/synth/VariationGenerator.js","sourceHash":"f3de018051ff20daaadcb62b160bc1ef0bbe8620a942ec45f3e3354b6a74247a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/VariationGenerator.js#0010:readSoundPaletteRecord","exportIndex":10,"name":"readSoundPaletteRecord","kind":"function","signature":"readSoundPaletteRecord(storage = globalThis.localStorage)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/VariationGenerator.md","moduleTitle":"audio/synth/VariationGenerator","source":"engine/audio/synth/VariationGenerator.js","import":"/engine/audio/synth/VariationGenerator.js","sourceHash":"f3de018051ff20daaadcb62b160bc1ef0bbe8620a942ec45f3e3354b6a74247a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/VariationGenerator.js#0011:writeSoundPaletteRecord","exportIndex":11,"name":"writeSoundPaletteRecord","kind":"function","signature":"writeSoundPaletteRecord(palette, storage = globalThis.localStorage)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/VariationGenerator.md","moduleTitle":"audio/synth/VariationGenerator","source":"engine/audio/synth/VariationGenerator.js","import":"/engine/audio/synth/VariationGenerator.js","sourceHash":"f3de018051ff20daaadcb62b160bc1ef0bbe8620a942ec45f3e3354b6a74247a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/VariationGenerator.js#0012:createSoundPalette","exportIndex":12,"name":"createSoundPalette","kind":"function","signature":"createSoundPalette()","summary":"Create a sound palette for organizing favorite sounds."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/VariationGenerator.md","moduleTitle":"audio/synth/VariationGenerator","source":"engine/audio/synth/VariationGenerator.js","import":"/engine/audio/synth/VariationGenerator.js","sourceHash":"f3de018051ff20daaadcb62b160bc1ef0bbe8620a942ec45f3e3354b6a74247a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/VariationGenerator.js#0013:addToPalette","exportIndex":13,"name":"addToPalette","kind":"function","signature":"addToPalette(palette, entry)","summary":"Add a sound to the palette."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/VariationGenerator.md","moduleTitle":"audio/synth/VariationGenerator","source":"engine/audio/synth/VariationGenerator.js","import":"/engine/audio/synth/VariationGenerator.js","sourceHash":"f3de018051ff20daaadcb62b160bc1ef0bbe8620a942ec45f3e3354b6a74247a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/VariationGenerator.js#0014:removeFromPalette","exportIndex":14,"name":"removeFromPalette","kind":"function","signature":"removeFromPalette(palette, id)","summary":"Remove a sound from the palette."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/VariationGenerator.md","moduleTitle":"audio/synth/VariationGenerator","source":"engine/audio/synth/VariationGenerator.js","import":"/engine/audio/synth/VariationGenerator.js","sourceHash":"f3de018051ff20daaadcb62b160bc1ef0bbe8620a942ec45f3e3354b6a74247a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/VariationGenerator.js#0015:searchPalette","exportIndex":15,"name":"searchPalette","kind":"function","signature":"searchPalette(palette, query = {})","summary":"Find sounds in the palette by category or tag."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/VariationGenerator.md","moduleTitle":"audio/synth/VariationGenerator","source":"engine/audio/synth/VariationGenerator.js","import":"/engine/audio/synth/VariationGenerator.js","sourceHash":"f3de018051ff20daaadcb62b160bc1ef0bbe8620a942ec45f3e3354b6a74247a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/VariationGenerator.js#0016:savePalette","exportIndex":16,"name":"savePalette","kind":"function","signature":"savePalette(palette, storage = globalThis.localStorage)","summary":"Save palette to localStorage."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/VariationGenerator.md","moduleTitle":"audio/synth/VariationGenerator","source":"engine/audio/synth/VariationGenerator.js","import":"/engine/audio/synth/VariationGenerator.js","sourceHash":"f3de018051ff20daaadcb62b160bc1ef0bbe8620a942ec45f3e3354b6a74247a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/VariationGenerator.js#0017:loadPalette","exportIndex":17,"name":"loadPalette","kind":"function","signature":"loadPalette(storage = globalThis.localStorage)","summary":"Load palette from localStorage."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/VariationGenerator.md","moduleTitle":"audio/synth/VariationGenerator","source":"engine/audio/synth/VariationGenerator.js","import":"/engine/audio/synth/VariationGenerator.js","sourceHash":"f3de018051ff20daaadcb62b160bc1ef0bbe8620a942ec45f3e3354b6a74247a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/VariationGenerator.js#0018:exportPalette","exportIndex":18,"name":"exportPalette","kind":"function","signature":"exportPalette(palette)","summary":"Export palette as JSON string (for sharing/backup)."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/VariationGenerator.md","moduleTitle":"audio/synth/VariationGenerator","source":"engine/audio/synth/VariationGenerator.js","import":"/engine/audio/synth/VariationGenerator.js","sourceHash":"f3de018051ff20daaadcb62b160bc1ef0bbe8620a942ec45f3e3354b6a74247a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/VariationGenerator.js#0019:importPalette","exportIndex":19,"name":"importPalette","kind":"function","signature":"importPalette(json)","summary":"Import palette from JSON string."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/VariationGenerator.md","moduleTitle":"audio/synth/VariationGenerator","source":"engine/audio/synth/VariationGenerator.js","import":"/engine/audio/synth/VariationGenerator.js","sourceHash":"f3de018051ff20daaadcb62b160bc1ef0bbe8620a942ec45f3e3354b6a74247a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/VariationGenerator.js#0020:SOUND_PALETTE_SCHEMA","exportIndex":20,"name":"SOUND_PALETTE_SCHEMA","kind":"constant","signature":"SOUND_PALETTE_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/VariationGenerator.md","moduleTitle":"audio/synth/VariationGenerator","source":"engine/audio/synth/VariationGenerator.js","import":"/engine/audio/synth/VariationGenerator.js","sourceHash":"f3de018051ff20daaadcb62b160bc1ef0bbe8620a942ec45f3e3354b6a74247a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/VariationGenerator.js#0021:SOUND_PALETTE_SCHEMA_VERSION","exportIndex":21,"name":"SOUND_PALETTE_SCHEMA_VERSION","kind":"constant","signature":"SOUND_PALETTE_SCHEMA_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/WebAudioNodeFactory.md","moduleTitle":"audio/synth/WebAudioNodeFactory","source":"engine/audio/synth/WebAudioNodeFactory.js","import":"/engine/audio/synth/WebAudioNodeFactory.js","sourceHash":"f4cbaa8d9c30bd5838947b6b56b5da0565a0de1599658b0958d54cdb38b86dcc","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/synth/WebAudioNodeFactory.js","title":"audio/synth/WebAudioNodeFactory","summary":"WebAudioNodeFactory.js — Unified Web Audio Node Factory Central factory for creating main-thread Web Audio nodes from patch graph node definitions. Delegates to modular node files where possible. Used by AudioEditorPanel.js for preview playback. Usage: import { createWebAudioNode, buildVoice } from './WebAudioNodeFactory.js'; const node = createWebAudioNode(ctx, { type: 'Waveguide', params: {...} }, pitchRatio); const voice = buildVoice(ctx, patchJSON, pitchRatio);","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/WebAudioNodeFactory.md","moduleTitle":"audio/synth/WebAudioNodeFactory","source":"engine/audio/synth/WebAudioNodeFactory.js","import":"/engine/audio/synth/WebAudioNodeFactory.js","sourceHash":"f4cbaa8d9c30bd5838947b6b56b5da0565a0de1599658b0958d54cdb38b86dcc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/WebAudioNodeFactory.js#0000:normalizeWaveShape","exportIndex":0,"name":"normalizeWaveShape","kind":"function","signature":"normalizeWaveShape(shape)","summary":"Normalize oscillator wave shape names to Web Audio API values."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/WebAudioNodeFactory.md","moduleTitle":"audio/synth/WebAudioNodeFactory","source":"engine/audio/synth/WebAudioNodeFactory.js","import":"/engine/audio/synth/WebAudioNodeFactory.js","sourceHash":"f4cbaa8d9c30bd5838947b6b56b5da0565a0de1599658b0958d54cdb38b86dcc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/WebAudioNodeFactory.js#0001:buildVoice","exportIndex":1,"name":"buildVoice","kind":"function","signature":"buildVoice(ctx, patch, pitchRatio = 1.0)","summary":"Build a complete voice from a patch graph, scaling frequencies by pitchRatio."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/WebAudioNodeFactory.md","moduleTitle":"audio/synth/WebAudioNodeFactory","source":"engine/audio/synth/WebAudioNodeFactory.js","import":"/engine/audio/synth/WebAudioNodeFactory.js","sourceHash":"f4cbaa8d9c30bd5838947b6b56b5da0565a0de1599658b0958d54cdb38b86dcc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/WebAudioNodeFactory.js#0002:createWebAudioNode","exportIndex":2,"name":"createWebAudioNode","kind":"function","signature":"createWebAudioNode(ctx, node, pitchRatio = 1.0)","summary":"Create a Web Audio node (or subgraph) for a given patch graph node definition. Returns { output, input, inputMap?, sources } or null."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/synth/index.js","title":"audio/synth/index","summary":"engine/audio/synth/index.js — Barrel export for procedural synthesis engine.","exportCount":125}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0000:AMBIENT_PATCHES","exportIndex":0,"name":"AMBIENT_PATCHES","kind":"re-export","signature":"AMBIENT_PATCHES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0001:BLEND_LAYER_SCHEMA","exportIndex":1,"name":"BLEND_LAYER_SCHEMA","kind":"re-export","signature":"BLEND_LAYER_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0002:BLEND_SCHEMA","exportIndex":2,"name":"BLEND_SCHEMA","kind":"re-export","signature":"BLEND_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0003:FM_PRESETS","exportIndex":3,"name":"FM_PRESETS","kind":"re-export","signature":"FM_PRESETS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0004:FM_SCHEMA","exportIndex":4,"name":"FM_SCHEMA","kind":"re-export","signature":"FM_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0005:FORMANT_PRESETS","exportIndex":5,"name":"FORMANT_PRESETS","kind":"re-export","signature":"FORMANT_PRESETS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0006:FORMANT_SCHEMA","exportIndex":6,"name":"FORMANT_SCHEMA","kind":"re-export","signature":"FORMANT_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0007:GRANULAR_SCHEMA","exportIndex":7,"name":"GRANULAR_SCHEMA","kind":"re-export","signature":"GRANULAR_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0008:IMPACT_PATCHES","exportIndex":8,"name":"IMPACT_PATCHES","kind":"re-export","signature":"IMPACT_PATCHES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0009:KARPLUS_SCHEMA","exportIndex":9,"name":"KARPLUS_SCHEMA","kind":"re-export","signature":"KARPLUS_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0010:MATERIAL_OPTIONS","exportIndex":10,"name":"MATERIAL_OPTIONS","kind":"re-export","signature":"MATERIAL_OPTIONS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0011:MODAL_MATERIALS","exportIndex":11,"name":"MODAL_MATERIALS","kind":"re-export","signature":"MODAL_MATERIALS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0012:NOISE_COLOR_OPTIONS","exportIndex":12,"name":"NOISE_COLOR_OPTIONS","kind":"re-export","signature":"NOISE_COLOR_OPTIONS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0013:SFX_SCHEMA","exportIndex":13,"name":"SFX_SCHEMA","kind":"re-export","signature":"SFX_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0014:SOUND_SCHEMAS","exportIndex":14,"name":"SOUND_SCHEMAS","kind":"re-export","signature":"SOUND_SCHEMAS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0015:WAVEGUIDE_MODE_OPTIONS","exportIndex":15,"name":"WAVEGUIDE_MODE_OPTIONS","kind":"re-export","signature":"WAVEGUIDE_MODE_OPTIONS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0016:WAVEGUIDE_TERMINATIONS","exportIndex":16,"name":"WAVEGUIDE_TERMINATIONS","kind":"re-export","signature":"WAVEGUIDE_TERMINATIONS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0017:addLayer","exportIndex":17,"name":"addLayer","kind":"re-export","signature":"addLayer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0018:addToPalette","exportIndex":18,"name":"addToPalette","kind":"re-export","signature":"addToPalette","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0019:ambient_combustion","exportIndex":19,"name":"ambient_combustion","kind":"re-export","signature":"ambient_combustion","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0020:ambient_electric","exportIndex":20,"name":"ambient_electric","kind":"re-export","signature":"ambient_electric","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0021:ambient_fluid","exportIndex":21,"name":"ambient_fluid","kind":"re-export","signature":"ambient_fluid","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0022:ambient_wind","exportIndex":22,"name":"ambient_wind","kind":"re-export","signature":"ambient_wind","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0023:buildVoice","exportIndex":23,"name":"buildVoice","kind":"re-export","signature":"buildVoice","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0024:calculateModeAmplitudes","exportIndex":24,"name":"calculateModeAmplitudes","kind":"re-export","signature":"calculateModeAmplitudes","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0025:calculateModeDecays","exportIndex":25,"name":"calculateModeDecays","kind":"re-export","signature":"calculateModeDecays","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0026:calculateModeFrequencies","exportIndex":26,"name":"calculateModeFrequencies","kind":"re-export","signature":"calculateModeFrequencies","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0027:compilePatch","exportIndex":27,"name":"compilePatch","kind":"re-export","signature":"compilePatch","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0028:connectGranular","exportIndex":28,"name":"connectGranular","kind":"re-export","signature":"connectGranular","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0029:createBlendPreset","exportIndex":29,"name":"createBlendPreset","kind":"re-export","signature":"createBlendPreset","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0030:createFMPatch","exportIndex":30,"name":"createFMPatch","kind":"re-export","signature":"createFMPatch","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0031:createFormantFilter","exportIndex":31,"name":"createFormantFilter","kind":"re-export","signature":"createFormantFilter","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0032:createFormantPatch","exportIndex":32,"name":"createFormantPatch","kind":"re-export","signature":"createFormantPatch","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0033:createGranularEngine","exportIndex":33,"name":"createGranularEngine","kind":"re-export","signature":"createGranularEngine","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0034:createGranularPatch","exportIndex":34,"name":"createGranularPatch","kind":"re-export","signature":"createGranularPatch","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0035:createKarplusStrongPatch","exportIndex":35,"name":"createKarplusStrongPatch","kind":"re-export","signature":"createKarplusStrongPatch","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0036:createModalBank","exportIndex":36,"name":"createModalBank","kind":"re-export","signature":"createModalBank","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0037:createNoiseBuffer","exportIndex":37,"name":"createNoiseBuffer","kind":"re-export","signature":"createNoiseBuffer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0038:createNoiseSource","exportIndex":38,"name":"createNoiseSource","kind":"re-export","signature":"createNoiseSource","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0039:createPatchInstance","exportIndex":39,"name":"createPatchInstance","kind":"re-export","signature":"createPatchInstance","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0040:createSfxParams","exportIndex":40,"name":"createSfxParams","kind":"re-export","signature":"createSfxParams","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0041:createSoundPalette","exportIndex":41,"name":"createSoundPalette","kind":"re-export","signature":"createSoundPalette","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0042:createStereoNoiseSource","exportIndex":42,"name":"createStereoNoiseSource","kind":"re-export","signature":"createStereoNoiseSource","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0043:createSynthManager","exportIndex":43,"name":"createSynthManager","kind":"re-export","signature":"createSynthManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0044:createVariationConfig","exportIndex":44,"name":"createVariationConfig","kind":"re-export","signature":"createVariationConfig","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0045:createVariationConfigFromSchema","exportIndex":45,"name":"createVariationConfigFromSchema","kind":"re-export","signature":"createVariationConfigFromSchema","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0046:createWaveguide","exportIndex":46,"name":"createWaveguide","kind":"re-export","signature":"createWaveguide","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0047:createWebAudioNode","exportIndex":47,"name":"createWebAudioNode","kind":"re-export","signature":"createWebAudioNode","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0048:decodeSfxParams","exportIndex":48,"name":"decodeSfxParams","kind":"re-export","signature":"decodeSfxParams","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0049:defaultsFromSchema","exportIndex":49,"name":"defaultsFromSchema","kind":"re-export","signature":"defaultsFromSchema","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0050:destroyAllInstances","exportIndex":50,"name":"destroyAllInstances","kind":"re-export","signature":"destroyAllInstances","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0051:destroyFormantFilter","exportIndex":51,"name":"destroyFormantFilter","kind":"re-export","signature":"destroyFormantFilter","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0052:destroyGranular","exportIndex":52,"name":"destroyGranular","kind":"re-export","signature":"destroyGranular","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0053:destroyPatchInstance","exportIndex":53,"name":"destroyPatchInstance","kind":"re-export","signature":"destroyPatchInstance","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0054:destroySynthManager","exportIndex":54,"name":"destroySynthManager","kind":"re-export","signature":"destroySynthManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0055:encodeSfxParams","exportIndex":55,"name":"encodeSfxParams","kind":"re-export","signature":"encodeSfxParams","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0056:exportPalette","exportIndex":56,"name":"exportPalette","kind":"re-export","signature":"exportPalette","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0057:generateBlendVariations","exportIndex":57,"name":"generateBlendVariations","kind":"re-export","signature":"generateBlendVariations","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0058:generateOneVariation","exportIndex":58,"name":"generateOneVariation","kind":"re-export","signature":"generateOneVariation","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0059:generateVariations","exportIndex":59,"name":"generateVariations","kind":"re-export","signature":"generateVariations","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0060:getAmbientPatch","exportIndex":60,"name":"getAmbientPatch","kind":"re-export","signature":"getAmbientPatch","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0061:getFMPresetNames","exportIndex":61,"name":"getFMPresetNames","kind":"re-export","signature":"getFMPresetNames","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0062:getFormantPresetNames","exportIndex":62,"name":"getFormantPresetNames","kind":"re-export","signature":"getFormantPresetNames","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0063:getImpactPatch","exportIndex":63,"name":"getImpactPatch","kind":"re-export","signature":"getImpactPatch","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0064:getNodeTypes","exportIndex":64,"name":"getNodeTypes","kind":"re-export","signature":"getNodeTypes","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0065:getParamGroups","exportIndex":65,"name":"getParamGroups","kind":"re-export","signature":"getParamGroups","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0066:getPatch","exportIndex":66,"name":"getPatch","kind":"re-export","signature":"getPatch","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0067:getPresetNames","exportIndex":67,"name":"getPresetNames","kind":"re-export","signature":"getPresetNames","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0068:getSchema","exportIndex":68,"name":"getSchema","kind":"re-export","signature":"getSchema","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0069:getSchemaNames","exportIndex":69,"name":"getSchemaNames","kind":"re-export","signature":"getSchemaNames","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0070:impact_combustion","exportIndex":70,"name":"impact_combustion","kind":"re-export","signature":"impact_combustion","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0071:impact_crackle","exportIndex":71,"name":"impact_crackle","kind":"re-export","signature":"impact_crackle","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0072:impact_drop","exportIndex":72,"name":"impact_drop","kind":"re-export","signature":"impact_drop","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0073:impact_electric","exportIndex":73,"name":"impact_electric","kind":"re-export","signature":"impact_electric","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0074:impact_fluid","exportIndex":74,"name":"impact_fluid","kind":"re-export","signature":"impact_fluid","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0075:impact_glass","exportIndex":75,"name":"impact_glass","kind":"re-export","signature":"impact_glass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0076:impact_hiss","exportIndex":76,"name":"impact_hiss","kind":"re-export","signature":"impact_hiss","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0077:impact_ice","exportIndex":77,"name":"impact_ice","kind":"re-export","signature":"impact_ice","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0078:impact_metal","exportIndex":78,"name":"impact_metal","kind":"re-export","signature":"impact_metal","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0079:impact_sand","exportIndex":79,"name":"impact_sand","kind":"re-export","signature":"impact_sand","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0080:impact_stone","exportIndex":80,"name":"impact_stone","kind":"re-export","signature":"impact_stone","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0081:impact_wood","exportIndex":81,"name":"impact_wood","kind":"re-export","signature":"impact_wood","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0082:importPalette","exportIndex":82,"name":"importPalette","kind":"re-export","signature":"importPalette","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0083:initSynthManager","exportIndex":83,"name":"initSynthManager","kind":"re-export","signature":"initSynthManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0084:loadPalette","exportIndex":84,"name":"loadPalette","kind":"re-export","signature":"loadPalette","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0085:lockParam","exportIndex":85,"name":"lockParam","kind":"re-export","signature":"lockParam","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0086:morphFormants","exportIndex":86,"name":"morphFormants","kind":"re-export","signature":"morphFormants","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0087:mutateSfx","exportIndex":87,"name":"mutateSfx","kind":"re-export","signature":"mutateSfx","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0088:normalizeWaveShape","exportIndex":88,"name":"normalizeWaveShape","kind":"re-export","signature":"normalizeWaveShape","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0089:playBlend","exportIndex":89,"name":"playBlend","kind":"re-export","signature":"playBlend","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0090:playFM","exportIndex":90,"name":"playFM","kind":"re-export","signature":"playFM","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0091:playKarplusStrong","exportIndex":91,"name":"playKarplusStrong","kind":"re-export","signature":"playKarplusStrong","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0092:playSfx","exportIndex":92,"name":"playSfx","kind":"re-export","signature":"playSfx","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0093:randomizeFull","exportIndex":93,"name":"randomizeFull","kind":"re-export","signature":"randomizeFull","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0094:randomizePreset","exportIndex":94,"name":"randomizePreset","kind":"re-export","signature":"randomizePreset","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0095:registerNodeType","exportIndex":95,"name":"registerNodeType","kind":"re-export","signature":"registerNodeType","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0096:registerPatch","exportIndex":96,"name":"registerPatch","kind":"re-export","signature":"registerPatch","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0097:removeFromPalette","exportIndex":97,"name":"removeFromPalette","kind":"re-export","signature":"removeFromPalette","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0098:removeLayer","exportIndex":98,"name":"removeLayer","kind":"re-export","signature":"removeLayer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0099:renderAndPlay","exportIndex":99,"name":"renderAndPlay","kind":"re-export","signature":"renderAndPlay","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0100:renderBlend","exportIndex":100,"name":"renderBlend","kind":"re-export","signature":"renderBlend","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0101:renderFM","exportIndex":101,"name":"renderFM","kind":"re-export","signature":"renderFM","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0102:renderFM4","exportIndex":102,"name":"renderFM4","kind":"re-export","signature":"renderFM4","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0103:renderKarplusStrong","exportIndex":103,"name":"renderKarplusStrong","kind":"re-export","signature":"renderKarplusStrong","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0104:renderSfx","exportIndex":104,"name":"renderSfx","kind":"re-export","signature":"renderSfx","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0105:renderVariationBatch","exportIndex":105,"name":"renderVariationBatch","kind":"re-export","signature":"renderVariationBatch","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0106:renderVariationBatchAsync","exportIndex":106,"name":"renderVariationBatchAsync","kind":"re-export","signature":"renderVariationBatchAsync","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0107:renderWaveguide","exportIndex":107,"name":"renderWaveguide","kind":"re-export","signature":"renderWaveguide","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0108:savePalette","exportIndex":108,"name":"savePalette","kind":"re-export","signature":"savePalette","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0109:searchPalette","exportIndex":109,"name":"searchPalette","kind":"re-export","signature":"searchPalette","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0110:setFormantFrequencies","exportIndex":110,"name":"setFormantFrequencies","kind":"re-export","signature":"setFormantFrequencies","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0111:setFormantMorphTime","exportIndex":111,"name":"setFormantMorphTime","kind":"re-export","signature":"setFormantMorphTime","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0112:setFormantVowel","exportIndex":112,"name":"setFormantVowel","kind":"re-export","signature":"setFormantVowel","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0113:setGranularBuffer","exportIndex":113,"name":"setGranularBuffer","kind":"re-export","signature":"setGranularBuffer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0114:setGranularParam","exportIndex":114,"name":"setGranularParam","kind":"re-export","signature":"setGranularParam","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0115:setInstanceParam","exportIndex":115,"name":"setInstanceParam","kind":"re-export","signature":"setInstanceParam","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0116:setInstanceVolume","exportIndex":116,"name":"setInstanceVolume","kind":"re-export","signature":"setInstanceVolume","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0117:setLimits","exportIndex":117,"name":"setLimits","kind":"re-export","signature":"setLimits","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0118:setRange","exportIndex":118,"name":"setRange","kind":"re-export","signature":"setRange","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0119:startGranular","exportIndex":119,"name":"startGranular","kind":"re-export","signature":"startGranular","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0120:stopGranular","exportIndex":120,"name":"stopGranular","kind":"re-export","signature":"stopGranular","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0121:unlockParam","exportIndex":121,"name":"unlockParam","kind":"re-export","signature":"unlockParam","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0122:validateParams","exportIndex":122,"name":"validateParams","kind":"re-export","signature":"validateParams","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0123:validatePatch","exportIndex":123,"name":"validatePatch","kind":"re-export","signature":"validatePatch","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/index.md","moduleTitle":"audio/synth/index","source":"engine/audio/synth/index.js","import":"/engine/audio/synth/index.js","sourceHash":"b9f9d411d729e1b13fecc3b07ae68c364874ea1aee333ded63bf2559521d4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/index.js#0124:variationRangesFromSchema","exportIndex":124,"name":"variationRangesFromSchema","kind":"re-export","signature":"variationRangesFromSchema","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/FMOperatorNode.md","moduleTitle":"audio/synth/nodes/FMOperatorNode","source":"engine/audio/synth/nodes/FMOperatorNode.js","import":"/engine/audio/synth/nodes/FMOperatorNode.js","sourceHash":"5e02cc4384db8f9912f47c09ff49a2118b651d2933c1f004e06b4fa9dc3e3380","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/synth/nodes/FMOperatorNode.js","title":"audio/synth/nodes/FMOperatorNode","summary":"FMOperatorNode.js — FM Synthesis Engine Frequency Modulation synthesis: one oscillator (modulator) modulates the frequency of another (carrier), producing complex harmonic and inharmonic timbres from simple parameters. Supports up to 4 operators in series/parallel configurations. Each operator has: frequency ratio, detune, envelope, feedback. Usage: import { renderFM, playFM, createFMPatch } from './FMOperatorNode.js'; const buffer = renderFM(audioCtx, { carrierFreq: 440, modRatio: 2, modDepth: 200 });","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/FMOperatorNode.md","moduleTitle":"audio/synth/nodes/FMOperatorNode","source":"engine/audio/synth/nodes/FMOperatorNode.js","import":"/engine/audio/synth/nodes/FMOperatorNode.js","sourceHash":"5e02cc4384db8f9912f47c09ff49a2118b651d2933c1f004e06b4fa9dc3e3380","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/FMOperatorNode.js#0000:renderFM","exportIndex":0,"name":"renderFM","kind":"function","signature":"renderFM(ctx, config = {})","summary":"Render 2-operator FM synthesis to an AudioBuffer."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/FMOperatorNode.md","moduleTitle":"audio/synth/nodes/FMOperatorNode","source":"engine/audio/synth/nodes/FMOperatorNode.js","import":"/engine/audio/synth/nodes/FMOperatorNode.js","sourceHash":"5e02cc4384db8f9912f47c09ff49a2118b651d2933c1f004e06b4fa9dc3e3380","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/FMOperatorNode.js#0001:renderFM4","exportIndex":1,"name":"renderFM4","kind":"function","signature":"renderFM4(ctx, config = {})","summary":"Render a 4-operator FM stack. Operators are chained: op4 → op3 → op2 → op1 (carrier)."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/FMOperatorNode.md","moduleTitle":"audio/synth/nodes/FMOperatorNode","source":"engine/audio/synth/nodes/FMOperatorNode.js","import":"/engine/audio/synth/nodes/FMOperatorNode.js","sourceHash":"5e02cc4384db8f9912f47c09ff49a2118b651d2933c1f004e06b4fa9dc3e3380","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/FMOperatorNode.js#0002:playFM","exportIndex":2,"name":"playFM","kind":"function","signature":"playFM(ctx, config = {}, destination = null)","summary":"Play FM synthesis directly."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/FMOperatorNode.md","moduleTitle":"audio/synth/nodes/FMOperatorNode","source":"engine/audio/synth/nodes/FMOperatorNode.js","import":"/engine/audio/synth/nodes/FMOperatorNode.js","sourceHash":"5e02cc4384db8f9912f47c09ff49a2118b651d2933c1f004e06b4fa9dc3e3380","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/FMOperatorNode.js#0003:getFMPresetNames","exportIndex":3,"name":"getFMPresetNames","kind":"function","signature":"getFMPresetNames()","summary":"Get list of FM preset names."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/FMOperatorNode.md","moduleTitle":"audio/synth/nodes/FMOperatorNode","source":"engine/audio/synth/nodes/FMOperatorNode.js","import":"/engine/audio/synth/nodes/FMOperatorNode.js","sourceHash":"5e02cc4384db8f9912f47c09ff49a2118b651d2933c1f004e06b4fa9dc3e3380","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/FMOperatorNode.js#0004:createFMPatch","exportIndex":4,"name":"createFMPatch","kind":"function","signature":"createFMPatch(config = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/FMOperatorNode.md","moduleTitle":"audio/synth/nodes/FMOperatorNode","source":"engine/audio/synth/nodes/FMOperatorNode.js","import":"/engine/audio/synth/nodes/FMOperatorNode.js","sourceHash":"5e02cc4384db8f9912f47c09ff49a2118b651d2933c1f004e06b4fa9dc3e3380","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/FMOperatorNode.js#0005:FM_PRESETS","exportIndex":5,"name":"FM_PRESETS","kind":"constant","signature":"FM_PRESETS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/FormantFilterNode.md","moduleTitle":"audio/synth/nodes/FormantFilterNode","source":"engine/audio/synth/nodes/FormantFilterNode.js","import":"/engine/audio/synth/nodes/FormantFilterNode.js","sourceHash":"4d7a1cf0c9bb2b2fac4618e2e03f88c06cc9cd66174de74ca7b0e2288af86cd3","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/synth/nodes/FormantFilterNode.js","title":"audio/synth/nodes/FormantFilterNode","summary":"FormantFilterNode.js — Formant Filter for Vocal/Creature Sounds Parallel bank of bandpass filters tuned to vocal formant frequencies. Shapes any input signal into vowel-like resonances. Useful for: - Creature vocalizations - Vocal pads and textures - Talking/singing synthesis - Resonant environmental effects Includes presets for standard vowels (A, E, I, O, U) and creature sounds. Usage: import { createFormantFilter, setFormantVowel, destroyFormantFilter } from './FormantFilterNode.js'; const filter = createFormantFilter(audioCtx); sourceNode.connect(filter.input); filter.output.connect(audioCtx.destination); setFormantVowel(filter, 'A');","exportCount":9}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/FormantFilterNode.md","moduleTitle":"audio/synth/nodes/FormantFilterNode","source":"engine/audio/synth/nodes/FormantFilterNode.js","import":"/engine/audio/synth/nodes/FormantFilterNode.js","sourceHash":"4d7a1cf0c9bb2b2fac4618e2e03f88c06cc9cd66174de74ca7b0e2288af86cd3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/FormantFilterNode.js#0000:createFormantFilter","exportIndex":0,"name":"createFormantFilter","kind":"function","signature":"createFormantFilter(ctx, config = {})","summary":"Create a formant filter bank."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/FormantFilterNode.md","moduleTitle":"audio/synth/nodes/FormantFilterNode","source":"engine/audio/synth/nodes/FormantFilterNode.js","import":"/engine/audio/synth/nodes/FormantFilterNode.js","sourceHash":"4d7a1cf0c9bb2b2fac4618e2e03f88c06cc9cd66174de74ca7b0e2288af86cd3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/FormantFilterNode.js#0001:setFormantVowel","exportIndex":1,"name":"setFormantVowel","kind":"function","signature":"setFormantVowel(instance, vowelName)","summary":"Set the formant filter to a vowel preset."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/FormantFilterNode.md","moduleTitle":"audio/synth/nodes/FormantFilterNode","source":"engine/audio/synth/nodes/FormantFilterNode.js","import":"/engine/audio/synth/nodes/FormantFilterNode.js","sourceHash":"4d7a1cf0c9bb2b2fac4618e2e03f88c06cc9cd66174de74ca7b0e2288af86cd3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/FormantFilterNode.js#0002:setFormantFrequencies","exportIndex":2,"name":"setFormantFrequencies","kind":"function","signature":"setFormantFrequencies(instance, frequencies, bandwidths, gains)","summary":"Set formant frequencies directly (bypass presets)."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/FormantFilterNode.md","moduleTitle":"audio/synth/nodes/FormantFilterNode","source":"engine/audio/synth/nodes/FormantFilterNode.js","import":"/engine/audio/synth/nodes/FormantFilterNode.js","sourceHash":"4d7a1cf0c9bb2b2fac4618e2e03f88c06cc9cd66174de74ca7b0e2288af86cd3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/FormantFilterNode.js#0003:morphFormants","exportIndex":3,"name":"morphFormants","kind":"function","signature":"morphFormants(instance, vowelA, vowelB, blend)","summary":"Morph between two vowel presets."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/FormantFilterNode.md","moduleTitle":"audio/synth/nodes/FormantFilterNode","source":"engine/audio/synth/nodes/FormantFilterNode.js","import":"/engine/audio/synth/nodes/FormantFilterNode.js","sourceHash":"4d7a1cf0c9bb2b2fac4618e2e03f88c06cc9cd66174de74ca7b0e2288af86cd3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/FormantFilterNode.js#0004:setFormantMorphTime","exportIndex":4,"name":"setFormantMorphTime","kind":"function","signature":"setFormantMorphTime(instance, seconds)","summary":"Set morph time (transition speed)."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/FormantFilterNode.md","moduleTitle":"audio/synth/nodes/FormantFilterNode","source":"engine/audio/synth/nodes/FormantFilterNode.js","import":"/engine/audio/synth/nodes/FormantFilterNode.js","sourceHash":"4d7a1cf0c9bb2b2fac4618e2e03f88c06cc9cd66174de74ca7b0e2288af86cd3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/FormantFilterNode.js#0005:destroyFormantFilter","exportIndex":5,"name":"destroyFormantFilter","kind":"function","signature":"destroyFormantFilter(instance)","summary":"Destroy the formant filter and release resources."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/FormantFilterNode.md","moduleTitle":"audio/synth/nodes/FormantFilterNode","source":"engine/audio/synth/nodes/FormantFilterNode.js","import":"/engine/audio/synth/nodes/FormantFilterNode.js","sourceHash":"4d7a1cf0c9bb2b2fac4618e2e03f88c06cc9cd66174de74ca7b0e2288af86cd3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/FormantFilterNode.js#0006:getFormantPresetNames","exportIndex":6,"name":"getFormantPresetNames","kind":"function","signature":"getFormantPresetNames()","summary":"Get list of available formant preset names."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/FormantFilterNode.md","moduleTitle":"audio/synth/nodes/FormantFilterNode","source":"engine/audio/synth/nodes/FormantFilterNode.js","import":"/engine/audio/synth/nodes/FormantFilterNode.js","sourceHash":"4d7a1cf0c9bb2b2fac4618e2e03f88c06cc9cd66174de74ca7b0e2288af86cd3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/FormantFilterNode.js#0007:createFormantPatch","exportIndex":7,"name":"createFormantPatch","kind":"function","signature":"createFormantPatch(config = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/FormantFilterNode.md","moduleTitle":"audio/synth/nodes/FormantFilterNode","source":"engine/audio/synth/nodes/FormantFilterNode.js","import":"/engine/audio/synth/nodes/FormantFilterNode.js","sourceHash":"4d7a1cf0c9bb2b2fac4618e2e03f88c06cc9cd66174de74ca7b0e2288af86cd3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/FormantFilterNode.js#0008:FORMANT_PRESETS","exportIndex":8,"name":"FORMANT_PRESETS","kind":"constant","signature":"FORMANT_PRESETS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/GranularNode.md","moduleTitle":"audio/synth/nodes/GranularNode","source":"engine/audio/synth/nodes/GranularNode.js","import":"/engine/audio/synth/nodes/GranularNode.js","sourceHash":"7b036e675901f13c4bd96456012328da4861acdb7490fcb9e03113fcc6b35c82","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/synth/nodes/GranularNode.js","title":"audio/synth/nodes/GranularNode","summary":"Create a granular synthesis engine.","exportCount":8}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/GranularNode.md","moduleTitle":"audio/synth/nodes/GranularNode","source":"engine/audio/synth/nodes/GranularNode.js","import":"/engine/audio/synth/nodes/GranularNode.js","sourceHash":"7b036e675901f13c4bd96456012328da4861acdb7490fcb9e03113fcc6b35c82","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/GranularNode.js#0000:createGranularEngine","exportIndex":0,"name":"createGranularEngine","kind":"function","signature":"createGranularEngine(ctx, buffer, config = {})","summary":"Create a granular synthesis engine."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/GranularNode.md","moduleTitle":"audio/synth/nodes/GranularNode","source":"engine/audio/synth/nodes/GranularNode.js","import":"/engine/audio/synth/nodes/GranularNode.js","sourceHash":"7b036e675901f13c4bd96456012328da4861acdb7490fcb9e03113fcc6b35c82","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/GranularNode.js#0001:startGranular","exportIndex":1,"name":"startGranular","kind":"function","signature":"startGranular(engine)","summary":"Start the granular engine — begins spawning grains."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/GranularNode.md","moduleTitle":"audio/synth/nodes/GranularNode","source":"engine/audio/synth/nodes/GranularNode.js","import":"/engine/audio/synth/nodes/GranularNode.js","sourceHash":"7b036e675901f13c4bd96456012328da4861acdb7490fcb9e03113fcc6b35c82","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/GranularNode.js#0002:stopGranular","exportIndex":2,"name":"stopGranular","kind":"function","signature":"stopGranular(engine, fadeTime = 0.1)","summary":"Stop the granular engine."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/GranularNode.md","moduleTitle":"audio/synth/nodes/GranularNode","source":"engine/audio/synth/nodes/GranularNode.js","import":"/engine/audio/synth/nodes/GranularNode.js","sourceHash":"7b036e675901f13c4bd96456012328da4861acdb7490fcb9e03113fcc6b35c82","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/GranularNode.js#0003:setGranularParam","exportIndex":3,"name":"setGranularParam","kind":"function","signature":"setGranularParam(engine, key, value)","summary":"Set a granular parameter."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/GranularNode.md","moduleTitle":"audio/synth/nodes/GranularNode","source":"engine/audio/synth/nodes/GranularNode.js","import":"/engine/audio/synth/nodes/GranularNode.js","sourceHash":"7b036e675901f13c4bd96456012328da4861acdb7490fcb9e03113fcc6b35c82","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/GranularNode.js#0004:setGranularBuffer","exportIndex":4,"name":"setGranularBuffer","kind":"function","signature":"setGranularBuffer(engine, buffer)","summary":"Replace the source buffer."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/GranularNode.md","moduleTitle":"audio/synth/nodes/GranularNode","source":"engine/audio/synth/nodes/GranularNode.js","import":"/engine/audio/synth/nodes/GranularNode.js","sourceHash":"7b036e675901f13c4bd96456012328da4861acdb7490fcb9e03113fcc6b35c82","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/GranularNode.js#0005:connectGranular","exportIndex":5,"name":"connectGranular","kind":"function","signature":"connectGranular(engine, destination)","summary":"Connect granular output to a destination."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/GranularNode.md","moduleTitle":"audio/synth/nodes/GranularNode","source":"engine/audio/synth/nodes/GranularNode.js","import":"/engine/audio/synth/nodes/GranularNode.js","sourceHash":"7b036e675901f13c4bd96456012328da4861acdb7490fcb9e03113fcc6b35c82","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/GranularNode.js#0006:destroyGranular","exportIndex":6,"name":"destroyGranular","kind":"function","signature":"destroyGranular(engine)","summary":"Destroy and clean up."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/GranularNode.md","moduleTitle":"audio/synth/nodes/GranularNode","source":"engine/audio/synth/nodes/GranularNode.js","import":"/engine/audio/synth/nodes/GranularNode.js","sourceHash":"7b036e675901f13c4bd96456012328da4861acdb7490fcb9e03113fcc6b35c82","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/GranularNode.js#0007:createGranularPatch","exportIndex":7,"name":"createGranularPatch","kind":"function","signature":"createGranularPatch(config = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/ImpulseNode.md","moduleTitle":"audio/synth/nodes/ImpulseNode","source":"engine/audio/synth/nodes/ImpulseNode.js","import":"/engine/audio/synth/nodes/ImpulseNode.js","sourceHash":"40892fc4f69c88cfb764c0c7ba832e5d887d38d5ad00167e3fb486e33e58639b","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/synth/nodes/ImpulseNode.js","title":"audio/synth/nodes/ImpulseNode","summary":"Create a real-time impulse generator engine.","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/ImpulseNode.md","moduleTitle":"audio/synth/nodes/ImpulseNode","source":"engine/audio/synth/nodes/ImpulseNode.js","import":"/engine/audio/synth/nodes/ImpulseNode.js","sourceHash":"40892fc4f69c88cfb764c0c7ba832e5d887d38d5ad00167e3fb486e33e58639b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/ImpulseNode.js#0000:createImpulseEngine","exportIndex":0,"name":"createImpulseEngine","kind":"function","signature":"createImpulseEngine(ctx, config = {})","summary":"Create a real-time impulse generator engine."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/ImpulseNode.md","moduleTitle":"audio/synth/nodes/ImpulseNode","source":"engine/audio/synth/nodes/ImpulseNode.js","import":"/engine/audio/synth/nodes/ImpulseNode.js","sourceHash":"40892fc4f69c88cfb764c0c7ba832e5d887d38d5ad00167e3fb486e33e58639b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/ImpulseNode.js#0001:generateImpulseBuffer","exportIndex":1,"name":"generateImpulseBuffer","kind":"function","signature":"generateImpulseBuffer(ctx, config = {})","summary":"Generate a single impulse as an AudioBuffer."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/ImpulseNode.md","moduleTitle":"audio/synth/nodes/ImpulseNode","source":"engine/audio/synth/nodes/ImpulseNode.js","import":"/engine/audio/synth/nodes/ImpulseNode.js","sourceHash":"40892fc4f69c88cfb764c0c7ba832e5d887d38d5ad00167e3fb486e33e58639b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/ImpulseNode.js#0002:isValidImpulseShape","exportIndex":2,"name":"isValidImpulseShape","kind":"function","signature":"isValidImpulseShape(shape)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/ImpulseNode.md","moduleTitle":"audio/synth/nodes/ImpulseNode","source":"engine/audio/synth/nodes/ImpulseNode.js","import":"/engine/audio/synth/nodes/ImpulseNode.js","sourceHash":"40892fc4f69c88cfb764c0c7ba832e5d887d38d5ad00167e3fb486e33e58639b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/ImpulseNode.js#0003:IMPULSE_SHAPE_OPTIONS","exportIndex":3,"name":"IMPULSE_SHAPE_OPTIONS","kind":"constant","signature":"IMPULSE_SHAPE_OPTIONS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/KarplusStrongNode.md","moduleTitle":"audio/synth/nodes/KarplusStrongNode","source":"engine/audio/synth/nodes/KarplusStrongNode.js","import":"/engine/audio/synth/nodes/KarplusStrongNode.js","sourceHash":"75e2adbd6933e2cc1d6f3214a759be3aa5dd0ab975449c67edd016857d60cbd3","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/synth/nodes/KarplusStrongNode.js","title":"audio/synth/nodes/KarplusStrongNode","summary":"Render a Karplus-Strong plucked string to an AudioBuffer.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/KarplusStrongNode.md","moduleTitle":"audio/synth/nodes/KarplusStrongNode","source":"engine/audio/synth/nodes/KarplusStrongNode.js","import":"/engine/audio/synth/nodes/KarplusStrongNode.js","sourceHash":"75e2adbd6933e2cc1d6f3214a759be3aa5dd0ab975449c67edd016857d60cbd3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/KarplusStrongNode.js#0000:renderKarplusStrong","exportIndex":0,"name":"renderKarplusStrong","kind":"function","signature":"renderKarplusStrong(ctx, config = {})","summary":"Render a Karplus-Strong plucked string to an AudioBuffer."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/KarplusStrongNode.md","moduleTitle":"audio/synth/nodes/KarplusStrongNode","source":"engine/audio/synth/nodes/KarplusStrongNode.js","import":"/engine/audio/synth/nodes/KarplusStrongNode.js","sourceHash":"75e2adbd6933e2cc1d6f3214a759be3aa5dd0ab975449c67edd016857d60cbd3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/KarplusStrongNode.js#0001:playKarplusStrong","exportIndex":1,"name":"playKarplusStrong","kind":"function","signature":"playKarplusStrong(ctx, config = {}, destination = null)","summary":"Play a Karplus-Strong sound directly."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/KarplusStrongNode.md","moduleTitle":"audio/synth/nodes/KarplusStrongNode","source":"engine/audio/synth/nodes/KarplusStrongNode.js","import":"/engine/audio/synth/nodes/KarplusStrongNode.js","sourceHash":"75e2adbd6933e2cc1d6f3214a759be3aa5dd0ab975449c67edd016857d60cbd3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/KarplusStrongNode.js#0002:createKarplusStrongPatch","exportIndex":2,"name":"createKarplusStrongPatch","kind":"function","signature":"createKarplusStrongPatch(config = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/MidiInputNode.md","moduleTitle":"audio/synth/nodes/MidiInputNode","source":"engine/audio/synth/nodes/MidiInputNode.js","import":"/engine/audio/synth/nodes/MidiInputNode.js","sourceHash":"91c2f10fe56bdfc7a619aa6b13369e6b5c9c0e60f601ac9f5d220d31a4473c63","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/synth/nodes/MidiInputNode.js","title":"audio/synth/nodes/MidiInputNode","summary":"MidiInputNode.js — MIDI Input Integration Receives MIDI input from external controllers or DAW via Web MIDI API. Outputs gate, note, velocity, and CC signals for driving synth nodes. Usage: import { createMidiInput, requestMidiAccess } from './MidiInputNode.js'; await requestMidiAccess(); const midi = createMidiInput({ channel: 0 }); midi.onNoteOn = (note, velocity) => synth.noteOn(note, velocity);","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/MidiInputNode.md","moduleTitle":"audio/synth/nodes/MidiInputNode","source":"engine/audio/synth/nodes/MidiInputNode.js","import":"/engine/audio/synth/nodes/MidiInputNode.js","sourceHash":"91c2f10fe56bdfc7a619aa6b13369e6b5c9c0e60f601ac9f5d220d31a4473c63","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/MidiInputNode.js#0000:requestMidiAccess","exportIndex":0,"name":"requestMidiAccess","kind":"function","signature":"async requestMidiAccess()","summary":"Request MIDI access from the browser."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/MidiInputNode.md","moduleTitle":"audio/synth/nodes/MidiInputNode","source":"engine/audio/synth/nodes/MidiInputNode.js","import":"/engine/audio/synth/nodes/MidiInputNode.js","sourceHash":"91c2f10fe56bdfc7a619aa6b13369e6b5c9c0e60f601ac9f5d220d31a4473c63","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/MidiInputNode.js#0001:getMidiInputs","exportIndex":1,"name":"getMidiInputs","kind":"function","signature":"getMidiInputs()","summary":"Get list of available MIDI inputs."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/MidiInputNode.md","moduleTitle":"audio/synth/nodes/MidiInputNode","source":"engine/audio/synth/nodes/MidiInputNode.js","import":"/engine/audio/synth/nodes/MidiInputNode.js","sourceHash":"91c2f10fe56bdfc7a619aa6b13369e6b5c9c0e60f601ac9f5d220d31a4473c63","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/MidiInputNode.js#0002:createMidiInput","exportIndex":2,"name":"createMidiInput","kind":"function","signature":"createMidiInput(config = {})","summary":"Create a MIDI input node that processes incoming MIDI messages."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/MidiInputNode.md","moduleTitle":"audio/synth/nodes/MidiInputNode","source":"engine/audio/synth/nodes/MidiInputNode.js","import":"/engine/audio/synth/nodes/MidiInputNode.js","sourceHash":"91c2f10fe56bdfc7a619aa6b13369e6b5c9c0e60f601ac9f5d220d31a4473c63","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/MidiInputNode.js#0003:createMidiCCMap","exportIndex":3,"name":"createMidiCCMap","kind":"function","signature":"createMidiCCMap(config = {})","summary":"Create a CC mapper that scales CC values to a target range."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/MidiInputNode.md","moduleTitle":"audio/synth/nodes/MidiInputNode","source":"engine/audio/synth/nodes/MidiInputNode.js","import":"/engine/audio/synth/nodes/MidiInputNode.js","sourceHash":"91c2f10fe56bdfc7a619aa6b13369e6b5c9c0e60f601ac9f5d220d31a4473c63","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/MidiInputNode.js#0004:VELOCITY_CURVES","exportIndex":4,"name":"VELOCITY_CURVES","kind":"constant","signature":"VELOCITY_CURVES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/MidiInputNode.md","moduleTitle":"audio/synth/nodes/MidiInputNode","source":"engine/audio/synth/nodes/MidiInputNode.js","import":"/engine/audio/synth/nodes/MidiInputNode.js","sourceHash":"91c2f10fe56bdfc7a619aa6b13369e6b5c9c0e60f601ac9f5d220d31a4473c63","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/MidiInputNode.js#0005:CC_CURVES","exportIndex":5,"name":"CC_CURVES","kind":"constant","signature":"CC_CURVES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/ModalBankNode.md","moduleTitle":"audio/synth/nodes/ModalBankNode","source":"engine/audio/synth/nodes/ModalBankNode.js","import":"/engine/audio/synth/nodes/ModalBankNode.js","sourceHash":"ea9697ad3c596e07a4ad0d2b9ec811471bcc9fe934acf53888735705e4f2e812","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/synth/nodes/ModalBankNode.js","title":"audio/synth/nodes/ModalBankNode","summary":"ModalBankNode.js — Modal Synthesis Engine Physical modeling using parallel resonant filters (modes). Each mode has frequency, amplitude, and decay characteristics. Material presets auto-calculate modes based on: - Stiff string formula (metal, piano strings) - Beam formula (wood, glass bars) - Circular membrane formula (drums) - Rectangular plate formula (bells, gongs) Usage: import { createModalBank, MODAL_MATERIALS } from './ModalBankNode.js'; const bank = createModalBank(audioCtx, { material: 'metal', frequency: 440 }); bank.excite(impulseBuffer);","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/ModalBankNode.md","moduleTitle":"audio/synth/nodes/ModalBankNode","source":"engine/audio/synth/nodes/ModalBankNode.js","import":"/engine/audio/synth/nodes/ModalBankNode.js","sourceHash":"ea9697ad3c596e07a4ad0d2b9ec811471bcc9fe934acf53888735705e4f2e812","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/ModalBankNode.js#0000:calculateModeFrequencies","exportIndex":0,"name":"calculateModeFrequencies","kind":"function","signature":"calculateModeFrequencies(formula, f0, modeCount, inharmonicity = 0)","summary":"Calculate modal frequencies based on material formula."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/ModalBankNode.md","moduleTitle":"audio/synth/nodes/ModalBankNode","source":"engine/audio/synth/nodes/ModalBankNode.js","import":"/engine/audio/synth/nodes/ModalBankNode.js","sourceHash":"ea9697ad3c596e07a4ad0d2b9ec811471bcc9fe934acf53888735705e4f2e812","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/ModalBankNode.js#0001:calculateModeAmplitudes","exportIndex":1,"name":"calculateModeAmplitudes","kind":"function","signature":"calculateModeAmplitudes(modeCount, strikePosition, brightness = 0.5)","summary":"Calculate mode amplitudes based on strike position."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/ModalBankNode.md","moduleTitle":"audio/synth/nodes/ModalBankNode","source":"engine/audio/synth/nodes/ModalBankNode.js","import":"/engine/audio/synth/nodes/ModalBankNode.js","sourceHash":"ea9697ad3c596e07a4ad0d2b9ec811471bcc9fe934acf53888735705e4f2e812","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/ModalBankNode.js#0002:calculateModeDecays","exportIndex":2,"name":"calculateModeDecays","kind":"function","signature":"calculateModeDecays(frequencies, baseDamping, highDamp, f0)","summary":"Calculate mode decay times based on frequency and damping."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/ModalBankNode.md","moduleTitle":"audio/synth/nodes/ModalBankNode","source":"engine/audio/synth/nodes/ModalBankNode.js","import":"/engine/audio/synth/nodes/ModalBankNode.js","sourceHash":"ea9697ad3c596e07a4ad0d2b9ec811471bcc9fe934acf53888735705e4f2e812","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/ModalBankNode.js#0003:createModalBank","exportIndex":3,"name":"createModalBank","kind":"function","signature":"createModalBank(ctx, config = {})","summary":"Create a modal bank synthesis engine."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/ModalBankNode.md","moduleTitle":"audio/synth/nodes/ModalBankNode","source":"engine/audio/synth/nodes/ModalBankNode.js","import":"/engine/audio/synth/nodes/ModalBankNode.js","sourceHash":"ea9697ad3c596e07a4ad0d2b9ec811471bcc9fe934acf53888735705e4f2e812","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/ModalBankNode.js#0004:isValidMaterial","exportIndex":4,"name":"isValidMaterial","kind":"function","signature":"isValidMaterial(material)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/ModalBankNode.md","moduleTitle":"audio/synth/nodes/ModalBankNode","source":"engine/audio/synth/nodes/ModalBankNode.js","import":"/engine/audio/synth/nodes/ModalBankNode.js","sourceHash":"ea9697ad3c596e07a4ad0d2b9ec811471bcc9fe934acf53888735705e4f2e812","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/ModalBankNode.js#0005:MODAL_MATERIALS","exportIndex":5,"name":"MODAL_MATERIALS","kind":"constant","signature":"MODAL_MATERIALS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/ModalBankNode.md","moduleTitle":"audio/synth/nodes/ModalBankNode","source":"engine/audio/synth/nodes/ModalBankNode.js","import":"/engine/audio/synth/nodes/ModalBankNode.js","sourceHash":"ea9697ad3c596e07a4ad0d2b9ec811471bcc9fe934acf53888735705e4f2e812","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/ModalBankNode.js#0006:MATERIAL_OPTIONS","exportIndex":6,"name":"MATERIAL_OPTIONS","kind":"constant","signature":"MATERIAL_OPTIONS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/NoiseGeneratorNode.md","moduleTitle":"audio/synth/nodes/NoiseGeneratorNode","source":"engine/audio/synth/nodes/NoiseGeneratorNode.js","import":"/engine/audio/synth/nodes/NoiseGeneratorNode.js","sourceHash":"4a7c396435c6585fbc151f9ac5bbdd8b46794a30c00ed6e5ea9289333372084f","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/synth/nodes/NoiseGeneratorNode.js","title":"audio/synth/nodes/NoiseGeneratorNode","summary":"Create a noise AudioBuffer of the specified color.","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/NoiseGeneratorNode.md","moduleTitle":"audio/synth/nodes/NoiseGeneratorNode","source":"engine/audio/synth/nodes/NoiseGeneratorNode.js","import":"/engine/audio/synth/nodes/NoiseGeneratorNode.js","sourceHash":"4a7c396435c6585fbc151f9ac5bbdd8b46794a30c00ed6e5ea9289333372084f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/NoiseGeneratorNode.js#0000:createNoiseBuffer","exportIndex":0,"name":"createNoiseBuffer","kind":"function","signature":"createNoiseBuffer(ctx, color = 'white', duration = DEFAULT_DURATION, options = {})","summary":"Create a noise AudioBuffer of the specified color."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/NoiseGeneratorNode.md","moduleTitle":"audio/synth/nodes/NoiseGeneratorNode","source":"engine/audio/synth/nodes/NoiseGeneratorNode.js","import":"/engine/audio/synth/nodes/NoiseGeneratorNode.js","sourceHash":"4a7c396435c6585fbc151f9ac5bbdd8b46794a30c00ed6e5ea9289333372084f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/NoiseGeneratorNode.js#0001:createNoiseSource","exportIndex":1,"name":"createNoiseSource","kind":"function","signature":"createNoiseSource(ctx, color = 'white', options = {})","summary":"Create a looping noise source node."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/NoiseGeneratorNode.md","moduleTitle":"audio/synth/nodes/NoiseGeneratorNode","source":"engine/audio/synth/nodes/NoiseGeneratorNode.js","import":"/engine/audio/synth/nodes/NoiseGeneratorNode.js","sourceHash":"4a7c396435c6585fbc151f9ac5bbdd8b46794a30c00ed6e5ea9289333372084f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/NoiseGeneratorNode.js#0002:createStereoNoiseSource","exportIndex":2,"name":"createStereoNoiseSource","kind":"function","signature":"createStereoNoiseSource(ctx, color = 'white', options = {})","summary":"Create stereo noise with decorrelated channels."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/NoiseGeneratorNode.md","moduleTitle":"audio/synth/nodes/NoiseGeneratorNode","source":"engine/audio/synth/nodes/NoiseGeneratorNode.js","import":"/engine/audio/synth/nodes/NoiseGeneratorNode.js","sourceHash":"4a7c396435c6585fbc151f9ac5bbdd8b46794a30c00ed6e5ea9289333372084f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/NoiseGeneratorNode.js#0003:isValidNoiseColor","exportIndex":3,"name":"isValidNoiseColor","kind":"function","signature":"isValidNoiseColor(color)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/NoiseGeneratorNode.md","moduleTitle":"audio/synth/nodes/NoiseGeneratorNode","source":"engine/audio/synth/nodes/NoiseGeneratorNode.js","import":"/engine/audio/synth/nodes/NoiseGeneratorNode.js","sourceHash":"4a7c396435c6585fbc151f9ac5bbdd8b46794a30c00ed6e5ea9289333372084f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/NoiseGeneratorNode.js#0004:NOISE_COLOR_OPTIONS","exportIndex":4,"name":"NOISE_COLOR_OPTIONS","kind":"constant","signature":"NOISE_COLOR_OPTIONS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/OscillatorNode.md","moduleTitle":"audio/synth/nodes/OscillatorNode","source":"engine/audio/synth/nodes/OscillatorNode.js","import":"/engine/audio/synth/nodes/OscillatorNode.js","sourceHash":"f42e82e7f1e13d3be8b1bb292847360c3fa481b115208f54dce43489c78fc81c","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/synth/nodes/OscillatorNode.js","title":"audio/synth/nodes/OscillatorNode","summary":"OscillatorNode.js — Advanced Oscillator Synthesis Supports multiple waveform types beyond Web Audio defaults: - sine, square, sawtooth, triangle (native) - pulse (variable duty cycle via PeriodicWave) - supersaw (multiple detuned sawtooths) - custom (user-defined wavetable) Additional features: - Sub-oscillator (-1 or -2 octaves) - Unison/supersaw with configurable voice count and spread - Pulse width modulation Usage: import { createOscillator, createSupersawOscillator } from './OscillatorNode.js'; const osc = createOscillator(audioCtx, { shape: 'pulse', frequency: 440, pulseWidth: 0.3 }); osc.output.connect(destination); osc.start();","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/OscillatorNode.md","moduleTitle":"audio/synth/nodes/OscillatorNode","source":"engine/audio/synth/nodes/OscillatorNode.js","import":"/engine/audio/synth/nodes/OscillatorNode.js","sourceHash":"f42e82e7f1e13d3be8b1bb292847360c3fa481b115208f54dce43489c78fc81c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/OscillatorNode.js#0000:createOscillator","exportIndex":0,"name":"createOscillator","kind":"function","signature":"createOscillator(ctx, config = {})","summary":"Create an advanced oscillator node."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/OscillatorNode.md","moduleTitle":"audio/synth/nodes/OscillatorNode","source":"engine/audio/synth/nodes/OscillatorNode.js","import":"/engine/audio/synth/nodes/OscillatorNode.js","sourceHash":"f42e82e7f1e13d3be8b1bb292847360c3fa481b115208f54dce43489c78fc81c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/OscillatorNode.js#0001:isValidShape","exportIndex":1,"name":"isValidShape","kind":"function","signature":"isValidShape(shape)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/OscillatorNode.md","moduleTitle":"audio/synth/nodes/OscillatorNode","source":"engine/audio/synth/nodes/OscillatorNode.js","import":"/engine/audio/synth/nodes/OscillatorNode.js","sourceHash":"f42e82e7f1e13d3be8b1bb292847360c3fa481b115208f54dce43489c78fc81c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/OscillatorNode.js#0002:WAVETABLE_PRESETS","exportIndex":2,"name":"WAVETABLE_PRESETS","kind":"constant","signature":"WAVETABLE_PRESETS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/OscillatorNode.md","moduleTitle":"audio/synth/nodes/OscillatorNode","source":"engine/audio/synth/nodes/OscillatorNode.js","import":"/engine/audio/synth/nodes/OscillatorNode.js","sourceHash":"f42e82e7f1e13d3be8b1bb292847360c3fa481b115208f54dce43489c78fc81c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/OscillatorNode.js#0003:OSCILLATOR_SHAPES","exportIndex":3,"name":"OSCILLATOR_SHAPES","kind":"constant","signature":"OSCILLATOR_SHAPES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/SamplePlayerNode.md","moduleTitle":"audio/synth/nodes/SamplePlayerNode","source":"engine/audio/synth/nodes/SamplePlayerNode.js","import":"/engine/audio/synth/nodes/SamplePlayerNode.js","sourceHash":"0709ac24a85644f8eea02e3db6edff6fbaf2b78a8289e9354855d3f7125a27d0","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/synth/nodes/SamplePlayerNode.js","title":"audio/synth/nodes/SamplePlayerNode","summary":"SamplePlayerNode.js — Advanced Sample Playback Enhanced sample player with: - Loop modes: forward, pingpong, reverse - Start/end points and loop regions - Crossfade looping for seamless loops - Built-in ADSR envelope - Pitch tracking from MIDI note Usage: import { createSamplePlayer } from './SamplePlayerNode.js'; const player = createSamplePlayer(audioCtx, buffer, { loop: true, loopMode: 'pingpong' }); player.trigger();","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/SamplePlayerNode.md","moduleTitle":"audio/synth/nodes/SamplePlayerNode","source":"engine/audio/synth/nodes/SamplePlayerNode.js","import":"/engine/audio/synth/nodes/SamplePlayerNode.js","sourceHash":"0709ac24a85644f8eea02e3db6edff6fbaf2b78a8289e9354855d3f7125a27d0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/SamplePlayerNode.js#0000:createSamplePlayer","exportIndex":0,"name":"createSamplePlayer","kind":"function","signature":"createSamplePlayer(ctx, buffer, config = {})","summary":"Create an advanced sample player."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/SamplePlayerNode.md","moduleTitle":"audio/synth/nodes/SamplePlayerNode","source":"engine/audio/synth/nodes/SamplePlayerNode.js","import":"/engine/audio/synth/nodes/SamplePlayerNode.js","sourceHash":"0709ac24a85644f8eea02e3db6edff6fbaf2b78a8289e9354855d3f7125a27d0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/SamplePlayerNode.js#0001:createCrossfadeLoopBuffer","exportIndex":1,"name":"createCrossfadeLoopBuffer","kind":"function","signature":"createCrossfadeLoopBuffer(ctx, buffer, loopStart, loopEnd, crossfadeDuration)","summary":"Create a crossfade loop buffer. Blends the end of the loop region back into the start for seamless looping."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/SamplePlayerNode.md","moduleTitle":"audio/synth/nodes/SamplePlayerNode","source":"engine/audio/synth/nodes/SamplePlayerNode.js","import":"/engine/audio/synth/nodes/SamplePlayerNode.js","sourceHash":"0709ac24a85644f8eea02e3db6edff6fbaf2b78a8289e9354855d3f7125a27d0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/SamplePlayerNode.js#0002:isValidLoopMode","exportIndex":2,"name":"isValidLoopMode","kind":"function","signature":"isValidLoopMode(mode)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/SamplePlayerNode.md","moduleTitle":"audio/synth/nodes/SamplePlayerNode","source":"engine/audio/synth/nodes/SamplePlayerNode.js","import":"/engine/audio/synth/nodes/SamplePlayerNode.js","sourceHash":"0709ac24a85644f8eea02e3db6edff6fbaf2b78a8289e9354855d3f7125a27d0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/SamplePlayerNode.js#0003:SAMPLE_LOOP_MODES","exportIndex":3,"name":"SAMPLE_LOOP_MODES","kind":"constant","signature":"SAMPLE_LOOP_MODES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/SequencerNode.md","moduleTitle":"audio/synth/nodes/SequencerNode","source":"engine/audio/synth/nodes/SequencerNode.js","import":"/engine/audio/synth/nodes/SequencerNode.js","sourceHash":"9c5a2e489bb2bffc4cf1844e43d26943529cca91a27de2ac97bfcb031513fb20","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/synth/nodes/SequencerNode.js","title":"audio/synth/nodes/SequencerNode","summary":"Create a master clock with BPM and time signature.","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/SequencerNode.md","moduleTitle":"audio/synth/nodes/SequencerNode","source":"engine/audio/synth/nodes/SequencerNode.js","import":"/engine/audio/synth/nodes/SequencerNode.js","sourceHash":"9c5a2e489bb2bffc4cf1844e43d26943529cca91a27de2ac97bfcb031513fb20","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/SequencerNode.js#0000:createClock","exportIndex":0,"name":"createClock","kind":"function","signature":"createClock(ctx, config = {})","summary":"Create a master clock with BPM and time signature."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/SequencerNode.md","moduleTitle":"audio/synth/nodes/SequencerNode","source":"engine/audio/synth/nodes/SequencerNode.js","import":"/engine/audio/synth/nodes/SequencerNode.js","sourceHash":"9c5a2e489bb2bffc4cf1844e43d26943529cca91a27de2ac97bfcb031513fb20","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/SequencerNode.js#0001:createStepSequencer","exportIndex":1,"name":"createStepSequencer","kind":"function","signature":"createStepSequencer(ctx, config = {})","summary":"Create a step sequencer."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/SequencerNode.md","moduleTitle":"audio/synth/nodes/SequencerNode","source":"engine/audio/synth/nodes/SequencerNode.js","import":"/engine/audio/synth/nodes/SequencerNode.js","sourceHash":"9c5a2e489bb2bffc4cf1844e43d26943529cca91a27de2ac97bfcb031513fb20","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/SequencerNode.js#0002:createArpeggiator","exportIndex":2,"name":"createArpeggiator","kind":"function","signature":"createArpeggiator(ctx, config = {})","summary":"Create an arpeggiator."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/SequencerNode.md","moduleTitle":"audio/synth/nodes/SequencerNode","source":"engine/audio/synth/nodes/SequencerNode.js","import":"/engine/audio/synth/nodes/SequencerNode.js","sourceHash":"9c5a2e489bb2bffc4cf1844e43d26943529cca91a27de2ac97bfcb031513fb20","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/SequencerNode.js#0003:SEQUENCER_RATES","exportIndex":3,"name":"SEQUENCER_RATES","kind":"constant","signature":"SEQUENCER_RATES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/SequencerNode.md","moduleTitle":"audio/synth/nodes/SequencerNode","source":"engine/audio/synth/nodes/SequencerNode.js","import":"/engine/audio/synth/nodes/SequencerNode.js","sourceHash":"9c5a2e489bb2bffc4cf1844e43d26943529cca91a27de2ac97bfcb031513fb20","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/SequencerNode.js#0004:ARPEGGIATOR_MODES","exportIndex":4,"name":"ARPEGGIATOR_MODES","kind":"constant","signature":"ARPEGGIATOR_MODES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/SynthesisTypes.md","moduleTitle":"audio/synth/nodes/SynthesisTypes","source":"engine/audio/synth/nodes/SynthesisTypes.js","import":"/engine/audio/synth/nodes/SynthesisTypes.js","sourceHash":"da05fecb8e320bfb6c1fcc4fff5fc24b32b8887a6efcc86c2877749ea862fe52","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/synth/nodes/SynthesisTypes.js","title":"audio/synth/nodes/SynthesisTypes","summary":"SynthesisTypes.js — Additional Synthesis Methods Extended synthesis techniques: - Additive: Harmonic/partial-based synthesis - Wavetable: Morphing wavetable oscillator - PhaseDistortion: CZ-style phase distortion - Subtractive: Classic subtractive synth voice Usage: import { createAdditiveSynth, createWavetableSynth } from './SynthesisTypes.js'; const add = createAdditiveSynth(audioCtx, { partialCount: 32 });","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/SynthesisTypes.md","moduleTitle":"audio/synth/nodes/SynthesisTypes","source":"engine/audio/synth/nodes/SynthesisTypes.js","import":"/engine/audio/synth/nodes/SynthesisTypes.js","sourceHash":"da05fecb8e320bfb6c1fcc4fff5fc24b32b8887a6efcc86c2877749ea862fe52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/SynthesisTypes.js#0000:createAdditiveSynth","exportIndex":0,"name":"createAdditiveSynth","kind":"function","signature":"createAdditiveSynth(ctx, config = {})","summary":"Create an additive synthesizer."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/SynthesisTypes.md","moduleTitle":"audio/synth/nodes/SynthesisTypes","source":"engine/audio/synth/nodes/SynthesisTypes.js","import":"/engine/audio/synth/nodes/SynthesisTypes.js","sourceHash":"da05fecb8e320bfb6c1fcc4fff5fc24b32b8887a6efcc86c2877749ea862fe52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/SynthesisTypes.js#0001:createWavetableSynth","exportIndex":1,"name":"createWavetableSynth","kind":"function","signature":"createWavetableSynth(ctx, config = {})","summary":"Create a wavetable synthesizer."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/SynthesisTypes.md","moduleTitle":"audio/synth/nodes/SynthesisTypes","source":"engine/audio/synth/nodes/SynthesisTypes.js","import":"/engine/audio/synth/nodes/SynthesisTypes.js","sourceHash":"da05fecb8e320bfb6c1fcc4fff5fc24b32b8887a6efcc86c2877749ea862fe52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/SynthesisTypes.js#0002:createPhaseDistortionSynth","exportIndex":2,"name":"createPhaseDistortionSynth","kind":"function","signature":"createPhaseDistortionSynth(ctx, config = {})","summary":"Create a phase distortion synthesizer (CZ-style)."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/SynthesisTypes.md","moduleTitle":"audio/synth/nodes/SynthesisTypes","source":"engine/audio/synth/nodes/SynthesisTypes.js","import":"/engine/audio/synth/nodes/SynthesisTypes.js","sourceHash":"da05fecb8e320bfb6c1fcc4fff5fc24b32b8887a6efcc86c2877749ea862fe52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/SynthesisTypes.js#0003:createSubtractiveSynth","exportIndex":3,"name":"createSubtractiveSynth","kind":"function","signature":"createSubtractiveSynth(ctx, config = {})","summary":"Create a classic subtractive synthesizer voice."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/SynthesisTypes.md","moduleTitle":"audio/synth/nodes/SynthesisTypes","source":"engine/audio/synth/nodes/SynthesisTypes.js","import":"/engine/audio/synth/nodes/SynthesisTypes.js","sourceHash":"da05fecb8e320bfb6c1fcc4fff5fc24b32b8887a6efcc86c2877749ea862fe52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/SynthesisTypes.js#0004:WAVETABLE_NAMES","exportIndex":4,"name":"WAVETABLE_NAMES","kind":"constant","signature":"WAVETABLE_NAMES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/SynthesisTypes.md","moduleTitle":"audio/synth/nodes/SynthesisTypes","source":"engine/audio/synth/nodes/SynthesisTypes.js","import":"/engine/audio/synth/nodes/SynthesisTypes.js","sourceHash":"da05fecb8e320bfb6c1fcc4fff5fc24b32b8887a6efcc86c2877749ea862fe52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/SynthesisTypes.js#0005:PD_SHAPE_OPTIONS","exportIndex":5,"name":"PD_SHAPE_OPTIONS","kind":"constant","signature":"PD_SHAPE_OPTIONS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/WaveguideNode.md","moduleTitle":"audio/synth/nodes/WaveguideNode","source":"engine/audio/synth/nodes/WaveguideNode.js","import":"/engine/audio/synth/nodes/WaveguideNode.js","sourceHash":"51e48dcfcf4da2762ba79faee3d3e9cb029dab4a9f70433894a64f400d276c22","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/synth/nodes/WaveguideNode.js","title":"audio/synth/nodes/WaveguideNode","summary":"Render a waveguide to an AudioBuffer (offline).","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/WaveguideNode.md","moduleTitle":"audio/synth/nodes/WaveguideNode","source":"engine/audio/synth/nodes/WaveguideNode.js","import":"/engine/audio/synth/nodes/WaveguideNode.js","sourceHash":"51e48dcfcf4da2762ba79faee3d3e9cb029dab4a9f70433894a64f400d276c22","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/WaveguideNode.js#0000:renderWaveguide","exportIndex":0,"name":"renderWaveguide","kind":"function","signature":"renderWaveguide(ctx, config = {})","summary":"Render a waveguide to an AudioBuffer (offline)."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/WaveguideNode.md","moduleTitle":"audio/synth/nodes/WaveguideNode","source":"engine/audio/synth/nodes/WaveguideNode.js","import":"/engine/audio/synth/nodes/WaveguideNode.js","sourceHash":"51e48dcfcf4da2762ba79faee3d3e9cb029dab4a9f70433894a64f400d276c22","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/WaveguideNode.js#0001:createWaveguide","exportIndex":1,"name":"createWaveguide","kind":"function","signature":"createWaveguide(ctx, config = {})","summary":"Create a real-time waveguide engine using Web Audio nodes. This is a simplified version using delay + filter + feedback."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/WaveguideNode.md","moduleTitle":"audio/synth/nodes/WaveguideNode","source":"engine/audio/synth/nodes/WaveguideNode.js","import":"/engine/audio/synth/nodes/WaveguideNode.js","sourceHash":"51e48dcfcf4da2762ba79faee3d3e9cb029dab4a9f70433894a64f400d276c22","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/WaveguideNode.js#0002:isValidTermination","exportIndex":2,"name":"isValidTermination","kind":"function","signature":"isValidTermination(term)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/WaveguideNode.md","moduleTitle":"audio/synth/nodes/WaveguideNode","source":"engine/audio/synth/nodes/WaveguideNode.js","import":"/engine/audio/synth/nodes/WaveguideNode.js","sourceHash":"51e48dcfcf4da2762ba79faee3d3e9cb029dab4a9f70433894a64f400d276c22","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/WaveguideNode.js#0003:isValidWaveguideMode","exportIndex":3,"name":"isValidWaveguideMode","kind":"function","signature":"isValidWaveguideMode(mode)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/WaveguideNode.md","moduleTitle":"audio/synth/nodes/WaveguideNode","source":"engine/audio/synth/nodes/WaveguideNode.js","import":"/engine/audio/synth/nodes/WaveguideNode.js","sourceHash":"51e48dcfcf4da2762ba79faee3d3e9cb029dab4a9f70433894a64f400d276c22","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/WaveguideNode.js#0004:WAVEGUIDE_TERMINATIONS","exportIndex":4,"name":"WAVEGUIDE_TERMINATIONS","kind":"constant","signature":"WAVEGUIDE_TERMINATIONS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/WaveguideNode.md","moduleTitle":"audio/synth/nodes/WaveguideNode","source":"engine/audio/synth/nodes/WaveguideNode.js","import":"/engine/audio/synth/nodes/WaveguideNode.js","sourceHash":"51e48dcfcf4da2762ba79faee3d3e9cb029dab4a9f70433894a64f400d276c22","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/WaveguideNode.js#0005:WAVEGUIDE_MODE_OPTIONS","exportIndex":5,"name":"WAVEGUIDE_MODE_OPTIONS","kind":"constant","signature":"WAVEGUIDE_MODE_OPTIONS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/atoms/CrackleAtom.md","moduleTitle":"audio/synth/nodes/atoms/CrackleAtom","source":"engine/audio/synth/nodes/atoms/CrackleAtom.js","import":"/engine/audio/synth/nodes/atoms/CrackleAtom.js","sourceHash":"095e6c744d5600c4ec8c6318f761855d95c1dcdac779920e3b0150282acdf7d2","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/synth/nodes/atoms/CrackleAtom.js","title":"audio/synth/nodes/atoms/CrackleAtom","summary":"CrackleAtom.js - Crackle Sound Atom (Verron 2012) Pre-wired patch: Impulse → ModalBank (2-3 modes) → Envelope (AD) → Gain Driven by: emitRate → density, temperature → brightness Use case: fire crackle, ice crack, sparks","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/atoms/CrackleAtom.md","moduleTitle":"audio/synth/nodes/atoms/CrackleAtom","source":"engine/audio/synth/nodes/atoms/CrackleAtom.js","import":"/engine/audio/synth/nodes/atoms/CrackleAtom.js","sourceHash":"095e6c744d5600c4ec8c6318f761855d95c1dcdac779920e3b0150282acdf7d2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/atoms/CrackleAtom.js#0000:createCrackleAtomPatch","exportIndex":0,"name":"createCrackleAtomPatch","kind":"function","signature":"createCrackleAtomPatch(config = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/atoms/DropAtom.md","moduleTitle":"audio/synth/nodes/atoms/DropAtom","source":"engine/audio/synth/nodes/atoms/DropAtom.js","import":"/engine/audio/synth/nodes/atoms/DropAtom.js","sourceHash":"debbedfbbd6a5c8a70a54d1e50296481d7a28df0d3cb2e1c79d08a73912fef82","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/synth/nodes/atoms/DropAtom.js","title":"audio/synth/nodes/atoms/DropAtom","summary":"DropAtom.js - Drop Sound Atom (Verron 2012) Pre-wired patch: Impulse → Resonator (single mode) → Envelope (AD) Driven by: mass → pitch, velocity → amplitude Use case: rain drops, drips, liquid impacts","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/atoms/DropAtom.md","moduleTitle":"audio/synth/nodes/atoms/DropAtom","source":"engine/audio/synth/nodes/atoms/DropAtom.js","import":"/engine/audio/synth/nodes/atoms/DropAtom.js","sourceHash":"debbedfbbd6a5c8a70a54d1e50296481d7a28df0d3cb2e1c79d08a73912fef82","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/atoms/DropAtom.js#0000:createDropAtomPatch","exportIndex":0,"name":"createDropAtomPatch","kind":"function","signature":"createDropAtomPatch(config = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/atoms/HissAtom.md","moduleTitle":"audio/synth/nodes/atoms/HissAtom","source":"engine/audio/synth/nodes/atoms/HissAtom.js","import":"/engine/audio/synth/nodes/atoms/HissAtom.js","sourceHash":"ba4d9cddf94ee31cb9139cdbf0881235f589dbf3f0e374b1cc22543cf5c5e9f5","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/synth/nodes/atoms/HissAtom.js","title":"audio/synth/nodes/atoms/HissAtom","summary":"HissAtom.js - Hiss Sound Atom (Verron 2012) Pre-wired patch: Noise(white) → HighPass → Gain Driven by: temperature → cutoff, emitRate → volume Use case: steam, gas escape, sizzle, continuous background","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/atoms/HissAtom.md","moduleTitle":"audio/synth/nodes/atoms/HissAtom","source":"engine/audio/synth/nodes/atoms/HissAtom.js","import":"/engine/audio/synth/nodes/atoms/HissAtom.js","sourceHash":"ba4d9cddf94ee31cb9139cdbf0881235f589dbf3f0e374b1cc22543cf5c5e9f5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/atoms/HissAtom.js#0000:createHissAtomPatch","exportIndex":0,"name":"createHissAtomPatch","kind":"function","signature":"createHissAtomPatch(config = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/atoms/RumbleAtom.md","moduleTitle":"audio/synth/nodes/atoms/RumbleAtom","source":"engine/audio/synth/nodes/atoms/RumbleAtom.js","import":"/engine/audio/synth/nodes/atoms/RumbleAtom.js","sourceHash":"65c40aa8991a953377cb80faacbea2c8a00bdc52d36ee78f8990f4bf680ba667","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/synth/nodes/atoms/RumbleAtom.js","title":"audio/synth/nodes/atoms/RumbleAtom","summary":"RumbleAtom.js - Rumble Sound Atom (Verron 2012) Pre-wired patch: BrownNoise → LowPass → Gain Driven by: size → cutoff, velocity → volume Use case: thunder, ground shake, lava, explosions","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/atoms/RumbleAtom.md","moduleTitle":"audio/synth/nodes/atoms/RumbleAtom","source":"engine/audio/synth/nodes/atoms/RumbleAtom.js","import":"/engine/audio/synth/nodes/atoms/RumbleAtom.js","sourceHash":"65c40aa8991a953377cb80faacbea2c8a00bdc52d36ee78f8990f4bf680ba667","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/atoms/RumbleAtom.js#0000:createRumbleAtomPatch","exportIndex":0,"name":"createRumbleAtomPatch","kind":"function","signature":"createRumbleAtomPatch(config = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/atoms/WhooshAtom.md","moduleTitle":"audio/synth/nodes/atoms/WhooshAtom","source":"engine/audio/synth/nodes/atoms/WhooshAtom.js","import":"/engine/audio/synth/nodes/atoms/WhooshAtom.js","sourceHash":"58c3b4a518711195742c5940983f5af9c5311009dfd8f88036c0616096f26ea0","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/synth/nodes/atoms/WhooshAtom.js","title":"audio/synth/nodes/atoms/WhooshAtom","summary":"WhooshAtom.js - Whoosh Sound Atom (Verron 2012) Pre-wired patch: Noise → BandPass → Envelope → Gain Driven by: velocity → centerFreq, size → bandwidth Use case: wind, projectile flyby, movement","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/atoms/WhooshAtom.md","moduleTitle":"audio/synth/nodes/atoms/WhooshAtom","source":"engine/audio/synth/nodes/atoms/WhooshAtom.js","import":"/engine/audio/synth/nodes/atoms/WhooshAtom.js","sourceHash":"58c3b4a518711195742c5940983f5af9c5311009dfd8f88036c0616096f26ea0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/atoms/WhooshAtom.js#0000:createWhooshAtomPatch","exportIndex":0,"name":"createWhooshAtomPatch","kind":"function","signature":"createWhooshAtomPatch(config = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/instruments/InstrumentPresets.md","moduleTitle":"audio/synth/nodes/instruments/InstrumentPresets","source":"engine/audio/synth/nodes/instruments/InstrumentPresets.js","import":"/engine/audio/synth/nodes/instruments/InstrumentPresets.js","sourceHash":"57b0fe3c47337a4c22c60521ea9eca9e094fcfb958b3d46905d394496f27c7d6","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/synth/nodes/instruments/InstrumentPresets.js","title":"audio/synth/nodes/instruments/InstrumentPresets","summary":"Convert MIDI note number to frequency.","exportCount":10}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/instruments/InstrumentPresets.md","moduleTitle":"audio/synth/nodes/instruments/InstrumentPresets","source":"engine/audio/synth/nodes/instruments/InstrumentPresets.js","import":"/engine/audio/synth/nodes/instruments/InstrumentPresets.js","sourceHash":"57b0fe3c47337a4c22c60521ea9eca9e094fcfb958b3d46905d394496f27c7d6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/instruments/InstrumentPresets.js#0000:midiToFreq","exportIndex":0,"name":"midiToFreq","kind":"function","signature":"midiToFreq(note)","summary":"Convert MIDI note number to frequency."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/instruments/InstrumentPresets.md","moduleTitle":"audio/synth/nodes/instruments/InstrumentPresets","source":"engine/audio/synth/nodes/instruments/InstrumentPresets.js","import":"/engine/audio/synth/nodes/instruments/InstrumentPresets.js","sourceHash":"57b0fe3c47337a4c22c60521ea9eca9e094fcfb958b3d46905d394496f27c7d6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/instruments/InstrumentPresets.js#0001:freqToMidi","exportIndex":1,"name":"freqToMidi","kind":"function","signature":"freqToMidi(freq)","summary":"Convert frequency to MIDI note number."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/instruments/InstrumentPresets.md","moduleTitle":"audio/synth/nodes/instruments/InstrumentPresets","source":"engine/audio/synth/nodes/instruments/InstrumentPresets.js","import":"/engine/audio/synth/nodes/instruments/InstrumentPresets.js","sourceHash":"57b0fe3c47337a4c22c60521ea9eca9e094fcfb958b3d46905d394496f27c7d6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/instruments/InstrumentPresets.js#0002:createPianoInstrument","exportIndex":2,"name":"createPianoInstrument","kind":"function","signature":"createPianoInstrument(ctx, config = {})","summary":"Create a piano instrument using Karplus-Strong + FM."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/instruments/InstrumentPresets.md","moduleTitle":"audio/synth/nodes/instruments/InstrumentPresets","source":"engine/audio/synth/nodes/instruments/InstrumentPresets.js","import":"/engine/audio/synth/nodes/instruments/InstrumentPresets.js","sourceHash":"57b0fe3c47337a4c22c60521ea9eca9e094fcfb958b3d46905d394496f27c7d6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/instruments/InstrumentPresets.js#0003:createStringsInstrument","exportIndex":3,"name":"createStringsInstrument","kind":"function","signature":"createStringsInstrument(ctx, config = {})","summary":"Create a string ensemble instrument."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/instruments/InstrumentPresets.md","moduleTitle":"audio/synth/nodes/instruments/InstrumentPresets","source":"engine/audio/synth/nodes/instruments/InstrumentPresets.js","import":"/engine/audio/synth/nodes/instruments/InstrumentPresets.js","sourceHash":"57b0fe3c47337a4c22c60521ea9eca9e094fcfb958b3d46905d394496f27c7d6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/instruments/InstrumentPresets.js#0004:createBrassInstrument","exportIndex":4,"name":"createBrassInstrument","kind":"function","signature":"createBrassInstrument(ctx, config = {})","summary":"Create a brass instrument with growl and brightness."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/instruments/InstrumentPresets.md","moduleTitle":"audio/synth/nodes/instruments/InstrumentPresets","source":"engine/audio/synth/nodes/instruments/InstrumentPresets.js","import":"/engine/audio/synth/nodes/instruments/InstrumentPresets.js","sourceHash":"57b0fe3c47337a4c22c60521ea9eca9e094fcfb958b3d46905d394496f27c7d6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/instruments/InstrumentPresets.js#0005:createPadSynth","exportIndex":5,"name":"createPadSynth","kind":"function","signature":"createPadSynth(ctx, config = {})","summary":"Create a lush pad synthesizer."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/instruments/InstrumentPresets.md","moduleTitle":"audio/synth/nodes/instruments/InstrumentPresets","source":"engine/audio/synth/nodes/instruments/InstrumentPresets.js","import":"/engine/audio/synth/nodes/instruments/InstrumentPresets.js","sourceHash":"57b0fe3c47337a4c22c60521ea9eca9e094fcfb958b3d46905d394496f27c7d6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/instruments/InstrumentPresets.js#0006:createLeadSynth","exportIndex":6,"name":"createLeadSynth","kind":"function","signature":"createLeadSynth(ctx, config = {})","summary":"Create a mono lead synthesizer with glide."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/instruments/InstrumentPresets.md","moduleTitle":"audio/synth/nodes/instruments/InstrumentPresets","source":"engine/audio/synth/nodes/instruments/InstrumentPresets.js","import":"/engine/audio/synth/nodes/instruments/InstrumentPresets.js","sourceHash":"57b0fe3c47337a4c22c60521ea9eca9e094fcfb958b3d46905d394496f27c7d6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/instruments/InstrumentPresets.js#0007:createBassSynth","exportIndex":7,"name":"createBassSynth","kind":"function","signature":"createBassSynth(ctx, config = {})","summary":"Create a bass synthesizer."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/instruments/InstrumentPresets.md","moduleTitle":"audio/synth/nodes/instruments/InstrumentPresets","source":"engine/audio/synth/nodes/instruments/InstrumentPresets.js","import":"/engine/audio/synth/nodes/instruments/InstrumentPresets.js","sourceHash":"57b0fe3c47337a4c22c60521ea9eca9e094fcfb958b3d46905d394496f27c7d6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/instruments/InstrumentPresets.js#0008:createDrumSynth","exportIndex":8,"name":"createDrumSynth","kind":"function","signature":"createDrumSynth(ctx, config = {})","summary":"Create an analog-style drum synthesizer."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/instruments/InstrumentPresets.md","moduleTitle":"audio/synth/nodes/instruments/InstrumentPresets","source":"engine/audio/synth/nodes/instruments/InstrumentPresets.js","import":"/engine/audio/synth/nodes/instruments/InstrumentPresets.js","sourceHash":"57b0fe3c47337a4c22c60521ea9eca9e094fcfb958b3d46905d394496f27c7d6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/instruments/InstrumentPresets.js#0009:INSTRUMENT_TYPES","exportIndex":9,"name":"INSTRUMENT_TYPES","kind":"constant","signature":"INSTRUMENT_TYPES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/physics/CombustionModel.md","moduleTitle":"audio/synth/nodes/physics/CombustionModel","source":"engine/audio/synth/nodes/physics/CombustionModel.js","import":"/engine/audio/synth/nodes/physics/CombustionModel.js","sourceHash":"398384d0a4233e471ef0d06ec954c06bcdc7c4c208f271b48f3bf43f57e28295","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/synth/nodes/physics/CombustionModel.js","title":"audio/synth/nodes/physics/CombustionModel","summary":"CombustionModel.js - Fire/Combustion Synthesis Model Combines Crackle + Hiss + Rumble atoms mixed by intensity. Low intensity = gentle crackle. High intensity = roaring fire with rumble. Driven by: emitRate, temperature","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/physics/CombustionModel.md","moduleTitle":"audio/synth/nodes/physics/CombustionModel","source":"engine/audio/synth/nodes/physics/CombustionModel.js","import":"/engine/audio/synth/nodes/physics/CombustionModel.js","sourceHash":"398384d0a4233e471ef0d06ec954c06bcdc7c4c208f271b48f3bf43f57e28295","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/physics/CombustionModel.js#0000:createCombustionPatch","exportIndex":0,"name":"createCombustionPatch","kind":"function","signature":"createCombustionPatch(config = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/physics/FluidModel.md","moduleTitle":"audio/synth/nodes/physics/FluidModel","source":"engine/audio/synth/nodes/physics/FluidModel.js","import":"/engine/audio/synth/nodes/physics/FluidModel.js","sourceHash":"abdd44e52e5c860f03160dc7ac18064d4f8dea3089e76bb5d442b9187b6a1a92","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/synth/nodes/physics/FluidModel.js","title":"audio/synth/nodes/physics/FluidModel","summary":"FluidModel.js - Fluid/Water Synthesis Model Combines Drop atoms (splashes) + Hiss (flow) for liquid sounds. Driven by: emitRate, velocity, splash rate","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/physics/FluidModel.md","moduleTitle":"audio/synth/nodes/physics/FluidModel","source":"engine/audio/synth/nodes/physics/FluidModel.js","import":"/engine/audio/synth/nodes/physics/FluidModel.js","sourceHash":"abdd44e52e5c860f03160dc7ac18064d4f8dea3089e76bb5d442b9187b6a1a92","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/physics/FluidModel.js#0000:createFluidPatch","exportIndex":0,"name":"createFluidPatch","kind":"function","signature":"createFluidPatch(config = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/physics/ModalImpactModel.md","moduleTitle":"audio/synth/nodes/physics/ModalImpactModel","source":"engine/audio/synth/nodes/physics/ModalImpactModel.js","import":"/engine/audio/synth/nodes/physics/ModalImpactModel.js","sourceHash":"af812c14dbffb28ffded2f1ad1712c42f45e741b11b89fc2c28bb7a4b325e28d","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/synth/nodes/physics/ModalImpactModel.js","title":"audio/synth/nodes/physics/ModalImpactModel","summary":"ModalImpactModel.js - Material-Aware Impact Synthesis Excites a bank of resonators on collision. Material properties determine mode frequencies, Q factors, and decay times. Uses MATERIAL enum from SubstanceSchema for lookup. Based on Cook/Smith modal synthesis (Stanford CCRMA).","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/physics/ModalImpactModel.md","moduleTitle":"audio/synth/nodes/physics/ModalImpactModel","source":"engine/audio/synth/nodes/physics/ModalImpactModel.js","import":"/engine/audio/synth/nodes/physics/ModalImpactModel.js","sourceHash":"af812c14dbffb28ffded2f1ad1712c42f45e741b11b89fc2c28bb7a4b325e28d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/physics/ModalImpactModel.js#0000:getModalPreset","exportIndex":0,"name":"getModalPreset","kind":"function","signature":"getModalPreset(material)","summary":"Get modal preset for a material."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/physics/ModalImpactModel.md","moduleTitle":"audio/synth/nodes/physics/ModalImpactModel","source":"engine/audio/synth/nodes/physics/ModalImpactModel.js","import":"/engine/audio/synth/nodes/physics/ModalImpactModel.js","sourceHash":"af812c14dbffb28ffded2f1ad1712c42f45e741b11b89fc2c28bb7a4b325e28d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/physics/ModalImpactModel.js#0001:getModalMaterials","exportIndex":1,"name":"getModalMaterials","kind":"function","signature":"getModalMaterials()","summary":"Get all available material names."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/physics/ModalImpactModel.md","moduleTitle":"audio/synth/nodes/physics/ModalImpactModel","source":"engine/audio/synth/nodes/physics/ModalImpactModel.js","import":"/engine/audio/synth/nodes/physics/ModalImpactModel.js","sourceHash":"af812c14dbffb28ffded2f1ad1712c42f45e741b11b89fc2c28bb7a4b325e28d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/physics/ModalImpactModel.js#0002:createModalImpactPatch","exportIndex":2,"name":"createModalImpactPatch","kind":"function","signature":"createModalImpactPatch(config = {})","summary":"Generate a ModalImpact patch descriptor for a given material."}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/physics/WeatherModel.md","moduleTitle":"audio/synth/nodes/physics/WeatherModel","source":"engine/audio/synth/nodes/physics/WeatherModel.js","import":"/engine/audio/synth/nodes/physics/WeatherModel.js","sourceHash":"e30b6b2b02e2ecd2d3b2e374dff312e85a89beb4caadcab75fd25d1dcf9faeef","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/synth/nodes/physics/WeatherModel.js","title":"audio/synth/nodes/physics/WeatherModel","summary":"WeatherModel.js - Weather Synthesis Model Rain (grain cloud of drops), hail, thunder (rumble). Driven by: weather type, intensity","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/physics/WeatherModel.md","moduleTitle":"audio/synth/nodes/physics/WeatherModel","source":"engine/audio/synth/nodes/physics/WeatherModel.js","import":"/engine/audio/synth/nodes/physics/WeatherModel.js","sourceHash":"e30b6b2b02e2ecd2d3b2e374dff312e85a89beb4caadcab75fd25d1dcf9faeef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/physics/WeatherModel.js#0000:createWeatherPatch","exportIndex":0,"name":"createWeatherPatch","kind":"function","signature":"createWeatherPatch(config = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/physics/WindModel.md","moduleTitle":"audio/synth/nodes/physics/WindModel","source":"engine/audio/synth/nodes/physics/WindModel.js","import":"/engine/audio/synth/nodes/physics/WindModel.js","sourceHash":"936e813a13336c43c2e3ea9e75e5b82d1796a424820f133dcd64b5a7929ef75e","subsystem":"engine","recordType":"api-module","id":"module:engine/audio/synth/nodes/physics/WindModel.js","title":"audio/synth/nodes/physics/WindModel","summary":"WindModel.js - Wind Synthesis Model Combines Whoosh + Rumble, with gust modulation from WindSystem. Driven by: windSpeed, gustiness","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/audio/synth/nodes/physics/WindModel.md","moduleTitle":"audio/synth/nodes/physics/WindModel","source":"engine/audio/synth/nodes/physics/WindModel.js","import":"/engine/audio/synth/nodes/physics/WindModel.js","sourceHash":"936e813a13336c43c2e3ea9e75e5b82d1796a424820f133dcd64b5a7929ef75e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/audio/synth/nodes/physics/WindModel.js#0000:createWindPatch","exportIndex":0,"name":"createWindPatch","kind":"function","signature":"createWindPatch(config = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabAnonymousRelay.md","moduleTitle":"collab/CollabAnonymousRelay","source":"engine/collab/CollabAnonymousRelay.js","import":"/engine/collab/CollabAnonymousRelay.js","sourceHash":"81a67d05584f59af67db05b09dabe3785d52a3f70a721238212d2c7dcf4fe9b3","subsystem":"engine","recordType":"api-module","id":"module:engine/collab/CollabAnonymousRelay.js","title":"collab/CollabAnonymousRelay","summary":"CollabAnonymousRelay.js Anonymous peer mapping and routing for P2P collab channels. Inspired by Tor onion routing, I2P garlic routing, and AP3 pseudonymous overlays — adapted for real-time game networking where latency matters. Three layers of anonymity: 1. Pseudonymous IDs — each peer gets a random session token (anonId). All ops use anonIds instead of real selfIds. Peers never see each other's real identity. Different anonId each session prevents cross-session correlation. 2. TURN-only relay — forces iceTransportPolicy:'relay' so WebRTC ICE candidates never leak real IP addresses between peers. 3. Garlic encryption — each message payload is encrypted with the recipient's ECDH public key before being sent through the relay. The relay host can route messages (via anonId headers) but cannot read the encrypted payload. Only the intended recipient can decrypt. Architecture: - The host acts as an anonymizing relay (already in relay mode) - Peers send messages to the host with a destination anonId - The host maps anonId → realPeerId, forwards the message - The forwarded message has the sender's anonId (not real ID) - Result: no peer knows any other peer's real identity or IP Flow: 1. createAnonymousRelay() → relay state with self anonId 2. Host: registerPeer(realPeerId) → assigns anonId, stores mapping 3. Outgoing: sanitizeOp(op) → replaces peerId with anonId 4. Host routing: resolveAnonToReal(anonId) → realPeerId for delivery 5. Incoming: the op already has sender's anonId (safe to process) 6. Garlic: wrapGarlic(op, recipientEcdhPub) → encrypted payload 7. Garlic: unwrapGarlic(op, ownEcdhPrivate) → decrypted payload","exportCount":40}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabAnonymousRelay.md","moduleTitle":"collab/CollabAnonymousRelay","source":"engine/collab/CollabAnonymousRelay.js","import":"/engine/collab/CollabAnonymousRelay.js","sourceHash":"81a67d05584f59af67db05b09dabe3785d52a3f70a721238212d2c7dcf4fe9b3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabAnonymousRelay.js#0000:collabAnonTimestampReport","exportIndex":0,"name":"collabAnonTimestampReport","kind":"function","signature":"collabAnonTimestampReport(timestamp, nowMs = Date.now()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabAnonymousRelay.md","moduleTitle":"collab/CollabAnonymousRelay","source":"engine/collab/CollabAnonymousRelay.js","import":"/engine/collab/CollabAnonymousRelay.js","sourceHash":"81a67d05584f59af67db05b09dabe3785d52a3f70a721238212d2c7dcf4fe9b3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabAnonymousRelay.js#0001:collabAnonScoreReport","exportIndex":1,"name":"collabAnonScoreReport","kind":"function","signature":"collabAnonScoreReport(scoreData, nowMs = Date.now()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabAnonymousRelay.md","moduleTitle":"collab/CollabAnonymousRelay","source":"engine/collab/CollabAnonymousRelay.js","import":"/engine/collab/CollabAnonymousRelay.js","sourceHash":"81a67d05584f59af67db05b09dabe3785d52a3f70a721238212d2c7dcf4fe9b3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabAnonymousRelay.js#0002:getAnonUsername","exportIndex":2,"name":"getAnonUsername","kind":"function","signature":"getAnonUsername(anonId)","summary":"Generate an anonymous username from an anonId. Format: \"Anon-XXXX\" where XXXX is first 4 chars of the anonId."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabAnonymousRelay.md","moduleTitle":"collab/CollabAnonymousRelay","source":"engine/collab/CollabAnonymousRelay.js","import":"/engine/collab/CollabAnonymousRelay.js","sourceHash":"81a67d05584f59af67db05b09dabe3785d52a3f70a721238212d2c7dcf4fe9b3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabAnonymousRelay.js#0003:createAnonymousRelay","exportIndex":3,"name":"createAnonymousRelay","kind":"function","signature":"createAnonymousRelay(config)","summary":"Create an anonymous relay state."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabAnonymousRelay.md","moduleTitle":"collab/CollabAnonymousRelay","source":"engine/collab/CollabAnonymousRelay.js","import":"/engine/collab/CollabAnonymousRelay.js","sourceHash":"81a67d05584f59af67db05b09dabe3785d52a3f70a721238212d2c7dcf4fe9b3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabAnonymousRelay.js#0004:registerAnonPeer","exportIndex":4,"name":"registerAnonPeer","kind":"function","signature":"registerAnonPeer(relay, realPeerId, ecdhPublicKey)","summary":"Register a peer and assign them an anonymous ID. On the host: stores both directions of the mapping. On non-host: only stores our own mapping (we know our own anonId)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabAnonymousRelay.md","moduleTitle":"collab/CollabAnonymousRelay","source":"engine/collab/CollabAnonymousRelay.js","import":"/engine/collab/CollabAnonymousRelay.js","sourceHash":"81a67d05584f59af67db05b09dabe3785d52a3f70a721238212d2c7dcf4fe9b3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabAnonymousRelay.js#0005:removeAnonPeer","exportIndex":5,"name":"removeAnonPeer","kind":"function","signature":"removeAnonPeer(relay, realPeerId)","summary":"Remove a peer from the anonymous mapping."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabAnonymousRelay.md","moduleTitle":"collab/CollabAnonymousRelay","source":"engine/collab/CollabAnonymousRelay.js","import":"/engine/collab/CollabAnonymousRelay.js","sourceHash":"81a67d05584f59af67db05b09dabe3785d52a3f70a721238212d2c7dcf4fe9b3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabAnonymousRelay.js#0006:resolveRealToAnon","exportIndex":6,"name":"resolveRealToAnon","kind":"function","signature":"resolveRealToAnon(relay, realPeerId)","summary":"Resolve a real peer ID to its anonymous ID."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabAnonymousRelay.md","moduleTitle":"collab/CollabAnonymousRelay","source":"engine/collab/CollabAnonymousRelay.js","import":"/engine/collab/CollabAnonymousRelay.js","sourceHash":"81a67d05584f59af67db05b09dabe3785d52a3f70a721238212d2c7dcf4fe9b3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabAnonymousRelay.js#0007:resolveAnonToReal","exportIndex":7,"name":"resolveAnonToReal","kind":"function","signature":"resolveAnonToReal(relay, anonId)","summary":"Resolve an anonymous ID back to the real peer ID. HOST ONLY — non-host peers cannot resolve other peers' anonIds."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabAnonymousRelay.md","moduleTitle":"collab/CollabAnonymousRelay","source":"engine/collab/CollabAnonymousRelay.js","import":"/engine/collab/CollabAnonymousRelay.js","sourceHash":"81a67d05584f59af67db05b09dabe3785d52a3f70a721238212d2c7dcf4fe9b3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabAnonymousRelay.js#0008:resolveAnonUsername","exportIndex":8,"name":"resolveAnonUsername","kind":"function","signature":"resolveAnonUsername(relay, anonIdOrRealId)","summary":"Get the anonymous username for a peer."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabAnonymousRelay.md","moduleTitle":"collab/CollabAnonymousRelay","source":"engine/collab/CollabAnonymousRelay.js","import":"/engine/collab/CollabAnonymousRelay.js","sourceHash":"81a67d05584f59af67db05b09dabe3785d52a3f70a721238212d2c7dcf4fe9b3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabAnonymousRelay.js#0009:sanitizeOutgoingOp","exportIndex":9,"name":"sanitizeOutgoingOp","kind":"function","signature":"sanitizeOutgoingOp(relay, op)","summary":"Sanitize an outgoing op: replace all real peer IDs with anonymous IDs. This is called before broadcasting — peers only see anonIds."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabAnonymousRelay.md","moduleTitle":"collab/CollabAnonymousRelay","source":"engine/collab/CollabAnonymousRelay.js","import":"/engine/collab/CollabAnonymousRelay.js","sourceHash":"81a67d05584f59af67db05b09dabe3785d52a3f70a721238212d2c7dcf4fe9b3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabAnonymousRelay.js#0010:deanonymizeIncomingOp","exportIndex":10,"name":"deanonymizeIncomingOp","kind":"function","signature":"deanonymizeIncomingOp(relay, op)","summary":"De-anonymize an incoming op: resolve anonIds back to real peer IDs. HOST ONLY — used for internal routing decisions. The forwarded copy to other peers keeps the anonIds intact."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabAnonymousRelay.md","moduleTitle":"collab/CollabAnonymousRelay","source":"engine/collab/CollabAnonymousRelay.js","import":"/engine/collab/CollabAnonymousRelay.js","sourceHash":"81a67d05584f59af67db05b09dabe3785d52a3f70a721238212d2c7dcf4fe9b3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabAnonymousRelay.js#0011:reanonymizeForForward","exportIndex":11,"name":"reanonymizeForForward","kind":"function","signature":"reanonymizeForForward(relay, op, senderRealPeerId)","summary":"Re-anonymize an op for forwarding to another peer. The host de-anonymizes for routing, then this re-anonymizes for delivery. This ensures the recipient only sees the sender's anonId."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabAnonymousRelay.md","moduleTitle":"collab/CollabAnonymousRelay","source":"engine/collab/CollabAnonymousRelay.js","import":"/engine/collab/CollabAnonymousRelay.js","sourceHash":"81a67d05584f59af67db05b09dabe3785d52a3f70a721238212d2c7dcf4fe9b3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabAnonymousRelay.js#0012:wrapGarlic","exportIndex":12,"name":"wrapGarlic","kind":"function","signature":"async wrapGarlic(relay, op, recipientAnonId, ownEcdhPrivateKey)","summary":"Wrap an op in garlic encryption for a specific recipient. The payload is encrypted with a shared key derived from our ECDH private key + the recipient's ECDH public key. The relay host can route (via 'to' field) but cannot read the encrypted payload."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabAnonymousRelay.md","moduleTitle":"collab/CollabAnonymousRelay","source":"engine/collab/CollabAnonymousRelay.js","import":"/engine/collab/CollabAnonymousRelay.js","sourceHash":"81a67d05584f59af67db05b09dabe3785d52a3f70a721238212d2c7dcf4fe9b3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabAnonymousRelay.js#0013:unwrapGarlic","exportIndex":13,"name":"unwrapGarlic","kind":"function","signature":"async unwrapGarlic(relay, garlicOp, ownEcdhPrivateKey)","summary":"Unwrap a garlic-encrypted message using our ECDH private key."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabAnonymousRelay.md","moduleTitle":"collab/CollabAnonymousRelay","source":"engine/collab/CollabAnonymousRelay.js","import":"/engine/collab/CollabAnonymousRelay.js","sourceHash":"81a67d05584f59af67db05b09dabe3785d52a3f70a721238212d2c7dcf4fe9b3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabAnonymousRelay.js#0014:buildAnonHello","exportIndex":14,"name":"buildAnonHello","kind":"function","signature":"buildAnonHello(relay, realHello)","summary":"Build an anonymous hello payload. Replaces the real selfId/username with anonymous versions. The ECDH public key is still included (needed for garlic encryption) but it's an ephemeral session key, not tied to persistent identity."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabAnonymousRelay.md","moduleTitle":"collab/CollabAnonymousRelay","source":"engine/collab/CollabAnonymousRelay.js","import":"/engine/collab/CollabAnonymousRelay.js","sourceHash":"81a67d05584f59af67db05b09dabe3785d52a3f70a721238212d2c7dcf4fe9b3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabAnonymousRelay.js#0015:processAnonHello","exportIndex":15,"name":"processAnonHello","kind":"function","signature":"processAnonHello(relay, realPeerId, anonHello)","summary":"Process an anonymous hello on the host side. The host needs to map the anonymous selfId to the real peer connection."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabAnonymousRelay.md","moduleTitle":"collab/CollabAnonymousRelay","source":"engine/collab/CollabAnonymousRelay.js","import":"/engine/collab/CollabAnonymousRelay.js","sourceHash":"81a67d05584f59af67db05b09dabe3785d52a3f70a721238212d2c7dcf4fe9b3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabAnonymousRelay.js#0016:getAnonIceConfig","exportIndex":16,"name":"getAnonIceConfig","kind":"function","signature":"getAnonIceConfig(iceServers)","summary":"Get ICE configuration for anonymous mode. Forces TURN-only relay to prevent IP address leakage."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabAnonymousRelay.md","moduleTitle":"collab/CollabAnonymousRelay","source":"engine/collab/CollabAnonymousRelay.js","import":"/engine/collab/CollabAnonymousRelay.js","sourceHash":"81a67d05584f59af67db05b09dabe3785d52a3f70a721238212d2c7dcf4fe9b3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabAnonymousRelay.js#0017:sanitizePresence","exportIndex":17,"name":"sanitizePresence","kind":"function","signature":"sanitizePresence(relay, presenceEntry)","summary":"Check if a peer list entry should be visible to other peers. In anonymous mode, strip real identifiers from presence data."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabAnonymousRelay.md","moduleTitle":"collab/CollabAnonymousRelay","source":"engine/collab/CollabAnonymousRelay.js","import":"/engine/collab/CollabAnonymousRelay.js","sourceHash":"81a67d05584f59af67db05b09dabe3785d52a3f70a721238212d2c7dcf4fe9b3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabAnonymousRelay.js#0018:getAnonRelayStats","exportIndex":18,"name":"getAnonRelayStats","kind":"function","signature":"getAnonRelayStats(relay)","summary":"Get anonymous relay stats for UI display."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabAnonymousRelay.md","moduleTitle":"collab/CollabAnonymousRelay","source":"engine/collab/CollabAnonymousRelay.js","import":"/engine/collab/CollabAnonymousRelay.js","sourceHash":"81a67d05584f59af67db05b09dabe3785d52a3f70a721238212d2c7dcf4fe9b3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabAnonymousRelay.js#0019:isAnonEnabled","exportIndex":19,"name":"isAnonEnabled","kind":"function","signature":"isAnonEnabled(relay)","summary":"Check if anonymous mode is active on a relay."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabAnonymousRelay.md","moduleTitle":"collab/CollabAnonymousRelay","source":"engine/collab/CollabAnonymousRelay.js","import":"/engine/collab/CollabAnonymousRelay.js","sourceHash":"81a67d05584f59af67db05b09dabe3785d52a3f70a721238212d2c7dcf4fe9b3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabAnonymousRelay.js#0020:generateSessionSeed","exportIndex":20,"name":"generateSessionSeed","kind":"function","signature":"generateSessionSeed()","summary":"Generate a session seed (host only). Shared with all peers so they can build their credential proof."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabAnonymousRelay.md","moduleTitle":"collab/CollabAnonymousRelay","source":"engine/collab/CollabAnonymousRelay.js","import":"/engine/collab/CollabAnonymousRelay.js","sourceHash":"81a67d05584f59af67db05b09dabe3785d52a3f70a721238212d2c7dcf4fe9b3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabAnonymousRelay.js#0021:generateAnonSigningKey","exportIndex":21,"name":"generateAnonSigningKey","kind":"function","signature":"async generateAnonSigningKey()","summary":"Generate a fresh session ECDSA P-256 key pair for anonymous signing. This key is ephemeral — different every session, never persisted."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabAnonymousRelay.md","moduleTitle":"collab/CollabAnonymousRelay","source":"engine/collab/CollabAnonymousRelay.js","import":"/engine/collab/CollabAnonymousRelay.js","sourceHash":"81a67d05584f59af67db05b09dabe3785d52a3f70a721238212d2c7dcf4fe9b3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabAnonymousRelay.js#0022:buildAnonCredential","exportIndex":22,"name":"buildAnonCredential","kind":"function","signature":"async buildAnonCredential(persistentIdentity, sessionSeed)","summary":"Build an anonymous credential: prove we're a legitimate peer by signing the sessionSeed with our persistent ECDSA key. The credential proves: \"I possess the private key for a registered identity\" without revealing WHICH identity (the credential is sent only to the host via E2E encrypted channel, and the host discards the mapping after verification)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabAnonymousRelay.md","moduleTitle":"collab/CollabAnonymousRelay","source":"engine/collab/CollabAnonymousRelay.js","import":"/engine/collab/CollabAnonymousRelay.js","sourceHash":"81a67d05584f59af67db05b09dabe3785d52a3f70a721238212d2c7dcf4fe9b3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabAnonymousRelay.js#0023:verifyAnonCredential","exportIndex":23,"name":"verifyAnonCredential","kind":"function","signature":"async verifyAnonCredential(persistentPubKeyRaw, sessionSeed, credential)","summary":"Verify an anonymous credential (HOST ONLY). Confirms the credential was signed by the persistent key we know for this peer."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabAnonymousRelay.md","moduleTitle":"collab/CollabAnonymousRelay","source":"engine/collab/CollabAnonymousRelay.js","import":"/engine/collab/CollabAnonymousRelay.js","sourceHash":"81a67d05584f59af67db05b09dabe3785d52a3f70a721238212d2c7dcf4fe9b3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabAnonymousRelay.js#0024:signAnonScoreReceipt","exportIndex":24,"name":"signAnonScoreReceipt","kind":"function","signature":"async signAnonScoreReceipt(sessionKeyPair, scoreData)","summary":"Sign a score receipt with the anonymous session key. Uses the same canonical format as signScoreReceipt but with the session key. The anonId is used instead of the real selfId in the signed data."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabAnonymousRelay.md","moduleTitle":"collab/CollabAnonymousRelay","source":"engine/collab/CollabAnonymousRelay.js","import":"/engine/collab/CollabAnonymousRelay.js","sourceHash":"81a67d05584f59af67db05b09dabe3785d52a3f70a721238212d2c7dcf4fe9b3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabAnonymousRelay.js#0025:verifyAnonScoreReceipt","exportIndex":25,"name":"verifyAnonScoreReceipt","kind":"function","signature":"async verifyAnonScoreReceipt(certifiedSessionKeys, scoreData, signature, signerPublicKey = null, nowMs = Date.now()","summary":"Verify an anonymous score receipt against the list of certified session keys. Returns true if ANY certified session key validates the signature. This is the key anonymity property: verifier confirms the receipt is from a legitimate peer without learning WHICH peer."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabAnonymousRelay.md","moduleTitle":"collab/CollabAnonymousRelay","source":"engine/collab/CollabAnonymousRelay.js","import":"/engine/collab/CollabAnonymousRelay.js","sourceHash":"81a67d05584f59af67db05b09dabe3785d52a3f70a721238212d2c7dcf4fe9b3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabAnonymousRelay.js#0026:anonRelayPayloadHash","exportIndex":26,"name":"anonRelayPayloadHash","kind":"function","signature":"async anonRelayPayloadHash(payloadStr)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabAnonymousRelay.md","moduleTitle":"collab/CollabAnonymousRelay","source":"engine/collab/CollabAnonymousRelay.js","import":"/engine/collab/CollabAnonymousRelay.js","sourceHash":"81a67d05584f59af67db05b09dabe3785d52a3f70a721238212d2c7dcf4fe9b3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabAnonymousRelay.js#0027:signAnonCriticalOp","exportIndex":27,"name":"signAnonCriticalOp","kind":"function","signature":"async signAnonCriticalOp(sessionKeyPair, sessionPubKeyRaw, op, anonId)","summary":"Sign a critical op with the anonymous session key. Same canonical format as signCriticalOp but uses session key + anonId."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabAnonymousRelay.md","moduleTitle":"collab/CollabAnonymousRelay","source":"engine/collab/CollabAnonymousRelay.js","import":"/engine/collab/CollabAnonymousRelay.js","sourceHash":"81a67d05584f59af67db05b09dabe3785d52a3f70a721238212d2c7dcf4fe9b3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabAnonymousRelay.js#0028:verifyAnonCriticalOp","exportIndex":28,"name":"verifyAnonCriticalOp","kind":"function","signature":"async verifyAnonCriticalOp(op, senderAnonId, certifiedSessionKeys, relay = null, nowMs = Date.now()","summary":"Verify a critical op signed with an anonymous session key. Checks the signature against ALL certified session keys."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabAnonymousRelay.md","moduleTitle":"collab/CollabAnonymousRelay","source":"engine/collab/CollabAnonymousRelay.js","import":"/engine/collab/CollabAnonymousRelay.js","sourceHash":"81a67d05584f59af67db05b09dabe3785d52a3f70a721238212d2c7dcf4fe9b3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabAnonymousRelay.js#0029:initAnonCredentials","exportIndex":29,"name":"initAnonCredentials","kind":"function","signature":"initAnonCredentials(relay, sessionSeed, ownSessionKey)","summary":"Initialize the anonymous credential state on the relay. Called after the relay is created and the host generates a session seed."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabAnonymousRelay.md","moduleTitle":"collab/CollabAnonymousRelay","source":"engine/collab/CollabAnonymousRelay.js","import":"/engine/collab/CollabAnonymousRelay.js","sourceHash":"81a67d05584f59af67db05b09dabe3785d52a3f70a721238212d2c7dcf4fe9b3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabAnonymousRelay.js#0030:certifySessionKey","exportIndex":30,"name":"certifySessionKey","kind":"function","signature":"certifySessionKey(relay, sessionPubKeyRaw)","summary":"Add a verified session public key to the certified list (HOST). Called after the host verifies a peer's anonymous credential."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabAnonymousRelay.md","moduleTitle":"collab/CollabAnonymousRelay","source":"engine/collab/CollabAnonymousRelay.js","import":"/engine/collab/CollabAnonymousRelay.js","sourceHash":"81a67d05584f59af67db05b09dabe3785d52a3f70a721238212d2c7dcf4fe9b3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabAnonymousRelay.js#0031:setCertifiedSessionKeys","exportIndex":31,"name":"setCertifiedSessionKeys","kind":"function","signature":"setCertifiedSessionKeys(relay, keyList)","summary":"Set the full certified session key list (NON-HOST peers). Called when the host broadcasts the shuffled list of all certified keys."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabAnonymousRelay.md","moduleTitle":"collab/CollabAnonymousRelay","source":"engine/collab/CollabAnonymousRelay.js","import":"/engine/collab/CollabAnonymousRelay.js","sourceHash":"81a67d05584f59af67db05b09dabe3785d52a3f70a721238212d2c7dcf4fe9b3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabAnonymousRelay.js#0032:getCertifiedSessionKeys","exportIndex":32,"name":"getCertifiedSessionKeys","kind":"function","signature":"getCertifiedSessionKeys(relay)","summary":"Get the list of certified session keys."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabAnonymousRelay.md","moduleTitle":"collab/CollabAnonymousRelay","source":"engine/collab/CollabAnonymousRelay.js","import":"/engine/collab/CollabAnonymousRelay.js","sourceHash":"81a67d05584f59af67db05b09dabe3785d52a3f70a721238212d2c7dcf4fe9b3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabAnonymousRelay.js#0033:buildAnonCredentialOp","exportIndex":33,"name":"buildAnonCredentialOp","kind":"function","signature":"buildAnonCredentialOp(relay, credential)","summary":"Build an __anon_credential__ op for the host. Sent after joining to prove legitimacy and register session key."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabAnonymousRelay.md","moduleTitle":"collab/CollabAnonymousRelay","source":"engine/collab/CollabAnonymousRelay.js","import":"/engine/collab/CollabAnonymousRelay.js","sourceHash":"81a67d05584f59af67db05b09dabe3785d52a3f70a721238212d2c7dcf4fe9b3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabAnonymousRelay.js#0034:buildAnonKeylistOp","exportIndex":34,"name":"buildAnonKeylistOp","kind":"function","signature":"buildAnonKeylistOp(relay)","summary":"Build an __anon_keylist__ op to broadcast the certified session key list. HOST ONLY — sent to all peers after verifying credentials."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabAnonymousRelay.md","moduleTitle":"collab/CollabAnonymousRelay","source":"engine/collab/CollabAnonymousRelay.js","import":"/engine/collab/CollabAnonymousRelay.js","sourceHash":"81a67d05584f59af67db05b09dabe3785d52a3f70a721238212d2c7dcf4fe9b3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabAnonymousRelay.js#0035:buildAnonScoreReportOp","exportIndex":35,"name":"buildAnonScoreReportOp","kind":"function","signature":"async buildAnonScoreReportOp(relay, targetAnonId, score)","summary":"Build an anonymous score report op. Uses the session key for signing instead of the persistent ECDSA key."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabAnonymousRelay.md","moduleTitle":"collab/CollabAnonymousRelay","source":"engine/collab/CollabAnonymousRelay.js","import":"/engine/collab/CollabAnonymousRelay.js","sourceHash":"81a67d05584f59af67db05b09dabe3785d52a3f70a721238212d2c7dcf4fe9b3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabAnonymousRelay.js#0036:isAnonCredentialsReady","exportIndex":36,"name":"isAnonCredentialsReady","kind":"function","signature":"isAnonCredentialsReady(relay)","summary":"Check if anonymous credentials are ready for signing/verification."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabAnonymousRelay.md","moduleTitle":"collab/CollabAnonymousRelay","source":"engine/collab/CollabAnonymousRelay.js","import":"/engine/collab/CollabAnonymousRelay.js","sourceHash":"81a67d05584f59af67db05b09dabe3785d52a3f70a721238212d2c7dcf4fe9b3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabAnonymousRelay.js#0037:resetAnonymousRelay","exportIndex":37,"name":"resetAnonymousRelay","kind":"function","signature":"resetAnonymousRelay(relay)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabAnonymousRelay.md","moduleTitle":"collab/CollabAnonymousRelay","source":"engine/collab/CollabAnonymousRelay.js","import":"/engine/collab/CollabAnonymousRelay.js","sourceHash":"81a67d05584f59af67db05b09dabe3785d52a3f70a721238212d2c7dcf4fe9b3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabAnonymousRelay.js#0038:destroyAnonymousRelay","exportIndex":38,"name":"destroyAnonymousRelay","kind":"function","signature":"destroyAnonymousRelay(relay)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabAnonymousRelay.md","moduleTitle":"collab/CollabAnonymousRelay","source":"engine/collab/CollabAnonymousRelay.js","import":"/engine/collab/CollabAnonymousRelay.js","sourceHash":"81a67d05584f59af67db05b09dabe3785d52a3f70a721238212d2c7dcf4fe9b3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabAnonymousRelay.js#0039:COLLAB_ANON_RELAY_LIMITS","exportIndex":39,"name":"COLLAB_ANON_RELAY_LIMITS","kind":"constant","signature":"COLLAB_ANON_RELAY_LIMITS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCameraInterp.md","moduleTitle":"collab/CollabCameraInterp","source":"engine/collab/CollabCameraInterp.js","import":"/engine/collab/CollabCameraInterp.js","sourceHash":"537ff4bfadd967778b7f450f4feedc686dd6f4090447540fb0b298b5398d466e","subsystem":"engine","recordType":"api-module","id":"module:engine/collab/CollabCameraInterp.js","title":"collab/CollabCameraInterp","summary":"CollabCameraInterp.js Hermite-spline camera interpolation for smooth remote peer camera rendering. Based on Glenn Fiedler's \"Snapshot Interpolation\" (Gaffer on Games, GDC 2015): - Buffer camera snapshots and render slightly behind real-time - Use cubic Hermite splines (position + velocity at each sample) for C1 continuity - Adaptive jitter compensation adjusts the playback delay automatically Hermite basis: H(t) = (2t³ - 3t² + 1)·p0  +  (t³ - 2t² + t)·v0·Δt + (-2t³ + 3t²)·p1      +  (t³ - t²)·v1·Δt This guarantees the curve passes through p0 and p1 with matching velocities, eliminating the 1st-order discontinuity artifacts that linear interpolation causes.","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCameraInterp.md","moduleTitle":"collab/CollabCameraInterp","source":"engine/collab/CollabCameraInterp.js","import":"/engine/collab/CollabCameraInterp.js","sourceHash":"537ff4bfadd967778b7f450f4feedc686dd6f4090447540fb0b298b5398d466e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCameraInterp.js#0000:createCameraInterpState","exportIndex":0,"name":"createCameraInterpState","kind":"function","signature":"createCameraInterpState()","summary":"Create the global camera interpolation state. Attach to editor.collab or pass around explicitly."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCameraInterp.md","moduleTitle":"collab/CollabCameraInterp","source":"engine/collab/CollabCameraInterp.js","import":"/engine/collab/CollabCameraInterp.js","sourceHash":"537ff4bfadd967778b7f450f4feedc686dd6f4090447540fb0b298b5398d466e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCameraInterp.js#0001:pushCameraSnapshot","exportIndex":1,"name":"pushCameraSnapshot","kind":"function","signature":"pushCameraSnapshot(state, peerId, pos, target, vel, targetVel, remoteTs)","summary":"Push a camera_sync snapshot into the interpolation buffer. Call this from the camera_sync op handler instead of snapping peer.camera directly."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCameraInterp.md","moduleTitle":"collab/CollabCameraInterp","source":"engine/collab/CollabCameraInterp.js","import":"/engine/collab/CollabCameraInterp.js","sourceHash":"537ff4bfadd967778b7f450f4feedc686dd6f4090447540fb0b298b5398d466e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCameraInterp.js#0002:getInterpolatedCamera","exportIndex":2,"name":"getInterpolatedCamera","kind":"function","signature":"getInterpolatedCamera(state, peerId)","summary":"Get the smoothly interpolated camera position for a remote peer. Call this every render frame from CollabOverlayRenderer."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCameraInterp.md","moduleTitle":"collab/CollabCameraInterp","source":"engine/collab/CollabCameraInterp.js","import":"/engine/collab/CollabCameraInterp.js","sourceHash":"537ff4bfadd967778b7f450f4feedc686dd6f4090447540fb0b298b5398d466e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCameraInterp.js#0003:pruneStaleInterpBuffers","exportIndex":3,"name":"pruneStaleInterpBuffers","kind":"function","signature":"pruneStaleInterpBuffers(state)","summary":"Remove stale peer buffers. Call periodically (~1Hz)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCameraInterp.md","moduleTitle":"collab/CollabCameraInterp","source":"engine/collab/CollabCameraInterp.js","import":"/engine/collab/CollabCameraInterp.js","sourceHash":"537ff4bfadd967778b7f450f4feedc686dd6f4090447540fb0b298b5398d466e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCameraInterp.js#0004:removePeerInterpBuffer","exportIndex":4,"name":"removePeerInterpBuffer","kind":"function","signature":"removePeerInterpBuffer(state, peerId)","summary":"Remove a specific peer's buffer (on disconnect)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCameraInterp.md","moduleTitle":"collab/CollabCameraInterp","source":"engine/collab/CollabCameraInterp.js","import":"/engine/collab/CollabCameraInterp.js","sourceHash":"537ff4bfadd967778b7f450f4feedc686dd6f4090447540fb0b298b5398d466e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCameraInterp.js#0005:getInterpStats","exportIndex":5,"name":"getInterpStats","kind":"function","signature":"getInterpStats(state)","summary":"Get interpolation stats for UI display."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCameraInterp.md","moduleTitle":"collab/CollabCameraInterp","source":"engine/collab/CollabCameraInterp.js","import":"/engine/collab/CollabCameraInterp.js","sourceHash":"537ff4bfadd967778b7f450f4feedc686dd6f4090447540fb0b298b5398d466e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCameraInterp.js#0006:destroyCameraInterpState","exportIndex":6,"name":"destroyCameraInterpState","kind":"function","signature":"destroyCameraInterpState(state)","summary":"Destroy all state."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCodec.md","moduleTitle":"collab/CollabCodec","source":"engine/collab/CollabCodec.js","import":"/engine/collab/CollabCodec.js","sourceHash":"0392294f129cd89df5b61802c3909f324eb88d8fd328d2c26a0425a96b5dd45b","subsystem":"engine","recordType":"api-module","id":"module:engine/collab/CollabCodec.js","title":"collab/CollabCodec","summary":"CollabCodec.js Inline MessagePack encoder/decoder for binary collab messages. Zero dependencies — implements msgpack spec directly. Supports: null, bool, int (safe integer range), float64, string, bin (Uint8Array), array, map (plain objects). Special extension type 0x01: Float32Array with canonical little-endian bytes. Usage: import { encode, decode } from './CollabCodec.js'; const bytes = encode({ ch: 'ops', data: { type: 'transform', pos: new Float32Array([1,2,3]) } }); const obj = decode(bytes);","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCodec.md","moduleTitle":"collab/CollabCodec","source":"engine/collab/CollabCodec.js","import":"/engine/collab/CollabCodec.js","sourceHash":"0392294f129cd89df5b61802c3909f324eb88d8fd328d2c26a0425a96b5dd45b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCodec.js#0000:encode","exportIndex":0,"name":"encode","kind":"function","signature":"encode(value, options = {})","summary":"Encode a JS value into a msgpack Uint8Array."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCodec.md","moduleTitle":"collab/CollabCodec","source":"engine/collab/CollabCodec.js","import":"/engine/collab/CollabCodec.js","sourceHash":"0392294f129cd89df5b61802c3909f324eb88d8fd328d2c26a0425a96b5dd45b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCodec.js#0001:codecEncodeReport","exportIndex":1,"name":"codecEncodeReport","kind":"function","signature":"codecEncodeReport(value, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCodec.md","moduleTitle":"collab/CollabCodec","source":"engine/collab/CollabCodec.js","import":"/engine/collab/CollabCodec.js","sourceHash":"0392294f129cd89df5b61802c3909f324eb88d8fd328d2c26a0425a96b5dd45b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCodec.js#0002:decode","exportIndex":2,"name":"decode","kind":"function","signature":"decode(data, options = {})","summary":"Decode a msgpack Uint8Array (or ArrayBuffer) back into a JS value."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCodec.md","moduleTitle":"collab/CollabCodec","source":"engine/collab/CollabCodec.js","import":"/engine/collab/CollabCodec.js","sourceHash":"0392294f129cd89df5b61802c3909f324eb88d8fd328d2c26a0425a96b5dd45b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCodec.js#0003:codecDecodeReport","exportIndex":3,"name":"codecDecodeReport","kind":"function","signature":"codecDecodeReport(data, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCodec.md","moduleTitle":"collab/CollabCodec","source":"engine/collab/CollabCodec.js","import":"/engine/collab/CollabCodec.js","sourceHash":"0392294f129cd89df5b61802c3909f324eb88d8fd328d2c26a0425a96b5dd45b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCodec.js#0004:COLLAB_CODEC_LIMITS","exportIndex":4,"name":"COLLAB_CODEC_LIMITS","kind":"constant","signature":"COLLAB_CODEC_LIMITS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCore.md","moduleTitle":"collab/CollabCore","source":"engine/collab/CollabCore.js","import":"/engine/collab/CollabCore.js","sourceHash":"145b1d28121779715f435b47d8810d202256f23b6a1409e5f7c929daa3390801","subsystem":"engine","recordType":"api-module","id":"module:engine/collab/CollabCore.js","title":"collab/CollabCore","summary":"CollabCore.js WebRTC peer connection management. Manages RTCPeerConnection instances, data channels, and reconnection. Two data channels per peer: 'ops'      — reliable, ordered (scene operations) 'presence' — unreliable, unordered (camera/selection at 10Hz)","exportCount":29}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCore.md","moduleTitle":"collab/CollabCore","source":"engine/collab/CollabCore.js","import":"/engine/collab/CollabCore.js","sourceHash":"145b1d28121779715f435b47d8810d202256f23b6a1409e5f7c929daa3390801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCore.js#0000:createCollabCore","exportIndex":0,"name":"createCollabCore","kind":"function","signature":"createCollabCore(config)","summary":"Create a collab core instance. config: { projectId, selfId, username, onOp, onPresence, onPeerDiscovered, shouldConnectPeer, onPeerJoin, onPeerLeave }"}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCore.md","moduleTitle":"collab/CollabCore","source":"engine/collab/CollabCore.js","import":"/engine/collab/CollabCore.js","sourceHash":"145b1d28121779715f435b47d8810d202256f23b6a1409e5f7c929daa3390801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCore.js#0001:startCollab","exportIndex":1,"name":"startCollab","kind":"function","signature":"startCollab(core)","summary":"Start signaling and begin peer discovery."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCore.md","moduleTitle":"collab/CollabCore","source":"engine/collab/CollabCore.js","import":"/engine/collab/CollabCore.js","sourceHash":"145b1d28121779715f435b47d8810d202256f23b6a1409e5f7c929daa3390801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCore.js#0002:forceDiscovery","exportIndex":2,"name":"forceDiscovery","kind":"function","signature":"forceDiscovery(core)","summary":"Force an immediate discovery pass: re-announce on all signaling tiers right now. Lets an app-layer \"Connect now\" find a known contact without waiting for the periodic announce cycle. Does not tear down existing peers."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCore.md","moduleTitle":"collab/CollabCore","source":"engine/collab/CollabCore.js","import":"/engine/collab/CollabCore.js","sourceHash":"145b1d28121779715f435b47d8810d202256f23b6a1409e5f7c929daa3390801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCore.js#0003:broadcastOp","exportIndex":3,"name":"broadcastOp","kind":"function","signature":"broadcastOp(core, op)","summary":"Broadcast an op to all connected peers. Transport priority: 1. FastChannel (same-origin BroadcastChannel) — <1ms 2. Gossip mesh (partial mesh / supernode mode) — K neighbors, O(log N) delivery 3. Full mesh WebRTC — direct to all (≤6 peers)"}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCore.md","moduleTitle":"collab/CollabCore","source":"engine/collab/CollabCore.js","import":"/engine/collab/CollabCore.js","sourceHash":"145b1d28121779715f435b47d8810d202256f23b6a1409e5f7c929daa3390801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCore.js#0004:broadcastPresence","exportIndex":4,"name":"broadcastPresence","kind":"function","signature":"broadcastPresence(core, presenceData)","summary":"Broadcast presence data to all connected peers (unreliable channel). Prefers fast channel for same-origin peers."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCore.md","moduleTitle":"collab/CollabCore","source":"engine/collab/CollabCore.js","import":"/engine/collab/CollabCore.js","sourceHash":"145b1d28121779715f435b47d8810d202256f23b6a1409e5f7c929daa3390801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCore.js#0005:collabChunkEnvelopeReport","exportIndex":5,"name":"collabChunkEnvelopeReport","kind":"function","signature":"collabChunkEnvelopeReport(data)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCore.md","moduleTitle":"collab/CollabCore","source":"engine/collab/CollabCore.js","import":"/engine/collab/CollabCore.js","sourceHash":"145b1d28121779715f435b47d8810d202256f23b6a1409e5f7c929daa3390801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCore.js#0006:sendToPeer","exportIndex":6,"name":"sendToPeer","kind":"function","signature":"sendToPeer(core, peerId, data)","summary":"Send data to a specific peer only. Prefers fast channel for same-origin peers. Auto-chunks large messages to avoid SCTP size limits."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCore.md","moduleTitle":"collab/CollabCore","source":"engine/collab/CollabCore.js","import":"/engine/collab/CollabCore.js","sourceHash":"145b1d28121779715f435b47d8810d202256f23b6a1409e5f7c929daa3390801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCore.js#0007:relayOp","exportIndex":7,"name":"relayOp","kind":"function","signature":"relayOp(core, fromPeerId, op)","summary":"Relay an op from one peer to all other peers (host-only, relay mode). Optionally filters by spatial interest set."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCore.md","moduleTitle":"collab/CollabCore","source":"engine/collab/CollabCore.js","import":"/engine/collab/CollabCore.js","sourceHash":"145b1d28121779715f435b47d8810d202256f23b6a1409e5f7c929daa3390801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCore.js#0008:computeDynamicCapacity","exportIndex":8,"name":"computeDynamicCapacity","kind":"function","signature":"computeDynamicCapacity(core, peerReputation)","summary":"Compute the dynamic peer capacity based on connection quality. Fast channel peers are free. Trusted peers expand the mesh limit."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCore.md","moduleTitle":"collab/CollabCore","source":"engine/collab/CollabCore.js","import":"/engine/collab/CollabCore.js","sourceHash":"145b1d28121779715f435b47d8810d202256f23b6a1409e5f7c929daa3390801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCore.js#0009:collabRelayThresholdReport","exportIndex":9,"name":"collabRelayThresholdReport","kind":"function","signature":"collabRelayThresholdReport(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCore.md","moduleTitle":"collab/CollabCore","source":"engine/collab/CollabCore.js","import":"/engine/collab/CollabCore.js","sourceHash":"145b1d28121779715f435b47d8810d202256f23b6a1409e5f7c929daa3390801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCore.js#0010:collabPeerScoreReport","exportIndex":10,"name":"collabPeerScoreReport","kind":"function","signature":"collabPeerScoreReport(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCore.md","moduleTitle":"collab/CollabCore","source":"engine/collab/CollabCore.js","import":"/engine/collab/CollabCore.js","sourceHash":"145b1d28121779715f435b47d8810d202256f23b6a1409e5f7c929daa3390801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCore.js#0011:checkRelayMode","exportIndex":11,"name":"checkRelayMode","kind":"function","signature":"checkRelayMode(core, peerReputation)","summary":"Check peer count and toggle relay mode if threshold is crossed. Now uses dynamic capacity — fast peers don't count, trusted peers expand the limit."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCore.md","moduleTitle":"collab/CollabCore","source":"engine/collab/CollabCore.js","import":"/engine/collab/CollabCore.js","sourceHash":"145b1d28121779715f435b47d8810d202256f23b6a1409e5f7c929daa3390801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCore.js#0012:setCoreRelayConfig","exportIndex":12,"name":"setCoreRelayConfig","kind":"function","signature":"setCoreRelayConfig(core, opts)","summary":"Set the spatial authority reference for interest-filtered relay."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCore.md","moduleTitle":"collab/CollabCore","source":"engine/collab/CollabCore.js","import":"/engine/collab/CollabCore.js","sourceHash":"145b1d28121779715f435b47d8810d202256f23b6a1409e5f7c929daa3390801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCore.js#0013:setCoreFastChannel","exportIndex":13,"name":"setCoreFastChannel","kind":"function","signature":"setCoreFastChannel(core, fastChannel)","summary":"Set the fast channel reference on the core. Called by EditorCollab after creating the fast channel."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCore.md","moduleTitle":"collab/CollabCore","source":"engine/collab/CollabCore.js","import":"/engine/collab/CollabCore.js","sourceHash":"145b1d28121779715f435b47d8810d202256f23b6a1409e5f7c929daa3390801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCore.js#0014:setCoreTopology","exportIndex":14,"name":"setCoreTopology","kind":"function","signature":"setCoreTopology(core, topology)","summary":"Set the mesh topology reference on the core. Called by EditorCollab after creating the topology manager."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCore.md","moduleTitle":"collab/CollabCore","source":"engine/collab/CollabCore.js","import":"/engine/collab/CollabCore.js","sourceHash":"145b1d28121779715f435b47d8810d202256f23b6a1409e5f7c929daa3390801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCore.js#0015:isPeerTrusted","exportIndex":15,"name":"isPeerTrusted","kind":"function","signature":"isPeerTrusted(core, peerId, peerScore)","summary":"Check if a peer is trusted (high reputation) and should get a direct connection even in relay mode. Trusted peers bypass the relay host for lower latency."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCore.md","moduleTitle":"collab/CollabCore","source":"engine/collab/CollabCore.js","import":"/engine/collab/CollabCore.js","sourceHash":"145b1d28121779715f435b47d8810d202256f23b6a1409e5f7c929daa3390801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCore.js#0016:getPeerConnectionTier","exportIndex":16,"name":"getPeerConnectionTier","kind":"function","signature":"getPeerConnectionTier(core, peerId, peerScore, fastChannel)","summary":"Get the connection tier label for a peer."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCore.md","moduleTitle":"collab/CollabCore","source":"engine/collab/CollabCore.js","import":"/engine/collab/CollabCore.js","sourceHash":"145b1d28121779715f435b47d8810d202256f23b6a1409e5f7c929daa3390801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCore.js#0017:getMaxBufferedAmount","exportIndex":17,"name":"getMaxBufferedAmount","kind":"function","signature":"getMaxBufferedAmount(core)","summary":"Get the maximum bufferedAmount across all peer ops channels. Used by CollabMessageRouter for backpressure detection."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCore.md","moduleTitle":"collab/CollabCore","source":"engine/collab/CollabCore.js","import":"/engine/collab/CollabCore.js","sourceHash":"145b1d28121779715f435b47d8810d202256f23b6a1409e5f7c929daa3390801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCore.js#0018:collabBufferedAmountReport","exportIndex":18,"name":"collabBufferedAmountReport","kind":"function","signature":"collabBufferedAmountReport(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCore.md","moduleTitle":"collab/CollabCore","source":"engine/collab/CollabCore.js","import":"/engine/collab/CollabCore.js","sourceHash":"145b1d28121779715f435b47d8810d202256f23b6a1409e5f7c929daa3390801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCore.js#0019:getSelfId","exportIndex":19,"name":"getSelfId","kind":"function","signature":"getSelfId(core)","summary":"Get the local peer ID."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCore.md","moduleTitle":"collab/CollabCore","source":"engine/collab/CollabCore.js","import":"/engine/collab/CollabCore.js","sourceHash":"145b1d28121779715f435b47d8810d202256f23b6a1409e5f7c929daa3390801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCore.js#0020:getPeers","exportIndex":20,"name":"getPeers","kind":"function","signature":"getPeers(core)","summary":"Get all connected peers."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCore.md","moduleTitle":"collab/CollabCore","source":"engine/collab/CollabCore.js","import":"/engine/collab/CollabCore.js","sourceHash":"145b1d28121779715f435b47d8810d202256f23b6a1409e5f7c929daa3390801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCore.js#0021:connectCollabPeer","exportIndex":21,"name":"connectCollabPeer","kind":"function","signature":"connectCollabPeer(core, peerId, username = 'Remote')","summary":"Begin a targeted WebRTC connection to an already-discovered peer."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCore.md","moduleTitle":"collab/CollabCore","source":"engine/collab/CollabCore.js","import":"/engine/collab/CollabCore.js","sourceHash":"145b1d28121779715f435b47d8810d202256f23b6a1409e5f7c929daa3390801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCore.js#0022:disconnectCollabPeer","exportIndex":22,"name":"disconnectCollabPeer","kind":"function","signature":"disconnectCollabPeer(core, peerId)","summary":"Close one direct peer connection without tearing down discovery."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCore.md","moduleTitle":"collab/CollabCore","source":"engine/collab/CollabCore.js","import":"/engine/collab/CollabCore.js","sourceHash":"145b1d28121779715f435b47d8810d202256f23b6a1409e5f7c929daa3390801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCore.js#0023:observeCollabPeerMetrics","exportIndex":23,"name":"observeCollabPeerMetrics","kind":"function","signature":"async observeCollabPeerMetrics(core, peerId)","summary":"Collect locally observed transport quality. Remote peers cannot supply or inflate these values, which makes them suitable input for topology roles."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCore.md","moduleTitle":"collab/CollabCore","source":"engine/collab/CollabCore.js","import":"/engine/collab/CollabCore.js","sourceHash":"145b1d28121779715f435b47d8810d202256f23b6a1409e5f7c929daa3390801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCore.js#0024:destroyCollabCore","exportIndex":24,"name":"destroyCollabCore","kind":"function","signature":"destroyCollabCore(core)","summary":"Destroy all connections and signaling."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCore.md","moduleTitle":"collab/CollabCore","source":"engine/collab/CollabCore.js","import":"/engine/collab/CollabCore.js","sourceHash":"145b1d28121779715f435b47d8810d202256f23b6a1409e5f7c929daa3390801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCore.js#0025:deriveCollabChannelId","exportIndex":25,"name":"deriveCollabChannelId","kind":"function","signature":"async deriveCollabChannelId(selfId, peerId)","summary":"Derive a shared AES-256-GCM key from ECDH key exchange. Called after hello handshake when both peers have ECDH public keys."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCore.md","moduleTitle":"collab/CollabCore","source":"engine/collab/CollabCore.js","import":"/engine/collab/CollabCore.js","sourceHash":"145b1d28121779715f435b47d8810d202256f23b6a1409e5f7c929daa3390801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCore.js#0026:collabReconnectPlanReport","exportIndex":26,"name":"collabReconnectPlanReport","kind":"function","signature":"collabReconnectPlanReport(attempts)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCore.md","moduleTitle":"collab/CollabCore","source":"engine/collab/CollabCore.js","import":"/engine/collab/CollabCore.js","sourceHash":"145b1d28121779715f435b47d8810d202256f23b6a1409e5f7c929daa3390801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCore.js#0027:collabHeartbeatReport","exportIndex":27,"name":"collabHeartbeatReport","kind":"function","signature":"collabHeartbeatReport(lastPongMs, timestampMs)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCore.md","moduleTitle":"collab/CollabCore","source":"engine/collab/CollabCore.js","import":"/engine/collab/CollabCore.js","sourceHash":"145b1d28121779715f435b47d8810d202256f23b6a1409e5f7c929daa3390801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCore.js#0028:broadcastGoodbye","exportIndex":28,"name":"broadcastGoodbye","kind":"function","signature":"broadcastGoodbye(core)","summary":"Broadcast a graceful goodbye to all peers before leaving. This lets other peers immediately remove us instead of waiting for heartbeat timeout or WebRTC state change."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCrypto.md","moduleTitle":"collab/CollabCrypto","source":"engine/collab/CollabCrypto.js","import":"/engine/collab/CollabCrypto.js","sourceHash":"a5e0167ce58d23341f7c29dcd7518fb05ba81604f9d7228dec8059a25444e548","subsystem":"engine","recordType":"api-module","id":"module:engine/collab/CollabCrypto.js","title":"collab/CollabCrypto","summary":"CollabCrypto.js ECDH P-256 key exchange + AES-256-GCM encryption for P2P collab channels. Uses the SubtleCrypto API with shared finite-number admission. Flow: 1. Each peer calls generateKeyPair() on connect 2. Peers exchange public keys during hello handshake 3. deriveSharedKey() produces an AES-256-GCM key via ECDH + HKDF 4. All subsequent messages: encrypt() before send, decrypt() on receive 5. HMAC for challenge-response authentication during handshake Nonce scheme: 12 bytes = [8-byte channelId | 4-byte monotonic counter] Counter MUST never repeat for a given key.","exportCount":18}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCrypto.md","moduleTitle":"collab/CollabCrypto","source":"engine/collab/CollabCrypto.js","import":"/engine/collab/CollabCrypto.js","sourceHash":"a5e0167ce58d23341f7c29dcd7518fb05ba81604f9d7228dec8059a25444e548","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCrypto.js#0000:generateKeyPair","exportIndex":0,"name":"generateKeyPair","kind":"function","signature":"async generateKeyPair()","summary":"Generate an ECDH P-256 key pair for key exchange."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCrypto.md","moduleTitle":"collab/CollabCrypto","source":"engine/collab/CollabCrypto.js","import":"/engine/collab/CollabCrypto.js","sourceHash":"a5e0167ce58d23341f7c29dcd7518fb05ba81604f9d7228dec8059a25444e548","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCrypto.js#0001:importPublicKey","exportIndex":1,"name":"importPublicKey","kind":"function","signature":"async importPublicKey(rawKey)","summary":"Import a raw public key (65 bytes) received from a remote peer."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCrypto.md","moduleTitle":"collab/CollabCrypto","source":"engine/collab/CollabCrypto.js","import":"/engine/collab/CollabCrypto.js","sourceHash":"a5e0167ce58d23341f7c29dcd7518fb05ba81604f9d7228dec8059a25444e548","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCrypto.js#0002:deriveSharedKey","exportIndex":2,"name":"deriveSharedKey","kind":"function","signature":"async deriveSharedKey(privateKey, remotePublicKey, salt)","summary":"Derive a shared AES-256-GCM key from our private key + remote public key. Optionally mixes in a room password for authentication."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCrypto.md","moduleTitle":"collab/CollabCrypto","source":"engine/collab/CollabCrypto.js","import":"/engine/collab/CollabCrypto.js","sourceHash":"a5e0167ce58d23341f7c29dcd7518fb05ba81604f9d7228dec8059a25444e548","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCrypto.js#0003:deriveHmacKey","exportIndex":3,"name":"deriveHmacKey","kind":"function","signature":"async deriveHmacKey(privateKey, remotePublicKey, salt)","summary":"Derive an HMAC-SHA256 key from ECDH shared bits for challenge-response auth."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCrypto.md","moduleTitle":"collab/CollabCrypto","source":"engine/collab/CollabCrypto.js","import":"/engine/collab/CollabCrypto.js","sourceHash":"a5e0167ce58d23341f7c29dcd7518fb05ba81604f9d7228dec8059a25444e548","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCrypto.js#0004:cryptoNonceReport","exportIndex":4,"name":"cryptoNonceReport","kind":"function","signature":"cryptoNonceReport(counter, channelId = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCrypto.md","moduleTitle":"collab/CollabCrypto","source":"engine/collab/CollabCrypto.js","import":"/engine/collab/CollabCrypto.js","sourceHash":"a5e0167ce58d23341f7c29dcd7518fb05ba81604f9d7228dec8059a25444e548","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCrypto.js#0005:encryptedMessageReport","exportIndex":5,"name":"encryptedMessageReport","kind":"function","signature":"encryptedMessageReport(message, channelId = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCrypto.md","moduleTitle":"collab/CollabCrypto","source":"engine/collab/CollabCrypto.js","import":"/engine/collab/CollabCrypto.js","sourceHash":"a5e0167ce58d23341f7c29dcd7518fb05ba81604f9d7228dec8059a25444e548","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCrypto.js#0006:nextCryptoSendCounter","exportIndex":6,"name":"nextCryptoSendCounter","kind":"function","signature":"nextCryptoSendCounter(state)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCrypto.md","moduleTitle":"collab/CollabCrypto","source":"engine/collab/CollabCrypto.js","import":"/engine/collab/CollabCrypto.js","sourceHash":"a5e0167ce58d23341f7c29dcd7518fb05ba81604f9d7228dec8059a25444e548","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCrypto.js#0007:resetCryptoCounters","exportIndex":7,"name":"resetCryptoCounters","kind":"function","signature":"resetCryptoCounters(state)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCrypto.md","moduleTitle":"collab/CollabCrypto","source":"engine/collab/CollabCrypto.js","import":"/engine/collab/CollabCrypto.js","sourceHash":"a5e0167ce58d23341f7c29dcd7518fb05ba81604f9d7228dec8059a25444e548","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCrypto.js#0008:encrypt","exportIndex":8,"name":"encrypt","kind":"function","signature":"async encrypt(key, plaintext, counter, channelId)","summary":"Encrypt a msgpack payload with AES-256-GCM."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCrypto.md","moduleTitle":"collab/CollabCrypto","source":"engine/collab/CollabCrypto.js","import":"/engine/collab/CollabCrypto.js","sourceHash":"a5e0167ce58d23341f7c29dcd7518fb05ba81604f9d7228dec8059a25444e548","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCrypto.js#0009:decrypt","exportIndex":9,"name":"decrypt","kind":"function","signature":"async decrypt(key, message, channelId, replayState = null)","summary":"Decrypt an AES-256-GCM encrypted message."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCrypto.md","moduleTitle":"collab/CollabCrypto","source":"engine/collab/CollabCrypto.js","import":"/engine/collab/CollabCrypto.js","sourceHash":"a5e0167ce58d23341f7c29dcd7518fb05ba81604f9d7228dec8059a25444e548","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCrypto.js#0010:generateChallenge","exportIndex":10,"name":"generateChallenge","kind":"function","signature":"generateChallenge()","summary":"Generate a random 32-byte challenge."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCrypto.md","moduleTitle":"collab/CollabCrypto","source":"engine/collab/CollabCrypto.js","import":"/engine/collab/CollabCrypto.js","sourceHash":"a5e0167ce58d23341f7c29dcd7518fb05ba81604f9d7228dec8059a25444e548","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCrypto.js#0011:signChallenge","exportIndex":11,"name":"signChallenge","kind":"function","signature":"async signChallenge(hmacKey, challenge)","summary":"Sign a challenge with HMAC-SHA256."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCrypto.md","moduleTitle":"collab/CollabCrypto","source":"engine/collab/CollabCrypto.js","import":"/engine/collab/CollabCrypto.js","sourceHash":"a5e0167ce58d23341f7c29dcd7518fb05ba81604f9d7228dec8059a25444e548","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCrypto.js#0012:verifyChallenge","exportIndex":12,"name":"verifyChallenge","kind":"function","signature":"async verifyChallenge(hmacKey, challenge, signature)","summary":"Verify a challenge signature."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCrypto.md","moduleTitle":"collab/CollabCrypto","source":"engine/collab/CollabCrypto.js","import":"/engine/collab/CollabCrypto.js","sourceHash":"a5e0167ce58d23341f7c29dcd7518fb05ba81604f9d7228dec8059a25444e548","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCrypto.js#0013:createPeerCryptoState","exportIndex":13,"name":"createPeerCryptoState","kind":"function","signature":"createPeerCryptoState()","summary":"Create crypto state for a single peer connection."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCrypto.md","moduleTitle":"collab/CollabCrypto","source":"engine/collab/CollabCrypto.js","import":"/engine/collab/CollabCrypto.js","sourceHash":"a5e0167ce58d23341f7c29dcd7518fb05ba81604f9d7228dec8059a25444e548","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCrypto.js#0014:initPeerCrypto","exportIndex":14,"name":"initPeerCrypto","kind":"function","signature":"async initPeerCrypto(state)","summary":"Initialize crypto state with a fresh key pair."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCrypto.md","moduleTitle":"collab/CollabCrypto","source":"engine/collab/CollabCrypto.js","import":"/engine/collab/CollabCrypto.js","sourceHash":"a5e0167ce58d23341f7c29dcd7518fb05ba81604f9d7228dec8059a25444e548","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCrypto.js#0015:completePeerCrypto","exportIndex":15,"name":"completePeerCrypto","kind":"function","signature":"async completePeerCrypto(state, remotePublicKeyRaw, roomPassword)","summary":"Complete the handshake: import remote public key, derive shared keys."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCrypto.md","moduleTitle":"collab/CollabCrypto","source":"engine/collab/CollabCrypto.js","import":"/engine/collab/CollabCrypto.js","sourceHash":"a5e0167ce58d23341f7c29dcd7518fb05ba81604f9d7228dec8059a25444e548","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCrypto.js#0016:isCryptoAvailable","exportIndex":16,"name":"isCryptoAvailable","kind":"function","signature":"isCryptoAvailable()","summary":"Check if crypto is available in this environment."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabCrypto.md","moduleTitle":"collab/CollabCrypto","source":"engine/collab/CollabCrypto.js","import":"/engine/collab/CollabCrypto.js","sourceHash":"a5e0167ce58d23341f7c29dcd7518fb05ba81604f9d7228dec8059a25444e548","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabCrypto.js#0017:COLLAB_CRYPTO_LIMITS","exportIndex":17,"name":"COLLAB_CRYPTO_LIMITS","kind":"constant","signature":"COLLAB_CRYPTO_LIMITS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabDivergenceTracker.md","moduleTitle":"collab/CollabDivergenceTracker","source":"engine/collab/CollabDivergenceTracker.js","import":"/engine/collab/CollabDivergenceTracker.js","sourceHash":"a7f39090c7d42a1b9f070247e370db0572b74a0a3b16369a29380ed42cb08f2a","subsystem":"engine","recordType":"api-module","id":"module:engine/collab/CollabDivergenceTracker.js","title":"collab/CollabDivergenceTracker","summary":"CollabDivergenceTracker.js Records per-frame position hashes during play mode and compares them across peers to detect simulation divergence. Hash algorithm: FNV-1a 32-bit over quantized entity positions.","exportCount":12}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabDivergenceTracker.md","moduleTitle":"collab/CollabDivergenceTracker","source":"engine/collab/CollabDivergenceTracker.js","import":"/engine/collab/CollabDivergenceTracker.js","sourceHash":"a7f39090c7d42a1b9f070247e370db0572b74a0a3b16369a29380ed42cb08f2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabDivergenceTracker.js#0000:createDivergenceTracker","exportIndex":0,"name":"createDivergenceTracker","kind":"function","signature":"createDivergenceTracker()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabDivergenceTracker.md","moduleTitle":"collab/CollabDivergenceTracker","source":"engine/collab/CollabDivergenceTracker.js","import":"/engine/collab/CollabDivergenceTracker.js","sourceHash":"a7f39090c7d42a1b9f070247e370db0572b74a0a3b16369a29380ed42cb08f2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabDivergenceTracker.js#0001:divergenceHeartbeatReport","exportIndex":1,"name":"divergenceHeartbeatReport","kind":"function","signature":"divergenceHeartbeatReport(payload)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabDivergenceTracker.md","moduleTitle":"collab/CollabDivergenceTracker","source":"engine/collab/CollabDivergenceTracker.js","import":"/engine/collab/CollabDivergenceTracker.js","sourceHash":"a7f39090c7d42a1b9f070247e370db0572b74a0a3b16369a29380ed42cb08f2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabDivergenceTracker.js#0002:divergenceFrameHashReport","exportIndex":2,"name":"divergenceFrameHashReport","kind":"function","signature":"divergenceFrameHashReport(samples)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabDivergenceTracker.md","moduleTitle":"collab/CollabDivergenceTracker","source":"engine/collab/CollabDivergenceTracker.js","import":"/engine/collab/CollabDivergenceTracker.js","sourceHash":"a7f39090c7d42a1b9f070247e370db0572b74a0a3b16369a29380ed42cb08f2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabDivergenceTracker.js#0003:recordLocalFrame","exportIndex":3,"name":"recordLocalFrame","kind":"function","signature":"recordLocalFrame(tracker, simTime, editor)","summary":"Record a local frame hash. Call every simHistoryInterval during play."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabDivergenceTracker.md","moduleTitle":"collab/CollabDivergenceTracker","source":"engine/collab/CollabDivergenceTracker.js","import":"/engine/collab/CollabDivergenceTracker.js","sourceHash":"a7f39090c7d42a1b9f070247e370db0572b74a0a3b16369a29380ed42cb08f2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabDivergenceTracker.js#0004:receiveRemoteHash","exportIndex":4,"name":"receiveRemoteHash","kind":"function","signature":"receiveRemoteHash(tracker, peerId, simTime, frameHash)","summary":"Receive a remote heartbeat hash from a peer."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabDivergenceTracker.md","moduleTitle":"collab/CollabDivergenceTracker","source":"engine/collab/CollabDivergenceTracker.js","import":"/engine/collab/CollabDivergenceTracker.js","sourceHash":"a7f39090c7d42a1b9f070247e370db0572b74a0a3b16369a29380ed42cb08f2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabDivergenceTracker.js#0005:removePeerDivergence","exportIndex":5,"name":"removePeerDivergence","kind":"function","signature":"removePeerDivergence(tracker, peerId)","summary":"Remove a peer's data on disconnect."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabDivergenceTracker.md","moduleTitle":"collab/CollabDivergenceTracker","source":"engine/collab/CollabDivergenceTracker.js","import":"/engine/collab/CollabDivergenceTracker.js","sourceHash":"a7f39090c7d42a1b9f070247e370db0572b74a0a3b16369a29380ed42cb08f2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabDivergenceTracker.js#0006:getDivergenceLog","exportIndex":6,"name":"getDivergenceLog","kind":"function","signature":"getDivergenceLog(tracker)","summary":"Get all recorded divergence events."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabDivergenceTracker.md","moduleTitle":"collab/CollabDivergenceTracker","source":"engine/collab/CollabDivergenceTracker.js","import":"/engine/collab/CollabDivergenceTracker.js","sourceHash":"a7f39090c7d42a1b9f070247e370db0572b74a0a3b16369a29380ed42cb08f2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabDivergenceTracker.js#0007:resetDivergenceTracker","exportIndex":7,"name":"resetDivergenceTracker","kind":"function","signature":"resetDivergenceTracker(tracker)","summary":"Clear all tracking data (call on exitPlayMode)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabDivergenceTracker.md","moduleTitle":"collab/CollabDivergenceTracker","source":"engine/collab/CollabDivergenceTracker.js","import":"/engine/collab/CollabDivergenceTracker.js","sourceHash":"a7f39090c7d42a1b9f070247e370db0572b74a0a3b16369a29380ed42cb08f2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabDivergenceTracker.js#0008:exportDivergenceReport","exportIndex":8,"name":"exportDivergenceReport","kind":"function","signature":"exportDivergenceReport(tracker, localUsername)","summary":"Export a JSON report of all divergences + local timeline."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabDivergenceTracker.md","moduleTitle":"collab/CollabDivergenceTracker","source":"engine/collab/CollabDivergenceTracker.js","import":"/engine/collab/CollabDivergenceTracker.js","sourceHash":"a7f39090c7d42a1b9f070247e370db0572b74a0a3b16369a29380ed42cb08f2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabDivergenceTracker.js#0009:computeFrameHash","exportIndex":9,"name":"computeFrameHash","kind":"function","signature":"computeFrameHash(editor)","summary":"Compute a fast FNV-1a hash of all entity positions in the scene. Quantizes positions to 3 decimal places for float stability."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabDivergenceTracker.md","moduleTitle":"collab/CollabDivergenceTracker","source":"engine/collab/CollabDivergenceTracker.js","import":"/engine/collab/CollabDivergenceTracker.js","sourceHash":"a7f39090c7d42a1b9f070247e370db0572b74a0a3b16369a29380ed42cb08f2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabDivergenceTracker.js#0010:collabDivergenceFrameHash","exportIndex":10,"name":"collabDivergenceFrameHash","kind":"function","signature":"collabDivergenceFrameHash(samples)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabDivergenceTracker.md","moduleTitle":"collab/CollabDivergenceTracker","source":"engine/collab/CollabDivergenceTracker.js","import":"/engine/collab/CollabDivergenceTracker.js","sourceHash":"a7f39090c7d42a1b9f070247e370db0572b74a0a3b16369a29380ed42cb08f2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabDivergenceTracker.js#0011:injectDivergenceDeps","exportIndex":11,"name":"injectDivergenceDeps","kind":"function","signature":"injectDivergenceDeps(deps)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabEntityAuthority.md","moduleTitle":"collab/CollabEntityAuthority","source":"engine/collab/CollabEntityAuthority.js","import":"/engine/collab/CollabEntityAuthority.js","sourceHash":"a728d9b631532d7a040b72fec54f43fb5e33995b924abdae162ca91f337def99","subsystem":"engine","recordType":"api-module","id":"module:engine/collab/CollabEntityAuthority.js","title":"collab/CollabEntityAuthority","summary":"CollabEntityAuthority.js Per-entity ownership model for collaborative multiplayer. Every entity has at most one \"owner\" peer. The owner is the sole source of truth for that entity's transform, physics, and interactive state. Ownership transfers via explicit claim/release ops — no server needed. Priority levels (higher number wins): 0 DEFAULT   — physics authority (host) owns unclaimed entities 1 PROXIMITY — auto-assigned to nearest peer's camera (future) 2 SELECTED  — peer clicked/selected the entity in the inspector 3 GRABBED   — peer is actively dragging/manipulating the entity Conflict resolution: - Higher priority always wins (grab beats select beats proximity) - Equal priority: earlier timestamp wins (first-come-first-served) - Owner can always release voluntarily - Stale claims (no refresh for STALE_TIMEOUT_MS) are auto-released Inspired by: Photon Takeover policy, Gaffer on Games authority scheme, Roblox Network Ownership, Source Engine shadow controllers.","exportCount":18}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabEntityAuthority.md","moduleTitle":"collab/CollabEntityAuthority","source":"engine/collab/CollabEntityAuthority.js","import":"/engine/collab/CollabEntityAuthority.js","sourceHash":"a728d9b631532d7a040b72fec54f43fb5e33995b924abdae162ca91f337def99","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabEntityAuthority.js#0000:createEntityAuthority","exportIndex":0,"name":"createEntityAuthority","kind":"function","signature":"createEntityAuthority(selfId)","summary":"Create an entity authority state object."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabEntityAuthority.md","moduleTitle":"collab/CollabEntityAuthority","source":"engine/collab/CollabEntityAuthority.js","import":"/engine/collab/CollabEntityAuthority.js","sourceHash":"a728d9b631532d7a040b72fec54f43fb5e33995b924abdae162ca91f337def99","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabEntityAuthority.js#0001:getEntityOwner","exportIndex":1,"name":"getEntityOwner","kind":"function","signature":"getEntityOwner(auth, entityId)","summary":"Get the current owner of an entity."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabEntityAuthority.md","moduleTitle":"collab/CollabEntityAuthority","source":"engine/collab/CollabEntityAuthority.js","import":"/engine/collab/CollabEntityAuthority.js","sourceHash":"a728d9b631532d7a040b72fec54f43fb5e33995b924abdae162ca91f337def99","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabEntityAuthority.js#0002:isLocallyOwned","exportIndex":2,"name":"isLocallyOwned","kind":"function","signature":"isLocallyOwned(auth, entityId)","summary":"Check if the local peer owns an entity."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabEntityAuthority.md","moduleTitle":"collab/CollabEntityAuthority","source":"engine/collab/CollabEntityAuthority.js","import":"/engine/collab/CollabEntityAuthority.js","sourceHash":"a728d9b631532d7a040b72fec54f43fb5e33995b924abdae162ca91f337def99","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabEntityAuthority.js#0003:isEntityClaimed","exportIndex":3,"name":"isEntityClaimed","kind":"function","signature":"isEntityClaimed(auth, entityId)","summary":"Check if an entity is owned by anyone (not default authority)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabEntityAuthority.md","moduleTitle":"collab/CollabEntityAuthority","source":"engine/collab/CollabEntityAuthority.js","import":"/engine/collab/CollabEntityAuthority.js","sourceHash":"a728d9b631532d7a040b72fec54f43fb5e33995b924abdae162ca91f337def99","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabEntityAuthority.js#0004:getEntitiesOwnedBy","exportIndex":4,"name":"getEntitiesOwnedBy","kind":"function","signature":"getEntitiesOwnedBy(auth, peerId)","summary":"Get all entities owned by a specific peer."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabEntityAuthority.md","moduleTitle":"collab/CollabEntityAuthority","source":"engine/collab/CollabEntityAuthority.js","import":"/engine/collab/CollabEntityAuthority.js","sourceHash":"a728d9b631532d7a040b72fec54f43fb5e33995b924abdae162ca91f337def99","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabEntityAuthority.js#0005:getLocallyOwnedSet","exportIndex":5,"name":"getLocallyOwnedSet","kind":"function","signature":"getLocallyOwnedSet(auth)","summary":"Get all locally owned entity IDs as a Set (for fast lookup in sync loops)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabEntityAuthority.md","moduleTitle":"collab/CollabEntityAuthority","source":"engine/collab/CollabEntityAuthority.js","import":"/engine/collab/CollabEntityAuthority.js","sourceHash":"a728d9b631532d7a040b72fec54f43fb5e33995b924abdae162ca91f337def99","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabEntityAuthority.js#0006:shouldBroadcastEntity","exportIndex":6,"name":"shouldBroadcastEntity","kind":"function","signature":"shouldBroadcastEntity(auth, entityId, isPlayAuthority)","summary":"Check if the local peer should broadcast transforms for an entity. Returns true if: (a) we own it, or (b) nobody owns it and we're play authority."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabEntityAuthority.md","moduleTitle":"collab/CollabEntityAuthority","source":"engine/collab/CollabEntityAuthority.js","import":"/engine/collab/CollabEntityAuthority.js","sourceHash":"a728d9b631532d7a040b72fec54f43fb5e33995b924abdae162ca91f337def99","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabEntityAuthority.js#0007:shouldAcceptRemoteTransform","exportIndex":7,"name":"shouldAcceptRemoteTransform","kind":"function","signature":"shouldAcceptRemoteTransform(auth, entityId)","summary":"Check if the local peer should accept remote transforms for an entity. Returns true if we do NOT own it."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabEntityAuthority.md","moduleTitle":"collab/CollabEntityAuthority","source":"engine/collab/CollabEntityAuthority.js","import":"/engine/collab/CollabEntityAuthority.js","sourceHash":"a728d9b631532d7a040b72fec54f43fb5e33995b924abdae162ca91f337def99","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabEntityAuthority.js#0008:claimEntity","exportIndex":8,"name":"claimEntity","kind":"function","signature":"claimEntity(auth, entityId, priority)","summary":"Claim ownership of an entity at a given priority. Returns the op to broadcast, or null if claim was rejected locally."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabEntityAuthority.md","moduleTitle":"collab/CollabEntityAuthority","source":"engine/collab/CollabEntityAuthority.js","import":"/engine/collab/CollabEntityAuthority.js","sourceHash":"a728d9b631532d7a040b72fec54f43fb5e33995b924abdae162ca91f337def99","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabEntityAuthority.js#0009:releaseEntity","exportIndex":9,"name":"releaseEntity","kind":"function","signature":"releaseEntity(auth, entityId)","summary":"Release ownership of an entity. Reverts to default authority. Returns the op to broadcast, or null if we didn't own it."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabEntityAuthority.md","moduleTitle":"collab/CollabEntityAuthority","source":"engine/collab/CollabEntityAuthority.js","import":"/engine/collab/CollabEntityAuthority.js","sourceHash":"a728d9b631532d7a040b72fec54f43fb5e33995b924abdae162ca91f337def99","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabEntityAuthority.js#0010:releaseAllLocal","exportIndex":10,"name":"releaseAllLocal","kind":"function","signature":"releaseAllLocal(auth)","summary":"Release ALL claims owned by the local peer (e.g. on disconnect or exit play mode). Returns array of ops to broadcast."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabEntityAuthority.md","moduleTitle":"collab/CollabEntityAuthority","source":"engine/collab/CollabEntityAuthority.js","import":"/engine/collab/CollabEntityAuthority.js","sourceHash":"a728d9b631532d7a040b72fec54f43fb5e33995b924abdae162ca91f337def99","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabEntityAuthority.js#0011:onRemoteAuthorityOp","exportIndex":11,"name":"onRemoteAuthorityOp","kind":"function","signature":"onRemoteAuthorityOp(auth, op)","summary":"Handle an incoming entity_authority op from a remote peer. Applies the claim/release to local state after conflict resolution. Returns true if the claim was accepted."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabEntityAuthority.md","moduleTitle":"collab/CollabEntityAuthority","source":"engine/collab/CollabEntityAuthority.js","import":"/engine/collab/CollabEntityAuthority.js","sourceHash":"a728d9b631532d7a040b72fec54f43fb5e33995b924abdae162ca91f337def99","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabEntityAuthority.js#0012:tickAuthority","exportIndex":12,"name":"tickAuthority","kind":"function","signature":"tickAuthority(auth)","summary":"Build refresh ops for all local claims (call at ~2Hz from the collab loop). Also prunes stale remote claims."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabEntityAuthority.md","moduleTitle":"collab/CollabEntityAuthority","source":"engine/collab/CollabEntityAuthority.js","import":"/engine/collab/CollabEntityAuthority.js","sourceHash":"a728d9b631532d7a040b72fec54f43fb5e33995b924abdae162ca91f337def99","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabEntityAuthority.js#0013:onPeerDisconnected","exportIndex":13,"name":"onPeerDisconnected","kind":"function","signature":"onPeerDisconnected(auth, peerId)","summary":"Handle a peer disconnecting — release all their claims."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabEntityAuthority.md","moduleTitle":"collab/CollabEntityAuthority","source":"engine/collab/CollabEntityAuthority.js","import":"/engine/collab/CollabEntityAuthority.js","sourceHash":"a728d9b631532d7a040b72fec54f43fb5e33995b924abdae162ca91f337def99","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabEntityAuthority.js#0014:getHandoffBlend","exportIndex":14,"name":"getHandoffBlend","kind":"function","signature":"getHandoffBlend(auth, entityId)","summary":"Get handoff blend factor for an entity (0 = fully old owner, 1 = fully new owner). Used by interpolation to smoothly blend during ownership transfer."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabEntityAuthority.md","moduleTitle":"collab/CollabEntityAuthority","source":"engine/collab/CollabEntityAuthority.js","import":"/engine/collab/CollabEntityAuthority.js","sourceHash":"a728d9b631532d7a040b72fec54f43fb5e33995b924abdae162ca91f337def99","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabEntityAuthority.js#0015:onOwnershipChanged","exportIndex":15,"name":"onOwnershipChanged","kind":"function","signature":"onOwnershipChanged(auth, callback)","summary":"Set callback for ownership changes."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabEntityAuthority.md","moduleTitle":"collab/CollabEntityAuthority","source":"engine/collab/CollabEntityAuthority.js","import":"/engine/collab/CollabEntityAuthority.js","sourceHash":"a728d9b631532d7a040b72fec54f43fb5e33995b924abdae162ca91f337def99","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabEntityAuthority.js#0016:destroyEntityAuthority","exportIndex":16,"name":"destroyEntityAuthority","kind":"function","signature":"destroyEntityAuthority(auth)","summary":"Destroy / reset authority state."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabEntityAuthority.md","moduleTitle":"collab/CollabEntityAuthority","source":"engine/collab/CollabEntityAuthority.js","import":"/engine/collab/CollabEntityAuthority.js","sourceHash":"a728d9b631532d7a040b72fec54f43fb5e33995b924abdae162ca91f337def99","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabEntityAuthority.js#0017:AUTHORITY_PRIORITY","exportIndex":17,"name":"AUTHORITY_PRIORITY","kind":"constant","signature":"AUTHORITY_PRIORITY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabFastChannel.md","moduleTitle":"collab/CollabFastChannel","source":"engine/collab/CollabFastChannel.js","import":"/engine/collab/CollabFastChannel.js","sourceHash":"5802267e46edb76a3f6ecb697bbb67e7a73c31962ac23953f996775141b91474","subsystem":"engine","recordType":"api-module","id":"module:engine/collab/CollabFastChannel.js","title":"collab/CollabFastChannel","summary":"CollabFastChannel.js Low-overhead data transport for same-origin peers via BroadcastChannel. Problem: WebRTC DataChannels add ~50-100ms RTT even on localhost due to DTLS encryption, SCTP transport, and msgpack encode/decode overhead. Solution: For peers sharing the same browser origin (same-machine testing, same-domain deployment), use the BroadcastChannel API which provides: - Structured clone transfer (no msgpack encode/decode) - No encryption overhead (same-origin security model) - Browser-scheduled local delivery without ICE/STUN/DTLS setup - Zero setup — no ICE/STUN/DTLS negotiation This module creates a dedicated data BroadcastChannel (separate from the signaling channel in CollabSignal.js) that carries ops and presence. CollabCore detects same-origin peers and prefers this transport. For cross-origin / cross-machine peers, WebRTC is still used. Inspired by: Meshtastic's tiered transport (LoRa → BLE → WiFi), choosing the fastest available link per peer.","exportCount":8}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabFastChannel.md","moduleTitle":"collab/CollabFastChannel","source":"engine/collab/CollabFastChannel.js","import":"/engine/collab/CollabFastChannel.js","sourceHash":"5802267e46edb76a3f6ecb697bbb67e7a73c31962ac23953f996775141b91474","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabFastChannel.js#0000:createFastChannel","exportIndex":0,"name":"createFastChannel","kind":"function","signature":"createFastChannel(projectId, selfId, callbacks = {})","summary":"Create a fast channel instance."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabFastChannel.md","moduleTitle":"collab/CollabFastChannel","source":"engine/collab/CollabFastChannel.js","import":"/engine/collab/CollabFastChannel.js","sourceHash":"5802267e46edb76a3f6ecb697bbb67e7a73c31962ac23953f996775141b91474","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabFastChannel.js#0001:fastChannelSendOp","exportIndex":1,"name":"fastChannelSendOp","kind":"function","signature":"fastChannelSendOp(fc, op)","summary":"Send an op via fast channel to all same-origin peers. Uses structured clone (no msgpack encode/decode)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabFastChannel.md","moduleTitle":"collab/CollabFastChannel","source":"engine/collab/CollabFastChannel.js","import":"/engine/collab/CollabFastChannel.js","sourceHash":"5802267e46edb76a3f6ecb697bbb67e7a73c31962ac23953f996775141b91474","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabFastChannel.js#0002:fastChannelSendPresence","exportIndex":2,"name":"fastChannelSendPresence","kind":"function","signature":"fastChannelSendPresence(fc, presenceData)","summary":"Send presence data via fast channel."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabFastChannel.md","moduleTitle":"collab/CollabFastChannel","source":"engine/collab/CollabFastChannel.js","import":"/engine/collab/CollabFastChannel.js","sourceHash":"5802267e46edb76a3f6ecb697bbb67e7a73c31962ac23953f996775141b91474","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabFastChannel.js#0003:fastChannelSendToPeer","exportIndex":3,"name":"fastChannelSendToPeer","kind":"function","signature":"fastChannelSendToPeer(fc, peerId, op)","summary":"Send an op to a specific peer via fast channel."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabFastChannel.md","moduleTitle":"collab/CollabFastChannel","source":"engine/collab/CollabFastChannel.js","import":"/engine/collab/CollabFastChannel.js","sourceHash":"5802267e46edb76a3f6ecb697bbb67e7a73c31962ac23953f996775141b91474","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabFastChannel.js#0004:isFastPeer","exportIndex":4,"name":"isFastPeer","kind":"function","signature":"isFastPeer(fc, peerId)","summary":"Check if a specific peer is reachable via fast channel."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabFastChannel.md","moduleTitle":"collab/CollabFastChannel","source":"engine/collab/CollabFastChannel.js","import":"/engine/collab/CollabFastChannel.js","sourceHash":"5802267e46edb76a3f6ecb697bbb67e7a73c31962ac23953f996775141b91474","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabFastChannel.js#0005:getFastPeerIds","exportIndex":5,"name":"getFastPeerIds","kind":"function","signature":"getFastPeerIds(fc)","summary":"Get the set of all fast peer IDs."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabFastChannel.md","moduleTitle":"collab/CollabFastChannel","source":"engine/collab/CollabFastChannel.js","import":"/engine/collab/CollabFastChannel.js","sourceHash":"5802267e46edb76a3f6ecb697bbb67e7a73c31962ac23953f996775141b91474","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabFastChannel.js#0006:getFastChannelStats","exportIndex":6,"name":"getFastChannelStats","kind":"function","signature":"getFastChannelStats(fc)","summary":"Get fast channel stats."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabFastChannel.md","moduleTitle":"collab/CollabFastChannel","source":"engine/collab/CollabFastChannel.js","import":"/engine/collab/CollabFastChannel.js","sourceHash":"5802267e46edb76a3f6ecb697bbb67e7a73c31962ac23953f996775141b91474","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabFastChannel.js#0007:destroyFastChannel","exportIndex":7,"name":"destroyFastChannel","kind":"function","signature":"destroyFastChannel(fc)","summary":"Destroy the fast channel. Sends a bye message to peers first."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabHostMigration.md","moduleTitle":"collab/CollabHostMigration","source":"engine/collab/CollabHostMigration.js","import":"/engine/collab/CollabHostMigration.js","sourceHash":"887409c082278d78ec48ed589aa97cde874510da8d93e8b2383332d2281555cf","subsystem":"engine","recordType":"api-module","id":"module:engine/collab/CollabHostMigration.js","title":"collab/CollabHostMigration","summary":"CollabHostMigration.js Automatic host migration for P2P collaboration sessions. Problem: When the host peer drops (closes tab, network outage, crash), relay mode breaks — all non-host peers lose the ability to communicate through the relay hub. The session effectively dies. Solution: Bully-style host election with reputation-weighted scoring. When the host is detected as dead: 1. All peers start a migration election 2. The peer with the highest \"candidacy score\" wins 3. New host assumes relay duties and notifies all peers 4. If the original host returns, it can reclaim the role Election Algorithm (modified Bully): - Each peer computes a candidacy score based on: • Reputation score (40%) — trustworthy peers preferred • Uptime in session (30%) — stable peers preferred • Connection count (20%) — well-connected peers preferred • Deterministic tiebreaker (10%) — lexicographic selfId for consistency - All peers broadcast their candidacy - After a short election timeout, the highest-scoring peer wins - If two peers tie, the one with the lexicographically higher selfId wins Inspired by: - Xbox Live host migration (Halo 2/3) - Photon PUN MasterClient migration - Raft leader election (simplified — no log replication needed) - Bully algorithm (Garcia-Molina, 1982) Current scope: this module elects a relay host and reconfigures routing. Authority-map handoff, replicated-log consensus, election terms/quorums, and signature-gated dispatch are not implemented here and remain audit gaps. Candidate reputation/connection metrics remain locally self-reported, and captured multi-peer host-failure/rejoin traces remain absent.","exportCount":23}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabHostMigration.md","moduleTitle":"collab/CollabHostMigration","source":"engine/collab/CollabHostMigration.js","import":"/engine/collab/CollabHostMigration.js","sourceHash":"887409c082278d78ec48ed589aa97cde874510da8d93e8b2383332d2281555cf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabHostMigration.js#0000:createHostMigration","exportIndex":0,"name":"createHostMigration","kind":"function","signature":"createHostMigration(selfId, config = {})","summary":"Create a host migration manager."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabHostMigration.md","moduleTitle":"collab/CollabHostMigration","source":"engine/collab/CollabHostMigration.js","import":"/engine/collab/CollabHostMigration.js","sourceHash":"887409c082278d78ec48ed589aa97cde874510da8d93e8b2383332d2281555cf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabHostMigration.js#0001:startHostMigration","exportIndex":1,"name":"startHostMigration","kind":"function","signature":"startHostMigration(hm, isHost, hostPeerId)","summary":"Start host migration monitoring."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabHostMigration.md","moduleTitle":"collab/CollabHostMigration","source":"engine/collab/CollabHostMigration.js","import":"/engine/collab/CollabHostMigration.js","sourceHash":"887409c082278d78ec48ed589aa97cde874510da8d93e8b2383332d2281555cf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabHostMigration.js#0002:migrationSetHost","exportIndex":2,"name":"migrationSetHost","kind":"function","signature":"migrationSetHost(hm, hostPeerId)","summary":"Set the host peer ID (for joiners who didn't know at startup). Starts the host liveness monitor if not already running."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabHostMigration.md","moduleTitle":"collab/CollabHostMigration","source":"engine/collab/CollabHostMigration.js","import":"/engine/collab/CollabHostMigration.js","sourceHash":"887409c082278d78ec48ed589aa97cde874510da8d93e8b2383332d2281555cf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabHostMigration.js#0003:stopHostMigration","exportIndex":3,"name":"stopHostMigration","kind":"function","signature":"stopHostMigration(hm)","summary":"Stop host migration monitoring."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabHostMigration.md","moduleTitle":"collab/CollabHostMigration","source":"engine/collab/CollabHostMigration.js","import":"/engine/collab/CollabHostMigration.js","sourceHash":"887409c082278d78ec48ed589aa97cde874510da8d93e8b2383332d2281555cf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabHostMigration.js#0004:hostHeartbeatReceived","exportIndex":4,"name":"hostHeartbeatReceived","kind":"function","signature":"hostHeartbeatReceived(hm, fromPeerId)","summary":"Record that we received a heartbeat (or any message) from the host. Call this from the heartbeat handler."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabHostMigration.md","moduleTitle":"collab/CollabHostMigration","source":"engine/collab/CollabHostMigration.js","import":"/engine/collab/CollabHostMigration.js","sourceHash":"887409c082278d78ec48ed589aa97cde874510da8d93e8b2383332d2281555cf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabHostMigration.js#0005:hostActivityReceived","exportIndex":5,"name":"hostActivityReceived","kind":"function","signature":"hostActivityReceived(hm, fromPeerId)","summary":"Record that we received ANY op from a peer (used for liveness). Even non-heartbeat ops prove the host is alive."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabHostMigration.md","moduleTitle":"collab/CollabHostMigration","source":"engine/collab/CollabHostMigration.js","import":"/engine/collab/CollabHostMigration.js","sourceHash":"887409c082278d78ec48ed589aa97cde874510da8d93e8b2383332d2281555cf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabHostMigration.js#0006:onElectionCandidacy","exportIndex":6,"name":"onElectionCandidacy","kind":"function","signature":"onElectionCandidacy(hm, peerId, payload)","summary":"Handle a received election candidacy from another peer."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabHostMigration.md","moduleTitle":"collab/CollabHostMigration","source":"engine/collab/CollabHostMigration.js","import":"/engine/collab/CollabHostMigration.js","sourceHash":"887409c082278d78ec48ed589aa97cde874510da8d93e8b2383332d2281555cf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabHostMigration.js#0007:onElectionResult","exportIndex":7,"name":"onElectionResult","kind":"function","signature":"onElectionResult(hm, payload)","summary":"Handle a received election result from another peer."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabHostMigration.md","moduleTitle":"collab/CollabHostMigration","source":"engine/collab/CollabHostMigration.js","import":"/engine/collab/CollabHostMigration.js","sourceHash":"887409c082278d78ec48ed589aa97cde874510da8d93e8b2383332d2281555cf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabHostMigration.js#0008:onHostReclaimRequest","exportIndex":8,"name":"onHostReclaimRequest","kind":"function","signature":"onHostReclaimRequest(hm, originalHostId)","summary":"Handle the original host returning to the session. The original host broadcasts a reclaim request. The current acting host defers after a grace period, handing duties back."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabHostMigration.md","moduleTitle":"collab/CollabHostMigration","source":"engine/collab/CollabHostMigration.js","import":"/engine/collab/CollabHostMigration.js","sourceHash":"887409c082278d78ec48ed589aa97cde874510da8d93e8b2383332d2281555cf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabHostMigration.js#0009:requestHostReclaim","exportIndex":9,"name":"requestHostReclaim","kind":"function","signature":"requestHostReclaim(hm)","summary":"Called by the original host when it returns to reclaim. Only call if we ARE the original host and someone else took over."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabHostMigration.md","moduleTitle":"collab/CollabHostMigration","source":"engine/collab/CollabHostMigration.js","import":"/engine/collab/CollabHostMigration.js","sourceHash":"887409c082278d78ec48ed589aa97cde874510da8d93e8b2383332d2281555cf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabHostMigration.js#0010:hostMigrationTiebreakerNorm","exportIndex":10,"name":"hostMigrationTiebreakerNorm","kind":"function","signature":"hostMigrationTiebreakerNorm(selfId)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabHostMigration.md","moduleTitle":"collab/CollabHostMigration","source":"engine/collab/CollabHostMigration.js","import":"/engine/collab/CollabHostMigration.js","sourceHash":"887409c082278d78ec48ed589aa97cde874510da8d93e8b2383332d2281555cf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabHostMigration.js#0011:hostMigrationCandidacyScoreReport","exportIndex":11,"name":"hostMigrationCandidacyScoreReport","kind":"function","signature":"hostMigrationCandidacyScoreReport(metrics = {}, timestampMs = Date.now()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabHostMigration.md","moduleTitle":"collab/CollabHostMigration","source":"engine/collab/CollabHostMigration.js","import":"/engine/collab/CollabHostMigration.js","sourceHash":"887409c082278d78ec48ed589aa97cde874510da8d93e8b2383332d2281555cf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabHostMigration.js#0012:migrationAddPeer","exportIndex":12,"name":"migrationAddPeer","kind":"function","signature":"migrationAddPeer(hm, peerId)","summary":"Register a known peer."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabHostMigration.md","moduleTitle":"collab/CollabHostMigration","source":"engine/collab/CollabHostMigration.js","import":"/engine/collab/CollabHostMigration.js","sourceHash":"887409c082278d78ec48ed589aa97cde874510da8d93e8b2383332d2281555cf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabHostMigration.js#0013:migrationRemovePeer","exportIndex":13,"name":"migrationRemovePeer","kind":"function","signature":"migrationRemovePeer(hm, peerId)","summary":"Remove a known peer."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabHostMigration.md","moduleTitle":"collab/CollabHostMigration","source":"engine/collab/CollabHostMigration.js","import":"/engine/collab/CollabHostMigration.js","sourceHash":"887409c082278d78ec48ed589aa97cde874510da8d93e8b2383332d2281555cf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabHostMigration.js#0014:migrationUpdateSelfMetrics","exportIndex":14,"name":"migrationUpdateSelfMetrics","kind":"function","signature":"migrationUpdateSelfMetrics(hm, score, connectionCount)","summary":"Update our own metrics (call from collab loop)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabHostMigration.md","moduleTitle":"collab/CollabHostMigration","source":"engine/collab/CollabHostMigration.js","import":"/engine/collab/CollabHostMigration.js","sourceHash":"887409c082278d78ec48ed589aa97cde874510da8d93e8b2383332d2281555cf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabHostMigration.js#0015:onHostElectionOp","exportIndex":15,"name":"onHostElectionOp","kind":"function","signature":"onHostElectionOp(hm, peerId, op)","summary":"Handle an incoming host_election op. Routes to the appropriate handler based on phase."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabHostMigration.md","moduleTitle":"collab/CollabHostMigration","source":"engine/collab/CollabHostMigration.js","import":"/engine/collab/CollabHostMigration.js","sourceHash":"887409c082278d78ec48ed589aa97cde874510da8d93e8b2383332d2281555cf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabHostMigration.js#0016:buildGoodbyeOp","exportIndex":16,"name":"buildGoodbyeOp","kind":"function","signature":"buildGoodbyeOp(hm)","summary":"Build a goodbye op to broadcast before leaving. Other peers use this to immediately detect departure instead of waiting for heartbeat timeout."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabHostMigration.md","moduleTitle":"collab/CollabHostMigration","source":"engine/collab/CollabHostMigration.js","import":"/engine/collab/CollabHostMigration.js","sourceHash":"887409c082278d78ec48ed589aa97cde874510da8d93e8b2383332d2281555cf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabHostMigration.js#0017:onPeerGoodbye","exportIndex":17,"name":"onPeerGoodbye","kind":"function","signature":"onPeerGoodbye(hm, payload, fromPeerId = payload?.peerId)","summary":"Handle a received goodbye from a departing peer. If the host sent the goodbye, immediately start election (no timeout wait)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabHostMigration.md","moduleTitle":"collab/CollabHostMigration","source":"engine/collab/CollabHostMigration.js","import":"/engine/collab/CollabHostMigration.js","sourceHash":"887409c082278d78ec48ed589aa97cde874510da8d93e8b2383332d2281555cf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabHostMigration.js#0018:getMigrationState","exportIndex":18,"name":"getMigrationState","kind":"function","signature":"getMigrationState(hm)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabHostMigration.md","moduleTitle":"collab/CollabHostMigration","source":"engine/collab/CollabHostMigration.js","import":"/engine/collab/CollabHostMigration.js","sourceHash":"887409c082278d78ec48ed589aa97cde874510da8d93e8b2383332d2281555cf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabHostMigration.js#0019:getMigrationStats","exportIndex":19,"name":"getMigrationStats","kind":"function","signature":"getMigrationStats(hm)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabHostMigration.md","moduleTitle":"collab/CollabHostMigration","source":"engine/collab/CollabHostMigration.js","import":"/engine/collab/CollabHostMigration.js","sourceHash":"887409c082278d78ec48ed589aa97cde874510da8d93e8b2383332d2281555cf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabHostMigration.js#0020:isCurrentHost","exportIndex":20,"name":"isCurrentHost","kind":"function","signature":"isCurrentHost(hm)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabHostMigration.md","moduleTitle":"collab/CollabHostMigration","source":"engine/collab/CollabHostMigration.js","import":"/engine/collab/CollabHostMigration.js","sourceHash":"887409c082278d78ec48ed589aa97cde874510da8d93e8b2383332d2281555cf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabHostMigration.js#0021:getCurrentHostId","exportIndex":21,"name":"getCurrentHostId","kind":"function","signature":"getCurrentHostId(hm)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabHostMigration.md","moduleTitle":"collab/CollabHostMigration","source":"engine/collab/CollabHostMigration.js","import":"/engine/collab/CollabHostMigration.js","sourceHash":"887409c082278d78ec48ed589aa97cde874510da8d93e8b2383332d2281555cf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabHostMigration.js#0022:destroyHostMigration","exportIndex":22,"name":"destroyHostMigration","kind":"function","signature":"destroyHostMigration(hm)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIdentity.md","moduleTitle":"collab/CollabIdentity","source":"engine/collab/CollabIdentity.js","import":"/engine/collab/CollabIdentity.js","sourceHash":"83acc6170f768b572ac212327918157743880e07ba36326450cd868bc30552e3","subsystem":"engine","recordType":"api-module","id":"module:engine/collab/CollabIdentity.js","title":"collab/CollabIdentity","summary":"CollabIdentity.js Cryptographic peer identity using ECDSA P-256 (Web Crypto API). Each peer generates an ECDSA key pair on init. The public key's SHA-256 fingerprint becomes the peer's verified identity — unforgeable without the private key. During the hello handshake, peers exchange public keys and a signed proof (signature of their selfId). The remote side verifies the signature, confirming the peer truly owns the claimed public key. Host verification: the host's fingerprint is embedded in the invite code. Joiners verify the host's fingerprint matches the one in the invite code, preventing host impersonation. Reputation receipts: peers sign their score reports. Others verify the signature before trusting the score, preventing score tampering. Flow: 1. createIdentity() → ECDSA P-256 key pair + fingerprint 2. buildIdentityProof(identity, selfId) → signed selfId (for hello) 3. Remote receives proof → verifyIdentityProof(publicKey, selfId, proof) 4. If host: fingerprint embedded in invite code → joiner checks match 5. signScoreReceipt(identity, scoreData) → signed score for reputation 6. verifyScoreReceipt(publicKey, scoreData, signature) → boolean","exportCount":43}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIdentity.md","moduleTitle":"collab/CollabIdentity","source":"engine/collab/CollabIdentity.js","import":"/engine/collab/CollabIdentity.js","sourceHash":"83acc6170f768b572ac212327918157743880e07ba36326450cd868bc30552e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIdentity.js#0000:collabIdentityTimestampReport","exportIndex":0,"name":"collabIdentityTimestampReport","kind":"function","signature":"collabIdentityTimestampReport(timestamp, nowMs = Date.now()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIdentity.md","moduleTitle":"collab/CollabIdentity","source":"engine/collab/CollabIdentity.js","import":"/engine/collab/CollabIdentity.js","sourceHash":"83acc6170f768b572ac212327918157743880e07ba36326450cd868bc30552e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIdentity.js#0001:collabIdentityPayloadReport","exportIndex":1,"name":"collabIdentityPayloadReport","kind":"function","signature":"collabIdentityPayloadReport(payload)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIdentity.md","moduleTitle":"collab/CollabIdentity","source":"engine/collab/CollabIdentity.js","import":"/engine/collab/CollabIdentity.js","sourceHash":"83acc6170f768b572ac212327918157743880e07ba36326450cd868bc30552e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIdentity.js#0002:prepareCollabIdentityRecord","exportIndex":2,"name":"prepareCollabIdentityRecord","kind":"function","signature":"prepareCollabIdentityRecord(record)","summary":"Validate one bounded v1/v2 identity record without guessing future shapes."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIdentity.md","moduleTitle":"collab/CollabIdentity","source":"engine/collab/CollabIdentity.js","import":"/engine/collab/CollabIdentity.js","sourceHash":"83acc6170f768b572ac212327918157743880e07ba36326450cd868bc30552e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIdentity.js#0003:collabIdentityCurrentKey","exportIndex":3,"name":"collabIdentityCurrentKey","kind":"function","signature":"collabIdentityCurrentKey(keyId = COLLAB_IDENTITY_KEY_ID)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIdentity.md","moduleTitle":"collab/CollabIdentity","source":"engine/collab/CollabIdentity.js","import":"/engine/collab/CollabIdentity.js","sourceHash":"83acc6170f768b572ac212327918157743880e07ba36326450cd868bc30552e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIdentity.js#0004:createIdentity","exportIndex":4,"name":"createIdentity","kind":"function","signature":"async createIdentity(keyId = COLLAB_IDENTITY_KEY_ID)","summary":"Generate or load an ECDSA P-256 key pair. Tries IndexedDB first for persistent identity across sessions. If not found, generates a new key pair and stores it. The fingerprint (SHA-256 of public key) stays the same across sessions, enabling long-term reputation tracking."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIdentity.md","moduleTitle":"collab/CollabIdentity","source":"engine/collab/CollabIdentity.js","import":"/engine/collab/CollabIdentity.js","sourceHash":"83acc6170f768b572ac212327918157743880e07ba36326450cd868bc30552e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIdentity.js#0005:computeFingerprint","exportIndex":5,"name":"computeFingerprint","kind":"function","signature":"async computeFingerprint(publicKeyRaw)","summary":"Compute fingerprint from a raw public key (public API for verification)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIdentity.md","moduleTitle":"collab/CollabIdentity","source":"engine/collab/CollabIdentity.js","import":"/engine/collab/CollabIdentity.js","sourceHash":"83acc6170f768b572ac212327918157743880e07ba36326450cd868bc30552e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIdentity.js#0006:buildIdentityProof","exportIndex":6,"name":"buildIdentityProof","kind":"function","signature":"async buildIdentityProof(identity, selfId)","summary":"Build an identity proof: sign our selfId with our private key. The remote peer verifies this signature to confirm we own the public key."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIdentity.md","moduleTitle":"collab/CollabIdentity","source":"engine/collab/CollabIdentity.js","import":"/engine/collab/CollabIdentity.js","sourceHash":"83acc6170f768b572ac212327918157743880e07ba36326450cd868bc30552e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIdentity.js#0007:verifyIdentityProof","exportIndex":7,"name":"verifyIdentityProof","kind":"function","signature":"async verifyIdentityProof(publicKeyRaw, selfId, signature)","summary":"Verify an identity proof from a remote peer."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIdentity.md","moduleTitle":"collab/CollabIdentity","source":"engine/collab/CollabIdentity.js","import":"/engine/collab/CollabIdentity.js","sourceHash":"83acc6170f768b572ac212327918157743880e07ba36326450cd868bc30552e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIdentity.js#0008:collabIdentityScoreReceiptReport","exportIndex":8,"name":"collabIdentityScoreReceiptReport","kind":"function","signature":"collabIdentityScoreReceiptReport(scoreData, nowMs = Date.now()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIdentity.md","moduleTitle":"collab/CollabIdentity","source":"engine/collab/CollabIdentity.js","import":"/engine/collab/CollabIdentity.js","sourceHash":"83acc6170f768b572ac212327918157743880e07ba36326450cd868bc30552e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIdentity.js#0009:signScoreReceipt","exportIndex":9,"name":"signScoreReceipt","kind":"function","signature":"async signScoreReceipt(identity, scoreData)","summary":"Sign a reputation score receipt. The receipt proves that this peer calculated and reported a specific score for a target peer at a specific time. Other peers verify the signature to prevent score tampering."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIdentity.md","moduleTitle":"collab/CollabIdentity","source":"engine/collab/CollabIdentity.js","import":"/engine/collab/CollabIdentity.js","sourceHash":"83acc6170f768b572ac212327918157743880e07ba36326450cd868bc30552e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIdentity.js#0010:verifyScoreReceipt","exportIndex":10,"name":"verifyScoreReceipt","kind":"function","signature":"async verifyScoreReceipt(publicKeyRaw, scoreData, signature, nowMs = Date.now()","summary":"Verify a reputation score receipt from a remote peer."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIdentity.md","moduleTitle":"collab/CollabIdentity","source":"engine/collab/CollabIdentity.js","import":"/engine/collab/CollabIdentity.js","sourceHash":"83acc6170f768b572ac212327918157743880e07ba36326450cd868bc30552e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIdentity.js#0011:signData","exportIndex":11,"name":"signData","kind":"function","signature":"async signData(identity, data)","summary":"Sign arbitrary string data with our identity."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIdentity.md","moduleTitle":"collab/CollabIdentity","source":"engine/collab/CollabIdentity.js","import":"/engine/collab/CollabIdentity.js","sourceHash":"83acc6170f768b572ac212327918157743880e07ba36326450cd868bc30552e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIdentity.js#0012:signRawBytes","exportIndex":12,"name":"signRawBytes","kind":"function","signature":"async signRawBytes(identity, bytes)","summary":"Sign raw bytes with our identity (no TextEncoder step) — needed when the verifier expects a signature over an exact byte string it issued (e.g. a random challenge), not over the UTF-8 encoding of some stringified form of it. See signData() for the string-based counterpart."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIdentity.md","moduleTitle":"collab/CollabIdentity","source":"engine/collab/CollabIdentity.js","import":"/engine/collab/CollabIdentity.js","sourceHash":"83acc6170f768b572ac212327918157743880e07ba36326450cd868bc30552e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIdentity.js#0013:verifyRawBytes","exportIndex":13,"name":"verifyRawBytes","kind":"function","signature":"async verifyRawBytes(publicKeyRaw, bytes, signature)","summary":"Verify a signature on raw bytes. Counterpart to signRawBytes()."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIdentity.md","moduleTitle":"collab/CollabIdentity","source":"engine/collab/CollabIdentity.js","import":"/engine/collab/CollabIdentity.js","sourceHash":"83acc6170f768b572ac212327918157743880e07ba36326450cd868bc30552e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIdentity.js#0014:verifyData","exportIndex":14,"name":"verifyData","kind":"function","signature":"async verifyData(publicKeyRaw, data, signature)","summary":"Verify a signature on arbitrary string data."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIdentity.md","moduleTitle":"collab/CollabIdentity","source":"engine/collab/CollabIdentity.js","import":"/engine/collab/CollabIdentity.js","sourceHash":"83acc6170f768b572ac212327918157743880e07ba36326450cd868bc30552e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIdentity.js#0015:createIdentityRegistry","exportIndex":15,"name":"createIdentityRegistry","kind":"function","signature":"createIdentityRegistry(selfId, identity)","summary":"Create a registry that tracks verified identities for all connected peers. Each peer's identity is verified once during the hello handshake and then cached. The registry also tracks cross-verified reputation scores."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIdentity.md","moduleTitle":"collab/CollabIdentity","source":"engine/collab/CollabIdentity.js","import":"/engine/collab/CollabIdentity.js","sourceHash":"83acc6170f768b572ac212327918157743880e07ba36326450cd868bc30552e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIdentity.js#0016:registerPeerIdentity","exportIndex":16,"name":"registerPeerIdentity","kind":"function","signature":"async registerPeerIdentity(registry, peerId, publicKeyRaw, identityProof, isHost = false)","summary":"Register a peer's identity after verifying their proof. Called during the enhanced hello handshake."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIdentity.md","moduleTitle":"collab/CollabIdentity","source":"engine/collab/CollabIdentity.js","import":"/engine/collab/CollabIdentity.js","sourceHash":"83acc6170f768b572ac212327918157743880e07ba36326450cd868bc30552e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIdentity.js#0017:removePeerIdentity","exportIndex":17,"name":"removePeerIdentity","kind":"function","signature":"removePeerIdentity(registry, peerId)","summary":"Remove a peer's identity from the registry."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIdentity.md","moduleTitle":"collab/CollabIdentity","source":"engine/collab/CollabIdentity.js","import":"/engine/collab/CollabIdentity.js","sourceHash":"83acc6170f768b572ac212327918157743880e07ba36326450cd868bc30552e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIdentity.js#0018:getPeerIdentity","exportIndex":18,"name":"getPeerIdentity","kind":"function","signature":"getPeerIdentity(registry, peerId)","summary":"Get a peer's verified identity info."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIdentity.md","moduleTitle":"collab/CollabIdentity","source":"engine/collab/CollabIdentity.js","import":"/engine/collab/CollabIdentity.js","sourceHash":"83acc6170f768b572ac212327918157743880e07ba36326450cd868bc30552e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIdentity.js#0019:setExpectedHostFingerprint","exportIndex":19,"name":"setExpectedHostFingerprint","kind":"function","signature":"setExpectedHostFingerprint(registry, fingerprint)","summary":"Set the expected host fingerprint (from the invite code)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIdentity.md","moduleTitle":"collab/CollabIdentity","source":"engine/collab/CollabIdentity.js","import":"/engine/collab/CollabIdentity.js","sourceHash":"83acc6170f768b572ac212327918157743880e07ba36326450cd868bc30552e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIdentity.js#0020:resetIdentityRegistry","exportIndex":20,"name":"resetIdentityRegistry","kind":"function","signature":"resetIdentityRegistry(registry, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIdentity.md","moduleTitle":"collab/CollabIdentity","source":"engine/collab/CollabIdentity.js","import":"/engine/collab/CollabIdentity.js","sourceHash":"83acc6170f768b572ac212327918157743880e07ba36326450cd868bc30552e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIdentity.js#0021:destroyIdentityRegistry","exportIndex":21,"name":"destroyIdentityRegistry","kind":"function","signature":"destroyIdentityRegistry(registry)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIdentity.md","moduleTitle":"collab/CollabIdentity","source":"engine/collab/CollabIdentity.js","import":"/engine/collab/CollabIdentity.js","sourceHash":"83acc6170f768b572ac212327918157743880e07ba36326450cd868bc30552e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIdentity.js#0022:recordScoreReceipt","exportIndex":22,"name":"recordScoreReceipt","kind":"function","signature":"async recordScoreReceipt(registry, reporterPeerId, targetPeerId, score, timestamp, signature)","summary":"Record a signed score receipt from a remote peer. Each peer tracks what scores others have reported about them AND about other peers."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIdentity.md","moduleTitle":"collab/CollabIdentity","source":"engine/collab/CollabIdentity.js","import":"/engine/collab/CollabIdentity.js","sourceHash":"83acc6170f768b572ac212327918157743880e07ba36326450cd868bc30552e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIdentity.js#0023:getConsensusScore","exportIndex":23,"name":"getConsensusScore","kind":"function","signature":"getConsensusScore(registry, peerId)","summary":"Get the consensus score for a peer based on all verified receipts. Returns the median of all verified scores reported by different peers. Also detects disputes (significant score disagreements)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIdentity.md","moduleTitle":"collab/CollabIdentity","source":"engine/collab/CollabIdentity.js","import":"/engine/collab/CollabIdentity.js","sourceHash":"83acc6170f768b572ac212327918157743880e07ba36326450cd868bc30552e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIdentity.js#0024:buildScoreReportOp","exportIndex":24,"name":"buildScoreReportOp","kind":"function","signature":"async buildScoreReportOp(identity, selfId, targetPeerId, score)","summary":"Build a signed score report op for broadcasting to all peers."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIdentity.md","moduleTitle":"collab/CollabIdentity","source":"engine/collab/CollabIdentity.js","import":"/engine/collab/CollabIdentity.js","sourceHash":"83acc6170f768b572ac212327918157743880e07ba36326450cd868bc30552e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIdentity.js#0025:getIdentityStats","exportIndex":25,"name":"getIdentityStats","kind":"function","signature":"getIdentityStats(registry, reputationScores)","summary":"Get identity system stats for UI display."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIdentity.md","moduleTitle":"collab/CollabIdentity","source":"engine/collab/CollabIdentity.js","import":"/engine/collab/CollabIdentity.js","sourceHash":"83acc6170f768b572ac212327918157743880e07ba36326450cd868bc30552e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIdentity.js#0026:isIdentityAvailable","exportIndex":26,"name":"isIdentityAvailable","kind":"function","signature":"isIdentityAvailable()","summary":"Check if crypto identity is available."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIdentity.md","moduleTitle":"collab/CollabIdentity","source":"engine/collab/CollabIdentity.js","import":"/engine/collab/CollabIdentity.js","sourceHash":"83acc6170f768b572ac212327918157743880e07ba36326450cd868bc30552e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIdentity.js#0027:isCriticalOp","exportIndex":27,"name":"isCriticalOp","kind":"function","signature":"isCriticalOp(opType)","summary":"Check if an op type requires a signature."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIdentity.md","moduleTitle":"collab/CollabIdentity","source":"engine/collab/CollabIdentity.js","import":"/engine/collab/CollabIdentity.js","sourceHash":"83acc6170f768b572ac212327918157743880e07ba36326450cd868bc30552e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIdentity.js#0028:collabIdentityCriticalOpReport","exportIndex":28,"name":"collabIdentityCriticalOpReport","kind":"function","signature":"collabIdentityCriticalOpReport(op, senderPeerId, nowMs = Date.now()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIdentity.md","moduleTitle":"collab/CollabIdentity","source":"engine/collab/CollabIdentity.js","import":"/engine/collab/CollabIdentity.js","sourceHash":"83acc6170f768b572ac212327918157743880e07ba36326450cd868bc30552e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIdentity.js#0029:signCriticalOp","exportIndex":29,"name":"signCriticalOp","kind":"function","signature":"async signCriticalOp(identity, op, selfId)","summary":"Sign a critical op with our ECDSA identity. Appends `_sig` (signature) and `_pub` (public key) fields to the op. The canonical signed data is: `op-sig:type:senderId:timestamp:payloadHash`"}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIdentity.md","moduleTitle":"collab/CollabIdentity","source":"engine/collab/CollabIdentity.js","import":"/engine/collab/CollabIdentity.js","sourceHash":"83acc6170f768b572ac212327918157743880e07ba36326450cd868bc30552e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIdentity.js#0030:verifyCriticalOp","exportIndex":30,"name":"verifyCriticalOp","kind":"function","signature":"async verifyCriticalOp(op, senderPeerId, registry)","summary":"Verify a signed critical op from a remote peer."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIdentity.md","moduleTitle":"collab/CollabIdentity","source":"engine/collab/CollabIdentity.js","import":"/engine/collab/CollabIdentity.js","sourceHash":"83acc6170f768b572ac212327918157743880e07ba36326450cd868bc30552e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIdentity.js#0031:collabIdentityPayloadHash","exportIndex":31,"name":"collabIdentityPayloadHash","kind":"function","signature":"async collabIdentityPayloadHash(str)","summary":"Helper: SHA-256 hash a string to hex (for canonical op signing)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIdentity.md","moduleTitle":"collab/CollabIdentity","source":"engine/collab/CollabIdentity.js","import":"/engine/collab/CollabIdentity.js","sourceHash":"83acc6170f768b572ac212327918157743880e07ba36326450cd868bc30552e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIdentity.js#0032:computeTrustLevel","exportIndex":32,"name":"computeTrustLevel","kind":"function","signature":"computeTrustLevel(registry, peerId, reputationScore)","summary":"Compute the trust level for a peer."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIdentity.md","moduleTitle":"collab/CollabIdentity","source":"engine/collab/CollabIdentity.js","import":"/engine/collab/CollabIdentity.js","sourceHash":"83acc6170f768b572ac212327918157743880e07ba36326450cd868bc30552e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIdentity.js#0033:getTrustColor","exportIndex":33,"name":"getTrustColor","kind":"function","signature":"getTrustColor(level)","summary":"Get the display color for a trust level."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIdentity.md","moduleTitle":"collab/CollabIdentity","source":"engine/collab/CollabIdentity.js","import":"/engine/collab/CollabIdentity.js","sourceHash":"83acc6170f768b572ac212327918157743880e07ba36326450cd868bc30552e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIdentity.js#0034:getTrustLabel","exportIndex":34,"name":"getTrustLabel","kind":"function","signature":"getTrustLabel(level)","summary":"Get the display label for a trust level."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIdentity.md","moduleTitle":"collab/CollabIdentity","source":"engine/collab/CollabIdentity.js","import":"/engine/collab/CollabIdentity.js","sourceHash":"83acc6170f768b572ac212327918157743880e07ba36326450cd868bc30552e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIdentity.js#0035:COLLAB_IDENTITY_DB_NAME","exportIndex":35,"name":"COLLAB_IDENTITY_DB_NAME","kind":"constant","signature":"COLLAB_IDENTITY_DB_NAME","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIdentity.md","moduleTitle":"collab/CollabIdentity","source":"engine/collab/CollabIdentity.js","import":"/engine/collab/CollabIdentity.js","sourceHash":"83acc6170f768b572ac212327918157743880e07ba36326450cd868bc30552e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIdentity.js#0036:COLLAB_IDENTITY_STORE_NAME","exportIndex":36,"name":"COLLAB_IDENTITY_STORE_NAME","kind":"constant","signature":"COLLAB_IDENTITY_STORE_NAME","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIdentity.md","moduleTitle":"collab/CollabIdentity","source":"engine/collab/CollabIdentity.js","import":"/engine/collab/CollabIdentity.js","sourceHash":"83acc6170f768b572ac212327918157743880e07ba36326450cd868bc30552e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIdentity.js#0037:COLLAB_IDENTITY_KEY_ID","exportIndex":37,"name":"COLLAB_IDENTITY_KEY_ID","kind":"constant","signature":"COLLAB_IDENTITY_KEY_ID","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIdentity.md","moduleTitle":"collab/CollabIdentity","source":"engine/collab/CollabIdentity.js","import":"/engine/collab/CollabIdentity.js","sourceHash":"83acc6170f768b572ac212327918157743880e07ba36326450cd868bc30552e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIdentity.js#0038:COLLAB_IDENTITY_RECORD_SCHEMA","exportIndex":38,"name":"COLLAB_IDENTITY_RECORD_SCHEMA","kind":"constant","signature":"COLLAB_IDENTITY_RECORD_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIdentity.md","moduleTitle":"collab/CollabIdentity","source":"engine/collab/CollabIdentity.js","import":"/engine/collab/CollabIdentity.js","sourceHash":"83acc6170f768b572ac212327918157743880e07ba36326450cd868bc30552e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIdentity.js#0039:COLLAB_IDENTITY_RECORD_VERSION","exportIndex":39,"name":"COLLAB_IDENTITY_RECORD_VERSION","kind":"constant","signature":"COLLAB_IDENTITY_RECORD_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIdentity.md","moduleTitle":"collab/CollabIdentity","source":"engine/collab/CollabIdentity.js","import":"/engine/collab/CollabIdentity.js","sourceHash":"83acc6170f768b572ac212327918157743880e07ba36326450cd868bc30552e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIdentity.js#0040:COLLAB_IDENTITY_LIMITS","exportIndex":40,"name":"COLLAB_IDENTITY_LIMITS","kind":"constant","signature":"COLLAB_IDENTITY_LIMITS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIdentity.md","moduleTitle":"collab/CollabIdentity","source":"engine/collab/CollabIdentity.js","import":"/engine/collab/CollabIdentity.js","sourceHash":"83acc6170f768b572ac212327918157743880e07ba36326450cd868bc30552e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIdentity.js#0041:TRUST_LEVEL","exportIndex":41,"name":"TRUST_LEVEL","kind":"constant","signature":"TRUST_LEVEL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIdentity.md","moduleTitle":"collab/CollabIdentity","source":"engine/collab/CollabIdentity.js","import":"/engine/collab/CollabIdentity.js","sourceHash":"83acc6170f768b572ac212327918157743880e07ba36326450cd868bc30552e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIdentity.js#0042:publicKeyRaw","exportIndex":42,"name":"publicKeyRaw","kind":"constant","signature":"publicKeyRaw","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIntegrityVerifier.md","moduleTitle":"collab/CollabIntegrityVerifier","source":"engine/collab/CollabIntegrityVerifier.js","import":"/engine/collab/CollabIntegrityVerifier.js","sourceHash":"3bcaed84dcab13fc3b72f0f58c864d77d8d2e1e7a7c7529e199509e67b1c4412","subsystem":"engine","recordType":"api-module","id":"module:engine/collab/CollabIntegrityVerifier.js","title":"collab/CollabIntegrityVerifier","summary":"CollabIntegrityVerifier.js Integrity validation and anomaly tracking for P2P collab. Inspired by: - Hash-chain receipts: valid ops contribute to a local rolling chain. - Server-side validation rules adapted to pairwise peer validation. - Lockstep P2P: periodic state hashing — all peers hash their zone state and exchange hashes for pairwise divergence detection. - FairPlay: operation whitelist — only registered op types are accepted. Unknown op types are rejected and penalized. Components: 1. Op Receipt Chain — local rolling hash chain per peer 2. Zone State Digest — periodic position hash for pairwise comparison 3. Anomaly Detector — physics/spatial rule violations 4. Operation Whitelist — only valid op types accepted 5. Violation Tracker — accumulates strikes, triggers auto-kick 6. Reputation Integration — violations lower peer score Hashes preserve the existing non-cryptographic legacy FNV-like wire format.","exportCount":23}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIntegrityVerifier.md","moduleTitle":"collab/CollabIntegrityVerifier","source":"engine/collab/CollabIntegrityVerifier.js","import":"/engine/collab/CollabIntegrityVerifier.js","sourceHash":"3bcaed84dcab13fc3b72f0f58c864d77d8d2e1e7a7c7529e199509e67b1c4412","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIntegrityVerifier.js#0000:collabIntegrityLegacyHash","exportIndex":0,"name":"collabIntegrityLegacyHash","kind":"function","signature":"collabIntegrityLegacyHash(str)","summary":"Preserve the existing integrity-chain FNV-like string hash. This intentionally keeps the old JavaScript-number multiply path instead of switching to canonical Math.imul FNV-1a, which would change peer digests."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIntegrityVerifier.md","moduleTitle":"collab/CollabIntegrityVerifier","source":"engine/collab/CollabIntegrityVerifier.js","import":"/engine/collab/CollabIntegrityVerifier.js","sourceHash":"3bcaed84dcab13fc3b72f0f58c864d77d8d2e1e7a7c7529e199509e67b1c4412","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIntegrityVerifier.js#0001:createIntegrityVerifier","exportIndex":1,"name":"createIntegrityVerifier","kind":"function","signature":"createIntegrityVerifier(selfId, config = {})","summary":"Create an integrity verifier."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIntegrityVerifier.md","moduleTitle":"collab/CollabIntegrityVerifier","source":"engine/collab/CollabIntegrityVerifier.js","import":"/engine/collab/CollabIntegrityVerifier.js","sourceHash":"3bcaed84dcab13fc3b72f0f58c864d77d8d2e1e7a7c7529e199509e67b1c4412","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIntegrityVerifier.js#0002:validateIncomingOp","exportIndex":2,"name":"validateIncomingOp","kind":"function","signature":"validateIncomingOp(verifier, peerId, op)","summary":"Validate an incoming op from a peer. Checks: 1. Op type is in the whitelist 2. Op has valid structure 3. Entity position changes are within physics limits"}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIntegrityVerifier.md","moduleTitle":"collab/CollabIntegrityVerifier","source":"engine/collab/CollabIntegrityVerifier.js","import":"/engine/collab/CollabIntegrityVerifier.js","sourceHash":"3bcaed84dcab13fc3b72f0f58c864d77d8d2e1e7a7c7529e199509e67b1c4412","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIntegrityVerifier.js#0003:recordOpInChain","exportIndex":3,"name":"recordOpInChain","kind":"function","signature":"recordOpInChain(verifier, peerId, op)","summary":"Record an op in the peer's hash chain for tamper-evidence. Call after validateIncomingOp succeeds."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIntegrityVerifier.md","moduleTitle":"collab/CollabIntegrityVerifier","source":"engine/collab/CollabIntegrityVerifier.js","import":"/engine/collab/CollabIntegrityVerifier.js","sourceHash":"3bcaed84dcab13fc3b72f0f58c864d77d8d2e1e7a7c7529e199509e67b1c4412","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIntegrityVerifier.js#0004:getChainHead","exportIndex":4,"name":"getChainHead","kind":"function","signature":"getChainHead(verifier, peerId)","summary":"Get the current chain head hash for a peer (for verification exchange)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIntegrityVerifier.md","moduleTitle":"collab/CollabIntegrityVerifier","source":"engine/collab/CollabIntegrityVerifier.js","import":"/engine/collab/CollabIntegrityVerifier.js","sourceHash":"3bcaed84dcab13fc3b72f0f58c864d77d8d2e1e7a7c7529e199509e67b1c4412","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIntegrityVerifier.js#0005:computeZoneDigest","exportIndex":5,"name":"computeZoneDigest","kind":"function","signature":"computeZoneDigest(verifier, sceneEntities, ecsWorld, getEntityComponent, authoritySet)","summary":"Compute a hash digest of all entity positions in the caller's zone. This is exchanged with peers for consensus-based state verification."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIntegrityVerifier.md","moduleTitle":"collab/CollabIntegrityVerifier","source":"engine/collab/CollabIntegrityVerifier.js","import":"/engine/collab/CollabIntegrityVerifier.js","sourceHash":"3bcaed84dcab13fc3b72f0f58c864d77d8d2e1e7a7c7529e199509e67b1c4412","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIntegrityVerifier.js#0006:buildDigestOp","exportIndex":6,"name":"buildDigestOp","kind":"function","signature":"buildDigestOp(verifier)","summary":"Build an integrity_digest op to broadcast."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIntegrityVerifier.md","moduleTitle":"collab/CollabIntegrityVerifier","source":"engine/collab/CollabIntegrityVerifier.js","import":"/engine/collab/CollabIntegrityVerifier.js","sourceHash":"3bcaed84dcab13fc3b72f0f58c864d77d8d2e1e7a7c7529e199509e67b1c4412","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIntegrityVerifier.js#0007:onRemoteDigest","exportIndex":7,"name":"onRemoteDigest","kind":"function","signature":"onRemoteDigest(verifier, peerId, digestOp)","summary":"Handle an incoming integrity_digest from a remote peer. Compares against our own digest — mismatch indicates desync or tampering."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIntegrityVerifier.md","moduleTitle":"collab/CollabIntegrityVerifier","source":"engine/collab/CollabIntegrityVerifier.js","import":"/engine/collab/CollabIntegrityVerifier.js","sourceHash":"3bcaed84dcab13fc3b72f0f58c864d77d8d2e1e7a7c7529e199509e67b1c4412","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIntegrityVerifier.js#0008:tickIntegrity","exportIndex":8,"name":"tickIntegrity","kind":"function","signature":"tickIntegrity(verifier, peerReputation)","summary":"Tick the verifier: decay violations, build trust, compute social influence. Call at ~1Hz."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIntegrityVerifier.md","moduleTitle":"collab/CollabIntegrityVerifier","source":"engine/collab/CollabIntegrityVerifier.js","import":"/engine/collab/CollabIntegrityVerifier.js","sourceHash":"3bcaed84dcab13fc3b72f0f58c864d77d8d2e1e7a7c7529e199509e67b1c4412","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIntegrityVerifier.js#0009:getPeerViolationCount","exportIndex":9,"name":"getPeerViolationCount","kind":"function","signature":"getPeerViolationCount(verifier, peerId)","summary":"Get the violation count for a peer."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIntegrityVerifier.md","moduleTitle":"collab/CollabIntegrityVerifier","source":"engine/collab/CollabIntegrityVerifier.js","import":"/engine/collab/CollabIntegrityVerifier.js","sourceHash":"3bcaed84dcab13fc3b72f0f58c864d77d8d2e1e7a7c7529e199509e67b1c4412","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIntegrityVerifier.js#0010:getPeerViolations","exportIndex":10,"name":"getPeerViolations","kind":"function","signature":"getPeerViolations(verifier, peerId)","summary":"Get recent violations for a peer."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIntegrityVerifier.md","moduleTitle":"collab/CollabIntegrityVerifier","source":"engine/collab/CollabIntegrityVerifier.js","import":"/engine/collab/CollabIntegrityVerifier.js","sourceHash":"3bcaed84dcab13fc3b72f0f58c864d77d8d2e1e7a7c7529e199509e67b1c4412","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIntegrityVerifier.js#0011:getAllViolationSummaries","exportIndex":11,"name":"getAllViolationSummaries","kind":"function","signature":"getAllViolationSummaries(verifier)","summary":"Get all peer violation summaries."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIntegrityVerifier.md","moduleTitle":"collab/CollabIntegrityVerifier","source":"engine/collab/CollabIntegrityVerifier.js","import":"/engine/collab/CollabIntegrityVerifier.js","sourceHash":"3bcaed84dcab13fc3b72f0f58c864d77d8d2e1e7a7c7529e199509e67b1c4412","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIntegrityVerifier.js#0012:getPeerTier","exportIndex":12,"name":"getPeerTier","kind":"function","signature":"getPeerTier(verifier, peerId)","summary":"Get the current tier for a peer."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIntegrityVerifier.md","moduleTitle":"collab/CollabIntegrityVerifier","source":"engine/collab/CollabIntegrityVerifier.js","import":"/engine/collab/CollabIntegrityVerifier.js","sourceHash":"3bcaed84dcab13fc3b72f0f58c864d77d8d2e1e7a7c7529e199509e67b1c4412","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIntegrityVerifier.js#0013:getPeerTrust","exportIndex":13,"name":"getPeerTrust","kind":"function","signature":"getPeerTrust(verifier, peerId)","summary":"Get trust level for a peer (0.0-1.0)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIntegrityVerifier.md","moduleTitle":"collab/CollabIntegrityVerifier","source":"engine/collab/CollabIntegrityVerifier.js","import":"/engine/collab/CollabIntegrityVerifier.js","sourceHash":"3bcaed84dcab13fc3b72f0f58c864d77d8d2e1e7a7c7529e199509e67b1c4412","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIntegrityVerifier.js#0014:setPlayMode","exportIndex":14,"name":"setPlayMode","kind":"function","signature":"setPlayMode(verifier, isPlayMode)","summary":"Set play mode flag — violations during play mode are weighted less."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIntegrityVerifier.md","moduleTitle":"collab/CollabIntegrityVerifier","source":"engine/collab/CollabIntegrityVerifier.js","import":"/engine/collab/CollabIntegrityVerifier.js","sourceHash":"3bcaed84dcab13fc3b72f0f58c864d77d8d2e1e7a7c7529e199509e67b1c4412","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIntegrityVerifier.js#0015:isPeerThrottled","exportIndex":15,"name":"isPeerThrottled","kind":"function","signature":"isPeerThrottled(verifier, peerId)","summary":"Check if a peer's ops should be throttled (tier >= THROTTLED)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIntegrityVerifier.md","moduleTitle":"collab/CollabIntegrityVerifier","source":"engine/collab/CollabIntegrityVerifier.js","import":"/engine/collab/CollabIntegrityVerifier.js","sourceHash":"3bcaed84dcab13fc3b72f0f58c864d77d8d2e1e7a7c7529e199509e67b1c4412","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIntegrityVerifier.js#0016:isPeerMuted","exportIndex":16,"name":"isPeerMuted","kind":"function","signature":"isPeerMuted(verifier, peerId)","summary":"Check if a peer's scene-edit ops should be blocked (tier >= MUTED)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIntegrityVerifier.md","moduleTitle":"collab/CollabIntegrityVerifier","source":"engine/collab/CollabIntegrityVerifier.js","import":"/engine/collab/CollabIntegrityVerifier.js","sourceHash":"3bcaed84dcab13fc3b72f0f58c864d77d8d2e1e7a7c7529e199509e67b1c4412","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIntegrityVerifier.js#0017:getIntegrityStats","exportIndex":17,"name":"getIntegrityStats","kind":"function","signature":"getIntegrityStats(verifier)","summary":"Get verifier stats."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIntegrityVerifier.md","moduleTitle":"collab/CollabIntegrityVerifier","source":"engine/collab/CollabIntegrityVerifier.js","import":"/engine/collab/CollabIntegrityVerifier.js","sourceHash":"3bcaed84dcab13fc3b72f0f58c864d77d8d2e1e7a7c7529e199509e67b1c4412","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIntegrityVerifier.js#0018:buildCapabilitiesOp","exportIndex":18,"name":"buildCapabilitiesOp","kind":"function","signature":"buildCapabilitiesOp(verifier)","summary":"Build a __capabilities__ op to send to a peer on connect. Contains our supported op types and version string so the remote peer can be lenient about ops we don't recognize (version mismatch, not cheating)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIntegrityVerifier.md","moduleTitle":"collab/CollabIntegrityVerifier","source":"engine/collab/CollabIntegrityVerifier.js","import":"/engine/collab/CollabIntegrityVerifier.js","sourceHash":"3bcaed84dcab13fc3b72f0f58c864d77d8d2e1e7a7c7529e199509e67b1c4412","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIntegrityVerifier.js#0019:registerPeerCapabilities","exportIndex":19,"name":"registerPeerCapabilities","kind":"function","signature":"registerPeerCapabilities(verifier, peerId, capabilitiesPayload)","summary":"Register a remote peer's declared capabilities. Called when we receive a __capabilities__ op from them. Unknown ops from peers with declared capabilities that include the op are treated as version mismatches (INFO), not cheating (HIGH)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIntegrityVerifier.md","moduleTitle":"collab/CollabIntegrityVerifier","source":"engine/collab/CollabIntegrityVerifier.js","import":"/engine/collab/CollabIntegrityVerifier.js","sourceHash":"3bcaed84dcab13fc3b72f0f58c864d77d8d2e1e7a7c7529e199509e67b1c4412","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIntegrityVerifier.js#0020:setLocalVersion","exportIndex":20,"name":"setLocalVersion","kind":"function","signature":"setLocalVersion(verifier, version)","summary":"Set the local version string for capability comparison."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIntegrityVerifier.md","moduleTitle":"collab/CollabIntegrityVerifier","source":"engine/collab/CollabIntegrityVerifier.js","import":"/engine/collab/CollabIntegrityVerifier.js","sourceHash":"3bcaed84dcab13fc3b72f0f58c864d77d8d2e1e7a7c7529e199509e67b1c4412","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIntegrityVerifier.js#0021:integrityRemovePeer","exportIndex":21,"name":"integrityRemovePeer","kind":"function","signature":"integrityRemovePeer(verifier, peerId)","summary":"Remove a peer's tracking state."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabIntegrityVerifier.md","moduleTitle":"collab/CollabIntegrityVerifier","source":"engine/collab/CollabIntegrityVerifier.js","import":"/engine/collab/CollabIntegrityVerifier.js","sourceHash":"3bcaed84dcab13fc3b72f0f58c864d77d8d2e1e7a7c7529e199509e67b1c4412","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabIntegrityVerifier.js#0022:destroyIntegrityVerifier","exportIndex":22,"name":"destroyIntegrityVerifier","kind":"function","signature":"destroyIntegrityVerifier(verifier)","summary":"Destroy verifier state."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabMeshTopology.md","moduleTitle":"collab/CollabMeshTopology","source":"engine/collab/CollabMeshTopology.js","import":"/engine/collab/CollabMeshTopology.js","sourceHash":"c880f9b5916d185ccf0bfd79c84ed9bc0ab66d0f1a657383cb1379f54168724c","subsystem":"engine","recordType":"api-module","id":"module:engine/collab/CollabMeshTopology.js","title":"collab/CollabMeshTopology","summary":"CollabMeshTopology.js Adaptive mesh topology for scalable P2P collaboration. Problem: Full mesh is O(N²) connections. At 8+ WebRTC peers, browsers struggle with connection management, DTLS overhead, and bandwidth. The old system had a hard limit of 4-8 peers before switching to star relay (single point of failure, bottleneck on host). Solution: Hybrid topology combining proven P2P techniques: 1. PARTIAL MESH — Each peer maintains K direct WebRTC connections to its \"best\" neighbors (lowest latency, highest reputation). K = 3-6 instead of N-1. Scales linearly, not quadratically. 2. GOSSIP PROPAGATION — Ops ripple through the partial mesh. Each peer forwards received ops to its neighbors (minus sender). With K=4, messages reach all 50 peers in ~3 hops (log_K(N)). Deduplication via op fingerprint prevents infinite loops. 3. SUPERNODE ELECTION — High-reputation peers (score ≥ 700) with good uptime and low latency are elected as supernodes. They maintain more connections (up to 2K) and serve as relay hubs between clusters. Inspired by Skype's original P2P architecture. 4. FAST CHANNEL BRIDGING — Same-origin peers use BroadcastChannel (zero cost). They don't count toward K and act as free bridges. Topology modes (auto-selected based on peer count): - FULL_MESH:   ≤6 WebRTC peers → everyone connects to everyone - PARTIAL_MESH: 7-50 peers → K-neighbor gossip mesh - SUPERNODE:    20+ peers → supernodes bridge clusters Inspired by: libp2p (IPFS), Kademlia, Bitcoin gossip, Meshtastic, Skype supernode architecture, and epidemic broadcast protocols. Current policy boundaries: topology callbacks recommend connection changes but EditorCollab does not execute them; topology reports are advisory rather than consensus; gossip envelopes are forwarded before application-level integrity validation; and captured large-room WebRTC traces remain absent.","exportCount":28}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabMeshTopology.md","moduleTitle":"collab/CollabMeshTopology","source":"engine/collab/CollabMeshTopology.js","import":"/engine/collab/CollabMeshTopology.js","sourceHash":"c880f9b5916d185ccf0bfd79c84ed9bc0ab66d0f1a657383cb1379f54168724c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabMeshTopology.js#0000:createMeshTopology","exportIndex":0,"name":"createMeshTopology","kind":"function","signature":"createMeshTopology(selfId, config = {})","summary":"Create a topology manager."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabMeshTopology.md","moduleTitle":"collab/CollabMeshTopology","source":"engine/collab/CollabMeshTopology.js","import":"/engine/collab/CollabMeshTopology.js","sourceHash":"c880f9b5916d185ccf0bfd79c84ed9bc0ab66d0f1a657383cb1379f54168724c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabMeshTopology.js#0001:resolveTopology","exportIndex":1,"name":"resolveTopology","kind":"function","signature":"resolveTopology(topo)","summary":"Resolve the current topology mode based on peer count and quality. Called after peer join/leave and during periodic rebalance."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabMeshTopology.md","moduleTitle":"collab/CollabMeshTopology","source":"engine/collab/CollabMeshTopology.js","import":"/engine/collab/CollabMeshTopology.js","sourceHash":"c880f9b5916d185ccf0bfd79c84ed9bc0ab66d0f1a657383cb1379f54168724c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabMeshTopology.js#0002:topologyAddPeer","exportIndex":2,"name":"topologyAddPeer","kind":"function","signature":"topologyAddPeer(topo, peerId, info = {})","summary":"Register a discovered peer (from signaling)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabMeshTopology.md","moduleTitle":"collab/CollabMeshTopology","source":"engine/collab/CollabMeshTopology.js","import":"/engine/collab/CollabMeshTopology.js","sourceHash":"c880f9b5916d185ccf0bfd79c84ed9bc0ab66d0f1a657383cb1379f54168724c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabMeshTopology.js#0003:topologyRemovePeer","exportIndex":3,"name":"topologyRemovePeer","kind":"function","signature":"topologyRemovePeer(topo, peerId)","summary":"Remove a peer (disconnected / left)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabMeshTopology.md","moduleTitle":"collab/CollabMeshTopology","source":"engine/collab/CollabMeshTopology.js","import":"/engine/collab/CollabMeshTopology.js","sourceHash":"c880f9b5916d185ccf0bfd79c84ed9bc0ab66d0f1a657383cb1379f54168724c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabMeshTopology.js#0004:topologyPeerConnected","exportIndex":4,"name":"topologyPeerConnected","kind":"function","signature":"topologyPeerConnected(topo, peerId)","summary":"Mark a peer as connected (WebRTC DataChannel open)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabMeshTopology.md","moduleTitle":"collab/CollabMeshTopology","source":"engine/collab/CollabMeshTopology.js","import":"/engine/collab/CollabMeshTopology.js","sourceHash":"c880f9b5916d185ccf0bfd79c84ed9bc0ab66d0f1a657383cb1379f54168724c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabMeshTopology.js#0005:topologyPeerDisconnected","exportIndex":5,"name":"topologyPeerDisconnected","kind":"function","signature":"topologyPeerDisconnected(topo, peerId)","summary":"Mark a peer as disconnected."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabMeshTopology.md","moduleTitle":"collab/CollabMeshTopology","source":"engine/collab/CollabMeshTopology.js","import":"/engine/collab/CollabMeshTopology.js","sourceHash":"c880f9b5916d185ccf0bfd79c84ed9bc0ab66d0f1a657383cb1379f54168724c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabMeshTopology.js#0006:topologyUpdatePeerMetrics","exportIndex":6,"name":"topologyUpdatePeerMetrics","kind":"function","signature":"topologyUpdatePeerMetrics(topo, peerId, metrics)","summary":"Update a peer's metrics (called from reputation system)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabMeshTopology.md","moduleTitle":"collab/CollabMeshTopology","source":"engine/collab/CollabMeshTopology.js","import":"/engine/collab/CollabMeshTopology.js","sourceHash":"c880f9b5916d185ccf0bfd79c84ed9bc0ab66d0f1a657383cb1379f54168724c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabMeshTopology.js#0007:computeIdealNeighbors","exportIndex":7,"name":"computeIdealNeighbors","kind":"function","signature":"computeIdealNeighbors(topo)","summary":"Compute the ideal neighbor set based on current metrics. Returns { connect: string[], disconnect: string[] } — peers to add/remove."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabMeshTopology.md","moduleTitle":"collab/CollabMeshTopology","source":"engine/collab/CollabMeshTopology.js","import":"/engine/collab/CollabMeshTopology.js","sourceHash":"c880f9b5916d185ccf0bfd79c84ed9bc0ab66d0f1a657383cb1379f54168724c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabMeshTopology.js#0008:evaluateSupernodeStatus","exportIndex":8,"name":"evaluateSupernodeStatus","kind":"function","signature":"evaluateSupernodeStatus(topo, selfScore, selfLatencyAvg, integrityInfo)","summary":"Evaluate whether this peer should be a supernode. Criteria: high reputation, low latency, good uptime, clean integrity, trusted. Peers with violations (throttled/muted/kicked) are immediately disqualified. Trust and social standing boost candidacy score."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabMeshTopology.md","moduleTitle":"collab/CollabMeshTopology","source":"engine/collab/CollabMeshTopology.js","import":"/engine/collab/CollabMeshTopology.js","sourceHash":"c880f9b5916d185ccf0bfd79c84ed9bc0ab66d0f1a657383cb1379f54168724c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabMeshTopology.js#0009:topologyUpdatePeerIntegrity","exportIndex":9,"name":"topologyUpdatePeerIntegrity","kind":"function","signature":"topologyUpdatePeerIntegrity(topo, peerId, info)","summary":"Update a peer's integrity data (called from integrity verifier tick)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabMeshTopology.md","moduleTitle":"collab/CollabMeshTopology","source":"engine/collab/CollabMeshTopology.js","import":"/engine/collab/CollabMeshTopology.js","sourceHash":"c880f9b5916d185ccf0bfd79c84ed9bc0ab66d0f1a657383cb1379f54168724c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabMeshTopology.js#0010:evaluateRemoteSupernodes","exportIndex":10,"name":"evaluateRemoteSupernodes","kind":"function","signature":"evaluateRemoteSupernodes(topo)","summary":"Evaluate all remote supernodes and demote any that have degraded. Called during rebalance tick. Demoted supernodes are unregistered and a topology change is triggered so the mesh re-routes around them."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabMeshTopology.md","moduleTitle":"collab/CollabMeshTopology","source":"engine/collab/CollabMeshTopology.js","import":"/engine/collab/CollabMeshTopology.js","sourceHash":"c880f9b5916d185ccf0bfd79c84ed9bc0ab66d0f1a657383cb1379f54168724c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabMeshTopology.js#0011:topologyRegisterSupernode","exportIndex":11,"name":"topologyRegisterSupernode","kind":"function","signature":"topologyRegisterSupernode(topo, peerId, announcement = null)","summary":"Register a remote peer as a supernode."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabMeshTopology.md","moduleTitle":"collab/CollabMeshTopology","source":"engine/collab/CollabMeshTopology.js","import":"/engine/collab/CollabMeshTopology.js","sourceHash":"c880f9b5916d185ccf0bfd79c84ed9bc0ab66d0f1a657383cb1379f54168724c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabMeshTopology.js#0012:topologyUnregisterSupernode","exportIndex":12,"name":"topologyUnregisterSupernode","kind":"function","signature":"topologyUnregisterSupernode(topo, peerId)","summary":"Unregister a remote peer as a supernode."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabMeshTopology.md","moduleTitle":"collab/CollabMeshTopology","source":"engine/collab/CollabMeshTopology.js","import":"/engine/collab/CollabMeshTopology.js","sourceHash":"c880f9b5916d185ccf0bfd79c84ed9bc0ab66d0f1a657383cb1379f54168724c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabMeshTopology.js#0013:topologyApplyInfo","exportIndex":13,"name":"topologyApplyInfo","kind":"function","signature":"topologyApplyInfo(topo, fromPeerId, payload)","summary":"Validate and apply one advisory topology_info payload atomically. The report may expand discovery knowledge but never mutates live routes."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabMeshTopology.md","moduleTitle":"collab/CollabMeshTopology","source":"engine/collab/CollabMeshTopology.js","import":"/engine/collab/CollabMeshTopology.js","sourceHash":"c880f9b5916d185ccf0bfd79c84ed9bc0ab66d0f1a657383cb1379f54168724c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabMeshTopology.js#0014:gossipFingerprint","exportIndex":14,"name":"gossipFingerprint","kind":"function","signature":"gossipFingerprint(op, originPeerId)","summary":"Generate a gossip fingerprint for deduplication. Uses a compact hash of the op to avoid forwarding the same op twice."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabMeshTopology.md","moduleTitle":"collab/CollabMeshTopology","source":"engine/collab/CollabMeshTopology.js","import":"/engine/collab/CollabMeshTopology.js","sourceHash":"c880f9b5916d185ccf0bfd79c84ed9bc0ab66d0f1a657383cb1379f54168724c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabMeshTopology.js#0015:gossipWrap","exportIndex":15,"name":"gossipWrap","kind":"function","signature":"gossipWrap(topo, op)","summary":"Wrap an op for gossip propagation. Adds gossip metadata: origin, TTL, hop count, fingerprint."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabMeshTopology.md","moduleTitle":"collab/CollabMeshTopology","source":"engine/collab/CollabMeshTopology.js","import":"/engine/collab/CollabMeshTopology.js","sourceHash":"c880f9b5916d185ccf0bfd79c84ed9bc0ab66d0f1a657383cb1379f54168724c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabMeshTopology.js#0016:gossipReceive","exportIndex":16,"name":"gossipReceive","kind":"function","signature":"gossipReceive(topo, fromPeerId, op)","summary":"Process an incoming gossip-wrapped op. Returns { forward: boolean, op: Object, targets: string[] } - forward: true if this op should be forwarded to neighbors - op: the op with decremented TTL - targets: peerIds to forward to (excludes sender and origin)"}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabMeshTopology.md","moduleTitle":"collab/CollabMeshTopology","source":"engine/collab/CollabMeshTopology.js","import":"/engine/collab/CollabMeshTopology.js","sourceHash":"c880f9b5916d185ccf0bfd79c84ed9bc0ab66d0f1a657383cb1379f54168724c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabMeshTopology.js#0017:startTopology","exportIndex":17,"name":"startTopology","kind":"function","signature":"startTopology(topo)","summary":"Start the periodic rebalance timer."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabMeshTopology.md","moduleTitle":"collab/CollabMeshTopology","source":"engine/collab/CollabMeshTopology.js","import":"/engine/collab/CollabMeshTopology.js","sourceHash":"c880f9b5916d185ccf0bfd79c84ed9bc0ab66d0f1a657383cb1379f54168724c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabMeshTopology.js#0018:stopTopology","exportIndex":18,"name":"stopTopology","kind":"function","signature":"stopTopology(topo)","summary":"Stop the rebalance timer."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabMeshTopology.md","moduleTitle":"collab/CollabMeshTopology","source":"engine/collab/CollabMeshTopology.js","import":"/engine/collab/CollabMeshTopology.js","sourceHash":"c880f9b5916d185ccf0bfd79c84ed9bc0ab66d0f1a657383cb1379f54168724c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabMeshTopology.js#0019:getTopologyMode","exportIndex":19,"name":"getTopologyMode","kind":"function","signature":"getTopologyMode(topo)","summary":"Get current topology mode."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabMeshTopology.md","moduleTitle":"collab/CollabMeshTopology","source":"engine/collab/CollabMeshTopology.js","import":"/engine/collab/CollabMeshTopology.js","sourceHash":"c880f9b5916d185ccf0bfd79c84ed9bc0ab66d0f1a657383cb1379f54168724c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabMeshTopology.js#0020:shouldGossip","exportIndex":20,"name":"shouldGossip","kind":"function","signature":"shouldGossip(topo)","summary":"Check if we should use gossip forwarding (partial/supernode mode)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabMeshTopology.md","moduleTitle":"collab/CollabMeshTopology","source":"engine/collab/CollabMeshTopology.js","import":"/engine/collab/CollabMeshTopology.js","sourceHash":"c880f9b5916d185ccf0bfd79c84ed9bc0ab66d0f1a657383cb1379f54168724c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabMeshTopology.js#0021:isSupernode","exportIndex":21,"name":"isSupernode","kind":"function","signature":"isSupernode(topo)","summary":"Check if we're a supernode."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabMeshTopology.md","moduleTitle":"collab/CollabMeshTopology","source":"engine/collab/CollabMeshTopology.js","import":"/engine/collab/CollabMeshTopology.js","sourceHash":"c880f9b5916d185ccf0bfd79c84ed9bc0ab66d0f1a657383cb1379f54168724c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabMeshTopology.js#0022:getNeighborIds","exportIndex":22,"name":"getNeighborIds","kind":"function","signature":"getNeighborIds(topo)","summary":"Get the list of our current neighbor peerIds."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabMeshTopology.md","moduleTitle":"collab/CollabMeshTopology","source":"engine/collab/CollabMeshTopology.js","import":"/engine/collab/CollabMeshTopology.js","sourceHash":"c880f9b5916d185ccf0bfd79c84ed9bc0ab66d0f1a657383cb1379f54168724c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabMeshTopology.js#0023:getTopologyStats","exportIndex":23,"name":"getTopologyStats","kind":"function","signature":"getTopologyStats(topo)","summary":"Get topology stats for UI display."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabMeshTopology.md","moduleTitle":"collab/CollabMeshTopology","source":"engine/collab/CollabMeshTopology.js","import":"/engine/collab/CollabMeshTopology.js","sourceHash":"c880f9b5916d185ccf0bfd79c84ed9bc0ab66d0f1a657383cb1379f54168724c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabMeshTopology.js#0024:buildSupernodeAnnounce","exportIndex":24,"name":"buildSupernodeAnnounce","kind":"function","signature":"buildSupernodeAnnounce(topo)","summary":"Build a supernode announcement op to broadcast. Peers use this to discover supernodes."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabMeshTopology.md","moduleTitle":"collab/CollabMeshTopology","source":"engine/collab/CollabMeshTopology.js","import":"/engine/collab/CollabMeshTopology.js","sourceHash":"c880f9b5916d185ccf0bfd79c84ed9bc0ab66d0f1a657383cb1379f54168724c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabMeshTopology.js#0025:buildTopologyInfoOp","exportIndex":25,"name":"buildTopologyInfoOp","kind":"function","signature":"buildTopologyInfoOp(topo)","summary":"Build a topology_info op for neighbor exchange. Peers periodically share their neighbor lists so the mesh can discover better paths (inspired by BGP route sharing)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabMeshTopology.md","moduleTitle":"collab/CollabMeshTopology","source":"engine/collab/CollabMeshTopology.js","import":"/engine/collab/CollabMeshTopology.js","sourceHash":"c880f9b5916d185ccf0bfd79c84ed9bc0ab66d0f1a657383cb1379f54168724c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabMeshTopology.js#0026:destroyMeshTopology","exportIndex":26,"name":"destroyMeshTopology","kind":"function","signature":"destroyMeshTopology(topo)","summary":"Destroy the topology manager."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabMeshTopology.md","moduleTitle":"collab/CollabMeshTopology","source":"engine/collab/CollabMeshTopology.js","import":"/engine/collab/CollabMeshTopology.js","sourceHash":"c880f9b5916d185ccf0bfd79c84ed9bc0ab66d0f1a657383cb1379f54168724c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabMeshTopology.js#0027:rebalanceTopologyNow","exportIndex":27,"name":"rebalanceTopologyNow","kind":"function","signature":"rebalanceTopologyNow(topo)","summary":"Run one topology rebalance immediately (useful after discovery/metrics changes)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabMessageRouter.md","moduleTitle":"collab/CollabMessageRouter","source":"engine/collab/CollabMessageRouter.js","import":"/engine/collab/CollabMessageRouter.js","sourceHash":"6c1d8906253108481aa844a5495d602c9894dbfd4fb92f05e3252ae5f48a00c4","subsystem":"engine","recordType":"api-module","id":"module:engine/collab/CollabMessageRouter.js","title":"collab/CollabMessageRouter","summary":"CollabMessageRouter.js Priority-based message orchestration for collab sync. Sits between EditorCollab and CollabCore, providing: - 4 priority lanes (critical → ephemeral) - Bandwidth monitoring via channel.bufferedAmount - Transform coalescing (latest position wins per entity) - Adaptive rate control under backpressure Priority lanes: 0 — Critical:  play_sync, __kick__, snapshot         → immediate, never throttled 1 — Realtime:  play transforms/PBD/grab force        → coalesced or rate-budgeted 2 — Scene:     create, delete, transform, property…  → ordered, rate-budgeted 3 — Ephemeral: sim_heartbeat                          → latest-only, droppable","exportCount":10}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabMessageRouter.md","moduleTitle":"collab/CollabMessageRouter","source":"engine/collab/CollabMessageRouter.js","import":"/engine/collab/CollabMessageRouter.js","sourceHash":"6c1d8906253108481aa844a5495d602c9894dbfd4fb92f05e3252ae5f48a00c4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabMessageRouter.js#0000:createMessageRouter","exportIndex":0,"name":"createMessageRouter","kind":"function","signature":"createMessageRouter(sendFn, getBufferedAmount)","summary":"Create a message router instance."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabMessageRouter.md","moduleTitle":"collab/CollabMessageRouter","source":"engine/collab/CollabMessageRouter.js","import":"/engine/collab/CollabMessageRouter.js","sourceHash":"6c1d8906253108481aa844a5495d602c9894dbfd4fb92f05e3252ae5f48a00c4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabMessageRouter.js#0001:routerEnqueue","exportIndex":1,"name":"routerEnqueue","kind":"function","signature":"routerEnqueue(router, op)","summary":"Enqueue an op for prioritized delivery."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabMessageRouter.md","moduleTitle":"collab/CollabMessageRouter","source":"engine/collab/CollabMessageRouter.js","import":"/engine/collab/CollabMessageRouter.js","sourceHash":"6c1d8906253108481aa844a5495d602c9894dbfd4fb92f05e3252ae5f48a00c4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabMessageRouter.js#0002:messageRouterOpReport","exportIndex":2,"name":"messageRouterOpReport","kind":"function","signature":"messageRouterOpReport(op)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabMessageRouter.md","moduleTitle":"collab/CollabMessageRouter","source":"engine/collab/CollabMessageRouter.js","import":"/engine/collab/CollabMessageRouter.js","sourceHash":"6c1d8906253108481aa844a5495d602c9894dbfd4fb92f05e3252ae5f48a00c4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabMessageRouter.js#0003:messageRouterBufferedAmountReport","exportIndex":3,"name":"messageRouterBufferedAmountReport","kind":"function","signature":"messageRouterBufferedAmountReport(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabMessageRouter.md","moduleTitle":"collab/CollabMessageRouter","source":"engine/collab/CollabMessageRouter.js","import":"/engine/collab/CollabMessageRouter.js","sourceHash":"6c1d8906253108481aa844a5495d602c9894dbfd4fb92f05e3252ae5f48a00c4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabMessageRouter.js#0004:routerFlush","exportIndex":4,"name":"routerFlush","kind":"function","signature":"routerFlush(router)","summary":"Flush all queued ops respecting priority and backpressure. Call once per render frame from the render loop."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabMessageRouter.md","moduleTitle":"collab/CollabMessageRouter","source":"engine/collab/CollabMessageRouter.js","import":"/engine/collab/CollabMessageRouter.js","sourceHash":"6c1d8906253108481aa844a5495d602c9894dbfd4fb92f05e3252ae5f48a00c4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabMessageRouter.js#0005:routerStart","exportIndex":5,"name":"routerStart","kind":"function","signature":"routerStart(router)","summary":"Start automatic flush timer (call once on init)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabMessageRouter.md","moduleTitle":"collab/CollabMessageRouter","source":"engine/collab/CollabMessageRouter.js","import":"/engine/collab/CollabMessageRouter.js","sourceHash":"6c1d8906253108481aa844a5495d602c9894dbfd4fb92f05e3252ae5f48a00c4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabMessageRouter.js#0006:routerStop","exportIndex":6,"name":"routerStop","kind":"function","signature":"routerStop(router)","summary":"Stop the automatic flush timer."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabMessageRouter.md","moduleTitle":"collab/CollabMessageRouter","source":"engine/collab/CollabMessageRouter.js","import":"/engine/collab/CollabMessageRouter.js","sourceHash":"6c1d8906253108481aa844a5495d602c9894dbfd4fb92f05e3252ae5f48a00c4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabMessageRouter.js#0007:getRouterStats","exportIndex":7,"name":"getRouterStats","kind":"function","signature":"getRouterStats(router)","summary":"Get router statistics."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabMessageRouter.md","moduleTitle":"collab/CollabMessageRouter","source":"engine/collab/CollabMessageRouter.js","import":"/engine/collab/CollabMessageRouter.js","sourceHash":"6c1d8906253108481aa844a5495d602c9894dbfd4fb92f05e3252ae5f48a00c4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabMessageRouter.js#0008:resetRouter","exportIndex":8,"name":"resetRouter","kind":"function","signature":"resetRouter(router)","summary":"Reset router state (on disconnect/reconnect)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabMessageRouter.md","moduleTitle":"collab/CollabMessageRouter","source":"engine/collab/CollabMessageRouter.js","import":"/engine/collab/CollabMessageRouter.js","sourceHash":"6c1d8906253108481aa844a5495d602c9894dbfd4fb92f05e3252ae5f48a00c4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabMessageRouter.js#0009:destroyRouter","exportIndex":9,"name":"destroyRouter","kind":"function","signature":"destroyRouter(router)","summary":"Destroy router."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabOpQueue.md","moduleTitle":"collab/CollabOpQueue","source":"engine/collab/CollabOpQueue.js","import":"/engine/collab/CollabOpQueue.js","sourceHash":"464bad375259ccab650a6b5667fa80809efa68fc7f0a1593e412acaf7d353586","subsystem":"engine","recordType":"api-module","id":"module:engine/collab/CollabOpQueue.js","title":"collab/CollabOpQueue","summary":"CollabOpQueue.js Op ordering, deduplication, and per-peer sequence gap handling. Each op: { id, peerId, seq, type, payload, ts } Current scope: bounded local ordering for admitted logical peer IDs. Sequence epochs/wrap, retransmission/NACK, cryptographic sender binding, and captured loss/reordering transport traces remain audit gaps.","exportCount":8}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabOpQueue.md","moduleTitle":"collab/CollabOpQueue","source":"engine/collab/CollabOpQueue.js","import":"/engine/collab/CollabOpQueue.js","sourceHash":"464bad375259ccab650a6b5667fa80809efa68fc7f0a1593e412acaf7d353586","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabOpQueue.js#0000:collabOpAdmissionReport","exportIndex":0,"name":"collabOpAdmissionReport","kind":"function","signature":"collabOpAdmissionReport(op)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabOpQueue.md","moduleTitle":"collab/CollabOpQueue","source":"engine/collab/CollabOpQueue.js","import":"/engine/collab/CollabOpQueue.js","sourceHash":"464bad375259ccab650a6b5667fa80809efa68fc7f0a1593e412acaf7d353586","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabOpQueue.js#0001:createOpQueue","exportIndex":1,"name":"createOpQueue","kind":"function","signature":"createOpQueue()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabOpQueue.md","moduleTitle":"collab/CollabOpQueue","source":"engine/collab/CollabOpQueue.js","import":"/engine/collab/CollabOpQueue.js","sourceHash":"464bad375259ccab650a6b5667fa80809efa68fc7f0a1593e412acaf7d353586","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabOpQueue.js#0002:enqueueOp","exportIndex":2,"name":"enqueueOp","kind":"function","signature":"enqueueOp(queue, op)","summary":"Enqueue an incoming op. Returns array of ops ready to apply."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabOpQueue.md","moduleTitle":"collab/CollabOpQueue","source":"engine/collab/CollabOpQueue.js","import":"/engine/collab/CollabOpQueue.js","sourceHash":"464bad375259ccab650a6b5667fa80809efa68fc7f0a1593e412acaf7d353586","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabOpQueue.js#0003:flushPeer","exportIndex":3,"name":"flushPeer","kind":"function","signature":"flushPeer(queue, peerId)","summary":"Flush all held ops for a peer (called on timeout or peer leave)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabOpQueue.md","moduleTitle":"collab/CollabOpQueue","source":"engine/collab/CollabOpQueue.js","import":"/engine/collab/CollabOpQueue.js","sourceHash":"464bad375259ccab650a6b5667fa80809efa68fc7f0a1593e412acaf7d353586","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabOpQueue.js#0004:removePeer","exportIndex":4,"name":"removePeer","kind":"function","signature":"removePeer(queue, peerId)","summary":"Remove all state for a peer (on disconnect)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabOpQueue.md","moduleTitle":"collab/CollabOpQueue","source":"engine/collab/CollabOpQueue.js","import":"/engine/collab/CollabOpQueue.js","sourceHash":"464bad375259ccab650a6b5667fa80809efa68fc7f0a1593e412acaf7d353586","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabOpQueue.js#0005:tickOpQueue","exportIndex":5,"name":"tickOpQueue","kind":"function","signature":"tickOpQueue(queue)","summary":"Tick — flush any peers with stale gaps."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabOpQueue.md","moduleTitle":"collab/CollabOpQueue","source":"engine/collab/CollabOpQueue.js","import":"/engine/collab/CollabOpQueue.js","sourceHash":"464bad375259ccab650a6b5667fa80809efa68fc7f0a1593e412acaf7d353586","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabOpQueue.js#0006:getOpQueueStats","exportIndex":6,"name":"getOpQueueStats","kind":"function","signature":"getOpQueueStats(queue)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabOpQueue.md","moduleTitle":"collab/CollabOpQueue","source":"engine/collab/CollabOpQueue.js","import":"/engine/collab/CollabOpQueue.js","sourceHash":"464bad375259ccab650a6b5667fa80809efa68fc7f0a1593e412acaf7d353586","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabOpQueue.js#0007:clearOpQueue","exportIndex":7,"name":"clearOpQueue","kind":"function","signature":"clearOpQueue(queue)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabPeerReputation.md","moduleTitle":"collab/CollabPeerReputation","source":"engine/collab/CollabPeerReputation.js","import":"/engine/collab/CollabPeerReputation.js","sourceHash":"32b6305e19cefa8a0d52b5a95a22678bdc039cb4dc70ff92f6a75ff8b43723d0","subsystem":"engine","recordType":"api-module","id":"module:engine/collab/CollabPeerReputation.js","title":"collab/CollabPeerReputation","summary":"CollabPeerReputation.js Peer quality scoring system — rates each peer 0-1000 based on real-time connection metrics. Inspired by Meshtastic SNR-based prioritization and multi-layer throttling. Score breakdown (1000 total): 250 — Latency (RTT from heartbeat pings) 200 — Packet delivery (sent vs received ratio) 200 — Connection stability (reconnection count) 150 — Session duration (longer = more trusted) 100 — Jitter (variance in latency — lower = better) 100 — Throughput quality (buffered amount / backpressure) Each sub-score is 0.0–1.0, multiplied by its weight. The total is rounded to an integer 0–1000. Scores update every 2 seconds; observed peer scores are shared through signed reports, while the local self-score rides pongs. Inspired by: Meshtastic SNR-based node prioritization, role-based priority, and automatic traffic scaling for large meshes.","exportCount":15}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabPeerReputation.md","moduleTitle":"collab/CollabPeerReputation","source":"engine/collab/CollabPeerReputation.js","import":"/engine/collab/CollabPeerReputation.js","sourceHash":"32b6305e19cefa8a0d52b5a95a22678bdc039cb4dc70ff92f6a75ff8b43723d0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabPeerReputation.js#0000:createPeerReputation","exportIndex":0,"name":"createPeerReputation","kind":"function","signature":"createPeerReputation(selfId)","summary":"Create a reputation tracker for all peers."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabPeerReputation.md","moduleTitle":"collab/CollabPeerReputation","source":"engine/collab/CollabPeerReputation.js","import":"/engine/collab/CollabPeerReputation.js","sourceHash":"32b6305e19cefa8a0d52b5a95a22678bdc039cb4dc70ff92f6a75ff8b43723d0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabPeerReputation.js#0001:reputationAddPeer","exportIndex":1,"name":"reputationAddPeer","kind":"function","signature":"reputationAddPeer(rep, peerId)","summary":"Register a new peer."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabPeerReputation.md","moduleTitle":"collab/CollabPeerReputation","source":"engine/collab/CollabPeerReputation.js","import":"/engine/collab/CollabPeerReputation.js","sourceHash":"32b6305e19cefa8a0d52b5a95a22678bdc039cb4dc70ff92f6a75ff8b43723d0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabPeerReputation.js#0002:reputationRemovePeer","exportIndex":2,"name":"reputationRemovePeer","kind":"function","signature":"reputationRemovePeer(rep, peerId)","summary":"Remove a peer."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabPeerReputation.md","moduleTitle":"collab/CollabPeerReputation","source":"engine/collab/CollabPeerReputation.js","import":"/engine/collab/CollabPeerReputation.js","sourceHash":"32b6305e19cefa8a0d52b5a95a22678bdc039cb4dc70ff92f6a75ff8b43723d0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabPeerReputation.js#0003:buildPingOps","exportIndex":3,"name":"buildPingOps","kind":"function","signature":"buildPingOps(rep)","summary":"Build ping ops to send to all peers. Call at PING_INTERVAL_MS."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabPeerReputation.md","moduleTitle":"collab/CollabPeerReputation","source":"engine/collab/CollabPeerReputation.js","import":"/engine/collab/CollabPeerReputation.js","sourceHash":"32b6305e19cefa8a0d52b5a95a22678bdc039cb4dc70ff92f6a75ff8b43723d0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabPeerReputation.js#0004:buildPongOp","exportIndex":4,"name":"buildPongOp","kind":"function","signature":"buildPongOp(pingOp, selfScore)","summary":"Build a pong response to an incoming ping."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabPeerReputation.md","moduleTitle":"collab/CollabPeerReputation","source":"engine/collab/CollabPeerReputation.js","import":"/engine/collab/CollabPeerReputation.js","sourceHash":"32b6305e19cefa8a0d52b5a95a22678bdc039cb4dc70ff92f6a75ff8b43723d0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabPeerReputation.js#0005:onPongReceived","exportIndex":5,"name":"onPongReceived","kind":"function","signature":"onPongReceived(rep, peerId, pongOp)","summary":"Handle an incoming pong from a peer. Records RTT and jitter."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabPeerReputation.md","moduleTitle":"collab/CollabPeerReputation","source":"engine/collab/CollabPeerReputation.js","import":"/engine/collab/CollabPeerReputation.js","sourceHash":"32b6305e19cefa8a0d52b5a95a22678bdc039cb4dc70ff92f6a75ff8b43723d0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabPeerReputation.js#0006:recordBufferedAmount","exportIndex":6,"name":"recordBufferedAmount","kind":"function","signature":"recordBufferedAmount(rep, peerId, bufferedAmount)","summary":"Record the current bufferedAmount for a peer's data channel. Call this periodically (e.g., every presence tick)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabPeerReputation.md","moduleTitle":"collab/CollabPeerReputation","source":"engine/collab/CollabPeerReputation.js","import":"/engine/collab/CollabPeerReputation.js","sourceHash":"32b6305e19cefa8a0d52b5a95a22678bdc039cb4dc70ff92f6a75ff8b43723d0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabPeerReputation.js#0007:tickReputation","exportIndex":7,"name":"tickReputation","kind":"function","signature":"tickReputation(rep)","summary":"Recompute scores for all peers. Call at ~0.5Hz."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabPeerReputation.md","moduleTitle":"collab/CollabPeerReputation","source":"engine/collab/CollabPeerReputation.js","import":"/engine/collab/CollabPeerReputation.js","sourceHash":"32b6305e19cefa8a0d52b5a95a22678bdc039cb4dc70ff92f6a75ff8b43723d0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabPeerReputation.js#0008:getPeerScore","exportIndex":8,"name":"getPeerScore","kind":"function","signature":"getPeerScore(rep, peerId)","summary":"Get the reputation score for a specific peer (0-1000)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabPeerReputation.md","moduleTitle":"collab/CollabPeerReputation","source":"engine/collab/CollabPeerReputation.js","import":"/engine/collab/CollabPeerReputation.js","sourceHash":"32b6305e19cefa8a0d52b5a95a22678bdc039cb4dc70ff92f6a75ff8b43723d0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabPeerReputation.js#0009:getPeerMetrics","exportIndex":9,"name":"getPeerMetrics","kind":"function","signature":"getPeerMetrics(rep, peerId)","summary":"Get full metrics for a specific peer (for debug / stats display)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabPeerReputation.md","moduleTitle":"collab/CollabPeerReputation","source":"engine/collab/CollabPeerReputation.js","import":"/engine/collab/CollabPeerReputation.js","sourceHash":"32b6305e19cefa8a0d52b5a95a22678bdc039cb4dc70ff92f6a75ff8b43723d0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabPeerReputation.js#0010:getSelfScore","exportIndex":10,"name":"getSelfScore","kind":"function","signature":"getSelfScore(rep)","summary":"Get the local peer's self-score. This remains the bootstrap score until a self-observation consensus path exists."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabPeerReputation.md","moduleTitle":"collab/CollabPeerReputation","source":"engine/collab/CollabPeerReputation.js","import":"/engine/collab/CollabPeerReputation.js","sourceHash":"32b6305e19cefa8a0d52b5a95a22678bdc039cb4dc70ff92f6a75ff8b43723d0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabPeerReputation.js#0011:getAllPeerScores","exportIndex":11,"name":"getAllPeerScores","kind":"function","signature":"getAllPeerScores(rep)","summary":"Get all peer scores as an array of { peerId, score, subScores, avgRtt, avgJitter }."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabPeerReputation.md","moduleTitle":"collab/CollabPeerReputation","source":"engine/collab/CollabPeerReputation.js","import":"/engine/collab/CollabPeerReputation.js","sourceHash":"32b6305e19cefa8a0d52b5a95a22678bdc039cb4dc70ff92f6a75ff8b43723d0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabPeerReputation.js#0012:getScoreColor","exportIndex":12,"name":"getScoreColor","kind":"function","signature":"getScoreColor(score)","summary":"Get the score color for rendering (green → yellow → red gradient)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabPeerReputation.md","moduleTitle":"collab/CollabPeerReputation","source":"engine/collab/CollabPeerReputation.js","import":"/engine/collab/CollabPeerReputation.js","sourceHash":"32b6305e19cefa8a0d52b5a95a22678bdc039cb4dc70ff92f6a75ff8b43723d0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabPeerReputation.js#0013:getScoreLabel","exportIndex":13,"name":"getScoreLabel","kind":"function","signature":"getScoreLabel(score)","summary":"Get a human-readable label for a score range."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabPeerReputation.md","moduleTitle":"collab/CollabPeerReputation","source":"engine/collab/CollabPeerReputation.js","import":"/engine/collab/CollabPeerReputation.js","sourceHash":"32b6305e19cefa8a0d52b5a95a22678bdc039cb4dc70ff92f6a75ff8b43723d0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabPeerReputation.js#0014:destroyPeerReputation","exportIndex":14,"name":"destroyPeerReputation","kind":"function","signature":"destroyPeerReputation(rep)","summary":"Destroy reputation state."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabPlaySync.md","moduleTitle":"collab/CollabPlaySync","source":"engine/collab/CollabPlaySync.js","import":"/engine/collab/CollabPlaySync.js","sourceHash":"6eb749d8695913b4ab10b9ef5f968b4936eccedf3882bee9048918785538ec92","subsystem":"engine","recordType":"api-module","id":"module:engine/collab/CollabPlaySync.js","title":"collab/CollabPlaySync","summary":"CollabPlaySync.js Synchronizes play/pause/stop across all connected peers. Broadcasts a shared determinism seed so all simulations run identically. Sends heartbeat hashes every 1s for divergence detection.","exportCount":16}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabPlaySync.md","moduleTitle":"collab/CollabPlaySync","source":"engine/collab/CollabPlaySync.js","import":"/engine/collab/CollabPlaySync.js","sourceHash":"6eb749d8695913b4ab10b9ef5f968b4936eccedf3882bee9048918785538ec92","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabPlaySync.js#0000:createPlaySync","exportIndex":0,"name":"createPlaySync","kind":"function","signature":"createPlaySync(config = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabPlaySync.md","moduleTitle":"collab/CollabPlaySync","source":"engine/collab/CollabPlaySync.js","import":"/engine/collab/CollabPlaySync.js","sourceHash":"6eb749d8695913b4ab10b9ef5f968b4936eccedf3882bee9048918785538ec92","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabPlaySync.js#0001:playSyncCommandReport","exportIndex":1,"name":"playSyncCommandReport","kind":"function","signature":"playSyncCommandReport(payload)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabPlaySync.md","moduleTitle":"collab/CollabPlaySync","source":"engine/collab/CollabPlaySync.js","import":"/engine/collab/CollabPlaySync.js","sourceHash":"6eb749d8695913b4ab10b9ef5f968b4936eccedf3882bee9048918785538ec92","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabPlaySync.js#0002:playSyncTickReport","exportIndex":2,"name":"playSyncTickReport","kind":"function","signature":"playSyncTickReport(simTime)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabPlaySync.md","moduleTitle":"collab/CollabPlaySync","source":"engine/collab/CollabPlaySync.js","import":"/engine/collab/CollabPlaySync.js","sourceHash":"6eb749d8695913b4ab10b9ef5f968b4936eccedf3882bee9048918785538ec92","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabPlaySync.js#0003:playSyncHeartbeatReport","exportIndex":3,"name":"playSyncHeartbeatReport","kind":"function","signature":"playSyncHeartbeatReport(payload, currentSeed)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabPlaySync.md","moduleTitle":"collab/CollabPlaySync","source":"engine/collab/CollabPlaySync.js","import":"/engine/collab/CollabPlaySync.js","sourceHash":"6eb749d8695913b4ab10b9ef5f968b4936eccedf3882bee9048918785538ec92","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabPlaySync.js#0004:playSyncCorrectionTargetReport","exportIndex":4,"name":"playSyncCorrectionTargetReport","kind":"function","signature":"playSyncCorrectionTargetReport(authoritySimTime, localSimTime)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabPlaySync.md","moduleTitle":"collab/CollabPlaySync","source":"engine/collab/CollabPlaySync.js","import":"/engine/collab/CollabPlaySync.js","sourceHash":"6eb749d8695913b4ab10b9ef5f968b4936eccedf3882bee9048918785538ec92","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabPlaySync.js#0005:playSyncAccumulatorCorrectionReport","exportIndex":5,"name":"playSyncAccumulatorCorrectionReport","kind":"function","signature":"playSyncAccumulatorCorrectionReport(targetSimTime, localSimTime, correctionRate)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabPlaySync.md","moduleTitle":"collab/CollabPlaySync","source":"engine/collab/CollabPlaySync.js","import":"/engine/collab/CollabPlaySync.js","sourceHash":"6eb749d8695913b4ab10b9ef5f968b4936eccedf3882bee9048918785538ec92","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabPlaySync.js#0006:playSyncTimelineReport","exportIndex":6,"name":"playSyncTimelineReport","kind":"function","signature":"playSyncTimelineReport(editor)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabPlaySync.md","moduleTitle":"collab/CollabPlaySync","source":"engine/collab/CollabPlaySync.js","import":"/engine/collab/CollabPlaySync.js","sourceHash":"6eb749d8695913b4ab10b9ef5f968b4936eccedf3882bee9048918785538ec92","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabPlaySync.js#0007:broadcastPlay","exportIndex":7,"name":"broadcastPlay","kind":"function","signature":"broadcastPlay(playSync, seed)","summary":"Broadcast a play command to all peers. Called when local user hits Play. seed: optional 32-bit int. Generated here if not provided."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabPlaySync.md","moduleTitle":"collab/CollabPlaySync","source":"engine/collab/CollabPlaySync.js","import":"/engine/collab/CollabPlaySync.js","sourceHash":"6eb749d8695913b4ab10b9ef5f968b4936eccedf3882bee9048918785538ec92","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabPlaySync.js#0008:broadcastPause","exportIndex":8,"name":"broadcastPause","kind":"function","signature":"broadcastPause(playSync)","summary":"Broadcast a pause command to all peers."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabPlaySync.md","moduleTitle":"collab/CollabPlaySync","source":"engine/collab/CollabPlaySync.js","import":"/engine/collab/CollabPlaySync.js","sourceHash":"6eb749d8695913b4ab10b9ef5f968b4936eccedf3882bee9048918785538ec92","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabPlaySync.js#0009:broadcastStop","exportIndex":9,"name":"broadcastStop","kind":"function","signature":"broadcastStop(playSync)","summary":"Broadcast a stop command to all peers."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabPlaySync.md","moduleTitle":"collab/CollabPlaySync","source":"engine/collab/CollabPlaySync.js","import":"/engine/collab/CollabPlaySync.js","sourceHash":"6eb749d8695913b4ab10b9ef5f968b4936eccedf3882bee9048918785538ec92","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabPlaySync.js#0010:onRemotePlayCommand","exportIndex":10,"name":"onRemotePlayCommand","kind":"function","signature":"onRemotePlayCommand(playSync, op)","summary":"Handle an incoming play_sync op from a remote peer. Returns the action taken: 'play' | 'pause' | 'stop' | null"}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabPlaySync.md","moduleTitle":"collab/CollabPlaySync","source":"engine/collab/CollabPlaySync.js","import":"/engine/collab/CollabPlaySync.js","sourceHash":"6eb749d8695913b4ab10b9ef5f968b4936eccedf3882bee9048918785538ec92","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabPlaySync.js#0011:onRemoteHeartbeat","exportIndex":11,"name":"onRemoteHeartbeat","kind":"function","signature":"onRemoteHeartbeat(playSync, op)","summary":"Handle an incoming sim_heartbeat op from a remote peer."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabPlaySync.md","moduleTitle":"collab/CollabPlaySync","source":"engine/collab/CollabPlaySync.js","import":"/engine/collab/CollabPlaySync.js","sourceHash":"6eb749d8695913b4ab10b9ef5f968b4936eccedf3882bee9048918785538ec92","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabPlaySync.js#0012:exportTimeline","exportIndex":12,"name":"exportTimeline","kind":"function","signature":"exportTimeline(editor, filename)","summary":"Export local simHistory as a downloadable JSON file."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabPlaySync.md","moduleTitle":"collab/CollabPlaySync","source":"engine/collab/CollabPlaySync.js","import":"/engine/collab/CollabPlaySync.js","sourceHash":"6eb749d8695913b4ab10b9ef5f968b4936eccedf3882bee9048918785538ec92","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabPlaySync.js#0013:isRemotePlay","exportIndex":13,"name":"isRemotePlay","kind":"function","signature":"isRemotePlay(playSync)","summary":"Check if the current play command was triggered remotely."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabPlaySync.md","moduleTitle":"collab/CollabPlaySync","source":"engine/collab/CollabPlaySync.js","import":"/engine/collab/CollabPlaySync.js","sourceHash":"6eb749d8695913b4ab10b9ef5f968b4936eccedf3882bee9048918785538ec92","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabPlaySync.js#0014:getCurrentSeed","exportIndex":14,"name":"getCurrentSeed","kind":"function","signature":"getCurrentSeed(playSync)","summary":"Get the current determinism seed."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabPlaySync.md","moduleTitle":"collab/CollabPlaySync","source":"engine/collab/CollabPlaySync.js","import":"/engine/collab/CollabPlaySync.js","sourceHash":"6eb749d8695913b4ab10b9ef5f968b4936eccedf3882bee9048918785538ec92","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabPlaySync.js#0015:destroyPlaySync","exportIndex":15,"name":"destroyPlaySync","kind":"function","signature":"destroyPlaySync(playSync)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabPresence.md","moduleTitle":"collab/CollabPresence","source":"engine/collab/CollabPresence.js","import":"/engine/collab/CollabPresence.js","sourceHash":"0d1e5fa0cea40f53608044211caccc806623fdc8eb1bef6060d43111bf8052c2","subsystem":"engine","recordType":"api-module","id":"module:engine/collab/CollabPresence.js","title":"collab/CollabPresence","summary":"CollabPresence.js Tracks all peers' camera positions, usernames, selections, and colors. Presence packet: { v:1, u:username, c:[x,y,z], t:[tx,ty,tz], s:[entityIds] } Current scope: lossy latest-state presence. Authenticated presence identity, sequence/freshness fields, cross-system stale-peer cleanup, interpolation ownership, and captured churn traces remain audit gaps.","exportCount":10}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabPresence.md","moduleTitle":"collab/CollabPresence","source":"engine/collab/CollabPresence.js","import":"/engine/collab/CollabPresence.js","sourceHash":"0d1e5fa0cea40f53608044211caccc806623fdc8eb1bef6060d43111bf8052c2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabPresence.js#0000:presencePacketReport","exportIndex":0,"name":"presencePacketReport","kind":"function","signature":"presencePacketReport(packet)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabPresence.md","moduleTitle":"collab/CollabPresence","source":"engine/collab/CollabPresence.js","import":"/engine/collab/CollabPresence.js","sourceHash":"0d1e5fa0cea40f53608044211caccc806623fdc8eb1bef6060d43111bf8052c2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabPresence.js#0001:createPresenceState","exportIndex":1,"name":"createPresenceState","kind":"function","signature":"createPresenceState()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabPresence.md","moduleTitle":"collab/CollabPresence","source":"engine/collab/CollabPresence.js","import":"/engine/collab/CollabPresence.js","sourceHash":"0d1e5fa0cea40f53608044211caccc806623fdc8eb1bef6060d43111bf8052c2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabPresence.js#0002:buildLocalPresencePacket","exportIndex":2,"name":"buildLocalPresencePacket","kind":"function","signature":"buildLocalPresencePacket(username, cameraPos, cameraTarget, selectionIds, simTime, mode, userColor)","summary":"Build a presence packet from local state to broadcast."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabPresence.md","moduleTitle":"collab/CollabPresence","source":"engine/collab/CollabPresence.js","import":"/engine/collab/CollabPresence.js","sourceHash":"0d1e5fa0cea40f53608044211caccc806623fdc8eb1bef6060d43111bf8052c2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabPresence.js#0003:applyRemotePresence","exportIndex":3,"name":"applyRemotePresence","kind":"function","signature":"applyRemotePresence(state, peerId, packet)","summary":"Apply a remote presence packet for a peer."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabPresence.md","moduleTitle":"collab/CollabPresence","source":"engine/collab/CollabPresence.js","import":"/engine/collab/CollabPresence.js","sourceHash":"0d1e5fa0cea40f53608044211caccc806623fdc8eb1bef6060d43111bf8052c2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabPresence.js#0004:addPeer","exportIndex":4,"name":"addPeer","kind":"function","signature":"addPeer(state, peerId, username)","summary":"Register a peer joining (before first presence packet)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabPresence.md","moduleTitle":"collab/CollabPresence","source":"engine/collab/CollabPresence.js","import":"/engine/collab/CollabPresence.js","sourceHash":"0d1e5fa0cea40f53608044211caccc806623fdc8eb1bef6060d43111bf8052c2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabPresence.js#0005:removePresence","exportIndex":5,"name":"removePresence","kind":"function","signature":"removePresence(state, peerId)","summary":"Remove a peer (on disconnect)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabPresence.md","moduleTitle":"collab/CollabPresence","source":"engine/collab/CollabPresence.js","import":"/engine/collab/CollabPresence.js","sourceHash":"0d1e5fa0cea40f53608044211caccc806623fdc8eb1bef6060d43111bf8052c2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabPresence.js#0006:getPresenceList","exportIndex":6,"name":"getPresenceList","kind":"function","signature":"getPresenceList(state)","summary":"Get list of all known peers with their presence data."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabPresence.md","moduleTitle":"collab/CollabPresence","source":"engine/collab/CollabPresence.js","import":"/engine/collab/CollabPresence.js","sourceHash":"0d1e5fa0cea40f53608044211caccc806623fdc8eb1bef6060d43111bf8052c2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabPresence.js#0007:getPeerColor","exportIndex":7,"name":"getPeerColor","kind":"function","signature":"getPeerColor(state, peerId)","summary":"Get color for a specific peer."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabPresence.md","moduleTitle":"collab/CollabPresence","source":"engine/collab/CollabPresence.js","import":"/engine/collab/CollabPresence.js","sourceHash":"0d1e5fa0cea40f53608044211caccc806623fdc8eb1bef6060d43111bf8052c2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabPresence.js#0008:pruneStalePresence","exportIndex":8,"name":"pruneStalePresence","kind":"function","signature":"pruneStalePresence(state)","summary":"Prune peers not seen for > 30s."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabPresence.md","moduleTitle":"collab/CollabPresence","source":"engine/collab/CollabPresence.js","import":"/engine/collab/CollabPresence.js","sourceHash":"0d1e5fa0cea40f53608044211caccc806623fdc8eb1bef6060d43111bf8052c2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabPresence.js#0009:clearPresenceState","exportIndex":9,"name":"clearPresenceState","kind":"function","signature":"clearPresenceState(state)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSceneSync.md","moduleTitle":"collab/CollabSceneSync","source":"engine/collab/CollabSceneSync.js","import":"/engine/collab/CollabSceneSync.js","sourceHash":"dd76eba5a0a28b7e5892801777c540f1461c0c493abf4b9becd1c540ce1b31d9","subsystem":"engine","recordType":"api-module","id":"module:engine/collab/CollabSceneSync.js","title":"collab/CollabSceneSync","summary":"Convert an EditorHistory action into a collab op payload.","exportCount":12}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSceneSync.md","moduleTitle":"collab/CollabSceneSync","source":"engine/collab/CollabSceneSync.js","import":"/engine/collab/CollabSceneSync.js","sourceHash":"dd76eba5a0a28b7e5892801777c540f1461c0c493abf4b9becd1c540ce1b31d9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSceneSync.js#0000:collabSceneEntityIdReport","exportIndex":0,"name":"collabSceneEntityIdReport","kind":"function","signature":"collabSceneEntityIdReport(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSceneSync.md","moduleTitle":"collab/CollabSceneSync","source":"engine/collab/CollabSceneSync.js","import":"/engine/collab/CollabSceneSync.js","sourceHash":"dd76eba5a0a28b7e5892801777c540f1461c0c493abf4b9becd1c540ce1b31d9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSceneSync.js#0001:collabSceneValueReport","exportIndex":1,"name":"collabSceneValueReport","kind":"function","signature":"collabSceneValueReport(value, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSceneSync.md","moduleTitle":"collab/CollabSceneSync","source":"engine/collab/CollabSceneSync.js","import":"/engine/collab/CollabSceneSync.js","sourceHash":"dd76eba5a0a28b7e5892801777c540f1461c0c493abf4b9becd1c540ce1b31d9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSceneSync.js#0002:actionToOp","exportIndex":2,"name":"actionToOp","kind":"function","signature":"actionToOp(action, selfId, seq)","summary":"Convert an EditorHistory action into a collab op payload."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSceneSync.md","moduleTitle":"collab/CollabSceneSync","source":"engine/collab/CollabSceneSync.js","import":"/engine/collab/CollabSceneSync.js","sourceHash":"dd76eba5a0a28b7e5892801777c540f1461c0c493abf4b9becd1c540ce1b31d9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSceneSync.js#0003:opToAction","exportIndex":3,"name":"opToAction","kind":"function","signature":"opToAction(op)","summary":"Convert a collab op back into an EditorHistory-compatible action."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSceneSync.md","moduleTitle":"collab/CollabSceneSync","source":"engine/collab/CollabSceneSync.js","import":"/engine/collab/CollabSceneSync.js","sourceHash":"dd76eba5a0a28b7e5892801777c540f1461c0c493abf4b9becd1c540ce1b31d9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSceneSync.js#0004:collabSceneOpReport","exportIndex":4,"name":"collabSceneOpReport","kind":"function","signature":"collabSceneOpReport(op)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSceneSync.md","moduleTitle":"collab/CollabSceneSync","source":"engine/collab/CollabSceneSync.js","import":"/engine/collab/CollabSceneSync.js","sourceHash":"dd76eba5a0a28b7e5892801777c540f1461c0c493abf4b9becd1c540ce1b31d9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSceneSync.js#0005:serializeSnapshot","exportIndex":5,"name":"serializeSnapshot","kind":"function","signature":"serializeSnapshot(editor)","summary":"Serialize the full scene state into a compact snapshot for new joiners."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSceneSync.md","moduleTitle":"collab/CollabSceneSync","source":"engine/collab/CollabSceneSync.js","import":"/engine/collab/CollabSceneSync.js","sourceHash":"dd76eba5a0a28b7e5892801777c540f1461c0c493abf4b9becd1c540ce1b31d9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSceneSync.js#0006:collabSceneSnapshotReport","exportIndex":6,"name":"collabSceneSnapshotReport","kind":"function","signature":"collabSceneSnapshotReport(snapshot)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSceneSync.md","moduleTitle":"collab/CollabSceneSync","source":"engine/collab/CollabSceneSync.js","import":"/engine/collab/CollabSceneSync.js","sourceHash":"dd76eba5a0a28b7e5892801777c540f1461c0c493abf4b9becd1c540ce1b31d9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSceneSync.js#0007:applySnapshot","exportIndex":7,"name":"applySnapshot","kind":"function","signature":"applySnapshot(editor, snapshot)","summary":"Apply a full scene snapshot to the editor (for new joiners). Clears existing scene and rebuilds from snapshot."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSceneSync.md","moduleTitle":"collab/CollabSceneSync","source":"engine/collab/CollabSceneSync.js","import":"/engine/collab/CollabSceneSync.js","sourceHash":"dd76eba5a0a28b7e5892801777c540f1461c0c493abf4b9becd1c540ce1b31d9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSceneSync.js#0008:registerCollabSceneEntity","exportIndex":8,"name":"registerCollabSceneEntity","kind":"function","signature":"registerCollabSceneEntity(world, entityId)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSceneSync.md","moduleTitle":"collab/CollabSceneSync","source":"engine/collab/CollabSceneSync.js","import":"/engine/collab/CollabSceneSync.js","sourceHash":"dd76eba5a0a28b7e5892801777c540f1461c0c493abf4b9becd1c540ce1b31d9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSceneSync.js#0009:destroyCollabSceneEntity","exportIndex":9,"name":"destroyCollabSceneEntity","kind":"function","signature":"destroyCollabSceneEntity(world, entityId)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSceneSync.md","moduleTitle":"collab/CollabSceneSync","source":"engine/collab/CollabSceneSync.js","import":"/engine/collab/CollabSceneSync.js","sourceHash":"dd76eba5a0a28b7e5892801777c540f1461c0c493abf4b9becd1c540ce1b31d9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSceneSync.js#0010:injectSceneSyncDeps","exportIndex":10,"name":"injectSceneSyncDeps","kind":"function","signature":"injectSceneSyncDeps(deps)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSceneSync.md","moduleTitle":"collab/CollabSceneSync","source":"engine/collab/CollabSceneSync.js","import":"/engine/collab/CollabSceneSync.js","sourceHash":"dd76eba5a0a28b7e5892801777c540f1461c0c493abf4b9becd1c540ce1b31d9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSceneSync.js#0011:COLLAB_SCENE_LIMITS","exportIndex":11,"name":"COLLAB_SCENE_LIMITS","kind":"constant","signature":"COLLAB_SCENE_LIMITS","summary":"CollabSceneSync.js Serializes EditorHistory actions <-> collab ops. Handles full scene snapshots for new joiners."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSignal.md","moduleTitle":"collab/CollabSignal","source":"engine/collab/CollabSignal.js","import":"/engine/collab/CollabSignal.js","sourceHash":"90937dd124e88f85d474265f27f31aa077aaf62e9430dc13079e25814d15e381","subsystem":"engine","recordType":"api-module","id":"module:engine/collab/CollabSignal.js","title":"collab/CollabSignal","summary":"CollabSignal.js 4-tier signaling abstraction for WebRTC peer discovery. Tier 1: BroadcastChannel     — same machine, instant, offline Tier 2: SharedWorker         — same machine multi-tab relay Tier 4: Particle Masterserver — PRIMARY cross-internet signaling relay. Pinned V2 endpoints use the shared ParticleNetworkDaemon; legacy V1 is accepted only when that endpoint explicitly opts in. Uses the same room/route-scoped HELLO/OFFER/ANSWER/CANDIDATE dispatch as Tiers 1/2 (see _handleSignalMessage) rather than a binary swarm protocol — the Masterserver just fans opaque JSON out to every other session attached to the same locally-derived opaque route. This is server-mediated, so it works across NATs/networks without any third-party dependency. Server-configured via localStorage 'os.network.masterServers' (same list the Particle Network control panel app manages); falls back to the pinned production bootstrap if unset. Tier 3: BitTorrent WSS       — EXPLICIT FALLBACK ONLY. It remains off by default and can run only after the user opts in. A V2 integrity failure always fails closed and suppresses legacy/BitTorrent downgrade. Tiers 1/2/4 start immediately; Tier 3 is deferred/conditional (see above). First tier to form a WebRTC connection to a given peer wins — after that, signaling is no longer needed for that peer.","exportCount":21}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSignal.md","moduleTitle":"collab/CollabSignal","source":"engine/collab/CollabSignal.js","import":"/engine/collab/CollabSignal.js","sourceHash":"90937dd124e88f85d474265f27f31aa077aaf62e9430dc13079e25814d15e381","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSignal.js#0000:createSignalChannel","exportIndex":0,"name":"createSignalChannel","kind":"function","signature":"createSignalChannel(config)","summary":"Create a signal channel. config: { projectId, selfId, username, onOffer, onAnswer, onCandidate, onPeerJoin, onPeerLeave } Negotiation callbacks receive (peerId, payload, offerId). Generic signaling is deliberately strict: every OFFER/ANSWER/CANDIDATE is addressed to one peer and correlated to one offer generation. The WebTorrent tier retains its independent tracker offer_id lifecycle and does not use these envelopes."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSignal.md","moduleTitle":"collab/CollabSignal","source":"engine/collab/CollabSignal.js","import":"/engine/collab/CollabSignal.js","sourceHash":"90937dd124e88f85d474265f27f31aa077aaf62e9430dc13079e25814d15e381","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSignal.js#0001:fetchTurnCredentials","exportIndex":1,"name":"fetchTurnCredentials","kind":"function","signature":"async fetchTurnCredentials(channel)","summary":"Fetch TURN relay credentials from Cloudflare Pages Function. ONLY called as a fallback when STUN-only P2P connection fails. TURN relays ALL traffic through Cloudflare = expensive. Avoid unless necessary."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSignal.md","moduleTitle":"collab/CollabSignal","source":"engine/collab/CollabSignal.js","import":"/engine/collab/CollabSignal.js","sourceHash":"90937dd124e88f85d474265f27f31aa077aaf62e9430dc13079e25814d15e381","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSignal.js#0002:startSignaling","exportIndex":2,"name":"startSignaling","kind":"function","signature":"startSignaling(channel)","summary":"Start all 3 signaling tiers simultaneously. Uses FREE STUN servers only — no Cloudflare data cost. TURN relay is only fetched on-demand when a direct P2P connection fails."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSignal.md","moduleTitle":"collab/CollabSignal","source":"engine/collab/CollabSignal.js","import":"/engine/collab/CollabSignal.js","sourceHash":"90937dd124e88f85d474265f27f31aa077aaf62e9430dc13079e25814d15e381","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSignal.js#0003:forceAnnounce","exportIndex":3,"name":"forceAnnounce","kind":"function","signature":"forceAnnounce(channel)","summary":"Force an immediate discovery re-announce across all active tiers, bypassing the periodic announce timers. Used by app-layer \"Connect now\" so a known contact is found without waiting for the next BC hello / tracker announce cycle."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSignal.md","moduleTitle":"collab/CollabSignal","source":"engine/collab/CollabSignal.js","import":"/engine/collab/CollabSignal.js","sourceHash":"90937dd124e88f85d474265f27f31aa077aaf62e9430dc13079e25814d15e381","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSignal.js#0004:collabSignalTextReport","exportIndex":4,"name":"collabSignalTextReport","kind":"function","signature":"collabSignalTextReport(value, maxBytes, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSignal.md","moduleTitle":"collab/CollabSignal","source":"engine/collab/CollabSignal.js","import":"/engine/collab/CollabSignal.js","sourceHash":"90937dd124e88f85d474265f27f31aa077aaf62e9430dc13079e25814d15e381","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSignal.js#0005:collabSignalPayloadReport","exportIndex":5,"name":"collabSignalPayloadReport","kind":"function","signature":"collabSignalPayloadReport(payload)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSignal.md","moduleTitle":"collab/CollabSignal","source":"engine/collab/CollabSignal.js","import":"/engine/collab/CollabSignal.js","sourceHash":"90937dd124e88f85d474265f27f31aa077aaf62e9430dc13079e25814d15e381","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSignal.js#0006:collabIceServerListReport","exportIndex":6,"name":"collabIceServerListReport","kind":"function","signature":"collabIceServerListReport(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSignal.md","moduleTitle":"collab/CollabSignal","source":"engine/collab/CollabSignal.js","import":"/engine/collab/CollabSignal.js","sourceHash":"90937dd124e88f85d474265f27f31aa077aaf62e9430dc13079e25814d15e381","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSignal.js#0007:sendOffer","exportIndex":7,"name":"sendOffer","kind":"function","signature":"sendOffer(channel, peerId, sdpOffer, offerId)","summary":"Send one SDP offer to one discovered peer on the generic signaling tiers."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSignal.md","moduleTitle":"collab/CollabSignal","source":"engine/collab/CollabSignal.js","import":"/engine/collab/CollabSignal.js","sourceHash":"90937dd124e88f85d474265f27f31aa077aaf62e9430dc13079e25814d15e381","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSignal.js#0008:broadcastOffer","exportIndex":8,"name":"broadcastOffer","kind":"function","signature":"broadcastOffer(channel, peerId, sdpOffer, offerId)","summary":"Retained as a strict compatibility symbol. Untargeted offers are unsafe in a multi-peer room, so callers must now supply the target and offer generation."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSignal.md","moduleTitle":"collab/CollabSignal","source":"engine/collab/CollabSignal.js","import":"/engine/collab/CollabSignal.js","sourceHash":"90937dd124e88f85d474265f27f31aa077aaf62e9430dc13079e25814d15e381","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSignal.js#0009:sendAnswer","exportIndex":9,"name":"sendAnswer","kind":"function","signature":"sendAnswer(channel, peerId, sdpAnswer, offerId)","summary":"Send an SDP answer to a specific peer."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSignal.md","moduleTitle":"collab/CollabSignal","source":"engine/collab/CollabSignal.js","import":"/engine/collab/CollabSignal.js","sourceHash":"90937dd124e88f85d474265f27f31aa077aaf62e9430dc13079e25814d15e381","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSignal.js#0010:sendCandidate","exportIndex":10,"name":"sendCandidate","kind":"function","signature":"sendCandidate(channel, peerId, candidate, offerId)","summary":"Send an ICE candidate to a specific peer."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSignal.md","moduleTitle":"collab/CollabSignal","source":"engine/collab/CollabSignal.js","import":"/engine/collab/CollabSignal.js","sourceHash":"90937dd124e88f85d474265f27f31aa077aaf62e9430dc13079e25814d15e381","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSignal.js#0011:destroySignalChannel","exportIndex":11,"name":"destroySignalChannel","kind":"function","signature":"destroySignalChannel(channel)","summary":"Destroy all signaling resources."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSignal.md","moduleTitle":"collab/CollabSignal","source":"engine/collab/CollabSignal.js","import":"/engine/collab/CollabSignal.js","sourceHash":"90937dd124e88f85d474265f27f31aa077aaf62e9430dc13079e25814d15e381","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSignal.js#0012:collabSignalReconnectPlanReport","exportIndex":12,"name":"collabSignalReconnectPlanReport","kind":"function","signature":"collabSignalReconnectPlanReport(attempt)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSignal.md","moduleTitle":"collab/CollabSignal","source":"engine/collab/CollabSignal.js","import":"/engine/collab/CollabSignal.js","sourceHash":"90937dd124e88f85d474265f27f31aa077aaf62e9430dc13079e25814d15e381","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSignal.js#0013:collabSignalOfferPlanReport","exportIndex":13,"name":"collabSignalOfferPlanReport","kind":"function","signature":"collabSignalOfferPlanReport(pendingCount, inFlightCount = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSignal.md","moduleTitle":"collab/CollabSignal","source":"engine/collab/CollabSignal.js","import":"/engine/collab/CollabSignal.js","sourceHash":"90937dd124e88f85d474265f27f31aa077aaf62e9430dc13079e25814d15e381","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSignal.js#0014:collabSignalPeerCapacityReport","exportIndex":14,"name":"collabSignalPeerCapacityReport","kind":"function","signature":"collabSignalPeerCapacityReport(connectionCount)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSignal.md","moduleTitle":"collab/CollabSignal","source":"engine/collab/CollabSignal.js","import":"/engine/collab/CollabSignal.js","sourceHash":"90937dd124e88f85d474265f27f31aa077aaf62e9430dc13079e25814d15e381","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSignal.js#0015:collabSignalTrackerIdHex","exportIndex":15,"name":"collabSignalTrackerIdHex","kind":"function","signature":"collabSignalTrackerIdHex(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSignal.md","moduleTitle":"collab/CollabSignal","source":"engine/collab/CollabSignal.js","import":"/engine/collab/CollabSignal.js","sourceHash":"90937dd124e88f85d474265f27f31aa077aaf62e9430dc13079e25814d15e381","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSignal.js#0016:collabSignalTrackerBinaryReport","exportIndex":16,"name":"collabSignalTrackerBinaryReport","kind":"function","signature":"collabSignalTrackerBinaryReport(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSignal.md","moduleTitle":"collab/CollabSignal","source":"engine/collab/CollabSignal.js","import":"/engine/collab/CollabSignal.js","sourceHash":"90937dd124e88f85d474265f27f31aa077aaf62e9430dc13079e25814d15e381","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSignal.js#0017:collabSignalHelloReport","exportIndex":17,"name":"collabSignalHelloReport","kind":"function","signature":"collabSignalHelloReport(message, selfId = '')","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSignal.md","moduleTitle":"collab/CollabSignal","source":"engine/collab/CollabSignal.js","import":"/engine/collab/CollabSignal.js","sourceHash":"90937dd124e88f85d474265f27f31aa077aaf62e9430dc13079e25814d15e381","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSignal.js#0018:collabSignalPeerHelloReport","exportIndex":18,"name":"collabSignalPeerHelloReport","kind":"function","signature":"collabSignalPeerHelloReport(message, selfId = '')","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSignal.md","moduleTitle":"collab/CollabSignal","source":"engine/collab/CollabSignal.js","import":"/engine/collab/CollabSignal.js","sourceHash":"90937dd124e88f85d474265f27f31aa077aaf62e9430dc13079e25814d15e381","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSignal.js#0019:isBitTorrentFallbackEnabled","exportIndex":19,"name":"isBitTorrentFallbackEnabled","kind":"function","signature":"isBitTorrentFallbackEnabled()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSignal.md","moduleTitle":"collab/CollabSignal","source":"engine/collab/CollabSignal.js","import":"/engine/collab/CollabSignal.js","sourceHash":"90937dd124e88f85d474265f27f31aa077aaf62e9430dc13079e25814d15e381","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSignal.js#0020:setBitTorrentFallbackEnabled","exportIndex":20,"name":"setBitTorrentFallbackEnabled","kind":"function","signature":"setBitTorrentFallbackEnabled(enabled)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSpatialAuthority.md","moduleTitle":"collab/CollabSpatialAuthority","source":"engine/collab/CollabSpatialAuthority.js","import":"/engine/collab/CollabSpatialAuthority.js","sourceHash":"860fb2f6d3390806d1c5869b77a2acdff2047fdab9a3ca1e94dc56067456a023","subsystem":"engine","recordType":"api-module","id":"module:engine/collab/CollabSpatialAuthority.js","title":"collab/CollabSpatialAuthority","summary":"CollabSpatialAuthority.js Distributed spatial authority for collaborative multiplayer. Each peer owns a circular \"zone\" centered on their camera position. Entities within a peer's zone are simulated locally by that peer. Entities outside all zones are dormant (no physics, no sync). Authority resolution (Roblox + Gaffer hybrid): - Nearest peer within zone radius wins (automatic proximity) - 20% hysteresis prevents ping-pong at boundaries - Higher-priority claims (SELECTED, GRABBED) override proximity - Sequence numbers resolve conflicts (Gaffer-style) Interest management (Photon-style): - Interest area = zoneRadius × interestMultiplier (default 1.3×) - Only send state for entities you're authoritative over - Only receive state for entities in your interest area Inspired by: Star Citizen dynamic server meshing, Roblox Network Ownership, Photon Fusion Shared Authority + AoI grid, Gaffer on Games authority scheme.","exportCount":16}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSpatialAuthority.md","moduleTitle":"collab/CollabSpatialAuthority","source":"engine/collab/CollabSpatialAuthority.js","import":"/engine/collab/CollabSpatialAuthority.js","sourceHash":"860fb2f6d3390806d1c5869b77a2acdff2047fdab9a3ca1e94dc56067456a023","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSpatialAuthority.js#0000:createSpatialAuthority","exportIndex":0,"name":"createSpatialAuthority","kind":"function","signature":"createSpatialAuthority(selfId, config)","summary":"Create a spatial authority state."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSpatialAuthority.md","moduleTitle":"collab/CollabSpatialAuthority","source":"engine/collab/CollabSpatialAuthority.js","import":"/engine/collab/CollabSpatialAuthority.js","sourceHash":"860fb2f6d3390806d1c5869b77a2acdff2047fdab9a3ca1e94dc56067456a023","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSpatialAuthority.js#0001:computeZoneRadius","exportIndex":1,"name":"computeZoneRadius","kind":"function","signature":"computeZoneRadius(sceneBounds)","summary":"Auto-compute zone radius from scene bounds."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSpatialAuthority.md","moduleTitle":"collab/CollabSpatialAuthority","source":"engine/collab/CollabSpatialAuthority.js","import":"/engine/collab/CollabSpatialAuthority.js","sourceHash":"860fb2f6d3390806d1c5869b77a2acdff2047fdab9a3ca1e94dc56067456a023","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSpatialAuthority.js#0002:setZoneRadius","exportIndex":2,"name":"setZoneRadius","kind":"function","signature":"setZoneRadius(auth, radius)","summary":"Update the zone radius (e.g., after scene bounds change or manual override). Rebuilds the spatial grid with the new cell size."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSpatialAuthority.md","moduleTitle":"collab/CollabSpatialAuthority","source":"engine/collab/CollabSpatialAuthority.js","import":"/engine/collab/CollabSpatialAuthority.js","sourceHash":"860fb2f6d3390806d1c5869b77a2acdff2047fdab9a3ca1e94dc56067456a023","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSpatialAuthority.js#0003:updatePeerPosition","exportIndex":3,"name":"updatePeerPosition","kind":"function","signature":"updatePeerPosition(auth, peerId, position)","summary":"Update a peer's camera position (called from presence packets)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSpatialAuthority.md","moduleTitle":"collab/CollabSpatialAuthority","source":"engine/collab/CollabSpatialAuthority.js","import":"/engine/collab/CollabSpatialAuthority.js","sourceHash":"860fb2f6d3390806d1c5869b77a2acdff2047fdab9a3ca1e94dc56067456a023","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSpatialAuthority.js#0004:removePeer","exportIndex":4,"name":"removePeer","kind":"function","signature":"removePeer(auth, peerId)","summary":"Remove a peer (on disconnect)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSpatialAuthority.md","moduleTitle":"collab/CollabSpatialAuthority","source":"engine/collab/CollabSpatialAuthority.js","import":"/engine/collab/CollabSpatialAuthority.js","sourceHash":"860fb2f6d3390806d1c5869b77a2acdff2047fdab9a3ca1e94dc56067456a023","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSpatialAuthority.js#0005:updateEntityPosition","exportIndex":5,"name":"updateEntityPosition","kind":"function","signature":"updateEntityPosition(auth, entityId, x, z)","summary":"Update an entity's position in the spatial grid. Call this when entity transforms change (from physics step or remote sync)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSpatialAuthority.md","moduleTitle":"collab/CollabSpatialAuthority","source":"engine/collab/CollabSpatialAuthority.js","import":"/engine/collab/CollabSpatialAuthority.js","sourceHash":"860fb2f6d3390806d1c5869b77a2acdff2047fdab9a3ca1e94dc56067456a023","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSpatialAuthority.js#0006:removeEntity","exportIndex":6,"name":"removeEntity","kind":"function","signature":"removeEntity(auth, entityId)","summary":"Remove an entity from the spatial grid (on entity delete)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSpatialAuthority.md","moduleTitle":"collab/CollabSpatialAuthority","source":"engine/collab/CollabSpatialAuthority.js","import":"/engine/collab/CollabSpatialAuthority.js","sourceHash":"860fb2f6d3390806d1c5869b77a2acdff2047fdab9a3ca1e94dc56067456a023","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSpatialAuthority.js#0007:resolveAuthority","exportIndex":7,"name":"resolveAuthority","kind":"function","signature":"resolveAuthority(auth, entityId, x, z)","summary":"Resolve authority for a single entity based on proximity. Applies hysteresis: current owner keeps it unless new peer is 20% closer."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSpatialAuthority.md","moduleTitle":"collab/CollabSpatialAuthority","source":"engine/collab/CollabSpatialAuthority.js","import":"/engine/collab/CollabSpatialAuthority.js","sourceHash":"860fb2f6d3390806d1c5869b77a2acdff2047fdab9a3ca1e94dc56067456a023","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSpatialAuthority.js#0008:getMyAuthoritySet","exportIndex":8,"name":"getMyAuthoritySet","kind":"function","signature":"getMyAuthoritySet(auth)","summary":"Get all entity IDs that the local peer is authoritative over. Uses the auto-authority map (resolved at RESOLVE_INTERVAL_MS)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSpatialAuthority.md","moduleTitle":"collab/CollabSpatialAuthority","source":"engine/collab/CollabSpatialAuthority.js","import":"/engine/collab/CollabSpatialAuthority.js","sourceHash":"860fb2f6d3390806d1c5869b77a2acdff2047fdab9a3ca1e94dc56067456a023","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSpatialAuthority.js#0009:getMyInterestSet","exportIndex":9,"name":"getMyInterestSet","kind":"function","signature":"getMyInterestSet(auth)","summary":"Get all entity IDs within the local peer's interest area (zone × interestMultiplier)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSpatialAuthority.md","moduleTitle":"collab/CollabSpatialAuthority","source":"engine/collab/CollabSpatialAuthority.js","import":"/engine/collab/CollabSpatialAuthority.js","sourceHash":"860fb2f6d3390806d1c5869b77a2acdff2047fdab9a3ca1e94dc56067456a023","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSpatialAuthority.js#0010:getPeerInterestSet","exportIndex":10,"name":"getPeerInterestSet","kind":"function","signature":"getPeerInterestSet(auth, peerId)","summary":"Get the interest set for a specific peer (used by relay host for filtering)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSpatialAuthority.md","moduleTitle":"collab/CollabSpatialAuthority","source":"engine/collab/CollabSpatialAuthority.js","import":"/engine/collab/CollabSpatialAuthority.js","sourceHash":"860fb2f6d3390806d1c5869b77a2acdff2047fdab9a3ca1e94dc56067456a023","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSpatialAuthority.js#0011:isInMyZone","exportIndex":11,"name":"isInMyZone","kind":"function","signature":"isInMyZone(auth, x, z)","summary":"Check if an entity position is within the local peer's authority zone."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSpatialAuthority.md","moduleTitle":"collab/CollabSpatialAuthority","source":"engine/collab/CollabSpatialAuthority.js","import":"/engine/collab/CollabSpatialAuthority.js","sourceHash":"860fb2f6d3390806d1c5869b77a2acdff2047fdab9a3ca1e94dc56067456a023","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSpatialAuthority.js#0012:isInBufferZone","exportIndex":12,"name":"isInBufferZone","kind":"function","signature":"isInBufferZone(auth, x, z)","summary":"Check if an entity position is within the buffer zone (boundary ring)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSpatialAuthority.md","moduleTitle":"collab/CollabSpatialAuthority","source":"engine/collab/CollabSpatialAuthority.js","import":"/engine/collab/CollabSpatialAuthority.js","sourceHash":"860fb2f6d3390806d1c5869b77a2acdff2047fdab9a3ca1e94dc56067456a023","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSpatialAuthority.js#0013:isDormant","exportIndex":13,"name":"isDormant","kind":"function","signature":"isDormant(auth, entityId)","summary":"Check if an entity is dormant (outside all peer zones)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSpatialAuthority.md","moduleTitle":"collab/CollabSpatialAuthority","source":"engine/collab/CollabSpatialAuthority.js","import":"/engine/collab/CollabSpatialAuthority.js","sourceHash":"860fb2f6d3390806d1c5869b77a2acdff2047fdab9a3ca1e94dc56067456a023","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSpatialAuthority.js#0014:tickSpatialAuthority","exportIndex":14,"name":"tickSpatialAuthority","kind":"function","signature":"tickSpatialAuthority(auth)","summary":"Periodic tick: re-resolve auto-authority for all tracked entities. Call this at ~2Hz from the collab loop (or faster if needed)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabSpatialAuthority.md","moduleTitle":"collab/CollabSpatialAuthority","source":"engine/collab/CollabSpatialAuthority.js","import":"/engine/collab/CollabSpatialAuthority.js","sourceHash":"860fb2f6d3390806d1c5869b77a2acdff2047fdab9a3ca1e94dc56067456a023","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabSpatialAuthority.js#0015:destroySpatialAuthority","exportIndex":15,"name":"destroySpatialAuthority","kind":"function","signature":"destroySpatialAuthority(auth)","summary":"Clear all state (on leave room / exit play mode)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabTransformSync.md","moduleTitle":"collab/CollabTransformSync","source":"engine/collab/CollabTransformSync.js","import":"/engine/collab/CollabTransformSync.js","sourceHash":"216ba966056a93e4b512526e3d187a0124073efbc78bbfb3370d9a9db66bfb55","subsystem":"engine","recordType":"api-module","id":"module:engine/collab/CollabTransformSync.js","title":"collab/CollabTransformSync","summary":"CollabTransformSync.js Broadcasts entity transform updates during play mode so grabbed/moved objects are visible on all peer screens in real time. Authority model: - The peer who presses Play becomes the physics authority. - Authority broadcasts ALL entity transforms at ~10Hz. - Non-authority peers receive and apply transforms, skipping local physics. - Grabbed entity transforms are always sent at ~15Hz by anyone.","exportCount":12}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabTransformSync.md","moduleTitle":"collab/CollabTransformSync","source":"engine/collab/CollabTransformSync.js","import":"/engine/collab/CollabTransformSync.js","sourceHash":"216ba966056a93e4b512526e3d187a0124073efbc78bbfb3370d9a9db66bfb55","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabTransformSync.js#0000:createTransformSync","exportIndex":0,"name":"createTransformSync","kind":"function","signature":"createTransformSync()","summary":"Create a transform sync state object."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabTransformSync.md","moduleTitle":"collab/CollabTransformSync","source":"engine/collab/CollabTransformSync.js","import":"/engine/collab/CollabTransformSync.js","sourceHash":"216ba966056a93e4b512526e3d187a0124073efbc78bbfb3370d9a9db66bfb55","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabTransformSync.js#0001:trackLocalGrab","exportIndex":1,"name":"trackLocalGrab","kind":"function","signature":"trackLocalGrab(syncState, entityId)","summary":"Mark an entity as being actively grabbed/dragged by the local user."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabTransformSync.md","moduleTitle":"collab/CollabTransformSync","source":"engine/collab/CollabTransformSync.js","import":"/engine/collab/CollabTransformSync.js","sourceHash":"216ba966056a93e4b512526e3d187a0124073efbc78bbfb3370d9a9db66bfb55","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabTransformSync.js#0002:untrackLocalGrab","exportIndex":2,"name":"untrackLocalGrab","kind":"function","signature":"untrackLocalGrab(syncState, entityId)","summary":"Unmark an entity when released."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabTransformSync.md","moduleTitle":"collab/CollabTransformSync","source":"engine/collab/CollabTransformSync.js","import":"/engine/collab/CollabTransformSync.js","sourceHash":"216ba966056a93e4b512526e3d187a0124073efbc78bbfb3370d9a9db66bfb55","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabTransformSync.js#0003:buildPlayTransformOp","exportIndex":3,"name":"buildPlayTransformOp","kind":"function","signature":"buildPlayTransformOp(syncState, ecsWorld, getEntityComponent)","summary":"Build a play_transforms op for grabbed entities only. Returns null if nothing to broadcast or if throttled."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabTransformSync.md","moduleTitle":"collab/CollabTransformSync","source":"engine/collab/CollabTransformSync.js","import":"/engine/collab/CollabTransformSync.js","sourceHash":"216ba966056a93e4b512526e3d187a0124073efbc78bbfb3370d9a9db66bfb55","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabTransformSync.js#0004:buildFullPlayTransformOp","exportIndex":4,"name":"buildFullPlayTransformOp","kind":"function","signature":"buildFullPlayTransformOp(syncState, ecsWorld, getEntityComponent, sceneEntities, entityAuthority, spatialAuthoritySet)","summary":"Build a play_transforms op for ALL scene entities. Only called by the physics authority at ~10Hz."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabTransformSync.md","moduleTitle":"collab/CollabTransformSync","source":"engine/collab/CollabTransformSync.js","import":"/engine/collab/CollabTransformSync.js","sourceHash":"216ba966056a93e4b512526e3d187a0124073efbc78bbfb3370d9a9db66bfb55","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabTransformSync.js#0005:buildPbdStateOp","exportIndex":5,"name":"buildPbdStateOp","kind":"function","signature":"buildPbdStateOp(syncState, physicsSimulations, spatialAuthoritySet)","summary":"Build a play_pbd_state op that snapshots PBD particle positions. Any peer running physics simulations broadcasts at ~30Hz for real-time rope sync. Only includes sims with >0 particles. Full float precision for smooth visual sync."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabTransformSync.md","moduleTitle":"collab/CollabTransformSync","source":"engine/collab/CollabTransformSync.js","import":"/engine/collab/CollabTransformSync.js","sourceHash":"216ba966056a93e4b512526e3d187a0124073efbc78bbfb3370d9a9db66bfb55","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabTransformSync.js#0006:applyRemotePbdState","exportIndex":6,"name":"applyRemotePbdState","kind":"function","signature":"applyRemotePbdState(op, physicsSimulations)","summary":"Apply incoming PBD particle state from the authority (host). Non-authority clients do NOT run their own PBD solver for these sims — they just apply the received positions directly. Tags each sim with `_remoteAuthority = true` so stepPhysicsSimulations skips the local solver for it (prevents local physics from fighting the authoritative positions)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabTransformSync.md","moduleTitle":"collab/CollabTransformSync","source":"engine/collab/CollabTransformSync.js","import":"/engine/collab/CollabTransformSync.js","sourceHash":"216ba966056a93e4b512526e3d187a0124073efbc78bbfb3370d9a9db66bfb55","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabTransformSync.js#0007:applyRemotePlayTransforms","exportIndex":7,"name":"applyRemotePlayTransforms","kind":"function","signature":"applyRemotePlayTransforms(op, peerId, ecsWorld, getEntityComponent, setEntityComponent, syncState)","summary":"Apply incoming play_transforms from a remote peer. Pushes transforms into the interpolation buffer, measures jitter for adaptive delay, and detects \"nuke\" events (massive state changes) for instant snap."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabTransformSync.md","moduleTitle":"collab/CollabTransformSync","source":"engine/collab/CollabTransformSync.js","import":"/engine/collab/CollabTransformSync.js","sourceHash":"216ba966056a93e4b512526e3d187a0124073efbc78bbfb3370d9a9db66bfb55","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabTransformSync.js#0008:interpolateRemoteEntities","exportIndex":8,"name":"interpolateRemoteEntities","kind":"function","signature":"interpolateRemoteEntities(syncState, ecsWorld, getEntityComponent, localDragEntityId, entityAuthority)","summary":"Interpolate buffered remote transforms and write to ECS + physics. Called every render frame by non-authority peers. Uses adaptive render delay that auto-adjusts based on measured packet jitter. On LAN/good connections: as low as ~20ms. On jittery links: up to 150ms. Slowly tightens delay when stable; instantly widens on late arrivals."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabTransformSync.md","moduleTitle":"collab/CollabTransformSync","source":"engine/collab/CollabTransformSync.js","import":"/engine/collab/CollabTransformSync.js","sourceHash":"216ba966056a93e4b512526e3d187a0124073efbc78bbfb3370d9a9db66bfb55","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabTransformSync.js#0009:getInterpDelay","exportIndex":9,"name":"getInterpDelay","kind":"function","signature":"getInterpDelay(syncState)","summary":"Get the current adaptive interpolation delay (ms) for diagnostics."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabTransformSync.md","moduleTitle":"collab/CollabTransformSync","source":"engine/collab/CollabTransformSync.js","import":"/engine/collab/CollabTransformSync.js","sourceHash":"216ba966056a93e4b512526e3d187a0124073efbc78bbfb3370d9a9db66bfb55","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabTransformSync.js#0010:getRemoteGrabGlows","exportIndex":10,"name":"getRemoteGrabGlows","kind":"function","signature":"getRemoteGrabGlows(syncState, presenceState)","summary":"Get set of entity IDs currently being grabbed by remote peers. Returns Map<entityId, peerColor> for glow rendering."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabTransformSync.md","moduleTitle":"collab/CollabTransformSync","source":"engine/collab/CollabTransformSync.js","import":"/engine/collab/CollabTransformSync.js","sourceHash":"216ba966056a93e4b512526e3d187a0124073efbc78bbfb3370d9a9db66bfb55","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabTransformSync.js#0011:destroyTransformSync","exportIndex":11,"name":"destroyTransformSync","kind":"function","signature":"destroyTransformSync(syncState)","summary":"Destroy / reset transform sync state."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabZoneHandoff.md","moduleTitle":"collab/CollabZoneHandoff","source":"engine/collab/CollabZoneHandoff.js","import":"/engine/collab/CollabZoneHandoff.js","sourceHash":"caac89e016c76f2c87a451b784dd443a9e63790cbca94496b87c57362ea04d6f","subsystem":"engine","recordType":"api-module","id":"module:engine/collab/CollabZoneHandoff.js","title":"collab/CollabZoneHandoff","summary":"CollabZoneHandoff.js Smooth authority transfer protocol when entities cross spatial zone boundaries. Buffer zone (15% of zone radius): - Entity enters buffer → both peers simulate, current owner broadcasts state - Entity crosses buffer center → handoff op with full state snapshot - 500ms hysteresis prevents rapid back-and-forth Handoff op: { type: 'zone_handoff', payload: { entityId, fromPeer, toPeer, seq, state } } - state: { pos, rot, vel, angVel, pbdParticles? } - seq: authority sequence number (higher always wins, Gaffer-style) Assembly awareness: if entity A is constrained to entity B, both get handed off together to the same peer. Fallback: if fromPeer disconnects mid-handoff, nearest remaining peer takes ownership immediately. Inspired by: Roblox \"buffer zone\" (red outline), Star Citizen entity graph authority transfers, Gaffer on Games ownership sequence numbers.","exportCount":10}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabZoneHandoff.md","moduleTitle":"collab/CollabZoneHandoff","source":"engine/collab/CollabZoneHandoff.js","import":"/engine/collab/CollabZoneHandoff.js","sourceHash":"caac89e016c76f2c87a451b784dd443a9e63790cbca94496b87c57362ea04d6f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabZoneHandoff.js#0000:createZoneHandoff","exportIndex":0,"name":"createZoneHandoff","kind":"function","signature":"createZoneHandoff()","summary":"Create a zone handoff manager."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabZoneHandoff.md","moduleTitle":"collab/CollabZoneHandoff","source":"engine/collab/CollabZoneHandoff.js","import":"/engine/collab/CollabZoneHandoff.js","sourceHash":"caac89e016c76f2c87a451b784dd443a9e63790cbca94496b87c57362ea04d6f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabZoneHandoff.js#0001:initiateHandoff","exportIndex":1,"name":"initiateHandoff","kind":"function","signature":"initiateHandoff(handoff, entityId, fromPeer, toPeer)","summary":"Start a pending handoff for an entity (called when spatial authority detects a zone change). Does NOT commit yet — waits for hysteresis period."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabZoneHandoff.md","moduleTitle":"collab/CollabZoneHandoff","source":"engine/collab/CollabZoneHandoff.js","import":"/engine/collab/CollabZoneHandoff.js","sourceHash":"caac89e016c76f2c87a451b784dd443a9e63790cbca94496b87c57362ea04d6f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabZoneHandoff.js#0002:cancelHandoff","exportIndex":2,"name":"cancelHandoff","kind":"function","signature":"cancelHandoff(handoff, entityId)","summary":"Cancel a pending handoff (entity moved back to original zone)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabZoneHandoff.md","moduleTitle":"collab/CollabZoneHandoff","source":"engine/collab/CollabZoneHandoff.js","import":"/engine/collab/CollabZoneHandoff.js","sourceHash":"caac89e016c76f2c87a451b784dd443a9e63790cbca94496b87c57362ea04d6f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabZoneHandoff.js#0003:buildHandoffOp","exportIndex":3,"name":"buildHandoffOp","kind":"function","signature":"buildHandoffOp(entityId, fromPeer, toPeer, seq, entityState)","summary":"Build a zone_handoff op with full entity state for network transmission. Called by the outgoing peer when handoff commits."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabZoneHandoff.md","moduleTitle":"collab/CollabZoneHandoff","source":"engine/collab/CollabZoneHandoff.js","import":"/engine/collab/CollabZoneHandoff.js","sourceHash":"caac89e016c76f2c87a451b784dd443a9e63790cbca94496b87c57362ea04d6f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabZoneHandoff.js#0004:captureEntityState","exportIndex":4,"name":"captureEntityState","kind":"function","signature":"captureEntityState(ecsWorld, getEntityComponent, entityId, physicsSimulations)","summary":"Capture entity state for the handoff snapshot."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabZoneHandoff.md","moduleTitle":"collab/CollabZoneHandoff","source":"engine/collab/CollabZoneHandoff.js","import":"/engine/collab/CollabZoneHandoff.js","sourceHash":"caac89e016c76f2c87a451b784dd443a9e63790cbca94496b87c57362ea04d6f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabZoneHandoff.js#0005:onRemoteHandoffOp","exportIndex":5,"name":"onRemoteHandoffOp","kind":"function","signature":"onRemoteHandoffOp(handoff, op, selfId, ecsWorld, setEntityComponent, getEntityComponent, physicsSimulations)","summary":"Handle an incoming zone_handoff op from a remote peer. Applies the state snapshot if the sequence number is higher than our last."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabZoneHandoff.md","moduleTitle":"collab/CollabZoneHandoff","source":"engine/collab/CollabZoneHandoff.js","import":"/engine/collab/CollabZoneHandoff.js","sourceHash":"caac89e016c76f2c87a451b784dd443a9e63790cbca94496b87c57362ea04d6f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabZoneHandoff.js#0006:tickZoneHandoff","exportIndex":6,"name":"tickZoneHandoff","kind":"function","signature":"tickZoneHandoff(handoff, selfId)","summary":"Tick pending handoffs. Commits any that have passed the hysteresis period. Prunes stale pending handoffs."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabZoneHandoff.md","moduleTitle":"collab/CollabZoneHandoff","source":"engine/collab/CollabZoneHandoff.js","import":"/engine/collab/CollabZoneHandoff.js","sourceHash":"caac89e016c76f2c87a451b784dd443a9e63790cbca94496b87c57362ea04d6f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabZoneHandoff.js#0007:onHandoffPeerDisconnect","exportIndex":7,"name":"onHandoffPeerDisconnect","kind":"function","signature":"onHandoffPeerDisconnect(handoff, peerId)","summary":"Handle peer disconnect: cancel pending handoffs involving this peer and reassign any entities that were mid-handoff."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabZoneHandoff.md","moduleTitle":"collab/CollabZoneHandoff","source":"engine/collab/CollabZoneHandoff.js","import":"/engine/collab/CollabZoneHandoff.js","sourceHash":"caac89e016c76f2c87a451b784dd443a9e63790cbca94496b87c57362ea04d6f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabZoneHandoff.js#0008:onHandoffComplete","exportIndex":8,"name":"onHandoffComplete","kind":"function","signature":"onHandoffComplete(handoff, callback)","summary":"Set callback for handoff completion."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/CollabZoneHandoff.md","moduleTitle":"collab/CollabZoneHandoff","source":"engine/collab/CollabZoneHandoff.js","import":"/engine/collab/CollabZoneHandoff.js","sourceHash":"caac89e016c76f2c87a451b784dd443a9e63790cbca94496b87c57362ea04d6f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/CollabZoneHandoff.js#0009:destroyZoneHandoff","exportIndex":9,"name":"destroyZoneHandoff","kind":"function","signature":"destroyZoneHandoff(handoff)","summary":"Destroy handoff state."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/PhysicsGrab.md","moduleTitle":"collab/PhysicsGrab","source":"engine/collab/PhysicsGrab.js","import":"/engine/collab/PhysicsGrab.js","sourceHash":"d25759edb1b6bb5b572e474544a3e82c3cceb9cec69b37c60e058374a3f72c2c","subsystem":"engine","recordType":"api-module","id":"module:engine/collab/PhysicsGrab.js","title":"collab/PhysicsGrab","summary":"PhysicsGrab.js Mass-proportional spring-damper (PD controller) physics grab system. How other games do it: - Garry's Mod Physgun:     pure spring-damper, body stays dynamic - Half-Life 2 gravity gun: spring + angular correction torque - Boneworks/BONELAB VR:    PD controller with grip strength cap - UE4 Physics Handle:      D6 joint linear drive to target pos This implementation uses a **frequency / damping-ratio** parameterization (ref: Orange Duck \"Spring-It-On\", Gaffer on Games \"Spring Physics\"): omega = 2π × frequency         (natural frequency, rad/s) kp    = omega² × mass           (spring stiffness, N/m)  ← mass-proportional kd    = 2 × ζ × omega × mass    (damping, N·s/m)       ← mass-proportional With ζ = 1.0 (critical damping), the object reaches the target as fast as possible with zero overshoot regardless of mass. A 0.5 kg ball and a 200 kg crate both converge at the same rate. Multiple players grabbing the same object creates competing spring forces that resolve naturally through physics — tug-of-war emerges with no special-case code needed. Fatigue model (Boneworks-inspired): - Holding heavy objects drains fatigue over time - Effective strength = baseStrength * (0.2 + 0.8 * fatigue) - Minimum 20% strength even when exhausted - Fatigue recovers quickly when not holding Grip break: - Progressive grip weakening beyond GRIP_WEAKEN_DIST - Full slip at GRIP_BREAK_DIST Scope: point-target PD forces for dynamic rigid bodies. Constraint/joint drives, rotational grabs, continuous collision detection, solver substep tuning, and captured multi-peer PhysX traces remain outside this module.","exportCount":24}
{"schemaVersion":1,"modulePath":"engine/reference/collab/PhysicsGrab.md","moduleTitle":"collab/PhysicsGrab","source":"engine/collab/PhysicsGrab.js","import":"/engine/collab/PhysicsGrab.js","sourceHash":"d25759edb1b6bb5b572e474544a3e82c3cceb9cec69b37c60e058374a3f72c2c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/PhysicsGrab.js#0000:physicsGrabPeerIdReport","exportIndex":0,"name":"physicsGrabPeerIdReport","kind":"function","signature":"physicsGrabPeerIdReport(peerId)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/PhysicsGrab.md","moduleTitle":"collab/PhysicsGrab","source":"engine/collab/PhysicsGrab.js","import":"/engine/collab/PhysicsGrab.js","sourceHash":"d25759edb1b6bb5b572e474544a3e82c3cceb9cec69b37c60e058374a3f72c2c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/PhysicsGrab.js#0001:physicsGrabVectorReport","exportIndex":1,"name":"physicsGrabVectorReport","kind":"function","signature":"physicsGrabVectorReport(value, kind = 'position')","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/PhysicsGrab.md","moduleTitle":"collab/PhysicsGrab","source":"engine/collab/PhysicsGrab.js","import":"/engine/collab/PhysicsGrab.js","sourceHash":"d25759edb1b6bb5b572e474544a3e82c3cceb9cec69b37c60e058374a3f72c2c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/PhysicsGrab.js#0002:physicsGrabForceReport","exportIndex":2,"name":"physicsGrabForceReport","kind":"function","signature":"physicsGrabForceReport(objPos, objVel, targetPos, strength, mass)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/PhysicsGrab.md","moduleTitle":"collab/PhysicsGrab","source":"engine/collab/PhysicsGrab.js","import":"/engine/collab/PhysicsGrab.js","sourceHash":"d25759edb1b6bb5b572e474544a3e82c3cceb9cec69b37c60e058374a3f72c2c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/PhysicsGrab.js#0003:grabForceOperationReport","exportIndex":3,"name":"grabForceOperationReport","kind":"function","signature":"grabForceOperationReport(op, transportPeerId = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/PhysicsGrab.md","moduleTitle":"collab/PhysicsGrab","source":"engine/collab/PhysicsGrab.js","import":"/engine/collab/PhysicsGrab.js","sourceHash":"d25759edb1b6bb5b572e474544a3e82c3cceb9cec69b37c60e058374a3f72c2c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/PhysicsGrab.js#0004:admitRemoteGrabForce","exportIndex":4,"name":"admitRemoteGrabForce","kind":"function","signature":"admitRemoteGrabForce(remoteGrabs, op, transportPeerId, receivedAtMs = Date.now()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/PhysicsGrab.md","moduleTitle":"collab/PhysicsGrab","source":"engine/collab/PhysicsGrab.js","import":"/engine/collab/PhysicsGrab.js","sourceHash":"d25759edb1b6bb5b572e474544a3e82c3cceb9cec69b37c60e058374a3f72c2c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/PhysicsGrab.js#0005:pruneRemoteGrabForces","exportIndex":5,"name":"pruneRemoteGrabForces","kind":"function","signature":"pruneRemoteGrabForces(remoteGrabs, nowMs = Date.now()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/PhysicsGrab.md","moduleTitle":"collab/PhysicsGrab","source":"engine/collab/PhysicsGrab.js","import":"/engine/collab/PhysicsGrab.js","sourceHash":"d25759edb1b6bb5b572e474544a3e82c3cceb9cec69b37c60e058374a3f72c2c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/PhysicsGrab.js#0006:removeRemoteGrabPeer","exportIndex":6,"name":"removeRemoteGrabPeer","kind":"function","signature":"removeRemoteGrabPeer(remoteGrabs, peerId)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/PhysicsGrab.md","moduleTitle":"collab/PhysicsGrab","source":"engine/collab/PhysicsGrab.js","import":"/engine/collab/PhysicsGrab.js","sourceHash":"d25759edb1b6bb5b572e474544a3e82c3cceb9cec69b37c60e058374a3f72c2c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/PhysicsGrab.js#0007:computeGrabForce","exportIndex":7,"name":"computeGrabForce","kind":"function","signature":"computeGrabForce(objPos, objVel, targetPos, strength, mass)","summary":"Compute mass-proportional spring-damper grab force. Uses frequency/damping-ratio parameterization so the convergence rate is identical regardless of object mass. Critical damping (ζ=1) means the object reaches the cursor as fast as possible with zero overshoot."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/PhysicsGrab.md","moduleTitle":"collab/PhysicsGrab","source":"engine/collab/PhysicsGrab.js","import":"/engine/collab/PhysicsGrab.js","sourceHash":"d25759edb1b6bb5b572e474544a3e82c3cceb9cec69b37c60e058374a3f72c2c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/PhysicsGrab.js#0008:tickFatigue","exportIndex":8,"name":"tickFatigue","kind":"function","signature":"tickFatigue(fatigue, loadRatio, dt)","summary":"Update fatigue based on load this frame."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/PhysicsGrab.md","moduleTitle":"collab/PhysicsGrab","source":"engine/collab/PhysicsGrab.js","import":"/engine/collab/PhysicsGrab.js","sourceHash":"d25759edb1b6bb5b572e474544a3e82c3cceb9cec69b37c60e058374a3f72c2c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/PhysicsGrab.js#0009:effectiveStrength","exportIndex":9,"name":"effectiveStrength","kind":"function","signature":"effectiveStrength(baseStrength, fatigue)","summary":"Effective strength considering fatigue. Even fully exhausted players retain 20% strength (adrenaline)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/PhysicsGrab.md","moduleTitle":"collab/PhysicsGrab","source":"engine/collab/PhysicsGrab.js","import":"/engine/collab/PhysicsGrab.js","sourceHash":"d25759edb1b6bb5b572e474544a3e82c3cceb9cec69b37c60e058374a3f72c2c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/PhysicsGrab.js#0010:canGrab","exportIndex":10,"name":"canGrab","kind":"function","signature":"canGrab(mass, strength)","summary":"Check if an object is too heavy to pick up at all. Returns false if mass > 4x strength (can't apply meaningful force)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/PhysicsGrab.md","moduleTitle":"collab/PhysicsGrab","source":"engine/collab/PhysicsGrab.js","import":"/engine/collab/PhysicsGrab.js","sourceHash":"d25759edb1b6bb5b572e474544a3e82c3cceb9cec69b37c60e058374a3f72c2c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/PhysicsGrab.js#0011:createLocalGrab","exportIndex":11,"name":"createLocalGrab","kind":"function","signature":"createLocalGrab(entityId, targetPos, baseStrength)","summary":"Create a local grab state for the player's own grab."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/PhysicsGrab.md","moduleTitle":"collab/PhysicsGrab","source":"engine/collab/PhysicsGrab.js","import":"/engine/collab/PhysicsGrab.js","sourceHash":"d25759edb1b6bb5b572e474544a3e82c3cceb9cec69b37c60e058374a3f72c2c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/PhysicsGrab.js#0012:buildGrabForceOp","exportIndex":12,"name":"buildGrabForceOp","kind":"function","signature":"buildGrabForceOp(peerId, entityId, targetPos, strength, fatigue)","summary":"Build a play_grab_force op to broadcast our cursor target to peers. Other peers apply the same spring force, creating tug-of-war physics."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/PhysicsGrab.md","moduleTitle":"collab/PhysicsGrab","source":"engine/collab/PhysicsGrab.js","import":"/engine/collab/PhysicsGrab.js","sourceHash":"d25759edb1b6bb5b572e474544a3e82c3cceb9cec69b37c60e058374a3f72c2c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/PhysicsGrab.js#0013:applyGrabForcesToActor","exportIndex":13,"name":"applyGrabForcesToActor","kind":"function","signature":"applyGrabForcesToActor(actor, PhysX, objPos, objVel, grabs, mass)","summary":"Apply all active grab forces to a PhysX actor. Call this BEFORE stepPhysicsWorld each frame."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/PhysicsGrab.md","moduleTitle":"collab/PhysicsGrab","source":"engine/collab/PhysicsGrab.js","import":"/engine/collab/PhysicsGrab.js","sourceHash":"d25759edb1b6bb5b572e474544a3e82c3cceb9cec69b37c60e058374a3f72c2c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/PhysicsGrab.js#0014:GRAB_FREQUENCY","exportIndex":14,"name":"GRAB_FREQUENCY","kind":"constant","signature":"GRAB_FREQUENCY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/PhysicsGrab.md","moduleTitle":"collab/PhysicsGrab","source":"engine/collab/PhysicsGrab.js","import":"/engine/collab/PhysicsGrab.js","sourceHash":"d25759edb1b6bb5b572e474544a3e82c3cceb9cec69b37c60e058374a3f72c2c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/PhysicsGrab.js#0015:GRAB_DAMPING_RATIO","exportIndex":15,"name":"GRAB_DAMPING_RATIO","kind":"constant","signature":"GRAB_DAMPING_RATIO","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/PhysicsGrab.md","moduleTitle":"collab/PhysicsGrab","source":"engine/collab/PhysicsGrab.js","import":"/engine/collab/PhysicsGrab.js","sourceHash":"d25759edb1b6bb5b572e474544a3e82c3cceb9cec69b37c60e058374a3f72c2c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/PhysicsGrab.js#0016:GRAB_MASS_DEFAULT","exportIndex":16,"name":"GRAB_MASS_DEFAULT","kind":"constant","signature":"GRAB_MASS_DEFAULT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/PhysicsGrab.md","moduleTitle":"collab/PhysicsGrab","source":"engine/collab/PhysicsGrab.js","import":"/engine/collab/PhysicsGrab.js","sourceHash":"d25759edb1b6bb5b572e474544a3e82c3cceb9cec69b37c60e058374a3f72c2c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/PhysicsGrab.js#0017:PLAYER_STRENGTH","exportIndex":17,"name":"PLAYER_STRENGTH","kind":"constant","signature":"PLAYER_STRENGTH","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/PhysicsGrab.md","moduleTitle":"collab/PhysicsGrab","source":"engine/collab/PhysicsGrab.js","import":"/engine/collab/PhysicsGrab.js","sourceHash":"d25759edb1b6bb5b572e474544a3e82c3cceb9cec69b37c60e058374a3f72c2c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/PhysicsGrab.js#0018:GRIP_WEAKEN_DIST","exportIndex":18,"name":"GRIP_WEAKEN_DIST","kind":"constant","signature":"GRIP_WEAKEN_DIST","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/PhysicsGrab.md","moduleTitle":"collab/PhysicsGrab","source":"engine/collab/PhysicsGrab.js","import":"/engine/collab/PhysicsGrab.js","sourceHash":"d25759edb1b6bb5b572e474544a3e82c3cceb9cec69b37c60e058374a3f72c2c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/PhysicsGrab.js#0019:GRIP_BREAK_DIST","exportIndex":19,"name":"GRIP_BREAK_DIST","kind":"constant","signature":"GRIP_BREAK_DIST","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/PhysicsGrab.md","moduleTitle":"collab/PhysicsGrab","source":"engine/collab/PhysicsGrab.js","import":"/engine/collab/PhysicsGrab.js","sourceHash":"d25759edb1b6bb5b572e474544a3e82c3cceb9cec69b37c60e058374a3f72c2c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/PhysicsGrab.js#0020:FATIGUE_RATE","exportIndex":20,"name":"FATIGUE_RATE","kind":"constant","signature":"FATIGUE_RATE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/PhysicsGrab.md","moduleTitle":"collab/PhysicsGrab","source":"engine/collab/PhysicsGrab.js","import":"/engine/collab/PhysicsGrab.js","sourceHash":"d25759edb1b6bb5b572e474544a3e82c3cceb9cec69b37c60e058374a3f72c2c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/PhysicsGrab.js#0021:FATIGUE_RECOVERY","exportIndex":21,"name":"FATIGUE_RECOVERY","kind":"constant","signature":"FATIGUE_RECOVERY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/PhysicsGrab.md","moduleTitle":"collab/PhysicsGrab","source":"engine/collab/PhysicsGrab.js","import":"/engine/collab/PhysicsGrab.js","sourceHash":"d25759edb1b6bb5b572e474544a3e82c3cceb9cec69b37c60e058374a3f72c2c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/PhysicsGrab.js#0022:STALE_GRAB_MS","exportIndex":22,"name":"STALE_GRAB_MS","kind":"constant","signature":"STALE_GRAB_MS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/PhysicsGrab.md","moduleTitle":"collab/PhysicsGrab","source":"engine/collab/PhysicsGrab.js","import":"/engine/collab/PhysicsGrab.js","sourceHash":"d25759edb1b6bb5b572e474544a3e82c3cceb9cec69b37c60e058374a3f72c2c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/PhysicsGrab.js#0023:PHYSICS_GRAB_LIMITS","exportIndex":23,"name":"PHYSICS_GRAB_LIMITS","kind":"constant","signature":"PHYSICS_GRAB_LIMITS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/SpatialHashGrid.md","moduleTitle":"collab/SpatialHashGrid","source":"engine/collab/SpatialHashGrid.js","import":"/engine/collab/SpatialHashGrid.js","sourceHash":"48103be11b8c0976da457398bb8b69ad0b35ac67a91ce8bd159474f6312ed1ad","subsystem":"engine","recordType":"api-module","id":"module:engine/collab/SpatialHashGrid.js","title":"collab/SpatialHashGrid","summary":"SpatialHashGrid.js O(1) spatial lookup grid for interest management and zone queries. Uses a 2D grid (XZ plane) where each cell stores a Set of entity IDs. Supports radius and AABB queries without iterating all entities. Inspired by: Photon Fusion AoI grid, SpatialOS worker partitioning.","exportCount":14}
{"schemaVersion":1,"modulePath":"engine/reference/collab/SpatialHashGrid.md","moduleTitle":"collab/SpatialHashGrid","source":"engine/collab/SpatialHashGrid.js","import":"/engine/collab/SpatialHashGrid.js","sourceHash":"48103be11b8c0976da457398bb8b69ad0b35ac67a91ce8bd159474f6312ed1ad","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/SpatialHashGrid.js#0000:spatialHashGridIdReport","exportIndex":0,"name":"spatialHashGridIdReport","kind":"function","signature":"spatialHashGridIdReport(id)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/SpatialHashGrid.md","moduleTitle":"collab/SpatialHashGrid","source":"engine/collab/SpatialHashGrid.js","import":"/engine/collab/SpatialHashGrid.js","sourceHash":"48103be11b8c0976da457398bb8b69ad0b35ac67a91ce8bd159474f6312ed1ad","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/SpatialHashGrid.js#0001:spatialHashGridPointReport","exportIndex":1,"name":"spatialHashGridPointReport","kind":"function","signature":"spatialHashGridPointReport(grid, x, z)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/SpatialHashGrid.md","moduleTitle":"collab/SpatialHashGrid","source":"engine/collab/SpatialHashGrid.js","import":"/engine/collab/SpatialHashGrid.js","sourceHash":"48103be11b8c0976da457398bb8b69ad0b35ac67a91ce8bd159474f6312ed1ad","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/SpatialHashGrid.js#0002:createSpatialHashGrid","exportIndex":2,"name":"createSpatialHashGrid","kind":"function","signature":"createSpatialHashGrid(cellSize, options = {})","summary":"Create a spatial hash grid."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/SpatialHashGrid.md","moduleTitle":"collab/SpatialHashGrid","source":"engine/collab/SpatialHashGrid.js","import":"/engine/collab/SpatialHashGrid.js","sourceHash":"48103be11b8c0976da457398bb8b69ad0b35ac67a91ce8bd159474f6312ed1ad","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/SpatialHashGrid.js#0003:gridInsert","exportIndex":3,"name":"gridInsert","kind":"function","signature":"gridInsert(grid, id, x, z)","summary":"Insert an entity into the grid."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/SpatialHashGrid.md","moduleTitle":"collab/SpatialHashGrid","source":"engine/collab/SpatialHashGrid.js","import":"/engine/collab/SpatialHashGrid.js","sourceHash":"48103be11b8c0976da457398bb8b69ad0b35ac67a91ce8bd159474f6312ed1ad","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/SpatialHashGrid.js#0004:gridRemove","exportIndex":4,"name":"gridRemove","kind":"function","signature":"gridRemove(grid, id)","summary":"Remove an entity from the grid."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/SpatialHashGrid.md","moduleTitle":"collab/SpatialHashGrid","source":"engine/collab/SpatialHashGrid.js","import":"/engine/collab/SpatialHashGrid.js","sourceHash":"48103be11b8c0976da457398bb8b69ad0b35ac67a91ce8bd159474f6312ed1ad","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/SpatialHashGrid.js#0005:gridClear","exportIndex":5,"name":"gridClear","kind":"function","signature":"gridClear(grid)","summary":"Clear all entities from the grid."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/SpatialHashGrid.md","moduleTitle":"collab/SpatialHashGrid","source":"engine/collab/SpatialHashGrid.js","import":"/engine/collab/SpatialHashGrid.js","sourceHash":"48103be11b8c0976da457398bb8b69ad0b35ac67a91ce8bd159474f6312ed1ad","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/SpatialHashGrid.js#0006:gridQueryRadius","exportIndex":6,"name":"gridQueryRadius","kind":"function","signature":"gridQueryRadius(grid, x, z, radius)","summary":"Query all entity IDs within a radius of a point (XZ plane). Returns entities whose grid position is within the radius."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/SpatialHashGrid.md","moduleTitle":"collab/SpatialHashGrid","source":"engine/collab/SpatialHashGrid.js","import":"/engine/collab/SpatialHashGrid.js","sourceHash":"48103be11b8c0976da457398bb8b69ad0b35ac67a91ce8bd159474f6312ed1ad","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/SpatialHashGrid.js#0007:gridQueryRect","exportIndex":7,"name":"gridQueryRect","kind":"function","signature":"gridQueryRect(grid, minX, minZ, maxX, maxZ)","summary":"Query all entity IDs within an axis-aligned bounding box (XZ plane)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/SpatialHashGrid.md","moduleTitle":"collab/SpatialHashGrid","source":"engine/collab/SpatialHashGrid.js","import":"/engine/collab/SpatialHashGrid.js","sourceHash":"48103be11b8c0976da457398bb8b69ad0b35ac67a91ce8bd159474f6312ed1ad","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/SpatialHashGrid.js#0008:gridGetPosition","exportIndex":8,"name":"gridGetPosition","kind":"function","signature":"gridGetPosition(grid, id)","summary":"Get the stored position for an entity."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/SpatialHashGrid.md","moduleTitle":"collab/SpatialHashGrid","source":"engine/collab/SpatialHashGrid.js","import":"/engine/collab/SpatialHashGrid.js","sourceHash":"48103be11b8c0976da457398bb8b69ad0b35ac67a91ce8bd159474f6312ed1ad","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/SpatialHashGrid.js#0009:gridSize","exportIndex":9,"name":"gridSize","kind":"function","signature":"gridSize(grid)","summary":"Get the total number of entities in the grid."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/SpatialHashGrid.md","moduleTitle":"collab/SpatialHashGrid","source":"engine/collab/SpatialHashGrid.js","import":"/engine/collab/SpatialHashGrid.js","sourceHash":"48103be11b8c0976da457398bb8b69ad0b35ac67a91ce8bd159474f6312ed1ad","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/SpatialHashGrid.js#0010:gridGetStats","exportIndex":10,"name":"gridGetStats","kind":"function","signature":"gridGetStats(grid)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/SpatialHashGrid.md","moduleTitle":"collab/SpatialHashGrid","source":"engine/collab/SpatialHashGrid.js","import":"/engine/collab/SpatialHashGrid.js","sourceHash":"48103be11b8c0976da457398bb8b69ad0b35ac67a91ce8bd159474f6312ed1ad","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/SpatialHashGrid.js#0011:destroySpatialHashGrid","exportIndex":11,"name":"destroySpatialHashGrid","kind":"function","signature":"destroySpatialHashGrid(grid)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/SpatialHashGrid.md","moduleTitle":"collab/SpatialHashGrid","source":"engine/collab/SpatialHashGrid.js","import":"/engine/collab/SpatialHashGrid.js","sourceHash":"48103be11b8c0976da457398bb8b69ad0b35ac67a91ce8bd159474f6312ed1ad","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/SpatialHashGrid.js#0012:SPATIAL_HASH_GRID_LIMITS","exportIndex":12,"name":"SPATIAL_HASH_GRID_LIMITS","kind":"constant","signature":"SPATIAL_HASH_GRID_LIMITS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/collab/SpatialHashGrid.md","moduleTitle":"collab/SpatialHashGrid","source":"engine/collab/SpatialHashGrid.js","import":"/engine/collab/SpatialHashGrid.js","sourceHash":"48103be11b8c0976da457398bb8b69ad0b35ac67a91ce8bd159474f6312ed1ad","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/collab/SpatialHashGrid.js#0013:gridUpdate","exportIndex":13,"name":"gridUpdate","kind":"constant","signature":"gridUpdate","summary":"Update an entity's position. Alias for insert (handles cell migration)."}
{"schemaVersion":1,"modulePath":"engine/reference/collab/index.md","moduleTitle":"collab/index","source":"engine/collab/index.js","import":"/engine/collab/index.js","sourceHash":"8356c3e7e65211508b9b2cd943001692fdb5438f1743fd1b89962bf096fb44d6","subsystem":"engine","recordType":"api-module","id":"module:engine/collab/index.js","title":"collab/index","summary":"engine/collab/index.js Barrel export for all collab modules.","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/compat/bootloader.md","moduleTitle":"compat/bootloader","source":"engine/compat/bootloader.js","import":"/engine/compat/bootloader.js","sourceHash":"e460c4298b2126ff9b7159ba3430559e202519909287cbfeb24349105f69a647","subsystem":"engine","recordType":"api-module","id":"module:engine/compat/bootloader.js","title":"compat/bootloader","summary":"bootloader.js — the Engine Compatibility Bootloader entry point. Boot flow (Phases 1-2 implemented here; 3-7 plug in via ctx hooks): 1. load source              (source-loader) 2. parse HTML               (html-ingestor) 3. static probe → profile   (probe-scanner + profile-builder) 4. merge with cached profile(profile-cache) 5. [validate]               (ctx.validate — schema-registry, Phase 3) 6. [heal]                   (ctx.heal — healing-pipeline, Phase 4) 7. build scoped realm + heal DOM + scope CSS   (runtime-realm) 8. [interpose]              (ctx.interpose — interposers, Phase 5) 9. execute guest scripts 10. cache profile, install error recovery, return an app handle The bootloader is engine-agnostic: pass a `ctx` with optional { storage, profileCache, gpu, scheduler, validate, heal, interpose, onError }.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/compat/bootloader.md","moduleTitle":"compat/bootloader","source":"engine/compat/bootloader.js","import":"/engine/compat/bootloader.js","sourceHash":"e460c4298b2126ff9b7159ba3430559e202519909287cbfeb24349105f69a647","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/bootloader.js#0000:CompatBootloader","exportIndex":0,"name":"CompatBootloader","kind":"class","signature":"class CompatBootloader","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/compat/bootloader.md","moduleTitle":"compat/bootloader","source":"engine/compat/bootloader.js","import":"/engine/compat/bootloader.js","sourceHash":"e460c4298b2126ff9b7159ba3430559e202519909287cbfeb24349105f69a647","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/bootloader.js#0001:CompatApp","exportIndex":1,"name":"CompatApp","kind":"class","signature":"class CompatApp","summary":"A booted guest app handle."}
{"schemaVersion":1,"modulePath":"engine/reference/compat/bootloader.md","moduleTitle":"compat/bootloader","source":"engine/compat/bootloader.js","import":"/engine/compat/bootloader.js","sourceHash":"e460c4298b2126ff9b7159ba3430559e202519909287cbfeb24349105f69a647","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/bootloader.js#0002:bootExternalApp","exportIndex":2,"name":"bootExternalApp","kind":"function","signature":"async bootExternalApp(options, ctx = {})","summary":"Convenience one-shot boot without holding a CompatBootloader instance."}
{"schemaVersion":1,"modulePath":"engine/reference/compat/css-healer.md","moduleTitle":"compat/css-healer","source":"engine/compat/css-healer.js","import":"/engine/compat/css-healer.js","sourceHash":"01b6bd528da890518e15151d8978952b531d5f50ab7933d881fa52195271804c","subsystem":"engine","recordType":"api-module","id":"module:engine/compat/css-healer.js","title":"compat/css-healer","summary":"css-healer.js — scope a guest app's CSS so it cannot style the OS shell. External WebGPU apps routinely style `html, body, canvas, *, :root` globally. `scopeCss(css, scope)` rewrites every style rule so it only applies inside the guest's realm container (e.g. `[data-engine-app=\"tempolux\"]`): html, body            →  [data-engine-app=\"id\"] canvas                →  [data-engine-app=\"id\"] canvas *                     →  [data-engine-app=\"id\"] * .hud .row             →  [data-engine-app=\"id\"] .hud .row At-rules are handled correctly: @media/@supports/@container/@layer/@scope have their inner rules scoped; @keyframes/@font-face/@page/@property/@import are left intact (their \"selectors\" are not element selectors).","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/compat/css-healer.md","moduleTitle":"compat/css-healer","source":"engine/compat/css-healer.js","import":"/engine/compat/css-healer.js","sourceHash":"01b6bd528da890518e15151d8978952b531d5f50ab7933d881fa52195271804c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/css-healer.js#0000:scopeCss","exportIndex":0,"name":"scopeCss","kind":"function","signature":"scopeCss(css, scope)","summary":"Scope a full stylesheet string to `scope` (a selector like `[data-engine-app=\"id\"]`)."}
{"schemaVersion":1,"modulePath":"engine/reference/compat/css-healer.md","moduleTitle":"compat/css-healer","source":"engine/compat/css-healer.js","import":"/engine/compat/css-healer.js","sourceHash":"01b6bd528da890518e15151d8978952b531d5f50ab7933d881fa52195271804c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/css-healer.js#0001:scopeSelectorFor","exportIndex":1,"name":"scopeSelectorFor","kind":"function","signature":"scopeSelectorFor(appId)","summary":"Convenience: the canonical realm scope selector for an app id."}
{"schemaVersion":1,"modulePath":"engine/reference/compat/dom-healer.md","moduleTitle":"compat/dom-healer","source":"engine/compat/dom-healer.js","import":"/engine/compat/dom-healer.js","sourceHash":"dcfe566bd11c2d23bfc4ec9d6856d25440183733d39c2c7844e58516d651a170","subsystem":"engine","recordType":"api-module","id":"module:engine/compat/dom-healer.js","title":"compat/dom-healer","summary":"dom-healer.js — create DOM elements a guest app requires but that are missing. Many single-file WebGPU apps assume `<canvas id=\"c\">`, an overlay `#ov`, a HUD `#hud`, etc. already exist. The compatibility profile lists those in `profile.dom.requiredElements`; this healer ensures each exists inside the guest's realm container BEFORE the guest's scripts run, so `getElementById` and friends resolve instead of throwing.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/compat/dom-healer.md","moduleTitle":"compat/dom-healer","source":"engine/compat/dom-healer.js","import":"/engine/compat/dom-healer.js","sourceHash":"dcfe566bd11c2d23bfc4ec9d6856d25440183733d39c2c7844e58516d651a170","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/dom-healer.js#0000:healDom","exportIndex":0,"name":"healDom","kind":"function","signature":"healDom(rootEl, profile)","summary":"Ensure every `profile.dom.requiredElements` entry exists under `rootEl`."}
{"schemaVersion":1,"modulePath":"engine/reference/compat/error-recovery.md","moduleTitle":"compat/error-recovery","source":"engine/compat/error-recovery.js","import":"/engine/compat/error-recovery.js","sourceHash":"70f015036138359a5c47082e4a88948d483d652173a949302d0703fa84123578","subsystem":"engine","recordType":"api-module","id":"module:engine/compat/error-recovery.js","title":"compat/error-recovery","summary":"error-recovery.js — keep a crashing guest from taking down the OS. Installs scoped error capture and drives a recovery ladder when a guest throws repeatedly within a short window: 1. tolerate isolated errors (already recorded), 2. reboot the realm (fresh parse + heal + run), 3. reboot in SAFE MODE (network off, shader-heal off, GPU limits clamped), 4. render an in-realm error panel with a manual Restart — OS stays alive. Errors counted toward escalation: runtime-error, promise-error, script, gpu-device-lost. Benign infos (warnings, clamps, recovery notices) are ignored.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/compat/error-recovery.md","moduleTitle":"compat/error-recovery","source":"engine/compat/error-recovery.js","import":"/engine/compat/error-recovery.js","sourceHash":"70f015036138359a5c47082e4a88948d483d652173a949302d0703fa84123578","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/error-recovery.js#0000:installErrorRecovery","exportIndex":0,"name":"installErrorRecovery","kind":"function","signature":"installErrorRecovery(app, { win = (typeof window !== 'undefined' ? window : null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/compat/error-recovery.md","moduleTitle":"compat/error-recovery","source":"engine/compat/error-recovery.js","import":"/engine/compat/error-recovery.js","sourceHash":"70f015036138359a5c47082e4a88948d483d652173a949302d0703fa84123578","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/error-recovery.js#0001:makeSafeProfile","exportIndex":1,"name":"makeSafeProfile","kind":"function","signature":"makeSafeProfile(profile)","summary":"A safer variant of a profile used for safe-mode reboots."}
{"schemaVersion":1,"modulePath":"engine/reference/compat/error-recovery.md","moduleTitle":"compat/error-recovery","source":"engine/compat/error-recovery.js","import":"/engine/compat/error-recovery.js","sourceHash":"70f015036138359a5c47082e4a88948d483d652173a949302d0703fa84123578","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/error-recovery.js#0002:renderErrorPanel","exportIndex":2,"name":"renderErrorPanel","kind":"function","signature":"renderErrorPanel(app, info)","summary":"Render a friendly, non-fatal error panel inside the guest's realm container."}
{"schemaVersion":1,"modulePath":"engine/reference/compat/healers/asset-healer.md","moduleTitle":"compat/healers/asset-healer","source":"engine/compat/healers/asset-healer.js","import":"/engine/compat/healers/asset-healer.js","sourceHash":"9f8e5ca3da39a6ab8597cc30cf94afc8fcd010522272d586c384d57481859aac","subsystem":"engine","recordType":"api-module","id":"module:engine/compat/healers/asset-healer.js","title":"compat/healers/asset-healer","summary":"healers/asset-healer.js — resolve bundled relative asset references. A multi-file guest references `<img src=\"logo.png\">`, `<source src=\"clip.webm\">`, etc. Those relative URLs won't resolve inside the realm, so this pass rewrites any reference present in the package `files` map to a blob URL. The created URLs are recorded on `model._assetBlobs` so the realm revokes them on destroy.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/compat/healers/asset-healer.md","moduleTitle":"compat/healers/asset-healer","source":"engine/compat/healers/asset-healer.js","import":"/engine/compat/healers/asset-healer.js","sourceHash":"9f8e5ca3da39a6ab8597cc30cf94afc8fcd010522272d586c384d57481859aac","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/healers/asset-healer.js#0000:healAssets","exportIndex":0,"name":"healAssets","kind":"function","signature":"healAssets({ model, files }, report)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/compat/healers/error-healer.md","moduleTitle":"compat/healers/error-healer","source":"engine/compat/healers/error-healer.js","import":"/engine/compat/healers/error-healer.js","sourceHash":"0ce5fe8f4b04a57f8f11d501775dac536ae779f264b8d02f3eb8a74c4ca27814","subsystem":"engine","recordType":"api-module","id":"module:engine/compat/healers/error-healer.js","title":"compat/healers/error-healer","summary":"healers/error-healer.js — enable scoped error capture for the guest. Marks the profile so the bootloader installs error/unhandledrejection capture (Phase 7's recovery layer reads `healing.captureErrors`). Kept as its own pass so the recovery policy can grow independently.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/compat/healers/error-healer.md","moduleTitle":"compat/healers/error-healer","source":"engine/compat/healers/error-healer.js","import":"/engine/compat/healers/error-healer.js","sourceHash":"0ce5fe8f4b04a57f8f11d501775dac536ae779f264b8d02f3eb8a74c4ca27814","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/healers/error-healer.js#0000:healErrorPolicy","exportIndex":0,"name":"healErrorPolicy","kind":"function","signature":"healErrorPolicy({ profile }, report)","summary":"healers/error-healer.js — enable scoped error capture for the guest. Marks the profile so the bootloader installs error/unhandledrejection capture (Phase 7's recovery layer reads `healing.captureErrors`). Kept as its own pass so the recovery policy can grow independently."}
{"schemaVersion":1,"modulePath":"engine/reference/compat/healers/gpu-healer.md","moduleTitle":"compat/healers/gpu-healer","source":"engine/compat/healers/gpu-healer.js","import":"/engine/compat/healers/gpu-healer.js","sourceHash":"1545fccc75ed5bdb85c0cc17879bc6a0164cf24cd639d9541aa55b0819d13b1b","subsystem":"engine","recordType":"api-module","id":"module:engine/compat/healers/gpu-healer.js","title":"compat/healers/gpu-healer","summary":"healers/gpu-healer.js — normalise GPU-related profile fields before boot. Sets a sensible `gpu.presentation` and ensures the runtime healing flags the interposer relies on (`clampGpuLimits`, `wrapQueueSubmit`) are populated. The actual limit-clamping happens at runtime in `interposers/gpu.js`.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/compat/healers/gpu-healer.md","moduleTitle":"compat/healers/gpu-healer","source":"engine/compat/healers/gpu-healer.js","import":"/engine/compat/healers/gpu-healer.js","sourceHash":"1545fccc75ed5bdb85c0cc17879bc6a0164cf24cd639d9541aa55b0819d13b1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/healers/gpu-healer.js#0000:healGpu","exportIndex":0,"name":"healGpu","kind":"function","signature":"healGpu({ profile }, report)","summary":"healers/gpu-healer.js — normalise GPU-related profile fields before boot. Sets a sensible `gpu.presentation` and ensures the runtime healing flags the interposer relies on (`clampGpuLimits`, `wrapQueueSubmit`) are populated. The actual limit-clamping happens at runtime in `interposers/gpu.js`."}
{"schemaVersion":1,"modulePath":"engine/reference/compat/healers/lifecycle-healer.md","moduleTitle":"compat/healers/lifecycle-healer","source":"engine/compat/healers/lifecycle-healer.js","import":"/engine/compat/healers/lifecycle-healer.js","sourceHash":"bfa3c1da7ec852c0aeaadcaf0218bc3619cc5a43be07f47a97727c9d3c7c0e81","subsystem":"engine","recordType":"api-module","id":"module:engine/compat/healers/lifecycle-healer.js","title":"compat/healers/lifecycle-healer","summary":"healers/lifecycle-healer.js — ensure lifecycle healing flags are populated. These flags drive the interposers and the recovery layer (Phase 7): whether to recover on GPU context loss, namespace storage, and route downloads safely.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/compat/healers/lifecycle-healer.md","moduleTitle":"compat/healers/lifecycle-healer","source":"engine/compat/healers/lifecycle-healer.js","import":"/engine/compat/healers/lifecycle-healer.js","sourceHash":"bfa3c1da7ec852c0aeaadcaf0218bc3619cc5a43be07f47a97727c9d3c7c0e81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/healers/lifecycle-healer.js#0000:healLifecycle","exportIndex":0,"name":"healLifecycle","kind":"function","signature":"healLifecycle({ profile }, report)","summary":"healers/lifecycle-healer.js — ensure lifecycle healing flags are populated. These flags drive the interposers and the recovery layer (Phase 7): whether to recover on GPU context loss, namespace storage, and route downloads safely."}
{"schemaVersion":1,"modulePath":"engine/reference/compat/healers/shader-healer.md","moduleTitle":"compat/healers/shader-healer","source":"engine/compat/healers/shader-healer.js","import":"/engine/compat/healers/shader-healer.js","sourceHash":"4856cc4ceda0f129133a2a511d0ddd1a6c0c6fca6e26d2ac98834c1f355fdc26","subsystem":"engine","recordType":"api-module","id":"module:engine/compat/healers/shader-healer.js","title":"compat/healers/shader-healer","summary":"healers/shader-healer.js — migrate deprecated WGSL attribute syntax. Older WGSL used `[[stage(...)]]` / `[[group(x), binding(y)]]` / `[[location(n)]]` / `[[builtin(...)]]`, which modern WebGPU rejects. This pass rewrites those tokens to the current `@stage` / `@group @binding` / `@location` / `@builtin` forms inside inline guest scripts. The patterns are WGSL-specific and do not occur in normal JS, so the rewrite is safe. Gated by `profile.healing.healShaders`.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/compat/healers/shader-healer.md","moduleTitle":"compat/healers/shader-healer","source":"engine/compat/healers/shader-healer.js","import":"/engine/compat/healers/shader-healer.js","sourceHash":"4856cc4ceda0f129133a2a511d0ddd1a6c0c6fca6e26d2ac98834c1f355fdc26","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/healers/shader-healer.js#0000:healShaders","exportIndex":0,"name":"healShaders","kind":"function","signature":"healShaders({ model, profile }, report)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/compat/healing-pipeline.md","moduleTitle":"compat/healing-pipeline","source":"engine/compat/healing-pipeline.js","import":"/engine/compat/healing-pipeline.js","sourceHash":"0ae6ff990638f031e7dc45c5372d59be67e3073a70e6449747e389ddf6ff5fae","subsystem":"engine","recordType":"api-module","id":"module:engine/compat/healing-pipeline.js","title":"compat/healing-pipeline","summary":"healing-pipeline.js — ordered pre-boot healing passes over a guest. Runs after probing and before the realm is built, mutating the parsed model and the profile in place. Ordered per the compat spec: DOM/CSS scoping happen in the realm itself; here we do the model/profile-level passes: GPU flags → lifecycle flags → error policy → asset URL rewrite → WGSL repair. Each pass is isolated (a throwing healer never aborts the others) and appends to a human-readable report returned to the caller.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/compat/healing-pipeline.md","moduleTitle":"compat/healing-pipeline","source":"engine/compat/healing-pipeline.js","import":"/engine/compat/healing-pipeline.js","sourceHash":"0ae6ff990638f031e7dc45c5372d59be67e3073a70e6449747e389ddf6ff5fae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/healing-pipeline.js#0000:runHealingPipeline","exportIndex":0,"name":"runHealingPipeline","kind":"function","signature":"runHealingPipeline(ctxObj)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/compat/html-ingestor.md","moduleTitle":"compat/html-ingestor","source":"engine/compat/html-ingestor.js","import":"/engine/compat/html-ingestor.js","sourceHash":"f46ae40ea0c0f80615b2d9083b13fb4f1ac04de9babed7d02f4181ff7c4c15fa","subsystem":"engine","recordType":"api-module","id":"module:engine/compat/html-ingestor.js","title":"compat/html-ingestor","summary":"html-ingestor.js — parse a guest HTML document into a structured model. Uses DOMParser (scripts parsed this way are INERT — they will not execute on insertion), so we can safely inspect and relocate the DOM, then hand the extracted scripts to the runtime realm to execute in controlled order. The returned model: { doc,                       // the parsed Document (inert) title, scripts: [{ module, src, code, async, defer }],   // document order styles:  [{ inline, href, code }],                // document order links:   [{ rel, href }], canvases:[{ id, width, height }], assets:  string[],         // referenced asset URLs (img/src, etc.) }","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/compat/html-ingestor.md","moduleTitle":"compat/html-ingestor","source":"engine/compat/html-ingestor.js","import":"/engine/compat/html-ingestor.js","sourceHash":"f46ae40ea0c0f80615b2d9083b13fb4f1ac04de9babed7d02f4181ff7c4c15fa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/html-ingestor.js#0000:parseHTML","exportIndex":0,"name":"parseHTML","kind":"function","signature":"parseHTML(html, baseUrl = null)","summary":"html-ingestor.js — parse a guest HTML document into a structured model. Uses DOMParser (scripts parsed this way are INERT — they will not execute on insertion), so we can safely inspect and relocate the DOM, then hand the extracted scripts to the runtime realm to execute in controlled order. The returned model: { doc,                       // the parsed Document (inert) title, scripts: [{ module, src, code, async, defer }],   // document order styles:  [{ inline, href, code }],                // document order links:   [{ rel, href }], canvases:[{ id, width, height }], assets:  string[],         // referenced asset URLs (img/src, etc.) }"}
{"schemaVersion":1,"modulePath":"engine/reference/compat/iframe-realm.md","moduleTitle":"compat/iframe-realm","source":"engine/compat/iframe-realm.js","import":"/engine/compat/iframe-realm.js","sourceHash":"4624e30e3c859591e7425baa3bc98a3f7ffc07425a8541dae8030721f4721304","subsystem":"engine","recordType":"api-module","id":"module:engine/compat/iframe-realm.js","title":"compat/iframe-realm","summary":"iframe-realm.js — a hard-isolation execution root for UNTRUSTED guest apps. Unlike RuntimeRealm (light-DOM, shared OS origin — best-effort isolation), this runs the guest inside a `sandbox=\"allow-scripts\"` iframe WITHOUT `allow-same-origin`, so it gets a unique opaque origin and cannot touch the OS document, cookies, localStorage/IndexedDB, or kernel globals. It is a real security boundary suitable for community/unverified packages and live remote sites. The guest document is assembled self-contained (bundled JS → `data:` modules with imports rewritten; bundled CSS/assets → inline/`data:` URLs) because parent-origin blob URLs are unreachable from the opaque-origin iframe. A tiny injected bridge routes window.open()/anchor navigations up to the host via postMessage (the host opens them in the OS Browser). Trade-offs vs RuntimeRealm: no shared WebGPU device (the iframe requests its own), and no direct syscall access (a postMessage RPC would be needed). Used only when isolation is requested.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/compat/iframe-realm.md","moduleTitle":"compat/iframe-realm","source":"engine/compat/iframe-realm.js","import":"/engine/compat/iframe-realm.js","sourceHash":"4624e30e3c859591e7425baa3bc98a3f7ffc07425a8541dae8030721f4721304","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/iframe-realm.js#0000:IframeRealm","exportIndex":0,"name":"IframeRealm","kind":"class","signature":"class IframeRealm","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/compat/index.md","moduleTitle":"compat/index","source":"engine/compat/index.js","import":"/engine/compat/index.js","sourceHash":"c8382c030e2e0e979d5f3713c020d8c08bd9b56eebb0a62e1d5b463c6745546b","subsystem":"engine","recordType":"api-module","id":"module:engine/compat/index.js","title":"compat/index","summary":"engine/compat/index.js — the Engine Compatibility namespace. `createCompat(ctx)` returns the `engine.compat` API used across the OS: await engine.compat.boot({ id, source, mount, mode, permissions }); `ctx` wires the compat layer to the host engine/kernel (all optional): storage   — kernel.storageManager (profile/snapshot persistence) gpu       — { getOrCreateSharedDevice(adapter, desc), format, healDeviceDescriptor } scheduler — engine frame scheduler (RAF interposition, Phase 5/6) validate  — async (profile) => { valid, errors }      (Phase 3) heal      — async ({ model, profile, files, appId })  (Phase 4) interpose — async ({ realm, profile, app, ctx })      (Phase 5) onError   — (info) => void Phases 3-7 register their hooks onto the same ctx, so this factory stays the single, stable entry point as the pipeline grows.","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/compat/index.md","moduleTitle":"compat/index","source":"engine/compat/index.js","import":"/engine/compat/index.js","sourceHash":"c8382c030e2e0e979d5f3713c020d8c08bd9b56eebb0a62e1d5b463c6745546b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/index.js#0000:createCompat","exportIndex":0,"name":"createCompat","kind":"function","signature":"createCompat(ctx = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/compat/index.md","moduleTitle":"compat/index","source":"engine/compat/index.js","import":"/engine/compat/index.js","sourceHash":"c8382c030e2e0e979d5f3713c020d8c08bd9b56eebb0a62e1d5b463c6745546b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/index.js#0001:COMPAT_VERSION","exportIndex":1,"name":"COMPAT_VERSION","kind":"constant","signature":"COMPAT_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/compat/index.md","moduleTitle":"compat/index","source":"engine/compat/index.js","import":"/engine/compat/index.js","sourceHash":"c8382c030e2e0e979d5f3713c020d8c08bd9b56eebb0a62e1d5b463c6745546b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/index.js#0002:CompatBootloader","exportIndex":2,"name":"CompatBootloader","kind":"re-export","signature":"CompatBootloader","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/compat/index.md","moduleTitle":"compat/index","source":"engine/compat/index.js","import":"/engine/compat/index.js","sourceHash":"c8382c030e2e0e979d5f3713c020d8c08bd9b56eebb0a62e1d5b463c6745546b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/index.js#0003:ProfileCache","exportIndex":3,"name":"ProfileCache","kind":"re-export","signature":"ProfileCache","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/compat/index.md","moduleTitle":"compat/index","source":"engine/compat/index.js","import":"/engine/compat/index.js","sourceHash":"c8382c030e2e0e979d5f3713c020d8c08bd9b56eebb0a62e1d5b463c6745546b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/index.js#0004:bootExternalApp","exportIndex":4,"name":"bootExternalApp","kind":"re-export","signature":"bootExternalApp","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/compat/interposers/fetch.md","moduleTitle":"compat/interposers/fetch","source":"engine/compat/interposers/fetch.js","import":"/engine/compat/interposers/fetch.js","sourceHash":"ea590fee8f7eaff993be16af3cdf72c0711099d8f5ee9308060a52b4577cb098","subsystem":"engine","recordType":"api-module","id":"module:engine/compat/interposers/fetch.js","title":"compat/interposers/fetch","summary":"interposers/fetch.js — default-deny network egress for guest apps + serving bundled package files. Resolution order: 1. If the ref resolves to a bundled package file (e.g. `fetch('data.json')` or a `.wasm`), serve it directly from the file map — relative paths in a blob-loaded module would otherwise 404 against the OS origin. 2. Same-origin, relative, `blob:` and `data:` requests pass through. 3. Cross-origin requests are blocked unless the profile granted `network.fetch` — preventing a wrapped third-party app from phoning home.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/compat/interposers/fetch.md","moduleTitle":"compat/interposers/fetch","source":"engine/compat/interposers/fetch.js","import":"/engine/compat/interposers/fetch.js","sourceHash":"ea590fee8f7eaff993be16af3cdf72c0711099d8f5ee9308060a52b4577cb098","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/interposers/fetch.js#0000:makeFetchShim","exportIndex":0,"name":"makeFetchShim","kind":"function","signature":"makeFetchShim({ profile, onError, realm = null } = {})","summary":"interposers/fetch.js — default-deny network egress for guest apps + serving bundled package files. Resolution order: 1. If the ref resolves to a bundled package file (e.g. `fetch('data.json')` or a `.wasm`), serve it directly from the file map — relative paths in a blob-loaded module would otherwise 404 against the OS origin. 2. Same-origin, relative, `blob:` and `data:` requests pass through. 3. Cross-origin requests are blocked unless the profile granted `network.fetch` — preventing a wrapped third-party app from phoning home."}
{"schemaVersion":1,"modulePath":"engine/reference/compat/interposers/file-export.md","moduleTitle":"compat/interposers/file-export","source":"engine/compat/interposers/file-export.js","import":"/engine/compat/interposers/file-export.js","sourceHash":"2ea761a2705a5efb2fac2a10376b35a37b48edf150097f270799a2b46ae4102b","subsystem":"engine","recordType":"api-module","id":"module:engine/compat/interposers/file-export.js","title":"compat/interposers/file-export","summary":"interposers/file-export.js — safe blob/download handling for a guest realm. Guests export files via `URL.createObjectURL(blob)` + an `<a download>` click (or `showSaveFilePicker`). Two problems: created object URLs leak if never revoked, and downloads are invisible to the OS. This shim wraps `URL` so every `createObjectURL` is tracked (and revoked on realm destroy) and each export is counted into the app's metrics — without blocking the legitimate download.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/compat/interposers/file-export.md","moduleTitle":"compat/interposers/file-export","source":"engine/compat/interposers/file-export.js","import":"/engine/compat/interposers/file-export.js","sourceHash":"2ea761a2705a5efb2fac2a10376b35a37b48edf150097f270799a2b46ae4102b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/interposers/file-export.js#0000:makeUrlShim","exportIndex":0,"name":"makeUrlShim","kind":"function","signature":"makeUrlShim(realm, { metrics, onExport } = {})","summary":"interposers/file-export.js — safe blob/download handling for a guest realm. Guests export files via `URL.createObjectURL(blob)` + an `<a download>` click (or `showSaveFilePicker`). Two problems: created object URLs leak if never revoked, and downloads are invisible to the OS. This shim wraps `URL` so every `createObjectURL` is tracked (and revoked on realm destroy) and each export is counted into the app's metrics — without blocking the legitimate download."}
{"schemaVersion":1,"modulePath":"engine/reference/compat/interposers/gpu.md","moduleTitle":"compat/interposers/gpu","source":"engine/compat/interposers/gpu.js","import":"/engine/compat/interposers/gpu.js","sourceHash":"5b254642ab7e1f06c6cfac748ece27c5ebbcb0e886ebf1f7551e2612d79dcb63","subsystem":"engine","recordType":"api-module","id":"module:engine/compat/interposers/gpu.js","title":"compat/interposers/gpu","summary":"interposers/gpu.js — wrap `navigator.gpu` for a guest realm. The guest keeps using the real WebGPU implementation, but through a shim that: • clamps `requiredLimits` to what the adapter actually supports (a very common crash cause when an app hard-codes limits from a beefier GPU), • drops unsupported `requiredFeatures` instead of throwing, • counts `queue.submit` calls into the app's metrics, • reports device-loss (so the recovery layer can react) without spamming on intentional `destroy()`. It deliberately does NOT share the kernel's device — each guest gets its own device so it cannot corrupt OS GPU state. Sharing/surface hand-off is Phase 6.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/compat/interposers/gpu.md","moduleTitle":"compat/interposers/gpu","source":"engine/compat/interposers/gpu.js","import":"/engine/compat/interposers/gpu.js","sourceHash":"5b254642ab7e1f06c6cfac748ece27c5ebbcb0e886ebf1f7551e2612d79dcb63","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/interposers/gpu.js#0000:makeGpuShim","exportIndex":0,"name":"makeGpuShim","kind":"function","signature":"makeGpuShim({ metrics, onError } = {})","summary":"interposers/gpu.js — wrap `navigator.gpu` for a guest realm. The guest keeps using the real WebGPU implementation, but through a shim that: • clamps `requiredLimits` to what the adapter actually supports (a very common crash cause when an app hard-codes limits from a beefier GPU), • drops unsupported `requiredFeatures` instead of throwing, • counts `queue.submit` calls into the app's metrics, • reports device-loss (so the recovery layer can react) without spamming on intentional `destroy()`. It deliberately does NOT share the kernel's device — each guest gets its own device so it cannot corrupt OS GPU state. Sharing/surface hand-off is Phase 6."}
{"schemaVersion":1,"modulePath":"engine/reference/compat/interposers/index.md","moduleTitle":"compat/interposers/index","source":"engine/compat/interposers/index.js","import":"/engine/compat/interposers/index.js","sourceHash":"faf80bed633d2ed7b8ecf644a18f35522720c039adfd9414f3291602b887ca82","subsystem":"engine","recordType":"api-module","id":"module:engine/compat/interposers/index.js","title":"compat/interposers/index","summary":"interposers/index.js — install per-realm API shims for a guest app. Guests run in the shared window, so we cannot replace globals process-wide without breaking the OS. Instead we: 1. build a per-realm `context` of shims (gpu/raf/storage/fetch), 2. register it at `globalThis.__engineRealms.get(appId)`, 3. return a code `transform` that prepends a tiny prelude to each guest script which LEXICALLY SHADOWS the relevant globals with the shims. Module scripts: the prelude's top-level `const`s shadow the globals within the module's own scope. Classic scripts: wrapped in an IIFE (only when there's a single classic script, to avoid breaking cross-script global sharing). Which globals are shadowed is driven by `profile.uses`, minimising both collision risk and overhead.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/compat/interposers/index.md","moduleTitle":"compat/interposers/index","source":"engine/compat/interposers/index.js","import":"/engine/compat/interposers/index.js","sourceHash":"faf80bed633d2ed7b8ecf644a18f35522720c039adfd9414f3291602b887ca82","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/interposers/index.js#0000:installInterposers","exportIndex":0,"name":"installInterposers","kind":"function","signature":"installInterposers({ realm, profile, ctx, app } = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/compat/interposers/navigation.md","moduleTitle":"compat/interposers/navigation","source":"engine/compat/interposers/navigation.js","import":"/engine/compat/interposers/navigation.js","sourceHash":"bf074fc0524d3cebcd874c6fb17dc033eb33be4fd1b999d83eb605f21628b430","subsystem":"engine","recordType":"api-module","id":"module:engine/compat/interposers/navigation.js","title":"compat/interposers/navigation","summary":"navigation.js — keep a guest's \"open a new window\" / external navigation INSIDE the OS instead of spawning a real browser popup or navigating the whole OS page away. Guests run in the shared OS document (light DOM, not an iframe), so an unhandled `<a href>` click or `window.open()` would either pop a real browser window or unload the entire OS. We intercept both and hand the URL to the host via `onOpenWindow(url, info)` — the host decides where it goes (default: the in-OS Browser app). Two mechanisms: 1. DOM click-capture on the realm container — anchors that open a new window (target=_blank/_new) or point off-origin are cancelled and routed. Always installed (cheap, prevents the OS-unload footgun). 2. Lexically-shadowed `window.open` / `open()` / `location` — routes JS-driven popups and redirects. Only bound when the probe detected such usage (`profile.uses.windowOpen`), to minimise shadowing blast radius.","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/compat/interposers/navigation.md","moduleTitle":"compat/interposers/navigation","source":"engine/compat/interposers/navigation.js","import":"/engine/compat/interposers/navigation.js","sourceHash":"bf074fc0524d3cebcd874c6fb17dc033eb33be4fd1b999d83eb605f21628b430","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/interposers/navigation.js#0000:makeOpenShim","exportIndex":0,"name":"makeOpenShim","kind":"function","signature":"makeOpenShim({ onOpenWindow, onError } = {})","summary":"Replacement for window.open / open(): route the URL, return a harmless stub."}
{"schemaVersion":1,"modulePath":"engine/reference/compat/interposers/navigation.md","moduleTitle":"compat/interposers/navigation","source":"engine/compat/interposers/navigation.js","import":"/engine/compat/interposers/navigation.js","sourceHash":"bf074fc0524d3cebcd874c6fb17dc033eb33be4fd1b999d83eb605f21628b430","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/interposers/navigation.js#0001:makeWindowProxy","exportIndex":1,"name":"makeWindowProxy","kind":"function","signature":"makeWindowProxy(openShim, { onOpenWindow, onError } = {})","summary":"Proxy over the real window that only overrides `open` and `location` writes."}
{"schemaVersion":1,"modulePath":"engine/reference/compat/interposers/navigation.md","moduleTitle":"compat/interposers/navigation","source":"engine/compat/interposers/navigation.js","import":"/engine/compat/interposers/navigation.js","sourceHash":"bf074fc0524d3cebcd874c6fb17dc033eb33be4fd1b999d83eb605f21628b430","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/interposers/navigation.js#0002:makeLocationProxy","exportIndex":2,"name":"makeLocationProxy","kind":"function","signature":"makeLocationProxy({ onOpenWindow, onError } = {})","summary":"Proxy over location: reads pass through; href=/assign/replace are routed."}
{"schemaVersion":1,"modulePath":"engine/reference/compat/interposers/navigation.md","moduleTitle":"compat/interposers/navigation","source":"engine/compat/interposers/navigation.js","import":"/engine/compat/interposers/navigation.js","sourceHash":"bf074fc0524d3cebcd874c6fb17dc033eb33be4fd1b999d83eb605f21628b430","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/interposers/navigation.js#0003:installNavCapture","exportIndex":3,"name":"installNavCapture","kind":"function","signature":"installNavCapture(realm, { onOpenWindow, onError } = {})","summary":"Capture-phase click handler on the realm container. Cancels + routes anchor navigations that would open a new window or leave the OS origin. Returns a cleanup function (also registered on the realm)."}
{"schemaVersion":1,"modulePath":"engine/reference/compat/interposers/raf.md","moduleTitle":"compat/interposers/raf","source":"engine/compat/interposers/raf.js","import":"/engine/compat/interposers/raf.js","sourceHash":"da4600bd5f756bafbdf8dfa83f9c09d876e31e315dce785d12d1c4b2d3cd7056","subsystem":"engine","recordType":"api-module","id":"module:engine/compat/interposers/raf.js","title":"compat/interposers/raf","summary":"interposers/raf.js — managed requestAnimationFrame for a guest realm. Guest render loops are the #1 resource leak when an app's window closes: the raw `requestAnimationFrame` loop keeps running forever. This shim tracks every pending frame and cancels them all on `realm.destroy()`, so closing a guest window actually stops its GPU work. Errors thrown inside a frame callback are reported instead of silently killing the loop's owner.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/compat/interposers/raf.md","moduleTitle":"compat/interposers/raf","source":"engine/compat/interposers/raf.js","import":"/engine/compat/interposers/raf.js","sourceHash":"da4600bd5f756bafbdf8dfa83f9c09d876e31e315dce785d12d1c4b2d3cd7056","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/interposers/raf.js#0000:makeRafShim","exportIndex":0,"name":"makeRafShim","kind":"function","signature":"makeRafShim(realm)","summary":"interposers/raf.js — managed requestAnimationFrame for a guest realm. Guest render loops are the #1 resource leak when an app's window closes: the raw `requestAnimationFrame` loop keeps running forever. This shim tracks every pending frame and cancels them all on `realm.destroy()`, so closing a guest window actually stops its GPU work. Errors thrown inside a frame callback are reported instead of silently killing the loop's owner."}
{"schemaVersion":1,"modulePath":"engine/reference/compat/interposers/storage.md","moduleTitle":"compat/interposers/storage","source":"engine/compat/interposers/storage.js","import":"/engine/compat/interposers/storage.js","sourceHash":"9c9ea4a132b652585799460a4b72d7fec8b650f3eca3dadf2394ff229ff1f6f7","subsystem":"engine","recordType":"api-module","id":"module:engine/compat/interposers/storage.js","title":"compat/interposers/storage","summary":"interposers/storage.js — per-app namespaced localStorage / sessionStorage. Guests freely use `localStorage.foo = x` and `localStorage.getItem(...)`. Left unscoped they would collide with each other and with the OS. This shim transparently prefixes every key with `compat:<appId>:` and supports both the Storage method API and direct property access (via a Proxy). Falls back to an in-memory store when Web Storage is unavailable.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/compat/interposers/storage.md","moduleTitle":"compat/interposers/storage","source":"engine/compat/interposers/storage.js","import":"/engine/compat/interposers/storage.js","sourceHash":"9c9ea4a132b652585799460a4b72d7fec8b650f3eca3dadf2394ff229ff1f6f7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/interposers/storage.js#0000:makeStorageShim","exportIndex":0,"name":"makeStorageShim","kind":"function","signature":"makeStorageShim(appId, backing)","summary":"interposers/storage.js — per-app namespaced localStorage / sessionStorage. Guests freely use `localStorage.foo = x` and `localStorage.getItem(...)`. Left unscoped they would collide with each other and with the OS. This shim transparently prefixes every key with `compat:<appId>:` and supports both the Storage method API and direct property access (via a Proxy). Falls back to an in-memory store when Web Storage is unavailable."}
{"schemaVersion":1,"modulePath":"engine/reference/compat/interposers/worker.md","moduleTitle":"compat/interposers/worker","source":"engine/compat/interposers/worker.js","import":"/engine/compat/interposers/worker.js","sourceHash":"3f1f3ef4f83374f126b7356605a6ca16047d5e0d376f04bc756137dcd363d7f4","subsystem":"engine","recordType":"api-module","id":"module:engine/compat/interposers/worker.js","title":"compat/interposers/worker","summary":"interposers/worker.js — resolve guest Worker(url) references to bundled blobs. A guest's `new Worker('worker.js')` references a path relative to its original document, which won't resolve once the guest runs from blob URLs in the OS realm. This shim rewrites a relative/bundled worker URL to its pre-linked module blob (imports already rewritten + shims applied), or a blob of the bundled file. Remote/absolute URLs pass through unchanged. Returns a Worker subclass, or null if Worker is unavailable.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/compat/interposers/worker.md","moduleTitle":"compat/interposers/worker","source":"engine/compat/interposers/worker.js","import":"/engine/compat/interposers/worker.js","sourceHash":"3f1f3ef4f83374f126b7356605a6ca16047d5e0d376f04bc756137dcd363d7f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/interposers/worker.js#0000:makeWorkerShim","exportIndex":0,"name":"makeWorkerShim","kind":"function","signature":"makeWorkerShim(realm, RealWorker = (typeof Worker !== 'undefined' ? Worker : null)","summary":"interposers/worker.js — resolve guest Worker(url) references to bundled blobs. A guest's `new Worker('worker.js')` references a path relative to its original document, which won't resolve once the guest runs from blob URLs in the OS realm. This shim rewrites a relative/bundled worker URL to its pre-linked module blob (imports already rewritten + shims applied), or a blob of the bundled file. Remote/absolute URLs pass through unchanged. Returns a Worker subclass, or null if Worker is unavailable."}
{"schemaVersion":1,"modulePath":"engine/reference/compat/module-linker.md","moduleTitle":"compat/module-linker","source":"engine/compat/module-linker.js","import":"/engine/compat/module-linker.js","sourceHash":"2f754c26d47d2b3487d332881a529533aaa54cba76c84d74f501b472f19d7ce9","subsystem":"engine","recordType":"api-module","id":"module:engine/compat/module-linker.js","title":"compat/module-linker","summary":"module-linker.js — turn an in-memory file map into runnable blob-URL modules. Loading an ES module from a `blob:` URL loses its path context, so relative imports (`import './a.js'`) and `import.meta.url`-relative resolution break (the blob has no directory). Following the es-module-shims technique, we rewrite every relative / bundled import specifier in each JS module to the `blob:` URL of its resolved target (created in dependency order), optionally apply a code transform (the interposer prelude / shader healing), and return a `path → blobURL` map plus a resolver for inline-module imports. Bare specifiers (`import 'three'`) may be resolved by the caller-provided import resolver (import map / CDN fallback). Absolute/remote URLs are left untouched.","exportCount":8}
{"schemaVersion":1,"modulePath":"engine/reference/compat/module-linker.md","moduleTitle":"compat/module-linker","source":"engine/compat/module-linker.js","import":"/engine/compat/module-linker.js","sourceHash":"2f754c26d47d2b3487d332881a529533aaa54cba76c84d74f501b472f19d7ce9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/module-linker.js#0000:buildModuleBlobs","exportIndex":0,"name":"buildModuleBlobs","kind":"function","signature":"buildModuleBlobs({ files, transform = null, onWarn = null, resolveBare = null, resolveExternal = null, urlKind = 'blob' } = {})","summary":"Build blob-URL modules for every bundled JS file, with relative imports rewritten to reference each other's blob URLs."}
{"schemaVersion":1,"modulePath":"engine/reference/compat/module-linker.md","moduleTitle":"compat/module-linker","source":"engine/compat/module-linker.js","import":"/engine/compat/module-linker.js","sourceHash":"2f754c26d47d2b3487d332881a529533aaa54cba76c84d74f501b472f19d7ce9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/module-linker.js#0001:buildImportResolver","exportIndex":1,"name":"buildImportResolver","kind":"function","signature":"buildImportResolver(profile)","summary":"Build a resolver for BARE import specifiers (`three`, `@scope/pkg`, subpaths) from a compat profile. Resolution order: 1. exact match in `profile.imports.map` 2. longest trailing-slash prefix match (`three/` → base) in the map 3. CDN fallback `<cdn><spec>` when `profile.healing.cdnImports !== false` (default CDN https://esm.sh/, overridable via `profile.imports.cdn`) Returns null when nothing matches (the import is left unresolved)."}
{"schemaVersion":1,"modulePath":"engine/reference/compat/module-linker.md","moduleTitle":"compat/module-linker","source":"engine/compat/module-linker.js","import":"/engine/compat/module-linker.js","sourceHash":"2f754c26d47d2b3487d332881a529533aaa54cba76c84d74f501b472f19d7ce9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/module-linker.js#0002:isBareSpecifier","exportIndex":2,"name":"isBareSpecifier","kind":"function","signature":"isBareSpecifier(spec)","summary":"A bare specifier: not relative (./ ../ /), not an absolute/remote URL."}
{"schemaVersion":1,"modulePath":"engine/reference/compat/module-linker.md","moduleTitle":"compat/module-linker","source":"engine/compat/module-linker.js","import":"/engine/compat/module-linker.js","sourceHash":"2f754c26d47d2b3487d332881a529533aaa54cba76c84d74f501b472f19d7ce9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/module-linker.js#0003:isRelativeSpecifier","exportIndex":3,"name":"isRelativeSpecifier","kind":"function","signature":"isRelativeSpecifier(spec)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/compat/module-linker.md","moduleTitle":"compat/module-linker","source":"engine/compat/module-linker.js","import":"/engine/compat/module-linker.js","sourceHash":"2f754c26d47d2b3487d332881a529533aaa54cba76c84d74f501b472f19d7ce9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/module-linker.js#0004:isPackageSpecifier","exportIndex":4,"name":"isPackageSpecifier","kind":"function","signature":"isPackageSpecifier(spec)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/compat/module-linker.md","moduleTitle":"compat/module-linker","source":"engine/compat/module-linker.js","import":"/engine/compat/module-linker.js","sourceHash":"2f754c26d47d2b3487d332881a529533aaa54cba76c84d74f501b472f19d7ce9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/module-linker.js#0005:discoverSpecs","exportIndex":5,"name":"discoverSpecs","kind":"function","signature":"discoverSpecs(code)","summary":"Collect every (string-literal) import specifier from module code."}
{"schemaVersion":1,"modulePath":"engine/reference/compat/module-linker.md","moduleTitle":"compat/module-linker","source":"engine/compat/module-linker.js","import":"/engine/compat/module-linker.js","sourceHash":"2f754c26d47d2b3487d332881a529533aaa54cba76c84d74f501b472f19d7ce9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/module-linker.js#0006:rewriteSpecs","exportIndex":6,"name":"rewriteSpecs","kind":"function","signature":"rewriteSpecs(code, urlFor)","summary":"Replace import specifiers using `urlFor(spec)`. When it returns a falsy value the original specifier is kept (bare/remote/cyclic)."}
{"schemaVersion":1,"modulePath":"engine/reference/compat/module-linker.md","moduleTitle":"compat/module-linker","source":"engine/compat/module-linker.js","import":"/engine/compat/module-linker.js","sourceHash":"2f754c26d47d2b3487d332881a529533aaa54cba76c84d74f501b472f19d7ce9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/module-linker.js#0007:resolveSpec","exportIndex":7,"name":"resolveSpec","kind":"function","signature":"resolveSpec(spec, importerRel, files)","summary":"Resolve an import specifier to a bundled file path, or null when it is bare (no leading ./ ../ or /) or absolute/remote. Tries the literal path, then `.js`/`.mjs`, then `/index.js`."}
{"schemaVersion":1,"modulePath":"engine/reference/compat/probe-scanner.md","moduleTitle":"compat/probe-scanner","source":"engine/compat/probe-scanner.js","import":"/engine/compat/probe-scanner.js","sourceHash":"df6195017e8b826e0b546145ded842d28b11007a7625f33f82530dc577e943d7","subsystem":"engine","recordType":"api-module","id":"module:engine/compat/probe-scanner.js","title":"compat/probe-scanner","summary":"probe-scanner.js — statically detect what a guest app uses. Combines the parsed DOM model with a regex scan of all script source to infer the `uses`, `dom`, and `gpu` sections of a compatibility profile. This is a heuristic pass (static, no execution) — the healing + interposition layers refine it at runtime and the profile cache promotes it once it boots.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/compat/probe-scanner.md","moduleTitle":"compat/probe-scanner","source":"engine/compat/probe-scanner.js","import":"/engine/compat/probe-scanner.js","sourceHash":"df6195017e8b826e0b546145ded842d28b11007a7625f33f82530dc577e943d7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/probe-scanner.js#0000:scanSource","exportIndex":0,"name":"scanSource","kind":"function","signature":"scanSource(model, files = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/compat/profile-builder.md","moduleTitle":"compat/profile-builder","source":"engine/compat/profile-builder.js","import":"/engine/compat/profile-builder.js","sourceHash":"949a73707c4b3c1503a3e4d070431f69b10a23fd52da48d8fa6c8f309a69ed45","subsystem":"engine","recordType":"api-module","id":"module:engine/compat/profile-builder.js","title":"compat/profile-builder","summary":"Build a full profile from a static scan result.","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/compat/profile-builder.md","moduleTitle":"compat/profile-builder","source":"engine/compat/profile-builder.js","import":"/engine/compat/profile-builder.js","sourceHash":"949a73707c4b3c1503a3e4d070431f69b10a23fd52da48d8fa6c8f309a69ed45","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/profile-builder.js#0000:buildProfile","exportIndex":0,"name":"buildProfile","kind":"function","signature":"buildProfile(id, scan, opts = {})","summary":"Build a full profile from a static scan result."}
{"schemaVersion":1,"modulePath":"engine/reference/compat/profile-builder.md","moduleTitle":"compat/profile-builder","source":"engine/compat/profile-builder.js","import":"/engine/compat/profile-builder.js","sourceHash":"949a73707c4b3c1503a3e4d070431f69b10a23fd52da48d8fa6c8f309a69ed45","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/profile-builder.js#0001:mergeProfiles","exportIndex":1,"name":"mergeProfiles","kind":"function","signature":"mergeProfiles(saved, fresh)","summary":"Merge a saved profile with a freshly scanned one. Saved healing/permissions decisions win (they were promoted as working); newly detected requirements and `uses`/`gpu` flags are unioned in."}
{"schemaVersion":1,"modulePath":"engine/reference/compat/profile-builder.md","moduleTitle":"compat/profile-builder","source":"engine/compat/profile-builder.js","import":"/engine/compat/profile-builder.js","sourceHash":"949a73707c4b3c1503a3e4d070431f69b10a23fd52da48d8fa6c8f309a69ed45","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/profile-builder.js#0002:profilePermissionList","exportIndex":2,"name":"profilePermissionList","kind":"function","signature":"profilePermissionList(profile)","summary":"Map a profile to a kernel/AppRegistry permission list (best-effort)."}
{"schemaVersion":1,"modulePath":"engine/reference/compat/profile-builder.md","moduleTitle":"compat/profile-builder","source":"engine/compat/profile-builder.js","import":"/engine/compat/profile-builder.js","sourceHash":"949a73707c4b3c1503a3e4d070431f69b10a23fd52da48d8fa6c8f309a69ed45","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/profile-builder.js#0003:sha256Hex","exportIndex":3,"name":"sha256Hex","kind":"function","signature":"async sha256Hex(str)","summary":"SHA-256 hex of a string (used for source/version hashing)."}
{"schemaVersion":1,"modulePath":"engine/reference/compat/profile-builder.md","moduleTitle":"compat/profile-builder","source":"engine/compat/profile-builder.js","import":"/engine/compat/profile-builder.js","sourceHash":"949a73707c4b3c1503a3e4d070431f69b10a23fd52da48d8fa6c8f309a69ed45","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/profile-builder.js#0004:PROFILE_FORMAT","exportIndex":4,"name":"PROFILE_FORMAT","kind":"constant","signature":"PROFILE_FORMAT","summary":"profile-builder.js — assemble & merge compatibility profiles. A profile is the durable description of what a guest app needs and how to heal it. The static scanner produces a fresh profile; the cache may hold a saved one from a previous version. `mergeProfiles` reuses known-good healing decisions and layers in newly detected requirements."}
{"schemaVersion":1,"modulePath":"engine/reference/compat/profile-cache.md","moduleTitle":"compat/profile-cache","source":"engine/compat/profile-cache.js","import":"/engine/compat/profile-cache.js","sourceHash":"5eff703e5cac636ee24742b0e8f076dc3ba81e51900585c1c3426308a45d9ba5","subsystem":"engine","recordType":"api-module","id":"module:engine/compat/profile-cache.js","title":"compat/profile-cache","summary":"profile-cache.js — persist & version compatibility profiles. Storage layout (via the kernel StorageManager facade): /os/compat/profiles/{id}.json        ← active (stable or testing) profile /os/compat/index.json                ← { [id]: { knownVersions: [...] } } /os/compat/snapshots/{id}/{ts}.json  ← runtime snapshots (Phase 7) If no storage facade is provided (or a write fails), it degrades to an in-memory cache so the bootloader still works in a bare harness/test.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/compat/profile-cache.md","moduleTitle":"compat/profile-cache","source":"engine/compat/profile-cache.js","import":"/engine/compat/profile-cache.js","sourceHash":"5eff703e5cac636ee24742b0e8f076dc3ba81e51900585c1c3426308a45d9ba5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/profile-cache.js#0000:ProfileCache","exportIndex":0,"name":"ProfileCache","kind":"class","signature":"class ProfileCache","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/compat/runtime-realm.md","moduleTitle":"compat/runtime-realm","source":"engine/compat/runtime-realm.js","import":"/engine/compat/runtime-realm.js","sourceHash":"a763db46bdc35d97cd2eb4a2979e39953da34326bbbda03cbb13d1f43398fb6d","subsystem":"engine","recordType":"api-module","id":"module:engine/compat/runtime-realm.js","title":"compat/runtime-realm","summary":"runtime-realm.js — a controlled, scoped execution root for a guest app. Trusted same-origin guests (Mode A/B) reference elements via `document.*`, so the realm is a SCOPED LIGHT-DOM container (`<div data-engine-app=\"id\">`) rather than a shadow root — `getElementById('c')` must still resolve. Isolation comes from: • CSS scoping (css-healer) so guest styles can't touch the OS shell, • API interposition (Phase 5) so guest browser calls route through the engine, • DOM healing so required elements exist before scripts run. Scripts parsed by DOMParser are inert; the realm re-executes them in document order: classic inline → fresh <script>; module inline → blob import(); src → resolved against the package file map (blob) or left as a URL for the browser.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/compat/runtime-realm.md","moduleTitle":"compat/runtime-realm","source":"engine/compat/runtime-realm.js","import":"/engine/compat/runtime-realm.js","sourceHash":"a763db46bdc35d97cd2eb4a2979e39953da34326bbbda03cbb13d1f43398fb6d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/runtime-realm.js#0000:RuntimeRealm","exportIndex":0,"name":"RuntimeRealm","kind":"class","signature":"class RuntimeRealm","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/compat/schema-registry.md","moduleTitle":"compat/schema-registry","source":"engine/compat/schema-registry.js","import":"/engine/compat/schema-registry.js","sourceHash":"948a12f4fa12065f545d794dfc5f57722e975a228fabbd66dbe4f103f3540b2a","subsystem":"engine","recordType":"api-module","id":"module:engine/compat/schema-registry.js","title":"compat/schema-registry","summary":"schema-registry.js — validate a compatibility profile before boot. Self-contained: a tiny JSON-Schema-subset checker (type / required / enum / properties / items / additionalProperties) plus `validateProfile()` which also applies cross-field consistency rules (e.g. GPU pipelines imply uses.webgpu). The bootloader calls this via `ctx.validate`; Package Studio can call `engine.compat.validateProfile(profile)` to preview problems before compiling.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/compat/schema-registry.md","moduleTitle":"compat/schema-registry","source":"engine/compat/schema-registry.js","import":"/engine/compat/schema-registry.js","sourceHash":"948a12f4fa12065f545d794dfc5f57722e975a228fabbd66dbe4f103f3540b2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/schema-registry.js#0000:CompatSchemaRegistry","exportIndex":0,"name":"CompatSchemaRegistry","kind":"class","signature":"class CompatSchemaRegistry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/compat/schema-registry.md","moduleTitle":"compat/schema-registry","source":"engine/compat/schema-registry.js","import":"/engine/compat/schema-registry.js","sourceHash":"948a12f4fa12065f545d794dfc5f57722e975a228fabbd66dbe4f103f3540b2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/schema-registry.js#0001:validateProfile","exportIndex":1,"name":"validateProfile","kind":"function","signature":"validateProfile(profile)","summary":"Validate a full compatibility profile: structural schema + consistency rules."}
{"schemaVersion":1,"modulePath":"engine/reference/compat/schema-registry.md","moduleTitle":"compat/schema-registry","source":"engine/compat/schema-registry.js","import":"/engine/compat/schema-registry.js","sourceHash":"948a12f4fa12065f545d794dfc5f57722e975a228fabbd66dbe4f103f3540b2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/schema-registry.js#0002:compatSchemas","exportIndex":2,"name":"compatSchemas","kind":"constant","signature":"compatSchemas","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/compat/schemas.md","moduleTitle":"compat/schemas","source":"engine/compat/schemas.js","import":"/engine/compat/schemas.js","sourceHash":"e59c4d39bf98f710dbf7342c8c48d5fefe84582d2414787fd1deed5d775f290d","subsystem":"engine","recordType":"api-module","id":"module:engine/compat/schemas.js","title":"compat/schemas","summary":"schemas.js — declarative schemas for the compatibility profile and its parts. Kept as plain JS descriptors (not .json) so the engine module is self-contained and needs no fetch. Validated by `schema-registry.js`'s tiny checker, which supports: type, required, enum, properties, items, additionalProperties.","exportCount":8}
{"schemaVersion":1,"modulePath":"engine/reference/compat/schemas.md","moduleTitle":"compat/schemas","source":"engine/compat/schemas.js","import":"/engine/compat/schemas.js","sourceHash":"e59c4d39bf98f710dbf7342c8c48d5fefe84582d2414787fd1deed5d775f290d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/schemas.js#0000:permissionsSchema","exportIndex":0,"name":"permissionsSchema","kind":"constant","signature":"permissionsSchema","summary":"schemas.js — declarative schemas for the compatibility profile and its parts. Kept as plain JS descriptors (not .json) so the engine module is self-contained and needs no fetch. Validated by `schema-registry.js`'s tiny checker, which supports: type, required, enum, properties, items, additionalProperties."}
{"schemaVersion":1,"modulePath":"engine/reference/compat/schemas.md","moduleTitle":"compat/schemas","source":"engine/compat/schemas.js","import":"/engine/compat/schemas.js","sourceHash":"e59c4d39bf98f710dbf7342c8c48d5fefe84582d2414787fd1deed5d775f290d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/schemas.js#0001:domSchema","exportIndex":1,"name":"domSchema","kind":"constant","signature":"domSchema","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/compat/schemas.md","moduleTitle":"compat/schemas","source":"engine/compat/schemas.js","import":"/engine/compat/schemas.js","sourceHash":"e59c4d39bf98f710dbf7342c8c48d5fefe84582d2414787fd1deed5d775f290d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/schemas.js#0002:gpuSchema","exportIndex":2,"name":"gpuSchema","kind":"constant","signature":"gpuSchema","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/compat/schemas.md","moduleTitle":"compat/schemas","source":"engine/compat/schemas.js","import":"/engine/compat/schemas.js","sourceHash":"e59c4d39bf98f710dbf7342c8c48d5fefe84582d2414787fd1deed5d775f290d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/schemas.js#0003:usesSchema","exportIndex":3,"name":"usesSchema","kind":"constant","signature":"usesSchema","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/compat/schemas.md","moduleTitle":"compat/schemas","source":"engine/compat/schemas.js","import":"/engine/compat/schemas.js","sourceHash":"e59c4d39bf98f710dbf7342c8c48d5fefe84582d2414787fd1deed5d775f290d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/schemas.js#0004:healingSchema","exportIndex":4,"name":"healingSchema","kind":"constant","signature":"healingSchema","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/compat/schemas.md","moduleTitle":"compat/schemas","source":"engine/compat/schemas.js","import":"/engine/compat/schemas.js","sourceHash":"e59c4d39bf98f710dbf7342c8c48d5fefe84582d2414787fd1deed5d775f290d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/schemas.js#0005:importsSchema","exportIndex":5,"name":"importsSchema","kind":"constant","signature":"importsSchema","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/compat/schemas.md","moduleTitle":"compat/schemas","source":"engine/compat/schemas.js","import":"/engine/compat/schemas.js","sourceHash":"e59c4d39bf98f710dbf7342c8c48d5fefe84582d2414787fd1deed5d775f290d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/schemas.js#0006:appProfileSchema","exportIndex":6,"name":"appProfileSchema","kind":"constant","signature":"appProfileSchema","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/compat/schemas.md","moduleTitle":"compat/schemas","source":"engine/compat/schemas.js","import":"/engine/compat/schemas.js","sourceHash":"e59c4d39bf98f710dbf7342c8c48d5fefe84582d2414787fd1deed5d775f290d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/schemas.js#0007:COMPAT_SCHEMAS","exportIndex":7,"name":"COMPAT_SCHEMAS","kind":"constant","signature":"COMPAT_SCHEMAS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/compat/source-loader.md","moduleTitle":"compat/source-loader","source":"engine/compat/source-loader.js","import":"/engine/compat/source-loader.js","sourceHash":"f0607014a91db6123b1b612873a8346dc38a4d312ae815681261b8c1e90f01b6","subsystem":"engine","recordType":"api-module","id":"module:engine/compat/source-loader.js","title":"compat/source-loader","summary":"source-loader.js — load a guest app's source from any supported origin. Supported `source` shapes: string                         → treated as raw HTML if it looks like HTML, else a URL { html }                       → raw HTML string { url, fetch? }                → remote fetch (CORS-aware; optional custom fetch) { file: File }                 → an imported File (uses .text()) { files: Map|object, entry }   → an in-memory file map (folder/zip), entry = HTML path { vfsPath, storage }           → read from the OS VFS via a StorageManager Returns: { html, files: Map<string,string|ArrayBuffer>, baseUrl, sourceType, sourceHash }","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/compat/source-loader.md","moduleTitle":"compat/source-loader","source":"engine/compat/source-loader.js","import":"/engine/compat/source-loader.js","sourceHash":"f0607014a91db6123b1b612873a8346dc38a4d312ae815681261b8c1e90f01b6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/source-loader.js#0000:loadSource","exportIndex":0,"name":"loadSource","kind":"function","signature":"async loadSource(source, ctx = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/compat/surface/engine-texture-surface.md","moduleTitle":"compat/surface/engine-texture-surface","source":"engine/compat/surface/engine-texture-surface.js","import":"/engine/compat/surface/engine-texture-surface.js","sourceHash":"2b7c64fefc76fcc46cd716875eda127320af572cebcf70d780abfe7a56f1fa0e","subsystem":"engine","recordType":"api-module","id":"module:engine/compat/surface/engine-texture-surface.js","title":"compat/surface/engine-texture-surface","summary":"surface/engine-texture-surface.js — present the guest's render into an engine texture instead of a DOM canvas (so it can be composited in the 3D/GPU UI). STUB: the full implementation redirects the guest's WebGPU context to an offscreen target on the shared kernel device, then imports the result as an engine texture each frame. That requires the canvas-interposer to hand the guest a wrapped context and the kernel compositor to accept an external texture. Until that lands, `supported` is false so `selectSurface` falls back to the webgpu-canvas surface — the profile can already request this mode, so flipping it on later needs no guest changes.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/compat/surface/engine-texture-surface.md","moduleTitle":"compat/surface/engine-texture-surface","source":"engine/compat/surface/engine-texture-surface.js","import":"/engine/compat/surface/engine-texture-surface.js","sourceHash":"2b7c64fefc76fcc46cd716875eda127320af572cebcf70d780abfe7a56f1fa0e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/surface/engine-texture-surface.js#0000:EngineTextureSurface","exportIndex":0,"name":"EngineTextureSurface","kind":"class","signature":"class EngineTextureSurface","summary":"surface/engine-texture-surface.js — present the guest's render into an engine texture instead of a DOM canvas (so it can be composited in the 3D/GPU UI). STUB: the full implementation redirects the guest's WebGPU context to an offscreen target on the shared kernel device, then imports the result as an engine texture each frame. That requires the canvas-interposer to hand the guest a wrapped context and the kernel compositor to accept an external texture. Until that lands, `supported` is false so `selectSurface` falls back to the webgpu-canvas surface — the profile can already request this mode, so flipping it on later needs no guest changes."}
{"schemaVersion":1,"modulePath":"engine/reference/compat/surface/offscreen-surface.md","moduleTitle":"compat/surface/offscreen-surface","source":"engine/compat/surface/offscreen-surface.js","import":"/engine/compat/surface/offscreen-surface.js","sourceHash":"b033283edcb252346296a95902387f7b7961d81e9dcadcf9877af78ae6c2bbc2","subsystem":"engine","recordType":"api-module","id":"module:engine/compat/surface/offscreen-surface.js","title":"compat/surface/offscreen-surface","summary":"surface/offscreen-surface.js — render the guest on an OffscreenCanvas. STUB: intended for guests that can run their render loop on a worker / detached canvas (transferControlToOffscreen) for isolation and throttling. Behind the same Surface interface; `supported` is false until the offscreen transfer + present path is implemented, so `selectSurface` falls back to webgpu-canvas.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/compat/surface/offscreen-surface.md","moduleTitle":"compat/surface/offscreen-surface","source":"engine/compat/surface/offscreen-surface.js","import":"/engine/compat/surface/offscreen-surface.js","sourceHash":"b033283edcb252346296a95902387f7b7961d81e9dcadcf9877af78ae6c2bbc2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/surface/offscreen-surface.js#0000:OffscreenSurface","exportIndex":0,"name":"OffscreenSurface","kind":"class","signature":"class OffscreenSurface","summary":"surface/offscreen-surface.js — render the guest on an OffscreenCanvas. STUB: intended for guests that can run their render loop on a worker / detached canvas (transferControlToOffscreen) for isolation and throttling. Behind the same Surface interface; `supported` is false until the offscreen transfer + present path is implemented, so `selectSurface` falls back to webgpu-canvas."}
{"schemaVersion":1,"modulePath":"engine/reference/compat/surface/surface-manager.md","moduleTitle":"compat/surface/surface-manager","source":"engine/compat/surface/surface-manager.js","import":"/engine/compat/surface/surface-manager.js","sourceHash":"258da4496199c9d90778ffa1aa46e95a5cd8e05e6040b006da9011db1e354627","subsystem":"engine","recordType":"api-module","id":"module:engine/compat/surface/surface-manager.js","title":"compat/surface/surface-manager","summary":"surface/surface-manager.js — pick the presentation surface for a guest. Selected by `profile.gpu.presentation`. `webgpu-canvas` (and `canvas-2d`) are fully implemented; `engine-texture` / `offscreen` are stubs that report `supported === false`, so we transparently fall back to the canvas surface — the profile can request them today and they'll light up when implemented, with no guest changes.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/compat/surface/surface-manager.md","moduleTitle":"compat/surface/surface-manager","source":"engine/compat/surface/surface-manager.js","import":"/engine/compat/surface/surface-manager.js","sourceHash":"258da4496199c9d90778ffa1aa46e95a5cd8e05e6040b006da9011db1e354627","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/surface/surface-manager.js#0000:selectSurface","exportIndex":0,"name":"selectSurface","kind":"function","signature":"selectSurface(profile, deps = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/compat/surface/webgpu-canvas-surface.md","moduleTitle":"compat/surface/webgpu-canvas-surface","source":"engine/compat/surface/webgpu-canvas-surface.js","import":"/engine/compat/surface/webgpu-canvas-surface.js","sourceHash":"1a22c36d64494dfb9574d8220bd1254ea5bcb323138ebaa09a68394fcce5237d","subsystem":"engine","recordType":"api-module","id":"module:engine/compat/surface/webgpu-canvas-surface.js","title":"compat/surface/webgpu-canvas-surface","summary":"surface/webgpu-canvas-surface.js — default presentation: the guest's own <canvas> inside the realm container. For trusted same-origin guests this is mostly pass-through (the app configures its own WebGPU canvas context). The surface's job is to LOCATE the primary canvas and, when `profile.healing.autoCanvasSize` is enabled, keep its backing store sized to the container with a clamped device-pixel-ratio — fixing the common \"canvas stuck at 300×150 / wrong DPR\" class of bugs without fighting an app that manages its own sizing.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/compat/surface/webgpu-canvas-surface.md","moduleTitle":"compat/surface/webgpu-canvas-surface","source":"engine/compat/surface/webgpu-canvas-surface.js","import":"/engine/compat/surface/webgpu-canvas-surface.js","sourceHash":"1a22c36d64494dfb9574d8220bd1254ea5bcb323138ebaa09a68394fcce5237d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/compat/surface/webgpu-canvas-surface.js#0000:WebgpuCanvasSurface","exportIndex":0,"name":"WebgpuCanvasSurface","kind":"class","signature":"class WebgpuCanvasSurface","summary":"surface/webgpu-canvas-surface.js — default presentation: the guest's own <canvas> inside the realm container. For trusted same-origin guests this is mostly pass-through (the app configures its own WebGPU canvas context). The surface's job is to LOCATE the primary canvas and, when `profile.healing.autoCanvasSize` is enabled, keep its backing store sized to the container with a clamped device-pixel-ratio — fixing the common \"canvas stuck at 300×150 / wrong DPR\" class of bugs without fighting an app that manages its own sizing."}
{"schemaVersion":1,"modulePath":"engine/reference/config/EngineConfig.md","moduleTitle":"config/EngineConfig","source":"engine/config/EngineConfig.js","import":"/engine/config/EngineConfig.js","sourceHash":"8d12b8ccab81fcb0932df1e637d18c754a0f34d02a141ecbf75f9e01a8e68d77","subsystem":"engine","recordType":"api-module","id":"module:engine/config/EngineConfig.js","title":"config/EngineConfig","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/config/EngineConfig.md","moduleTitle":"config/EngineConfig","source":"engine/config/EngineConfig.js","import":"/engine/config/EngineConfig.js","sourceHash":"8d12b8ccab81fcb0932df1e637d18c754a0f34d02a141ecbf75f9e01a8e68d77","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/config/EngineConfig.js#0000:parseSimpleYaml","exportIndex":0,"name":"parseSimpleYaml","kind":"function","signature":"parseSimpleYaml(text)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/config/EngineConfig.md","moduleTitle":"config/EngineConfig","source":"engine/config/EngineConfig.js","import":"/engine/config/EngineConfig.js","sourceHash":"8d12b8ccab81fcb0932df1e637d18c754a0f34d02a141ecbf75f9e01a8e68d77","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/config/EngineConfig.js#0001:loadEngineConfig","exportIndex":1,"name":"loadEngineConfig","kind":"function","signature":"async loadEngineConfig(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/config/EngineDefaultConfig.md","moduleTitle":"config/EngineDefaultConfig","source":"engine/config/EngineDefaultConfig.js","import":"/engine/config/EngineDefaultConfig.js","sourceHash":"705b6416e50e3f7af2135c55e0d762126fd47a432bbc405ac034d72e4fcdd1c4","subsystem":"engine","recordType":"api-module","id":"module:engine/config/EngineDefaultConfig.js","title":"config/EngineDefaultConfig","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/config/EngineDefaultConfig.md","moduleTitle":"config/EngineDefaultConfig","source":"engine/config/EngineDefaultConfig.js","import":"/engine/config/EngineDefaultConfig.js","sourceHash":"705b6416e50e3f7af2135c55e0d762126fd47a432bbc405ac034d72e4fcdd1c4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/config/EngineDefaultConfig.js#0000:DefaultEngineConfig","exportIndex":0,"name":"DefaultEngineConfig","kind":"constant","signature":"DefaultEngineConfig","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/config/EngineState.md","moduleTitle":"config/EngineState","source":"engine/config/EngineState.js","import":"/engine/config/EngineState.js","sourceHash":"8c82c4208202f1efb850b5e170cc54788e7a6e4997e61c78da79ea48dffb869d","subsystem":"engine","recordType":"api-module","id":"module:engine/config/EngineState.js","title":"config/EngineState","summary":"Create GPU state object","exportCount":18}
{"schemaVersion":1,"modulePath":"engine/reference/config/EngineState.md","moduleTitle":"config/EngineState","source":"engine/config/EngineState.js","import":"/engine/config/EngineState.js","sourceHash":"8c82c4208202f1efb850b5e170cc54788e7a6e4997e61c78da79ea48dffb869d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/config/EngineState.js#0000:createGpuState","exportIndex":0,"name":"createGpuState","kind":"function","signature":"createGpuState()","summary":"Create GPU state object"}
{"schemaVersion":1,"modulePath":"engine/reference/config/EngineState.md","moduleTitle":"config/EngineState","source":"engine/config/EngineState.js","import":"/engine/config/EngineState.js","sourceHash":"8c82c4208202f1efb850b5e170cc54788e7a6e4997e61c78da79ea48dffb869d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/config/EngineState.js#0001:createWaterPassState","exportIndex":1,"name":"createWaterPassState","kind":"function","signature":"createWaterPassState()","summary":"Create water pass state object Used for screen-space fluid/water/metaball rendering"}
{"schemaVersion":1,"modulePath":"engine/reference/config/EngineState.md","moduleTitle":"config/EngineState","source":"engine/config/EngineState.js","import":"/engine/config/EngineState.js","sourceHash":"8c82c4208202f1efb850b5e170cc54788e7a6e4997e61c78da79ea48dffb869d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/config/EngineState.js#0002:createConfigState","exportIndex":2,"name":"createConfigState","kind":"function","signature":"createConfigState(overrides = {})","summary":"Create scene configuration state (merge with engine.cfg overrides)"}
{"schemaVersion":1,"modulePath":"engine/reference/config/EngineState.md","moduleTitle":"config/EngineState","source":"engine/config/EngineState.js","import":"/engine/config/EngineState.js","sourceHash":"8c82c4208202f1efb850b5e170cc54788e7a6e4997e61c78da79ea48dffb869d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/config/EngineState.js#0003:createPhysicsState","exportIndex":3,"name":"createPhysicsState","kind":"function","signature":"createPhysicsState(overrides = {})","summary":"Create physics configuration state"}
{"schemaVersion":1,"modulePath":"engine/reference/config/EngineState.md","moduleTitle":"config/EngineState","source":"engine/config/EngineState.js","import":"/engine/config/EngineState.js","sourceHash":"8c82c4208202f1efb850b5e170cc54788e7a6e4997e61c78da79ea48dffb869d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/config/EngineState.js#0004:createEcsState","exportIndex":4,"name":"createEcsState","kind":"function","signature":"createEcsState()","summary":"Create ECS state object"}
{"schemaVersion":1,"modulePath":"engine/reference/config/EngineState.md","moduleTitle":"config/EngineState","source":"engine/config/EngineState.js","import":"/engine/config/EngineState.js","sourceHash":"8c82c4208202f1efb850b5e170cc54788e7a6e4997e61c78da79ea48dffb869d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/config/EngineState.js#0005:createSpawnState","exportIndex":5,"name":"createSpawnState","kind":"function","signature":"createSpawnState()","summary":"Create spawn/ghost state object"}
{"schemaVersion":1,"modulePath":"engine/reference/config/EngineState.md","moduleTitle":"config/EngineState","source":"engine/config/EngineState.js","import":"/engine/config/EngineState.js","sourceHash":"8c82c4208202f1efb850b5e170cc54788e7a6e4997e61c78da79ea48dffb869d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/config/EngineState.js#0006:createParticlesState","exportIndex":6,"name":"createParticlesState","kind":"function","signature":"createParticlesState()","summary":"Create particle system state object"}
{"schemaVersion":1,"modulePath":"engine/reference/config/EngineState.md","moduleTitle":"config/EngineState","source":"engine/config/EngineState.js","import":"/engine/config/EngineState.js","sourceHash":"8c82c4208202f1efb850b5e170cc54788e7a6e4997e61c78da79ea48dffb869d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/config/EngineState.js#0007:createSmokeState","exportIndex":7,"name":"createSmokeState","kind":"function","signature":"createSmokeState()","summary":"Create volumetric smoke state object"}
{"schemaVersion":1,"modulePath":"engine/reference/config/EngineState.md","moduleTitle":"config/EngineState","source":"engine/config/EngineState.js","import":"/engine/config/EngineState.js","sourceHash":"8c82c4208202f1efb850b5e170cc54788e7a6e4997e61c78da79ea48dffb869d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/config/EngineState.js#0008:createRenderState","exportIndex":8,"name":"createRenderState","kind":"function","signature":"createRenderState(overrides = {})","summary":"Create render settings state"}
{"schemaVersion":1,"modulePath":"engine/reference/config/EngineState.md","moduleTitle":"config/EngineState","source":"engine/config/EngineState.js","import":"/engine/config/EngineState.js","sourceHash":"8c82c4208202f1efb850b5e170cc54788e7a6e4997e61c78da79ea48dffb869d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/config/EngineState.js#0009:createCameraState","exportIndex":9,"name":"createCameraState","kind":"function","signature":"createCameraState(config = {})","summary":"Create camera state object"}
{"schemaVersion":1,"modulePath":"engine/reference/config/EngineState.md","moduleTitle":"config/EngineState","source":"engine/config/EngineState.js","import":"/engine/config/EngineState.js","sourceHash":"8c82c4208202f1efb850b5e170cc54788e7a6e4997e61c78da79ea48dffb869d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/config/EngineState.js#0010:createInputState","exportIndex":10,"name":"createInputState","kind":"function","signature":"createInputState()","summary":"Create input state object"}
{"schemaVersion":1,"modulePath":"engine/reference/config/EngineState.md","moduleTitle":"config/EngineState","source":"engine/config/EngineState.js","import":"/engine/config/EngineState.js","sourceHash":"8c82c4208202f1efb850b5e170cc54788e7a6e4997e61c78da79ea48dffb869d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/config/EngineState.js#0011:createAudioState","exportIndex":11,"name":"createAudioState","kind":"function","signature":"createAudioState()","summary":"Create audio state object"}
{"schemaVersion":1,"modulePath":"engine/reference/config/EngineState.md","moduleTitle":"config/EngineState","source":"engine/config/EngineState.js","import":"/engine/config/EngineState.js","sourceHash":"8c82c4208202f1efb850b5e170cc54788e7a6e4997e61c78da79ea48dffb869d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/config/EngineState.js#0012:createAllState","exportIndex":12,"name":"createAllState","kind":"function","signature":"createAllState(options = {})","summary":"Create all state objects at once."}
{"schemaVersion":1,"modulePath":"engine/reference/config/EngineState.md","moduleTitle":"config/EngineState","source":"engine/config/EngineState.js","import":"/engine/config/EngineState.js","sourceHash":"8c82c4208202f1efb850b5e170cc54788e7a6e4997e61c78da79ea48dffb869d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/config/EngineState.js#0013:applyEngineConfigToState","exportIndex":13,"name":"applyEngineConfigToState","kind":"function","signature":"applyEngineConfigToState(config, cfg)","summary":"Apply engine.cfg values to config state. Call this after loading engine.cfg."}
{"schemaVersion":1,"modulePath":"engine/reference/config/EngineState.md","moduleTitle":"config/EngineState","source":"engine/config/EngineState.js","import":"/engine/config/EngineState.js","sourceHash":"8c82c4208202f1efb850b5e170cc54788e7a6e4997e61c78da79ea48dffb869d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/config/EngineState.js#0014:applyEngineConfigToPhysics","exportIndex":14,"name":"applyEngineConfigToPhysics","kind":"function","signature":"applyEngineConfigToPhysics(physics, cfg)","summary":"Apply engine.cfg values to physics state."}
{"schemaVersion":1,"modulePath":"engine/reference/config/EngineState.md","moduleTitle":"config/EngineState","source":"engine/config/EngineState.js","import":"/engine/config/EngineState.js","sourceHash":"8c82c4208202f1efb850b5e170cc54788e7a6e4997e61c78da79ea48dffb869d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/config/EngineState.js#0015:DEFAULT_CONFIG","exportIndex":15,"name":"DEFAULT_CONFIG","kind":"constant","signature":"DEFAULT_CONFIG","summary":"Default configuration values (can be overridden by engine.cfg)"}
{"schemaVersion":1,"modulePath":"engine/reference/config/EngineState.md","moduleTitle":"config/EngineState","source":"engine/config/EngineState.js","import":"/engine/config/EngineState.js","sourceHash":"8c82c4208202f1efb850b5e170cc54788e7a6e4997e61c78da79ea48dffb869d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/config/EngineState.js#0016:DEFAULT_PHYSICS","exportIndex":16,"name":"DEFAULT_PHYSICS","kind":"constant","signature":"DEFAULT_PHYSICS","summary":"Default physics values"}
{"schemaVersion":1,"modulePath":"engine/reference/config/EngineState.md","moduleTitle":"config/EngineState","source":"engine/config/EngineState.js","import":"/engine/config/EngineState.js","sourceHash":"8c82c4208202f1efb850b5e170cc54788e7a6e4997e61c78da79ea48dffb869d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/config/EngineState.js#0017:DEFAULT_RENDER","exportIndex":17,"name":"DEFAULT_RENDER","kind":"constant","signature":"DEFAULT_RENDER","summary":"Default render settings"}
{"schemaVersion":1,"modulePath":"engine/reference/core/AppBootstrap.md","moduleTitle":"core/AppBootstrap","source":"engine/core/AppBootstrap.js","import":"/engine/core/AppBootstrap.js","sourceHash":"26caa446b86cd963a29244d1b953b210bd4380b714d82d35f73dfabdb7e743f6","subsystem":"engine","recordType":"api-module","id":"module:engine/core/AppBootstrap.js","title":"core/AppBootstrap","summary":"AppBootstrap.js - Application bootstrap helper Consolidates common app initialization: WebGPU check, canvas ready, config loading, ECS world, GPU init, and main loop setup.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/core/AppBootstrap.md","moduleTitle":"core/AppBootstrap","source":"engine/core/AppBootstrap.js","import":"/engine/core/AppBootstrap.js","sourceHash":"26caa446b86cd963a29244d1b953b210bd4380b714d82d35f73dfabdb7e743f6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/AppBootstrap.js#0000:bootstrapApp","exportIndex":0,"name":"bootstrapApp","kind":"function","signature":"async bootstrapApp(options)","summary":"Bootstrap a complete application."}
{"schemaVersion":1,"modulePath":"engine/reference/core/AppBootstrap.md","moduleTitle":"core/AppBootstrap","source":"engine/core/AppBootstrap.js","import":"/engine/core/AppBootstrap.js","sourceHash":"26caa446b86cd963a29244d1b953b210bd4380b714d82d35f73dfabdb7e743f6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/AppBootstrap.js#0001:createMainLoop","exportIndex":1,"name":"createMainLoop","kind":"function","signature":"createMainLoop(options)","summary":"Create main loop with standard update/render pattern."}
{"schemaVersion":1,"modulePath":"engine/reference/core/AppBootstrap.md","moduleTitle":"core/AppBootstrap","source":"engine/core/AppBootstrap.js","import":"/engine/core/AppBootstrap.js","sourceHash":"26caa446b86cd963a29244d1b953b210bd4380b714d82d35f73dfabdb7e743f6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/AppBootstrap.js#0002:runApp","exportIndex":2,"name":"runApp","kind":"function","signature":"async runApp(options)","summary":"Full app bootstrap + loop in one call."}
{"schemaVersion":1,"modulePath":"engine/reference/core/EngineIntegration.md","moduleTitle":"core/EngineIntegration","source":"engine/core/EngineIntegration.js","import":"/engine/core/EngineIntegration.js","sourceHash":"dafefd085d8bbbbd623c43321f3b0c164d9f975e5a418f80f783ea6792d858ef","subsystem":"engine","recordType":"api-module","id":"module:engine/core/EngineIntegration.js","title":"core/EngineIntegration","summary":"High-performance particle emitter using SoA","exportCount":13}
{"schemaVersion":1,"modulePath":"engine/reference/core/EngineIntegration.md","moduleTitle":"core/EngineIntegration","source":"engine/core/EngineIntegration.js","import":"/engine/core/EngineIntegration.js","sourceHash":"dafefd085d8bbbbd623c43321f3b0c164d9f975e5a418f80f783ea6792d858ef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/EngineIntegration.js#0000:SoAParticleEmitter","exportIndex":0,"name":"SoAParticleEmitter","kind":"class","signature":"class SoAParticleEmitter","summary":"High-performance particle emitter using SoA"}
{"schemaVersion":1,"modulePath":"engine/reference/core/EngineIntegration.md","moduleTitle":"core/EngineIntegration","source":"engine/core/EngineIntegration.js","import":"/engine/core/EngineIntegration.js","sourceHash":"dafefd085d8bbbbd623c43321f3b0c164d9f975e5a418f80f783ea6792d858ef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/EngineIntegration.js#0001:RenderCommandBuilder","exportIndex":1,"name":"RenderCommandBuilder","kind":"class","signature":"class RenderCommandBuilder","summary":"Render command builder using object pools"}
{"schemaVersion":1,"modulePath":"engine/reference/core/EngineIntegration.md","moduleTitle":"core/EngineIntegration","source":"engine/core/EngineIntegration.js","import":"/engine/core/EngineIntegration.js","sourceHash":"dafefd085d8bbbbd623c43321f3b0c164d9f975e5a418f80f783ea6792d858ef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/EngineIntegration.js#0002:initResourceManagement","exportIndex":2,"name":"initResourceManagement","kind":"function","signature":"async initResourceManagement(device, options = {})","summary":"Initialize resource management for the game Call this during game initialization after WebGPU device is ready"}
{"schemaVersion":1,"modulePath":"engine/reference/core/EngineIntegration.md","moduleTitle":"core/EngineIntegration","source":"engine/core/EngineIntegration.js","import":"/engine/core/EngineIntegration.js","sourceHash":"dafefd085d8bbbbd623c43321f3b0c164d9f975e5a418f80f783ea6792d858ef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/EngineIntegration.js#0003:frameWrapper","exportIndex":3,"name":"frameWrapper","kind":"function","signature":"frameWrapper(frameCallback)","summary":"Frame wrapper that handles resource management automatically Usage: ```js function gameLoop() { frameWrapper(() => { // Your game update code here updatePhysics(); updateAI(); render(); }); requestAnimationFrame(gameLoop); } ```"}
{"schemaVersion":1,"modulePath":"engine/reference/core/EngineIntegration.md","moduleTitle":"core/EngineIntegration","source":"engine/core/EngineIntegration.js","import":"/engine/core/EngineIntegration.js","sourceHash":"dafefd085d8bbbbd623c43321f3b0c164d9f975e5a418f80f783ea6792d858ef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/EngineIntegration.js#0004:frameWrapperAsync","exportIndex":4,"name":"frameWrapperAsync","kind":"function","signature":"async frameWrapperAsync(frameCallback)","summary":"Async frame wrapper for async game loops"}
{"schemaVersion":1,"modulePath":"engine/reference/core/EngineIntegration.md","moduleTitle":"core/EngineIntegration","source":"engine/core/EngineIntegration.js","import":"/engine/core/EngineIntegration.js","sourceHash":"dafefd085d8bbbbd623c43321f3b0c164d9f975e5a418f80f783ea6792d858ef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/EngineIntegration.js#0005:submitPhysicsJob","exportIndex":5,"name":"submitPhysicsJob","kind":"function","signature":"submitPhysicsJob(callback, data = null)","summary":"Submit physics job to scheduler"}
{"schemaVersion":1,"modulePath":"engine/reference/core/EngineIntegration.md","moduleTitle":"core/EngineIntegration","source":"engine/core/EngineIntegration.js","import":"/engine/core/EngineIntegration.js","sourceHash":"dafefd085d8bbbbd623c43321f3b0c164d9f975e5a418f80f783ea6792d858ef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/EngineIntegration.js#0006:submitAIJob","exportIndex":6,"name":"submitAIJob","kind":"function","signature":"submitAIJob(callback, data = null)","summary":"Submit AI job to scheduler"}
{"schemaVersion":1,"modulePath":"engine/reference/core/EngineIntegration.md","moduleTitle":"core/EngineIntegration","source":"engine/core/EngineIntegration.js","import":"/engine/core/EngineIntegration.js","sourceHash":"dafefd085d8bbbbd623c43321f3b0c164d9f975e5a418f80f783ea6792d858ef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/EngineIntegration.js#0007:submitStreamingJob","exportIndex":7,"name":"submitStreamingJob","kind":"function","signature":"submitStreamingJob(callback, data = null)","summary":"Submit streaming/loading job to scheduler"}
{"schemaVersion":1,"modulePath":"engine/reference/core/EngineIntegration.md","moduleTitle":"core/EngineIntegration","source":"engine/core/EngineIntegration.js","import":"/engine/core/EngineIntegration.js","sourceHash":"dafefd085d8bbbbd623c43321f3b0c164d9f975e5a418f80f783ea6792d858ef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/EngineIntegration.js#0008:submitCleanupJob","exportIndex":8,"name":"submitCleanupJob","kind":"function","signature":"submitCleanupJob(callback, data = null)","summary":"Submit background cleanup job"}
{"schemaVersion":1,"modulePath":"engine/reference/core/EngineIntegration.md","moduleTitle":"core/EngineIntegration","source":"engine/core/EngineIntegration.js","import":"/engine/core/EngineIntegration.js","sourceHash":"dafefd085d8bbbbd623c43321f3b0c164d9f975e5a418f80f783ea6792d858ef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/EngineIntegration.js#0009:PARTICLE_SCHEMA","exportIndex":9,"name":"PARTICLE_SCHEMA","kind":"constant","signature":"PARTICLE_SCHEMA","summary":"Schema for high-performance particle system using Structure of Arrays"}
{"schemaVersion":1,"modulePath":"engine/reference/core/EngineIntegration.md","moduleTitle":"core/EngineIntegration","source":"engine/core/EngineIntegration.js","import":"/engine/core/EngineIntegration.js","sourceHash":"dafefd085d8bbbbd623c43321f3b0c164d9f975e5a418f80f783ea6792d858ef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/EngineIntegration.js#0010:TRANSFORM_SCHEMA","exportIndex":10,"name":"TRANSFORM_SCHEMA","kind":"constant","signature":"TRANSFORM_SCHEMA","summary":"Schema for entity transforms using Structure of Arrays"}
{"schemaVersion":1,"modulePath":"engine/reference/core/EngineIntegration.md","moduleTitle":"core/EngineIntegration","source":"engine/core/EngineIntegration.js","import":"/engine/core/EngineIntegration.js","sourceHash":"dafefd085d8bbbbd623c43321f3b0c164d9f975e5a418f80f783ea6792d858ef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/EngineIntegration.js#0011:JobPriority","exportIndex":11,"name":"JobPriority","kind":"re-export","signature":"JobPriority","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/EngineIntegration.md","moduleTitle":"core/EngineIntegration","source":"engine/core/EngineIntegration.js","import":"/engine/core/EngineIntegration.js","sourceHash":"dafefd085d8bbbbd623c43321f3b0c164d9f975e5a418f80f783ea6792d858ef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/EngineIntegration.js#0012:resources","exportIndex":12,"name":"resources","kind":"re-export","signature":"resources","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/EntitySystem.md","moduleTitle":"core/EntitySystem","source":"engine/core/EntitySystem.js","import":"/engine/core/EntitySystem.js","sourceHash":"ece4ccd358460d1d6e60a10dea2601f6588b3feea42565ed0a5a850d76aab58f","subsystem":"engine","recordType":"api-module","id":"module:engine/core/EntitySystem.js","title":"core/EntitySystem","summary":"EntitySystem — lightweight entity registry used by LIFE narrative systems. This is intentionally a simple in-memory map. The ECS runtime lives in the engine simulation layer; narrative modules just need a stable handle to the active entity collection they are narrating.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/core/EntitySystem.md","moduleTitle":"core/EntitySystem","source":"engine/core/EntitySystem.js","import":"/engine/core/EntitySystem.js","sourceHash":"ece4ccd358460d1d6e60a10dea2601f6588b3feea42565ed0a5a850d76aab58f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/EntitySystem.js#0000:EntitySystem","exportIndex":0,"name":"EntitySystem","kind":"class","signature":"class EntitySystem","summary":"EntitySystem — lightweight entity registry used by LIFE narrative systems. This is intentionally a simple in-memory map. The ECS runtime lives in the engine simulation layer; narrative modules just need a stable handle to the active entity collection they are narrating."}
{"schemaVersion":1,"modulePath":"engine/reference/core/ResourceManager.md","moduleTitle":"core/ResourceManager","source":"engine/core/ResourceManager.js","import":"/engine/core/ResourceManager.js","sourceHash":"41ccbba0784be8f88238385788432a2f5615fe8be0a512a94bd5209165ef701d","subsystem":"engine","recordType":"api-module","id":"module:engine/core/ResourceManager.js","title":"core/ResourceManager","summary":"ResourceManager.js - Unified High-Performance Resource Management Central facade integrating: - Host Memory (RAM): Slab Allocators, Object Pools, SoA Containers - Device Memory (GPU): Ring Buffers, Buddy Allocators, Texture Management - Task Scheduling: Job System, Worker Pools, Frame Budgeting Based on architectural specification for zero-allocation, high-throughput WebGPU applications targeting 60+ FPS.","exportCount":9}
{"schemaVersion":1,"modulePath":"engine/reference/core/ResourceManager.md","moduleTitle":"core/ResourceManager","source":"engine/core/ResourceManager.js","import":"/engine/core/ResourceManager.js","sourceHash":"41ccbba0784be8f88238385788432a2f5615fe8be0a512a94bd5209165ef701d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/ResourceManager.js#0000:ResourceManager","exportIndex":0,"name":"ResourceManager","kind":"class","signature":"class ResourceManager","summary":"Unified resource management facade"}
{"schemaVersion":1,"modulePath":"engine/reference/core/ResourceManager.md","moduleTitle":"core/ResourceManager","source":"engine/core/ResourceManager.js","import":"/engine/core/ResourceManager.js","sourceHash":"41ccbba0784be8f88238385788432a2f5615fe8be0a512a94bd5209165ef701d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/ResourceManager.js#0001:resources","exportIndex":1,"name":"resources","kind":"constant","signature":"resources","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/ResourceManager.md","moduleTitle":"core/ResourceManager","source":"engine/core/ResourceManager.js","import":"/engine/core/ResourceManager.js","sourceHash":"41ccbba0784be8f88238385788432a2f5615fe8be0a512a94bd5209165ef701d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/ResourceManager.js#0002:JobPriority","exportIndex":2,"name":"JobPriority","kind":"re-export","signature":"JobPriority","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/ResourceManager.md","moduleTitle":"core/ResourceManager","source":"engine/core/ResourceManager.js","import":"/engine/core/ResourceManager.js","sourceHash":"41ccbba0784be8f88238385788432a2f5615fe8be0a512a94bd5209165ef701d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/ResourceManager.js#0003:ObjectPool","exportIndex":3,"name":"ObjectPool","kind":"re-export","signature":"ObjectPool","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/ResourceManager.md","moduleTitle":"core/ResourceManager","source":"engine/core/ResourceManager.js","import":"/engine/core/ResourceManager.js","sourceHash":"41ccbba0784be8f88238385788432a2f5615fe8be0a512a94bd5209165ef701d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/ResourceManager.js#0004:SlabAllocator","exportIndex":4,"name":"SlabAllocator","kind":"re-export","signature":"SlabAllocator","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/ResourceManager.md","moduleTitle":"core/ResourceManager","source":"engine/core/ResourceManager.js","import":"/engine/core/ResourceManager.js","sourceHash":"41ccbba0784be8f88238385788432a2f5615fe8be0a512a94bd5209165ef701d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/ResourceManager.js#0005:SoAContainer","exportIndex":5,"name":"SoAContainer","kind":"re-export","signature":"SoAContainer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/ResourceManager.md","moduleTitle":"core/ResourceManager","source":"engine/core/ResourceManager.js","import":"/engine/core/ResourceManager.js","sourceHash":"41ccbba0784be8f88238385788432a2f5615fe8be0a512a94bd5209165ef701d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/ResourceManager.js#0006:hostMemory","exportIndex":6,"name":"hostMemory","kind":"re-export","signature":"hostMemory","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/ResourceManager.md","moduleTitle":"core/ResourceManager","source":"engine/core/ResourceManager.js","import":"/engine/core/ResourceManager.js","sourceHash":"41ccbba0784be8f88238385788432a2f5615fe8be0a512a94bd5209165ef701d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/ResourceManager.js#0007:scheduler","exportIndex":7,"name":"scheduler","kind":"re-export","signature":"scheduler","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/ResourceManager.md","moduleTitle":"core/ResourceManager","source":"engine/core/ResourceManager.js","import":"/engine/core/ResourceManager.js","sourceHash":"41ccbba0784be8f88238385788432a2f5615fe8be0a512a94bd5209165ef701d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/ResourceManager.js#0008:workerTemplate","exportIndex":8,"name":"workerTemplate","kind":"re-export","signature":"workerTemplate","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/AnimationCompression.md","moduleTitle":"core/compression/AnimationCompression","source":"engine/core/compression/AnimationCompression.js","import":"/engine/core/compression/AnimationCompression.js","sourceHash":"716395ca307034ab4a8d6482507de6268b7bf46ca13b032e835a86f06d499132","subsystem":"engine","recordType":"api-module","id":"module:engine/core/compression/AnimationCompression.js","title":"core/compression/AnimationCompression","summary":"AnimationCompression.js - Animation Data Compression Compresses skeletal animation data using: - Quaternion compression: 37.5% reduction (16 bytes → 10 bytes) - DCT temporal compression: 60-80% reduction - Delta encoding: Store only changed bones - Keyframe reduction: Remove redundant frames Typical compression: 60-80% reduction for skeletal animations","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/AnimationCompression.md","moduleTitle":"core/compression/AnimationCompression","source":"engine/core/compression/AnimationCompression.js","import":"/engine/core/compression/AnimationCompression.js","sourceHash":"716395ca307034ab4a8d6482507de6268b7bf46ca13b032e835a86f06d499132","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/AnimationCompression.js#0000:compressAnimationTrack","exportIndex":0,"name":"compressAnimationTrack","kind":"function","signature":"compressAnimationTrack(track, options = {})","summary":"Compress animation track (position, rotation, or scale)"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/AnimationCompression.md","moduleTitle":"core/compression/AnimationCompression","source":"engine/core/compression/AnimationCompression.js","import":"/engine/core/compression/AnimationCompression.js","sourceHash":"716395ca307034ab4a8d6482507de6268b7bf46ca13b032e835a86f06d499132","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/AnimationCompression.js#0001:decompressAnimationTrack","exportIndex":1,"name":"decompressAnimationTrack","kind":"function","signature":"decompressAnimationTrack(compressed)","summary":"Decompress animation track"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/AnimationCompression.md","moduleTitle":"core/compression/AnimationCompression","source":"engine/core/compression/AnimationCompression.js","import":"/engine/core/compression/AnimationCompression.js","sourceHash":"716395ca307034ab4a8d6482507de6268b7bf46ca13b032e835a86f06d499132","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/AnimationCompression.js#0002:compressSkeletalAnimation","exportIndex":2,"name":"compressSkeletalAnimation","kind":"function","signature":"compressSkeletalAnimation(animation)","summary":"Compress full skeletal animation"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/AnimationCompression.md","moduleTitle":"core/compression/AnimationCompression","source":"engine/core/compression/AnimationCompression.js","import":"/engine/core/compression/AnimationCompression.js","sourceHash":"716395ca307034ab4a8d6482507de6268b7bf46ca13b032e835a86f06d499132","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/AnimationCompression.js#0003:decompressSkeletalAnimation","exportIndex":3,"name":"decompressSkeletalAnimation","kind":"function","signature":"decompressSkeletalAnimation(compressed)","summary":"Decompress skeletal animation"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/AnimationCompression.md","moduleTitle":"core/compression/AnimationCompression","source":"engine/core/compression/AnimationCompression.js","import":"/engine/core/compression/AnimationCompression.js","sourceHash":"716395ca307034ab4a8d6482507de6268b7bf46ca13b032e835a86f06d499132","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/AnimationCompression.js#0004:reduceKeyframes","exportIndex":4,"name":"reduceKeyframes","kind":"function","signature":"reduceKeyframes(track, tolerance = 0.001)","summary":"Remove redundant keyframes that can be interpolated"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/AnimationCompression.md","moduleTitle":"core/compression/AnimationCompression","source":"engine/core/compression/AnimationCompression.js","import":"/engine/core/compression/AnimationCompression.js","sourceHash":"716395ca307034ab4a8d6482507de6268b7bf46ca13b032e835a86f06d499132","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/AnimationCompression.js#0005:compressAnimationBatch","exportIndex":5,"name":"compressAnimationBatch","kind":"function","signature":"compressAnimationBatch(animations)","summary":"Compress multiple animations"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/CompressionUtils.md","moduleTitle":"core/compression/CompressionUtils","source":"engine/core/compression/CompressionUtils.js","import":"/engine/core/compression/CompressionUtils.js","sourceHash":"628a0483363204b7c41d8ac95b8ae6a3c27fa611eeb8c6e0bb58ab34e51d8f69","subsystem":"engine","recordType":"api-module","id":"module:engine/core/compression/CompressionUtils.js","title":"core/compression/CompressionUtils","summary":"CompressionUtils.js - Unified Compression Utilities Provides compression techniques for various data types: - Variable-Length Integer Encoding (VLInt) - Quantization (Float32 → Int16/Int8) - Run-Length Encoding (RLE) - Delta Compression - Octahedral Normal Encoding - Quaternion Compression Based on research from particle snapshot compression achieving 390x compression","exportCount":23}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/CompressionUtils.md","moduleTitle":"core/compression/CompressionUtils","source":"engine/core/compression/CompressionUtils.js","import":"/engine/core/compression/CompressionUtils.js","sourceHash":"628a0483363204b7c41d8ac95b8ae6a3c27fa611eeb8c6e0bb58ab34e51d8f69","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/CompressionUtils.js#0000:packVLInt","exportIndex":0,"name":"packVLInt","kind":"function","signature":"packVLInt(values)","summary":"Pack small integers into fewer bytes using variable-length encoding Most indices are small, so we can use 1-2 bytes instead of 4 Encoding: - 1 byte: 0xxxxxxx (0-127) - 2 bytes: 10xxxxxx xxxxxxxx (128-16,383) - 3 bytes: 11xxxxxx xxxxxxxx xxxxxxxx (16,384-4,194,303)"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/CompressionUtils.md","moduleTitle":"core/compression/CompressionUtils","source":"engine/core/compression/CompressionUtils.js","import":"/engine/core/compression/CompressionUtils.js","sourceHash":"628a0483363204b7c41d8ac95b8ae6a3c27fa611eeb8c6e0bb58ab34e51d8f69","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/CompressionUtils.js#0001:unpackVLInt","exportIndex":1,"name":"unpackVLInt","kind":"function","signature":"unpackVLInt(packed)","summary":"Unpack variable-length encoded integers"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/CompressionUtils.md","moduleTitle":"core/compression/CompressionUtils","source":"engine/core/compression/CompressionUtils.js","import":"/engine/core/compression/CompressionUtils.js","sourceHash":"628a0483363204b7c41d8ac95b8ae6a3c27fa611eeb8c6e0bb58ab34e51d8f69","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/CompressionUtils.js#0002:quantizeFloat","exportIndex":2,"name":"quantizeFloat","kind":"function","signature":"quantizeFloat(value, range)","summary":"Quantize float to int16 within range [-range, +range] Achieves 50% memory reduction with minimal precision loss"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/CompressionUtils.md","moduleTitle":"core/compression/CompressionUtils","source":"engine/core/compression/CompressionUtils.js","import":"/engine/core/compression/CompressionUtils.js","sourceHash":"628a0483363204b7c41d8ac95b8ae6a3c27fa611eeb8c6e0bb58ab34e51d8f69","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/CompressionUtils.js#0003:dequantizeFloat","exportIndex":3,"name":"dequantizeFloat","kind":"function","signature":"dequantizeFloat(quantized, range)","summary":"Dequantize int16 back to float"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/CompressionUtils.md","moduleTitle":"core/compression/CompressionUtils","source":"engine/core/compression/CompressionUtils.js","import":"/engine/core/compression/CompressionUtils.js","sourceHash":"628a0483363204b7c41d8ac95b8ae6a3c27fa611eeb8c6e0bb58ab34e51d8f69","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/CompressionUtils.js#0004:quantizeFloatArray","exportIndex":4,"name":"quantizeFloatArray","kind":"function","signature":"quantizeFloatArray(floats, range)","summary":"Quantize array of floats to Int16Array"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/CompressionUtils.md","moduleTitle":"core/compression/CompressionUtils","source":"engine/core/compression/CompressionUtils.js","import":"/engine/core/compression/CompressionUtils.js","sourceHash":"628a0483363204b7c41d8ac95b8ae6a3c27fa611eeb8c6e0bb58ab34e51d8f69","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/CompressionUtils.js#0005:dequantizeFloatArray","exportIndex":5,"name":"dequantizeFloatArray","kind":"function","signature":"dequantizeFloatArray(quantized, range)","summary":"Dequantize Int16Array back to Float32Array"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/CompressionUtils.md","moduleTitle":"core/compression/CompressionUtils","source":"engine/core/compression/CompressionUtils.js","import":"/engine/core/compression/CompressionUtils.js","sourceHash":"628a0483363204b7c41d8ac95b8ae6a3c27fa611eeb8c6e0bb58ab34e51d8f69","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/CompressionUtils.js#0006:quantizeToInt8","exportIndex":6,"name":"quantizeToInt8","kind":"function","signature":"quantizeToInt8(value, range)","summary":"Quantize to int8 for even more compression (75% reduction) Use for data that doesn't need high precision (normals, colors)"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/CompressionUtils.md","moduleTitle":"core/compression/CompressionUtils","source":"engine/core/compression/CompressionUtils.js","import":"/engine/core/compression/CompressionUtils.js","sourceHash":"628a0483363204b7c41d8ac95b8ae6a3c27fa611eeb8c6e0bb58ab34e51d8f69","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/CompressionUtils.js#0007:dequantizeFromInt8","exportIndex":7,"name":"dequantizeFromInt8","kind":"function","signature":"dequantizeFromInt8(quantized, range)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/CompressionUtils.md","moduleTitle":"core/compression/CompressionUtils","source":"engine/core/compression/CompressionUtils.js","import":"/engine/core/compression/CompressionUtils.js","sourceHash":"628a0483363204b7c41d8ac95b8ae6a3c27fa611eeb8c6e0bb58ab34e51d8f69","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/CompressionUtils.js#0008:encodeOctahedralNormal","exportIndex":8,"name":"encodeOctahedralNormal","kind":"function","signature":"encodeOctahedralNormal(nx, ny, nz)","summary":"Encode 3D unit normal to 2D octahedral coordinates Industry-standard technique used in AAA games Reference: \"A Survey of Efficient Representations for Independent Unit Vectors\""}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/CompressionUtils.md","moduleTitle":"core/compression/CompressionUtils","source":"engine/core/compression/CompressionUtils.js","import":"/engine/core/compression/CompressionUtils.js","sourceHash":"628a0483363204b7c41d8ac95b8ae6a3c27fa611eeb8c6e0bb58ab34e51d8f69","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/CompressionUtils.js#0009:decodeOctahedralNormal","exportIndex":9,"name":"decodeOctahedralNormal","kind":"function","signature":"decodeOctahedralNormal(x, y)","summary":"Decode octahedral coordinates back to 3D normal"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/CompressionUtils.md","moduleTitle":"core/compression/CompressionUtils","source":"engine/core/compression/CompressionUtils.js","import":"/engine/core/compression/CompressionUtils.js","sourceHash":"628a0483363204b7c41d8ac95b8ae6a3c27fa611eeb8c6e0bb58ab34e51d8f69","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/CompressionUtils.js#0010:encodeNormalArray","exportIndex":10,"name":"encodeNormalArray","kind":"function","signature":"encodeNormalArray(normals)","summary":"Encode array of normals (vec3) to Int16Array Input: Float32Array [nx, ny, nz, nx, ny, nz, ...] Output: Int16Array [x, y, x, y, ...] (66% smaller)"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/CompressionUtils.md","moduleTitle":"core/compression/CompressionUtils","source":"engine/core/compression/CompressionUtils.js","import":"/engine/core/compression/CompressionUtils.js","sourceHash":"628a0483363204b7c41d8ac95b8ae6a3c27fa611eeb8c6e0bb58ab34e51d8f69","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/CompressionUtils.js#0011:decodeNormalArray","exportIndex":11,"name":"decodeNormalArray","kind":"function","signature":"decodeNormalArray(encoded)","summary":"Decode array of normals back to Float32Array"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/CompressionUtils.md","moduleTitle":"core/compression/CompressionUtils","source":"engine/core/compression/CompressionUtils.js","import":"/engine/core/compression/CompressionUtils.js","sourceHash":"628a0483363204b7c41d8ac95b8ae6a3c27fa611eeb8c6e0bb58ab34e51d8f69","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/CompressionUtils.js#0012:compressQuaternion","exportIndex":12,"name":"compressQuaternion","kind":"function","signature":"compressQuaternion(x, y, z, w)","summary":"Compress quaternion by dropping smallest component Technique: Store 3 largest components + index of dropped component Used in animation systems for skeletal rigs"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/CompressionUtils.md","moduleTitle":"core/compression/CompressionUtils","source":"engine/core/compression/CompressionUtils.js","import":"/engine/core/compression/CompressionUtils.js","sourceHash":"628a0483363204b7c41d8ac95b8ae6a3c27fa611eeb8c6e0bb58ab34e51d8f69","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/CompressionUtils.js#0013:decompressQuaternion","exportIndex":13,"name":"decompressQuaternion","kind":"function","signature":"decompressQuaternion(compressed)","summary":"Decompress quaternion by reconstructing dropped component"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/CompressionUtils.md","moduleTitle":"core/compression/CompressionUtils","source":"engine/core/compression/CompressionUtils.js","import":"/engine/core/compression/CompressionUtils.js","sourceHash":"628a0483363204b7c41d8ac95b8ae6a3c27fa611eeb8c6e0bb58ab34e51d8f69","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/CompressionUtils.js#0014:runLengthEncode","exportIndex":14,"name":"runLengthEncode","kind":"function","signature":"runLengthEncode(values)","summary":"Run-Length Encode an array of values Perfect for voxel data with large empty regions Returns: [[value, count], [value, count], ...]"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/CompressionUtils.md","moduleTitle":"core/compression/CompressionUtils","source":"engine/core/compression/CompressionUtils.js","import":"/engine/core/compression/CompressionUtils.js","sourceHash":"628a0483363204b7c41d8ac95b8ae6a3c27fa611eeb8c6e0bb58ab34e51d8f69","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/CompressionUtils.js#0015:runLengthDecode","exportIndex":15,"name":"runLengthDecode","kind":"function","signature":"runLengthDecode(runs)","summary":"Decode run-length encoded data"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/CompressionUtils.md","moduleTitle":"core/compression/CompressionUtils","source":"engine/core/compression/CompressionUtils.js","import":"/engine/core/compression/CompressionUtils.js","sourceHash":"628a0483363204b7c41d8ac95b8ae6a3c27fa611eeb8c6e0bb58ab34e51d8f69","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/CompressionUtils.js#0016:runLengthEncodeCompact","exportIndex":16,"name":"runLengthEncodeCompact","kind":"function","signature":"runLengthEncodeCompact(values)","summary":"RLE with VLInt encoding for maximum compression Returns Uint8Array: [value, count, value, count, ...]"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/CompressionUtils.md","moduleTitle":"core/compression/CompressionUtils","source":"engine/core/compression/CompressionUtils.js","import":"/engine/core/compression/CompressionUtils.js","sourceHash":"628a0483363204b7c41d8ac95b8ae6a3c27fa611eeb8c6e0bb58ab34e51d8f69","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/CompressionUtils.js#0017:deltaEncode","exportIndex":17,"name":"deltaEncode","kind":"function","signature":"deltaEncode(values)","summary":"Delta encode array (store differences instead of absolute values) Great for temporal data or sorted indices"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/CompressionUtils.md","moduleTitle":"core/compression/CompressionUtils","source":"engine/core/compression/CompressionUtils.js","import":"/engine/core/compression/CompressionUtils.js","sourceHash":"628a0483363204b7c41d8ac95b8ae6a3c27fa611eeb8c6e0bb58ab34e51d8f69","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/CompressionUtils.js#0018:deltaDecode","exportIndex":18,"name":"deltaDecode","kind":"function","signature":"deltaDecode(deltas)","summary":"Decode delta-encoded array"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/CompressionUtils.md","moduleTitle":"core/compression/CompressionUtils","source":"engine/core/compression/CompressionUtils.js","import":"/engine/core/compression/CompressionUtils.js","sourceHash":"628a0483363204b7c41d8ac95b8ae6a3c27fa611eeb8c6e0bb58ab34e51d8f69","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/CompressionUtils.js#0019:createPalette","exportIndex":19,"name":"createPalette","kind":"function","signature":"createPalette(values)","summary":"Create palette from array of values Returns: { palette: unique values, indices: array of palette indices }"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/CompressionUtils.md","moduleTitle":"core/compression/CompressionUtils","source":"engine/core/compression/CompressionUtils.js","import":"/engine/core/compression/CompressionUtils.js","sourceHash":"628a0483363204b7c41d8ac95b8ae6a3c27fa611eeb8c6e0bb58ab34e51d8f69","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/CompressionUtils.js#0020:decodePalette","exportIndex":20,"name":"decodePalette","kind":"function","signature":"decodePalette(palette, indices)","summary":"Decode palette-compressed data"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/CompressionUtils.md","moduleTitle":"core/compression/CompressionUtils","source":"engine/core/compression/CompressionUtils.js","import":"/engine/core/compression/CompressionUtils.js","sourceHash":"628a0483363204b7c41d8ac95b8ae6a3c27fa611eeb8c6e0bb58ab34e51d8f69","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/CompressionUtils.js#0021:getCompressionStats","exportIndex":21,"name":"getCompressionStats","kind":"function","signature":"getCompressionStats(originalSize, compressedSize)","summary":"Calculate compression ratio and statistics"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/CompressionUtils.md","moduleTitle":"core/compression/CompressionUtils","source":"engine/core/compression/CompressionUtils.js","import":"/engine/core/compression/CompressionUtils.js","sourceHash":"628a0483363204b7c41d8ac95b8ae6a3c27fa611eeb8c6e0bb58ab34e51d8f69","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/CompressionUtils.js#0022:formatBytes","exportIndex":22,"name":"formatBytes","kind":"function","signature":"formatBytes(bytes)","summary":"Format bytes for display"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/HybridCompression.md","moduleTitle":"core/compression/HybridCompression","source":"engine/core/compression/HybridCompression.js","import":"/engine/core/compression/HybridCompression.js","sourceHash":"fadbe781f99da8080fe6af45ff5c77abc761c6534caa30d17c11e7f6d558ce4b","subsystem":"engine","recordType":"api-module","id":"module:engine/core/compression/HybridCompression.js","title":"core/compression/HybridCompression","summary":"HybridCompression.js - Best of Both Worlds Intelligently combines lossless and lossy compression: - Lossy techniques for high compression (quantization, RLE, etc.) - Lossless encoding on top (LZ77 + Huffman) - Result: Near-lossless quality with near-lossy compression ratios Achieves 80-90% of lossy compression ratio with <0.001% quality loss","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/HybridCompression.md","moduleTitle":"core/compression/HybridCompression","source":"engine/core/compression/HybridCompression.js","import":"/engine/core/compression/HybridCompression.js","sourceHash":"fadbe781f99da8080fe6af45ff5c77abc761c6534caa30d17c11e7f6d558ce4b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/HybridCompression.js#0000:compressMeshHybrid","exportIndex":0,"name":"compressMeshHybrid","kind":"function","signature":"compressMeshHybrid(mesh, options = {})","summary":"Compress mesh with hybrid approach"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/HybridCompression.md","moduleTitle":"core/compression/HybridCompression","source":"engine/core/compression/HybridCompression.js","import":"/engine/core/compression/HybridCompression.js","sourceHash":"fadbe781f99da8080fe6af45ff5c77abc761c6534caa30d17c11e7f6d558ce4b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/HybridCompression.js#0001:decompressMeshHybrid","exportIndex":1,"name":"decompressMeshHybrid","kind":"function","signature":"decompressMeshHybrid(compressed)","summary":"Decompress hybrid mesh"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/HybridCompression.md","moduleTitle":"core/compression/HybridCompression","source":"engine/core/compression/HybridCompression.js","import":"/engine/core/compression/HybridCompression.js","sourceHash":"fadbe781f99da8080fe6af45ff5c77abc761c6534caa30d17c11e7f6d558ce4b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/HybridCompression.js#0002:compressVoxelHybrid","exportIndex":2,"name":"compressVoxelHybrid","kind":"function","signature":"compressVoxelHybrid(voxels, options = {})","summary":"Compress voxel chunk with hybrid approach"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/HybridCompression.md","moduleTitle":"core/compression/HybridCompression","source":"engine/core/compression/HybridCompression.js","import":"/engine/core/compression/HybridCompression.js","sourceHash":"fadbe781f99da8080fe6af45ff5c77abc761c6534caa30d17c11e7f6d558ce4b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/HybridCompression.js#0003:decompressVoxelHybrid","exportIndex":3,"name":"decompressVoxelHybrid","kind":"function","signature":"decompressVoxelHybrid(compressed)","summary":"Decompress hybrid voxel chunk"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/HybridCompression.md","moduleTitle":"core/compression/HybridCompression","source":"engine/core/compression/HybridCompression.js","import":"/engine/core/compression/HybridCompression.js","sourceHash":"fadbe781f99da8080fe6af45ff5c77abc761c6534caa30d17c11e7f6d558ce4b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/HybridCompression.js#0004:compressAnimationHybrid","exportIndex":4,"name":"compressAnimationHybrid","kind":"function","signature":"compressAnimationHybrid(track, options = {})","summary":"Compress animation with hybrid approach"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/HybridCompression.md","moduleTitle":"core/compression/HybridCompression","source":"engine/core/compression/HybridCompression.js","import":"/engine/core/compression/HybridCompression.js","sourceHash":"fadbe781f99da8080fe6af45ff5c77abc761c6534caa30d17c11e7f6d558ce4b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/HybridCompression.js#0005:decompressAnimationHybrid","exportIndex":5,"name":"decompressAnimationHybrid","kind":"function","signature":"decompressAnimationHybrid(compressed)","summary":"Decompress hybrid animation"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/LosslessCompression.md","moduleTitle":"core/compression/LosslessCompression","source":"engine/core/compression/LosslessCompression.js","import":"/engine/core/compression/LosslessCompression.js","sourceHash":"ba0817cae5154179568ee947fcfbafb4ab9deb8050464fa416d32f5905948b0d","subsystem":"engine","recordType":"api-module","id":"module:engine/core/compression/LosslessCompression.js","title":"core/compression/LosslessCompression","summary":"LosslessCompression.js - Zero Quality Loss Compression Implements truly lossless compression using: - DEFLATE (zlib): Industry standard, 2-3x compression - LZ77 dictionary compression: Fast, 1.5-2x compression - Huffman coding: Entropy encoding - Combination with existing techniques for maximum compression All compression is 100% lossless - perfect reconstruction guaranteed","exportCount":10}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/LosslessCompression.md","moduleTitle":"core/compression/LosslessCompression","source":"engine/core/compression/LosslessCompression.js","import":"/engine/core/compression/LosslessCompression.js","sourceHash":"ba0817cae5154179568ee947fcfbafb4ab9deb8050464fa416d32f5905948b0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/LosslessCompression.js#0000:compressLZ77","exportIndex":0,"name":"compressLZ77","kind":"function","signature":"compressLZ77(data)","summary":"Simple LZ77 compression (basis of DEFLATE) Finds repeated sequences and replaces with back-references 100% lossless"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/LosslessCompression.md","moduleTitle":"core/compression/LosslessCompression","source":"engine/core/compression/LosslessCompression.js","import":"/engine/core/compression/LosslessCompression.js","sourceHash":"ba0817cae5154179568ee947fcfbafb4ab9deb8050464fa416d32f5905948b0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/LosslessCompression.js#0001:decompressLZ77","exportIndex":1,"name":"decompressLZ77","kind":"function","signature":"decompressLZ77(compressed)","summary":"Decompress LZ77 data"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/LosslessCompression.md","moduleTitle":"core/compression/LosslessCompression","source":"engine/core/compression/LosslessCompression.js","import":"/engine/core/compression/LosslessCompression.js","sourceHash":"ba0817cae5154179568ee947fcfbafb4ab9deb8050464fa416d32f5905948b0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/LosslessCompression.js#0002:compressHuffman","exportIndex":2,"name":"compressHuffman","kind":"function","signature":"compressHuffman(data)","summary":"Compress data using Huffman coding 100% lossless entropy encoding"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/LosslessCompression.md","moduleTitle":"core/compression/LosslessCompression","source":"engine/core/compression/LosslessCompression.js","import":"/engine/core/compression/LosslessCompression.js","sourceHash":"ba0817cae5154179568ee947fcfbafb4ab9deb8050464fa416d32f5905948b0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/LosslessCompression.js#0003:decompressHuffman","exportIndex":3,"name":"decompressHuffman","kind":"function","signature":"decompressHuffman(compressed)","summary":"Decompress Huffman coded data"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/LosslessCompression.md","moduleTitle":"core/compression/LosslessCompression","source":"engine/core/compression/LosslessCompression.js","import":"/engine/core/compression/LosslessCompression.js","sourceHash":"ba0817cae5154179568ee947fcfbafb4ab9deb8050464fa416d32f5905948b0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/LosslessCompression.js#0004:compressLossless","exportIndex":4,"name":"compressLossless","kind":"function","signature":"compressLossless(data)","summary":"Compress typed array with zero quality loss Combines LZ77 + Huffman for maximum compression"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/LosslessCompression.md","moduleTitle":"core/compression/LosslessCompression","source":"engine/core/compression/LosslessCompression.js","import":"/engine/core/compression/LosslessCompression.js","sourceHash":"ba0817cae5154179568ee947fcfbafb4ab9deb8050464fa416d32f5905948b0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/LosslessCompression.js#0005:decompressLossless","exportIndex":5,"name":"decompressLossless","kind":"function","signature":"decompressLossless(compressed)","summary":"Decompress losslessly compressed data Perfect reconstruction guaranteed"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/LosslessCompression.md","moduleTitle":"core/compression/LosslessCompression","source":"engine/core/compression/LosslessCompression.js","import":"/engine/core/compression/LosslessCompression.js","sourceHash":"ba0817cae5154179568ee947fcfbafb4ab9deb8050464fa416d32f5905948b0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/LosslessCompression.js#0006:compressFloat32Lossless","exportIndex":6,"name":"compressFloat32Lossless","kind":"function","signature":"compressFloat32Lossless(floats)","summary":"Compress Float32Array losslessly"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/LosslessCompression.md","moduleTitle":"core/compression/LosslessCompression","source":"engine/core/compression/LosslessCompression.js","import":"/engine/core/compression/LosslessCompression.js","sourceHash":"ba0817cae5154179568ee947fcfbafb4ab9deb8050464fa416d32f5905948b0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/LosslessCompression.js#0007:compressInt16Lossless","exportIndex":7,"name":"compressInt16Lossless","kind":"function","signature":"compressInt16Lossless(ints)","summary":"Compress Int16Array losslessly"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/LosslessCompression.md","moduleTitle":"core/compression/LosslessCompression","source":"engine/core/compression/LosslessCompression.js","import":"/engine/core/compression/LosslessCompression.js","sourceHash":"ba0817cae5154179568ee947fcfbafb4ab9deb8050464fa416d32f5905948b0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/LosslessCompression.js#0008:compressUint8Lossless","exportIndex":8,"name":"compressUint8Lossless","kind":"function","signature":"compressUint8Lossless(bytes)","summary":"Compress Uint8Array losslessly"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/LosslessCompression.md","moduleTitle":"core/compression/LosslessCompression","source":"engine/core/compression/LosslessCompression.js","import":"/engine/core/compression/LosslessCompression.js","sourceHash":"ba0817cae5154179568ee947fcfbafb4ab9deb8050464fa416d32f5905948b0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/LosslessCompression.js#0009:testLosslessCompression","exportIndex":9,"name":"testLosslessCompression","kind":"function","signature":"testLosslessCompression()","summary":"Test compression on sample data"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/MeshCompression.md","moduleTitle":"core/compression/MeshCompression","source":"engine/core/compression/MeshCompression.js","import":"/engine/core/compression/MeshCompression.js","sourceHash":"ec095bc43206949b25b96cecfa25b49352ba966588b141de7d2f0a665f1914bb","subsystem":"engine","recordType":"api-module","id":"module:engine/core/compression/MeshCompression.js","title":"core/compression/MeshCompression","summary":"MeshCompression.js - Mesh Data Compression Compresses mesh data using: - Position quantization (Float32 → Int16): 50% reduction - Normal octahedral encoding: 66% reduction - UV half-float encoding: 50% reduction - Index VLInt encoding: 30-50% reduction Typical compression: 70-90% reduction in mesh size","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/MeshCompression.md","moduleTitle":"core/compression/MeshCompression","source":"engine/core/compression/MeshCompression.js","import":"/engine/core/compression/MeshCompression.js","sourceHash":"ec095bc43206949b25b96cecfa25b49352ba966588b141de7d2f0a665f1914bb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/MeshCompression.js#0000:compressMesh","exportIndex":0,"name":"compressMesh","kind":"function","signature":"compressMesh(mesh, options = {})","summary":"Compress mesh data"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/MeshCompression.md","moduleTitle":"core/compression/MeshCompression","source":"engine/core/compression/MeshCompression.js","import":"/engine/core/compression/MeshCompression.js","sourceHash":"ec095bc43206949b25b96cecfa25b49352ba966588b141de7d2f0a665f1914bb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/MeshCompression.js#0001:decompressMesh","exportIndex":1,"name":"decompressMesh","kind":"function","signature":"decompressMesh(compressed)","summary":"Decompress mesh data"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/MeshCompression.md","moduleTitle":"core/compression/MeshCompression","source":"engine/core/compression/MeshCompression.js","import":"/engine/core/compression/MeshCompression.js","sourceHash":"ec095bc43206949b25b96cecfa25b49352ba966588b141de7d2f0a665f1914bb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/MeshCompression.js#0002:compressMeshBatch","exportIndex":2,"name":"compressMeshBatch","kind":"function","signature":"compressMeshBatch(meshes)","summary":"Compress multiple meshes and combine into single buffer Useful for static scene geometry"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/MeshCompression.md","moduleTitle":"core/compression/MeshCompression","source":"engine/core/compression/MeshCompression.js","import":"/engine/core/compression/MeshCompression.js","sourceHash":"ec095bc43206949b25b96cecfa25b49352ba966588b141de7d2f0a665f1914bb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/MeshCompression.js#0003:decompressMeshBatch","exportIndex":3,"name":"decompressMeshBatch","kind":"function","signature":"decompressMeshBatch(compressedBatch)","summary":"Decompress batch of meshes"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/MeshCompression.md","moduleTitle":"core/compression/MeshCompression","source":"engine/core/compression/MeshCompression.js","import":"/engine/core/compression/MeshCompression.js","sourceHash":"ec095bc43206949b25b96cecfa25b49352ba966588b141de7d2f0a665f1914bb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/MeshCompression.js#0004:compressMeshForStreaming","exportIndex":4,"name":"compressMeshForStreaming","kind":"function","signature":"compressMeshForStreaming(mesh, lodLevels = [1.0, 0.5, 0.25])","summary":"Compress mesh for streaming (progressive loading) Returns base LOD + detail layers"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/VoxelCompression.md","moduleTitle":"core/compression/VoxelCompression","source":"engine/core/compression/VoxelCompression.js","import":"/engine/core/compression/VoxelCompression.js","sourceHash":"c28f74b4b6711dc7259bca201c122bb3767e28c6337956e503fbafdd93cdbbab","subsystem":"engine","recordType":"api-module","id":"module:engine/core/compression/VoxelCompression.js","title":"core/compression/VoxelCompression","summary":"VoxelCompression.js - Voxel Data Compression Compresses voxel data using: - Run-Length Encoding (RLE): 80-95% reduction for sparse data - Octree structure: Hierarchical compression - Palette compression: Reuse common materials - Delta encoding: Store chunk changes Typical compression: 80-95% reduction for typical voxel worlds","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/VoxelCompression.md","moduleTitle":"core/compression/VoxelCompression","source":"engine/core/compression/VoxelCompression.js","import":"/engine/core/compression/VoxelCompression.js","sourceHash":"c28f74b4b6711dc7259bca201c122bb3767e28c6337956e503fbafdd93cdbbab","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/VoxelCompression.js#0000:compressVoxelChunk","exportIndex":0,"name":"compressVoxelChunk","kind":"function","signature":"compressVoxelChunk(voxels, options = {})","summary":"Compress voxel chunk data"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/VoxelCompression.md","moduleTitle":"core/compression/VoxelCompression","source":"engine/core/compression/VoxelCompression.js","import":"/engine/core/compression/VoxelCompression.js","sourceHash":"c28f74b4b6711dc7259bca201c122bb3767e28c6337956e503fbafdd93cdbbab","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/VoxelCompression.js#0001:decompressVoxelChunk","exportIndex":1,"name":"decompressVoxelChunk","kind":"function","signature":"decompressVoxelChunk(compressed)","summary":"Decompress voxel chunk data"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/VoxelCompression.md","moduleTitle":"core/compression/VoxelCompression","source":"engine/core/compression/VoxelCompression.js","import":"/engine/core/compression/VoxelCompression.js","sourceHash":"c28f74b4b6711dc7259bca201c122bb3767e28c6337956e503fbafdd93cdbbab","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/VoxelCompression.js#0002:compressVoxelDelta","exportIndex":2,"name":"compressVoxelDelta","kind":"function","signature":"compressVoxelDelta(oldChunk, newChunk)","summary":"Compress changes between two chunk states Perfect for multiplayer sync or undo/redo"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/VoxelCompression.md","moduleTitle":"core/compression/VoxelCompression","source":"engine/core/compression/VoxelCompression.js","import":"/engine/core/compression/VoxelCompression.js","sourceHash":"c28f74b4b6711dc7259bca201c122bb3767e28c6337956e503fbafdd93cdbbab","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/VoxelCompression.js#0003:applyVoxelDelta","exportIndex":3,"name":"applyVoxelDelta","kind":"function","signature":"applyVoxelDelta(chunk, delta)","summary":"Apply delta to chunk"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/VoxelCompression.md","moduleTitle":"core/compression/VoxelCompression","source":"engine/core/compression/VoxelCompression.js","import":"/engine/core/compression/VoxelCompression.js","sourceHash":"c28f74b4b6711dc7259bca201c122bb3767e28c6337956e503fbafdd93cdbbab","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/VoxelCompression.js#0004:compressVoxelWorld","exportIndex":4,"name":"compressVoxelWorld","kind":"function","signature":"compressVoxelWorld(chunks)","summary":"Compress entire voxel world"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/VoxelCompression.md","moduleTitle":"core/compression/VoxelCompression","source":"engine/core/compression/VoxelCompression.js","import":"/engine/core/compression/VoxelCompression.js","sourceHash":"c28f74b4b6711dc7259bca201c122bb3767e28c6337956e503fbafdd93cdbbab","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/VoxelCompression.js#0005:decompressVoxelWorld","exportIndex":5,"name":"decompressVoxelWorld","kind":"function","signature":"decompressVoxelWorld(compressed)","summary":"Decompress voxel world"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/VoxelCompression.md","moduleTitle":"core/compression/VoxelCompression","source":"engine/core/compression/VoxelCompression.js","import":"/engine/core/compression/VoxelCompression.js","sourceHash":"c28f74b4b6711dc7259bca201c122bb3767e28c6337956e503fbafdd93cdbbab","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/compression/VoxelCompression.js#0006:compressVoxelChunkForStreaming","exportIndex":6,"name":"compressVoxelChunkForStreaming","kind":"function","signature":"compressVoxelChunkForStreaming(voxels, size)","summary":"Compress chunk for streaming (progressive loading)"}
{"schemaVersion":1,"modulePath":"engine/reference/core/compression/index.md","moduleTitle":"core/compression/index","source":"engine/core/compression/index.js","import":"/engine/core/compression/index.js","sourceHash":"cb474084ac63f944a6862443498f5f2df3e70eb2f30820c8380a5ecf58052fa7","subsystem":"engine","recordType":"api-module","id":"module:engine/core/compression/index.js","title":"core/compression/index","summary":"Compression Module - Unified Compression System Provides compression for all engine data types: - Particles: 390x compression (VLInt + Delta + Quantization + PCA/DCT) - Meshes: 70-90% reduction (Quantization + Octahedral normals + VLInt indices) - Voxels: 80-95% reduction (RLE + Octree + Palette) - Animations: 60-80% reduction (Quaternion + DCT + Keyframe reduction) All compression techniques are lossless or near-lossless with configurable quality.","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/core/events/EventBus.md","moduleTitle":"core/events/EventBus","source":"engine/core/events/EventBus.js","import":"/engine/core/events/EventBus.js","sourceHash":"3fd2a50cef56cc7530d39bfd5ecabd37694677879a2a9b5f12b1d4fec11ba58a","subsystem":"engine","recordType":"api-module","id":"module:engine/core/events/EventBus.js","title":"core/events/EventBus","summary":"","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/core/events/EventBus.md","moduleTitle":"core/events/EventBus","source":"engine/core/events/EventBus.js","import":"/engine/core/events/EventBus.js","sourceHash":"3fd2a50cef56cc7530d39bfd5ecabd37694677879a2a9b5f12b1d4fec11ba58a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/events/EventBus.js#0000:buildEventName","exportIndex":0,"name":"buildEventName","kind":"function","signature":"buildEventName(category, name)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/events/EventBus.md","moduleTitle":"core/events/EventBus","source":"engine/core/events/EventBus.js","import":"/engine/core/events/EventBus.js","sourceHash":"3fd2a50cef56cc7530d39bfd5ecabd37694677879a2a9b5f12b1d4fec11ba58a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/events/EventBus.js#0001:createEventBus","exportIndex":1,"name":"createEventBus","kind":"function","signature":"createEventBus()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/events/EventBus.md","moduleTitle":"core/events/EventBus","source":"engine/core/events/EventBus.js","import":"/engine/core/events/EventBus.js","sourceHash":"3fd2a50cef56cc7530d39bfd5ecabd37694677879a2a9b5f12b1d4fec11ba58a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/events/EventBus.js#0002:EventCategories","exportIndex":2,"name":"EventCategories","kind":"constant","signature":"EventCategories","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/framegraph/FrameGraph.md","moduleTitle":"core/framegraph/FrameGraph","source":"engine/core/framegraph/FrameGraph.js","import":"/engine/core/framegraph/FrameGraph.js","sourceHash":"37b245b62ed0785be9ab2d263064eb10ef6ca308fe939af8e4086b1b0895780f","subsystem":"engine","recordType":"api-module","id":"module:engine/core/framegraph/FrameGraph.js","title":"core/framegraph/FrameGraph","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/core/framegraph/FrameGraph.md","moduleTitle":"core/framegraph/FrameGraph","source":"engine/core/framegraph/FrameGraph.js","import":"/engine/core/framegraph/FrameGraph.js","sourceHash":"37b245b62ed0785be9ab2d263064eb10ef6ca308fe939af8e4086b1b0895780f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/framegraph/FrameGraph.js#0000:createFrameGraph","exportIndex":0,"name":"createFrameGraph","kind":"function","signature":"createFrameGraph()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/framepipeline/FrameContext.md","moduleTitle":"core/framepipeline/FrameContext","source":"engine/core/framepipeline/FrameContext.js","import":"/engine/core/framepipeline/FrameContext.js","sourceHash":"14ca5f669ccff88399a5841908af7df1bdeceda31b2cd54df5abaf68351c3f3e","subsystem":"engine","recordType":"api-module","id":"module:engine/core/framepipeline/FrameContext.js","title":"core/framepipeline/FrameContext","summary":"FrameContext — Per-frame shared state passed to every pipeline stage. The engine provides a minimal base context with timing and GPU fields. Consumers (editor, game) extend it with their own fields via the overrides parameter. Usage: const ctx = createFrameContext({ dt: 0.016, currentTime: performance.now(), device: gpuDevice, camera: myCamera, editor: editorApp, scene: editorApp.scene, }); pipeline.execute(ctx);","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/core/framepipeline/FrameContext.md","moduleTitle":"core/framepipeline/FrameContext","source":"engine/core/framepipeline/FrameContext.js","import":"/engine/core/framepipeline/FrameContext.js","sourceHash":"14ca5f669ccff88399a5841908af7df1bdeceda31b2cd54df5abaf68351c3f3e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/framepipeline/FrameContext.js#0000:createFrameContext","exportIndex":0,"name":"createFrameContext","kind":"function","signature":"createFrameContext(overrides)","summary":"Create a per-frame context object."}
{"schemaVersion":1,"modulePath":"engine/reference/core/framepipeline/FramePipeline.md","moduleTitle":"core/framepipeline/FramePipeline","source":"engine/core/framepipeline/FramePipeline.js","import":"/engine/core/framepipeline/FramePipeline.js","sourceHash":"6671be18ac20a3231c14f07162db98da8415c2e9a24c1f669e868896b1adbc52","subsystem":"engine","recordType":"api-module","id":"module:engine/core/framepipeline/FramePipeline.js","title":"core/framepipeline/FramePipeline","summary":"FramePipeline — Generic phased stage executor. Engine-level primitive. Consumers (editor, game, tests) register their own stages via addStage(). The pipeline knows nothing about WebGPU, ECS, or any specific renderer — it just executes stages in order within named phases. Phases (run in this order by execute()): fixedStep  — 0..N per frame (physics, PBD, fixed-rate sim) update     — 1/frame (camera, matrices, lights, animation) render     — 1/frame (GPU render passes) postRender — 1/frame (composites, post-FX, GPU submit) Inspired by: Unity     — FixedUpdate / Update / LateUpdate / OnPostRender Unreal    — TG_PrePhysics → TG_PostPhysics → TG_PostUpdateWork Bevy      — Extract → Prepare → Queue → Render → Cleanup Frostbite — Frame Graph (Setup → Compile → Execute) Complements engine/core/framegraph/FrameGraph.js which handles resource dependency scheduling; this handles execution scheduling.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/core/framepipeline/FramePipeline.md","moduleTitle":"core/framepipeline/FramePipeline","source":"engine/core/framepipeline/FramePipeline.js","import":"/engine/core/framepipeline/FramePipeline.js","sourceHash":"6671be18ac20a3231c14f07162db98da8415c2e9a24c1f669e868896b1adbc52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/framepipeline/FramePipeline.js#0000:FramePipeline","exportIndex":0,"name":"FramePipeline","kind":"class","signature":"class FramePipeline","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/framepipeline/index.md","moduleTitle":"core/framepipeline/index","source":"engine/core/framepipeline/index.js","import":"/engine/core/framepipeline/index.js","sourceHash":"20edf11fa75e20750065e58bc432587060b595c629edc59b8bf85ddf4a50c067","subsystem":"engine","recordType":"api-module","id":"module:engine/core/framepipeline/index.js","title":"core/framepipeline/index","summary":"Frame Pipeline — Barrel exports","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/core/framepipeline/index.md","moduleTitle":"core/framepipeline/index","source":"engine/core/framepipeline/index.js","import":"/engine/core/framepipeline/index.js","sourceHash":"20edf11fa75e20750065e58bc432587060b595c629edc59b8bf85ddf4a50c067","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/framepipeline/index.js#0000:FramePipeline","exportIndex":0,"name":"FramePipeline","kind":"re-export","signature":"FramePipeline","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/framepipeline/index.md","moduleTitle":"core/framepipeline/index","source":"engine/core/framepipeline/index.js","import":"/engine/core/framepipeline/index.js","sourceHash":"20edf11fa75e20750065e58bc432587060b595c629edc59b8bf85ddf4a50c067","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/framepipeline/index.js#0001:createFrameContext","exportIndex":1,"name":"createFrameContext","kind":"re-export","signature":"createFrameContext","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/AdaptiveQualityGovernor.md","moduleTitle":"core/gpu/AdaptiveQualityGovernor","source":"engine/core/gpu/AdaptiveQualityGovernor.js","import":"/engine/core/gpu/AdaptiveQualityGovernor.js","sourceHash":"607ee66799435b13cd72051f3f3278dfde4781b448ead2647d8b726b549efb84","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/AdaptiveQualityGovernor.js","title":"core/gpu/AdaptiveQualityGovernor","summary":"Canonical engine-wide adaptive quality decision maker. It emits one immutable decision per frame so downstream systems cannot independently compound degradations. Correctness requirements are intentionally absent from tiers.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/AdaptiveQualityGovernor.md","moduleTitle":"core/gpu/AdaptiveQualityGovernor","source":"engine/core/gpu/AdaptiveQualityGovernor.js","import":"/engine/core/gpu/AdaptiveQualityGovernor.js","sourceHash":"607ee66799435b13cd72051f3f3278dfde4781b448ead2647d8b726b549efb84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/AdaptiveQualityGovernor.js#0000:AdaptiveQualityGovernor","exportIndex":0,"name":"AdaptiveQualityGovernor","kind":"class","signature":"class AdaptiveQualityGovernor","summary":"Canonical engine-wide adaptive quality decision maker. It emits one immutable decision per frame so downstream systems cannot independently compound degradations. Correctness requirements are intentionally absent from tiers."}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/AdaptiveQualityGovernor.md","moduleTitle":"core/gpu/AdaptiveQualityGovernor","source":"engine/core/gpu/AdaptiveQualityGovernor.js","import":"/engine/core/gpu/AdaptiveQualityGovernor.js","sourceHash":"607ee66799435b13cd72051f3f3278dfde4781b448ead2647d8b726b549efb84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/AdaptiveQualityGovernor.js#0001:createAdaptiveQualityGovernor","exportIndex":1,"name":"createAdaptiveQualityGovernor","kind":"function","signature":"createAdaptiveQualityGovernor(options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/AdaptiveQualityGovernor.md","moduleTitle":"core/gpu/AdaptiveQualityGovernor","source":"engine/core/gpu/AdaptiveQualityGovernor.js","import":"/engine/core/gpu/AdaptiveQualityGovernor.js","sourceHash":"607ee66799435b13cd72051f3f3278dfde4781b448ead2647d8b726b549efb84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/AdaptiveQualityGovernor.js#0002:ADAPTIVE_QUALITY_TIERS","exportIndex":2,"name":"ADAPTIVE_QUALITY_TIERS","kind":"constant","signature":"ADAPTIVE_QUALITY_TIERS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/AsyncComputeScheduler.md","moduleTitle":"core/gpu/AsyncComputeScheduler","source":"engine/core/gpu/AsyncComputeScheduler.js","import":"/engine/core/gpu/AsyncComputeScheduler.js","sourceHash":"8a473e7374eb1e0d079c27b1a88cdb148b708b3daa6722b6932e68461cf490a6","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/AsyncComputeScheduler.js","title":"core/gpu/AsyncComputeScheduler","summary":"AsyncComputeScheduler - Manages async compute work","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/AsyncComputeScheduler.md","moduleTitle":"core/gpu/AsyncComputeScheduler","source":"engine/core/gpu/AsyncComputeScheduler.js","import":"/engine/core/gpu/AsyncComputeScheduler.js","sourceHash":"8a473e7374eb1e0d079c27b1a88cdb148b708b3daa6722b6932e68461cf490a6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/AsyncComputeScheduler.js#0000:AsyncComputeScheduler","exportIndex":0,"name":"AsyncComputeScheduler","kind":"class","signature":"class AsyncComputeScheduler","summary":"AsyncComputeScheduler - Manages async compute work"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/AsyncComputeScheduler.md","moduleTitle":"core/gpu/AsyncComputeScheduler","source":"engine/core/gpu/AsyncComputeScheduler.js","import":"/engine/core/gpu/AsyncComputeScheduler.js","sourceHash":"8a473e7374eb1e0d079c27b1a88cdb148b708b3daa6722b6932e68461cf490a6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/AsyncComputeScheduler.js#0001:ComputeWorkGroup","exportIndex":1,"name":"ComputeWorkGroup","kind":"class","signature":"class ComputeWorkGroup","summary":"ComputeWorkGroup - Helper for organizing related compute work"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/AsyncGPUWorkScheduler.md","moduleTitle":"core/gpu/AsyncGPUWorkScheduler","source":"engine/core/gpu/AsyncGPUWorkScheduler.js","import":"/engine/core/gpu/AsyncGPUWorkScheduler.js","sourceHash":"f27454c8b211f0838d9417e7656d6f2c9d9287bb34bc8f2c93ab3dbc821c4b6c","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/AsyncGPUWorkScheduler.js","title":"core/gpu/AsyncGPUWorkScheduler","summary":"Async GPU Work Scheduler - Intelligent queue submission batching Eliminates redundant queue submissions and optimizes GPU pipeline utilization Based on WebGPU best practices for minimizing CPU-GPU sync points","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/AsyncGPUWorkScheduler.md","moduleTitle":"core/gpu/AsyncGPUWorkScheduler","source":"engine/core/gpu/AsyncGPUWorkScheduler.js","import":"/engine/core/gpu/AsyncGPUWorkScheduler.js","sourceHash":"f27454c8b211f0838d9417e7656d6f2c9d9287bb34bc8f2c93ab3dbc821c4b6c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/AsyncGPUWorkScheduler.js#0000:AsyncGPUWorkScheduler","exportIndex":0,"name":"AsyncGPUWorkScheduler","kind":"class","signature":"class AsyncGPUWorkScheduler","summary":"Async GPU Work Scheduler - Intelligent queue submission batching Eliminates redundant queue submissions and optimizes GPU pipeline utilization Based on WebGPU best practices for minimizing CPU-GPU sync points"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/AsyncGPUWorkScheduler.md","moduleTitle":"core/gpu/AsyncGPUWorkScheduler","source":"engine/core/gpu/AsyncGPUWorkScheduler.js","import":"/engine/core/gpu/AsyncGPUWorkScheduler.js","sourceHash":"f27454c8b211f0838d9417e7656d6f2c9d9287bb34bc8f2c93ab3dbc821c4b6c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/AsyncGPUWorkScheduler.js#0001:GPUFrameCoordinator","exportIndex":1,"name":"GPUFrameCoordinator","kind":"class","signature":"class GPUFrameCoordinator","summary":"GPU Frame Coordinator - Coordinates GPU work across frame boundaries Implements triple-buffering and proper synchronization"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BindingSignals.md","moduleTitle":"core/gpu/BindingSignals","source":"engine/core/gpu/BindingSignals.js","import":"/engine/core/gpu/BindingSignals.js","sourceHash":"d18122e01ee9438766a060f1ea391a38304aa0be77fe75132a6142cc1b308957","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/BindingSignals.js","title":"core/gpu/BindingSignals","summary":"","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BindingSignals.md","moduleTitle":"core/gpu/BindingSignals","source":"engine/core/gpu/BindingSignals.js","import":"/engine/core/gpu/BindingSignals.js","sourceHash":"d18122e01ee9438766a060f1ea391a38304aa0be77fe75132a6142cc1b308957","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/BindingSignals.js#0000:ResourceSignal","exportIndex":0,"name":"ResourceSignal","kind":"class","signature":"class ResourceSignal","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BindingSignals.md","moduleTitle":"core/gpu/BindingSignals","source":"engine/core/gpu/BindingSignals.js","import":"/engine/core/gpu/BindingSignals.js","sourceHash":"d18122e01ee9438766a060f1ea391a38304aa0be77fe75132a6142cc1b308957","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/BindingSignals.js#0001:BindGroupSignals","exportIndex":1,"name":"BindGroupSignals","kind":"class","signature":"class BindGroupSignals","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BindingSignals.md","moduleTitle":"core/gpu/BindingSignals","source":"engine/core/gpu/BindingSignals.js","import":"/engine/core/gpu/BindingSignals.js","sourceHash":"d18122e01ee9438766a060f1ea391a38304aa0be77fe75132a6142cc1b308957","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/BindingSignals.js#0002:createSignal","exportIndex":2,"name":"createSignal","kind":"function","signature":"createSignal(value = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BindingSignals.md","moduleTitle":"core/gpu/BindingSignals","source":"engine/core/gpu/BindingSignals.js","import":"/engine/core/gpu/BindingSignals.js","sourceHash":"d18122e01ee9438766a060f1ea391a38304aa0be77fe75132a6142cc1b308957","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/BindingSignals.js#0003:generateWGSLBindGroupDeclarations","exportIndex":3,"name":"generateWGSLBindGroupDeclarations","kind":"function","signature":"generateWGSLBindGroupDeclarations(groupIndex, defs)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BitonicSort.md","moduleTitle":"core/gpu/BitonicSort","source":"engine/core/gpu/BitonicSort.js","import":"/engine/core/gpu/BitonicSort.js","sourceHash":"44a996852eaf804dad3e60c06f17699a9cef08ff99bf0f090888b1611c120c8a","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/BitonicSort.js","title":"core/gpu/BitonicSort","summary":"Calculate 30-bit Morton code for 3D position","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BitonicSort.md","moduleTitle":"core/gpu/BitonicSort","source":"engine/core/gpu/BitonicSort.js","import":"/engine/core/gpu/BitonicSort.js","sourceHash":"44a996852eaf804dad3e60c06f17699a9cef08ff99bf0f090888b1611c120c8a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/BitonicSort.js#0000:BitonicSorter","exportIndex":0,"name":"BitonicSorter","kind":"class","signature":"class BitonicSorter","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BitonicSort.md","moduleTitle":"core/gpu/BitonicSort","source":"engine/core/gpu/BitonicSort.js","import":"/engine/core/gpu/BitonicSort.js","sourceHash":"44a996852eaf804dad3e60c06f17699a9cef08ff99bf0f090888b1611c120c8a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/BitonicSort.js#0001:RadixSorter","exportIndex":1,"name":"RadixSorter","kind":"class","signature":"class RadixSorter","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BitonicSort.md","moduleTitle":"core/gpu/BitonicSort","source":"engine/core/gpu/BitonicSort.js","import":"/engine/core/gpu/BitonicSort.js","sourceHash":"44a996852eaf804dad3e60c06f17699a9cef08ff99bf0f090888b1611c120c8a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/BitonicSort.js#0002:encodeMorton3D","exportIndex":2,"name":"encodeMorton3D","kind":"function","signature":"encodeMorton3D(x, y, z)","summary":"Calculate 30-bit Morton code for 3D position"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BitonicSort.md","moduleTitle":"core/gpu/BitonicSort","source":"engine/core/gpu/BitonicSort.js","import":"/engine/core/gpu/BitonicSort.js","sourceHash":"44a996852eaf804dad3e60c06f17699a9cef08ff99bf0f090888b1611c120c8a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/BitonicSort.js#0003:positionToMorton","exportIndex":3,"name":"positionToMorton","kind":"function","signature":"positionToMorton(pos, boundsMin, boundsMax)","summary":"Calculate Morton code from world position"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BitonicSort.md","moduleTitle":"core/gpu/BitonicSort","source":"engine/core/gpu/BitonicSort.js","import":"/engine/core/gpu/BitonicSort.js","sourceHash":"44a996852eaf804dad3e60c06f17699a9cef08ff99bf0f090888b1611c120c8a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/BitonicSort.js#0004:bitonicSortCPU","exportIndex":4,"name":"bitonicSortCPU","kind":"function","signature":"bitonicSortCPU(keys, values)","summary":"CPU bitonic sort for small arrays or fallback"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BitonicSort.md","moduleTitle":"core/gpu/BitonicSort","source":"engine/core/gpu/BitonicSort.js","import":"/engine/core/gpu/BitonicSort.js","sourceHash":"44a996852eaf804dad3e60c06f17699a9cef08ff99bf0f090888b1611c120c8a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/BitonicSort.js#0005:SortKeyType","exportIndex":5,"name":"SortKeyType","kind":"constant","signature":"SortKeyType","summary":"Sort key types"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BitonicSort.md","moduleTitle":"core/gpu/BitonicSort","source":"engine/core/gpu/BitonicSort.js","import":"/engine/core/gpu/BitonicSort.js","sourceHash":"44a996852eaf804dad3e60c06f17699a9cef08ff99bf0f090888b1611c120c8a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/BitonicSort.js#0006:MAX_ELEMENTS","exportIndex":6,"name":"MAX_ELEMENTS","kind":"constant","signature":"MAX_ELEMENTS","summary":"Maximum elements (must be power of 2)"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BufferLayouts.md","moduleTitle":"core/gpu/BufferLayouts","source":"engine/core/gpu/BufferLayouts.js","import":"/engine/core/gpu/BufferLayouts.js","sourceHash":"19d45e826882b9b523cef0ac28fd49d61b1e67c692da168f52575560fb8f8d26","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/BufferLayouts.js","title":"core/gpu/BufferLayouts","summary":"Convert float to fixed-point integer","exportCount":32}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BufferLayouts.md","moduleTitle":"core/gpu/BufferLayouts","source":"engine/core/gpu/BufferLayouts.js","import":"/engine/core/gpu/BufferLayouts.js","sourceHash":"19d45e826882b9b523cef0ac28fd49d61b1e67c692da168f52575560fb8f8d26","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/BufferLayouts.js#0000:toFixed","exportIndex":0,"name":"toFixed","kind":"function","signature":"toFixed(value, scale = FIXED_SCALE)","summary":"Convert float to fixed-point integer"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BufferLayouts.md","moduleTitle":"core/gpu/BufferLayouts","source":"engine/core/gpu/BufferLayouts.js","import":"/engine/core/gpu/BufferLayouts.js","sourceHash":"19d45e826882b9b523cef0ac28fd49d61b1e67c692da168f52575560fb8f8d26","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/BufferLayouts.js#0001:fromFixed","exportIndex":1,"name":"fromFixed","kind":"function","signature":"fromFixed(fixed, scale = FIXED_SCALE)","summary":"Convert fixed-point integer back to float"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BufferLayouts.md","moduleTitle":"core/gpu/BufferLayouts","source":"engine/core/gpu/BufferLayouts.js","import":"/engine/core/gpu/BufferLayouts.js","sourceHash":"19d45e826882b9b523cef0ac28fd49d61b1e67c692da168f52575560fb8f8d26","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/BufferLayouts.js#0002:alignTo","exportIndex":2,"name":"alignTo","kind":"function","signature":"alignTo(size, align)","summary":"Align a size/offset to the specified boundary"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BufferLayouts.md","moduleTitle":"core/gpu/BufferLayouts","source":"engine/core/gpu/BufferLayouts.js","import":"/engine/core/gpu/BufferLayouts.js","sourceHash":"19d45e826882b9b523cef0ac28fd49d61b1e67c692da168f52575560fb8f8d26","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/BufferLayouts.js#0003:paddingFor","exportIndex":3,"name":"paddingFor","kind":"function","signature":"paddingFor(size, align)","summary":"Calculate padding needed to reach alignment"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BufferLayouts.md","moduleTitle":"core/gpu/BufferLayouts","source":"engine/core/gpu/BufferLayouts.js","import":"/engine/core/gpu/BufferLayouts.js","sourceHash":"19d45e826882b9b523cef0ac28fd49d61b1e67c692da168f52575560fb8f8d26","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/BufferLayouts.js#0004:isAligned","exportIndex":4,"name":"isAligned","kind":"function","signature":"isAligned(size, align)","summary":"Validate that a size meets alignment requirements"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BufferLayouts.md","moduleTitle":"core/gpu/BufferLayouts","source":"engine/core/gpu/BufferLayouts.js","import":"/engine/core/gpu/BufferLayouts.js","sourceHash":"19d45e826882b9b523cef0ac28fd49d61b1e67c692da168f52575560fb8f8d26","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/BufferLayouts.js#0005:getParticleBufferSizes","exportIndex":5,"name":"getParticleBufferSizes","kind":"function","signature":"getParticleBufferSizes(particleCount)","summary":"Calculate buffer sizes for particle system"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BufferLayouts.md","moduleTitle":"core/gpu/BufferLayouts","source":"engine/core/gpu/BufferLayouts.js","import":"/engine/core/gpu/BufferLayouts.js","sourceHash":"19d45e826882b9b523cef0ac28fd49d61b1e67c692da168f52575560fb8f8d26","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/BufferLayouts.js#0006:getGridBufferSizes","exportIndex":6,"name":"getGridBufferSizes","kind":"function","signature":"getGridBufferSizes(gridX, gridY, gridZ)","summary":"Calculate grid buffer size"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BufferLayouts.md","moduleTitle":"core/gpu/BufferLayouts","source":"engine/core/gpu/BufferLayouts.js","import":"/engine/core/gpu/BufferLayouts.js","sourceHash":"19d45e826882b9b523cef0ac28fd49d61b1e67c692da168f52575560fb8f8d26","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/BufferLayouts.js#0007:createAlignedBuffer","exportIndex":7,"name":"createAlignedBuffer","kind":"function","signature":"createAlignedBuffer(device, size, usage, label = '')","summary":"Create a WebGPU buffer with proper alignment"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BufferLayouts.md","moduleTitle":"core/gpu/BufferLayouts","source":"engine/core/gpu/BufferLayouts.js","import":"/engine/core/gpu/BufferLayouts.js","sourceHash":"19d45e826882b9b523cef0ac28fd49d61b1e67c692da168f52575560fb8f8d26","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/BufferLayouts.js#0008:createBufferWithData","exportIndex":8,"name":"createBufferWithData","kind":"function","signature":"createBufferWithData(device, data, usage, label = '')","summary":"Create a mapped buffer for initial data upload"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BufferLayouts.md","moduleTitle":"core/gpu/BufferLayouts","source":"engine/core/gpu/BufferLayouts.js","import":"/engine/core/gpu/BufferLayouts.js","sourceHash":"19d45e826882b9b523cef0ac28fd49d61b1e67c692da168f52575560fb8f8d26","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/BufferLayouts.js#0009:createUniformBuffer","exportIndex":9,"name":"createUniformBuffer","kind":"function","signature":"createUniformBuffer(device, size, label = '')","summary":"Create uniform buffer with proper padding"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BufferLayouts.md","moduleTitle":"core/gpu/BufferLayouts","source":"engine/core/gpu/BufferLayouts.js","import":"/engine/core/gpu/BufferLayouts.js","sourceHash":"19d45e826882b9b523cef0ac28fd49d61b1e67c692da168f52575560fb8f8d26","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/BufferLayouts.js#0010:generateWGSLStruct","exportIndex":10,"name":"generateWGSLStruct","kind":"function","signature":"generateWGSLStruct(name, layout)","summary":"Generate WGSL struct definition from layout"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BufferLayouts.md","moduleTitle":"core/gpu/BufferLayouts","source":"engine/core/gpu/BufferLayouts.js","import":"/engine/core/gpu/BufferLayouts.js","sourceHash":"19d45e826882b9b523cef0ac28fd49d61b1e67c692da168f52575560fb8f8d26","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/BufferLayouts.js#0011:UNIFORM_ALIGN","exportIndex":11,"name":"UNIFORM_ALIGN","kind":"constant","signature":"UNIFORM_ALIGN","summary":"Uniform buffer alignment (must be 16 bytes)"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BufferLayouts.md","moduleTitle":"core/gpu/BufferLayouts","source":"engine/core/gpu/BufferLayouts.js","import":"/engine/core/gpu/BufferLayouts.js","sourceHash":"19d45e826882b9b523cef0ac28fd49d61b1e67c692da168f52575560fb8f8d26","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/BufferLayouts.js#0012:STORAGE_ALIGN","exportIndex":12,"name":"STORAGE_ALIGN","kind":"constant","signature":"STORAGE_ALIGN","summary":"Storage buffer preferred alignment (4 bytes min, 16 for performance)"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BufferLayouts.md","moduleTitle":"core/gpu/BufferLayouts","source":"engine/core/gpu/BufferLayouts.js","import":"/engine/core/gpu/BufferLayouts.js","sourceHash":"19d45e826882b9b523cef0ac28fd49d61b1e67c692da168f52575560fb8f8d26","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/BufferLayouts.js#0013:INDIRECT_ALIGN","exportIndex":13,"name":"INDIRECT_ALIGN","kind":"constant","signature":"INDIRECT_ALIGN","summary":"Indirect dispatch buffer alignment"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BufferLayouts.md","moduleTitle":"core/gpu/BufferLayouts","source":"engine/core/gpu/BufferLayouts.js","import":"/engine/core/gpu/BufferLayouts.js","sourceHash":"19d45e826882b9b523cef0ac28fd49d61b1e67c692da168f52575560fb8f8d26","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/BufferLayouts.js#0014:MIN_WORKGROUP","exportIndex":14,"name":"MIN_WORKGROUP","kind":"constant","signature":"MIN_WORKGROUP","summary":"Minimum workgroup size for good occupancy"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BufferLayouts.md","moduleTitle":"core/gpu/BufferLayouts","source":"engine/core/gpu/BufferLayouts.js","import":"/engine/core/gpu/BufferLayouts.js","sourceHash":"19d45e826882b9b523cef0ac28fd49d61b1e67c692da168f52575560fb8f8d26","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/BufferLayouts.js#0015:MAX_WORKGROUP","exportIndex":15,"name":"MAX_WORKGROUP","kind":"constant","signature":"MAX_WORKGROUP","summary":"Maximum workgroup size (WebGPU limit)"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BufferLayouts.md","moduleTitle":"core/gpu/BufferLayouts","source":"engine/core/gpu/BufferLayouts.js","import":"/engine/core/gpu/BufferLayouts.js","sourceHash":"19d45e826882b9b523cef0ac28fd49d61b1e67c692da168f52575560fb8f8d26","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/BufferLayouts.js#0016:FIXED_SCALE","exportIndex":16,"name":"FIXED_SCALE","kind":"constant","signature":"FIXED_SCALE","summary":"WebGPU/WGSL has no native atomicAdd for f32. Solution: Scale floats to integers, use atomicAdd on i32, then descale. FIXED_SCALE = 10000 gives us: - 4 decimal places of precision - Range: ±214,748 (i32 max / 10000) - Good for velocities, forces, densities"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BufferLayouts.md","moduleTitle":"core/gpu/BufferLayouts","source":"engine/core/gpu/BufferLayouts.js","import":"/engine/core/gpu/BufferLayouts.js","sourceHash":"19d45e826882b9b523cef0ac28fd49d61b1e67c692da168f52575560fb8f8d26","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/BufferLayouts.js#0017:FIXED_SCALE_INV","exportIndex":17,"name":"FIXED_SCALE_INV","kind":"constant","signature":"FIXED_SCALE_INV","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BufferLayouts.md","moduleTitle":"core/gpu/BufferLayouts","source":"engine/core/gpu/BufferLayouts.js","import":"/engine/core/gpu/BufferLayouts.js","sourceHash":"19d45e826882b9b523cef0ac28fd49d61b1e67c692da168f52575560fb8f8d26","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/BufferLayouts.js#0018:FIXED_SCALE_HI","exportIndex":18,"name":"FIXED_SCALE_HI","kind":"constant","signature":"FIXED_SCALE_HI","summary":"High precision scale for positions (6 decimal places) Range: ±2147 units - use only for local coordinates"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BufferLayouts.md","moduleTitle":"core/gpu/BufferLayouts","source":"engine/core/gpu/BufferLayouts.js","import":"/engine/core/gpu/BufferLayouts.js","sourceHash":"19d45e826882b9b523cef0ac28fd49d61b1e67c692da168f52575560fb8f8d26","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/BufferLayouts.js#0019:FIXED_SCALE_HI_INV","exportIndex":19,"name":"FIXED_SCALE_HI_INV","kind":"constant","signature":"FIXED_SCALE_HI_INV","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BufferLayouts.md","moduleTitle":"core/gpu/BufferLayouts","source":"engine/core/gpu/BufferLayouts.js","import":"/engine/core/gpu/BufferLayouts.js","sourceHash":"19d45e826882b9b523cef0ac28fd49d61b1e67c692da168f52575560fb8f8d26","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/BufferLayouts.js#0020:TYPE_SIZES","exportIndex":20,"name":"TYPE_SIZES","kind":"constant","signature":"TYPE_SIZES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BufferLayouts.md","moduleTitle":"core/gpu/BufferLayouts","source":"engine/core/gpu/BufferLayouts.js","import":"/engine/core/gpu/BufferLayouts.js","sourceHash":"19d45e826882b9b523cef0ac28fd49d61b1e67c692da168f52575560fb8f8d26","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/BufferLayouts.js#0021:PARTICLE_LAYOUT","exportIndex":21,"name":"PARTICLE_LAYOUT","kind":"constant","signature":"PARTICLE_LAYOUT","summary":"MLS-MPM Particle SoA Layout Buffer 0: Position + Mass (vec4f) - 16 bytes [x, y, z, mass] Buffer 1: Velocity + Padding (vec4f) - 16 bytes [vx, vy, vz, pad] Buffer 2: Deformation Gradient (mat3x3f) - 48 bytes Row-major 3x3 matrix for plasticity Buffer 3: Affine Momentum (mat3x3f) - 48 bytes APIC affine velocity field Total per particle: 128 bytes"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BufferLayouts.md","moduleTitle":"core/gpu/BufferLayouts","source":"engine/core/gpu/BufferLayouts.js","import":"/engine/core/gpu/BufferLayouts.js","sourceHash":"19d45e826882b9b523cef0ac28fd49d61b1e67c692da168f52575560fb8f8d26","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/BufferLayouts.js#0022:GRID_CELL_LAYOUT","exportIndex":22,"name":"GRID_CELL_LAYOUT","kind":"constant","signature":"GRID_CELL_LAYOUT","summary":"MLS-MPM Grid Cell Layout (Fixed-Point for Atomics) Each cell stores accumulated values from P2G scatter. Uses atomic<i32> for thread-safe accumulation. Momentum: vec3 as 3x atomic<i32> - 12 bytes [mom_x, mom_y, mom_z] (fixed-point scaled) Mass: atomic<i32> - 4 bytes (fixed-point scaled) Total per cell: 16 bytes (nicely aligned)"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BufferLayouts.md","moduleTitle":"core/gpu/BufferLayouts","source":"engine/core/gpu/BufferLayouts.js","import":"/engine/core/gpu/BufferLayouts.js","sourceHash":"19d45e826882b9b523cef0ac28fd49d61b1e67c692da168f52575560fb8f8d26","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/BufferLayouts.js#0023:GRID_VELOCITY_LAYOUT","exportIndex":23,"name":"GRID_VELOCITY_LAYOUT","kind":"constant","signature":"GRID_VELOCITY_LAYOUT","summary":"Grid velocity output (after grid update) Standard f32 for reading in G2P"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BufferLayouts.md","moduleTitle":"core/gpu/BufferLayouts","source":"engine/core/gpu/BufferLayouts.js","import":"/engine/core/gpu/BufferLayouts.js","sourceHash":"19d45e826882b9b523cef0ac28fd49d61b1e67c692da168f52575560fb8f8d26","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/BufferLayouts.js#0024:FDTD_CELL_LAYOUT","exportIndex":24,"name":"FDTD_CELL_LAYOUT","kind":"constant","signature":"FDTD_CELL_LAYOUT","summary":"FDTD Electromagnetic Field Cell Electric Displacement D: vec3f - 12 bytes (padded to 16) Magnetic Induction B: vec3f - 12 bytes (padded to 16) Permittivity ε: f32 - 4 bytes Permeability μ: f32 - 4 bytes Padding: 8 bytes Total: 48 bytes per cell"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BufferLayouts.md","moduleTitle":"core/gpu/BufferLayouts","source":"engine/core/gpu/BufferLayouts.js","import":"/engine/core/gpu/BufferLayouts.js","sourceHash":"19d45e826882b9b523cef0ac28fd49d61b1e67c692da168f52575560fb8f8d26","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/BufferLayouts.js#0025:PHASOR_RAY_LAYOUT","exportIndex":25,"name":"PHASOR_RAY_LAYOUT","kind":"constant","signature":"PHASOR_RAY_LAYOUT","summary":"Phasor Ray Layout Position: vec3f - 12 bytes (padded to 16) Direction: vec3f - 12 bytes (padded to 16) Amplitude, Frequency, Phase, Pad: vec4f - 16 bytes Total: 48 bytes per ray"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BufferLayouts.md","moduleTitle":"core/gpu/BufferLayouts","source":"engine/core/gpu/BufferLayouts.js","import":"/engine/core/gpu/BufferLayouts.js","sourceHash":"19d45e826882b9b523cef0ac28fd49d61b1e67c692da168f52575560fb8f8d26","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/BufferLayouts.js#0026:INDIRECT_DISPATCH_LAYOUT","exportIndex":26,"name":"INDIRECT_DISPATCH_LAYOUT","kind":"constant","signature":"INDIRECT_DISPATCH_LAYOUT","summary":"Indirect dispatch buffer layout"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BufferLayouts.md","moduleTitle":"core/gpu/BufferLayouts","source":"engine/core/gpu/BufferLayouts.js","import":"/engine/core/gpu/BufferLayouts.js","sourceHash":"19d45e826882b9b523cef0ac28fd49d61b1e67c692da168f52575560fb8f8d26","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/BufferLayouts.js#0027:INDIRECT_DRAW_LAYOUT","exportIndex":27,"name":"INDIRECT_DRAW_LAYOUT","kind":"constant","signature":"INDIRECT_DRAW_LAYOUT","summary":"Indirect draw buffer layout (for instanced rendering)"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BufferLayouts.md","moduleTitle":"core/gpu/BufferLayouts","source":"engine/core/gpu/BufferLayouts.js","import":"/engine/core/gpu/BufferLayouts.js","sourceHash":"19d45e826882b9b523cef0ac28fd49d61b1e67c692da168f52575560fb8f8d26","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/BufferLayouts.js#0028:DIRTY_CHUNK_LAYOUT","exportIndex":28,"name":"DIRTY_CHUNK_LAYOUT","kind":"constant","signature":"DIRTY_CHUNK_LAYOUT","summary":"Dirty chunk entry for conditional dispatch"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BufferLayouts.md","moduleTitle":"core/gpu/BufferLayouts","source":"engine/core/gpu/BufferLayouts.js","import":"/engine/core/gpu/BufferLayouts.js","sourceHash":"19d45e826882b9b523cef0ac28fd49d61b1e67c692da168f52575560fb8f8d26","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/BufferLayouts.js#0029:DIRTY_FLAGS","exportIndex":29,"name":"DIRTY_FLAGS","kind":"constant","signature":"DIRTY_FLAGS","summary":"Dirty flags bitmask"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BufferLayouts.md","moduleTitle":"core/gpu/BufferLayouts","source":"engine/core/gpu/BufferLayouts.js","import":"/engine/core/gpu/BufferLayouts.js","sourceHash":"19d45e826882b9b523cef0ac28fd49d61b1e67c692da168f52575560fb8f8d26","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/BufferLayouts.js#0030:WGSL_FIXED_POINT","exportIndex":30,"name":"WGSL_FIXED_POINT","kind":"constant","signature":"WGSL_FIXED_POINT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BufferLayouts.md","moduleTitle":"core/gpu/BufferLayouts","source":"engine/core/gpu/BufferLayouts.js","import":"/engine/core/gpu/BufferLayouts.js","sourceHash":"19d45e826882b9b523cef0ac28fd49d61b1e67c692da168f52575560fb8f8d26","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/BufferLayouts.js#0031:WGSL_GRID_INDEX","exportIndex":31,"name":"WGSL_GRID_INDEX","kind":"constant","signature":"WGSL_GRID_INDEX","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BufferPool.md","moduleTitle":"core/gpu/BufferPool","source":"engine/core/gpu/BufferPool.js","import":"/engine/core/gpu/BufferPool.js","sourceHash":"3b924d0fe4710b368dba52283d8dfb4262c707a006862fd09d3357d4bcc9d6af","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/BufferPool.js","title":"core/gpu/BufferPool","summary":"GPU Buffer Pool - Zero-allocation buffer recycling Eliminates per-frame buffer creation overhead","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BufferPool.md","moduleTitle":"core/gpu/BufferPool","source":"engine/core/gpu/BufferPool.js","import":"/engine/core/gpu/BufferPool.js","sourceHash":"3b924d0fe4710b368dba52283d8dfb4262c707a006862fd09d3357d4bcc9d6af","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/BufferPool.js#0000:BufferPool","exportIndex":0,"name":"BufferPool","kind":"class","signature":"class BufferPool","summary":"GPU Buffer Pool - Zero-allocation buffer recycling Eliminates per-frame buffer creation overhead"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/BufferPool.md","moduleTitle":"core/gpu/BufferPool","source":"engine/core/gpu/BufferPool.js","import":"/engine/core/gpu/BufferPool.js","sourceHash":"3b924d0fe4710b368dba52283d8dfb4262c707a006862fd09d3357d4bcc9d6af","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/BufferPool.js#0001:StagingBufferRing","exportIndex":1,"name":"StagingBufferRing","kind":"class","signature":"class StagingBufferRing","summary":"Ring buffer for staging data - eliminates mapAsync stalls"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/ComputeBatchSystem.md","moduleTitle":"core/gpu/ComputeBatchSystem","source":"engine/core/gpu/ComputeBatchSystem.js","import":"/engine/core/gpu/ComputeBatchSystem.js","sourceHash":"2c9937139965ef355ab79af3105d1a87f344c326ca6f3db8ad2d313a8e121d1a","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/ComputeBatchSystem.js","title":"core/gpu/ComputeBatchSystem","summary":"Compute Batch System - Parallel GPU compute with indirect dispatch Enables dynamic workgroup sizing and batched compute operations","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/ComputeBatchSystem.md","moduleTitle":"core/gpu/ComputeBatchSystem","source":"engine/core/gpu/ComputeBatchSystem.js","import":"/engine/core/gpu/ComputeBatchSystem.js","sourceHash":"2c9937139965ef355ab79af3105d1a87f344c326ca6f3db8ad2d313a8e121d1a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/ComputeBatchSystem.js#0000:ComputeBatchSystem","exportIndex":0,"name":"ComputeBatchSystem","kind":"class","signature":"class ComputeBatchSystem","summary":"Compute Batch System - Parallel GPU compute with indirect dispatch Enables dynamic workgroup sizing and batched compute operations"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/DynamicUniformBuffer.md","moduleTitle":"core/gpu/DynamicUniformBuffer","source":"engine/core/gpu/DynamicUniformBuffer.js","import":"/engine/core/gpu/DynamicUniformBuffer.js","sourceHash":"d480a761024c26e307d25f66178bce9dbcd0df741c3299efe22ea85358dc4c7e","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/DynamicUniformBuffer.js","title":"core/gpu/DynamicUniformBuffer","summary":"DynamicUniformBuffer.js - Self-sizing uniform buffer from WGSL struct Pass in your WGSL struct definition (the same string embedded in your shader) and this class handles: - Parsing field names, types, and byte offsets (with correct WGSL alignment) - Creating the GPU buffer at exactly the right size - Typed CPU-side Float32Array + Uint32Array views - Named setters: buf.set('sunDir', [0.2, -1.0, 0.1]) - Bulk setter: buf.setAll({ viewProj: mat, cameraPos: [x,y,z] }) - Single upload() call to push to GPU Usage: const frame = new DynamicUniformBuffer(device, `struct FrameUniforms { viewProj: mat4x4<f32>, cameraPos: vec3<f32>, time: f32, sunDir: vec3<f32>, sunIntensity: f32, }`, 'MyFrame'); frame.set('viewProj', viewProjMatrix); frame.set('cameraPos', [x, y, z]); frame.set('sunDir', lightManager.sunDirection); frame.set('sunIntensity', 1.85); frame.upload(); // Or bulk: frame.setAll({ viewProj: mat, cameraPos: pos, sunDir: dir, sunIntensity: 1.0 }); frame.upload(); // Use in bind group: { binding: 0, resource: { buffer: frame.buffer } }","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/DynamicUniformBuffer.md","moduleTitle":"core/gpu/DynamicUniformBuffer","source":"engine/core/gpu/DynamicUniformBuffer.js","import":"/engine/core/gpu/DynamicUniformBuffer.js","sourceHash":"d480a761024c26e307d25f66178bce9dbcd0df741c3299efe22ea85358dc4c7e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/DynamicUniformBuffer.js#0000:DynamicUniformBuffer","exportIndex":0,"name":"DynamicUniformBuffer","kind":"class","signature":"class DynamicUniformBuffer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/DynamicUniformBuffer.md","moduleTitle":"core/gpu/DynamicUniformBuffer","source":"engine/core/gpu/DynamicUniformBuffer.js","import":"/engine/core/gpu/DynamicUniformBuffer.js","sourceHash":"d480a761024c26e307d25f66178bce9dbcd0df741c3299efe22ea85358dc4c7e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/DynamicUniformBuffer.js#0001:parseLayout","exportIndex":1,"name":"parseLayout","kind":"re-export","signature":"parseLayout","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GPUPageAllocator.md","moduleTitle":"core/gpu/GPUPageAllocator","source":"engine/core/gpu/GPUPageAllocator.js","import":"/engine/core/gpu/GPUPageAllocator.js","sourceHash":"697688a3edb04d19960967ad36cb0c2a82f5d7111c15006c69e4c16dc787c01a","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/GPUPageAllocator.js","title":"core/gpu/GPUPageAllocator","summary":"GPUPageAllocator - Virtual heap for GPU memory","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GPUPageAllocator.md","moduleTitle":"core/gpu/GPUPageAllocator","source":"engine/core/gpu/GPUPageAllocator.js","import":"/engine/core/gpu/GPUPageAllocator.js","sourceHash":"697688a3edb04d19960967ad36cb0c2a82f5d7111c15006c69e4c16dc787c01a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GPUPageAllocator.js#0000:GPUPageAllocator","exportIndex":0,"name":"GPUPageAllocator","kind":"class","signature":"class GPUPageAllocator","summary":"GPUPageAllocator - Virtual heap for GPU memory"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GPUPageAllocator.md","moduleTitle":"core/gpu/GPUPageAllocator","source":"engine/core/gpu/GPUPageAllocator.js","import":"/engine/core/gpu/GPUPageAllocator.js","sourceHash":"697688a3edb04d19960967ad36cb0c2a82f5d7111c15006c69e4c16dc787c01a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GPUPageAllocator.js#0001:GPU_PAGE_WGSL","exportIndex":1,"name":"GPU_PAGE_WGSL","kind":"constant","signature":"GPU_PAGE_WGSL","summary":"WGSL shader helper for page indirection"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GPUProfiler.md","moduleTitle":"core/gpu/GPUProfiler","source":"engine/core/gpu/GPUProfiler.js","import":"/engine/core/gpu/GPUProfiler.js","sourceHash":"b4b6955c96ef747e74f3462006128a5d86c6a53c784f3cdc37dc1c10817ef25c","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/GPUProfiler.js","title":"core/gpu/GPUProfiler","summary":"GPUProfiler - Timestamp query-based GPU profiling","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GPUProfiler.md","moduleTitle":"core/gpu/GPUProfiler","source":"engine/core/gpu/GPUProfiler.js","import":"/engine/core/gpu/GPUProfiler.js","sourceHash":"b4b6955c96ef747e74f3462006128a5d86c6a53c784f3cdc37dc1c10817ef25c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GPUProfiler.js#0000:GPUProfiler","exportIndex":0,"name":"GPUProfiler","kind":"class","signature":"class GPUProfiler","summary":"GPUProfiler - Timestamp query-based GPU profiling"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GPURandom.md","moduleTitle":"core/gpu/GPURandom","source":"engine/core/gpu/GPURandom.js","import":"/engine/core/gpu/GPURandom.js","sourceHash":"908b478d2da89d7e897263eff68390603fef7960455ca2f7b080e2df4fe4fa51","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/GPURandom.js","title":"core/gpu/GPURandom","summary":"RNG state wrapper for sequential random number generation","exportCount":23}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GPURandom.md","moduleTitle":"core/gpu/GPURandom","source":"engine/core/gpu/GPURandom.js","import":"/engine/core/gpu/GPURandom.js","sourceHash":"908b478d2da89d7e897263eff68390603fef7960455ca2f7b080e2df4fe4fa51","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GPURandom.js#0000:PCGRandom","exportIndex":0,"name":"PCGRandom","kind":"class","signature":"class PCGRandom","summary":"RNG state wrapper for sequential random number generation"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GPURandom.md","moduleTitle":"core/gpu/GPURandom","source":"engine/core/gpu/GPURandom.js","import":"/engine/core/gpu/GPURandom.js","sourceHash":"908b478d2da89d7e897263eff68390603fef7960455ca2f7b080e2df4fe4fa51","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GPURandom.js#0001:DeterministicRNG","exportIndex":1,"name":"DeterministicRNG","kind":"class","signature":"class DeterministicRNG","summary":"Deterministic RNG for multiplayer synchronization. All clients with the same seed produce identical sequences. Usage: - World generation: seed with worldSeed + chunkCoords - AI decisions: seed with entityId + gameTick - Combat rolls: seed with attackerId + defenderId + gameTick - Loot drops: seed with containerId + gameTick"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GPURandom.md","moduleTitle":"core/gpu/GPURandom","source":"engine/core/gpu/GPURandom.js","import":"/engine/core/gpu/GPURandom.js","sourceHash":"908b478d2da89d7e897263eff68390603fef7960455ca2f7b080e2df4fe4fa51","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GPURandom.js#0002:pcgHash","exportIndex":2,"name":"pcgHash","kind":"function","signature":"pcgHash(v)","summary":"PCG hash function - high quality, fast"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GPURandom.md","moduleTitle":"core/gpu/GPURandom","source":"engine/core/gpu/GPURandom.js","import":"/engine/core/gpu/GPURandom.js","sourceHash":"908b478d2da89d7e897263eff68390603fef7960455ca2f7b080e2df4fe4fa51","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GPURandom.js#0003:hash2D","exportIndex":3,"name":"hash2D","kind":"function","signature":"hash2D(x, y)","summary":"Hash 2D coordinates"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GPURandom.md","moduleTitle":"core/gpu/GPURandom","source":"engine/core/gpu/GPURandom.js","import":"/engine/core/gpu/GPURandom.js","sourceHash":"908b478d2da89d7e897263eff68390603fef7960455ca2f7b080e2df4fe4fa51","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GPURandom.js#0004:hash3D","exportIndex":4,"name":"hash3D","kind":"function","signature":"hash3D(x, y, z)","summary":"Hash 3D coordinates"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GPURandom.md","moduleTitle":"core/gpu/GPURandom","source":"engine/core/gpu/GPURandom.js","import":"/engine/core/gpu/GPURandom.js","sourceHash":"908b478d2da89d7e897263eff68390603fef7960455ca2f7b080e2df4fe4fa51","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GPURandom.js#0005:initRngState","exportIndex":5,"name":"initRngState","kind":"function","signature":"initRngState(pixelX, pixelY, frame, sampleIdx = 0)","summary":"Initialize RNG state for deterministic per-pixel random"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GPURandom.md","moduleTitle":"core/gpu/GPURandom","source":"engine/core/gpu/GPURandom.js","import":"/engine/core/gpu/GPURandom.js","sourceHash":"908b478d2da89d7e897263eff68390603fef7960455ca2f7b080e2df4fe4fa51","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GPURandom.js#0006:accumulationWeight","exportIndex":6,"name":"accumulationWeight","kind":"function","signature":"accumulationWeight(frameIndex)","summary":"Calculate accumulation weight for progressive rendering"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GPURandom.md","moduleTitle":"core/gpu/GPURandom","source":"engine/core/gpu/GPURandom.js","import":"/engine/core/gpu/GPURandom.js","sourceHash":"908b478d2da89d7e897263eff68390603fef7960455ca2f7b080e2df4fe4fa51","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GPURandom.js#0007:accumulateColor","exportIndex":7,"name":"accumulateColor","kind":"function","signature":"accumulateColor(oldColor, newColor, frameIndex)","summary":"Accumulate color over frames (progressive rendering)"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GPURandom.md","moduleTitle":"core/gpu/GPURandom","source":"engine/core/gpu/GPURandom.js","import":"/engine/core/gpu/GPURandom.js","sourceHash":"908b478d2da89d7e897263eff68390603fef7960455ca2f7b080e2df4fe4fa51","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GPURandom.js#0008:accumulateEMA","exportIndex":8,"name":"accumulateEMA","kind":"function","signature":"accumulateEMA(oldColor, newColor, alpha)","summary":"Exponential moving average accumulation (real-time, non-converging)"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GPURandom.md","moduleTitle":"core/gpu/GPURandom","source":"engine/core/gpu/GPURandom.js","import":"/engine/core/gpu/GPURandom.js","sourceHash":"908b478d2da89d7e897263eff68390603fef7960455ca2f7b080e2df4fe4fa51","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GPURandom.js#0009:wavelengthToRGB","exportIndex":9,"name":"wavelengthToRGB","kind":"function","signature":"wavelengthToRGB(wavelength)","summary":"Convert wavelength (nm) to RGB color"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GPURandom.md","moduleTitle":"core/gpu/GPURandom","source":"engine/core/gpu/GPURandom.js","import":"/engine/core/gpu/GPURandom.js","sourceHash":"908b478d2da89d7e897263eff68390603fef7960455ca2f7b080e2df4fe4fa51","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GPURandom.js#0010:spectralHeatMap","exportIndex":10,"name":"spectralHeatMap","kind":"function","signature":"spectralHeatMap(t)","summary":"Map normalized value to spectral color (violet to red)"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GPURandom.md","moduleTitle":"core/gpu/GPURandom","source":"engine/core/gpu/GPURandom.js","import":"/engine/core/gpu/GPURandom.js","sourceHash":"908b478d2da89d7e897263eff68390603fef7960455ca2f7b080e2df4fe4fa51","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GPURandom.js#0011:countToSpectral","exportIndex":11,"name":"countToSpectral","kind":"function","signature":"countToSpectral(count, cutoff)","summary":"Map count to spectral color with cutoff"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GPURandom.md","moduleTitle":"core/gpu/GPURandom","source":"engine/core/gpu/GPURandom.js","import":"/engine/core/gpu/GPURandom.js","sourceHash":"908b478d2da89d7e897263eff68390603fef7960455ca2f7b080e2df4fe4fa51","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GPURandom.js#0012:blueNoiseOffset","exportIndex":12,"name":"blueNoiseOffset","kind":"function","signature":"blueNoiseOffset(sampleIndex)","summary":"Generate blue noise sample offset for a pixel Uses R2 sequence (generalized golden ratio) for low-discrepancy sampling"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GPURandom.md","moduleTitle":"core/gpu/GPURandom","source":"engine/core/gpu/GPURandom.js","import":"/engine/core/gpu/GPURandom.js","sourceHash":"908b478d2da89d7e897263eff68390603fef7960455ca2f7b080e2df4fe4fa51","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GPURandom.js#0013:r2Sequence3D","exportIndex":13,"name":"r2Sequence3D","kind":"function","signature":"r2Sequence3D(sampleIndex)","summary":"R2 sequence for 3D sampling (quasi-random, low discrepancy)"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GPURandom.md","moduleTitle":"core/gpu/GPURandom","source":"engine/core/gpu/GPURandom.js","import":"/engine/core/gpu/GPURandom.js","sourceHash":"908b478d2da89d7e897263eff68390603fef7960455ca2f7b080e2df4fe4fa51","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GPURandom.js#0014:halton","exportIndex":14,"name":"halton","kind":"function","signature":"halton(index, base)","summary":"Halton sequence for quasi-random sampling"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GPURandom.md","moduleTitle":"core/gpu/GPURandom","source":"engine/core/gpu/GPURandom.js","import":"/engine/core/gpu/GPURandom.js","sourceHash":"908b478d2da89d7e897263eff68390603fef7960455ca2f7b080e2df4fe4fa51","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GPURandom.js#0015:halton2D","exportIndex":15,"name":"halton2D","kind":"function","signature":"halton2D(index)","summary":"2D Halton sequence"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GPURandom.md","moduleTitle":"core/gpu/GPURandom","source":"engine/core/gpu/GPURandom.js","import":"/engine/core/gpu/GPURandom.js","sourceHash":"908b478d2da89d7e897263eff68390603fef7960455ca2f7b080e2df4fe4fa51","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GPURandom.js#0016:halton3D","exportIndex":16,"name":"halton3D","kind":"function","signature":"halton3D(index)","summary":"3D Halton sequence"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GPURandom.md","moduleTitle":"core/gpu/GPURandom","source":"engine/core/gpu/GPURandom.js","import":"/engine/core/gpu/GPURandom.js","sourceHash":"908b478d2da89d7e897263eff68390603fef7960455ca2f7b080e2df4fe4fa51","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GPURandom.js#0017:GPU_RANDOM_CORE_WGSL","exportIndex":17,"name":"GPU_RANDOM_CORE_WGSL","kind":"constant","signature":"GPU_RANDOM_CORE_WGSL","summary":"WGSL code for PCG hash and random number generation Include this in your compute shaders for high-quality randomness"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GPURandom.md","moduleTitle":"core/gpu/GPURandom","source":"engine/core/gpu/GPURandom.js","import":"/engine/core/gpu/GPURandom.js","sourceHash":"908b478d2da89d7e897263eff68390603fef7960455ca2f7b080e2df4fe4fa51","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GPURandom.js#0018:GPU_RANDOM_WGSL","exportIndex":18,"name":"GPU_RANDOM_WGSL","kind":"constant","signature":"GPU_RANDOM_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GPURandom.md","moduleTitle":"core/gpu/GPURandom","source":"engine/core/gpu/GPURandom.js","import":"/engine/core/gpu/GPURandom.js","sourceHash":"908b478d2da89d7e897263eff68390603fef7960455ca2f7b080e2df4fe4fa51","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GPURandom.js#0019:TAA_JITTER_WGSL","exportIndex":19,"name":"TAA_JITTER_WGSL","kind":"constant","signature":"TAA_JITTER_WGSL","summary":"WGSL snippet for jittered sampling in TAA"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GPURandom.md","moduleTitle":"core/gpu/GPURandom","source":"engine/core/gpu/GPURandom.js","import":"/engine/core/gpu/GPURandom.js","sourceHash":"908b478d2da89d7e897263eff68390603fef7960455ca2f7b080e2df4fe4fa51","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GPURandom.js#0020:STRATIFIED_SAMPLE_WGSL","exportIndex":20,"name":"STRATIFIED_SAMPLE_WGSL","kind":"constant","signature":"STRATIFIED_SAMPLE_WGSL","summary":"WGSL snippet for stratified sampling"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GPURandom.md","moduleTitle":"core/gpu/GPURandom","source":"engine/core/gpu/GPURandom.js","import":"/engine/core/gpu/GPURandom.js","sourceHash":"908b478d2da89d7e897263eff68390603fef7960455ca2f7b080e2df4fe4fa51","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GPURandom.js#0021:MULTIPLAYER_RANDOM_CORE_WGSL","exportIndex":21,"name":"MULTIPLAYER_RANDOM_CORE_WGSL","kind":"constant","signature":"MULTIPLAYER_RANDOM_CORE_WGSL","summary":"WGSL code for multiplayer-deterministic random Seeds with tick + entityId for synchronized random across clients"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GPURandom.md","moduleTitle":"core/gpu/GPURandom","source":"engine/core/gpu/GPURandom.js","import":"/engine/core/gpu/GPURandom.js","sourceHash":"908b478d2da89d7e897263eff68390603fef7960455ca2f7b080e2df4fe4fa51","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GPURandom.js#0022:MULTIPLAYER_RANDOM_WGSL","exportIndex":22,"name":"MULTIPLAYER_RANDOM_WGSL","kind":"constant","signature":"MULTIPLAYER_RANDOM_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GPUTimestampProfiler.md","moduleTitle":"core/gpu/GPUTimestampProfiler","source":"engine/core/gpu/GPUTimestampProfiler.js","import":"/engine/core/gpu/GPUTimestampProfiler.js","sourceHash":"ed814a202c2d07bdb6e5a40e45d3a14f8e398e413884e353fcd28b6befa734a9","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/GPUTimestampProfiler.js","title":"core/gpu/GPUTimestampProfiler","summary":"GPUTimestampProfiler - Precise GPU timing using timestamp queries. Requires the optional `timestamp-query` feature.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GPUTimestampProfiler.md","moduleTitle":"core/gpu/GPUTimestampProfiler","source":"engine/core/gpu/GPUTimestampProfiler.js","import":"/engine/core/gpu/GPUTimestampProfiler.js","sourceHash":"ed814a202c2d07bdb6e5a40e45d3a14f8e398e413884e353fcd28b6befa734a9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GPUTimestampProfiler.js#0000:GPUTimestampProfiler","exportIndex":0,"name":"GPUTimestampProfiler","kind":"class","signature":"class GPUTimestampProfiler","summary":"GPUTimestampProfiler - Precise GPU timing using timestamp queries. Requires the optional `timestamp-query` feature."}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuBuffer.md","moduleTitle":"core/gpu/GpuBuffer","source":"engine/core/gpu/GpuBuffer.js","import":"/engine/core/gpu/GpuBuffer.js","sourceHash":"313dbae3912bc9248a58cf1933dff1319ecdf33984fb79b5dc38ceb6007cb7a6","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/GpuBuffer.js","title":"core/gpu/GpuBuffer","summary":"","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuBuffer.md","moduleTitle":"core/gpu/GpuBuffer","source":"engine/core/gpu/GpuBuffer.js","import":"/engine/core/gpu/GpuBuffer.js","sourceHash":"313dbae3912bc9248a58cf1933dff1319ecdf33984fb79b5dc38ceb6007cb7a6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuBuffer.js#0000:createVertexBuffer","exportIndex":0,"name":"createVertexBuffer","kind":"function","signature":"createVertexBuffer(device, data, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuBuffer.md","moduleTitle":"core/gpu/GpuBuffer","source":"engine/core/gpu/GpuBuffer.js","import":"/engine/core/gpu/GpuBuffer.js","sourceHash":"313dbae3912bc9248a58cf1933dff1319ecdf33984fb79b5dc38ceb6007cb7a6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuBuffer.js#0001:createIndexBuffer","exportIndex":1,"name":"createIndexBuffer","kind":"function","signature":"createIndexBuffer(device, data, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuBuffer.md","moduleTitle":"core/gpu/GpuBuffer","source":"engine/core/gpu/GpuBuffer.js","import":"/engine/core/gpu/GpuBuffer.js","sourceHash":"313dbae3912bc9248a58cf1933dff1319ecdf33984fb79b5dc38ceb6007cb7a6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuBuffer.js#0002:createUniformBuffer","exportIndex":2,"name":"createUniformBuffer","kind":"function","signature":"createUniformBuffer(device, byteSize, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuBuffer.md","moduleTitle":"core/gpu/GpuBuffer","source":"engine/core/gpu/GpuBuffer.js","import":"/engine/core/gpu/GpuBuffer.js","sourceHash":"313dbae3912bc9248a58cf1933dff1319ecdf33984fb79b5dc38ceb6007cb7a6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuBuffer.js#0003:createStorageBuffer","exportIndex":3,"name":"createStorageBuffer","kind":"function","signature":"createStorageBuffer(device, byteSizeOrData, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuBuffer.md","moduleTitle":"core/gpu/GpuBuffer","source":"engine/core/gpu/GpuBuffer.js","import":"/engine/core/gpu/GpuBuffer.js","sourceHash":"313dbae3912bc9248a58cf1933dff1319ecdf33984fb79b5dc38ceb6007cb7a6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuBuffer.js#0004:updateBuffer","exportIndex":4,"name":"updateBuffer","kind":"function","signature":"updateBuffer(device, buffer, data, offsetBytes = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuBuffer.md","moduleTitle":"core/gpu/GpuBuffer","source":"engine/core/gpu/GpuBuffer.js","import":"/engine/core/gpu/GpuBuffer.js","sourceHash":"313dbae3912bc9248a58cf1933dff1319ecdf33984fb79b5dc38ceb6007cb7a6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuBuffer.js#0005:destroyBuffer","exportIndex":5,"name":"destroyBuffer","kind":"function","signature":"destroyBuffer(buffer)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuBuffer.md","moduleTitle":"core/gpu/GpuBuffer","source":"engine/core/gpu/GpuBuffer.js","import":"/engine/core/gpu/GpuBuffer.js","sourceHash":"313dbae3912bc9248a58cf1933dff1319ecdf33984fb79b5dc38ceb6007cb7a6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuBuffer.js#0006:destroyBuffers","exportIndex":6,"name":"destroyBuffers","kind":"function","signature":"destroyBuffers(buffers)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuCanvas.md","moduleTitle":"core/gpu/GpuCanvas","source":"engine/core/gpu/GpuCanvas.js","import":"/engine/core/gpu/GpuCanvas.js","sourceHash":"8ff31bf7c930b973d9f9136e0b16d6b1ebd52cf885265bc11887aed3c4580167","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/GpuCanvas.js","title":"core/gpu/GpuCanvas","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuCanvas.md","moduleTitle":"core/gpu/GpuCanvas","source":"engine/core/gpu/GpuCanvas.js","import":"/engine/core/gpu/GpuCanvas.js","sourceHash":"8ff31bf7c930b973d9f9136e0b16d6b1ebd52cf885265bc11887aed3c4580167","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuCanvas.js#0000:createCanvasContext","exportIndex":0,"name":"createCanvasContext","kind":"function","signature":"createCanvasContext(gpuDevice, canvas, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuCanvas.md","moduleTitle":"core/gpu/GpuCanvas","source":"engine/core/gpu/GpuCanvas.js","import":"/engine/core/gpu/GpuCanvas.js","sourceHash":"8ff31bf7c930b973d9f9136e0b16d6b1ebd52cf885265bc11887aed3c4580167","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuCanvas.js#0001:resizeCanvasContext","exportIndex":1,"name":"resizeCanvasContext","kind":"function","signature":"resizeCanvasContext(canvasContext, width, height)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuDebug.md","moduleTitle":"core/gpu/GpuDebug","source":"engine/core/gpu/GpuDebug.js","import":"/engine/core/gpu/GpuDebug.js","sourceHash":"6219fb215a6d3e55ed67a99fba415e58e35b716aa54b6a7556e97f3de1c7f38f","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/GpuDebug.js","title":"core/gpu/GpuDebug","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuDebug.md","moduleTitle":"core/gpu/GpuDebug","source":"engine/core/gpu/GpuDebug.js","import":"/engine/core/gpu/GpuDebug.js","sourceHash":"6219fb215a6d3e55ed67a99fba415e58e35b716aa54b6a7556e97f3de1c7f38f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuDebug.js#0000:labelResource","exportIndex":0,"name":"labelResource","kind":"function","signature":"labelResource(resource, label)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuDebug.md","moduleTitle":"core/gpu/GpuDebug","source":"engine/core/gpu/GpuDebug.js","import":"/engine/core/gpu/GpuDebug.js","sourceHash":"6219fb215a6d3e55ed67a99fba415e58e35b716aa54b6a7556e97f3de1c7f38f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuDebug.js#0001:withErrorScope","exportIndex":1,"name":"withErrorScope","kind":"function","signature":"async withErrorScope(device, fn)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuDevice.md","moduleTitle":"core/gpu/GpuDevice","source":"engine/core/gpu/GpuDevice.js","import":"/engine/core/gpu/GpuDevice.js","sourceHash":"58706cba83c4f116e42392712fdf1b845afe48c00076aa7d7e56e67777a07d78","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/GpuDevice.js","title":"core/gpu/GpuDevice","summary":"Detect GPU platform/browser for per-browser workarounds. WebGPU browser support (Feb 2026): Chrome/Edge 113+ — Win (D3D12), Mac (Metal), ChromeOS (Vulkan) Chrome 121+      — Android 12+ Qualcomm/ARM (Vulkan) Chrome 144+      — Linux Intel Gen12+ (Vulkan), expanding to AMD/NVIDIA See: https://developer.chrome.com/blog/new-in-webgpu-144#webgpu_on_linux Firefox 141+     — Windows (wgpu/Rust backend) Firefox 145+     — macOS ARM64 (wgpu/Rust); Linux/Android expected 2026 Safari 26+       — macOS Tahoe, iOS 26, iPadOS 26, visionOS 26 (Metal) Samsung Internet 24+ — Android (Chromium/Dawn) GPU API backends per OS (Chromium/Dawn): Windows  → D3D12     (SharedTextureMemory D3D11 swap chain bug) macOS    → Metal Linux    → Vulkan    (rest of Chromium stays on OpenGL) Android  → Vulkan    (OpenGL ES compat mode via Chrome 135+ flag) ChromeOS → Vulkan See: https://caniuse.com/webgpu https://github.com/gpuweb/gpuweb/wiki/Implementation-Status","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuDevice.md","moduleTitle":"core/gpu/GpuDevice","source":"engine/core/gpu/GpuDevice.js","import":"/engine/core/gpu/GpuDevice.js","sourceHash":"58706cba83c4f116e42392712fdf1b845afe48c00076aa7d7e56e67777a07d78","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuDevice.js#0000:GpuDevice","exportIndex":0,"name":"GpuDevice","kind":"class","signature":"class GpuDevice","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuDevice.md","moduleTitle":"core/gpu/GpuDevice","source":"engine/core/gpu/GpuDevice.js","import":"/engine/core/gpu/GpuDevice.js","sourceHash":"58706cba83c4f116e42392712fdf1b845afe48c00076aa7d7e56e67777a07d78","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuDevice.js#0001:detectGpuPlatform","exportIndex":1,"name":"detectGpuPlatform","kind":"function","signature":"detectGpuPlatform()","summary":"Detect GPU platform/browser for per-browser workarounds. WebGPU browser support (Feb 2026): Chrome/Edge 113+ — Win (D3D12), Mac (Metal), ChromeOS (Vulkan) Chrome 121+      — Android 12+ Qualcomm/ARM (Vulkan) Chrome 144+      — Linux Intel Gen12+ (Vulkan), expanding to AMD/NVIDIA See: https://developer.chrome.com/blog/new-in-webgpu-144#webgpu_on_linux Firefox 141+     — Windows (wgpu/Rust backend) Firefox 145+     — macOS ARM64 (wgpu/Rust); Linux/Android expected 2026 Safari 26+       — macOS Tahoe, iOS 26, iPadOS 26, visionOS 26 (Metal) Samsung Internet 24+ — Android (Chromium/Dawn) GPU API backends per OS (Chromium/Dawn): Windows  → D3D12     (SharedTextureMemory D3D11 swap chain bug) macOS    → Metal Linux    → Vulkan    (rest of Chromium stays on OpenGL) Android  → Vulkan    (OpenGL ES compat mode via Chrome 135+ flag) ChromeOS → Vulkan See: https://caniuse.com/webgpu https://github.com/gpuweb/gpuweb/wiki/Implementation-Status"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuDevice.md","moduleTitle":"core/gpu/GpuDevice","source":"engine/core/gpu/GpuDevice.js","import":"/engine/core/gpu/GpuDevice.js","sourceHash":"58706cba83c4f116e42392712fdf1b845afe48c00076aa7d7e56e67777a07d78","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuDevice.js#0002:getGpuDevice","exportIndex":2,"name":"getGpuDevice","kind":"function","signature":"async getGpuDevice(options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuFormats.md","moduleTitle":"core/gpu/GpuFormats","source":"engine/core/gpu/GpuFormats.js","import":"/engine/core/gpu/GpuFormats.js","sourceHash":"fc67b2895d5b6cdad6007edf9a0835143a20b52d0dbe2cd82832013f3216dfd9","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/GpuFormats.js","title":"core/gpu/GpuFormats","summary":"","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuFormats.md","moduleTitle":"core/gpu/GpuFormats","source":"engine/core/gpu/GpuFormats.js","import":"/engine/core/gpu/GpuFormats.js","sourceHash":"fc67b2895d5b6cdad6007edf9a0835143a20b52d0dbe2cd82832013f3216dfd9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuFormats.js#0000:getPreferredCanvasFormat","exportIndex":0,"name":"getPreferredCanvasFormat","kind":"function","signature":"getPreferredCanvasFormat()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuFormats.md","moduleTitle":"core/gpu/GpuFormats","source":"engine/core/gpu/GpuFormats.js","import":"/engine/core/gpu/GpuFormats.js","sourceHash":"fc67b2895d5b6cdad6007edf9a0835143a20b52d0dbe2cd82832013f3216dfd9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuFormats.js#0001:isDepthFormatSupported","exportIndex":1,"name":"isDepthFormatSupported","kind":"function","signature":"isDepthFormatSupported(device, format)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuFormats.md","moduleTitle":"core/gpu/GpuFormats","source":"engine/core/gpu/GpuFormats.js","import":"/engine/core/gpu/GpuFormats.js","sourceHash":"fc67b2895d5b6cdad6007edf9a0835143a20b52d0dbe2cd82832013f3216dfd9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuFormats.js#0002:DEFAULT_COLOR_FORMAT","exportIndex":2,"name":"DEFAULT_COLOR_FORMAT","kind":"constant","signature":"DEFAULT_COLOR_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuFormats.md","moduleTitle":"core/gpu/GpuFormats","source":"engine/core/gpu/GpuFormats.js","import":"/engine/core/gpu/GpuFormats.js","sourceHash":"fc67b2895d5b6cdad6007edf9a0835143a20b52d0dbe2cd82832013f3216dfd9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuFormats.js#0003:DEFAULT_DEPTH_FORMAT","exportIndex":3,"name":"DEFAULT_DEPTH_FORMAT","kind":"constant","signature":"DEFAULT_DEPTH_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuFormats.md","moduleTitle":"core/gpu/GpuFormats","source":"engine/core/gpu/GpuFormats.js","import":"/engine/core/gpu/GpuFormats.js","sourceHash":"fc67b2895d5b6cdad6007edf9a0835143a20b52d0dbe2cd82832013f3216dfd9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuFormats.js#0004:DEFAULT_SAMPLE_COUNT","exportIndex":4,"name":"DEFAULT_SAMPLE_COUNT","kind":"constant","signature":"DEFAULT_SAMPLE_COUNT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuFrameBudgetBroker.md","moduleTitle":"core/gpu/GpuFrameBudgetBroker","source":"engine/core/gpu/GpuFrameBudgetBroker.js","import":"/engine/core/gpu/GpuFrameBudgetBroker.js","sourceHash":"b3e18f18f68ffefed553ffaf3f6809406e35deb02f6ce7e3e6c21fd5424e8052","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/GpuFrameBudgetBroker.js","title":"core/gpu/GpuFrameBudgetBroker","summary":"Dependency-safe frame admission for long compute submissions. The broker never reorders command buffers. Callers await admission, then submit immediately to the one WebGPU queue, preserving queue dependencies. Render-critical work bypasses the budget; interactive/background compute is spread across animation frames so a long producer cannot monopolize the GPU.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuFrameBudgetBroker.md","moduleTitle":"core/gpu/GpuFrameBudgetBroker","source":"engine/core/gpu/GpuFrameBudgetBroker.js","import":"/engine/core/gpu/GpuFrameBudgetBroker.js","sourceHash":"b3e18f18f68ffefed553ffaf3f6809406e35deb02f6ce7e3e6c21fd5424e8052","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuFrameBudgetBroker.js#0000:GpuFrameBudgetBroker","exportIndex":0,"name":"GpuFrameBudgetBroker","kind":"class","signature":"class GpuFrameBudgetBroker","summary":"Dependency-safe frame admission for long compute submissions. The broker never reorders command buffers. Callers await admission, then submit immediately to the one WebGPU queue, preserving queue dependencies. Render-critical work bypasses the budget; interactive/background compute is spread across animation frames so a long producer cannot monopolize the GPU."}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuInit.md","moduleTitle":"core/gpu/GpuInit","source":"engine/core/gpu/GpuInit.js","import":"/engine/core/gpu/GpuInit.js","sourceHash":"2efab494d84c54aba649885cc8076ade0061dd98bf0d887043ef3506633ea503","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/GpuInit.js","title":"core/gpu/GpuInit","summary":"Initialize WebGPU and populate GPU state object.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuInit.md","moduleTitle":"core/gpu/GpuInit","source":"engine/core/gpu/GpuInit.js","import":"/engine/core/gpu/GpuInit.js","sourceHash":"2efab494d84c54aba649885cc8076ade0061dd98bf0d887043ef3506633ea503","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuInit.js#0000:initGpuState","exportIndex":0,"name":"initGpuState","kind":"function","signature":"async initGpuState(options)","summary":"Initialize WebGPU and populate GPU state object."}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuInit.md","moduleTitle":"core/gpu/GpuInit","source":"engine/core/gpu/GpuInit.js","import":"/engine/core/gpu/GpuInit.js","sourceHash":"2efab494d84c54aba649885cc8076ade0061dd98bf0d887043ef3506633ea503","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuInit.js#0001:isWebGpuSupported","exportIndex":1,"name":"isWebGpuSupported","kind":"function","signature":"isWebGpuSupported()","summary":"Check if WebGPU is supported."}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuInit.md","moduleTitle":"core/gpu/GpuInit","source":"engine/core/gpu/GpuInit.js","import":"/engine/core/gpu/GpuInit.js","sourceHash":"2efab494d84c54aba649885cc8076ade0061dd98bf0d887043ef3506633ea503","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuInit.js#0002:waitForCanvasReady","exportIndex":2,"name":"waitForCanvasReady","kind":"function","signature":"waitForCanvasReady(canvas, minSize = 1)","summary":"Wait for canvas to be properly sized before GPU init."}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuMetrics.md","moduleTitle":"core/gpu/GpuMetrics","source":"engine/core/gpu/GpuMetrics.js","import":"/engine/core/gpu/GpuMetrics.js","sourceHash":"a06165ec7123351f481a0c68351e819b6a607c2561b71c9b2ebe504d15d8fb8a","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/GpuMetrics.js","title":"core/gpu/GpuMetrics","summary":"","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuMetrics.md","moduleTitle":"core/gpu/GpuMetrics","source":"engine/core/gpu/GpuMetrics.js","import":"/engine/core/gpu/GpuMetrics.js","sourceHash":"a06165ec7123351f481a0c68351e819b6a607c2561b71c9b2ebe504d15d8fb8a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuMetrics.js#0000:recordBufferCreate","exportIndex":0,"name":"recordBufferCreate","kind":"function","signature":"recordBufferCreate(byteSize, usageKind = \"other\")","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuMetrics.md","moduleTitle":"core/gpu/GpuMetrics","source":"engine/core/gpu/GpuMetrics.js","import":"/engine/core/gpu/GpuMetrics.js","sourceHash":"a06165ec7123351f481a0c68351e819b6a607c2561b71c9b2ebe504d15d8fb8a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuMetrics.js#0001:recordTextureCreate","exportIndex":1,"name":"recordTextureCreate","kind":"function","signature":"recordTextureCreate(width, height)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuMetrics.md","moduleTitle":"core/gpu/GpuMetrics","source":"engine/core/gpu/GpuMetrics.js","import":"/engine/core/gpu/GpuMetrics.js","sourceHash":"a06165ec7123351f481a0c68351e819b6a607c2561b71c9b2ebe504d15d8fb8a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuMetrics.js#0002:getGpuMetrics","exportIndex":2,"name":"getGpuMetrics","kind":"function","signature":"getGpuMetrics()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuMetrics.md","moduleTitle":"core/gpu/GpuMetrics","source":"engine/core/gpu/GpuMetrics.js","import":"/engine/core/gpu/GpuMetrics.js","sourceHash":"a06165ec7123351f481a0c68351e819b6a607c2561b71c9b2ebe504d15d8fb8a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuMetrics.js#0003:resetGpuMetrics","exportIndex":3,"name":"resetGpuMetrics","kind":"function","signature":"resetGpuMetrics()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuPassGraph.md","moduleTitle":"core/gpu/GpuPassGraph","source":"engine/core/gpu/GpuPassGraph.js","import":"/engine/core/gpu/GpuPassGraph.js","sourceHash":"794b1ee7cf21dd1fc3aaa58d833ade8ef41c95382c29ac28ffd76fc27032933b","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/GpuPassGraph.js","title":"core/gpu/GpuPassGraph","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuPassGraph.md","moduleTitle":"core/gpu/GpuPassGraph","source":"engine/core/gpu/GpuPassGraph.js","import":"/engine/core/gpu/GpuPassGraph.js","sourceHash":"794b1ee7cf21dd1fc3aaa58d833ade8ef41c95382c29ac28ffd76fc27032933b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuPassGraph.js#0000:createGpuPassGraph","exportIndex":0,"name":"createGpuPassGraph","kind":"function","signature":"createGpuPassGraph()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuRecovery.md","moduleTitle":"core/gpu/GpuRecovery","source":"engine/core/gpu/GpuRecovery.js","import":"/engine/core/gpu/GpuRecovery.js","sourceHash":"cf0d5b10219ff6800d5d2cca480980dc91de345f7aa9ba6f45de81cf34542c40","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/GpuRecovery.js","title":"core/gpu/GpuRecovery","summary":"GpuRecovery.js — Automatic GPU device loss recovery (cross-browser) Handles the full lifecycle of device loss and recovery: 1. Detects device loss (unexpected crash vs intentional destroy) 2. Attempts automatic recovery with exponential backoff 3. Reconfigures canvas context with the new device 4. Fires callbacks so the app can re-upload resources 5. Shows user notification if recovery fails Based on: https://toji.dev/webgpu-best-practices/device-loss.html Browser support: Chrome 113+ (Win/Mac/ChromeOS), 121+ (Android), 144+ (Linux) Firefox 141+ (Windows), 145+ (macOS ARM64) — wgpu/Rust backend Safari 26+ (macOS Tahoe, iOS 26, iPadOS 26, visionOS 26) — Metal backend Chrome crash limits: - 1st crash: adapter available immediately - 2nd crash within 2 min: adapter blocked for that page - 3rd crash within 2 min: all pages blocked - 3-6 crashes in 5 min: GPU process stops entirely Firefox/Safari: crash limits are different/unknown — recovery still works. device.lost reason values: Chrome: 'destroyed' (intentional) or 'unknown' (crash) Firefox/Safari: may use 'destroyed' or '' — we check for 'destroyed' only","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuRecovery.md","moduleTitle":"core/gpu/GpuRecovery","source":"engine/core/gpu/GpuRecovery.js","import":"/engine/core/gpu/GpuRecovery.js","sourceHash":"cf0d5b10219ff6800d5d2cca480980dc91de345f7aa9ba6f45de81cf34542c40","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuRecovery.js#0000:GpuRecovery","exportIndex":0,"name":"GpuRecovery","kind":"class","signature":"class GpuRecovery","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuRecovery.md","moduleTitle":"core/gpu/GpuRecovery","source":"engine/core/gpu/GpuRecovery.js","import":"/engine/core/gpu/GpuRecovery.js","sourceHash":"cf0d5b10219ff6800d5d2cca480980dc91de345f7aa9ba6f45de81cf34542c40","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuRecovery.js#0001:createRecoveryOverlay","exportIndex":1,"name":"createRecoveryOverlay","kind":"function","signature":"createRecoveryOverlay(container)","summary":"Create a user-facing recovery notification overlay. Shows status during recovery and a \"please refresh\" message on failure."}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuSampler.md","moduleTitle":"core/gpu/GpuSampler","source":"engine/core/gpu/GpuSampler.js","import":"/engine/core/gpu/GpuSampler.js","sourceHash":"73605f0422ab8d9a75d45c40791c1aca7d3eab12d645f02069fd7016c94ca907","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/GpuSampler.js","title":"core/gpu/GpuSampler","summary":"","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuSampler.md","moduleTitle":"core/gpu/GpuSampler","source":"engine/core/gpu/GpuSampler.js","import":"/engine/core/gpu/GpuSampler.js","sourceHash":"73605f0422ab8d9a75d45c40791c1aca7d3eab12d645f02069fd7016c94ca907","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuSampler.js#0000:getDefaultSampler","exportIndex":0,"name":"getDefaultSampler","kind":"function","signature":"getDefaultSampler(device)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuSampler.md","moduleTitle":"core/gpu/GpuSampler","source":"engine/core/gpu/GpuSampler.js","import":"/engine/core/gpu/GpuSampler.js","sourceHash":"73605f0422ab8d9a75d45c40791c1aca7d3eab12d645f02069fd7016c94ca907","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuSampler.js#0001:getPointSampler","exportIndex":1,"name":"getPointSampler","kind":"function","signature":"getPointSampler(device)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuSampler.md","moduleTitle":"core/gpu/GpuSampler","source":"engine/core/gpu/GpuSampler.js","import":"/engine/core/gpu/GpuSampler.js","sourceHash":"73605f0422ab8d9a75d45c40791c1aca7d3eab12d645f02069fd7016c94ca907","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuSampler.js#0002:getLinearSampler","exportIndex":2,"name":"getLinearSampler","kind":"function","signature":"getLinearSampler(device)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuTexture.md","moduleTitle":"core/gpu/GpuTexture","source":"engine/core/gpu/GpuTexture.js","import":"/engine/core/gpu/GpuTexture.js","sourceHash":"b5c1eb22113053159eedb812cc990a3263eaf1403e8f72006329b5daba18fbda","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/GpuTexture.js","title":"core/gpu/GpuTexture","summary":"","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuTexture.md","moduleTitle":"core/gpu/GpuTexture","source":"engine/core/gpu/GpuTexture.js","import":"/engine/core/gpu/GpuTexture.js","sourceHash":"b5c1eb22113053159eedb812cc990a3263eaf1403e8f72006329b5daba18fbda","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuTexture.js#0000:createColorTexture","exportIndex":0,"name":"createColorTexture","kind":"function","signature":"createColorTexture(device, width, height, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuTexture.md","moduleTitle":"core/gpu/GpuTexture","source":"engine/core/gpu/GpuTexture.js","import":"/engine/core/gpu/GpuTexture.js","sourceHash":"b5c1eb22113053159eedb812cc990a3263eaf1403e8f72006329b5daba18fbda","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuTexture.js#0001:createSampledTexture2D","exportIndex":1,"name":"createSampledTexture2D","kind":"function","signature":"createSampledTexture2D(device, width, height, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuTexture.md","moduleTitle":"core/gpu/GpuTexture","source":"engine/core/gpu/GpuTexture.js","import":"/engine/core/gpu/GpuTexture.js","sourceHash":"b5c1eb22113053159eedb812cc990a3263eaf1403e8f72006329b5daba18fbda","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuTexture.js#0002:createDepthTexture","exportIndex":2,"name":"createDepthTexture","kind":"function","signature":"createDepthTexture(device, width, height, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuTexture.md","moduleTitle":"core/gpu/GpuTexture","source":"engine/core/gpu/GpuTexture.js","import":"/engine/core/gpu/GpuTexture.js","sourceHash":"b5c1eb22113053159eedb812cc990a3263eaf1403e8f72006329b5daba18fbda","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuTexture.js#0003:resizeAttachmentTexture","exportIndex":3,"name":"resizeAttachmentTexture","kind":"function","signature":"resizeAttachmentTexture(device, handle, width, height)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuTexture.md","moduleTitle":"core/gpu/GpuTexture","source":"engine/core/gpu/GpuTexture.js","import":"/engine/core/gpu/GpuTexture.js","sourceHash":"b5c1eb22113053159eedb812cc990a3263eaf1403e8f72006329b5daba18fbda","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuTexture.js#0004:destroyAttachmentHandle","exportIndex":4,"name":"destroyAttachmentHandle","kind":"function","signature":"destroyAttachmentHandle(handle)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuTexture.md","moduleTitle":"core/gpu/GpuTexture","source":"engine/core/gpu/GpuTexture.js","import":"/engine/core/gpu/GpuTexture.js","sourceHash":"b5c1eb22113053159eedb812cc990a3263eaf1403e8f72006329b5daba18fbda","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuTexture.js#0005:destroyAttachmentHandles","exportIndex":5,"name":"destroyAttachmentHandles","kind":"function","signature":"destroyAttachmentHandles(handles)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuTextureLoader.md","moduleTitle":"core/gpu/GpuTextureLoader","source":"engine/core/gpu/GpuTextureLoader.js","import":"/engine/core/gpu/GpuTextureLoader.js","sourceHash":"a591288bd19dfb6b5fada786e15b5bdb41123c6ebe85c2ecf881a69654f1523d","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/GpuTextureLoader.js","title":"core/gpu/GpuTextureLoader","summary":"","exportCount":12}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuTextureLoader.md","moduleTitle":"core/gpu/GpuTextureLoader","source":"engine/core/gpu/GpuTextureLoader.js","import":"/engine/core/gpu/GpuTextureLoader.js","sourceHash":"a591288bd19dfb6b5fada786e15b5bdb41123c6ebe85c2ecf881a69654f1523d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuTextureLoader.js#0000:loadTextureFromUrl","exportIndex":0,"name":"loadTextureFromUrl","kind":"function","signature":"async loadTextureFromUrl(device, url, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuTextureLoader.md","moduleTitle":"core/gpu/GpuTextureLoader","source":"engine/core/gpu/GpuTextureLoader.js","import":"/engine/core/gpu/GpuTextureLoader.js","sourceHash":"a591288bd19dfb6b5fada786e15b5bdb41123c6ebe85c2ecf881a69654f1523d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuTextureLoader.js#0001:createTextureFromKtx2Data","exportIndex":1,"name":"createTextureFromKtx2Data","kind":"function","signature":"createTextureFromKtx2Data(device, data, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuTextureLoader.md","moduleTitle":"core/gpu/GpuTextureLoader","source":"engine/core/gpu/GpuTextureLoader.js","import":"/engine/core/gpu/GpuTextureLoader.js","sourceHash":"a591288bd19dfb6b5fada786e15b5bdb41123c6ebe85c2ecf881a69654f1523d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuTextureLoader.js#0002:createTextureFromKtx2DataWithDecoder","exportIndex":2,"name":"createTextureFromKtx2DataWithDecoder","kind":"function","signature":"async createTextureFromKtx2DataWithDecoder(device, data, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuTextureLoader.md","moduleTitle":"core/gpu/GpuTextureLoader","source":"engine/core/gpu/GpuTextureLoader.js","import":"/engine/core/gpu/GpuTextureLoader.js","sourceHash":"a591288bd19dfb6b5fada786e15b5bdb41123c6ebe85c2ecf881a69654f1523d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuTextureLoader.js#0003:loadKtx2TextureFromUrl","exportIndex":3,"name":"loadKtx2TextureFromUrl","kind":"function","signature":"async loadKtx2TextureFromUrl(device, url, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuTextureLoader.md","moduleTitle":"core/gpu/GpuTextureLoader","source":"engine/core/gpu/GpuTextureLoader.js","import":"/engine/core/gpu/GpuTextureLoader.js","sourceHash":"a591288bd19dfb6b5fada786e15b5bdb41123c6ebe85c2ecf881a69654f1523d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuTextureLoader.js#0004:inspectKtx2TextureData","exportIndex":4,"name":"inspectKtx2TextureData","kind":"function","signature":"inspectKtx2TextureData(data, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuTextureLoader.md","moduleTitle":"core/gpu/GpuTextureLoader","source":"engine/core/gpu/GpuTextureLoader.js","import":"/engine/core/gpu/GpuTextureLoader.js","sourceHash":"a591288bd19dfb6b5fada786e15b5bdb41123c6ebe85c2ecf881a69654f1523d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuTextureLoader.js#0005:inspectKtx2TextureFromUrl","exportIndex":5,"name":"inspectKtx2TextureFromUrl","kind":"function","signature":"async inspectKtx2TextureFromUrl(url, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuTextureLoader.md","moduleTitle":"core/gpu/GpuTextureLoader","source":"engine/core/gpu/GpuTextureLoader.js","import":"/engine/core/gpu/GpuTextureLoader.js","sourceHash":"a591288bd19dfb6b5fada786e15b5bdb41123c6ebe85c2ecf881a69654f1523d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuTextureLoader.js#0006:createTextureFromImage","exportIndex":6,"name":"createTextureFromImage","kind":"function","signature":"async createTextureFromImage(device, image, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuTextureLoader.md","moduleTitle":"core/gpu/GpuTextureLoader","source":"engine/core/gpu/GpuTextureLoader.js","import":"/engine/core/gpu/GpuTextureLoader.js","sourceHash":"a591288bd19dfb6b5fada786e15b5bdb41123c6ebe85c2ecf881a69654f1523d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuTextureLoader.js#0007:createTextureFromImageBitmap","exportIndex":7,"name":"createTextureFromImageBitmap","kind":"function","signature":"async createTextureFromImageBitmap(device, bitmap, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuTextureLoader.md","moduleTitle":"core/gpu/GpuTextureLoader","source":"engine/core/gpu/GpuTextureLoader.js","import":"/engine/core/gpu/GpuTextureLoader.js","sourceHash":"a591288bd19dfb6b5fada786e15b5bdb41123c6ebe85c2ecf881a69654f1523d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuTextureLoader.js#0008:isKtx2Container","exportIndex":8,"name":"isKtx2Container","kind":"re-export","signature":"isKtx2Container","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuTextureLoader.md","moduleTitle":"core/gpu/GpuTextureLoader","source":"engine/core/gpu/GpuTextureLoader.js","import":"/engine/core/gpu/GpuTextureLoader.js","sourceHash":"a591288bd19dfb6b5fada786e15b5bdb41123c6ebe85c2ecf881a69654f1523d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuTextureLoader.js#0009:ktx2DirectUploadPlan","exportIndex":9,"name":"ktx2DirectUploadPlan","kind":"re-export","signature":"ktx2DirectUploadPlan","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuTextureLoader.md","moduleTitle":"core/gpu/GpuTextureLoader","source":"engine/core/gpu/GpuTextureLoader.js","import":"/engine/core/gpu/GpuTextureLoader.js","sourceHash":"a591288bd19dfb6b5fada786e15b5bdb41123c6ebe85c2ecf881a69654f1523d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuTextureLoader.js#0010:ktx2PayloadPlan","exportIndex":10,"name":"ktx2PayloadPlan","kind":"re-export","signature":"ktx2PayloadPlan","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuTextureLoader.md","moduleTitle":"core/gpu/GpuTextureLoader","source":"engine/core/gpu/GpuTextureLoader.js","import":"/engine/core/gpu/GpuTextureLoader.js","sourceHash":"a591288bd19dfb6b5fada786e15b5bdb41123c6ebe85c2ecf881a69654f1523d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuTextureLoader.js#0011:parseKtx2Container","exportIndex":11,"name":"parseKtx2Container","kind":"re-export","signature":"parseKtx2Container","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuTransfer.md","moduleTitle":"core/gpu/GpuTransfer","source":"engine/core/gpu/GpuTransfer.js","import":"/engine/core/gpu/GpuTransfer.js","sourceHash":"8ce32513131cf737809434d1537f33706dd6e71c37964f49ab2e72ba24a22dac","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/GpuTransfer.js","title":"core/gpu/GpuTransfer","summary":"Upload data to a GPU buffer via a transient staging buffer. Useful for large or streaming uploads when you want explicit control over copy operations rather than relying solely on queue.writeBuffer.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuTransfer.md","moduleTitle":"core/gpu/GpuTransfer","source":"engine/core/gpu/GpuTransfer.js","import":"/engine/core/gpu/GpuTransfer.js","sourceHash":"8ce32513131cf737809434d1537f33706dd6e71c37964f49ab2e72ba24a22dac","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuTransfer.js#0000:uploadBufferWithStaging","exportIndex":0,"name":"uploadBufferWithStaging","kind":"function","signature":"async uploadBufferWithStaging(device, dstBuffer, data, dstOffsetBytes = 0, label = \"gpu_staging_upload\")","summary":"Upload data to a GPU buffer via a transient staging buffer. Useful for large or streaming uploads when you want explicit control over copy operations rather than relying solely on queue.writeBuffer."}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuTransfer.md","moduleTitle":"core/gpu/GpuTransfer","source":"engine/core/gpu/GpuTransfer.js","import":"/engine/core/gpu/GpuTransfer.js","sourceHash":"8ce32513131cf737809434d1537f33706dd6e71c37964f49ab2e72ba24a22dac","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuTransfer.js#0001:readBufferToUint8Array","exportIndex":1,"name":"readBufferToUint8Array","kind":"function","signature":"async readBufferToUint8Array(device, srcBuffer, byteOffset, byteLength, label = \"gpu_readback_buffer\")","summary":"Read back the contents of a GPU buffer into a Uint8Array. Intended for debugging and tooling, not per-frame critical paths."}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/GpuTransfer.md","moduleTitle":"core/gpu/GpuTransfer","source":"engine/core/gpu/GpuTransfer.js","import":"/engine/core/gpu/GpuTransfer.js","sourceHash":"8ce32513131cf737809434d1537f33706dd6e71c37964f49ab2e72ba24a22dac","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/GpuTransfer.js#0002:readTexture2D","exportIndex":2,"name":"readTexture2D","kind":"function","signature":"async readTexture2D(device, srcTexture, width, height, { bytesPerPixel, mipLevel = 0, label = \"gpu_readback_texture2d\", })","summary":"Read a 2D texture into a buffer for debugging. Caller must provide bytesPerPixel for the chosen format. Returns an object with the raw data and layout information."}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/IndirectDispatchGen.md","moduleTitle":"core/gpu/IndirectDispatchGen","source":"engine/core/gpu/IndirectDispatchGen.js","import":"/engine/core/gpu/IndirectDispatchGen.js","sourceHash":"48b677f2436385b4b5a8d9ed900757b5367e51c7a6aa54a3763dac0ca29131ce","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/IndirectDispatchGen.js","title":"core/gpu/IndirectDispatchGen","summary":"IndirectDispatchGen.js - GPU-Driven Indirect Dispatch Generation Problem: CPU deciding which chunks to process creates a bottleneck. The GPU knows best which chunks need work (from dirty flags, visibility, etc.) but standard dispatch requires CPU to specify workgroup counts. Solution: GPU-side stream compaction + indirect dispatch. 1. GPU scans all chunks, compacts active ones into a list 2. GPU writes workgroup counts to indirect buffer 3. CPU issues dispatchWorkgroupsIndirect() - no readback needed Key Technique: Hierarchical atomics for efficient compaction - Each workgroup uses local atomic to count active items - Leader thread reserves global block via global atomic - Threads scatter their items to reserved slots Performance: Eliminates CPU-GPU sync for conditional dispatch","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/IndirectDispatchGen.md","moduleTitle":"core/gpu/IndirectDispatchGen","source":"engine/core/gpu/IndirectDispatchGen.js","import":"/engine/core/gpu/IndirectDispatchGen.js","sourceHash":"48b677f2436385b4b5a8d9ed900757b5367e51c7a6aa54a3763dac0ca29131ce","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/IndirectDispatchGen.js#0000:IndirectDispatchGen","exportIndex":0,"name":"IndirectDispatchGen","kind":"class","signature":"class IndirectDispatchGen","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/IndirectDispatchGen.md","moduleTitle":"core/gpu/IndirectDispatchGen","source":"engine/core/gpu/IndirectDispatchGen.js","import":"/engine/core/gpu/IndirectDispatchGen.js","sourceHash":"48b677f2436385b4b5a8d9ed900757b5367e51c7a6aa54a3763dac0ca29131ce","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/IndirectDispatchGen.js#0001:MultiPassDispatchGen","exportIndex":1,"name":"MultiPassDispatchGen","kind":"class","signature":"class MultiPassDispatchGen","summary":"Generates multiple indirect dispatches for different job types (e.g., separate geometry, lighting, physics passes)"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/IndirectDispatchGen.md","moduleTitle":"core/gpu/IndirectDispatchGen","source":"engine/core/gpu/IndirectDispatchGen.js","import":"/engine/core/gpu/IndirectDispatchGen.js","sourceHash":"48b677f2436385b4b5a8d9ed900757b5367e51c7a6aa54a3763dac0ca29131ce","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/IndirectDispatchGen.js#0002:GENERATOR_WORKGROUP_SIZE","exportIndex":2,"name":"GENERATOR_WORKGROUP_SIZE","kind":"constant","signature":"GENERATOR_WORKGROUP_SIZE","summary":"Workgroup size for generator shader"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/IndirectDispatchGen.md","moduleTitle":"core/gpu/IndirectDispatchGen","source":"engine/core/gpu/IndirectDispatchGen.js","import":"/engine/core/gpu/IndirectDispatchGen.js","sourceHash":"48b677f2436385b4b5a8d9ed900757b5367e51c7a6aa54a3763dac0ca29131ce","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/IndirectDispatchGen.js#0003:MAX_JOBS","exportIndex":3,"name":"MAX_JOBS","kind":"constant","signature":"MAX_JOBS","summary":"Maximum jobs that can be generated per dispatch"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/IndirectDispatchGen.md","moduleTitle":"core/gpu/IndirectDispatchGen","source":"engine/core/gpu/IndirectDispatchGen.js","import":"/engine/core/gpu/IndirectDispatchGen.js","sourceHash":"48b677f2436385b4b5a8d9ed900757b5367e51c7a6aa54a3763dac0ca29131ce","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/IndirectDispatchGen.js#0004:INDIRECT_BUFFER_SIZE","exportIndex":4,"name":"INDIRECT_BUFFER_SIZE","kind":"constant","signature":"INDIRECT_BUFFER_SIZE","summary":"Indirect dispatch buffer size (3 × u32 = 12 bytes)"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/IndirectDispatchGen.md","moduleTitle":"core/gpu/IndirectDispatchGen","source":"engine/core/gpu/IndirectDispatchGen.js","import":"/engine/core/gpu/IndirectDispatchGen.js","sourceHash":"48b677f2436385b4b5a8d9ed900757b5367e51c7a6aa54a3763dac0ca29131ce","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/IndirectDispatchGen.js#0005:DISPATCH_GEN_SHADER","exportIndex":5,"name":"DISPATCH_GEN_SHADER","kind":"re-export","signature":"DISPATCH_GEN_SHADER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/Ktx2Container.md","moduleTitle":"core/gpu/Ktx2Container","source":"engine/core/gpu/Ktx2Container.js","import":"/engine/core/gpu/Ktx2Container.js","sourceHash":"ae6fa50bb93d4dc7e1ddc397664a4ed30351be82f21c81a1819ad34a25cd7014","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/Ktx2Container.js","title":"core/gpu/Ktx2Container","summary":"","exportCount":13}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/Ktx2Container.md","moduleTitle":"core/gpu/Ktx2Container","source":"engine/core/gpu/Ktx2Container.js","import":"/engine/core/gpu/Ktx2Container.js","sourceHash":"ae6fa50bb93d4dc7e1ddc397664a4ed30351be82f21c81a1819ad34a25cd7014","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/Ktx2Container.js#0000:ktx2VkFormatInfo","exportIndex":0,"name":"ktx2VkFormatInfo","kind":"function","signature":"ktx2VkFormatInfo(vkFormat = 0, supportedFeatures = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/Ktx2Container.md","moduleTitle":"core/gpu/Ktx2Container","source":"engine/core/gpu/Ktx2Container.js","import":"/engine/core/gpu/Ktx2Container.js","sourceHash":"ae6fa50bb93d4dc7e1ddc397664a4ed30351be82f21c81a1819ad34a25cd7014","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/Ktx2Container.js#0001:isKtx2Container","exportIndex":1,"name":"isKtx2Container","kind":"function","signature":"isKtx2Container(data)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/Ktx2Container.md","moduleTitle":"core/gpu/Ktx2Container","source":"engine/core/gpu/Ktx2Container.js","import":"/engine/core/gpu/Ktx2Container.js","sourceHash":"ae6fa50bb93d4dc7e1ddc397664a4ed30351be82f21c81a1819ad34a25cd7014","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/Ktx2Container.js#0002:parseKtx2Container","exportIndex":2,"name":"parseKtx2Container","kind":"function","signature":"parseKtx2Container(data, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/Ktx2Container.md","moduleTitle":"core/gpu/Ktx2Container","source":"engine/core/gpu/Ktx2Container.js","import":"/engine/core/gpu/Ktx2Container.js","sourceHash":"ae6fa50bb93d4dc7e1ddc397664a4ed30351be82f21c81a1819ad34a25cd7014","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/Ktx2Container.js#0003:ktx2PayloadPlan","exportIndex":3,"name":"ktx2PayloadPlan","kind":"function","signature":"ktx2PayloadPlan(containerOrData, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/Ktx2Container.md","moduleTitle":"core/gpu/Ktx2Container","source":"engine/core/gpu/Ktx2Container.js","import":"/engine/core/gpu/Ktx2Container.js","sourceHash":"ae6fa50bb93d4dc7e1ddc397664a4ed30351be82f21c81a1819ad34a25cd7014","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/Ktx2Container.js#0004:getKtx2SectionPayloadView","exportIndex":4,"name":"getKtx2SectionPayloadView","kind":"function","signature":"getKtx2SectionPayloadView(data, section = 'sgd')","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/Ktx2Container.md","moduleTitle":"core/gpu/Ktx2Container","source":"engine/core/gpu/Ktx2Container.js","import":"/engine/core/gpu/Ktx2Container.js","sourceHash":"ae6fa50bb93d4dc7e1ddc397664a4ed30351be82f21c81a1819ad34a25cd7014","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/Ktx2Container.js#0005:createKtx2PayloadDecodeRequest","exportIndex":5,"name":"createKtx2PayloadDecodeRequest","kind":"function","signature":"createKtx2PayloadDecodeRequest(data, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/Ktx2Container.md","moduleTitle":"core/gpu/Ktx2Container","source":"engine/core/gpu/Ktx2Container.js","import":"/engine/core/gpu/Ktx2Container.js","sourceHash":"ae6fa50bb93d4dc7e1ddc397664a4ed30351be82f21c81a1819ad34a25cd7014","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/Ktx2Container.js#0006:ktx2DirectUploadPlan","exportIndex":6,"name":"ktx2DirectUploadPlan","kind":"function","signature":"ktx2DirectUploadPlan(containerOrData, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/Ktx2Container.md","moduleTitle":"core/gpu/Ktx2Container","source":"engine/core/gpu/Ktx2Container.js","import":"/engine/core/gpu/Ktx2Container.js","sourceHash":"ae6fa50bb93d4dc7e1ddc397664a4ed30351be82f21c81a1819ad34a25cd7014","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/Ktx2Container.js#0007:getKtx2LevelPayloadView","exportIndex":7,"name":"getKtx2LevelPayloadView","kind":"function","signature":"getKtx2LevelPayloadView(data, level = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/Ktx2Container.md","moduleTitle":"core/gpu/Ktx2Container","source":"engine/core/gpu/Ktx2Container.js","import":"/engine/core/gpu/Ktx2Container.js","sourceHash":"ae6fa50bb93d4dc7e1ddc397664a4ed30351be82f21c81a1819ad34a25cd7014","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/Ktx2Container.js#0008:KTX2_IDENTIFIER","exportIndex":8,"name":"KTX2_IDENTIFIER","kind":"constant","signature":"KTX2_IDENTIFIER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/Ktx2Container.md","moduleTitle":"core/gpu/Ktx2Container","source":"engine/core/gpu/Ktx2Container.js","import":"/engine/core/gpu/Ktx2Container.js","sourceHash":"ae6fa50bb93d4dc7e1ddc397664a4ed30351be82f21c81a1819ad34a25cd7014","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/Ktx2Container.js#0009:KTX2_IDENTIFIER_BYTE_LENGTH","exportIndex":9,"name":"KTX2_IDENTIFIER_BYTE_LENGTH","kind":"constant","signature":"KTX2_IDENTIFIER_BYTE_LENGTH","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/Ktx2Container.md","moduleTitle":"core/gpu/Ktx2Container","source":"engine/core/gpu/Ktx2Container.js","import":"/engine/core/gpu/Ktx2Container.js","sourceHash":"ae6fa50bb93d4dc7e1ddc397664a4ed30351be82f21c81a1819ad34a25cd7014","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/Ktx2Container.js#0010:KTX2_HEADER_BYTE_LENGTH","exportIndex":10,"name":"KTX2_HEADER_BYTE_LENGTH","kind":"constant","signature":"KTX2_HEADER_BYTE_LENGTH","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/Ktx2Container.md","moduleTitle":"core/gpu/Ktx2Container","source":"engine/core/gpu/Ktx2Container.js","import":"/engine/core/gpu/Ktx2Container.js","sourceHash":"ae6fa50bb93d4dc7e1ddc397664a4ed30351be82f21c81a1819ad34a25cd7014","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/Ktx2Container.js#0011:KTX2_LEVEL_INDEX_ENTRY_BYTE_LENGTH","exportIndex":11,"name":"KTX2_LEVEL_INDEX_ENTRY_BYTE_LENGTH","kind":"constant","signature":"KTX2_LEVEL_INDEX_ENTRY_BYTE_LENGTH","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/Ktx2Container.md","moduleTitle":"core/gpu/Ktx2Container","source":"engine/core/gpu/Ktx2Container.js","import":"/engine/core/gpu/Ktx2Container.js","sourceHash":"ae6fa50bb93d4dc7e1ddc397664a4ed30351be82f21c81a1819ad34a25cd7014","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/Ktx2Container.js#0012:KTX2_VK_FORMAT_TO_WEBGPU_FORMAT","exportIndex":12,"name":"KTX2_VK_FORMAT_TO_WEBGPU_FORMAT","kind":"constant","signature":"KTX2_VK_FORMAT_TO_WEBGPU_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/MappedBufferWriter.md","moduleTitle":"core/gpu/MappedBufferWriter","source":"engine/core/gpu/MappedBufferWriter.js","import":"/engine/core/gpu/MappedBufferWriter.js","sourceHash":"c21a3ede69827ffa5b424d221d3855a615c0e97e50b2402ee9bff535c1eb7142","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/MappedBufferWriter.js","title":"core/gpu/MappedBufferWriter","summary":"Mapped Buffer Writer - Eliminates double-copy overhead from writeBuffer() Based on WebGPU optimization best practices from webgpufundamentals.org Saves one CPU→GPU copy per upload (10-20% faster uploads)","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/MappedBufferWriter.md","moduleTitle":"core/gpu/MappedBufferWriter","source":"engine/core/gpu/MappedBufferWriter.js","import":"/engine/core/gpu/MappedBufferWriter.js","sourceHash":"c21a3ede69827ffa5b424d221d3855a615c0e97e50b2402ee9bff535c1eb7142","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/MappedBufferWriter.js#0000:MappedBufferWriter","exportIndex":0,"name":"MappedBufferWriter","kind":"class","signature":"class MappedBufferWriter","summary":"Mapped Buffer Writer - Eliminates double-copy overhead from writeBuffer() Based on WebGPU optimization best practices from webgpufundamentals.org Saves one CPU→GPU copy per upload (10-20% faster uploads)"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/MappedBufferWriter.md","moduleTitle":"core/gpu/MappedBufferWriter","source":"engine/core/gpu/MappedBufferWriter.js","import":"/engine/core/gpu/MappedBufferWriter.js","sourceHash":"c21a3ede69827ffa5b424d221d3855a615c0e97e50b2402ee9bff535c1eb7142","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/MappedBufferWriter.js#0001:UniformBufferWriter","exportIndex":1,"name":"UniformBufferWriter","kind":"class","signature":"class UniformBufferWriter extends MappedBufferWriter","summary":"Uniform Buffer Writer - Optimized for frequent uniform updates"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/OptimizationIntegration.md","moduleTitle":"core/gpu/OptimizationIntegration","source":"engine/core/gpu/OptimizationIntegration.js","import":"/engine/core/gpu/OptimizationIntegration.js","sourceHash":"5d9b1b3e9fd40eabb6fe4d27ffc729cf7b5493267ffdf481cc0ab586088ef951","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/OptimizationIntegration.js","title":"core/gpu/OptimizationIntegration","summary":"Enhanced GPU Device wrapper with all optimizations","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/OptimizationIntegration.md","moduleTitle":"core/gpu/OptimizationIntegration","source":"engine/core/gpu/OptimizationIntegration.js","import":"/engine/core/gpu/OptimizationIntegration.js","sourceHash":"5d9b1b3e9fd40eabb6fe4d27ffc729cf7b5493267ffdf481cc0ab586088ef951","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/OptimizationIntegration.js#0000:OptimizedGPUDevice","exportIndex":0,"name":"OptimizedGPUDevice","kind":"class","signature":"class OptimizedGPUDevice","summary":"Enhanced GPU Device wrapper with all optimizations"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/OptimizationIntegration.md","moduleTitle":"core/gpu/OptimizationIntegration","source":"engine/core/gpu/OptimizationIntegration.js","import":"/engine/core/gpu/OptimizationIntegration.js","sourceHash":"5d9b1b3e9fd40eabb6fe4d27ffc729cf7b5493267ffdf481cc0ab586088ef951","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/OptimizationIntegration.js#0001:OptimizationHelpers","exportIndex":1,"name":"OptimizationHelpers","kind":"constant","signature":"OptimizationHelpers","summary":"Quick optimization helper functions"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/PipelineCache.md","moduleTitle":"core/gpu/PipelineCache","source":"engine/core/gpu/PipelineCache.js","import":"/engine/core/gpu/PipelineCache.js","sourceHash":"d1ddc20b76a3057be56c416d02faa049c33e9e9acdc3550fcc0cabd06900b7e8","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/PipelineCache.js","title":"core/gpu/PipelineCache","summary":"Next-gen pipeline cache with IndexedDB persistence and background compilation Eliminates ALL pipeline creation stalls","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/PipelineCache.md","moduleTitle":"core/gpu/PipelineCache","source":"engine/core/gpu/PipelineCache.js","import":"/engine/core/gpu/PipelineCache.js","sourceHash":"d1ddc20b76a3057be56c416d02faa049c33e9e9acdc3550fcc0cabd06900b7e8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/PipelineCache.js#0000:PipelineCache","exportIndex":0,"name":"PipelineCache","kind":"class","signature":"class PipelineCache","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/ProgressiveWorkBudget.md","moduleTitle":"core/gpu/ProgressiveWorkBudget","source":"engine/core/gpu/ProgressiveWorkBudget.js","import":"/engine/core/gpu/ProgressiveWorkBudget.js","sourceHash":"c7dd8b379b6e4617f44e4df0a0c654da3fa75686a6e6e54c29297c9d206167d7","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/ProgressiveWorkBudget.js","title":"core/gpu/ProgressiveWorkBudget","summary":"Plans optional refinement from measured spare GPU time. It never delays the host frame, submits work, or changes correctness-critical work.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/ProgressiveWorkBudget.md","moduleTitle":"core/gpu/ProgressiveWorkBudget","source":"engine/core/gpu/ProgressiveWorkBudget.js","import":"/engine/core/gpu/ProgressiveWorkBudget.js","sourceHash":"c7dd8b379b6e4617f44e4df0a0c654da3fa75686a6e6e54c29297c9d206167d7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/ProgressiveWorkBudget.js#0000:planProgressiveWorkBudget","exportIndex":0,"name":"planProgressiveWorkBudget","kind":"function","signature":"planProgressiveWorkBudget(options = {})","summary":"Plans optional refinement from measured spare GPU time. It never delays the host frame, submits work, or changes correctness-critical work."}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/ShaderCompilationQueue.md","moduleTitle":"core/gpu/ShaderCompilationQueue","source":"engine/core/gpu/ShaderCompilationQueue.js","import":"/engine/core/gpu/ShaderCompilationQueue.js","sourceHash":"5c8069a91d1a4d3d6d6344d42cf7258c540bb7c9cde10c16c96148d389d50167","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/ShaderCompilationQueue.js","title":"core/gpu/ShaderCompilationQueue","summary":"Async Shader Compilation Queue - Priority-based background compilation Eliminates frame stalls from shader compilation","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/ShaderCompilationQueue.md","moduleTitle":"core/gpu/ShaderCompilationQueue","source":"engine/core/gpu/ShaderCompilationQueue.js","import":"/engine/core/gpu/ShaderCompilationQueue.js","sourceHash":"5c8069a91d1a4d3d6d6344d42cf7258c540bb7c9cde10c16c96148d389d50167","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/ShaderCompilationQueue.js#0000:ShaderCompilationQueue","exportIndex":0,"name":"ShaderCompilationQueue","kind":"class","signature":"class ShaderCompilationQueue","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/SimulationProfiler.md","moduleTitle":"core/gpu/SimulationProfiler","source":"engine/core/gpu/SimulationProfiler.js","import":"/engine/core/gpu/SimulationProfiler.js","sourceHash":"dcbf2fcf7d0b8a70114ebe3eae40251f47347215d0473c94d2d38bf9c56982c3","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/SimulationProfiler.js","title":"core/gpu/SimulationProfiler","summary":"SimulationProfiler.js - GPU Timestamp Profiling for Simulation Systems Provides detailed GPU timing information for: - Voxel collision passes - Rope physics passes - Rope rendering passes - Particle simulation passes Uses WebGPU timestamp queries for accurate GPU-side timing.","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/SimulationProfiler.md","moduleTitle":"core/gpu/SimulationProfiler","source":"engine/core/gpu/SimulationProfiler.js","import":"/engine/core/gpu/SimulationProfiler.js","sourceHash":"dcbf2fcf7d0b8a70114ebe3eae40251f47347215d0473c94d2d38bf9c56982c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/SimulationProfiler.js#0000:SimulationProfiler","exportIndex":0,"name":"SimulationProfiler","kind":"class","signature":"class SimulationProfiler","summary":"SimulationProfiler.js - GPU Timestamp Profiling for Simulation Systems Provides detailed GPU timing information for: - Voxel collision passes - Rope physics passes - Rope rendering passes - Particle simulation passes Uses WebGPU timestamp queries for accurate GPU-side timing."}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/SimulationProfiler.md","moduleTitle":"core/gpu/SimulationProfiler","source":"engine/core/gpu/SimulationProfiler.js","import":"/engine/core/gpu/SimulationProfiler.js","sourceHash":"dcbf2fcf7d0b8a70114ebe3eae40251f47347215d0473c94d2d38bf9c56982c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/SimulationProfiler.js#0001:profiledComputePass","exportIndex":1,"name":"profiledComputePass","kind":"function","signature":"profiledComputePass(profiler, encoder, name, fn)","summary":"Profiled compute pass helper Wraps a compute pass with automatic start/end timestamps"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/SimulationProfiler.md","moduleTitle":"core/gpu/SimulationProfiler","source":"engine/core/gpu/SimulationProfiler.js","import":"/engine/core/gpu/SimulationProfiler.js","sourceHash":"dcbf2fcf7d0b8a70114ebe3eae40251f47347215d0473c94d2d38bf9c56982c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/SimulationProfiler.js#0002:createSimulationProfiler","exportIndex":2,"name":"createSimulationProfiler","kind":"function","signature":"createSimulationProfiler(device, options = {})","summary":"Create a simulation profiler instance"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/SimulationProfiler.md","moduleTitle":"core/gpu/SimulationProfiler","source":"engine/core/gpu/SimulationProfiler.js","import":"/engine/core/gpu/SimulationProfiler.js","sourceHash":"dcbf2fcf7d0b8a70114ebe3eae40251f47347215d0473c94d2d38bf9c56982c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/SimulationProfiler.js#0003:ProfileSections","exportIndex":3,"name":"ProfileSections","kind":"constant","signature":"ProfileSections","summary":"Pre-defined section names for consistency"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/SparsePageRuntime.md","moduleTitle":"core/gpu/SparsePageRuntime","source":"engine/core/gpu/SparsePageRuntime.js","import":"/engine/core/gpu/SparsePageRuntime.js","sourceHash":"df9dc014eb7805029e9fe763f82a50599b263b8899bf77d228d3c03222e5e5ed","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/SparsePageRuntime.js","title":"core/gpu/SparsePageRuntime","summary":"Device-independent, revisioned sparse residency contract shared by field, voxel-derived, and texture pages. A commit is atomic: validation, fallback closure, slot allocation, and eviction all finish before publication.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/SparsePageRuntime.md","moduleTitle":"core/gpu/SparsePageRuntime","source":"engine/core/gpu/SparsePageRuntime.js","import":"/engine/core/gpu/SparsePageRuntime.js","sourceHash":"df9dc014eb7805029e9fe763f82a50599b263b8899bf77d228d3c03222e5e5ed","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/SparsePageRuntime.js#0000:SparsePageRuntime","exportIndex":0,"name":"SparsePageRuntime","kind":"class","signature":"class SparsePageRuntime","summary":"Device-independent, revisioned sparse residency contract shared by field, voxel-derived, and texture pages. A commit is atomic: validation, fallback closure, slot allocation, and eviction all finish before publication."}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/SparsePageRuntime.md","moduleTitle":"core/gpu/SparsePageRuntime","source":"engine/core/gpu/SparsePageRuntime.js","import":"/engine/core/gpu/SparsePageRuntime.js","sourceHash":"df9dc014eb7805029e9fe763f82a50599b263b8899bf77d228d3c03222e5e5ed","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/SparsePageRuntime.js#0001:createSparsePageRuntime","exportIndex":1,"name":"createSparsePageRuntime","kind":"function","signature":"createSparsePageRuntime(options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/TextureAtlasManager.md","moduleTitle":"core/gpu/TextureAtlasManager","source":"engine/core/gpu/TextureAtlasManager.js","import":"/engine/core/gpu/TextureAtlasManager.js","sourceHash":"96c8cf8e4a119a3bd0b5a8bab49b193a1705c07f4eda90bf0e345a51f6cbaedd","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/TextureAtlasManager.js","title":"core/gpu/TextureAtlasManager","summary":"Texture Atlas Manager - Dynamic texture packing for GPU memory optimization Reduces texture bindings and improves cache coherency","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/TextureAtlasManager.md","moduleTitle":"core/gpu/TextureAtlasManager","source":"engine/core/gpu/TextureAtlasManager.js","import":"/engine/core/gpu/TextureAtlasManager.js","sourceHash":"96c8cf8e4a119a3bd0b5a8bab49b193a1705c07f4eda90bf0e345a51f6cbaedd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/TextureAtlasManager.js#0000:TextureAtlasManager","exportIndex":0,"name":"TextureAtlasManager","kind":"class","signature":"class TextureAtlasManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUBindGroupManager.md","moduleTitle":"core/gpu/VGPUBindGroupManager","source":"engine/core/gpu/VGPUBindGroupManager.js","import":"/engine/core/gpu/VGPUBindGroupManager.js","sourceHash":"c55720c4fc050d332925223f8b146a6a2c2e8039d38d8d2b7fad6f149c139c80","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/VGPUBindGroupManager.js","title":"core/gpu/VGPUBindGroupManager","summary":"Automatic Bind Group Manager - Material system that auto-generates bind groups from shader","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUBindGroupManager.md","moduleTitle":"core/gpu/VGPUBindGroupManager","source":"engine/core/gpu/VGPUBindGroupManager.js","import":"/engine/core/gpu/VGPUBindGroupManager.js","sourceHash":"c55720c4fc050d332925223f8b146a6a2c2e8039d38d8d2b7fad6f149c139c80","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/VGPUBindGroupManager.js#0000:VGPUBindGroupManager","exportIndex":0,"name":"VGPUBindGroupManager","kind":"class","signature":"class VGPUBindGroupManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUBindGroupManager.md","moduleTitle":"core/gpu/VGPUBindGroupManager","source":"engine/core/gpu/VGPUBindGroupManager.js","import":"/engine/core/gpu/VGPUBindGroupManager.js","sourceHash":"c55720c4fc050d332925223f8b146a6a2c2e8039d38d8d2b7fad6f149c139c80","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/VGPUBindGroupManager.js#0001:Material","exportIndex":1,"name":"Material","kind":"re-export","signature":"Material","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUBindGroupManager.md","moduleTitle":"core/gpu/VGPUBindGroupManager","source":"engine/core/gpu/VGPUBindGroupManager.js","import":"/engine/core/gpu/VGPUBindGroupManager.js","sourceHash":"c55720c4fc050d332925223f8b146a6a2c2e8039d38d8d2b7fad6f149c139c80","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/VGPUBindGroupManager.js#0002:MaterialInstance","exportIndex":2,"name":"MaterialInstance","kind":"re-export","signature":"MaterialInstance","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUBindless.md","moduleTitle":"core/gpu/VGPUBindless","source":"engine/core/gpu/VGPUBindless.js","import":"/engine/core/gpu/VGPUBindless.js","sourceHash":"1ae773b0280c56738d933803ba45a4cd259f4a15818a440bbadb2bb06898246c","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/VGPUBindless.js","title":"core/gpu/VGPUBindless","summary":"Bindless Preparation - Storage buffer texture arrays for bindless-style rendering","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUBindless.md","moduleTitle":"core/gpu/VGPUBindless","source":"engine/core/gpu/VGPUBindless.js","import":"/engine/core/gpu/VGPUBindless.js","sourceHash":"1ae773b0280c56738d933803ba45a4cd259f4a15818a440bbadb2bb06898246c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/VGPUBindless.js#0000:VGPUBindless","exportIndex":0,"name":"VGPUBindless","kind":"class","signature":"class VGPUBindless","summary":"Bindless Preparation - Storage buffer texture arrays for bindless-style rendering"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUComputeUtils.md","moduleTitle":"core/gpu/VGPUComputeUtils","source":"engine/core/gpu/VGPUComputeUtils.js","import":"/engine/core/gpu/VGPUComputeUtils.js","sourceHash":"c6e51af81a42a61d9f4a35249d8760e5c55f35ef3ac3d7d53c7ee6857c7358be","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/VGPUComputeUtils.js","title":"core/gpu/VGPUComputeUtils","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUComputeUtils.md","moduleTitle":"core/gpu/VGPUComputeUtils","source":"engine/core/gpu/VGPUComputeUtils.js","import":"/engine/core/gpu/VGPUComputeUtils.js","sourceHash":"c6e51af81a42a61d9f4a35249d8760e5c55f35ef3ac3d7d53c7ee6857c7358be","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/VGPUComputeUtils.js#0000:VGPUComputeUtils","exportIndex":0,"name":"VGPUComputeUtils","kind":"class","signature":"class VGPUComputeUtils","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUDebugDraw.md","moduleTitle":"core/gpu/VGPUDebugDraw","source":"engine/core/gpu/VGPUDebugDraw.js","import":"/engine/core/gpu/VGPUDebugDraw.js","sourceHash":"11dd7c16baf945e8e03e015abc08d37f7e76e70a3c0448cd5f5ebbaa2435460e","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/VGPUDebugDraw.js","title":"core/gpu/VGPUDebugDraw","summary":"Debug Draw System with dynamic buffer sizing","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUDebugDraw.md","moduleTitle":"core/gpu/VGPUDebugDraw","source":"engine/core/gpu/VGPUDebugDraw.js","import":"/engine/core/gpu/VGPUDebugDraw.js","sourceHash":"11dd7c16baf945e8e03e015abc08d37f7e76e70a3c0448cd5f5ebbaa2435460e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/VGPUDebugDraw.js#0000:VGPUDebugDraw","exportIndex":0,"name":"VGPUDebugDraw","kind":"class","signature":"class VGPUDebugDraw","summary":"Debug Draw System with dynamic buffer sizing"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUDebugDraw.md","moduleTitle":"core/gpu/VGPUDebugDraw","source":"engine/core/gpu/VGPUDebugDraw.js","import":"/engine/core/gpu/VGPUDebugDraw.js","sourceHash":"11dd7c16baf945e8e03e015abc08d37f7e76e70a3c0448cd5f5ebbaa2435460e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/VGPUDebugDraw.js#0001:DebugDrawScope","exportIndex":1,"name":"DebugDrawScope","kind":"class","signature":"class DebugDrawScope","summary":"Scoped debug drawing (auto-clears when scope ends)"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUHiZCulling.md","moduleTitle":"core/gpu/VGPUHiZCulling","source":"engine/core/gpu/VGPUHiZCulling.js","import":"/engine/core/gpu/VGPUHiZCulling.js","sourceHash":"78300f44cf651ac13925a48bd6a060e4937ed09c4dc276c7930aaace1f32309e","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/VGPUHiZCulling.js","title":"core/gpu/VGPUHiZCulling","summary":"Hierarchical-Z Occlusion Culling System","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUHiZCulling.md","moduleTitle":"core/gpu/VGPUHiZCulling","source":"engine/core/gpu/VGPUHiZCulling.js","import":"/engine/core/gpu/VGPUHiZCulling.js","sourceHash":"78300f44cf651ac13925a48bd6a060e4937ed09c4dc276c7930aaace1f32309e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/VGPUHiZCulling.js#0000:VGPUHiZCulling","exportIndex":0,"name":"VGPUHiZCulling","kind":"class","signature":"class VGPUHiZCulling","summary":"Hierarchical-Z Occlusion Culling System"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUHiZCulling.md","moduleTitle":"core/gpu/VGPUHiZCulling","source":"engine/core/gpu/VGPUHiZCulling.js","import":"/engine/core/gpu/VGPUHiZCulling.js","sourceHash":"78300f44cf651ac13925a48bd6a060e4937ed09c4dc276c7930aaace1f32309e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/VGPUHiZCulling.js#0001:BoundingBoxBuilder","exportIndex":1,"name":"BoundingBoxBuilder","kind":"class","signature":"class BoundingBoxBuilder","summary":"Helper to build bounding box data for HiZ culling Grows dynamically - no fixed maximum."}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUIndirectRenderer.md","moduleTitle":"core/gpu/VGPUIndirectRenderer","source":"engine/core/gpu/VGPUIndirectRenderer.js","import":"/engine/core/gpu/VGPUIndirectRenderer.js","sourceHash":"5dd5842eca6133aeb6ae3aef45349e4aba0d2b61f07ab2d1f3bd8e2ff0de254d","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/VGPUIndirectRenderer.js","title":"core/gpu/VGPUIndirectRenderer","summary":"GPU-driven indirect renderer with dynamic buffer sizing","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUIndirectRenderer.md","moduleTitle":"core/gpu/VGPUIndirectRenderer","source":"engine/core/gpu/VGPUIndirectRenderer.js","import":"/engine/core/gpu/VGPUIndirectRenderer.js","sourceHash":"5dd5842eca6133aeb6ae3aef45349e4aba0d2b61f07ab2d1f3bd8e2ff0de254d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/VGPUIndirectRenderer.js#0000:VGPUIndirectRenderer","exportIndex":0,"name":"VGPUIndirectRenderer","kind":"class","signature":"class VGPUIndirectRenderer","summary":"GPU-driven indirect renderer with dynamic buffer sizing"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUIndirectRenderer.md","moduleTitle":"core/gpu/VGPUIndirectRenderer","source":"engine/core/gpu/VGPUIndirectRenderer.js","import":"/engine/core/gpu/VGPUIndirectRenderer.js","sourceHash":"5dd5842eca6133aeb6ae3aef45349e4aba0d2b61f07ab2d1f3bd8e2ff0de254d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/VGPUIndirectRenderer.js#0001:IndirectInstanceBuilder","exportIndex":1,"name":"IndirectInstanceBuilder","kind":"class","signature":"class IndirectInstanceBuilder","summary":"Helper to build instance data for indirect rendering Grows dynamically - no fixed maximum."}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUMemoryTracker.md","moduleTitle":"core/gpu/VGPUMemoryTracker","source":"engine/core/gpu/VGPUMemoryTracker.js","import":"/engine/core/gpu/VGPUMemoryTracker.js","sourceHash":"cc75b6e20f25b6f2e45b43adf1a436ce7134576802e8bfdc2174c292f6e4f4ac","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/VGPUMemoryTracker.js","title":"core/gpu/VGPUMemoryTracker","summary":"Memory Budget Tracker - Track GPU memory usage, warn on budget exceeded Also provides GPU memory probing to detect available VRAM","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUMemoryTracker.md","moduleTitle":"core/gpu/VGPUMemoryTracker","source":"engine/core/gpu/VGPUMemoryTracker.js","import":"/engine/core/gpu/VGPUMemoryTracker.js","sourceHash":"cc75b6e20f25b6f2e45b43adf1a436ce7134576802e8bfdc2174c292f6e4f4ac","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/VGPUMemoryTracker.js#0000:VGPUMemoryTracker","exportIndex":0,"name":"VGPUMemoryTracker","kind":"class","signature":"class VGPUMemoryTracker","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUMultiQueue.md","moduleTitle":"core/gpu/VGPUMultiQueue","source":"engine/core/gpu/VGPUMultiQueue.js","import":"/engine/core/gpu/VGPUMultiQueue.js","sourceHash":"1236e07d34f92cf2972a5fb1173dbb86368bed794c58d20f88728eee6ddd0b9d","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/VGPUMultiQueue.js","title":"core/gpu/VGPUMultiQueue","summary":"Multi-Queue Abstraction - Separate graphics/compute/transfer queues when available","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUMultiQueue.md","moduleTitle":"core/gpu/VGPUMultiQueue","source":"engine/core/gpu/VGPUMultiQueue.js","import":"/engine/core/gpu/VGPUMultiQueue.js","sourceHash":"1236e07d34f92cf2972a5fb1173dbb86368bed794c58d20f88728eee6ddd0b9d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/VGPUMultiQueue.js#0000:VGPUMultiQueue","exportIndex":0,"name":"VGPUMultiQueue","kind":"class","signature":"class VGPUMultiQueue","summary":"Multi-Queue Abstraction - Separate graphics/compute/transfer queues when available"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUMultiQueue.md","moduleTitle":"core/gpu/VGPUMultiQueue","source":"engine/core/gpu/VGPUMultiQueue.js","import":"/engine/core/gpu/VGPUMultiQueue.js","sourceHash":"1236e07d34f92cf2972a5fb1173dbb86368bed794c58d20f88728eee6ddd0b9d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/VGPUMultiQueue.js#0001:Fence","exportIndex":1,"name":"Fence","kind":"re-export","signature":"Fence","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUMultiQueue.md","moduleTitle":"core/gpu/VGPUMultiQueue","source":"engine/core/gpu/VGPUMultiQueue.js","import":"/engine/core/gpu/VGPUMultiQueue.js","sourceHash":"1236e07d34f92cf2972a5fb1173dbb86368bed794c58d20f88728eee6ddd0b9d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/VGPUMultiQueue.js#0002:VirtualQueue","exportIndex":2,"name":"VirtualQueue","kind":"re-export","signature":"VirtualQueue","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUQualityScaler.md","moduleTitle":"core/gpu/VGPUQualityScaler","source":"engine/core/gpu/VGPUQualityScaler.js","import":"/engine/core/gpu/VGPUQualityScaler.js","sourceHash":"bd8cf911359fb1ca7ba1862ab3935b1eb2b44b2db6b62859328821ece190d4d9","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/VGPUQualityScaler.js","title":"core/gpu/VGPUQualityScaler","summary":"Quality Scaler - Dynamic resolution/quality based on frame time budget","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUQualityScaler.md","moduleTitle":"core/gpu/VGPUQualityScaler","source":"engine/core/gpu/VGPUQualityScaler.js","import":"/engine/core/gpu/VGPUQualityScaler.js","sourceHash":"bd8cf911359fb1ca7ba1862ab3935b1eb2b44b2db6b62859328821ece190d4d9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/VGPUQualityScaler.js#0000:VGPUQualityScaler","exportIndex":0,"name":"VGPUQualityScaler","kind":"class","signature":"class VGPUQualityScaler","summary":"Quality Scaler - Dynamic resolution/quality based on frame time budget"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUQualityScaler.md","moduleTitle":"core/gpu/VGPUQualityScaler","source":"engine/core/gpu/VGPUQualityScaler.js","import":"/engine/core/gpu/VGPUQualityScaler.js","sourceHash":"bd8cf911359fb1ca7ba1862ab3935b1eb2b44b2db6b62859328821ece190d4d9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/VGPUQualityScaler.js#0001:VGPUDynamicViewport","exportIndex":1,"name":"VGPUDynamicViewport","kind":"class","signature":"class VGPUDynamicViewport","summary":"Viewport manager for dynamic resolution"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUReadbackQueue.md","moduleTitle":"core/gpu/VGPUReadbackQueue","source":"engine/core/gpu/VGPUReadbackQueue.js","import":"/engine/core/gpu/VGPUReadbackQueue.js","sourceHash":"aab2a2bab5fd119a18b0a0280c3717b083b9f251bdc53fc52e03544f7a55b3d9","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/VGPUReadbackQueue.js","title":"core/gpu/VGPUReadbackQueue","summary":"GPU Readback Queue - Async buffer/texture reads with callbacks Batches staging buffers for efficient GPU→CPU data transfer","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUReadbackQueue.md","moduleTitle":"core/gpu/VGPUReadbackQueue","source":"engine/core/gpu/VGPUReadbackQueue.js","import":"/engine/core/gpu/VGPUReadbackQueue.js","sourceHash":"aab2a2bab5fd119a18b0a0280c3717b083b9f251bdc53fc52e03544f7a55b3d9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/VGPUReadbackQueue.js#0000:VGPUReadbackQueue","exportIndex":0,"name":"VGPUReadbackQueue","kind":"class","signature":"class VGPUReadbackQueue","summary":"GPU Readback Queue - Async buffer/texture reads with callbacks Batches staging buffers for efficient GPU→CPU data transfer"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPURenderGraph.md","moduleTitle":"core/gpu/VGPURenderGraph","source":"engine/core/gpu/VGPURenderGraph.js","import":"/engine/core/gpu/VGPURenderGraph.js","sourceHash":"ac3ff76ee3d753c2cc9776168e878aa56c3cc16d251ad1a065bd33b24c1dd705","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/VGPURenderGraph.js","title":"core/gpu/VGPURenderGraph","summary":"Main Render Graph class","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPURenderGraph.md","moduleTitle":"core/gpu/VGPURenderGraph","source":"engine/core/gpu/VGPURenderGraph.js","import":"/engine/core/gpu/VGPURenderGraph.js","sourceHash":"ac3ff76ee3d753c2cc9776168e878aa56c3cc16d251ad1a065bd33b24c1dd705","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/VGPURenderGraph.js#0000:VGPURenderGraph","exportIndex":0,"name":"VGPURenderGraph","kind":"class","signature":"class VGPURenderGraph","summary":"Main Render Graph class"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPURenderGraph.md","moduleTitle":"core/gpu/VGPURenderGraph","source":"engine/core/gpu/VGPURenderGraph.js","import":"/engine/core/gpu/VGPURenderGraph.js","sourceHash":"ac3ff76ee3d753c2cc9776168e878aa56c3cc16d251ad1a065bd33b24c1dd705","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/VGPURenderGraph.js#0001:RenderGraphBuilder","exportIndex":1,"name":"RenderGraphBuilder","kind":"class","signature":"class RenderGraphBuilder","summary":"Builder pattern for ergonomic graph construction"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPURenderGraph.md","moduleTitle":"core/gpu/VGPURenderGraph","source":"engine/core/gpu/VGPURenderGraph.js","import":"/engine/core/gpu/VGPURenderGraph.js","sourceHash":"ac3ff76ee3d753c2cc9776168e878aa56c3cc16d251ad1a065bd33b24c1dd705","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/VGPURenderGraph.js#0002:ResourceType","exportIndex":2,"name":"ResourceType","kind":"re-export","signature":"ResourceType","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPURenderGraph.md","moduleTitle":"core/gpu/VGPURenderGraph","source":"engine/core/gpu/VGPURenderGraph.js","import":"/engine/core/gpu/VGPURenderGraph.js","sourceHash":"ac3ff76ee3d753c2cc9776168e878aa56c3cc16d251ad1a065bd33b24c1dd705","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/VGPURenderGraph.js#0003:ResourceUsage","exportIndex":3,"name":"ResourceUsage","kind":"re-export","signature":"ResourceUsage","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPURenderStats.md","moduleTitle":"core/gpu/VGPURenderStats","source":"engine/core/gpu/VGPURenderStats.js","import":"/engine/core/gpu/VGPURenderStats.js","sourceHash":"73e39092b9cecc5946d7549933058cea8449e1da5898f9319d1662d9950daf1a","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/VGPURenderStats.js","title":"core/gpu/VGPURenderStats","summary":"Render Statistics - Draw call counts, triangle counts, state changes per frame","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPURenderStats.md","moduleTitle":"core/gpu/VGPURenderStats","source":"engine/core/gpu/VGPURenderStats.js","import":"/engine/core/gpu/VGPURenderStats.js","sourceHash":"73e39092b9cecc5946d7549933058cea8449e1da5898f9319d1662d9950daf1a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/VGPURenderStats.js#0000:VGPURenderStats","exportIndex":0,"name":"VGPURenderStats","kind":"class","signature":"class VGPURenderStats","summary":"Render Statistics - Draw call counts, triangle counts, state changes per frame"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPURenderStats.md","moduleTitle":"core/gpu/VGPURenderStats","source":"engine/core/gpu/VGPURenderStats.js","import":"/engine/core/gpu/VGPURenderStats.js","sourceHash":"73e39092b9cecc5946d7549933058cea8449e1da5898f9319d1662d9950daf1a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/VGPURenderStats.js#0001:VGPUStatsOverlay","exportIndex":1,"name":"VGPUStatsOverlay","kind":"class","signature":"class VGPUStatsOverlay","summary":"Stats overlay for debug display"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUResourceBarriers.md","moduleTitle":"core/gpu/VGPUResourceBarriers","source":"engine/core/gpu/VGPUResourceBarriers.js","import":"/engine/core/gpu/VGPUResourceBarriers.js","sourceHash":"006c740913fe633194877c94a762081f97a0e0c8404e4262fa8a848ab2dd734c","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/VGPUResourceBarriers.js","title":"core/gpu/VGPUResourceBarriers","summary":"Resource Barriers Helper - Explicit sync points for complex resource dependencies","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUResourceBarriers.md","moduleTitle":"core/gpu/VGPUResourceBarriers","source":"engine/core/gpu/VGPUResourceBarriers.js","import":"/engine/core/gpu/VGPUResourceBarriers.js","sourceHash":"006c740913fe633194877c94a762081f97a0e0c8404e4262fa8a848ab2dd734c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/VGPUResourceBarriers.js#0000:VGPUResourceBarriers","exportIndex":0,"name":"VGPUResourceBarriers","kind":"class","signature":"class VGPUResourceBarriers","summary":"Resource Barriers Helper - Explicit sync points for complex resource dependencies"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUResourceBarriers.md","moduleTitle":"core/gpu/VGPUResourceBarriers","source":"engine/core/gpu/VGPUResourceBarriers.js","import":"/engine/core/gpu/VGPUResourceBarriers.js","sourceHash":"006c740913fe633194877c94a762081f97a0e0c8404e4262fa8a848ab2dd734c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/VGPUResourceBarriers.js#0001:BarrierScope","exportIndex":1,"name":"BarrierScope","kind":"re-export","signature":"BarrierScope","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUResourceBarriers.md","moduleTitle":"core/gpu/VGPUResourceBarriers","source":"engine/core/gpu/VGPUResourceBarriers.js","import":"/engine/core/gpu/VGPUResourceBarriers.js","sourceHash":"006c740913fe633194877c94a762081f97a0e0c8404e4262fa8a848ab2dd734c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/VGPUResourceBarriers.js#0002:DependencyGraph","exportIndex":2,"name":"DependencyGraph","kind":"re-export","signature":"DependencyGraph","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUShaderReflection.md","moduleTitle":"core/gpu/VGPUShaderReflection","source":"engine/core/gpu/VGPUShaderReflection.js","import":"/engine/core/gpu/VGPUShaderReflection.js","sourceHash":"ef8a1d5393c2c53eb3a1fd184712797f531c9fdaed094e9f4dd9c49609498f60","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/VGPUShaderReflection.js","title":"core/gpu/VGPUShaderReflection","summary":"Shader Reflection - Parse WGSL to extract bindings, uniforms, entry points","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUShaderReflection.md","moduleTitle":"core/gpu/VGPUShaderReflection","source":"engine/core/gpu/VGPUShaderReflection.js","import":"/engine/core/gpu/VGPUShaderReflection.js","sourceHash":"ef8a1d5393c2c53eb3a1fd184712797f531c9fdaed094e9f4dd9c49609498f60","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/VGPUShaderReflection.js#0000:VGPUShaderReflection","exportIndex":0,"name":"VGPUShaderReflection","kind":"class","signature":"class VGPUShaderReflection","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUShaderReflection.md","moduleTitle":"core/gpu/VGPUShaderReflection","source":"engine/core/gpu/VGPUShaderReflection.js","import":"/engine/core/gpu/VGPUShaderReflection.js","sourceHash":"ef8a1d5393c2c53eb3a1fd184712797f531c9fdaed094e9f4dd9c49609498f60","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/VGPUShaderReflection.js#0001:getShaderReflection","exportIndex":1,"name":"getShaderReflection","kind":"function","signature":"getShaderReflection()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUShaderReflection.md","moduleTitle":"core/gpu/VGPUShaderReflection","source":"engine/core/gpu/VGPUShaderReflection.js","import":"/engine/core/gpu/VGPUShaderReflection.js","sourceHash":"ef8a1d5393c2c53eb3a1fd184712797f531c9fdaed094e9f4dd9c49609498f60","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/VGPUShaderReflection.js#0002:getStructBufferSize","exportIndex":2,"name":"getStructBufferSize","kind":"function","signature":"getStructBufferSize(shaderSource, structName)","summary":"Get the required buffer size for a uniform struct in a shader. Automatically calculates correct WGSL alignment."}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUShaderReflection.md","moduleTitle":"core/gpu/VGPUShaderReflection","source":"engine/core/gpu/VGPUShaderReflection.js","import":"/engine/core/gpu/VGPUShaderReflection.js","sourceHash":"ef8a1d5393c2c53eb3a1fd184712797f531c9fdaed094e9f4dd9c49609498f60","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/VGPUShaderReflection.js#0003:getUniformBufferSizes","exportIndex":3,"name":"getUniformBufferSizes","kind":"function","signature":"getUniformBufferSizes(shaderSource)","summary":"Get buffer sizes for all uniform bindings in a shader."}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUShaderReflection.md","moduleTitle":"core/gpu/VGPUShaderReflection","source":"engine/core/gpu/VGPUShaderReflection.js","import":"/engine/core/gpu/VGPUShaderReflection.js","sourceHash":"ef8a1d5393c2c53eb3a1fd184712797f531c9fdaed094e9f4dd9c49609498f60","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/VGPUShaderReflection.js#0004:createAutoSizedUniformBuffer","exportIndex":4,"name":"createAutoSizedUniformBuffer","kind":"function","signature":"createAutoSizedUniformBuffer(device, shaderSource, structName, options = {})","summary":"Create a uniform buffer with automatically calculated size from shader struct."}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUShaderReflection.md","moduleTitle":"core/gpu/VGPUShaderReflection","source":"engine/core/gpu/VGPUShaderReflection.js","import":"/engine/core/gpu/VGPUShaderReflection.js","sourceHash":"ef8a1d5393c2c53eb3a1fd184712797f531c9fdaed094e9f4dd9c49609498f60","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/VGPUShaderReflection.js#0005:validateBufferSize","exportIndex":5,"name":"validateBufferSize","kind":"function","signature":"validateBufferSize(buffer, shaderSource, structName)","summary":"Validate that a buffer meets the minimum size requirement for a shader struct."}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUShaderReflection.md","moduleTitle":"core/gpu/VGPUShaderReflection","source":"engine/core/gpu/VGPUShaderReflection.js","import":"/engine/core/gpu/VGPUShaderReflection.js","sourceHash":"ef8a1d5393c2c53eb3a1fd184712797f531c9fdaed094e9f4dd9c49609498f60","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/VGPUShaderReflection.js#0006:debugShaderStructs","exportIndex":6,"name":"debugShaderStructs","kind":"function","signature":"debugShaderStructs(shaderSource)","summary":"Get all struct sizes in a shader for debugging."}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUStreamingManager.md","moduleTitle":"core/gpu/VGPUStreamingManager","source":"engine/core/gpu/VGPUStreamingManager.js","import":"/engine/core/gpu/VGPUStreamingManager.js","sourceHash":"5cbbe5d645480ab8375408193b2ec698d982673d3c2cdd73435a3d093c7fe32a","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/VGPUStreamingManager.js","title":"core/gpu/VGPUStreamingManager","summary":"VGPUStreamingManager - Progressive resource loading and streaming Features: - Priority-based loading queue with distance/importance weighting - Async texture streaming with mip-level progression - Mesh LOD streaming - Memory budget management - Placeholder resources while loading - Automatic eviction of unused resources Usage: const streaming = new VGPUStreamingManager(vgpu); await streaming.init({ memoryBudget: 512 * 1024 * 1024 }); const textureHandle = streaming.requestTexture('path/to/texture.png', { priority: 1.0 }); const texture = streaming.getTexture(textureHandle); // Returns placeholder until loaded","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUStreamingManager.md","moduleTitle":"core/gpu/VGPUStreamingManager","source":"engine/core/gpu/VGPUStreamingManager.js","import":"/engine/core/gpu/VGPUStreamingManager.js","sourceHash":"5cbbe5d645480ab8375408193b2ec698d982673d3c2cdd73435a3d093c7fe32a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/VGPUStreamingManager.js#0000:VGPUStreamingManager","exportIndex":0,"name":"VGPUStreamingManager","kind":"class","signature":"class VGPUStreamingManager","summary":"Main Streaming Manager"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUStreamingManager.md","moduleTitle":"core/gpu/VGPUStreamingManager","source":"engine/core/gpu/VGPUStreamingManager.js","import":"/engine/core/gpu/VGPUStreamingManager.js","sourceHash":"5cbbe5d645480ab8375408193b2ec698d982673d3c2cdd73435a3d093c7fe32a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/VGPUStreamingManager.js#0001:ResourceState","exportIndex":1,"name":"ResourceState","kind":"re-export","signature":"ResourceState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUStreamingManager.md","moduleTitle":"core/gpu/VGPUStreamingManager","source":"engine/core/gpu/VGPUStreamingManager.js","import":"/engine/core/gpu/VGPUStreamingManager.js","sourceHash":"5cbbe5d645480ab8375408193b2ec698d982673d3c2cdd73435a3d093c7fe32a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/VGPUStreamingManager.js#0002:StreamingResourceType","exportIndex":2,"name":"StreamingResourceType","kind":"re-export","signature":"StreamingResourceType","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUTextureAtlas.md","moduleTitle":"core/gpu/VGPUTextureAtlas","source":"engine/core/gpu/VGPUTextureAtlas.js","import":"/engine/core/gpu/VGPUTextureAtlas.js","sourceHash":"6cb4a83a55030f717a5fd6db0b458bc80ab5cce0c65be27f3f9855c9b19d6137","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/VGPUTextureAtlas.js","title":"core/gpu/VGPUTextureAtlas","summary":"Texture Atlas Manager - Dynamic packing for sprites/UI, automatic UV remapping","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUTextureAtlas.md","moduleTitle":"core/gpu/VGPUTextureAtlas","source":"engine/core/gpu/VGPUTextureAtlas.js","import":"/engine/core/gpu/VGPUTextureAtlas.js","sourceHash":"6cb4a83a55030f717a5fd6db0b458bc80ab5cce0c65be27f3f9855c9b19d6137","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/VGPUTextureAtlas.js#0000:VGPUTextureAtlas","exportIndex":0,"name":"VGPUTextureAtlas","kind":"class","signature":"class VGPUTextureAtlas","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUTextureAtlas.md","moduleTitle":"core/gpu/VGPUTextureAtlas","source":"engine/core/gpu/VGPUTextureAtlas.js","import":"/engine/core/gpu/VGPUTextureAtlas.js","sourceHash":"6cb4a83a55030f717a5fd6db0b458bc80ab5cce0c65be27f3f9855c9b19d6137","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/VGPUTextureAtlas.js#0001:VGPUSpriteBatch","exportIndex":1,"name":"VGPUSpriteBatch","kind":"class","signature":"class VGPUSpriteBatch","summary":"Sprite batch renderer using texture atlas"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUTimelineSemaphores.md","moduleTitle":"core/gpu/VGPUTimelineSemaphores","source":"engine/core/gpu/VGPUTimelineSemaphores.js","import":"/engine/core/gpu/VGPUTimelineSemaphores.js","sourceHash":"c7ed6d169100d0b7de0cb05e390cef499a85cbbbe8d612292cf8628aff3478ce","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/VGPUTimelineSemaphores.js","title":"core/gpu/VGPUTimelineSemaphores","summary":"GPU Timeline Semaphores - Advanced sync for multi-engine scenarios","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUTimelineSemaphores.md","moduleTitle":"core/gpu/VGPUTimelineSemaphores","source":"engine/core/gpu/VGPUTimelineSemaphores.js","import":"/engine/core/gpu/VGPUTimelineSemaphores.js","sourceHash":"c7ed6d169100d0b7de0cb05e390cef499a85cbbbe8d612292cf8628aff3478ce","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/VGPUTimelineSemaphores.js#0000:VGPUTimelineSemaphores","exportIndex":0,"name":"VGPUTimelineSemaphores","kind":"class","signature":"class VGPUTimelineSemaphores","summary":"GPU Timeline Semaphores - Advanced sync for multi-engine scenarios"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUTimelineSemaphores.md","moduleTitle":"core/gpu/VGPUTimelineSemaphores","source":"engine/core/gpu/VGPUTimelineSemaphores.js","import":"/engine/core/gpu/VGPUTimelineSemaphores.js","sourceHash":"c7ed6d169100d0b7de0cb05e390cef499a85cbbbe8d612292cf8628aff3478ce","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/VGPUTimelineSemaphores.js#0001:FrameSync","exportIndex":1,"name":"FrameSync","kind":"re-export","signature":"FrameSync","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VGPUTimelineSemaphores.md","moduleTitle":"core/gpu/VGPUTimelineSemaphores","source":"engine/core/gpu/VGPUTimelineSemaphores.js","import":"/engine/core/gpu/VGPUTimelineSemaphores.js","sourceHash":"c7ed6d169100d0b7de0cb05e390cef499a85cbbbe8d612292cf8628aff3478ce","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/VGPUTimelineSemaphores.js#0002:TimelineSemaphore","exportIndex":2,"name":"TimelineSemaphore","kind":"re-export","signature":"TimelineSemaphore","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VirtualGPU.md","moduleTitle":"core/gpu/VirtualGPU","source":"engine/core/gpu/VirtualGPU.js","import":"/engine/core/gpu/VirtualGPU.js","sourceHash":"37c1b85b9586f8dc13965cae9b60dcc024385c0c1cf556031d3c655780c9e6fc","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/VirtualGPU.js","title":"core/gpu/VirtualGPU","summary":"Get or create the global vGPU instance","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VirtualGPU.md","moduleTitle":"core/gpu/VirtualGPU","source":"engine/core/gpu/VirtualGPU.js","import":"/engine/core/gpu/VirtualGPU.js","sourceHash":"37c1b85b9586f8dc13965cae9b60dcc024385c0c1cf556031d3c655780c9e6fc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/VirtualGPU.js#0000:VirtualGPU","exportIndex":0,"name":"VirtualGPU","kind":"class","signature":"class VirtualGPU","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VirtualGPU.md","moduleTitle":"core/gpu/VirtualGPU","source":"engine/core/gpu/VirtualGPU.js","import":"/engine/core/gpu/VirtualGPU.js","sourceHash":"37c1b85b9586f8dc13965cae9b60dcc024385c0c1cf556031d3c655780c9e6fc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/VirtualGPU.js#0001:getVGPU","exportIndex":1,"name":"getVGPU","kind":"function","signature":"async getVGPU(options)","summary":"Get or create the global vGPU instance"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VirtualGPU.md","moduleTitle":"core/gpu/VirtualGPU","source":"engine/core/gpu/VirtualGPU.js","import":"/engine/core/gpu/VirtualGPU.js","sourceHash":"37c1b85b9586f8dc13965cae9b60dcc024385c0c1cf556031d3c655780c9e6fc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/VirtualGPU.js#0002:vgpu","exportIndex":2,"name":"vgpu","kind":"function","signature":"vgpu()","summary":"Get existing vGPU instance (throws if not initialized)"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/VirtualGPU.md","moduleTitle":"core/gpu/VirtualGPU","source":"engine/core/gpu/VirtualGPU.js","import":"/engine/core/gpu/VirtualGPU.js","sourceHash":"37c1b85b9586f8dc13965cae9b60dcc024385c0c1cf556031d3c655780c9e6fc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/VirtualGPU.js#0003:initVGPU","exportIndex":3,"name":"initVGPU","kind":"function","signature":"initVGPU(deviceOrOptions)","summary":"Initialize vGPU from existing GpuDevice or raw GPUDevice"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/WGSLPreprocessor.md","moduleTitle":"core/gpu/WGSLPreprocessor","source":"engine/core/gpu/WGSLPreprocessor.js","import":"/engine/core/gpu/WGSLPreprocessor.js","sourceHash":"a73890cb5fb480ba49cd17a638d2c17d2b5d113e35e881b789e86ce8eb04ff80","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/WGSLPreprocessor.js","title":"core/gpu/WGSLPreprocessor","summary":"WGSL Preprocessor - #include, #define, #ifdef support for shader modularity","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/WGSLPreprocessor.md","moduleTitle":"core/gpu/WGSLPreprocessor","source":"engine/core/gpu/WGSLPreprocessor.js","import":"/engine/core/gpu/WGSLPreprocessor.js","sourceHash":"a73890cb5fb480ba49cd17a638d2c17d2b5d113e35e881b789e86ce8eb04ff80","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/WGSLPreprocessor.js#0000:WGSLPreprocessor","exportIndex":0,"name":"WGSLPreprocessor","kind":"class","signature":"class WGSLPreprocessor","summary":"WGSL Preprocessor - #include, #define, #ifdef support for shader modularity"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/WGSLPreprocessor.md","moduleTitle":"core/gpu/WGSLPreprocessor","source":"engine/core/gpu/WGSLPreprocessor.js","import":"/engine/core/gpu/WGSLPreprocessor.js","sourceHash":"a73890cb5fb480ba49cd17a638d2c17d2b5d113e35e881b789e86ce8eb04ff80","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/WGSLPreprocessor.js#0001:createPreprocessor","exportIndex":1,"name":"createPreprocessor","kind":"function","signature":"createPreprocessor()","summary":"Create a preprocessor with common includes registered"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/WGSLPreprocessor.md","moduleTitle":"core/gpu/WGSLPreprocessor","source":"engine/core/gpu/WGSLPreprocessor.js","import":"/engine/core/gpu/WGSLPreprocessor.js","sourceHash":"a73890cb5fb480ba49cd17a638d2c17d2b5d113e35e881b789e86ce8eb04ff80","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/WGSLPreprocessor.js#0002:WGSL_COMMON_INCLUDES","exportIndex":2,"name":"WGSL_COMMON_INCLUDES","kind":"constant","signature":"WGSL_COMMON_INCLUDES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/WGSLStructLayout.md","moduleTitle":"core/gpu/WGSLStructLayout","source":"engine/core/gpu/WGSLStructLayout.js","import":"/engine/core/gpu/WGSLStructLayout.js","sourceHash":"0e14c335298bcfbb253f8aa74f15f6df8d1655db19ff761390d530ee8ba3218d","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/WGSLStructLayout.js","title":"core/gpu/WGSLStructLayout","summary":"WGSLStructLayout.js - Unified WGSL/JS Struct Layout Generator Parses WGSL struct definitions and generates: - Correct buffer sizes with WebGPU alignment - JS field offset maps for TypedArray access - Accessor helper classes for reading/writing struct data This ensures WGSL and JS stay perfectly in sync - define once in WGSL, use the generated layout in JS. Usage: const layout = parseWGSLStruct(` struct Params { dt: f32, particleCount: u32, roomHalfSize: f32, gravityY: f32, } `); // layout.size = 16 (bytes) // layout.fields = { dt: {offset: 0, size: 4}, particleCount: {offset: 4, size: 4}, ... } const accessor = createStructAccessor(layout); const data = new Float32Array(layout.size / 4); accessor.set(data, 'dt', 0.016); accessor.set(data, 'particleCount', 1000); // auto-converts to u32","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/WGSLStructLayout.md","moduleTitle":"core/gpu/WGSLStructLayout","source":"engine/core/gpu/WGSLStructLayout.js","import":"/engine/core/gpu/WGSLStructLayout.js","sourceHash":"0e14c335298bcfbb253f8aa74f15f6df8d1655db19ff761390d530ee8ba3218d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/WGSLStructLayout.js#0000:parseWGSLStruct","exportIndex":0,"name":"parseWGSLStruct","kind":"function","signature":"parseWGSLStruct(wgslCode)","summary":"Parse a WGSL struct definition and compute field layout"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/WGSLStructLayout.md","moduleTitle":"core/gpu/WGSLStructLayout","source":"engine/core/gpu/WGSLStructLayout.js","import":"/engine/core/gpu/WGSLStructLayout.js","sourceHash":"0e14c335298bcfbb253f8aa74f15f6df8d1655db19ff761390d530ee8ba3218d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/WGSLStructLayout.js#0001:createStructAccessor","exportIndex":1,"name":"createStructAccessor","kind":"function","signature":"createStructAccessor(layout)","summary":"Create an accessor object for reading/writing struct fields"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/WGSLStructLayout.md","moduleTitle":"core/gpu/WGSLStructLayout","source":"engine/core/gpu/WGSLStructLayout.js","import":"/engine/core/gpu/WGSLStructLayout.js","sourceHash":"0e14c335298bcfbb253f8aa74f15f6df8d1655db19ff761390d530ee8ba3218d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/WGSLStructLayout.js#0002:defineStruct","exportIndex":2,"name":"defineStruct","kind":"function","signature":"defineStruct(wgslCode)","summary":"Define a struct layout from WGSL and return both layout and accessor"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/WGSLStructLayout.md","moduleTitle":"core/gpu/WGSLStructLayout","source":"engine/core/gpu/WGSLStructLayout.js","import":"/engine/core/gpu/WGSLStructLayout.js","sourceHash":"0e14c335298bcfbb253f8aa74f15f6df8d1655db19ff761390d530ee8ba3218d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/WGSLStructLayout.js#0003:generateJSLayout","exportIndex":3,"name":"generateJSLayout","kind":"function","signature":"generateJSLayout(wgslCode)","summary":"Generate JS object literal layout definition from WGSL struct Useful for documentation or code generation"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/WGSLStructLayout.md","moduleTitle":"core/gpu/WGSLStructLayout","source":"engine/core/gpu/WGSLStructLayout.js","import":"/engine/core/gpu/WGSLStructLayout.js","sourceHash":"0e14c335298bcfbb253f8aa74f15f6df8d1655db19ff761390d530ee8ba3218d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/WGSLStructLayout.js#0004:validateBuffer","exportIndex":4,"name":"validateBuffer","kind":"function","signature":"validateBuffer(buffer, layout, expectedCount = 1)","summary":"Validate that a buffer matches the expected struct layout"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/WGSLStructLayout.md","moduleTitle":"core/gpu/WGSLStructLayout","source":"engine/core/gpu/WGSLStructLayout.js","import":"/engine/core/gpu/WGSLStructLayout.js","sourceHash":"0e14c335298bcfbb253f8aa74f15f6df8d1655db19ff761390d530ee8ba3218d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/WGSLStructLayout.js#0005:CommonStructs","exportIndex":5,"name":"CommonStructs","kind":"constant","signature":"CommonStructs","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/WGSLStructSize.md","moduleTitle":"core/gpu/WGSLStructSize","source":"engine/core/gpu/WGSLStructSize.js","import":"/engine/core/gpu/WGSLStructSize.js","sourceHash":"b86f28d6704d47e18eee8ca293eded6f54d1f4ca910e7741af0511d95a830702","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/WGSLStructSize.js","title":"core/gpu/WGSLStructSize","summary":"Calculate the total size of a WGSL struct with proper alignment","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/WGSLStructSize.md","moduleTitle":"core/gpu/WGSLStructSize","source":"engine/core/gpu/WGSLStructSize.js","import":"/engine/core/gpu/WGSLStructSize.js","sourceHash":"b86f28d6704d47e18eee8ca293eded6f54d1f4ca910e7741af0511d95a830702","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/WGSLStructSize.js#0000:calcWGSLStructSize","exportIndex":0,"name":"calcWGSLStructSize","kind":"function","signature":"calcWGSLStructSize(structCode)","summary":"Calculate the total size of a WGSL struct with proper alignment"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/WGSLStructSize.md","moduleTitle":"core/gpu/WGSLStructSize","source":"engine/core/gpu/WGSLStructSize.js","import":"/engine/core/gpu/WGSLStructSize.js","sourceHash":"b86f28d6704d47e18eee8ca293eded6f54d1f4ca910e7741af0511d95a830702","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/WGSLStructSize.js#0001:createUniformBuffer","exportIndex":1,"name":"createUniformBuffer","kind":"function","signature":"createUniformBuffer(device, structCode, label = 'Uniform Buffer')","summary":"Create a uniform buffer with automatically calculated size"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/WGSLStructSize.md","moduleTitle":"core/gpu/WGSLStructSize","source":"engine/core/gpu/WGSLStructSize.js","import":"/engine/core/gpu/WGSLStructSize.js","sourceHash":"b86f28d6704d47e18eee8ca293eded6f54d1f4ca910e7741af0511d95a830702","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/WGSLStructSize.js#0002:createStorageBuffer","exportIndex":2,"name":"createStorageBuffer","kind":"function","signature":"createStorageBuffer(device, structCode, count = 1, label = 'Storage Buffer')","summary":"Create a storage buffer with automatically calculated size"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/WGSLStructSize.md","moduleTitle":"core/gpu/WGSLStructSize","source":"engine/core/gpu/WGSLStructSize.js","import":"/engine/core/gpu/WGSLStructSize.js","sourceHash":"b86f28d6704d47e18eee8ca293eded6f54d1f4ca910e7741af0511d95a830702","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/WGSLStructSize.js#0003:getFloat32ArraySize","exportIndex":3,"name":"getFloat32ArraySize","kind":"function","signature":"getFloat32ArraySize(structCode)","summary":"Get the Float32Array size needed to fill a struct buffer"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/WGSLStructSize.md","moduleTitle":"core/gpu/WGSLStructSize","source":"engine/core/gpu/WGSLStructSize.js","import":"/engine/core/gpu/WGSLStructSize.js","sourceHash":"b86f28d6704d47e18eee8ca293eded6f54d1f4ca910e7741af0511d95a830702","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/WGSLStructSize.js#0004:validateBufferSize","exportIndex":4,"name":"validateBufferSize","kind":"function","signature":"validateBufferSize(bufferSize, structCode, label = '')","summary":"Validate a buffer size against a struct definition"}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/WebGpuCanvasBootstrap.md","moduleTitle":"core/gpu/WebGpuCanvasBootstrap","source":"engine/core/gpu/WebGpuCanvasBootstrap.js","import":"/engine/core/gpu/WebGpuCanvasBootstrap.js","sourceHash":"05fe3979d4be29b14c1e11618623921e93f9533a2f8d2d734f7c1d6602997015","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/WebGpuCanvasBootstrap.js","title":"core/gpu/WebGpuCanvasBootstrap","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/WebGpuCanvasBootstrap.md","moduleTitle":"core/gpu/WebGpuCanvasBootstrap","source":"engine/core/gpu/WebGpuCanvasBootstrap.js","import":"/engine/core/gpu/WebGpuCanvasBootstrap.js","sourceHash":"05fe3979d4be29b14c1e11618623921e93f9533a2f8d2d734f7c1d6602997015","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/WebGpuCanvasBootstrap.js#0000:initWebGpuCanvas","exportIndex":0,"name":"initWebGpuCanvas","kind":"function","signature":"async initWebGpuCanvas(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-module","id":"module:engine/core/gpu/index.js","title":"core/gpu/index","summary":"engine/core/gpu/index.js - GPU Utilities Barrel Export","exportCount":92}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0000:ADAPTIVE_QUALITY_TIERS","exportIndex":0,"name":"ADAPTIVE_QUALITY_TIERS","kind":"re-export","signature":"ADAPTIVE_QUALITY_TIERS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0001:AdaptiveQualityGovernor","exportIndex":1,"name":"AdaptiveQualityGovernor","kind":"re-export","signature":"AdaptiveQualityGovernor","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0002:AsyncComputeScheduler","exportIndex":2,"name":"AsyncComputeScheduler","kind":"re-export","signature":"AsyncComputeScheduler","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0003:BindGroupSignals","exportIndex":3,"name":"BindGroupSignals","kind":"re-export","signature":"BindGroupSignals","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0004:BitonicSorter","exportIndex":4,"name":"BitonicSorter","kind":"re-export","signature":"BitonicSorter","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0005:BoundingBoxBuilder","exportIndex":5,"name":"BoundingBoxBuilder","kind":"re-export","signature":"BoundingBoxBuilder","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0006:DIRTY_CHUNK_LAYOUT","exportIndex":6,"name":"DIRTY_CHUNK_LAYOUT","kind":"re-export","signature":"DIRTY_CHUNK_LAYOUT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0007:DIRTY_FLAGS","exportIndex":7,"name":"DIRTY_FLAGS","kind":"re-export","signature":"DIRTY_FLAGS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0008:DebugDrawScope","exportIndex":8,"name":"DebugDrawScope","kind":"re-export","signature":"DebugDrawScope","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0009:DeterministicRNG","exportIndex":9,"name":"DeterministicRNG","kind":"re-export","signature":"DeterministicRNG","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0010:DynamicUniformBuffer","exportIndex":10,"name":"DynamicUniformBuffer","kind":"re-export","signature":"DynamicUniformBuffer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0011:FDTD_CELL_LAYOUT","exportIndex":11,"name":"FDTD_CELL_LAYOUT","kind":"re-export","signature":"FDTD_CELL_LAYOUT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0012:FIXED_SCALE","exportIndex":12,"name":"FIXED_SCALE","kind":"re-export","signature":"FIXED_SCALE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0013:FIXED_SCALE_INV","exportIndex":13,"name":"FIXED_SCALE_INV","kind":"re-export","signature":"FIXED_SCALE_INV","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0014:GENERATOR_WORKGROUP_SIZE","exportIndex":14,"name":"GENERATOR_WORKGROUP_SIZE","kind":"re-export","signature":"GENERATOR_WORKGROUP_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0015:GPUPageAllocator","exportIndex":15,"name":"GPUPageAllocator","kind":"re-export","signature":"GPUPageAllocator","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0016:GPUProfiler","exportIndex":16,"name":"GPUProfiler","kind":"re-export","signature":"GPUProfiler","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0017:GPU_PAGE_WGSL","exportIndex":17,"name":"GPU_PAGE_WGSL","kind":"re-export","signature":"GPU_PAGE_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0018:GPU_RANDOM_WGSL","exportIndex":18,"name":"GPU_RANDOM_WGSL","kind":"re-export","signature":"GPU_RANDOM_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0019:GRID_CELL_LAYOUT","exportIndex":19,"name":"GRID_CELL_LAYOUT","kind":"re-export","signature":"GRID_CELL_LAYOUT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0020:GRID_VELOCITY_LAYOUT","exportIndex":20,"name":"GRID_VELOCITY_LAYOUT","kind":"re-export","signature":"GRID_VELOCITY_LAYOUT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0021:GpuFrameBudgetBroker","exportIndex":21,"name":"GpuFrameBudgetBroker","kind":"re-export","signature":"GpuFrameBudgetBroker","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0022:INDIRECT_ALIGN","exportIndex":22,"name":"INDIRECT_ALIGN","kind":"re-export","signature":"INDIRECT_ALIGN","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0023:INDIRECT_BUFFER_SIZE","exportIndex":23,"name":"INDIRECT_BUFFER_SIZE","kind":"re-export","signature":"INDIRECT_BUFFER_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0024:IndirectDispatchGen","exportIndex":24,"name":"IndirectDispatchGen","kind":"re-export","signature":"IndirectDispatchGen","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0025:IndirectInstanceBuilder","exportIndex":25,"name":"IndirectInstanceBuilder","kind":"re-export","signature":"IndirectInstanceBuilder","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0026:MAX_JOBS","exportIndex":26,"name":"MAX_JOBS","kind":"re-export","signature":"MAX_JOBS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0027:MULTIPLAYER_RANDOM_WGSL","exportIndex":27,"name":"MULTIPLAYER_RANDOM_WGSL","kind":"re-export","signature":"MULTIPLAYER_RANDOM_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0028:MultiPassDispatchGen","exportIndex":28,"name":"MultiPassDispatchGen","kind":"re-export","signature":"MultiPassDispatchGen","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0029:PARTICLE_LAYOUT","exportIndex":29,"name":"PARTICLE_LAYOUT","kind":"re-export","signature":"PARTICLE_LAYOUT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0030:PCGRandom","exportIndex":30,"name":"PCGRandom","kind":"re-export","signature":"PCGRandom","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0031:RadixSorter","exportIndex":31,"name":"RadixSorter","kind":"re-export","signature":"RadixSorter","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0032:RenderGraphBuilder","exportIndex":32,"name":"RenderGraphBuilder","kind":"re-export","signature":"RenderGraphBuilder","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0033:ResourceSignal","exportIndex":33,"name":"ResourceSignal","kind":"re-export","signature":"ResourceSignal","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0034:ResourceState","exportIndex":34,"name":"ResourceState","kind":"re-export","signature":"ResourceState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0035:ResourceType","exportIndex":35,"name":"ResourceType","kind":"re-export","signature":"ResourceType","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0036:ResourceUsage","exportIndex":36,"name":"ResourceUsage","kind":"re-export","signature":"ResourceUsage","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0037:SORT_MAX_ELEMENTS","exportIndex":37,"name":"SORT_MAX_ELEMENTS","kind":"re-export","signature":"SORT_MAX_ELEMENTS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0038:STORAGE_ALIGN","exportIndex":38,"name":"STORAGE_ALIGN","kind":"re-export","signature":"STORAGE_ALIGN","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0039:STRATIFIED_SAMPLE_WGSL","exportIndex":39,"name":"STRATIFIED_SAMPLE_WGSL","kind":"re-export","signature":"STRATIFIED_SAMPLE_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0040:SortKeyType","exportIndex":40,"name":"SortKeyType","kind":"re-export","signature":"SortKeyType","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0041:SparsePageRuntime","exportIndex":41,"name":"SparsePageRuntime","kind":"re-export","signature":"SparsePageRuntime","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0042:StreamingResourceType","exportIndex":42,"name":"StreamingResourceType","kind":"re-export","signature":"StreamingResourceType","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0043:TAA_JITTER_WGSL","exportIndex":43,"name":"TAA_JITTER_WGSL","kind":"re-export","signature":"TAA_JITTER_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0044:TYPE_SIZES","exportIndex":44,"name":"TYPE_SIZES","kind":"re-export","signature":"TYPE_SIZES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0045:UNIFORM_ALIGN","exportIndex":45,"name":"UNIFORM_ALIGN","kind":"re-export","signature":"UNIFORM_ALIGN","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0046:VGPUDebugDraw","exportIndex":46,"name":"VGPUDebugDraw","kind":"re-export","signature":"VGPUDebugDraw","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0047:VGPUHiZCulling","exportIndex":47,"name":"VGPUHiZCulling","kind":"re-export","signature":"VGPUHiZCulling","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0048:VGPUIndirectRenderer","exportIndex":48,"name":"VGPUIndirectRenderer","kind":"re-export","signature":"VGPUIndirectRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0049:VGPURenderGraph","exportIndex":49,"name":"VGPURenderGraph","kind":"re-export","signature":"VGPURenderGraph","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0050:VGPUStreamingManager","exportIndex":50,"name":"VGPUStreamingManager","kind":"re-export","signature":"VGPUStreamingManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0051:VirtualGPU","exportIndex":51,"name":"VirtualGPU","kind":"re-export","signature":"VirtualGPU","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0052:WGSL_FIXED_POINT","exportIndex":52,"name":"WGSL_FIXED_POINT","kind":"re-export","signature":"WGSL_FIXED_POINT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0053:WGSL_GRID_INDEX","exportIndex":53,"name":"WGSL_GRID_INDEX","kind":"re-export","signature":"WGSL_GRID_INDEX","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0054:accumulateColor","exportIndex":54,"name":"accumulateColor","kind":"re-export","signature":"accumulateColor","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0055:accumulateEMA","exportIndex":55,"name":"accumulateEMA","kind":"re-export","signature":"accumulateEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0056:accumulationWeight","exportIndex":56,"name":"accumulationWeight","kind":"re-export","signature":"accumulationWeight","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0057:alignTo","exportIndex":57,"name":"alignTo","kind":"re-export","signature":"alignTo","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0058:bitonicSortCPU","exportIndex":58,"name":"bitonicSortCPU","kind":"re-export","signature":"bitonicSortCPU","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0059:blueNoiseOffset","exportIndex":59,"name":"blueNoiseOffset","kind":"re-export","signature":"blueNoiseOffset","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0060:calcWGSLStructSize","exportIndex":60,"name":"calcWGSLStructSize","kind":"re-export","signature":"calcWGSLStructSize","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0061:countToSpectral","exportIndex":61,"name":"countToSpectral","kind":"re-export","signature":"countToSpectral","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0062:createAdaptiveQualityGovernor","exportIndex":62,"name":"createAdaptiveQualityGovernor","kind":"re-export","signature":"createAdaptiveQualityGovernor","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0063:createAlignedBuffer","exportIndex":63,"name":"createAlignedBuffer","kind":"re-export","signature":"createAlignedBuffer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0064:createBufferWithData","exportIndex":64,"name":"createBufferWithData","kind":"re-export","signature":"createBufferWithData","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0065:createGpuPassGraph","exportIndex":65,"name":"createGpuPassGraph","kind":"re-export","signature":"createGpuPassGraph","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0066:createSignal","exportIndex":66,"name":"createSignal","kind":"re-export","signature":"createSignal","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0067:createSparsePageRuntime","exportIndex":67,"name":"createSparsePageRuntime","kind":"re-export","signature":"createSparsePageRuntime","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0068:createUniformBuffer","exportIndex":68,"name":"createUniformBuffer","kind":"re-export","signature":"createUniformBuffer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0069:fromFixed","exportIndex":69,"name":"fromFixed","kind":"re-export","signature":"fromFixed","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0070:generateWGSLBindGroupDeclarations","exportIndex":70,"name":"generateWGSLBindGroupDeclarations","kind":"re-export","signature":"generateWGSLBindGroupDeclarations","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0071:getFloat32ArraySize","exportIndex":71,"name":"getFloat32ArraySize","kind":"re-export","signature":"getFloat32ArraySize","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0072:getGridBufferSizes","exportIndex":72,"name":"getGridBufferSizes","kind":"re-export","signature":"getGridBufferSizes","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0073:getParticleBufferSizes","exportIndex":73,"name":"getParticleBufferSizes","kind":"re-export","signature":"getParticleBufferSizes","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0074:getVGPU","exportIndex":74,"name":"getVGPU","kind":"re-export","signature":"getVGPU","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0075:halton","exportIndex":75,"name":"halton","kind":"re-export","signature":"halton","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0076:halton2D","exportIndex":76,"name":"halton2D","kind":"re-export","signature":"halton2D","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0077:halton3D","exportIndex":77,"name":"halton3D","kind":"re-export","signature":"halton3D","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0078:hash2D","exportIndex":78,"name":"hash2D","kind":"re-export","signature":"hash2D","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0079:hash3D","exportIndex":79,"name":"hash3D","kind":"re-export","signature":"hash3D","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0080:initRngState","exportIndex":80,"name":"initRngState","kind":"re-export","signature":"initRngState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0081:initVGPU","exportIndex":81,"name":"initVGPU","kind":"re-export","signature":"initVGPU","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0082:isAligned","exportIndex":82,"name":"isAligned","kind":"re-export","signature":"isAligned","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0083:paddingFor","exportIndex":83,"name":"paddingFor","kind":"re-export","signature":"paddingFor","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0084:pcgHash","exportIndex":84,"name":"pcgHash","kind":"re-export","signature":"pcgHash","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0085:planProgressiveWorkBudget","exportIndex":85,"name":"planProgressiveWorkBudget","kind":"re-export","signature":"planProgressiveWorkBudget","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0086:positionToMorton","exportIndex":86,"name":"positionToMorton","kind":"re-export","signature":"positionToMorton","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0087:r2Sequence3D","exportIndex":87,"name":"r2Sequence3D","kind":"re-export","signature":"r2Sequence3D","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0088:spectralHeatMap","exportIndex":88,"name":"spectralHeatMap","kind":"re-export","signature":"spectralHeatMap","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0089:toFixed","exportIndex":89,"name":"toFixed","kind":"re-export","signature":"toFixed","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0090:vgpu","exportIndex":90,"name":"vgpu","kind":"re-export","signature":"vgpu","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/gpu/index.md","moduleTitle":"core/gpu/index","source":"engine/core/gpu/index.js","import":"/engine/core/gpu/index.js","sourceHash":"7376b9126fa2e3dcd6330edd2e5d335a40b345463c3180452ba2575be8741fc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/gpu/index.js#0091:wavelengthToRGB","exportIndex":91,"name":"wavelengthToRGB","kind":"re-export","signature":"wavelengthToRGB","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/index.md","moduleTitle":"core/index","source":"engine/core/index.js","import":"/engine/core/index.js","sourceHash":"371173bcf5b053196040163686ae1c75d9e64f4088377d4400a9c909d8d1beff","subsystem":"engine","recordType":"api-module","id":"module:engine/core/index.js","title":"core/index","summary":"","exportCount":23}
{"schemaVersion":1,"modulePath":"engine/reference/core/index.md","moduleTitle":"core/index","source":"engine/core/index.js","import":"/engine/core/index.js","sourceHash":"371173bcf5b053196040163686ae1c75d9e64f4088377d4400a9c909d8d1beff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/index.js#0000:BindGroupCache","exportIndex":0,"name":"BindGroupCache","kind":"re-export","signature":"BindGroupCache","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/index.md","moduleTitle":"core/index","source":"engine/core/index.js","import":"/engine/core/index.js","sourceHash":"371173bcf5b053196040163686ae1c75d9e64f4088377d4400a9c909d8d1beff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/index.js#0001:BuddyAllocator","exportIndex":1,"name":"BuddyAllocator","kind":"re-export","signature":"BuddyAllocator","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/index.md","moduleTitle":"core/index","source":"engine/core/index.js","import":"/engine/core/index.js","sourceHash":"371173bcf5b053196040163686ae1c75d9e64f4088377d4400a9c909d8d1beff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/index.js#0002:FramePipeline","exportIndex":2,"name":"FramePipeline","kind":"re-export","signature":"FramePipeline","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/index.md","moduleTitle":"core/index","source":"engine/core/index.js","import":"/engine/core/index.js","sourceHash":"371173bcf5b053196040163686ae1c75d9e64f4088377d4400a9c909d8d1beff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/index.js#0003:GPUMemoryManager","exportIndex":3,"name":"GPUMemoryManager","kind":"re-export","signature":"GPUMemoryManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/index.md","moduleTitle":"core/index","source":"engine/core/index.js","import":"/engine/core/index.js","sourceHash":"371173bcf5b053196040163686ae1c75d9e64f4088377d4400a9c909d8d1beff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/index.js#0004:HostMemoryManager","exportIndex":4,"name":"HostMemoryManager","kind":"re-export","signature":"HostMemoryManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/index.md","moduleTitle":"core/index","source":"engine/core/index.js","import":"/engine/core/index.js","sourceHash":"371173bcf5b053196040163686ae1c75d9e64f4088377d4400a9c909d8d1beff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/index.js#0005:Job","exportIndex":5,"name":"Job","kind":"re-export","signature":"Job","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/index.md","moduleTitle":"core/index","source":"engine/core/index.js","import":"/engine/core/index.js","sourceHash":"371173bcf5b053196040163686ae1c75d9e64f4088377d4400a9c909d8d1beff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/index.js#0006:JobPriority","exportIndex":6,"name":"JobPriority","kind":"re-export","signature":"JobPriority","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/index.md","moduleTitle":"core/index","source":"engine/core/index.js","import":"/engine/core/index.js","sourceHash":"371173bcf5b053196040163686ae1c75d9e64f4088377d4400a9c909d8d1beff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/index.js#0007:ObjectPool","exportIndex":7,"name":"ObjectPool","kind":"re-export","signature":"ObjectPool","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/index.md","moduleTitle":"core/index","source":"engine/core/index.js","import":"/engine/core/index.js","sourceHash":"371173bcf5b053196040163686ae1c75d9e64f4088377d4400a9c909d8d1beff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/index.js#0008:ResourceManager","exportIndex":8,"name":"ResourceManager","kind":"re-export","signature":"ResourceManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/index.md","moduleTitle":"core/index","source":"engine/core/index.js","import":"/engine/core/index.js","sourceHash":"371173bcf5b053196040163686ae1c75d9e64f4088377d4400a9c909d8d1beff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/index.js#0009:RingBuffer","exportIndex":9,"name":"RingBuffer","kind":"re-export","signature":"RingBuffer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/index.md","moduleTitle":"core/index","source":"engine/core/index.js","import":"/engine/core/index.js","sourceHash":"371173bcf5b053196040163686ae1c75d9e64f4088377d4400a9c909d8d1beff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/index.js#0010:SlabAllocator","exportIndex":10,"name":"SlabAllocator","kind":"re-export","signature":"SlabAllocator","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/index.md","moduleTitle":"core/index","source":"engine/core/index.js","import":"/engine/core/index.js","sourceHash":"371173bcf5b053196040163686ae1c75d9e64f4088377d4400a9c909d8d1beff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/index.js#0011:SoAContainer","exportIndex":11,"name":"SoAContainer","kind":"re-export","signature":"SoAContainer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/index.md","moduleTitle":"core/index","source":"engine/core/index.js","import":"/engine/core/index.js","sourceHash":"371173bcf5b053196040163686ae1c75d9e64f4088377d4400a9c909d8d1beff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/index.js#0012:StagingBufferPool","exportIndex":12,"name":"StagingBufferPool","kind":"re-export","signature":"StagingBufferPool","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/index.md","moduleTitle":"core/index","source":"engine/core/index.js","import":"/engine/core/index.js","sourceHash":"371173bcf5b053196040163686ae1c75d9e64f4088377d4400a9c909d8d1beff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/index.js#0013:TaskScheduler","exportIndex":13,"name":"TaskScheduler","kind":"re-export","signature":"TaskScheduler","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/index.md","moduleTitle":"core/index","source":"engine/core/index.js","import":"/engine/core/index.js","sourceHash":"371173bcf5b053196040163686ae1c75d9e64f4088377d4400a9c909d8d1beff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/index.js#0014:TextureManager","exportIndex":14,"name":"TextureManager","kind":"re-export","signature":"TextureManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/index.md","moduleTitle":"core/index","source":"engine/core/index.js","import":"/engine/core/index.js","sourceHash":"371173bcf5b053196040163686ae1c75d9e64f4088377d4400a9c909d8d1beff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/index.js#0015:WorkerPool","exportIndex":15,"name":"WorkerPool","kind":"re-export","signature":"WorkerPool","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/index.md","moduleTitle":"core/index","source":"engine/core/index.js","import":"/engine/core/index.js","sourceHash":"371173bcf5b053196040163686ae1c75d9e64f4088377d4400a9c909d8d1beff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/index.js#0016:createCommonPools","exportIndex":16,"name":"createCommonPools","kind":"re-export","signature":"createCommonPools","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/index.md","moduleTitle":"core/index","source":"engine/core/index.js","import":"/engine/core/index.js","sourceHash":"371173bcf5b053196040163686ae1c75d9e64f4088377d4400a9c909d8d1beff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/index.js#0017:createFrameContext","exportIndex":17,"name":"createFrameContext","kind":"re-export","signature":"createFrameContext","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/index.md","moduleTitle":"core/index","source":"engine/core/index.js","import":"/engine/core/index.js","sourceHash":"371173bcf5b053196040163686ae1c75d9e64f4088377d4400a9c909d8d1beff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/index.js#0018:getGPUMemoryManager","exportIndex":18,"name":"getGPUMemoryManager","kind":"re-export","signature":"getGPUMemoryManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/index.md","moduleTitle":"core/index","source":"engine/core/index.js","import":"/engine/core/index.js","sourceHash":"371173bcf5b053196040163686ae1c75d9e64f4088377d4400a9c909d8d1beff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/index.js#0019:hostMemory","exportIndex":19,"name":"hostMemory","kind":"re-export","signature":"hostMemory","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/index.md","moduleTitle":"core/index","source":"engine/core/index.js","import":"/engine/core/index.js","sourceHash":"371173bcf5b053196040163686ae1c75d9e64f4088377d4400a9c909d8d1beff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/index.js#0020:resources","exportIndex":20,"name":"resources","kind":"re-export","signature":"resources","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/index.md","moduleTitle":"core/index","source":"engine/core/index.js","import":"/engine/core/index.js","sourceHash":"371173bcf5b053196040163686ae1c75d9e64f4088377d4400a9c909d8d1beff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/index.js#0021:scheduler","exportIndex":21,"name":"scheduler","kind":"re-export","signature":"scheduler","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/index.md","moduleTitle":"core/index","source":"engine/core/index.js","import":"/engine/core/index.js","sourceHash":"371173bcf5b053196040163686ae1c75d9e64f4088377d4400a9c909d8d1beff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/index.js#0022:workerTemplate","exportIndex":22,"name":"workerTemplate","kind":"re-export","signature":"workerTemplate","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AnimationTimeMath.md","moduleTitle":"core/math/AnimationTimeMath","source":"engine/core/math/AnimationTimeMath.js","import":"/engine/core/math/AnimationTimeMath.js","sourceHash":"f832a959925b1cafcf0c53acbf17d38f9297ce6a1f40d75c2af4f5935609ce99","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/AnimationTimeMath.js","title":"core/math/AnimationTimeMath","summary":"AnimationTimeMath.js - pure animation timing, keyframe, and sampler reports.","exportCount":20}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AnimationTimeMath.md","moduleTitle":"core/math/AnimationTimeMath","source":"engine/core/math/AnimationTimeMath.js","import":"/engine/core/math/AnimationTimeMath.js","sourceHash":"f832a959925b1cafcf0c53acbf17d38f9297ce6a1f40d75c2af4f5935609ce99","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AnimationTimeMath.js#0000:animationActiveDuration","exportIndex":0,"name":"animationActiveDuration","kind":"function","signature":"animationActiveDuration(iterationDuration, iterationCount = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AnimationTimeMath.md","moduleTitle":"core/math/AnimationTimeMath","source":"engine/core/math/AnimationTimeMath.js","import":"/engine/core/math/AnimationTimeMath.js","sourceHash":"f832a959925b1cafcf0c53acbf17d38f9297ce6a1f40d75c2af4f5935609ce99","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AnimationTimeMath.js#0001:animationWrapTime","exportIndex":1,"name":"animationWrapTime","kind":"function","signature":"animationWrapTime(time, duration, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AnimationTimeMath.md","moduleTitle":"core/math/AnimationTimeMath","source":"engine/core/math/AnimationTimeMath.js","import":"/engine/core/math/AnimationTimeMath.js","sourceHash":"f832a959925b1cafcf0c53acbf17d38f9297ce6a1f40d75c2af4f5935609ce99","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AnimationTimeMath.js#0002:animationFrameWrap","exportIndex":2,"name":"animationFrameWrap","kind":"function","signature":"animationFrameWrap(frame, frameCount)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AnimationTimeMath.md","moduleTitle":"core/math/AnimationTimeMath","source":"engine/core/math/AnimationTimeMath.js","import":"/engine/core/math/AnimationTimeMath.js","sourceHash":"f832a959925b1cafcf0c53acbf17d38f9297ce6a1f40d75c2af4f5935609ce99","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AnimationTimeMath.js#0003:animationPlaybackRateReport","exportIndex":3,"name":"animationPlaybackRateReport","kind":"function","signature":"animationPlaybackRateReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AnimationTimeMath.md","moduleTitle":"core/math/AnimationTimeMath","source":"engine/core/math/AnimationTimeMath.js","import":"/engine/core/math/AnimationTimeMath.js","sourceHash":"f832a959925b1cafcf0c53acbf17d38f9297ce6a1f40d75c2af4f5935609ce99","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AnimationTimeMath.js#0004:animationPlaybackStateReport","exportIndex":4,"name":"animationPlaybackStateReport","kind":"function","signature":"animationPlaybackStateReport(value = {}, options = {})","summary":"Validate and normalize the serializable state of one animation player."}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AnimationTimeMath.md","moduleTitle":"core/math/AnimationTimeMath","source":"engine/core/math/AnimationTimeMath.js","import":"/engine/core/math/AnimationTimeMath.js","sourceHash":"f832a959925b1cafcf0c53acbf17d38f9297ce6a1f40d75c2af4f5935609ce99","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AnimationTimeMath.js#0005:animationTimeScaleReport","exportIndex":5,"name":"animationTimeScaleReport","kind":"function","signature":"animationTimeScaleReport(time, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AnimationTimeMath.md","moduleTitle":"core/math/AnimationTimeMath","source":"engine/core/math/AnimationTimeMath.js","import":"/engine/core/math/AnimationTimeMath.js","sourceHash":"f832a959925b1cafcf0c53acbf17d38f9297ce6a1f40d75c2af4f5935609ce99","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AnimationTimeMath.js#0006:animationTimelineOffsetReport","exportIndex":6,"name":"animationTimelineOffsetReport","kind":"function","signature":"animationTimelineOffsetReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AnimationTimeMath.md","moduleTitle":"core/math/AnimationTimeMath","source":"engine/core/math/AnimationTimeMath.js","import":"/engine/core/math/AnimationTimeMath.js","sourceHash":"f832a959925b1cafcf0c53acbf17d38f9297ce6a1f40d75c2af4f5935609ce99","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AnimationTimeMath.js#0007:animationOpenUsdLayerOffsetReport","exportIndex":7,"name":"animationOpenUsdLayerOffsetReport","kind":"function","signature":"animationOpenUsdLayerOffsetReport(timeCode, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AnimationTimeMath.md","moduleTitle":"core/math/AnimationTimeMath","source":"engine/core/math/AnimationTimeMath.js","import":"/engine/core/math/AnimationTimeMath.js","sourceHash":"f832a959925b1cafcf0c53acbf17d38f9297ce6a1f40d75c2af4f5935609ce99","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AnimationTimeMath.js#0008:animationOpenUsdTimeSampleBracket","exportIndex":8,"name":"animationOpenUsdTimeSampleBracket","kind":"function","signature":"animationOpenUsdTimeSampleBracket(times, timeCode, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AnimationTimeMath.md","moduleTitle":"core/math/AnimationTimeMath","source":"engine/core/math/AnimationTimeMath.js","import":"/engine/core/math/AnimationTimeMath.js","sourceHash":"f832a959925b1cafcf0c53acbf17d38f9297ce6a1f40d75c2af4f5935609ce99","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AnimationTimeMath.js#0009:animationOpenUsdSampleValue","exportIndex":9,"name":"animationOpenUsdSampleValue","kind":"function","signature":"animationOpenUsdSampleValue(times, values, timeCode, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AnimationTimeMath.md","moduleTitle":"core/math/AnimationTimeMath","source":"engine/core/math/AnimationTimeMath.js","import":"/engine/core/math/AnimationTimeMath.js","sourceHash":"f832a959925b1cafcf0c53acbf17d38f9297ce6a1f40d75c2af4f5935609ce99","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AnimationTimeMath.js#0010:animationTimingReport","exportIndex":10,"name":"animationTimingReport","kind":"function","signature":"animationTimingReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AnimationTimeMath.md","moduleTitle":"core/math/AnimationTimeMath","source":"engine/core/math/AnimationTimeMath.js","import":"/engine/core/math/AnimationTimeMath.js","sourceHash":"f832a959925b1cafcf0c53acbf17d38f9297ce6a1f40d75c2af4f5935609ce99","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AnimationTimeMath.js#0011:animationKeyframeBracket","exportIndex":11,"name":"animationKeyframeBracket","kind":"function","signature":"animationKeyframeBracket(times, time, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AnimationTimeMath.md","moduleTitle":"core/math/AnimationTimeMath","source":"engine/core/math/AnimationTimeMath.js","import":"/engine/core/math/AnimationTimeMath.js","sourceHash":"f832a959925b1cafcf0c53acbf17d38f9297ce6a1f40d75c2af4f5935609ce99","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AnimationTimeMath.js#0012:animationSampleScalar","exportIndex":12,"name":"animationSampleScalar","kind":"function","signature":"animationSampleScalar(a, b, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AnimationTimeMath.md","moduleTitle":"core/math/AnimationTimeMath","source":"engine/core/math/AnimationTimeMath.js","import":"/engine/core/math/AnimationTimeMath.js","sourceHash":"f832a959925b1cafcf0c53acbf17d38f9297ce6a1f40d75c2af4f5935609ce99","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AnimationTimeMath.js#0013:animationSampleVector","exportIndex":13,"name":"animationSampleVector","kind":"function","signature":"animationSampleVector(a, b, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AnimationTimeMath.md","moduleTitle":"core/math/AnimationTimeMath","source":"engine/core/math/AnimationTimeMath.js","import":"/engine/core/math/AnimationTimeMath.js","sourceHash":"f832a959925b1cafcf0c53acbf17d38f9297ce6a1f40d75c2af4f5935609ce99","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AnimationTimeMath.js#0014:animationSampleQuaternion","exportIndex":14,"name":"animationSampleQuaternion","kind":"function","signature":"animationSampleQuaternion(a, b, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AnimationTimeMath.md","moduleTitle":"core/math/AnimationTimeMath","source":"engine/core/math/AnimationTimeMath.js","import":"/engine/core/math/AnimationTimeMath.js","sourceHash":"f832a959925b1cafcf0c53acbf17d38f9297ce6a1f40d75c2af4f5935609ce99","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AnimationTimeMath.js#0015:animationCubicSplineSample","exportIndex":15,"name":"animationCubicSplineSample","kind":"function","signature":"animationCubicSplineSample(v0, outTangent0, v1, inTangent1, t, duration = 1, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AnimationTimeMath.md","moduleTitle":"core/math/AnimationTimeMath","source":"engine/core/math/AnimationTimeMath.js","import":"/engine/core/math/AnimationTimeMath.js","sourceHash":"f832a959925b1cafcf0c53acbf17d38f9297ce6a1f40d75c2af4f5935609ce99","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AnimationTimeMath.js#0016:animationSampleChannel","exportIndex":16,"name":"animationSampleChannel","kind":"function","signature":"animationSampleChannel(times, values, time, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AnimationTimeMath.md","moduleTitle":"core/math/AnimationTimeMath","source":"engine/core/math/AnimationTimeMath.js","import":"/engine/core/math/AnimationTimeMath.js","sourceHash":"f832a959925b1cafcf0c53acbf17d38f9297ce6a1f40d75c2af4f5935609ce99","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AnimationTimeMath.js#0017:animationSampleChannelInto","exportIndex":17,"name":"animationSampleChannelInto","kind":"function","signature":"animationSampleChannelInto(times, values, time, out, outOffset = 0, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AnimationTimeMath.md","moduleTitle":"core/math/AnimationTimeMath","source":"engine/core/math/AnimationTimeMath.js","import":"/engine/core/math/AnimationTimeMath.js","sourceHash":"f832a959925b1cafcf0c53acbf17d38f9297ce6a1f40d75c2af4f5935609ce99","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AnimationTimeMath.js#0018:animationClipSampleTimeReport","exportIndex":18,"name":"animationClipSampleTimeReport","kind":"function","signature":"animationClipSampleTimeReport(time, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AnimationTimeMath.md","moduleTitle":"core/math/AnimationTimeMath","source":"engine/core/math/AnimationTimeMath.js","import":"/engine/core/math/AnimationTimeMath.js","sourceHash":"f832a959925b1cafcf0c53acbf17d38f9297ce6a1f40d75c2af4f5935609ce99","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AnimationTimeMath.js#0019:animationKeyframeReductionReport","exportIndex":19,"name":"animationKeyframeReductionReport","kind":"function","signature":"animationKeyframeReductionReport(times, values, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AudioAutomationMath.md","moduleTitle":"core/math/AudioAutomationMath","source":"engine/core/math/AudioAutomationMath.js","import":"/engine/core/math/AudioAutomationMath.js","sourceHash":"2180d143c162f2d2ca957618fa5177c9f7d66d039e60104cc8441e0ed0b0a54b","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/AudioAutomationMath.js","title":"core/math/AudioAutomationMath","summary":"AudioAutomationMath.js - pure AudioParam automation, envelope, and biquad helper math.","exportCount":10}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AudioAutomationMath.md","moduleTitle":"core/math/AudioAutomationMath","source":"engine/core/math/AudioAutomationMath.js","import":"/engine/core/math/AudioAutomationMath.js","sourceHash":"2180d143c162f2d2ca957618fa5177c9f7d66d039e60104cc8441e0ed0b0a54b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AudioAutomationMath.js#0000:audioAutomationLinearRampValue","exportIndex":0,"name":"audioAutomationLinearRampValue","kind":"function","signature":"audioAutomationLinearRampValue(startValue, endValue, startTime, endTime, time)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AudioAutomationMath.md","moduleTitle":"core/math/AudioAutomationMath","source":"engine/core/math/AudioAutomationMath.js","import":"/engine/core/math/AudioAutomationMath.js","sourceHash":"2180d143c162f2d2ca957618fa5177c9f7d66d039e60104cc8441e0ed0b0a54b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AudioAutomationMath.js#0001:audioAutomationExponentialRampValue","exportIndex":1,"name":"audioAutomationExponentialRampValue","kind":"function","signature":"audioAutomationExponentialRampValue(startValue, endValue, startTime, endTime, time)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AudioAutomationMath.md","moduleTitle":"core/math/AudioAutomationMath","source":"engine/core/math/AudioAutomationMath.js","import":"/engine/core/math/AudioAutomationMath.js","sourceHash":"2180d143c162f2d2ca957618fa5177c9f7d66d039e60104cc8441e0ed0b0a54b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AudioAutomationMath.js#0002:audioAutomationSetTargetValue","exportIndex":2,"name":"audioAutomationSetTargetValue","kind":"function","signature":"audioAutomationSetTargetValue(initialValue, targetValue, startTime, timeConstant, time)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AudioAutomationMath.md","moduleTitle":"core/math/AudioAutomationMath","source":"engine/core/math/AudioAutomationMath.js","import":"/engine/core/math/AudioAutomationMath.js","sourceHash":"2180d143c162f2d2ca957618fa5177c9f7d66d039e60104cc8441e0ed0b0a54b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AudioAutomationMath.js#0003:audioAutomationValueCurveAtTime","exportIndex":3,"name":"audioAutomationValueCurveAtTime","kind":"function","signature":"audioAutomationValueCurveAtTime(curve, startTime, duration, time, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AudioAutomationMath.md","moduleTitle":"core/math/AudioAutomationMath","source":"engine/core/math/AudioAutomationMath.js","import":"/engine/core/math/AudioAutomationMath.js","sourceHash":"2180d143c162f2d2ca957618fa5177c9f7d66d039e60104cc8441e0ed0b0a54b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AudioAutomationMath.js#0004:audioAdsrEnvelopeValue","exportIndex":4,"name":"audioAdsrEnvelopeValue","kind":"function","signature":"audioAdsrEnvelopeValue(time, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AudioAutomationMath.md","moduleTitle":"core/math/AudioAutomationMath","source":"engine/core/math/AudioAutomationMath.js","import":"/engine/core/math/AudioAutomationMath.js","sourceHash":"2180d143c162f2d2ca957618fa5177c9f7d66d039e60104cc8441e0ed0b0a54b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AudioAutomationMath.js#0005:audioAdsrEnvelopeReport","exportIndex":5,"name":"audioAdsrEnvelopeReport","kind":"function","signature":"audioAdsrEnvelopeReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AudioAutomationMath.md","moduleTitle":"core/math/AudioAutomationMath","source":"engine/core/math/AudioAutomationMath.js","import":"/engine/core/math/AudioAutomationMath.js","sourceHash":"2180d143c162f2d2ca957618fa5177c9f7d66d039e60104cc8441e0ed0b0a54b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AudioAutomationMath.js#0006:audioBiquadComputedFrequency","exportIndex":6,"name":"audioBiquadComputedFrequency","kind":"function","signature":"audioBiquadComputedFrequency(frequency = 350, detune = 0, sampleRate = 48000)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AudioAutomationMath.md","moduleTitle":"core/math/AudioAutomationMath","source":"engine/core/math/AudioAutomationMath.js","import":"/engine/core/math/AudioAutomationMath.js","sourceHash":"2180d143c162f2d2ca957618fa5177c9f7d66d039e60104cc8441e0ed0b0a54b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AudioAutomationMath.js#0007:audioBiquadCoefficients","exportIndex":7,"name":"audioBiquadCoefficients","kind":"function","signature":"audioBiquadCoefficients(type = 'lowpass', options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AudioAutomationMath.md","moduleTitle":"core/math/AudioAutomationMath","source":"engine/core/math/AudioAutomationMath.js","import":"/engine/core/math/AudioAutomationMath.js","sourceHash":"2180d143c162f2d2ca957618fa5177c9f7d66d039e60104cc8441e0ed0b0a54b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AudioAutomationMath.js#0008:audioBiquadFrequencyResponse","exportIndex":8,"name":"audioBiquadFrequencyResponse","kind":"function","signature":"audioBiquadFrequencyResponse(coefficients, frequencyHz, sampleRate = coefficients?.sampleRate ?? 48000)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AudioAutomationMath.md","moduleTitle":"core/math/AudioAutomationMath","source":"engine/core/math/AudioAutomationMath.js","import":"/engine/core/math/AudioAutomationMath.js","sourceHash":"2180d143c162f2d2ca957618fa5177c9f7d66d039e60104cc8441e0ed0b0a54b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AudioAutomationMath.js#0009:AUDIO_BIQUAD_TYPES","exportIndex":9,"name":"AUDIO_BIQUAD_TYPES","kind":"constant","signature":"AUDIO_BIQUAD_TYPES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AudioMath.md","moduleTitle":"core/math/AudioMath","source":"engine/core/math/AudioMath.js","import":"/engine/core/math/AudioMath.js","sourceHash":"a17546b34afcfb4f4976ab0db8c10f71051ceab0f2e3d38b74ee960d6810e8fd","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/AudioMath.js","title":"core/math/AudioMath","summary":"AudioMath.js - pure PCM/audio-domain math helpers.","exportCount":23}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AudioMath.md","moduleTitle":"core/math/AudioMath","source":"engine/core/math/AudioMath.js","import":"/engine/core/math/AudioMath.js","sourceHash":"a17546b34afcfb4f4976ab0db8c10f71051ceab0f2e3d38b74ee960d6810e8fd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AudioMath.js#0000:audioClipSample","exportIndex":0,"name":"audioClipSample","kind":"function","signature":"audioClipSample(sample, limit = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AudioMath.md","moduleTitle":"core/math/AudioMath","source":"engine/core/math/AudioMath.js","import":"/engine/core/math/AudioMath.js","sourceHash":"a17546b34afcfb4f4976ab0db8c10f71051ceab0f2e3d38b74ee960d6810e8fd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AudioMath.js#0001:audioSoftClipSample","exportIndex":1,"name":"audioSoftClipSample","kind":"function","signature":"audioSoftClipSample(sample, drive = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AudioMath.md","moduleTitle":"core/math/AudioMath","source":"engine/core/math/AudioMath.js","import":"/engine/core/math/AudioMath.js","sourceHash":"a17546b34afcfb4f4976ab0db8c10f71051ceab0f2e3d38b74ee960d6810e8fd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AudioMath.js#0002:audioClipSignal","exportIndex":2,"name":"audioClipSignal","kind":"function","signature":"audioClipSignal(signal, limit = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AudioMath.md","moduleTitle":"core/math/AudioMath","source":"engine/core/math/AudioMath.js","import":"/engine/core/math/AudioMath.js","sourceHash":"a17546b34afcfb4f4976ab0db8c10f71051ceab0f2e3d38b74ee960d6810e8fd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AudioMath.js#0003:audioSoftClipSignal","exportIndex":3,"name":"audioSoftClipSignal","kind":"function","signature":"audioSoftClipSignal(signal, drive = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AudioMath.md","moduleTitle":"core/math/AudioMath","source":"engine/core/math/AudioMath.js","import":"/engine/core/math/AudioMath.js","sourceHash":"a17546b34afcfb4f4976ab0db8c10f71051ceab0f2e3d38b74ee960d6810e8fd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AudioMath.js#0004:audioApplyGain","exportIndex":4,"name":"audioApplyGain","kind":"function","signature":"audioApplyGain(signal, gain = 1, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AudioMath.md","moduleTitle":"core/math/AudioMath","source":"engine/core/math/AudioMath.js","import":"/engine/core/math/AudioMath.js","sourceHash":"a17546b34afcfb4f4976ab0db8c10f71051ceab0f2e3d38b74ee960d6810e8fd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AudioMath.js#0005:audioMix","exportIndex":5,"name":"audioMix","kind":"function","signature":"audioMix(signals, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AudioMath.md","moduleTitle":"core/math/AudioMath","source":"engine/core/math/AudioMath.js","import":"/engine/core/math/AudioMath.js","sourceHash":"a17546b34afcfb4f4976ab0db8c10f71051ceab0f2e3d38b74ee960d6810e8fd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AudioMath.js#0006:audioNormalize","exportIndex":6,"name":"audioNormalize","kind":"function","signature":"audioNormalize(signal, targetPeak = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AudioMath.md","moduleTitle":"core/math/AudioMath","source":"engine/core/math/AudioMath.js","import":"/engine/core/math/AudioMath.js","sourceHash":"a17546b34afcfb4f4976ab0db8c10f71051ceab0f2e3d38b74ee960d6810e8fd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AudioMath.js#0007:audioStereoToMono","exportIndex":7,"name":"audioStereoToMono","kind":"function","signature":"audioStereoToMono(left, right)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AudioMath.md","moduleTitle":"core/math/AudioMath","source":"engine/core/math/AudioMath.js","import":"/engine/core/math/AudioMath.js","sourceHash":"a17546b34afcfb4f4976ab0db8c10f71051ceab0f2e3d38b74ee960d6810e8fd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AudioMath.js#0008:audioMonoToStereo","exportIndex":8,"name":"audioMonoToStereo","kind":"function","signature":"audioMonoToStereo(mono)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AudioMath.md","moduleTitle":"core/math/AudioMath","source":"engine/core/math/AudioMath.js","import":"/engine/core/math/AudioMath.js","sourceHash":"a17546b34afcfb4f4976ab0db8c10f71051ceab0f2e3d38b74ee960d6810e8fd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AudioMath.js#0009:audioEqualPowerPanGains","exportIndex":9,"name":"audioEqualPowerPanGains","kind":"function","signature":"audioEqualPowerPanGains(pan)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AudioMath.md","moduleTitle":"core/math/AudioMath","source":"engine/core/math/AudioMath.js","import":"/engine/core/math/AudioMath.js","sourceHash":"a17546b34afcfb4f4976ab0db8c10f71051ceab0f2e3d38b74ee960d6810e8fd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AudioMath.js#0010:audioEqualPowerPanMono","exportIndex":10,"name":"audioEqualPowerPanMono","kind":"function","signature":"audioEqualPowerPanMono(mono, pan)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AudioMath.md","moduleTitle":"core/math/AudioMath","source":"engine/core/math/AudioMath.js","import":"/engine/core/math/AudioMath.js","sourceHash":"a17546b34afcfb4f4976ab0db8c10f71051ceab0f2e3d38b74ee960d6810e8fd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AudioMath.js#0011:audioWaveformPeaks","exportIndex":11,"name":"audioWaveformPeaks","kind":"function","signature":"audioWaveformPeaks(signal, bucketCount)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AudioMath.md","moduleTitle":"core/math/AudioMath","source":"engine/core/math/AudioMath.js","import":"/engine/core/math/AudioMath.js","sourceHash":"a17546b34afcfb4f4976ab0db8c10f71051ceab0f2e3d38b74ee960d6810e8fd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AudioMath.js#0012:audioWindowedRmsReport","exportIndex":12,"name":"audioWindowedRmsReport","kind":"function","signature":"audioWindowedRmsReport(signal, windowSize, hopSize = windowSize)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AudioMath.md","moduleTitle":"core/math/AudioMath","source":"engine/core/math/AudioMath.js","import":"/engine/core/math/AudioMath.js","sourceHash":"a17546b34afcfb4f4976ab0db8c10f71051ceab0f2e3d38b74ee960d6810e8fd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AudioMath.js#0013:audioSilenceReport","exportIndex":13,"name":"audioSilenceReport","kind":"function","signature":"audioSilenceReport(signal, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AudioMath.md","moduleTitle":"core/math/AudioMath","source":"engine/core/math/AudioMath.js","import":"/engine/core/math/AudioMath.js","sourceHash":"a17546b34afcfb4f4976ab0db8c10f71051ceab0f2e3d38b74ee960d6810e8fd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AudioMath.js#0014:audioNoiseFloorReport","exportIndex":14,"name":"audioNoiseFloorReport","kind":"function","signature":"audioNoiseFloorReport(signal, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AudioMath.md","moduleTitle":"core/math/AudioMath","source":"engine/core/math/AudioMath.js","import":"/engine/core/math/AudioMath.js","sourceHash":"a17546b34afcfb4f4976ab0db8c10f71051ceab0f2e3d38b74ee960d6810e8fd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AudioMath.js#0015:audioTransientReport","exportIndex":15,"name":"audioTransientReport","kind":"function","signature":"audioTransientReport(signal, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AudioMath.md","moduleTitle":"core/math/AudioMath","source":"engine/core/math/AudioMath.js","import":"/engine/core/math/AudioMath.js","sourceHash":"a17546b34afcfb4f4976ab0db8c10f71051ceab0f2e3d38b74ee960d6810e8fd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AudioMath.js#0016:audioSpectralEntropyReport","exportIndex":16,"name":"audioSpectralEntropyReport","kind":"function","signature":"audioSpectralEntropyReport(spectrum, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AudioMath.md","moduleTitle":"core/math/AudioMath","source":"engine/core/math/AudioMath.js","import":"/engine/core/math/AudioMath.js","sourceHash":"a17546b34afcfb4f4976ab0db8c10f71051ceab0f2e3d38b74ee960d6810e8fd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AudioMath.js#0017:audioAnalyserByteToDb","exportIndex":17,"name":"audioAnalyserByteToDb","kind":"function","signature":"audioAnalyserByteToDb(byteValue, minDb = DEFAULT_AUDIO_MIN_DB, maxDb = DEFAULT_AUDIO_MAX_DB)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AudioMath.md","moduleTitle":"core/math/AudioMath","source":"engine/core/math/AudioMath.js","import":"/engine/core/math/AudioMath.js","sourceHash":"a17546b34afcfb4f4976ab0db8c10f71051ceab0f2e3d38b74ee960d6810e8fd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AudioMath.js#0018:audioDecibelsToAnalyserByte","exportIndex":18,"name":"audioDecibelsToAnalyserByte","kind":"function","signature":"audioDecibelsToAnalyserByte(db, minDb = DEFAULT_AUDIO_MIN_DB, maxDb = DEFAULT_AUDIO_MAX_DB)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AudioMath.md","moduleTitle":"core/math/AudioMath","source":"engine/core/math/AudioMath.js","import":"/engine/core/math/AudioMath.js","sourceHash":"a17546b34afcfb4f4976ab0db8c10f71051ceab0f2e3d38b74ee960d6810e8fd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AudioMath.js#0019:DEFAULT_AUDIO_MIN_DB","exportIndex":19,"name":"DEFAULT_AUDIO_MIN_DB","kind":"constant","signature":"DEFAULT_AUDIO_MIN_DB","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AudioMath.md","moduleTitle":"core/math/AudioMath","source":"engine/core/math/AudioMath.js","import":"/engine/core/math/AudioMath.js","sourceHash":"a17546b34afcfb4f4976ab0db8c10f71051ceab0f2e3d38b74ee960d6810e8fd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AudioMath.js#0020:DEFAULT_AUDIO_MAX_DB","exportIndex":20,"name":"DEFAULT_AUDIO_MAX_DB","kind":"constant","signature":"DEFAULT_AUDIO_MAX_DB","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AudioMath.md","moduleTitle":"core/math/AudioMath","source":"engine/core/math/AudioMath.js","import":"/engine/core/math/AudioMath.js","sourceHash":"a17546b34afcfb4f4976ab0db8c10f71051ceab0f2e3d38b74ee960d6810e8fd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AudioMath.js#0021:audioDbToGain","exportIndex":21,"name":"audioDbToGain","kind":"constant","signature":"audioDbToGain","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/AudioMath.md","moduleTitle":"core/math/AudioMath","source":"engine/core/math/AudioMath.js","import":"/engine/core/math/AudioMath.js","sourceHash":"a17546b34afcfb4f4976ab0db8c10f71051ceab0f2e3d38b74ee960d6810e8fd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/AudioMath.js#0022:audioGainToDb","exportIndex":22,"name":"audioGainToDb","kind":"constant","signature":"audioGainToDb","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BVHAccel.md","moduleTitle":"core/math/BVHAccel","source":"engine/core/math/BVHAccel.js","import":"/engine/core/math/BVHAccel.js","sourceHash":"ce7ac8ba39b13f6b3d544e2652474a673b9d028ab3cee1cfa8b17789623e8ed3","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/BVHAccel.js","title":"core/math/BVHAccel","summary":"BVH Node - 32 bytes aligned for GPU If triCount == 0: internal node, leftChild_Or_FirstTri = left child index If triCount > 0: leaf node, leftChild_Or_FirstTri = first triangle index","exportCount":9}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BVHAccel.md","moduleTitle":"core/math/BVHAccel","source":"engine/core/math/BVHAccel.js","import":"/engine/core/math/BVHAccel.js","sourceHash":"ce7ac8ba39b13f6b3d544e2652474a673b9d028ab3cee1cfa8b17789623e8ed3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BVHAccel.js#0000:BVHNode","exportIndex":0,"name":"BVHNode","kind":"class","signature":"class BVHNode","summary":"BVH Node - 32 bytes aligned for GPU If triCount == 0: internal node, leftChild_Or_FirstTri = left child index If triCount > 0: leaf node, leftChild_Or_FirstTri = first triangle index"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BVHAccel.md","moduleTitle":"core/math/BVHAccel","source":"engine/core/math/BVHAccel.js","import":"/engine/core/math/BVHAccel.js","sourceHash":"ce7ac8ba39b13f6b3d544e2652474a673b9d028ab3cee1cfa8b17789623e8ed3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BVHAccel.js#0001:BVHBuilder","exportIndex":1,"name":"BVHBuilder","kind":"class","signature":"class BVHBuilder","summary":"Build BVH from triangle mesh Uses Surface Area Heuristic for optimal splits"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BVHAccel.md","moduleTitle":"core/math/BVHAccel","source":"engine/core/math/BVHAccel.js","import":"/engine/core/math/BVHAccel.js","sourceHash":"ce7ac8ba39b13f6b3d544e2652474a673b9d028ab3cee1cfa8b17789623e8ed3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BVHAccel.js#0002:rayTriangleIntersect","exportIndex":2,"name":"rayTriangleIntersect","kind":"function","signature":"rayTriangleIntersect(origin, dir, tri, tMax = INF_T)","summary":"Möller-Trumbore ray-triangle intersection"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BVHAccel.md","moduleTitle":"core/math/BVHAccel","source":"engine/core/math/BVHAccel.js","import":"/engine/core/math/BVHAccel.js","sourceHash":"ce7ac8ba39b13f6b3d544e2652474a673b9d028ab3cee1cfa8b17789623e8ed3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BVHAccel.js#0003:traverseBVH","exportIndex":3,"name":"traverseBVH","kind":"function","signature":"traverseBVH(origin, dir, nodes, triIndices, triangles)","summary":"Traverse BVH and find closest intersection"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BVHAccel.md","moduleTitle":"core/math/BVHAccel","source":"engine/core/math/BVHAccel.js","import":"/engine/core/math/BVHAccel.js","sourceHash":"ce7ac8ba39b13f6b3d544e2652474a673b9d028ab3cee1cfa8b17789623e8ed3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BVHAccel.js#0004:serializeBVHForGPU","exportIndex":4,"name":"serializeBVHForGPU","kind":"function","signature":"serializeBVHForGPU(bvh)","summary":"Serialize BVH for GPU buffer upload"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BVHAccel.md","moduleTitle":"core/math/BVHAccel","source":"engine/core/math/BVHAccel.js","import":"/engine/core/math/BVHAccel.js","sourceHash":"ce7ac8ba39b13f6b3d544e2652474a673b9d028ab3cee1cfa8b17789623e8ed3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BVHAccel.js#0005:createRaycastMesh","exportIndex":5,"name":"createRaycastMesh","kind":"function","signature":"createRaycastMesh(vertices, indices)","summary":"Create raycastable mesh from vertices and indices"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BVHAccel.md","moduleTitle":"core/math/BVHAccel","source":"engine/core/math/BVHAccel.js","import":"/engine/core/math/BVHAccel.js","sourceHash":"ce7ac8ba39b13f6b3d544e2652474a673b9d028ab3cee1cfa8b17789623e8ed3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BVHAccel.js#0006:INF_T","exportIndex":6,"name":"INF_T","kind":"constant","signature":"INF_T","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BVHAccel.md","moduleTitle":"core/math/BVHAccel","source":"engine/core/math/BVHAccel.js","import":"/engine/core/math/BVHAccel.js","sourceHash":"ce7ac8ba39b13f6b3d544e2652474a673b9d028ab3cee1cfa8b17789623e8ed3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BVHAccel.js#0007:EPSILON","exportIndex":7,"name":"EPSILON","kind":"constant","signature":"EPSILON","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BVHAccel.md","moduleTitle":"core/math/BVHAccel","source":"engine/core/math/BVHAccel.js","import":"/engine/core/math/BVHAccel.js","sourceHash":"ce7ac8ba39b13f6b3d544e2652474a673b9d028ab3cee1cfa8b17789623e8ed3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BVHAccel.js#0008:BVH_TRAVERSAL_WGSL","exportIndex":8,"name":"BVH_TRAVERSAL_WGSL","kind":"constant","signature":"BVH_TRAVERSAL_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BenchmarkMath.md","moduleTitle":"core/math/BenchmarkMath","source":"engine/core/math/BenchmarkMath.js","import":"/engine/core/math/BenchmarkMath.js","sourceHash":"71835a52054d2eb8f0a7ad760ea75fd81cf04e8dfca3747d1d0134d1346c466b","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/BenchmarkMath.js","title":"core/math/BenchmarkMath","summary":"BenchmarkMath.js - reusable benchmark rate, memory, compression, and cost estimates.","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BenchmarkMath.md","moduleTitle":"core/math/BenchmarkMath","source":"engine/core/math/BenchmarkMath.js","import":"/engine/core/math/BenchmarkMath.js","sourceHash":"71835a52054d2eb8f0a7ad760ea75fd81cf04e8dfca3747d1d0134d1346c466b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BenchmarkMath.js#0000:operationsPerSecond","exportIndex":0,"name":"operationsPerSecond","kind":"function","signature":"operationsPerSecond(operationCount, durationMs)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BenchmarkMath.md","moduleTitle":"core/math/BenchmarkMath","source":"engine/core/math/BenchmarkMath.js","import":"/engine/core/math/BenchmarkMath.js","sourceHash":"71835a52054d2eb8f0a7ad760ea75fd81cf04e8dfca3747d1d0134d1346c466b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BenchmarkMath.js#0001:throughputReport","exportIndex":1,"name":"throughputReport","kind":"function","signature":"throughputReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BenchmarkMath.md","moduleTitle":"core/math/BenchmarkMath","source":"engine/core/math/BenchmarkMath.js","import":"/engine/core/math/BenchmarkMath.js","sourceHash":"71835a52054d2eb8f0a7ad760ea75fd81cf04e8dfca3747d1d0134d1346c466b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BenchmarkMath.js#0002:durationReport","exportIndex":2,"name":"durationReport","kind":"function","signature":"durationReport(startMs, endMs, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BenchmarkMath.md","moduleTitle":"core/math/BenchmarkMath","source":"engine/core/math/BenchmarkMath.js","import":"/engine/core/math/BenchmarkMath.js","sourceHash":"71835a52054d2eb8f0a7ad760ea75fd81cf04e8dfca3747d1d0134d1346c466b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BenchmarkMath.js#0003:memoryEstimateReport","exportIndex":3,"name":"memoryEstimateReport","kind":"function","signature":"memoryEstimateReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BenchmarkMath.md","moduleTitle":"core/math/BenchmarkMath","source":"engine/core/math/BenchmarkMath.js","import":"/engine/core/math/BenchmarkMath.js","sourceHash":"71835a52054d2eb8f0a7ad760ea75fd81cf04e8dfca3747d1d0134d1346c466b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BenchmarkMath.js#0004:compressionRatioReport","exportIndex":4,"name":"compressionRatioReport","kind":"function","signature":"compressionRatioReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BenchmarkMath.md","moduleTitle":"core/math/BenchmarkMath","source":"engine/core/math/BenchmarkMath.js","import":"/engine/core/math/BenchmarkMath.js","sourceHash":"71835a52054d2eb8f0a7ad760ea75fd81cf04e8dfca3747d1d0134d1346c466b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BenchmarkMath.js#0005:computeCostEstimateReport","exportIndex":5,"name":"computeCostEstimateReport","kind":"function","signature":"computeCostEstimateReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BezierCurves.md","moduleTitle":"core/math/BezierCurves","source":"engine/core/math/BezierCurves.js","import":"/engine/core/math/BezierCurves.js","sourceHash":"f313c11cad44234d99de62d109c5c7bf2e94e88ccf406739bfbd96dd291de745","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/BezierCurves.js","title":"core/math/BezierCurves","summary":"Cubic Bezier curve defined by 4 control points","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BezierCurves.md","moduleTitle":"core/math/BezierCurves","source":"engine/core/math/BezierCurves.js","import":"/engine/core/math/BezierCurves.js","sourceHash":"f313c11cad44234d99de62d109c5c7bf2e94e88ccf406739bfbd96dd291de745","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BezierCurves.js#0000:CubicBezier","exportIndex":0,"name":"CubicBezier","kind":"class","signature":"class CubicBezier","summary":"Cubic Bezier curve defined by 4 control points"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BezierCurves.md","moduleTitle":"core/math/BezierCurves","source":"engine/core/math/BezierCurves.js","import":"/engine/core/math/BezierCurves.js","sourceHash":"f313c11cad44234d99de62d109c5c7bf2e94e88ccf406739bfbd96dd291de745","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BezierCurves.js#0001:QuadraticBezier","exportIndex":1,"name":"QuadraticBezier","kind":"class","signature":"class QuadraticBezier","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BezierCurves.md","moduleTitle":"core/math/BezierCurves","source":"engine/core/math/BezierCurves.js","import":"/engine/core/math/BezierCurves.js","sourceHash":"f313c11cad44234d99de62d109c5c7bf2e94e88ccf406739bfbd96dd291de745","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BezierCurves.js#0002:BezierSpline","exportIndex":2,"name":"BezierSpline","kind":"class","signature":"class BezierSpline","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BezierCurves.md","moduleTitle":"core/math/BezierCurves","source":"engine/core/math/BezierCurves.js","import":"/engine/core/math/BezierCurves.js","sourceHash":"f313c11cad44234d99de62d109c5c7bf2e94e88ccf406739bfbd96dd291de745","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BezierCurves.js#0003:straightLine","exportIndex":3,"name":"straightLine","kind":"function","signature":"straightLine(start, end, radius = 1.0)","summary":"Create a straight line as a degenerate Bezier"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BezierCurves.md","moduleTitle":"core/math/BezierCurves","source":"engine/core/math/BezierCurves.js","import":"/engine/core/math/BezierCurves.js","sourceHash":"f313c11cad44234d99de62d109c5c7bf2e94e88ccf406739bfbd96dd291de745","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BezierCurves.js#0004:arc","exportIndex":4,"name":"arc","kind":"function","signature":"arc(center, radius, startAngle, endAngle, tubeRadius = 1.0)","summary":"Create an arc approximation using Bezier"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BezierDistance.md","moduleTitle":"core/math/BezierDistance","source":"engine/core/math/BezierDistance.js","import":"/engine/core/math/BezierDistance.js","sourceHash":"9d687fb013a8670b8fac68bdd8d7aa0e362ea521a812329963184b6423785ba1","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/BezierDistance.js","title":"core/math/BezierDistance","summary":"GPU-accelerated Bezier distance field computation","exportCount":12}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BezierDistance.md","moduleTitle":"core/math/BezierDistance","source":"engine/core/math/BezierDistance.js","import":"/engine/core/math/BezierDistance.js","sourceHash":"9d687fb013a8670b8fac68bdd8d7aa0e362ea521a812329963184b6423785ba1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BezierDistance.js#0000:BezierDistanceCompute","exportIndex":0,"name":"BezierDistanceCompute","kind":"class","signature":"class BezierDistanceCompute","summary":"GPU-accelerated Bezier distance field computation"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BezierDistance.md","moduleTitle":"core/math/BezierDistance","source":"engine/core/math/BezierDistance.js","import":"/engine/core/math/BezierDistance.js","sourceHash":"9d687fb013a8670b8fac68bdd8d7aa0e362ea521a812329963184b6423785ba1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BezierDistance.js#0001:sdCapsule","exportIndex":1,"name":"sdCapsule","kind":"function","signature":"sdCapsule(p, a, b, r)","summary":"Signed distance to a capsule (line segment with radius)"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BezierDistance.md","moduleTitle":"core/math/BezierDistance","source":"engine/core/math/BezierDistance.js","import":"/engine/core/math/BezierDistance.js","sourceHash":"9d687fb013a8670b8fac68bdd8d7aa0e362ea521a812329963184b6423785ba1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BezierDistance.js#0002:capsuleClosestT","exportIndex":2,"name":"capsuleClosestT","kind":"function","signature":"capsuleClosestT(p, a, b)","summary":"Find closest point parameter on capsule"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BezierDistance.md","moduleTitle":"core/math/BezierDistance","source":"engine/core/math/BezierDistance.js","import":"/engine/core/math/BezierDistance.js","sourceHash":"9d687fb013a8670b8fac68bdd8d7aa0e362ea521a812329963184b6423785ba1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BezierDistance.js#0003:bezierDistanceCapsule","exportIndex":3,"name":"bezierDistanceCapsule","kind":"function","signature":"bezierDistanceCapsule(p, curve, segments = 16)","summary":"Distance to Bezier using capsule chain approximation Fast but may miss fine details for highly curved sections"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BezierDistance.md","moduleTitle":"core/math/BezierDistance","source":"engine/core/math/BezierDistance.js","import":"/engine/core/math/BezierDistance.js","sourceHash":"9d687fb013a8670b8fac68bdd8d7aa0e362ea521a812329963184b6423785ba1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BezierDistance.js#0004:bezierDistanceBatch","exportIndex":4,"name":"bezierDistanceBatch","kind":"function","signature":"bezierDistanceBatch(points, curve, segments = 16)","summary":"Batch distance query for multiple points"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BezierDistance.md","moduleTitle":"core/math/BezierDistance","source":"engine/core/math/BezierDistance.js","import":"/engine/core/math/BezierDistance.js","sourceHash":"9d687fb013a8670b8fac68bdd8d7aa0e362ea521a812329963184b6423785ba1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BezierDistance.js#0005:bezierClosestNewton","exportIndex":5,"name":"bezierClosestNewton","kind":"function","signature":"bezierClosestNewton(p, curve, initialT = 0.5, iterations = 8)","summary":"Find closest point on Bezier using Newton-Raphson iteration Minimizes |B(t) - p|² by finding roots of d/dt|B(t)-p|²"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BezierDistance.md","moduleTitle":"core/math/BezierDistance","source":"engine/core/math/BezierDistance.js","import":"/engine/core/math/BezierDistance.js","sourceHash":"9d687fb013a8670b8fac68bdd8d7aa0e362ea521a812329963184b6423785ba1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BezierDistance.js#0006:bezierDistanceHybrid","exportIndex":6,"name":"bezierDistanceHybrid","kind":"function","signature":"bezierDistanceHybrid(p, curve, capsuleSegments = 8, newtonIterations = 4)","summary":"Hybrid: Capsule for initial guess, Newton for refinement Best balance of speed and accuracy"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BezierDistance.md","moduleTitle":"core/math/BezierDistance","source":"engine/core/math/BezierDistance.js","import":"/engine/core/math/BezierDistance.js","sourceHash":"9d687fb013a8670b8fac68bdd8d7aa0e362ea521a812329963184b6423785ba1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BezierDistance.js#0007:multiCurveDistance","exportIndex":7,"name":"multiCurveDistance","kind":"function","signature":"multiCurveDistance(p, curves, segments = 16)","summary":"Distance to multiple Bezier curves (smooth union)"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BezierDistance.md","moduleTitle":"core/math/BezierDistance","source":"engine/core/math/BezierDistance.js","import":"/engine/core/math/BezierDistance.js","sourceHash":"9d687fb013a8670b8fac68bdd8d7aa0e362ea521a812329963184b6423785ba1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BezierDistance.js#0008:smin","exportIndex":8,"name":"smin","kind":"function","signature":"smin(a, b, k = 0.1)","summary":"Smooth minimum of two distances (for blending)"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BezierDistance.md","moduleTitle":"core/math/BezierDistance","source":"engine/core/math/BezierDistance.js","import":"/engine/core/math/BezierDistance.js","sourceHash":"9d687fb013a8670b8fac68bdd8d7aa0e362ea521a812329963184b6423785ba1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BezierDistance.js#0009:multiCurveDistanceSmooth","exportIndex":9,"name":"multiCurveDistanceSmooth","kind":"function","signature":"multiCurveDistanceSmooth(p, curves, smoothness = 0.5)","summary":"Distance to curves with smooth blending"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BezierDistance.md","moduleTitle":"core/math/BezierDistance","source":"engine/core/math/BezierDistance.js","import":"/engine/core/math/BezierDistance.js","sourceHash":"9d687fb013a8670b8fac68bdd8d7aa0e362ea521a812329963184b6423785ba1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BezierDistance.js#0010:curvesToGPUBuffer","exportIndex":10,"name":"curvesToGPUBuffer","kind":"function","signature":"curvesToGPUBuffer(curves)","summary":"Prepare curve data for GPU upload Format: 4 vec4s per curve = 64 bytes [p0.xyz, 0] [p1.xyz, 0] [p2.xyz, 0] [p3.xyz, radius]"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BezierDistance.md","moduleTitle":"core/math/BezierDistance","source":"engine/core/math/BezierDistance.js","import":"/engine/core/math/BezierDistance.js","sourceHash":"9d687fb013a8670b8fac68bdd8d7aa0e362ea521a812329963184b6423785ba1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BezierDistance.js#0011:curvesToSegments","exportIndex":11,"name":"curvesToSegments","kind":"function","signature":"curvesToSegments(curves, segmentsPerCurve = 8)","summary":"Pre-sample curves into line segments for GPU More efficient for many queries"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BlendMath.md","moduleTitle":"core/math/BlendMath","source":"engine/core/math/BlendMath.js","import":"/engine/core/math/BlendMath.js","sourceHash":"11427b5dae84171d713a8312a3ea4d9ff43ad17d54f488fee99c09a0512f4de0","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/BlendMath.js","title":"core/math/BlendMath","summary":"","exportCount":12}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BlendMath.md","moduleTitle":"core/math/BlendMath","source":"engine/core/math/BlendMath.js","import":"/engine/core/math/BlendMath.js","sourceHash":"11427b5dae84171d713a8312a3ea4d9ff43ad17d54f488fee99c09a0512f4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BlendMath.js#0000:straightRgba","exportIndex":0,"name":"straightRgba","kind":"function","signature":"straightRgba(color, opacity = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BlendMath.md","moduleTitle":"core/math/BlendMath","source":"engine/core/math/BlendMath.js","import":"/engine/core/math/BlendMath.js","sourceHash":"11427b5dae84171d713a8312a3ea4d9ff43ad17d54f488fee99c09a0512f4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BlendMath.js#0001:premultiplyAlpha","exportIndex":1,"name":"premultiplyAlpha","kind":"function","signature":"premultiplyAlpha(color, opacity = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BlendMath.md","moduleTitle":"core/math/BlendMath","source":"engine/core/math/BlendMath.js","import":"/engine/core/math/BlendMath.js","sourceHash":"11427b5dae84171d713a8312a3ea4d9ff43ad17d54f488fee99c09a0512f4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BlendMath.js#0002:unpremultiplyAlpha","exportIndex":2,"name":"unpremultiplyAlpha","kind":"function","signature":"unpremultiplyAlpha(color)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BlendMath.md","moduleTitle":"core/math/BlendMath","source":"engine/core/math/BlendMath.js","import":"/engine/core/math/BlendMath.js","sourceHash":"11427b5dae84171d713a8312a3ea4d9ff43ad17d54f488fee99c09a0512f4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BlendMath.js#0003:alphaBlend","exportIndex":3,"name":"alphaBlend","kind":"function","signature":"alphaBlend(backdrop, source, opacity = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BlendMath.md","moduleTitle":"core/math/BlendMath","source":"engine/core/math/BlendMath.js","import":"/engine/core/math/BlendMath.js","sourceHash":"11427b5dae84171d713a8312a3ea4d9ff43ad17d54f488fee99c09a0512f4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BlendMath.js#0004:premultipliedAlphaBlend","exportIndex":4,"name":"premultipliedAlphaBlend","kind":"function","signature":"premultipliedAlphaBlend(backdrop, source, opacity = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BlendMath.md","moduleTitle":"core/math/BlendMath","source":"engine/core/math/BlendMath.js","import":"/engine/core/math/BlendMath.js","sourceHash":"11427b5dae84171d713a8312a3ea4d9ff43ad17d54f488fee99c09a0512f4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BlendMath.js#0005:blendModeChannel","exportIndex":5,"name":"blendModeChannel","kind":"function","signature":"blendModeChannel(backdrop, source, mode = 'normal')","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BlendMath.md","moduleTitle":"core/math/BlendMath","source":"engine/core/math/BlendMath.js","import":"/engine/core/math/BlendMath.js","sourceHash":"11427b5dae84171d713a8312a3ea4d9ff43ad17d54f488fee99c09a0512f4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BlendMath.js#0006:blendRgb","exportIndex":6,"name":"blendRgb","kind":"function","signature":"blendRgb(backdrop, source, mode = 'normal')","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BlendMath.md","moduleTitle":"core/math/BlendMath","source":"engine/core/math/BlendMath.js","import":"/engine/core/math/BlendMath.js","sourceHash":"11427b5dae84171d713a8312a3ea4d9ff43ad17d54f488fee99c09a0512f4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BlendMath.js#0007:blendCompositeStraight","exportIndex":7,"name":"blendCompositeStraight","kind":"function","signature":"blendCompositeStraight(backdrop, source, mode = 'normal', opacity = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BlendMath.md","moduleTitle":"core/math/BlendMath","source":"engine/core/math/BlendMath.js","import":"/engine/core/math/BlendMath.js","sourceHash":"11427b5dae84171d713a8312a3ea4d9ff43ad17d54f488fee99c09a0512f4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BlendMath.js#0008:coverageAlpha","exportIndex":8,"name":"coverageAlpha","kind":"function","signature":"coverageAlpha(coveredSamples, sampleCount = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BlendMath.md","moduleTitle":"core/math/BlendMath","source":"engine/core/math/BlendMath.js","import":"/engine/core/math/BlendMath.js","sourceHash":"11427b5dae84171d713a8312a3ea4d9ff43ad17d54f488fee99c09a0512f4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BlendMath.js#0009:alphaToCoverage","exportIndex":9,"name":"alphaToCoverage","kind":"function","signature":"alphaToCoverage(alpha, sampleCount = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BlendMath.md","moduleTitle":"core/math/BlendMath","source":"engine/core/math/BlendMath.js","import":"/engine/core/math/BlendMath.js","sourceHash":"11427b5dae84171d713a8312a3ea4d9ff43ad17d54f488fee99c09a0512f4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BlendMath.js#0010:bayer4Threshold","exportIndex":10,"name":"bayer4Threshold","kind":"function","signature":"bayer4Threshold(x, y)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BlendMath.md","moduleTitle":"core/math/BlendMath","source":"engine/core/math/BlendMath.js","import":"/engine/core/math/BlendMath.js","sourceHash":"11427b5dae84171d713a8312a3ea4d9ff43ad17d54f488fee99c09a0512f4de0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BlendMath.js#0011:ditherAlpha","exportIndex":11,"name":"ditherAlpha","kind":"function","signature":"ditherAlpha(alpha, x = 0, y = 0, frame = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BufferMath.md","moduleTitle":"core/math/BufferMath","source":"engine/core/math/BufferMath.js","import":"/engine/core/math/BufferMath.js","sourceHash":"2e1f83b62de63783544ca42ddd3786ebbc731d646436cb3880a37e8275fa3fce","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/BufferMath.js","title":"core/math/BufferMath","summary":"BufferMath.js - reusable byte views, endian-safe DataView reads/writes, UTF-8 helpers, and cursors.","exportCount":18}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BufferMath.md","moduleTitle":"core/math/BufferMath","source":"engine/core/math/BufferMath.js","import":"/engine/core/math/BufferMath.js","sourceHash":"2e1f83b62de63783544ca42ddd3786ebbc731d646436cb3880a37e8275fa3fce","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BufferMath.js#0000:BufferCursor","exportIndex":0,"name":"BufferCursor","kind":"class","signature":"class BufferCursor","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BufferMath.md","moduleTitle":"core/math/BufferMath","source":"engine/core/math/BufferMath.js","import":"/engine/core/math/BufferMath.js","sourceHash":"2e1f83b62de63783544ca42ddd3786ebbc731d646436cb3880a37e8275fa3fce","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BufferMath.js#0001:bufferLittleEndian","exportIndex":1,"name":"bufferLittleEndian","kind":"function","signature":"bufferLittleEndian(endian = DEFAULT_ENDIAN)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BufferMath.md","moduleTitle":"core/math/BufferMath","source":"engine/core/math/BufferMath.js","import":"/engine/core/math/BufferMath.js","sourceHash":"2e1f83b62de63783544ca42ddd3786ebbc731d646436cb3880a37e8275fa3fce","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BufferMath.js#0002:bufferEndianName","exportIndex":2,"name":"bufferEndianName","kind":"function","signature":"bufferEndianName(endian = DEFAULT_ENDIAN)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BufferMath.md","moduleTitle":"core/math/BufferMath","source":"engine/core/math/BufferMath.js","import":"/engine/core/math/BufferMath.js","sourceHash":"2e1f83b62de63783544ca42ddd3786ebbc731d646436cb3880a37e8275fa3fce","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BufferMath.js#0003:bufferValueByteSize","exportIndex":3,"name":"bufferValueByteSize","kind":"function","signature":"bufferValueByteSize(type)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BufferMath.md","moduleTitle":"core/math/BufferMath","source":"engine/core/math/BufferMath.js","import":"/engine/core/math/BufferMath.js","sourceHash":"2e1f83b62de63783544ca42ddd3786ebbc731d646436cb3880a37e8275fa3fce","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BufferMath.js#0004:bufferByteView","exportIndex":4,"name":"bufferByteView","kind":"function","signature":"bufferByteView(data)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BufferMath.md","moduleTitle":"core/math/BufferMath","source":"engine/core/math/BufferMath.js","import":"/engine/core/math/BufferMath.js","sourceHash":"2e1f83b62de63783544ca42ddd3786ebbc731d646436cb3880a37e8275fa3fce","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BufferMath.js#0005:bufferDataView","exportIndex":5,"name":"bufferDataView","kind":"function","signature":"bufferDataView(data)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BufferMath.md","moduleTitle":"core/math/BufferMath","source":"engine/core/math/BufferMath.js","import":"/engine/core/math/BufferMath.js","sourceHash":"2e1f83b62de63783544ca42ddd3786ebbc731d646436cb3880a37e8275fa3fce","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BufferMath.js#0006:bufferRangeReport","exportIndex":6,"name":"bufferRangeReport","kind":"function","signature":"bufferRangeReport(data, byteOffset = 0, byteLength = 0, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BufferMath.md","moduleTitle":"core/math/BufferMath","source":"engine/core/math/BufferMath.js","import":"/engine/core/math/BufferMath.js","sourceHash":"2e1f83b62de63783544ca42ddd3786ebbc731d646436cb3880a37e8275fa3fce","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BufferMath.js#0007:bufferRead","exportIndex":7,"name":"bufferRead","kind":"function","signature":"bufferRead(data, type, byteOffset, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BufferMath.md","moduleTitle":"core/math/BufferMath","source":"engine/core/math/BufferMath.js","import":"/engine/core/math/BufferMath.js","sourceHash":"2e1f83b62de63783544ca42ddd3786ebbc731d646436cb3880a37e8275fa3fce","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BufferMath.js#0008:bufferWrite","exportIndex":8,"name":"bufferWrite","kind":"function","signature":"bufferWrite(data, type, byteOffset, value, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BufferMath.md","moduleTitle":"core/math/BufferMath","source":"engine/core/math/BufferMath.js","import":"/engine/core/math/BufferMath.js","sourceHash":"2e1f83b62de63783544ca42ddd3786ebbc731d646436cb3880a37e8275fa3fce","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BufferMath.js#0009:encodeUtf8","exportIndex":9,"name":"encodeUtf8","kind":"function","signature":"encodeUtf8(text)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BufferMath.md","moduleTitle":"core/math/BufferMath","source":"engine/core/math/BufferMath.js","import":"/engine/core/math/BufferMath.js","sourceHash":"2e1f83b62de63783544ca42ddd3786ebbc731d646436cb3880a37e8275fa3fce","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BufferMath.js#0010:decodeUtf8","exportIndex":10,"name":"decodeUtf8","kind":"function","signature":"decodeUtf8(data, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BufferMath.md","moduleTitle":"core/math/BufferMath","source":"engine/core/math/BufferMath.js","import":"/engine/core/math/BufferMath.js","sourceHash":"2e1f83b62de63783544ca42ddd3786ebbc731d646436cb3880a37e8275fa3fce","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BufferMath.js#0011:bufferReadUtf8","exportIndex":11,"name":"bufferReadUtf8","kind":"function","signature":"bufferReadUtf8(data, byteOffset, byteLength, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BufferMath.md","moduleTitle":"core/math/BufferMath","source":"engine/core/math/BufferMath.js","import":"/engine/core/math/BufferMath.js","sourceHash":"2e1f83b62de63783544ca42ddd3786ebbc731d646436cb3880a37e8275fa3fce","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BufferMath.js#0012:bufferWriteUtf8","exportIndex":12,"name":"bufferWriteUtf8","kind":"function","signature":"bufferWriteUtf8(data, byteOffset, text, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BufferMath.md","moduleTitle":"core/math/BufferMath","source":"engine/core/math/BufferMath.js","import":"/engine/core/math/BufferMath.js","sourceHash":"2e1f83b62de63783544ca42ddd3786ebbc731d646436cb3880a37e8275fa3fce","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BufferMath.js#0013:concatBufferBytes","exportIndex":13,"name":"concatBufferBytes","kind":"function","signature":"concatBufferBytes(chunks)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BufferMath.md","moduleTitle":"core/math/BufferMath","source":"engine/core/math/BufferMath.js","import":"/engine/core/math/BufferMath.js","sourceHash":"2e1f83b62de63783544ca42ddd3786ebbc731d646436cb3880a37e8275fa3fce","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BufferMath.js#0014:createBufferCursor","exportIndex":14,"name":"createBufferCursor","kind":"function","signature":"createBufferCursor(dataOrByteLength, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BufferMath.md","moduleTitle":"core/math/BufferMath","source":"engine/core/math/BufferMath.js","import":"/engine/core/math/BufferMath.js","sourceHash":"2e1f83b62de63783544ca42ddd3786ebbc731d646436cb3880a37e8275fa3fce","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BufferMath.js#0015:bufferCursorReport","exportIndex":15,"name":"bufferCursorReport","kind":"function","signature":"bufferCursorReport(cursor)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BufferMath.md","moduleTitle":"core/math/BufferMath","source":"engine/core/math/BufferMath.js","import":"/engine/core/math/BufferMath.js","sourceHash":"2e1f83b62de63783544ca42ddd3786ebbc731d646436cb3880a37e8275fa3fce","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BufferMath.js#0016:BUFFER_ENDIAN","exportIndex":16,"name":"BUFFER_ENDIAN","kind":"constant","signature":"BUFFER_ENDIAN","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/BufferMath.md","moduleTitle":"core/math/BufferMath","source":"engine/core/math/BufferMath.js","import":"/engine/core/math/BufferMath.js","sourceHash":"2e1f83b62de63783544ca42ddd3786ebbc731d646436cb3880a37e8275fa3fce","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/BufferMath.js#0017:BUFFER_VALUE_TYPES","exportIndex":17,"name":"BUFFER_VALUE_TYPES","kind":"constant","signature":"BUFFER_VALUE_TYPES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChannelMath.md","moduleTitle":"core/math/ChannelMath","source":"engine/core/math/ChannelMath.js","import":"/engine/core/math/ChannelMath.js","sourceHash":"f6a21c73ac703462ee56a70bf08cc494ddb51c6d7a233cf64442cfff135fa230","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/ChannelMath.js","title":"core/math/ChannelMath","summary":"ChannelMath.js - reusable channel geometry, spacing, hopset, and planning reports.","exportCount":18}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChannelMath.md","moduleTitle":"core/math/ChannelMath","source":"engine/core/math/ChannelMath.js","import":"/engine/core/math/ChannelMath.js","sourceHash":"f6a21c73ac703462ee56a70bf08cc494ddb51c6d7a233cf64442cfff135fa230","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChannelMath.js#0000:channelRangeReport","exportIndex":0,"name":"channelRangeReport","kind":"function","signature":"channelRangeReport(centerHz, bandwidthHz)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChannelMath.md","moduleTitle":"core/math/ChannelMath","source":"engine/core/math/ChannelMath.js","import":"/engine/core/math/ChannelMath.js","sourceHash":"f6a21c73ac703462ee56a70bf08cc494ddb51c6d7a233cf64442cfff135fa230","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChannelMath.js#0001:channelCenterFromIndex","exportIndex":1,"name":"channelCenterFromIndex","kind":"function","signature":"channelCenterFromIndex(index, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChannelMath.md","moduleTitle":"core/math/ChannelMath","source":"engine/core/math/ChannelMath.js","import":"/engine/core/math/ChannelMath.js","sourceHash":"f6a21c73ac703462ee56a70bf08cc494ddb51c6d7a233cf64442cfff135fa230","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChannelMath.js#0002:channelIndexFromCenterReport","exportIndex":2,"name":"channelIndexFromCenterReport","kind":"function","signature":"channelIndexFromCenterReport(centerHz, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChannelMath.md","moduleTitle":"core/math/ChannelMath","source":"engine/core/math/ChannelMath.js","import":"/engine/core/math/ChannelMath.js","sourceHash":"f6a21c73ac703462ee56a70bf08cc494ddb51c6d7a233cf64442cfff135fa230","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChannelMath.js#0003:wifi24ChannelCenterHz","exportIndex":3,"name":"wifi24ChannelCenterHz","kind":"function","signature":"wifi24ChannelCenterHz(channelNumber)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChannelMath.md","moduleTitle":"core/math/ChannelMath","source":"engine/core/math/ChannelMath.js","import":"/engine/core/math/ChannelMath.js","sourceHash":"f6a21c73ac703462ee56a70bf08cc494ddb51c6d7a233cf64442cfff135fa230","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChannelMath.js#0004:wifi24ChannelReport","exportIndex":4,"name":"wifi24ChannelReport","kind":"function","signature":"wifi24ChannelReport(channelNumber, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChannelMath.md","moduleTitle":"core/math/ChannelMath","source":"engine/core/math/ChannelMath.js","import":"/engine/core/math/ChannelMath.js","sourceHash":"f6a21c73ac703462ee56a70bf08cc494ddb51c6d7a233cf64442cfff135fa230","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChannelMath.js#0005:channelBandMembershipReport","exportIndex":5,"name":"channelBandMembershipReport","kind":"function","signature":"channelBandMembershipReport(channel, bands = [], options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChannelMath.md","moduleTitle":"core/math/ChannelMath","source":"engine/core/math/ChannelMath.js","import":"/engine/core/math/ChannelMath.js","sourceHash":"f6a21c73ac703462ee56a70bf08cc494ddb51c6d7a233cf64442cfff135fa230","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChannelMath.js#0006:channelGuardBandReport","exportIndex":6,"name":"channelGuardBandReport","kind":"function","signature":"channelGuardBandReport(aChannel, bChannel, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChannelMath.md","moduleTitle":"core/math/ChannelMath","source":"engine/core/math/ChannelMath.js","import":"/engine/core/math/ChannelMath.js","sourceHash":"f6a21c73ac703462ee56a70bf08cc494ddb51c6d7a233cf64442cfff135fa230","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChannelMath.js#0007:channelHopsetReport","exportIndex":7,"name":"channelHopsetReport","kind":"function","signature":"channelHopsetReport(channels = [], options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChannelMath.md","moduleTitle":"core/math/ChannelMath","source":"engine/core/math/ChannelMath.js","import":"/engine/core/math/ChannelMath.js","sourceHash":"f6a21c73ac703462ee56a70bf08cc494ddb51c6d7a233cf64442cfff135fa230","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChannelMath.js#0008:channelInterferenceReport","exportIndex":8,"name":"channelInterferenceReport","kind":"function","signature":"channelInterferenceReport(candidateChannel, interferers = [], options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChannelMath.md","moduleTitle":"core/math/ChannelMath","source":"engine/core/math/ChannelMath.js","import":"/engine/core/math/ChannelMath.js","sourceHash":"f6a21c73ac703462ee56a70bf08cc494ddb51c6d7a233cf64442cfff135fa230","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChannelMath.js#0009:channelPlanReport","exportIndex":9,"name":"channelPlanReport","kind":"function","signature":"channelPlanReport(candidates = [], interferers = [], options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChannelMath.md","moduleTitle":"core/math/ChannelMath","source":"engine/core/math/ChannelMath.js","import":"/engine/core/math/ChannelMath.js","sourceHash":"f6a21c73ac703462ee56a70bf08cc494ddb51c6d7a233cf64442cfff135fa230","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChannelMath.js#0010:CHANNEL_DEFAULT_BASE_INDEX","exportIndex":10,"name":"CHANNEL_DEFAULT_BASE_INDEX","kind":"constant","signature":"CHANNEL_DEFAULT_BASE_INDEX","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChannelMath.md","moduleTitle":"core/math/ChannelMath","source":"engine/core/math/ChannelMath.js","import":"/engine/core/math/ChannelMath.js","sourceHash":"f6a21c73ac703462ee56a70bf08cc494ddb51c6d7a233cf64442cfff135fa230","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChannelMath.js#0011:CHANNEL_DEFAULT_BASE_CENTER_HZ","exportIndex":11,"name":"CHANNEL_DEFAULT_BASE_CENTER_HZ","kind":"constant","signature":"CHANNEL_DEFAULT_BASE_CENTER_HZ","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChannelMath.md","moduleTitle":"core/math/ChannelMath","source":"engine/core/math/ChannelMath.js","import":"/engine/core/math/ChannelMath.js","sourceHash":"f6a21c73ac703462ee56a70bf08cc494ddb51c6d7a233cf64442cfff135fa230","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChannelMath.js#0012:CHANNEL_DEFAULT_SPACING_HZ","exportIndex":12,"name":"CHANNEL_DEFAULT_SPACING_HZ","kind":"constant","signature":"CHANNEL_DEFAULT_SPACING_HZ","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChannelMath.md","moduleTitle":"core/math/ChannelMath","source":"engine/core/math/ChannelMath.js","import":"/engine/core/math/ChannelMath.js","sourceHash":"f6a21c73ac703462ee56a70bf08cc494ddb51c6d7a233cf64442cfff135fa230","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChannelMath.js#0013:CHANNEL_DEFAULT_BANDWIDTH_HZ","exportIndex":13,"name":"CHANNEL_DEFAULT_BANDWIDTH_HZ","kind":"constant","signature":"CHANNEL_DEFAULT_BANDWIDTH_HZ","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChannelMath.md","moduleTitle":"core/math/ChannelMath","source":"engine/core/math/ChannelMath.js","import":"/engine/core/math/ChannelMath.js","sourceHash":"f6a21c73ac703462ee56a70bf08cc494ddb51c6d7a233cf64442cfff135fa230","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChannelMath.js#0014:CHANNEL_DEFAULT_COCHANNEL_OVERLAP_RATIO","exportIndex":14,"name":"CHANNEL_DEFAULT_COCHANNEL_OVERLAP_RATIO","kind":"constant","signature":"CHANNEL_DEFAULT_COCHANNEL_OVERLAP_RATIO","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChannelMath.md","moduleTitle":"core/math/ChannelMath","source":"engine/core/math/ChannelMath.js","import":"/engine/core/math/ChannelMath.js","sourceHash":"f6a21c73ac703462ee56a70bf08cc494ddb51c6d7a233cf64442cfff135fa230","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChannelMath.js#0015:CHANNEL_DEFAULT_REQUIRED_HOP_SPACING_HZ","exportIndex":15,"name":"CHANNEL_DEFAULT_REQUIRED_HOP_SPACING_HZ","kind":"constant","signature":"CHANNEL_DEFAULT_REQUIRED_HOP_SPACING_HZ","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChannelMath.md","moduleTitle":"core/math/ChannelMath","source":"engine/core/math/ChannelMath.js","import":"/engine/core/math/ChannelMath.js","sourceHash":"f6a21c73ac703462ee56a70bf08cc494ddb51c6d7a233cf64442cfff135fa230","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChannelMath.js#0016:CHANNEL_DEFAULT_PLAN_WEIGHTS","exportIndex":16,"name":"CHANNEL_DEFAULT_PLAN_WEIGHTS","kind":"constant","signature":"CHANNEL_DEFAULT_PLAN_WEIGHTS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChannelMath.md","moduleTitle":"core/math/ChannelMath","source":"engine/core/math/ChannelMath.js","import":"/engine/core/math/ChannelMath.js","sourceHash":"f6a21c73ac703462ee56a70bf08cc494ddb51c6d7a233cf64442cfff135fa230","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChannelMath.js#0017:WIFI_24_GHZ_CHANNEL_14_CENTER_HZ","exportIndex":17,"name":"WIFI_24_GHZ_CHANNEL_14_CENTER_HZ","kind":"constant","signature":"WIFI_24_GHZ_CHANNEL_14_CENTER_HZ","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChecksumMath.md","moduleTitle":"core/math/ChecksumMath","source":"engine/core/math/ChecksumMath.js","import":"/engine/core/math/ChecksumMath.js","sourceHash":"f0f1a47c29c8e023a9fafb34f4d1beae6903a90c9eaebc55f1e2a000f79e6ba3","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/ChecksumMath.js","title":"core/math/ChecksumMath","summary":"ChecksumMath.js - reusable byte checksums, non-crypto hashes, rolling hashes, and digest wrappers.","exportCount":36}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChecksumMath.md","moduleTitle":"core/math/ChecksumMath","source":"engine/core/math/ChecksumMath.js","import":"/engine/core/math/ChecksumMath.js","sourceHash":"f0f1a47c29c8e023a9fafb34f4d1beae6903a90c9eaebc55f1e2a000f79e6ba3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChecksumMath.js#0000:checksumByteView","exportIndex":0,"name":"checksumByteView","kind":"function","signature":"checksumByteView(data)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChecksumMath.md","moduleTitle":"core/math/ChecksumMath","source":"engine/core/math/ChecksumMath.js","import":"/engine/core/math/ChecksumMath.js","sourceHash":"f0f1a47c29c8e023a9fafb34f4d1beae6903a90c9eaebc55f1e2a000f79e6ba3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChecksumMath.js#0001:checksumHex32","exportIndex":1,"name":"checksumHex32","kind":"function","signature":"checksumHex32(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChecksumMath.md","moduleTitle":"core/math/ChecksumMath","source":"engine/core/math/ChecksumMath.js","import":"/engine/core/math/ChecksumMath.js","sourceHash":"f0f1a47c29c8e023a9fafb34f4d1beae6903a90c9eaebc55f1e2a000f79e6ba3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChecksumMath.js#0002:checksumHex64","exportIndex":2,"name":"checksumHex64","kind":"function","signature":"checksumHex64(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChecksumMath.md","moduleTitle":"core/math/ChecksumMath","source":"engine/core/math/ChecksumMath.js","import":"/engine/core/math/ChecksumMath.js","sourceHash":"f0f1a47c29c8e023a9fafb34f4d1beae6903a90c9eaebc55f1e2a000f79e6ba3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChecksumMath.js#0003:hexTailUint32","exportIndex":3,"name":"hexTailUint32","kind":"function","signature":"hexTailUint32(hex, fallback = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChecksumMath.md","moduleTitle":"core/math/ChecksumMath","source":"engine/core/math/ChecksumMath.js","import":"/engine/core/math/ChecksumMath.js","sourceHash":"f0f1a47c29c8e023a9fafb34f4d1beae6903a90c9eaebc55f1e2a000f79e6ba3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChecksumMath.js#0004:legacySha1Hex","exportIndex":4,"name":"legacySha1Hex","kind":"function","signature":"legacySha1Hex(data)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChecksumMath.md","moduleTitle":"core/math/ChecksumMath","source":"engine/core/math/ChecksumMath.js","import":"/engine/core/math/ChecksumMath.js","sourceHash":"f0f1a47c29c8e023a9fafb34f4d1beae6903a90c9eaebc55f1e2a000f79e6ba3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChecksumMath.js#0005:crc32","exportIndex":5,"name":"crc32","kind":"function","signature":"crc32(data, previousCrc = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChecksumMath.md","moduleTitle":"core/math/ChecksumMath","source":"engine/core/math/ChecksumMath.js","import":"/engine/core/math/ChecksumMath.js","sourceHash":"f0f1a47c29c8e023a9fafb34f4d1beae6903a90c9eaebc55f1e2a000f79e6ba3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChecksumMath.js#0006:adler32","exportIndex":6,"name":"adler32","kind":"function","signature":"adler32(data, previousAdler = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChecksumMath.md","moduleTitle":"core/math/ChecksumMath","source":"engine/core/math/ChecksumMath.js","import":"/engine/core/math/ChecksumMath.js","sourceHash":"f0f1a47c29c8e023a9fafb34f4d1beae6903a90c9eaebc55f1e2a000f79e6ba3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChecksumMath.js#0007:fnv1a32","exportIndex":7,"name":"fnv1a32","kind":"function","signature":"fnv1a32(data, seed = FNV1A32_OFFSET_BASIS)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChecksumMath.md","moduleTitle":"core/math/ChecksumMath","source":"engine/core/math/ChecksumMath.js","import":"/engine/core/math/ChecksumMath.js","sourceHash":"f0f1a47c29c8e023a9fafb34f4d1beae6903a90c9eaebc55f1e2a000f79e6ba3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChecksumMath.js#0008:fnv1a64","exportIndex":8,"name":"fnv1a64","kind":"function","signature":"fnv1a64(data, seed = FNV1A64_OFFSET_BASIS)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChecksumMath.md","moduleTitle":"core/math/ChecksumMath","source":"engine/core/math/ChecksumMath.js","import":"/engine/core/math/ChecksumMath.js","sourceHash":"f0f1a47c29c8e023a9fafb34f4d1beae6903a90c9eaebc55f1e2a000f79e6ba3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChecksumMath.js#0009:fnv1aStringCodeUnit32","exportIndex":9,"name":"fnv1aStringCodeUnit32","kind":"function","signature":"fnv1aStringCodeUnit32(data, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChecksumMath.md","moduleTitle":"core/math/ChecksumMath","source":"engine/core/math/ChecksumMath.js","import":"/engine/core/math/ChecksumMath.js","sourceHash":"f0f1a47c29c8e023a9fafb34f4d1beae6903a90c9eaebc55f1e2a000f79e6ba3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChecksumMath.js#0010:fnv1aStringCodePointHead32","exportIndex":10,"name":"fnv1aStringCodePointHead32","kind":"function","signature":"fnv1aStringCodePointHead32(data, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChecksumMath.md","moduleTitle":"core/math/ChecksumMath","source":"engine/core/math/ChecksumMath.js","import":"/engine/core/math/ChecksumMath.js","sourceHash":"f0f1a47c29c8e023a9fafb34f4d1beae6903a90c9eaebc55f1e2a000f79e6ba3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChecksumMath.js#0011:fnv1aLowByteString32","exportIndex":11,"name":"fnv1aLowByteString32","kind":"function","signature":"fnv1aLowByteString32(data, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChecksumMath.md","moduleTitle":"core/math/ChecksumMath","source":"engine/core/math/ChecksumMath.js","import":"/engine/core/math/ChecksumMath.js","sourceHash":"f0f1a47c29c8e023a9fafb34f4d1beae6903a90c9eaebc55f1e2a000f79e6ba3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChecksumMath.js#0012:fnv1aTaggedFloat32Sequence32","exportIndex":12,"name":"fnv1aTaggedFloat32Sequence32","kind":"function","signature":"fnv1aTaggedFloat32Sequence32(values, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChecksumMath.md","moduleTitle":"core/math/ChecksumMath","source":"engine/core/math/ChecksumMath.js","import":"/engine/core/math/ChecksumMath.js","sourceHash":"f0f1a47c29c8e023a9fafb34f4d1beae6903a90c9eaebc55f1e2a000f79e6ba3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChecksumMath.js#0013:fnv1aTaggedUint32Sequence32","exportIndex":13,"name":"fnv1aTaggedUint32Sequence32","kind":"function","signature":"fnv1aTaggedUint32Sequence32(values, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChecksumMath.md","moduleTitle":"core/math/ChecksumMath","source":"engine/core/math/ChecksumMath.js","import":"/engine/core/math/ChecksumMath.js","sourceHash":"f0f1a47c29c8e023a9fafb34f4d1beae6903a90c9eaebc55f1e2a000f79e6ba3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChecksumMath.js#0014:legacyAvalancheUint32Hash32","exportIndex":14,"name":"legacyAvalancheUint32Hash32","kind":"function","signature":"legacyAvalancheUint32Hash32(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChecksumMath.md","moduleTitle":"core/math/ChecksumMath","source":"engine/core/math/ChecksumMath.js","import":"/engine/core/math/ChecksumMath.js","sourceHash":"f0f1a47c29c8e023a9fafb34f4d1beae6903a90c9eaebc55f1e2a000f79e6ba3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChecksumMath.js#0015:legacyAvalancheMixUint32Hash32","exportIndex":15,"name":"legacyAvalancheMixUint32Hash32","kind":"function","signature":"legacyAvalancheMixUint32Hash32(hash, value, multiplier = 0x9e3779b1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChecksumMath.md","moduleTitle":"core/math/ChecksumMath","source":"engine/core/math/ChecksumMath.js","import":"/engine/core/math/ChecksumMath.js","sourceHash":"f0f1a47c29c8e023a9fafb34f4d1beae6903a90c9eaebc55f1e2a000f79e6ba3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChecksumMath.js#0016:fnv1aUint32Sequence32","exportIndex":16,"name":"fnv1aUint32Sequence32","kind":"function","signature":"fnv1aUint32Sequence32(values, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChecksumMath.md","moduleTitle":"core/math/ChecksumMath","source":"engine/core/math/ChecksumMath.js","import":"/engine/core/math/ChecksumMath.js","sourceHash":"f0f1a47c29c8e023a9fafb34f4d1beae6903a90c9eaebc55f1e2a000f79e6ba3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChecksumMath.js#0017:fnv1aInt32Sequence32","exportIndex":17,"name":"fnv1aInt32Sequence32","kind":"function","signature":"fnv1aInt32Sequence32(values, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChecksumMath.md","moduleTitle":"core/math/ChecksumMath","source":"engine/core/math/ChecksumMath.js","import":"/engine/core/math/ChecksumMath.js","sourceHash":"f0f1a47c29c8e023a9fafb34f4d1beae6903a90c9eaebc55f1e2a000f79e6ba3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChecksumMath.js#0018:xxHash32","exportIndex":18,"name":"xxHash32","kind":"function","signature":"xxHash32(data, seed = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChecksumMath.md","moduleTitle":"core/math/ChecksumMath","source":"engine/core/math/ChecksumMath.js","import":"/engine/core/math/ChecksumMath.js","sourceHash":"f0f1a47c29c8e023a9fafb34f4d1beae6903a90c9eaebc55f1e2a000f79e6ba3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChecksumMath.js#0019:legacyFnv1aByteSequenceHash32","exportIndex":19,"name":"legacyFnv1aByteSequenceHash32","kind":"function","signature":"legacyFnv1aByteSequenceHash32(data, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChecksumMath.md","moduleTitle":"core/math/ChecksumMath","source":"engine/core/math/ChecksumMath.js","import":"/engine/core/math/ChecksumMath.js","sourceHash":"f0f1a47c29c8e023a9fafb34f4d1beae6903a90c9eaebc55f1e2a000f79e6ba3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChecksumMath.js#0020:legacyFnv1aNumberSequenceHash32","exportIndex":20,"name":"legacyFnv1aNumberSequenceHash32","kind":"function","signature":"legacyFnv1aNumberSequenceHash32(values, seed = FNV1A32_OFFSET_BASIS)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChecksumMath.md","moduleTitle":"core/math/ChecksumMath","source":"engine/core/math/ChecksumMath.js","import":"/engine/core/math/ChecksumMath.js","sourceHash":"f0f1a47c29c8e023a9fafb34f4d1beae6903a90c9eaebc55f1e2a000f79e6ba3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChecksumMath.js#0021:legacyFnv1aStringHash32","exportIndex":21,"name":"legacyFnv1aStringHash32","kind":"function","signature":"legacyFnv1aStringHash32(data, seed = FNV1A32_OFFSET_BASIS)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChecksumMath.md","moduleTitle":"core/math/ChecksumMath","source":"engine/core/math/ChecksumMath.js","import":"/engine/core/math/ChecksumMath.js","sourceHash":"f0f1a47c29c8e023a9fafb34f4d1beae6903a90c9eaebc55f1e2a000f79e6ba3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChecksumMath.js#0022:legacyDjb2XorStringHash32","exportIndex":22,"name":"legacyDjb2XorStringHash32","kind":"function","signature":"legacyDjb2XorStringHash32(data, seed = 5381)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChecksumMath.md","moduleTitle":"core/math/ChecksumMath","source":"engine/core/math/ChecksumMath.js","import":"/engine/core/math/ChecksumMath.js","sourceHash":"f0f1a47c29c8e023a9fafb34f4d1beae6903a90c9eaebc55f1e2a000f79e6ba3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChecksumMath.js#0023:legacyUnsignedStringHash31","exportIndex":23,"name":"legacyUnsignedStringHash31","kind":"function","signature":"legacyUnsignedStringHash31(data, seed = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChecksumMath.md","moduleTitle":"core/math/ChecksumMath","source":"engine/core/math/ChecksumMath.js","import":"/engine/core/math/ChecksumMath.js","sourceHash":"f0f1a47c29c8e023a9fafb34f4d1beae6903a90c9eaebc55f1e2a000f79e6ba3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChecksumMath.js#0024:legacyStringHash32","exportIndex":24,"name":"legacyStringHash32","kind":"function","signature":"legacyStringHash32(data)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChecksumMath.md","moduleTitle":"core/math/ChecksumMath","source":"engine/core/math/ChecksumMath.js","import":"/engine/core/math/ChecksumMath.js","sourceHash":"f0f1a47c29c8e023a9fafb34f4d1beae6903a90c9eaebc55f1e2a000f79e6ba3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChecksumMath.js#0025:legacyScaledNumberSequenceHash32","exportIndex":25,"name":"legacyScaledNumberSequenceHash32","kind":"function","signature":"legacyScaledNumberSequenceHash32(values, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChecksumMath.md","moduleTitle":"core/math/ChecksumMath","source":"engine/core/math/ChecksumMath.js","import":"/engine/core/math/ChecksumMath.js","sourceHash":"f0f1a47c29c8e023a9fafb34f4d1beae6903a90c9eaebc55f1e2a000f79e6ba3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChecksumMath.js#0026:bufferHash","exportIndex":26,"name":"bufferHash","kind":"function","signature":"bufferHash(data, algorithm = CHECKSUM_ALGORITHMS.crc32)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChecksumMath.md","moduleTitle":"core/math/ChecksumMath","source":"engine/core/math/ChecksumMath.js","import":"/engine/core/math/ChecksumMath.js","sourceHash":"f0f1a47c29c8e023a9fafb34f4d1beae6903a90c9eaebc55f1e2a000f79e6ba3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChecksumMath.js#0027:checksumReport","exportIndex":27,"name":"checksumReport","kind":"function","signature":"checksumReport(data)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChecksumMath.md","moduleTitle":"core/math/ChecksumMath","source":"engine/core/math/ChecksumMath.js","import":"/engine/core/math/ChecksumMath.js","sourceHash":"f0f1a47c29c8e023a9fafb34f4d1beae6903a90c9eaebc55f1e2a000f79e6ba3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChecksumMath.js#0028:checksumBlockReport","exportIndex":28,"name":"checksumBlockReport","kind":"function","signature":"checksumBlockReport(data, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChecksumMath.md","moduleTitle":"core/math/ChecksumMath","source":"engine/core/math/ChecksumMath.js","import":"/engine/core/math/ChecksumMath.js","sourceHash":"f0f1a47c29c8e023a9fafb34f4d1beae6903a90c9eaebc55f1e2a000f79e6ba3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChecksumMath.js#0029:rollingHash32","exportIndex":29,"name":"rollingHash32","kind":"function","signature":"rollingHash32(data, windowSize, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChecksumMath.md","moduleTitle":"core/math/ChecksumMath","source":"engine/core/math/ChecksumMath.js","import":"/engine/core/math/ChecksumMath.js","sourceHash":"f0f1a47c29c8e023a9fafb34f4d1beae6903a90c9eaebc55f1e2a000f79e6ba3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChecksumMath.js#0030:bufferCompare","exportIndex":30,"name":"bufferCompare","kind":"function","signature":"bufferCompare(left, right)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChecksumMath.md","moduleTitle":"core/math/ChecksumMath","source":"engine/core/math/ChecksumMath.js","import":"/engine/core/math/ChecksumMath.js","sourceHash":"f0f1a47c29c8e023a9fafb34f4d1beae6903a90c9eaebc55f1e2a000f79e6ba3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChecksumMath.js#0031:contentHashBytes","exportIndex":31,"name":"contentHashBytes","kind":"function","signature":"async contentHashBytes(data, algorithm = CHECKSUM_ALGORITHMS.sha256)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChecksumMath.md","moduleTitle":"core/math/ChecksumMath","source":"engine/core/math/ChecksumMath.js","import":"/engine/core/math/ChecksumMath.js","sourceHash":"f0f1a47c29c8e023a9fafb34f4d1beae6903a90c9eaebc55f1e2a000f79e6ba3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChecksumMath.js#0032:contentHashHex","exportIndex":32,"name":"contentHashHex","kind":"function","signature":"async contentHashHex(data, algorithm = CHECKSUM_ALGORITHMS.sha256)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChecksumMath.md","moduleTitle":"core/math/ChecksumMath","source":"engine/core/math/ChecksumMath.js","import":"/engine/core/math/ChecksumMath.js","sourceHash":"f0f1a47c29c8e023a9fafb34f4d1beae6903a90c9eaebc55f1e2a000f79e6ba3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChecksumMath.js#0033:FNV1A32_OFFSET_BASIS","exportIndex":33,"name":"FNV1A32_OFFSET_BASIS","kind":"constant","signature":"FNV1A32_OFFSET_BASIS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChecksumMath.md","moduleTitle":"core/math/ChecksumMath","source":"engine/core/math/ChecksumMath.js","import":"/engine/core/math/ChecksumMath.js","sourceHash":"f0f1a47c29c8e023a9fafb34f4d1beae6903a90c9eaebc55f1e2a000f79e6ba3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChecksumMath.js#0034:CHECKSUM_ALGORITHMS","exportIndex":34,"name":"CHECKSUM_ALGORITHMS","kind":"constant","signature":"CHECKSUM_ALGORITHMS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ChecksumMath.md","moduleTitle":"core/math/ChecksumMath","source":"engine/core/math/ChecksumMath.js","import":"/engine/core/math/ChecksumMath.js","sourceHash":"f0f1a47c29c8e023a9fafb34f4d1beae6903a90c9eaebc55f1e2a000f79e6ba3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ChecksumMath.js#0035:CHECKSUM_KNOWN_VECTORS","exportIndex":35,"name":"CHECKSUM_KNOWN_VECTORS","kind":"constant","signature":"CHECKSUM_KNOWN_VECTORS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/CompressionMath.md","moduleTitle":"core/math/CompressionMath","source":"engine/core/math/CompressionMath.js","import":"/engine/core/math/CompressionMath.js","sourceHash":"a771d1ef8e49a69425a2c4852e136c7fa7991c39d9ab5e38b8f8e4035ed6c42b","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/CompressionMath.js","title":"core/math/CompressionMath","summary":"CompressionMath.js - pure compression primitive reports and planning helpers.","exportCount":12}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/CompressionMath.md","moduleTitle":"core/math/CompressionMath","source":"engine/core/math/CompressionMath.js","import":"/engine/core/math/CompressionMath.js","sourceHash":"a771d1ef8e49a69425a2c4852e136c7fa7991c39d9ab5e38b8f8e4035ed6c42b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/CompressionMath.js#0000:compressionZigZagEncode","exportIndex":0,"name":"compressionZigZagEncode","kind":"function","signature":"compressionZigZagEncode(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/CompressionMath.md","moduleTitle":"core/math/CompressionMath","source":"engine/core/math/CompressionMath.js","import":"/engine/core/math/CompressionMath.js","sourceHash":"a771d1ef8e49a69425a2c4852e136c7fa7991c39d9ab5e38b8f8e4035ed6c42b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/CompressionMath.js#0001:compressionZigZagDecode","exportIndex":1,"name":"compressionZigZagDecode","kind":"function","signature":"compressionZigZagDecode(encoded)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/CompressionMath.md","moduleTitle":"core/math/CompressionMath","source":"engine/core/math/CompressionMath.js","import":"/engine/core/math/CompressionMath.js","sourceHash":"a771d1ef8e49a69425a2c4852e136c7fa7991c39d9ab5e38b8f8e4035ed6c42b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/CompressionMath.js#0002:compressionRunLengthReport","exportIndex":2,"name":"compressionRunLengthReport","kind":"function","signature":"compressionRunLengthReport(values, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/CompressionMath.md","moduleTitle":"core/math/CompressionMath","source":"engine/core/math/CompressionMath.js","import":"/engine/core/math/CompressionMath.js","sourceHash":"a771d1ef8e49a69425a2c4852e136c7fa7991c39d9ab5e38b8f8e4035ed6c42b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/CompressionMath.js#0003:compressionDeltaReport","exportIndex":3,"name":"compressionDeltaReport","kind":"function","signature":"compressionDeltaReport(values, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/CompressionMath.md","moduleTitle":"core/math/CompressionMath","source":"engine/core/math/CompressionMath.js","import":"/engine/core/math/CompressionMath.js","sourceHash":"a771d1ef8e49a69425a2c4852e136c7fa7991c39d9ab5e38b8f8e4035ed6c42b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/CompressionMath.js#0004:compressionPaletteReport","exportIndex":4,"name":"compressionPaletteReport","kind":"function","signature":"compressionPaletteReport(values, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/CompressionMath.md","moduleTitle":"core/math/CompressionMath","source":"engine/core/math/CompressionMath.js","import":"/engine/core/math/CompressionMath.js","sourceHash":"a771d1ef8e49a69425a2c4852e136c7fa7991c39d9ab5e38b8f8e4035ed6c42b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/CompressionMath.js#0005:compressionVarintReport","exportIndex":5,"name":"compressionVarintReport","kind":"function","signature":"compressionVarintReport(values, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/CompressionMath.md","moduleTitle":"core/math/CompressionMath","source":"engine/core/math/CompressionMath.js","import":"/engine/core/math/CompressionMath.js","sourceHash":"a771d1ef8e49a69425a2c4852e136c7fa7991c39d9ab5e38b8f8e4035ed6c42b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/CompressionMath.js#0006:compressionEntropyPlan","exportIndex":6,"name":"compressionEntropyPlan","kind":"function","signature":"compressionEntropyPlan(data, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/CompressionMath.md","moduleTitle":"core/math/CompressionMath","source":"engine/core/math/CompressionMath.js","import":"/engine/core/math/CompressionMath.js","sourceHash":"a771d1ef8e49a69425a2c4852e136c7fa7991c39d9ab5e38b8f8e4035ed6c42b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/CompressionMath.js#0007:compressionLz77WindowReport","exportIndex":7,"name":"compressionLz77WindowReport","kind":"function","signature":"compressionLz77WindowReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/CompressionMath.md","moduleTitle":"core/math/CompressionMath","source":"engine/core/math/CompressionMath.js","import":"/engine/core/math/CompressionMath.js","sourceHash":"a771d1ef8e49a69425a2c4852e136c7fa7991c39d9ab5e38b8f8e4035ed6c42b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/CompressionMath.js#0008:compressionHuffmanLengthReport","exportIndex":8,"name":"compressionHuffmanLengthReport","kind":"function","signature":"compressionHuffmanLengthReport(values, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/CompressionMath.md","moduleTitle":"core/math/CompressionMath","source":"engine/core/math/CompressionMath.js","import":"/engine/core/math/CompressionMath.js","sourceHash":"a771d1ef8e49a69425a2c4852e136c7fa7991c39d9ab5e38b8f8e4035ed6c42b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/CompressionMath.js#0009:compressionRangeModelReport","exportIndex":9,"name":"compressionRangeModelReport","kind":"function","signature":"compressionRangeModelReport(values, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/CompressionMath.md","moduleTitle":"core/math/CompressionMath","source":"engine/core/math/CompressionMath.js","import":"/engine/core/math/CompressionMath.js","sourceHash":"a771d1ef8e49a69425a2c4852e136c7fa7991c39d9ab5e38b8f8e4035ed6c42b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/CompressionMath.js#0010:compressionDictionaryMatchReport","exportIndex":10,"name":"compressionDictionaryMatchReport","kind":"function","signature":"compressionDictionaryMatchReport(values, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/CompressionMath.md","moduleTitle":"core/math/CompressionMath","source":"engine/core/math/CompressionMath.js","import":"/engine/core/math/CompressionMath.js","sourceHash":"a771d1ef8e49a69425a2c4852e136c7fa7991c39d9ab5e38b8f8e4035ed6c42b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/CompressionMath.js#0011:compressionPrimitivePlan","exportIndex":11,"name":"compressionPrimitivePlan","kind":"function","signature":"compressionPrimitivePlan(values, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/CongestionMath.md","moduleTitle":"core/math/CongestionMath","source":"engine/core/math/CongestionMath.js","import":"/engine/core/math/CongestionMath.js","sourceHash":"d58a15d5319512dbf62f81290b809345cfdb9c47734301a3b02ddf638f7bcf98","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/CongestionMath.js","title":"core/math/CongestionMath","summary":"CongestionMath.js - reusable congestion-window, pacing, Reno, QUIC, and CUBIC report helpers.","exportCount":28}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/CongestionMath.md","moduleTitle":"core/math/CongestionMath","source":"engine/core/math/CongestionMath.js","import":"/engine/core/math/CongestionMath.js","sourceHash":"d58a15d5319512dbf62f81290b809345cfdb9c47734301a3b02ddf638f7bcf98","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/CongestionMath.js#0000:bandwidthDelayProductBytes","exportIndex":0,"name":"bandwidthDelayProductBytes","kind":"function","signature":"bandwidthDelayProductBytes(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/CongestionMath.md","moduleTitle":"core/math/CongestionMath","source":"engine/core/math/CongestionMath.js","import":"/engine/core/math/CongestionMath.js","sourceHash":"d58a15d5319512dbf62f81290b809345cfdb9c47734301a3b02ddf638f7bcf98","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/CongestionMath.js#0001:congestionWindowLimitReport","exportIndex":1,"name":"congestionWindowLimitReport","kind":"function","signature":"congestionWindowLimitReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/CongestionMath.md","moduleTitle":"core/math/CongestionMath","source":"engine/core/math/CongestionMath.js","import":"/engine/core/math/CongestionMath.js","sourceHash":"d58a15d5319512dbf62f81290b809345cfdb9c47734301a3b02ddf638f7bcf98","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/CongestionMath.js#0002:quicInitialCongestionWindowBytes","exportIndex":2,"name":"quicInitialCongestionWindowBytes","kind":"function","signature":"quicInitialCongestionWindowBytes(maxDatagramBytes = CONGESTION_DEFAULT_MAX_DATAGRAM_BYTES)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/CongestionMath.md","moduleTitle":"core/math/CongestionMath","source":"engine/core/math/CongestionMath.js","import":"/engine/core/math/CongestionMath.js","sourceHash":"d58a15d5319512dbf62f81290b809345cfdb9c47734301a3b02ddf638f7bcf98","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/CongestionMath.js#0003:quicMinimumCongestionWindowBytes","exportIndex":3,"name":"quicMinimumCongestionWindowBytes","kind":"function","signature":"quicMinimumCongestionWindowBytes(maxDatagramBytes = CONGESTION_DEFAULT_MAX_DATAGRAM_BYTES)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/CongestionMath.md","moduleTitle":"core/math/CongestionMath","source":"engine/core/math/CongestionMath.js","import":"/engine/core/math/CongestionMath.js","sourceHash":"d58a15d5319512dbf62f81290b809345cfdb9c47734301a3b02ddf638f7bcf98","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/CongestionMath.js#0004:renoSlowStartThresholdBytes","exportIndex":4,"name":"renoSlowStartThresholdBytes","kind":"function","signature":"renoSlowStartThresholdBytes(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/CongestionMath.md","moduleTitle":"core/math/CongestionMath","source":"engine/core/math/CongestionMath.js","import":"/engine/core/math/CongestionMath.js","sourceHash":"d58a15d5319512dbf62f81290b809345cfdb9c47734301a3b02ddf638f7bcf98","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/CongestionMath.js#0005:renoSlowStartIncreaseBytes","exportIndex":5,"name":"renoSlowStartIncreaseBytes","kind":"function","signature":"renoSlowStartIncreaseBytes(acknowledgedBytes, smssBytes = CONGESTION_DEFAULT_MAX_DATAGRAM_BYTES)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/CongestionMath.md","moduleTitle":"core/math/CongestionMath","source":"engine/core/math/CongestionMath.js","import":"/engine/core/math/CongestionMath.js","sourceHash":"d58a15d5319512dbf62f81290b809345cfdb9c47734301a3b02ddf638f7bcf98","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/CongestionMath.js#0006:renoCongestionAvoidanceIncreaseBytes","exportIndex":6,"name":"renoCongestionAvoidanceIncreaseBytes","kind":"function","signature":"renoCongestionAvoidanceIncreaseBytes(congestionWindowBytes, smssBytes = CONGESTION_DEFAULT_MAX_DATAGRAM_BYTES)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/CongestionMath.md","moduleTitle":"core/math/CongestionMath","source":"engine/core/math/CongestionMath.js","import":"/engine/core/math/CongestionMath.js","sourceHash":"d58a15d5319512dbf62f81290b809345cfdb9c47734301a3b02ddf638f7bcf98","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/CongestionMath.js#0007:renoAckWindowUpdateReport","exportIndex":7,"name":"renoAckWindowUpdateReport","kind":"function","signature":"renoAckWindowUpdateReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/CongestionMath.md","moduleTitle":"core/math/CongestionMath","source":"engine/core/math/CongestionMath.js","import":"/engine/core/math/CongestionMath.js","sourceHash":"d58a15d5319512dbf62f81290b809345cfdb9c47734301a3b02ddf638f7bcf98","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/CongestionMath.js#0008:congestionLossResponseReport","exportIndex":8,"name":"congestionLossResponseReport","kind":"function","signature":"congestionLossResponseReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/CongestionMath.md","moduleTitle":"core/math/CongestionMath","source":"engine/core/math/CongestionMath.js","import":"/engine/core/math/CongestionMath.js","sourceHash":"d58a15d5319512dbf62f81290b809345cfdb9c47734301a3b02ddf638f7bcf98","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/CongestionMath.js#0009:persistentCongestionDurationMs","exportIndex":9,"name":"persistentCongestionDurationMs","kind":"function","signature":"persistentCongestionDurationMs(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/CongestionMath.md","moduleTitle":"core/math/CongestionMath","source":"engine/core/math/CongestionMath.js","import":"/engine/core/math/CongestionMath.js","sourceHash":"d58a15d5319512dbf62f81290b809345cfdb9c47734301a3b02ddf638f7bcf98","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/CongestionMath.js#0010:persistentCongestionReport","exportIndex":10,"name":"persistentCongestionReport","kind":"function","signature":"persistentCongestionReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/CongestionMath.md","moduleTitle":"core/math/CongestionMath","source":"engine/core/math/CongestionMath.js","import":"/engine/core/math/CongestionMath.js","sourceHash":"d58a15d5319512dbf62f81290b809345cfdb9c47734301a3b02ddf638f7bcf98","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/CongestionMath.js#0011:congestionPacingRateBps","exportIndex":11,"name":"congestionPacingRateBps","kind":"function","signature":"congestionPacingRateBps(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/CongestionMath.md","moduleTitle":"core/math/CongestionMath","source":"engine/core/math/CongestionMath.js","import":"/engine/core/math/CongestionMath.js","sourceHash":"d58a15d5319512dbf62f81290b809345cfdb9c47734301a3b02ddf638f7bcf98","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/CongestionMath.js#0012:cubicKSeconds","exportIndex":12,"name":"cubicKSeconds","kind":"function","signature":"cubicKSeconds(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/CongestionMath.md","moduleTitle":"core/math/CongestionMath","source":"engine/core/math/CongestionMath.js","import":"/engine/core/math/CongestionMath.js","sourceHash":"d58a15d5319512dbf62f81290b809345cfdb9c47734301a3b02ddf638f7bcf98","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/CongestionMath.js#0013:cubicWindowSegments","exportIndex":13,"name":"cubicWindowSegments","kind":"function","signature":"cubicWindowSegments(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/CongestionMath.md","moduleTitle":"core/math/CongestionMath","source":"engine/core/math/CongestionMath.js","import":"/engine/core/math/CongestionMath.js","sourceHash":"d58a15d5319512dbf62f81290b809345cfdb9c47734301a3b02ddf638f7bcf98","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/CongestionMath.js#0014:cubicRenoFriendlyAlpha","exportIndex":14,"name":"cubicRenoFriendlyAlpha","kind":"function","signature":"cubicRenoFriendlyAlpha(beta = CONGESTION_CUBIC_BETA)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/CongestionMath.md","moduleTitle":"core/math/CongestionMath","source":"engine/core/math/CongestionMath.js","import":"/engine/core/math/CongestionMath.js","sourceHash":"d58a15d5319512dbf62f81290b809345cfdb9c47734301a3b02ddf638f7bcf98","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/CongestionMath.js#0015:cubicRenoEstimateReport","exportIndex":15,"name":"cubicRenoEstimateReport","kind":"function","signature":"cubicRenoEstimateReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/CongestionMath.md","moduleTitle":"core/math/CongestionMath","source":"engine/core/math/CongestionMath.js","import":"/engine/core/math/CongestionMath.js","sourceHash":"d58a15d5319512dbf62f81290b809345cfdb9c47734301a3b02ddf638f7bcf98","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/CongestionMath.js#0016:cubicTargetWindowReport","exportIndex":16,"name":"cubicTargetWindowReport","kind":"function","signature":"cubicTargetWindowReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/CongestionMath.md","moduleTitle":"core/math/CongestionMath","source":"engine/core/math/CongestionMath.js","import":"/engine/core/math/CongestionMath.js","sourceHash":"d58a15d5319512dbf62f81290b809345cfdb9c47734301a3b02ddf638f7bcf98","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/CongestionMath.js#0017:cubicLossResponseReport","exportIndex":17,"name":"cubicLossResponseReport","kind":"function","signature":"cubicLossResponseReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/CongestionMath.md","moduleTitle":"core/math/CongestionMath","source":"engine/core/math/CongestionMath.js","import":"/engine/core/math/CongestionMath.js","sourceHash":"d58a15d5319512dbf62f81290b809345cfdb9c47734301a3b02ddf638f7bcf98","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/CongestionMath.js#0018:CONGESTION_DEFAULT_MAX_DATAGRAM_BYTES","exportIndex":18,"name":"CONGESTION_DEFAULT_MAX_DATAGRAM_BYTES","kind":"constant","signature":"CONGESTION_DEFAULT_MAX_DATAGRAM_BYTES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/CongestionMath.md","moduleTitle":"core/math/CongestionMath","source":"engine/core/math/CongestionMath.js","import":"/engine/core/math/CongestionMath.js","sourceHash":"d58a15d5319512dbf62f81290b809345cfdb9c47734301a3b02ddf638f7bcf98","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/CongestionMath.js#0019:CONGESTION_RENO_DECREASE_FACTOR","exportIndex":19,"name":"CONGESTION_RENO_DECREASE_FACTOR","kind":"constant","signature":"CONGESTION_RENO_DECREASE_FACTOR","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/CongestionMath.md","moduleTitle":"core/math/CongestionMath","source":"engine/core/math/CongestionMath.js","import":"/engine/core/math/CongestionMath.js","sourceHash":"d58a15d5319512dbf62f81290b809345cfdb9c47734301a3b02ddf638f7bcf98","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/CongestionMath.js#0020:CONGESTION_RENO_MIN_WINDOW_SEGMENTS","exportIndex":20,"name":"CONGESTION_RENO_MIN_WINDOW_SEGMENTS","kind":"constant","signature":"CONGESTION_RENO_MIN_WINDOW_SEGMENTS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/CongestionMath.md","moduleTitle":"core/math/CongestionMath","source":"engine/core/math/CongestionMath.js","import":"/engine/core/math/CongestionMath.js","sourceHash":"d58a15d5319512dbf62f81290b809345cfdb9c47734301a3b02ddf638f7bcf98","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/CongestionMath.js#0021:CONGESTION_QUIC_INITIAL_PACKET_COUNT","exportIndex":21,"name":"CONGESTION_QUIC_INITIAL_PACKET_COUNT","kind":"constant","signature":"CONGESTION_QUIC_INITIAL_PACKET_COUNT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/CongestionMath.md","moduleTitle":"core/math/CongestionMath","source":"engine/core/math/CongestionMath.js","import":"/engine/core/math/CongestionMath.js","sourceHash":"d58a15d5319512dbf62f81290b809345cfdb9c47734301a3b02ddf638f7bcf98","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/CongestionMath.js#0022:CONGESTION_QUIC_MIN_WINDOW_PACKET_COUNT","exportIndex":22,"name":"CONGESTION_QUIC_MIN_WINDOW_PACKET_COUNT","kind":"constant","signature":"CONGESTION_QUIC_MIN_WINDOW_PACKET_COUNT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/CongestionMath.md","moduleTitle":"core/math/CongestionMath","source":"engine/core/math/CongestionMath.js","import":"/engine/core/math/CongestionMath.js","sourceHash":"d58a15d5319512dbf62f81290b809345cfdb9c47734301a3b02ddf638f7bcf98","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/CongestionMath.js#0023:CONGESTION_QUIC_INITIAL_WINDOW_MIN_BYTES","exportIndex":23,"name":"CONGESTION_QUIC_INITIAL_WINDOW_MIN_BYTES","kind":"constant","signature":"CONGESTION_QUIC_INITIAL_WINDOW_MIN_BYTES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/CongestionMath.md","moduleTitle":"core/math/CongestionMath","source":"engine/core/math/CongestionMath.js","import":"/engine/core/math/CongestionMath.js","sourceHash":"d58a15d5319512dbf62f81290b809345cfdb9c47734301a3b02ddf638f7bcf98","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/CongestionMath.js#0024:CONGESTION_PERSISTENT_THRESHOLD","exportIndex":24,"name":"CONGESTION_PERSISTENT_THRESHOLD","kind":"constant","signature":"CONGESTION_PERSISTENT_THRESHOLD","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/CongestionMath.md","moduleTitle":"core/math/CongestionMath","source":"engine/core/math/CongestionMath.js","import":"/engine/core/math/CongestionMath.js","sourceHash":"d58a15d5319512dbf62f81290b809345cfdb9c47734301a3b02ddf638f7bcf98","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/CongestionMath.js#0025:CONGESTION_DEFAULT_CLOCK_GRANULARITY_MS","exportIndex":25,"name":"CONGESTION_DEFAULT_CLOCK_GRANULARITY_MS","kind":"constant","signature":"CONGESTION_DEFAULT_CLOCK_GRANULARITY_MS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/CongestionMath.md","moduleTitle":"core/math/CongestionMath","source":"engine/core/math/CongestionMath.js","import":"/engine/core/math/CongestionMath.js","sourceHash":"d58a15d5319512dbf62f81290b809345cfdb9c47734301a3b02ddf638f7bcf98","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/CongestionMath.js#0026:CONGESTION_CUBIC_BETA","exportIndex":26,"name":"CONGESTION_CUBIC_BETA","kind":"constant","signature":"CONGESTION_CUBIC_BETA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/CongestionMath.md","moduleTitle":"core/math/CongestionMath","source":"engine/core/math/CongestionMath.js","import":"/engine/core/math/CongestionMath.js","sourceHash":"d58a15d5319512dbf62f81290b809345cfdb9c47734301a3b02ddf638f7bcf98","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/CongestionMath.js#0027:CONGESTION_CUBIC_C","exportIndex":27,"name":"CONGESTION_CUBIC_C","kind":"constant","signature":"CONGESTION_CUBIC_C","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ConstraintMath.md","moduleTitle":"core/math/ConstraintMath","source":"engine/core/math/ConstraintMath.js","import":"/engine/core/math/ConstraintMath.js","sourceHash":"e4ec0cf4757fd0ab3124f7d8fc4bd76f591ca89897dae341916fae814c333240","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/ConstraintMath.js","title":"core/math/ConstraintMath","summary":"ConstraintMath.js - pure joint limit, drive, spring, and projection reports.","exportCount":10}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ConstraintMath.md","moduleTitle":"core/math/ConstraintMath","source":"engine/core/math/ConstraintMath.js","import":"/engine/core/math/ConstraintMath.js","sourceHash":"e4ec0cf4757fd0ab3124f7d8fc4bd76f591ca89897dae341916fae814c333240","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ConstraintMath.js#0000:constraintNormalizeAngle","exportIndex":0,"name":"constraintNormalizeAngle","kind":"function","signature":"constraintNormalizeAngle(angle, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ConstraintMath.md","moduleTitle":"core/math/ConstraintMath","source":"engine/core/math/ConstraintMath.js","import":"/engine/core/math/ConstraintMath.js","sourceHash":"e4ec0cf4757fd0ab3124f7d8fc4bd76f591ca89897dae341916fae814c333240","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ConstraintMath.js#0001:constraintAngularLimitReport","exportIndex":1,"name":"constraintAngularLimitReport","kind":"function","signature":"constraintAngularLimitReport(angle, lowerLimit, upperLimit, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ConstraintMath.md","moduleTitle":"core/math/ConstraintMath","source":"engine/core/math/ConstraintMath.js","import":"/engine/core/math/ConstraintMath.js","sourceHash":"e4ec0cf4757fd0ab3124f7d8fc4bd76f591ca89897dae341916fae814c333240","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ConstraintMath.js#0002:constraintAxisStateReport","exportIndex":2,"name":"constraintAxisStateReport","kind":"function","signature":"constraintAxisStateReport(value, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ConstraintMath.md","moduleTitle":"core/math/ConstraintMath","source":"engine/core/math/ConstraintMath.js","import":"/engine/core/math/ConstraintMath.js","sourceHash":"e4ec0cf4757fd0ab3124f7d8fc4bd76f591ca89897dae341916fae814c333240","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ConstraintMath.js#0003:constraintConeLimitReport","exportIndex":3,"name":"constraintConeLimitReport","kind":"function","signature":"constraintConeLimitReport(swingY, swingZ, limitY, limitZ, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ConstraintMath.md","moduleTitle":"core/math/ConstraintMath","source":"engine/core/math/ConstraintMath.js","import":"/engine/core/math/ConstraintMath.js","sourceHash":"e4ec0cf4757fd0ab3124f7d8fc4bd76f591ca89897dae341916fae814c333240","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ConstraintMath.js#0004:constraintSwingTwistLimitReport","exportIndex":4,"name":"constraintSwingTwistLimitReport","kind":"function","signature":"constraintSwingTwistLimitReport(rotation, twistAxis = [1, 0, 0], options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ConstraintMath.md","moduleTitle":"core/math/ConstraintMath","source":"engine/core/math/ConstraintMath.js","import":"/engine/core/math/ConstraintMath.js","sourceHash":"e4ec0cf4757fd0ab3124f7d8fc4bd76f591ca89897dae341916fae814c333240","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ConstraintMath.js#0005:constraintSpringDamperCoefficients","exportIndex":5,"name":"constraintSpringDamperCoefficients","kind":"function","signature":"constraintSpringDamperCoefficients(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ConstraintMath.md","moduleTitle":"core/math/ConstraintMath","source":"engine/core/math/ConstraintMath.js","import":"/engine/core/math/ConstraintMath.js","sourceHash":"e4ec0cf4757fd0ab3124f7d8fc4bd76f591ca89897dae341916fae814c333240","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ConstraintMath.js#0006:constraintMotorTargetErrorReport","exportIndex":6,"name":"constraintMotorTargetErrorReport","kind":"function","signature":"constraintMotorTargetErrorReport(current, target, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ConstraintMath.md","moduleTitle":"core/math/ConstraintMath","source":"engine/core/math/ConstraintMath.js","import":"/engine/core/math/ConstraintMath.js","sourceHash":"e4ec0cf4757fd0ab3124f7d8fc4bd76f591ca89897dae341916fae814c333240","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ConstraintMath.js#0007:constraintJointProjectionErrorReport","exportIndex":7,"name":"constraintJointProjectionErrorReport","kind":"function","signature":"constraintJointProjectionErrorReport(frameA = {}, frameB = {}, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ConstraintMath.md","moduleTitle":"core/math/ConstraintMath","source":"engine/core/math/ConstraintMath.js","import":"/engine/core/math/ConstraintMath.js","sourceHash":"e4ec0cf4757fd0ab3124f7d8fc4bd76f591ca89897dae341916fae814c333240","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ConstraintMath.js#0008:constraintComplianceStiffnessReport","exportIndex":8,"name":"constraintComplianceStiffnessReport","kind":"function","signature":"constraintComplianceStiffnessReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ConstraintMath.md","moduleTitle":"core/math/ConstraintMath","source":"engine/core/math/ConstraintMath.js","import":"/engine/core/math/ConstraintMath.js","sourceHash":"e4ec0cf4757fd0ab3124f7d8fc4bd76f591ca89897dae341916fae814c333240","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ConstraintMath.js#0009:constraintDriveEnvelopeReport","exportIndex":9,"name":"constraintDriveEnvelopeReport","kind":"function","signature":"constraintDriveEnvelopeReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/DOMGeometryMath.md","moduleTitle":"core/math/DOMGeometryMath","source":"engine/core/math/DOMGeometryMath.js","import":"/engine/core/math/DOMGeometryMath.js","sourceHash":"405da373597c057c28b34bfcb44286c26a8b8a64f95f008b3590b18d494f680e","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/DOMGeometryMath.js","title":"core/math/DOMGeometryMath","summary":"DOMGeometryMath.js - DOMPoint, DOMRect, DOMMatrix, and canvas coordinate helpers.","exportCount":17}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/DOMGeometryMath.md","moduleTitle":"core/math/DOMGeometryMath","source":"engine/core/math/DOMGeometryMath.js","import":"/engine/core/math/DOMGeometryMath.js","sourceHash":"405da373597c057c28b34bfcb44286c26a8b8a64f95f008b3590b18d494f680e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/DOMGeometryMath.js#0000:domPointToVec2","exportIndex":0,"name":"domPointToVec2","kind":"function","signature":"domPointToVec2(point, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/DOMGeometryMath.md","moduleTitle":"core/math/DOMGeometryMath","source":"engine/core/math/DOMGeometryMath.js","import":"/engine/core/math/DOMGeometryMath.js","sourceHash":"405da373597c057c28b34bfcb44286c26a8b8a64f95f008b3590b18d494f680e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/DOMGeometryMath.js#0001:domPointToVec4","exportIndex":1,"name":"domPointToVec4","kind":"function","signature":"domPointToVec4(point, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/DOMGeometryMath.md","moduleTitle":"core/math/DOMGeometryMath","source":"engine/core/math/DOMGeometryMath.js","import":"/engine/core/math/DOMGeometryMath.js","sourceHash":"405da373597c057c28b34bfcb44286c26a8b8a64f95f008b3590b18d494f680e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/DOMGeometryMath.js#0002:domRectNormalize","exportIndex":2,"name":"domRectNormalize","kind":"function","signature":"domRectNormalize(rect = {}, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/DOMGeometryMath.md","moduleTitle":"core/math/DOMGeometryMath","source":"engine/core/math/DOMGeometryMath.js","import":"/engine/core/math/DOMGeometryMath.js","sourceHash":"405da373597c057c28b34bfcb44286c26a8b8a64f95f008b3590b18d494f680e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/DOMGeometryMath.js#0003:domMatrix2DFromInit","exportIndex":3,"name":"domMatrix2DFromInit","kind":"function","signature":"domMatrix2DFromInit(init = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/DOMGeometryMath.md","moduleTitle":"core/math/DOMGeometryMath","source":"engine/core/math/DOMGeometryMath.js","import":"/engine/core/math/DOMGeometryMath.js","sourceHash":"405da373597c057c28b34bfcb44286c26a8b8a64f95f008b3590b18d494f680e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/DOMGeometryMath.js#0004:domMatrixToColumnMajor4","exportIndex":4,"name":"domMatrixToColumnMajor4","kind":"function","signature":"domMatrixToColumnMajor4(init = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/DOMGeometryMath.md","moduleTitle":"core/math/DOMGeometryMath","source":"engine/core/math/DOMGeometryMath.js","import":"/engine/core/math/DOMGeometryMath.js","sourceHash":"405da373597c057c28b34bfcb44286c26a8b8a64f95f008b3590b18d494f680e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/DOMGeometryMath.js#0005:columnMajor4ToDomMatrix","exportIndex":5,"name":"columnMajor4ToDomMatrix","kind":"function","signature":"columnMajor4ToDomMatrix(matrix = IDENTITY_COLUMN_MAJOR_4)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/DOMGeometryMath.md","moduleTitle":"core/math/DOMGeometryMath","source":"engine/core/math/DOMGeometryMath.js","import":"/engine/core/math/DOMGeometryMath.js","sourceHash":"405da373597c057c28b34bfcb44286c26a8b8a64f95f008b3590b18d494f680e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/DOMGeometryMath.js#0006:domMatrixTransformPoint","exportIndex":6,"name":"domMatrixTransformPoint","kind":"function","signature":"domMatrixTransformPoint(point, matrixInit = IDENTITY_COLUMN_MAJOR_4)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/DOMGeometryMath.md","moduleTitle":"core/math/DOMGeometryMath","source":"engine/core/math/DOMGeometryMath.js","import":"/engine/core/math/DOMGeometryMath.js","sourceHash":"405da373597c057c28b34bfcb44286c26a8b8a64f95f008b3590b18d494f680e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/DOMGeometryMath.js#0007:domRectTransformBounds","exportIndex":7,"name":"domRectTransformBounds","kind":"function","signature":"domRectTransformBounds(rect, matrixInit = IDENTITY_COLUMN_MAJOR_4, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/DOMGeometryMath.md","moduleTitle":"core/math/DOMGeometryMath","source":"engine/core/math/DOMGeometryMath.js","import":"/engine/core/math/DOMGeometryMath.js","sourceHash":"405da373597c057c28b34bfcb44286c26a8b8a64f95f008b3590b18d494f680e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/DOMGeometryMath.js#0008:domQuadBoundsReport","exportIndex":8,"name":"domQuadBoundsReport","kind":"function","signature":"domQuadBoundsReport(quad = {}, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/DOMGeometryMath.md","moduleTitle":"core/math/DOMGeometryMath","source":"engine/core/math/DOMGeometryMath.js","import":"/engine/core/math/DOMGeometryMath.js","sourceHash":"405da373597c057c28b34bfcb44286c26a8b8a64f95f008b3590b18d494f680e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/DOMGeometryMath.js#0009:domQuadTransformBounds","exportIndex":9,"name":"domQuadTransformBounds","kind":"function","signature":"domQuadTransformBounds(quad = {}, matrixInit = IDENTITY_COLUMN_MAJOR_4, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/DOMGeometryMath.md","moduleTitle":"core/math/DOMGeometryMath","source":"engine/core/math/DOMGeometryMath.js","import":"/engine/core/math/DOMGeometryMath.js","sourceHash":"405da373597c057c28b34bfcb44286c26a8b8a64f95f008b3590b18d494f680e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/DOMGeometryMath.js#0010:domMatrixInverse2DReport","exportIndex":10,"name":"domMatrixInverse2DReport","kind":"function","signature":"domMatrixInverse2DReport(matrixInit = IDENTITY_COLUMN_MAJOR_4)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/DOMGeometryMath.md","moduleTitle":"core/math/DOMGeometryMath","source":"engine/core/math/DOMGeometryMath.js","import":"/engine/core/math/DOMGeometryMath.js","sourceHash":"405da373597c057c28b34bfcb44286c26a8b8a64f95f008b3590b18d494f680e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/DOMGeometryMath.js#0011:canvasBackingStoreReport","exportIndex":11,"name":"canvasBackingStoreReport","kind":"function","signature":"canvasBackingStoreReport(cssWidth, cssHeight, devicePixelRatio = 1, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/DOMGeometryMath.md","moduleTitle":"core/math/DOMGeometryMath","source":"engine/core/math/DOMGeometryMath.js","import":"/engine/core/math/DOMGeometryMath.js","sourceHash":"405da373597c057c28b34bfcb44286c26a8b8a64f95f008b3590b18d494f680e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/DOMGeometryMath.js#0012:domScrollCoordinateReport","exportIndex":12,"name":"domScrollCoordinateReport","kind":"function","signature":"domScrollCoordinateReport(point = {}, viewport = {}, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/DOMGeometryMath.md","moduleTitle":"core/math/DOMGeometryMath","source":"engine/core/math/DOMGeometryMath.js","import":"/engine/core/math/DOMGeometryMath.js","sourceHash":"405da373597c057c28b34bfcb44286c26a8b8a64f95f008b3590b18d494f680e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/DOMGeometryMath.js#0013:canvasPointerCssPoint","exportIndex":13,"name":"canvasPointerCssPoint","kind":"function","signature":"canvasPointerCssPoint(event = {}, rect = {}, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/DOMGeometryMath.md","moduleTitle":"core/math/DOMGeometryMath","source":"engine/core/math/DOMGeometryMath.js","import":"/engine/core/math/DOMGeometryMath.js","sourceHash":"405da373597c057c28b34bfcb44286c26a8b8a64f95f008b3590b18d494f680e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/DOMGeometryMath.js#0014:canvasPointerWorldPoint","exportIndex":14,"name":"canvasPointerWorldPoint","kind":"function","signature":"canvasPointerWorldPoint(event = {}, rect = {}, matrixInit = IDENTITY_COLUMN_MAJOR_4, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/DOMGeometryMath.md","moduleTitle":"core/math/DOMGeometryMath","source":"engine/core/math/DOMGeometryMath.js","import":"/engine/core/math/DOMGeometryMath.js","sourceHash":"405da373597c057c28b34bfcb44286c26a8b8a64f95f008b3590b18d494f680e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/DOMGeometryMath.js#0015:canvasPointerDevicePoint","exportIndex":15,"name":"canvasPointerDevicePoint","kind":"function","signature":"canvasPointerDevicePoint(event = {}, rect = {}, canvasOrScale = {}, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/DOMGeometryMath.md","moduleTitle":"core/math/DOMGeometryMath","source":"engine/core/math/DOMGeometryMath.js","import":"/engine/core/math/DOMGeometryMath.js","sourceHash":"405da373597c057c28b34bfcb44286c26a8b8a64f95f008b3590b18d494f680e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/DOMGeometryMath.js#0016:domGeometryInteropReport","exportIndex":16,"name":"domGeometryInteropReport","kind":"function","signature":"domGeometryInteropReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/EngineMath.md","moduleTitle":"core/math/EngineMath","source":"engine/core/math/EngineMath.js","import":"/engine/core/math/EngineMath.js","sourceHash":"2a73f494ca99e24c8fa1c70f29978dd5ba79f575eef13add0c5bfe55cbf9af1e","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/EngineMath.js","title":"core/math/EngineMath","summary":"EngineMath - basic 3D vector and matrix helpers shared across engine and tests Pure math, no rendering or platform side effects.","exportCount":28}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/EngineMath.md","moduleTitle":"core/math/EngineMath","source":"engine/core/math/EngineMath.js","import":"/engine/core/math/EngineMath.js","sourceHash":"2a73f494ca99e24c8fa1c70f29978dd5ba79f575eef13add0c5bfe55cbf9af1e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/EngineMath.js#0000:quatRotateVec3","exportIndex":0,"name":"quatRotateVec3","kind":"function","signature":"quatRotateVec3(v, q)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/EngineMath.md","moduleTitle":"core/math/EngineMath","source":"engine/core/math/EngineMath.js","import":"/engine/core/math/EngineMath.js","sourceHash":"2a73f494ca99e24c8fa1c70f29978dd5ba79f575eef13add0c5bfe55cbf9af1e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/EngineMath.js#0001:quatConjugate","exportIndex":1,"name":"quatConjugate","kind":"function","signature":"quatConjugate(q)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/EngineMath.md","moduleTitle":"core/math/EngineMath","source":"engine/core/math/EngineMath.js","import":"/engine/core/math/EngineMath.js","sourceHash":"2a73f494ca99e24c8fa1c70f29978dd5ba79f575eef13add0c5bfe55cbf9af1e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/EngineMath.js#0002:quatNormalize","exportIndex":2,"name":"quatNormalize","kind":"function","signature":"quatNormalize(q)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/EngineMath.md","moduleTitle":"core/math/EngineMath","source":"engine/core/math/EngineMath.js","import":"/engine/core/math/EngineMath.js","sourceHash":"2a73f494ca99e24c8fa1c70f29978dd5ba79f575eef13add0c5bfe55cbf9af1e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/EngineMath.js#0003:quatMultiply","exportIndex":3,"name":"quatMultiply","kind":"function","signature":"quatMultiply(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/EngineMath.md","moduleTitle":"core/math/EngineMath","source":"engine/core/math/EngineMath.js","import":"/engine/core/math/EngineMath.js","sourceHash":"2a73f494ca99e24c8fa1c70f29978dd5ba79f575eef13add0c5bfe55cbf9af1e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/EngineMath.js#0004:quatInverse","exportIndex":4,"name":"quatInverse","kind":"function","signature":"quatInverse(q)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/EngineMath.md","moduleTitle":"core/math/EngineMath","source":"engine/core/math/EngineMath.js","import":"/engine/core/math/EngineMath.js","sourceHash":"2a73f494ca99e24c8fa1c70f29978dd5ba79f575eef13add0c5bfe55cbf9af1e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/EngineMath.js#0005:mat4Identity","exportIndex":5,"name":"mat4Identity","kind":"function","signature":"mat4Identity()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/EngineMath.md","moduleTitle":"core/math/EngineMath","source":"engine/core/math/EngineMath.js","import":"/engine/core/math/EngineMath.js","sourceHash":"2a73f494ca99e24c8fa1c70f29978dd5ba79f575eef13add0c5bfe55cbf9af1e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/EngineMath.js#0006:mat4Multiply","exportIndex":6,"name":"mat4Multiply","kind":"function","signature":"mat4Multiply(a, b, out)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/EngineMath.md","moduleTitle":"core/math/EngineMath","source":"engine/core/math/EngineMath.js","import":"/engine/core/math/EngineMath.js","sourceHash":"2a73f494ca99e24c8fa1c70f29978dd5ba79f575eef13add0c5bfe55cbf9af1e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/EngineMath.js#0007:mat4Translate","exportIndex":7,"name":"mat4Translate","kind":"function","signature":"mat4Translate(m, x, y, z)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/EngineMath.md","moduleTitle":"core/math/EngineMath","source":"engine/core/math/EngineMath.js","import":"/engine/core/math/EngineMath.js","sourceHash":"2a73f494ca99e24c8fa1c70f29978dd5ba79f575eef13add0c5bfe55cbf9af1e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/EngineMath.js#0008:mat4Scale","exportIndex":8,"name":"mat4Scale","kind":"function","signature":"mat4Scale(m, sx, sy, sz)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/EngineMath.md","moduleTitle":"core/math/EngineMath","source":"engine/core/math/EngineMath.js","import":"/engine/core/math/EngineMath.js","sourceHash":"2a73f494ca99e24c8fa1c70f29978dd5ba79f575eef13add0c5bfe55cbf9af1e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/EngineMath.js#0009:mat4PerspectiveRad","exportIndex":9,"name":"mat4PerspectiveRad","kind":"function","signature":"mat4PerspectiveRad(fovRad, aspect, near, far)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/EngineMath.md","moduleTitle":"core/math/EngineMath","source":"engine/core/math/EngineMath.js","import":"/engine/core/math/EngineMath.js","sourceHash":"2a73f494ca99e24c8fa1c70f29978dd5ba79f575eef13add0c5bfe55cbf9af1e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/EngineMath.js#0010:mat4PerspectiveRadWebGPU","exportIndex":10,"name":"mat4PerspectiveRadWebGPU","kind":"function","signature":"mat4PerspectiveRadWebGPU(fovRad, aspect, near, far)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/EngineMath.md","moduleTitle":"core/math/EngineMath","source":"engine/core/math/EngineMath.js","import":"/engine/core/math/EngineMath.js","sourceHash":"2a73f494ca99e24c8fa1c70f29978dd5ba79f575eef13add0c5bfe55cbf9af1e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/EngineMath.js#0011:mat4PerspectiveDeg","exportIndex":11,"name":"mat4PerspectiveDeg","kind":"function","signature":"mat4PerspectiveDeg(fovDeg, aspect, near, far)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/EngineMath.md","moduleTitle":"core/math/EngineMath","source":"engine/core/math/EngineMath.js","import":"/engine/core/math/EngineMath.js","sourceHash":"2a73f494ca99e24c8fa1c70f29978dd5ba79f575eef13add0c5bfe55cbf9af1e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/EngineMath.js#0012:mat4PerspectiveDegWebGPU","exportIndex":12,"name":"mat4PerspectiveDegWebGPU","kind":"function","signature":"mat4PerspectiveDegWebGPU(fovDeg, aspect, near, far)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/EngineMath.md","moduleTitle":"core/math/EngineMath","source":"engine/core/math/EngineMath.js","import":"/engine/core/math/EngineMath.js","sourceHash":"2a73f494ca99e24c8fa1c70f29978dd5ba79f575eef13add0c5bfe55cbf9af1e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/EngineMath.js#0013:mat4Orthographic","exportIndex":13,"name":"mat4Orthographic","kind":"function","signature":"mat4Orthographic(left, right, bottom, top, near, far)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/EngineMath.md","moduleTitle":"core/math/EngineMath","source":"engine/core/math/EngineMath.js","import":"/engine/core/math/EngineMath.js","sourceHash":"2a73f494ca99e24c8fa1c70f29978dd5ba79f575eef13add0c5bfe55cbf9af1e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/EngineMath.js#0014:mat4OrthographicWebGPU","exportIndex":14,"name":"mat4OrthographicWebGPU","kind":"function","signature":"mat4OrthographicWebGPU(left, right, bottom, top, near, far)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/EngineMath.md","moduleTitle":"core/math/EngineMath","source":"engine/core/math/EngineMath.js","import":"/engine/core/math/EngineMath.js","sourceHash":"2a73f494ca99e24c8fa1c70f29978dd5ba79f575eef13add0c5bfe55cbf9af1e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/EngineMath.js#0015:mat4LookAt","exportIndex":15,"name":"mat4LookAt","kind":"function","signature":"mat4LookAt(eye, center, up)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/EngineMath.md","moduleTitle":"core/math/EngineMath","source":"engine/core/math/EngineMath.js","import":"/engine/core/math/EngineMath.js","sourceHash":"2a73f494ca99e24c8fa1c70f29978dd5ba79f575eef13add0c5bfe55cbf9af1e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/EngineMath.js#0016:mat4Inverse","exportIndex":16,"name":"mat4Inverse","kind":"function","signature":"mat4Inverse(m, out)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/EngineMath.md","moduleTitle":"core/math/EngineMath","source":"engine/core/math/EngineMath.js","import":"/engine/core/math/EngineMath.js","sourceHash":"2a73f494ca99e24c8fa1c70f29978dd5ba79f575eef13add0c5bfe55cbf9af1e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/EngineMath.js#0017:mat4FromRotationTranslation","exportIndex":17,"name":"mat4FromRotationTranslation","kind":"function","signature":"mat4FromRotationTranslation(q, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/EngineMath.md","moduleTitle":"core/math/EngineMath","source":"engine/core/math/EngineMath.js","import":"/engine/core/math/EngineMath.js","sourceHash":"2a73f494ca99e24c8fa1c70f29978dd5ba79f575eef13add0c5bfe55cbf9af1e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/EngineMath.js#0018:vec3","exportIndex":18,"name":"vec3","kind":"re-export","signature":"vec3","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/EngineMath.md","moduleTitle":"core/math/EngineMath","source":"engine/core/math/EngineMath.js","import":"/engine/core/math/EngineMath.js","sourceHash":"2a73f494ca99e24c8fa1c70f29978dd5ba79f575eef13add0c5bfe55cbf9af1e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/EngineMath.js#0019:vec3Add","exportIndex":19,"name":"vec3Add","kind":"re-export","signature":"vec3Add","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/EngineMath.md","moduleTitle":"core/math/EngineMath","source":"engine/core/math/EngineMath.js","import":"/engine/core/math/EngineMath.js","sourceHash":"2a73f494ca99e24c8fa1c70f29978dd5ba79f575eef13add0c5bfe55cbf9af1e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/EngineMath.js#0020:vec3Cross","exportIndex":20,"name":"vec3Cross","kind":"re-export","signature":"vec3Cross","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/EngineMath.md","moduleTitle":"core/math/EngineMath","source":"engine/core/math/EngineMath.js","import":"/engine/core/math/EngineMath.js","sourceHash":"2a73f494ca99e24c8fa1c70f29978dd5ba79f575eef13add0c5bfe55cbf9af1e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/EngineMath.js#0021:vec3Dot","exportIndex":21,"name":"vec3Dot","kind":"re-export","signature":"vec3Dot","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/EngineMath.md","moduleTitle":"core/math/EngineMath","source":"engine/core/math/EngineMath.js","import":"/engine/core/math/EngineMath.js","sourceHash":"2a73f494ca99e24c8fa1c70f29978dd5ba79f575eef13add0c5bfe55cbf9af1e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/EngineMath.js#0022:vec3Length","exportIndex":22,"name":"vec3Length","kind":"re-export","signature":"vec3Length","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/EngineMath.md","moduleTitle":"core/math/EngineMath","source":"engine/core/math/EngineMath.js","import":"/engine/core/math/EngineMath.js","sourceHash":"2a73f494ca99e24c8fa1c70f29978dd5ba79f575eef13add0c5bfe55cbf9af1e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/EngineMath.js#0023:vec3LengthSq","exportIndex":23,"name":"vec3LengthSq","kind":"re-export","signature":"vec3LengthSq","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/EngineMath.md","moduleTitle":"core/math/EngineMath","source":"engine/core/math/EngineMath.js","import":"/engine/core/math/EngineMath.js","sourceHash":"2a73f494ca99e24c8fa1c70f29978dd5ba79f575eef13add0c5bfe55cbf9af1e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/EngineMath.js#0024:vec3Lerp","exportIndex":24,"name":"vec3Lerp","kind":"re-export","signature":"vec3Lerp","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/EngineMath.md","moduleTitle":"core/math/EngineMath","source":"engine/core/math/EngineMath.js","import":"/engine/core/math/EngineMath.js","sourceHash":"2a73f494ca99e24c8fa1c70f29978dd5ba79f575eef13add0c5bfe55cbf9af1e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/EngineMath.js#0025:vec3Normalize","exportIndex":25,"name":"vec3Normalize","kind":"re-export","signature":"vec3Normalize","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/EngineMath.md","moduleTitle":"core/math/EngineMath","source":"engine/core/math/EngineMath.js","import":"/engine/core/math/EngineMath.js","sourceHash":"2a73f494ca99e24c8fa1c70f29978dd5ba79f575eef13add0c5bfe55cbf9af1e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/EngineMath.js#0026:vec3Scale","exportIndex":26,"name":"vec3Scale","kind":"re-export","signature":"vec3Scale","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/EngineMath.md","moduleTitle":"core/math/EngineMath","source":"engine/core/math/EngineMath.js","import":"/engine/core/math/EngineMath.js","sourceHash":"2a73f494ca99e24c8fa1c70f29978dd5ba79f575eef13add0c5bfe55cbf9af1e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/EngineMath.js#0027:vec3Sub","exportIndex":27,"name":"vec3Sub","kind":"re-export","signature":"vec3Sub","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FilterMath.md","moduleTitle":"core/math/FilterMath","source":"engine/core/math/FilterMath.js","import":"/engine/core/math/FilterMath.js","sourceHash":"27ff1ab18a8e38148b0794ff2b8a5de0daa9447f9ca67b80ecc3b2b8daf53d8c","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/FilterMath.js","title":"core/math/FilterMath","summary":"FilterMath.js - reusable filter kernel, signal FIR, and CPU RGBA convolution helpers.","exportCount":15}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FilterMath.md","moduleTitle":"core/math/FilterMath","source":"engine/core/math/FilterMath.js","import":"/engine/core/math/FilterMath.js","sourceHash":"27ff1ab18a8e38148b0794ff2b8a5de0daa9447f9ca67b80ecc3b2b8daf53d8c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FilterMath.js#0000:filterKernelReport","exportIndex":0,"name":"filterKernelReport","kind":"function","signature":"filterKernelReport(kernel, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FilterMath.md","moduleTitle":"core/math/FilterMath","source":"engine/core/math/FilterMath.js","import":"/engine/core/math/FilterMath.js","sourceHash":"27ff1ab18a8e38148b0794ff2b8a5de0daa9447f9ca67b80ecc3b2b8daf53d8c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FilterMath.js#0001:normalizeFilterKernel","exportIndex":1,"name":"normalizeFilterKernel","kind":"function","signature":"normalizeFilterKernel(kernel, targetSum = 1, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FilterMath.md","moduleTitle":"core/math/FilterMath","source":"engine/core/math/FilterMath.js","import":"/engine/core/math/FilterMath.js","sourceHash":"27ff1ab18a8e38148b0794ff2b8a5de0daa9447f9ca67b80ecc3b2b8daf53d8c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FilterMath.js#0002:boxFilterKernel1D","exportIndex":2,"name":"boxFilterKernel1D","kind":"function","signature":"boxFilterKernel1D(radius = 1, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FilterMath.md","moduleTitle":"core/math/FilterMath","source":"engine/core/math/FilterMath.js","import":"/engine/core/math/FilterMath.js","sourceHash":"27ff1ab18a8e38148b0794ff2b8a5de0daa9447f9ca67b80ecc3b2b8daf53d8c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FilterMath.js#0003:gaussianFilterKernel1D","exportIndex":3,"name":"gaussianFilterKernel1D","kind":"function","signature":"gaussianFilterKernel1D(radius = 1, sigma = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FilterMath.md","moduleTitle":"core/math/FilterMath","source":"engine/core/math/FilterMath.js","import":"/engine/core/math/FilterMath.js","sourceHash":"27ff1ab18a8e38148b0794ff2b8a5de0daa9447f9ca67b80ecc3b2b8daf53d8c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FilterMath.js#0004:gaussianFilterKernel2D","exportIndex":4,"name":"gaussianFilterKernel2D","kind":"function","signature":"gaussianFilterKernel2D(radius = 1, sigma = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FilterMath.md","moduleTitle":"core/math/FilterMath","source":"engine/core/math/FilterMath.js","import":"/engine/core/math/FilterMath.js","sourceHash":"27ff1ab18a8e38148b0794ff2b8a5de0daa9447f9ca67b80ecc3b2b8daf53d8c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FilterMath.js#0005:filterKernelPreset","exportIndex":5,"name":"filterKernelPreset","kind":"function","signature":"filterKernelPreset(name)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FilterMath.md","moduleTitle":"core/math/FilterMath","source":"engine/core/math/FilterMath.js","import":"/engine/core/math/FilterMath.js","sourceHash":"27ff1ab18a8e38148b0794ff2b8a5de0daa9447f9ca67b80ecc3b2b8daf53d8c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FilterMath.js#0006:filterSignalFIR","exportIndex":6,"name":"filterSignalFIR","kind":"function","signature":"filterSignalFIR(signal, kernel, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FilterMath.md","moduleTitle":"core/math/FilterMath","source":"engine/core/math/FilterMath.js","import":"/engine/core/math/FilterMath.js","sourceHash":"27ff1ab18a8e38148b0794ff2b8a5de0daa9447f9ca67b80ecc3b2b8daf53d8c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FilterMath.js#0007:filterSignalMedian","exportIndex":7,"name":"filterSignalMedian","kind":"function","signature":"filterSignalMedian(signal, windowSize = 3)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FilterMath.md","moduleTitle":"core/math/FilterMath","source":"engine/core/math/FilterMath.js","import":"/engine/core/math/FilterMath.js","sourceHash":"27ff1ab18a8e38148b0794ff2b8a5de0daa9447f9ca67b80ecc3b2b8daf53d8c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FilterMath.js#0008:filterSignalTemporalSmooth","exportIndex":8,"name":"filterSignalTemporalSmooth","kind":"function","signature":"filterSignalTemporalSmooth(signal, alpha = 0.5)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FilterMath.md","moduleTitle":"core/math/FilterMath","source":"engine/core/math/FilterMath.js","import":"/engine/core/math/FilterMath.js","sourceHash":"27ff1ab18a8e38148b0794ff2b8a5de0daa9447f9ca67b80ecc3b2b8daf53d8c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FilterMath.js#0009:filterSignalNoiseReduce","exportIndex":9,"name":"filterSignalNoiseReduce","kind":"function","signature":"filterSignalNoiseReduce(signal, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FilterMath.md","moduleTitle":"core/math/FilterMath","source":"engine/core/math/FilterMath.js","import":"/engine/core/math/FilterMath.js","sourceHash":"27ff1ab18a8e38148b0794ff2b8a5de0daa9447f9ca67b80ecc3b2b8daf53d8c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FilterMath.js#0010:filterImageConvolutionRgba","exportIndex":10,"name":"filterImageConvolutionRgba","kind":"function","signature":"filterImageConvolutionRgba(image, kernelSpec, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FilterMath.md","moduleTitle":"core/math/FilterMath","source":"engine/core/math/FilterMath.js","import":"/engine/core/math/FilterMath.js","sourceHash":"27ff1ab18a8e38148b0794ff2b8a5de0daa9447f9ca67b80ecc3b2b8daf53d8c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FilterMath.js#0011:filterImageMorphologyRgba","exportIndex":11,"name":"filterImageMorphologyRgba","kind":"function","signature":"filterImageMorphologyRgba(image, operator = 'dilate', radius = 1, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FilterMath.md","moduleTitle":"core/math/FilterMath","source":"engine/core/math/FilterMath.js","import":"/engine/core/math/FilterMath.js","sourceHash":"27ff1ab18a8e38148b0794ff2b8a5de0daa9447f9ca67b80ecc3b2b8daf53d8c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FilterMath.js#0012:filterImageDilateRgba","exportIndex":12,"name":"filterImageDilateRgba","kind":"function","signature":"filterImageDilateRgba(image, radius = 1, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FilterMath.md","moduleTitle":"core/math/FilterMath","source":"engine/core/math/FilterMath.js","import":"/engine/core/math/FilterMath.js","sourceHash":"27ff1ab18a8e38148b0794ff2b8a5de0daa9447f9ca67b80ecc3b2b8daf53d8c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FilterMath.js#0013:filterImageErodeRgba","exportIndex":13,"name":"filterImageErodeRgba","kind":"function","signature":"filterImageErodeRgba(image, radius = 1, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FilterMath.md","moduleTitle":"core/math/FilterMath","source":"engine/core/math/FilterMath.js","import":"/engine/core/math/FilterMath.js","sourceHash":"27ff1ab18a8e38148b0794ff2b8a5de0daa9447f9ca67b80ecc3b2b8daf53d8c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FilterMath.js#0014:FILTER_IMAGE_EDGE_MODES","exportIndex":14,"name":"FILTER_IMAGE_EDGE_MODES","kind":"constant","signature":"FILTER_IMAGE_EDGE_MODES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FormatMath.md","moduleTitle":"core/math/FormatMath","source":"engine/core/math/FormatMath.js","import":"/engine/core/math/FormatMath.js","sourceHash":"10e004f8205995967fb4bc2336bfb8e499e0b7b1b30f7c4495fbe722199e87cd","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/FormatMath.js","title":"core/math/FormatMath","summary":"FormatMath.js - reusable signatures, MIME helpers, SemVer, text ranges, token cursors, and chunk tables.","exportCount":25}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FormatMath.md","moduleTitle":"core/math/FormatMath","source":"engine/core/math/FormatMath.js","import":"/engine/core/math/FormatMath.js","sourceHash":"10e004f8205995967fb4bc2336bfb8e499e0b7b1b30f7c4495fbe722199e87cd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FormatMath.js#0000:TokenCursor","exportIndex":0,"name":"TokenCursor","kind":"class","signature":"class TokenCursor","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FormatMath.md","moduleTitle":"core/math/FormatMath","source":"engine/core/math/FormatMath.js","import":"/engine/core/math/FormatMath.js","sourceHash":"10e004f8205995967fb4bc2336bfb8e499e0b7b1b30f7c4495fbe722199e87cd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FormatMath.js#0001:byteSignature","exportIndex":1,"name":"byteSignature","kind":"function","signature":"byteSignature(data, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FormatMath.md","moduleTitle":"core/math/FormatMath","source":"engine/core/math/FormatMath.js","import":"/engine/core/math/FormatMath.js","sourceHash":"10e004f8205995967fb4bc2336bfb8e499e0b7b1b30f7c4495fbe722199e87cd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FormatMath.js#0002:hexToBytes","exportIndex":2,"name":"hexToBytes","kind":"function","signature":"hexToBytes(hex, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FormatMath.md","moduleTitle":"core/math/FormatMath","source":"engine/core/math/FormatMath.js","import":"/engine/core/math/FormatMath.js","sourceHash":"10e004f8205995967fb4bc2336bfb8e499e0b7b1b30f7c4495fbe722199e87cd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FormatMath.js#0003:magicNumberDetect","exportIndex":3,"name":"magicNumberDetect","kind":"function","signature":"magicNumberDetect(data, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FormatMath.md","moduleTitle":"core/math/FormatMath","source":"engine/core/math/FormatMath.js","import":"/engine/core/math/FormatMath.js","sourceHash":"10e004f8205995967fb4bc2336bfb8e499e0b7b1b30f7c4495fbe722199e87cd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FormatMath.js#0004:formatExtensionFromPath","exportIndex":4,"name":"formatExtensionFromPath","kind":"function","signature":"formatExtensionFromPath(pathOrExtension)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FormatMath.md","moduleTitle":"core/math/FormatMath","source":"engine/core/math/FormatMath.js","import":"/engine/core/math/FormatMath.js","sourceHash":"10e004f8205995967fb4bc2336bfb8e499e0b7b1b30f7c4495fbe722199e87cd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FormatMath.js#0005:formatMimeFromExtension","exportIndex":5,"name":"formatMimeFromExtension","kind":"function","signature":"formatMimeFromExtension(pathOrExtension, fallback = DEFAULT_MIME_TYPE)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FormatMath.md","moduleTitle":"core/math/FormatMath","source":"engine/core/math/FormatMath.js","import":"/engine/core/math/FormatMath.js","sourceHash":"10e004f8205995967fb4bc2336bfb8e499e0b7b1b30f7c4495fbe722199e87cd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FormatMath.js#0006:parseMimeType","exportIndex":6,"name":"parseMimeType","kind":"function","signature":"parseMimeType(input)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FormatMath.md","moduleTitle":"core/math/FormatMath","source":"engine/core/math/FormatMath.js","import":"/engine/core/math/FormatMath.js","sourceHash":"10e004f8205995967fb4bc2336bfb8e499e0b7b1b30f7c4495fbe722199e87cd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FormatMath.js#0007:mimeTypeGroupReport","exportIndex":7,"name":"mimeTypeGroupReport","kind":"function","signature":"mimeTypeGroupReport(input)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FormatMath.md","moduleTitle":"core/math/FormatMath","source":"engine/core/math/FormatMath.js","import":"/engine/core/math/FormatMath.js","sourceHash":"10e004f8205995967fb4bc2336bfb8e499e0b7b1b30f7c4495fbe722199e87cd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FormatMath.js#0008:formatMimeSniff","exportIndex":8,"name":"formatMimeSniff","kind":"function","signature":"formatMimeSniff(data, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FormatMath.md","moduleTitle":"core/math/FormatMath","source":"engine/core/math/FormatMath.js","import":"/engine/core/math/FormatMath.js","sourceHash":"10e004f8205995967fb4bc2336bfb8e499e0b7b1b30f7c4495fbe722199e87cd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FormatMath.js#0009:formatAcceptListReport","exportIndex":9,"name":"formatAcceptListReport","kind":"function","signature":"formatAcceptListReport(accept)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FormatMath.md","moduleTitle":"core/math/FormatMath","source":"engine/core/math/FormatMath.js","import":"/engine/core/math/FormatMath.js","sourceHash":"10e004f8205995967fb4bc2336bfb8e499e0b7b1b30f7c4495fbe722199e87cd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FormatMath.js#0010:formatAcceptMatchReport","exportIndex":10,"name":"formatAcceptMatchReport","kind":"function","signature":"formatAcceptMatchReport(file, accept, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FormatMath.md","moduleTitle":"core/math/FormatMath","source":"engine/core/math/FormatMath.js","import":"/engine/core/math/FormatMath.js","sourceHash":"10e004f8205995967fb4bc2336bfb8e499e0b7b1b30f7c4495fbe722199e87cd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FormatMath.js#0011:formatAcceptHeaderReport","exportIndex":11,"name":"formatAcceptHeaderReport","kind":"function","signature":"formatAcceptHeaderReport(acceptHeader, offeredMimeTypes, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FormatMath.md","moduleTitle":"core/math/FormatMath","source":"engine/core/math/FormatMath.js","import":"/engine/core/math/FormatMath.js","sourceHash":"10e004f8205995967fb4bc2336bfb8e499e0b7b1b30f7c4495fbe722199e87cd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FormatMath.js#0012:parseSemanticVersion","exportIndex":12,"name":"parseSemanticVersion","kind":"function","signature":"parseSemanticVersion(version)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FormatMath.md","moduleTitle":"core/math/FormatMath","source":"engine/core/math/FormatMath.js","import":"/engine/core/math/FormatMath.js","sourceHash":"10e004f8205995967fb4bc2336bfb8e499e0b7b1b30f7c4495fbe722199e87cd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FormatMath.js#0013:semanticVersionCompare","exportIndex":13,"name":"semanticVersionCompare","kind":"function","signature":"semanticVersionCompare(leftVersion, rightVersion)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FormatMath.md","moduleTitle":"core/math/FormatMath","source":"engine/core/math/FormatMath.js","import":"/engine/core/math/FormatMath.js","sourceHash":"10e004f8205995967fb4bc2336bfb8e499e0b7b1b30f7c4495fbe722199e87cd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FormatMath.js#0014:semanticVersionRangeReport","exportIndex":14,"name":"semanticVersionRangeReport","kind":"function","signature":"semanticVersionRangeReport(version, range = '*')","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FormatMath.md","moduleTitle":"core/math/FormatMath","source":"engine/core/math/FormatMath.js","import":"/engine/core/math/FormatMath.js","sourceHash":"10e004f8205995967fb4bc2336bfb8e499e0b7b1b30f7c4495fbe722199e87cd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FormatMath.js#0015:formatCompatibilityReport","exportIndex":15,"name":"formatCompatibilityReport","kind":"function","signature":"formatCompatibilityReport(candidate, requirements = {}, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FormatMath.md","moduleTitle":"core/math/FormatMath","source":"engine/core/math/FormatMath.js","import":"/engine/core/math/FormatMath.js","sourceHash":"10e004f8205995967fb4bc2336bfb8e499e0b7b1b30f7c4495fbe722199e87cd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FormatMath.js#0016:versionCompare","exportIndex":16,"name":"versionCompare","kind":"function","signature":"versionCompare(leftVersion, rightVersion)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FormatMath.md","moduleTitle":"core/math/FormatMath","source":"engine/core/math/FormatMath.js","import":"/engine/core/math/FormatMath.js","sourceHash":"10e004f8205995967fb4bc2336bfb8e499e0b7b1b30f7c4495fbe722199e87cd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FormatMath.js#0017:lineColumnMap","exportIndex":17,"name":"lineColumnMap","kind":"function","signature":"lineColumnMap(text)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FormatMath.md","moduleTitle":"core/math/FormatMath","source":"engine/core/math/FormatMath.js","import":"/engine/core/math/FormatMath.js","sourceHash":"10e004f8205995967fb4bc2336bfb8e499e0b7b1b30f7c4495fbe722199e87cd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FormatMath.js#0018:lineColumnAt","exportIndex":18,"name":"lineColumnAt","kind":"function","signature":"lineColumnAt(mapOrText, index)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FormatMath.md","moduleTitle":"core/math/FormatMath","source":"engine/core/math/FormatMath.js","import":"/engine/core/math/FormatMath.js","sourceHash":"10e004f8205995967fb4bc2336bfb8e499e0b7b1b30f7c4495fbe722199e87cd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FormatMath.js#0019:lineColumnToIndex","exportIndex":19,"name":"lineColumnToIndex","kind":"function","signature":"lineColumnToIndex(mapOrText, line, column)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FormatMath.md","moduleTitle":"core/math/FormatMath","source":"engine/core/math/FormatMath.js","import":"/engine/core/math/FormatMath.js","sourceHash":"10e004f8205995967fb4bc2336bfb8e499e0b7b1b30f7c4495fbe722199e87cd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FormatMath.js#0020:rangeSpan","exportIndex":20,"name":"rangeSpan","kind":"function","signature":"rangeSpan(start, end, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FormatMath.md","moduleTitle":"core/math/FormatMath","source":"engine/core/math/FormatMath.js","import":"/engine/core/math/FormatMath.js","sourceHash":"10e004f8205995967fb4bc2336bfb8e499e0b7b1b30f7c4495fbe722199e87cd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FormatMath.js#0021:chunkTableParse","exportIndex":21,"name":"chunkTableParse","kind":"function","signature":"chunkTableParse(data, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FormatMath.md","moduleTitle":"core/math/FormatMath","source":"engine/core/math/FormatMath.js","import":"/engine/core/math/FormatMath.js","sourceHash":"10e004f8205995967fb4bc2336bfb8e499e0b7b1b30f7c4495fbe722199e87cd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FormatMath.js#0022:createTokenCursor","exportIndex":22,"name":"createTokenCursor","kind":"function","signature":"createTokenCursor(text, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FormatMath.md","moduleTitle":"core/math/FormatMath","source":"engine/core/math/FormatMath.js","import":"/engine/core/math/FormatMath.js","sourceHash":"10e004f8205995967fb4bc2336bfb8e499e0b7b1b30f7c4495fbe722199e87cd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FormatMath.js#0023:FORMAT_EXTENSION_MIME_TYPES","exportIndex":23,"name":"FORMAT_EXTENSION_MIME_TYPES","kind":"constant","signature":"FORMAT_EXTENSION_MIME_TYPES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FormatMath.md","moduleTitle":"core/math/FormatMath","source":"engine/core/math/FormatMath.js","import":"/engine/core/math/FormatMath.js","sourceHash":"10e004f8205995967fb4bc2336bfb8e499e0b7b1b30f7c4495fbe722199e87cd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FormatMath.js#0024:MAGIC_NUMBER_SIGNATURES","exportIndex":24,"name":"MAGIC_NUMBER_SIGNATURES","kind":"constant","signature":"MAGIC_NUMBER_SIGNATURES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FrameMath.md","moduleTitle":"core/math/FrameMath","source":"engine/core/math/FrameMath.js","import":"/engine/core/math/FrameMath.js","sourceHash":"b13c853f61ca50f618225929d6f4649b611eae58c41e4e7eb1e68e6a2dabc923","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/FrameMath.js","title":"core/math/FrameMath","summary":"FrameMath.js - pure ImageData-like frame and temporal media math helpers.","exportCount":12}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FrameMath.md","moduleTitle":"core/math/FrameMath","source":"engine/core/math/FrameMath.js","import":"/engine/core/math/FrameMath.js","sourceHash":"b13c853f61ca50f618225929d6f4649b611eae58c41e4e7eb1e68e6a2dabc923","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FrameMath.js#0000:frameDataReport","exportIndex":0,"name":"frameDataReport","kind":"function","signature":"frameDataReport(frame, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FrameMath.md","moduleTitle":"core/math/FrameMath","source":"engine/core/math/FrameMath.js","import":"/engine/core/math/FrameMath.js","sourceHash":"b13c853f61ca50f618225929d6f4649b611eae58c41e4e7eb1e68e6a2dabc923","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FrameMath.js#0001:frameDifferenceReport","exportIndex":1,"name":"frameDifferenceReport","kind":"function","signature":"frameDifferenceReport(referenceFrame, candidateFrame, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FrameMath.md","moduleTitle":"core/math/FrameMath","source":"engine/core/math/FrameMath.js","import":"/engine/core/math/FrameMath.js","sourceHash":"b13c853f61ca50f618225929d6f4649b611eae58c41e4e7eb1e68e6a2dabc923","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FrameMath.js#0002:frameMotionMagnitudeMap","exportIndex":2,"name":"frameMotionMagnitudeMap","kind":"function","signature":"frameMotionMagnitudeMap(referenceFrame, candidateFrame, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FrameMath.md","moduleTitle":"core/math/FrameMath","source":"engine/core/math/FrameMath.js","import":"/engine/core/math/FrameMath.js","sourceHash":"b13c853f61ca50f618225929d6f4649b611eae58c41e4e7eb1e68e6a2dabc923","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FrameMath.js#0003:frameResidualImage","exportIndex":3,"name":"frameResidualImage","kind":"function","signature":"frameResidualImage(referenceFrame, candidateFrame, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FrameMath.md","moduleTitle":"core/math/FrameMath","source":"engine/core/math/FrameMath.js","import":"/engine/core/math/FrameMath.js","sourceHash":"b13c853f61ca50f618225929d6f4649b611eae58c41e4e7eb1e68e6a2dabc923","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FrameMath.js#0004:frameAverageReport","exportIndex":4,"name":"frameAverageReport","kind":"function","signature":"frameAverageReport(frame, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FrameMath.md","moduleTitle":"core/math/FrameMath","source":"engine/core/math/FrameMath.js","import":"/engine/core/math/FrameMath.js","sourceHash":"b13c853f61ca50f618225929d6f4649b611eae58c41e4e7eb1e68e6a2dabc923","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FrameMath.js#0005:frameSceneChangeReport","exportIndex":5,"name":"frameSceneChangeReport","kind":"function","signature":"frameSceneChangeReport(referenceFrame, candidateFrame, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FrameMath.md","moduleTitle":"core/math/FrameMath","source":"engine/core/math/FrameMath.js","import":"/engine/core/math/FrameMath.js","sourceHash":"b13c853f61ca50f618225929d6f4649b611eae58c41e4e7eb1e68e6a2dabc923","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FrameMath.js#0006:frameKeyframeScoreReport","exportIndex":6,"name":"frameKeyframeScoreReport","kind":"function","signature":"frameKeyframeScoreReport(referenceFrame, candidateFrame, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FrameMath.md","moduleTitle":"core/math/FrameMath","source":"engine/core/math/FrameMath.js","import":"/engine/core/math/FrameMath.js","sourceHash":"b13c853f61ca50f618225929d6f4649b611eae58c41e4e7eb1e68e6a2dabc923","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FrameMath.js#0007:frameSequenceDifferenceReport","exportIndex":7,"name":"frameSequenceDifferenceReport","kind":"function","signature":"frameSequenceDifferenceReport(frames, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FrameMath.md","moduleTitle":"core/math/FrameMath","source":"engine/core/math/FrameMath.js","import":"/engine/core/math/FrameMath.js","sourceHash":"b13c853f61ca50f618225929d6f4649b611eae58c41e4e7eb1e68e6a2dabc923","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FrameMath.js#0008:runtimeFrameDeltaSeconds","exportIndex":8,"name":"runtimeFrameDeltaSeconds","kind":"function","signature":"runtimeFrameDeltaSeconds(timestampMs, previousTimestampMs, maxDeltaSeconds = 0.1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FrameMath.md","moduleTitle":"core/math/FrameMath","source":"engine/core/math/FrameMath.js","import":"/engine/core/math/FrameMath.js","sourceHash":"b13c853f61ca50f618225929d6f4649b611eae58c41e4e7eb1e68e6a2dabc923","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FrameMath.js#0009:runtimeMonotonicClockStep","exportIndex":9,"name":"runtimeMonotonicClockStep","kind":"function","signature":"runtimeMonotonicClockStep(timestampMs, previousTimestampMs = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FrameMath.md","moduleTitle":"core/math/FrameMath","source":"engine/core/math/FrameMath.js","import":"/engine/core/math/FrameMath.js","sourceHash":"b13c853f61ca50f618225929d6f4649b611eae58c41e4e7eb1e68e6a2dabc923","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FrameMath.js#0010:frameRateFromDurations","exportIndex":10,"name":"frameRateFromDurations","kind":"function","signature":"frameRateFromDurations(durationsSeconds)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/FrameMath.md","moduleTitle":"core/math/FrameMath","source":"engine/core/math/FrameMath.js","import":"/engine/core/math/FrameMath.js","sourceHash":"b13c853f61ca50f618225929d6f4649b611eae58c41e4e7eb1e68e6a2dabc923","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/FrameMath.js#0011:frameTimingReport","exportIndex":11,"name":"frameTimingReport","kind":"function","signature":"frameTimingReport(frames, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ImageMath.md","moduleTitle":"core/math/ImageMath","source":"engine/core/math/ImageMath.js","import":"/engine/core/math/ImageMath.js","sourceHash":"207282ec98e1bb10425bba85c716479118e92e7304a2c0fb7222fee0bfe9acaf","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/ImageMath.js","title":"core/math/ImageMath","summary":"ImageMath.js - deterministic RGBA/ImageData pixel helpers. These helpers intentionally operate on ImageData-like objects or raw RGBA array data. They do not construct browser ImageData, canvas, bitmap, or GPU resources, so they remain safe for workers and deterministic tests.","exportCount":20}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ImageMath.md","moduleTitle":"core/math/ImageMath","source":"engine/core/math/ImageMath.js","import":"/engine/core/math/ImageMath.js","sourceHash":"207282ec98e1bb10425bba85c716479118e92e7304a2c0fb7222fee0bfe9acaf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ImageMath.js#0000:imageDataReport","exportIndex":0,"name":"imageDataReport","kind":"function","signature":"imageDataReport(image, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ImageMath.md","moduleTitle":"core/math/ImageMath","source":"engine/core/math/ImageMath.js","import":"/engine/core/math/ImageMath.js","sourceHash":"207282ec98e1bb10425bba85c716479118e92e7304a2c0fb7222fee0bfe9acaf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ImageMath.js#0001:imagePixelOffset","exportIndex":1,"name":"imagePixelOffset","kind":"function","signature":"imagePixelOffset(width, x, y, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ImageMath.md","moduleTitle":"core/math/ImageMath","source":"engine/core/math/ImageMath.js","import":"/engine/core/math/ImageMath.js","sourceHash":"207282ec98e1bb10425bba85c716479118e92e7304a2c0fb7222fee0bfe9acaf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ImageMath.js#0002:imageReadPixel","exportIndex":2,"name":"imageReadPixel","kind":"function","signature":"imageReadPixel(image, x, y, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ImageMath.md","moduleTitle":"core/math/ImageMath","source":"engine/core/math/ImageMath.js","import":"/engine/core/math/ImageMath.js","sourceHash":"207282ec98e1bb10425bba85c716479118e92e7304a2c0fb7222fee0bfe9acaf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ImageMath.js#0003:imageWritePixel","exportIndex":3,"name":"imageWritePixel","kind":"function","signature":"imageWritePixel(image, x, y, rgba, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ImageMath.md","moduleTitle":"core/math/ImageMath","source":"engine/core/math/ImageMath.js","import":"/engine/core/math/ImageMath.js","sourceHash":"207282ec98e1bb10425bba85c716479118e92e7304a2c0fb7222fee0bfe9acaf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ImageMath.js#0004:imageSampleNearest","exportIndex":4,"name":"imageSampleNearest","kind":"function","signature":"imageSampleNearest(image, x, y, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ImageMath.md","moduleTitle":"core/math/ImageMath","source":"engine/core/math/ImageMath.js","import":"/engine/core/math/ImageMath.js","sourceHash":"207282ec98e1bb10425bba85c716479118e92e7304a2c0fb7222fee0bfe9acaf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ImageMath.js#0005:imageSampleBilinear","exportIndex":5,"name":"imageSampleBilinear","kind":"function","signature":"imageSampleBilinear(image, x, y, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ImageMath.md","moduleTitle":"core/math/ImageMath","source":"engine/core/math/ImageMath.js","import":"/engine/core/math/ImageMath.js","sourceHash":"207282ec98e1bb10425bba85c716479118e92e7304a2c0fb7222fee0bfe9acaf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ImageMath.js#0006:imageCopyRect","exportIndex":6,"name":"imageCopyRect","kind":"function","signature":"imageCopyRect(image, rect = {}, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ImageMath.md","moduleTitle":"core/math/ImageMath","source":"engine/core/math/ImageMath.js","import":"/engine/core/math/ImageMath.js","sourceHash":"207282ec98e1bb10425bba85c716479118e92e7304a2c0fb7222fee0bfe9acaf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ImageMath.js#0007:imageFlipX","exportIndex":7,"name":"imageFlipX","kind":"function","signature":"imageFlipX(image, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ImageMath.md","moduleTitle":"core/math/ImageMath","source":"engine/core/math/ImageMath.js","import":"/engine/core/math/ImageMath.js","sourceHash":"207282ec98e1bb10425bba85c716479118e92e7304a2c0fb7222fee0bfe9acaf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ImageMath.js#0008:imageFlipY","exportIndex":8,"name":"imageFlipY","kind":"function","signature":"imageFlipY(image, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ImageMath.md","moduleTitle":"core/math/ImageMath","source":"engine/core/math/ImageMath.js","import":"/engine/core/math/ImageMath.js","sourceHash":"207282ec98e1bb10425bba85c716479118e92e7304a2c0fb7222fee0bfe9acaf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ImageMath.js#0009:imageSwizzleRgba","exportIndex":9,"name":"imageSwizzleRgba","kind":"function","signature":"imageSwizzleRgba(image, order = [0, 1, 2, 3], options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ImageMath.md","moduleTitle":"core/math/ImageMath","source":"engine/core/math/ImageMath.js","import":"/engine/core/math/ImageMath.js","sourceHash":"207282ec98e1bb10425bba85c716479118e92e7304a2c0fb7222fee0bfe9acaf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ImageMath.js#0010:imagePremultiplyAlpha","exportIndex":10,"name":"imagePremultiplyAlpha","kind":"function","signature":"imagePremultiplyAlpha(image, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ImageMath.md","moduleTitle":"core/math/ImageMath","source":"engine/core/math/ImageMath.js","import":"/engine/core/math/ImageMath.js","sourceHash":"207282ec98e1bb10425bba85c716479118e92e7304a2c0fb7222fee0bfe9acaf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ImageMath.js#0011:imageUnpremultiplyAlpha","exportIndex":11,"name":"imageUnpremultiplyAlpha","kind":"function","signature":"imageUnpremultiplyAlpha(image, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ImageMath.md","moduleTitle":"core/math/ImageMath","source":"engine/core/math/ImageMath.js","import":"/engine/core/math/ImageMath.js","sourceHash":"207282ec98e1bb10425bba85c716479118e92e7304a2c0fb7222fee0bfe9acaf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ImageMath.js#0012:imageHistogramReport","exportIndex":12,"name":"imageHistogramReport","kind":"function","signature":"imageHistogramReport(image, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ImageMath.md","moduleTitle":"core/math/ImageMath","source":"engine/core/math/ImageMath.js","import":"/engine/core/math/ImageMath.js","sourceHash":"207282ec98e1bb10425bba85c716479118e92e7304a2c0fb7222fee0bfe9acaf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ImageMath.js#0013:imageAverageColor","exportIndex":13,"name":"imageAverageColor","kind":"function","signature":"imageAverageColor(image, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ImageMath.md","moduleTitle":"core/math/ImageMath","source":"engine/core/math/ImageMath.js","import":"/engine/core/math/ImageMath.js","sourceHash":"207282ec98e1bb10425bba85c716479118e92e7304a2c0fb7222fee0bfe9acaf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ImageMath.js#0014:imageLuminanceMap","exportIndex":14,"name":"imageLuminanceMap","kind":"function","signature":"imageLuminanceMap(image, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ImageMath.md","moduleTitle":"core/math/ImageMath","source":"engine/core/math/ImageMath.js","import":"/engine/core/math/ImageMath.js","sourceHash":"207282ec98e1bb10425bba85c716479118e92e7304a2c0fb7222fee0bfe9acaf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ImageMath.js#0015:imageEdgeMap","exportIndex":15,"name":"imageEdgeMap","kind":"function","signature":"imageEdgeMap(image, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ImageMath.md","moduleTitle":"core/math/ImageMath","source":"engine/core/math/ImageMath.js","import":"/engine/core/math/ImageMath.js","sourceHash":"207282ec98e1bb10425bba85c716479118e92e7304a2c0fb7222fee0bfe9acaf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ImageMath.js#0016:IMAGE_CHANNEL_COUNT_RGBA","exportIndex":16,"name":"IMAGE_CHANNEL_COUNT_RGBA","kind":"constant","signature":"IMAGE_CHANNEL_COUNT_RGBA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ImageMath.md","moduleTitle":"core/math/ImageMath","source":"engine/core/math/ImageMath.js","import":"/engine/core/math/ImageMath.js","sourceHash":"207282ec98e1bb10425bba85c716479118e92e7304a2c0fb7222fee0bfe9acaf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ImageMath.js#0017:IMAGE_LUMA_REC709_BYTE_WEIGHTS","exportIndex":17,"name":"IMAGE_LUMA_REC709_BYTE_WEIGHTS","kind":"constant","signature":"IMAGE_LUMA_REC709_BYTE_WEIGHTS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ImageMath.md","moduleTitle":"core/math/ImageMath","source":"engine/core/math/ImageMath.js","import":"/engine/core/math/ImageMath.js","sourceHash":"207282ec98e1bb10425bba85c716479118e92e7304a2c0fb7222fee0bfe9acaf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ImageMath.js#0018:IMAGE_EDGE_MODES","exportIndex":18,"name":"IMAGE_EDGE_MODES","kind":"constant","signature":"IMAGE_EDGE_MODES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ImageMath.md","moduleTitle":"core/math/ImageMath","source":"engine/core/math/ImageMath.js","import":"/engine/core/math/ImageMath.js","sourceHash":"207282ec98e1bb10425bba85c716479118e92e7304a2c0fb7222fee0bfe9acaf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ImageMath.js#0019:IMAGE_CHANNEL_INDEX","exportIndex":19,"name":"IMAGE_CHANNEL_INDEX","kind":"constant","signature":"IMAGE_CHANNEL_INDEX","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/InputSignalMath.md","moduleTitle":"core/math/InputSignalMath","source":"engine/core/math/InputSignalMath.js","import":"/engine/core/math/InputSignalMath.js","sourceHash":"a44ea7e3a58ebec46c181cd7f0a67355e280ad3748840bd75399867593efe1fe","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/InputSignalMath.js","title":"core/math/InputSignalMath","summary":"InputSignalMath.js - pure pointer/stylus sample shaping, smoothing, and prediction helpers.","exportCount":12}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/InputSignalMath.md","moduleTitle":"core/math/InputSignalMath","source":"engine/core/math/InputSignalMath.js","import":"/engine/core/math/InputSignalMath.js","sourceHash":"a44ea7e3a58ebec46c181cd7f0a67355e280ad3748840bd75399867593efe1fe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/InputSignalMath.js#0000:inputAxisRemapReport","exportIndex":0,"name":"inputAxisRemapReport","kind":"function","signature":"inputAxisRemapReport(axis, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/InputSignalMath.md","moduleTitle":"core/math/InputSignalMath","source":"engine/core/math/InputSignalMath.js","import":"/engine/core/math/InputSignalMath.js","sourceHash":"a44ea7e3a58ebec46c181cd7f0a67355e280ad3748840bd75399867593efe1fe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/InputSignalMath.js#0001:inputRadialDeadzoneReport","exportIndex":1,"name":"inputRadialDeadzoneReport","kind":"function","signature":"inputRadialDeadzoneReport(axes, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/InputSignalMath.md","moduleTitle":"core/math/InputSignalMath","source":"engine/core/math/InputSignalMath.js","import":"/engine/core/math/InputSignalMath.js","sourceHash":"a44ea7e3a58ebec46c181cd7f0a67355e280ad3748840bd75399867593efe1fe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/InputSignalMath.js#0002:inputPressureCurve","exportIndex":2,"name":"inputPressureCurve","kind":"function","signature":"inputPressureCurve(pressure, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/InputSignalMath.md","moduleTitle":"core/math/InputSignalMath","source":"engine/core/math/InputSignalMath.js","import":"/engine/core/math/InputSignalMath.js","sourceHash":"a44ea7e3a58ebec46c181cd7f0a67355e280ad3748840bd75399867593efe1fe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/InputSignalMath.js#0003:inputPressureReport","exportIndex":3,"name":"inputPressureReport","kind":"function","signature":"inputPressureReport(samples, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/InputSignalMath.md","moduleTitle":"core/math/InputSignalMath","source":"engine/core/math/InputSignalMath.js","import":"/engine/core/math/InputSignalMath.js","sourceHash":"a44ea7e3a58ebec46c181cd7f0a67355e280ad3748840bd75399867593efe1fe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/InputSignalMath.js#0004:pointerTiltToAltitudeAzimuth","exportIndex":4,"name":"pointerTiltToAltitudeAzimuth","kind":"function","signature":"pointerTiltToAltitudeAzimuth(tiltX = 0, tiltY = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/InputSignalMath.md","moduleTitle":"core/math/InputSignalMath","source":"engine/core/math/InputSignalMath.js","import":"/engine/core/math/InputSignalMath.js","sourceHash":"a44ea7e3a58ebec46c181cd7f0a67355e280ad3748840bd75399867593efe1fe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/InputSignalMath.js#0005:pointerAltitudeAzimuthToTilt","exportIndex":5,"name":"pointerAltitudeAzimuthToTilt","kind":"function","signature":"pointerAltitudeAzimuthToTilt(altitudeAngle = HALF_PI, azimuthAngle = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/InputSignalMath.md","moduleTitle":"core/math/InputSignalMath","source":"engine/core/math/InputSignalMath.js","import":"/engine/core/math/InputSignalMath.js","sourceHash":"a44ea7e3a58ebec46c181cd7f0a67355e280ad3748840bd75399867593efe1fe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/InputSignalMath.js#0006:inputSampleVelocityReport","exportIndex":6,"name":"inputSampleVelocityReport","kind":"function","signature":"inputSampleVelocityReport(samples, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/InputSignalMath.md","moduleTitle":"core/math/InputSignalMath","source":"engine/core/math/InputSignalMath.js","import":"/engine/core/math/InputSignalMath.js","sourceHash":"a44ea7e3a58ebec46c181cd7f0a67355e280ad3748840bd75399867593efe1fe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/InputSignalMath.js#0007:smoothInputSamples","exportIndex":7,"name":"smoothInputSamples","kind":"function","signature":"smoothInputSamples(samples, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/InputSignalMath.md","moduleTitle":"core/math/InputSignalMath","source":"engine/core/math/InputSignalMath.js","import":"/engine/core/math/InputSignalMath.js","sourceHash":"a44ea7e3a58ebec46c181cd7f0a67355e280ad3748840bd75399867593efe1fe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/InputSignalMath.js#0008:predictInputSample","exportIndex":8,"name":"predictInputSample","kind":"function","signature":"predictInputSample(samples, lookaheadMs = 16.6666666667, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/InputSignalMath.md","moduleTitle":"core/math/InputSignalMath","source":"engine/core/math/InputSignalMath.js","import":"/engine/core/math/InputSignalMath.js","sourceHash":"a44ea7e3a58ebec46c181cd7f0a67355e280ad3748840bd75399867593efe1fe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/InputSignalMath.js#0009:blendInputSamples","exportIndex":9,"name":"blendInputSamples","kind":"function","signature":"blendInputSamples(leftSample, rightSample, amount = 0.5, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/InputSignalMath.md","moduleTitle":"core/math/InputSignalMath","source":"engine/core/math/InputSignalMath.js","import":"/engine/core/math/InputSignalMath.js","sourceHash":"a44ea7e3a58ebec46c181cd7f0a67355e280ad3748840bd75399867593efe1fe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/InputSignalMath.js#0010:inputStrokeStabilizationReport","exportIndex":10,"name":"inputStrokeStabilizationReport","kind":"function","signature":"inputStrokeStabilizationReport(samples, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/InputSignalMath.md","moduleTitle":"core/math/InputSignalMath","source":"engine/core/math/InputSignalMath.js","import":"/engine/core/math/InputSignalMath.js","sourceHash":"a44ea7e3a58ebec46c181cd7f0a67355e280ad3748840bd75399867593efe1fe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/InputSignalMath.js#0011:INPUT_SIGNAL_LIMITS","exportIndex":11,"name":"INPUT_SIGNAL_LIMITS","kind":"constant","signature":"INPUT_SIGNAL_LIMITS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/JitterMath.md","moduleTitle":"core/math/JitterMath","source":"engine/core/math/JitterMath.js","import":"/engine/core/math/JitterMath.js","sourceHash":"08fd171a30e601d401e76ef5f68f2915b900f6129ad7a0f7fdd06d5467c24bea","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/JitterMath.js","title":"core/math/JitterMath","summary":"JitterMath.js - packet delay variation, RTP/WebRTC jitter, and adaptive buffer reports.","exportCount":19}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/JitterMath.md","moduleTitle":"core/math/JitterMath","source":"engine/core/math/JitterMath.js","import":"/engine/core/math/JitterMath.js","sourceHash":"08fd171a30e601d401e76ef5f68f2915b900f6129ad7a0f7fdd06d5467c24bea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/JitterMath.js#0000:jitterQualityScore","exportIndex":0,"name":"jitterQualityScore","kind":"function","signature":"jitterQualityScore(jitterMs, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/JitterMath.md","moduleTitle":"core/math/JitterMath","source":"engine/core/math/JitterMath.js","import":"/engine/core/math/JitterMath.js","sourceHash":"08fd171a30e601d401e76ef5f68f2915b900f6129ad7a0f7fdd06d5467c24bea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/JitterMath.js#0001:packetDelayVariationMs","exportIndex":1,"name":"packetDelayVariationMs","kind":"function","signature":"packetDelayVariationMs(firstDelayMs, secondDelayMs)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/JitterMath.md","moduleTitle":"core/math/JitterMath","source":"engine/core/math/JitterMath.js","import":"/engine/core/math/JitterMath.js","sourceHash":"08fd171a30e601d401e76ef5f68f2915b900f6129ad7a0f7fdd06d5467c24bea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/JitterMath.js#0002:packetDelayVariationReport","exportIndex":2,"name":"packetDelayVariationReport","kind":"function","signature":"packetDelayVariationReport(samplesMs = [], options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/JitterMath.md","moduleTitle":"core/math/JitterMath","source":"engine/core/math/JitterMath.js","import":"/engine/core/math/JitterMath.js","sourceHash":"08fd171a30e601d401e76ef5f68f2915b900f6129ad7a0f7fdd06d5467c24bea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/JitterMath.js#0003:rtpJitterUpdateReport","exportIndex":3,"name":"rtpJitterUpdateReport","kind":"function","signature":"rtpJitterUpdateReport(previous = null, packet = {}, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/JitterMath.md","moduleTitle":"core/math/JitterMath","source":"engine/core/math/JitterMath.js","import":"/engine/core/math/JitterMath.js","sourceHash":"08fd171a30e601d401e76ef5f68f2915b900f6129ad7a0f7fdd06d5467c24bea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/JitterMath.js#0004:rtpJitterReport","exportIndex":4,"name":"rtpJitterReport","kind":"function","signature":"rtpJitterReport(packets = [], options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/JitterMath.md","moduleTitle":"core/math/JitterMath","source":"engine/core/math/JitterMath.js","import":"/engine/core/math/JitterMath.js","sourceHash":"08fd171a30e601d401e76ef5f68f2915b900f6129ad7a0f7fdd06d5467c24bea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/JitterMath.js#0005:adaptiveJitterEstimateUpdate","exportIndex":5,"name":"adaptiveJitterEstimateUpdate","kind":"function","signature":"adaptiveJitterEstimateUpdate(previous = {}, intervalMs, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/JitterMath.md","moduleTitle":"core/math/JitterMath","source":"engine/core/math/JitterMath.js","import":"/engine/core/math/JitterMath.js","sourceHash":"08fd171a30e601d401e76ef5f68f2915b900f6129ad7a0f7fdd06d5467c24bea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/JitterMath.js#0006:adaptiveJitterBufferReport","exportIndex":6,"name":"adaptiveJitterBufferReport","kind":"function","signature":"adaptiveJitterBufferReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/JitterMath.md","moduleTitle":"core/math/JitterMath","source":"engine/core/math/JitterMath.js","import":"/engine/core/math/JitterMath.js","sourceHash":"08fd171a30e601d401e76ef5f68f2915b900f6129ad7a0f7fdd06d5467c24bea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/JitterMath.js#0007:peerRttJitterReport","exportIndex":7,"name":"peerRttJitterReport","kind":"function","signature":"peerRttJitterReport(rttSamplesMs = [], options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/JitterMath.md","moduleTitle":"core/math/JitterMath","source":"engine/core/math/JitterMath.js","import":"/engine/core/math/JitterMath.js","sourceHash":"08fd171a30e601d401e76ef5f68f2915b900f6129ad7a0f7fdd06d5467c24bea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/JitterMath.js#0008:webRtcJitterBufferReport","exportIndex":8,"name":"webRtcJitterBufferReport","kind":"function","signature":"webRtcJitterBufferReport(stats = {}, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/JitterMath.md","moduleTitle":"core/math/JitterMath","source":"engine/core/math/JitterMath.js","import":"/engine/core/math/JitterMath.js","sourceHash":"08fd171a30e601d401e76ef5f68f2915b900f6129ad7a0f7fdd06d5467c24bea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/JitterMath.js#0009:interFrameDelayVariationReport","exportIndex":9,"name":"interFrameDelayVariationReport","kind":"function","signature":"interFrameDelayVariationReport(stats = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/JitterMath.md","moduleTitle":"core/math/JitterMath","source":"engine/core/math/JitterMath.js","import":"/engine/core/math/JitterMath.js","sourceHash":"08fd171a30e601d401e76ef5f68f2915b900f6129ad7a0f7fdd06d5467c24bea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/JitterMath.js#0010:JITTER_DEFAULT_EMA_ALPHA","exportIndex":10,"name":"JITTER_DEFAULT_EMA_ALPHA","kind":"constant","signature":"JITTER_DEFAULT_EMA_ALPHA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/JitterMath.md","moduleTitle":"core/math/JitterMath","source":"engine/core/math/JitterMath.js","import":"/engine/core/math/JitterMath.js","sourceHash":"08fd171a30e601d401e76ef5f68f2915b900f6129ad7a0f7fdd06d5467c24bea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/JitterMath.js#0011:JITTER_DEFAULT_TARGET_MS","exportIndex":11,"name":"JITTER_DEFAULT_TARGET_MS","kind":"constant","signature":"JITTER_DEFAULT_TARGET_MS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/JitterMath.md","moduleTitle":"core/math/JitterMath","source":"engine/core/math/JitterMath.js","import":"/engine/core/math/JitterMath.js","sourceHash":"08fd171a30e601d401e76ef5f68f2915b900f6129ad7a0f7fdd06d5467c24bea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/JitterMath.js#0012:JITTER_DEFAULT_MAX_MS","exportIndex":12,"name":"JITTER_DEFAULT_MAX_MS","kind":"constant","signature":"JITTER_DEFAULT_MAX_MS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/JitterMath.md","moduleTitle":"core/math/JitterMath","source":"engine/core/math/JitterMath.js","import":"/engine/core/math/JitterMath.js","sourceHash":"08fd171a30e601d401e76ef5f68f2915b900f6129ad7a0f7fdd06d5467c24bea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/JitterMath.js#0013:JITTER_DEFAULT_BUFFER_MULTIPLIER","exportIndex":13,"name":"JITTER_DEFAULT_BUFFER_MULTIPLIER","kind":"constant","signature":"JITTER_DEFAULT_BUFFER_MULTIPLIER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/JitterMath.md","moduleTitle":"core/math/JitterMath","source":"engine/core/math/JitterMath.js","import":"/engine/core/math/JitterMath.js","sourceHash":"08fd171a30e601d401e76ef5f68f2915b900f6129ad7a0f7fdd06d5467c24bea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/JitterMath.js#0014:JITTER_DEFAULT_MIN_BUFFER_DELAY_MS","exportIndex":14,"name":"JITTER_DEFAULT_MIN_BUFFER_DELAY_MS","kind":"constant","signature":"JITTER_DEFAULT_MIN_BUFFER_DELAY_MS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/JitterMath.md","moduleTitle":"core/math/JitterMath","source":"engine/core/math/JitterMath.js","import":"/engine/core/math/JitterMath.js","sourceHash":"08fd171a30e601d401e76ef5f68f2915b900f6129ad7a0f7fdd06d5467c24bea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/JitterMath.js#0015:JITTER_DEFAULT_MAX_BUFFER_DELAY_MS","exportIndex":15,"name":"JITTER_DEFAULT_MAX_BUFFER_DELAY_MS","kind":"constant","signature":"JITTER_DEFAULT_MAX_BUFFER_DELAY_MS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/JitterMath.md","moduleTitle":"core/math/JitterMath","source":"engine/core/math/JitterMath.js","import":"/engine/core/math/JitterMath.js","sourceHash":"08fd171a30e601d401e76ef5f68f2915b900f6129ad7a0f7fdd06d5467c24bea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/JitterMath.js#0016:JITTER_DEFAULT_SPIKE_FACTOR","exportIndex":16,"name":"JITTER_DEFAULT_SPIKE_FACTOR","kind":"constant","signature":"JITTER_DEFAULT_SPIKE_FACTOR","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/JitterMath.md","moduleTitle":"core/math/JitterMath","source":"engine/core/math/JitterMath.js","import":"/engine/core/math/JitterMath.js","sourceHash":"08fd171a30e601d401e76ef5f68f2915b900f6129ad7a0f7fdd06d5467c24bea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/JitterMath.js#0017:JITTER_DEFAULT_RECOVER_RATE_MS","exportIndex":17,"name":"JITTER_DEFAULT_RECOVER_RATE_MS","kind":"constant","signature":"JITTER_DEFAULT_RECOVER_RATE_MS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/JitterMath.md","moduleTitle":"core/math/JitterMath","source":"engine/core/math/JitterMath.js","import":"/engine/core/math/JitterMath.js","sourceHash":"08fd171a30e601d401e76ef5f68f2915b900f6129ad7a0f7fdd06d5467c24bea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/JitterMath.js#0018:JITTER_DEFAULT_RECOVER_AFTER_FRAMES","exportIndex":18,"name":"JITTER_DEFAULT_RECOVER_AFTER_FRAMES","kind":"constant","signature":"JITTER_DEFAULT_RECOVER_AFTER_FRAMES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/LineToVoxel.md","moduleTitle":"core/math/LineToVoxel","source":"engine/core/math/LineToVoxel.js","import":"/engine/core/math/LineToVoxel.js","sourceHash":"4ae367194401868c657d628e1031b7f27275d154487c59c2f0b776f399b9479d","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/LineToVoxel.js","title":"core/math/LineToVoxel","summary":"Node in a line network (branch point or endpoint)","exportCount":11}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/LineToVoxel.md","moduleTitle":"core/math/LineToVoxel","source":"engine/core/math/LineToVoxel.js","import":"/engine/core/math/LineToVoxel.js","sourceHash":"4ae367194401868c657d628e1031b7f27275d154487c59c2f0b776f399b9479d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/LineToVoxel.js#0000:NetworkNode","exportIndex":0,"name":"NetworkNode","kind":"class","signature":"class NetworkNode","summary":"Node in a line network (branch point or endpoint)"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/LineToVoxel.md","moduleTitle":"core/math/LineToVoxel","source":"engine/core/math/LineToVoxel.js","import":"/engine/core/math/LineToVoxel.js","sourceHash":"4ae367194401868c657d628e1031b7f27275d154487c59c2f0b776f399b9479d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/LineToVoxel.js#0001:NetworkEdge","exportIndex":1,"name":"NetworkEdge","kind":"class","signature":"class NetworkEdge","summary":"Edge connecting two nodes"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/LineToVoxel.md","moduleTitle":"core/math/LineToVoxel","source":"engine/core/math/LineToVoxel.js","import":"/engine/core/math/LineToVoxel.js","sourceHash":"4ae367194401868c657d628e1031b7f27275d154487c59c2f0b776f399b9479d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/LineToVoxel.js#0002:LineNetwork","exportIndex":2,"name":"LineNetwork","kind":"class","signature":"class LineNetwork","summary":"Network of connected curves for voxelization"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/LineToVoxel.md","moduleTitle":"core/math/LineToVoxel","source":"engine/core/math/LineToVoxel.js","import":"/engine/core/math/LineToVoxel.js","sourceHash":"4ae367194401868c657d628e1031b7f27275d154487c59c2f0b776f399b9479d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/LineToVoxel.js#0003:LineToVoxelizer","exportIndex":3,"name":"LineToVoxelizer","kind":"class","signature":"class LineToVoxelizer","summary":"Convert line network to voxel density field"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/LineToVoxel.md","moduleTitle":"core/math/LineToVoxel","source":"engine/core/math/LineToVoxel.js","import":"/engine/core/math/LineToVoxel.js","sourceHash":"4ae367194401868c657d628e1031b7f27275d154487c59c2f0b776f399b9479d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/LineToVoxel.js#0004:GPULineVoxelizer","exportIndex":4,"name":"GPULineVoxelizer","kind":"class","signature":"class GPULineVoxelizer","summary":"GPU-accelerated line network voxelizer"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/LineToVoxel.md","moduleTitle":"core/math/LineToVoxel","source":"engine/core/math/LineToVoxel.js","import":"/engine/core/math/LineToVoxel.js","sourceHash":"4ae367194401868c657d628e1031b7f27275d154487c59c2f0b776f399b9479d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/LineToVoxel.js#0005:generateTree","exportIndex":5,"name":"generateTree","kind":"function","signature":"generateTree(options = {})","summary":"Generate a simple tree structure"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/LineToVoxel.md","moduleTitle":"core/math/LineToVoxel","source":"engine/core/math/LineToVoxel.js","import":"/engine/core/math/LineToVoxel.js","sourceHash":"4ae367194401868c657d628e1031b7f27275d154487c59c2f0b776f399b9479d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/LineToVoxel.js#0006:generateRoots","exportIndex":6,"name":"generateRoots","kind":"function","signature":"generateRoots(options = {})","summary":"Generate root system"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/LineToVoxel.md","moduleTitle":"core/math/LineToVoxel","source":"engine/core/math/LineToVoxel.js","import":"/engine/core/math/LineToVoxel.js","sourceHash":"4ae367194401868c657d628e1031b7f27275d154487c59c2f0b776f399b9479d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/LineToVoxel.js#0007:generateTunnel","exportIndex":7,"name":"generateTunnel","kind":"function","signature":"generateTunnel(options = {})","summary":"Generate cave/tunnel network"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/LineToVoxel.md","moduleTitle":"core/math/LineToVoxel","source":"engine/core/math/LineToVoxel.js","import":"/engine/core/math/LineToVoxel.js","sourceHash":"4ae367194401868c657d628e1031b7f27275d154487c59c2f0b776f399b9479d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/LineToVoxel.js#0008:DEFAULT_RESOLUTION","exportIndex":8,"name":"DEFAULT_RESOLUTION","kind":"constant","signature":"DEFAULT_RESOLUTION","summary":"Default voxel resolution"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/LineToVoxel.md","moduleTitle":"core/math/LineToVoxel","source":"engine/core/math/LineToVoxel.js","import":"/engine/core/math/LineToVoxel.js","sourceHash":"4ae367194401868c657d628e1031b7f27275d154487c59c2f0b776f399b9479d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/LineToVoxel.js#0009:DEFAULT_BLEND_RADIUS","exportIndex":9,"name":"DEFAULT_BLEND_RADIUS","kind":"constant","signature":"DEFAULT_BLEND_RADIUS","summary":"Blend radius for smooth junctions"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/LineToVoxel.md","moduleTitle":"core/math/LineToVoxel","source":"engine/core/math/LineToVoxel.js","import":"/engine/core/math/LineToVoxel.js","sourceHash":"4ae367194401868c657d628e1031b7f27275d154487c59c2f0b776f399b9479d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/LineToVoxel.js#0010:Materials","exportIndex":10,"name":"Materials","kind":"constant","signature":"Materials","summary":"Material IDs"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/LossyCompressionMath.md","moduleTitle":"core/math/LossyCompressionMath","source":"engine/core/math/LossyCompressionMath.js","import":"/engine/core/math/LossyCompressionMath.js","sourceHash":"d5e6176ebb6916a7d8d4f864fa428124a36755e58bdbbee88221c1bf1f1fedba","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/LossyCompressionMath.js","title":"core/math/LossyCompressionMath","summary":"LossyCompressionMath.js - pure transform, quantization, and reconstruction reports.","exportCount":9}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/LossyCompressionMath.md","moduleTitle":"core/math/LossyCompressionMath","source":"engine/core/math/LossyCompressionMath.js","import":"/engine/core/math/LossyCompressionMath.js","sourceHash":"d5e6176ebb6916a7d8d4f864fa428124a36755e58bdbbee88221c1bf1f1fedba","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/LossyCompressionMath.js#0000:lossyDct1D","exportIndex":0,"name":"lossyDct1D","kind":"function","signature":"lossyDct1D(values)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/LossyCompressionMath.md","moduleTitle":"core/math/LossyCompressionMath","source":"engine/core/math/LossyCompressionMath.js","import":"/engine/core/math/LossyCompressionMath.js","sourceHash":"d5e6176ebb6916a7d8d4f864fa428124a36755e58bdbbee88221c1bf1f1fedba","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/LossyCompressionMath.js#0001:lossyIdct1D","exportIndex":1,"name":"lossyIdct1D","kind":"function","signature":"lossyIdct1D(coefficients)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/LossyCompressionMath.md","moduleTitle":"core/math/LossyCompressionMath","source":"engine/core/math/LossyCompressionMath.js","import":"/engine/core/math/LossyCompressionMath.js","sourceHash":"d5e6176ebb6916a7d8d4f864fa428124a36755e58bdbbee88221c1bf1f1fedba","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/LossyCompressionMath.js#0002:lossyDct2D","exportIndex":2,"name":"lossyDct2D","kind":"function","signature":"lossyDct2D(values, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/LossyCompressionMath.md","moduleTitle":"core/math/LossyCompressionMath","source":"engine/core/math/LossyCompressionMath.js","import":"/engine/core/math/LossyCompressionMath.js","sourceHash":"d5e6176ebb6916a7d8d4f864fa428124a36755e58bdbbee88221c1bf1f1fedba","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/LossyCompressionMath.js#0003:lossyIdct2D","exportIndex":3,"name":"lossyIdct2D","kind":"function","signature":"lossyIdct2D(coefficients, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/LossyCompressionMath.md","moduleTitle":"core/math/LossyCompressionMath","source":"engine/core/math/LossyCompressionMath.js","import":"/engine/core/math/LossyCompressionMath.js","sourceHash":"d5e6176ebb6916a7d8d4f864fa428124a36755e58bdbbee88221c1bf1f1fedba","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/LossyCompressionMath.js#0004:lossyZigZagIndices","exportIndex":4,"name":"lossyZigZagIndices","kind":"function","signature":"lossyZigZagIndices(width = DEFAULT_BLOCK_WIDTH, height = DEFAULT_BLOCK_HEIGHT)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/LossyCompressionMath.md","moduleTitle":"core/math/LossyCompressionMath","source":"engine/core/math/LossyCompressionMath.js","import":"/engine/core/math/LossyCompressionMath.js","sourceHash":"d5e6176ebb6916a7d8d4f864fa428124a36755e58bdbbee88221c1bf1f1fedba","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/LossyCompressionMath.js#0005:lossyQuantizeCoefficients","exportIndex":5,"name":"lossyQuantizeCoefficients","kind":"function","signature":"lossyQuantizeCoefficients(coefficients, quantization = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/LossyCompressionMath.md","moduleTitle":"core/math/LossyCompressionMath","source":"engine/core/math/LossyCompressionMath.js","import":"/engine/core/math/LossyCompressionMath.js","sourceHash":"d5e6176ebb6916a7d8d4f864fa428124a36755e58bdbbee88221c1bf1f1fedba","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/LossyCompressionMath.js#0006:lossyScalarQuantizationReport","exportIndex":6,"name":"lossyScalarQuantizationReport","kind":"function","signature":"lossyScalarQuantizationReport(values, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/LossyCompressionMath.md","moduleTitle":"core/math/LossyCompressionMath","source":"engine/core/math/LossyCompressionMath.js","import":"/engine/core/math/LossyCompressionMath.js","sourceHash":"d5e6176ebb6916a7d8d4f864fa428124a36755e58bdbbee88221c1bf1f1fedba","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/LossyCompressionMath.js#0007:lossyResidualReport","exportIndex":7,"name":"lossyResidualReport","kind":"function","signature":"lossyResidualReport(reference, candidate, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/LossyCompressionMath.md","moduleTitle":"core/math/LossyCompressionMath","source":"engine/core/math/LossyCompressionMath.js","import":"/engine/core/math/LossyCompressionMath.js","sourceHash":"d5e6176ebb6916a7d8d4f864fa428124a36755e58bdbbee88221c1bf1f1fedba","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/LossyCompressionMath.js#0008:lossyBlockDctReport","exportIndex":8,"name":"lossyBlockDctReport","kind":"function","signature":"lossyBlockDctReport(values, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/MathBits.js","title":"core/math/MathBits","summary":"MathBits.js - Bit manipulation, Morton codes, Hilbert curves, hash functions Critical for voxel systems, spatial indexing, and procedural generation","exportCount":134}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0000:floorPowerOfTwo","exportIndex":0,"name":"floorPowerOfTwo","kind":"function","signature":"floorPowerOfTwo(x)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0001:nextPowerOf2","exportIndex":1,"name":"nextPowerOf2","kind":"function","signature":"nextPowerOf2(x)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0002:prevPowerOf2","exportIndex":2,"name":"prevPowerOf2","kind":"function","signature":"prevPowerOf2(x)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0003:popCount","exportIndex":3,"name":"popCount","kind":"function","signature":"popCount(x)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0004:reverseBits","exportIndex":4,"name":"reverseBits","kind":"function","signature":"reverseBits(x)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0005:ctz","exportIndex":5,"name":"ctz","kind":"function","signature":"ctz(x)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0006:morton2DEncode","exportIndex":6,"name":"morton2DEncode","kind":"function","signature":"morton2DEncode(x, y)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0007:morton2DDecode","exportIndex":7,"name":"morton2DDecode","kind":"function","signature":"morton2DDecode(m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0008:morton3DEncode","exportIndex":8,"name":"morton3DEncode","kind":"function","signature":"morton3DEncode(x, y, z)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0009:morton3DDecode","exportIndex":9,"name":"morton3DDecode","kind":"function","signature":"morton3DDecode(m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0010:morton2DIncX","exportIndex":10,"name":"morton2DIncX","kind":"function","signature":"morton2DIncX(m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0011:morton2DIncY","exportIndex":11,"name":"morton2DIncY","kind":"function","signature":"morton2DIncY(m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0012:morton3DIncX","exportIndex":12,"name":"morton3DIncX","kind":"function","signature":"morton3DIncX(m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0013:morton3DIncY","exportIndex":13,"name":"morton3DIncY","kind":"function","signature":"morton3DIncY(m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0014:morton3DIncZ","exportIndex":14,"name":"morton3DIncZ","kind":"function","signature":"morton3DIncZ(m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0015:hilbert2DEncode","exportIndex":15,"name":"hilbert2DEncode","kind":"function","signature":"hilbert2DEncode(n, x, y)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0016:hilbert2DDecode","exportIndex":16,"name":"hilbert2DDecode","kind":"function","signature":"hilbert2DDecode(n, d)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0017:hash1D","exportIndex":17,"name":"hash1D","kind":"function","signature":"hash1D(n)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0018:hash2D","exportIndex":18,"name":"hash2D","kind":"function","signature":"hash2D(x, y)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0019:hash3D","exportIndex":19,"name":"hash3D","kind":"function","signature":"hash3D(x, y, z)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0020:hash4D","exportIndex":20,"name":"hash4D","kind":"function","signature":"hash4D(x, y, z, w)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0021:legacyStructureHash3D","exportIndex":21,"name":"legacyStructureHash3D","kind":"function","signature":"legacyStructureHash3D(x, y, z)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0022:legacyWorldGeneratorHash3D","exportIndex":22,"name":"legacyWorldGeneratorHash3D","kind":"function","signature":"legacyWorldGeneratorHash3D(x, y, z)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0023:legacyStructureSeededHash3D","exportIndex":23,"name":"legacyStructureSeededHash3D","kind":"function","signature":"legacyStructureSeededHash3D(x, y, z, seed)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0024:legacyStructureChunkSeed3D","exportIndex":24,"name":"legacyStructureChunkSeed3D","kind":"function","signature":"legacyStructureChunkSeed3D(cx, cy, cz, seed = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0025:legacyStructurePositionSeed3D","exportIndex":25,"name":"legacyStructurePositionSeed3D","kind":"function","signature":"legacyStructurePositionSeed3D(x, y, z, seed = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0026:legacyPrimeCoordinateXorHash3D","exportIndex":26,"name":"legacyPrimeCoordinateXorHash3D","kind":"function","signature":"legacyPrimeCoordinateXorHash3D(x, y, z)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0027:legacyPrimeCoordinateAbsXorBucket3D","exportIndex":27,"name":"legacyPrimeCoordinateAbsXorBucket3D","kind":"function","signature":"legacyPrimeCoordinateAbsXorBucket3D(x, y, z, tableSize)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0028:legacyPrimeCoordinateU32XorBucket3D","exportIndex":28,"name":"legacyPrimeCoordinateU32XorBucket3D","kind":"function","signature":"legacyPrimeCoordinateU32XorBucket3D(x, y, z, tableSize)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0029:legacyPrimeCoordinateSignedAddAbsBucket3D","exportIndex":29,"name":"legacyPrimeCoordinateSignedAddAbsBucket3D","kind":"function","signature":"legacyPrimeCoordinateSignedAddAbsBucket3D(x, y, z, tableSize)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0030:legacyPrimeAxisHash32","exportIndex":30,"name":"legacyPrimeAxisHash32","kind":"function","signature":"legacyPrimeAxisHash32(value, axis = 'x', modulo = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0031:legacyWindTurbulenceAxisHash32","exportIndex":31,"name":"legacyWindTurbulenceAxisHash32","kind":"function","signature":"legacyWindTurbulenceAxisHash32(timeHash, axis)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0032:legacyPrimeCoordinateXorSeed2D","exportIndex":32,"name":"legacyPrimeCoordinateXorSeed2D","kind":"function","signature":"legacyPrimeCoordinateXorSeed2D(x, z)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0033:legacyPrimeCoordinateAdditiveSeed3D","exportIndex":33,"name":"legacyPrimeCoordinateAdditiveSeed3D","kind":"function","signature":"legacyPrimeCoordinateAdditiveSeed3D(x, y, z)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0034:legacyDualRngPositionHash3D","exportIndex":34,"name":"legacyDualRngPositionHash3D","kind":"function","signature":"legacyDualRngPositionHash3D(x, y, z, seed = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0035:legacySeedCharWeightedXorHash32","exportIndex":35,"name":"legacySeedCharWeightedXorHash32","kind":"function","signature":"legacySeedCharWeightedXorHash32(seed, charCode, seedMultiplier, charMultiplier)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0036:legacySeedCharXorHash32","exportIndex":36,"name":"legacySeedCharXorHash32","kind":"function","signature":"legacySeedCharXorHash32(seed, charCode)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0037:legacySeedCharEffectXorHash32","exportIndex":37,"name":"legacySeedCharEffectXorHash32","kind":"function","signature":"legacySeedCharEffectXorHash32(seed, charCode)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0038:legacyGoldenRatioMul32","exportIndex":38,"name":"legacyGoldenRatioMul32","kind":"function","signature":"legacyGoldenRatioMul32(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0039:legacyGoldenRatioChunkSeed32","exportIndex":39,"name":"legacyGoldenRatioChunkSeed32","kind":"function","signature":"legacyGoldenRatioChunkSeed32(seedBase, chunkIndex)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0040:legacyMeshParticleSeed32","exportIndex":40,"name":"legacyMeshParticleSeed32","kind":"function","signature":"legacyMeshParticleSeed32(seedBase, triIndex, particleIndex)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0041:legacyPcgAdvanceState32","exportIndex":41,"name":"legacyPcgAdvanceState32","kind":"function","signature":"legacyPcgAdvanceState32(state)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0042:legacyPcgOutput32","exportIndex":42,"name":"legacyPcgOutput32","kind":"function","signature":"legacyPcgOutput32(state)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0043:legacyPcgHash32","exportIndex":43,"name":"legacyPcgHash32","kind":"function","signature":"legacyPcgHash32(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0044:legacyPathTracingPcgHash32","exportIndex":44,"name":"legacyPathTracingPcgHash32","kind":"function","signature":"legacyPathTracingPcgHash32(input)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0045:legacyPbrMaterialsPcgHash32","exportIndex":45,"name":"legacyPbrMaterialsPcgHash32","kind":"function","signature":"legacyPbrMaterialsPcgHash32(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0046:legacyFluidWaterPcgHash32","exportIndex":46,"name":"legacyFluidWaterPcgHash32","kind":"function","signature":"legacyFluidWaterPcgHash32(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0047:legacyMagicEffectsPcgHash32","exportIndex":47,"name":"legacyMagicEffectsPcgHash32","kind":"function","signature":"legacyMagicEffectsPcgHash32(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0048:legacyPhaseVFXPcgHash32","exportIndex":48,"name":"legacyPhaseVFXPcgHash32","kind":"function","signature":"legacyPhaseVFXPcgHash32(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0049:legacyPathtracingGIPcgHash32","exportIndex":49,"name":"legacyPathtracingGIPcgHash32","kind":"function","signature":"legacyPathtracingGIPcgHash32(input)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0050:legacyPathtracingGIRandomFloat01Step","exportIndex":50,"name":"legacyPathtracingGIRandomFloat01Step","kind":"function","signature":"legacyPathtracingGIRandomFloat01Step(state)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0051:legacyWorld3DPreviewPcgHash32","exportIndex":51,"name":"legacyWorld3DPreviewPcgHash32","kind":"function","signature":"legacyWorld3DPreviewPcgHash32(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0052:legacyAuroraPcgHash32","exportIndex":52,"name":"legacyAuroraPcgHash32","kind":"function","signature":"legacyAuroraPcgHash32(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0053:legacyCelestialStarsPcgHash32","exportIndex":53,"name":"legacyCelestialStarsPcgHash32","kind":"function","signature":"legacyCelestialStarsPcgHash32(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0054:legacyUnderwaterPcgHash32","exportIndex":54,"name":"legacyUnderwaterPcgHash32","kind":"function","signature":"legacyUnderwaterPcgHash32(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0055:legacyVoronoiRuntimePcgHash32","exportIndex":55,"name":"legacyVoronoiRuntimePcgHash32","kind":"function","signature":"legacyVoronoiRuntimePcgHash32(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0056:legacyProceduralTreeRuntimePcgHash32","exportIndex":56,"name":"legacyProceduralTreeRuntimePcgHash32","kind":"function","signature":"legacyProceduralTreeRuntimePcgHash32(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0057:legacyMeshToParticlesPcgHash32","exportIndex":57,"name":"legacyMeshToParticlesPcgHash32","kind":"function","signature":"legacyMeshToParticlesPcgHash32(input)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0058:legacyMeshToParticlesRandomFloat01Step","exportIndex":58,"name":"legacyMeshToParticlesRandomFloat01Step","kind":"function","signature":"legacyMeshToParticlesRandomFloat01Step(state)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0059:legacyParticleRuntimeSdfPcgHash32","exportIndex":59,"name":"legacyParticleRuntimeSdfPcgHash32","kind":"function","signature":"legacyParticleRuntimeSdfPcgHash32(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0060:legacyParticleRuntimePcgHash32","exportIndex":60,"name":"legacyParticleRuntimePcgHash32","kind":"function","signature":"legacyParticleRuntimePcgHash32(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0061:legacyParticleRuntimeRandomFloat01Step","exportIndex":61,"name":"legacyParticleRuntimeRandomFloat01Step","kind":"function","signature":"legacyParticleRuntimeRandomFloat01Step(state)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0062:legacyRayTracingRandomFloat01Step","exportIndex":62,"name":"legacyRayTracingRandomFloat01Step","kind":"function","signature":"legacyRayTracingRandomFloat01Step(state)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0063:legacyPcgRandomFloat01Step","exportIndex":63,"name":"legacyPcgRandomFloat01Step","kind":"function","signature":"legacyPcgRandomFloat01Step(state)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0064:legacyPcgHashStepRandomFloat01Step","exportIndex":64,"name":"legacyPcgHashStepRandomFloat01Step","kind":"function","signature":"legacyPcgHashStepRandomFloat01Step(state)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0065:legacyPcgPixelFrameHash2D","exportIndex":65,"name":"legacyPcgPixelFrameHash2D","kind":"function","signature":"legacyPcgPixelFrameHash2D(x, y, frameIndex, salt = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0066:legacyPcgPixelFrameRandom24Float01","exportIndex":66,"name":"legacyPcgPixelFrameRandom24Float01","kind":"function","signature":"legacyPcgPixelFrameRandom24Float01(x, y, frameIndex, salt = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0067:legacyRestirTemporalHash2Float01","exportIndex":67,"name":"legacyRestirTemporalHash2Float01","kind":"function","signature":"legacyRestirTemporalHash2Float01(x, y, frameIndex)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0068:legacyRestirSpatialHash2Float01","exportIndex":68,"name":"legacyRestirSpatialHash2Float01","kind":"function","signature":"legacyRestirSpatialHash2Float01(x, y, frameIndex)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0069:legacyPcgCloudJitterHash2D","exportIndex":69,"name":"legacyPcgCloudJitterHash2D","kind":"function","signature":"legacyPcgCloudJitterHash2D(xBits, yBits)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0070:legacyVolumetricCloudsJitterPcgHash2D","exportIndex":70,"name":"legacyVolumetricCloudsJitterPcgHash2D","kind":"function","signature":"legacyVolumetricCloudsJitterPcgHash2D(xBits, yBits)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0071:legacyPcgSsrJitterHash2D","exportIndex":71,"name":"legacyPcgSsrJitterHash2D","kind":"function","signature":"legacyPcgSsrJitterHash2D(xBits, yBits)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0072:legacySsrJitterPcgHash2D","exportIndex":72,"name":"legacySsrJitterPcgHash2D","kind":"function","signature":"legacySsrJitterPcgHash2D(xBits, yBits)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0073:legacyPcgSparkleHash3D","exportIndex":73,"name":"legacyPcgSparkleHash3D","kind":"function","signature":"legacyPcgSparkleHash3D(xBits, yBits, zBits)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0074:legacyCustomParticleSparklePcgHash3D","exportIndex":74,"name":"legacyCustomParticleSparklePcgHash3D","kind":"function","signature":"legacyCustomParticleSparklePcgHash3D(xBits, yBits, zBits)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0075:legacyMarchingCubesMaterialPcgHash2D","exportIndex":75,"name":"legacyMarchingCubesMaterialPcgHash2D","kind":"function","signature":"legacyMarchingCubesMaterialPcgHash2D(xBits, zBits)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0076:legacyParticleVertexQualityPcgHash2D","exportIndex":76,"name":"legacyParticleVertexQualityPcgHash2D","kind":"function","signature":"legacyParticleVertexQualityPcgHash2D(instanceIndex, centerXBits)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0077:legacyParticleVertexQualityRandomFloat01","exportIndex":77,"name":"legacyParticleVertexQualityRandomFloat01","kind":"function","signature":"legacyParticleVertexQualityRandomFloat01(instanceIndex, centerXBits)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0078:legacyStandaloneRuntimePcgHash32","exportIndex":78,"name":"legacyStandaloneRuntimePcgHash32","kind":"function","signature":"legacyStandaloneRuntimePcgHash32(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0079:legacyStandaloneRuntimePcgFloat01","exportIndex":79,"name":"legacyStandaloneRuntimePcgFloat01","kind":"function","signature":"legacyStandaloneRuntimePcgFloat01(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0080:legacyStandaloneRuntimePcgHashStepRandomFloat01Step","exportIndex":80,"name":"legacyStandaloneRuntimePcgHashStepRandomFloat01Step","kind":"function","signature":"legacyStandaloneRuntimePcgHashStepRandomFloat01Step(state)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0081:legacyDeterministicRngTickSeed32","exportIndex":81,"name":"legacyDeterministicRngTickSeed32","kind":"function","signature":"legacyDeterministicRngTickSeed32(worldSeed, tick)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0082:legacyDeterministicRngEntitySeed32","exportIndex":82,"name":"legacyDeterministicRngEntitySeed32","kind":"function","signature":"legacyDeterministicRngEntitySeed32(worldSeed, entityId, tick)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0083:legacyDeterministicRngPositionSeed32","exportIndex":83,"name":"legacyDeterministicRngPositionSeed32","kind":"function","signature":"legacyDeterministicRngPositionSeed32(worldSeed, x, y, z)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0084:legacyDeterministicRngInteractionSeed32","exportIndex":84,"name":"legacyDeterministicRngInteractionSeed32","kind":"function","signature":"legacyDeterministicRngInteractionSeed32(worldSeed, entityA, entityB, tick)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0085:xxHash32","exportIndex":85,"name":"xxHash32","kind":"function","signature":"xxHash32(seed, data)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0086:pcgHash","exportIndex":86,"name":"pcgHash","kind":"function","signature":"pcgHash(state)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0087:spatialKey2D","exportIndex":87,"name":"spatialKey2D","kind":"function","signature":"spatialKey2D(x, y)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0088:spatialUnkey2D","exportIndex":88,"name":"spatialUnkey2D","kind":"function","signature":"spatialUnkey2D(key)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0089:spatialKey3D","exportIndex":89,"name":"spatialKey3D","kind":"function","signature":"spatialKey3D(x, y, z)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0090:spatialUnkey3D","exportIndex":90,"name":"spatialUnkey3D","kind":"function","signature":"spatialUnkey3D(key)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0091:packUnorm","exportIndex":91,"name":"packUnorm","kind":"function","signature":"packUnorm(value, bits)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0092:unpackUnorm","exportIndex":92,"name":"unpackUnorm","kind":"function","signature":"unpackUnorm(packed, bits)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0093:packSnorm","exportIndex":93,"name":"packSnorm","kind":"function","signature":"packSnorm(value, bits)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0094:unpackSnorm","exportIndex":94,"name":"unpackSnorm","kind":"function","signature":"unpackSnorm(packed, bits)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0095:packRGB565","exportIndex":95,"name":"packRGB565","kind":"function","signature":"packRGB565(r, g, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0096:unpackRGB565","exportIndex":96,"name":"unpackRGB565","kind":"function","signature":"unpackRGB565(packed)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0097:packRGBA4444","exportIndex":97,"name":"packRGBA4444","kind":"function","signature":"packRGBA4444(r, g, b, a)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0098:unpackRGBA4444","exportIndex":98,"name":"unpackRGBA4444","kind":"function","signature":"unpackRGBA4444(packed)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0099:isPowerOf2","exportIndex":99,"name":"isPowerOf2","kind":"function","signature":"isPowerOf2(x)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0100:log2Int","exportIndex":100,"name":"log2Int","kind":"function","signature":"log2Int(x)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0101:ceilLog2","exportIndex":101,"name":"ceilLog2","kind":"function","signature":"ceilLog2(x)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0102:clz","exportIndex":102,"name":"clz","kind":"function","signature":"clz(x)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0103:ffs","exportIndex":103,"name":"ffs","kind":"function","signature":"ffs(x)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0104:byteSwap16","exportIndex":104,"name":"byteSwap16","kind":"function","signature":"byteSwap16(x)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0105:byteSwap32","exportIndex":105,"name":"byteSwap32","kind":"function","signature":"byteSwap32(x)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0106:rotateLeft","exportIndex":106,"name":"rotateLeft","kind":"function","signature":"rotateLeft(x, n)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0107:rotateRight","exportIndex":107,"name":"rotateRight","kind":"function","signature":"rotateRight(x, n)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0108:hashFloat1D","exportIndex":108,"name":"hashFloat1D","kind":"function","signature":"hashFloat1D(n)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0109:hashFloat2D","exportIndex":109,"name":"hashFloat2D","kind":"function","signature":"hashFloat2D(x, y)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0110:hashFloat3D","exportIndex":110,"name":"hashFloat3D","kind":"function","signature":"hashFloat3D(x, y, z)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0111:spatialKeyString2D","exportIndex":111,"name":"spatialKeyString2D","kind":"function","signature":"spatialKeyString2D(x, y)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0112:spatialKeyString3D","exportIndex":112,"name":"spatialKeyString3D","kind":"function","signature":"spatialKeyString3D(x, y, z)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0113:pack2x16","exportIndex":113,"name":"pack2x16","kind":"function","signature":"pack2x16(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0114:unpack2x16","exportIndex":114,"name":"unpack2x16","kind":"function","signature":"unpack2x16(packed)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0115:pack4x8","exportIndex":115,"name":"pack4x8","kind":"function","signature":"pack4x8(a, b, c, d)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0116:unpack4x8","exportIndex":116,"name":"unpack4x8","kind":"function","signature":"unpack4x8(packed)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0117:LEGACY_PRIME_COORDINATE_U32_XOR_BUCKET3D_WGSL","exportIndex":117,"name":"LEGACY_PRIME_COORDINATE_U32_XOR_BUCKET3D_WGSL","kind":"constant","signature":"LEGACY_PRIME_COORDINATE_U32_XOR_BUCKET3D_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0118:LEGACY_PRIME_COORDINATE_SIGNED_ADD_ABS_BUCKET3D_WGSL","exportIndex":118,"name":"LEGACY_PRIME_COORDINATE_SIGNED_ADD_ABS_BUCKET3D_WGSL","kind":"constant","signature":"LEGACY_PRIME_COORDINATE_SIGNED_ADD_ABS_BUCKET3D_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0119:LEGACY_MESH_PARTICLE_SEED_WGSL","exportIndex":119,"name":"LEGACY_MESH_PARTICLE_SEED_WGSL","kind":"constant","signature":"LEGACY_MESH_PARTICLE_SEED_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0120:LEGACY_PCG32_WGSL","exportIndex":120,"name":"LEGACY_PCG32_WGSL","kind":"constant","signature":"LEGACY_PCG32_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0121:LEGACY_PARTICLE_VERTEX_QUALITY_PCG_WGSL","exportIndex":121,"name":"LEGACY_PARTICLE_VERTEX_QUALITY_PCG_WGSL","kind":"constant","signature":"LEGACY_PARTICLE_VERTEX_QUALITY_PCG_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0122:LEGACY_STANDALONE_RUNTIME_PCG_WGSL","exportIndex":122,"name":"LEGACY_STANDALONE_RUNTIME_PCG_WGSL","kind":"constant","signature":"LEGACY_STANDALONE_RUNTIME_PCG_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0123:LEGACY_RENDER_RUNTIME_PCG_HASH_WGSL","exportIndex":123,"name":"LEGACY_RENDER_RUNTIME_PCG_HASH_WGSL","kind":"constant","signature":"LEGACY_RENDER_RUNTIME_PCG_HASH_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0124:LEGACY_WORLD_GENERATION_RUNTIME_PCG_HASH_WGSL","exportIndex":124,"name":"LEGACY_WORLD_GENERATION_RUNTIME_PCG_HASH_WGSL","kind":"constant","signature":"LEGACY_WORLD_GENERATION_RUNTIME_PCG_HASH_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0125:MESH_TO_PARTICLES_RUNTIME_PCG_WGSL","exportIndex":125,"name":"MESH_TO_PARTICLES_RUNTIME_PCG_WGSL","kind":"constant","signature":"MESH_TO_PARTICLES_RUNTIME_PCG_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0126:LEGACY_PARTICLE_RUNTIME_PCG_WGSL","exportIndex":126,"name":"LEGACY_PARTICLE_RUNTIME_PCG_WGSL","kind":"constant","signature":"LEGACY_PARTICLE_RUNTIME_PCG_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0127:PBR_MATERIALS_PCG_HASH_WGSL","exportIndex":127,"name":"PBR_MATERIALS_PCG_HASH_WGSL","kind":"constant","signature":"PBR_MATERIALS_PCG_HASH_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0128:FLUID_WATER_PCG_HASH_WGSL","exportIndex":128,"name":"FLUID_WATER_PCG_HASH_WGSL","kind":"constant","signature":"FLUID_WATER_PCG_HASH_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0129:MAGIC_EFFECTS_PCG_HASH_WGSL","exportIndex":129,"name":"MAGIC_EFFECTS_PCG_HASH_WGSL","kind":"constant","signature":"MAGIC_EFFECTS_PCG_HASH_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0130:PHASE_VFX_PCG_HASH_WGSL","exportIndex":130,"name":"PHASE_VFX_PCG_HASH_WGSL","kind":"constant","signature":"PHASE_VFX_PCG_HASH_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0131:PATH_TRACING_GI_PCG_WGSL","exportIndex":131,"name":"PATH_TRACING_GI_PCG_WGSL","kind":"constant","signature":"PATH_TRACING_GI_PCG_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0132:RAY_TRACING_RANDOM_FLOAT_WGSL","exportIndex":132,"name":"RAY_TRACING_RANDOM_FLOAT_WGSL","kind":"constant","signature":"RAY_TRACING_RANDOM_FLOAT_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathBits.md","moduleTitle":"core/math/MathBits","source":"engine/core/math/MathBits.js","import":"/engine/core/math/MathBits.js","sourceHash":"50d03877b0c40a9289c5d5a82ad5aeeb0443977590077e22226783f601002f52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathBits.js#0133:LEGACY_DETERMINISTIC_RNG_SEED32_WGSL","exportIndex":133,"name":"LEGACY_DETERMINISTIC_RNG_SEED32_WGSL","kind":"constant","signature":"LEGACY_DETERMINISTIC_RNG_SEED32_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/MathColor.js","title":"core/math/MathColor","summary":"MathColor.js - Color spaces and conversions RGB, HSL, HSV, LAB, LCH, OKLAB, OKLCH, hex, blend modes, gradients, palettes","exportCount":131}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0000:colorSpaceMetadata","exportIndex":0,"name":"colorSpaceMetadata","kind":"function","signature":"colorSpaceMetadata(colorSpace = 'srgb')","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0001:srgbChannelToLinear","exportIndex":1,"name":"srgbChannelToLinear","kind":"function","signature":"srgbChannelToLinear(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0002:linearChannelToSrgb","exportIndex":2,"name":"linearChannelToSrgb","kind":"function","signature":"linearChannelToSrgb(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0003:srgbToLinearRgb","exportIndex":3,"name":"srgbToLinearRgb","kind":"function","signature":"srgbToLinearRgb(color)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0004:linearRgbToSrgb","exportIndex":4,"name":"linearRgbToSrgb","kind":"function","signature":"linearRgbToSrgb(color)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0005:linearRgbLuminance","exportIndex":5,"name":"linearRgbLuminance","kind":"function","signature":"linearRgbLuminance(color, coefficients = COLOR_LUMA_REC709)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0006:relativeLuminance","exportIndex":6,"name":"relativeLuminance","kind":"function","signature":"relativeLuminance(color)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0007:contrastRatio","exportIndex":7,"name":"contrastRatio","kind":"function","signature":"contrastRatio(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0008:rgbToYuv","exportIndex":8,"name":"rgbToYuv","kind":"function","signature":"rgbToYuv(color)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0009:yuvToRgb","exportIndex":9,"name":"yuvToRgb","kind":"function","signature":"yuvToRgb(color)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0010:rgbToYCbCr","exportIndex":10,"name":"rgbToYCbCr","kind":"function","signature":"rgbToYCbCr(color)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0011:yCbCrToRgb","exportIndex":11,"name":"yCbCrToRgb","kind":"function","signature":"yCbCrToRgb(color)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0012:toneMapReinhard","exportIndex":12,"name":"toneMapReinhard","kind":"function","signature":"toneMapReinhard(color)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0013:toneMapReinhardExtended","exportIndex":13,"name":"toneMapReinhardExtended","kind":"function","signature":"toneMapReinhardExtended(color, whitePoint = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0014:toneMapACES","exportIndex":14,"name":"toneMapACES","kind":"function","signature":"toneMapACES(color)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0015:colorExposure","exportIndex":15,"name":"colorExposure","kind":"function","signature":"colorExposure(color, exposure = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0016:colorContrastAdjust","exportIndex":16,"name":"colorContrastAdjust","kind":"function","signature":"colorContrastAdjust(color, amount = 1, pivot = 0.5)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0017:colorSaturationAdjust","exportIndex":17,"name":"colorSaturationAdjust","kind":"function","signature":"colorSaturationAdjust(color, amount = 1, coefficients = COLOR_LUMA_REC709)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0018:colorGamutReport","exportIndex":18,"name":"colorGamutReport","kind":"function","signature":"colorGamutReport(color, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0019:colorHdrMetadataReport","exportIndex":19,"name":"colorHdrMetadataReport","kind":"function","signature":"colorHdrMetadataReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0020:colorDisplayTransformReport","exportIndex":20,"name":"colorDisplayTransformReport","kind":"function","signature":"colorDisplayTransformReport(color, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0021:colorDisplayCapabilityReport","exportIndex":21,"name":"colorDisplayCapabilityReport","kind":"function","signature":"colorDisplayCapabilityReport(observed = {}, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0022:canvasColorSettingsReport","exportIndex":22,"name":"canvasColorSettingsReport","kind":"function","signature":"canvasColorSettingsReport(settings = {}, observedAttributes = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0023:canvasPixelReadbackReport","exportIndex":23,"name":"canvasPixelReadbackReport","kind":"function","signature":"canvasPixelReadbackReport(settings = {}, observedReadback = {}, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0024:canvasPixelReadbackCapabilityReport","exportIndex":24,"name":"canvasPixelReadbackCapabilityReport","kind":"function","signature":"canvasPixelReadbackCapabilityReport(cases = [], options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0025:canvasPixelReadbackPrecisionReport","exportIndex":25,"name":"canvasPixelReadbackPrecisionReport","kind":"function","signature":"canvasPixelReadbackPrecisionReport(cases = [], options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0026:cssRelativeColorReport","exportIndex":26,"name":"cssRelativeColorReport","kind":"function","signature":"cssRelativeColorReport(value, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0027:cssNamedColorReport","exportIndex":27,"name":"cssNamedColorReport","kind":"function","signature":"cssNamedColorReport(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0028:cssSystemColorReport","exportIndex":28,"name":"cssSystemColorReport","kind":"function","signature":"cssSystemColorReport(value, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0029:cssSystemColorResolutionReport","exportIndex":29,"name":"cssSystemColorResolutionReport","kind":"function","signature":"cssSystemColorResolutionReport(systemColors = {}, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0030:cssColorParseReport","exportIndex":30,"name":"cssColorParseReport","kind":"function","signature":"cssColorParseReport(value, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0031:colorContrastChoiceReport","exportIndex":31,"name":"colorContrastChoiceReport","kind":"function","signature":"colorContrastChoiceReport(background, candidates = [[0, 0, 0], [1, 1, 1]], options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0032:cssLightDarkColorReport","exportIndex":32,"name":"cssLightDarkColorReport","kind":"function","signature":"cssLightDarkColorReport(lightColor, darkColor, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0033:rgbContrast","exportIndex":33,"name":"rgbContrast","kind":"function","signature":"rgbContrast(c, amount)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0034:rgbSaturateAmount","exportIndex":34,"name":"rgbSaturateAmount","kind":"function","signature":"rgbSaturateAmount(c, amount)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0035:rgbBrighten","exportIndex":35,"name":"rgbBrighten","kind":"function","signature":"rgbBrighten(c, amount)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0036:hexToRgb","exportIndex":36,"name":"hexToRgb","kind":"function","signature":"hexToRgb(hex)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0037:rgbToHex","exportIndex":37,"name":"rgbToHex","kind":"function","signature":"rgbToHex(c)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0038:byteRgbToHex","exportIndex":38,"name":"byteRgbToHex","kind":"function","signature":"byteRgbToHex(r, g, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0039:hexToRgba","exportIndex":39,"name":"hexToRgba","kind":"function","signature":"hexToRgba(hex)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0040:rgbaToHex","exportIndex":40,"name":"rgbaToHex","kind":"function","signature":"rgbaToHex(c)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0041:intToRgb","exportIndex":41,"name":"intToRgb","kind":"function","signature":"intToRgb(int)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0042:rgbToInt","exportIndex":42,"name":"rgbToInt","kind":"function","signature":"rgbToInt(c)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0043:rgbToHsl","exportIndex":43,"name":"rgbToHsl","kind":"function","signature":"rgbToHsl(c)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0044:hslToRgb","exportIndex":44,"name":"hslToRgb","kind":"function","signature":"hslToRgb(c)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0045:rgbToHsv","exportIndex":45,"name":"rgbToHsv","kind":"function","signature":"rgbToHsv(c)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0046:hsvToRgb","exportIndex":46,"name":"hsvToRgb","kind":"function","signature":"hsvToRgb(c)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0047:rgbToXyz","exportIndex":47,"name":"rgbToXyz","kind":"function","signature":"rgbToXyz(c)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0048:xyzD65ToD50","exportIndex":48,"name":"xyzD65ToD50","kind":"function","signature":"xyzD65ToD50(xyz)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0049:xyzD50ToD65","exportIndex":49,"name":"xyzD50ToD65","kind":"function","signature":"xyzD50ToD65(xyz)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0050:xyzToRgb","exportIndex":50,"name":"xyzToRgb","kind":"function","signature":"xyzToRgb(c)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0051:xyzToLab","exportIndex":51,"name":"xyzToLab","kind":"function","signature":"xyzToLab(c)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0052:labToXyz","exportIndex":52,"name":"labToXyz","kind":"function","signature":"labToXyz(c)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0053:labDistance","exportIndex":53,"name":"labDistance","kind":"function","signature":"labDistance(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0054:labToLch","exportIndex":54,"name":"labToLch","kind":"function","signature":"labToLch(c)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0055:lchToLab","exportIndex":55,"name":"lchToLab","kind":"function","signature":"lchToLab(c)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0056:rgbToOklab","exportIndex":56,"name":"rgbToOklab","kind":"function","signature":"rgbToOklab(c)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0057:oklabToRgb","exportIndex":57,"name":"oklabToRgb","kind":"function","signature":"oklabToRgb(c)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0058:oklabToOklch","exportIndex":58,"name":"oklabToOklch","kind":"function","signature":"oklabToOklch(c)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0059:oklchToOklab","exportIndex":59,"name":"oklchToOklab","kind":"function","signature":"oklchToOklab(c)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0060:rgbLerpOklab","exportIndex":60,"name":"rgbLerpOklab","kind":"function","signature":"rgbLerpOklab(a, b, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0061:kelvinToRgb","exportIndex":61,"name":"kelvinToRgb","kind":"function","signature":"kelvinToRgb(kelvin)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0062:blendSoftLight","exportIndex":62,"name":"blendSoftLight","kind":"function","signature":"blendSoftLight(base, blend)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0063:blendHardLight","exportIndex":63,"name":"blendHardLight","kind":"function","signature":"blendHardLight(base, blend)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0064:blendColorDodge","exportIndex":64,"name":"blendColorDodge","kind":"function","signature":"blendColorDodge(base, blend)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0065:blendColorBurn","exportIndex":65,"name":"blendColorBurn","kind":"function","signature":"blendColorBurn(base, blend)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0066:gradientLinear","exportIndex":66,"name":"gradientLinear","kind":"function","signature":"gradientLinear(stops, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0067:gradientOklab","exportIndex":67,"name":"gradientOklab","kind":"function","signature":"gradientOklab(stops, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0068:paletteAnalogous","exportIndex":68,"name":"paletteAnalogous","kind":"function","signature":"paletteAnalogous(baseHue, count = 5, spread = 30)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0069:paletteComplementary","exportIndex":69,"name":"paletteComplementary","kind":"function","signature":"paletteComplementary(baseHue)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0070:paletteTriadic","exportIndex":70,"name":"paletteTriadic","kind":"function","signature":"paletteTriadic(baseHue)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0071:paletteSplitComplementary","exportIndex":71,"name":"paletteSplitComplementary","kind":"function","signature":"paletteSplitComplementary(baseHue, spread = 30)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0072:paletteTetradic","exportIndex":72,"name":"paletteTetradic","kind":"function","signature":"paletteTetradic(baseHue)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0073:paletteMonochromatic","exportIndex":73,"name":"paletteMonochromatic","kind":"function","signature":"paletteMonochromatic(baseHue, count = 5)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0074:rgb","exportIndex":74,"name":"rgb","kind":"function","signature":"rgb(r, g, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0075:rgba","exportIndex":75,"name":"rgba","kind":"function","signature":"rgba(r, g, b, a = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0076:rgbClone","exportIndex":76,"name":"rgbClone","kind":"function","signature":"rgbClone(c)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0077:rgbAdd","exportIndex":77,"name":"rgbAdd","kind":"function","signature":"rgbAdd(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0078:rgbSub","exportIndex":78,"name":"rgbSub","kind":"function","signature":"rgbSub(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0079:rgbMul","exportIndex":79,"name":"rgbMul","kind":"function","signature":"rgbMul(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0080:rgbScale","exportIndex":80,"name":"rgbScale","kind":"function","signature":"rgbScale(c, s)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0081:rgbLerp","exportIndex":81,"name":"rgbLerp","kind":"function","signature":"rgbLerp(a, b, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0082:rgbClamp","exportIndex":82,"name":"rgbClamp","kind":"function","signature":"rgbClamp(c)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0083:rgbLuminance","exportIndex":83,"name":"rgbLuminance","kind":"function","signature":"rgbLuminance(c)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0084:rgbBrightness","exportIndex":84,"name":"rgbBrightness","kind":"function","signature":"rgbBrightness(c)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0085:rgbMax","exportIndex":85,"name":"rgbMax","kind":"function","signature":"rgbMax(c)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0086:rgbMin","exportIndex":86,"name":"rgbMin","kind":"function","signature":"rgbMin(c)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0087:rgbInvert","exportIndex":87,"name":"rgbInvert","kind":"function","signature":"rgbInvert(c)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0088:rgbGrayscale","exportIndex":88,"name":"rgbGrayscale","kind":"function","signature":"rgbGrayscale(c)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0089:hslLerp","exportIndex":89,"name":"hslLerp","kind":"function","signature":"hslLerp(a, b, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0090:rgbToLab","exportIndex":90,"name":"rgbToLab","kind":"function","signature":"rgbToLab(c)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0091:labToRgb","exportIndex":91,"name":"labToRgb","kind":"function","signature":"labToRgb(c)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0092:rgbDistance","exportIndex":92,"name":"rgbDistance","kind":"function","signature":"rgbDistance(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0093:rgbToLch","exportIndex":93,"name":"rgbToLch","kind":"function","signature":"rgbToLch(c)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0094:lchToRgb","exportIndex":94,"name":"lchToRgb","kind":"function","signature":"lchToRgb(c)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0095:rgbToOklch","exportIndex":95,"name":"rgbToOklch","kind":"function","signature":"rgbToOklch(c)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0096:oklchToRgb","exportIndex":96,"name":"oklchToRgb","kind":"function","signature":"oklchToRgb(c)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0097:blendNormal","exportIndex":97,"name":"blendNormal","kind":"function","signature":"blendNormal(base, blend)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0098:blendMultiply","exportIndex":98,"name":"blendMultiply","kind":"function","signature":"blendMultiply(base, blend)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0099:blendScreen","exportIndex":99,"name":"blendScreen","kind":"function","signature":"blendScreen(base, blend)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0100:blendOverlay","exportIndex":100,"name":"blendOverlay","kind":"function","signature":"blendOverlay(base, blend)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0101:blendDarken","exportIndex":101,"name":"blendDarken","kind":"function","signature":"blendDarken(base, blend)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0102:blendLighten","exportIndex":102,"name":"blendLighten","kind":"function","signature":"blendLighten(base, blend)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0103:blendDifference","exportIndex":103,"name":"blendDifference","kind":"function","signature":"blendDifference(base, blend)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0104:blendExclusion","exportIndex":104,"name":"blendExclusion","kind":"function","signature":"blendExclusion(base, blend)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0105:blendAdd","exportIndex":105,"name":"blendAdd","kind":"function","signature":"blendAdd(base, blend)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0106:blendSubtract","exportIndex":106,"name":"blendSubtract","kind":"function","signature":"blendSubtract(base, blend)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0107:COLOR_LUMA_REC709","exportIndex":107,"name":"COLOR_LUMA_REC709","kind":"constant","signature":"COLOR_LUMA_REC709","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0108:COLOR_LUMA_REC601","exportIndex":108,"name":"COLOR_LUMA_REC601","kind":"constant","signature":"COLOR_LUMA_REC601","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0109:COLOR_LUMA_REC2020","exportIndex":109,"name":"COLOR_LUMA_REC2020","kind":"constant","signature":"COLOR_LUMA_REC2020","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0110:COLOR_SPACE_METADATA","exportIndex":110,"name":"COLOR_SPACE_METADATA","kind":"constant","signature":"COLOR_SPACE_METADATA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0111:CSS_NAMED_COLORS","exportIndex":111,"name":"CSS_NAMED_COLORS","kind":"constant","signature":"CSS_NAMED_COLORS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0112:CSS_SYSTEM_COLOR_KEYWORDS","exportIndex":112,"name":"CSS_SYSTEM_COLOR_KEYWORDS","kind":"constant","signature":"CSS_SYSTEM_COLOR_KEYWORDS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0113:CSS_DEPRECATED_SYSTEM_COLOR_MAP","exportIndex":113,"name":"CSS_DEPRECATED_SYSTEM_COLOR_MAP","kind":"constant","signature":"CSS_DEPRECATED_SYSTEM_COLOR_MAP","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0114:CANVAS_PREDEFINED_COLOR_SPACES","exportIndex":114,"name":"CANVAS_PREDEFINED_COLOR_SPACES","kind":"constant","signature":"CANVAS_PREDEFINED_COLOR_SPACES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0115:CANVAS_COLOR_TYPES","exportIndex":115,"name":"CANVAS_COLOR_TYPES","kind":"constant","signature":"CANVAS_COLOR_TYPES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0116:CANVAS_IMAGE_DATA_COLOR_SPACES","exportIndex":116,"name":"CANVAS_IMAGE_DATA_COLOR_SPACES","kind":"constant","signature":"CANVAS_IMAGE_DATA_COLOR_SPACES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0117:CANVAS_IMAGE_DATA_PIXEL_FORMATS","exportIndex":117,"name":"CANVAS_IMAGE_DATA_PIXEL_FORMATS","kind":"constant","signature":"CANVAS_IMAGE_DATA_PIXEL_FORMATS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0118:DISPLAY_COLOR_GAMUT_MEDIA_VALUES","exportIndex":118,"name":"DISPLAY_COLOR_GAMUT_MEDIA_VALUES","kind":"constant","signature":"DISPLAY_COLOR_GAMUT_MEDIA_VALUES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0119:DISPLAY_DYNAMIC_RANGE_MEDIA_VALUES","exportIndex":119,"name":"DISPLAY_DYNAMIC_RANGE_MEDIA_VALUES","kind":"constant","signature":"DISPLAY_DYNAMIC_RANGE_MEDIA_VALUES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0120:COLOR_WHITE","exportIndex":120,"name":"COLOR_WHITE","kind":"constant","signature":"COLOR_WHITE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0121:COLOR_BLACK","exportIndex":121,"name":"COLOR_BLACK","kind":"constant","signature":"COLOR_BLACK","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0122:COLOR_RED","exportIndex":122,"name":"COLOR_RED","kind":"constant","signature":"COLOR_RED","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0123:COLOR_GREEN","exportIndex":123,"name":"COLOR_GREEN","kind":"constant","signature":"COLOR_GREEN","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0124:COLOR_BLUE","exportIndex":124,"name":"COLOR_BLUE","kind":"constant","signature":"COLOR_BLUE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0125:COLOR_YELLOW","exportIndex":125,"name":"COLOR_YELLOW","kind":"constant","signature":"COLOR_YELLOW","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0126:COLOR_CYAN","exportIndex":126,"name":"COLOR_CYAN","kind":"constant","signature":"COLOR_CYAN","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0127:COLOR_MAGENTA","exportIndex":127,"name":"COLOR_MAGENTA","kind":"constant","signature":"COLOR_MAGENTA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0128:COLOR_ORANGE","exportIndex":128,"name":"COLOR_ORANGE","kind":"constant","signature":"COLOR_ORANGE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0129:COLOR_PURPLE","exportIndex":129,"name":"COLOR_PURPLE","kind":"constant","signature":"COLOR_PURPLE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathColor.md","moduleTitle":"core/math/MathColor","source":"engine/core/math/MathColor.js","import":"/engine/core/math/MathColor.js","sourceHash":"bf522bdf31790488e62f46ccf2871f3574668250eaa7d6b3414e9ba1e17e2e56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathColor.js#0130:COLOR_GRAY","exportIndex":130,"name":"COLOR_GRAY","kind":"constant","signature":"COLOR_GRAY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathConstants.md","moduleTitle":"core/math/MathConstants","source":"engine/core/math/MathConstants.js","import":"/engine/core/math/MathConstants.js","sourceHash":"1b371cf20b8eb32d54c6d20454fc7f09dc12375b90025c7433cfb5b92c8643e8","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/MathConstants.js","title":"core/math/MathConstants","summary":"","exportCount":29}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathConstants.md","moduleTitle":"core/math/MathConstants","source":"engine/core/math/MathConstants.js","import":"/engine/core/math/MathConstants.js","sourceHash":"1b371cf20b8eb32d54c6d20454fc7f09dc12375b90025c7433cfb5b92c8643e8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathConstants.js#0000:PI","exportIndex":0,"name":"PI","kind":"constant","signature":"PI","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathConstants.md","moduleTitle":"core/math/MathConstants","source":"engine/core/math/MathConstants.js","import":"/engine/core/math/MathConstants.js","sourceHash":"1b371cf20b8eb32d54c6d20454fc7f09dc12375b90025c7433cfb5b92c8643e8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathConstants.js#0001:TAU","exportIndex":1,"name":"TAU","kind":"constant","signature":"TAU","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathConstants.md","moduleTitle":"core/math/MathConstants","source":"engine/core/math/MathConstants.js","import":"/engine/core/math/MathConstants.js","sourceHash":"1b371cf20b8eb32d54c6d20454fc7f09dc12375b90025c7433cfb5b92c8643e8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathConstants.js#0002:HALF_PI","exportIndex":2,"name":"HALF_PI","kind":"constant","signature":"HALF_PI","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathConstants.md","moduleTitle":"core/math/MathConstants","source":"engine/core/math/MathConstants.js","import":"/engine/core/math/MathConstants.js","sourceHash":"1b371cf20b8eb32d54c6d20454fc7f09dc12375b90025c7433cfb5b92c8643e8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathConstants.js#0003:QUARTER_PI","exportIndex":3,"name":"QUARTER_PI","kind":"constant","signature":"QUARTER_PI","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathConstants.md","moduleTitle":"core/math/MathConstants","source":"engine/core/math/MathConstants.js","import":"/engine/core/math/MathConstants.js","sourceHash":"1b371cf20b8eb32d54c6d20454fc7f09dc12375b90025c7433cfb5b92c8643e8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathConstants.js#0004:DEG2RAD","exportIndex":4,"name":"DEG2RAD","kind":"constant","signature":"DEG2RAD","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathConstants.md","moduleTitle":"core/math/MathConstants","source":"engine/core/math/MathConstants.js","import":"/engine/core/math/MathConstants.js","sourceHash":"1b371cf20b8eb32d54c6d20454fc7f09dc12375b90025c7433cfb5b92c8643e8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathConstants.js#0005:RAD2DEG","exportIndex":5,"name":"RAD2DEG","kind":"constant","signature":"RAD2DEG","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathConstants.md","moduleTitle":"core/math/MathConstants","source":"engine/core/math/MathConstants.js","import":"/engine/core/math/MathConstants.js","sourceHash":"1b371cf20b8eb32d54c6d20454fc7f09dc12375b90025c7433cfb5b92c8643e8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathConstants.js#0006:EPSILON","exportIndex":6,"name":"EPSILON","kind":"constant","signature":"EPSILON","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathConstants.md","moduleTitle":"core/math/MathConstants","source":"engine/core/math/MathConstants.js","import":"/engine/core/math/MathConstants.js","sourceHash":"1b371cf20b8eb32d54c6d20454fc7f09dc12375b90025c7433cfb5b92c8643e8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathConstants.js#0007:PHI","exportIndex":7,"name":"PHI","kind":"constant","signature":"PHI","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathConstants.md","moduleTitle":"core/math/MathConstants","source":"engine/core/math/MathConstants.js","import":"/engine/core/math/MathConstants.js","sourceHash":"1b371cf20b8eb32d54c6d20454fc7f09dc12375b90025c7433cfb5b92c8643e8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathConstants.js#0008:SQRT2","exportIndex":8,"name":"SQRT2","kind":"constant","signature":"SQRT2","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathConstants.md","moduleTitle":"core/math/MathConstants","source":"engine/core/math/MathConstants.js","import":"/engine/core/math/MathConstants.js","sourceHash":"1b371cf20b8eb32d54c6d20454fc7f09dc12375b90025c7433cfb5b92c8643e8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathConstants.js#0009:SQRT3","exportIndex":9,"name":"SQRT3","kind":"constant","signature":"SQRT3","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathConstants.md","moduleTitle":"core/math/MathConstants","source":"engine/core/math/MathConstants.js","import":"/engine/core/math/MathConstants.js","sourceHash":"1b371cf20b8eb32d54c6d20454fc7f09dc12375b90025c7433cfb5b92c8643e8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathConstants.js#0010:SQRT5","exportIndex":10,"name":"SQRT5","kind":"constant","signature":"SQRT5","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathConstants.md","moduleTitle":"core/math/MathConstants","source":"engine/core/math/MathConstants.js","import":"/engine/core/math/MathConstants.js","sourceHash":"1b371cf20b8eb32d54c6d20454fc7f09dc12375b90025c7433cfb5b92c8643e8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathConstants.js#0011:INV_SQRT2","exportIndex":11,"name":"INV_SQRT2","kind":"constant","signature":"INV_SQRT2","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathConstants.md","moduleTitle":"core/math/MathConstants","source":"engine/core/math/MathConstants.js","import":"/engine/core/math/MathConstants.js","sourceHash":"1b371cf20b8eb32d54c6d20454fc7f09dc12375b90025c7433cfb5b92c8643e8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathConstants.js#0012:INV_SQRT3","exportIndex":12,"name":"INV_SQRT3","kind":"constant","signature":"INV_SQRT3","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathConstants.md","moduleTitle":"core/math/MathConstants","source":"engine/core/math/MathConstants.js","import":"/engine/core/math/MathConstants.js","sourceHash":"1b371cf20b8eb32d54c6d20454fc7f09dc12375b90025c7433cfb5b92c8643e8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathConstants.js#0013:E","exportIndex":13,"name":"E","kind":"constant","signature":"E","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathConstants.md","moduleTitle":"core/math/MathConstants","source":"engine/core/math/MathConstants.js","import":"/engine/core/math/MathConstants.js","sourceHash":"1b371cf20b8eb32d54c6d20454fc7f09dc12375b90025c7433cfb5b92c8643e8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathConstants.js#0014:LN2","exportIndex":14,"name":"LN2","kind":"constant","signature":"LN2","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathConstants.md","moduleTitle":"core/math/MathConstants","source":"engine/core/math/MathConstants.js","import":"/engine/core/math/MathConstants.js","sourceHash":"1b371cf20b8eb32d54c6d20454fc7f09dc12375b90025c7433cfb5b92c8643e8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathConstants.js#0015:LN10","exportIndex":15,"name":"LN10","kind":"constant","signature":"LN10","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathConstants.md","moduleTitle":"core/math/MathConstants","source":"engine/core/math/MathConstants.js","import":"/engine/core/math/MathConstants.js","sourceHash":"1b371cf20b8eb32d54c6d20454fc7f09dc12375b90025c7433cfb5b92c8643e8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathConstants.js#0016:LOG2E","exportIndex":16,"name":"LOG2E","kind":"constant","signature":"LOG2E","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathConstants.md","moduleTitle":"core/math/MathConstants","source":"engine/core/math/MathConstants.js","import":"/engine/core/math/MathConstants.js","sourceHash":"1b371cf20b8eb32d54c6d20454fc7f09dc12375b90025c7433cfb5b92c8643e8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathConstants.js#0017:LOG10E","exportIndex":17,"name":"LOG10E","kind":"constant","signature":"LOG10E","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathConstants.md","moduleTitle":"core/math/MathConstants","source":"engine/core/math/MathConstants.js","import":"/engine/core/math/MathConstants.js","sourceHash":"1b371cf20b8eb32d54c6d20454fc7f09dc12375b90025c7433cfb5b92c8643e8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathConstants.js#0018:SPEED_OF_LIGHT","exportIndex":18,"name":"SPEED_OF_LIGHT","kind":"constant","signature":"SPEED_OF_LIGHT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathConstants.md","moduleTitle":"core/math/MathConstants","source":"engine/core/math/MathConstants.js","import":"/engine/core/math/MathConstants.js","sourceHash":"1b371cf20b8eb32d54c6d20454fc7f09dc12375b90025c7433cfb5b92c8643e8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathConstants.js#0019:PLANCK","exportIndex":19,"name":"PLANCK","kind":"constant","signature":"PLANCK","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathConstants.md","moduleTitle":"core/math/MathConstants","source":"engine/core/math/MathConstants.js","import":"/engine/core/math/MathConstants.js","sourceHash":"1b371cf20b8eb32d54c6d20454fc7f09dc12375b90025c7433cfb5b92c8643e8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathConstants.js#0020:BOLTZMANN","exportIndex":20,"name":"BOLTZMANN","kind":"constant","signature":"BOLTZMANN","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathConstants.md","moduleTitle":"core/math/MathConstants","source":"engine/core/math/MathConstants.js","import":"/engine/core/math/MathConstants.js","sourceHash":"1b371cf20b8eb32d54c6d20454fc7f09dc12375b90025c7433cfb5b92c8643e8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathConstants.js#0021:AVOGADRO","exportIndex":21,"name":"AVOGADRO","kind":"constant","signature":"AVOGADRO","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathConstants.md","moduleTitle":"core/math/MathConstants","source":"engine/core/math/MathConstants.js","import":"/engine/core/math/MathConstants.js","sourceHash":"1b371cf20b8eb32d54c6d20454fc7f09dc12375b90025c7433cfb5b92c8643e8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathConstants.js#0022:GRAVITATIONAL","exportIndex":22,"name":"GRAVITATIONAL","kind":"constant","signature":"GRAVITATIONAL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathConstants.md","moduleTitle":"core/math/MathConstants","source":"engine/core/math/MathConstants.js","import":"/engine/core/math/MathConstants.js","sourceHash":"1b371cf20b8eb32d54c6d20454fc7f09dc12375b90025c7433cfb5b92c8643e8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathConstants.js#0023:EARTH_GRAVITY","exportIndex":23,"name":"EARTH_GRAVITY","kind":"constant","signature":"EARTH_GRAVITY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathConstants.md","moduleTitle":"core/math/MathConstants","source":"engine/core/math/MathConstants.js","import":"/engine/core/math/MathConstants.js","sourceHash":"1b371cf20b8eb32d54c6d20454fc7f09dc12375b90025c7433cfb5b92c8643e8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathConstants.js#0024:EARTH_RADIUS","exportIndex":24,"name":"EARTH_RADIUS","kind":"constant","signature":"EARTH_RADIUS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathConstants.md","moduleTitle":"core/math/MathConstants","source":"engine/core/math/MathConstants.js","import":"/engine/core/math/MathConstants.js","sourceHash":"1b371cf20b8eb32d54c6d20454fc7f09dc12375b90025c7433cfb5b92c8643e8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathConstants.js#0025:EARTH_MASS","exportIndex":25,"name":"EARTH_MASS","kind":"constant","signature":"EARTH_MASS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathConstants.md","moduleTitle":"core/math/MathConstants","source":"engine/core/math/MathConstants.js","import":"/engine/core/math/MathConstants.js","sourceHash":"1b371cf20b8eb32d54c6d20454fc7f09dc12375b90025c7433cfb5b92c8643e8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathConstants.js#0026:STEFAN_BOLTZMANN","exportIndex":26,"name":"STEFAN_BOLTZMANN","kind":"constant","signature":"STEFAN_BOLTZMANN","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathConstants.md","moduleTitle":"core/math/MathConstants","source":"engine/core/math/MathConstants.js","import":"/engine/core/math/MathConstants.js","sourceHash":"1b371cf20b8eb32d54c6d20454fc7f09dc12375b90025c7433cfb5b92c8643e8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathConstants.js#0027:VACUUM_PERMITTIVITY","exportIndex":27,"name":"VACUUM_PERMITTIVITY","kind":"constant","signature":"VACUUM_PERMITTIVITY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathConstants.md","moduleTitle":"core/math/MathConstants","source":"engine/core/math/MathConstants.js","import":"/engine/core/math/MathConstants.js","sourceHash":"1b371cf20b8eb32d54c6d20454fc7f09dc12375b90025c7433cfb5b92c8643e8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathConstants.js#0028:VACUUM_PERMEABILITY","exportIndex":28,"name":"VACUUM_PERMEABILITY","kind":"constant","signature":"VACUUM_PERMEABILITY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathDualQuat.md","moduleTitle":"core/math/MathDualQuat","source":"engine/core/math/MathDualQuat.js","import":"/engine/core/math/MathDualQuat.js","sourceHash":"df9af00af6769c29b4352b65a64db88653958ef7ebbe3f4d671388e5845e2ec7","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/MathDualQuat.js","title":"core/math/MathDualQuat","summary":"MathDualQuat.js - Dual Quaternion operations for skinning & rigid body interpolation Dual quaternion = [real_x, real_y, real_z, real_w, dual_x, dual_y, dual_z, dual_w] Real part = rotation quaternion, Dual part encodes translation Used for: DQS (Dual Quaternion Skinning), rigid body interpolation, screw motion","exportCount":22}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathDualQuat.md","moduleTitle":"core/math/MathDualQuat","source":"engine/core/math/MathDualQuat.js","import":"/engine/core/math/MathDualQuat.js","sourceHash":"df9af00af6769c29b4352b65a64db88653958ef7ebbe3f4d671388e5845e2ec7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathDualQuat.js#0000:dqFromRotationTranslation","exportIndex":0,"name":"dqFromRotationTranslation","kind":"function","signature":"dqFromRotationTranslation(q, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathDualQuat.md","moduleTitle":"core/math/MathDualQuat","source":"engine/core/math/MathDualQuat.js","import":"/engine/core/math/MathDualQuat.js","sourceHash":"df9af00af6769c29b4352b65a64db88653958ef7ebbe3f4d671388e5845e2ec7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathDualQuat.js#0001:dqFromMat4","exportIndex":1,"name":"dqFromMat4","kind":"function","signature":"dqFromMat4(m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathDualQuat.md","moduleTitle":"core/math/MathDualQuat","source":"engine/core/math/MathDualQuat.js","import":"/engine/core/math/MathDualQuat.js","sourceHash":"df9af00af6769c29b4352b65a64db88653958ef7ebbe3f4d671388e5845e2ec7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathDualQuat.js#0002:dqGetTranslation","exportIndex":2,"name":"dqGetTranslation","kind":"function","signature":"dqGetTranslation(dq)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathDualQuat.md","moduleTitle":"core/math/MathDualQuat","source":"engine/core/math/MathDualQuat.js","import":"/engine/core/math/MathDualQuat.js","sourceHash":"df9af00af6769c29b4352b65a64db88653958ef7ebbe3f4d671388e5845e2ec7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathDualQuat.js#0003:dqToMat4","exportIndex":3,"name":"dqToMat4","kind":"function","signature":"dqToMat4(dq)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathDualQuat.md","moduleTitle":"core/math/MathDualQuat","source":"engine/core/math/MathDualQuat.js","import":"/engine/core/math/MathDualQuat.js","sourceHash":"df9af00af6769c29b4352b65a64db88653958ef7ebbe3f4d671388e5845e2ec7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathDualQuat.js#0004:dqMultiply","exportIndex":4,"name":"dqMultiply","kind":"function","signature":"dqMultiply(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathDualQuat.md","moduleTitle":"core/math/MathDualQuat","source":"engine/core/math/MathDualQuat.js","import":"/engine/core/math/MathDualQuat.js","sourceHash":"df9af00af6769c29b4352b65a64db88653958ef7ebbe3f4d671388e5845e2ec7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathDualQuat.js#0005:dqConjugate","exportIndex":5,"name":"dqConjugate","kind":"function","signature":"dqConjugate(dq)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathDualQuat.md","moduleTitle":"core/math/MathDualQuat","source":"engine/core/math/MathDualQuat.js","import":"/engine/core/math/MathDualQuat.js","sourceHash":"df9af00af6769c29b4352b65a64db88653958ef7ebbe3f4d671388e5845e2ec7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathDualQuat.js#0006:dqNormalize","exportIndex":6,"name":"dqNormalize","kind":"function","signature":"dqNormalize(dq)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathDualQuat.md","moduleTitle":"core/math/MathDualQuat","source":"engine/core/math/MathDualQuat.js","import":"/engine/core/math/MathDualQuat.js","sourceHash":"df9af00af6769c29b4352b65a64db88653958ef7ebbe3f4d671388e5845e2ec7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathDualQuat.js#0007:dqInverse","exportIndex":7,"name":"dqInverse","kind":"function","signature":"dqInverse(dq)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathDualQuat.md","moduleTitle":"core/math/MathDualQuat","source":"engine/core/math/MathDualQuat.js","import":"/engine/core/math/MathDualQuat.js","sourceHash":"df9af00af6769c29b4352b65a64db88653958ef7ebbe3f4d671388e5845e2ec7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathDualQuat.js#0008:dqLerp","exportIndex":8,"name":"dqLerp","kind":"function","signature":"dqLerp(a, b, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathDualQuat.md","moduleTitle":"core/math/MathDualQuat","source":"engine/core/math/MathDualQuat.js","import":"/engine/core/math/MathDualQuat.js","sourceHash":"df9af00af6769c29b4352b65a64db88653958ef7ebbe3f4d671388e5845e2ec7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathDualQuat.js#0009:dqSclerp","exportIndex":9,"name":"dqSclerp","kind":"function","signature":"dqSclerp(a, b, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathDualQuat.md","moduleTitle":"core/math/MathDualQuat","source":"engine/core/math/MathDualQuat.js","import":"/engine/core/math/MathDualQuat.js","sourceHash":"df9af00af6769c29b4352b65a64db88653958ef7ebbe3f4d671388e5845e2ec7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathDualQuat.js#0010:dqTransformPoint","exportIndex":10,"name":"dqTransformPoint","kind":"function","signature":"dqTransformPoint(dq, point)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathDualQuat.md","moduleTitle":"core/math/MathDualQuat","source":"engine/core/math/MathDualQuat.js","import":"/engine/core/math/MathDualQuat.js","sourceHash":"df9af00af6769c29b4352b65a64db88653958ef7ebbe3f4d671388e5845e2ec7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathDualQuat.js#0011:dqTransformVec3","exportIndex":11,"name":"dqTransformVec3","kind":"function","signature":"dqTransformVec3(dq, vec)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathDualQuat.md","moduleTitle":"core/math/MathDualQuat","source":"engine/core/math/MathDualQuat.js","import":"/engine/core/math/MathDualQuat.js","sourceHash":"df9af00af6769c29b4352b65a64db88653958ef7ebbe3f4d671388e5845e2ec7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathDualQuat.js#0012:dqEquals","exportIndex":12,"name":"dqEquals","kind":"function","signature":"dqEquals(a, b, eps = EPSILON)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathDualQuat.md","moduleTitle":"core/math/MathDualQuat","source":"engine/core/math/MathDualQuat.js","import":"/engine/core/math/MathDualQuat.js","sourceHash":"df9af00af6769c29b4352b65a64db88653958ef7ebbe3f4d671388e5845e2ec7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathDualQuat.js#0013:dqCreate","exportIndex":13,"name":"dqCreate","kind":"function","signature":"dqCreate(rx, ry, rz, rw, dx, dy, dz, dw)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathDualQuat.md","moduleTitle":"core/math/MathDualQuat","source":"engine/core/math/MathDualQuat.js","import":"/engine/core/math/MathDualQuat.js","sourceHash":"df9af00af6769c29b4352b65a64db88653958ef7ebbe3f4d671388e5845e2ec7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathDualQuat.js#0014:dqIdentity","exportIndex":14,"name":"dqIdentity","kind":"function","signature":"dqIdentity()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathDualQuat.md","moduleTitle":"core/math/MathDualQuat","source":"engine/core/math/MathDualQuat.js","import":"/engine/core/math/MathDualQuat.js","sourceHash":"df9af00af6769c29b4352b65a64db88653958ef7ebbe3f4d671388e5845e2ec7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathDualQuat.js#0015:dqClone","exportIndex":15,"name":"dqClone","kind":"function","signature":"dqClone(dq)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathDualQuat.md","moduleTitle":"core/math/MathDualQuat","source":"engine/core/math/MathDualQuat.js","import":"/engine/core/math/MathDualQuat.js","sourceHash":"df9af00af6769c29b4352b65a64db88653958ef7ebbe3f4d671388e5845e2ec7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathDualQuat.js#0016:dqCopy","exportIndex":16,"name":"dqCopy","kind":"function","signature":"dqCopy(out, dq)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathDualQuat.md","moduleTitle":"core/math/MathDualQuat","source":"engine/core/math/MathDualQuat.js","import":"/engine/core/math/MathDualQuat.js","sourceHash":"df9af00af6769c29b4352b65a64db88653958ef7ebbe3f4d671388e5845e2ec7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathDualQuat.js#0017:dqGetRotation","exportIndex":17,"name":"dqGetRotation","kind":"function","signature":"dqGetRotation(dq)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathDualQuat.md","moduleTitle":"core/math/MathDualQuat","source":"engine/core/math/MathDualQuat.js","import":"/engine/core/math/MathDualQuat.js","sourceHash":"df9af00af6769c29b4352b65a64db88653958ef7ebbe3f4d671388e5845e2ec7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathDualQuat.js#0018:dqAdd","exportIndex":18,"name":"dqAdd","kind":"function","signature":"dqAdd(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathDualQuat.md","moduleTitle":"core/math/MathDualQuat","source":"engine/core/math/MathDualQuat.js","import":"/engine/core/math/MathDualQuat.js","sourceHash":"df9af00af6769c29b4352b65a64db88653958ef7ebbe3f4d671388e5845e2ec7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathDualQuat.js#0019:dqScale","exportIndex":19,"name":"dqScale","kind":"function","signature":"dqScale(dq, s)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathDualQuat.md","moduleTitle":"core/math/MathDualQuat","source":"engine/core/math/MathDualQuat.js","import":"/engine/core/math/MathDualQuat.js","sourceHash":"df9af00af6769c29b4352b65a64db88653958ef7ebbe3f4d671388e5845e2ec7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathDualQuat.js#0020:dqDot","exportIndex":20,"name":"dqDot","kind":"function","signature":"dqDot(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathDualQuat.md","moduleTitle":"core/math/MathDualQuat","source":"engine/core/math/MathDualQuat.js","import":"/engine/core/math/MathDualQuat.js","sourceHash":"df9af00af6769c29b4352b65a64db88653958ef7ebbe3f4d671388e5845e2ec7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathDualQuat.js#0021:dqLength","exportIndex":21,"name":"dqLength","kind":"function","signature":"dqLength(dq)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/MathEasing.js","title":"core/math/MathEasing","summary":"MathEasing.js - Easing functions, Bezier curves, splines For animation, UI transitions, and procedural motion","exportCount":66}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0000:easeOutBounce","exportIndex":0,"name":"easeOutBounce","kind":"function","signature":"easeOutBounce(t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0001:easeSpring","exportIndex":1,"name":"easeSpring","kind":"function","signature":"easeSpring(t, mass = 1, stiffness = 100, damping = 10)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0002:easeSpringSimple","exportIndex":2,"name":"easeSpringSimple","kind":"function","signature":"easeSpringSimple(t, bounces = 3, decay = 0.4)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0003:cssCubicBezierValue","exportIndex":3,"name":"cssCubicBezierValue","kind":"function","signature":"cssCubicBezierValue(x1, y1, x2, y2, progress)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0004:cssStepEasing","exportIndex":4,"name":"cssStepEasing","kind":"function","signature":"cssStepEasing(progress, steps = 1, position = 'end', options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0005:cssEasingParseReport","exportIndex":5,"name":"cssEasingParseReport","kind":"function","signature":"cssEasingParseReport(easing)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0006:cssEasingReport","exportIndex":6,"name":"cssEasingReport","kind":"function","signature":"cssEasingReport(easing, progress, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0007:cssEasingValue","exportIndex":7,"name":"cssEasingValue","kind":"function","signature":"cssEasingValue(easing, progress, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0008:cubicBezierEasing","exportIndex":8,"name":"cubicBezierEasing","kind":"function","signature":"cubicBezierEasing(x1, y1, x2, y2)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0009:catmullRom","exportIndex":9,"name":"catmullRom","kind":"function","signature":"catmullRom(p0, p1, p2, p3, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0010:catmullRomSpline","exportIndex":10,"name":"catmullRomSpline","kind":"function","signature":"catmullRomSpline(points, t, closed = false)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0011:hermite","exportIndex":11,"name":"hermite","kind":"function","signature":"hermite(p0, m0, p1, m1, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0012:bspline","exportIndex":12,"name":"bspline","kind":"function","signature":"bspline(points, t, degree = 3)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0013:computeArcLengthTable","exportIndex":13,"name":"computeArcLengthTable","kind":"function","signature":"computeArcLengthTable(curveFn, segments = 100)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0014:getUniformT","exportIndex":14,"name":"getUniformT","kind":"function","signature":"getUniformT(arcTable, u)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0015:easeLinear","exportIndex":15,"name":"easeLinear","kind":"function","signature":"easeLinear(t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0016:easeInQuad","exportIndex":16,"name":"easeInQuad","kind":"function","signature":"easeInQuad(t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0017:easeOutQuad","exportIndex":17,"name":"easeOutQuad","kind":"function","signature":"easeOutQuad(t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0018:easeInOutQuad","exportIndex":18,"name":"easeInOutQuad","kind":"function","signature":"easeInOutQuad(t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0019:easeInCubic","exportIndex":19,"name":"easeInCubic","kind":"function","signature":"easeInCubic(t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0020:easeOutCubic","exportIndex":20,"name":"easeOutCubic","kind":"function","signature":"easeOutCubic(t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0021:easeInOutCubic","exportIndex":21,"name":"easeInOutCubic","kind":"function","signature":"easeInOutCubic(t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0022:easeInQuart","exportIndex":22,"name":"easeInQuart","kind":"function","signature":"easeInQuart(t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0023:easeOutQuart","exportIndex":23,"name":"easeOutQuart","kind":"function","signature":"easeOutQuart(t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0024:easeInOutQuart","exportIndex":24,"name":"easeInOutQuart","kind":"function","signature":"easeInOutQuart(t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0025:easeInQuint","exportIndex":25,"name":"easeInQuint","kind":"function","signature":"easeInQuint(t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0026:easeOutQuint","exportIndex":26,"name":"easeOutQuint","kind":"function","signature":"easeOutQuint(t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0027:easeInOutQuint","exportIndex":27,"name":"easeInOutQuint","kind":"function","signature":"easeInOutQuint(t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0028:easeInSine","exportIndex":28,"name":"easeInSine","kind":"function","signature":"easeInSine(t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0029:easeOutSine","exportIndex":29,"name":"easeOutSine","kind":"function","signature":"easeOutSine(t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0030:easeInOutSine","exportIndex":30,"name":"easeInOutSine","kind":"function","signature":"easeInOutSine(t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0031:easeInExpo","exportIndex":31,"name":"easeInExpo","kind":"function","signature":"easeInExpo(t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0032:easeOutExpo","exportIndex":32,"name":"easeOutExpo","kind":"function","signature":"easeOutExpo(t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0033:easeInOutExpo","exportIndex":33,"name":"easeInOutExpo","kind":"function","signature":"easeInOutExpo(t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0034:easeInCirc","exportIndex":34,"name":"easeInCirc","kind":"function","signature":"easeInCirc(t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0035:easeOutCirc","exportIndex":35,"name":"easeOutCirc","kind":"function","signature":"easeOutCirc(t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0036:easeInOutCirc","exportIndex":36,"name":"easeInOutCirc","kind":"function","signature":"easeInOutCirc(t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0037:easeInElastic","exportIndex":37,"name":"easeInElastic","kind":"function","signature":"easeInElastic(t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0038:easeOutElastic","exportIndex":38,"name":"easeOutElastic","kind":"function","signature":"easeOutElastic(t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0039:easeInOutElastic","exportIndex":39,"name":"easeInOutElastic","kind":"function","signature":"easeInOutElastic(t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0040:easeInBack","exportIndex":40,"name":"easeInBack","kind":"function","signature":"easeInBack(t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0041:easeOutBack","exportIndex":41,"name":"easeOutBack","kind":"function","signature":"easeOutBack(t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0042:easeInOutBack","exportIndex":42,"name":"easeInOutBack","kind":"function","signature":"easeInOutBack(t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0043:easeInBounce","exportIndex":43,"name":"easeInBounce","kind":"function","signature":"easeInBounce(t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0044:easeInOutBounce","exportIndex":44,"name":"easeInOutBounce","kind":"function","signature":"easeInOutBounce(t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0045:easeInPow","exportIndex":45,"name":"easeInPow","kind":"function","signature":"easeInPow(t, p)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0046:easeOutPow","exportIndex":46,"name":"easeOutPow","kind":"function","signature":"easeOutPow(t, p)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0047:easeInOutPow","exportIndex":47,"name":"easeInOutPow","kind":"function","signature":"easeInOutPow(t, p)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0048:bezier2","exportIndex":48,"name":"bezier2","kind":"function","signature":"bezier2(p0, p1, p2, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0049:bezier2Vec2","exportIndex":49,"name":"bezier2Vec2","kind":"function","signature":"bezier2Vec2(p0, p1, p2, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0050:bezier2Vec3","exportIndex":50,"name":"bezier2Vec3","kind":"function","signature":"bezier2Vec3(p0, p1, p2, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0051:bezier3","exportIndex":51,"name":"bezier3","kind":"function","signature":"bezier3(p0, p1, p2, p3, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0052:bezier3Vec2","exportIndex":52,"name":"bezier3Vec2","kind":"function","signature":"bezier3Vec2(p0, p1, p2, p3, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0053:bezier3Vec3","exportIndex":53,"name":"bezier3Vec3","kind":"function","signature":"bezier3Vec3(p0, p1, p2, p3, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0054:bezier3Derivative","exportIndex":54,"name":"bezier3Derivative","kind":"function","signature":"bezier3Derivative(p0, p1, p2, p3, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0055:bezier3DerivativeVec3","exportIndex":55,"name":"bezier3DerivativeVec3","kind":"function","signature":"bezier3DerivativeVec3(p0, p1, p2, p3, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0056:catmullRomVec3","exportIndex":56,"name":"catmullRomVec3","kind":"function","signature":"catmullRomVec3(p0, p1, p2, p3, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0057:hermiteVec3","exportIndex":57,"name":"hermiteVec3","kind":"function","signature":"hermiteVec3(p0, m0, p1, m1, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0058:getEasing","exportIndex":58,"name":"getEasing","kind":"function","signature":"getEasing(name)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0059:CSS_CUBIC_BEZIER_PRESETS","exportIndex":59,"name":"CSS_CUBIC_BEZIER_PRESETS","kind":"constant","signature":"CSS_CUBIC_BEZIER_PRESETS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0060:CSS_STEP_POSITION_ALIASES","exportIndex":60,"name":"CSS_STEP_POSITION_ALIASES","kind":"constant","signature":"CSS_STEP_POSITION_ALIASES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0061:cssEase","exportIndex":61,"name":"cssEase","kind":"constant","signature":"cssEase","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0062:cssEaseIn","exportIndex":62,"name":"cssEaseIn","kind":"constant","signature":"cssEaseIn","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0063:cssEaseOut","exportIndex":63,"name":"cssEaseOut","kind":"constant","signature":"cssEaseOut","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0064:cssEaseInOut","exportIndex":64,"name":"cssEaseInOut","kind":"constant","signature":"cssEaseInOut","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEasing.md","moduleTitle":"core/math/MathEasing","source":"engine/core/math/MathEasing.js","import":"/engine/core/math/MathEasing.js","sourceHash":"674a42a676226f51a26f38166050fc380aafafbdfefa9a84a7856160883ee486","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEasing.js#0065:EASING_FUNCTIONS","exportIndex":65,"name":"EASING_FUNCTIONS","kind":"constant","signature":"EASING_FUNCTIONS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEntropy.md","moduleTitle":"core/math/MathEntropy","source":"engine/core/math/MathEntropy.js","import":"/engine/core/math/MathEntropy.js","sourceHash":"1093fca7d250da419d9f5a23d9a8b4cc5ecc425c66c2db8699746f563a0402be","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/MathEntropy.js","title":"core/math/MathEntropy","summary":"MathEntropy.js - histograms, entropy reports, and distribution diagnostics.","exportCount":29}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEntropy.md","moduleTitle":"core/math/MathEntropy","source":"engine/core/math/MathEntropy.js","import":"/engine/core/math/MathEntropy.js","sourceHash":"1093fca7d250da419d9f5a23d9a8b4cc5ecc425c66c2db8699746f563a0402be","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEntropy.js#0000:byteFrequencyHistogram","exportIndex":0,"name":"byteFrequencyHistogram","kind":"function","signature":"byteFrequencyHistogram(data, histogram = new Uint32Array(256)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEntropy.md","moduleTitle":"core/math/MathEntropy","source":"engine/core/math/MathEntropy.js","import":"/engine/core/math/MathEntropy.js","sourceHash":"1093fca7d250da419d9f5a23d9a8b4cc5ecc425c66c2db8699746f563a0402be","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEntropy.js#0001:symbolFrequencyHistogram","exportIndex":1,"name":"symbolFrequencyHistogram","kind":"function","signature":"symbolFrequencyHistogram(values, symbolCount, histogram = new Uint32Array(symbolCount)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEntropy.md","moduleTitle":"core/math/MathEntropy","source":"engine/core/math/MathEntropy.js","import":"/engine/core/math/MathEntropy.js","sourceHash":"1093fca7d250da419d9f5a23d9a8b4cc5ecc425c66c2db8699746f563a0402be","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEntropy.js#0002:histogramSampleCount","exportIndex":2,"name":"histogramSampleCount","kind":"function","signature":"histogramSampleCount(histogram)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEntropy.md","moduleTitle":"core/math/MathEntropy","source":"engine/core/math/MathEntropy.js","import":"/engine/core/math/MathEntropy.js","sourceHash":"1093fca7d250da419d9f5a23d9a8b4cc5ecc425c66c2db8699746f563a0402be","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEntropy.js#0003:histogramUniqueCount","exportIndex":3,"name":"histogramUniqueCount","kind":"function","signature":"histogramUniqueCount(histogram)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEntropy.md","moduleTitle":"core/math/MathEntropy","source":"engine/core/math/MathEntropy.js","import":"/engine/core/math/MathEntropy.js","sourceHash":"1093fca7d250da419d9f5a23d9a8b4cc5ecc425c66c2db8699746f563a0402be","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEntropy.js#0004:probabilityTableFromHistogram","exportIndex":4,"name":"probabilityTableFromHistogram","kind":"function","signature":"probabilityTableFromHistogram(histogram, sampleCount = histogramSampleCount(histogram)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEntropy.md","moduleTitle":"core/math/MathEntropy","source":"engine/core/math/MathEntropy.js","import":"/engine/core/math/MathEntropy.js","sourceHash":"1093fca7d250da419d9f5a23d9a8b4cc5ecc425c66c2db8699746f563a0402be","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEntropy.js#0005:shannonEntropyFromHistogram","exportIndex":5,"name":"shannonEntropyFromHistogram","kind":"function","signature":"shannonEntropyFromHistogram(histogram, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEntropy.md","moduleTitle":"core/math/MathEntropy","source":"engine/core/math/MathEntropy.js","import":"/engine/core/math/MathEntropy.js","sourceHash":"1093fca7d250da419d9f5a23d9a8b4cc5ecc425c66c2db8699746f563a0402be","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEntropy.js#0006:minEntropyFromHistogram","exportIndex":6,"name":"minEntropyFromHistogram","kind":"function","signature":"minEntropyFromHistogram(histogram, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEntropy.md","moduleTitle":"core/math/MathEntropy","source":"engine/core/math/MathEntropy.js","import":"/engine/core/math/MathEntropy.js","sourceHash":"1093fca7d250da419d9f5a23d9a8b4cc5ecc425c66c2db8699746f563a0402be","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEntropy.js#0007:maxEntropyForSymbolCount","exportIndex":7,"name":"maxEntropyForSymbolCount","kind":"function","signature":"maxEntropyForSymbolCount(symbolCount, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEntropy.md","moduleTitle":"core/math/MathEntropy","source":"engine/core/math/MathEntropy.js","import":"/engine/core/math/MathEntropy.js","sourceHash":"1093fca7d250da419d9f5a23d9a8b4cc5ecc425c66c2db8699746f563a0402be","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEntropy.js#0008:collisionProbabilityFromHistogram","exportIndex":8,"name":"collisionProbabilityFromHistogram","kind":"function","signature":"collisionProbabilityFromHistogram(histogram)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEntropy.md","moduleTitle":"core/math/MathEntropy","source":"engine/core/math/MathEntropy.js","import":"/engine/core/math/MathEntropy.js","sourceHash":"1093fca7d250da419d9f5a23d9a8b4cc5ecc425c66c2db8699746f563a0402be","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEntropy.js#0009:klDivergence","exportIndex":9,"name":"klDivergence","kind":"function","signature":"klDivergence(pDistribution, qDistribution, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEntropy.md","moduleTitle":"core/math/MathEntropy","source":"engine/core/math/MathEntropy.js","import":"/engine/core/math/MathEntropy.js","sourceHash":"1093fca7d250da419d9f5a23d9a8b4cc5ecc425c66c2db8699746f563a0402be","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEntropy.js#0010:crossEntropy","exportIndex":10,"name":"crossEntropy","kind":"function","signature":"crossEntropy(pDistribution, qDistribution, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEntropy.md","moduleTitle":"core/math/MathEntropy","source":"engine/core/math/MathEntropy.js","import":"/engine/core/math/MathEntropy.js","sourceHash":"1093fca7d250da419d9f5a23d9a8b4cc5ecc425c66c2db8699746f563a0402be","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEntropy.js#0011:mutualInformationFromJointHistogram","exportIndex":11,"name":"mutualInformationFromJointHistogram","kind":"function","signature":"mutualInformationFromJointHistogram(jointHistogram, xSymbolCount, ySymbolCount, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEntropy.md","moduleTitle":"core/math/MathEntropy","source":"engine/core/math/MathEntropy.js","import":"/engine/core/math/MathEntropy.js","sourceHash":"1093fca7d250da419d9f5a23d9a8b4cc5ecc425c66c2db8699746f563a0402be","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEntropy.js#0012:conditionalEntropyFromJointHistogram","exportIndex":12,"name":"conditionalEntropyFromJointHistogram","kind":"function","signature":"conditionalEntropyFromJointHistogram(jointHistogram, xSymbolCount, ySymbolCount, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEntropy.md","moduleTitle":"core/math/MathEntropy","source":"engine/core/math/MathEntropy.js","import":"/engine/core/math/MathEntropy.js","sourceHash":"1093fca7d250da419d9f5a23d9a8b4cc5ecc425c66c2db8699746f563a0402be","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEntropy.js#0013:jointEntropyReport","exportIndex":13,"name":"jointEntropyReport","kind":"function","signature":"jointEntropyReport(jointHistogram, xSymbolCount, ySymbolCount, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEntropy.md","moduleTitle":"core/math/MathEntropy","source":"engine/core/math/MathEntropy.js","import":"/engine/core/math/MathEntropy.js","sourceHash":"1093fca7d250da419d9f5a23d9a8b4cc5ecc425c66c2db8699746f563a0402be","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEntropy.js#0014:bitRunReport","exportIndex":14,"name":"bitRunReport","kind":"function","signature":"bitRunReport(data, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEntropy.md","moduleTitle":"core/math/MathEntropy","source":"engine/core/math/MathEntropy.js","import":"/engine/core/math/MathEntropy.js","sourceHash":"1093fca7d250da419d9f5a23d9a8b4cc5ecc425c66c2db8699746f563a0402be","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEntropy.js#0015:monobitRatio","exportIndex":15,"name":"monobitRatio","kind":"function","signature":"monobitRatio(data, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEntropy.md","moduleTitle":"core/math/MathEntropy","source":"engine/core/math/MathEntropy.js","import":"/engine/core/math/MathEntropy.js","sourceHash":"1093fca7d250da419d9f5a23d9a8b4cc5ecc425c66c2db8699746f563a0402be","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEntropy.js#0016:byteDistributionReport","exportIndex":16,"name":"byteDistributionReport","kind":"function","signature":"byteDistributionReport(data, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEntropy.md","moduleTitle":"core/math/MathEntropy","source":"engine/core/math/MathEntropy.js","import":"/engine/core/math/MathEntropy.js","sourceHash":"1093fca7d250da419d9f5a23d9a8b4cc5ecc425c66c2db8699746f563a0402be","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEntropy.js#0017:collisionCount","exportIndex":17,"name":"collisionCount","kind":"function","signature":"collisionCount(data, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEntropy.md","moduleTitle":"core/math/MathEntropy","source":"engine/core/math/MathEntropy.js","import":"/engine/core/math/MathEntropy.js","sourceHash":"1093fca7d250da419d9f5a23d9a8b4cc5ecc425c66c2db8699746f563a0402be","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEntropy.js#0018:serialCorrelation","exportIndex":18,"name":"serialCorrelation","kind":"function","signature":"serialCorrelation(data, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEntropy.md","moduleTitle":"core/math/MathEntropy","source":"engine/core/math/MathEntropy.js","import":"/engine/core/math/MathEntropy.js","sourceHash":"1093fca7d250da419d9f5a23d9a8b4cc5ecc425c66c2db8699746f563a0402be","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEntropy.js#0019:repetitionCount","exportIndex":19,"name":"repetitionCount","kind":"function","signature":"repetitionCount(data, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEntropy.md","moduleTitle":"core/math/MathEntropy","source":"engine/core/math/MathEntropy.js","import":"/engine/core/math/MathEntropy.js","sourceHash":"1093fca7d250da419d9f5a23d9a8b4cc5ecc425c66c2db8699746f563a0402be","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEntropy.js#0020:adaptiveProportionReport","exportIndex":20,"name":"adaptiveProportionReport","kind":"function","signature":"adaptiveProportionReport(data, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEntropy.md","moduleTitle":"core/math/MathEntropy","source":"engine/core/math/MathEntropy.js","import":"/engine/core/math/MathEntropy.js","sourceHash":"1093fca7d250da419d9f5a23d9a8b4cc5ecc425c66c2db8699746f563a0402be","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEntropy.js#0021:minEntropyThresholdReport","exportIndex":21,"name":"minEntropyThresholdReport","kind":"function","signature":"minEntropyThresholdReport(data, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEntropy.md","moduleTitle":"core/math/MathEntropy","source":"engine/core/math/MathEntropy.js","import":"/engine/core/math/MathEntropy.js","sourceHash":"1093fca7d250da419d9f5a23d9a8b4cc5ecc425c66c2db8699746f563a0402be","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEntropy.js#0022:predictabilityScore","exportIndex":22,"name":"predictabilityScore","kind":"function","signature":"predictabilityScore(data, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEntropy.md","moduleTitle":"core/math/MathEntropy","source":"engine/core/math/MathEntropy.js","import":"/engine/core/math/MathEntropy.js","sourceHash":"1093fca7d250da419d9f5a23d9a8b4cc5ecc425c66c2db8699746f563a0402be","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEntropy.js#0023:randomnessHealthReport","exportIndex":23,"name":"randomnessHealthReport","kind":"function","signature":"randomnessHealthReport(data, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEntropy.md","moduleTitle":"core/math/MathEntropy","source":"engine/core/math/MathEntropy.js","import":"/engine/core/math/MathEntropy.js","sourceHash":"1093fca7d250da419d9f5a23d9a8b4cc5ecc425c66c2db8699746f563a0402be","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEntropy.js#0024:entropyWindowReport","exportIndex":24,"name":"entropyWindowReport","kind":"function","signature":"entropyWindowReport(data, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEntropy.md","moduleTitle":"core/math/MathEntropy","source":"engine/core/math/MathEntropy.js","import":"/engine/core/math/MathEntropy.js","sourceHash":"1093fca7d250da419d9f5a23d9a8b4cc5ecc425c66c2db8699746f563a0402be","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEntropy.js#0025:streamingEntropyHealthReport","exportIndex":25,"name":"streamingEntropyHealthReport","kind":"function","signature":"streamingEntropyHealthReport(data, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEntropy.md","moduleTitle":"core/math/MathEntropy","source":"engine/core/math/MathEntropy.js","import":"/engine/core/math/MathEntropy.js","sourceHash":"1093fca7d250da419d9f5a23d9a8b4cc5ecc425c66c2db8699746f563a0402be","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEntropy.js#0026:entropyCompressionEstimate","exportIndex":26,"name":"entropyCompressionEstimate","kind":"function","signature":"entropyCompressionEstimate(sampleCount, entropyBitsPerSymbol, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEntropy.md","moduleTitle":"core/math/MathEntropy","source":"engine/core/math/MathEntropy.js","import":"/engine/core/math/MathEntropy.js","sourceHash":"1093fca7d250da419d9f5a23d9a8b4cc5ecc425c66c2db8699746f563a0402be","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEntropy.js#0027:histogramEntropyReport","exportIndex":27,"name":"histogramEntropyReport","kind":"function","signature":"histogramEntropyReport(histogram, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathEntropy.md","moduleTitle":"core/math/MathEntropy","source":"engine/core/math/MathEntropy.js","import":"/engine/core/math/MathEntropy.js","sourceHash":"1093fca7d250da419d9f5a23d9a8b4cc5ecc425c66c2db8699746f563a0402be","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathEntropy.js#0028:entropyReport","exportIndex":28,"name":"entropyReport","kind":"function","signature":"entropyReport(data, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/MathGeometry.js","title":"core/math/MathGeometry","summary":"Convert a local AABB and entity TRS into a conservative world-space sphere. Rotation moves the scaled local center but does not change the sphere radius.","exportCount":62}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0000:sdfBox3D","exportIndex":0,"name":"sdfBox3D","kind":"function","signature":"sdfBox3D(p, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0001:sdfCylinder","exportIndex":1,"name":"sdfCylinder","kind":"function","signature":"sdfCylinder(p, h, r)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0002:sdfCapsule","exportIndex":2,"name":"sdfCapsule","kind":"function","signature":"sdfCapsule(p, a, b, r)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0003:sdfTorus","exportIndex":3,"name":"sdfTorus","kind":"function","signature":"sdfTorus(p, R, r)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0004:sdfCone","exportIndex":4,"name":"sdfCone","kind":"function","signature":"sdfCone(p, angle, h)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0005:pointInTriangle2D","exportIndex":5,"name":"pointInTriangle2D","kind":"function","signature":"pointInTriangle2D(p, a, b, c)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0006:lineLineIntersection","exportIndex":6,"name":"lineLineIntersection","kind":"function","signature":"lineLineIntersection(p1, p2, p3, p4)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0007:sphereAABB","exportIndex":7,"name":"sphereAABB","kind":"function","signature":"sphereAABB(center, radius, aabbMin, aabbMax)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0008:raySphere","exportIndex":8,"name":"raySphere","kind":"function","signature":"raySphere(rayOrigin, rayDir, center, radius)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0009:rayAABB","exportIndex":9,"name":"rayAABB","kind":"function","signature":"rayAABB(rayOrigin, rayDir, aabbMin, aabbMax)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0010:rayPlane","exportIndex":10,"name":"rayPlane","kind":"function","signature":"rayPlane(rayOrigin, rayDir, planeNormal, planeD)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0011:rayTriangle","exportIndex":11,"name":"rayTriangle","kind":"function","signature":"rayTriangle(rayOrigin, rayDir, v0, v1, v2)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0012:aabbFromPoints","exportIndex":12,"name":"aabbFromPoints","kind":"function","signature":"aabbFromPoints(points)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0013:transformedAabbBoundingSphereReport","exportIndex":13,"name":"transformedAabbBoundingSphereReport","kind":"function","signature":"transformedAabbBoundingSphereReport(localMin, localMax, position, rotation, scale)","summary":"Convert a local AABB and entity TRS into a conservative world-space sphere. Rotation moves the scaled local center but does not change the sphere radius."}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0014:aabbSurfaceArea","exportIndex":14,"name":"aabbSurfaceArea","kind":"function","signature":"aabbSurfaceArea(aabb)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0015:aabbVolume","exportIndex":15,"name":"aabbVolume","kind":"function","signature":"aabbVolume(aabb)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0016:boundingSphereFromPoints","exportIndex":16,"name":"boundingSphereFromPoints","kind":"function","signature":"boundingSphereFromPoints(points)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0017:frustumFromMatrix","exportIndex":17,"name":"frustumFromMatrix","kind":"function","signature":"frustumFromMatrix(m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0018:frustumNormalizePlanes","exportIndex":18,"name":"frustumNormalizePlanes","kind":"function","signature":"frustumNormalizePlanes(frustum)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0019:frustumContainsSphere","exportIndex":19,"name":"frustumContainsSphere","kind":"function","signature":"frustumContainsSphere(frustum, center, radius)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0020:frustumContainsAABB","exportIndex":20,"name":"frustumContainsAABB","kind":"function","signature":"frustumContainsAABB(frustum, aabbMin, aabbMax)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0021:frustumTestAABB","exportIndex":21,"name":"frustumTestAABB","kind":"function","signature":"frustumTestAABB(frustum, aabbMin, aabbMax)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0022:triangleBarycentric","exportIndex":22,"name":"triangleBarycentric","kind":"function","signature":"triangleBarycentric(p, a, b, c)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0023:triangleClosestPoint","exportIndex":23,"name":"triangleClosestPoint","kind":"function","signature":"triangleClosestPoint(p, a, b, c)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0024:closestPointOnSegment","exportIndex":24,"name":"closestPointOnSegment","kind":"function","signature":"closestPointOnSegment(p, a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0025:closestPointOnAABB","exportIndex":25,"name":"closestPointOnAABB","kind":"function","signature":"closestPointOnAABB(p, aabbMin, aabbMax)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0026:closestPointOnSphere","exportIndex":26,"name":"closestPointOnSphere","kind":"function","signature":"closestPointOnSphere(p, center, radius)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0027:sdfCircle","exportIndex":27,"name":"sdfCircle","kind":"function","signature":"sdfCircle(p, r)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0028:sdfBox2D","exportIndex":28,"name":"sdfBox2D","kind":"function","signature":"sdfBox2D(p, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0029:sdfSegment2D","exportIndex":29,"name":"sdfSegment2D","kind":"function","signature":"sdfSegment2D(p, a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0030:sdfRoundedBox2D","exportIndex":30,"name":"sdfRoundedBox2D","kind":"function","signature":"sdfRoundedBox2D(p, b, r)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0031:sdfSphere","exportIndex":31,"name":"sdfSphere","kind":"function","signature":"sdfSphere(p, r)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0032:sdfRoundBox","exportIndex":32,"name":"sdfRoundBox","kind":"function","signature":"sdfRoundBox(p, b, r)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0033:sdfPlane","exportIndex":33,"name":"sdfPlane","kind":"function","signature":"sdfPlane(p, n, d)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0034:sdfUnion","exportIndex":34,"name":"sdfUnion","kind":"function","signature":"sdfUnion(d1, d2)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0035:sdfSubtract","exportIndex":35,"name":"sdfSubtract","kind":"function","signature":"sdfSubtract(d1, d2)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0036:sdfIntersect","exportIndex":36,"name":"sdfIntersect","kind":"function","signature":"sdfIntersect(d1, d2)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0037:sdfSmoothUnion","exportIndex":37,"name":"sdfSmoothUnion","kind":"function","signature":"sdfSmoothUnion(d1, d2, k)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0038:sdfSmoothSubtract","exportIndex":38,"name":"sdfSmoothSubtract","kind":"function","signature":"sdfSmoothSubtract(d1, d2, k)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0039:sdfSmoothIntersect","exportIndex":39,"name":"sdfSmoothIntersect","kind":"function","signature":"sdfSmoothIntersect(d1, d2, k)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0040:sdfRound","exportIndex":40,"name":"sdfRound","kind":"function","signature":"sdfRound(d, r)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0041:sdfOnion","exportIndex":41,"name":"sdfOnion","kind":"function","signature":"sdfOnion(d, r)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0042:pointInCircle","exportIndex":42,"name":"pointInCircle","kind":"function","signature":"pointInCircle(point, center, radius)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0043:pointInRect","exportIndex":43,"name":"pointInRect","kind":"function","signature":"pointInRect(point, rectMin, rectMax)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0044:circleCircle","exportIndex":44,"name":"circleCircle","kind":"function","signature":"circleCircle(c1, r1, c2, r2)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0045:rectRect","exportIndex":45,"name":"rectRect","kind":"function","signature":"rectRect(min1, max1, min2, max2)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0046:pointInSphere","exportIndex":46,"name":"pointInSphere","kind":"function","signature":"pointInSphere(point, center, radius)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0047:pointInAABB","exportIndex":47,"name":"pointInAABB","kind":"function","signature":"pointInAABB(point, aabbMin, aabbMax)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0048:sphereSphere","exportIndex":48,"name":"sphereSphere","kind":"function","signature":"sphereSphere(c1, r1, c2, r2)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0049:aabbAABB","exportIndex":49,"name":"aabbAABB","kind":"function","signature":"aabbAABB(min1, max1, min2, max2)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0050:aabbCenter","exportIndex":50,"name":"aabbCenter","kind":"function","signature":"aabbCenter(aabb)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0051:aabbSize","exportIndex":51,"name":"aabbSize","kind":"function","signature":"aabbSize(aabb)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0052:aabbHalfSize","exportIndex":52,"name":"aabbHalfSize","kind":"function","signature":"aabbHalfSize(aabb)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0053:aabbExpand","exportIndex":53,"name":"aabbExpand","kind":"function","signature":"aabbExpand(aabb, point)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0054:aabbMerge","exportIndex":54,"name":"aabbMerge","kind":"function","signature":"aabbMerge(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0055:aabbGrow","exportIndex":55,"name":"aabbGrow","kind":"function","signature":"aabbGrow(aabb, amount)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0056:triangleNormal","exportIndex":56,"name":"triangleNormal","kind":"function","signature":"triangleNormal(a, b, c)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0057:triangleArea","exportIndex":57,"name":"triangleArea","kind":"function","signature":"triangleArea(a, b, c)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0058:distancePointToSegment","exportIndex":58,"name":"distancePointToSegment","kind":"function","signature":"distancePointToSegment(p, a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0059:distancePointToAABB","exportIndex":59,"name":"distancePointToAABB","kind":"function","signature":"distancePointToAABB(p, aabbMin, aabbMax)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0060:distancePointToSphere","exportIndex":60,"name":"distancePointToSphere","kind":"function","signature":"distancePointToSphere(p, center, radius)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGeometry.md","moduleTitle":"core/math/MathGeometry","source":"engine/core/math/MathGeometry.js","import":"/engine/core/math/MathGeometry.js","sourceHash":"3447aa0239f0544f050b756c7bee5354e4c07651e918d0120d22330e129325c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGeometry.js#0061:distancePointToPlane","exportIndex":61,"name":"distancePointToPlane","kind":"function","signature":"distancePointToPlane(p, normal, d)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGrid.md","moduleTitle":"core/math/MathGrid","source":"engine/core/math/MathGrid.js","import":"/engine/core/math/MathGrid.js","sourceHash":"a1372facbdf75474064883083aedb349dbe7c050ef37ac15d88f42e4f8a3537d","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/MathGrid.js","title":"core/math/MathGrid","summary":"MathGrid.js - CPU-side 3D grid sampling and discrete differential operators Consolidates: FluidSimWorld.js inline trilinear, SDFCollision trilinear, WindSimulation grid sample Houdini VEX volumesample / Niagara grid sampling parity","exportCount":19}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGrid.md","moduleTitle":"core/math/MathGrid","source":"engine/core/math/MathGrid.js","import":"/engine/core/math/MathGrid.js","sourceHash":"a1372facbdf75474064883083aedb349dbe7c050ef37ac15d88f42e4f8a3537d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGrid.js#0000:bilinearSample","exportIndex":0,"name":"bilinearSample","kind":"function","signature":"bilinearSample(grid, width, height, u, v)","summary":"Bilinear interpolation on a 2D scalar grid"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGrid.md","moduleTitle":"core/math/MathGrid","source":"engine/core/math/MathGrid.js","import":"/engine/core/math/MathGrid.js","sourceHash":"a1372facbdf75474064883083aedb349dbe7c050ef37ac15d88f42e4f8a3537d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGrid.js#0001:bilinearSampleVec3","exportIndex":1,"name":"bilinearSampleVec3","kind":"function","signature":"bilinearSampleVec3(grid, width, height, u, v)","summary":"Bilinear interpolation on a 2D vector grid (3-component, interleaved)"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGrid.md","moduleTitle":"core/math/MathGrid","source":"engine/core/math/MathGrid.js","import":"/engine/core/math/MathGrid.js","sourceHash":"a1372facbdf75474064883083aedb349dbe7c050ef37ac15d88f42e4f8a3537d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGrid.js#0002:trilinearSample","exportIndex":2,"name":"trilinearSample","kind":"function","signature":"trilinearSample(grid, width, height, depth, u, v, w)","summary":"Trilinear interpolation on a 3D scalar grid"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGrid.md","moduleTitle":"core/math/MathGrid","source":"engine/core/math/MathGrid.js","import":"/engine/core/math/MathGrid.js","sourceHash":"a1372facbdf75474064883083aedb349dbe7c050ef37ac15d88f42e4f8a3537d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGrid.js#0003:trilinearSampleVec3","exportIndex":3,"name":"trilinearSampleVec3","kind":"function","signature":"trilinearSampleVec3(grid, width, height, depth, u, v, w)","summary":"Trilinear interpolation on a 3D vector grid (3-component, interleaved) Matches FluidSimWorld.js sampleVelocityTrilinear GPU implementation"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGrid.md","moduleTitle":"core/math/MathGrid","source":"engine/core/math/MathGrid.js","import":"/engine/core/math/MathGrid.js","sourceHash":"a1372facbdf75474064883083aedb349dbe7c050ef37ac15d88f42e4f8a3537d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGrid.js#0004:trilinearSampleVec4","exportIndex":4,"name":"trilinearSampleVec4","kind":"function","signature":"trilinearSampleVec4(grid, width, height, depth, u, v, w)","summary":"Trilinear interpolation on a 3D grid stored as vec4 (4-component, e.g. velocity + spin)"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGrid.md","moduleTitle":"core/math/MathGrid","source":"engine/core/math/MathGrid.js","import":"/engine/core/math/MathGrid.js","sourceHash":"a1372facbdf75474064883083aedb349dbe7c050ef37ac15d88f42e4f8a3537d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGrid.js#0005:gridGradient","exportIndex":5,"name":"gridGradient","kind":"function","signature":"gridGradient(grid, width, height, depth, x, y, z, cellSize = 1)","summary":"Discrete gradient of a scalar field (central differences)"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGrid.md","moduleTitle":"core/math/MathGrid","source":"engine/core/math/MathGrid.js","import":"/engine/core/math/MathGrid.js","sourceHash":"a1372facbdf75474064883083aedb349dbe7c050ef37ac15d88f42e4f8a3537d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGrid.js#0006:gridDivergence","exportIndex":6,"name":"gridDivergence","kind":"function","signature":"gridDivergence(grid, width, height, depth, x, y, z, cellSize = 1)","summary":"Discrete divergence of a vector field (central differences)"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGrid.md","moduleTitle":"core/math/MathGrid","source":"engine/core/math/MathGrid.js","import":"/engine/core/math/MathGrid.js","sourceHash":"a1372facbdf75474064883083aedb349dbe7c050ef37ac15d88f42e4f8a3537d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGrid.js#0007:gridCurl","exportIndex":7,"name":"gridCurl","kind":"function","signature":"gridCurl(grid, width, height, depth, x, y, z, cellSize = 1)","summary":"Discrete curl of a vector field (central differences)"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGrid.md","moduleTitle":"core/math/MathGrid","source":"engine/core/math/MathGrid.js","import":"/engine/core/math/MathGrid.js","sourceHash":"a1372facbdf75474064883083aedb349dbe7c050ef37ac15d88f42e4f8a3537d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGrid.js#0008:gridLaplacian","exportIndex":8,"name":"gridLaplacian","kind":"function","signature":"gridLaplacian(grid, width, height, depth, x, y, z, cellSize = 1)","summary":"Discrete Laplacian of a scalar field (6-point stencil)"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGrid.md","moduleTitle":"core/math/MathGrid","source":"engine/core/math/MathGrid.js","import":"/engine/core/math/MathGrid.js","sourceHash":"a1372facbdf75474064883083aedb349dbe7c050ef37ac15d88f42e4f8a3537d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGrid.js#0009:gridLaplacianVec3","exportIndex":9,"name":"gridLaplacianVec3","kind":"function","signature":"gridLaplacianVec3(grid, width, height, depth, x, y, z, cellSize = 1)","summary":"Discrete Laplacian of a vector field (per-component, 6-point stencil)"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGrid.md","moduleTitle":"core/math/MathGrid","source":"engine/core/math/MathGrid.js","import":"/engine/core/math/MathGrid.js","sourceHash":"a1372facbdf75474064883083aedb349dbe7c050ef37ac15d88f42e4f8a3537d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGrid.js#0010:advectScalar","exportIndex":10,"name":"advectScalar","kind":"function","signature":"advectScalar(scalarField, velocityField, out, width, height, depth, dt, cellSize = 1)","summary":"Semi-Lagrangian advection of a scalar field through a velocity field"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGrid.md","moduleTitle":"core/math/MathGrid","source":"engine/core/math/MathGrid.js","import":"/engine/core/math/MathGrid.js","sourceHash":"a1372facbdf75474064883083aedb349dbe7c050ef37ac15d88f42e4f8a3537d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGrid.js#0011:advectVelocity","exportIndex":11,"name":"advectVelocity","kind":"function","signature":"advectVelocity(velocityField, out, width, height, depth, dt, cellSize = 1)","summary":"Semi-Lagrangian advection of a vector field through itself (self-advection)"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGrid.md","moduleTitle":"core/math/MathGrid","source":"engine/core/math/MathGrid.js","import":"/engine/core/math/MathGrid.js","sourceHash":"a1372facbdf75474064883083aedb349dbe7c050ef37ac15d88f42e4f8a3537d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGrid.js#0012:gridCreateScalar","exportIndex":12,"name":"gridCreateScalar","kind":"function","signature":"gridCreateScalar(width, height, depth)","summary":"Create a zero-filled scalar grid"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGrid.md","moduleTitle":"core/math/MathGrid","source":"engine/core/math/MathGrid.js","import":"/engine/core/math/MathGrid.js","sourceHash":"a1372facbdf75474064883083aedb349dbe7c050ef37ac15d88f42e4f8a3537d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGrid.js#0013:gridCreateVec3","exportIndex":13,"name":"gridCreateVec3","kind":"function","signature":"gridCreateVec3(width, height, depth)","summary":"Create a zero-filled vec3 grid"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGrid.md","moduleTitle":"core/math/MathGrid","source":"engine/core/math/MathGrid.js","import":"/engine/core/math/MathGrid.js","sourceHash":"a1372facbdf75474064883083aedb349dbe7c050ef37ac15d88f42e4f8a3537d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGrid.js#0014:gridCreateVec4","exportIndex":14,"name":"gridCreateVec4","kind":"function","signature":"gridCreateVec4(width, height, depth)","summary":"Create a zero-filled vec4 grid"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGrid.md","moduleTitle":"core/math/MathGrid","source":"engine/core/math/MathGrid.js","import":"/engine/core/math/MathGrid.js","sourceHash":"a1372facbdf75474064883083aedb349dbe7c050ef37ac15d88f42e4f8a3537d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGrid.js#0015:worldToGrid","exportIndex":15,"name":"worldToGrid","kind":"function","signature":"worldToGrid(worldPos, gridOrigin, cellSize)","summary":"World position to grid coordinate"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGrid.md","moduleTitle":"core/math/MathGrid","source":"engine/core/math/MathGrid.js","import":"/engine/core/math/MathGrid.js","sourceHash":"a1372facbdf75474064883083aedb349dbe7c050ef37ac15d88f42e4f8a3537d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGrid.js#0016:gridToWorld","exportIndex":16,"name":"gridToWorld","kind":"function","signature":"gridToWorld(gridPos, gridOrigin, cellSize)","summary":"Grid coordinate to world position"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGrid.md","moduleTitle":"core/math/MathGrid","source":"engine/core/math/MathGrid.js","import":"/engine/core/math/MathGrid.js","sourceHash":"a1372facbdf75474064883083aedb349dbe7c050ef37ac15d88f42e4f8a3537d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGrid.js#0017:gridSampleScalarWorld","exportIndex":17,"name":"gridSampleScalarWorld","kind":"function","signature":"gridSampleScalarWorld(grid, width, height, depth, worldPos, gridOrigin, cellSize)","summary":"Sample scalar field at world position"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathGrid.md","moduleTitle":"core/math/MathGrid","source":"engine/core/math/MathGrid.js","import":"/engine/core/math/MathGrid.js","sourceHash":"a1372facbdf75474064883083aedb349dbe7c050ef37ac15d88f42e4f8a3537d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathGrid.js#0018:gridSampleVec3World","exportIndex":18,"name":"gridSampleVec3World","kind":"function","signature":"gridSampleVec3World(grid, width, height, depth, worldPos, gridOrigin, cellSize)","summary":"Sample vector field at world position"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathLine3.md","moduleTitle":"core/math/MathLine3","source":"engine/core/math/MathLine3.js","import":"/engine/core/math/MathLine3.js","sourceHash":"ebd9ddb78be098b32746aebe7cf0f381e5f9186731bc29deb3467a46ef625269","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/MathLine3.js","title":"core/math/MathLine3","summary":"MathLine3.js - Line segment operations (Three.js Line3 parity) Segment represented as { a: [x,y,z], b: [x,y,z] } Consolidates: MathGeometry.closestPointOnSegment, ViewportRaycasting.raySegmentDistance, PBDRagdoll.capsuleCollision segment-segment math","exportCount":18}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathLine3.md","moduleTitle":"core/math/MathLine3","source":"engine/core/math/MathLine3.js","import":"/engine/core/math/MathLine3.js","sourceHash":"ebd9ddb78be098b32746aebe7cf0f381e5f9186731bc29deb3467a46ef625269","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathLine3.js#0000:segmentFromPointDir","exportIndex":0,"name":"segmentFromPointDir","kind":"function","signature":"segmentFromPointDir(origin, direction, length)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathLine3.md","moduleTitle":"core/math/MathLine3","source":"engine/core/math/MathLine3.js","import":"/engine/core/math/MathLine3.js","sourceHash":"ebd9ddb78be098b32746aebe7cf0f381e5f9186731bc29deb3467a46ef625269","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathLine3.js#0001:segmentClosestPointToPoint","exportIndex":1,"name":"segmentClosestPointToPoint","kind":"function","signature":"segmentClosestPointToPoint(seg, point)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathLine3.md","moduleTitle":"core/math/MathLine3","source":"engine/core/math/MathLine3.js","import":"/engine/core/math/MathLine3.js","sourceHash":"ebd9ddb78be098b32746aebe7cf0f381e5f9186731bc29deb3467a46ef625269","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathLine3.js#0002:segmentDistanceToPoint","exportIndex":2,"name":"segmentDistanceToPoint","kind":"function","signature":"segmentDistanceToPoint(seg, point)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathLine3.md","moduleTitle":"core/math/MathLine3","source":"engine/core/math/MathLine3.js","import":"/engine/core/math/MathLine3.js","sourceHash":"ebd9ddb78be098b32746aebe7cf0f381e5f9186731bc29deb3467a46ef625269","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathLine3.js#0003:segmentDistanceSqToPoint","exportIndex":3,"name":"segmentDistanceSqToPoint","kind":"function","signature":"segmentDistanceSqToPoint(seg, point)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathLine3.md","moduleTitle":"core/math/MathLine3","source":"engine/core/math/MathLine3.js","import":"/engine/core/math/MathLine3.js","sourceHash":"ebd9ddb78be098b32746aebe7cf0f381e5f9186731bc29deb3467a46ef625269","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathLine3.js#0004:segmentClosestPointToSegment","exportIndex":4,"name":"segmentClosestPointToSegment","kind":"function","signature":"segmentClosestPointToSegment(seg1, seg2)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathLine3.md","moduleTitle":"core/math/MathLine3","source":"engine/core/math/MathLine3.js","import":"/engine/core/math/MathLine3.js","sourceHash":"ebd9ddb78be098b32746aebe7cf0f381e5f9186731bc29deb3467a46ef625269","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathLine3.js#0005:segmentDistanceToSegment","exportIndex":5,"name":"segmentDistanceToSegment","kind":"function","signature":"segmentDistanceToSegment(seg1, seg2)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathLine3.md","moduleTitle":"core/math/MathLine3","source":"engine/core/math/MathLine3.js","import":"/engine/core/math/MathLine3.js","sourceHash":"ebd9ddb78be098b32746aebe7cf0f381e5f9186731bc29deb3467a46ef625269","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathLine3.js#0006:segmentDistanceSqToSegment","exportIndex":6,"name":"segmentDistanceSqToSegment","kind":"function","signature":"segmentDistanceSqToSegment(seg1, seg2)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathLine3.md","moduleTitle":"core/math/MathLine3","source":"engine/core/math/MathLine3.js","import":"/engine/core/math/MathLine3.js","sourceHash":"ebd9ddb78be098b32746aebe7cf0f381e5f9186731bc29deb3467a46ef625269","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathLine3.js#0007:segmentClosestPointToRay","exportIndex":7,"name":"segmentClosestPointToRay","kind":"function","signature":"segmentClosestPointToRay(seg, rayOrigin, rayDir)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathLine3.md","moduleTitle":"core/math/MathLine3","source":"engine/core/math/MathLine3.js","import":"/engine/core/math/MathLine3.js","sourceHash":"ebd9ddb78be098b32746aebe7cf0f381e5f9186731bc29deb3467a46ef625269","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathLine3.js#0008:segmentDistanceToRay","exportIndex":8,"name":"segmentDistanceToRay","kind":"function","signature":"segmentDistanceToRay(seg, rayOrigin, rayDir)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathLine3.md","moduleTitle":"core/math/MathLine3","source":"engine/core/math/MathLine3.js","import":"/engine/core/math/MathLine3.js","sourceHash":"ebd9ddb78be098b32746aebe7cf0f381e5f9186731bc29deb3467a46ef625269","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathLine3.js#0009:segmentEquals","exportIndex":9,"name":"segmentEquals","kind":"function","signature":"segmentEquals(a, b, eps = EPSILON)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathLine3.md","moduleTitle":"core/math/MathLine3","source":"engine/core/math/MathLine3.js","import":"/engine/core/math/MathLine3.js","sourceHash":"ebd9ddb78be098b32746aebe7cf0f381e5f9186731bc29deb3467a46ef625269","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathLine3.js#0010:segmentCreate","exportIndex":10,"name":"segmentCreate","kind":"function","signature":"segmentCreate(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathLine3.md","moduleTitle":"core/math/MathLine3","source":"engine/core/math/MathLine3.js","import":"/engine/core/math/MathLine3.js","sourceHash":"ebd9ddb78be098b32746aebe7cf0f381e5f9186731bc29deb3467a46ef625269","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathLine3.js#0011:segmentClone","exportIndex":11,"name":"segmentClone","kind":"function","signature":"segmentClone(seg)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathLine3.md","moduleTitle":"core/math/MathLine3","source":"engine/core/math/MathLine3.js","import":"/engine/core/math/MathLine3.js","sourceHash":"ebd9ddb78be098b32746aebe7cf0f381e5f9186731bc29deb3467a46ef625269","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathLine3.js#0012:segmentAt","exportIndex":12,"name":"segmentAt","kind":"function","signature":"segmentAt(seg, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathLine3.md","moduleTitle":"core/math/MathLine3","source":"engine/core/math/MathLine3.js","import":"/engine/core/math/MathLine3.js","sourceHash":"ebd9ddb78be098b32746aebe7cf0f381e5f9186731bc29deb3467a46ef625269","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathLine3.js#0013:segmentCenter","exportIndex":13,"name":"segmentCenter","kind":"function","signature":"segmentCenter(seg)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathLine3.md","moduleTitle":"core/math/MathLine3","source":"engine/core/math/MathLine3.js","import":"/engine/core/math/MathLine3.js","sourceHash":"ebd9ddb78be098b32746aebe7cf0f381e5f9186731bc29deb3467a46ef625269","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathLine3.js#0014:segmentDelta","exportIndex":14,"name":"segmentDelta","kind":"function","signature":"segmentDelta(seg)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathLine3.md","moduleTitle":"core/math/MathLine3","source":"engine/core/math/MathLine3.js","import":"/engine/core/math/MathLine3.js","sourceHash":"ebd9ddb78be098b32746aebe7cf0f381e5f9186731bc29deb3467a46ef625269","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathLine3.js#0015:segmentDirection","exportIndex":15,"name":"segmentDirection","kind":"function","signature":"segmentDirection(seg)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathLine3.md","moduleTitle":"core/math/MathLine3","source":"engine/core/math/MathLine3.js","import":"/engine/core/math/MathLine3.js","sourceHash":"ebd9ddb78be098b32746aebe7cf0f381e5f9186731bc29deb3467a46ef625269","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathLine3.js#0016:segmentLength","exportIndex":16,"name":"segmentLength","kind":"function","signature":"segmentLength(seg)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathLine3.md","moduleTitle":"core/math/MathLine3","source":"engine/core/math/MathLine3.js","import":"/engine/core/math/MathLine3.js","sourceHash":"ebd9ddb78be098b32746aebe7cf0f381e5f9186731bc29deb3467a46ef625269","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathLine3.js#0017:segmentLengthSq","exportIndex":17,"name":"segmentLengthSq","kind":"function","signature":"segmentLengthSq(seg)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/MathMat.js","title":"core/math/MathMat","summary":"","exportCount":64}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0000:mat2Inverse","exportIndex":0,"name":"mat2Inverse","kind":"function","signature":"mat2Inverse(m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0001:mat3Multiply","exportIndex":1,"name":"mat3Multiply","kind":"function","signature":"mat3Multiply(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0002:mat3Inverse","exportIndex":2,"name":"mat3Inverse","kind":"function","signature":"mat3Inverse(m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0003:mat3NormalFromMat4","exportIndex":3,"name":"mat3NormalFromMat4","kind":"function","signature":"mat3NormalFromMat4(m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0004:mat3FromQuat","exportIndex":4,"name":"mat3FromQuat","kind":"function","signature":"mat3FromQuat(q)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0005:mat4Determinant","exportIndex":5,"name":"mat4Determinant","kind":"function","signature":"mat4Determinant(m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0006:mat4MultiplyMany","exportIndex":6,"name":"mat4MultiplyMany","kind":"function","signature":"mat4MultiplyMany(...matrices)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0007:mat4MultiplyInto","exportIndex":7,"name":"mat4MultiplyInto","kind":"function","signature":"mat4MultiplyInto(out, a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0008:mat4FromRotationAxis","exportIndex":8,"name":"mat4FromRotationAxis","kind":"function","signature":"mat4FromRotationAxis(axis, angle)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0009:mat4FromQuat","exportIndex":9,"name":"mat4FromQuat","kind":"function","signature":"mat4FromQuat(q)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0010:mat4FromRotationTranslationScale","exportIndex":10,"name":"mat4FromRotationTranslationScale","kind":"function","signature":"mat4FromRotationTranslationScale(q, t, s)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0011:mat4Decompose","exportIndex":11,"name":"mat4Decompose","kind":"function","signature":"mat4Decompose(m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0012:mat4TransformPoint","exportIndex":12,"name":"mat4TransformPoint","kind":"function","signature":"mat4TransformPoint(m, v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0013:mat4Lerp","exportIndex":13,"name":"mat4Lerp","kind":"function","signature":"mat4Lerp(a, b, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0014:mat4Equals","exportIndex":14,"name":"mat4Equals","kind":"function","signature":"mat4Equals(a, b, eps = EPSILON)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0015:mat4IsIdentity","exportIndex":15,"name":"mat4IsIdentity","kind":"function","signature":"mat4IsIdentity(m, eps = EPSILON)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0016:mat4Frustum","exportIndex":16,"name":"mat4Frustum","kind":"function","signature":"mat4Frustum(left, right, bottom, top, near, far)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0017:mat4PerspectiveInfinite","exportIndex":17,"name":"mat4PerspectiveInfinite","kind":"function","signature":"mat4PerspectiveInfinite(fov, aspect, near)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0018:mat4PerspectiveReverseZ","exportIndex":18,"name":"mat4PerspectiveReverseZ","kind":"function","signature":"mat4PerspectiveReverseZ(fov, aspect, near, far)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0019:mat4TargetTo","exportIndex":19,"name":"mat4TargetTo","kind":"function","signature":"mat4TargetTo(eye, target, up)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0020:mat4Rotate","exportIndex":20,"name":"mat4Rotate","kind":"function","signature":"mat4Rotate(m, axis, angle)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0021:mat4InverseTranspose","exportIndex":21,"name":"mat4InverseTranspose","kind":"function","signature":"mat4InverseTranspose(m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0022:mat2Identity","exportIndex":22,"name":"mat2Identity","kind":"function","signature":"mat2Identity()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0023:mat2","exportIndex":23,"name":"mat2","kind":"function","signature":"mat2(a, b, c, d)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0024:mat2Clone","exportIndex":24,"name":"mat2Clone","kind":"function","signature":"mat2Clone(m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0025:mat2Copy","exportIndex":25,"name":"mat2Copy","kind":"function","signature":"mat2Copy(out, m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0026:mat2Multiply","exportIndex":26,"name":"mat2Multiply","kind":"function","signature":"mat2Multiply(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0027:mat2Determinant","exportIndex":27,"name":"mat2Determinant","kind":"function","signature":"mat2Determinant(m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0028:mat2Transpose","exportIndex":28,"name":"mat2Transpose","kind":"function","signature":"mat2Transpose(m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0029:mat2FromRotation","exportIndex":29,"name":"mat2FromRotation","kind":"function","signature":"mat2FromRotation(angle)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0030:mat2FromScale","exportIndex":30,"name":"mat2FromScale","kind":"function","signature":"mat2FromScale(sx, sy)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0031:mat2TransformVec2","exportIndex":31,"name":"mat2TransformVec2","kind":"function","signature":"mat2TransformVec2(m, v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0032:mat3Identity","exportIndex":32,"name":"mat3Identity","kind":"function","signature":"mat3Identity()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0033:mat3Clone","exportIndex":33,"name":"mat3Clone","kind":"function","signature":"mat3Clone(m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0034:mat3Copy","exportIndex":34,"name":"mat3Copy","kind":"function","signature":"mat3Copy(out, m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0035:mat3FromMat4","exportIndex":35,"name":"mat3FromMat4","kind":"function","signature":"mat3FromMat4(m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0036:mat3Determinant","exportIndex":36,"name":"mat3Determinant","kind":"function","signature":"mat3Determinant(m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0037:mat3Transpose","exportIndex":37,"name":"mat3Transpose","kind":"function","signature":"mat3Transpose(m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0038:mat3FromRotationX","exportIndex":38,"name":"mat3FromRotationX","kind":"function","signature":"mat3FromRotationX(angle)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0039:mat3FromRotationY","exportIndex":39,"name":"mat3FromRotationY","kind":"function","signature":"mat3FromRotationY(angle)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0040:mat3FromRotationZ","exportIndex":40,"name":"mat3FromRotationZ","kind":"function","signature":"mat3FromRotationZ(angle)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0041:mat3TransformVec3","exportIndex":41,"name":"mat3TransformVec3","kind":"function","signature":"mat3TransformVec3(m, v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0042:mat3FromTranslation2D","exportIndex":42,"name":"mat3FromTranslation2D","kind":"function","signature":"mat3FromTranslation2D(x, y)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0043:mat3FromScale2D","exportIndex":43,"name":"mat3FromScale2D","kind":"function","signature":"mat3FromScale2D(sx, sy)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0044:mat3FromRotation2D","exportIndex":44,"name":"mat3FromRotation2D","kind":"function","signature":"mat3FromRotation2D(angle)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0045:mat4Clone","exportIndex":45,"name":"mat4Clone","kind":"function","signature":"mat4Clone(m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0046:mat4Copy","exportIndex":46,"name":"mat4Copy","kind":"function","signature":"mat4Copy(out, m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0047:mat4Transpose","exportIndex":47,"name":"mat4Transpose","kind":"function","signature":"mat4Transpose(m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0048:mat4FromTranslation","exportIndex":48,"name":"mat4FromTranslation","kind":"function","signature":"mat4FromTranslation(x, y, z)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0049:mat4FromTranslationVec3","exportIndex":49,"name":"mat4FromTranslationVec3","kind":"function","signature":"mat4FromTranslationVec3(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0050:mat4FromScale","exportIndex":50,"name":"mat4FromScale","kind":"function","signature":"mat4FromScale(sx, sy, sz)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0051:mat4FromScaleVec3","exportIndex":51,"name":"mat4FromScaleVec3","kind":"function","signature":"mat4FromScaleVec3(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0052:mat4FromScaleUniform","exportIndex":52,"name":"mat4FromScaleUniform","kind":"function","signature":"mat4FromScaleUniform(s)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0053:mat4FromRotationX","exportIndex":53,"name":"mat4FromRotationX","kind":"function","signature":"mat4FromRotationX(angle)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0054:mat4FromRotationY","exportIndex":54,"name":"mat4FromRotationY","kind":"function","signature":"mat4FromRotationY(angle)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0055:mat4FromRotationZ","exportIndex":55,"name":"mat4FromRotationZ","kind":"function","signature":"mat4FromRotationZ(angle)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0056:mat4GetTranslation","exportIndex":56,"name":"mat4GetTranslation","kind":"function","signature":"mat4GetTranslation(m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0057:mat4GetScale","exportIndex":57,"name":"mat4GetScale","kind":"function","signature":"mat4GetScale(m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0058:mat4GetForward","exportIndex":58,"name":"mat4GetForward","kind":"function","signature":"mat4GetForward(m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0059:mat4GetRight","exportIndex":59,"name":"mat4GetRight","kind":"function","signature":"mat4GetRight(m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0060:mat4GetUp","exportIndex":60,"name":"mat4GetUp","kind":"function","signature":"mat4GetUp(m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0061:mat4GetBack","exportIndex":61,"name":"mat4GetBack","kind":"function","signature":"mat4GetBack(m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0062:mat4TransformDirection","exportIndex":62,"name":"mat4TransformDirection","kind":"function","signature":"mat4TransformDirection(m, v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathMat.md","moduleTitle":"core/math/MathMat","source":"engine/core/math/MathMat.js","import":"/engine/core/math/MathMat.js","sourceHash":"3bee84ea3c421ed624acc2c8a8732bec5115459a0c9e02ec57b38e5cfc5f7fc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathMat.js#0063:mat4Compose","exportIndex":63,"name":"mat4Compose","kind":"constant","signature":"mat4Compose","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathNoise.md","moduleTitle":"core/math/MathNoise","source":"engine/core/math/MathNoise.js","import":"/engine/core/math/MathNoise.js","sourceHash":"2c282d01d95785f2af564995916b9e360b03c076c0e0c0b1679791bb8b7156ae","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/MathNoise.js","title":"core/math/MathNoise","summary":"","exportCount":29}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathNoise.md","moduleTitle":"core/math/MathNoise","source":"engine/core/math/MathNoise.js","import":"/engine/core/math/MathNoise.js","sourceHash":"2c282d01d95785f2af564995916b9e360b03c076c0e0c0b1679791bb8b7156ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathNoise.js#0000:perlin1D","exportIndex":0,"name":"perlin1D","kind":"function","signature":"perlin1D(x)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathNoise.md","moduleTitle":"core/math/MathNoise","source":"engine/core/math/MathNoise.js","import":"/engine/core/math/MathNoise.js","sourceHash":"2c282d01d95785f2af564995916b9e360b03c076c0e0c0b1679791bb8b7156ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathNoise.js#0001:perlin2D","exportIndex":1,"name":"perlin2D","kind":"function","signature":"perlin2D(x, y)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathNoise.md","moduleTitle":"core/math/MathNoise","source":"engine/core/math/MathNoise.js","import":"/engine/core/math/MathNoise.js","sourceHash":"2c282d01d95785f2af564995916b9e360b03c076c0e0c0b1679791bb8b7156ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathNoise.js#0002:perlin3D","exportIndex":2,"name":"perlin3D","kind":"function","signature":"perlin3D(x, y, z)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathNoise.md","moduleTitle":"core/math/MathNoise","source":"engine/core/math/MathNoise.js","import":"/engine/core/math/MathNoise.js","sourceHash":"2c282d01d95785f2af564995916b9e360b03c076c0e0c0b1679791bb8b7156ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathNoise.js#0003:simplex2D","exportIndex":3,"name":"simplex2D","kind":"function","signature":"simplex2D(x, y)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathNoise.md","moduleTitle":"core/math/MathNoise","source":"engine/core/math/MathNoise.js","import":"/engine/core/math/MathNoise.js","sourceHash":"2c282d01d95785f2af564995916b9e360b03c076c0e0c0b1679791bb8b7156ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathNoise.js#0004:simplex3D","exportIndex":4,"name":"simplex3D","kind":"function","signature":"simplex3D(x, y, z)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathNoise.md","moduleTitle":"core/math/MathNoise","source":"engine/core/math/MathNoise.js","import":"/engine/core/math/MathNoise.js","sourceHash":"2c282d01d95785f2af564995916b9e360b03c076c0e0c0b1679791bb8b7156ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathNoise.js#0005:valueNoise2D","exportIndex":5,"name":"valueNoise2D","kind":"function","signature":"valueNoise2D(x, y)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathNoise.md","moduleTitle":"core/math/MathNoise","source":"engine/core/math/MathNoise.js","import":"/engine/core/math/MathNoise.js","sourceHash":"2c282d01d95785f2af564995916b9e360b03c076c0e0c0b1679791bb8b7156ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathNoise.js#0006:valueNoise3D","exportIndex":6,"name":"valueNoise3D","kind":"function","signature":"valueNoise3D(x, y, z)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathNoise.md","moduleTitle":"core/math/MathNoise","source":"engine/core/math/MathNoise.js","import":"/engine/core/math/MathNoise.js","sourceHash":"2c282d01d95785f2af564995916b9e360b03c076c0e0c0b1679791bb8b7156ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathNoise.js#0007:shaderHash2D","exportIndex":7,"name":"shaderHash2D","kind":"function","signature":"shaderHash2D(x, y)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathNoise.md","moduleTitle":"core/math/MathNoise","source":"engine/core/math/MathNoise.js","import":"/engine/core/math/MathNoise.js","sourceHash":"2c282d01d95785f2af564995916b9e360b03c076c0e0c0b1679791bb8b7156ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathNoise.js#0008:shaderNoise2D","exportIndex":8,"name":"shaderNoise2D","kind":"function","signature":"shaderNoise2D(x, y)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathNoise.md","moduleTitle":"core/math/MathNoise","source":"engine/core/math/MathNoise.js","import":"/engine/core/math/MathNoise.js","sourceHash":"2c282d01d95785f2af564995916b9e360b03c076c0e0c0b1679791bb8b7156ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathNoise.js#0009:shaderFbm2D","exportIndex":9,"name":"shaderFbm2D","kind":"function","signature":"shaderFbm2D(x, y)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathNoise.md","moduleTitle":"core/math/MathNoise","source":"engine/core/math/MathNoise.js","import":"/engine/core/math/MathNoise.js","sourceHash":"2c282d01d95785f2af564995916b9e360b03c076c0e0c0b1679791bb8b7156ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathNoise.js#0010:shaderHash3D","exportIndex":10,"name":"shaderHash3D","kind":"function","signature":"shaderHash3D(x, y, z)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathNoise.md","moduleTitle":"core/math/MathNoise","source":"engine/core/math/MathNoise.js","import":"/engine/core/math/MathNoise.js","sourceHash":"2c282d01d95785f2af564995916b9e360b03c076c0e0c0b1679791bb8b7156ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathNoise.js#0011:shaderNoise3D","exportIndex":11,"name":"shaderNoise3D","kind":"function","signature":"shaderNoise3D(x, y, z)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathNoise.md","moduleTitle":"core/math/MathNoise","source":"engine/core/math/MathNoise.js","import":"/engine/core/math/MathNoise.js","sourceHash":"2c282d01d95785f2af564995916b9e360b03c076c0e0c0b1679791bb8b7156ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathNoise.js#0012:shaderFbm3D","exportIndex":12,"name":"shaderFbm3D","kind":"function","signature":"shaderFbm3D(x, y, z, octaves = 4)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathNoise.md","moduleTitle":"core/math/MathNoise","source":"engine/core/math/MathNoise.js","import":"/engine/core/math/MathNoise.js","sourceHash":"2c282d01d95785f2af564995916b9e360b03c076c0e0c0b1679791bb8b7156ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathNoise.js#0013:shaderFbm3DRotated","exportIndex":13,"name":"shaderFbm3DRotated","kind":"function","signature":"shaderFbm3DRotated(x, y, z, octaves = 4)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathNoise.md","moduleTitle":"core/math/MathNoise","source":"engine/core/math/MathNoise.js","import":"/engine/core/math/MathNoise.js","sourceHash":"2c282d01d95785f2af564995916b9e360b03c076c0e0c0b1679791bb8b7156ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathNoise.js#0014:voronoi2D","exportIndex":14,"name":"voronoi2D","kind":"function","signature":"voronoi2D(x, y)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathNoise.md","moduleTitle":"core/math/MathNoise","source":"engine/core/math/MathNoise.js","import":"/engine/core/math/MathNoise.js","sourceHash":"2c282d01d95785f2af564995916b9e360b03c076c0e0c0b1679791bb8b7156ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathNoise.js#0015:voronoi3D","exportIndex":15,"name":"voronoi3D","kind":"function","signature":"voronoi3D(x, y, z)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathNoise.md","moduleTitle":"core/math/MathNoise","source":"engine/core/math/MathNoise.js","import":"/engine/core/math/MathNoise.js","sourceHash":"2c282d01d95785f2af564995916b9e360b03c076c0e0c0b1679791bb8b7156ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathNoise.js#0016:fbm2D","exportIndex":16,"name":"fbm2D","kind":"function","signature":"fbm2D(x, y, octaves = 6, lacunarity = 2, gain = 0.5, noiseFn = perlin2D)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathNoise.md","moduleTitle":"core/math/MathNoise","source":"engine/core/math/MathNoise.js","import":"/engine/core/math/MathNoise.js","sourceHash":"2c282d01d95785f2af564995916b9e360b03c076c0e0c0b1679791bb8b7156ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathNoise.js#0017:fbm3D","exportIndex":17,"name":"fbm3D","kind":"function","signature":"fbm3D(x, y, z, octaves = 6, lacunarity = 2, gain = 0.5, noiseFn = perlin3D)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathNoise.md","moduleTitle":"core/math/MathNoise","source":"engine/core/math/MathNoise.js","import":"/engine/core/math/MathNoise.js","sourceHash":"2c282d01d95785f2af564995916b9e360b03c076c0e0c0b1679791bb8b7156ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathNoise.js#0018:ridged2D","exportIndex":18,"name":"ridged2D","kind":"function","signature":"ridged2D(x, y, octaves = 6, lacunarity = 2, gain = 0.5, offset = 1, noiseFn = perlin2D)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathNoise.md","moduleTitle":"core/math/MathNoise","source":"engine/core/math/MathNoise.js","import":"/engine/core/math/MathNoise.js","sourceHash":"2c282d01d95785f2af564995916b9e360b03c076c0e0c0b1679791bb8b7156ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathNoise.js#0019:ridged3D","exportIndex":19,"name":"ridged3D","kind":"function","signature":"ridged3D(x, y, z, octaves = 6, lacunarity = 2, gain = 0.5, offset = 1, noiseFn = perlin3D)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathNoise.md","moduleTitle":"core/math/MathNoise","source":"engine/core/math/MathNoise.js","import":"/engine/core/math/MathNoise.js","sourceHash":"2c282d01d95785f2af564995916b9e360b03c076c0e0c0b1679791bb8b7156ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathNoise.js#0020:warpedNoise2D","exportIndex":20,"name":"warpedNoise2D","kind":"function","signature":"warpedNoise2D(x, y, warpStrength = 0.5, noiseFn = perlin2D)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathNoise.md","moduleTitle":"core/math/MathNoise","source":"engine/core/math/MathNoise.js","import":"/engine/core/math/MathNoise.js","sourceHash":"2c282d01d95785f2af564995916b9e360b03c076c0e0c0b1679791bb8b7156ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathNoise.js#0021:warpedNoise3D","exportIndex":21,"name":"warpedNoise3D","kind":"function","signature":"warpedNoise3D(x, y, z, warpStrength = 0.5, noiseFn = perlin3D)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathNoise.md","moduleTitle":"core/math/MathNoise","source":"engine/core/math/MathNoise.js","import":"/engine/core/math/MathNoise.js","sourceHash":"2c282d01d95785f2af564995916b9e360b03c076c0e0c0b1679791bb8b7156ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathNoise.js#0022:curlNoise2D","exportIndex":22,"name":"curlNoise2D","kind":"function","signature":"curlNoise2D(x, y, epsilon = 0.0001, noiseFn = perlin2D)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathNoise.md","moduleTitle":"core/math/MathNoise","source":"engine/core/math/MathNoise.js","import":"/engine/core/math/MathNoise.js","sourceHash":"2c282d01d95785f2af564995916b9e360b03c076c0e0c0b1679791bb8b7156ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathNoise.js#0023:curlNoise3D","exportIndex":23,"name":"curlNoise3D","kind":"function","signature":"curlNoise3D(x, y, z, epsilon = 0.0001, noiseFn = perlin3D)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathNoise.md","moduleTitle":"core/math/MathNoise","source":"engine/core/math/MathNoise.js","import":"/engine/core/math/MathNoise.js","sourceHash":"2c282d01d95785f2af564995916b9e360b03c076c0e0c0b1679791bb8b7156ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathNoise.js#0024:turbulence2D","exportIndex":24,"name":"turbulence2D","kind":"function","signature":"turbulence2D(x, y, octaves = 6, lacunarity = 2, gain = 0.5, noiseFn = perlin2D)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathNoise.md","moduleTitle":"core/math/MathNoise","source":"engine/core/math/MathNoise.js","import":"/engine/core/math/MathNoise.js","sourceHash":"2c282d01d95785f2af564995916b9e360b03c076c0e0c0b1679791bb8b7156ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathNoise.js#0025:turbulence3D","exportIndex":25,"name":"turbulence3D","kind":"function","signature":"turbulence3D(x, y, z, octaves = 6, lacunarity = 2, gain = 0.5, noiseFn = perlin3D)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathNoise.md","moduleTitle":"core/math/MathNoise","source":"engine/core/math/MathNoise.js","import":"/engine/core/math/MathNoise.js","sourceHash":"2c282d01d95785f2af564995916b9e360b03c076c0e0c0b1679791bb8b7156ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathNoise.js#0026:billow2D","exportIndex":26,"name":"billow2D","kind":"function","signature":"billow2D(x, y, octaves = 6, lacunarity = 2, gain = 0.5, noiseFn = perlin2D)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathNoise.md","moduleTitle":"core/math/MathNoise","source":"engine/core/math/MathNoise.js","import":"/engine/core/math/MathNoise.js","sourceHash":"2c282d01d95785f2af564995916b9e360b03c076c0e0c0b1679791bb8b7156ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathNoise.js#0027:billow3D","exportIndex":27,"name":"billow3D","kind":"function","signature":"billow3D(x, y, z, octaves = 6, lacunarity = 2, gain = 0.5, noiseFn = perlin3D)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathNoise.md","moduleTitle":"core/math/MathNoise","source":"engine/core/math/MathNoise.js","import":"/engine/core/math/MathNoise.js","sourceHash":"2c282d01d95785f2af564995916b9e360b03c076c0e0c0b1679791bb8b7156ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathNoise.js#0028:createSeededNoise","exportIndex":28,"name":"createSeededNoise","kind":"function","signature":"createSeededNoise(seed)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathOscillator.md","moduleTitle":"core/math/MathOscillator","source":"engine/core/math/MathOscillator.js","import":"/engine/core/math/MathOscillator.js","sourceHash":"5dd6809f37d3d2c2808dde7bf95f86b2eb0730c967111b350eb76509e8bf8004","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/MathOscillator.js","title":"core/math/MathOscillator","summary":"Kuramoto order parameter (complex form). Computes collective synchronization r·e^(iψ) of N coupled phases. r ≈ 0 = chaos/dissonance; r ≈ 1 = perfect lockstep. Real-world: power-grid frequency lock, neural firing synchrony, firefly flashing, cardiac pacemakers, crowd footsteps (Millennium Bridge wobble).","exportCount":30}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathOscillator.md","moduleTitle":"core/math/MathOscillator","source":"engine/core/math/MathOscillator.js","import":"/engine/core/math/MathOscillator.js","sourceHash":"5dd6809f37d3d2c2808dde7bf95f86b2eb0730c967111b350eb76509e8bf8004","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathOscillator.js#0000:normalizePhase","exportIndex":0,"name":"normalizePhase","kind":"function","signature":"normalizePhase(phase)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathOscillator.md","moduleTitle":"core/math/MathOscillator","source":"engine/core/math/MathOscillator.js","import":"/engine/core/math/MathOscillator.js","sourceHash":"5dd6809f37d3d2c2808dde7bf95f86b2eb0730c967111b350eb76509e8bf8004","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathOscillator.js#0001:cyclesToRadians","exportIndex":1,"name":"cyclesToRadians","kind":"function","signature":"cyclesToRadians(cycles)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathOscillator.md","moduleTitle":"core/math/MathOscillator","source":"engine/core/math/MathOscillator.js","import":"/engine/core/math/MathOscillator.js","sourceHash":"5dd6809f37d3d2c2808dde7bf95f86b2eb0730c967111b350eb76509e8bf8004","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathOscillator.js#0002:radiansToCycles","exportIndex":2,"name":"radiansToCycles","kind":"function","signature":"radiansToCycles(radians)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathOscillator.md","moduleTitle":"core/math/MathOscillator","source":"engine/core/math/MathOscillator.js","import":"/engine/core/math/MathOscillator.js","sourceHash":"5dd6809f37d3d2c2808dde7bf95f86b2eb0730c967111b350eb76509e8bf8004","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathOscillator.js#0003:phaseFromTime","exportIndex":3,"name":"phaseFromTime","kind":"function","signature":"phaseFromTime(frequency, time, phase = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathOscillator.md","moduleTitle":"core/math/MathOscillator","source":"engine/core/math/MathOscillator.js","import":"/engine/core/math/MathOscillator.js","sourceHash":"5dd6809f37d3d2c2808dde7bf95f86b2eb0730c967111b350eb76509e8bf8004","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathOscillator.js#0004:advancePhase","exportIndex":4,"name":"advancePhase","kind":"function","signature":"advancePhase(phase, frequency, dt)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathOscillator.md","moduleTitle":"core/math/MathOscillator","source":"engine/core/math/MathOscillator.js","import":"/engine/core/math/MathOscillator.js","sourceHash":"5dd6809f37d3d2c2808dde7bf95f86b2eb0730c967111b350eb76509e8bf8004","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathOscillator.js#0005:createOscillator","exportIndex":5,"name":"createOscillator","kind":"function","signature":"createOscillator(config = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathOscillator.md","moduleTitle":"core/math/MathOscillator","source":"engine/core/math/MathOscillator.js","import":"/engine/core/math/MathOscillator.js","sourceHash":"5dd6809f37d3d2c2808dde7bf95f86b2eb0730c967111b350eb76509e8bf8004","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathOscillator.js#0006:oscillatorCycle","exportIndex":6,"name":"oscillatorCycle","kind":"function","signature":"oscillatorCycle(phase)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathOscillator.md","moduleTitle":"core/math/MathOscillator","source":"engine/core/math/MathOscillator.js","import":"/engine/core/math/MathOscillator.js","sourceHash":"5dd6809f37d3d2c2808dde7bf95f86b2eb0730c967111b350eb76509e8bf8004","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathOscillator.js#0007:sampleWave","exportIndex":7,"name":"sampleWave","kind":"function","signature":"sampleWave(shape, phase, dutyCycle = 0.5)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathOscillator.md","moduleTitle":"core/math/MathOscillator","source":"engine/core/math/MathOscillator.js","import":"/engine/core/math/MathOscillator.js","sourceHash":"5dd6809f37d3d2c2808dde7bf95f86b2eb0730c967111b350eb76509e8bf8004","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathOscillator.js#0008:sampleOscillatorAtPhase","exportIndex":8,"name":"sampleOscillatorAtPhase","kind":"function","signature":"sampleOscillatorAtPhase(oscillator, phase)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathOscillator.md","moduleTitle":"core/math/MathOscillator","source":"engine/core/math/MathOscillator.js","import":"/engine/core/math/MathOscillator.js","sourceHash":"5dd6809f37d3d2c2808dde7bf95f86b2eb0730c967111b350eb76509e8bf8004","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathOscillator.js#0009:sampleOscillator","exportIndex":9,"name":"sampleOscillator","kind":"function","signature":"sampleOscillator(oscillator, time)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathOscillator.md","moduleTitle":"core/math/MathOscillator","source":"engine/core/math/MathOscillator.js","import":"/engine/core/math/MathOscillator.js","sourceHash":"5dd6809f37d3d2c2808dde7bf95f86b2eb0730c967111b350eb76509e8bf8004","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathOscillator.js#0010:sampleOscillatorArray","exportIndex":10,"name":"sampleOscillatorArray","kind":"function","signature":"sampleOscillatorArray(oscillators, time, out = [])","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathOscillator.md","moduleTitle":"core/math/MathOscillator","source":"engine/core/math/MathOscillator.js","import":"/engine/core/math/MathOscillator.js","sourceHash":"5dd6809f37d3d2c2808dde7bf95f86b2eb0730c967111b350eb76509e8bf8004","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathOscillator.js#0011:beatFrequency","exportIndex":11,"name":"beatFrequency","kind":"function","signature":"beatFrequency(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathOscillator.md","moduleTitle":"core/math/MathOscillator","source":"engine/core/math/MathOscillator.js","import":"/engine/core/math/MathOscillator.js","sourceHash":"5dd6809f37d3d2c2808dde7bf95f86b2eb0730c967111b350eb76509e8bf8004","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathOscillator.js#0012:resonanceWeight","exportIndex":12,"name":"resonanceWeight","kind":"function","signature":"resonanceWeight(a, b, bandwidth = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathOscillator.md","moduleTitle":"core/math/MathOscillator","source":"engine/core/math/MathOscillator.js","import":"/engine/core/math/MathOscillator.js","sourceHash":"5dd6809f37d3d2c2808dde7bf95f86b2eb0730c967111b350eb76509e8bf8004","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathOscillator.js#0013:applyAmplitudeModulation","exportIndex":13,"name":"applyAmplitudeModulation","kind":"function","signature":"applyAmplitudeModulation(sampleValue, modulatorValue, amount = 1, bipolar = false)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathOscillator.md","moduleTitle":"core/math/MathOscillator","source":"engine/core/math/MathOscillator.js","import":"/engine/core/math/MathOscillator.js","sourceHash":"5dd6809f37d3d2c2808dde7bf95f86b2eb0730c967111b350eb76509e8bf8004","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathOscillator.js#0014:applyPhaseModulation","exportIndex":14,"name":"applyPhaseModulation","kind":"function","signature":"applyPhaseModulation(phase, modulatorValue, amount = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathOscillator.md","moduleTitle":"core/math/MathOscillator","source":"engine/core/math/MathOscillator.js","import":"/engine/core/math/MathOscillator.js","sourceHash":"5dd6809f37d3d2c2808dde7bf95f86b2eb0730c967111b350eb76509e8bf8004","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathOscillator.js#0015:waveInterference","exportIndex":15,"name":"waveInterference","kind":"function","signature":"waveInterference(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathOscillator.md","moduleTitle":"core/math/MathOscillator","source":"engine/core/math/MathOscillator.js","import":"/engine/core/math/MathOscillator.js","sourceHash":"5dd6809f37d3d2c2808dde7bf95f86b2eb0730c967111b350eb76509e8bf8004","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathOscillator.js#0016:ringModulate","exportIndex":16,"name":"ringModulate","kind":"function","signature":"ringModulate(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathOscillator.md","moduleTitle":"core/math/MathOscillator","source":"engine/core/math/MathOscillator.js","import":"/engine/core/math/MathOscillator.js","sourceHash":"5dd6809f37d3d2c2808dde7bf95f86b2eb0730c967111b350eb76509e8bf8004","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathOscillator.js#0017:sampleAmplitudeModulated","exportIndex":17,"name":"sampleAmplitudeModulated","kind":"function","signature":"sampleAmplitudeModulated(carrier, modulator, time, amount = 1, bipolar = false)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathOscillator.md","moduleTitle":"core/math/MathOscillator","source":"engine/core/math/MathOscillator.js","import":"/engine/core/math/MathOscillator.js","sourceHash":"5dd6809f37d3d2c2808dde7bf95f86b2eb0730c967111b350eb76509e8bf8004","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathOscillator.js#0018:samplePhaseModulated","exportIndex":18,"name":"samplePhaseModulated","kind":"function","signature":"samplePhaseModulated(carrier, modulator, time, amount = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathOscillator.md","moduleTitle":"core/math/MathOscillator","source":"engine/core/math/MathOscillator.js","import":"/engine/core/math/MathOscillator.js","sourceHash":"5dd6809f37d3d2c2808dde7bf95f86b2eb0730c967111b350eb76509e8bf8004","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathOscillator.js#0019:sampleRingModulated","exportIndex":19,"name":"sampleRingModulated","kind":"function","signature":"sampleRingModulated(a, b, time)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathOscillator.md","moduleTitle":"core/math/MathOscillator","source":"engine/core/math/MathOscillator.js","import":"/engine/core/math/MathOscillator.js","sourceHash":"5dd6809f37d3d2c2808dde7bf95f86b2eb0730c967111b350eb76509e8bf8004","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathOscillator.js#0020:phaseCoherence","exportIndex":20,"name":"phaseCoherence","kind":"function","signature":"phaseCoherence(phases)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathOscillator.md","moduleTitle":"core/math/MathOscillator","source":"engine/core/math/MathOscillator.js","import":"/engine/core/math/MathOscillator.js","sourceHash":"5dd6809f37d3d2c2808dde7bf95f86b2eb0730c967111b350eb76509e8bf8004","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathOscillator.js#0021:stepKuramotoPhases","exportIndex":21,"name":"stepKuramotoPhases","kind":"function","signature":"stepKuramotoPhases(phases, naturalFrequencies, dt, coupling = 0.5, weights = null, out = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathOscillator.md","moduleTitle":"core/math/MathOscillator","source":"engine/core/math/MathOscillator.js","import":"/engine/core/math/MathOscillator.js","sourceHash":"5dd6809f37d3d2c2808dde7bf95f86b2eb0730c967111b350eb76509e8bf8004","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathOscillator.js#0022:stepCoupledOscillators","exportIndex":22,"name":"stepCoupledOscillators","kind":"function","signature":"stepCoupledOscillators(oscillators, dt, coupling = 0.5, weights = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathOscillator.md","moduleTitle":"core/math/MathOscillator","source":"engine/core/math/MathOscillator.js","import":"/engine/core/math/MathOscillator.js","sourceHash":"5dd6809f37d3d2c2808dde7bf95f86b2eb0730c967111b350eb76509e8bf8004","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathOscillator.js#0023:kuramotoOrderParameterComplex","exportIndex":23,"name":"kuramotoOrderParameterComplex","kind":"function","signature":"kuramotoOrderParameterComplex(phases)","summary":"Kuramoto order parameter (complex form). Computes collective synchronization r·e^(iψ) of N coupled phases. r ≈ 0 = chaos/dissonance; r ≈ 1 = perfect lockstep. Real-world: power-grid frequency lock, neural firing synchrony, firefly flashing, cardiac pacemakers, crowd footsteps (Millennium Bridge wobble)."}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathOscillator.md","moduleTitle":"core/math/MathOscillator","source":"engine/core/math/MathOscillator.js","import":"/engine/core/math/MathOscillator.js","sourceHash":"5dd6809f37d3d2c2808dde7bf95f86b2eb0730c967111b350eb76509e8bf8004","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathOscillator.js#0024:kuramotoOrderParameter","exportIndex":24,"name":"kuramotoOrderParameter","kind":"function","signature":"kuramotoOrderParameter(phases)","summary":"Scalar synchronization metric r = |<e^(iθ)>|. Game uses: swarm AI cohesion, rhythm-combat sync signals, magic ritual progress bars, ambient life pulse coherence."}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathOscillator.md","moduleTitle":"core/math/MathOscillator","source":"engine/core/math/MathOscillator.js","import":"/engine/core/math/MathOscillator.js","sourceHash":"5dd6809f37d3d2c2808dde7bf95f86b2eb0730c967111b350eb76509e8bf8004","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathOscillator.js#0025:stepKuramotoDriven","exportIndex":25,"name":"stepKuramotoDriven","kind":"function","signature":"stepKuramotoDriven(phases, naturalFrequencies, dt, t, coupling = 0.5, driveFrequency = 1, driveStrength = 0, weights = null, out = null)","summary":"Euler step for driven Kuramoto model. dθᵢ/dt = 2π·ωᵢ + (K/N)Σⱼsin(θⱼ−θᵢ) + λ·sin(2π·f_drive·t − θᵢ) The λ term is an external forcing function (e.g. Schumann resonance 7.83 Hz, a metronome, a planetary frequency, a bassline tempo). Applications: procedural music harmony, NPC swarm coordination, breathing/ idle animation sync, climate zone oscillations, magic aura pulse coupling."}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathOscillator.md","moduleTitle":"core/math/MathOscillator","source":"engine/core/math/MathOscillator.js","import":"/engine/core/math/MathOscillator.js","sourceHash":"5dd6809f37d3d2c2808dde7bf95f86b2eb0730c967111b350eb76509e8bf8004","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathOscillator.js#0026:stepKuramotoMeanFieldDriven","exportIndex":26,"name":"stepKuramotoMeanFieldDriven","kind":"function","signature":"stepKuramotoMeanFieldDriven(phases, naturalFrequencies, dt, t, coupling = 0.5, driveFrequency = 1, driveStrength = 0, out = null, order = null,)","summary":"Exact O(N) Euler step for the globally coupled, driven Kuramoto model. For uniform all-to-all coupling, the pair sum is exactly reducible through Z = <exp(iθ)> = re + i·im: (K/N) Σⱼ sin(θⱼ-θᵢ) = K (im·cos θᵢ - re·sin θᵢ) This is mathematically equivalent to `stepKuramotoDriven(..., weights=null)` while avoiding its O(N²) pair loop. `order` may be supplied when the caller already computed the current order parameter for telemetry."}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathOscillator.md","moduleTitle":"core/math/MathOscillator","source":"engine/core/math/MathOscillator.js","import":"/engine/core/math/MathOscillator.js","sourceHash":"5dd6809f37d3d2c2808dde7bf95f86b2eb0730c967111b350eb76509e8bf8004","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathOscillator.js#0027:createOscillatorBank","exportIndex":27,"name":"createOscillatorBank","kind":"function","signature":"createOscillatorBank(count, factory = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathOscillator.md","moduleTitle":"core/math/MathOscillator","source":"engine/core/math/MathOscillator.js","import":"/engine/core/math/MathOscillator.js","sourceHash":"5dd6809f37d3d2c2808dde7bf95f86b2eb0730c967111b350eb76509e8bf8004","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathOscillator.js#0028:OSCILLATOR_SHAPES","exportIndex":28,"name":"OSCILLATOR_SHAPES","kind":"constant","signature":"OSCILLATOR_SHAPES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathOscillator.md","moduleTitle":"core/math/MathOscillator","source":"engine/core/math/MathOscillator.js","import":"/engine/core/math/MathOscillator.js","sourceHash":"5dd6809f37d3d2c2808dde7bf95f86b2eb0730c967111b350eb76509e8bf8004","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathOscillator.js#0029:DEFAULT_OSCILLATOR","exportIndex":29,"name":"DEFAULT_OSCILLATOR","kind":"constant","signature":"DEFAULT_OSCILLATOR","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/MathPacking.js","title":"core/math/MathPacking","summary":"MathPacking.js - GPU data packing utilities Half-float, SNORM/UNORM, RGB9E5, R11G11B10F Consolidates: World3DPreviewRenderer._floatToHalf, MeshCompression.quantizeUVs","exportCount":78}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0000:floatToHalf","exportIndex":0,"name":"floatToHalf","kind":"function","signature":"floatToHalf(val)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0001:halfToFloat","exportIndex":1,"name":"halfToFloat","kind":"function","signature":"halfToFloat(h)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0002:floatArrayToHalf","exportIndex":2,"name":"floatArrayToHalf","kind":"function","signature":"floatArrayToHalf(arr)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0003:halfArrayToFloat","exportIndex":3,"name":"halfArrayToFloat","kind":"function","signature":"halfArrayToFloat(arr)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0004:packUNORM8Array","exportIndex":4,"name":"packUNORM8Array","kind":"function","signature":"packUNORM8Array(arr)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0005:unpackUNORM8Array","exportIndex":5,"name":"unpackUNORM8Array","kind":"function","signature":"unpackUNORM8Array(arr)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0006:packUNORM16Array","exportIndex":6,"name":"packUNORM16Array","kind":"function","signature":"packUNORM16Array(arr)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0007:unpackUNORM16Array","exportIndex":7,"name":"unpackUNORM16Array","kind":"function","signature":"unpackUNORM16Array(arr)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0008:packSignedRangeUNORMBits","exportIndex":8,"name":"packSignedRangeUNORMBits","kind":"function","signature":"packSignedRangeUNORMBits(value, range, bitDepth = 16, fallback = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0009:unpackSignedRangeUNORMBits","exportIndex":9,"name":"unpackSignedRangeUNORMBits","kind":"function","signature":"unpackSignedRangeUNORMBits(packed, range, bitDepth = 16, fallback = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0010:packSignedRangeUNORM16","exportIndex":10,"name":"packSignedRangeUNORM16","kind":"function","signature":"packSignedRangeUNORM16(value, range, fallback = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0011:unpackSignedRangeUNORM16","exportIndex":11,"name":"unpackSignedRangeUNORM16","kind":"function","signature":"unpackSignedRangeUNORM16(packed, range, fallback = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0012:packSignedRangeSNORMBits","exportIndex":12,"name":"packSignedRangeSNORMBits","kind":"function","signature":"packSignedRangeSNORMBits(value, range, bitDepth = 16, fallback = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0013:unpackSignedRangeSNORMBits","exportIndex":13,"name":"unpackSignedRangeSNORMBits","kind":"function","signature":"unpackSignedRangeSNORMBits(packed, range, bitDepth = 16, fallback = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0014:packSignedRangeSNORM16","exportIndex":14,"name":"packSignedRangeSNORM16","kind":"function","signature":"packSignedRangeSNORM16(value, range, fallback = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0015:unpackSignedRangeSNORM16","exportIndex":15,"name":"unpackSignedRangeSNORM16","kind":"function","signature":"unpackSignedRangeSNORM16(packed, range, fallback = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0016:packUint8x4","exportIndex":16,"name":"packUint8x4","kind":"function","signature":"packUint8x4(x, y, z, w)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0017:unpackUint8x4","exportIndex":17,"name":"unpackUint8x4","kind":"function","signature":"unpackUint8x4(packed)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0018:packUNORM8x4","exportIndex":18,"name":"packUNORM8x4","kind":"function","signature":"packUNORM8x4(x, y, z, w)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0019:unpackUNORM8x4","exportIndex":19,"name":"unpackUNORM8x4","kind":"function","signature":"unpackUNORM8x4(packed)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0020:packSNORM8x4","exportIndex":20,"name":"packSNORM8x4","kind":"function","signature":"packSNORM8x4(x, y, z, w)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0021:unpackSNORM8x4","exportIndex":21,"name":"unpackSNORM8x4","kind":"function","signature":"unpackSNORM8x4(packed)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0022:packUNORM16x2","exportIndex":22,"name":"packUNORM16x2","kind":"function","signature":"packUNORM16x2(x, y)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0023:unpackUNORM16x2","exportIndex":23,"name":"unpackUNORM16x2","kind":"function","signature":"unpackUNORM16x2(packed)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0024:packSNORM16x2","exportIndex":24,"name":"packSNORM16x2","kind":"function","signature":"packSNORM16x2(x, y)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0025:unpackSNORM16x2","exportIndex":25,"name":"unpackSNORM16x2","kind":"function","signature":"unpackSNORM16x2(packed)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0026:packTransformTRS10","exportIndex":26,"name":"packTransformTRS10","kind":"function","signature":"packTransformTRS10(transform = {}, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0027:unpackTransformTRS10","exportIndex":27,"name":"unpackTransformTRS10","kind":"function","signature":"unpackTransformTRS10(packed, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0028:packParticlePositionAge","exportIndex":28,"name":"packParticlePositionAge","kind":"function","signature":"packParticlePositionAge(x, y, z, age, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0029:unpackParticlePositionAge","exportIndex":29,"name":"unpackParticlePositionAge","kind":"function","signature":"unpackParticlePositionAge(packed, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0030:packParticleVelocityLifetime","exportIndex":30,"name":"packParticleVelocityLifetime","kind":"function","signature":"packParticleVelocityLifetime(vx, vy, vz, lifetime, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0031:unpackParticleVelocityLifetime","exportIndex":31,"name":"unpackParticleVelocityLifetime","kind":"function","signature":"unpackParticleVelocityLifetime(packed, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0032:packORM8","exportIndex":32,"name":"packORM8","kind":"function","signature":"packORM8(occlusion = 1, roughness = 1, metallic = 0, alpha = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0033:unpackORM8","exportIndex":33,"name":"unpackORM8","kind":"function","signature":"unpackORM8(packed)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0034:packPBRMaterialParams8","exportIndex":34,"name":"packPBRMaterialParams8","kind":"function","signature":"packPBRMaterialParams8(metallic = 0, roughness = 1, normalScale = 1, alphaCutoff = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0035:unpackPBRMaterialParams8","exportIndex":35,"name":"unpackPBRMaterialParams8","kind":"function","signature":"unpackPBRMaterialParams8(packed)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0036:normalizeVoxelMaterialUniforms","exportIndex":36,"name":"normalizeVoxelMaterialUniforms","kind":"function","signature":"normalizeVoxelMaterialUniforms(params = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0037:packVoxelMaterialUniforms","exportIndex":37,"name":"packVoxelMaterialUniforms","kind":"function","signature":"packVoxelMaterialUniforms(params = {}, out = new Float32Array(VOXEL_MATERIAL_UNIFORM_FLOATS)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0038:packRGB9E5","exportIndex":38,"name":"packRGB9E5","kind":"function","signature":"packRGB9E5(r, g, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0039:unpackRGB9E5","exportIndex":39,"name":"unpackRGB9E5","kind":"function","signature":"unpackRGB9E5(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0040:packR11G11B10F","exportIndex":40,"name":"packR11G11B10F","kind":"function","signature":"packR11G11B10F(r, g, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0041:unpackR11G11B10F","exportIndex":41,"name":"unpackR11G11B10F","kind":"function","signature":"unpackR11G11B10F(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0042:packOctNormal","exportIndex":42,"name":"packOctNormal","kind":"function","signature":"packOctNormal(nx, ny, nz)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0043:unpackOctNormal","exportIndex":43,"name":"unpackOctNormal","kind":"function","signature":"unpackOctNormal(packed)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0044:packQuatSmallestThree","exportIndex":44,"name":"packQuatSmallestThree","kind":"function","signature":"packQuatSmallestThree(x, y, z, w)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0045:unpackQuatSmallestThree","exportIndex":45,"name":"unpackQuatSmallestThree","kind":"function","signature":"unpackQuatSmallestThree(packed)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0046:packUNORM8","exportIndex":46,"name":"packUNORM8","kind":"function","signature":"packUNORM8(f)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0047:unpackUNORM8","exportIndex":47,"name":"unpackUNORM8","kind":"function","signature":"unpackUNORM8(u)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0048:packUNORM16","exportIndex":48,"name":"packUNORM16","kind":"function","signature":"packUNORM16(f)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0049:unpackUNORM16","exportIndex":49,"name":"unpackUNORM16","kind":"function","signature":"unpackUNORM16(u)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0050:packSNORM8","exportIndex":50,"name":"packSNORM8","kind":"function","signature":"packSNORM8(f)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0051:unpackSNORM8","exportIndex":51,"name":"unpackSNORM8","kind":"function","signature":"unpackSNORM8(s)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0052:packSNORM16","exportIndex":52,"name":"packSNORM16","kind":"function","signature":"packSNORM16(f)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0053:unpackSNORM16","exportIndex":53,"name":"unpackSNORM16","kind":"function","signature":"unpackSNORM16(s)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0054:TRANSFORM_PACKED_TRS_LENGTH","exportIndex":54,"name":"TRANSFORM_PACKED_TRS_LENGTH","kind":"constant","signature":"TRANSFORM_PACKED_TRS_LENGTH","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0055:DEFAULT_TRANSFORM_PACKING_SCALES","exportIndex":55,"name":"DEFAULT_TRANSFORM_PACKING_SCALES","kind":"constant","signature":"DEFAULT_TRANSFORM_PACKING_SCALES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0056:PARTICLE_STATE_PACKED_VEC4_LENGTH","exportIndex":56,"name":"PARTICLE_STATE_PACKED_VEC4_LENGTH","kind":"constant","signature":"PARTICLE_STATE_PACKED_VEC4_LENGTH","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0057:DEFAULT_PARTICLE_PACKING_RANGES","exportIndex":57,"name":"DEFAULT_PARTICLE_PACKING_RANGES","kind":"constant","signature":"DEFAULT_PARTICLE_PACKING_RANGES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0058:VOXEL_MATERIAL_UNIFORM_FLOATS","exportIndex":58,"name":"VOXEL_MATERIAL_UNIFORM_FLOATS","kind":"constant","signature":"VOXEL_MATERIAL_UNIFORM_FLOATS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0059:DEFAULT_VOXEL_MATERIAL_UNIFORMS","exportIndex":59,"name":"DEFAULT_VOXEL_MATERIAL_UNIFORMS","kind":"constant","signature":"DEFAULT_VOXEL_MATERIAL_UNIFORMS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0060:packVec2UNORM16","exportIndex":60,"name":"packVec2UNORM16","kind":"constant","signature":"packVec2UNORM16","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0061:unpackVec2UNORM16","exportIndex":61,"name":"unpackVec2UNORM16","kind":"constant","signature":"unpackVec2UNORM16","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0062:packVec2SNORM16","exportIndex":62,"name":"packVec2SNORM16","kind":"constant","signature":"packVec2SNORM16","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0063:unpackVec2SNORM16","exportIndex":63,"name":"unpackVec2SNORM16","kind":"constant","signature":"unpackVec2SNORM16","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0064:packTransform","exportIndex":64,"name":"packTransform","kind":"constant","signature":"packTransform","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0065:unpackTransform","exportIndex":65,"name":"unpackTransform","kind":"constant","signature":"unpackTransform","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0066:packParticlePosition","exportIndex":66,"name":"packParticlePosition","kind":"constant","signature":"packParticlePosition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0067:unpackParticlePosition","exportIndex":67,"name":"unpackParticlePosition","kind":"constant","signature":"unpackParticlePosition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0068:packParticleVelocity","exportIndex":68,"name":"packParticleVelocity","kind":"constant","signature":"packParticleVelocity","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0069:unpackParticleVelocity","exportIndex":69,"name":"unpackParticleVelocity","kind":"constant","signature":"unpackParticleVelocity","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0070:packMaterialORM8","exportIndex":70,"name":"packMaterialORM8","kind":"constant","signature":"packMaterialORM8","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0071:unpackMaterialORM8","exportIndex":71,"name":"unpackMaterialORM8","kind":"constant","signature":"unpackMaterialORM8","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0072:packMaterialParams8","exportIndex":72,"name":"packMaterialParams8","kind":"constant","signature":"packMaterialParams8","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0073:unpackMaterialParams8","exportIndex":73,"name":"unpackMaterialParams8","kind":"constant","signature":"unpackMaterialParams8","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0074:packQuaternionSmallestThree","exportIndex":74,"name":"packQuaternionSmallestThree","kind":"constant","signature":"packQuaternionSmallestThree","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0075:unpackQuaternionSmallestThree","exportIndex":75,"name":"unpackQuaternionSmallestThree","kind":"constant","signature":"unpackQuaternionSmallestThree","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0076:packQuat","exportIndex":76,"name":"packQuat","kind":"constant","signature":"packQuat","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPacking.md","moduleTitle":"core/math/MathPacking","source":"engine/core/math/MathPacking.js","import":"/engine/core/math/MathPacking.js","sourceHash":"15a1f71a21fd94ce62c6da4baeb4a8a7772bbbd9041aa536c7b6feebb5ac7b48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPacking.js#0077:unpackQuat","exportIndex":77,"name":"unpackQuat","kind":"constant","signature":"unpackQuat","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/MathPhysics.js","title":"core/math/MathPhysics","summary":"","exportCount":66}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0000:linearMotion","exportIndex":0,"name":"linearMotion","kind":"function","signature":"linearMotion(position, velocity, acceleration, dt)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0001:eulerIntegrate","exportIndex":1,"name":"eulerIntegrate","kind":"function","signature":"eulerIntegrate(position, velocity, acceleration, dt)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0002:semiImplicitEuler","exportIndex":2,"name":"semiImplicitEuler","kind":"function","signature":"semiImplicitEuler(position, velocity, acceleration, dt)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0003:projectileMotion","exportIndex":3,"name":"projectileMotion","kind":"function","signature":"projectileMotion(position, velocity, gravity, dt)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0004:projectilePosition","exportIndex":4,"name":"projectilePosition","kind":"function","signature":"projectilePosition(start, velocity, gravity, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0005:projectileTimeToApex","exportIndex":5,"name":"projectileTimeToApex","kind":"function","signature":"projectileTimeToApex(velocityY, gravity)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0006:projectileMaxHeight","exportIndex":6,"name":"projectileMaxHeight","kind":"function","signature":"projectileMaxHeight(startY, velocityY, gravity)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0007:projectileRange","exportIndex":7,"name":"projectileRange","kind":"function","signature":"projectileRange(speed, angle, gravity)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0008:projectileLaunchAngle","exportIndex":8,"name":"projectileLaunchAngle","kind":"function","signature":"projectileLaunchAngle(range, speed, gravity)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0009:projectileVelocityToTarget","exportIndex":9,"name":"projectileVelocityToTarget","kind":"function","signature":"projectileVelocityToTarget(start, target, gravity, preferHighArc = false)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0010:pointVelocityFromAngular","exportIndex":10,"name":"pointVelocityFromAngular","kind":"function","signature":"pointVelocityFromAngular(angularVelocity, centerOfRotation, point)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0011:totalPointVelocity","exportIndex":11,"name":"totalPointVelocity","kind":"function","signature":"totalPointVelocity(linearVelocity, angularVelocity, centerOfMass, point)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0012:gravitationalForce","exportIndex":12,"name":"gravitationalForce","kind":"function","signature":"gravitationalForce(m1, m2, p1, p2, G = 6.674e-11)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0013:springForce","exportIndex":13,"name":"springForce","kind":"function","signature":"springForce(position, anchor, restLength, stiffness)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0014:dampedSpringForce","exportIndex":14,"name":"dampedSpringForce","kind":"function","signature":"dampedSpringForce(position, velocity, anchor, restLength, stiffness, damping)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0015:dragForce","exportIndex":15,"name":"dragForce","kind":"function","signature":"dragForce(velocity, dragCoefficient, area, fluidDensity = 1.225)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0016:linearDragForce","exportIndex":16,"name":"linearDragForce","kind":"function","signature":"linearDragForce(velocity, dragCoefficient)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0017:frictionForce","exportIndex":17,"name":"frictionForce","kind":"function","signature":"frictionForce(velocity, normalForce, frictionCoefficient)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0018:buoyancyForce","exportIndex":18,"name":"buoyancyForce","kind":"function","signature":"buoyancyForce(submergedVolume, fluidDensity, gravity = 9.81)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0019:torqueFromForce","exportIndex":19,"name":"torqueFromForce","kind":"function","signature":"torqueFromForce(force, point, centerOfMass)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0020:angularAccelerationFromTorque","exportIndex":20,"name":"angularAccelerationFromTorque","kind":"function","signature":"angularAccelerationFromTorque(torque, inertia)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0021:elasticCollision","exportIndex":21,"name":"elasticCollision","kind":"function","signature":"elasticCollision(m1, v1, m2, v2)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0022:inelasticCollision","exportIndex":22,"name":"inelasticCollision","kind":"function","signature":"inelasticCollision(m1, v1, m2, v2, restitution = 0.5)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0023:sphereCollisionResponse","exportIndex":23,"name":"sphereCollisionResponse","kind":"function","signature":"sphereCollisionResponse(p1, v1, m1, r1, p2, v2, m2, r2, restitution = 0.8)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0024:planeCollisionResponse","exportIndex":24,"name":"planeCollisionResponse","kind":"function","signature":"planeCollisionResponse(velocity, normal, restitution = 0.8)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0025:collisionResponseWithFriction","exportIndex":25,"name":"collisionResponseWithFriction","kind":"function","signature":"collisionResponseWithFriction(velocity, normal, restitution, friction)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0026:distanceConstraint","exportIndex":26,"name":"distanceConstraint","kind":"function","signature":"distanceConstraint(p1, p2, targetDistance, stiffness = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0027:distanceConstraintMass","exportIndex":27,"name":"distanceConstraintMass","kind":"function","signature":"distanceConstraintMass(p1, m1, p2, m2, targetDistance, stiffness = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0028:pointConstraint","exportIndex":28,"name":"pointConstraint","kind":"function","signature":"pointConstraint(position, target, stiffness = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0029:angleConstraint","exportIndex":29,"name":"angleConstraint","kind":"function","signature":"angleConstraint(p1, p2, p3, targetAngle, stiffness = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0030:collisionConstraint","exportIndex":30,"name":"collisionConstraint","kind":"function","signature":"collisionConstraint(p1, r1, p2, r2)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0031:verletIntegrate","exportIndex":31,"name":"verletIntegrate","kind":"function","signature":"verletIntegrate(current, previous, acceleration, dt)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0032:verletIntegrateDamped","exportIndex":32,"name":"verletIntegrateDamped","kind":"function","signature":"verletIntegrateDamped(current, previous, acceleration, dt, damping = 0.99)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0033:verletVelocity","exportIndex":33,"name":"verletVelocity","kind":"function","signature":"verletVelocity(current, previous, dt)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0034:parallelAxisTheorem","exportIndex":34,"name":"parallelAxisTheorem","kind":"function","signature":"parallelAxisTheorem(inertia, mass, offset)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0035:totalMechanicalEnergy","exportIndex":35,"name":"totalMechanicalEnergy","kind":"function","signature":"totalMechanicalEnergy(mass, velocity, height, g = 9.81)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0036:rk2Integrate","exportIndex":36,"name":"rk2Integrate","kind":"function","signature":"rk2Integrate(position, velocity, accelerationFn, t, dt)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0037:rk4Integrate","exportIndex":37,"name":"rk4Integrate","kind":"function","signature":"rk4Integrate(position, velocity, accelerationFn, t, dt)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0038:rk4AdaptiveStep","exportIndex":38,"name":"rk4AdaptiveStep","kind":"function","signature":"rk4AdaptiveStep(position, velocity, accelerationFn, t, dt)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0039:pointAttractorForce","exportIndex":39,"name":"pointAttractorForce","kind":"function","signature":"pointAttractorForce(position, attractorPos, strength, falloffRadius = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0040:pointAttractorForceInvSq","exportIndex":40,"name":"pointAttractorForceInvSq","kind":"function","signature":"pointAttractorForceInvSq(position, attractorPos, strength, minDist = 0.1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0041:vortexFieldForce","exportIndex":41,"name":"vortexFieldForce","kind":"function","signature":"vortexFieldForce(position, vortexPos, vortexAxis, strength, radius = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0042:orbitForce","exportIndex":42,"name":"orbitForce","kind":"function","signature":"orbitForce(position, centerPos, orbitSpeed, upAxis = [0, 1, 0])","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0043:windForce","exportIndex":43,"name":"windForce","kind":"function","signature":"windForce(velocity, windVelocity, sensitivity = 0.1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0044:sphereSphereTimeOfImpact","exportIndex":44,"name":"sphereSphereTimeOfImpact","kind":"function","signature":"sphereSphereTimeOfImpact(p1, v1, r1, p2, r2)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0045:sphereSphereMovingTOI","exportIndex":45,"name":"sphereSphereMovingTOI","kind":"function","signature":"sphereSphereMovingTOI(p1, v1, r1, p2, v2, r2)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0046:spherePlaneTimeOfImpact","exportIndex":46,"name":"spherePlaneTimeOfImpact","kind":"function","signature":"spherePlaneTimeOfImpact(center, velocity, radius, planeNormal, planeD)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0047:sphereAABBTimeOfImpact","exportIndex":47,"name":"sphereAABBTimeOfImpact","kind":"function","signature":"sphereAABBTimeOfImpact(center, velocity, radius, aabbMin, aabbMax)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0048:clampVelocity","exportIndex":48,"name":"clampVelocity","kind":"function","signature":"clampVelocity(velocity, maxSpeed)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0049:applyDrag","exportIndex":49,"name":"applyDrag","kind":"function","signature":"applyDrag(velocity, drag, dt)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0050:separateSpheres","exportIndex":50,"name":"separateSpheres","kind":"function","signature":"separateSpheres(p1, r1, p2, r2)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0051:forceFromAcceleration","exportIndex":51,"name":"forceFromAcceleration","kind":"function","signature":"forceFromAcceleration(mass, acceleration)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0052:accelerationFromForce","exportIndex":52,"name":"accelerationFromForce","kind":"function","signature":"accelerationFromForce(mass, force)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0053:inertiaBox","exportIndex":53,"name":"inertiaBox","kind":"function","signature":"inertiaBox(mass, width, height, depth)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0054:inertiaSphere","exportIndex":54,"name":"inertiaSphere","kind":"function","signature":"inertiaSphere(mass, radius)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0055:inertiaHollowSphere","exportIndex":55,"name":"inertiaHollowSphere","kind":"function","signature":"inertiaHollowSphere(mass, radius)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0056:inertiaCylinder","exportIndex":56,"name":"inertiaCylinder","kind":"function","signature":"inertiaCylinder(mass, radius, height)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0057:inertiaCapsule","exportIndex":57,"name":"inertiaCapsule","kind":"function","signature":"inertiaCapsule(mass, radius, height)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0058:inertiaCone","exportIndex":58,"name":"inertiaCone","kind":"function","signature":"inertiaCone(mass, radius, height)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0059:kineticEnergy","exportIndex":59,"name":"kineticEnergy","kind":"function","signature":"kineticEnergy(mass, velocity)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0060:potentialEnergyGravity","exportIndex":60,"name":"potentialEnergyGravity","kind":"function","signature":"potentialEnergyGravity(mass, height, g = 9.81)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0061:springPotentialEnergy","exportIndex":61,"name":"springPotentialEnergy","kind":"function","signature":"springPotentialEnergy(stiffness, displacement)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0062:rotationalKineticEnergy","exportIndex":62,"name":"rotationalKineticEnergy","kind":"function","signature":"rotationalKineticEnergy(inertia, angularVelocity)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0063:linearMomentum","exportIndex":63,"name":"linearMomentum","kind":"function","signature":"linearMomentum(mass, velocity)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0064:angularMomentum","exportIndex":64,"name":"angularMomentum","kind":"function","signature":"angularMomentum(inertia, angularVelocity)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPhysics.md","moduleTitle":"core/math/MathPhysics","source":"engine/core/math/MathPhysics.js","import":"/engine/core/math/MathPhysics.js","sourceHash":"ffe6509ae9d4a0f51ba4a7171ef15843c19cc7c7a36184b8bd538d2e198e3782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPhysics.js#0065:inertiaSolidSphere","exportIndex":65,"name":"inertiaSolidSphere","kind":"constant","signature":"inertiaSolidSphere","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPlane.md","moduleTitle":"core/math/MathPlane","source":"engine/core/math/MathPlane.js","import":"/engine/core/math/MathPlane.js","sourceHash":"1c2d7a5d7b16b3de485f79fa9fe7fa64deeb61db2287730a47ed4c5c1ed1f69f","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/MathPlane.js","title":"core/math/MathPlane","summary":"MathPlane.js - Plane operations (Three.js/Godot/Unity parity) Plane represented as [nx, ny, nz, d] where nx*x + ny*y + nz*z + d = 0 Consolidates: MeshCutter.Plane, MathGeometry.rayPlane, MathGeometry.sdfPlane","exportCount":19}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPlane.md","moduleTitle":"core/math/MathPlane","source":"engine/core/math/MathPlane.js","import":"/engine/core/math/MathPlane.js","sourceHash":"1c2d7a5d7b16b3de485f79fa9fe7fa64deeb61db2287730a47ed4c5c1ed1f69f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPlane.js#0000:planeFromPointNormal","exportIndex":0,"name":"planeFromPointNormal","kind":"function","signature":"planeFromPointNormal(point, normal)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPlane.md","moduleTitle":"core/math/MathPlane","source":"engine/core/math/MathPlane.js","import":"/engine/core/math/MathPlane.js","sourceHash":"1c2d7a5d7b16b3de485f79fa9fe7fa64deeb61db2287730a47ed4c5c1ed1f69f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPlane.js#0001:planeFromPoints","exportIndex":1,"name":"planeFromPoints","kind":"function","signature":"planeFromPoints(a, b, c)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPlane.md","moduleTitle":"core/math/MathPlane","source":"engine/core/math/MathPlane.js","import":"/engine/core/math/MathPlane.js","sourceHash":"1c2d7a5d7b16b3de485f79fa9fe7fa64deeb61db2287730a47ed4c5c1ed1f69f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPlane.js#0002:planeNormalize","exportIndex":2,"name":"planeNormalize","kind":"function","signature":"planeNormalize(p)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPlane.md","moduleTitle":"core/math/MathPlane","source":"engine/core/math/MathPlane.js","import":"/engine/core/math/MathPlane.js","sourceHash":"1c2d7a5d7b16b3de485f79fa9fe7fa64deeb61db2287730a47ed4c5c1ed1f69f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPlane.js#0003:planeClassifyPoint","exportIndex":3,"name":"planeClassifyPoint","kind":"function","signature":"planeClassifyPoint(plane, point, eps = EPSILON)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPlane.md","moduleTitle":"core/math/MathPlane","source":"engine/core/math/MathPlane.js","import":"/engine/core/math/MathPlane.js","sourceHash":"1c2d7a5d7b16b3de485f79fa9fe7fa64deeb61db2287730a47ed4c5c1ed1f69f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPlane.js#0004:planeProjectPoint","exportIndex":4,"name":"planeProjectPoint","kind":"function","signature":"planeProjectPoint(plane, point)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPlane.md","moduleTitle":"core/math/MathPlane","source":"engine/core/math/MathPlane.js","import":"/engine/core/math/MathPlane.js","sourceHash":"1c2d7a5d7b16b3de485f79fa9fe7fa64deeb61db2287730a47ed4c5c1ed1f69f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPlane.js#0005:planeIntersectRay","exportIndex":5,"name":"planeIntersectRay","kind":"function","signature":"planeIntersectRay(plane, rayOrigin, rayDir)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPlane.md","moduleTitle":"core/math/MathPlane","source":"engine/core/math/MathPlane.js","import":"/engine/core/math/MathPlane.js","sourceHash":"1c2d7a5d7b16b3de485f79fa9fe7fa64deeb61db2287730a47ed4c5c1ed1f69f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPlane.js#0006:planeIntersectSegment","exportIndex":6,"name":"planeIntersectSegment","kind":"function","signature":"planeIntersectSegment(plane, p1, p2)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPlane.md","moduleTitle":"core/math/MathPlane","source":"engine/core/math/MathPlane.js","import":"/engine/core/math/MathPlane.js","sourceHash":"1c2d7a5d7b16b3de485f79fa9fe7fa64deeb61db2287730a47ed4c5c1ed1f69f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPlane.js#0007:planeIntersectPlane","exportIndex":7,"name":"planeIntersectPlane","kind":"function","signature":"planeIntersectPlane(p1, p2)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPlane.md","moduleTitle":"core/math/MathPlane","source":"engine/core/math/MathPlane.js","import":"/engine/core/math/MathPlane.js","sourceHash":"1c2d7a5d7b16b3de485f79fa9fe7fa64deeb61db2287730a47ed4c5c1ed1f69f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPlane.js#0008:planeIntersectThreePlanes","exportIndex":8,"name":"planeIntersectThreePlanes","kind":"function","signature":"planeIntersectThreePlanes(p1, p2, p3)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPlane.md","moduleTitle":"core/math/MathPlane","source":"engine/core/math/MathPlane.js","import":"/engine/core/math/MathPlane.js","sourceHash":"1c2d7a5d7b16b3de485f79fa9fe7fa64deeb61db2287730a47ed4c5c1ed1f69f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPlane.js#0009:planeTransformMat4","exportIndex":9,"name":"planeTransformMat4","kind":"function","signature":"planeTransformMat4(plane, m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPlane.md","moduleTitle":"core/math/MathPlane","source":"engine/core/math/MathPlane.js","import":"/engine/core/math/MathPlane.js","sourceHash":"1c2d7a5d7b16b3de485f79fa9fe7fa64deeb61db2287730a47ed4c5c1ed1f69f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPlane.js#0010:planeEquals","exportIndex":10,"name":"planeEquals","kind":"function","signature":"planeEquals(a, b, eps = EPSILON)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPlane.md","moduleTitle":"core/math/MathPlane","source":"engine/core/math/MathPlane.js","import":"/engine/core/math/MathPlane.js","sourceHash":"1c2d7a5d7b16b3de485f79fa9fe7fa64deeb61db2287730a47ed4c5c1ed1f69f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPlane.js#0011:planeCreate","exportIndex":11,"name":"planeCreate","kind":"function","signature":"planeCreate(nx, ny, nz, d)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPlane.md","moduleTitle":"core/math/MathPlane","source":"engine/core/math/MathPlane.js","import":"/engine/core/math/MathPlane.js","sourceHash":"1c2d7a5d7b16b3de485f79fa9fe7fa64deeb61db2287730a47ed4c5c1ed1f69f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPlane.js#0012:planeClone","exportIndex":12,"name":"planeClone","kind":"function","signature":"planeClone(p)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPlane.md","moduleTitle":"core/math/MathPlane","source":"engine/core/math/MathPlane.js","import":"/engine/core/math/MathPlane.js","sourceHash":"1c2d7a5d7b16b3de485f79fa9fe7fa64deeb61db2287730a47ed4c5c1ed1f69f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPlane.js#0013:planeGetNormal","exportIndex":13,"name":"planeGetNormal","kind":"function","signature":"planeGetNormal(p)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPlane.md","moduleTitle":"core/math/MathPlane","source":"engine/core/math/MathPlane.js","import":"/engine/core/math/MathPlane.js","sourceHash":"1c2d7a5d7b16b3de485f79fa9fe7fa64deeb61db2287730a47ed4c5c1ed1f69f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPlane.js#0014:planeDistanceToPoint","exportIndex":14,"name":"planeDistanceToPoint","kind":"function","signature":"planeDistanceToPoint(plane, point)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPlane.md","moduleTitle":"core/math/MathPlane","source":"engine/core/math/MathPlane.js","import":"/engine/core/math/MathPlane.js","sourceHash":"1c2d7a5d7b16b3de485f79fa9fe7fa64deeb61db2287730a47ed4c5c1ed1f69f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPlane.js#0015:planeAbsDistanceToPoint","exportIndex":15,"name":"planeAbsDistanceToPoint","kind":"function","signature":"planeAbsDistanceToPoint(plane, point)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPlane.md","moduleTitle":"core/math/MathPlane","source":"engine/core/math/MathPlane.js","import":"/engine/core/math/MathPlane.js","sourceHash":"1c2d7a5d7b16b3de485f79fa9fe7fa64deeb61db2287730a47ed4c5c1ed1f69f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPlane.js#0016:planeNegate","exportIndex":16,"name":"planeNegate","kind":"function","signature":"planeNegate(p)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPlane.md","moduleTitle":"core/math/MathPlane","source":"engine/core/math/MathPlane.js","import":"/engine/core/math/MathPlane.js","sourceHash":"1c2d7a5d7b16b3de485f79fa9fe7fa64deeb61db2287730a47ed4c5c1ed1f69f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPlane.js#0017:planeCoplanarPoint","exportIndex":17,"name":"planeCoplanarPoint","kind":"function","signature":"planeCoplanarPoint(plane)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPlane.md","moduleTitle":"core/math/MathPlane","source":"engine/core/math/MathPlane.js","import":"/engine/core/math/MathPlane.js","sourceHash":"1c2d7a5d7b16b3de485f79fa9fe7fa64deeb61db2287730a47ed4c5c1ed1f69f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPlane.js#0018:planeClosestPoint","exportIndex":18,"name":"planeClosestPoint","kind":"constant","signature":"planeClosestPoint","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPolynomial.md","moduleTitle":"core/math/MathPolynomial","source":"engine/core/math/MathPolynomial.js","import":"/engine/core/math/MathPolynomial.js","sourceHash":"327bec1221f20c6ac6f248261c06b405ff80b55bff365762d4dddd9b37517036","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/MathPolynomial.js","title":"core/math/MathPolynomial","summary":"MathPolynomial.js - Polynomial root solvers and evaluation Consolidates: AIAiming.js inline quadratic, SpeculativeContacts.js quadratic CCD Standard in game math libraries for intersection tests, predictive aim, CCD","exportCount":10}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPolynomial.md","moduleTitle":"core/math/MathPolynomial","source":"engine/core/math/MathPolynomial.js","import":"/engine/core/math/MathPolynomial.js","sourceHash":"327bec1221f20c6ac6f248261c06b405ff80b55bff365762d4dddd9b37517036","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPolynomial.js#0000:polyEval","exportIndex":0,"name":"polyEval","kind":"function","signature":"polyEval(coeffs, x)","summary":"Evaluate polynomial using Horner's method: coeffs[0]*x^n + coeffs[1]*x^(n-1) + ... + coeffs[n]"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPolynomial.md","moduleTitle":"core/math/MathPolynomial","source":"engine/core/math/MathPolynomial.js","import":"/engine/core/math/MathPolynomial.js","sourceHash":"327bec1221f20c6ac6f248261c06b405ff80b55bff365762d4dddd9b37517036","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPolynomial.js#0001:polyDerivative","exportIndex":1,"name":"polyDerivative","kind":"function","signature":"polyDerivative(coeffs)","summary":"Derivative coefficients: returns new array of degree n-1"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPolynomial.md","moduleTitle":"core/math/MathPolynomial","source":"engine/core/math/MathPolynomial.js","import":"/engine/core/math/MathPolynomial.js","sourceHash":"327bec1221f20c6ac6f248261c06b405ff80b55bff365762d4dddd9b37517036","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPolynomial.js#0002:polyEvalWithDerivative","exportIndex":2,"name":"polyEvalWithDerivative","kind":"function","signature":"polyEvalWithDerivative(coeffs, x)","summary":"Evaluate polynomial and its derivative simultaneously (Horner's)"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPolynomial.md","moduleTitle":"core/math/MathPolynomial","source":"engine/core/math/MathPolynomial.js","import":"/engine/core/math/MathPolynomial.js","sourceHash":"327bec1221f20c6ac6f248261c06b405ff80b55bff365762d4dddd9b37517036","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPolynomial.js#0003:solveLinear","exportIndex":3,"name":"solveLinear","kind":"function","signature":"solveLinear(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPolynomial.md","moduleTitle":"core/math/MathPolynomial","source":"engine/core/math/MathPolynomial.js","import":"/engine/core/math/MathPolynomial.js","sourceHash":"327bec1221f20c6ac6f248261c06b405ff80b55bff365762d4dddd9b37517036","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPolynomial.js#0004:solveQuadratic","exportIndex":4,"name":"solveQuadratic","kind":"function","signature":"solveQuadratic(a, b, c)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPolynomial.md","moduleTitle":"core/math/MathPolynomial","source":"engine/core/math/MathPolynomial.js","import":"/engine/core/math/MathPolynomial.js","sourceHash":"327bec1221f20c6ac6f248261c06b405ff80b55bff365762d4dddd9b37517036","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPolynomial.js#0005:solveQuadraticPositive","exportIndex":5,"name":"solveQuadraticPositive","kind":"function","signature":"solveQuadraticPositive(a, b, c)","summary":"Smallest positive root of quadratic, or null"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPolynomial.md","moduleTitle":"core/math/MathPolynomial","source":"engine/core/math/MathPolynomial.js","import":"/engine/core/math/MathPolynomial.js","sourceHash":"327bec1221f20c6ac6f248261c06b405ff80b55bff365762d4dddd9b37517036","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPolynomial.js#0006:solveCubic","exportIndex":6,"name":"solveCubic","kind":"function","signature":"solveCubic(a, b, c, d)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPolynomial.md","moduleTitle":"core/math/MathPolynomial","source":"engine/core/math/MathPolynomial.js","import":"/engine/core/math/MathPolynomial.js","sourceHash":"327bec1221f20c6ac6f248261c06b405ff80b55bff365762d4dddd9b37517036","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPolynomial.js#0007:solveQuartic","exportIndex":7,"name":"solveQuartic","kind":"function","signature":"solveQuartic(a, b, c, d, e)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPolynomial.md","moduleTitle":"core/math/MathPolynomial","source":"engine/core/math/MathPolynomial.js","import":"/engine/core/math/MathPolynomial.js","sourceHash":"327bec1221f20c6ac6f248261c06b405ff80b55bff365762d4dddd9b37517036","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPolynomial.js#0008:polyNewtonRoot","exportIndex":8,"name":"polyNewtonRoot","kind":"function","signature":"polyNewtonRoot(coeffs, guess, maxIter = 20, tolerance = EPSILON)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPolynomial.md","moduleTitle":"core/math/MathPolynomial","source":"engine/core/math/MathPolynomial.js","import":"/engine/core/math/MathPolynomial.js","sourceHash":"327bec1221f20c6ac6f248261c06b405ff80b55bff365762d4dddd9b37517036","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPolynomial.js#0009:polyRealRoots","exportIndex":9,"name":"polyRealRoots","kind":"function","signature":"polyRealRoots(coeffs, lo = -1000, hi = 1000, tolerance = 1e-10)","summary":"Find all real roots of an arbitrary polynomial using Sturm chain + bisection"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPrecision.md","moduleTitle":"core/math/MathPrecision","source":"engine/core/math/MathPrecision.js","import":"/engine/core/math/MathPrecision.js","sourceHash":"171c56c863ce3de7ac014d549f7faa9ec0d89367cb2e57e5095eb8f997ea51e4","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/MathPrecision.js","title":"core/math/MathPrecision","summary":"MathPrecision.js - numeric tolerance and world-scale split-double helpers. Pure math helpers for tests, serialization policy, and CPU/GPU coordinate packing.","exportCount":17}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPrecision.md","moduleTitle":"core/math/MathPrecision","source":"engine/core/math/MathPrecision.js","import":"/engine/core/math/MathPrecision.js","sourceHash":"171c56c863ce3de7ac014d549f7faa9ec0d89367cb2e57e5095eb8f997ea51e4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPrecision.js#0000:absoluteError","exportIndex":0,"name":"absoluteError","kind":"function","signature":"absoluteError(actual, expected)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPrecision.md","moduleTitle":"core/math/MathPrecision","source":"engine/core/math/MathPrecision.js","import":"/engine/core/math/MathPrecision.js","sourceHash":"171c56c863ce3de7ac014d549f7faa9ec0d89367cb2e57e5095eb8f997ea51e4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPrecision.js#0001:relativeError","exportIndex":1,"name":"relativeError","kind":"function","signature":"relativeError(actual, expected)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPrecision.md","moduleTitle":"core/math/MathPrecision","source":"engine/core/math/MathPrecision.js","import":"/engine/core/math/MathPrecision.js","sourceHash":"171c56c863ce3de7ac014d549f7faa9ec0d89367cb2e57e5095eb8f997ea51e4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPrecision.js#0002:numberWithinTolerance","exportIndex":2,"name":"numberWithinTolerance","kind":"function","signature":"numberWithinTolerance(actual, expected, absoluteTolerance = DEFAULT_ABSOLUTE_TOLERANCE, relativeTolerance = DEFAULT_RELATIVE_TOLERANCE)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPrecision.md","moduleTitle":"core/math/MathPrecision","source":"engine/core/math/MathPrecision.js","import":"/engine/core/math/MathPrecision.js","sourceHash":"171c56c863ce3de7ac014d549f7faa9ec0d89367cb2e57e5095eb8f997ea51e4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPrecision.js#0003:maxAbsError","exportIndex":3,"name":"maxAbsError","kind":"function","signature":"maxAbsError(actual, expected)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPrecision.md","moduleTitle":"core/math/MathPrecision","source":"engine/core/math/MathPrecision.js","import":"/engine/core/math/MathPrecision.js","sourceHash":"171c56c863ce3de7ac014d549f7faa9ec0d89367cb2e57e5095eb8f997ea51e4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPrecision.js#0004:vecWithinTolerance","exportIndex":4,"name":"vecWithinTolerance","kind":"function","signature":"vecWithinTolerance(actual, expected, absoluteTolerance = DEFAULT_ABSOLUTE_TOLERANCE, relativeTolerance = DEFAULT_RELATIVE_TOLERANCE)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPrecision.md","moduleTitle":"core/math/MathPrecision","source":"engine/core/math/MathPrecision.js","import":"/engine/core/math/MathPrecision.js","sourceHash":"171c56c863ce3de7ac014d549f7faa9ec0d89367cb2e57e5095eb8f997ea51e4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPrecision.js#0005:splitFloat64ToFloat32","exportIndex":5,"name":"splitFloat64ToFloat32","kind":"function","signature":"splitFloat64ToFloat32(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPrecision.md","moduleTitle":"core/math/MathPrecision","source":"engine/core/math/MathPrecision.js","import":"/engine/core/math/MathPrecision.js","sourceHash":"171c56c863ce3de7ac014d549f7faa9ec0d89367cb2e57e5095eb8f997ea51e4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPrecision.js#0006:joinFloat32Split","exportIndex":6,"name":"joinFloat32Split","kind":"function","signature":"joinFloat32Split(split)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPrecision.md","moduleTitle":"core/math/MathPrecision","source":"engine/core/math/MathPrecision.js","import":"/engine/core/math/MathPrecision.js","sourceHash":"171c56c863ce3de7ac014d549f7faa9ec0d89367cb2e57e5095eb8f997ea51e4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPrecision.js#0007:splitVec3Float64ToFloat32","exportIndex":7,"name":"splitVec3Float64ToFloat32","kind":"function","signature":"splitVec3Float64ToFloat32(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPrecision.md","moduleTitle":"core/math/MathPrecision","source":"engine/core/math/MathPrecision.js","import":"/engine/core/math/MathPrecision.js","sourceHash":"171c56c863ce3de7ac014d549f7faa9ec0d89367cb2e57e5095eb8f997ea51e4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPrecision.js#0008:joinVec3Float32Split","exportIndex":8,"name":"joinVec3Float32Split","kind":"function","signature":"joinVec3Float32Split(split)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPrecision.md","moduleTitle":"core/math/MathPrecision","source":"engine/core/math/MathPrecision.js","import":"/engine/core/math/MathPrecision.js","sourceHash":"171c56c863ce3de7ac014d549f7faa9ec0d89367cb2e57e5095eb8f997ea51e4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPrecision.js#0009:serializeFloat32Split","exportIndex":9,"name":"serializeFloat32Split","kind":"function","signature":"serializeFloat32Split(split)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPrecision.md","moduleTitle":"core/math/MathPrecision","source":"engine/core/math/MathPrecision.js","import":"/engine/core/math/MathPrecision.js","sourceHash":"171c56c863ce3de7ac014d549f7faa9ec0d89367cb2e57e5095eb8f997ea51e4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPrecision.js#0010:deserializeFloat32Split","exportIndex":10,"name":"deserializeFloat32Split","kind":"function","signature":"deserializeFloat32Split(payload)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPrecision.md","moduleTitle":"core/math/MathPrecision","source":"engine/core/math/MathPrecision.js","import":"/engine/core/math/MathPrecision.js","sourceHash":"171c56c863ce3de7ac014d549f7faa9ec0d89367cb2e57e5095eb8f997ea51e4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPrecision.js#0011:serializeVec3Float32Split","exportIndex":11,"name":"serializeVec3Float32Split","kind":"function","signature":"serializeVec3Float32Split(split)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPrecision.md","moduleTitle":"core/math/MathPrecision","source":"engine/core/math/MathPrecision.js","import":"/engine/core/math/MathPrecision.js","sourceHash":"171c56c863ce3de7ac014d549f7faa9ec0d89367cb2e57e5095eb8f997ea51e4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPrecision.js#0012:deserializeVec3Float32Split","exportIndex":12,"name":"deserializeVec3Float32Split","kind":"function","signature":"deserializeVec3Float32Split(payload)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPrecision.md","moduleTitle":"core/math/MathPrecision","source":"engine/core/math/MathPrecision.js","import":"/engine/core/math/MathPrecision.js","sourceHash":"171c56c863ce3de7ac014d549f7faa9ec0d89367cb2e57e5095eb8f997ea51e4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPrecision.js#0013:jsonRoundTrip","exportIndex":13,"name":"jsonRoundTrip","kind":"function","signature":"jsonRoundTrip(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPrecision.md","moduleTitle":"core/math/MathPrecision","source":"engine/core/math/MathPrecision.js","import":"/engine/core/math/MathPrecision.js","sourceHash":"171c56c863ce3de7ac014d549f7faa9ec0d89367cb2e57e5095eb8f997ea51e4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPrecision.js#0014:DEFAULT_ABSOLUTE_TOLERANCE","exportIndex":14,"name":"DEFAULT_ABSOLUTE_TOLERANCE","kind":"constant","signature":"DEFAULT_ABSOLUTE_TOLERANCE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPrecision.md","moduleTitle":"core/math/MathPrecision","source":"engine/core/math/MathPrecision.js","import":"/engine/core/math/MathPrecision.js","sourceHash":"171c56c863ce3de7ac014d549f7faa9ec0d89367cb2e57e5095eb8f997ea51e4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPrecision.js#0015:DEFAULT_RELATIVE_TOLERANCE","exportIndex":15,"name":"DEFAULT_RELATIVE_TOLERANCE","kind":"constant","signature":"DEFAULT_RELATIVE_TOLERANCE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathPrecision.md","moduleTitle":"core/math/MathPrecision","source":"engine/core/math/MathPrecision.js","import":"/engine/core/math/MathPrecision.js","sourceHash":"171c56c863ce3de7ac014d549f7faa9ec0d89367cb2e57e5095eb8f997ea51e4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathPrecision.js#0016:DEFAULT_WORLD_SPLIT_TOLERANCE","exportIndex":16,"name":"DEFAULT_WORLD_SPLIT_TOLERANCE","kind":"constant","signature":"DEFAULT_WORLD_SPLIT_TOLERANCE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuality.md","moduleTitle":"core/math/MathQuality","source":"engine/core/math/MathQuality.js","import":"/engine/core/math/MathQuality.js","sourceHash":"e42d489bbc963759ffe50078c27420ab9b5688dbdf807b1d05475d2827a4abc7","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/MathQuality.js","title":"core/math/MathQuality","summary":"MathQuality.js - reusable error, quality, signal, and size metrics.","exportCount":18}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuality.md","moduleTitle":"core/math/MathQuality","source":"engine/core/math/MathQuality.js","import":"/engine/core/math/MathQuality.js","sourceHash":"e42d489bbc963759ffe50078c27420ab9b5688dbdf807b1d05475d2827a4abc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuality.js#0000:pairwiseErrorStats","exportIndex":0,"name":"pairwiseErrorStats","kind":"function","signature":"pairwiseErrorStats(reference, candidate)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuality.md","moduleTitle":"core/math/MathQuality","source":"engine/core/math/MathQuality.js","import":"/engine/core/math/MathQuality.js","sourceHash":"e42d489bbc963759ffe50078c27420ab9b5688dbdf807b1d05475d2827a4abc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuality.js#0001:meanSquaredError","exportIndex":1,"name":"meanSquaredError","kind":"function","signature":"meanSquaredError(reference, candidate)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuality.md","moduleTitle":"core/math/MathQuality","source":"engine/core/math/MathQuality.js","import":"/engine/core/math/MathQuality.js","sourceHash":"e42d489bbc963759ffe50078c27420ab9b5688dbdf807b1d05475d2827a4abc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuality.js#0002:rootMeanSquaredError","exportIndex":2,"name":"rootMeanSquaredError","kind":"function","signature":"rootMeanSquaredError(reference, candidate)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuality.md","moduleTitle":"core/math/MathQuality","source":"engine/core/math/MathQuality.js","import":"/engine/core/math/MathQuality.js","sourceHash":"e42d489bbc963759ffe50078c27420ab9b5688dbdf807b1d05475d2827a4abc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuality.js#0003:meanAbsoluteError","exportIndex":3,"name":"meanAbsoluteError","kind":"function","signature":"meanAbsoluteError(reference, candidate)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuality.md","moduleTitle":"core/math/MathQuality","source":"engine/core/math/MathQuality.js","import":"/engine/core/math/MathQuality.js","sourceHash":"e42d489bbc963759ffe50078c27420ab9b5688dbdf807b1d05475d2827a4abc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuality.js#0004:averageError","exportIndex":4,"name":"averageError","kind":"function","signature":"averageError(reference, candidate)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuality.md","moduleTitle":"core/math/MathQuality","source":"engine/core/math/MathQuality.js","import":"/engine/core/math/MathQuality.js","sourceHash":"e42d489bbc963759ffe50078c27420ab9b5688dbdf807b1d05475d2827a4abc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuality.js#0005:peakAbsoluteError","exportIndex":5,"name":"peakAbsoluteError","kind":"function","signature":"peakAbsoluteError(reference, candidate)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuality.md","moduleTitle":"core/math/MathQuality","source":"engine/core/math/MathQuality.js","import":"/engine/core/math/MathQuality.js","sourceHash":"e42d489bbc963759ffe50078c27420ab9b5688dbdf807b1d05475d2827a4abc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuality.js#0006:signalToNoiseRatio","exportIndex":6,"name":"signalToNoiseRatio","kind":"function","signature":"signalToNoiseRatio(reference, candidate)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuality.md","moduleTitle":"core/math/MathQuality","source":"engine/core/math/MathQuality.js","import":"/engine/core/math/MathQuality.js","sourceHash":"e42d489bbc963759ffe50078c27420ab9b5688dbdf807b1d05475d2827a4abc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuality.js#0007:peakSignalToNoiseRatio","exportIndex":7,"name":"peakSignalToNoiseRatio","kind":"function","signature":"peakSignalToNoiseRatio(reference, candidate, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuality.md","moduleTitle":"core/math/MathQuality","source":"engine/core/math/MathQuality.js","import":"/engine/core/math/MathQuality.js","sourceHash":"e42d489bbc963759ffe50078c27420ab9b5688dbdf807b1d05475d2827a4abc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuality.js#0008:structuralSimilarityLite","exportIndex":8,"name":"structuralSimilarityLite","kind":"function","signature":"structuralSimilarityLite(reference, candidate, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuality.md","moduleTitle":"core/math/MathQuality","source":"engine/core/math/MathQuality.js","import":"/engine/core/math/MathQuality.js","sourceHash":"e42d489bbc963759ffe50078c27420ab9b5688dbdf807b1d05475d2827a4abc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuality.js#0009:windowedStructuralSimilarity","exportIndex":9,"name":"windowedStructuralSimilarity","kind":"function","signature":"windowedStructuralSimilarity(reference, candidate, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuality.md","moduleTitle":"core/math/MathQuality","source":"engine/core/math/MathQuality.js","import":"/engine/core/math/MathQuality.js","sourceHash":"e42d489bbc963759ffe50078c27420ab9b5688dbdf807b1d05475d2827a4abc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuality.js#0010:channelQualityReport","exportIndex":10,"name":"channelQualityReport","kind":"function","signature":"channelQualityReport(reference, candidate, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuality.md","moduleTitle":"core/math/MathQuality","source":"engine/core/math/MathQuality.js","import":"/engine/core/math/MathQuality.js","sourceHash":"e42d489bbc963759ffe50078c27420ab9b5688dbdf807b1d05475d2827a4abc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuality.js#0011:imageQualityReport","exportIndex":11,"name":"imageQualityReport","kind":"function","signature":"imageQualityReport(referenceImage, candidateImage, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuality.md","moduleTitle":"core/math/MathQuality","source":"engine/core/math/MathQuality.js","import":"/engine/core/math/MathQuality.js","sourceHash":"e42d489bbc963759ffe50078c27420ab9b5688dbdf807b1d05475d2827a4abc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuality.js#0012:histogramDifference","exportIndex":12,"name":"histogramDifference","kind":"function","signature":"histogramDifference(referenceHistogram, candidateHistogram, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuality.md","moduleTitle":"core/math/MathQuality","source":"engine/core/math/MathQuality.js","import":"/engine/core/math/MathQuality.js","sourceHash":"e42d489bbc963759ffe50078c27420ab9b5688dbdf807b1d05475d2827a4abc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuality.js#0013:audioRmsError","exportIndex":13,"name":"audioRmsError","kind":"function","signature":"audioRmsError(reference, candidate)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuality.md","moduleTitle":"core/math/MathQuality","source":"engine/core/math/MathQuality.js","import":"/engine/core/math/MathQuality.js","sourceHash":"e42d489bbc963759ffe50078c27420ab9b5688dbdf807b1d05475d2827a4abc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuality.js#0014:frameDifference","exportIndex":14,"name":"frameDifference","kind":"function","signature":"frameDifference(reference, candidate, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuality.md","moduleTitle":"core/math/MathQuality","source":"engine/core/math/MathQuality.js","import":"/engine/core/math/MathQuality.js","sourceHash":"e42d489bbc963759ffe50078c27420ab9b5688dbdf807b1d05475d2827a4abc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuality.js#0015:perceptualErrorScore","exportIndex":15,"name":"perceptualErrorScore","kind":"function","signature":"perceptualErrorScore(reference, candidate, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuality.md","moduleTitle":"core/math/MathQuality","source":"engine/core/math/MathQuality.js","import":"/engine/core/math/MathQuality.js","sourceHash":"e42d489bbc963759ffe50078c27420ab9b5688dbdf807b1d05475d2827a4abc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuality.js#0016:qualityMetricsReport","exportIndex":16,"name":"qualityMetricsReport","kind":"function","signature":"qualityMetricsReport(reference, candidate, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuality.md","moduleTitle":"core/math/MathQuality","source":"engine/core/math/MathQuality.js","import":"/engine/core/math/MathQuality.js","sourceHash":"e42d489bbc963759ffe50078c27420ab9b5688dbdf807b1d05475d2827a4abc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuality.js#0017:qualitySizeScore","exportIndex":17,"name":"qualitySizeScore","kind":"function","signature":"qualitySizeScore({ quality = 1, byteSize = 0, referenceByteSize = 0, byteBudget = Infinity, budgetBytes = byteBudget, qualityWeight = 0.7, sizeWeight = 0.3, budgetWeight, } = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/MathQuat.js","title":"core/math/MathQuat","summary":"MathQuat.js - Extended Quaternion operations [x, y, z, w] Supplements the basic quat ops in EngineMath.js with advanced features Depends on: MathConstants.js, MathScalar.js","exportCount":52}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0000:quatFromAxisAngle","exportIndex":0,"name":"quatFromAxisAngle","kind":"function","signature":"quatFromAxisAngle(axis, angle)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0001:quatFromEuler","exportIndex":1,"name":"quatFromEuler","kind":"function","signature":"quatFromEuler(x, y, z, order = 'XYZ')","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0002:quatToEuler","exportIndex":2,"name":"quatToEuler","kind":"function","signature":"quatToEuler(q, order = 'XYZ')","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0003:quatFromRotationMatrix","exportIndex":3,"name":"quatFromRotationMatrix","kind":"function","signature":"quatFromRotationMatrix(m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0004:quatFromVectors","exportIndex":4,"name":"quatFromVectors","kind":"function","signature":"quatFromVectors(from, to)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0005:quatLookAt","exportIndex":5,"name":"quatLookAt","kind":"function","signature":"quatLookAt(direction, up = [0, 1, 0])","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0006:quatMultiply","exportIndex":6,"name":"quatMultiply","kind":"function","signature":"quatMultiply(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0007:quatInverse","exportIndex":7,"name":"quatInverse","kind":"function","signature":"quatInverse(q)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0008:quatNormalize","exportIndex":8,"name":"quatNormalize","kind":"function","signature":"quatNormalize(q)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0009:quatRotateVec3","exportIndex":9,"name":"quatRotateVec3","kind":"function","signature":"quatRotateVec3(v, q)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0010:quatSlerp","exportIndex":10,"name":"quatSlerp","kind":"function","signature":"quatSlerp(a, b, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0011:quatGetAxis","exportIndex":11,"name":"quatGetAxis","kind":"function","signature":"quatGetAxis(q)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0012:quatEquals","exportIndex":12,"name":"quatEquals","kind":"function","signature":"quatEquals(a, b, eps = EPSILON)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0013:quatRandom","exportIndex":13,"name":"quatRandom","kind":"function","signature":"quatRandom()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0014:quatExp","exportIndex":14,"name":"quatExp","kind":"function","signature":"quatExp(q)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0015:quatLog","exportIndex":15,"name":"quatLog","kind":"function","signature":"quatLog(q)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0016:quatRotateTowards","exportIndex":16,"name":"quatRotateTowards","kind":"function","signature":"quatRotateTowards(from, to, maxRadiansDelta)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0017:quatSlerpUnclamped","exportIndex":17,"name":"quatSlerpUnclamped","kind":"function","signature":"quatSlerpUnclamped(a, b, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0018:quatToAxisAngle","exportIndex":18,"name":"quatToAxisAngle","kind":"function","signature":"quatToAxisAngle(q)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0019:quatSwingTwist","exportIndex":19,"name":"quatSwingTwist","kind":"function","signature":"quatSwingTwist(q, twistAxis)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0020:quatIntegrateAngularVelocity","exportIndex":20,"name":"quatIntegrateAngularVelocity","kind":"function","signature":"quatIntegrateAngularVelocity(q, angularVel, dt)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0021:quat","exportIndex":21,"name":"quat","kind":"function","signature":"quat(x = 0, y = 0, z = 0, w = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0022:quatIdentity","exportIndex":22,"name":"quatIdentity","kind":"function","signature":"quatIdentity()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0023:quatClone","exportIndex":23,"name":"quatClone","kind":"function","signature":"quatClone(q)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0024:quatCopy","exportIndex":24,"name":"quatCopy","kind":"function","signature":"quatCopy(out, q)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0025:quatSet","exportIndex":25,"name":"quatSet","kind":"function","signature":"quatSet(out, x, y, z, w)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0026:quatFromEulerDeg","exportIndex":26,"name":"quatFromEulerDeg","kind":"function","signature":"quatFromEulerDeg(x, y, z, order = 'XYZ')","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0027:quatToEulerDeg","exportIndex":27,"name":"quatToEulerDeg","kind":"function","signature":"quatToEulerDeg(q, order = 'XYZ')","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0028:quatAdd","exportIndex":28,"name":"quatAdd","kind":"function","signature":"quatAdd(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0029:quatScale","exportIndex":29,"name":"quatScale","kind":"function","signature":"quatScale(q, s)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0030:quatConjugate","exportIndex":30,"name":"quatConjugate","kind":"function","signature":"quatConjugate(q)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0031:quatNegate","exportIndex":31,"name":"quatNegate","kind":"function","signature":"quatNegate(q)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0032:quatLength","exportIndex":32,"name":"quatLength","kind":"function","signature":"quatLength(q)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0033:quatLengthSq","exportIndex":33,"name":"quatLengthSq","kind":"function","signature":"quatLengthSq(q)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0034:quatDot","exportIndex":34,"name":"quatDot","kind":"function","signature":"quatDot(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0035:quatLerp","exportIndex":35,"name":"quatLerp","kind":"function","signature":"quatLerp(a, b, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0036:quatSquad","exportIndex":36,"name":"quatSquad","kind":"function","signature":"quatSquad(q0, q1, q2, q3, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0037:quatGetAngle","exportIndex":37,"name":"quatGetAngle","kind":"function","signature":"quatGetAngle(q)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0038:quatAngleBetween","exportIndex":38,"name":"quatAngleBetween","kind":"function","signature":"quatAngleBetween(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0039:quatPow","exportIndex":39,"name":"quatPow","kind":"function","signature":"quatPow(q, n)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0040:quatRotateX","exportIndex":40,"name":"quatRotateX","kind":"function","signature":"quatRotateX(q, angle)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0041:quatRotateY","exportIndex":41,"name":"quatRotateY","kind":"function","signature":"quatRotateY(q, angle)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0042:quatRotateZ","exportIndex":42,"name":"quatRotateZ","kind":"function","signature":"quatRotateZ(q, angle)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0043:quatForward","exportIndex":43,"name":"quatForward","kind":"function","signature":"quatForward(q)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0044:quatRight","exportIndex":44,"name":"quatRight","kind":"function","signature":"quatRight(q)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0045:quatUp","exportIndex":45,"name":"quatUp","kind":"function","signature":"quatUp(q)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0046:quatBack","exportIndex":46,"name":"quatBack","kind":"function","signature":"quatBack(q)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0047:quatToString","exportIndex":47,"name":"quatToString","kind":"function","signature":"quatToString(q, precision = 3)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0048:quatDifference","exportIndex":48,"name":"quatDifference","kind":"function","signature":"quatDifference(from, to)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0049:quatIsIdentity","exportIndex":49,"name":"quatIsIdentity","kind":"function","signature":"quatIsIdentity(q, eps = EPSILON)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0050:quatIsNormalized","exportIndex":50,"name":"quatIsNormalized","kind":"function","signature":"quatIsNormalized(q, eps = EPSILON)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathQuat.md","moduleTitle":"core/math/MathQuat","source":"engine/core/math/MathQuat.js","import":"/engine/core/math/MathQuat.js","sourceHash":"7d66b103c26c9f2592447a7b5f611db40b60e568db9efabf6956e124f3ca2fdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathQuat.js#0051:quatIsFinite","exportIndex":51,"name":"quatIsFinite","kind":"function","signature":"quatIsFinite(q)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRandom.md","moduleTitle":"core/math/MathRandom","source":"engine/core/math/MathRandom.js","import":"/engine/core/math/MathRandom.js","sourceHash":"f3d5da266df1fc28792ba0dfb828c52a17ed95309427f4791c0a8538d8b7f88b","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/MathRandom.js","title":"core/math/MathRandom","summary":"","exportCount":47}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRandom.md","moduleTitle":"core/math/MathRandom","source":"engine/core/math/MathRandom.js","import":"/engine/core/math/MathRandom.js","sourceHash":"f3d5da266df1fc28792ba0dfb828c52a17ed95309427f4791c0a8538d8b7f88b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRandom.js#0000:mulberry32","exportIndex":0,"name":"mulberry32","kind":"function","signature":"mulberry32(seed)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRandom.md","moduleTitle":"core/math/MathRandom","source":"engine/core/math/MathRandom.js","import":"/engine/core/math/MathRandom.js","sourceHash":"f3d5da266df1fc28792ba0dfb828c52a17ed95309427f4791c0a8538d8b7f88b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRandom.js#0001:splitmix32","exportIndex":1,"name":"splitmix32","kind":"function","signature":"splitmix32(seed)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRandom.md","moduleTitle":"core/math/MathRandom","source":"engine/core/math/MathRandom.js","import":"/engine/core/math/MathRandom.js","sourceHash":"f3d5da266df1fc28792ba0dfb828c52a17ed95309427f4791c0a8538d8b7f88b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRandom.js#0002:xorshift128","exportIndex":2,"name":"xorshift128","kind":"function","signature":"xorshift128(seed)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRandom.md","moduleTitle":"core/math/MathRandom","source":"engine/core/math/MathRandom.js","import":"/engine/core/math/MathRandom.js","sourceHash":"f3d5da266df1fc28792ba0dfb828c52a17ed95309427f4791c0a8538d8b7f88b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRandom.js#0003:pcg32","exportIndex":3,"name":"pcg32","kind":"function","signature":"pcg32(seed)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRandom.md","moduleTitle":"core/math/MathRandom","source":"engine/core/math/MathRandom.js","import":"/engine/core/math/MathRandom.js","sourceHash":"f3d5da266df1fc28792ba0dfb828c52a17ed95309427f4791c0a8538d8b7f88b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRandom.js#0004:legacyLcgAdvanceState32","exportIndex":4,"name":"legacyLcgAdvanceState32","kind":"function","signature":"legacyLcgAdvanceState32(state)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRandom.md","moduleTitle":"core/math/MathRandom","source":"engine/core/math/MathRandom.js","import":"/engine/core/math/MathRandom.js","sourceHash":"f3d5da266df1fc28792ba0dfb828c52a17ed95309427f4791c0a8538d8b7f88b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRandom.js#0005:legacyLcgStateToFloat01","exportIndex":5,"name":"legacyLcgStateToFloat01","kind":"function","signature":"legacyLcgStateToFloat01(state)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRandom.md","moduleTitle":"core/math/MathRandom","source":"engine/core/math/MathRandom.js","import":"/engine/core/math/MathRandom.js","sourceHash":"f3d5da266df1fc28792ba0dfb828c52a17ed95309427f4791c0a8538d8b7f88b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRandom.js#0006:setRandomSeed","exportIndex":6,"name":"setRandomSeed","kind":"function","signature":"setRandomSeed(seed)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRandom.md","moduleTitle":"core/math/MathRandom","source":"engine/core/math/MathRandom.js","import":"/engine/core/math/MathRandom.js","sourceHash":"f3d5da266df1fc28792ba0dfb828c52a17ed95309427f4791c0a8538d8b7f88b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRandom.js#0007:resetRandomSeed","exportIndex":7,"name":"resetRandomSeed","kind":"function","signature":"resetRandomSeed()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRandom.md","moduleTitle":"core/math/MathRandom","source":"engine/core/math/MathRandom.js","import":"/engine/core/math/MathRandom.js","sourceHash":"f3d5da266df1fc28792ba0dfb828c52a17ed95309427f4791c0a8538d8b7f88b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRandom.js#0008:random","exportIndex":8,"name":"random","kind":"function","signature":"random()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRandom.md","moduleTitle":"core/math/MathRandom","source":"engine/core/math/MathRandom.js","import":"/engine/core/math/MathRandom.js","sourceHash":"f3d5da266df1fc28792ba0dfb828c52a17ed95309427f4791c0a8538d8b7f88b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRandom.js#0009:randomRange","exportIndex":9,"name":"randomRange","kind":"function","signature":"randomRange(min, max)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRandom.md","moduleTitle":"core/math/MathRandom","source":"engine/core/math/MathRandom.js","import":"/engine/core/math/MathRandom.js","sourceHash":"f3d5da266df1fc28792ba0dfb828c52a17ed95309427f4791c0a8538d8b7f88b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRandom.js#0010:randomInt","exportIndex":10,"name":"randomInt","kind":"function","signature":"randomInt(min, max)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRandom.md","moduleTitle":"core/math/MathRandom","source":"engine/core/math/MathRandom.js","import":"/engine/core/math/MathRandom.js","sourceHash":"f3d5da266df1fc28792ba0dfb828c52a17ed95309427f4791c0a8538d8b7f88b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRandom.js#0011:randomBool","exportIndex":11,"name":"randomBool","kind":"function","signature":"randomBool(probability = 0.5)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRandom.md","moduleTitle":"core/math/MathRandom","source":"engine/core/math/MathRandom.js","import":"/engine/core/math/MathRandom.js","sourceHash":"f3d5da266df1fc28792ba0dfb828c52a17ed95309427f4791c0a8538d8b7f88b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRandom.js#0012:randomSign","exportIndex":12,"name":"randomSign","kind":"function","signature":"randomSign()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRandom.md","moduleTitle":"core/math/MathRandom","source":"engine/core/math/MathRandom.js","import":"/engine/core/math/MathRandom.js","sourceHash":"f3d5da266df1fc28792ba0dfb828c52a17ed95309427f4791c0a8538d8b7f88b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRandom.js#0013:uniformDistribution","exportIndex":13,"name":"uniformDistribution","kind":"function","signature":"uniformDistribution(min = 0, max = 1, rng = defaultRng)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRandom.md","moduleTitle":"core/math/MathRandom","source":"engine/core/math/MathRandom.js","import":"/engine/core/math/MathRandom.js","sourceHash":"f3d5da266df1fc28792ba0dfb828c52a17ed95309427f4791c0a8538d8b7f88b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRandom.js#0014:normalDistribution","exportIndex":14,"name":"normalDistribution","kind":"function","signature":"normalDistribution(mean = 0, stdDev = 1, rng = defaultRng)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRandom.md","moduleTitle":"core/math/MathRandom","source":"engine/core/math/MathRandom.js","import":"/engine/core/math/MathRandom.js","sourceHash":"f3d5da266df1fc28792ba0dfb828c52a17ed95309427f4791c0a8538d8b7f88b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRandom.js#0015:exponentialDistribution","exportIndex":15,"name":"exponentialDistribution","kind":"function","signature":"exponentialDistribution(lambda = 1, rng = defaultRng)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRandom.md","moduleTitle":"core/math/MathRandom","source":"engine/core/math/MathRandom.js","import":"/engine/core/math/MathRandom.js","sourceHash":"f3d5da266df1fc28792ba0dfb828c52a17ed95309427f4791c0a8538d8b7f88b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRandom.js#0016:poissonDistribution","exportIndex":16,"name":"poissonDistribution","kind":"function","signature":"poissonDistribution(lambda, rng = defaultRng)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRandom.md","moduleTitle":"core/math/MathRandom","source":"engine/core/math/MathRandom.js","import":"/engine/core/math/MathRandom.js","sourceHash":"f3d5da266df1fc28792ba0dfb828c52a17ed95309427f4791c0a8538d8b7f88b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRandom.js#0017:binomialDistribution","exportIndex":17,"name":"binomialDistribution","kind":"function","signature":"binomialDistribution(n, p, rng = defaultRng)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRandom.md","moduleTitle":"core/math/MathRandom","source":"engine/core/math/MathRandom.js","import":"/engine/core/math/MathRandom.js","sourceHash":"f3d5da266df1fc28792ba0dfb828c52a17ed95309427f4791c0a8538d8b7f88b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRandom.js#0018:triangularDistribution","exportIndex":18,"name":"triangularDistribution","kind":"function","signature":"triangularDistribution(min, max, mode, rng = defaultRng)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRandom.md","moduleTitle":"core/math/MathRandom","source":"engine/core/math/MathRandom.js","import":"/engine/core/math/MathRandom.js","sourceHash":"f3d5da266df1fc28792ba0dfb828c52a17ed95309427f4791c0a8538d8b7f88b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRandom.js#0019:gammaDistribution","exportIndex":19,"name":"gammaDistribution","kind":"function","signature":"gammaDistribution(shape, scale = 1, rng = defaultRng)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRandom.md","moduleTitle":"core/math/MathRandom","source":"engine/core/math/MathRandom.js","import":"/engine/core/math/MathRandom.js","sourceHash":"f3d5da266df1fc28792ba0dfb828c52a17ed95309427f4791c0a8538d8b7f88b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRandom.js#0020:betaDistribution","exportIndex":20,"name":"betaDistribution","kind":"function","signature":"betaDistribution(alpha, beta, rng = defaultRng)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRandom.md","moduleTitle":"core/math/MathRandom","source":"engine/core/math/MathRandom.js","import":"/engine/core/math/MathRandom.js","sourceHash":"f3d5da266df1fc28792ba0dfb828c52a17ed95309427f4791c0a8538d8b7f88b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRandom.js#0021:logNormalDistribution","exportIndex":21,"name":"logNormalDistribution","kind":"function","signature":"logNormalDistribution(mean = 0, stdDev = 1, rng = defaultRng)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRandom.md","moduleTitle":"core/math/MathRandom","source":"engine/core/math/MathRandom.js","import":"/engine/core/math/MathRandom.js","sourceHash":"f3d5da266df1fc28792ba0dfb828c52a17ed95309427f4791c0a8538d8b7f88b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRandom.js#0022:cauchyDistribution","exportIndex":22,"name":"cauchyDistribution","kind":"function","signature":"cauchyDistribution(x0 = 0, gamma = 1, rng = defaultRng)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRandom.md","moduleTitle":"core/math/MathRandom","source":"engine/core/math/MathRandom.js","import":"/engine/core/math/MathRandom.js","sourceHash":"f3d5da266df1fc28792ba0dfb828c52a17ed95309427f4791c0a8538d8b7f88b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRandom.js#0023:paretoDistribution","exportIndex":23,"name":"paretoDistribution","kind":"function","signature":"paretoDistribution(alpha, xMin = 1, rng = defaultRng)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRandom.md","moduleTitle":"core/math/MathRandom","source":"engine/core/math/MathRandom.js","import":"/engine/core/math/MathRandom.js","sourceHash":"f3d5da266df1fc28792ba0dfb828c52a17ed95309427f4791c0a8538d8b7f88b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRandom.js#0024:weightedRandom","exportIndex":24,"name":"weightedRandom","kind":"function","signature":"weightedRandom(weights, rng = defaultRng)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRandom.md","moduleTitle":"core/math/MathRandom","source":"engine/core/math/MathRandom.js","import":"/engine/core/math/MathRandom.js","sourceHash":"f3d5da266df1fc28792ba0dfb828c52a17ed95309427f4791c0a8538d8b7f88b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRandom.js#0025:randomElement","exportIndex":25,"name":"randomElement","kind":"function","signature":"randomElement(array, rng = defaultRng)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRandom.md","moduleTitle":"core/math/MathRandom","source":"engine/core/math/MathRandom.js","import":"/engine/core/math/MathRandom.js","sourceHash":"f3d5da266df1fc28792ba0dfb828c52a17ed95309427f4791c0a8538d8b7f88b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRandom.js#0026:shuffle","exportIndex":26,"name":"shuffle","kind":"function","signature":"shuffle(array, rng = defaultRng)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRandom.md","moduleTitle":"core/math/MathRandom","source":"engine/core/math/MathRandom.js","import":"/engine/core/math/MathRandom.js","sourceHash":"f3d5da266df1fc28792ba0dfb828c52a17ed95309427f4791c0a8538d8b7f88b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRandom.js#0027:shuffleInPlace","exportIndex":27,"name":"shuffleInPlace","kind":"function","signature":"shuffleInPlace(array, rng = defaultRng)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRandom.md","moduleTitle":"core/math/MathRandom","source":"engine/core/math/MathRandom.js","import":"/engine/core/math/MathRandom.js","sourceHash":"f3d5da266df1fc28792ba0dfb828c52a17ed95309427f4791c0a8538d8b7f88b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRandom.js#0028:sample","exportIndex":28,"name":"sample","kind":"function","signature":"sample(array, n, rng = defaultRng)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRandom.md","moduleTitle":"core/math/MathRandom","source":"engine/core/math/MathRandom.js","import":"/engine/core/math/MathRandom.js","sourceHash":"f3d5da266df1fc28792ba0dfb828c52a17ed95309427f4791c0a8538d8b7f88b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRandom.js#0029:sampleWithReplacement","exportIndex":29,"name":"sampleWithReplacement","kind":"function","signature":"sampleWithReplacement(array, n, rng = defaultRng)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRandom.md","moduleTitle":"core/math/MathRandom","source":"engine/core/math/MathRandom.js","import":"/engine/core/math/MathRandom.js","sourceHash":"f3d5da266df1fc28792ba0dfb828c52a17ed95309427f4791c0a8538d8b7f88b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRandom.js#0030:reservoirSample","exportIndex":30,"name":"reservoirSample","kind":"function","signature":"reservoirSample(stream, k, rng = defaultRng)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRandom.md","moduleTitle":"core/math/MathRandom","source":"engine/core/math/MathRandom.js","import":"/engine/core/math/MathRandom.js","sourceHash":"f3d5da266df1fc28792ba0dfb828c52a17ed95309427f4791c0a8538d8b7f88b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRandom.js#0031:randomOnCircle","exportIndex":31,"name":"randomOnCircle","kind":"function","signature":"randomOnCircle(rng = defaultRng)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRandom.md","moduleTitle":"core/math/MathRandom","source":"engine/core/math/MathRandom.js","import":"/engine/core/math/MathRandom.js","sourceHash":"f3d5da266df1fc28792ba0dfb828c52a17ed95309427f4791c0a8538d8b7f88b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRandom.js#0032:randomInCircle","exportIndex":32,"name":"randomInCircle","kind":"function","signature":"randomInCircle(rng = defaultRng)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRandom.md","moduleTitle":"core/math/MathRandom","source":"engine/core/math/MathRandom.js","import":"/engine/core/math/MathRandom.js","sourceHash":"f3d5da266df1fc28792ba0dfb828c52a17ed95309427f4791c0a8538d8b7f88b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRandom.js#0033:randomOnSphere","exportIndex":33,"name":"randomOnSphere","kind":"function","signature":"randomOnSphere(rng = defaultRng)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRandom.md","moduleTitle":"core/math/MathRandom","source":"engine/core/math/MathRandom.js","import":"/engine/core/math/MathRandom.js","sourceHash":"f3d5da266df1fc28792ba0dfb828c52a17ed95309427f4791c0a8538d8b7f88b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRandom.js#0034:randomInSphere","exportIndex":34,"name":"randomInSphere","kind":"function","signature":"randomInSphere(rng = defaultRng)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRandom.md","moduleTitle":"core/math/MathRandom","source":"engine/core/math/MathRandom.js","import":"/engine/core/math/MathRandom.js","sourceHash":"f3d5da266df1fc28792ba0dfb828c52a17ed95309427f4791c0a8538d8b7f88b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRandom.js#0035:randomOnHemisphereCosine","exportIndex":35,"name":"randomOnHemisphereCosine","kind":"function","signature":"randomOnHemisphereCosine(normal, rng = defaultRng)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRandom.md","moduleTitle":"core/math/MathRandom","source":"engine/core/math/MathRandom.js","import":"/engine/core/math/MathRandom.js","sourceHash":"f3d5da266df1fc28792ba0dfb828c52a17ed95309427f4791c0a8538d8b7f88b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRandom.js#0036:randomInTriangle","exportIndex":36,"name":"randomInTriangle","kind":"function","signature":"randomInTriangle(v0, v1, v2, rng = defaultRng)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRandom.md","moduleTitle":"core/math/MathRandom","source":"engine/core/math/MathRandom.js","import":"/engine/core/math/MathRandom.js","sourceHash":"f3d5da266df1fc28792ba0dfb828c52a17ed95309427f4791c0a8538d8b7f88b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRandom.js#0037:randomInCone","exportIndex":37,"name":"randomInCone","kind":"function","signature":"randomInCone(direction, halfAngle, rng = defaultRng)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRandom.md","moduleTitle":"core/math/MathRandom","source":"engine/core/math/MathRandom.js","import":"/engine/core/math/MathRandom.js","sourceHash":"f3d5da266df1fc28792ba0dfb828c52a17ed95309427f4791c0a8538d8b7f88b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRandom.js#0038:haltonSequence","exportIndex":38,"name":"haltonSequence","kind":"function","signature":"haltonSequence(index, base)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRandom.md","moduleTitle":"core/math/MathRandom","source":"engine/core/math/MathRandom.js","import":"/engine/core/math/MathRandom.js","sourceHash":"f3d5da266df1fc28792ba0dfb828c52a17ed95309427f4791c0a8538d8b7f88b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRandom.js#0039:halton2D","exportIndex":39,"name":"halton2D","kind":"function","signature":"halton2D(index)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRandom.md","moduleTitle":"core/math/MathRandom","source":"engine/core/math/MathRandom.js","import":"/engine/core/math/MathRandom.js","sourceHash":"f3d5da266df1fc28792ba0dfb828c52a17ed95309427f4791c0a8538d8b7f88b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRandom.js#0040:halton3D","exportIndex":40,"name":"halton3D","kind":"function","signature":"halton3D(index)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRandom.md","moduleTitle":"core/math/MathRandom","source":"engine/core/math/MathRandom.js","import":"/engine/core/math/MathRandom.js","sourceHash":"f3d5da266df1fc28792ba0dfb828c52a17ed95309427f4791c0a8538d8b7f88b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRandom.js#0041:r2Sequence","exportIndex":41,"name":"r2Sequence","kind":"function","signature":"r2Sequence(index)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRandom.md","moduleTitle":"core/math/MathRandom","source":"engine/core/math/MathRandom.js","import":"/engine/core/math/MathRandom.js","sourceHash":"f3d5da266df1fc28792ba0dfb828c52a17ed95309427f4791c0a8538d8b7f88b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRandom.js#0042:r3Sequence","exportIndex":42,"name":"r3Sequence","kind":"function","signature":"r3Sequence(index)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRandom.md","moduleTitle":"core/math/MathRandom","source":"engine/core/math/MathRandom.js","import":"/engine/core/math/MathRandom.js","sourceHash":"f3d5da266df1fc28792ba0dfb828c52a17ed95309427f4791c0a8538d8b7f88b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRandom.js#0043:fibonacciSphere","exportIndex":43,"name":"fibonacciSphere","kind":"function","signature":"fibonacciSphere(index, total, rotation = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRandom.md","moduleTitle":"core/math/MathRandom","source":"engine/core/math/MathRandom.js","import":"/engine/core/math/MathRandom.js","sourceHash":"f3d5da266df1fc28792ba0dfb828c52a17ed95309427f4791c0a8538d8b7f88b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRandom.js#0044:fibonacciSpherePoints","exportIndex":44,"name":"fibonacciSpherePoints","kind":"function","signature":"fibonacciSpherePoints(count, rotation = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRandom.md","moduleTitle":"core/math/MathRandom","source":"engine/core/math/MathRandom.js","import":"/engine/core/math/MathRandom.js","sourceHash":"f3d5da266df1fc28792ba0dfb828c52a17ed95309427f4791c0a8538d8b7f88b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRandom.js#0045:fibonacciDisk","exportIndex":45,"name":"fibonacciDisk","kind":"function","signature":"fibonacciDisk(index, total)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRandom.md","moduleTitle":"core/math/MathRandom","source":"engine/core/math/MathRandom.js","import":"/engine/core/math/MathRandom.js","sourceHash":"f3d5da266df1fc28792ba0dfb828c52a17ed95309427f4791c0a8538d8b7f88b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRandom.js#0046:poissonDiskSampling","exportIndex":46,"name":"poissonDiskSampling","kind":"function","signature":"poissonDiskSampling(width, height, minDist, maxAttempts = 30, rng = defaultRng)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRay.md","moduleTitle":"core/math/MathRay","source":"engine/core/math/MathRay.js","import":"/engine/core/math/MathRay.js","sourceHash":"a0b16be55a80a0a3dcdf4662c1aa6699c9246e5f4e560f08823afa5f16f599bf","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/MathRay.js","title":"core/math/MathRay","summary":"MathRay.js - Ray operations (Three.js/Unity parity) Ray represented as { origin: [x,y,z], direction: [x,y,z] } Consolidates: AIAiming.createRay, MathGeometry.ray*, ScreenRayCaster, Viewport.getPickRay","exportCount":17}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRay.md","moduleTitle":"core/math/MathRay","source":"engine/core/math/MathRay.js","import":"/engine/core/math/MathRay.js","sourceHash":"a0b16be55a80a0a3dcdf4662c1aa6699c9246e5f4e560f08823afa5f16f599bf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRay.js#0000:rayCreate","exportIndex":0,"name":"rayCreate","kind":"function","signature":"rayCreate(origin, direction)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRay.md","moduleTitle":"core/math/MathRay","source":"engine/core/math/MathRay.js","import":"/engine/core/math/MathRay.js","sourceHash":"a0b16be55a80a0a3dcdf4662c1aa6699c9246e5f4e560f08823afa5f16f599bf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRay.js#0001:rayFromPoints","exportIndex":1,"name":"rayFromPoints","kind":"function","signature":"rayFromPoints(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRay.md","moduleTitle":"core/math/MathRay","source":"engine/core/math/MathRay.js","import":"/engine/core/math/MathRay.js","sourceHash":"a0b16be55a80a0a3dcdf4662c1aa6699c9246e5f4e560f08823afa5f16f599bf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRay.js#0002:rayFromScreen","exportIndex":2,"name":"rayFromScreen","kind":"function","signature":"rayFromScreen(ndcX, ndcY, invViewProj)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRay.md","moduleTitle":"core/math/MathRay","source":"engine/core/math/MathRay.js","import":"/engine/core/math/MathRay.js","sourceHash":"a0b16be55a80a0a3dcdf4662c1aa6699c9246e5f4e560f08823afa5f16f599bf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRay.js#0003:rayClosestPointToPoint","exportIndex":3,"name":"rayClosestPointToPoint","kind":"function","signature":"rayClosestPointToPoint(ray, point)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRay.md","moduleTitle":"core/math/MathRay","source":"engine/core/math/MathRay.js","import":"/engine/core/math/MathRay.js","sourceHash":"a0b16be55a80a0a3dcdf4662c1aa6699c9246e5f4e560f08823afa5f16f599bf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRay.js#0004:rayDistanceToPoint","exportIndex":4,"name":"rayDistanceToPoint","kind":"function","signature":"rayDistanceToPoint(ray, point)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRay.md","moduleTitle":"core/math/MathRay","source":"engine/core/math/MathRay.js","import":"/engine/core/math/MathRay.js","sourceHash":"a0b16be55a80a0a3dcdf4662c1aa6699c9246e5f4e560f08823afa5f16f599bf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRay.js#0005:rayDistanceSqToPoint","exportIndex":5,"name":"rayDistanceSqToPoint","kind":"function","signature":"rayDistanceSqToPoint(ray, point)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRay.md","moduleTitle":"core/math/MathRay","source":"engine/core/math/MathRay.js","import":"/engine/core/math/MathRay.js","sourceHash":"a0b16be55a80a0a3dcdf4662c1aa6699c9246e5f4e560f08823afa5f16f599bf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRay.js#0006:rayClosestPointToRay","exportIndex":6,"name":"rayClosestPointToRay","kind":"function","signature":"rayClosestPointToRay(ray1, ray2)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRay.md","moduleTitle":"core/math/MathRay","source":"engine/core/math/MathRay.js","import":"/engine/core/math/MathRay.js","sourceHash":"a0b16be55a80a0a3dcdf4662c1aa6699c9246e5f4e560f08823afa5f16f599bf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRay.js#0007:rayIntersectSphere","exportIndex":7,"name":"rayIntersectSphere","kind":"function","signature":"rayIntersectSphere(ray, center, radius)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRay.md","moduleTitle":"core/math/MathRay","source":"engine/core/math/MathRay.js","import":"/engine/core/math/MathRay.js","sourceHash":"a0b16be55a80a0a3dcdf4662c1aa6699c9246e5f4e560f08823afa5f16f599bf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRay.js#0008:rayIntersectAABB","exportIndex":8,"name":"rayIntersectAABB","kind":"function","signature":"rayIntersectAABB(ray, aabbMin, aabbMax)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRay.md","moduleTitle":"core/math/MathRay","source":"engine/core/math/MathRay.js","import":"/engine/core/math/MathRay.js","sourceHash":"a0b16be55a80a0a3dcdf4662c1aa6699c9246e5f4e560f08823afa5f16f599bf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRay.js#0009:rayIntersectPlane","exportIndex":9,"name":"rayIntersectPlane","kind":"function","signature":"rayIntersectPlane(ray, planeNormal, planeD)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRay.md","moduleTitle":"core/math/MathRay","source":"engine/core/math/MathRay.js","import":"/engine/core/math/MathRay.js","sourceHash":"a0b16be55a80a0a3dcdf4662c1aa6699c9246e5f4e560f08823afa5f16f599bf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRay.js#0010:rayIntersectTriangle","exportIndex":10,"name":"rayIntersectTriangle","kind":"function","signature":"rayIntersectTriangle(ray, v0, v1, v2)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRay.md","moduleTitle":"core/math/MathRay","source":"engine/core/math/MathRay.js","import":"/engine/core/math/MathRay.js","sourceHash":"a0b16be55a80a0a3dcdf4662c1aa6699c9246e5f4e560f08823afa5f16f599bf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRay.js#0011:rayIntersectCapsule","exportIndex":11,"name":"rayIntersectCapsule","kind":"function","signature":"rayIntersectCapsule(ray, capA, capB, radius)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRay.md","moduleTitle":"core/math/MathRay","source":"engine/core/math/MathRay.js","import":"/engine/core/math/MathRay.js","sourceHash":"a0b16be55a80a0a3dcdf4662c1aa6699c9246e5f4e560f08823afa5f16f599bf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRay.js#0012:rayIntersectOBB","exportIndex":12,"name":"rayIntersectOBB","kind":"function","signature":"rayIntersectOBB(ray, boxCenter, boxAxes, halfExtents)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRay.md","moduleTitle":"core/math/MathRay","source":"engine/core/math/MathRay.js","import":"/engine/core/math/MathRay.js","sourceHash":"a0b16be55a80a0a3dcdf4662c1aa6699c9246e5f4e560f08823afa5f16f599bf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRay.js#0013:rayTransformMat4","exportIndex":13,"name":"rayTransformMat4","kind":"function","signature":"rayTransformMat4(ray, m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRay.md","moduleTitle":"core/math/MathRay","source":"engine/core/math/MathRay.js","import":"/engine/core/math/MathRay.js","sourceHash":"a0b16be55a80a0a3dcdf4662c1aa6699c9246e5f4e560f08823afa5f16f599bf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRay.js#0014:rayEquals","exportIndex":14,"name":"rayEquals","kind":"function","signature":"rayEquals(a, b, eps = EPSILON)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRay.md","moduleTitle":"core/math/MathRay","source":"engine/core/math/MathRay.js","import":"/engine/core/math/MathRay.js","sourceHash":"a0b16be55a80a0a3dcdf4662c1aa6699c9246e5f4e560f08823afa5f16f599bf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRay.js#0015:rayClone","exportIndex":15,"name":"rayClone","kind":"function","signature":"rayClone(ray)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRay.md","moduleTitle":"core/math/MathRay","source":"engine/core/math/MathRay.js","import":"/engine/core/math/MathRay.js","sourceHash":"a0b16be55a80a0a3dcdf4662c1aa6699c9246e5f4e560f08823afa5f16f599bf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRay.js#0016:rayAt","exportIndex":16,"name":"rayAt","kind":"function","signature":"rayAt(ray, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRect2.md","moduleTitle":"core/math/MathRect2","source":"engine/core/math/MathRect2.js","import":"/engine/core/math/MathRect2.js","sourceHash":"8cafe94a869030fcb56117b72ecee863ceec080928137f3858f9def6bb05ea8d","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/MathRect2.js","title":"core/math/MathRect2","summary":"MathRect2.js - 2D Axis-Aligned Bounding Box / Rectangle (Godot Rect2 / Three.js Box2 parity) Rect represented as { minX, minY, maxX, maxY } Consolidates: MathGeometry.pointInRect/rectRect, workflow-canvas bounding box logic","exportCount":37}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRect2.md","moduleTitle":"core/math/MathRect2","source":"engine/core/math/MathRect2.js","import":"/engine/core/math/MathRect2.js","sourceHash":"8cafe94a869030fcb56117b72ecee863ceec080928137f3858f9def6bb05ea8d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRect2.js#0000:rect2FromPoints","exportIndex":0,"name":"rect2FromPoints","kind":"function","signature":"rect2FromPoints(points)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRect2.md","moduleTitle":"core/math/MathRect2","source":"engine/core/math/MathRect2.js","import":"/engine/core/math/MathRect2.js","sourceHash":"8cafe94a869030fcb56117b72ecee863ceec080928137f3858f9def6bb05ea8d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRect2.js#0001:rect2Intersection","exportIndex":1,"name":"rect2Intersection","kind":"function","signature":"rect2Intersection(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRect2.md","moduleTitle":"core/math/MathRect2","source":"engine/core/math/MathRect2.js","import":"/engine/core/math/MathRect2.js","sourceHash":"8cafe94a869030fcb56117b72ecee863ceec080928137f3858f9def6bb05ea8d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRect2.js#0002:rect2DistanceToPoint","exportIndex":2,"name":"rect2DistanceToPoint","kind":"function","signature":"rect2DistanceToPoint(r, x, y)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRect2.md","moduleTitle":"core/math/MathRect2","source":"engine/core/math/MathRect2.js","import":"/engine/core/math/MathRect2.js","sourceHash":"8cafe94a869030fcb56117b72ecee863ceec080928137f3858f9def6bb05ea8d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRect2.js#0003:rect2ApproxEquals","exportIndex":3,"name":"rect2ApproxEquals","kind":"function","signature":"rect2ApproxEquals(a, b, eps = 1e-6)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRect2.md","moduleTitle":"core/math/MathRect2","source":"engine/core/math/MathRect2.js","import":"/engine/core/math/MathRect2.js","sourceHash":"8cafe94a869030fcb56117b72ecee863ceec080928137f3858f9def6bb05ea8d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRect2.js#0004:rect2Create","exportIndex":4,"name":"rect2Create","kind":"function","signature":"rect2Create(minX, minY, maxX, maxY)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRect2.md","moduleTitle":"core/math/MathRect2","source":"engine/core/math/MathRect2.js","import":"/engine/core/math/MathRect2.js","sourceHash":"8cafe94a869030fcb56117b72ecee863ceec080928137f3858f9def6bb05ea8d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRect2.js#0005:rect2FromCenterSize","exportIndex":5,"name":"rect2FromCenterSize","kind":"function","signature":"rect2FromCenterSize(cx, cy, w, h)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRect2.md","moduleTitle":"core/math/MathRect2","source":"engine/core/math/MathRect2.js","import":"/engine/core/math/MathRect2.js","sourceHash":"8cafe94a869030fcb56117b72ecee863ceec080928137f3858f9def6bb05ea8d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRect2.js#0006:rect2FromPositionSize","exportIndex":6,"name":"rect2FromPositionSize","kind":"function","signature":"rect2FromPositionSize(x, y, w, h)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRect2.md","moduleTitle":"core/math/MathRect2","source":"engine/core/math/MathRect2.js","import":"/engine/core/math/MathRect2.js","sourceHash":"8cafe94a869030fcb56117b72ecee863ceec080928137f3858f9def6bb05ea8d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRect2.js#0007:rect2Zero","exportIndex":7,"name":"rect2Zero","kind":"function","signature":"rect2Zero()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRect2.md","moduleTitle":"core/math/MathRect2","source":"engine/core/math/MathRect2.js","import":"/engine/core/math/MathRect2.js","sourceHash":"8cafe94a869030fcb56117b72ecee863ceec080928137f3858f9def6bb05ea8d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRect2.js#0008:rect2Clone","exportIndex":8,"name":"rect2Clone","kind":"function","signature":"rect2Clone(r)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRect2.md","moduleTitle":"core/math/MathRect2","source":"engine/core/math/MathRect2.js","import":"/engine/core/math/MathRect2.js","sourceHash":"8cafe94a869030fcb56117b72ecee863ceec080928137f3858f9def6bb05ea8d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRect2.js#0009:rect2Copy","exportIndex":9,"name":"rect2Copy","kind":"function","signature":"rect2Copy(out, r)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRect2.md","moduleTitle":"core/math/MathRect2","source":"engine/core/math/MathRect2.js","import":"/engine/core/math/MathRect2.js","sourceHash":"8cafe94a869030fcb56117b72ecee863ceec080928137f3858f9def6bb05ea8d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRect2.js#0010:rect2CenterX","exportIndex":10,"name":"rect2CenterX","kind":"function","signature":"rect2CenterX(r)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRect2.md","moduleTitle":"core/math/MathRect2","source":"engine/core/math/MathRect2.js","import":"/engine/core/math/MathRect2.js","sourceHash":"8cafe94a869030fcb56117b72ecee863ceec080928137f3858f9def6bb05ea8d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRect2.js#0011:rect2CenterY","exportIndex":11,"name":"rect2CenterY","kind":"function","signature":"rect2CenterY(r)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRect2.md","moduleTitle":"core/math/MathRect2","source":"engine/core/math/MathRect2.js","import":"/engine/core/math/MathRect2.js","sourceHash":"8cafe94a869030fcb56117b72ecee863ceec080928137f3858f9def6bb05ea8d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRect2.js#0012:rect2Center","exportIndex":12,"name":"rect2Center","kind":"function","signature":"rect2Center(r)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRect2.md","moduleTitle":"core/math/MathRect2","source":"engine/core/math/MathRect2.js","import":"/engine/core/math/MathRect2.js","sourceHash":"8cafe94a869030fcb56117b72ecee863ceec080928137f3858f9def6bb05ea8d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRect2.js#0013:rect2Width","exportIndex":13,"name":"rect2Width","kind":"function","signature":"rect2Width(r)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRect2.md","moduleTitle":"core/math/MathRect2","source":"engine/core/math/MathRect2.js","import":"/engine/core/math/MathRect2.js","sourceHash":"8cafe94a869030fcb56117b72ecee863ceec080928137f3858f9def6bb05ea8d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRect2.js#0014:rect2Height","exportIndex":14,"name":"rect2Height","kind":"function","signature":"rect2Height(r)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRect2.md","moduleTitle":"core/math/MathRect2","source":"engine/core/math/MathRect2.js","import":"/engine/core/math/MathRect2.js","sourceHash":"8cafe94a869030fcb56117b72ecee863ceec080928137f3858f9def6bb05ea8d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRect2.js#0015:rect2Size","exportIndex":15,"name":"rect2Size","kind":"function","signature":"rect2Size(r)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRect2.md","moduleTitle":"core/math/MathRect2","source":"engine/core/math/MathRect2.js","import":"/engine/core/math/MathRect2.js","sourceHash":"8cafe94a869030fcb56117b72ecee863ceec080928137f3858f9def6bb05ea8d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRect2.js#0016:rect2Area","exportIndex":16,"name":"rect2Area","kind":"function","signature":"rect2Area(r)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRect2.md","moduleTitle":"core/math/MathRect2","source":"engine/core/math/MathRect2.js","import":"/engine/core/math/MathRect2.js","sourceHash":"8cafe94a869030fcb56117b72ecee863ceec080928137f3858f9def6bb05ea8d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRect2.js#0017:rect2Perimeter","exportIndex":17,"name":"rect2Perimeter","kind":"function","signature":"rect2Perimeter(r)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRect2.md","moduleTitle":"core/math/MathRect2","source":"engine/core/math/MathRect2.js","import":"/engine/core/math/MathRect2.js","sourceHash":"8cafe94a869030fcb56117b72ecee863ceec080928137f3858f9def6bb05ea8d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRect2.js#0018:rect2AspectRatio","exportIndex":18,"name":"rect2AspectRatio","kind":"function","signature":"rect2AspectRatio(r)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRect2.md","moduleTitle":"core/math/MathRect2","source":"engine/core/math/MathRect2.js","import":"/engine/core/math/MathRect2.js","sourceHash":"8cafe94a869030fcb56117b72ecee863ceec080928137f3858f9def6bb05ea8d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRect2.js#0019:rect2IsEmpty","exportIndex":19,"name":"rect2IsEmpty","kind":"function","signature":"rect2IsEmpty(r)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRect2.md","moduleTitle":"core/math/MathRect2","source":"engine/core/math/MathRect2.js","import":"/engine/core/math/MathRect2.js","sourceHash":"8cafe94a869030fcb56117b72ecee863ceec080928137f3858f9def6bb05ea8d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRect2.js#0020:rect2IsFinite","exportIndex":20,"name":"rect2IsFinite","kind":"function","signature":"rect2IsFinite(r)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRect2.md","moduleTitle":"core/math/MathRect2","source":"engine/core/math/MathRect2.js","import":"/engine/core/math/MathRect2.js","sourceHash":"8cafe94a869030fcb56117b72ecee863ceec080928137f3858f9def6bb05ea8d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRect2.js#0021:rect2ContainsPoint","exportIndex":21,"name":"rect2ContainsPoint","kind":"function","signature":"rect2ContainsPoint(r, x, y)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRect2.md","moduleTitle":"core/math/MathRect2","source":"engine/core/math/MathRect2.js","import":"/engine/core/math/MathRect2.js","sourceHash":"8cafe94a869030fcb56117b72ecee863ceec080928137f3858f9def6bb05ea8d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRect2.js#0022:rect2ContainsPointV","exportIndex":22,"name":"rect2ContainsPointV","kind":"function","signature":"rect2ContainsPointV(r, p)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRect2.md","moduleTitle":"core/math/MathRect2","source":"engine/core/math/MathRect2.js","import":"/engine/core/math/MathRect2.js","sourceHash":"8cafe94a869030fcb56117b72ecee863ceec080928137f3858f9def6bb05ea8d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRect2.js#0023:rect2ContainsRect","exportIndex":23,"name":"rect2ContainsRect","kind":"function","signature":"rect2ContainsRect(outer, inner)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRect2.md","moduleTitle":"core/math/MathRect2","source":"engine/core/math/MathRect2.js","import":"/engine/core/math/MathRect2.js","sourceHash":"8cafe94a869030fcb56117b72ecee863ceec080928137f3858f9def6bb05ea8d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRect2.js#0024:rect2IntersectsRect","exportIndex":24,"name":"rect2IntersectsRect","kind":"function","signature":"rect2IntersectsRect(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRect2.md","moduleTitle":"core/math/MathRect2","source":"engine/core/math/MathRect2.js","import":"/engine/core/math/MathRect2.js","sourceHash":"8cafe94a869030fcb56117b72ecee863ceec080928137f3858f9def6bb05ea8d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRect2.js#0025:rect2ExpandPoint","exportIndex":25,"name":"rect2ExpandPoint","kind":"function","signature":"rect2ExpandPoint(r, x, y)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRect2.md","moduleTitle":"core/math/MathRect2","source":"engine/core/math/MathRect2.js","import":"/engine/core/math/MathRect2.js","sourceHash":"8cafe94a869030fcb56117b72ecee863ceec080928137f3858f9def6bb05ea8d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRect2.js#0026:rect2ExpandPointV","exportIndex":26,"name":"rect2ExpandPointV","kind":"function","signature":"rect2ExpandPointV(r, p)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRect2.md","moduleTitle":"core/math/MathRect2","source":"engine/core/math/MathRect2.js","import":"/engine/core/math/MathRect2.js","sourceHash":"8cafe94a869030fcb56117b72ecee863ceec080928137f3858f9def6bb05ea8d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRect2.js#0027:rect2Merge","exportIndex":27,"name":"rect2Merge","kind":"function","signature":"rect2Merge(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRect2.md","moduleTitle":"core/math/MathRect2","source":"engine/core/math/MathRect2.js","import":"/engine/core/math/MathRect2.js","sourceHash":"8cafe94a869030fcb56117b72ecee863ceec080928137f3858f9def6bb05ea8d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRect2.js#0028:rect2Grow","exportIndex":28,"name":"rect2Grow","kind":"function","signature":"rect2Grow(r, amount)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRect2.md","moduleTitle":"core/math/MathRect2","source":"engine/core/math/MathRect2.js","import":"/engine/core/math/MathRect2.js","sourceHash":"8cafe94a869030fcb56117b72ecee863ceec080928137f3858f9def6bb05ea8d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRect2.js#0029:rect2GrowV","exportIndex":29,"name":"rect2GrowV","kind":"function","signature":"rect2GrowV(r, ax, ay)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRect2.md","moduleTitle":"core/math/MathRect2","source":"engine/core/math/MathRect2.js","import":"/engine/core/math/MathRect2.js","sourceHash":"8cafe94a869030fcb56117b72ecee863ceec080928137f3858f9def6bb05ea8d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRect2.js#0030:rect2Translate","exportIndex":30,"name":"rect2Translate","kind":"function","signature":"rect2Translate(r, dx, dy)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRect2.md","moduleTitle":"core/math/MathRect2","source":"engine/core/math/MathRect2.js","import":"/engine/core/math/MathRect2.js","sourceHash":"8cafe94a869030fcb56117b72ecee863ceec080928137f3858f9def6bb05ea8d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRect2.js#0031:rect2Scale","exportIndex":31,"name":"rect2Scale","kind":"function","signature":"rect2Scale(r, sx, sy)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRect2.md","moduleTitle":"core/math/MathRect2","source":"engine/core/math/MathRect2.js","import":"/engine/core/math/MathRect2.js","sourceHash":"8cafe94a869030fcb56117b72ecee863ceec080928137f3858f9def6bb05ea8d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRect2.js#0032:rect2ClampPoint","exportIndex":32,"name":"rect2ClampPoint","kind":"function","signature":"rect2ClampPoint(r, x, y)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRect2.md","moduleTitle":"core/math/MathRect2","source":"engine/core/math/MathRect2.js","import":"/engine/core/math/MathRect2.js","sourceHash":"8cafe94a869030fcb56117b72ecee863ceec080928137f3858f9def6bb05ea8d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRect2.js#0033:rect2ClampPointV","exportIndex":33,"name":"rect2ClampPointV","kind":"function","signature":"rect2ClampPointV(r, p)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRect2.md","moduleTitle":"core/math/MathRect2","source":"engine/core/math/MathRect2.js","import":"/engine/core/math/MathRect2.js","sourceHash":"8cafe94a869030fcb56117b72ecee863ceec080928137f3858f9def6bb05ea8d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRect2.js#0034:rect2DistanceToPointV","exportIndex":34,"name":"rect2DistanceToPointV","kind":"function","signature":"rect2DistanceToPointV(r, p)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRect2.md","moduleTitle":"core/math/MathRect2","source":"engine/core/math/MathRect2.js","import":"/engine/core/math/MathRect2.js","sourceHash":"8cafe94a869030fcb56117b72ecee863ceec080928137f3858f9def6bb05ea8d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRect2.js#0035:rect2GetCorners","exportIndex":35,"name":"rect2GetCorners","kind":"function","signature":"rect2GetCorners(r)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRect2.md","moduleTitle":"core/math/MathRect2","source":"engine/core/math/MathRect2.js","import":"/engine/core/math/MathRect2.js","sourceHash":"8cafe94a869030fcb56117b72ecee863ceec080928137f3858f9def6bb05ea8d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRect2.js#0036:rect2Equals","exportIndex":36,"name":"rect2Equals","kind":"function","signature":"rect2Equals(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRegistry.md","moduleTitle":"core/math/MathRegistry","source":"engine/core/math/MathRegistry.js","import":"/engine/core/math/MathRegistry.js","sourceHash":"70cc7da442d55244e41ebd27559ebd4f87abf6e1d2f53b19eebafd5fcff20f5b","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/MathRegistry.js","title":"core/math/MathRegistry","summary":"MathRegistry.js - inspectable metadata for stable MathEngine modules and functions.","exportCount":9}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRegistry.md","moduleTitle":"core/math/MathRegistry","source":"engine/core/math/MathRegistry.js","import":"/engine/core/math/MathRegistry.js","sourceHash":"70cc7da442d55244e41ebd27559ebd4f87abf6e1d2f53b19eebafd5fcff20f5b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRegistry.js#0000:mathRegistryEntries","exportIndex":0,"name":"mathRegistryEntries","kind":"function","signature":"mathRegistryEntries(filters = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRegistry.md","moduleTitle":"core/math/MathRegistry","source":"engine/core/math/MathRegistry.js","import":"/engine/core/math/MathRegistry.js","sourceHash":"70cc7da442d55244e41ebd27559ebd4f87abf6e1d2f53b19eebafd5fcff20f5b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRegistry.js#0001:mathRegistryById","exportIndex":1,"name":"mathRegistryById","kind":"function","signature":"mathRegistryById(id, registry = MATH_REGISTRY)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRegistry.md","moduleTitle":"core/math/MathRegistry","source":"engine/core/math/MathRegistry.js","import":"/engine/core/math/MathRegistry.js","sourceHash":"70cc7da442d55244e41ebd27559ebd4f87abf6e1d2f53b19eebafd5fcff20f5b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRegistry.js#0002:mathRegistryFunctionsForModule","exportIndex":2,"name":"mathRegistryFunctionsForModule","kind":"function","signature":"mathRegistryFunctionsForModule(moduleId, registry = MATH_REGISTRY)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRegistry.md","moduleTitle":"core/math/MathRegistry","source":"engine/core/math/MathRegistry.js","import":"/engine/core/math/MathRegistry.js","sourceHash":"70cc7da442d55244e41ebd27559ebd4f87abf6e1d2f53b19eebafd5fcff20f5b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRegistry.js#0003:mathRegistryReport","exportIndex":3,"name":"mathRegistryReport","kind":"function","signature":"mathRegistryReport(registry = MATH_REGISTRY)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRegistry.md","moduleTitle":"core/math/MathRegistry","source":"engine/core/math/MathRegistry.js","import":"/engine/core/math/MathRegistry.js","sourceHash":"70cc7da442d55244e41ebd27559ebd4f87abf6e1d2f53b19eebafd5fcff20f5b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRegistry.js#0004:mathRegistryManifest","exportIndex":4,"name":"mathRegistryManifest","kind":"function","signature":"mathRegistryManifest(registry = MATH_REGISTRY)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRegistry.md","moduleTitle":"core/math/MathRegistry","source":"engine/core/math/MathRegistry.js","import":"/engine/core/math/MathRegistry.js","sourceHash":"70cc7da442d55244e41ebd27559ebd4f87abf6e1d2f53b19eebafd5fcff20f5b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRegistry.js#0005:MATH_REGISTRY_VERSION","exportIndex":5,"name":"MATH_REGISTRY_VERSION","kind":"constant","signature":"MATH_REGISTRY_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRegistry.md","moduleTitle":"core/math/MathRegistry","source":"engine/core/math/MathRegistry.js","import":"/engine/core/math/MathRegistry.js","sourceHash":"70cc7da442d55244e41ebd27559ebd4f87abf6e1d2f53b19eebafd5fcff20f5b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRegistry.js#0006:MATH_MODULE_REGISTRY","exportIndex":6,"name":"MATH_MODULE_REGISTRY","kind":"constant","signature":"MATH_MODULE_REGISTRY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRegistry.md","moduleTitle":"core/math/MathRegistry","source":"engine/core/math/MathRegistry.js","import":"/engine/core/math/MathRegistry.js","sourceHash":"70cc7da442d55244e41ebd27559ebd4f87abf6e1d2f53b19eebafd5fcff20f5b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRegistry.js#0007:MATH_FUNCTION_REGISTRY","exportIndex":7,"name":"MATH_FUNCTION_REGISTRY","kind":"constant","signature":"MATH_FUNCTION_REGISTRY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRegistry.md","moduleTitle":"core/math/MathRegistry","source":"engine/core/math/MathRegistry.js","import":"/engine/core/math/MathRegistry.js","sourceHash":"70cc7da442d55244e41ebd27559ebd4f87abf6e1d2f53b19eebafd5fcff20f5b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRegistry.js#0008:MATH_REGISTRY","exportIndex":8,"name":"MATH_REGISTRY","kind":"constant","signature":"MATH_REGISTRY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRootAlgebra.md","moduleTitle":"core/math/MathRootAlgebra","source":"engine/core/math/MathRootAlgebra.js","import":"/engine/core/math/MathRootAlgebra.js","sourceHash":"90be5128918d85c1130a3c7484c8c7e4c07d5cffb9aee9efbe8ad9eb2f5e8f40","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/MathRootAlgebra.js","title":"core/math/MathRootAlgebra","summary":"Compile the reducer into immutable bilinear and square execution plans. Experimental encoders never enter this path: callers may require the exact algebraic laws their optimized kernel depends on before code is generated.","exportCount":19}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRootAlgebra.md","moduleTitle":"core/math/MathRootAlgebra","source":"engine/core/math/MathRootAlgebra.js","import":"/engine/core/math/MathRootAlgebra.js","sourceHash":"90be5128918d85c1130a3c7484c8c7e4c07d5cffb9aee9efbe8ad9eb2f5e8f40","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRootAlgebra.js#0000:rootAlgebraMask","exportIndex":0,"name":"rootAlgebraMask","kind":"function","signature":"rootAlgebraMask(n)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRootAlgebra.md","moduleTitle":"core/math/MathRootAlgebra","source":"engine/core/math/MathRootAlgebra.js","import":"/engine/core/math/MathRootAlgebra.js","sourceHash":"90be5128918d85c1130a3c7484c8c7e4c07d5cffb9aee9efbe8ad9eb2f5e8f40","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRootAlgebra.js#0001:rootAlgebraDimension","exportIndex":1,"name":"rootAlgebraDimension","kind":"function","signature":"rootAlgebraDimension(n)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRootAlgebra.md","moduleTitle":"core/math/MathRootAlgebra","source":"engine/core/math/MathRootAlgebra.js","import":"/engine/core/math/MathRootAlgebra.js","sourceHash":"90be5128918d85c1130a3c7484c8c7e4c07d5cffb9aee9efbe8ad9eb2f5e8f40","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRootAlgebra.js#0002:rootAlgebraGeneratorName","exportIndex":2,"name":"rootAlgebraGeneratorName","kind":"function","signature":"rootAlgebraGeneratorName(index)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRootAlgebra.md","moduleTitle":"core/math/MathRootAlgebra","source":"engine/core/math/MathRootAlgebra.js","import":"/engine/core/math/MathRootAlgebra.js","sourceHash":"90be5128918d85c1130a3c7484c8c7e4c07d5cffb9aee9efbe8ad9eb2f5e8f40","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRootAlgebra.js#0003:rootAlgebraBasisName","exportIndex":3,"name":"rootAlgebraBasisName","kind":"function","signature":"rootAlgebraBasisName(mask, n = 4)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRootAlgebra.md","moduleTitle":"core/math/MathRootAlgebra","source":"engine/core/math/MathRootAlgebra.js","import":"/engine/core/math/MathRootAlgebra.js","sourceHash":"90be5128918d85c1130a3c7484c8c7e4c07d5cffb9aee9efbe8ad9eb2f5e8f40","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRootAlgebra.js#0004:rootAlgebraFormatElement","exportIndex":4,"name":"rootAlgebraFormatElement","kind":"function","signature":"rootAlgebraFormatElement(element, n = 4)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRootAlgebra.md","moduleTitle":"core/math/MathRootAlgebra","source":"engine/core/math/MathRootAlgebra.js","import":"/engine/core/math/MathRootAlgebra.js","sourceHash":"90be5128918d85c1130a3c7484c8c7e4c07d5cffb9aee9efbe8ad9eb2f5e8f40","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRootAlgebra.js#0005:rootAlgebraSquare","exportIndex":5,"name":"rootAlgebraSquare","kind":"function","signature":"rootAlgebraSquare(n, basisMask)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRootAlgebra.md","moduleTitle":"core/math/MathRootAlgebra","source":"engine/core/math/MathRootAlgebra.js","import":"/engine/core/math/MathRootAlgebra.js","sourceHash":"90be5128918d85c1130a3c7484c8c7e4c07d5cffb9aee9efbe8ad9eb2f5e8f40","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRootAlgebra.js#0006:rootAlgebraMultiply","exportIndex":6,"name":"rootAlgebraMultiply","kind":"function","signature":"rootAlgebraMultiply(n, leftMask, rightMask)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRootAlgebra.md","moduleTitle":"core/math/MathRootAlgebra","source":"engine/core/math/MathRootAlgebra.js","import":"/engine/core/math/MathRootAlgebra.js","sourceHash":"90be5128918d85c1130a3c7484c8c7e4c07d5cffb9aee9efbe8ad9eb2f5e8f40","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRootAlgebra.js#0007:rootAlgebraTraceMultiply","exportIndex":7,"name":"rootAlgebraTraceMultiply","kind":"function","signature":"rootAlgebraTraceMultiply(n, leftMask, rightMask)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRootAlgebra.md","moduleTitle":"core/math/MathRootAlgebra","source":"engine/core/math/MathRootAlgebra.js","import":"/engine/core/math/MathRootAlgebra.js","sourceHash":"90be5128918d85c1130a3c7484c8c7e4c07d5cffb9aee9efbe8ad9eb2f5e8f40","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRootAlgebra.js#0008:rootAlgebraReverseMaskBits","exportIndex":8,"name":"rootAlgebraReverseMaskBits","kind":"function","signature":"rootAlgebraReverseMaskBits(mask, n)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRootAlgebra.md","moduleTitle":"core/math/MathRootAlgebra","source":"engine/core/math/MathRootAlgebra.js","import":"/engine/core/math/MathRootAlgebra.js","sourceHash":"90be5128918d85c1130a3c7484c8c7e4c07d5cffb9aee9efbe8ad9eb2f5e8f40","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRootAlgebra.js#0009:rootAlgebraEncodedMultiply","exportIndex":9,"name":"rootAlgebraEncodedMultiply","kind":"function","signature":"rootAlgebraEncodedMultiply(n, leftMask, rightMask, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRootAlgebra.md","moduleTitle":"core/math/MathRootAlgebra","source":"engine/core/math/MathRootAlgebra.js","import":"/engine/core/math/MathRootAlgebra.js","sourceHash":"90be5128918d85c1130a3c7484c8c7e4c07d5cffb9aee9efbe8ad9eb2f5e8f40","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRootAlgebra.js#0010:rootAlgebraEncodedTrace","exportIndex":10,"name":"rootAlgebraEncodedTrace","kind":"function","signature":"rootAlgebraEncodedTrace(n, leftMask, rightMask, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRootAlgebra.md","moduleTitle":"core/math/MathRootAlgebra","source":"engine/core/math/MathRootAlgebra.js","import":"/engine/core/math/MathRootAlgebra.js","sourceHash":"90be5128918d85c1130a3c7484c8c7e4c07d5cffb9aee9efbe8ad9eb2f5e8f40","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRootAlgebra.js#0011:rootAlgebraGenerateTable","exportIndex":11,"name":"rootAlgebraGenerateTable","kind":"function","signature":"rootAlgebraGenerateTable(n, multiply = rootAlgebraMultiply)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRootAlgebra.md","moduleTitle":"core/math/MathRootAlgebra","source":"engine/core/math/MathRootAlgebra.js","import":"/engine/core/math/MathRootAlgebra.js","sourceHash":"90be5128918d85c1130a3c7484c8c7e4c07d5cffb9aee9efbe8ad9eb2f5e8f40","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRootAlgebra.js#0012:rootAlgebraCompileExecutionPlan","exportIndex":12,"name":"rootAlgebraCompileExecutionPlan","kind":"function","signature":"rootAlgebraCompileExecutionPlan(n, options = {})","summary":"Compile the reducer into immutable bilinear and square execution plans. Experimental encoders never enter this path: callers may require the exact algebraic laws their optimized kernel depends on before code is generated."}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRootAlgebra.md","moduleTitle":"core/math/MathRootAlgebra","source":"engine/core/math/MathRootAlgebra.js","import":"/engine/core/math/MathRootAlgebra.js","sourceHash":"90be5128918d85c1130a3c7484c8c7e4c07d5cffb9aee9efbe8ad9eb2f5e8f40","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRootAlgebra.js#0013:rootAlgebraEvaluateExecutionPlan","exportIndex":13,"name":"rootAlgebraEvaluateExecutionPlan","kind":"function","signature":"rootAlgebraEvaluateExecutionPlan(plan, left, right = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRootAlgebra.md","moduleTitle":"core/math/MathRootAlgebra","source":"engine/core/math/MathRootAlgebra.js","import":"/engine/core/math/MathRootAlgebra.js","sourceHash":"90be5128918d85c1130a3c7484c8c7e4c07d5cffb9aee9efbe8ad9eb2f5e8f40","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRootAlgebra.js#0014:rootAlgebraExecutionPlanWGSL","exportIndex":14,"name":"rootAlgebraExecutionPlanWGSL","kind":"function","signature":"rootAlgebraExecutionPlanWGSL(plan, options = {})","summary":"Generate a branch-free WGSL product or square directly from a validated plan."}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRootAlgebra.md","moduleTitle":"core/math/MathRootAlgebra","source":"engine/core/math/MathRootAlgebra.js","import":"/engine/core/math/MathRootAlgebra.js","sourceHash":"90be5128918d85c1130a3c7484c8c7e4c07d5cffb9aee9efbe8ad9eb2f5e8f40","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRootAlgebra.js#0015:rootAlgebraValidate","exportIndex":15,"name":"rootAlgebraValidate","kind":"function","signature":"rootAlgebraValidate(n, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRootAlgebra.md","moduleTitle":"core/math/MathRootAlgebra","source":"engine/core/math/MathRootAlgebra.js","import":"/engine/core/math/MathRootAlgebra.js","sourceHash":"90be5128918d85c1130a3c7484c8c7e4c07d5cffb9aee9efbe8ad9eb2f5e8f40","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRootAlgebra.js#0016:rootAlgebraPropertyReport","exportIndex":16,"name":"rootAlgebraPropertyReport","kind":"function","signature":"rootAlgebraPropertyReport(n, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRootAlgebra.md","moduleTitle":"core/math/MathRootAlgebra","source":"engine/core/math/MathRootAlgebra.js","import":"/engine/core/math/MathRootAlgebra.js","sourceHash":"90be5128918d85c1130a3c7484c8c7e4c07d5cffb9aee9efbe8ad9eb2f5e8f40","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRootAlgebra.js#0017:rootAlgebraFindSimpleZeroDivisors","exportIndex":17,"name":"rootAlgebraFindSimpleZeroDivisors","kind":"function","signature":"rootAlgebraFindSimpleZeroDivisors(n, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathRootAlgebra.md","moduleTitle":"core/math/MathRootAlgebra","source":"engine/core/math/MathRootAlgebra.js","import":"/engine/core/math/MathRootAlgebra.js","sourceHash":"90be5128918d85c1130a3c7484c8c7e4c07d5cffb9aee9efbe8ad9eb2f5e8f40","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathRootAlgebra.js#0018:rootAlgebraSearchEncodedMultipliers","exportIndex":18,"name":"rootAlgebraSearchEncodedMultipliers","kind":"function","signature":"rootAlgebraSearchEncodedMultipliers(n, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/MathScalar.js","title":"core/math/MathScalar","summary":"MathScalar.js - Scalar utility functions Depends on: MathConstants.js","exportCount":62}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0000:nearlyEqual","exportIndex":0,"name":"nearlyEqual","kind":"function","signature":"nearlyEqual(a, b, absEps = EPSILON, relEps = EPSILON)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0001:safeDiv","exportIndex":1,"name":"safeDiv","kind":"function","signature":"safeDiv(numerator, denominator, fallback = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0002:gcd","exportIndex":2,"name":"gcd","kind":"function","signature":"gcd(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0003:lcm","exportIndex":3,"name":"lcm","kind":"function","signature":"lcm(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0004:normalizeRange","exportIndex":4,"name":"normalizeRange","kind":"function","signature":"normalizeRange(min, max)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0005:clampRange","exportIndex":5,"name":"clampRange","kind":"function","signature":"clampRange(value, min, max)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0006:rangeContains","exportIndex":6,"name":"rangeContains","kind":"function","signature":"rangeContains(value, min, max, inclusive = true)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0007:rangeOverlap","exportIndex":7,"name":"rangeOverlap","kind":"function","signature":"rangeOverlap(aMin, aMax, bMin, bMax, inclusive = true)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0008:rangeIntersection","exportIndex":8,"name":"rangeIntersection","kind":"function","signature":"rangeIntersection(aMin, aMax, bMin, bMax)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0009:rangeUnion","exportIndex":9,"name":"rangeUnion","kind":"function","signature":"rangeUnion(aMin, aMax, bMin, bMax)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0010:splitRange","exportIndex":10,"name":"splitRange","kind":"function","signature":"splitRange(min, max, segments)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0011:degToRad","exportIndex":11,"name":"degToRad","kind":"function","signature":"degToRad(deg)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0012:radToDeg","exportIndex":12,"name":"radToDeg","kind":"function","signature":"radToDeg(rad)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0013:clamp","exportIndex":13,"name":"clamp","kind":"function","signature":"clamp(x, min, max)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0014:saturate","exportIndex":14,"name":"saturate","kind":"function","signature":"saturate(x)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0015:lerp","exportIndex":15,"name":"lerp","kind":"function","signature":"lerp(a, b, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0016:inverseLerp","exportIndex":16,"name":"inverseLerp","kind":"function","signature":"inverseLerp(a, b, x)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0017:remap","exportIndex":17,"name":"remap","kind":"function","signature":"remap(x, inMin, inMax, outMin, outMax)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0018:remapClamped","exportIndex":18,"name":"remapClamped","kind":"function","signature":"remapClamped(x, inMin, inMax, outMin, outMax)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0019:smoothstep","exportIndex":19,"name":"smoothstep","kind":"function","signature":"smoothstep(e0, e1, x)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0020:smootherstep","exportIndex":20,"name":"smootherstep","kind":"function","signature":"smootherstep(e0, e1, x)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0021:step","exportIndex":21,"name":"step","kind":"function","signature":"step(edge, x)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0022:pulse","exportIndex":22,"name":"pulse","kind":"function","signature":"pulse(a, b, x)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0023:fract","exportIndex":23,"name":"fract","kind":"function","signature":"fract(x)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0024:mod","exportIndex":24,"name":"mod","kind":"function","signature":"mod(x, y)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0025:wrap","exportIndex":25,"name":"wrap","kind":"function","signature":"wrap(x, min, max)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0026:sign","exportIndex":26,"name":"sign","kind":"function","signature":"sign(x)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0027:signNonZero","exportIndex":27,"name":"signNonZero","kind":"function","signature":"signNonZero(x)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0028:approxEqual","exportIndex":28,"name":"approxEqual","kind":"function","signature":"approxEqual(a, b, eps = EPSILON)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0029:approxZero","exportIndex":29,"name":"approxZero","kind":"function","signature":"approxZero(x, eps = EPSILON)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0030:isFiniteNumber","exportIndex":30,"name":"isFiniteNumber","kind":"function","signature":"isFiniteNumber(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0031:finiteNumber","exportIndex":31,"name":"finiteNumber","kind":"function","signature":"finiteNumber(value, fallback = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0032:snap","exportIndex":32,"name":"snap","kind":"function","signature":"snap(x, grid)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0033:snapFloor","exportIndex":33,"name":"snapFloor","kind":"function","signature":"snapFloor(x, grid)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0034:snapCeil","exportIndex":34,"name":"snapCeil","kind":"function","signature":"snapCeil(x, grid)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0035:roundTo","exportIndex":35,"name":"roundTo","kind":"function","signature":"roundTo(x, stepSize = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0036:floorTo","exportIndex":36,"name":"floorTo","kind":"function","signature":"floorTo(x, stepSize = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0037:ceilTo","exportIndex":37,"name":"ceilTo","kind":"function","signature":"ceilTo(x, stepSize = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0038:wrapAngle","exportIndex":38,"name":"wrapAngle","kind":"function","signature":"wrapAngle(angle)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0039:wrapAnglePositive","exportIndex":39,"name":"wrapAnglePositive","kind":"function","signature":"wrapAnglePositive(angle)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0040:angleDiff","exportIndex":40,"name":"angleDiff","kind":"function","signature":"angleDiff(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0041:lerpAngle","exportIndex":41,"name":"lerpAngle","kind":"function","signature":"lerpAngle(a, b, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0042:angleBetween","exportIndex":42,"name":"angleBetween","kind":"function","signature":"angleBetween(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0043:min3","exportIndex":43,"name":"min3","kind":"function","signature":"min3(a, b, c)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0044:max3","exportIndex":44,"name":"max3","kind":"function","signature":"max3(a, b, c)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0045:min4","exportIndex":45,"name":"min4","kind":"function","signature":"min4(a, b, c, d)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0046:max4","exportIndex":46,"name":"max4","kind":"function","signature":"max4(a, b, c, d)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0047:minArray","exportIndex":47,"name":"minArray","kind":"function","signature":"minArray(arr)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0048:maxArray","exportIndex":48,"name":"maxArray","kind":"function","signature":"maxArray(arr)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0049:moveToward","exportIndex":49,"name":"moveToward","kind":"function","signature":"moveToward(current, target, maxDelta)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0050:damp","exportIndex":50,"name":"damp","kind":"function","signature":"damp(current, target, smoothing, dt)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0051:springDamp","exportIndex":51,"name":"springDamp","kind":"function","signature":"springDamp(current, target, velocity, smoothTime, dt)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0052:pingPong","exportIndex":52,"name":"pingPong","kind":"function","signature":"pingPong(t, length)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0053:repeat","exportIndex":53,"name":"repeat","kind":"function","signature":"repeat(t, length)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0054:deltaAngle","exportIndex":54,"name":"deltaAngle","kind":"function","signature":"deltaAngle(current, target)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0055:moveTowardAngle","exportIndex":55,"name":"moveTowardAngle","kind":"function","signature":"moveTowardAngle(current, target, maxDelta)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0056:inverseSqrt","exportIndex":56,"name":"inverseSqrt","kind":"function","signature":"inverseSqrt(x)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0057:fma","exportIndex":57,"name":"fma","kind":"function","signature":"fma(a, b, c)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0058:bias","exportIndex":58,"name":"bias","kind":"function","signature":"bias(x, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0059:gain","exportIndex":59,"name":"gain","kind":"function","signature":"gain(x, g)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0060:almostIdentity","exportIndex":60,"name":"almostIdentity","kind":"function","signature":"almostIdentity(x, threshold, value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathScalar.md","moduleTitle":"core/math/MathScalar","source":"engine/core/math/MathScalar.js","import":"/engine/core/math/MathScalar.js","sourceHash":"01cd45a10273c367320358870046b7bb519bc5c841ccfd46b339a731afbb7a10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathScalar.js#0061:clamp01","exportIndex":61,"name":"clamp01","kind":"constant","signature":"clamp01","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/MathSignal.js","title":"core/math/MathSignal","summary":"MathSignal.js - FFT and Signal Processing FFT, window functions, filters, convolution, spectral analysis","exportCount":60}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0000:fft","exportIndex":0,"name":"fft","kind":"function","signature":"fft(real, imag = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0001:ifft","exportIndex":1,"name":"ifft","kind":"function","signature":"ifft(real, imag)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0002:rfft","exportIndex":2,"name":"rfft","kind":"function","signature":"rfft(input)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0003:powerSpectrum","exportIndex":3,"name":"powerSpectrum","kind":"function","signature":"powerSpectrum(real, imag)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0004:magnitudeSpectrum","exportIndex":4,"name":"magnitudeSpectrum","kind":"function","signature":"magnitudeSpectrum(real, imag)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0005:phaseSpectrum","exportIndex":5,"name":"phaseSpectrum","kind":"function","signature":"phaseSpectrum(real, imag)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0006:fftFrequencies","exportIndex":6,"name":"fftFrequencies","kind":"function","signature":"fftFrequencies(n, sampleRate)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0007:rfftFrequencies","exportIndex":7,"name":"rfftFrequencies","kind":"function","signature":"rfftFrequencies(n, sampleRate)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0008:fft2D","exportIndex":8,"name":"fft2D","kind":"function","signature":"fft2D(data, width, height)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0009:ifft2D","exportIndex":9,"name":"ifft2D","kind":"function","signature":"ifft2D(real, imag, width, height)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0010:hannWindow","exportIndex":10,"name":"hannWindow","kind":"function","signature":"hannWindow(n)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0011:hammingWindow","exportIndex":11,"name":"hammingWindow","kind":"function","signature":"hammingWindow(n)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0012:blackmanWindow","exportIndex":12,"name":"blackmanWindow","kind":"function","signature":"blackmanWindow(n)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0013:blackmanHarrisWindow","exportIndex":13,"name":"blackmanHarrisWindow","kind":"function","signature":"blackmanHarrisWindow(n)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0014:kaiserWindow","exportIndex":14,"name":"kaiserWindow","kind":"function","signature":"kaiserWindow(n, beta = 5)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0015:gaussianWindow","exportIndex":15,"name":"gaussianWindow","kind":"function","signature":"gaussianWindow(n, sigma = 0.4)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0016:triangularWindow","exportIndex":16,"name":"triangularWindow","kind":"function","signature":"triangularWindow(n)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0017:flatTopWindow","exportIndex":17,"name":"flatTopWindow","kind":"function","signature":"flatTopWindow(n)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0018:rectangularWindow","exportIndex":18,"name":"rectangularWindow","kind":"function","signature":"rectangularWindow(n)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0019:applyWindow","exportIndex":19,"name":"applyWindow","kind":"function","signature":"applyWindow(signal, window)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0020:signalEnergy","exportIndex":20,"name":"signalEnergy","kind":"function","signature":"signalEnergy(signal)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0021:signalMean","exportIndex":21,"name":"signalMean","kind":"function","signature":"signalMean(signal)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0022:signalRms","exportIndex":22,"name":"signalRms","kind":"function","signature":"signalRms(signal)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0023:signalPeakReport","exportIndex":23,"name":"signalPeakReport","kind":"function","signature":"signalPeakReport(signal)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0024:zeroCrossingCount","exportIndex":24,"name":"zeroCrossingCount","kind":"function","signature":"zeroCrossingCount(signal, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0025:zeroCrossingRate","exportIndex":25,"name":"zeroCrossingRate","kind":"function","signature":"zeroCrossingRate(signal, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0026:signalSummaryReport","exportIndex":26,"name":"signalSummaryReport","kind":"function","signature":"signalSummaryReport(signal, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0027:resampleLengthForRate","exportIndex":27,"name":"resampleLengthForRate","kind":"function","signature":"resampleLengthForRate(sampleCount, sourceSampleRate, targetSampleRate)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0028:resampleNearest","exportIndex":28,"name":"resampleNearest","kind":"function","signature":"resampleNearest(signal, targetLength)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0029:resampleLinear","exportIndex":29,"name":"resampleLinear","kind":"function","signature":"resampleLinear(signal, targetLength)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0030:movingAverage","exportIndex":30,"name":"movingAverage","kind":"function","signature":"movingAverage(signal, windowSize)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0031:exponentialMovingAverage","exportIndex":31,"name":"exponentialMovingAverage","kind":"function","signature":"exponentialMovingAverage(signal, alpha = 0.3)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0032:medianFilter","exportIndex":32,"name":"medianFilter","kind":"function","signature":"medianFilter(signal, windowSize)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0033:savitzkyGolayFilter","exportIndex":33,"name":"savitzkyGolayFilter","kind":"function","signature":"savitzkyGolayFilter(signal)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0034:butterworthLowpass1","exportIndex":34,"name":"butterworthLowpass1","kind":"function","signature":"butterworthLowpass1(cutoffFreq, sampleRate)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0035:butterworthHighpass1","exportIndex":35,"name":"butterworthHighpass1","kind":"function","signature":"butterworthHighpass1(cutoffFreq, sampleRate)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0036:iirFilter","exportIndex":36,"name":"iirFilter","kind":"function","signature":"iirFilter(signal, b, a)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0037:firFilter","exportIndex":37,"name":"firFilter","kind":"function","signature":"firFilter(signal, coefficients)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0038:firLowpassCoeffs","exportIndex":38,"name":"firLowpassCoeffs","kind":"function","signature":"firLowpassCoeffs(cutoffFreq, sampleRate, numTaps)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0039:firHighpassCoeffs","exportIndex":39,"name":"firHighpassCoeffs","kind":"function","signature":"firHighpassCoeffs(cutoffFreq, sampleRate, numTaps)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0040:firBandpassCoeffs","exportIndex":40,"name":"firBandpassCoeffs","kind":"function","signature":"firBandpassCoeffs(lowFreq, highFreq, sampleRate, numTaps)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0041:convolve","exportIndex":41,"name":"convolve","kind":"function","signature":"convolve(signal, kernel)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0042:convolveSame","exportIndex":42,"name":"convolveSame","kind":"function","signature":"convolveSame(signal, kernel)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0043:convolveFFT","exportIndex":43,"name":"convolveFFT","kind":"function","signature":"convolveFFT(signal, kernel)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0044:crossCorrelation","exportIndex":44,"name":"crossCorrelation","kind":"function","signature":"crossCorrelation(signal1, signal2)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0045:autocorrelation","exportIndex":45,"name":"autocorrelation","kind":"function","signature":"autocorrelation(signal)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0046:normalizedCrossCorrelation","exportIndex":46,"name":"normalizedCrossCorrelation","kind":"function","signature":"normalizedCrossCorrelation(signal1, signal2)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0047:stft","exportIndex":47,"name":"stft","kind":"function","signature":"stft(signal, windowSize, hopSize, windowFn = hannWindow)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0048:istft","exportIndex":48,"name":"istft","kind":"function","signature":"istft(frames, windowSize, hopSize, outputLength)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0049:spectrogram","exportIndex":49,"name":"spectrogram","kind":"function","signature":"spectrogram(signal, windowSize, hopSize, windowFn = hannWindow)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0050:melFilterbank","exportIndex":50,"name":"melFilterbank","kind":"function","signature":"melFilterbank(numFilters, fftSize, sampleRate, lowFreq = 0, highFreq = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0051:applyMelFilterbank","exportIndex":51,"name":"applyMelFilterbank","kind":"function","signature":"applyMelFilterbank(spectrum, filterbank)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0052:mfcc","exportIndex":52,"name":"mfcc","kind":"function","signature":"mfcc(signal, sampleRate, numCoeffs = 13, numFilters = 26, windowSize = 512, hopSize = 256)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0053:generateSine","exportIndex":53,"name":"generateSine","kind":"function","signature":"generateSine(frequency, sampleRate, duration, amplitude = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0054:generateCosine","exportIndex":54,"name":"generateCosine","kind":"function","signature":"generateCosine(frequency, sampleRate, duration, amplitude = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0055:generateSquare","exportIndex":55,"name":"generateSquare","kind":"function","signature":"generateSquare(frequency, sampleRate, duration, amplitude = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0056:generateSawtooth","exportIndex":56,"name":"generateSawtooth","kind":"function","signature":"generateSawtooth(frequency, sampleRate, duration, amplitude = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0057:generateTriangle","exportIndex":57,"name":"generateTriangle","kind":"function","signature":"generateTriangle(frequency, sampleRate, duration, amplitude = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0058:generateWhiteNoise","exportIndex":58,"name":"generateWhiteNoise","kind":"function","signature":"generateWhiteNoise(sampleRate, duration, amplitude = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSignal.md","moduleTitle":"core/math/MathSignal","source":"engine/core/math/MathSignal.js","import":"/engine/core/math/MathSignal.js","sourceHash":"41133c3775a3d04628b9f7264b7f6de69d769e468973e3cabe89769e4df9e50e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSignal.js#0059:generateChirp","exportIndex":59,"name":"generateChirp","kind":"function","signature":"generateChirp(startFreq, endFreq, sampleRate, duration, amplitude = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSphericalHarmonics.md","moduleTitle":"core/math/MathSphericalHarmonics","source":"engine/core/math/MathSphericalHarmonics.js","import":"/engine/core/math/MathSphericalHarmonics.js","sourceHash":"04658a599b6922086beaedcf42da9629ee8476976bbb1fbada9b39cb87952a55","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/MathSphericalHarmonics.js","title":"core/math/MathSphericalHarmonics","summary":"MathSphericalHarmonics.js - CPU-side Spherical Harmonics (L0-L2, 9 coefficients) Consolidates: RealtimeGI.js inline WGSL evalSH, provides CPU parity for probe baking/debugging Three.js SphericalHarmonics3 parity","exportCount":17}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSphericalHarmonics.md","moduleTitle":"core/math/MathSphericalHarmonics","source":"engine/core/math/MathSphericalHarmonics.js","import":"/engine/core/math/MathSphericalHarmonics.js","sourceHash":"04658a599b6922086beaedcf42da9629ee8476976bbb1fbada9b39cb87952a55","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSphericalHarmonics.js#0000:shZero","exportIndex":0,"name":"shZero","kind":"function","signature":"shZero()","summary":"Create zero SH (9 RGB coefficients = 27 floats)"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSphericalHarmonics.md","moduleTitle":"core/math/MathSphericalHarmonics","source":"engine/core/math/MathSphericalHarmonics.js","import":"/engine/core/math/MathSphericalHarmonics.js","sourceHash":"04658a599b6922086beaedcf42da9629ee8476976bbb1fbada9b39cb87952a55","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSphericalHarmonics.js#0001:shClone","exportIndex":1,"name":"shClone","kind":"function","signature":"shClone(sh)","summary":"Clone SH coefficients"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSphericalHarmonics.md","moduleTitle":"core/math/MathSphericalHarmonics","source":"engine/core/math/MathSphericalHarmonics.js","import":"/engine/core/math/MathSphericalHarmonics.js","sourceHash":"04658a599b6922086beaedcf42da9629ee8476976bbb1fbada9b39cb87952a55","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSphericalHarmonics.js#0002:shFromColor","exportIndex":2,"name":"shFromColor","kind":"function","signature":"shFromColor(r, g, b)","summary":"Create SH from constant color (ambient only, L0 band)"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSphericalHarmonics.md","moduleTitle":"core/math/MathSphericalHarmonics","source":"engine/core/math/MathSphericalHarmonics.js","import":"/engine/core/math/MathSphericalHarmonics.js","sourceHash":"04658a599b6922086beaedcf42da9629ee8476976bbb1fbada9b39cb87952a55","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSphericalHarmonics.js#0003:shEvaluateBasis","exportIndex":3,"name":"shEvaluateBasis","kind":"function","signature":"shEvaluateBasis(dir)","summary":"Evaluate 9 SH basis functions for a direction [x,y,z] (must be normalized)"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSphericalHarmonics.md","moduleTitle":"core/math/MathSphericalHarmonics","source":"engine/core/math/MathSphericalHarmonics.js","import":"/engine/core/math/MathSphericalHarmonics.js","sourceHash":"04658a599b6922086beaedcf42da9629ee8476976bbb1fbada9b39cb87952a55","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSphericalHarmonics.js#0004:shEvaluateBasisL1","exportIndex":4,"name":"shEvaluateBasisL1","kind":"function","signature":"shEvaluateBasisL1(dir)","summary":"Evaluate 4 SH basis functions (L0+L1 only, cheaper)"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSphericalHarmonics.md","moduleTitle":"core/math/MathSphericalHarmonics","source":"engine/core/math/MathSphericalHarmonics.js","import":"/engine/core/math/MathSphericalHarmonics.js","sourceHash":"04658a599b6922086beaedcf42da9629ee8476976bbb1fbada9b39cb87952a55","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSphericalHarmonics.js#0005:shEvaluate","exportIndex":5,"name":"shEvaluate","kind":"function","signature":"shEvaluate(sh, dir)","summary":"Evaluate RGB color from SH coefficients at a direction"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSphericalHarmonics.md","moduleTitle":"core/math/MathSphericalHarmonics","source":"engine/core/math/MathSphericalHarmonics.js","import":"/engine/core/math/MathSphericalHarmonics.js","sourceHash":"04658a599b6922086beaedcf42da9629ee8476976bbb1fbada9b39cb87952a55","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSphericalHarmonics.js#0006:shIrradiance","exportIndex":6,"name":"shIrradiance","kind":"function","signature":"shIrradiance(sh, normal)","summary":"Evaluate irradiance (diffuse lighting) from SH at a surface normal"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSphericalHarmonics.md","moduleTitle":"core/math/MathSphericalHarmonics","source":"engine/core/math/MathSphericalHarmonics.js","import":"/engine/core/math/MathSphericalHarmonics.js","sourceHash":"04658a599b6922086beaedcf42da9629ee8476976bbb1fbada9b39cb87952a55","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSphericalHarmonics.js#0007:shProject","exportIndex":7,"name":"shProject","kind":"function","signature":"shProject(directions, colors)","summary":"Project directional samples onto SH coefficients"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSphericalHarmonics.md","moduleTitle":"core/math/MathSphericalHarmonics","source":"engine/core/math/MathSphericalHarmonics.js","import":"/engine/core/math/MathSphericalHarmonics.js","sourceHash":"04658a599b6922086beaedcf42da9629ee8476976bbb1fbada9b39cb87952a55","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSphericalHarmonics.js#0008:shAdd","exportIndex":8,"name":"shAdd","kind":"function","signature":"shAdd(a, b)","summary":"Add two SH: out = a + b"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSphericalHarmonics.md","moduleTitle":"core/math/MathSphericalHarmonics","source":"engine/core/math/MathSphericalHarmonics.js","import":"/engine/core/math/MathSphericalHarmonics.js","sourceHash":"04658a599b6922086beaedcf42da9629ee8476976bbb1fbada9b39cb87952a55","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSphericalHarmonics.js#0009:shScale","exportIndex":9,"name":"shScale","kind":"function","signature":"shScale(sh, s)","summary":"Scale SH by scalar"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSphericalHarmonics.md","moduleTitle":"core/math/MathSphericalHarmonics","source":"engine/core/math/MathSphericalHarmonics.js","import":"/engine/core/math/MathSphericalHarmonics.js","sourceHash":"04658a599b6922086beaedcf42da9629ee8476976bbb1fbada9b39cb87952a55","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSphericalHarmonics.js#0010:shLerp","exportIndex":10,"name":"shLerp","kind":"function","signature":"shLerp(a, b, t)","summary":"Lerp between two SH"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSphericalHarmonics.md","moduleTitle":"core/math/MathSphericalHarmonics","source":"engine/core/math/MathSphericalHarmonics.js","import":"/engine/core/math/MathSphericalHarmonics.js","sourceHash":"04658a599b6922086beaedcf42da9629ee8476976bbb1fbada9b39cb87952a55","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSphericalHarmonics.js#0011:shAccumulate","exportIndex":11,"name":"shAccumulate","kind":"function","signature":"shAccumulate(out, sh, weight)","summary":"Accumulate: out += sh * weight (in-place)"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSphericalHarmonics.md","moduleTitle":"core/math/MathSphericalHarmonics","source":"engine/core/math/MathSphericalHarmonics.js","import":"/engine/core/math/MathSphericalHarmonics.js","sourceHash":"04658a599b6922086beaedcf42da9629ee8476976bbb1fbada9b39cb87952a55","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSphericalHarmonics.js#0012:shConvolve","exportIndex":12,"name":"shConvolve","kind":"function","signature":"shConvolve(sh, kernel)","summary":"Convolve SH with per-band kernel (e.g., cosine lobe for diffuse)"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSphericalHarmonics.md","moduleTitle":"core/math/MathSphericalHarmonics","source":"engine/core/math/MathSphericalHarmonics.js","import":"/engine/core/math/MathSphericalHarmonics.js","sourceHash":"04658a599b6922086beaedcf42da9629ee8476976bbb1fbada9b39cb87952a55","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSphericalHarmonics.js#0013:shWindow","exportIndex":13,"name":"shWindow","kind":"function","signature":"shWindow(sh, windowWidth)","summary":"Apply Hanning window to reduce ringing"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSphericalHarmonics.md","moduleTitle":"core/math/MathSphericalHarmonics","source":"engine/core/math/MathSphericalHarmonics.js","import":"/engine/core/math/MathSphericalHarmonics.js","sourceHash":"04658a599b6922086beaedcf42da9629ee8476976bbb1fbada9b39cb87952a55","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSphericalHarmonics.js#0014:shRotate","exportIndex":14,"name":"shRotate","kind":"function","signature":"shRotate(sh, mat3)","summary":"Rotate SH coefficients by a 3x3 rotation matrix L0 is invariant. L1 rotates directly. L2 uses the explicit 5x5 rotation. Reference: Ivanic & Ruedenberg (1996), Green \"SH Lighting: The Gritty Details\" (2003)"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSphericalHarmonics.md","moduleTitle":"core/math/MathSphericalHarmonics","source":"engine/core/math/MathSphericalHarmonics.js","import":"/engine/core/math/MathSphericalHarmonics.js","sourceHash":"04658a599b6922086beaedcf42da9629ee8476976bbb1fbada9b39cb87952a55","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSphericalHarmonics.js#0015:shFromCubemap","exportIndex":15,"name":"shFromCubemap","kind":"function","signature":"shFromCubemap(faces)","summary":"Project 6-face cubemap to SH"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathSphericalHarmonics.md","moduleTitle":"core/math/MathSphericalHarmonics","source":"engine/core/math/MathSphericalHarmonics.js","import":"/engine/core/math/MathSphericalHarmonics.js","sourceHash":"04658a599b6922086beaedcf42da9629ee8476976bbb1fbada9b39cb87952a55","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathSphericalHarmonics.js#0016:shToGPUBuffer","exportIndex":16,"name":"shToGPUBuffer","kind":"function","signature":"shToGPUBuffer(sh)","summary":"Convert SH to Float32Array suitable for GPU uniform upload (already is Float32Array)"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathStatistics.md","moduleTitle":"core/math/MathStatistics","source":"engine/core/math/MathStatistics.js","import":"/engine/core/math/MathStatistics.js","sourceHash":"298b1fe52ca05dc01d65613b428b70956ae43d01791b52828921be3407d74c62","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/MathStatistics.js","title":"core/math/MathStatistics","summary":"MathStatistics.js - Running statistics, array stats, exponential moving average Consolidates: PerformanceAnalyzer inline variance/stdDev, FramePacingController running average Welford's online algorithm for numerically stable running stats","exportCount":36}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathStatistics.md","moduleTitle":"core/math/MathStatistics","source":"engine/core/math/MathStatistics.js","import":"/engine/core/math/MathStatistics.js","sourceHash":"298b1fe52ca05dc01d65613b428b70956ae43d01791b52828921be3407d74c62","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathStatistics.js#0000:runningStatsCreate","exportIndex":0,"name":"runningStatsCreate","kind":"function","signature":"runningStatsCreate()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathStatistics.md","moduleTitle":"core/math/MathStatistics","source":"engine/core/math/MathStatistics.js","import":"/engine/core/math/MathStatistics.js","sourceHash":"298b1fe52ca05dc01d65613b428b70956ae43d01791b52828921be3407d74c62","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathStatistics.js#0001:runningStatsPush","exportIndex":1,"name":"runningStatsPush","kind":"function","signature":"runningStatsPush(stats, value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathStatistics.md","moduleTitle":"core/math/MathStatistics","source":"engine/core/math/MathStatistics.js","import":"/engine/core/math/MathStatistics.js","sourceHash":"298b1fe52ca05dc01d65613b428b70956ae43d01791b52828921be3407d74c62","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathStatistics.js#0002:runningStatsRemove","exportIndex":2,"name":"runningStatsRemove","kind":"function","signature":"runningStatsRemove(stats, value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathStatistics.md","moduleTitle":"core/math/MathStatistics","source":"engine/core/math/MathStatistics.js","import":"/engine/core/math/MathStatistics.js","sourceHash":"298b1fe52ca05dc01d65613b428b70956ae43d01791b52828921be3407d74c62","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathStatistics.js#0003:runningStatsVariance","exportIndex":3,"name":"runningStatsVariance","kind":"function","signature":"runningStatsVariance(stats)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathStatistics.md","moduleTitle":"core/math/MathStatistics","source":"engine/core/math/MathStatistics.js","import":"/engine/core/math/MathStatistics.js","sourceHash":"298b1fe52ca05dc01d65613b428b70956ae43d01791b52828921be3407d74c62","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathStatistics.js#0004:runningStatsPopulationVariance","exportIndex":4,"name":"runningStatsPopulationVariance","kind":"function","signature":"runningStatsPopulationVariance(stats)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathStatistics.md","moduleTitle":"core/math/MathStatistics","source":"engine/core/math/MathStatistics.js","import":"/engine/core/math/MathStatistics.js","sourceHash":"298b1fe52ca05dc01d65613b428b70956ae43d01791b52828921be3407d74c62","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathStatistics.js#0005:runningStatsStdDev","exportIndex":5,"name":"runningStatsStdDev","kind":"function","signature":"runningStatsStdDev(stats)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathStatistics.md","moduleTitle":"core/math/MathStatistics","source":"engine/core/math/MathStatistics.js","import":"/engine/core/math/MathStatistics.js","sourceHash":"298b1fe52ca05dc01d65613b428b70956ae43d01791b52828921be3407d74c62","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathStatistics.js#0006:runningStatsMerge","exportIndex":6,"name":"runningStatsMerge","kind":"function","signature":"runningStatsMerge(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathStatistics.md","moduleTitle":"core/math/MathStatistics","source":"engine/core/math/MathStatistics.js","import":"/engine/core/math/MathStatistics.js","sourceHash":"298b1fe52ca05dc01d65613b428b70956ae43d01791b52828921be3407d74c62","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathStatistics.js#0007:runningStatsReset","exportIndex":7,"name":"runningStatsReset","kind":"function","signature":"runningStatsReset(stats)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathStatistics.md","moduleTitle":"core/math/MathStatistics","source":"engine/core/math/MathStatistics.js","import":"/engine/core/math/MathStatistics.js","sourceHash":"298b1fe52ca05dc01d65613b428b70956ae43d01791b52828921be3407d74c62","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathStatistics.js#0008:runningStatsClone","exportIndex":8,"name":"runningStatsClone","kind":"function","signature":"runningStatsClone(stats)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathStatistics.md","moduleTitle":"core/math/MathStatistics","source":"engine/core/math/MathStatistics.js","import":"/engine/core/math/MathStatistics.js","sourceHash":"298b1fe52ca05dc01d65613b428b70956ae43d01791b52828921be3407d74c62","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathStatistics.js#0009:statsMean","exportIndex":9,"name":"statsMean","kind":"function","signature":"statsMean(arr)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathStatistics.md","moduleTitle":"core/math/MathStatistics","source":"engine/core/math/MathStatistics.js","import":"/engine/core/math/MathStatistics.js","sourceHash":"298b1fe52ca05dc01d65613b428b70956ae43d01791b52828921be3407d74c62","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathStatistics.js#0010:statsSum","exportIndex":10,"name":"statsSum","kind":"function","signature":"statsSum(arr)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathStatistics.md","moduleTitle":"core/math/MathStatistics","source":"engine/core/math/MathStatistics.js","import":"/engine/core/math/MathStatistics.js","sourceHash":"298b1fe52ca05dc01d65613b428b70956ae43d01791b52828921be3407d74c62","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathStatistics.js#0011:statsVariance","exportIndex":11,"name":"statsVariance","kind":"function","signature":"statsVariance(arr)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathStatistics.md","moduleTitle":"core/math/MathStatistics","source":"engine/core/math/MathStatistics.js","import":"/engine/core/math/MathStatistics.js","sourceHash":"298b1fe52ca05dc01d65613b428b70956ae43d01791b52828921be3407d74c62","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathStatistics.js#0012:statsPopulationVariance","exportIndex":12,"name":"statsPopulationVariance","kind":"function","signature":"statsPopulationVariance(arr)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathStatistics.md","moduleTitle":"core/math/MathStatistics","source":"engine/core/math/MathStatistics.js","import":"/engine/core/math/MathStatistics.js","sourceHash":"298b1fe52ca05dc01d65613b428b70956ae43d01791b52828921be3407d74c62","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathStatistics.js#0013:statsMin","exportIndex":13,"name":"statsMin","kind":"function","signature":"statsMin(arr)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathStatistics.md","moduleTitle":"core/math/MathStatistics","source":"engine/core/math/MathStatistics.js","import":"/engine/core/math/MathStatistics.js","sourceHash":"298b1fe52ca05dc01d65613b428b70956ae43d01791b52828921be3407d74c62","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathStatistics.js#0014:statsMax","exportIndex":14,"name":"statsMax","kind":"function","signature":"statsMax(arr)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathStatistics.md","moduleTitle":"core/math/MathStatistics","source":"engine/core/math/MathStatistics.js","import":"/engine/core/math/MathStatistics.js","sourceHash":"298b1fe52ca05dc01d65613b428b70956ae43d01791b52828921be3407d74c62","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathStatistics.js#0015:statsMedian","exportIndex":15,"name":"statsMedian","kind":"function","signature":"statsMedian(arr)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathStatistics.md","moduleTitle":"core/math/MathStatistics","source":"engine/core/math/MathStatistics.js","import":"/engine/core/math/MathStatistics.js","sourceHash":"298b1fe52ca05dc01d65613b428b70956ae43d01791b52828921be3407d74c62","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathStatistics.js#0016:statsPercentile","exportIndex":16,"name":"statsPercentile","kind":"function","signature":"statsPercentile(arr, p)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathStatistics.md","moduleTitle":"core/math/MathStatistics","source":"engine/core/math/MathStatistics.js","import":"/engine/core/math/MathStatistics.js","sourceHash":"298b1fe52ca05dc01d65613b428b70956ae43d01791b52828921be3407d74c62","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathStatistics.js#0017:statsIQR","exportIndex":17,"name":"statsIQR","kind":"function","signature":"statsIQR(arr)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathStatistics.md","moduleTitle":"core/math/MathStatistics","source":"engine/core/math/MathStatistics.js","import":"/engine/core/math/MathStatistics.js","sourceHash":"298b1fe52ca05dc01d65613b428b70956ae43d01791b52828921be3407d74c62","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathStatistics.js#0018:emaCreate","exportIndex":18,"name":"emaCreate","kind":"function","signature":"emaCreate(alpha = 0.1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathStatistics.md","moduleTitle":"core/math/MathStatistics","source":"engine/core/math/MathStatistics.js","import":"/engine/core/math/MathStatistics.js","sourceHash":"298b1fe52ca05dc01d65613b428b70956ae43d01791b52828921be3407d74c62","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathStatistics.js#0019:emaPush","exportIndex":19,"name":"emaPush","kind":"function","signature":"emaPush(ema, value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathStatistics.md","moduleTitle":"core/math/MathStatistics","source":"engine/core/math/MathStatistics.js","import":"/engine/core/math/MathStatistics.js","sourceHash":"298b1fe52ca05dc01d65613b428b70956ae43d01791b52828921be3407d74c62","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathStatistics.js#0020:emaReset","exportIndex":20,"name":"emaReset","kind":"function","signature":"emaReset(ema)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathStatistics.md","moduleTitle":"core/math/MathStatistics","source":"engine/core/math/MathStatistics.js","import":"/engine/core/math/MathStatistics.js","sourceHash":"298b1fe52ca05dc01d65613b428b70956ae43d01791b52828921be3407d74c62","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathStatistics.js#0021:windowedStatsCreate","exportIndex":21,"name":"windowedStatsCreate","kind":"function","signature":"windowedStatsCreate(windowSize = 60)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathStatistics.md","moduleTitle":"core/math/MathStatistics","source":"engine/core/math/MathStatistics.js","import":"/engine/core/math/MathStatistics.js","sourceHash":"298b1fe52ca05dc01d65613b428b70956ae43d01791b52828921be3407d74c62","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathStatistics.js#0022:windowedStatsPush","exportIndex":22,"name":"windowedStatsPush","kind":"function","signature":"windowedStatsPush(ws, value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathStatistics.md","moduleTitle":"core/math/MathStatistics","source":"engine/core/math/MathStatistics.js","import":"/engine/core/math/MathStatistics.js","sourceHash":"298b1fe52ca05dc01d65613b428b70956ae43d01791b52828921be3407d74c62","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathStatistics.js#0023:windowedStatsVariance","exportIndex":23,"name":"windowedStatsVariance","kind":"function","signature":"windowedStatsVariance(ws)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathStatistics.md","moduleTitle":"core/math/MathStatistics","source":"engine/core/math/MathStatistics.js","import":"/engine/core/math/MathStatistics.js","sourceHash":"298b1fe52ca05dc01d65613b428b70956ae43d01791b52828921be3407d74c62","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathStatistics.js#0024:windowedStatsReset","exportIndex":24,"name":"windowedStatsReset","kind":"function","signature":"windowedStatsReset(ws)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathStatistics.md","moduleTitle":"core/math/MathStatistics","source":"engine/core/math/MathStatistics.js","import":"/engine/core/math/MathStatistics.js","sourceHash":"298b1fe52ca05dc01d65613b428b70956ae43d01791b52828921be3407d74c62","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathStatistics.js#0025:runningStatsMean","exportIndex":25,"name":"runningStatsMean","kind":"function","signature":"runningStatsMean(stats)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathStatistics.md","moduleTitle":"core/math/MathStatistics","source":"engine/core/math/MathStatistics.js","import":"/engine/core/math/MathStatistics.js","sourceHash":"298b1fe52ca05dc01d65613b428b70956ae43d01791b52828921be3407d74c62","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathStatistics.js#0026:runningStatsCount","exportIndex":26,"name":"runningStatsCount","kind":"function","signature":"runningStatsCount(stats)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathStatistics.md","moduleTitle":"core/math/MathStatistics","source":"engine/core/math/MathStatistics.js","import":"/engine/core/math/MathStatistics.js","sourceHash":"298b1fe52ca05dc01d65613b428b70956ae43d01791b52828921be3407d74c62","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathStatistics.js#0027:runningStatsMin","exportIndex":27,"name":"runningStatsMin","kind":"function","signature":"runningStatsMin(stats)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathStatistics.md","moduleTitle":"core/math/MathStatistics","source":"engine/core/math/MathStatistics.js","import":"/engine/core/math/MathStatistics.js","sourceHash":"298b1fe52ca05dc01d65613b428b70956ae43d01791b52828921be3407d74c62","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathStatistics.js#0028:runningStatsMax","exportIndex":28,"name":"runningStatsMax","kind":"function","signature":"runningStatsMax(stats)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathStatistics.md","moduleTitle":"core/math/MathStatistics","source":"engine/core/math/MathStatistics.js","import":"/engine/core/math/MathStatistics.js","sourceHash":"298b1fe52ca05dc01d65613b428b70956ae43d01791b52828921be3407d74c62","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathStatistics.js#0029:runningStatsRange","exportIndex":29,"name":"runningStatsRange","kind":"function","signature":"runningStatsRange(stats)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathStatistics.md","moduleTitle":"core/math/MathStatistics","source":"engine/core/math/MathStatistics.js","import":"/engine/core/math/MathStatistics.js","sourceHash":"298b1fe52ca05dc01d65613b428b70956ae43d01791b52828921be3407d74c62","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathStatistics.js#0030:statsStdDev","exportIndex":30,"name":"statsStdDev","kind":"function","signature":"statsStdDev(arr)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathStatistics.md","moduleTitle":"core/math/MathStatistics","source":"engine/core/math/MathStatistics.js","import":"/engine/core/math/MathStatistics.js","sourceHash":"298b1fe52ca05dc01d65613b428b70956ae43d01791b52828921be3407d74c62","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathStatistics.js#0031:statsPopulationStdDev","exportIndex":31,"name":"statsPopulationStdDev","kind":"function","signature":"statsPopulationStdDev(arr)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathStatistics.md","moduleTitle":"core/math/MathStatistics","source":"engine/core/math/MathStatistics.js","import":"/engine/core/math/MathStatistics.js","sourceHash":"298b1fe52ca05dc01d65613b428b70956ae43d01791b52828921be3407d74c62","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathStatistics.js#0032:statsRange","exportIndex":32,"name":"statsRange","kind":"function","signature":"statsRange(arr)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathStatistics.md","moduleTitle":"core/math/MathStatistics","source":"engine/core/math/MathStatistics.js","import":"/engine/core/math/MathStatistics.js","sourceHash":"298b1fe52ca05dc01d65613b428b70956ae43d01791b52828921be3407d74c62","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathStatistics.js#0033:emaGet","exportIndex":33,"name":"emaGet","kind":"function","signature":"emaGet(ema)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathStatistics.md","moduleTitle":"core/math/MathStatistics","source":"engine/core/math/MathStatistics.js","import":"/engine/core/math/MathStatistics.js","sourceHash":"298b1fe52ca05dc01d65613b428b70956ae43d01791b52828921be3407d74c62","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathStatistics.js#0034:windowedStatsMean","exportIndex":34,"name":"windowedStatsMean","kind":"function","signature":"windowedStatsMean(ws)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathStatistics.md","moduleTitle":"core/math/MathStatistics","source":"engine/core/math/MathStatistics.js","import":"/engine/core/math/MathStatistics.js","sourceHash":"298b1fe52ca05dc01d65613b428b70956ae43d01791b52828921be3407d74c62","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathStatistics.js#0035:windowedStatsStdDev","exportIndex":35,"name":"windowedStatsStdDev","kind":"function","signature":"windowedStatsStdDev(ws)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathValidation.md","moduleTitle":"core/math/MathValidation","source":"engine/core/math/MathValidation.js","import":"/engine/core/math/MathValidation.js","sourceHash":"eee2e281591f93abbb1adeb566f03fcdf46e3fc194b770af070d9873fb380b88","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/MathValidation.js","title":"core/math/MathValidation","summary":"MathValidation.js - reusable finite, range, alignment, histogram, and probability reports.","exportCount":17}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathValidation.md","moduleTitle":"core/math/MathValidation","source":"engine/core/math/MathValidation.js","import":"/engine/core/math/MathValidation.js","sourceHash":"eee2e281591f93abbb1adeb566f03fcdf46e3fc194b770af070d9873fb380b88","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathValidation.js#0000:finiteNumberReport","exportIndex":0,"name":"finiteNumberReport","kind":"function","signature":"finiteNumberReport(value, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathValidation.md","moduleTitle":"core/math/MathValidation","source":"engine/core/math/MathValidation.js","import":"/engine/core/math/MathValidation.js","sourceHash":"eee2e281591f93abbb1adeb566f03fcdf46e3fc194b770af070d9873fb380b88","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathValidation.js#0001:finiteArrayReport","exportIndex":1,"name":"finiteArrayReport","kind":"function","signature":"finiteArrayReport(values, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathValidation.md","moduleTitle":"core/math/MathValidation","source":"engine/core/math/MathValidation.js","import":"/engine/core/math/MathValidation.js","sourceHash":"eee2e281591f93abbb1adeb566f03fcdf46e3fc194b770af070d9873fb380b88","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathValidation.js#0002:rangeValidationReport","exportIndex":2,"name":"rangeValidationReport","kind":"function","signature":"rangeValidationReport(value, min, max, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathValidation.md","moduleTitle":"core/math/MathValidation","source":"engine/core/math/MathValidation.js","import":"/engine/core/math/MathValidation.js","sourceHash":"eee2e281591f93abbb1adeb566f03fcdf46e3fc194b770af070d9873fb380b88","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathValidation.js#0003:alignmentReport","exportIndex":3,"name":"alignmentReport","kind":"function","signature":"alignmentReport(offset, alignment, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathValidation.md","moduleTitle":"core/math/MathValidation","source":"engine/core/math/MathValidation.js","import":"/engine/core/math/MathValidation.js","sourceHash":"eee2e281591f93abbb1adeb566f03fcdf46e3fc194b770af070d9873fb380b88","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathValidation.js#0004:powerOfTwoReport","exportIndex":4,"name":"powerOfTwoReport","kind":"function","signature":"powerOfTwoReport(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathValidation.md","moduleTitle":"core/math/MathValidation","source":"engine/core/math/MathValidation.js","import":"/engine/core/math/MathValidation.js","sourceHash":"eee2e281591f93abbb1adeb566f03fcdf46e3fc194b770af070d9873fb380b88","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathValidation.js#0005:histogramValidationReport","exportIndex":5,"name":"histogramValidationReport","kind":"function","signature":"histogramValidationReport(histogram, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathValidation.md","moduleTitle":"core/math/MathValidation","source":"engine/core/math/MathValidation.js","import":"/engine/core/math/MathValidation.js","sourceHash":"eee2e281591f93abbb1adeb566f03fcdf46e3fc194b770af070d9873fb380b88","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathValidation.js#0006:probabilityDistributionReport","exportIndex":6,"name":"probabilityDistributionReport","kind":"function","signature":"probabilityDistributionReport(probabilities, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathValidation.md","moduleTitle":"core/math/MathValidation","source":"engine/core/math/MathValidation.js","import":"/engine/core/math/MathValidation.js","sourceHash":"eee2e281591f93abbb1adeb566f03fcdf46e3fc194b770af070d9873fb380b88","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathValidation.js#0007:typedArrayLayoutReport","exportIndex":7,"name":"typedArrayLayoutReport","kind":"function","signature":"typedArrayLayoutReport(view, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathValidation.md","moduleTitle":"core/math/MathValidation","source":"engine/core/math/MathValidation.js","import":"/engine/core/math/MathValidation.js","sourceHash":"eee2e281591f93abbb1adeb566f03fcdf46e3fc194b770af070d9873fb380b88","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathValidation.js#0008:vectorValidationReport","exportIndex":8,"name":"vectorValidationReport","kind":"function","signature":"vectorValidationReport(values, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathValidation.md","moduleTitle":"core/math/MathValidation","source":"engine/core/math/MathValidation.js","import":"/engine/core/math/MathValidation.js","sourceHash":"eee2e281591f93abbb1adeb566f03fcdf46e3fc194b770af070d9873fb380b88","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathValidation.js#0009:unitVectorReport","exportIndex":9,"name":"unitVectorReport","kind":"function","signature":"unitVectorReport(values, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathValidation.md","moduleTitle":"core/math/MathValidation","source":"engine/core/math/MathValidation.js","import":"/engine/core/math/MathValidation.js","sourceHash":"eee2e281591f93abbb1adeb566f03fcdf46e3fc194b770af070d9873fb380b88","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathValidation.js#0010:colorValidationReport","exportIndex":10,"name":"colorValidationReport","kind":"function","signature":"colorValidationReport(color, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathValidation.md","moduleTitle":"core/math/MathValidation","source":"engine/core/math/MathValidation.js","import":"/engine/core/math/MathValidation.js","sourceHash":"eee2e281591f93abbb1adeb566f03fcdf46e3fc194b770af070d9873fb380b88","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathValidation.js#0011:schemaValidationReport","exportIndex":11,"name":"schemaValidationReport","kind":"function","signature":"schemaValidationReport(value, schema, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathValidation.md","moduleTitle":"core/math/MathValidation","source":"engine/core/math/MathValidation.js","import":"/engine/core/math/MathValidation.js","sourceHash":"eee2e281591f93abbb1adeb566f03fcdf46e3fc194b770af070d9873fb380b88","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathValidation.js#0012:assertValidationReport","exportIndex":12,"name":"assertValidationReport","kind":"function","signature":"assertValidationReport(report, message = 'validation failed')","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathValidation.md","moduleTitle":"core/math/MathValidation","source":"engine/core/math/MathValidation.js","import":"/engine/core/math/MathValidation.js","sourceHash":"eee2e281591f93abbb1adeb566f03fcdf46e3fc194b770af070d9873fb380b88","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathValidation.js#0013:assertFiniteArray","exportIndex":13,"name":"assertFiniteArray","kind":"function","signature":"assertFiniteArray(values, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathValidation.md","moduleTitle":"core/math/MathValidation","source":"engine/core/math/MathValidation.js","import":"/engine/core/math/MathValidation.js","sourceHash":"eee2e281591f93abbb1adeb566f03fcdf46e3fc194b770af070d9873fb380b88","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathValidation.js#0014:assertUnitVector","exportIndex":14,"name":"assertUnitVector","kind":"function","signature":"assertUnitVector(values, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathValidation.md","moduleTitle":"core/math/MathValidation","source":"engine/core/math/MathValidation.js","import":"/engine/core/math/MathValidation.js","sourceHash":"eee2e281591f93abbb1adeb566f03fcdf46e3fc194b770af070d9873fb380b88","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathValidation.js#0015:assertColor","exportIndex":15,"name":"assertColor","kind":"function","signature":"assertColor(color, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathValidation.md","moduleTitle":"core/math/MathValidation","source":"engine/core/math/MathValidation.js","import":"/engine/core/math/MathValidation.js","sourceHash":"eee2e281591f93abbb1adeb566f03fcdf46e3fc194b770af070d9873fb380b88","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathValidation.js#0016:assertSchema","exportIndex":16,"name":"assertSchema","kind":"function","signature":"assertSchema(value, schema, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/MathVec2.js","title":"core/math/MathVec2","summary":"","exportCount":120}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0000:vec2SmoothDamp","exportIndex":0,"name":"vec2SmoothDamp","kind":"function","signature":"vec2SmoothDamp(current, target, currentVelocity, smoothTime, dt, maxSpeed = Infinity)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0001:vec2Refract","exportIndex":1,"name":"vec2Refract","kind":"function","signature":"vec2Refract(incident, normal, eta)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0002:vec2","exportIndex":2,"name":"vec2","kind":"function","signature":"vec2(x = 0, y = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0003:vec2FromAngle","exportIndex":3,"name":"vec2FromAngle","kind":"function","signature":"vec2FromAngle(angle, len = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0004:vec2FromArray","exportIndex":4,"name":"vec2FromArray","kind":"function","signature":"vec2FromArray(arr, offset = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0005:vec2Zero","exportIndex":5,"name":"vec2Zero","kind":"function","signature":"vec2Zero()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0006:vec2One","exportIndex":6,"name":"vec2One","kind":"function","signature":"vec2One()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0007:vec2Up","exportIndex":7,"name":"vec2Up","kind":"function","signature":"vec2Up()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0008:vec2Down","exportIndex":8,"name":"vec2Down","kind":"function","signature":"vec2Down()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0009:vec2Left","exportIndex":9,"name":"vec2Left","kind":"function","signature":"vec2Left()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0010:vec2Right","exportIndex":10,"name":"vec2Right","kind":"function","signature":"vec2Right()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0011:vec2Clone","exportIndex":11,"name":"vec2Clone","kind":"function","signature":"vec2Clone(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0012:vec2Copy","exportIndex":12,"name":"vec2Copy","kind":"function","signature":"vec2Copy(out, v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0013:vec2Set","exportIndex":13,"name":"vec2Set","kind":"function","signature":"vec2Set(out, x, y)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0014:vec2Add","exportIndex":14,"name":"vec2Add","kind":"function","signature":"vec2Add(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0015:vec2Sub","exportIndex":15,"name":"vec2Sub","kind":"function","signature":"vec2Sub(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0016:vec2Mul","exportIndex":16,"name":"vec2Mul","kind":"function","signature":"vec2Mul(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0017:vec2Div","exportIndex":17,"name":"vec2Div","kind":"function","signature":"vec2Div(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0018:vec2Scale","exportIndex":18,"name":"vec2Scale","kind":"function","signature":"vec2Scale(v, s)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0019:vec2Negate","exportIndex":19,"name":"vec2Negate","kind":"function","signature":"vec2Negate(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0020:vec2Inverse","exportIndex":20,"name":"vec2Inverse","kind":"function","signature":"vec2Inverse(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0021:vec2AddInto","exportIndex":21,"name":"vec2AddInto","kind":"function","signature":"vec2AddInto(out, a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0022:vec2SubInto","exportIndex":22,"name":"vec2SubInto","kind":"function","signature":"vec2SubInto(out, a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0023:vec2ScaleInto","exportIndex":23,"name":"vec2ScaleInto","kind":"function","signature":"vec2ScaleInto(out, v, s)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0024:vec2ScaleAndAdd","exportIndex":24,"name":"vec2ScaleAndAdd","kind":"function","signature":"vec2ScaleAndAdd(out, a, b, s)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0025:vec2Dot","exportIndex":25,"name":"vec2Dot","kind":"function","signature":"vec2Dot(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0026:vec2Cross","exportIndex":26,"name":"vec2Cross","kind":"function","signature":"vec2Cross(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0027:vec2LengthSq","exportIndex":27,"name":"vec2LengthSq","kind":"function","signature":"vec2LengthSq(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0028:vec2Length","exportIndex":28,"name":"vec2Length","kind":"function","signature":"vec2Length(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0029:vec2DistanceSq","exportIndex":29,"name":"vec2DistanceSq","kind":"function","signature":"vec2DistanceSq(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0030:vec2Distance","exportIndex":30,"name":"vec2Distance","kind":"function","signature":"vec2Distance(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0031:vec2Manhattan","exportIndex":31,"name":"vec2Manhattan","kind":"function","signature":"vec2Manhattan(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0032:vec2Chebyshev","exportIndex":32,"name":"vec2Chebyshev","kind":"function","signature":"vec2Chebyshev(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0033:vec2Normalize","exportIndex":33,"name":"vec2Normalize","kind":"function","signature":"vec2Normalize(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0034:vec2NormalizeInto","exportIndex":34,"name":"vec2NormalizeInto","kind":"function","signature":"vec2NormalizeInto(out, v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0035:vec2SetLength","exportIndex":35,"name":"vec2SetLength","kind":"function","signature":"vec2SetLength(v, len)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0036:vec2ClampLength","exportIndex":36,"name":"vec2ClampLength","kind":"function","signature":"vec2ClampLength(v, min, max)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0037:vec2Limit","exportIndex":37,"name":"vec2Limit","kind":"function","signature":"vec2Limit(v, maxLen)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0038:vec2Lerp","exportIndex":38,"name":"vec2Lerp","kind":"function","signature":"vec2Lerp(a, b, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0039:vec2SmoothStep","exportIndex":39,"name":"vec2SmoothStep","kind":"function","signature":"vec2SmoothStep(a, b, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0040:vec2Bezier2","exportIndex":40,"name":"vec2Bezier2","kind":"function","signature":"vec2Bezier2(p0, p1, p2, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0041:vec2Bezier3","exportIndex":41,"name":"vec2Bezier3","kind":"function","signature":"vec2Bezier3(p0, p1, p2, p3, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0042:vec2Min","exportIndex":42,"name":"vec2Min","kind":"function","signature":"vec2Min(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0043:vec2Max","exportIndex":43,"name":"vec2Max","kind":"function","signature":"vec2Max(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0044:vec2Clamp","exportIndex":44,"name":"vec2Clamp","kind":"function","signature":"vec2Clamp(v, min, max)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0045:vec2ClampScalar","exportIndex":45,"name":"vec2ClampScalar","kind":"function","signature":"vec2ClampScalar(v, min, max)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0046:vec2Floor","exportIndex":46,"name":"vec2Floor","kind":"function","signature":"vec2Floor(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0047:vec2Ceil","exportIndex":47,"name":"vec2Ceil","kind":"function","signature":"vec2Ceil(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0048:vec2Round","exportIndex":48,"name":"vec2Round","kind":"function","signature":"vec2Round(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0049:vec2Trunc","exportIndex":49,"name":"vec2Trunc","kind":"function","signature":"vec2Trunc(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0050:vec2Fract","exportIndex":50,"name":"vec2Fract","kind":"function","signature":"vec2Fract(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0051:vec2Abs","exportIndex":51,"name":"vec2Abs","kind":"function","signature":"vec2Abs(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0052:vec2Sign","exportIndex":52,"name":"vec2Sign","kind":"function","signature":"vec2Sign(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0053:vec2Snap","exportIndex":53,"name":"vec2Snap","kind":"function","signature":"vec2Snap(v, step)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0054:vec2SnapV","exportIndex":54,"name":"vec2SnapV","kind":"function","signature":"vec2SnapV(v, step)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0055:vec2Angle","exportIndex":55,"name":"vec2Angle","kind":"function","signature":"vec2Angle(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0056:vec2AngleBetween","exportIndex":56,"name":"vec2AngleBetween","kind":"function","signature":"vec2AngleBetween(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0057:vec2AngleTo","exportIndex":57,"name":"vec2AngleTo","kind":"function","signature":"vec2AngleTo(from, to)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0058:vec2Rotate","exportIndex":58,"name":"vec2Rotate","kind":"function","signature":"vec2Rotate(v, angle)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0059:vec2RotateAround","exportIndex":59,"name":"vec2RotateAround","kind":"function","signature":"vec2RotateAround(v, center, angle)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0060:vec2Perpendicular","exportIndex":60,"name":"vec2Perpendicular","kind":"function","signature":"vec2Perpendicular(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0061:vec2PerpendicularCW","exportIndex":61,"name":"vec2PerpendicularCW","kind":"function","signature":"vec2PerpendicularCW(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0062:vec2Reflect","exportIndex":62,"name":"vec2Reflect","kind":"function","signature":"vec2Reflect(v, n)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0063:vec2Project","exportIndex":63,"name":"vec2Project","kind":"function","signature":"vec2Project(v, onto)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0064:vec2Reject","exportIndex":64,"name":"vec2Reject","kind":"function","signature":"vec2Reject(v, from)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0065:vec2MoveToward","exportIndex":65,"name":"vec2MoveToward","kind":"function","signature":"vec2MoveToward(cur, tgt, maxDelta)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0066:vec2Equals","exportIndex":66,"name":"vec2Equals","kind":"function","signature":"vec2Equals(a, b, eps = EPSILON)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0067:vec2IsZero","exportIndex":67,"name":"vec2IsZero","kind":"function","signature":"vec2IsZero(v, eps = EPSILON)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0068:vec2IsNormalized","exportIndex":68,"name":"vec2IsNormalized","kind":"function","signature":"vec2IsNormalized(v, eps = EPSILON)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0069:vec2IsFinite","exportIndex":69,"name":"vec2IsFinite","kind":"function","signature":"vec2IsFinite(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0070:vec2Random","exportIndex":70,"name":"vec2Random","kind":"function","signature":"vec2Random(scale = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0071:vec2RandomInCircle","exportIndex":71,"name":"vec2RandomInCircle","kind":"function","signature":"vec2RandomInCircle(r = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0072:vec2RandomInRect","exportIndex":72,"name":"vec2RandomInRect","kind":"function","signature":"vec2RandomInRect(w, h)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0073:vec2RandomInRectCentered","exportIndex":73,"name":"vec2RandomInRectCentered","kind":"function","signature":"vec2RandomInRectCentered(w, h)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0074:vec2ComplexMul","exportIndex":74,"name":"vec2ComplexMul","kind":"function","signature":"vec2ComplexMul(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0075:vec2ComplexDiv","exportIndex":75,"name":"vec2ComplexDiv","kind":"function","signature":"vec2ComplexDiv(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0076:vec2ComplexPow","exportIndex":76,"name":"vec2ComplexPow","kind":"function","signature":"vec2ComplexPow(v, n)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0077:vec2ComplexSqrt","exportIndex":77,"name":"vec2ComplexSqrt","kind":"function","signature":"vec2ComplexSqrt(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0078:vec2TransformMat2","exportIndex":78,"name":"vec2TransformMat2","kind":"function","signature":"vec2TransformMat2(v, m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0079:vec2TransformMat3","exportIndex":79,"name":"vec2TransformMat3","kind":"function","signature":"vec2TransformMat3(v, m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0080:vec2ToString","exportIndex":80,"name":"vec2ToString","kind":"function","signature":"vec2ToString(v, precision = 3)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0081:vec2ToArray","exportIndex":81,"name":"vec2ToArray","kind":"function","signature":"vec2ToArray(v, out = [], offset = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0082:vec2GetComponent","exportIndex":82,"name":"vec2GetComponent","kind":"function","signature":"vec2GetComponent(v, index)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0083:vec2SetComponent","exportIndex":83,"name":"vec2SetComponent","kind":"function","signature":"vec2SetComponent(v, index, value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0084:vec2FromScalar","exportIndex":84,"name":"vec2FromScalar","kind":"function","signature":"vec2FromScalar(s)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0085:vec2Infinity","exportIndex":85,"name":"vec2Infinity","kind":"function","signature":"vec2Infinity()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0086:vec2NegInfinity","exportIndex":86,"name":"vec2NegInfinity","kind":"function","signature":"vec2NegInfinity()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0087:vec2AddScalar","exportIndex":87,"name":"vec2AddScalar","kind":"function","signature":"vec2AddScalar(v, s)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0088:vec2SubScalar","exportIndex":88,"name":"vec2SubScalar","kind":"function","signature":"vec2SubScalar(v, s)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0089:vec2MulInto","exportIndex":89,"name":"vec2MulInto","kind":"function","signature":"vec2MulInto(out, a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0090:vec2NegateInto","exportIndex":90,"name":"vec2NegateInto","kind":"function","signature":"vec2NegateInto(out, v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0091:vec2ManhattanLength","exportIndex":91,"name":"vec2ManhattanLength","kind":"function","signature":"vec2ManhattanLength(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0092:vec2SafeNormalize","exportIndex":92,"name":"vec2SafeNormalize","kind":"function","signature":"vec2SafeNormalize(v, fallback = [0, 1])","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0093:vec2LerpInto","exportIndex":93,"name":"vec2LerpInto","kind":"function","signature":"vec2LerpInto(out, a, b, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0094:vec2LerpUnclamped","exportIndex":94,"name":"vec2LerpUnclamped","kind":"function","signature":"vec2LerpUnclamped(a, b, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0095:vec2LerpV","exportIndex":95,"name":"vec2LerpV","kind":"function","signature":"vec2LerpV(a, b, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0096:vec2Hermite","exportIndex":96,"name":"vec2Hermite","kind":"function","signature":"vec2Hermite(p0, t0, p1, t1, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0097:vec2CatmullRom","exportIndex":97,"name":"vec2CatmullRom","kind":"function","signature":"vec2CatmullRom(p0, p1, p2, p3, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0098:vec2BezierDerivative","exportIndex":98,"name":"vec2BezierDerivative","kind":"function","signature":"vec2BezierDerivative(p0, p1, p2, p3, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0099:vec2DirectionTo","exportIndex":99,"name":"vec2DirectionTo","kind":"function","signature":"vec2DirectionTo(from, to)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0100:vec2Midpoint","exportIndex":100,"name":"vec2Midpoint","kind":"function","signature":"vec2Midpoint(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0101:vec2Slide","exportIndex":101,"name":"vec2Slide","kind":"function","signature":"vec2Slide(v, n)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0102:vec2Bounce","exportIndex":102,"name":"vec2Bounce","kind":"function","signature":"vec2Bounce(v, n)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0103:vec2FaceForward","exportIndex":103,"name":"vec2FaceForward","kind":"function","signature":"vec2FaceForward(v, incident, reference)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0104:vec2Saturate","exportIndex":104,"name":"vec2Saturate","kind":"function","signature":"vec2Saturate(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0105:vec2InverseSqrt","exportIndex":105,"name":"vec2InverseSqrt","kind":"function","signature":"vec2InverseSqrt(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0106:vec2FMA","exportIndex":106,"name":"vec2FMA","kind":"function","signature":"vec2FMA(a, b, c)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0107:vec2Step","exportIndex":107,"name":"vec2Step","kind":"function","signature":"vec2Step(edge, v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0108:vec2StepScalar","exportIndex":108,"name":"vec2StepScalar","kind":"function","signature":"vec2StepScalar(edge, v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0109:vec2SmoothStepV","exportIndex":109,"name":"vec2SmoothStepV","kind":"function","signature":"vec2SmoothStepV(low, high, v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0110:vec2PosMod","exportIndex":110,"name":"vec2PosMod","kind":"function","signature":"vec2PosMod(v, m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0111:vec2PosModV","exportIndex":111,"name":"vec2PosModV","kind":"function","signature":"vec2PosModV(v, m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0112:vec2MinScalar","exportIndex":112,"name":"vec2MinScalar","kind":"function","signature":"vec2MinScalar(v, s)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0113:vec2MaxScalar","exportIndex":113,"name":"vec2MaxScalar","kind":"function","signature":"vec2MaxScalar(v, s)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0114:vec2ExactEquals","exportIndex":114,"name":"vec2ExactEquals","kind":"function","signature":"vec2ExactEquals(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0115:vec2IsNaN","exportIndex":115,"name":"vec2IsNaN","kind":"function","signature":"vec2IsNaN(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0116:vec2MinComponent","exportIndex":116,"name":"vec2MinComponent","kind":"function","signature":"vec2MinComponent(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0117:vec2MaxComponent","exportIndex":117,"name":"vec2MaxComponent","kind":"function","signature":"vec2MaxComponent(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0118:vec2Sum","exportIndex":118,"name":"vec2Sum","kind":"function","signature":"vec2Sum(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec2.md","moduleTitle":"core/math/MathVec2","source":"engine/core/math/MathVec2.js","import":"/engine/core/math/MathVec2.js","sourceHash":"7cec804f62adb4fce2436db6eb28d65384d1d95fb7f4c692e520fe8a89761e02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec2.js#0119:vec2Average","exportIndex":119,"name":"vec2Average","kind":"function","signature":"vec2Average(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/MathVec3.js","title":"core/math/MathVec3","summary":"MathVec3.js - 3D Vector operations Depends on: MathConstants.js, MathScalar.js, MathRandom.js","exportCount":142}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0000:vec3Slerp","exportIndex":0,"name":"vec3Slerp","kind":"function","signature":"vec3Slerp(a, b, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0001:vec3SignedAngle","exportIndex":1,"name":"vec3SignedAngle","kind":"function","signature":"vec3SignedAngle(from, to, axis)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0002:vec3RotateX","exportIndex":2,"name":"vec3RotateX","kind":"function","signature":"vec3RotateX(v, origin, angle)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0003:vec3RotateY","exportIndex":3,"name":"vec3RotateY","kind":"function","signature":"vec3RotateY(v, origin, angle)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0004:vec3RotateZ","exportIndex":4,"name":"vec3RotateZ","kind":"function","signature":"vec3RotateZ(v, origin, angle)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0005:vec3RotateAxis","exportIndex":5,"name":"vec3RotateAxis","kind":"function","signature":"vec3RotateAxis(v, axis, angle)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0006:vec3RandomDirection","exportIndex":6,"name":"vec3RandomDirection","kind":"function","signature":"vec3RandomDirection(scale = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0007:vec3RandomInSphere","exportIndex":7,"name":"vec3RandomInSphere","kind":"function","signature":"vec3RandomInSphere(radius = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0008:vec3RandomOnSphere","exportIndex":8,"name":"vec3RandomOnSphere","kind":"function","signature":"vec3RandomOnSphere(radius = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0009:vec3RandomInHemisphere","exportIndex":9,"name":"vec3RandomInHemisphere","kind":"function","signature":"vec3RandomInHemisphere(normal)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0010:vec3FromSpherical","exportIndex":10,"name":"vec3FromSpherical","kind":"function","signature":"vec3FromSpherical(radius, phi, theta)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0011:vec3ToSpherical","exportIndex":11,"name":"vec3ToSpherical","kind":"function","signature":"vec3ToSpherical(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0012:vec3FromCylindrical","exportIndex":12,"name":"vec3FromCylindrical","kind":"function","signature":"vec3FromCylindrical(radius, theta, y)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0013:vec3ToCylindrical","exportIndex":13,"name":"vec3ToCylindrical","kind":"function","signature":"vec3ToCylindrical(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0014:vec3TransformMat4","exportIndex":14,"name":"vec3TransformMat4","kind":"function","signature":"vec3TransformMat4(v, m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0015:vec3TransformQuat","exportIndex":15,"name":"vec3TransformQuat","kind":"function","signature":"vec3TransformQuat(v, q)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0016:vec3OrthonormalBasis","exportIndex":16,"name":"vec3OrthonormalBasis","kind":"function","signature":"vec3OrthonormalBasis(n)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0017:vec3Barycentric","exportIndex":17,"name":"vec3Barycentric","kind":"function","signature":"vec3Barycentric(a, b, c, u, v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0018:vec3RotateTowards","exportIndex":18,"name":"vec3RotateTowards","kind":"function","signature":"vec3RotateTowards(current, target, maxRadiansDelta, maxMagnitudeDelta)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0019:vec3SmoothDamp","exportIndex":19,"name":"vec3SmoothDamp","kind":"function","signature":"vec3SmoothDamp(current, target, currentVelocity, smoothTime, dt, maxSpeed = Infinity)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0020:vec3OrthoNormalize","exportIndex":20,"name":"vec3OrthoNormalize","kind":"function","signature":"vec3OrthoNormalize(normal, tangent)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0021:vec3Refract","exportIndex":21,"name":"vec3Refract","kind":"function","signature":"vec3Refract(incident, normal, eta)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0022:vec3OctEncode","exportIndex":22,"name":"vec3OctEncode","kind":"function","signature":"vec3OctEncode(n)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0023:vec3OctDecode","exportIndex":23,"name":"vec3OctDecode","kind":"function","signature":"vec3OctDecode(uv)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0024:vec3Outer","exportIndex":24,"name":"vec3Outer","kind":"function","signature":"vec3Outer(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0025:vec3OrthonormalBasisDuff","exportIndex":25,"name":"vec3OrthonormalBasisDuff","kind":"function","signature":"vec3OrthonormalBasisDuff(n)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0026:vec3","exportIndex":26,"name":"vec3","kind":"function","signature":"vec3(x = 0, y = 0, z = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0027:vec3FromArray","exportIndex":27,"name":"vec3FromArray","kind":"function","signature":"vec3FromArray(arr, offset = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0028:vec3FromVec2","exportIndex":28,"name":"vec3FromVec2","kind":"function","signature":"vec3FromVec2(v, z = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0029:vec3FromScalar","exportIndex":29,"name":"vec3FromScalar","kind":"function","signature":"vec3FromScalar(s)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0030:vec3Zero","exportIndex":30,"name":"vec3Zero","kind":"function","signature":"vec3Zero()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0031:vec3One","exportIndex":31,"name":"vec3One","kind":"function","signature":"vec3One()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0032:vec3Up","exportIndex":32,"name":"vec3Up","kind":"function","signature":"vec3Up()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0033:vec3Down","exportIndex":33,"name":"vec3Down","kind":"function","signature":"vec3Down()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0034:vec3Left","exportIndex":34,"name":"vec3Left","kind":"function","signature":"vec3Left()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0035:vec3Right","exportIndex":35,"name":"vec3Right","kind":"function","signature":"vec3Right()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0036:vec3Forward","exportIndex":36,"name":"vec3Forward","kind":"function","signature":"vec3Forward()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0037:vec3Back","exportIndex":37,"name":"vec3Back","kind":"function","signature":"vec3Back()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0038:vec3Clone","exportIndex":38,"name":"vec3Clone","kind":"function","signature":"vec3Clone(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0039:vec3Copy","exportIndex":39,"name":"vec3Copy","kind":"function","signature":"vec3Copy(out, v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0040:vec3Set","exportIndex":40,"name":"vec3Set","kind":"function","signature":"vec3Set(out, x, y, z)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0041:vec3Add","exportIndex":41,"name":"vec3Add","kind":"function","signature":"vec3Add(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0042:vec3Sub","exportIndex":42,"name":"vec3Sub","kind":"function","signature":"vec3Sub(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0043:vec3Mul","exportIndex":43,"name":"vec3Mul","kind":"function","signature":"vec3Mul(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0044:vec3Div","exportIndex":44,"name":"vec3Div","kind":"function","signature":"vec3Div(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0045:vec3Scale","exportIndex":45,"name":"vec3Scale","kind":"function","signature":"vec3Scale(v, s)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0046:vec3Negate","exportIndex":46,"name":"vec3Negate","kind":"function","signature":"vec3Negate(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0047:vec3Inverse","exportIndex":47,"name":"vec3Inverse","kind":"function","signature":"vec3Inverse(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0048:vec3AddScalar","exportIndex":48,"name":"vec3AddScalar","kind":"function","signature":"vec3AddScalar(v, s)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0049:vec3SubScalar","exportIndex":49,"name":"vec3SubScalar","kind":"function","signature":"vec3SubScalar(v, s)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0050:vec3AddInto","exportIndex":50,"name":"vec3AddInto","kind":"function","signature":"vec3AddInto(out, a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0051:vec3SubInto","exportIndex":51,"name":"vec3SubInto","kind":"function","signature":"vec3SubInto(out, a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0052:vec3MulInto","exportIndex":52,"name":"vec3MulInto","kind":"function","signature":"vec3MulInto(out, a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0053:vec3ScaleInto","exportIndex":53,"name":"vec3ScaleInto","kind":"function","signature":"vec3ScaleInto(out, v, s)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0054:vec3ScaleAndAdd","exportIndex":54,"name":"vec3ScaleAndAdd","kind":"function","signature":"vec3ScaleAndAdd(out, a, b, s)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0055:vec3NegateInto","exportIndex":55,"name":"vec3NegateInto","kind":"function","signature":"vec3NegateInto(out, v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0056:vec3CrossInto","exportIndex":56,"name":"vec3CrossInto","kind":"function","signature":"vec3CrossInto(out, a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0057:vec3Dot","exportIndex":57,"name":"vec3Dot","kind":"function","signature":"vec3Dot(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0058:vec3Cross","exportIndex":58,"name":"vec3Cross","kind":"function","signature":"vec3Cross(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0059:vec3Triple","exportIndex":59,"name":"vec3Triple","kind":"function","signature":"vec3Triple(a, b, c)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0060:vec3LengthSq","exportIndex":60,"name":"vec3LengthSq","kind":"function","signature":"vec3LengthSq(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0061:vec3Length","exportIndex":61,"name":"vec3Length","kind":"function","signature":"vec3Length(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0062:vec3DistanceSq","exportIndex":62,"name":"vec3DistanceSq","kind":"function","signature":"vec3DistanceSq(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0063:vec3Distance","exportIndex":63,"name":"vec3Distance","kind":"function","signature":"vec3Distance(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0064:vec3Manhattan","exportIndex":64,"name":"vec3Manhattan","kind":"function","signature":"vec3Manhattan(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0065:vec3Chebyshev","exportIndex":65,"name":"vec3Chebyshev","kind":"function","signature":"vec3Chebyshev(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0066:vec3ManhattanLength","exportIndex":66,"name":"vec3ManhattanLength","kind":"function","signature":"vec3ManhattanLength(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0067:vec3Normalize","exportIndex":67,"name":"vec3Normalize","kind":"function","signature":"vec3Normalize(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0068:vec3NormalizeInto","exportIndex":68,"name":"vec3NormalizeInto","kind":"function","signature":"vec3NormalizeInto(out, v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0069:vec3SetLength","exportIndex":69,"name":"vec3SetLength","kind":"function","signature":"vec3SetLength(v, len)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0070:vec3ClampLength","exportIndex":70,"name":"vec3ClampLength","kind":"function","signature":"vec3ClampLength(v, min, max)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0071:vec3Limit","exportIndex":71,"name":"vec3Limit","kind":"function","signature":"vec3Limit(v, maxLen)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0072:vec3SafeNormalize","exportIndex":72,"name":"vec3SafeNormalize","kind":"function","signature":"vec3SafeNormalize(v, fallback = [0, 1, 0])","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0073:vec3Lerp","exportIndex":73,"name":"vec3Lerp","kind":"function","signature":"vec3Lerp(a, b, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0074:vec3LerpInto","exportIndex":74,"name":"vec3LerpInto","kind":"function","signature":"vec3LerpInto(out, a, b, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0075:vec3SmoothStep","exportIndex":75,"name":"vec3SmoothStep","kind":"function","signature":"vec3SmoothStep(a, b, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0076:vec3Hermite","exportIndex":76,"name":"vec3Hermite","kind":"function","signature":"vec3Hermite(p0, t0, p1, t1, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0077:vec3Bezier2","exportIndex":77,"name":"vec3Bezier2","kind":"function","signature":"vec3Bezier2(p0, p1, p2, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0078:vec3Bezier3","exportIndex":78,"name":"vec3Bezier3","kind":"function","signature":"vec3Bezier3(p0, p1, p2, p3, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0079:vec3CatmullRom","exportIndex":79,"name":"vec3CatmullRom","kind":"function","signature":"vec3CatmullRom(p0, p1, p2, p3, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0080:vec3Min","exportIndex":80,"name":"vec3Min","kind":"function","signature":"vec3Min(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0081:vec3Max","exportIndex":81,"name":"vec3Max","kind":"function","signature":"vec3Max(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0082:vec3Clamp","exportIndex":82,"name":"vec3Clamp","kind":"function","signature":"vec3Clamp(v, min, max)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0083:vec3ClampScalar","exportIndex":83,"name":"vec3ClampScalar","kind":"function","signature":"vec3ClampScalar(v, min, max)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0084:vec3Floor","exportIndex":84,"name":"vec3Floor","kind":"function","signature":"vec3Floor(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0085:vec3Ceil","exportIndex":85,"name":"vec3Ceil","kind":"function","signature":"vec3Ceil(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0086:vec3Round","exportIndex":86,"name":"vec3Round","kind":"function","signature":"vec3Round(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0087:vec3Trunc","exportIndex":87,"name":"vec3Trunc","kind":"function","signature":"vec3Trunc(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0088:vec3Fract","exportIndex":88,"name":"vec3Fract","kind":"function","signature":"vec3Fract(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0089:vec3Abs","exportIndex":89,"name":"vec3Abs","kind":"function","signature":"vec3Abs(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0090:vec3Sign","exportIndex":90,"name":"vec3Sign","kind":"function","signature":"vec3Sign(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0091:vec3Snap","exportIndex":91,"name":"vec3Snap","kind":"function","signature":"vec3Snap(v, step)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0092:vec3AngleBetween","exportIndex":92,"name":"vec3AngleBetween","kind":"function","signature":"vec3AngleBetween(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0093:vec3Reflect","exportIndex":93,"name":"vec3Reflect","kind":"function","signature":"vec3Reflect(v, n)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0094:vec3Project","exportIndex":94,"name":"vec3Project","kind":"function","signature":"vec3Project(v, onto)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0095:vec3Reject","exportIndex":95,"name":"vec3Reject","kind":"function","signature":"vec3Reject(v, from)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0096:vec3ProjectOnPlane","exportIndex":96,"name":"vec3ProjectOnPlane","kind":"function","signature":"vec3ProjectOnPlane(v, planeNormal)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0097:vec3Slide","exportIndex":97,"name":"vec3Slide","kind":"function","signature":"vec3Slide(v, normal)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0098:vec3MoveToward","exportIndex":98,"name":"vec3MoveToward","kind":"function","signature":"vec3MoveToward(cur, tgt, maxDelta)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0099:vec3Equals","exportIndex":99,"name":"vec3Equals","kind":"function","signature":"vec3Equals(a, b, eps = EPSILON)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0100:vec3ExactEquals","exportIndex":100,"name":"vec3ExactEquals","kind":"function","signature":"vec3ExactEquals(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0101:vec3IsZero","exportIndex":101,"name":"vec3IsZero","kind":"function","signature":"vec3IsZero(v, eps = EPSILON)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0102:vec3IsNormalized","exportIndex":102,"name":"vec3IsNormalized","kind":"function","signature":"vec3IsNormalized(v, eps = EPSILON)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0103:vec3IsFinite","exportIndex":103,"name":"vec3IsFinite","kind":"function","signature":"vec3IsFinite(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0104:vec3IsNaN","exportIndex":104,"name":"vec3IsNaN","kind":"function","signature":"vec3IsNaN(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0105:vec3Random","exportIndex":105,"name":"vec3Random","kind":"function","signature":"vec3Random()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0106:vec3RandomInBox","exportIndex":106,"name":"vec3RandomInBox","kind":"function","signature":"vec3RandomInBox(w, h, d)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0107:vec3RandomInBoxCentered","exportIndex":107,"name":"vec3RandomInBoxCentered","kind":"function","signature":"vec3RandomInBoxCentered(w, h, d)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0108:vec3TransformMat3","exportIndex":108,"name":"vec3TransformMat3","kind":"function","signature":"vec3TransformMat3(v, m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0109:vec3TransformDirection","exportIndex":109,"name":"vec3TransformDirection","kind":"function","signature":"vec3TransformDirection(v, m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0110:vec3TransformNormal","exportIndex":110,"name":"vec3TransformNormal","kind":"function","signature":"vec3TransformNormal(v, normalMat)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0111:vec3MinComponent","exportIndex":111,"name":"vec3MinComponent","kind":"function","signature":"vec3MinComponent(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0112:vec3MaxComponent","exportIndex":112,"name":"vec3MaxComponent","kind":"function","signature":"vec3MaxComponent(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0113:vec3Sum","exportIndex":113,"name":"vec3Sum","kind":"function","signature":"vec3Sum(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0114:vec3Average","exportIndex":114,"name":"vec3Average","kind":"function","signature":"vec3Average(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0115:vec3DominantAxis","exportIndex":115,"name":"vec3DominantAxis","kind":"function","signature":"vec3DominantAxis(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0116:vec3ToString","exportIndex":116,"name":"vec3ToString","kind":"function","signature":"vec3ToString(v, precision = 3)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0117:vec3ToArray","exportIndex":117,"name":"vec3ToArray","kind":"function","signature":"vec3ToArray(v, out = [], offset = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0118:vec3GetComponent","exportIndex":118,"name":"vec3GetComponent","kind":"function","signature":"vec3GetComponent(v, index)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0119:vec3SetComponent","exportIndex":119,"name":"vec3SetComponent","kind":"function","signature":"vec3SetComponent(v, index, value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0120:vec3ToVec4Point","exportIndex":120,"name":"vec3ToVec4Point","kind":"function","signature":"vec3ToVec4Point(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0121:vec3ToVec4Direction","exportIndex":121,"name":"vec3ToVec4Direction","kind":"function","signature":"vec3ToVec4Direction(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0122:vec3DirectionTo","exportIndex":122,"name":"vec3DirectionTo","kind":"function","signature":"vec3DirectionTo(from, to)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0123:vec3Midpoint","exportIndex":123,"name":"vec3Midpoint","kind":"function","signature":"vec3Midpoint(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0124:vec3Bounce","exportIndex":124,"name":"vec3Bounce","kind":"function","signature":"vec3Bounce(v, n)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0125:vec3LerpUnclamped","exportIndex":125,"name":"vec3LerpUnclamped","kind":"function","signature":"vec3LerpUnclamped(a, b, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0126:vec3LerpV","exportIndex":126,"name":"vec3LerpV","kind":"function","signature":"vec3LerpV(a, b, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0127:vec3FaceForward","exportIndex":127,"name":"vec3FaceForward","kind":"function","signature":"vec3FaceForward(v, incident, reference)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0128:vec3Saturate","exportIndex":128,"name":"vec3Saturate","kind":"function","signature":"vec3Saturate(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0129:vec3InverseSqrt","exportIndex":129,"name":"vec3InverseSqrt","kind":"function","signature":"vec3InverseSqrt(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0130:vec3FMA","exportIndex":130,"name":"vec3FMA","kind":"function","signature":"vec3FMA(a, b, c)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0131:vec3Step","exportIndex":131,"name":"vec3Step","kind":"function","signature":"vec3Step(edge, v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0132:vec3StepScalar","exportIndex":132,"name":"vec3StepScalar","kind":"function","signature":"vec3StepScalar(edge, v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0133:vec3SmoothStepV","exportIndex":133,"name":"vec3SmoothStepV","kind":"function","signature":"vec3SmoothStepV(low, high, v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0134:vec3PosMod","exportIndex":134,"name":"vec3PosMod","kind":"function","signature":"vec3PosMod(v, m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0135:vec3PosModV","exportIndex":135,"name":"vec3PosModV","kind":"function","signature":"vec3PosModV(v, m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0136:vec3MinScalar","exportIndex":136,"name":"vec3MinScalar","kind":"function","signature":"vec3MinScalar(v, s)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0137:vec3MaxScalar","exportIndex":137,"name":"vec3MaxScalar","kind":"function","signature":"vec3MaxScalar(v, s)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0138:vec3SnapV","exportIndex":138,"name":"vec3SnapV","kind":"function","signature":"vec3SnapV(v, step)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0139:vec3BezierDerivative","exportIndex":139,"name":"vec3BezierDerivative","kind":"function","signature":"vec3BezierDerivative(p0, p1, p2, p3, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0140:vec3Infinity","exportIndex":140,"name":"vec3Infinity","kind":"function","signature":"vec3Infinity()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec3.md","moduleTitle":"core/math/MathVec3","source":"engine/core/math/MathVec3.js","import":"/engine/core/math/MathVec3.js","sourceHash":"4b2cfa496909f668ecd8975de3f513c01b2a2abddf1624f90a8f45e05111bde2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec3.js#0141:vec3NegInfinity","exportIndex":141,"name":"vec3NegInfinity","kind":"function","signature":"vec3NegInfinity()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/MathVec4.js","title":"core/math/MathVec4","summary":"","exportCount":100}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0000:vec4","exportIndex":0,"name":"vec4","kind":"function","signature":"vec4(x = 0, y = 0, z = 0, w = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0001:vec4FromVec3","exportIndex":1,"name":"vec4FromVec3","kind":"function","signature":"vec4FromVec3(v, w = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0002:vec4FromVec2","exportIndex":2,"name":"vec4FromVec2","kind":"function","signature":"vec4FromVec2(v, z = 0, w = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0003:vec4FromArray","exportIndex":3,"name":"vec4FromArray","kind":"function","signature":"vec4FromArray(arr, offset = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0004:vec4Zero","exportIndex":4,"name":"vec4Zero","kind":"function","signature":"vec4Zero()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0005:vec4One","exportIndex":5,"name":"vec4One","kind":"function","signature":"vec4One()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0006:vec4Clone","exportIndex":6,"name":"vec4Clone","kind":"function","signature":"vec4Clone(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0007:vec4Copy","exportIndex":7,"name":"vec4Copy","kind":"function","signature":"vec4Copy(out, v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0008:vec4Set","exportIndex":8,"name":"vec4Set","kind":"function","signature":"vec4Set(out, x, y, z, w)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0009:vec4ToVec3","exportIndex":9,"name":"vec4ToVec3","kind":"function","signature":"vec4ToVec3(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0010:vec4ToVec2","exportIndex":10,"name":"vec4ToVec2","kind":"function","signature":"vec4ToVec2(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0011:vec4XYZ","exportIndex":11,"name":"vec4XYZ","kind":"function","signature":"vec4XYZ(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0012:vec4XY","exportIndex":12,"name":"vec4XY","kind":"function","signature":"vec4XY(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0013:vec4Add","exportIndex":13,"name":"vec4Add","kind":"function","signature":"vec4Add(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0014:vec4Sub","exportIndex":14,"name":"vec4Sub","kind":"function","signature":"vec4Sub(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0015:vec4Mul","exportIndex":15,"name":"vec4Mul","kind":"function","signature":"vec4Mul(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0016:vec4Div","exportIndex":16,"name":"vec4Div","kind":"function","signature":"vec4Div(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0017:vec4Scale","exportIndex":17,"name":"vec4Scale","kind":"function","signature":"vec4Scale(v, s)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0018:vec4Negate","exportIndex":18,"name":"vec4Negate","kind":"function","signature":"vec4Negate(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0019:vec4Inverse","exportIndex":19,"name":"vec4Inverse","kind":"function","signature":"vec4Inverse(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0020:vec4AddInto","exportIndex":20,"name":"vec4AddInto","kind":"function","signature":"vec4AddInto(out, a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0021:vec4SubInto","exportIndex":21,"name":"vec4SubInto","kind":"function","signature":"vec4SubInto(out, a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0022:vec4ScaleInto","exportIndex":22,"name":"vec4ScaleInto","kind":"function","signature":"vec4ScaleInto(out, v, s)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0023:vec4ScaleAndAdd","exportIndex":23,"name":"vec4ScaleAndAdd","kind":"function","signature":"vec4ScaleAndAdd(out, a, b, s)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0024:vec4Dot","exportIndex":24,"name":"vec4Dot","kind":"function","signature":"vec4Dot(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0025:vec4LengthSq","exportIndex":25,"name":"vec4LengthSq","kind":"function","signature":"vec4LengthSq(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0026:vec4Length","exportIndex":26,"name":"vec4Length","kind":"function","signature":"vec4Length(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0027:vec4DistanceSq","exportIndex":27,"name":"vec4DistanceSq","kind":"function","signature":"vec4DistanceSq(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0028:vec4Distance","exportIndex":28,"name":"vec4Distance","kind":"function","signature":"vec4Distance(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0029:vec4Normalize","exportIndex":29,"name":"vec4Normalize","kind":"function","signature":"vec4Normalize(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0030:vec4NormalizeInto","exportIndex":30,"name":"vec4NormalizeInto","kind":"function","signature":"vec4NormalizeInto(out, v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0031:vec4Lerp","exportIndex":31,"name":"vec4Lerp","kind":"function","signature":"vec4Lerp(a, b, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0032:vec4Min","exportIndex":32,"name":"vec4Min","kind":"function","signature":"vec4Min(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0033:vec4Max","exportIndex":33,"name":"vec4Max","kind":"function","signature":"vec4Max(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0034:vec4Clamp","exportIndex":34,"name":"vec4Clamp","kind":"function","signature":"vec4Clamp(v, min, max)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0035:vec4ClampScalar","exportIndex":35,"name":"vec4ClampScalar","kind":"function","signature":"vec4ClampScalar(v, min, max)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0036:vec4Floor","exportIndex":36,"name":"vec4Floor","kind":"function","signature":"vec4Floor(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0037:vec4Ceil","exportIndex":37,"name":"vec4Ceil","kind":"function","signature":"vec4Ceil(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0038:vec4Round","exportIndex":38,"name":"vec4Round","kind":"function","signature":"vec4Round(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0039:vec4Abs","exportIndex":39,"name":"vec4Abs","kind":"function","signature":"vec4Abs(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0040:vec4PerspectiveDivide","exportIndex":40,"name":"vec4PerspectiveDivide","kind":"function","signature":"vec4PerspectiveDivide(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0041:vec4TransformMat4","exportIndex":41,"name":"vec4TransformMat4","kind":"function","signature":"vec4TransformMat4(v, m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0042:vec4TransformMat4Into","exportIndex":42,"name":"vec4TransformMat4Into","kind":"function","signature":"vec4TransformMat4Into(out, v, m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0043:vec4Equals","exportIndex":43,"name":"vec4Equals","kind":"function","signature":"vec4Equals(a, b, eps = EPSILON)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0044:vec4IsZero","exportIndex":44,"name":"vec4IsZero","kind":"function","signature":"vec4IsZero(v, eps = EPSILON)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0045:vec4IsFinite","exportIndex":45,"name":"vec4IsFinite","kind":"function","signature":"vec4IsFinite(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0046:vec4FromRGBA","exportIndex":46,"name":"vec4FromRGBA","kind":"function","signature":"vec4FromRGBA(r, g, b, a = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0047:vec4ToRGBA","exportIndex":47,"name":"vec4ToRGBA","kind":"function","signature":"vec4ToRGBA(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0048:vec4FromHex","exportIndex":48,"name":"vec4FromHex","kind":"function","signature":"vec4FromHex(hex)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0049:vec4ToHex","exportIndex":49,"name":"vec4ToHex","kind":"function","signature":"vec4ToHex(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0050:vec4Premultiply","exportIndex":50,"name":"vec4Premultiply","kind":"function","signature":"vec4Premultiply(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0051:vec4Unpremultiply","exportIndex":51,"name":"vec4Unpremultiply","kind":"function","signature":"vec4Unpremultiply(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0052:vec4Random","exportIndex":52,"name":"vec4Random","kind":"function","signature":"vec4Random()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0053:vec4RandomUnit","exportIndex":53,"name":"vec4RandomUnit","kind":"function","signature":"vec4RandomUnit()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0054:vec4ToString","exportIndex":54,"name":"vec4ToString","kind":"function","signature":"vec4ToString(v, precision = 3)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0055:vec4ToArray","exportIndex":55,"name":"vec4ToArray","kind":"function","signature":"vec4ToArray(v, out = [], offset = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0056:vec4GetComponent","exportIndex":56,"name":"vec4GetComponent","kind":"function","signature":"vec4GetComponent(v, index)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0057:vec4SetComponent","exportIndex":57,"name":"vec4SetComponent","kind":"function","signature":"vec4SetComponent(v, index, value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0058:vec4FromScalar","exportIndex":58,"name":"vec4FromScalar","kind":"function","signature":"vec4FromScalar(s)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0059:vec4Infinity","exportIndex":59,"name":"vec4Infinity","kind":"function","signature":"vec4Infinity()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0060:vec4NegInfinity","exportIndex":60,"name":"vec4NegInfinity","kind":"function","signature":"vec4NegInfinity()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0061:vec4AddScalar","exportIndex":61,"name":"vec4AddScalar","kind":"function","signature":"vec4AddScalar(v, s)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0062:vec4SubScalar","exportIndex":62,"name":"vec4SubScalar","kind":"function","signature":"vec4SubScalar(v, s)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0063:vec4MulInto","exportIndex":63,"name":"vec4MulInto","kind":"function","signature":"vec4MulInto(out, a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0064:vec4NegateInto","exportIndex":64,"name":"vec4NegateInto","kind":"function","signature":"vec4NegateInto(out, v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0065:vec4Manhattan","exportIndex":65,"name":"vec4Manhattan","kind":"function","signature":"vec4Manhattan(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0066:vec4Chebyshev","exportIndex":66,"name":"vec4Chebyshev","kind":"function","signature":"vec4Chebyshev(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0067:vec4ManhattanLength","exportIndex":67,"name":"vec4ManhattanLength","kind":"function","signature":"vec4ManhattanLength(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0068:vec4SetLength","exportIndex":68,"name":"vec4SetLength","kind":"function","signature":"vec4SetLength(v, len)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0069:vec4ClampLength","exportIndex":69,"name":"vec4ClampLength","kind":"function","signature":"vec4ClampLength(v, min, max)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0070:vec4Limit","exportIndex":70,"name":"vec4Limit","kind":"function","signature":"vec4Limit(v, maxLen)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0071:vec4SafeNormalize","exportIndex":71,"name":"vec4SafeNormalize","kind":"function","signature":"vec4SafeNormalize(v, fallback = [0,0,0,1])","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0072:vec4LerpInto","exportIndex":72,"name":"vec4LerpInto","kind":"function","signature":"vec4LerpInto(out, a, b, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0073:vec4LerpUnclamped","exportIndex":73,"name":"vec4LerpUnclamped","kind":"function","signature":"vec4LerpUnclamped(a, b, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0074:vec4LerpV","exportIndex":74,"name":"vec4LerpV","kind":"function","signature":"vec4LerpV(a, b, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0075:vec4SmoothStep","exportIndex":75,"name":"vec4SmoothStep","kind":"function","signature":"vec4SmoothStep(a, b, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0076:vec4Midpoint","exportIndex":76,"name":"vec4Midpoint","kind":"function","signature":"vec4Midpoint(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0077:vec4Trunc","exportIndex":77,"name":"vec4Trunc","kind":"function","signature":"vec4Trunc(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0078:vec4Fract","exportIndex":78,"name":"vec4Fract","kind":"function","signature":"vec4Fract(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0079:vec4Sign","exportIndex":79,"name":"vec4Sign","kind":"function","signature":"vec4Sign(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0080:vec4Snap","exportIndex":80,"name":"vec4Snap","kind":"function","signature":"vec4Snap(v, step)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0081:vec4SnapV","exportIndex":81,"name":"vec4SnapV","kind":"function","signature":"vec4SnapV(v, step)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0082:vec4Saturate","exportIndex":82,"name":"vec4Saturate","kind":"function","signature":"vec4Saturate(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0083:vec4InverseSqrt","exportIndex":83,"name":"vec4InverseSqrt","kind":"function","signature":"vec4InverseSqrt(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0084:vec4FMA","exportIndex":84,"name":"vec4FMA","kind":"function","signature":"vec4FMA(a, b, c)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0085:vec4Step","exportIndex":85,"name":"vec4Step","kind":"function","signature":"vec4Step(edge, v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0086:vec4StepScalar","exportIndex":86,"name":"vec4StepScalar","kind":"function","signature":"vec4StepScalar(edge, v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0087:vec4SmoothStepV","exportIndex":87,"name":"vec4SmoothStepV","kind":"function","signature":"vec4SmoothStepV(low, high, v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0088:vec4PosMod","exportIndex":88,"name":"vec4PosMod","kind":"function","signature":"vec4PosMod(v, m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0089:vec4PosModV","exportIndex":89,"name":"vec4PosModV","kind":"function","signature":"vec4PosModV(v, m)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0090:vec4MinScalar","exportIndex":90,"name":"vec4MinScalar","kind":"function","signature":"vec4MinScalar(v, s)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0091:vec4MaxScalar","exportIndex":91,"name":"vec4MaxScalar","kind":"function","signature":"vec4MaxScalar(v, s)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0092:vec4DirectionTo","exportIndex":92,"name":"vec4DirectionTo","kind":"function","signature":"vec4DirectionTo(from, to)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0093:vec4ExactEquals","exportIndex":93,"name":"vec4ExactEquals","kind":"function","signature":"vec4ExactEquals(a, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0094:vec4IsNormalized","exportIndex":94,"name":"vec4IsNormalized","kind":"function","signature":"vec4IsNormalized(v, eps = EPSILON)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0095:vec4IsNaN","exportIndex":95,"name":"vec4IsNaN","kind":"function","signature":"vec4IsNaN(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0096:vec4MinComponent","exportIndex":96,"name":"vec4MinComponent","kind":"function","signature":"vec4MinComponent(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0097:vec4MaxComponent","exportIndex":97,"name":"vec4MaxComponent","kind":"function","signature":"vec4MaxComponent(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0098:vec4Sum","exportIndex":98,"name":"vec4Sum","kind":"function","signature":"vec4Sum(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MathVec4.md","moduleTitle":"core/math/MathVec4","source":"engine/core/math/MathVec4.js","import":"/engine/core/math/MathVec4.js","sourceHash":"08ceec9cae2105c44c3f177a95b24f29064bc6e8cf79b77f0f29087c91755297","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MathVec4.js#0099:vec4Average","exportIndex":99,"name":"vec4Average","kind":"function","signature":"vec4Average(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MediaTimingMath.md","moduleTitle":"core/math/MediaTimingMath","source":"engine/core/math/MediaTimingMath.js","import":"/engine/core/math/MediaTimingMath.js","sourceHash":"95b4a7b32ac0da1f109f10d01e09edc78495d1188f36fc2d9fa08b4f7475510f","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/MediaTimingMath.js","title":"core/math/MediaTimingMath","summary":"MediaTimingMath.js - pure WebCodecs-shaped timestamp, cadence, sync, and metadata reports.","exportCount":12}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MediaTimingMath.md","moduleTitle":"core/math/MediaTimingMath","source":"engine/core/math/MediaTimingMath.js","import":"/engine/core/math/MediaTimingMath.js","sourceHash":"95b4a7b32ac0da1f109f10d01e09edc78495d1188f36fc2d9fa08b4f7475510f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MediaTimingMath.js#0000:mediaTimestampUs","exportIndex":0,"name":"mediaTimestampUs","kind":"function","signature":"mediaTimestampUs(value, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MediaTimingMath.md","moduleTitle":"core/math/MediaTimingMath","source":"engine/core/math/MediaTimingMath.js","import":"/engine/core/math/MediaTimingMath.js","sourceHash":"95b4a7b32ac0da1f109f10d01e09edc78495d1188f36fc2d9fa08b4f7475510f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MediaTimingMath.js#0001:mediaDurationUs","exportIndex":1,"name":"mediaDurationUs","kind":"function","signature":"mediaDurationUs(value, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MediaTimingMath.md","moduleTitle":"core/math/MediaTimingMath","source":"engine/core/math/MediaTimingMath.js","import":"/engine/core/math/MediaTimingMath.js","sourceHash":"95b4a7b32ac0da1f109f10d01e09edc78495d1188f36fc2d9fa08b4f7475510f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MediaTimingMath.js#0002:mediaTimestampReport","exportIndex":2,"name":"mediaTimestampReport","kind":"function","signature":"mediaTimestampReport(sample = {}, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MediaTimingMath.md","moduleTitle":"core/math/MediaTimingMath","source":"engine/core/math/MediaTimingMath.js","import":"/engine/core/math/MediaTimingMath.js","sourceHash":"95b4a7b32ac0da1f109f10d01e09edc78495d1188f36fc2d9fa08b4f7475510f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MediaTimingMath.js#0003:mediaFrameIndexAtTimestamp","exportIndex":3,"name":"mediaFrameIndexAtTimestamp","kind":"function","signature":"mediaFrameIndexAtTimestamp(timestamp, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MediaTimingMath.md","moduleTitle":"core/math/MediaTimingMath","source":"engine/core/math/MediaTimingMath.js","import":"/engine/core/math/MediaTimingMath.js","sourceHash":"95b4a7b32ac0da1f109f10d01e09edc78495d1188f36fc2d9fa08b4f7475510f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MediaTimingMath.js#0004:mediaTimestampForFrameIndex","exportIndex":4,"name":"mediaTimestampForFrameIndex","kind":"function","signature":"mediaTimestampForFrameIndex(frameIndex, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MediaTimingMath.md","moduleTitle":"core/math/MediaTimingMath","source":"engine/core/math/MediaTimingMath.js","import":"/engine/core/math/MediaTimingMath.js","sourceHash":"95b4a7b32ac0da1f109f10d01e09edc78495d1188f36fc2d9fa08b4f7475510f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MediaTimingMath.js#0005:mediaTimelineReport","exportIndex":5,"name":"mediaTimelineReport","kind":"function","signature":"mediaTimelineReport(samples = [], options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MediaTimingMath.md","moduleTitle":"core/math/MediaTimingMath","source":"engine/core/math/MediaTimingMath.js","import":"/engine/core/math/MediaTimingMath.js","sourceHash":"95b4a7b32ac0da1f109f10d01e09edc78495d1188f36fc2d9fa08b4f7475510f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MediaTimingMath.js#0006:mediaDroppedFrameReport","exportIndex":6,"name":"mediaDroppedFrameReport","kind":"function","signature":"mediaDroppedFrameReport(samples = [], options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MediaTimingMath.md","moduleTitle":"core/math/MediaTimingMath","source":"engine/core/math/MediaTimingMath.js","import":"/engine/core/math/MediaTimingMath.js","sourceHash":"95b4a7b32ac0da1f109f10d01e09edc78495d1188f36fc2d9fa08b4f7475510f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MediaTimingMath.js#0007:mediaDriftReport","exportIndex":7,"name":"mediaDriftReport","kind":"function","signature":"mediaDriftReport(reference, candidate, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MediaTimingMath.md","moduleTitle":"core/math/MediaTimingMath","source":"engine/core/math/MediaTimingMath.js","import":"/engine/core/math/MediaTimingMath.js","sourceHash":"95b4a7b32ac0da1f109f10d01e09edc78495d1188f36fc2d9fa08b4f7475510f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MediaTimingMath.js#0008:mediaAvSyncReport","exportIndex":8,"name":"mediaAvSyncReport","kind":"function","signature":"mediaAvSyncReport(audioSamples = [], videoSamples = [], options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MediaTimingMath.md","moduleTitle":"core/math/MediaTimingMath","source":"engine/core/math/MediaTimingMath.js","import":"/engine/core/math/MediaTimingMath.js","sourceHash":"95b4a7b32ac0da1f109f10d01e09edc78495d1188f36fc2d9fa08b4f7475510f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MediaTimingMath.js#0009:mediaAudioDataTimingReport","exportIndex":9,"name":"mediaAudioDataTimingReport","kind":"function","signature":"mediaAudioDataTimingReport(audioData = {}, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MediaTimingMath.md","moduleTitle":"core/math/MediaTimingMath","source":"engine/core/math/MediaTimingMath.js","import":"/engine/core/math/MediaTimingMath.js","sourceHash":"95b4a7b32ac0da1f109f10d01e09edc78495d1188f36fc2d9fa08b4f7475510f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MediaTimingMath.js#0010:mediaColorSpaceReport","exportIndex":10,"name":"mediaColorSpaceReport","kind":"function","signature":"mediaColorSpaceReport(videoFrameOrColorSpace = {}, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MediaTimingMath.md","moduleTitle":"core/math/MediaTimingMath","source":"engine/core/math/MediaTimingMath.js","import":"/engine/core/math/MediaTimingMath.js","sourceHash":"95b4a7b32ac0da1f109f10d01e09edc78495d1188f36fc2d9fa08b4f7475510f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MediaTimingMath.js#0011:mediaQueuePressureReport","exportIndex":11,"name":"mediaQueuePressureReport","kind":"function","signature":"mediaQueuePressureReport(queue = {}, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MemoryLayoutMath.md","moduleTitle":"core/math/MemoryLayoutMath","source":"engine/core/math/MemoryLayoutMath.js","import":"/engine/core/math/MemoryLayoutMath.js","sourceHash":"d0abb9972625b461ddee8ca01e8bbe103b91797f42c6a53a2b265ef6f4db501a","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/MemoryLayoutMath.js","title":"core/math/MemoryLayoutMath","summary":"MemoryLayoutMath.js - byte alignment, struct, interleaved, planar, WGSL, and std140 layout reports.","exportCount":13}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MemoryLayoutMath.md","moduleTitle":"core/math/MemoryLayoutMath","source":"engine/core/math/MemoryLayoutMath.js","import":"/engine/core/math/MemoryLayoutMath.js","sourceHash":"d0abb9972625b461ddee8ca01e8bbe103b91797f42c6a53a2b265ef6f4db501a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MemoryLayoutMath.js#0000:memoryLayoutAlignmentForKind","exportIndex":0,"name":"memoryLayoutAlignmentForKind","kind":"function","signature":"memoryLayoutAlignmentForKind(kind, fallback = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MemoryLayoutMath.md","moduleTitle":"core/math/MemoryLayoutMath","source":"engine/core/math/MemoryLayoutMath.js","import":"/engine/core/math/MemoryLayoutMath.js","sourceHash":"d0abb9972625b461ddee8ca01e8bbe103b91797f42c6a53a2b265ef6f4db501a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MemoryLayoutMath.js#0001:alignMemoryOffset","exportIndex":1,"name":"alignMemoryOffset","kind":"function","signature":"alignMemoryOffset(offset, alignment)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MemoryLayoutMath.md","moduleTitle":"core/math/MemoryLayoutMath","source":"engine/core/math/MemoryLayoutMath.js","import":"/engine/core/math/MemoryLayoutMath.js","sourceHash":"d0abb9972625b461ddee8ca01e8bbe103b91797f42c6a53a2b265ef6f4db501a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MemoryLayoutMath.js#0002:memoryPaddingForAlignment","exportIndex":2,"name":"memoryPaddingForAlignment","kind":"function","signature":"memoryPaddingForAlignment(offset, alignment)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MemoryLayoutMath.md","moduleTitle":"core/math/MemoryLayoutMath","source":"engine/core/math/MemoryLayoutMath.js","import":"/engine/core/math/MemoryLayoutMath.js","sourceHash":"d0abb9972625b461ddee8ca01e8bbe103b91797f42c6a53a2b265ef6f4db501a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MemoryLayoutMath.js#0003:isMemoryAligned","exportIndex":3,"name":"isMemoryAligned","kind":"function","signature":"isMemoryAligned(offset, alignment)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MemoryLayoutMath.md","moduleTitle":"core/math/MemoryLayoutMath","source":"engine/core/math/MemoryLayoutMath.js","import":"/engine/core/math/MemoryLayoutMath.js","sourceHash":"d0abb9972625b461ddee8ca01e8bbe103b91797f42c6a53a2b265ef6f4db501a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MemoryLayoutMath.js#0004:alignedMemoryByteSize","exportIndex":4,"name":"alignedMemoryByteSize","kind":"function","signature":"alignedMemoryByteSize(byteSize, alignment)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MemoryLayoutMath.md","moduleTitle":"core/math/MemoryLayoutMath","source":"engine/core/math/MemoryLayoutMath.js","import":"/engine/core/math/MemoryLayoutMath.js","sourceHash":"d0abb9972625b461ddee8ca01e8bbe103b91797f42c6a53a2b265ef6f4db501a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MemoryLayoutMath.js#0005:memoryFieldLayout","exportIndex":5,"name":"memoryFieldLayout","kind":"function","signature":"memoryFieldLayout(fields, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MemoryLayoutMath.md","moduleTitle":"core/math/MemoryLayoutMath","source":"engine/core/math/MemoryLayoutMath.js","import":"/engine/core/math/MemoryLayoutMath.js","sourceHash":"d0abb9972625b461ddee8ca01e8bbe103b91797f42c6a53a2b265ef6f4db501a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MemoryLayoutMath.js#0006:interleavedVertexLayoutReport","exportIndex":6,"name":"interleavedVertexLayoutReport","kind":"function","signature":"interleavedVertexLayoutReport(attributes, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MemoryLayoutMath.md","moduleTitle":"core/math/MemoryLayoutMath","source":"engine/core/math/MemoryLayoutMath.js","import":"/engine/core/math/MemoryLayoutMath.js","sourceHash":"d0abb9972625b461ddee8ca01e8bbe103b91797f42c6a53a2b265ef6f4db501a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MemoryLayoutMath.js#0007:planarBufferLayoutReport","exportIndex":7,"name":"planarBufferLayoutReport","kind":"function","signature":"planarBufferLayoutReport(attributes, elementCount, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MemoryLayoutMath.md","moduleTitle":"core/math/MemoryLayoutMath","source":"engine/core/math/MemoryLayoutMath.js","import":"/engine/core/math/MemoryLayoutMath.js","sourceHash":"d0abb9972625b461ddee8ca01e8bbe103b91797f42c6a53a2b265ef6f4db501a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MemoryLayoutMath.js#0008:aosElementByteOffset","exportIndex":8,"name":"aosElementByteOffset","kind":"function","signature":"aosElementByteOffset(index, stride, fieldOffset = 0, baseOffset = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MemoryLayoutMath.md","moduleTitle":"core/math/MemoryLayoutMath","source":"engine/core/math/MemoryLayoutMath.js","import":"/engine/core/math/MemoryLayoutMath.js","sourceHash":"d0abb9972625b461ddee8ca01e8bbe103b91797f42c6a53a2b265ef6f4db501a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MemoryLayoutMath.js#0009:soaElementByteOffset","exportIndex":9,"name":"soaElementByteOffset","kind":"function","signature":"soaElementByteOffset(index, elementByteSize, baseOffset = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MemoryLayoutMath.md","moduleTitle":"core/math/MemoryLayoutMath","source":"engine/core/math/MemoryLayoutMath.js","import":"/engine/core/math/MemoryLayoutMath.js","sourceHash":"d0abb9972625b461ddee8ca01e8bbe103b91797f42c6a53a2b265ef6f4db501a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MemoryLayoutMath.js#0010:wgslStructLayoutReport","exportIndex":10,"name":"wgslStructLayoutReport","kind":"function","signature":"wgslStructLayoutReport(wgslCode)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MemoryLayoutMath.md","moduleTitle":"core/math/MemoryLayoutMath","source":"engine/core/math/MemoryLayoutMath.js","import":"/engine/core/math/MemoryLayoutMath.js","sourceHash":"d0abb9972625b461ddee8ca01e8bbe103b91797f42c6a53a2b265ef6f4db501a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MemoryLayoutMath.js#0011:std140StructLayoutReport","exportIndex":11,"name":"std140StructLayoutReport","kind":"function","signature":"std140StructLayoutReport(name, fields)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MemoryLayoutMath.md","moduleTitle":"core/math/MemoryLayoutMath","source":"engine/core/math/MemoryLayoutMath.js","import":"/engine/core/math/MemoryLayoutMath.js","sourceHash":"d0abb9972625b461ddee8ca01e8bbe103b91797f42c6a53a2b265ef6f4db501a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MemoryLayoutMath.js#0012:MEMORY_LAYOUT_ALIGNMENTS","exportIndex":12,"name":"MEMORY_LAYOUT_ALIGNMENTS","kind":"constant","signature":"MEMORY_LAYOUT_ALIGNMENTS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshAttributeMath.md","moduleTitle":"core/math/MeshAttributeMath","source":"engine/core/math/MeshAttributeMath.js","import":"/engine/core/math/MeshAttributeMath.js","sourceHash":"9862c820a47b714c59b21f2bb561997cb6b07b7d7f8616e1221037d371c33801","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/MeshAttributeMath.js","title":"core/math/MeshAttributeMath","summary":"MeshAttributeMath.js - glTF-style accessor component, stride, tangent-frame, and decode helpers.","exportCount":39}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshAttributeMath.md","moduleTitle":"core/math/MeshAttributeMath","source":"engine/core/math/MeshAttributeMath.js","import":"/engine/core/math/MeshAttributeMath.js","sourceHash":"9862c820a47b714c59b21f2bb561997cb6b07b7d7f8616e1221037d371c33801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshAttributeMath.js#0000:morphWeightStateReport","exportIndex":0,"name":"morphWeightStateReport","kind":"function","signature":"morphWeightStateReport(value, options = {})","summary":"Validate serializable per-model morph control state keyed by stable part index."}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshAttributeMath.md","moduleTitle":"core/math/MeshAttributeMath","source":"engine/core/math/MeshAttributeMath.js","import":"/engine/core/math/MeshAttributeMath.js","sourceHash":"9862c820a47b714c59b21f2bb561997cb6b07b7d7f8616e1221037d371c33801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshAttributeMath.js#0001:positionBoundsReport","exportIndex":1,"name":"positionBoundsReport","kind":"function","signature":"positionBoundsReport(positions, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshAttributeMath.md","moduleTitle":"core/math/MeshAttributeMath","source":"engine/core/math/MeshAttributeMath.js","import":"/engine/core/math/MeshAttributeMath.js","sourceHash":"9862c820a47b714c59b21f2bb561997cb6b07b7d7f8616e1221037d371c33801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshAttributeMath.js#0002:morphAttributeDeltasReport","exportIndex":2,"name":"morphAttributeDeltasReport","kind":"function","signature":"morphAttributeDeltasReport(baseValues, morphTargets, morphWeights, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshAttributeMath.md","moduleTitle":"core/math/MeshAttributeMath","source":"engine/core/math/MeshAttributeMath.js","import":"/engine/core/math/MeshAttributeMath.js","sourceHash":"9862c820a47b714c59b21f2bb561997cb6b07b7d7f8616e1221037d371c33801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshAttributeMath.js#0003:morphedPositionBoundsReport","exportIndex":3,"name":"morphedPositionBoundsReport","kind":"function","signature":"morphedPositionBoundsReport(basePositions, morphTargets, morphWeights, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshAttributeMath.md","moduleTitle":"core/math/MeshAttributeMath","source":"engine/core/math/MeshAttributeMath.js","import":"/engine/core/math/MeshAttributeMath.js","sourceHash":"9862c820a47b714c59b21f2bb561997cb6b07b7d7f8616e1221037d371c33801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshAttributeMath.js#0004:skinnedPositionBoundsReport","exportIndex":4,"name":"skinnedPositionBoundsReport","kind":"function","signature":"skinnedPositionBoundsReport(bindPositions, jointIndices, jointWeights, skinMatrices, options = {},)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshAttributeMath.md","moduleTitle":"core/math/MeshAttributeMath","source":"engine/core/math/MeshAttributeMath.js","import":"/engine/core/math/MeshAttributeMath.js","sourceHash":"9862c820a47b714c59b21f2bb561997cb6b07b7d7f8616e1221037d371c33801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshAttributeMath.js#0005:componentTypedArray","exportIndex":5,"name":"componentTypedArray","kind":"function","signature":"componentTypedArray(componentType)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshAttributeMath.md","moduleTitle":"core/math/MeshAttributeMath","source":"engine/core/math/MeshAttributeMath.js","import":"/engine/core/math/MeshAttributeMath.js","sourceHash":"9862c820a47b714c59b21f2bb561997cb6b07b7d7f8616e1221037d371c33801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshAttributeMath.js#0006:componentByteSize","exportIndex":6,"name":"componentByteSize","kind":"function","signature":"componentByteSize(componentType)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshAttributeMath.md","moduleTitle":"core/math/MeshAttributeMath","source":"engine/core/math/MeshAttributeMath.js","import":"/engine/core/math/MeshAttributeMath.js","sourceHash":"9862c820a47b714c59b21f2bb561997cb6b07b7d7f8616e1221037d371c33801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshAttributeMath.js#0007:accessorElementCount","exportIndex":7,"name":"accessorElementCount","kind":"function","signature":"accessorElementCount(type)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshAttributeMath.md","moduleTitle":"core/math/MeshAttributeMath","source":"engine/core/math/MeshAttributeMath.js","import":"/engine/core/math/MeshAttributeMath.js","sourceHash":"9862c820a47b714c59b21f2bb561997cb6b07b7d7f8616e1221037d371c33801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshAttributeMath.js#0008:normalizedComponentRange","exportIndex":8,"name":"normalizedComponentRange","kind":"function","signature":"normalizedComponentRange(componentType)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshAttributeMath.md","moduleTitle":"core/math/MeshAttributeMath","source":"engine/core/math/MeshAttributeMath.js","import":"/engine/core/math/MeshAttributeMath.js","sourceHash":"9862c820a47b714c59b21f2bb561997cb6b07b7d7f8616e1221037d371c33801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshAttributeMath.js#0009:normalizeAccessorComponent","exportIndex":9,"name":"normalizeAccessorComponent","kind":"function","signature":"normalizeAccessorComponent(value, componentType)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshAttributeMath.md","moduleTitle":"core/math/MeshAttributeMath","source":"engine/core/math/MeshAttributeMath.js","import":"/engine/core/math/MeshAttributeMath.js","sourceHash":"9862c820a47b714c59b21f2bb561997cb6b07b7d7f8616e1221037d371c33801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshAttributeMath.js#0010:readAccessorComponent","exportIndex":10,"name":"readAccessorComponent","kind":"function","signature":"readAccessorComponent(view, byteOffset, componentType, normalized = false)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshAttributeMath.md","moduleTitle":"core/math/MeshAttributeMath","source":"engine/core/math/MeshAttributeMath.js","import":"/engine/core/math/MeshAttributeMath.js","sourceHash":"9862c820a47b714c59b21f2bb561997cb6b07b7d7f8616e1221037d371c33801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshAttributeMath.js#0011:accessorPackedByteStride","exportIndex":11,"name":"accessorPackedByteStride","kind":"function","signature":"accessorPackedByteStride(accessor)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshAttributeMath.md","moduleTitle":"core/math/MeshAttributeMath","source":"engine/core/math/MeshAttributeMath.js","import":"/engine/core/math/MeshAttributeMath.js","sourceHash":"9862c820a47b714c59b21f2bb561997cb6b07b7d7f8616e1221037d371c33801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshAttributeMath.js#0012:accessorByteLayout","exportIndex":12,"name":"accessorByteLayout","kind":"function","signature":"accessorByteLayout(accessor, bufferView = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshAttributeMath.md","moduleTitle":"core/math/MeshAttributeMath","source":"engine/core/math/MeshAttributeMath.js","import":"/engine/core/math/MeshAttributeMath.js","sourceHash":"9862c820a47b714c59b21f2bb561997cb6b07b7d7f8616e1221037d371c33801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshAttributeMath.js#0013:readAccessorArray","exportIndex":13,"name":"readAccessorArray","kind":"function","signature":"readAccessorArray(source, accessor, bufferView = {}, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshAttributeMath.md","moduleTitle":"core/math/MeshAttributeMath","source":"engine/core/math/MeshAttributeMath.js","import":"/engine/core/math/MeshAttributeMath.js","sourceHash":"9862c820a47b714c59b21f2bb561997cb6b07b7d7f8616e1221037d371c33801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshAttributeMath.js#0014:accessorDecodeMetadata","exportIndex":14,"name":"accessorDecodeMetadata","kind":"function","signature":"accessorDecodeMetadata(accessor, bufferView = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshAttributeMath.md","moduleTitle":"core/math/MeshAttributeMath","source":"engine/core/math/MeshAttributeMath.js","import":"/engine/core/math/MeshAttributeMath.js","sourceHash":"9862c820a47b714c59b21f2bb561997cb6b07b7d7f8616e1221037d371c33801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshAttributeMath.js#0015:attributeBounds","exportIndex":15,"name":"attributeBounds","kind":"function","signature":"attributeBounds(values, componentCount = 3)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshAttributeMath.md","moduleTitle":"core/math/MeshAttributeMath","source":"engine/core/math/MeshAttributeMath.js","import":"/engine/core/math/MeshAttributeMath.js","sourceHash":"9862c820a47b714c59b21f2bb561997cb6b07b7d7f8616e1221037d371c33801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshAttributeMath.js#0016:attributeScaleBiasFromBounds","exportIndex":16,"name":"attributeScaleBiasFromBounds","kind":"function","signature":"attributeScaleBiasFromBounds(min, max)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshAttributeMath.md","moduleTitle":"core/math/MeshAttributeMath","source":"engine/core/math/MeshAttributeMath.js","import":"/engine/core/math/MeshAttributeMath.js","sourceHash":"9862c820a47b714c59b21f2bb561997cb6b07b7d7f8616e1221037d371c33801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshAttributeMath.js#0017:meshoptDecodeMetadata","exportIndex":17,"name":"meshoptDecodeMetadata","kind":"function","signature":"meshoptDecodeMetadata(extension = {}, bufferView = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshAttributeMath.md","moduleTitle":"core/math/MeshAttributeMath","source":"engine/core/math/MeshAttributeMath.js","import":"/engine/core/math/MeshAttributeMath.js","sourceHash":"9862c820a47b714c59b21f2bb561997cb6b07b7d7f8616e1221037d371c33801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshAttributeMath.js#0018:indexBounds","exportIndex":18,"name":"indexBounds","kind":"function","signature":"indexBounds(indices, vertexCount)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshAttributeMath.md","moduleTitle":"core/math/MeshAttributeMath","source":"engine/core/math/MeshAttributeMath.js","import":"/engine/core/math/MeshAttributeMath.js","sourceHash":"9862c820a47b714c59b21f2bb561997cb6b07b7d7f8616e1221037d371c33801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshAttributeMath.js#0019:tangentHandedness","exportIndex":19,"name":"tangentHandedness","kind":"function","signature":"tangentHandedness(tangent, fallback = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshAttributeMath.md","moduleTitle":"core/math/MeshAttributeMath","source":"engine/core/math/MeshAttributeMath.js","import":"/engine/core/math/MeshAttributeMath.js","sourceHash":"9862c820a47b714c59b21f2bb561997cb6b07b7d7f8616e1221037d371c33801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshAttributeMath.js#0020:tangentFrameFromNormalTangent","exportIndex":20,"name":"tangentFrameFromNormalTangent","kind":"function","signature":"tangentFrameFromNormalTangent(normal, tangent, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshAttributeMath.md","moduleTitle":"core/math/MeshAttributeMath","source":"engine/core/math/MeshAttributeMath.js","import":"/engine/core/math/MeshAttributeMath.js","sourceHash":"9862c820a47b714c59b21f2bb561997cb6b07b7d7f8616e1221037d371c33801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshAttributeMath.js#0021:gltfBitangentFromTangent","exportIndex":21,"name":"gltfBitangentFromTangent","kind":"function","signature":"gltfBitangentFromTangent(normal, tangent, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshAttributeMath.md","moduleTitle":"core/math/MeshAttributeMath","source":"engine/core/math/MeshAttributeMath.js","import":"/engine/core/math/MeshAttributeMath.js","sourceHash":"9862c820a47b714c59b21f2bb561997cb6b07b7d7f8616e1221037d371c33801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshAttributeMath.js#0022:decodeNormalTextureSample","exportIndex":22,"name":"decodeNormalTextureSample","kind":"function","signature":"decodeNormalTextureSample(sample, normalScale = 1, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshAttributeMath.md","moduleTitle":"core/math/MeshAttributeMath","source":"engine/core/math/MeshAttributeMath.js","import":"/engine/core/math/MeshAttributeMath.js","sourceHash":"9862c820a47b714c59b21f2bb561997cb6b07b7d7f8616e1221037d371c33801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshAttributeMath.js#0023:normalTextureSampleToWorld","exportIndex":23,"name":"normalTextureSampleToWorld","kind":"function","signature":"normalTextureSampleToWorld(sample, normal, tangent, normalScale = 1, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshAttributeMath.md","moduleTitle":"core/math/MeshAttributeMath","source":"engine/core/math/MeshAttributeMath.js","import":"/engine/core/math/MeshAttributeMath.js","sourceHash":"9862c820a47b714c59b21f2bb561997cb6b07b7d7f8616e1221037d371c33801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshAttributeMath.js#0024:prepareMikkTSpaceInputGeometry","exportIndex":24,"name":"prepareMikkTSpaceInputGeometry","kind":"function","signature":"prepareMikkTSpaceInputGeometry(geometry)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshAttributeMath.md","moduleTitle":"core/math/MeshAttributeMath","source":"engine/core/math/MeshAttributeMath.js","import":"/engine/core/math/MeshAttributeMath.js","sourceHash":"9862c820a47b714c59b21f2bb561997cb6b07b7d7f8616e1221037d371c33801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshAttributeMath.js#0025:mikkTSpaceReferenceFingerprint","exportIndex":25,"name":"mikkTSpaceReferenceFingerprint","kind":"function","signature":"mikkTSpaceReferenceFingerprint(preparedInput, faceTangents = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshAttributeMath.md","moduleTitle":"core/math/MeshAttributeMath","source":"engine/core/math/MeshAttributeMath.js","import":"/engine/core/math/MeshAttributeMath.js","sourceHash":"9862c820a47b714c59b21f2bb561997cb6b07b7d7f8616e1221037d371c33801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshAttributeMath.js#0026:mikkTSpaceReferenceRegistryReport","exportIndex":26,"name":"mikkTSpaceReferenceRegistryReport","kind":"function","signature":"mikkTSpaceReferenceRegistryReport(registry = MIKK_REFERENCE_CORPUS_REGISTRY)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshAttributeMath.md","moduleTitle":"core/math/MeshAttributeMath","source":"engine/core/math/MeshAttributeMath.js","import":"/engine/core/math/MeshAttributeMath.js","sourceHash":"9862c820a47b714c59b21f2bb561997cb6b07b7d7f8616e1221037d371c33801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshAttributeMath.js#0027:mikkTSpaceReferenceProofReport","exportIndex":27,"name":"mikkTSpaceReferenceProofReport","kind":"function","signature":"mikkTSpaceReferenceProofReport(preparedInput, faceTangents, proof = null, registry = MIKK_REFERENCE_CORPUS_REGISTRY)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshAttributeMath.md","moduleTitle":"core/math/MeshAttributeMath","source":"engine/core/math/MeshAttributeMath.js","import":"/engine/core/math/MeshAttributeMath.js","sourceHash":"9862c820a47b714c59b21f2bb561997cb6b07b7d7f8616e1221037d371c33801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshAttributeMath.js#0028:mikkTSpaceFaceTangentOutputReport","exportIndex":28,"name":"mikkTSpaceFaceTangentOutputReport","kind":"function","signature":"mikkTSpaceFaceTangentOutputReport(faceTangents, expectedVertexCount, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshAttributeMath.md","moduleTitle":"core/math/MeshAttributeMath","source":"engine/core/math/MeshAttributeMath.js","import":"/engine/core/math/MeshAttributeMath.js","sourceHash":"9862c820a47b714c59b21f2bb561997cb6b07b7d7f8616e1221037d371c33801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshAttributeMath.js#0029:applyMikkTSpaceFaceTangents","exportIndex":29,"name":"applyMikkTSpaceFaceTangents","kind":"function","signature":"applyMikkTSpaceFaceTangents(preparedInput, faceTangents, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshAttributeMath.md","moduleTitle":"core/math/MeshAttributeMath","source":"engine/core/math/MeshAttributeMath.js","import":"/engine/core/math/MeshAttributeMath.js","sourceHash":"9862c820a47b714c59b21f2bb561997cb6b07b7d7f8616e1221037d371c33801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshAttributeMath.js#0030:splitGeometryForTangentSpace","exportIndex":30,"name":"splitGeometryForTangentSpace","kind":"function","signature":"splitGeometryForTangentSpace(geometry, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshAttributeMath.md","moduleTitle":"core/math/MeshAttributeMath","source":"engine/core/math/MeshAttributeMath.js","import":"/engine/core/math/MeshAttributeMath.js","sourceHash":"9862c820a47b714c59b21f2bb561997cb6b07b7d7f8616e1221037d371c33801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshAttributeMath.js#0031:tangentSpaceCompatibilityReport","exportIndex":31,"name":"tangentSpaceCompatibilityReport","kind":"function","signature":"tangentSpaceCompatibilityReport(geometry, referenceTangents = null, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshAttributeMath.md","moduleTitle":"core/math/MeshAttributeMath","source":"engine/core/math/MeshAttributeMath.js","import":"/engine/core/math/MeshAttributeMath.js","sourceHash":"9862c820a47b714c59b21f2bb561997cb6b07b7d7f8616e1221037d371c33801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshAttributeMath.js#0032:generateTangentsFromGeometry","exportIndex":32,"name":"generateTangentsFromGeometry","kind":"function","signature":"generateTangentsFromGeometry(positions, normals, uvs, indices = null, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshAttributeMath.md","moduleTitle":"core/math/MeshAttributeMath","source":"engine/core/math/MeshAttributeMath.js","import":"/engine/core/math/MeshAttributeMath.js","sourceHash":"9862c820a47b714c59b21f2bb561997cb6b07b7d7f8616e1221037d371c33801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshAttributeMath.js#0033:GLTF_COMPONENT_TYPES","exportIndex":33,"name":"GLTF_COMPONENT_TYPES","kind":"constant","signature":"GLTF_COMPONENT_TYPES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshAttributeMath.md","moduleTitle":"core/math/MeshAttributeMath","source":"engine/core/math/MeshAttributeMath.js","import":"/engine/core/math/MeshAttributeMath.js","sourceHash":"9862c820a47b714c59b21f2bb561997cb6b07b7d7f8616e1221037d371c33801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshAttributeMath.js#0034:TANGENT_SPACE_GENERATOR_FALLBACK","exportIndex":34,"name":"TANGENT_SPACE_GENERATOR_FALLBACK","kind":"constant","signature":"TANGENT_SPACE_GENERATOR_FALLBACK","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshAttributeMath.md","moduleTitle":"core/math/MeshAttributeMath","source":"engine/core/math/MeshAttributeMath.js","import":"/engine/core/math/MeshAttributeMath.js","sourceHash":"9862c820a47b714c59b21f2bb561997cb6b07b7d7f8616e1221037d371c33801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshAttributeMath.js#0035:TANGENT_SPACE_GENERATOR_MIKK_FACE_OUTPUT","exportIndex":35,"name":"TANGENT_SPACE_GENERATOR_MIKK_FACE_OUTPUT","kind":"constant","signature":"TANGENT_SPACE_GENERATOR_MIKK_FACE_OUTPUT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshAttributeMath.md","moduleTitle":"core/math/MeshAttributeMath","source":"engine/core/math/MeshAttributeMath.js","import":"/engine/core/math/MeshAttributeMath.js","sourceHash":"9862c820a47b714c59b21f2bb561997cb6b07b7d7f8616e1221037d371c33801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshAttributeMath.js#0036:MIKK_REFERENCE_CORPUS_REGISTRY","exportIndex":36,"name":"MIKK_REFERENCE_CORPUS_REGISTRY","kind":"constant","signature":"MIKK_REFERENCE_CORPUS_REGISTRY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshAttributeMath.md","moduleTitle":"core/math/MeshAttributeMath","source":"engine/core/math/MeshAttributeMath.js","import":"/engine/core/math/MeshAttributeMath.js","sourceHash":"9862c820a47b714c59b21f2bb561997cb6b07b7d7f8616e1221037d371c33801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshAttributeMath.js#0037:SKINNED_POSITION_BOUNDS_LIMITS","exportIndex":37,"name":"SKINNED_POSITION_BOUNDS_LIMITS","kind":"constant","signature":"SKINNED_POSITION_BOUNDS_LIMITS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshAttributeMath.md","moduleTitle":"core/math/MeshAttributeMath","source":"engine/core/math/MeshAttributeMath.js","import":"/engine/core/math/MeshAttributeMath.js","sourceHash":"9862c820a47b714c59b21f2bb561997cb6b07b7d7f8616e1221037d371c33801","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshAttributeMath.js#0038:MORPH_ATTRIBUTE_LIMITS","exportIndex":38,"name":"MORPH_ATTRIBUTE_LIMITS","kind":"constant","signature":"MORPH_ATTRIBUTE_LIMITS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshMath.md","moduleTitle":"core/math/MeshMath","source":"engine/core/math/MeshMath.js","import":"/engine/core/math/MeshMath.js","sourceHash":"22e5e1d4b25b5d8e42256692e5ef3088f767cd19399939288286eb017ccaff5d","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/MeshMath.js","title":"core/math/MeshMath","summary":"MeshMath.js - reusable peer-graph, neighbor, relay, gossip, and mesh-health helpers.","exportCount":27}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshMath.md","moduleTitle":"core/math/MeshMath","source":"engine/core/math/MeshMath.js","import":"/engine/core/math/MeshMath.js","sourceHash":"22e5e1d4b25b5d8e42256692e5ef3088f767cd19399939288286eb017ccaff5d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshMath.js#0000:meshGraphReport","exportIndex":0,"name":"meshGraphReport","kind":"function","signature":"meshGraphReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshMath.md","moduleTitle":"core/math/MeshMath","source":"engine/core/math/MeshMath.js","import":"/engine/core/math/MeshMath.js","sourceHash":"22e5e1d4b25b5d8e42256692e5ef3088f767cd19399939288286eb017ccaff5d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshMath.js#0001:peerDegreeReport","exportIndex":1,"name":"peerDegreeReport","kind":"function","signature":"peerDegreeReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshMath.md","moduleTitle":"core/math/MeshMath","source":"engine/core/math/MeshMath.js","import":"/engine/core/math/MeshMath.js","sourceHash":"22e5e1d4b25b5d8e42256692e5ef3088f767cd19399939288286eb017ccaff5d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshMath.js#0002:partitionDetectionReport","exportIndex":2,"name":"partitionDetectionReport","kind":"function","signature":"partitionDetectionReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshMath.md","moduleTitle":"core/math/MeshMath","source":"engine/core/math/MeshMath.js","import":"/engine/core/math/MeshMath.js","sourceHash":"22e5e1d4b25b5d8e42256692e5ef3088f767cd19399939288286eb017ccaff5d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshMath.js#0003:meshLinkQualityScore","exportIndex":3,"name":"meshLinkQualityScore","kind":"function","signature":"meshLinkQualityScore(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshMath.md","moduleTitle":"core/math/MeshMath","source":"engine/core/math/MeshMath.js","import":"/engine/core/math/MeshMath.js","sourceHash":"22e5e1d4b25b5d8e42256692e5ef3088f767cd19399939288286eb017ccaff5d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshMath.js#0004:peerNeighborScoreReport","exportIndex":4,"name":"peerNeighborScoreReport","kind":"function","signature":"peerNeighborScoreReport(peer = {}, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshMath.md","moduleTitle":"core/math/MeshMath","source":"engine/core/math/MeshMath.js","import":"/engine/core/math/MeshMath.js","sourceHash":"22e5e1d4b25b5d8e42256692e5ef3088f767cd19399939288286eb017ccaff5d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshMath.js#0005:neighborSelectionReport","exportIndex":5,"name":"neighborSelectionReport","kind":"function","signature":"neighborSelectionReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshMath.md","moduleTitle":"core/math/MeshMath","source":"engine/core/math/MeshMath.js","import":"/engine/core/math/MeshMath.js","sourceHash":"22e5e1d4b25b5d8e42256692e5ef3088f767cd19399939288286eb017ccaff5d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshMath.js#0006:supernodeScoreReport","exportIndex":6,"name":"supernodeScoreReport","kind":"function","signature":"supernodeScoreReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshMath.md","moduleTitle":"core/math/MeshMath","source":"engine/core/math/MeshMath.js","import":"/engine/core/math/MeshMath.js","sourceHash":"22e5e1d4b25b5d8e42256692e5ef3088f767cd19399939288286eb017ccaff5d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshMath.js#0007:relaySelectionReport","exportIndex":7,"name":"relaySelectionReport","kind":"function","signature":"relaySelectionReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshMath.md","moduleTitle":"core/math/MeshMath","source":"engine/core/math/MeshMath.js","import":"/engine/core/math/MeshMath.js","sourceHash":"22e5e1d4b25b5d8e42256692e5ef3088f767cd19399939288286eb017ccaff5d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshMath.js#0008:nearestPeerReport","exportIndex":8,"name":"nearestPeerReport","kind":"function","signature":"nearestPeerReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshMath.md","moduleTitle":"core/math/MeshMath","source":"engine/core/math/MeshMath.js","import":"/engine/core/math/MeshMath.js","sourceHash":"22e5e1d4b25b5d8e42256692e5ef3088f767cd19399939288286eb017ccaff5d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshMath.js#0009:gossipFanoutReport","exportIndex":9,"name":"gossipFanoutReport","kind":"function","signature":"gossipFanoutReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshMath.md","moduleTitle":"core/math/MeshMath","source":"engine/core/math/MeshMath.js","import":"/engine/core/math/MeshMath.js","sourceHash":"22e5e1d4b25b5d8e42256692e5ef3088f767cd19399939288286eb017ccaff5d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshMath.js#0010:redundantPathReport","exportIndex":10,"name":"redundantPathReport","kind":"function","signature":"redundantPathReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshMath.md","moduleTitle":"core/math/MeshMath","source":"engine/core/math/MeshMath.js","import":"/engine/core/math/MeshMath.js","sourceHash":"22e5e1d4b25b5d8e42256692e5ef3088f767cd19399939288286eb017ccaff5d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshMath.js#0011:meshHealthReport","exportIndex":11,"name":"meshHealthReport","kind":"function","signature":"meshHealthReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshMath.md","moduleTitle":"core/math/MeshMath","source":"engine/core/math/MeshMath.js","import":"/engine/core/math/MeshMath.js","sourceHash":"22e5e1d4b25b5d8e42256692e5ef3088f767cd19399939288286eb017ccaff5d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshMath.js#0012:topologyModeReport","exportIndex":12,"name":"topologyModeReport","kind":"function","signature":"topologyModeReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshMath.md","moduleTitle":"core/math/MeshMath","source":"engine/core/math/MeshMath.js","import":"/engine/core/math/MeshMath.js","sourceHash":"22e5e1d4b25b5d8e42256692e5ef3088f767cd19399939288286eb017ccaff5d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshMath.js#0013:MESH_MIN_DEGREE","exportIndex":13,"name":"MESH_MIN_DEGREE","kind":"constant","signature":"MESH_MIN_DEGREE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshMath.md","moduleTitle":"core/math/MeshMath","source":"engine/core/math/MeshMath.js","import":"/engine/core/math/MeshMath.js","sourceHash":"22e5e1d4b25b5d8e42256692e5ef3088f767cd19399939288286eb017ccaff5d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshMath.js#0014:MESH_DEFAULT_IDEAL_DEGREE","exportIndex":14,"name":"MESH_DEFAULT_IDEAL_DEGREE","kind":"constant","signature":"MESH_DEFAULT_IDEAL_DEGREE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshMath.md","moduleTitle":"core/math/MeshMath","source":"engine/core/math/MeshMath.js","import":"/engine/core/math/MeshMath.js","sourceHash":"22e5e1d4b25b5d8e42256692e5ef3088f767cd19399939288286eb017ccaff5d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshMath.js#0015:MESH_MAX_DEGREE","exportIndex":15,"name":"MESH_MAX_DEGREE","kind":"constant","signature":"MESH_MAX_DEGREE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshMath.md","moduleTitle":"core/math/MeshMath","source":"engine/core/math/MeshMath.js","import":"/engine/core/math/MeshMath.js","sourceHash":"22e5e1d4b25b5d8e42256692e5ef3088f767cd19399939288286eb017ccaff5d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshMath.js#0016:MESH_SUPERNODE_DEGREE","exportIndex":16,"name":"MESH_SUPERNODE_DEGREE","kind":"constant","signature":"MESH_SUPERNODE_DEGREE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshMath.md","moduleTitle":"core/math/MeshMath","source":"engine/core/math/MeshMath.js","import":"/engine/core/math/MeshMath.js","sourceHash":"22e5e1d4b25b5d8e42256692e5ef3088f767cd19399939288286eb017ccaff5d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshMath.js#0017:MESH_FULL_MESH_CEILING","exportIndex":17,"name":"MESH_FULL_MESH_CEILING","kind":"constant","signature":"MESH_FULL_MESH_CEILING","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshMath.md","moduleTitle":"core/math/MeshMath","source":"engine/core/math/MeshMath.js","import":"/engine/core/math/MeshMath.js","sourceHash":"22e5e1d4b25b5d8e42256692e5ef3088f767cd19399939288286eb017ccaff5d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshMath.js#0018:MESH_SUPERNODE_THRESHOLD","exportIndex":18,"name":"MESH_SUPERNODE_THRESHOLD","kind":"constant","signature":"MESH_SUPERNODE_THRESHOLD","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshMath.md","moduleTitle":"core/math/MeshMath","source":"engine/core/math/MeshMath.js","import":"/engine/core/math/MeshMath.js","sourceHash":"22e5e1d4b25b5d8e42256692e5ef3088f767cd19399939288286eb017ccaff5d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshMath.js#0019:MESH_SUPERNODE_SCORE","exportIndex":19,"name":"MESH_SUPERNODE_SCORE","kind":"constant","signature":"MESH_SUPERNODE_SCORE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshMath.md","moduleTitle":"core/math/MeshMath","source":"engine/core/math/MeshMath.js","import":"/engine/core/math/MeshMath.js","sourceHash":"22e5e1d4b25b5d8e42256692e5ef3088f767cd19399939288286eb017ccaff5d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshMath.js#0020:MESH_GOSSIP_FACTOR","exportIndex":20,"name":"MESH_GOSSIP_FACTOR","kind":"constant","signature":"MESH_GOSSIP_FACTOR","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshMath.md","moduleTitle":"core/math/MeshMath","source":"engine/core/math/MeshMath.js","import":"/engine/core/math/MeshMath.js","sourceHash":"22e5e1d4b25b5d8e42256692e5ef3088f767cd19399939288286eb017ccaff5d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshMath.js#0021:MESH_GOSSIP_MIN_LAZY","exportIndex":21,"name":"MESH_GOSSIP_MIN_LAZY","kind":"constant","signature":"MESH_GOSSIP_MIN_LAZY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshMath.md","moduleTitle":"core/math/MeshMath","source":"engine/core/math/MeshMath.js","import":"/engine/core/math/MeshMath.js","sourceHash":"22e5e1d4b25b5d8e42256692e5ef3088f767cd19399939288286eb017ccaff5d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshMath.js#0022:MESH_GOSSIP_ROUNDS","exportIndex":22,"name":"MESH_GOSSIP_ROUNDS","kind":"constant","signature":"MESH_GOSSIP_ROUNDS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshMath.md","moduleTitle":"core/math/MeshMath","source":"engine/core/math/MeshMath.js","import":"/engine/core/math/MeshMath.js","sourceHash":"22e5e1d4b25b5d8e42256692e5ef3088f767cd19399939288286eb017ccaff5d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshMath.js#0023:MESH_NEIGHBOR_SCORE_WEIGHTS","exportIndex":23,"name":"MESH_NEIGHBOR_SCORE_WEIGHTS","kind":"constant","signature":"MESH_NEIGHBOR_SCORE_WEIGHTS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshMath.md","moduleTitle":"core/math/MeshMath","source":"engine/core/math/MeshMath.js","import":"/engine/core/math/MeshMath.js","sourceHash":"22e5e1d4b25b5d8e42256692e5ef3088f767cd19399939288286eb017ccaff5d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshMath.js#0024:MESH_LINK_QUALITY_WEIGHTS","exportIndex":24,"name":"MESH_LINK_QUALITY_WEIGHTS","kind":"constant","signature":"MESH_LINK_QUALITY_WEIGHTS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshMath.md","moduleTitle":"core/math/MeshMath","source":"engine/core/math/MeshMath.js","import":"/engine/core/math/MeshMath.js","sourceHash":"22e5e1d4b25b5d8e42256692e5ef3088f767cd19399939288286eb017ccaff5d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshMath.js#0025:MESH_SUPERNODE_TIER_MULTIPLIER","exportIndex":25,"name":"MESH_SUPERNODE_TIER_MULTIPLIER","kind":"constant","signature":"MESH_SUPERNODE_TIER_MULTIPLIER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/MeshMath.md","moduleTitle":"core/math/MeshMath","source":"engine/core/math/MeshMath.js","import":"/engine/core/math/MeshMath.js","sourceHash":"22e5e1d4b25b5d8e42256692e5ef3088f767cd19399939288286eb017ccaff5d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/MeshMath.js#0026:MESH_NEIGHBOR_TIER_PENALTY","exportIndex":26,"name":"MESH_NEIGHBOR_TIER_PENALTY","kind":"constant","signature":"MESH_NEIGHBOR_TIER_PENALTY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/NavigationMath.md","moduleTitle":"core/math/NavigationMath","source":"engine/core/math/NavigationMath.js","import":"/engine/core/math/NavigationMath.js","sourceHash":"95de2633178db6fe90445bfcfe340da30eaa78d1a3bf917e0e3312e9ba6eeb3f","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/NavigationMath.js","title":"core/math/NavigationMath","summary":"NavigationMath.js - pure navigation corridor, path, area-cost, and steering reports.","exportCount":12}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/NavigationMath.md","moduleTitle":"core/math/NavigationMath","source":"engine/core/math/NavigationMath.js","import":"/engine/core/math/NavigationMath.js","sourceHash":"95de2633178db6fe90445bfcfe340da30eaa78d1a3bf917e0e3312e9ba6eeb3f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/NavigationMath.js#0000:navPoint2","exportIndex":0,"name":"navPoint2","kind":"function","signature":"navPoint2(point, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/NavigationMath.md","moduleTitle":"core/math/NavigationMath","source":"engine/core/math/NavigationMath.js","import":"/engine/core/math/NavigationMath.js","sourceHash":"95de2633178db6fe90445bfcfe340da30eaa78d1a3bf917e0e3312e9ba6eeb3f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/NavigationMath.js#0001:navDistance2D","exportIndex":1,"name":"navDistance2D","kind":"function","signature":"navDistance2D(a, b, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/NavigationMath.md","moduleTitle":"core/math/NavigationMath","source":"engine/core/math/NavigationMath.js","import":"/engine/core/math/NavigationMath.js","sourceHash":"95de2633178db6fe90445bfcfe340da30eaa78d1a3bf917e0e3312e9ba6eeb3f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/NavigationMath.js#0002:navPathLength","exportIndex":2,"name":"navPathLength","kind":"function","signature":"navPathLength(waypoints = [], options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/NavigationMath.md","moduleTitle":"core/math/NavigationMath","source":"engine/core/math/NavigationMath.js","import":"/engine/core/math/NavigationMath.js","sourceHash":"95de2633178db6fe90445bfcfe340da30eaa78d1a3bf917e0e3312e9ba6eeb3f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/NavigationMath.js#0003:navPortalReport","exportIndex":3,"name":"navPortalReport","kind":"function","signature":"navPortalReport(portal, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/NavigationMath.md","moduleTitle":"core/math/NavigationMath","source":"engine/core/math/NavigationMath.js","import":"/engine/core/math/NavigationMath.js","sourceHash":"95de2633178db6fe90445bfcfe340da30eaa78d1a3bf917e0e3312e9ba6eeb3f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/NavigationMath.js#0004:navStringPull","exportIndex":4,"name":"navStringPull","kind":"function","signature":"navStringPull(portals = [], options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/NavigationMath.md","moduleTitle":"core/math/NavigationMath","source":"engine/core/math/NavigationMath.js","import":"/engine/core/math/NavigationMath.js","sourceHash":"95de2633178db6fe90445bfcfe340da30eaa78d1a3bf917e0e3312e9ba6eeb3f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/NavigationMath.js#0005:navPathCorridorReport","exportIndex":5,"name":"navPathCorridorReport","kind":"function","signature":"navPathCorridorReport(portals = [], options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/NavigationMath.md","moduleTitle":"core/math/NavigationMath","source":"engine/core/math/NavigationMath.js","import":"/engine/core/math/NavigationMath.js","sourceHash":"95de2633178db6fe90445bfcfe340da30eaa78d1a3bf917e0e3312e9ba6eeb3f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/NavigationMath.js#0006:navAreaTraversalCost","exportIndex":6,"name":"navAreaTraversalCost","kind":"function","signature":"navAreaTraversalCost(distance, area = 0, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/NavigationMath.md","moduleTitle":"core/math/NavigationMath","source":"engine/core/math/NavigationMath.js","import":"/engine/core/math/NavigationMath.js","sourceHash":"95de2633178db6fe90445bfcfe340da30eaa78d1a3bf917e0e3312e9ba6eeb3f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/NavigationMath.js#0007:navNearestPolyScore","exportIndex":7,"name":"navNearestPolyScore","kind":"function","signature":"navNearestPolyScore(point, polygon, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/NavigationMath.md","moduleTitle":"core/math/NavigationMath","source":"engine/core/math/NavigationMath.js","import":"/engine/core/math/NavigationMath.js","sourceHash":"95de2633178db6fe90445bfcfe340da30eaa78d1a3bf917e0e3312e9ba6eeb3f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/NavigationMath.js#0008:navPackPolyRef","exportIndex":8,"name":"navPackPolyRef","kind":"function","signature":"navPackPolyRef(ref = {}, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/NavigationMath.md","moduleTitle":"core/math/NavigationMath","source":"engine/core/math/NavigationMath.js","import":"/engine/core/math/NavigationMath.js","sourceHash":"95de2633178db6fe90445bfcfe340da30eaa78d1a3bf917e0e3312e9ba6eeb3f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/NavigationMath.js#0009:navUnpackPolyRef","exportIndex":9,"name":"navUnpackPolyRef","kind":"function","signature":"navUnpackPolyRef(value, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/NavigationMath.md","moduleTitle":"core/math/NavigationMath","source":"engine/core/math/NavigationMath.js","import":"/engine/core/math/NavigationMath.js","sourceHash":"95de2633178db6fe90445bfcfe340da30eaa78d1a3bf917e0e3312e9ba6eeb3f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/NavigationMath.js#0010:navSmoothPath","exportIndex":10,"name":"navSmoothPath","kind":"function","signature":"navSmoothPath(waypoints = [], smoothing = 0.5, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/NavigationMath.md","moduleTitle":"core/math/NavigationMath","source":"engine/core/math/NavigationMath.js","import":"/engine/core/math/NavigationMath.js","sourceHash":"95de2633178db6fe90445bfcfe340da30eaa78d1a3bf917e0e3312e9ba6eeb3f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/NavigationMath.js#0011:navSteeringTargetReport","exportIndex":11,"name":"navSteeringTargetReport","kind":"function","signature":"navSteeringTargetReport(currentPosition, waypoints = [], options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/NetworkMetricMath.md","moduleTitle":"core/math/NetworkMetricMath","source":"engine/core/math/NetworkMetricMath.js","import":"/engine/core/math/NetworkMetricMath.js","sourceHash":"33a7e1aa682956444b31015a9efaf1f011e17bb2e25aba77aa9866e52d59da8a","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/NetworkMetricMath.js","title":"core/math/NetworkMetricMath","summary":"NetworkMetricMath.js - reusable RTT, jitter, loss, throughput, goodput, and timeout helpers.","exportCount":24}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/NetworkMetricMath.md","moduleTitle":"core/math/NetworkMetricMath","source":"engine/core/math/NetworkMetricMath.js","import":"/engine/core/math/NetworkMetricMath.js","sourceHash":"33a7e1aa682956444b31015a9efaf1f011e17bb2e25aba77aa9866e52d59da8a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/NetworkMetricMath.js#0000:networkDurationSeconds","exportIndex":0,"name":"networkDurationSeconds","kind":"function","signature":"networkDurationSeconds(durationMs)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/NetworkMetricMath.md","moduleTitle":"core/math/NetworkMetricMath","source":"engine/core/math/NetworkMetricMath.js","import":"/engine/core/math/NetworkMetricMath.js","sourceHash":"33a7e1aa682956444b31015a9efaf1f011e17bb2e25aba77aa9866e52d59da8a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/NetworkMetricMath.js#0001:networkRatePerSecond","exportIndex":1,"name":"networkRatePerSecond","kind":"function","signature":"networkRatePerSecond(count, durationMs)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/NetworkMetricMath.md","moduleTitle":"core/math/NetworkMetricMath","source":"engine/core/math/NetworkMetricMath.js","import":"/engine/core/math/NetworkMetricMath.js","sourceHash":"33a7e1aa682956444b31015a9efaf1f011e17bb2e25aba77aa9866e52d59da8a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/NetworkMetricMath.js#0002:packetsPerSecond","exportIndex":2,"name":"packetsPerSecond","kind":"function","signature":"packetsPerSecond(packetCount, durationMs)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/NetworkMetricMath.md","moduleTitle":"core/math/NetworkMetricMath","source":"engine/core/math/NetworkMetricMath.js","import":"/engine/core/math/NetworkMetricMath.js","sourceHash":"33a7e1aa682956444b31015a9efaf1f011e17bb2e25aba77aa9866e52d59da8a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/NetworkMetricMath.js#0003:bitrateBps","exportIndex":3,"name":"bitrateBps","kind":"function","signature":"bitrateBps(byteCount, durationMs)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/NetworkMetricMath.md","moduleTitle":"core/math/NetworkMetricMath","source":"engine/core/math/NetworkMetricMath.js","import":"/engine/core/math/NetworkMetricMath.js","sourceHash":"33a7e1aa682956444b31015a9efaf1f011e17bb2e25aba77aa9866e52d59da8a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/NetworkMetricMath.js#0004:throughputBps","exportIndex":4,"name":"throughputBps","kind":"function","signature":"throughputBps(byteCount, durationMs)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/NetworkMetricMath.md","moduleTitle":"core/math/NetworkMetricMath","source":"engine/core/math/NetworkMetricMath.js","import":"/engine/core/math/NetworkMetricMath.js","sourceHash":"33a7e1aa682956444b31015a9efaf1f011e17bb2e25aba77aa9866e52d59da8a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/NetworkMetricMath.js#0005:goodputReport","exportIndex":5,"name":"goodputReport","kind":"function","signature":"goodputReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/NetworkMetricMath.md","moduleTitle":"core/math/NetworkMetricMath","source":"engine/core/math/NetworkMetricMath.js","import":"/engine/core/math/NetworkMetricMath.js","sourceHash":"33a7e1aa682956444b31015a9efaf1f011e17bb2e25aba77aa9866e52d59da8a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/NetworkMetricMath.js#0006:packetLossReport","exportIndex":6,"name":"packetLossReport","kind":"function","signature":"packetLossReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/NetworkMetricMath.md","moduleTitle":"core/math/NetworkMetricMath","source":"engine/core/math/NetworkMetricMath.js","import":"/engine/core/math/NetworkMetricMath.js","sourceHash":"33a7e1aa682956444b31015a9efaf1f011e17bb2e25aba77aa9866e52d59da8a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/NetworkMetricMath.js#0007:rttSampleMs","exportIndex":7,"name":"rttSampleMs","kind":"function","signature":"rttSampleMs(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/NetworkMetricMath.md","moduleTitle":"core/math/NetworkMetricMath","source":"engine/core/math/NetworkMetricMath.js","import":"/engine/core/math/NetworkMetricMath.js","sourceHash":"33a7e1aa682956444b31015a9efaf1f011e17bb2e25aba77aa9866e52d59da8a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/NetworkMetricMath.js#0008:oneWayLatencyEstimateMs","exportIndex":8,"name":"oneWayLatencyEstimateMs","kind":"function","signature":"oneWayLatencyEstimateMs(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/NetworkMetricMath.md","moduleTitle":"core/math/NetworkMetricMath","source":"engine/core/math/NetworkMetricMath.js","import":"/engine/core/math/NetworkMetricMath.js","sourceHash":"33a7e1aa682956444b31015a9efaf1f011e17bb2e25aba77aa9866e52d59da8a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/NetworkMetricMath.js#0009:timeoutEstimateMs","exportIndex":9,"name":"timeoutEstimateMs","kind":"function","signature":"timeoutEstimateMs(estimator = {}, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/NetworkMetricMath.md","moduleTitle":"core/math/NetworkMetricMath","source":"engine/core/math/NetworkMetricMath.js","import":"/engine/core/math/NetworkMetricMath.js","sourceHash":"33a7e1aa682956444b31015a9efaf1f011e17bb2e25aba77aa9866e52d59da8a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/NetworkMetricMath.js#0010:rttEstimatorUpdate","exportIndex":10,"name":"rttEstimatorUpdate","kind":"function","signature":"rttEstimatorUpdate(sampleRttMs, previous = null, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/NetworkMetricMath.md","moduleTitle":"core/math/NetworkMetricMath","source":"engine/core/math/NetworkMetricMath.js","import":"/engine/core/math/NetworkMetricMath.js","sourceHash":"33a7e1aa682956444b31015a9efaf1f011e17bb2e25aba77aa9866e52d59da8a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/NetworkMetricMath.js#0011:quicProbeTimeoutMs","exportIndex":11,"name":"quicProbeTimeoutMs","kind":"function","signature":"quicProbeTimeoutMs(estimator = {}, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/NetworkMetricMath.md","moduleTitle":"core/math/NetworkMetricMath","source":"engine/core/math/NetworkMetricMath.js","import":"/engine/core/math/NetworkMetricMath.js","sourceHash":"33a7e1aa682956444b31015a9efaf1f011e17bb2e25aba77aa9866e52d59da8a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/NetworkMetricMath.js#0012:rtpTransitTimeMs","exportIndex":12,"name":"rtpTransitTimeMs","kind":"function","signature":"rtpTransitTimeMs(packet = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/NetworkMetricMath.md","moduleTitle":"core/math/NetworkMetricMath","source":"engine/core/math/NetworkMetricMath.js","import":"/engine/core/math/NetworkMetricMath.js","sourceHash":"33a7e1aa682956444b31015a9efaf1f011e17bb2e25aba77aa9866e52d59da8a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/NetworkMetricMath.js#0013:interarrivalJitterUpdate","exportIndex":13,"name":"interarrivalJitterUpdate","kind":"function","signature":"interarrivalJitterUpdate(previousTransitMs, currentTransitMs, previousJitterMs = 0, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/NetworkMetricMath.md","moduleTitle":"core/math/NetworkMetricMath","source":"engine/core/math/NetworkMetricMath.js","import":"/engine/core/math/NetworkMetricMath.js","sourceHash":"33a7e1aa682956444b31015a9efaf1f011e17bb2e25aba77aa9866e52d59da8a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/NetworkMetricMath.js#0014:rtpInterarrivalJitterUpdate","exportIndex":14,"name":"rtpInterarrivalJitterUpdate","kind":"function","signature":"rtpInterarrivalJitterUpdate(previous = null, packet = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/NetworkMetricMath.md","moduleTitle":"core/math/NetworkMetricMath","source":"engine/core/math/NetworkMetricMath.js","import":"/engine/core/math/NetworkMetricMath.js","sourceHash":"33a7e1aa682956444b31015a9efaf1f011e17bb2e25aba77aa9866e52d59da8a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/NetworkMetricMath.js#0015:latencyJitterReport","exportIndex":15,"name":"latencyJitterReport","kind":"function","signature":"latencyJitterReport(samplesMs = [])","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/NetworkMetricMath.md","moduleTitle":"core/math/NetworkMetricMath","source":"engine/core/math/NetworkMetricMath.js","import":"/engine/core/math/NetworkMetricMath.js","sourceHash":"33a7e1aa682956444b31015a9efaf1f011e17bb2e25aba77aa9866e52d59da8a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/NetworkMetricMath.js#0016:networkQualityReport","exportIndex":16,"name":"networkQualityReport","kind":"function","signature":"networkQualityReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/NetworkMetricMath.md","moduleTitle":"core/math/NetworkMetricMath","source":"engine/core/math/NetworkMetricMath.js","import":"/engine/core/math/NetworkMetricMath.js","sourceHash":"33a7e1aa682956444b31015a9efaf1f011e17bb2e25aba77aa9866e52d59da8a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/NetworkMetricMath.js#0017:NETWORK_RTO_ALPHA","exportIndex":17,"name":"NETWORK_RTO_ALPHA","kind":"constant","signature":"NETWORK_RTO_ALPHA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/NetworkMetricMath.md","moduleTitle":"core/math/NetworkMetricMath","source":"engine/core/math/NetworkMetricMath.js","import":"/engine/core/math/NetworkMetricMath.js","sourceHash":"33a7e1aa682956444b31015a9efaf1f011e17bb2e25aba77aa9866e52d59da8a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/NetworkMetricMath.js#0018:NETWORK_RTO_BETA","exportIndex":18,"name":"NETWORK_RTO_BETA","kind":"constant","signature":"NETWORK_RTO_BETA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/NetworkMetricMath.md","moduleTitle":"core/math/NetworkMetricMath","source":"engine/core/math/NetworkMetricMath.js","import":"/engine/core/math/NetworkMetricMath.js","sourceHash":"33a7e1aa682956444b31015a9efaf1f011e17bb2e25aba77aa9866e52d59da8a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/NetworkMetricMath.js#0019:NETWORK_RTO_VARIANCE_MULTIPLIER","exportIndex":19,"name":"NETWORK_RTO_VARIANCE_MULTIPLIER","kind":"constant","signature":"NETWORK_RTO_VARIANCE_MULTIPLIER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/NetworkMetricMath.md","moduleTitle":"core/math/NetworkMetricMath","source":"engine/core/math/NetworkMetricMath.js","import":"/engine/core/math/NetworkMetricMath.js","sourceHash":"33a7e1aa682956444b31015a9efaf1f011e17bb2e25aba77aa9866e52d59da8a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/NetworkMetricMath.js#0020:NETWORK_DEFAULT_MIN_TIMEOUT_MS","exportIndex":20,"name":"NETWORK_DEFAULT_MIN_TIMEOUT_MS","kind":"constant","signature":"NETWORK_DEFAULT_MIN_TIMEOUT_MS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/NetworkMetricMath.md","moduleTitle":"core/math/NetworkMetricMath","source":"engine/core/math/NetworkMetricMath.js","import":"/engine/core/math/NetworkMetricMath.js","sourceHash":"33a7e1aa682956444b31015a9efaf1f011e17bb2e25aba77aa9866e52d59da8a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/NetworkMetricMath.js#0021:NETWORK_DEFAULT_MAX_TIMEOUT_MS","exportIndex":21,"name":"NETWORK_DEFAULT_MAX_TIMEOUT_MS","kind":"constant","signature":"NETWORK_DEFAULT_MAX_TIMEOUT_MS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/NetworkMetricMath.md","moduleTitle":"core/math/NetworkMetricMath","source":"engine/core/math/NetworkMetricMath.js","import":"/engine/core/math/NetworkMetricMath.js","sourceHash":"33a7e1aa682956444b31015a9efaf1f011e17bb2e25aba77aa9866e52d59da8a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/NetworkMetricMath.js#0022:NETWORK_DEFAULT_CLOCK_GRANULARITY_MS","exportIndex":22,"name":"NETWORK_DEFAULT_CLOCK_GRANULARITY_MS","kind":"constant","signature":"NETWORK_DEFAULT_CLOCK_GRANULARITY_MS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/NetworkMetricMath.md","moduleTitle":"core/math/NetworkMetricMath","source":"engine/core/math/NetworkMetricMath.js","import":"/engine/core/math/NetworkMetricMath.js","sourceHash":"33a7e1aa682956444b31015a9efaf1f011e17bb2e25aba77aa9866e52d59da8a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/NetworkMetricMath.js#0023:NETWORK_RTP_JITTER_GAIN","exportIndex":23,"name":"NETWORK_RTP_JITTER_GAIN","kind":"constant","signature":"NETWORK_RTP_JITTER_GAIN","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/PacketMath.md","moduleTitle":"core/math/PacketMath","source":"engine/core/math/PacketMath.js","import":"/engine/core/math/PacketMath.js","sourceHash":"af0324e10600c8b8a0b2e21f5fb31691ba433b1fb188b64e529a217cc115df96","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/PacketMath.js","title":"core/math/PacketMath","summary":"PacketMath.js - reusable packet sequence, ACK range, fragmentation, flight, and loss helpers.","exportCount":24}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/PacketMath.md","moduleTitle":"core/math/PacketMath","source":"engine/core/math/PacketMath.js","import":"/engine/core/math/PacketMath.js","sourceHash":"af0324e10600c8b8a0b2e21f5fb31691ba433b1fb188b64e529a217cc115df96","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/PacketMath.js#0000:packetSequenceModulo","exportIndex":0,"name":"packetSequenceModulo","kind":"function","signature":"packetSequenceModulo(sequenceBits = PACKET_SEQUENCE_BITS_DEFAULT)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/PacketMath.md","moduleTitle":"core/math/PacketMath","source":"engine/core/math/PacketMath.js","import":"/engine/core/math/PacketMath.js","sourceHash":"af0324e10600c8b8a0b2e21f5fb31691ba433b1fb188b64e529a217cc115df96","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/PacketMath.js#0001:wrapPacketSequence","exportIndex":1,"name":"wrapPacketSequence","kind":"function","signature":"wrapPacketSequence(sequence, sequenceBits = PACKET_SEQUENCE_BITS_DEFAULT)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/PacketMath.md","moduleTitle":"core/math/PacketMath","source":"engine/core/math/PacketMath.js","import":"/engine/core/math/PacketMath.js","sourceHash":"af0324e10600c8b8a0b2e21f5fb31691ba433b1fb188b64e529a217cc115df96","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/PacketMath.js#0002:advancePacketSequence","exportIndex":2,"name":"advancePacketSequence","kind":"function","signature":"advancePacketSequence(sequence, increment = 1, sequenceBits = PACKET_SEQUENCE_BITS_DEFAULT)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/PacketMath.md","moduleTitle":"core/math/PacketMath","source":"engine/core/math/PacketMath.js","import":"/engine/core/math/PacketMath.js","sourceHash":"af0324e10600c8b8a0b2e21f5fb31691ba433b1fb188b64e529a217cc115df96","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/PacketMath.js#0003:packetSequenceForwardDelta","exportIndex":3,"name":"packetSequenceForwardDelta","kind":"function","signature":"packetSequenceForwardDelta(fromSequence, toSequence, sequenceBits = PACKET_SEQUENCE_BITS_DEFAULT)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/PacketMath.md","moduleTitle":"core/math/PacketMath","source":"engine/core/math/PacketMath.js","import":"/engine/core/math/PacketMath.js","sourceHash":"af0324e10600c8b8a0b2e21f5fb31691ba433b1fb188b64e529a217cc115df96","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/PacketMath.js#0004:packetSequenceSignedDelta","exportIndex":4,"name":"packetSequenceSignedDelta","kind":"function","signature":"packetSequenceSignedDelta(fromSequence, toSequence, sequenceBits = PACKET_SEQUENCE_BITS_DEFAULT)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/PacketMath.md","moduleTitle":"core/math/PacketMath","source":"engine/core/math/PacketMath.js","import":"/engine/core/math/PacketMath.js","sourceHash":"af0324e10600c8b8a0b2e21f5fb31691ba433b1fb188b64e529a217cc115df96","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/PacketMath.js#0005:comparePacketSequence","exportIndex":5,"name":"comparePacketSequence","kind":"function","signature":"comparePacketSequence(leftSequence, rightSequence, sequenceBits = PACKET_SEQUENCE_BITS_DEFAULT)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/PacketMath.md","moduleTitle":"core/math/PacketMath","source":"engine/core/math/PacketMath.js","import":"/engine/core/math/PacketMath.js","sourceHash":"af0324e10600c8b8a0b2e21f5fb31691ba433b1fb188b64e529a217cc115df96","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/PacketMath.js#0006:isPacketSequenceNewer","exportIndex":6,"name":"isPacketSequenceNewer","kind":"function","signature":"isPacketSequenceNewer(candidateSequence, baselineSequence, sequenceBits = PACKET_SEQUENCE_BITS_DEFAULT)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/PacketMath.md","moduleTitle":"core/math/PacketMath","source":"engine/core/math/PacketMath.js","import":"/engine/core/math/PacketMath.js","sourceHash":"af0324e10600c8b8a0b2e21f5fb31691ba433b1fb188b64e529a217cc115df96","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/PacketMath.js#0007:packetSequenceWindowReport","exportIndex":7,"name":"packetSequenceWindowReport","kind":"function","signature":"packetSequenceWindowReport(sequence, windowStart, windowSize, sequenceBits = PACKET_SEQUENCE_BITS_DEFAULT)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/PacketMath.md","moduleTitle":"core/math/PacketMath","source":"engine/core/math/PacketMath.js","import":"/engine/core/math/PacketMath.js","sourceHash":"af0324e10600c8b8a0b2e21f5fb31691ba433b1fb188b64e529a217cc115df96","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/PacketMath.js#0008:packetAckRangeReport","exportIndex":8,"name":"packetAckRangeReport","kind":"function","signature":"packetAckRangeReport(packetNumbers = [], options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/PacketMath.md","moduleTitle":"core/math/PacketMath","source":"engine/core/math/PacketMath.js","import":"/engine/core/math/PacketMath.js","sourceHash":"af0324e10600c8b8a0b2e21f5fb31691ba433b1fb188b64e529a217cc115df96","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/PacketMath.js#0009:packetMissingRangeReport","exportIndex":9,"name":"packetMissingRangeReport","kind":"function","signature":"packetMissingRangeReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/PacketMath.md","moduleTitle":"core/math/PacketMath","source":"engine/core/math/PacketMath.js","import":"/engine/core/math/PacketMath.js","sourceHash":"af0324e10600c8b8a0b2e21f5fb31691ba433b1fb188b64e529a217cc115df96","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/PacketMath.js#0010:packetPayloadBudgetReport","exportIndex":10,"name":"packetPayloadBudgetReport","kind":"function","signature":"packetPayloadBudgetReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/PacketMath.md","moduleTitle":"core/math/PacketMath","source":"engine/core/math/PacketMath.js","import":"/engine/core/math/PacketMath.js","sourceHash":"af0324e10600c8b8a0b2e21f5fb31691ba433b1fb188b64e529a217cc115df96","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/PacketMath.js#0011:packetFragmentPlan","exportIndex":11,"name":"packetFragmentPlan","kind":"function","signature":"packetFragmentPlan(payloadBytes, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/PacketMath.md","moduleTitle":"core/math/PacketMath","source":"engine/core/math/PacketMath.js","import":"/engine/core/math/PacketMath.js","sourceHash":"af0324e10600c8b8a0b2e21f5fb31691ba433b1fb188b64e529a217cc115df96","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/PacketMath.js#0012:packetReassemblyReport","exportIndex":12,"name":"packetReassemblyReport","kind":"function","signature":"packetReassemblyReport(fragments = [], options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/PacketMath.md","moduleTitle":"core/math/PacketMath","source":"engine/core/math/PacketMath.js","import":"/engine/core/math/PacketMath.js","sourceHash":"af0324e10600c8b8a0b2e21f5fb31691ba433b1fb188b64e529a217cc115df96","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/PacketMath.js#0013:packetFlightReport","exportIndex":13,"name":"packetFlightReport","kind":"function","signature":"packetFlightReport(packets = [])","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/PacketMath.md","moduleTitle":"core/math/PacketMath","source":"engine/core/math/PacketMath.js","import":"/engine/core/math/PacketMath.js","sourceHash":"af0324e10600c8b8a0b2e21f5fb31691ba433b1fb188b64e529a217cc115df96","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/PacketMath.js#0014:packetSendWindowReport","exportIndex":14,"name":"packetSendWindowReport","kind":"function","signature":"packetSendWindowReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/PacketMath.md","moduleTitle":"core/math/PacketMath","source":"engine/core/math/PacketMath.js","import":"/engine/core/math/PacketMath.js","sourceHash":"af0324e10600c8b8a0b2e21f5fb31691ba433b1fb188b64e529a217cc115df96","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/PacketMath.js#0015:packetLossCandidateReport","exportIndex":15,"name":"packetLossCandidateReport","kind":"function","signature":"packetLossCandidateReport(sentPackets = [], options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/PacketMath.md","moduleTitle":"core/math/PacketMath","source":"engine/core/math/PacketMath.js","import":"/engine/core/math/PacketMath.js","sourceHash":"af0324e10600c8b8a0b2e21f5fb31691ba433b1fb188b64e529a217cc115df96","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/PacketMath.js#0016:quicPacketNumberEncodingBytes","exportIndex":16,"name":"quicPacketNumberEncodingBytes","kind":"function","signature":"quicPacketNumberEncodingBytes(packetNumber, largestAcknowledgedPacket = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/PacketMath.md","moduleTitle":"core/math/PacketMath","source":"engine/core/math/PacketMath.js","import":"/engine/core/math/PacketMath.js","sourceHash":"af0324e10600c8b8a0b2e21f5fb31691ba433b1fb188b64e529a217cc115df96","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/PacketMath.js#0017:quicDecodeTruncatedPacketNumber","exportIndex":17,"name":"quicDecodeTruncatedPacketNumber","kind":"function","signature":"quicDecodeTruncatedPacketNumber(largestReceivedPacket, truncatedPacketNumber, packetNumberBits)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/PacketMath.md","moduleTitle":"core/math/PacketMath","source":"engine/core/math/PacketMath.js","import":"/engine/core/math/PacketMath.js","sourceHash":"af0324e10600c8b8a0b2e21f5fb31691ba433b1fb188b64e529a217cc115df96","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/PacketMath.js#0018:PACKET_SEQUENCE_BITS_DEFAULT","exportIndex":18,"name":"PACKET_SEQUENCE_BITS_DEFAULT","kind":"constant","signature":"PACKET_SEQUENCE_BITS_DEFAULT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/PacketMath.md","moduleTitle":"core/math/PacketMath","source":"engine/core/math/PacketMath.js","import":"/engine/core/math/PacketMath.js","sourceHash":"af0324e10600c8b8a0b2e21f5fb31691ba433b1fb188b64e529a217cc115df96","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/PacketMath.js#0019:PACKET_SEQUENCE_BITS_MAX_SAFE","exportIndex":19,"name":"PACKET_SEQUENCE_BITS_MAX_SAFE","kind":"constant","signature":"PACKET_SEQUENCE_BITS_MAX_SAFE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/PacketMath.md","moduleTitle":"core/math/PacketMath","source":"engine/core/math/PacketMath.js","import":"/engine/core/math/PacketMath.js","sourceHash":"af0324e10600c8b8a0b2e21f5fb31691ba433b1fb188b64e529a217cc115df96","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/PacketMath.js#0020:PACKET_LOSS_PACKET_THRESHOLD","exportIndex":20,"name":"PACKET_LOSS_PACKET_THRESHOLD","kind":"constant","signature":"PACKET_LOSS_PACKET_THRESHOLD","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/PacketMath.md","moduleTitle":"core/math/PacketMath","source":"engine/core/math/PacketMath.js","import":"/engine/core/math/PacketMath.js","sourceHash":"af0324e10600c8b8a0b2e21f5fb31691ba433b1fb188b64e529a217cc115df96","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/PacketMath.js#0021:PACKET_LOSS_TIME_THRESHOLD","exportIndex":21,"name":"PACKET_LOSS_TIME_THRESHOLD","kind":"constant","signature":"PACKET_LOSS_TIME_THRESHOLD","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/PacketMath.md","moduleTitle":"core/math/PacketMath","source":"engine/core/math/PacketMath.js","import":"/engine/core/math/PacketMath.js","sourceHash":"af0324e10600c8b8a0b2e21f5fb31691ba433b1fb188b64e529a217cc115df96","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/PacketMath.js#0022:PACKET_LOSS_GRANULARITY_MS","exportIndex":22,"name":"PACKET_LOSS_GRANULARITY_MS","kind":"constant","signature":"PACKET_LOSS_GRANULARITY_MS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/PacketMath.md","moduleTitle":"core/math/PacketMath","source":"engine/core/math/PacketMath.js","import":"/engine/core/math/PacketMath.js","sourceHash":"af0324e10600c8b8a0b2e21f5fb31691ba433b1fb188b64e529a217cc115df96","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/PacketMath.js#0023:PACKET_DEFAULT_DATAGRAM_BYTES","exportIndex":23,"name":"PACKET_DEFAULT_DATAGRAM_BYTES","kind":"constant","signature":"PACKET_DEFAULT_DATAGRAM_BYTES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ProfileMath.md","moduleTitle":"core/math/ProfileMath","source":"engine/core/math/ProfileMath.js","import":"/engine/core/math/ProfileMath.js","sourceHash":"d6ea64bf316e631ac1cadf7c0d4843e5925c10d1d95264db5371b79170fe3981","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/ProfileMath.js","title":"core/math/ProfileMath","summary":"ProfileMath.js - reusable latency, frame-budget, and stage profile summaries.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ProfileMath.md","moduleTitle":"core/math/ProfileMath","source":"engine/core/math/ProfileMath.js","import":"/engine/core/math/ProfileMath.js","sourceHash":"d6ea64bf316e631ac1cadf7c0d4843e5925c10d1d95264db5371b79170fe3981","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ProfileMath.js#0000:latencyStatsReport","exportIndex":0,"name":"latencyStatsReport","kind":"function","signature":"latencyStatsReport(samplesMs, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ProfileMath.md","moduleTitle":"core/math/ProfileMath","source":"engine/core/math/ProfileMath.js","import":"/engine/core/math/ProfileMath.js","sourceHash":"d6ea64bf316e631ac1cadf7c0d4843e5925c10d1d95264db5371b79170fe3981","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ProfileMath.js#0001:frameBudgetReport","exportIndex":1,"name":"frameBudgetReport","kind":"function","signature":"frameBudgetReport(frameTimeMs, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/ProfileMath.md","moduleTitle":"core/math/ProfileMath","source":"engine/core/math/ProfileMath.js","import":"/engine/core/math/ProfileMath.js","sourceHash":"d6ea64bf316e631ac1cadf7c0d4843e5925c10d1d95264db5371b79170fe3981","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/ProfileMath.js#0002:profileStageReport","exportIndex":2,"name":"profileStageReport","kind":"function","signature":"profileStageReport(stages, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/QuantMath.js","title":"core/math/QuantMath","summary":"QuantMath.js - reusable scalar and array quantization primitives.","exportCount":48}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QuantMath.js#0000:quantizationStep","exportIndex":0,"name":"quantizationStep","kind":"function","signature":"quantizationStep(range, maxValue = QUANT_INT16_MAX)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QuantMath.js#0001:quantizationMaxAbsoluteError","exportIndex":1,"name":"quantizationMaxAbsoluteError","kind":"function","signature":"quantizationMaxAbsoluteError(range, maxValue = QUANT_INT16_MAX)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QuantMath.js#0002:quantizeSignedFloat","exportIndex":2,"name":"quantizeSignedFloat","kind":"function","signature":"quantizeSignedFloat(value, range, maxValue = QUANT_INT16_MAX)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QuantMath.js#0003:dequantizeSignedFloat","exportIndex":3,"name":"dequantizeSignedFloat","kind":"function","signature":"dequantizeSignedFloat(quantized, range, maxValue = QUANT_INT16_MAX)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QuantMath.js#0004:quantizeSignedFloatToInt16","exportIndex":4,"name":"quantizeSignedFloatToInt16","kind":"function","signature":"quantizeSignedFloatToInt16(value, range)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QuantMath.js#0005:dequantizeSignedInt16ToFloat","exportIndex":5,"name":"dequantizeSignedInt16ToFloat","kind":"function","signature":"dequantizeSignedInt16ToFloat(quantized, range)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QuantMath.js#0006:quantizeSignedFloatToInt8","exportIndex":6,"name":"quantizeSignedFloatToInt8","kind":"function","signature":"quantizeSignedFloatToInt8(value, range)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QuantMath.js#0007:dequantizeSignedInt8ToFloat","exportIndex":7,"name":"dequantizeSignedInt8ToFloat","kind":"function","signature":"dequantizeSignedInt8ToFloat(quantized, range)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QuantMath.js#0008:quantizeSignedFloatArrayToInt16","exportIndex":8,"name":"quantizeSignedFloatArrayToInt16","kind":"function","signature":"quantizeSignedFloatArrayToInt16(values, range)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QuantMath.js#0009:dequantizeSignedInt16ArrayToFloat32","exportIndex":9,"name":"dequantizeSignedInt16ArrayToFloat32","kind":"function","signature":"dequantizeSignedInt16ArrayToFloat32(quantized, range)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QuantMath.js#0010:quantizeSignedFloatArrayToInt8","exportIndex":10,"name":"quantizeSignedFloatArrayToInt8","kind":"function","signature":"quantizeSignedFloatArrayToInt8(values, range)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QuantMath.js#0011:dequantizeSignedInt8ArrayToFloat32","exportIndex":11,"name":"dequantizeSignedInt8ArrayToFloat32","kind":"function","signature":"dequantizeSignedInt8ArrayToFloat32(quantized, range)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QuantMath.js#0012:quantizeUnitFloatToUint16","exportIndex":12,"name":"quantizeUnitFloatToUint16","kind":"function","signature":"quantizeUnitFloatToUint16(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QuantMath.js#0013:dequantizeUint16ToUnitFloat","exportIndex":13,"name":"dequantizeUint16ToUnitFloat","kind":"function","signature":"dequantizeUint16ToUnitFloat(quantized)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QuantMath.js#0014:quantizeUnitFloatArrayToUint16","exportIndex":14,"name":"quantizeUnitFloatArrayToUint16","kind":"function","signature":"quantizeUnitFloatArrayToUint16(values)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QuantMath.js#0015:dequantizeUint16ArrayToFloat32","exportIndex":15,"name":"dequantizeUint16ArrayToFloat32","kind":"function","signature":"dequantizeUint16ArrayToFloat32(quantized)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QuantMath.js#0016:quantizeVec2ToInt16","exportIndex":16,"name":"quantizeVec2ToInt16","kind":"function","signature":"quantizeVec2ToInt16(value, range)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QuantMath.js#0017:dequantizeVec2FromInt16","exportIndex":17,"name":"dequantizeVec2FromInt16","kind":"function","signature":"dequantizeVec2FromInt16(quantized, range)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QuantMath.js#0018:quantizeVec3ToInt16","exportIndex":18,"name":"quantizeVec3ToInt16","kind":"function","signature":"quantizeVec3ToInt16(value, range)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QuantMath.js#0019:dequantizeVec3FromInt16","exportIndex":19,"name":"dequantizeVec3FromInt16","kind":"function","signature":"dequantizeVec3FromInt16(quantized, range)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QuantMath.js#0020:signedQuantizationMaxValue","exportIndex":20,"name":"signedQuantizationMaxValue","kind":"function","signature":"signedQuantizationMaxValue(bitDepth = 16)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QuantMath.js#0021:unsignedQuantizationMaxValue","exportIndex":21,"name":"unsignedQuantizationMaxValue","kind":"function","signature":"unsignedQuantizationMaxValue(bitDepth = 16)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QuantMath.js#0022:quantizeSignedFloatArray","exportIndex":22,"name":"quantizeSignedFloatArray","kind":"function","signature":"quantizeSignedFloatArray(values, range, bitDepth = 16)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QuantMath.js#0023:dequantizeSignedFloatArray","exportIndex":23,"name":"dequantizeSignedFloatArray","kind":"function","signature":"dequantizeSignedFloatArray(quantized, range, bitDepth = 16)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QuantMath.js#0024:quantizeRange","exportIndex":24,"name":"quantizeRange","kind":"function","signature":"quantizeRange(value, min, max, bitDepth = 16, fallback = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QuantMath.js#0025:dequantizeRange","exportIndex":25,"name":"dequantizeRange","kind":"function","signature":"dequantizeRange(quantized, min, max, bitDepth = 16, fallback = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QuantMath.js#0026:quantizeRangeArray","exportIndex":26,"name":"quantizeRangeArray","kind":"function","signature":"quantizeRangeArray(values, min, max, bitDepth = 16)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QuantMath.js#0027:dequantizeRangeArray","exportIndex":27,"name":"dequantizeRangeArray","kind":"function","signature":"dequantizeRangeArray(quantized, min, max, bitDepth = 16)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QuantMath.js#0028:quantizeVec2","exportIndex":28,"name":"quantizeVec2","kind":"function","signature":"quantizeVec2(value, range, bitDepth = 16)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QuantMath.js#0029:dequantizeVec2","exportIndex":29,"name":"dequantizeVec2","kind":"function","signature":"dequantizeVec2(quantized, range, bitDepth = 16)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QuantMath.js#0030:quantizeVec3","exportIndex":30,"name":"quantizeVec3","kind":"function","signature":"quantizeVec3(value, range, bitDepth = 16)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QuantMath.js#0031:dequantizeVec3","exportIndex":31,"name":"dequantizeVec3","kind":"function","signature":"dequantizeVec3(quantized, range, bitDepth = 16)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QuantMath.js#0032:quantizeColor","exportIndex":32,"name":"quantizeColor","kind":"function","signature":"quantizeColor(color, bitDepth = 8)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QuantMath.js#0033:dequantizeColor","exportIndex":33,"name":"dequantizeColor","kind":"function","signature":"dequantizeColor(quantized, bitDepth = 8)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QuantMath.js#0034:quantizeColorRGBA8","exportIndex":34,"name":"quantizeColorRGBA8","kind":"function","signature":"quantizeColorRGBA8(color)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QuantMath.js#0035:dequantizeColorRGBA8","exportIndex":35,"name":"dequantizeColorRGBA8","kind":"function","signature":"dequantizeColorRGBA8(quantized)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QuantMath.js#0036:quantizeNormal","exportIndex":36,"name":"quantizeNormal","kind":"function","signature":"quantizeNormal(normal)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QuantMath.js#0037:dequantizeNormal","exportIndex":37,"name":"dequantizeNormal","kind":"function","signature":"dequantizeNormal(packed)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QuantMath.js#0038:deltaQuantize","exportIndex":38,"name":"deltaQuantize","kind":"function","signature":"deltaQuantize(values, range, bitDepth = 16)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QuantMath.js#0039:deltaDequantize","exportIndex":39,"name":"deltaDequantize","kind":"function","signature":"deltaDequantize(packed)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QuantMath.js#0040:quantizationErrorReport","exportIndex":40,"name":"quantizationErrorReport","kind":"function","signature":"quantizationErrorReport(source, decoded, tolerance = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QuantMath.js#0041:quaternionOrientationErrorReport","exportIndex":41,"name":"quaternionOrientationErrorReport","kind":"function","signature":"quaternionOrientationErrorReport(source, decoded, toleranceRadians = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QuantMath.js#0042:adaptiveQuantize","exportIndex":42,"name":"adaptiveQuantize","kind":"function","signature":"adaptiveQuantize(values, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QuantMath.js#0043:adaptiveDequantize","exportIndex":43,"name":"adaptiveDequantize","kind":"function","signature":"adaptiveDequantize(packed)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QuantMath.js#0044:QUANT_INT16_MAX","exportIndex":44,"name":"QUANT_INT16_MAX","kind":"constant","signature":"QUANT_INT16_MAX","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QuantMath.js#0045:QUANT_INT8_MAX","exportIndex":45,"name":"QUANT_INT8_MAX","kind":"constant","signature":"QUANT_INT8_MAX","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QuantMath.js#0046:QUANT_UNORM16_MAX","exportIndex":46,"name":"QUANT_UNORM16_MAX","kind":"constant","signature":"QUANT_UNORM16_MAX","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QuantMath.md","moduleTitle":"core/math/QuantMath","source":"engine/core/math/QuantMath.js","import":"/engine/core/math/QuantMath.js","sourceHash":"3cdae6db1997b0214f50224c0815abc35f491410e5aff6823e64752566fa19f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QuantMath.js#0047:dequantizeDelta","exportIndex":47,"name":"dequantizeDelta","kind":"constant","signature":"dequantizeDelta","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QueueMath.md","moduleTitle":"core/math/QueueMath","source":"engine/core/math/QueueMath.js","import":"/engine/core/math/QueueMath.js","sourceHash":"a8bd4dc985714e90cc78d81f63692f241660c214a0f202bb2180d1a813b58663","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/QueueMath.js","title":"core/math/QueueMath","summary":"QueueMath.js - reusable queue depth, delay, bucket, share, ramp, and backpressure helpers.","exportCount":17}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QueueMath.md","moduleTitle":"core/math/QueueMath","source":"engine/core/math/QueueMath.js","import":"/engine/core/math/QueueMath.js","sourceHash":"a8bd4dc985714e90cc78d81f63692f241660c214a0f202bb2180d1a813b58663","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QueueMath.js#0000:queueDepthReport","exportIndex":0,"name":"queueDepthReport","kind":"function","signature":"queueDepthReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QueueMath.md","moduleTitle":"core/math/QueueMath","source":"engine/core/math/QueueMath.js","import":"/engine/core/math/QueueMath.js","sourceHash":"a8bd4dc985714e90cc78d81f63692f241660c214a0f202bb2180d1a813b58663","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QueueMath.js#0001:queueDrainTimeMs","exportIndex":1,"name":"queueDrainTimeMs","kind":"function","signature":"queueDrainTimeMs(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QueueMath.md","moduleTitle":"core/math/QueueMath","source":"engine/core/math/QueueMath.js","import":"/engine/core/math/QueueMath.js","sourceHash":"a8bd4dc985714e90cc78d81f63692f241660c214a0f202bb2180d1a813b58663","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QueueMath.js#0002:queueDelayReport","exportIndex":2,"name":"queueDelayReport","kind":"function","signature":"queueDelayReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QueueMath.md","moduleTitle":"core/math/QueueMath","source":"engine/core/math/QueueMath.js","import":"/engine/core/math/QueueMath.js","sourceHash":"a8bd4dc985714e90cc78d81f63692f241660c214a0f202bb2180d1a813b58663","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QueueMath.js#0003:queueDrainReport","exportIndex":3,"name":"queueDrainReport","kind":"function","signature":"queueDrainReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QueueMath.md","moduleTitle":"core/math/QueueMath","source":"engine/core/math/QueueMath.js","import":"/engine/core/math/QueueMath.js","sourceHash":"a8bd4dc985714e90cc78d81f63692f241660c214a0f202bb2180d1a813b58663","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QueueMath.js#0004:tokenBucketRefill","exportIndex":4,"name":"tokenBucketRefill","kind":"function","signature":"tokenBucketRefill(tokens, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QueueMath.md","moduleTitle":"core/math/QueueMath","source":"engine/core/math/QueueMath.js","import":"/engine/core/math/QueueMath.js","sourceHash":"a8bd4dc985714e90cc78d81f63692f241660c214a0f202bb2180d1a813b58663","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QueueMath.js#0005:tokenBucketConsume","exportIndex":5,"name":"tokenBucketConsume","kind":"function","signature":"tokenBucketConsume(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QueueMath.md","moduleTitle":"core/math/QueueMath","source":"engine/core/math/QueueMath.js","import":"/engine/core/math/QueueMath.js","sourceHash":"a8bd4dc985714e90cc78d81f63692f241660c214a0f202bb2180d1a813b58663","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QueueMath.js#0006:singleRateThreeColorMarkerReport","exportIndex":6,"name":"singleRateThreeColorMarkerReport","kind":"function","signature":"singleRateThreeColorMarkerReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QueueMath.md","moduleTitle":"core/math/QueueMath","source":"engine/core/math/QueueMath.js","import":"/engine/core/math/QueueMath.js","sourceHash":"a8bd4dc985714e90cc78d81f63692f241660c214a0f202bb2180d1a813b58663","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QueueMath.js#0007:leakyBucketReport","exportIndex":7,"name":"leakyBucketReport","kind":"function","signature":"leakyBucketReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QueueMath.md","moduleTitle":"core/math/QueueMath","source":"engine/core/math/QueueMath.js","import":"/engine/core/math/QueueMath.js","sourceHash":"a8bd4dc985714e90cc78d81f63692f241660c214a0f202bb2180d1a813b58663","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QueueMath.js#0008:queueBudgetReport","exportIndex":8,"name":"queueBudgetReport","kind":"function","signature":"queueBudgetReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QueueMath.md","moduleTitle":"core/math/QueueMath","source":"engine/core/math/QueueMath.js","import":"/engine/core/math/QueueMath.js","sourceHash":"a8bd4dc985714e90cc78d81f63692f241660c214a0f202bb2180d1a813b58663","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QueueMath.js#0009:fairShareRateReport","exportIndex":9,"name":"fairShareRateReport","kind":"function","signature":"fairShareRateReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QueueMath.md","moduleTitle":"core/math/QueueMath","source":"engine/core/math/QueueMath.js","import":"/engine/core/math/QueueMath.js","sourceHash":"a8bd4dc985714e90cc78d81f63692f241660c214a0f202bb2180d1a813b58663","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QueueMath.js#0010:rateRampReport","exportIndex":10,"name":"rateRampReport","kind":"function","signature":"rateRampReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QueueMath.md","moduleTitle":"core/math/QueueMath","source":"engine/core/math/QueueMath.js","import":"/engine/core/math/QueueMath.js","sourceHash":"a8bd4dc985714e90cc78d81f63692f241660c214a0f202bb2180d1a813b58663","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QueueMath.js#0011:queueBackpressureReport","exportIndex":11,"name":"queueBackpressureReport","kind":"function","signature":"queueBackpressureReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QueueMath.md","moduleTitle":"core/math/QueueMath","source":"engine/core/math/QueueMath.js","import":"/engine/core/math/QueueMath.js","sourceHash":"a8bd4dc985714e90cc78d81f63692f241660c214a0f202bb2180d1a813b58663","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QueueMath.js#0012:QUEUE_DEFAULT_TARGET_DELAY_MS","exportIndex":12,"name":"QUEUE_DEFAULT_TARGET_DELAY_MS","kind":"constant","signature":"QUEUE_DEFAULT_TARGET_DELAY_MS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QueueMath.md","moduleTitle":"core/math/QueueMath","source":"engine/core/math/QueueMath.js","import":"/engine/core/math/QueueMath.js","sourceHash":"a8bd4dc985714e90cc78d81f63692f241660c214a0f202bb2180d1a813b58663","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QueueMath.js#0013:QUEUE_DEFAULT_INTERVAL_MS","exportIndex":13,"name":"QUEUE_DEFAULT_INTERVAL_MS","kind":"constant","signature":"QUEUE_DEFAULT_INTERVAL_MS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QueueMath.md","moduleTitle":"core/math/QueueMath","source":"engine/core/math/QueueMath.js","import":"/engine/core/math/QueueMath.js","sourceHash":"a8bd4dc985714e90cc78d81f63692f241660c214a0f202bb2180d1a813b58663","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QueueMath.js#0014:QUEUE_BACKPRESSURE_LOW","exportIndex":14,"name":"QUEUE_BACKPRESSURE_LOW","kind":"constant","signature":"QUEUE_BACKPRESSURE_LOW","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QueueMath.md","moduleTitle":"core/math/QueueMath","source":"engine/core/math/QueueMath.js","import":"/engine/core/math/QueueMath.js","sourceHash":"a8bd4dc985714e90cc78d81f63692f241660c214a0f202bb2180d1a813b58663","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QueueMath.js#0015:QUEUE_BACKPRESSURE_MEDIUM","exportIndex":15,"name":"QUEUE_BACKPRESSURE_MEDIUM","kind":"constant","signature":"QUEUE_BACKPRESSURE_MEDIUM","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/QueueMath.md","moduleTitle":"core/math/QueueMath","source":"engine/core/math/QueueMath.js","import":"/engine/core/math/QueueMath.js","sourceHash":"a8bd4dc985714e90cc78d81f63692f241660c214a0f202bb2180d1a813b58663","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/QueueMath.js#0016:QUEUE_BACKPRESSURE_HIGH","exportIndex":16,"name":"QUEUE_BACKPRESSURE_HIGH","kind":"constant","signature":"QUEUE_BACKPRESSURE_HIGH","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/RadioMath.md","moduleTitle":"core/math/RadioMath","source":"engine/core/math/RadioMath.js","import":"/engine/core/math/RadioMath.js","sourceHash":"b04f416b9ee8c059d53d10a229d0f63fa7f50ffabc40411c32b8795d225af0a2","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/RadioMath.js","title":"core/math/RadioMath","summary":"RadioMath.js - reusable RF power, noise, path-loss, channel, and link-budget helpers.","exportCount":29}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/RadioMath.md","moduleTitle":"core/math/RadioMath","source":"engine/core/math/RadioMath.js","import":"/engine/core/math/RadioMath.js","sourceHash":"b04f416b9ee8c059d53d10a229d0f63fa7f50ffabc40411c32b8795d225af0a2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/RadioMath.js#0000:linearToDecibels","exportIndex":0,"name":"linearToDecibels","kind":"function","signature":"linearToDecibels(ratio)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/RadioMath.md","moduleTitle":"core/math/RadioMath","source":"engine/core/math/RadioMath.js","import":"/engine/core/math/RadioMath.js","sourceHash":"b04f416b9ee8c059d53d10a229d0f63fa7f50ffabc40411c32b8795d225af0a2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/RadioMath.js#0001:decibelsToLinear","exportIndex":1,"name":"decibelsToLinear","kind":"function","signature":"decibelsToLinear(decibels)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/RadioMath.md","moduleTitle":"core/math/RadioMath","source":"engine/core/math/RadioMath.js","import":"/engine/core/math/RadioMath.js","sourceHash":"b04f416b9ee8c059d53d10a229d0f63fa7f50ffabc40411c32b8795d225af0a2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/RadioMath.js#0002:milliwattsToDbm","exportIndex":2,"name":"milliwattsToDbm","kind":"function","signature":"milliwattsToDbm(milliwatts)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/RadioMath.md","moduleTitle":"core/math/RadioMath","source":"engine/core/math/RadioMath.js","import":"/engine/core/math/RadioMath.js","sourceHash":"b04f416b9ee8c059d53d10a229d0f63fa7f50ffabc40411c32b8795d225af0a2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/RadioMath.js#0003:dbmToMilliwatts","exportIndex":3,"name":"dbmToMilliwatts","kind":"function","signature":"dbmToMilliwatts(dbm)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/RadioMath.md","moduleTitle":"core/math/RadioMath","source":"engine/core/math/RadioMath.js","import":"/engine/core/math/RadioMath.js","sourceHash":"b04f416b9ee8c059d53d10a229d0f63fa7f50ffabc40411c32b8795d225af0a2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/RadioMath.js#0004:wattsToDbm","exportIndex":4,"name":"wattsToDbm","kind":"function","signature":"wattsToDbm(watts)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/RadioMath.md","moduleTitle":"core/math/RadioMath","source":"engine/core/math/RadioMath.js","import":"/engine/core/math/RadioMath.js","sourceHash":"b04f416b9ee8c059d53d10a229d0f63fa7f50ffabc40411c32b8795d225af0a2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/RadioMath.js#0005:dbmToWatts","exportIndex":5,"name":"dbmToWatts","kind":"function","signature":"dbmToWatts(dbm)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/RadioMath.md","moduleTitle":"core/math/RadioMath","source":"engine/core/math/RadioMath.js","import":"/engine/core/math/RadioMath.js","sourceHash":"b04f416b9ee8c059d53d10a229d0f63fa7f50ffabc40411c32b8795d225af0a2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/RadioMath.js#0006:dbmToDbw","exportIndex":6,"name":"dbmToDbw","kind":"function","signature":"dbmToDbw(dbm)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/RadioMath.md","moduleTitle":"core/math/RadioMath","source":"engine/core/math/RadioMath.js","import":"/engine/core/math/RadioMath.js","sourceHash":"b04f416b9ee8c059d53d10a229d0f63fa7f50ffabc40411c32b8795d225af0a2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/RadioMath.js#0007:dbwToDbm","exportIndex":7,"name":"dbwToDbm","kind":"function","signature":"dbwToDbm(dbw)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/RadioMath.md","moduleTitle":"core/math/RadioMath","source":"engine/core/math/RadioMath.js","import":"/engine/core/math/RadioMath.js","sourceHash":"b04f416b9ee8c059d53d10a229d0f63fa7f50ffabc40411c32b8795d225af0a2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/RadioMath.js#0008:snrDb","exportIndex":8,"name":"snrDb","kind":"function","signature":"snrDb(signalDbm, noiseDbm)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/RadioMath.md","moduleTitle":"core/math/RadioMath","source":"engine/core/math/RadioMath.js","import":"/engine/core/math/RadioMath.js","sourceHash":"b04f416b9ee8c059d53d10a229d0f63fa7f50ffabc40411c32b8795d225af0a2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/RadioMath.js#0009:snrLinear","exportIndex":9,"name":"snrLinear","kind":"function","signature":"snrLinear(signalWatts, noiseWatts)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/RadioMath.md","moduleTitle":"core/math/RadioMath","source":"engine/core/math/RadioMath.js","import":"/engine/core/math/RadioMath.js","sourceHash":"b04f416b9ee8c059d53d10a229d0f63fa7f50ffabc40411c32b8795d225af0a2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/RadioMath.js#0010:thermalNoiseFloorDbm","exportIndex":10,"name":"thermalNoiseFloorDbm","kind":"function","signature":"thermalNoiseFloorDbm(bandwidthHz, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/RadioMath.md","moduleTitle":"core/math/RadioMath","source":"engine/core/math/RadioMath.js","import":"/engine/core/math/RadioMath.js","sourceHash":"b04f416b9ee8c059d53d10a229d0f63fa7f50ffabc40411c32b8795d225af0a2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/RadioMath.js#0011:receiverSensitivityDbm","exportIndex":11,"name":"receiverSensitivityDbm","kind":"function","signature":"receiverSensitivityDbm(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/RadioMath.md","moduleTitle":"core/math/RadioMath","source":"engine/core/math/RadioMath.js","import":"/engine/core/math/RadioMath.js","sourceHash":"b04f416b9ee8c059d53d10a229d0f63fa7f50ffabc40411c32b8795d225af0a2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/RadioMath.js#0012:freeSpacePathLossDb","exportIndex":12,"name":"freeSpacePathLossDb","kind":"function","signature":"freeSpacePathLossDb(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/RadioMath.md","moduleTitle":"core/math/RadioMath","source":"engine/core/math/RadioMath.js","import":"/engine/core/math/RadioMath.js","sourceHash":"b04f416b9ee8c059d53d10a229d0f63fa7f50ffabc40411c32b8795d225af0a2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/RadioMath.js#0013:logDistancePathLossDb","exportIndex":13,"name":"logDistancePathLossDb","kind":"function","signature":"logDistancePathLossDb(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/RadioMath.md","moduleTitle":"core/math/RadioMath","source":"engine/core/math/RadioMath.js","import":"/engine/core/math/RadioMath.js","sourceHash":"b04f416b9ee8c059d53d10a229d0f63fa7f50ffabc40411c32b8795d225af0a2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/RadioMath.js#0014:receivedPowerDbm","exportIndex":14,"name":"receivedPowerDbm","kind":"function","signature":"receivedPowerDbm(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/RadioMath.md","moduleTitle":"core/math/RadioMath","source":"engine/core/math/RadioMath.js","import":"/engine/core/math/RadioMath.js","sourceHash":"b04f416b9ee8c059d53d10a229d0f63fa7f50ffabc40411c32b8795d225af0a2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/RadioMath.js#0015:linkBudgetReport","exportIndex":15,"name":"linkBudgetReport","kind":"function","signature":"linkBudgetReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/RadioMath.md","moduleTitle":"core/math/RadioMath","source":"engine/core/math/RadioMath.js","import":"/engine/core/math/RadioMath.js","sourceHash":"b04f416b9ee8c059d53d10a229d0f63fa7f50ffabc40411c32b8795d225af0a2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/RadioMath.js#0016:channelCapacityBps","exportIndex":16,"name":"channelCapacityBps","kind":"function","signature":"channelCapacityBps(bandwidthHz, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/RadioMath.md","moduleTitle":"core/math/RadioMath","source":"engine/core/math/RadioMath.js","import":"/engine/core/math/RadioMath.js","sourceHash":"b04f416b9ee8c059d53d10a229d0f63fa7f50ffabc40411c32b8795d225af0a2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/RadioMath.js#0017:requiredSnrForCapacityDb","exportIndex":17,"name":"requiredSnrForCapacityDb","kind":"function","signature":"requiredSnrForCapacityDb(capacityBps, bandwidthHz)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/RadioMath.md","moduleTitle":"core/math/RadioMath","source":"engine/core/math/RadioMath.js","import":"/engine/core/math/RadioMath.js","sourceHash":"b04f416b9ee8c059d53d10a229d0f63fa7f50ffabc40411c32b8795d225af0a2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/RadioMath.js#0018:rssiQualityScore","exportIndex":18,"name":"rssiQualityScore","kind":"function","signature":"rssiQualityScore(rssiDbm, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/RadioMath.md","moduleTitle":"core/math/RadioMath","source":"engine/core/math/RadioMath.js","import":"/engine/core/math/RadioMath.js","sourceHash":"b04f416b9ee8c059d53d10a229d0f63fa7f50ffabc40411c32b8795d225af0a2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/RadioMath.js#0019:snrQualityScore","exportIndex":19,"name":"snrQualityScore","kind":"function","signature":"snrQualityScore(snrValueDb, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/RadioMath.md","moduleTitle":"core/math/RadioMath","source":"engine/core/math/RadioMath.js","import":"/engine/core/math/RadioMath.js","sourceHash":"b04f416b9ee8c059d53d10a229d0f63fa7f50ffabc40411c32b8795d225af0a2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/RadioMath.js#0020:channelOverlapReport","exportIndex":20,"name":"channelOverlapReport","kind":"function","signature":"channelOverlapReport(aCenterHz, aBandwidthHz, bCenterHz, bBandwidthHz)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/RadioMath.md","moduleTitle":"core/math/RadioMath","source":"engine/core/math/RadioMath.js","import":"/engine/core/math/RadioMath.js","sourceHash":"b04f416b9ee8c059d53d10a229d0f63fa7f50ffabc40411c32b8795d225af0a2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/RadioMath.js#0021:interferencePowerDbm","exportIndex":21,"name":"interferencePowerDbm","kind":"function","signature":"interferencePowerDbm(powersDbm = [])","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/RadioMath.md","moduleTitle":"core/math/RadioMath","source":"engine/core/math/RadioMath.js","import":"/engine/core/math/RadioMath.js","sourceHash":"b04f416b9ee8c059d53d10a229d0f63fa7f50ffabc40411c32b8795d225af0a2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/RadioMath.js#0022:signalInterferenceNoiseRatioDb","exportIndex":22,"name":"signalInterferenceNoiseRatioDb","kind":"function","signature":"signalInterferenceNoiseRatioDb(signalDbm, noiseDbm, interferenceDbm = -Infinity)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/RadioMath.md","moduleTitle":"core/math/RadioMath","source":"engine/core/math/RadioMath.js","import":"/engine/core/math/RadioMath.js","sourceHash":"b04f416b9ee8c059d53d10a229d0f63fa7f50ffabc40411c32b8795d225af0a2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/RadioMath.js#0023:interferenceScore","exportIndex":23,"name":"interferenceScore","kind":"function","signature":"interferenceScore(interferenceDbm, signalDbm, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/RadioMath.md","moduleTitle":"core/math/RadioMath","source":"engine/core/math/RadioMath.js","import":"/engine/core/math/RadioMath.js","sourceHash":"b04f416b9ee8c059d53d10a229d0f63fa7f50ffabc40411c32b8795d225af0a2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/RadioMath.js#0024:radioLinkQualityReport","exportIndex":24,"name":"radioLinkQualityReport","kind":"function","signature":"radioLinkQualityReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/RadioMath.md","moduleTitle":"core/math/RadioMath","source":"engine/core/math/RadioMath.js","import":"/engine/core/math/RadioMath.js","sourceHash":"b04f416b9ee8c059d53d10a229d0f63fa7f50ffabc40411c32b8795d225af0a2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/RadioMath.js#0025:RADIO_SPEED_OF_LIGHT_MPS","exportIndex":25,"name":"RADIO_SPEED_OF_LIGHT_MPS","kind":"constant","signature":"RADIO_SPEED_OF_LIGHT_MPS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/RadioMath.md","moduleTitle":"core/math/RadioMath","source":"engine/core/math/RadioMath.js","import":"/engine/core/math/RadioMath.js","sourceHash":"b04f416b9ee8c059d53d10a229d0f63fa7f50ffabc40411c32b8795d225af0a2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/RadioMath.js#0026:RADIO_BOLTZMANN_J_PER_K","exportIndex":26,"name":"RADIO_BOLTZMANN_J_PER_K","kind":"constant","signature":"RADIO_BOLTZMANN_J_PER_K","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/RadioMath.md","moduleTitle":"core/math/RadioMath","source":"engine/core/math/RadioMath.js","import":"/engine/core/math/RadioMath.js","sourceHash":"b04f416b9ee8c059d53d10a229d0f63fa7f50ffabc40411c32b8795d225af0a2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/RadioMath.js#0027:RADIO_REFERENCE_TEMPERATURE_K","exportIndex":27,"name":"RADIO_REFERENCE_TEMPERATURE_K","kind":"constant","signature":"RADIO_REFERENCE_TEMPERATURE_K","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/RadioMath.md","moduleTitle":"core/math/RadioMath","source":"engine/core/math/RadioMath.js","import":"/engine/core/math/RadioMath.js","sourceHash":"b04f416b9ee8c059d53d10a229d0f63fa7f50ffabc40411c32b8795d225af0a2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/RadioMath.js#0028:RADIO_REFERENCE_NOISE_FLOOR_DBM_PER_HZ","exportIndex":28,"name":"RADIO_REFERENCE_NOISE_FLOOR_DBM_PER_HZ","kind":"constant","signature":"RADIO_REFERENCE_NOISE_FLOOR_DBM_PER_HZ","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/RobustNumericMath.md","moduleTitle":"core/math/RobustNumericMath","source":"engine/core/math/RobustNumericMath.js","import":"/engine/core/math/RobustNumericMath.js","sourceHash":"b25f3b3e254f3bd6ce447930f2af90e2b128f22604286b9e145da719a17575db","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/RobustNumericMath.js","title":"core/math/RobustNumericMath","summary":"RobustNumericMath.js - floating-point policy, stable sums, cancellation, and filtered predicates.","exportCount":16}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/RobustNumericMath.md","moduleTitle":"core/math/RobustNumericMath","source":"engine/core/math/RobustNumericMath.js","import":"/engine/core/math/RobustNumericMath.js","sourceHash":"b25f3b3e254f3bd6ce447930f2af90e2b128f22604286b9e145da719a17575db","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/RobustNumericMath.js#0000:float64Bits","exportIndex":0,"name":"float64Bits","kind":"function","signature":"float64Bits(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/RobustNumericMath.md","moduleTitle":"core/math/RobustNumericMath","source":"engine/core/math/RobustNumericMath.js","import":"/engine/core/math/RobustNumericMath.js","sourceHash":"b25f3b3e254f3bd6ce447930f2af90e2b128f22604286b9e145da719a17575db","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/RobustNumericMath.js#0001:float64FromBits","exportIndex":1,"name":"float64FromBits","kind":"function","signature":"float64FromBits(bits)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/RobustNumericMath.md","moduleTitle":"core/math/RobustNumericMath","source":"engine/core/math/RobustNumericMath.js","import":"/engine/core/math/RobustNumericMath.js","sourceHash":"b25f3b3e254f3bd6ce447930f2af90e2b128f22604286b9e145da719a17575db","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/RobustNumericMath.js#0002:float64Classify","exportIndex":2,"name":"float64Classify","kind":"function","signature":"float64Classify(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/RobustNumericMath.md","moduleTitle":"core/math/RobustNumericMath","source":"engine/core/math/RobustNumericMath.js","import":"/engine/core/math/RobustNumericMath.js","sourceHash":"b25f3b3e254f3bd6ce447930f2af90e2b128f22604286b9e145da719a17575db","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/RobustNumericMath.js#0003:float64NextAfter","exportIndex":3,"name":"float64NextAfter","kind":"function","signature":"float64NextAfter(value, direction)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/RobustNumericMath.md","moduleTitle":"core/math/RobustNumericMath","source":"engine/core/math/RobustNumericMath.js","import":"/engine/core/math/RobustNumericMath.js","sourceHash":"b25f3b3e254f3bd6ce447930f2af90e2b128f22604286b9e145da719a17575db","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/RobustNumericMath.js#0004:float64Ulp","exportIndex":4,"name":"float64Ulp","kind":"function","signature":"float64Ulp(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/RobustNumericMath.md","moduleTitle":"core/math/RobustNumericMath","source":"engine/core/math/RobustNumericMath.js","import":"/engine/core/math/RobustNumericMath.js","sourceHash":"b25f3b3e254f3bd6ce447930f2af90e2b128f22604286b9e145da719a17575db","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/RobustNumericMath.js#0005:float64UlpDistance","exportIndex":5,"name":"float64UlpDistance","kind":"function","signature":"float64UlpDistance(left, right)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/RobustNumericMath.md","moduleTitle":"core/math/RobustNumericMath","source":"engine/core/math/RobustNumericMath.js","import":"/engine/core/math/RobustNumericMath.js","sourceHash":"b25f3b3e254f3bd6ce447930f2af90e2b128f22604286b9e145da719a17575db","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/RobustNumericMath.js#0006:compensatedSum","exportIndex":6,"name":"compensatedSum","kind":"function","signature":"compensatedSum(values)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/RobustNumericMath.md","moduleTitle":"core/math/RobustNumericMath","source":"engine/core/math/RobustNumericMath.js","import":"/engine/core/math/RobustNumericMath.js","sourceHash":"b25f3b3e254f3bd6ce447930f2af90e2b128f22604286b9e145da719a17575db","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/RobustNumericMath.js#0007:pairwiseSum","exportIndex":7,"name":"pairwiseSum","kind":"function","signature":"pairwiseSum(values)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/RobustNumericMath.md","moduleTitle":"core/math/RobustNumericMath","source":"engine/core/math/RobustNumericMath.js","import":"/engine/core/math/RobustNumericMath.js","sourceHash":"b25f3b3e254f3bd6ce447930f2af90e2b128f22604286b9e145da719a17575db","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/RobustNumericMath.js#0008:stableSumReport","exportIndex":8,"name":"stableSumReport","kind":"function","signature":"stableSumReport(values)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/RobustNumericMath.md","moduleTitle":"core/math/RobustNumericMath","source":"engine/core/math/RobustNumericMath.js","import":"/engine/core/math/RobustNumericMath.js","sourceHash":"b25f3b3e254f3bd6ce447930f2af90e2b128f22604286b9e145da719a17575db","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/RobustNumericMath.js#0009:cancellationReport","exportIndex":9,"name":"cancellationReport","kind":"function","signature":"cancellationReport(left, right, operation = 'subtract')","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/RobustNumericMath.md","moduleTitle":"core/math/RobustNumericMath","source":"engine/core/math/RobustNumericMath.js","import":"/engine/core/math/RobustNumericMath.js","sourceHash":"b25f3b3e254f3bd6ce447930f2af90e2b128f22604286b9e145da719a17575db","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/RobustNumericMath.js#0010:orientation2DReport","exportIndex":10,"name":"orientation2DReport","kind":"function","signature":"orientation2DReport(a, b, c, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/RobustNumericMath.md","moduleTitle":"core/math/RobustNumericMath","source":"engine/core/math/RobustNumericMath.js","import":"/engine/core/math/RobustNumericMath.js","sourceHash":"b25f3b3e254f3bd6ce447930f2af90e2b128f22604286b9e145da719a17575db","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/RobustNumericMath.js#0011:robustNumericPolicyReport","exportIndex":11,"name":"robustNumericPolicyReport","kind":"function","signature":"robustNumericPolicyReport(values)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/RobustNumericMath.md","moduleTitle":"core/math/RobustNumericMath","source":"engine/core/math/RobustNumericMath.js","import":"/engine/core/math/RobustNumericMath.js","sourceHash":"b25f3b3e254f3bd6ce447930f2af90e2b128f22604286b9e145da719a17575db","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/RobustNumericMath.js#0012:FLOAT64_SIGNIFICAND_BITS","exportIndex":12,"name":"FLOAT64_SIGNIFICAND_BITS","kind":"constant","signature":"FLOAT64_SIGNIFICAND_BITS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/RobustNumericMath.md","moduleTitle":"core/math/RobustNumericMath","source":"engine/core/math/RobustNumericMath.js","import":"/engine/core/math/RobustNumericMath.js","sourceHash":"b25f3b3e254f3bd6ce447930f2af90e2b128f22604286b9e145da719a17575db","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/RobustNumericMath.js#0013:FLOAT64_MIN_NORMAL","exportIndex":13,"name":"FLOAT64_MIN_NORMAL","kind":"constant","signature":"FLOAT64_MIN_NORMAL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/RobustNumericMath.md","moduleTitle":"core/math/RobustNumericMath","source":"engine/core/math/RobustNumericMath.js","import":"/engine/core/math/RobustNumericMath.js","sourceHash":"b25f3b3e254f3bd6ce447930f2af90e2b128f22604286b9e145da719a17575db","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/RobustNumericMath.js#0014:FLOAT64_MAX_FINITE","exportIndex":14,"name":"FLOAT64_MAX_FINITE","kind":"constant","signature":"FLOAT64_MAX_FINITE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/RobustNumericMath.md","moduleTitle":"core/math/RobustNumericMath","source":"engine/core/math/RobustNumericMath.js","import":"/engine/core/math/RobustNumericMath.js","sourceHash":"b25f3b3e254f3bd6ce447930f2af90e2b128f22604286b9e145da719a17575db","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/RobustNumericMath.js#0015:FLOAT64_EPSILON","exportIndex":15,"name":"FLOAT64_EPSILON","kind":"constant","signature":"FLOAT64_EPSILON","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SIMDLayoutMath.md","moduleTitle":"core/math/SIMDLayoutMath","source":"engine/core/math/SIMDLayoutMath.js","import":"/engine/core/math/SIMDLayoutMath.js","sourceHash":"dd17f177bbe507effe90177dc4e005d91ba4ee8b767351fa3b2cf48229878e8e","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/SIMDLayoutMath.js","title":"core/math/SIMDLayoutMath","summary":"SIMDLayoutMath.js - WebAssembly-style v128 lane metadata and SoA/AoS layout helpers.","exportCount":14}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SIMDLayoutMath.md","moduleTitle":"core/math/SIMDLayoutMath","source":"engine/core/math/SIMDLayoutMath.js","import":"/engine/core/math/SIMDLayoutMath.js","sourceHash":"dd17f177bbe507effe90177dc4e005d91ba4ee8b767351fa3b2cf48229878e8e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SIMDLayoutMath.js#0000:simdLaneShape","exportIndex":0,"name":"simdLaneShape","kind":"function","signature":"simdLaneShape(shape = 'f32x4')","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SIMDLayoutMath.md","moduleTitle":"core/math/SIMDLayoutMath","source":"engine/core/math/SIMDLayoutMath.js","import":"/engine/core/math/SIMDLayoutMath.js","sourceHash":"dd17f177bbe507effe90177dc4e005d91ba4ee8b767351fa3b2cf48229878e8e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SIMDLayoutMath.js#0001:simdVectorByteSize","exportIndex":1,"name":"simdVectorByteSize","kind":"function","signature":"simdVectorByteSize(shape = 'f32x4')","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SIMDLayoutMath.md","moduleTitle":"core/math/SIMDLayoutMath","source":"engine/core/math/SIMDLayoutMath.js","import":"/engine/core/math/SIMDLayoutMath.js","sourceHash":"dd17f177bbe507effe90177dc4e005d91ba4ee8b767351fa3b2cf48229878e8e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SIMDLayoutMath.js#0002:simdLaneByteOffset","exportIndex":2,"name":"simdLaneByteOffset","kind":"function","signature":"simdLaneByteOffset(shape = 'f32x4', vectorIndex = 0, laneIndex = 0, baseOffset = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SIMDLayoutMath.md","moduleTitle":"core/math/SIMDLayoutMath","source":"engine/core/math/SIMDLayoutMath.js","import":"/engine/core/math/SIMDLayoutMath.js","sourceHash":"dd17f177bbe507effe90177dc4e005d91ba4ee8b767351fa3b2cf48229878e8e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SIMDLayoutMath.js#0003:simdVectorAlignmentReport","exportIndex":3,"name":"simdVectorAlignmentReport","kind":"function","signature":"simdVectorAlignmentReport(shape = 'f32x4', byteOffset = 0, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SIMDLayoutMath.md","moduleTitle":"core/math/SIMDLayoutMath","source":"engine/core/math/SIMDLayoutMath.js","import":"/engine/core/math/SIMDLayoutMath.js","sourceHash":"dd17f177bbe507effe90177dc4e005d91ba4ee8b767351fa3b2cf48229878e8e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SIMDLayoutMath.js#0004:simdChunkPlan","exportIndex":4,"name":"simdChunkPlan","kind":"function","signature":"simdChunkPlan(elementCount, shape = 'f32x4')","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SIMDLayoutMath.md","moduleTitle":"core/math/SIMDLayoutMath","source":"engine/core/math/SIMDLayoutMath.js","import":"/engine/core/math/SIMDLayoutMath.js","sourceHash":"dd17f177bbe507effe90177dc4e005d91ba4ee8b767351fa3b2cf48229878e8e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SIMDLayoutMath.js#0005:simdLaneMask","exportIndex":5,"name":"simdLaneMask","kind":"function","signature":"simdLaneMask(shape = 'f32x4', enabledLanes = 'all')","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SIMDLayoutMath.md","moduleTitle":"core/math/SIMDLayoutMath","source":"engine/core/math/SIMDLayoutMath.js","import":"/engine/core/math/SIMDLayoutMath.js","sourceHash":"dd17f177bbe507effe90177dc4e005d91ba4ee8b767351fa3b2cf48229878e8e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SIMDLayoutMath.js#0006:simdTailLaneMask","exportIndex":6,"name":"simdTailLaneMask","kind":"function","signature":"simdTailLaneMask(elementCount, shape = 'f32x4')","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SIMDLayoutMath.md","moduleTitle":"core/math/SIMDLayoutMath","source":"engine/core/math/SIMDLayoutMath.js","import":"/engine/core/math/SIMDLayoutMath.js","sourceHash":"dd17f177bbe507effe90177dc4e005d91ba4ee8b767351fa3b2cf48229878e8e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SIMDLayoutMath.js#0007:simdSoALayoutReport","exportIndex":7,"name":"simdSoALayoutReport","kind":"function","signature":"simdSoALayoutReport(componentCount, elementCount, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SIMDLayoutMath.md","moduleTitle":"core/math/SIMDLayoutMath","source":"engine/core/math/SIMDLayoutMath.js","import":"/engine/core/math/SIMDLayoutMath.js","sourceHash":"dd17f177bbe507effe90177dc4e005d91ba4ee8b767351fa3b2cf48229878e8e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SIMDLayoutMath.js#0008:simdAoSToSoA","exportIndex":8,"name":"simdAoSToSoA","kind":"function","signature":"simdAoSToSoA(vectors, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SIMDLayoutMath.md","moduleTitle":"core/math/SIMDLayoutMath","source":"engine/core/math/SIMDLayoutMath.js","import":"/engine/core/math/SIMDLayoutMath.js","sourceHash":"dd17f177bbe507effe90177dc4e005d91ba4ee8b767351fa3b2cf48229878e8e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SIMDLayoutMath.js#0009:simdSoAToAoS","exportIndex":9,"name":"simdSoAToAoS","kind":"function","signature":"simdSoAToAoS(soa, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SIMDLayoutMath.md","moduleTitle":"core/math/SIMDLayoutMath","source":"engine/core/math/SIMDLayoutMath.js","import":"/engine/core/math/SIMDLayoutMath.js","sourceHash":"dd17f177bbe507effe90177dc4e005d91ba4ee8b767351fa3b2cf48229878e8e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SIMDLayoutMath.js#0010:simdScalarFallbackReport","exportIndex":10,"name":"simdScalarFallbackReport","kind":"function","signature":"simdScalarFallbackReport(elementCount, shape = 'f32x4', options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SIMDLayoutMath.md","moduleTitle":"core/math/SIMDLayoutMath","source":"engine/core/math/SIMDLayoutMath.js","import":"/engine/core/math/SIMDLayoutMath.js","sourceHash":"dd17f177bbe507effe90177dc4e005d91ba4ee8b767351fa3b2cf48229878e8e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SIMDLayoutMath.js#0011:SIMD_V128_BIT_SIZE","exportIndex":11,"name":"SIMD_V128_BIT_SIZE","kind":"constant","signature":"SIMD_V128_BIT_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SIMDLayoutMath.md","moduleTitle":"core/math/SIMDLayoutMath","source":"engine/core/math/SIMDLayoutMath.js","import":"/engine/core/math/SIMDLayoutMath.js","sourceHash":"dd17f177bbe507effe90177dc4e005d91ba4ee8b767351fa3b2cf48229878e8e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SIMDLayoutMath.js#0012:SIMD_V128_BYTE_SIZE","exportIndex":12,"name":"SIMD_V128_BYTE_SIZE","kind":"constant","signature":"SIMD_V128_BYTE_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SIMDLayoutMath.md","moduleTitle":"core/math/SIMDLayoutMath","source":"engine/core/math/SIMDLayoutMath.js","import":"/engine/core/math/SIMDLayoutMath.js","sourceHash":"dd17f177bbe507effe90177dc4e005d91ba4ee8b767351fa3b2cf48229878e8e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SIMDLayoutMath.js#0013:SIMD_V128_ALIGNMENT","exportIndex":13,"name":"SIMD_V128_ALIGNMENT","kind":"constant","signature":"SIMD_V128_ALIGNMENT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SamplingMath.md","moduleTitle":"core/math/SamplingMath","source":"engine/core/math/SamplingMath.js","import":"/engine/core/math/SamplingMath.js","sourceHash":"f454b936655f6a88ef3cfca4199f44bc03c977a66bc3e789b7f2739d2749d328","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/SamplingMath.js","title":"core/math/SamplingMath","summary":"SamplingMath.js - pure sample-grid, time-window, and sample-rate report helpers.","exportCount":21}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SamplingMath.md","moduleTitle":"core/math/SamplingMath","source":"engine/core/math/SamplingMath.js","import":"/engine/core/math/SamplingMath.js","sourceHash":"f454b936655f6a88ef3cfca4199f44bc03c977a66bc3e789b7f2739d2749d328","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SamplingMath.js#0000:sampleRateReport","exportIndex":0,"name":"sampleRateReport","kind":"function","signature":"sampleRateReport(sampleRate = DEFAULT_SAMPLE_RATE)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SamplingMath.md","moduleTitle":"core/math/SamplingMath","source":"engine/core/math/SamplingMath.js","import":"/engine/core/math/SamplingMath.js","sourceHash":"f454b936655f6a88ef3cfca4199f44bc03c977a66bc3e789b7f2739d2749d328","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SamplingMath.js#0001:sampleIndexForTime","exportIndex":1,"name":"sampleIndexForTime","kind":"function","signature":"sampleIndexForTime(seconds, sampleRate = DEFAULT_SAMPLE_RATE, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SamplingMath.md","moduleTitle":"core/math/SamplingMath","source":"engine/core/math/SamplingMath.js","import":"/engine/core/math/SamplingMath.js","sourceHash":"f454b936655f6a88ef3cfca4199f44bc03c977a66bc3e789b7f2739d2749d328","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SamplingMath.js#0002:sampleTimeForIndex","exportIndex":2,"name":"sampleTimeForIndex","kind":"function","signature":"sampleTimeForIndex(index, sampleRate = DEFAULT_SAMPLE_RATE, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SamplingMath.md","moduleTitle":"core/math/SamplingMath","source":"engine/core/math/SamplingMath.js","import":"/engine/core/math/SamplingMath.js","sourceHash":"f454b936655f6a88ef3cfca4199f44bc03c977a66bc3e789b7f2739d2749d328","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SamplingMath.js#0003:sampleWindowReport","exportIndex":3,"name":"sampleWindowReport","kind":"function","signature":"sampleWindowReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SamplingMath.md","moduleTitle":"core/math/SamplingMath","source":"engine/core/math/SamplingMath.js","import":"/engine/core/math/SamplingMath.js","sourceHash":"f454b936655f6a88ef3cfca4199f44bc03c977a66bc3e789b7f2739d2749d328","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SamplingMath.js#0004:sampleFrameWindowReport","exportIndex":4,"name":"sampleFrameWindowReport","kind":"function","signature":"sampleFrameWindowReport(sampleCount, windowSize, hopSize, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SamplingMath.md","moduleTitle":"core/math/SamplingMath","source":"engine/core/math/SamplingMath.js","import":"/engine/core/math/SamplingMath.js","sourceHash":"f454b936655f6a88ef3cfca4199f44bc03c977a66bc3e789b7f2739d2749d328","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SamplingMath.js#0005:sampleRateConversionReport","exportIndex":5,"name":"sampleRateConversionReport","kind":"function","signature":"sampleRateConversionReport(sampleCount, sourceSampleRate, targetSampleRate)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SamplingMath.md","moduleTitle":"core/math/SamplingMath","source":"engine/core/math/SamplingMath.js","import":"/engine/core/math/SamplingMath.js","sourceHash":"f454b936655f6a88ef3cfca4199f44bc03c977a66bc3e789b7f2739d2749d328","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SamplingMath.js#0006:samplePlaybackRateReport","exportIndex":6,"name":"samplePlaybackRateReport","kind":"function","signature":"samplePlaybackRateReport(bufferSampleRate, contextSampleRate, playbackRate = 1, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SamplingMath.md","moduleTitle":"core/math/SamplingMath","source":"engine/core/math/SamplingMath.js","import":"/engine/core/math/SamplingMath.js","sourceHash":"f454b936655f6a88ef3cfca4199f44bc03c977a66bc3e789b7f2739d2749d328","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SamplingMath.js#0007:spatialBilinearSampleReport","exportIndex":7,"name":"spatialBilinearSampleReport","kind":"function","signature":"spatialBilinearSampleReport(grid, width, height, x, y, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SamplingMath.md","moduleTitle":"core/math/SamplingMath","source":"engine/core/math/SamplingMath.js","import":"/engine/core/math/SamplingMath.js","sourceHash":"f454b936655f6a88ef3cfca4199f44bc03c977a66bc3e789b7f2739d2749d328","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SamplingMath.js#0008:spatialTrilinearSampleReport","exportIndex":8,"name":"spatialTrilinearSampleReport","kind":"function","signature":"spatialTrilinearSampleReport(grid, width, height, depth, x, y, z, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SamplingMath.md","moduleTitle":"core/math/SamplingMath","source":"engine/core/math/SamplingMath.js","import":"/engine/core/math/SamplingMath.js","sourceHash":"f454b936655f6a88ef3cfca4199f44bc03c977a66bc3e789b7f2739d2749d328","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SamplingMath.js#0009:catmullRomSample","exportIndex":9,"name":"catmullRomSample","kind":"function","signature":"catmullRomSample(p0, p1, p2, p3, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SamplingMath.md","moduleTitle":"core/math/SamplingMath","source":"engine/core/math/SamplingMath.js","import":"/engine/core/math/SamplingMath.js","sourceHash":"f454b936655f6a88ef3cfca4199f44bc03c977a66bc3e789b7f2739d2749d328","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SamplingMath.js#0010:catmullRomSampleReport","exportIndex":10,"name":"catmullRomSampleReport","kind":"function","signature":"catmullRomSampleReport(samples, x, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SamplingMath.md","moduleTitle":"core/math/SamplingMath","source":"engine/core/math/SamplingMath.js","import":"/engine/core/math/SamplingMath.js","sourceHash":"f454b936655f6a88ef3cfca4199f44bc03c977a66bc3e789b7f2739d2749d328","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SamplingMath.js#0011:spatialBicubicSampleReport","exportIndex":11,"name":"spatialBicubicSampleReport","kind":"function","signature":"spatialBicubicSampleReport(grid, width, height, x, y, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SamplingMath.md","moduleTitle":"core/math/SamplingMath","source":"engine/core/math/SamplingMath.js","import":"/engine/core/math/SamplingMath.js","sourceHash":"f454b936655f6a88ef3cfca4199f44bc03c977a66bc3e789b7f2739d2749d328","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SamplingMath.js#0012:spatialAreaSampleReport","exportIndex":12,"name":"spatialAreaSampleReport","kind":"function","signature":"spatialAreaSampleReport(grid, width, height, area = {}, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SamplingMath.md","moduleTitle":"core/math/SamplingMath","source":"engine/core/math/SamplingMath.js","import":"/engine/core/math/SamplingMath.js","sourceHash":"f454b936655f6a88ef3cfca4199f44bc03c977a66bc3e789b7f2739d2749d328","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SamplingMath.js#0013:stratifiedSampleGridReport","exportIndex":13,"name":"stratifiedSampleGridReport","kind":"function","signature":"stratifiedSampleGridReport(columns, rows, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SamplingMath.md","moduleTitle":"core/math/SamplingMath","source":"engine/core/math/SamplingMath.js","import":"/engine/core/math/SamplingMath.js","sourceHash":"f454b936655f6a88ef3cfca4199f44bc03c977a66bc3e789b7f2739d2749d328","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SamplingMath.js#0014:weightedSampleDistributionReport","exportIndex":14,"name":"weightedSampleDistributionReport","kind":"function","signature":"weightedSampleDistributionReport(weights, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SamplingMath.md","moduleTitle":"core/math/SamplingMath","source":"engine/core/math/SamplingMath.js","import":"/engine/core/math/SamplingMath.js","sourceHash":"f454b936655f6a88ef3cfca4199f44bc03c977a66bc3e789b7f2739d2749d328","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SamplingMath.js#0015:discreteImportanceSampleReport","exportIndex":15,"name":"discreteImportanceSampleReport","kind":"function","signature":"discreteImportanceSampleReport(weights, u, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SamplingMath.md","moduleTitle":"core/math/SamplingMath","source":"engine/core/math/SamplingMath.js","import":"/engine/core/math/SamplingMath.js","sourceHash":"f454b936655f6a88ef3cfca4199f44bc03c977a66bc3e789b7f2739d2749d328","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SamplingMath.js#0016:blueNoiseSampleSetReport","exportIndex":16,"name":"blueNoiseSampleSetReport","kind":"function","signature":"blueNoiseSampleSetReport(points, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SamplingMath.md","moduleTitle":"core/math/SamplingMath","source":"engine/core/math/SamplingMath.js","import":"/engine/core/math/SamplingMath.js","sourceHash":"f454b936655f6a88ef3cfca4199f44bc03c977a66bc3e789b7f2739d2749d328","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SamplingMath.js#0017:sobol2DSample","exportIndex":17,"name":"sobol2DSample","kind":"function","signature":"sobol2DSample(index)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SamplingMath.md","moduleTitle":"core/math/SamplingMath","source":"engine/core/math/SamplingMath.js","import":"/engine/core/math/SamplingMath.js","sourceHash":"f454b936655f6a88ef3cfca4199f44bc03c977a66bc3e789b7f2739d2749d328","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SamplingMath.js#0018:lowDiscrepancySequenceReport","exportIndex":18,"name":"lowDiscrepancySequenceReport","kind":"function","signature":"lowDiscrepancySequenceReport(count, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SamplingMath.md","moduleTitle":"core/math/SamplingMath","source":"engine/core/math/SamplingMath.js","import":"/engine/core/math/SamplingMath.js","sourceHash":"f454b936655f6a88ef3cfca4199f44bc03c977a66bc3e789b7f2739d2749d328","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SamplingMath.js#0019:multiJitteredSampleGridReport","exportIndex":19,"name":"multiJitteredSampleGridReport","kind":"function","signature":"multiJitteredSampleGridReport(size, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SamplingMath.md","moduleTitle":"core/math/SamplingMath","source":"engine/core/math/SamplingMath.js","import":"/engine/core/math/SamplingMath.js","sourceHash":"f454b936655f6a88ef3cfca4199f44bc03c977a66bc3e789b7f2739d2749d328","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SamplingMath.js#0020:sampleSetUniformityReport","exportIndex":20,"name":"sampleSetUniformityReport","kind":"function","signature":"sampleSetUniformityReport(points, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SceneQueryMath.md","moduleTitle":"core/math/SceneQueryMath","source":"engine/core/math/SceneQueryMath.js","import":"/engine/core/math/SceneQueryMath.js","sourceHash":"6d64bbd24fb70a6eee2e7ff3e8be61466a054782a1b968887d6c0c40eb7a3b63","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/SceneQueryMath.js","title":"core/math/SceneQueryMath","summary":"SceneQueryMath.js - pure ray/overlap/sweep query reports for engine callers.","exportCount":9}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SceneQueryMath.md","moduleTitle":"core/math/SceneQueryMath","source":"engine/core/math/SceneQueryMath.js","import":"/engine/core/math/SceneQueryMath.js","sourceHash":"6d64bbd24fb70a6eee2e7ff3e8be61466a054782a1b968887d6c0c40eb7a3b63","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SceneQueryMath.js#0000:sceneQueryHitReport","exportIndex":0,"name":"sceneQueryHitReport","kind":"function","signature":"sceneQueryHitReport(hit, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SceneQueryMath.md","moduleTitle":"core/math/SceneQueryMath","source":"engine/core/math/SceneQueryMath.js","import":"/engine/core/math/SceneQueryMath.js","sourceHash":"6d64bbd24fb70a6eee2e7ff3e8be61466a054782a1b968887d6c0c40eb7a3b63","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SceneQueryMath.js#0001:sceneQueryHitListReport","exportIndex":1,"name":"sceneQueryHitListReport","kind":"function","signature":"sceneQueryHitListReport(hits, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SceneQueryMath.md","moduleTitle":"core/math/SceneQueryMath","source":"engine/core/math/SceneQueryMath.js","import":"/engine/core/math/SceneQueryMath.js","sourceHash":"6d64bbd24fb70a6eee2e7ff3e8be61466a054782a1b968887d6c0c40eb7a3b63","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SceneQueryMath.js#0002:sceneQueryFilterReport","exportIndex":2,"name":"sceneQueryFilterReport","kind":"function","signature":"sceneQueryFilterReport(query = {}, target = {}, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SceneQueryMath.md","moduleTitle":"core/math/SceneQueryMath","source":"engine/core/math/SceneQueryMath.js","import":"/engine/core/math/SceneQueryMath.js","sourceHash":"6d64bbd24fb70a6eee2e7ff3e8be61466a054782a1b968887d6c0c40eb7a3b63","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SceneQueryMath.js#0003:sceneQuerySweptAabbReport","exportIndex":3,"name":"sceneQuerySweptAabbReport","kind":"function","signature":"sceneQuerySweptAabbReport(movingMin, movingMax, staticMin, staticMax, delta, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SceneQueryMath.md","moduleTitle":"core/math/SceneQueryMath","source":"engine/core/math/SceneQueryMath.js","import":"/engine/core/math/SceneQueryMath.js","sourceHash":"6d64bbd24fb70a6eee2e7ff3e8be61466a054782a1b968887d6c0c40eb7a3b63","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SceneQueryMath.js#0004:sceneQueryAabbOverlapReport","exportIndex":4,"name":"sceneQueryAabbOverlapReport","kind":"function","signature":"sceneQueryAabbOverlapReport(aMin, aMax, bMin, bMax, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SceneQueryMath.md","moduleTitle":"core/math/SceneQueryMath","source":"engine/core/math/SceneQueryMath.js","import":"/engine/core/math/SceneQueryMath.js","sourceHash":"6d64bbd24fb70a6eee2e7ff3e8be61466a054782a1b968887d6c0c40eb7a3b63","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SceneQueryMath.js#0005:sceneQuerySpherePenetrationReport","exportIndex":5,"name":"sceneQuerySpherePenetrationReport","kind":"function","signature":"sceneQuerySpherePenetrationReport(centerA, radiusA, centerB, radiusB, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SceneQueryMath.md","moduleTitle":"core/math/SceneQueryMath","source":"engine/core/math/SceneQueryMath.js","import":"/engine/core/math/SceneQueryMath.js","sourceHash":"6d64bbd24fb70a6eee2e7ff3e8be61466a054782a1b968887d6c0c40eb7a3b63","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SceneQueryMath.js#0006:sceneQueryContactNormalReport","exportIndex":6,"name":"sceneQueryContactNormalReport","kind":"function","signature":"sceneQueryContactNormalReport(normal, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SceneQueryMath.md","moduleTitle":"core/math/SceneQueryMath","source":"engine/core/math/SceneQueryMath.js","import":"/engine/core/math/SceneQueryMath.js","sourceHash":"6d64bbd24fb70a6eee2e7ff3e8be61466a054782a1b968887d6c0c40eb7a3b63","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SceneQueryMath.js#0007:sceneQueryConvexRadiusReport","exportIndex":7,"name":"sceneQueryConvexRadiusReport","kind":"function","signature":"sceneQueryConvexRadiusReport(radius, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SceneQueryMath.md","moduleTitle":"core/math/SceneQueryMath","source":"engine/core/math/SceneQueryMath.js","import":"/engine/core/math/SceneQueryMath.js","sourceHash":"6d64bbd24fb70a6eee2e7ff3e8be61466a054782a1b968887d6c0c40eb7a3b63","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SceneQueryMath.js#0008:sceneQueryBroadphasePairScore","exportIndex":8,"name":"sceneQueryBroadphasePairScore","kind":"function","signature":"sceneQueryBroadphasePairScore(aMin, aMax, bMin, bMax, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SignalQualityMath.md","moduleTitle":"core/math/SignalQualityMath","source":"engine/core/math/SignalQualityMath.js","import":"/engine/core/math/SignalQualityMath.js","sourceHash":"67078c6a522c41c4a34afa8e0fe90123b8708f3484dd0c05d5ace9040d1a4347","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/SignalQualityMath.js","title":"core/math/SignalQualityMath","summary":"SignalQualityMath.js - reusable signal/link health scoring for radio and WebRTC diagnostics.","exportCount":14}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SignalQualityMath.md","moduleTitle":"core/math/SignalQualityMath","source":"engine/core/math/SignalQualityMath.js","import":"/engine/core/math/SignalQualityMath.js","sourceHash":"67078c6a522c41c4a34afa8e0fe90123b8708f3484dd0c05d5ace9040d1a4347","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SignalQualityMath.js#0000:signalLevelQualityScore","exportIndex":0,"name":"signalLevelQualityScore","kind":"function","signature":"signalLevelQualityScore(valueDb, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SignalQualityMath.md","moduleTitle":"core/math/SignalQualityMath","source":"engine/core/math/SignalQualityMath.js","import":"/engine/core/math/SignalQualityMath.js","sourceHash":"67078c6a522c41c4a34afa8e0fe90123b8708f3484dd0c05d5ace9040d1a4347","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SignalQualityMath.js#0001:signalDeliveryQualityScore","exportIndex":1,"name":"signalDeliveryQualityScore","kind":"function","signature":"signalDeliveryQualityScore(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SignalQualityMath.md","moduleTitle":"core/math/SignalQualityMath","source":"engine/core/math/SignalQualityMath.js","import":"/engine/core/math/SignalQualityMath.js","sourceHash":"67078c6a522c41c4a34afa8e0fe90123b8708f3484dd0c05d5ace9040d1a4347","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SignalQualityMath.js#0002:signalLatencyQualityScore","exportIndex":2,"name":"signalLatencyQualityScore","kind":"function","signature":"signalLatencyQualityScore(rttMs, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SignalQualityMath.md","moduleTitle":"core/math/SignalQualityMath","source":"engine/core/math/SignalQualityMath.js","import":"/engine/core/math/SignalQualityMath.js","sourceHash":"67078c6a522c41c4a34afa8e0fe90123b8708f3484dd0c05d5ace9040d1a4347","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SignalQualityMath.js#0003:signalJitterQualityScore","exportIndex":3,"name":"signalJitterQualityScore","kind":"function","signature":"signalJitterQualityScore(jitterMs, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SignalQualityMath.md","moduleTitle":"core/math/SignalQualityMath","source":"engine/core/math/SignalQualityMath.js","import":"/engine/core/math/SignalQualityMath.js","sourceHash":"67078c6a522c41c4a34afa8e0fe90123b8708f3484dd0c05d5ace9040d1a4347","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SignalQualityMath.js#0004:signalBitrateQualityScore","exportIndex":4,"name":"signalBitrateQualityScore","kind":"function","signature":"signalBitrateQualityScore(bitrateBps, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SignalQualityMath.md","moduleTitle":"core/math/SignalQualityMath","source":"engine/core/math/SignalQualityMath.js","import":"/engine/core/math/SignalQualityMath.js","sourceHash":"67078c6a522c41c4a34afa8e0fe90123b8708f3484dd0c05d5ace9040d1a4347","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SignalQualityMath.js#0005:signalQualityReport","exportIndex":5,"name":"signalQualityReport","kind":"function","signature":"signalQualityReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SignalQualityMath.md","moduleTitle":"core/math/SignalQualityMath","source":"engine/core/math/SignalQualityMath.js","import":"/engine/core/math/SignalQualityMath.js","sourceHash":"67078c6a522c41c4a34afa8e0fe90123b8708f3484dd0c05d5ace9040d1a4347","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SignalQualityMath.js#0006:webrtcStatsSignalReport","exportIndex":6,"name":"webrtcStatsSignalReport","kind":"function","signature":"webrtcStatsSignalReport(stats, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SignalQualityMath.md","moduleTitle":"core/math/SignalQualityMath","source":"engine/core/math/SignalQualityMath.js","import":"/engine/core/math/SignalQualityMath.js","sourceHash":"67078c6a522c41c4a34afa8e0fe90123b8708f3484dd0c05d5ace9040d1a4347","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SignalQualityMath.js#0007:signalQualityTrendReport","exportIndex":7,"name":"signalQualityTrendReport","kind":"function","signature":"signalQualityTrendReport(samples = [], options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SignalQualityMath.md","moduleTitle":"core/math/SignalQualityMath","source":"engine/core/math/SignalQualityMath.js","import":"/engine/core/math/SignalQualityMath.js","sourceHash":"67078c6a522c41c4a34afa8e0fe90123b8708f3484dd0c05d5ace9040d1a4347","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SignalQualityMath.js#0008:SIGNAL_QUALITY_DEFAULT_WEIGHTS","exportIndex":8,"name":"SIGNAL_QUALITY_DEFAULT_WEIGHTS","kind":"constant","signature":"SIGNAL_QUALITY_DEFAULT_WEIGHTS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SignalQualityMath.md","moduleTitle":"core/math/SignalQualityMath","source":"engine/core/math/SignalQualityMath.js","import":"/engine/core/math/SignalQualityMath.js","sourceHash":"67078c6a522c41c4a34afa8e0fe90123b8708f3484dd0c05d5ace9040d1a4347","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SignalQualityMath.js#0009:SIGNAL_QUALITY_DEFAULT_MAX_LOSS_RATIO","exportIndex":9,"name":"SIGNAL_QUALITY_DEFAULT_MAX_LOSS_RATIO","kind":"constant","signature":"SIGNAL_QUALITY_DEFAULT_MAX_LOSS_RATIO","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SignalQualityMath.md","moduleTitle":"core/math/SignalQualityMath","source":"engine/core/math/SignalQualityMath.js","import":"/engine/core/math/SignalQualityMath.js","sourceHash":"67078c6a522c41c4a34afa8e0fe90123b8708f3484dd0c05d5ace9040d1a4347","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SignalQualityMath.js#0010:SIGNAL_QUALITY_DEFAULT_TARGET_RTT_MS","exportIndex":10,"name":"SIGNAL_QUALITY_DEFAULT_TARGET_RTT_MS","kind":"constant","signature":"SIGNAL_QUALITY_DEFAULT_TARGET_RTT_MS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SignalQualityMath.md","moduleTitle":"core/math/SignalQualityMath","source":"engine/core/math/SignalQualityMath.js","import":"/engine/core/math/SignalQualityMath.js","sourceHash":"67078c6a522c41c4a34afa8e0fe90123b8708f3484dd0c05d5ace9040d1a4347","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SignalQualityMath.js#0011:SIGNAL_QUALITY_DEFAULT_MAX_RTT_MS","exportIndex":11,"name":"SIGNAL_QUALITY_DEFAULT_MAX_RTT_MS","kind":"constant","signature":"SIGNAL_QUALITY_DEFAULT_MAX_RTT_MS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SignalQualityMath.md","moduleTitle":"core/math/SignalQualityMath","source":"engine/core/math/SignalQualityMath.js","import":"/engine/core/math/SignalQualityMath.js","sourceHash":"67078c6a522c41c4a34afa8e0fe90123b8708f3484dd0c05d5ace9040d1a4347","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SignalQualityMath.js#0012:SIGNAL_QUALITY_DEFAULT_TARGET_JITTER_MS","exportIndex":12,"name":"SIGNAL_QUALITY_DEFAULT_TARGET_JITTER_MS","kind":"constant","signature":"SIGNAL_QUALITY_DEFAULT_TARGET_JITTER_MS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SignalQualityMath.md","moduleTitle":"core/math/SignalQualityMath","source":"engine/core/math/SignalQualityMath.js","import":"/engine/core/math/SignalQualityMath.js","sourceHash":"67078c6a522c41c4a34afa8e0fe90123b8708f3484dd0c05d5ace9040d1a4347","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SignalQualityMath.js#0013:SIGNAL_QUALITY_DEFAULT_MAX_JITTER_MS","exportIndex":13,"name":"SIGNAL_QUALITY_DEFAULT_MAX_JITTER_MS","kind":"constant","signature":"SIGNAL_QUALITY_DEFAULT_MAX_JITTER_MS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SpatialHash.md","moduleTitle":"core/math/SpatialHash","source":"engine/core/math/SpatialHash.js","import":"/engine/core/math/SpatialHash.js","sourceHash":"d43a46a0d6e893a726d6311db81f0fe0db85756ff1acb033aed558d395c881b2","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/SpatialHash.js","title":"core/math/SpatialHash","summary":"SpatialHash.js - Fast spatial queries for particles and entities Uses a grid-based hash for O(1) average-case neighbor queries.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SpatialHash.md","moduleTitle":"core/math/SpatialHash","source":"engine/core/math/SpatialHash.js","import":"/engine/core/math/SpatialHash.js","sourceHash":"d43a46a0d6e893a726d6311db81f0fe0db85756ff1acb033aed558d395c881b2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SpatialHash.js#0000:SpatialHash","exportIndex":0,"name":"SpatialHash","kind":"class","signature":"class SpatialHash","summary":"SpatialHash.js - Fast spatial queries for particles and entities Uses a grid-based hash for O(1) average-case neighbor queries."}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SpatialHashCompute.md","moduleTitle":"core/math/SpatialHashCompute","source":"engine/core/math/SpatialHashCompute.js","import":"/engine/core/math/SpatialHashCompute.js","sourceHash":"be6c41e76886c0f9bb8788f6992ddab404612506e94e9cfb79978561f1001ad9","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/SpatialHashCompute.js","title":"core/math/SpatialHashCompute","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/SpatialHashCompute.md","moduleTitle":"core/math/SpatialHashCompute","source":"engine/core/math/SpatialHashCompute.js","import":"/engine/core/math/SpatialHashCompute.js","sourceHash":"be6c41e76886c0f9bb8788f6992ddab404612506e94e9cfb79978561f1001ad9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/SpatialHashCompute.js#0000:SpatialHashCompute","exportIndex":0,"name":"SpatialHashCompute","kind":"class","signature":"class SpatialHashCompute","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TensorShapeMath.md","moduleTitle":"core/math/TensorShapeMath","source":"engine/core/math/TensorShapeMath.js","import":"/engine/core/math/TensorShapeMath.js","sourceHash":"52ccff79dfcb9e8459595109ebdedc051f5bd7d6942805e86bde94b6ac141eda","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/TensorShapeMath.js","title":"core/math/TensorShapeMath","summary":"TensorShapeMath.js - reusable tensor shape, broadcast, stride, dtype, and graph memory reports.","exportCount":18}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TensorShapeMath.md","moduleTitle":"core/math/TensorShapeMath","source":"engine/core/math/TensorShapeMath.js","import":"/engine/core/math/TensorShapeMath.js","sourceHash":"52ccff79dfcb9e8459595109ebdedc051f5bd7d6942805e86bde94b6ac141eda","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TensorShapeMath.js#0000:normalizeTensorShape","exportIndex":0,"name":"normalizeTensorShape","kind":"function","signature":"normalizeTensorShape(shape, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TensorShapeMath.md","moduleTitle":"core/math/TensorShapeMath","source":"engine/core/math/TensorShapeMath.js","import":"/engine/core/math/TensorShapeMath.js","sourceHash":"52ccff79dfcb9e8459595109ebdedc051f5bd7d6942805e86bde94b6ac141eda","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TensorShapeMath.js#0001:tensorElementCount","exportIndex":1,"name":"tensorElementCount","kind":"function","signature":"tensorElementCount(shape, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TensorShapeMath.md","moduleTitle":"core/math/TensorShapeMath","source":"engine/core/math/TensorShapeMath.js","import":"/engine/core/math/TensorShapeMath.js","sourceHash":"52ccff79dfcb9e8459595109ebdedc051f5bd7d6942805e86bde94b6ac141eda","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TensorShapeMath.js#0002:tensorDTypeByteSize","exportIndex":2,"name":"tensorDTypeByteSize","kind":"function","signature":"tensorDTypeByteSize(dtype)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TensorShapeMath.md","moduleTitle":"core/math/TensorShapeMath","source":"engine/core/math/TensorShapeMath.js","import":"/engine/core/math/TensorShapeMath.js","sourceHash":"52ccff79dfcb9e8459595109ebdedc051f5bd7d6942805e86bde94b6ac141eda","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TensorShapeMath.js#0003:contiguousStrides","exportIndex":3,"name":"contiguousStrides","kind":"function","signature":"contiguousStrides(shape, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TensorShapeMath.md","moduleTitle":"core/math/TensorShapeMath","source":"engine/core/math/TensorShapeMath.js","import":"/engine/core/math/TensorShapeMath.js","sourceHash":"52ccff79dfcb9e8459595109ebdedc051f5bd7d6942805e86bde94b6ac141eda","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TensorShapeMath.js#0004:tensorIndexToOffset","exportIndex":4,"name":"tensorIndexToOffset","kind":"function","signature":"tensorIndexToOffset(indices, strides, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TensorShapeMath.md","moduleTitle":"core/math/TensorShapeMath","source":"engine/core/math/TensorShapeMath.js","import":"/engine/core/math/TensorShapeMath.js","sourceHash":"52ccff79dfcb9e8459595109ebdedc051f5bd7d6942805e86bde94b6ac141eda","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TensorShapeMath.js#0005:tensorOffsetToIndices","exportIndex":5,"name":"tensorOffsetToIndices","kind":"function","signature":"tensorOffsetToIndices(offset, shape, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TensorShapeMath.md","moduleTitle":"core/math/TensorShapeMath","source":"engine/core/math/TensorShapeMath.js","import":"/engine/core/math/TensorShapeMath.js","sourceHash":"52ccff79dfcb9e8459595109ebdedc051f5bd7d6942805e86bde94b6ac141eda","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TensorShapeMath.js#0006:broadcastShapes","exportIndex":6,"name":"broadcastShapes","kind":"function","signature":"broadcastShapes(...inputShapes)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TensorShapeMath.md","moduleTitle":"core/math/TensorShapeMath","source":"engine/core/math/TensorShapeMath.js","import":"/engine/core/math/TensorShapeMath.js","sourceHash":"52ccff79dfcb9e8459595109ebdedc051f5bd7d6942805e86bde94b6ac141eda","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TensorShapeMath.js#0007:broadcastReport","exportIndex":7,"name":"broadcastReport","kind":"function","signature":"broadcastReport(inputShapes)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TensorShapeMath.md","moduleTitle":"core/math/TensorShapeMath","source":"engine/core/math/TensorShapeMath.js","import":"/engine/core/math/TensorShapeMath.js","sourceHash":"52ccff79dfcb9e8459595109ebdedc051f5bd7d6942805e86bde94b6ac141eda","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TensorShapeMath.js#0008:unidirectionalBroadcastShape","exportIndex":8,"name":"unidirectionalBroadcastShape","kind":"function","signature":"unidirectionalBroadcastShape(shapeFrom, shapeTo)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TensorShapeMath.md","moduleTitle":"core/math/TensorShapeMath","source":"engine/core/math/TensorShapeMath.js","import":"/engine/core/math/TensorShapeMath.js","sourceHash":"52ccff79dfcb9e8459595109ebdedc051f5bd7d6942805e86bde94b6ac141eda","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TensorShapeMath.js#0009:blockwiseBroadcastReport","exportIndex":9,"name":"blockwiseBroadcastReport","kind":"function","signature":"blockwiseBroadcastReport(shapeFrom, shapeTo)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TensorShapeMath.md","moduleTitle":"core/math/TensorShapeMath","source":"engine/core/math/TensorShapeMath.js","import":"/engine/core/math/TensorShapeMath.js","sourceHash":"52ccff79dfcb9e8459595109ebdedc051f5bd7d6942805e86bde94b6ac141eda","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TensorShapeMath.js#0010:reshapeReport","exportIndex":10,"name":"reshapeReport","kind":"function","signature":"reshapeReport(inputShape, targetShape, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TensorShapeMath.md","moduleTitle":"core/math/TensorShapeMath","source":"engine/core/math/TensorShapeMath.js","import":"/engine/core/math/TensorShapeMath.js","sourceHash":"52ccff79dfcb9e8459595109ebdedc051f5bd7d6942805e86bde94b6ac141eda","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TensorShapeMath.js#0011:tensorLayoutReport","exportIndex":11,"name":"tensorLayoutReport","kind":"function","signature":"tensorLayoutReport(shape, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TensorShapeMath.md","moduleTitle":"core/math/TensorShapeMath","source":"engine/core/math/TensorShapeMath.js","import":"/engine/core/math/TensorShapeMath.js","sourceHash":"52ccff79dfcb9e8459595109ebdedc051f5bd7d6942805e86bde94b6ac141eda","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TensorShapeMath.js#0012:tensorBufferSizeReport","exportIndex":12,"name":"tensorBufferSizeReport","kind":"function","signature":"tensorBufferSizeReport(shape, dtype = 'float32', options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TensorShapeMath.md","moduleTitle":"core/math/TensorShapeMath","source":"engine/core/math/TensorShapeMath.js","import":"/engine/core/math/TensorShapeMath.js","sourceHash":"52ccff79dfcb9e8459595109ebdedc051f5bd7d6942805e86bde94b6ac141eda","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TensorShapeMath.js#0013:reductionShape","exportIndex":13,"name":"reductionShape","kind":"function","signature":"reductionShape(shape, axes, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TensorShapeMath.md","moduleTitle":"core/math/TensorShapeMath","source":"engine/core/math/TensorShapeMath.js","import":"/engine/core/math/TensorShapeMath.js","sourceHash":"52ccff79dfcb9e8459595109ebdedc051f5bd7d6942805e86bde94b6ac141eda","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TensorShapeMath.js#0014:matmulShapeReport","exportIndex":14,"name":"matmulShapeReport","kind":"function","signature":"matmulShapeReport(shapeA, shapeB)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TensorShapeMath.md","moduleTitle":"core/math/TensorShapeMath","source":"engine/core/math/TensorShapeMath.js","import":"/engine/core/math/TensorShapeMath.js","sourceHash":"52ccff79dfcb9e8459595109ebdedc051f5bd7d6942805e86bde94b6ac141eda","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TensorShapeMath.js#0015:elementwiseShapeReport","exportIndex":15,"name":"elementwiseShapeReport","kind":"function","signature":"elementwiseShapeReport(inputShapes)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TensorShapeMath.md","moduleTitle":"core/math/TensorShapeMath","source":"engine/core/math/TensorShapeMath.js","import":"/engine/core/math/TensorShapeMath.js","sourceHash":"52ccff79dfcb9e8459595109ebdedc051f5bd7d6942805e86bde94b6ac141eda","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TensorShapeMath.js#0016:tensorGraphMemoryReport","exportIndex":16,"name":"tensorGraphMemoryReport","kind":"function","signature":"tensorGraphMemoryReport(tensors, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TensorShapeMath.md","moduleTitle":"core/math/TensorShapeMath","source":"engine/core/math/TensorShapeMath.js","import":"/engine/core/math/TensorShapeMath.js","sourceHash":"52ccff79dfcb9e8459595109ebdedc051f5bd7d6942805e86bde94b6ac141eda","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TensorShapeMath.js#0017:TENSOR_DTYPE_BYTE_SIZE","exportIndex":17,"name":"TENSOR_DTYPE_BYTE_SIZE","kind":"constant","signature":"TENSOR_DTYPE_BYTE_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextMetricMath.md","moduleTitle":"core/math/TextMetricMath","source":"engine/core/math/TextMetricMath.js","import":"/engine/core/math/TextMetricMath.js","sourceHash":"a2b80f4fd55cd689dad46e3a15eaaa409f3774a19dc6f85eff02f51ba5fba741","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/TextMetricMath.js","title":"core/math/TextMetricMath","summary":"TextMetricMath.js - grapheme, text-run, wrap, baseline, selection, and glyph-atlas reports.","exportCount":11}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextMetricMath.md","moduleTitle":"core/math/TextMetricMath","source":"engine/core/math/TextMetricMath.js","import":"/engine/core/math/TextMetricMath.js","sourceHash":"a2b80f4fd55cd689dad46e3a15eaaa409f3774a19dc6f85eff02f51ba5fba741","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextMetricMath.js#0000:textGraphemeSegments","exportIndex":0,"name":"textGraphemeSegments","kind":"function","signature":"textGraphemeSegments(text, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextMetricMath.md","moduleTitle":"core/math/TextMetricMath","source":"engine/core/math/TextMetricMath.js","import":"/engine/core/math/TextMetricMath.js","sourceHash":"a2b80f4fd55cd689dad46e3a15eaaa409f3774a19dc6f85eff02f51ba5fba741","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextMetricMath.js#0001:textGraphemeBoundaries","exportIndex":1,"name":"textGraphemeBoundaries","kind":"function","signature":"textGraphemeBoundaries(text, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextMetricMath.md","moduleTitle":"core/math/TextMetricMath","source":"engine/core/math/TextMetricMath.js","import":"/engine/core/math/TextMetricMath.js","sourceHash":"a2b80f4fd55cd689dad46e3a15eaaa409f3774a19dc6f85eff02f51ba5fba741","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextMetricMath.js#0002:textCursorAdvance","exportIndex":2,"name":"textCursorAdvance","kind":"function","signature":"textCursorAdvance(text, offset = 0, direction = 1, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextMetricMath.md","moduleTitle":"core/math/TextMetricMath","source":"engine/core/math/TextMetricMath.js","import":"/engine/core/math/TextMetricMath.js","sourceHash":"a2b80f4fd55cd689dad46e3a15eaaa409f3774a19dc6f85eff02f51ba5fba741","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextMetricMath.js#0003:textRunMetricReport","exportIndex":3,"name":"textRunMetricReport","kind":"function","signature":"textRunMetricReport(text, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextMetricMath.md","moduleTitle":"core/math/TextMetricMath","source":"engine/core/math/TextMetricMath.js","import":"/engine/core/math/TextMetricMath.js","sourceHash":"a2b80f4fd55cd689dad46e3a15eaaa409f3774a19dc6f85eff02f51ba5fba741","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextMetricMath.js#0004:textBidiRunReport","exportIndex":4,"name":"textBidiRunReport","kind":"function","signature":"textBidiRunReport(text, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextMetricMath.md","moduleTitle":"core/math/TextMetricMath","source":"engine/core/math/TextMetricMath.js","import":"/engine/core/math/TextMetricMath.js","sourceHash":"a2b80f4fd55cd689dad46e3a15eaaa409f3774a19dc6f85eff02f51ba5fba741","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextMetricMath.js#0005:textLineBreakOpportunityReport","exportIndex":5,"name":"textLineBreakOpportunityReport","kind":"function","signature":"textLineBreakOpportunityReport(text, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextMetricMath.md","moduleTitle":"core/math/TextMetricMath","source":"engine/core/math/TextMetricMath.js","import":"/engine/core/math/TextMetricMath.js","sourceHash":"a2b80f4fd55cd689dad46e3a15eaaa409f3774a19dc6f85eff02f51ba5fba741","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextMetricMath.js#0006:textLineWrapReport","exportIndex":6,"name":"textLineWrapReport","kind":"function","signature":"textLineWrapReport(text, maxWidth = Infinity, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextMetricMath.md","moduleTitle":"core/math/TextMetricMath","source":"engine/core/math/TextMetricMath.js","import":"/engine/core/math/TextMetricMath.js","sourceHash":"a2b80f4fd55cd689dad46e3a15eaaa409f3774a19dc6f85eff02f51ba5fba741","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextMetricMath.js#0007:textTruncateReport","exportIndex":7,"name":"textTruncateReport","kind":"function","signature":"textTruncateReport(text, maxWidth = Infinity, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextMetricMath.md","moduleTitle":"core/math/TextMetricMath","source":"engine/core/math/TextMetricMath.js","import":"/engine/core/math/TextMetricMath.js","sourceHash":"a2b80f4fd55cd689dad46e3a15eaaa409f3774a19dc6f85eff02f51ba5fba741","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextMetricMath.js#0008:textBaselineReport","exportIndex":8,"name":"textBaselineReport","kind":"function","signature":"textBaselineReport(metrics = {}, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextMetricMath.md","moduleTitle":"core/math/TextMetricMath","source":"engine/core/math/TextMetricMath.js","import":"/engine/core/math/TextMetricMath.js","sourceHash":"a2b80f4fd55cd689dad46e3a15eaaa409f3774a19dc6f85eff02f51ba5fba741","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextMetricMath.js#0009:textSelectionRects","exportIndex":9,"name":"textSelectionRects","kind":"function","signature":"textSelectionRects(wrapReport, start = 0, end = start, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextMetricMath.md","moduleTitle":"core/math/TextMetricMath","source":"engine/core/math/TextMetricMath.js","import":"/engine/core/math/TextMetricMath.js","sourceHash":"a2b80f4fd55cd689dad46e3a15eaaa409f3774a19dc6f85eff02f51ba5fba741","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextMetricMath.js#0010:glyphAtlasPlacementReport","exportIndex":10,"name":"glyphAtlasPlacementReport","kind":"function","signature":"glyphAtlasPlacementReport(glyphs = [], options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/TextureMath.js","title":"core/math/TextureMath","summary":"TextureMath.js - shared UV, atlas, format, and mip pyramid helpers.","exportCount":67}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0000:uvWrap","exportIndex":0,"name":"uvWrap","kind":"function","signature":"uvWrap(uv, min = [0, 0], max = [1, 1])","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0001:uvClamp","exportIndex":1,"name":"uvClamp","kind":"function","signature":"uvClamp(uv, min = [0, 0], max = [1, 1])","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0002:uvMirror","exportIndex":2,"name":"uvMirror","kind":"function","signature":"uvMirror(uv)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0003:tileUV","exportIndex":3,"name":"tileUV","kind":"function","signature":"tileUV(uv, scale = [1, 1], offset = [0, 0])","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0004:textureTransformUV","exportIndex":4,"name":"textureTransformUV","kind":"function","signature":"textureTransformUV(uv, transform = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0005:atlasUVTransform","exportIndex":5,"name":"atlasUVTransform","kind":"function","signature":"atlasUVTransform(x, y, width, height, atlasWidth, atlasHeight = atlasWidth)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0006:textureMipExtent3D","exportIndex":6,"name":"textureMipExtent3D","kind":"function","signature":"textureMipExtent3D(width, height = width, depth = 1, mipLevel = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0007:atlasUV","exportIndex":7,"name":"atlasUV","kind":"function","signature":"atlasUV(uv, transform)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0008:atlasPaddedExtent","exportIndex":8,"name":"atlasPaddedExtent","kind":"function","signature":"atlasPaddedExtent(width, height = width, padding = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0009:atlasContentRect","exportIndex":9,"name":"atlasContentRect","kind":"function","signature":"atlasContentRect(x, y, width, height, padding = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0010:atlasPaddedRectFromContent","exportIndex":10,"name":"atlasPaddedRectFromContent","kind":"function","signature":"atlasPaddedRectFromContent(x, y, width, height, padding = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0011:atlasPaddedArea","exportIndex":11,"name":"atlasPaddedArea","kind":"function","signature":"atlasPaddedArea(width, height, padding = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0012:atlasRegionUVs","exportIndex":12,"name":"atlasRegionUVs","kind":"function","signature":"atlasRegionUVs(x, y, width, height, atlasWidth, atlasHeight = atlasWidth)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0013:virtualTexturePageGrid","exportIndex":13,"name":"virtualTexturePageGrid","kind":"function","signature":"virtualTexturePageGrid(pageTableWidth = 2048, pageTableHeight = pageTableWidth)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0014:virtualTexturePageId","exportIndex":14,"name":"virtualTexturePageId","kind":"function","signature":"virtualTexturePageId(pageX, pageY, pageTableWidth = 2048, pageTableHeight = pageTableWidth)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0015:virtualTexturePageCoord","exportIndex":15,"name":"virtualTexturePageCoord","kind":"function","signature":"virtualTexturePageCoord(pageId, pageTableWidth = 2048, pageTableHeight = pageTableWidth)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0016:virtualTexturePageCoordFromUV","exportIndex":16,"name":"virtualTexturePageCoordFromUV","kind":"function","signature":"virtualTexturePageCoordFromUV(uv, pageTableWidth = 2048, pageTableHeight = pageTableWidth)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0017:virtualTexturePhysicalPageGrid","exportIndex":17,"name":"virtualTexturePhysicalPageGrid","kind":"function","signature":"virtualTexturePhysicalPageGrid(cacheWidth = 4096, pageSize = 256, cacheHeight = cacheWidth)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0018:virtualTexturePhysicalPageOrigin","exportIndex":18,"name":"virtualTexturePhysicalPageOrigin","kind":"function","signature":"virtualTexturePhysicalPageOrigin(slotIndex, cacheWidth = 4096, pageSize = 256, cacheHeight = cacheWidth)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0019:virtualTexturePhysicalUV","exportIndex":19,"name":"virtualTexturePhysicalUV","kind":"function","signature":"virtualTexturePhysicalUV(uv, physicalPage, { pageTableWidth = 2048, pageTableHeight = pageTableWidth, pageSize = 256, cacheWidth = 4096, cacheHeight = cacheWidth, } = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0020:virtualTexturePageTableEntry","exportIndex":20,"name":"virtualTexturePageTableEntry","kind":"function","signature":"virtualTexturePageTableEntry(pageId, physicalLocation, { pageTableWidth = 2048, pageTableHeight = pageTableWidth, pageSize = 256, resident = 1, reserved = 0, } = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0021:virtualTextureFeedbackBufferLayout","exportIndex":21,"name":"virtualTextureFeedbackBufferLayout","kind":"function","signature":"virtualTextureFeedbackBufferLayout(pageTableWidth = 2048, pageTableHeight = pageTableWidth, bytesPerFlag = 4)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0022:virtualTextureFeedbackBufferByteSize","exportIndex":22,"name":"virtualTextureFeedbackBufferByteSize","kind":"function","signature":"virtualTextureFeedbackBufferByteSize(pageTableWidth = 2048, pageTableHeight = pageTableWidth, bytesPerFlag = 4)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0023:virtualTextureFeedbackIndex","exportIndex":23,"name":"virtualTextureFeedbackIndex","kind":"function","signature":"virtualTextureFeedbackIndex(pageId, pageTableWidth = 2048, pageTableHeight = pageTableWidth)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0024:compactVirtualTextureFeedback","exportIndex":24,"name":"compactVirtualTextureFeedback","kind":"function","signature":"compactVirtualTextureFeedback(feedbackData, { pageTableWidth = 2048, pageTableHeight = pageTableWidth, maxRequests = Infinity, residentPages = null, } = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0025:pixelToUV","exportIndex":25,"name":"pixelToUV","kind":"function","signature":"pixelToUV(pixel, textureSize, centered = false)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0026:uvToPixel","exportIndex":26,"name":"uvToPixel","kind":"function","signature":"uvToPixel(uv, textureSize, centered = false)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0027:triplanarWeights","exportIndex":27,"name":"triplanarWeights","kind":"function","signature":"triplanarWeights(normal, sharpness = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0028:textureMipLevelCount","exportIndex":28,"name":"textureMipLevelCount","kind":"function","signature":"textureMipLevelCount(width, height = width, depth = 1, maxMipLevels = Infinity)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0029:textureMipExtent","exportIndex":29,"name":"textureMipExtent","kind":"function","signature":"textureMipExtent(width, height, mipLevel = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0030:textureMipByteSize","exportIndex":30,"name":"textureMipByteSize","kind":"function","signature":"textureMipByteSize(width, height, bytesPerPixel = 4, mipLevels = 1, depthOrArrayLayers = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0031:textureFormatBlockInfo","exportIndex":31,"name":"textureFormatBlockInfo","kind":"function","signature":"textureFormatBlockInfo(format = 'rgba8unorm', fallbackBytesPerPixel = 4)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0032:textureFormatFamily","exportIndex":32,"name":"textureFormatFamily","kind":"function","signature":"textureFormatFamily(format = 'rgba8unorm')","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0033:textureFormatFeature","exportIndex":33,"name":"textureFormatFeature","kind":"function","signature":"textureFormatFeature(format = 'rgba8unorm')","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0034:textureFormatAlphaMode","exportIndex":34,"name":"textureFormatAlphaMode","kind":"function","signature":"textureFormatAlphaMode(format = 'rgba8unorm')","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0035:textureFormatIsSupported","exportIndex":35,"name":"textureFormatIsSupported","kind":"function","signature":"textureFormatIsSupported(format = 'rgba8unorm', features = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0036:textureDefaultTranscodeTargets","exportIndex":36,"name":"textureDefaultTranscodeTargets","kind":"function","signature":"textureDefaultTranscodeTargets({ needsAlpha = true, preferSrgb = false } = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0037:textureBytesPerPixel","exportIndex":37,"name":"textureBytesPerPixel","kind":"function","signature":"textureBytesPerPixel(format = 'rgba8unorm', fallbackBytesPerPixel = 4)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0038:textureFormatBitsPerPixel","exportIndex":38,"name":"textureFormatBitsPerPixel","kind":"function","signature":"textureFormatBitsPerPixel(format = 'rgba8unorm', fallbackBytesPerPixel = 4)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0039:textureMipBlockExtent","exportIndex":39,"name":"textureMipBlockExtent","kind":"function","signature":"textureMipBlockExtent(width, height, format = 'rgba8unorm', mipLevel = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0040:textureMipBlockExtent3D","exportIndex":40,"name":"textureMipBlockExtent3D","kind":"function","signature":"textureMipBlockExtent3D(width, height, depth = 1, format = 'rgba8unorm', mipLevel = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0041:textureFormatMipByteSize","exportIndex":41,"name":"textureFormatMipByteSize","kind":"function","signature":"textureFormatMipByteSize(width, height, format = 'rgba8unorm', mipLevels = 1, depthOrArrayLayers = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0042:textureDescriptorByteSize","exportIndex":42,"name":"textureDescriptorByteSize","kind":"function","signature":"textureDescriptorByteSize(descriptor = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0043:textureContainerLevelByteSize","exportIndex":43,"name":"textureContainerLevelByteSize","kind":"function","signature":"textureContainerLevelByteSize({ width, height = width, depth = 1, format = 'rgba8unorm', mipLevel = 0, layerCount = 1, faceCount = 1, } = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0044:textureKtxLevelAlignment","exportIndex":44,"name":"textureKtxLevelAlignment","kind":"function","signature":"textureKtxLevelAlignment(format = 'rgba8unorm', supercompressionScheme = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0045:alignByteOffset","exportIndex":45,"name":"alignByteOffset","kind":"function","signature":"alignByteOffset(byteOffset, alignment = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0046:textureKtxMipPadding","exportIndex":46,"name":"textureKtxMipPadding","kind":"function","signature":"textureKtxMipPadding(byteOffset, format = 'rgba8unorm', supercompressionScheme = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0047:textureKtxSupercompressionSchemeInfo","exportIndex":47,"name":"textureKtxSupercompressionSchemeInfo","kind":"function","signature":"textureKtxSupercompressionSchemeInfo(supercompressionScheme = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0048:textureKtxSupercompressionLevelReport","exportIndex":48,"name":"textureKtxSupercompressionLevelReport","kind":"function","signature":"textureKtxSupercompressionLevelReport({ byteLength = 0, uncompressedByteLength = byteLength, supercompressionScheme = 0, expectedUncompressedByteLength = null, faceCount = 1, layerCount = 1, } = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0049:textureKtxSupercompressionGlobalDataRange","exportIndex":49,"name":"textureKtxSupercompressionGlobalDataRange","kind":"function","signature":"textureKtxSupercompressionGlobalDataRange({ byteOffset = 0, byteLength = 0, precedingByteEnd = 0, supercompressionScheme = 0, } = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0050:textureKtxSupercompressionPolicy","exportIndex":50,"name":"textureKtxSupercompressionPolicy","kind":"function","signature":"textureKtxSupercompressionPolicy({ supercompressionScheme = 0, levels = [], expectedUncompressedByteLengths = null, sgdByteOffset = 0, sgdByteLength = 0, precedingByteEnd = 0, faceCount = 1, layerCount = 1, } = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0051:textureContainerImageLayout","exportIndex":51,"name":"textureContainerImageLayout","kind":"function","signature":"textureContainerImageLayout({ width, height = width, depth = 1, format = 'rgba8unorm', mipLevel = 0, layerCount = 1, faceCount = 1, } = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0052:textureContainerImageByteOffset","exportIndex":52,"name":"textureContainerImageByteOffset","kind":"function","signature":"textureContainerImageByteOffset(layout, layer = 0, face = 0, zSlice = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0053:textureWebGpuUploadLayout","exportIndex":53,"name":"textureWebGpuUploadLayout","kind":"function","signature":"textureWebGpuUploadLayout({ width, height = width, depthOrArrayLayers = 1, format = 'rgba8unorm', mipLevel = 0, offset = 0, bytesPerRowAlignment = 1, copyBufferToTexture = false, } = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0054:textureKtxLevelLayout","exportIndex":54,"name":"textureKtxLevelLayout","kind":"function","signature":"textureKtxLevelLayout({ width, height = width, depth = 1, format = 'rgba8unorm', levelCount = textureMipLevelCount(width, height, depth)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0055:textureMemorySavingsRatio","exportIndex":55,"name":"textureMemorySavingsRatio","kind":"function","signature":"textureMemorySavingsRatio(width, height, compressedFormat, referenceFormat = 'rgba8unorm', mipLevels = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0056:textureQualitySizeScore","exportIndex":56,"name":"textureQualitySizeScore","kind":"function","signature":"textureQualitySizeScore({ width, height = width, format = 'rgba8unorm', referenceFormat = 'rgba8unorm', mipLevels = 1, depthOrArrayLayers = 1, quality = 1, byteBudget = Infinity, budgetBytes = byteBudget, qualityWeight = 0.7, sizeWeight = 0.3, budgetWeight, } = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0057:textureTranscodeTargetScore","exportIndex":57,"name":"textureTranscodeTargetScore","kind":"function","signature":"textureTranscodeTargetScore(target, { width, height = width, referenceFormat = 'rgba8unorm', mipLevels = 1, depthOrArrayLayers = 1, supportedFeatures = null, needsAlpha = true, allowPunchthroughAlpha = false, preferSrgb = false, byteBudget = Infinity, qualityWeight = 0.7, sizeWeight = 0.3, budgetWeight, } = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0058:textureRankTranscodeTargets","exportIndex":58,"name":"textureRankTranscodeTargets","kind":"function","signature":"textureRankTranscodeTargets({ candidates = null, needsAlpha = true, preferSrgb = false, ...options } = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0059:textureSelectTranscodeTarget","exportIndex":59,"name":"textureSelectTranscodeTarget","kind":"function","signature":"textureSelectTranscodeTarget(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0060:textureStreamingPriorityScore","exportIndex":60,"name":"textureStreamingPriorityScore","kind":"function","signature":"textureStreamingPriorityScore({ priority = 0, distance = Infinity, lastUsedFrame = 0, frameIndex = 0, distanceScale = 0.01, recencyScale = 0.1, distanceWeight = 10, recencyWeight = 5, } = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0061:mipLevelFromPixelSize","exportIndex":61,"name":"mipLevelFromPixelSize","kind":"function","signature":"mipLevelFromPixelSize(pixelSize, maxMipLevel = Infinity)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0062:textureFade","exportIndex":62,"name":"textureFade","kind":"function","signature":"textureFade(distance, fadeStart, fadeEnd)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0063:TEXTURE_FORMAT_BLOCKS","exportIndex":63,"name":"TEXTURE_FORMAT_BLOCKS","kind":"constant","signature":"TEXTURE_FORMAT_BLOCKS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0064:TEXTURE_TRANSCODE_TARGETS","exportIndex":64,"name":"TEXTURE_TRANSCODE_TARGETS","kind":"constant","signature":"TEXTURE_TRANSCODE_TARGETS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0065:KTX_SUPERCOMPRESSION_SCHEMES","exportIndex":65,"name":"KTX_SUPERCOMPRESSION_SCHEMES","kind":"constant","signature":"KTX_SUPERCOMPRESSION_SCHEMES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/TextureMath.md","moduleTitle":"core/math/TextureMath","source":"engine/core/math/TextureMath.js","import":"/engine/core/math/TextureMath.js","sourceHash":"20dc9b3406e54f1e5fc6989e43c8e4b323a47b6e13d6f26951d4a69b69c2b49b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/TextureMath.js#0066:WEBGPU_COPY_BYTES_PER_ROW_ALIGNMENT","exportIndex":66,"name":"WEBGPU_COPY_BYTES_PER_ROW_ALIGNMENT","kind":"constant","signature":"WEBGPU_COPY_BYTES_PER_ROW_ALIGNMENT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UILayoutMath.md","moduleTitle":"core/math/UILayoutMath","source":"engine/core/math/UILayoutMath.js","import":"/engine/core/math/UILayoutMath.js","sourceHash":"f1030128260446b3231aec2842263de2f39c4d416662281e2829d00b7cf5a50a","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/UILayoutMath.js","title":"core/math/UILayoutMath","summary":"UILayoutMath.js - pure CSS/UI length, constraint, and responsive layout reports.","exportCount":14}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UILayoutMath.md","moduleTitle":"core/math/UILayoutMath","source":"engine/core/math/UILayoutMath.js","import":"/engine/core/math/UILayoutMath.js","sourceHash":"f1030128260446b3231aec2842263de2f39c4d416662281e2829d00b7cf5a50a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UILayoutMath.js#0000:uiCssUnitMetadata","exportIndex":0,"name":"uiCssUnitMetadata","kind":"function","signature":"uiCssUnitMetadata(unit, context = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UILayoutMath.md","moduleTitle":"core/math/UILayoutMath","source":"engine/core/math/UILayoutMath.js","import":"/engine/core/math/UILayoutMath.js","sourceHash":"f1030128260446b3231aec2842263de2f39c4d416662281e2829d00b7cf5a50a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UILayoutMath.js#0001:uiCssMathFunctionReport","exportIndex":1,"name":"uiCssMathFunctionReport","kind":"function","signature":"uiCssMathFunctionReport(value, context = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UILayoutMath.md","moduleTitle":"core/math/UILayoutMath","source":"engine/core/math/UILayoutMath.js","import":"/engine/core/math/UILayoutMath.js","sourceHash":"f1030128260446b3231aec2842263de2f39c4d416662281e2829d00b7cf5a50a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UILayoutMath.js#0002:uiLayoutValueReport","exportIndex":2,"name":"uiLayoutValueReport","kind":"function","signature":"uiLayoutValueReport(value, context = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UILayoutMath.md","moduleTitle":"core/math/UILayoutMath","source":"engine/core/math/UILayoutMath.js","import":"/engine/core/math/UILayoutMath.js","sourceHash":"f1030128260446b3231aec2842263de2f39c4d416662281e2829d00b7cf5a50a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UILayoutMath.js#0003:uiPercentageBasisReport","exportIndex":3,"name":"uiPercentageBasisReport","kind":"function","signature":"uiPercentageBasisReport(value, basis, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UILayoutMath.md","moduleTitle":"core/math/UILayoutMath","source":"engine/core/math/UILayoutMath.js","import":"/engine/core/math/UILayoutMath.js","sourceHash":"f1030128260446b3231aec2842263de2f39c4d416662281e2829d00b7cf5a50a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UILayoutMath.js#0004:uiViewportUnitReport","exportIndex":4,"name":"uiViewportUnitReport","kind":"function","signature":"uiViewportUnitReport(value, viewport = {}, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UILayoutMath.md","moduleTitle":"core/math/UILayoutMath","source":"engine/core/math/UILayoutMath.js","import":"/engine/core/math/UILayoutMath.js","sourceHash":"f1030128260446b3231aec2842263de2f39c4d416662281e2829d00b7cf5a50a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UILayoutMath.js#0005:uiSafeAreaInsetReport","exportIndex":5,"name":"uiSafeAreaInsetReport","kind":"function","signature":"uiSafeAreaInsetReport(insets = {}, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UILayoutMath.md","moduleTitle":"core/math/UILayoutMath","source":"engine/core/math/UILayoutMath.js","import":"/engine/core/math/UILayoutMath.js","sourceHash":"f1030128260446b3231aec2842263de2f39c4d416662281e2829d00b7cf5a50a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UILayoutMath.js#0006:uiVisualViewportReport","exportIndex":6,"name":"uiVisualViewportReport","kind":"function","signature":"uiVisualViewportReport(observed = {}, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UILayoutMath.md","moduleTitle":"core/math/UILayoutMath","source":"engine/core/math/UILayoutMath.js","import":"/engine/core/math/UILayoutMath.js","sourceHash":"f1030128260446b3231aec2842263de2f39c4d416662281e2829d00b7cf5a50a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UILayoutMath.js#0007:uiLayoutClampReport","exportIndex":7,"name":"uiLayoutClampReport","kind":"function","signature":"uiLayoutClampReport(value, minValue, maxValue, context = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UILayoutMath.md","moduleTitle":"core/math/UILayoutMath","source":"engine/core/math/UILayoutMath.js","import":"/engine/core/math/UILayoutMath.js","sourceHash":"f1030128260446b3231aec2842263de2f39c4d416662281e2829d00b7cf5a50a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UILayoutMath.js#0008:uiBoxConstraintReport","exportIndex":8,"name":"uiBoxConstraintReport","kind":"function","signature":"uiBoxConstraintReport(style = {}, context = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UILayoutMath.md","moduleTitle":"core/math/UILayoutMath","source":"engine/core/math/UILayoutMath.js","import":"/engine/core/math/UILayoutMath.js","sourceHash":"f1030128260446b3231aec2842263de2f39c4d416662281e2829d00b7cf5a50a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UILayoutMath.js#0009:uiFlexBasisReport","exportIndex":9,"name":"uiFlexBasisReport","kind":"function","signature":"uiFlexBasisReport(style = {}, context = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UILayoutMath.md","moduleTitle":"core/math/UILayoutMath","source":"engine/core/math/UILayoutMath.js","import":"/engine/core/math/UILayoutMath.js","sourceHash":"f1030128260446b3231aec2842263de2f39c4d416662281e2829d00b7cf5a50a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UILayoutMath.js#0010:uiFitContentReport","exportIndex":10,"name":"uiFitContentReport","kind":"function","signature":"uiFitContentReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UILayoutMath.md","moduleTitle":"core/math/UILayoutMath","source":"engine/core/math/UILayoutMath.js","import":"/engine/core/math/UILayoutMath.js","sourceHash":"f1030128260446b3231aec2842263de2f39c4d416662281e2829d00b7cf5a50a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UILayoutMath.js#0011:uiIntrinsicSizePolicyReport","exportIndex":11,"name":"uiIntrinsicSizePolicyReport","kind":"function","signature":"uiIntrinsicSizePolicyReport(value = 'auto', options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UILayoutMath.md","moduleTitle":"core/math/UILayoutMath","source":"engine/core/math/UILayoutMath.js","import":"/engine/core/math/UILayoutMath.js","sourceHash":"f1030128260446b3231aec2842263de2f39c4d416662281e2829d00b7cf5a50a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UILayoutMath.js#0012:uiGridTrackSizingReport","exportIndex":12,"name":"uiGridTrackSizingReport","kind":"function","signature":"uiGridTrackSizingReport(trackList = [], options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UILayoutMath.md","moduleTitle":"core/math/UILayoutMath","source":"engine/core/math/UILayoutMath.js","import":"/engine/core/math/UILayoutMath.js","sourceHash":"f1030128260446b3231aec2842263de2f39c4d416662281e2829d00b7cf5a50a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UILayoutMath.js#0013:uiResponsiveStepReport","exportIndex":13,"name":"uiResponsiveStepReport","kind":"function","signature":"uiResponsiveStepReport(value, steps = [], options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnionFind.md","moduleTitle":"core/math/UnionFind","source":"engine/core/math/UnionFind.js","import":"/engine/core/math/UnionFind.js","sourceHash":"1a2b5e244ac84ee18555e6c12be39c8b3c0da70266870e7af3509bde17f96cc5","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/UnionFind.js","title":"core/math/UnionFind","summary":"Union-Find specialized for 3D voxel grids","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnionFind.md","moduleTitle":"core/math/UnionFind","source":"engine/core/math/UnionFind.js","import":"/engine/core/math/UnionFind.js","sourceHash":"1a2b5e244ac84ee18555e6c12be39c8b3c0da70266870e7af3509bde17f96cc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnionFind.js#0000:UnionFind","exportIndex":0,"name":"UnionFind","kind":"class","signature":"class UnionFind","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnionFind.md","moduleTitle":"core/math/UnionFind","source":"engine/core/math/UnionFind.js","import":"/engine/core/math/UnionFind.js","sourceHash":"1a2b5e244ac84ee18555e6c12be39c8b3c0da70266870e7af3509bde17f96cc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnionFind.js#0001:VoxelUnionFind","exportIndex":1,"name":"VoxelUnionFind","kind":"class","signature":"class VoxelUnionFind extends UnionFind","summary":"Union-Find specialized for 3D voxel grids"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnionFind.md","moduleTitle":"core/math/UnionFind","source":"engine/core/math/UnionFind.js","import":"/engine/core/math/UnionFind.js","sourceHash":"1a2b5e244ac84ee18555e6c12be39c8b3c0da70266870e7af3509bde17f96cc5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnionFind.js#0002:HybridConnectivity","exportIndex":2,"name":"HybridConnectivity","kind":"class","signature":"class HybridConnectivity","summary":"Combines GPU flood-fill for initial/full recomputes with CPU Union-Find for incremental updates"}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/UnitMath.js","title":"core/math/UnitMath","summary":"UnitMath.js - deterministic scalar unit conversion helpers.","exportCount":79}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0000:angleToRadians","exportIndex":0,"name":"angleToRadians","kind":"function","signature":"angleToRadians(value, unit = 'rad')","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0001:radiansToAngle","exportIndex":1,"name":"radiansToAngle","kind":"function","signature":"radiansToAngle(radians, unit = 'rad')","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0002:secondsToFrames","exportIndex":2,"name":"secondsToFrames","kind":"function","signature":"secondsToFrames(seconds, frameRate = DEFAULT_FRAME_RATE)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0003:framesToSeconds","exportIndex":3,"name":"framesToSeconds","kind":"function","signature":"framesToSeconds(frames, frameRate = DEFAULT_FRAME_RATE)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0004:millisecondsToFrames","exportIndex":4,"name":"millisecondsToFrames","kind":"function","signature":"millisecondsToFrames(milliseconds, frameRate = DEFAULT_FRAME_RATE)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0005:framesToMilliseconds","exportIndex":5,"name":"framesToMilliseconds","kind":"function","signature":"framesToMilliseconds(frames, frameRate = DEFAULT_FRAME_RATE)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0006:secondsToSamples","exportIndex":6,"name":"secondsToSamples","kind":"function","signature":"secondsToSamples(seconds, sampleRate = DEFAULT_SAMPLE_RATE)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0007:samplesToSeconds","exportIndex":7,"name":"samplesToSeconds","kind":"function","signature":"samplesToSeconds(samples, sampleRate = DEFAULT_SAMPLE_RATE)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0008:sampleIndexAtTime","exportIndex":8,"name":"sampleIndexAtTime","kind":"function","signature":"sampleIndexAtTime(seconds, sampleRate = DEFAULT_SAMPLE_RATE)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0009:samplesToMilliseconds","exportIndex":9,"name":"samplesToMilliseconds","kind":"function","signature":"samplesToMilliseconds(samples, sampleRate = DEFAULT_SAMPLE_RATE)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0010:millisecondsToSamples","exportIndex":10,"name":"millisecondsToSamples","kind":"function","signature":"millisecondsToSamples(milliseconds, sampleRate = DEFAULT_SAMPLE_RATE)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0011:bpmToSecondsPerBeat","exportIndex":11,"name":"bpmToSecondsPerBeat","kind":"function","signature":"bpmToSecondsPerBeat(bpm = DEFAULT_BPM)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0012:secondsPerBeatToBpm","exportIndex":12,"name":"secondsPerBeatToBpm","kind":"function","signature":"secondsPerBeatToBpm(secondsPerBeat)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0013:beatsToSeconds","exportIndex":13,"name":"beatsToSeconds","kind":"function","signature":"beatsToSeconds(beats, bpm = DEFAULT_BPM)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0014:secondsToBeats","exportIndex":14,"name":"secondsToBeats","kind":"function","signature":"secondsToBeats(seconds, bpm = DEFAULT_BPM)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0015:frequencyToPeriodSeconds","exportIndex":15,"name":"frequencyToPeriodSeconds","kind":"function","signature":"frequencyToPeriodSeconds(frequencyHz)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0016:periodSecondsToFrequencyHz","exportIndex":16,"name":"periodSecondsToFrequencyHz","kind":"function","signature":"periodSecondsToFrequencyHz(periodSeconds)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0017:frequencyToWavelengthMeters","exportIndex":17,"name":"frequencyToWavelengthMeters","kind":"function","signature":"frequencyToWavelengthMeters(frequencyHz, waveSpeed = SPEED_OF_LIGHT)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0018:wavelengthMetersToFrequencyHz","exportIndex":18,"name":"wavelengthMetersToFrequencyHz","kind":"function","signature":"wavelengthMetersToFrequencyHz(wavelengthMeters, waveSpeed = SPEED_OF_LIGHT)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0019:gainToDb","exportIndex":19,"name":"gainToDb","kind":"function","signature":"gainToDb(gain, floorDb = -Infinity)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0020:powerRatioToDb","exportIndex":20,"name":"powerRatioToDb","kind":"function","signature":"powerRatioToDb(powerRatio, floorDb = -Infinity)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0021:frequencyRatioToCents","exportIndex":21,"name":"frequencyRatioToCents","kind":"function","signature":"frequencyRatioToCents(ratio, floorCents = -Infinity)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0022:cssPixelsToDevicePixels","exportIndex":22,"name":"cssPixelsToDevicePixels","kind":"function","signature":"cssPixelsToDevicePixels(cssPixels, devicePixelRatio = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0023:devicePixelsToCssPixels","exportIndex":23,"name":"devicePixelsToCssPixels","kind":"function","signature":"devicePixelsToCssPixels(devicePixels, devicePixelRatio = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0024:worldUnitsToGridIndex","exportIndex":24,"name":"worldUnitsToGridIndex","kind":"function","signature":"worldUnitsToGridIndex(worldValue, cellSize = 1, origin = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0025:gridIndexToWorldUnits","exportIndex":25,"name":"gridIndexToWorldUnits","kind":"function","signature":"gridIndexToWorldUnits(gridIndex, cellSize = 1, origin = 0, centered = false)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0026:worldUnitsToChunkIndex","exportIndex":26,"name":"worldUnitsToChunkIndex","kind":"function","signature":"worldUnitsToChunkIndex(worldValue, chunkCells = 16, cellSize = 1, origin = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0027:chunkIndexToWorldUnits","exportIndex":27,"name":"chunkIndexToWorldUnits","kind":"function","signature":"chunkIndexToWorldUnits(chunkIndex, chunkCells = 16, cellSize = 1, origin = 0, centered = false)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0028:worldUnitsToLocalChunkIndex","exportIndex":28,"name":"worldUnitsToLocalChunkIndex","kind":"function","signature":"worldUnitsToLocalChunkIndex(worldValue, chunkCells = 16, cellSize = 1, origin = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0029:degreesToRadians","exportIndex":29,"name":"degreesToRadians","kind":"function","signature":"degreesToRadians(degrees)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0030:radiansToDegrees","exportIndex":30,"name":"radiansToDegrees","kind":"function","signature":"radiansToDegrees(radians)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0031:degreesToTurns","exportIndex":31,"name":"degreesToTurns","kind":"function","signature":"degreesToTurns(degrees)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0032:turnsToDegrees","exportIndex":32,"name":"turnsToDegrees","kind":"function","signature":"turnsToDegrees(turns)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0033:radiansToTurns","exportIndex":33,"name":"radiansToTurns","kind":"function","signature":"radiansToTurns(radians)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0034:turnsToRadians","exportIndex":34,"name":"turnsToRadians","kind":"function","signature":"turnsToRadians(turns)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0035:degreesToGradians","exportIndex":35,"name":"degreesToGradians","kind":"function","signature":"degreesToGradians(degrees)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0036:gradiansToDegrees","exportIndex":36,"name":"gradiansToDegrees","kind":"function","signature":"gradiansToDegrees(gradians)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0037:radiansToGradians","exportIndex":37,"name":"radiansToGradians","kind":"function","signature":"radiansToGradians(radians)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0038:gradiansToRadians","exportIndex":38,"name":"gradiansToRadians","kind":"function","signature":"gradiansToRadians(gradians)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0039:turnsToGradians","exportIndex":39,"name":"turnsToGradians","kind":"function","signature":"turnsToGradians(turns)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0040:gradiansToTurns","exportIndex":40,"name":"gradiansToTurns","kind":"function","signature":"gradiansToTurns(gradians)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0041:secondsToMilliseconds","exportIndex":41,"name":"secondsToMilliseconds","kind":"function","signature":"secondsToMilliseconds(seconds)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0042:millisecondsToSeconds","exportIndex":42,"name":"millisecondsToSeconds","kind":"function","signature":"millisecondsToSeconds(milliseconds)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0043:secondsToMinutes","exportIndex":43,"name":"secondsToMinutes","kind":"function","signature":"secondsToMinutes(seconds)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0044:minutesToSeconds","exportIndex":44,"name":"minutesToSeconds","kind":"function","signature":"minutesToSeconds(minutes)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0045:minutesToHours","exportIndex":45,"name":"minutesToHours","kind":"function","signature":"minutesToHours(minutes)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0046:hoursToMinutes","exportIndex":46,"name":"hoursToMinutes","kind":"function","signature":"hoursToMinutes(hours)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0047:hoursToSeconds","exportIndex":47,"name":"hoursToSeconds","kind":"function","signature":"hoursToSeconds(hours)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0048:secondsToHours","exportIndex":48,"name":"secondsToHours","kind":"function","signature":"secondsToHours(seconds)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0049:daysToSeconds","exportIndex":49,"name":"daysToSeconds","kind":"function","signature":"daysToSeconds(days)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0050:secondsToDays","exportIndex":50,"name":"secondsToDays","kind":"function","signature":"secondsToDays(seconds)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0051:bpmToHz","exportIndex":51,"name":"bpmToHz","kind":"function","signature":"bpmToHz(bpm = DEFAULT_BPM)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0052:hzToBpm","exportIndex":52,"name":"hzToBpm","kind":"function","signature":"hzToBpm(frequencyHz)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0053:hzToKhz","exportIndex":53,"name":"hzToKhz","kind":"function","signature":"hzToKhz(frequencyHz)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0054:khzToHz","exportIndex":54,"name":"khzToHz","kind":"function","signature":"khzToHz(frequencyKHz)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0055:dbToGain","exportIndex":55,"name":"dbToGain","kind":"function","signature":"dbToGain(db)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0056:dbToPowerRatio","exportIndex":56,"name":"dbToPowerRatio","kind":"function","signature":"dbToPowerRatio(db)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0057:centsToFrequencyRatio","exportIndex":57,"name":"centsToFrequencyRatio","kind":"function","signature":"centsToFrequencyRatio(cents)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0058:bitsToBytes","exportIndex":58,"name":"bitsToBytes","kind":"function","signature":"bitsToBytes(bits)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0059:bytesToBits","exportIndex":59,"name":"bytesToBits","kind":"function","signature":"bytesToBits(bytes)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0060:bytesToKiB","exportIndex":60,"name":"bytesToKiB","kind":"function","signature":"bytesToKiB(bytes)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0061:kiBToBytes","exportIndex":61,"name":"kiBToBytes","kind":"function","signature":"kiBToBytes(kibibytes)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0062:bytesToMiB","exportIndex":62,"name":"bytesToMiB","kind":"function","signature":"bytesToMiB(bytes)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0063:miBToBytes","exportIndex":63,"name":"miBToBytes","kind":"function","signature":"miBToBytes(mebibytes)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0064:bytesToGiB","exportIndex":64,"name":"bytesToGiB","kind":"function","signature":"bytesToGiB(bytes)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0065:giBToBytes","exportIndex":65,"name":"giBToBytes","kind":"function","signature":"giBToBytes(gibibytes)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0066:MILLISECONDS_PER_SECOND","exportIndex":66,"name":"MILLISECONDS_PER_SECOND","kind":"constant","signature":"MILLISECONDS_PER_SECOND","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0067:SECONDS_PER_MINUTE","exportIndex":67,"name":"SECONDS_PER_MINUTE","kind":"constant","signature":"SECONDS_PER_MINUTE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0068:MINUTES_PER_HOUR","exportIndex":68,"name":"MINUTES_PER_HOUR","kind":"constant","signature":"MINUTES_PER_HOUR","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0069:HOURS_PER_DAY","exportIndex":69,"name":"HOURS_PER_DAY","kind":"constant","signature":"HOURS_PER_DAY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0070:DEFAULT_FRAME_RATE","exportIndex":70,"name":"DEFAULT_FRAME_RATE","kind":"constant","signature":"DEFAULT_FRAME_RATE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0071:DEFAULT_SAMPLE_RATE","exportIndex":71,"name":"DEFAULT_SAMPLE_RATE","kind":"constant","signature":"DEFAULT_SAMPLE_RATE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0072:DEFAULT_BPM","exportIndex":72,"name":"DEFAULT_BPM","kind":"constant","signature":"DEFAULT_BPM","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0073:BITS_PER_BYTE","exportIndex":73,"name":"BITS_PER_BYTE","kind":"constant","signature":"BITS_PER_BYTE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0074:BYTES_PER_KIB","exportIndex":74,"name":"BYTES_PER_KIB","kind":"constant","signature":"BYTES_PER_KIB","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0075:BYTES_PER_MIB","exportIndex":75,"name":"BYTES_PER_MIB","kind":"constant","signature":"BYTES_PER_MIB","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0076:BYTES_PER_GIB","exportIndex":76,"name":"BYTES_PER_GIB","kind":"constant","signature":"BYTES_PER_GIB","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0077:frequencyToWavelength","exportIndex":77,"name":"frequencyToWavelength","kind":"constant","signature":"frequencyToWavelength","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/UnitMath.md","moduleTitle":"core/math/UnitMath","source":"engine/core/math/UnitMath.js","import":"/engine/core/math/UnitMath.js","sourceHash":"62ed3ffe556dd5b732b8118a48f0395f9d4c9c3cacb449b67eea0e22019f0043","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/UnitMath.js#0078:wavelengthToFrequency","exportIndex":78,"name":"wavelengthToFrequency","kind":"constant","signature":"wavelengthToFrequency","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/VideoMath.md","moduleTitle":"core/math/VideoMath","source":"engine/core/math/VideoMath.js","import":"/engine/core/math/VideoMath.js","sourceHash":"30af104cbba41128a50e3e186eddd9897df736a7bcae55eaf28974d2f3527259","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/VideoMath.js","title":"core/math/VideoMath","summary":"VideoMath.js - pure sequence-level video/frame math over ImageData-like frames.","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/VideoMath.md","moduleTitle":"core/math/VideoMath","source":"engine/core/math/VideoMath.js","import":"/engine/core/math/VideoMath.js","sourceHash":"30af104cbba41128a50e3e186eddd9897df736a7bcae55eaf28974d2f3527259","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/VideoMath.js#0000:videoSequenceReport","exportIndex":0,"name":"videoSequenceReport","kind":"function","signature":"videoSequenceReport(frames, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/VideoMath.md","moduleTitle":"core/math/VideoMath","source":"engine/core/math/VideoMath.js","import":"/engine/core/math/VideoMath.js","sourceHash":"30af104cbba41128a50e3e186eddd9897df736a7bcae55eaf28974d2f3527259","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/VideoMath.js#0001:videoTemporalBlendFrame","exportIndex":1,"name":"videoTemporalBlendFrame","kind":"function","signature":"videoTemporalBlendFrame(referenceFrame, candidateFrame, amount = 0.5, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/VideoMath.md","moduleTitle":"core/math/VideoMath","source":"engine/core/math/VideoMath.js","import":"/engine/core/math/VideoMath.js","sourceHash":"30af104cbba41128a50e3e186eddd9897df736a7bcae55eaf28974d2f3527259","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/VideoMath.js#0002:videoSceneListReport","exportIndex":2,"name":"videoSceneListReport","kind":"function","signature":"videoSceneListReport(frames, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/VideoMath.md","moduleTitle":"core/math/VideoMath","source":"engine/core/math/VideoMath.js","import":"/engine/core/math/VideoMath.js","sourceHash":"30af104cbba41128a50e3e186eddd9897df736a7bcae55eaf28974d2f3527259","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/VideoMath.js#0003:videoKeyframePlanReport","exportIndex":3,"name":"videoKeyframePlanReport","kind":"function","signature":"videoKeyframePlanReport(frames, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/VideoMath.md","moduleTitle":"core/math/VideoMath","source":"engine/core/math/VideoMath.js","import":"/engine/core/math/VideoMath.js","sourceHash":"30af104cbba41128a50e3e186eddd9897df736a7bcae55eaf28974d2f3527259","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/VideoMath.js#0004:videoMotionEntropyReport","exportIndex":4,"name":"videoMotionEntropyReport","kind":"function","signature":"videoMotionEntropyReport(frames, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/VideoMath.md","moduleTitle":"core/math/VideoMath","source":"engine/core/math/VideoMath.js","import":"/engine/core/math/VideoMath.js","sourceHash":"30af104cbba41128a50e3e186eddd9897df736a7bcae55eaf28974d2f3527259","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/VideoMath.js#0005:videoTemporalEntropyReport","exportIndex":5,"name":"videoTemporalEntropyReport","kind":"function","signature":"videoTemporalEntropyReport(frames, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/VideoMath.md","moduleTitle":"core/math/VideoMath","source":"engine/core/math/VideoMath.js","import":"/engine/core/math/VideoMath.js","sourceHash":"30af104cbba41128a50e3e186eddd9897df736a7bcae55eaf28974d2f3527259","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/VideoMath.js#0006:videoThumbnailCandidateReport","exportIndex":6,"name":"videoThumbnailCandidateReport","kind":"function","signature":"videoThumbnailCandidateReport(frames, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/WGSLRegistry.md","moduleTitle":"core/math/WGSLRegistry","source":"engine/core/math/WGSLRegistry.js","import":"/engine/core/math/WGSLRegistry.js","sourceHash":"ec5a408dcdd7fdcc778398f1c338b8ffef5174b0bc7f79cf5a2250d1d7237037","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/WGSLRegistry.js","title":"core/math/WGSLRegistry","summary":"WGSLRegistry.js - metadata for reusable WGSL chunks and CPU/WGSL mirror links.","exportCount":10}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/WGSLRegistry.md","moduleTitle":"core/math/WGSLRegistry","source":"engine/core/math/WGSLRegistry.js","import":"/engine/core/math/WGSLRegistry.js","sourceHash":"ec5a408dcdd7fdcc778398f1c338b8ffef5174b0bc7f79cf5a2250d1d7237037","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/WGSLRegistry.js#0000:wgslRegistryEntries","exportIndex":0,"name":"wgslRegistryEntries","kind":"function","signature":"wgslRegistryEntries(filters = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/WGSLRegistry.md","moduleTitle":"core/math/WGSLRegistry","source":"engine/core/math/WGSLRegistry.js","import":"/engine/core/math/WGSLRegistry.js","sourceHash":"ec5a408dcdd7fdcc778398f1c338b8ffef5174b0bc7f79cf5a2250d1d7237037","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/WGSLRegistry.js#0001:wgslRegistryById","exportIndex":1,"name":"wgslRegistryById","kind":"function","signature":"wgslRegistryById(id, registry = WGSL_REGISTRY)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/WGSLRegistry.md","moduleTitle":"core/math/WGSLRegistry","source":"engine/core/math/WGSLRegistry.js","import":"/engine/core/math/WGSLRegistry.js","sourceHash":"ec5a408dcdd7fdcc778398f1c338b8ffef5174b0bc7f79cf5a2250d1d7237037","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/WGSLRegistry.js#0002:wgslMirrorsForChunk","exportIndex":2,"name":"wgslMirrorsForChunk","kind":"function","signature":"wgslMirrorsForChunk(chunkId, mirrors = WGSL_MIRROR_REGISTRY)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/WGSLRegistry.md","moduleTitle":"core/math/WGSLRegistry","source":"engine/core/math/WGSLRegistry.js","import":"/engine/core/math/WGSLRegistry.js","sourceHash":"ec5a408dcdd7fdcc778398f1c338b8ffef5174b0bc7f79cf5a2250d1d7237037","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/WGSLRegistry.js#0003:wgslRegistryReport","exportIndex":3,"name":"wgslRegistryReport","kind":"function","signature":"wgslRegistryReport(chunks = WGSL_CHUNK_REGISTRY, mirrors = WGSL_MIRROR_REGISTRY, moduleExports = WGSL_MODULE_EXPORTS, moduleExportClassifications = WGSL_MODULE_EXPORT_CLASSIFICATIONS)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/WGSLRegistry.md","moduleTitle":"core/math/WGSLRegistry","source":"engine/core/math/WGSLRegistry.js","import":"/engine/core/math/WGSLRegistry.js","sourceHash":"ec5a408dcdd7fdcc778398f1c338b8ffef5174b0bc7f79cf5a2250d1d7237037","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/WGSLRegistry.js#0004:mathRegistryWGSLMirrorReport","exportIndex":4,"name":"mathRegistryWGSLMirrorReport","kind":"function","signature":"mathRegistryWGSLMirrorReport(mathFunctions = MATH_FUNCTION_REGISTRY, wgslMirrors = WGSL_MIRROR_REGISTRY)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/WGSLRegistry.md","moduleTitle":"core/math/WGSLRegistry","source":"engine/core/math/WGSLRegistry.js","import":"/engine/core/math/WGSLRegistry.js","sourceHash":"ec5a408dcdd7fdcc778398f1c338b8ffef5174b0bc7f79cf5a2250d1d7237037","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/WGSLRegistry.js#0005:wgslRegistryManifest","exportIndex":5,"name":"wgslRegistryManifest","kind":"function","signature":"wgslRegistryManifest(chunks = WGSL_CHUNK_REGISTRY, mirrors = WGSL_MIRROR_REGISTRY)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/WGSLRegistry.md","moduleTitle":"core/math/WGSLRegistry","source":"engine/core/math/WGSLRegistry.js","import":"/engine/core/math/WGSLRegistry.js","sourceHash":"ec5a408dcdd7fdcc778398f1c338b8ffef5174b0bc7f79cf5a2250d1d7237037","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/WGSLRegistry.js#0006:WGSL_REGISTRY_VERSION","exportIndex":6,"name":"WGSL_REGISTRY_VERSION","kind":"constant","signature":"WGSL_REGISTRY_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/WGSLRegistry.md","moduleTitle":"core/math/WGSLRegistry","source":"engine/core/math/WGSLRegistry.js","import":"/engine/core/math/WGSLRegistry.js","sourceHash":"ec5a408dcdd7fdcc778398f1c338b8ffef5174b0bc7f79cf5a2250d1d7237037","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/WGSLRegistry.js#0007:WGSL_CHUNK_REGISTRY","exportIndex":7,"name":"WGSL_CHUNK_REGISTRY","kind":"constant","signature":"WGSL_CHUNK_REGISTRY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/WGSLRegistry.md","moduleTitle":"core/math/WGSLRegistry","source":"engine/core/math/WGSLRegistry.js","import":"/engine/core/math/WGSLRegistry.js","sourceHash":"ec5a408dcdd7fdcc778398f1c338b8ffef5174b0bc7f79cf5a2250d1d7237037","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/WGSLRegistry.js#0008:WGSL_MIRROR_REGISTRY","exportIndex":8,"name":"WGSL_MIRROR_REGISTRY","kind":"constant","signature":"WGSL_MIRROR_REGISTRY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/WGSLRegistry.md","moduleTitle":"core/math/WGSLRegistry","source":"engine/core/math/WGSLRegistry.js","import":"/engine/core/math/WGSLRegistry.js","sourceHash":"ec5a408dcdd7fdcc778398f1c338b8ffef5174b0bc7f79cf5a2250d1d7237037","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/WGSLRegistry.js#0009:WGSL_REGISTRY","exportIndex":9,"name":"WGSL_REGISTRY","kind":"constant","signature":"WGSL_REGISTRY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/XRMath.md","moduleTitle":"core/math/XRMath","source":"engine/core/math/XRMath.js","import":"/engine/core/math/XRMath.js","sourceHash":"11d240db66b96cf05848644b68e38b1a17cc792bcd16827d38be47aa36879794","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/XRMath.js","title":"core/math/XRMath","summary":"XRMath.js - pure WebXR-shaped pose, view, projection, and depth reports.","exportCount":10}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/XRMath.md","moduleTitle":"core/math/XRMath","source":"engine/core/math/XRMath.js","import":"/engine/core/math/XRMath.js","sourceHash":"11d240db66b96cf05848644b68e38b1a17cc792bcd16827d38be47aa36879794","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/XRMath.js#0000:xrRigidTransformReport","exportIndex":0,"name":"xrRigidTransformReport","kind":"function","signature":"xrRigidTransformReport(transform = {}, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/XRMath.md","moduleTitle":"core/math/XRMath","source":"engine/core/math/XRMath.js","import":"/engine/core/math/XRMath.js","sourceHash":"11d240db66b96cf05848644b68e38b1a17cc792bcd16827d38be47aa36879794","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/XRMath.js#0001:xrPoseViewMatrix","exportIndex":1,"name":"xrPoseViewMatrix","kind":"function","signature":"xrPoseViewMatrix(transform = {}, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/XRMath.md","moduleTitle":"core/math/XRMath","source":"engine/core/math/XRMath.js","import":"/engine/core/math/XRMath.js","sourceHash":"11d240db66b96cf05848644b68e38b1a17cc792bcd16827d38be47aa36879794","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/XRMath.js#0002:xrViewProjectionReport","exportIndex":2,"name":"xrViewProjectionReport","kind":"function","signature":"xrViewProjectionReport(view = {}, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/XRMath.md","moduleTitle":"core/math/XRMath","source":"engine/core/math/XRMath.js","import":"/engine/core/math/XRMath.js","sourceHash":"11d240db66b96cf05848644b68e38b1a17cc792bcd16827d38be47aa36879794","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/XRMath.js#0003:xrViewerPoseReport","exportIndex":3,"name":"xrViewerPoseReport","kind":"function","signature":"xrViewerPoseReport(views = [], options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/XRMath.md","moduleTitle":"core/math/XRMath","source":"engine/core/math/XRMath.js","import":"/engine/core/math/XRMath.js","sourceHash":"11d240db66b96cf05848644b68e38b1a17cc792bcd16827d38be47aa36879794","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/XRMath.js#0004:xrReferenceSpaceOffsetReport","exportIndex":4,"name":"xrReferenceSpaceOffsetReport","kind":"function","signature":"xrReferenceSpaceOffsetReport(baseTransform = {}, offsetTransform = {}, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/XRMath.md","moduleTitle":"core/math/XRMath","source":"engine/core/math/XRMath.js","import":"/engine/core/math/XRMath.js","sourceHash":"11d240db66b96cf05848644b68e38b1a17cc792bcd16827d38be47aa36879794","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/XRMath.js#0005:xrProjectionDepthRangeReport","exportIndex":5,"name":"xrProjectionDepthRangeReport","kind":"function","signature":"xrProjectionDepthRangeReport(depthNear, depthFar)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/XRMath.md","moduleTitle":"core/math/XRMath","source":"engine/core/math/XRMath.js","import":"/engine/core/math/XRMath.js","sourceHash":"11d240db66b96cf05848644b68e38b1a17cc792bcd16827d38be47aa36879794","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/XRMath.js#0006:xrDepthRawToMeters","exportIndex":6,"name":"xrDepthRawToMeters","kind":"function","signature":"xrDepthRawToMeters(rawDepth, rawValueToMeters = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/XRMath.md","moduleTitle":"core/math/XRMath","source":"engine/core/math/XRMath.js","import":"/engine/core/math/XRMath.js","sourceHash":"11d240db66b96cf05848644b68e38b1a17cc792bcd16827d38be47aa36879794","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/XRMath.js#0007:xrDepthUvTransformPoint","exportIndex":7,"name":"xrDepthUvTransformPoint","kind":"function","signature":"xrDepthUvTransformPoint(point = {}, matrix = identity4()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/XRMath.md","moduleTitle":"core/math/XRMath","source":"engine/core/math/XRMath.js","import":"/engine/core/math/XRMath.js","sourceHash":"11d240db66b96cf05848644b68e38b1a17cc792bcd16827d38be47aa36879794","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/XRMath.js#0008:xrDepthSampleIndex","exportIndex":8,"name":"xrDepthSampleIndex","kind":"function","signature":"xrDepthSampleIndex(width, height, u, v, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/XRMath.md","moduleTitle":"core/math/XRMath","source":"engine/core/math/XRMath.js","import":"/engine/core/math/XRMath.js","sourceHash":"11d240db66b96cf05848644b68e38b1a17cc792bcd16827d38be47aa36879794","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/XRMath.js#0009:xrDepthSampleMeters","exportIndex":9,"name":"xrDepthSampleMeters","kind":"function","signature":"xrDepthSampleMeters(depthData, width, height, u, v, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-module","id":"module:engine/core/math/index.js","title":"core/math/index","summary":"engine/core/math/index.js - Math Utilities Barrel Export","exportCount":48}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/index.js#0000:BVHBuilder","exportIndex":0,"name":"BVHBuilder","kind":"re-export","signature":"BVHBuilder","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/index.js#0001:BVHNode","exportIndex":1,"name":"BVHNode","kind":"re-export","signature":"BVHNode","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/index.js#0002:BVH_TRAVERSAL_WGSL","exportIndex":2,"name":"BVH_TRAVERSAL_WGSL","kind":"re-export","signature":"BVH_TRAVERSAL_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/index.js#0003:BezierDistanceCompute","exportIndex":3,"name":"BezierDistanceCompute","kind":"re-export","signature":"BezierDistanceCompute","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/index.js#0004:DEFAULT_BLEND_RADIUS","exportIndex":4,"name":"DEFAULT_BLEND_RADIUS","kind":"re-export","signature":"DEFAULT_BLEND_RADIUS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/index.js#0005:DEFAULT_RESOLUTION","exportIndex":5,"name":"DEFAULT_RESOLUTION","kind":"re-export","signature":"DEFAULT_RESOLUTION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/index.js#0006:GPULineVoxelizer","exportIndex":6,"name":"GPULineVoxelizer","kind":"re-export","signature":"GPULineVoxelizer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/index.js#0007:HybridConnectivity","exportIndex":7,"name":"HybridConnectivity","kind":"re-export","signature":"HybridConnectivity","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/index.js#0008:INF_T","exportIndex":8,"name":"INF_T","kind":"re-export","signature":"INF_T","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/index.js#0009:LineMaterials","exportIndex":9,"name":"LineMaterials","kind":"re-export","signature":"LineMaterials","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/index.js#0010:LineNetwork","exportIndex":10,"name":"LineNetwork","kind":"re-export","signature":"LineNetwork","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/index.js#0011:LineToVoxelizer","exportIndex":11,"name":"LineToVoxelizer","kind":"re-export","signature":"LineToVoxelizer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/index.js#0012:NetworkEdge","exportIndex":12,"name":"NetworkEdge","kind":"re-export","signature":"NetworkEdge","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/index.js#0013:NetworkNode","exportIndex":13,"name":"NetworkNode","kind":"re-export","signature":"NetworkNode","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/index.js#0014:SpatialHash","exportIndex":14,"name":"SpatialHash","kind":"re-export","signature":"SpatialHash","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/index.js#0015:SpatialHashCompute","exportIndex":15,"name":"SpatialHashCompute","kind":"re-export","signature":"SpatialHashCompute","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/index.js#0016:UnionFind","exportIndex":16,"name":"UnionFind","kind":"re-export","signature":"UnionFind","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/index.js#0017:VoxelUnionFind","exportIndex":17,"name":"VoxelUnionFind","kind":"re-export","signature":"VoxelUnionFind","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/index.js#0018:bezierClosestNewton","exportIndex":18,"name":"bezierClosestNewton","kind":"re-export","signature":"bezierClosestNewton","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/index.js#0019:bezierDistanceBatch","exportIndex":19,"name":"bezierDistanceBatch","kind":"re-export","signature":"bezierDistanceBatch","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/index.js#0020:bezierDistanceCapsule","exportIndex":20,"name":"bezierDistanceCapsule","kind":"re-export","signature":"bezierDistanceCapsule","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/index.js#0021:bezierDistanceHybrid","exportIndex":21,"name":"bezierDistanceHybrid","kind":"re-export","signature":"bezierDistanceHybrid","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/index.js#0022:capsuleClosestT","exportIndex":22,"name":"capsuleClosestT","kind":"re-export","signature":"capsuleClosestT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/index.js#0023:createRaycastMesh","exportIndex":23,"name":"createRaycastMesh","kind":"re-export","signature":"createRaycastMesh","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/index.js#0024:curvesToGPUBuffer","exportIndex":24,"name":"curvesToGPUBuffer","kind":"re-export","signature":"curvesToGPUBuffer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/index.js#0025:curvesToSegments","exportIndex":25,"name":"curvesToSegments","kind":"re-export","signature":"curvesToSegments","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/index.js#0026:generateRoots","exportIndex":26,"name":"generateRoots","kind":"re-export","signature":"generateRoots","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/index.js#0027:generateTree","exportIndex":27,"name":"generateTree","kind":"re-export","signature":"generateTree","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/index.js#0028:generateTunnel","exportIndex":28,"name":"generateTunnel","kind":"re-export","signature":"generateTunnel","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/index.js#0029:mat4FromRotationTranslation","exportIndex":29,"name":"mat4FromRotationTranslation","kind":"re-export","signature":"mat4FromRotationTranslation","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/index.js#0030:mat4Identity","exportIndex":30,"name":"mat4Identity","kind":"re-export","signature":"mat4Identity","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/index.js#0031:mat4Inverse","exportIndex":31,"name":"mat4Inverse","kind":"re-export","signature":"mat4Inverse","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/index.js#0032:mat4LookAt","exportIndex":32,"name":"mat4LookAt","kind":"re-export","signature":"mat4LookAt","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/index.js#0033:mat4Multiply","exportIndex":33,"name":"mat4Multiply","kind":"re-export","signature":"mat4Multiply","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/index.js#0034:mat4Orthographic","exportIndex":34,"name":"mat4Orthographic","kind":"re-export","signature":"mat4Orthographic","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/index.js#0035:mat4OrthographicWebGPU","exportIndex":35,"name":"mat4OrthographicWebGPU","kind":"re-export","signature":"mat4OrthographicWebGPU","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/index.js#0036:mat4PerspectiveDeg","exportIndex":36,"name":"mat4PerspectiveDeg","kind":"re-export","signature":"mat4PerspectiveDeg","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/index.js#0037:mat4PerspectiveDegWebGPU","exportIndex":37,"name":"mat4PerspectiveDegWebGPU","kind":"re-export","signature":"mat4PerspectiveDegWebGPU","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/index.js#0038:mat4PerspectiveRad","exportIndex":38,"name":"mat4PerspectiveRad","kind":"re-export","signature":"mat4PerspectiveRad","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/index.js#0039:mat4PerspectiveRadWebGPU","exportIndex":39,"name":"mat4PerspectiveRadWebGPU","kind":"re-export","signature":"mat4PerspectiveRadWebGPU","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/index.js#0040:mat4Scale","exportIndex":40,"name":"mat4Scale","kind":"re-export","signature":"mat4Scale","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/index.js#0041:mat4Translate","exportIndex":41,"name":"mat4Translate","kind":"re-export","signature":"mat4Translate","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/index.js#0042:multiCurveDistance","exportIndex":42,"name":"multiCurveDistance","kind":"re-export","signature":"multiCurveDistance","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/index.js#0043:multiCurveDistanceSmooth","exportIndex":43,"name":"multiCurveDistanceSmooth","kind":"re-export","signature":"multiCurveDistanceSmooth","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/index.js#0044:rayTriangleIntersect","exportIndex":44,"name":"rayTriangleIntersect","kind":"re-export","signature":"rayTriangleIntersect","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/index.js#0045:sdCapsule","exportIndex":45,"name":"sdCapsule","kind":"re-export","signature":"sdCapsule","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/index.js#0046:serializeBVHForGPU","exportIndex":46,"name":"serializeBVHForGPU","kind":"re-export","signature":"serializeBVHForGPU","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/math/index.md","moduleTitle":"core/math/index","source":"engine/core/math/index.js","import":"/engine/core/math/index.js","sourceHash":"db7ba3d52b24f7b206831140600e43958c66b68bb19b0e7284b713682d58ce81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/math/index.js#0047:traverseBVH","exportIndex":47,"name":"traverseBVH","kind":"re-export","signature":"traverseBVH","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/ChunkBufferPool.md","moduleTitle":"core/memory/ChunkBufferPool","source":"engine/core/memory/ChunkBufferPool.js","import":"/engine/core/memory/ChunkBufferPool.js","sourceHash":"c317a2220e2616004e1e182406df3d4092f80cec6932c12206783096b699fd72","subsystem":"engine","recordType":"api-module","id":"module:engine/core/memory/ChunkBufferPool.js","title":"core/memory/ChunkBufferPool","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/ChunkBufferPool.md","moduleTitle":"core/memory/ChunkBufferPool","source":"engine/core/memory/ChunkBufferPool.js","import":"/engine/core/memory/ChunkBufferPool.js","sourceHash":"c317a2220e2616004e1e182406df3d4092f80cec6932c12206783096b699fd72","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/ChunkBufferPool.js#0000:ChunkBufferPool","exportIndex":0,"name":"ChunkBufferPool","kind":"class","signature":"class ChunkBufferPool","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/ChunkBufferPool.md","moduleTitle":"core/memory/ChunkBufferPool","source":"engine/core/memory/ChunkBufferPool.js","import":"/engine/core/memory/ChunkBufferPool.js","sourceHash":"c317a2220e2616004e1e182406df3d4092f80cec6932c12206783096b699fd72","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/ChunkBufferPool.js#0001:getChunkBufferPool","exportIndex":1,"name":"getChunkBufferPool","kind":"function","signature":"getChunkBufferPool()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/GPUMemoryManager.md","moduleTitle":"core/memory/GPUMemoryManager","source":"engine/core/memory/GPUMemoryManager.js","import":"/engine/core/memory/GPUMemoryManager.js","sourceHash":"504d5df1092817cc3803cfa9fb55ef3d9d9a3b038c6ae946abaf9acd89de324b","subsystem":"engine","recordType":"api-module","id":"module:engine/core/memory/GPUMemoryManager.js","title":"core/memory/GPUMemoryManager","summary":"GPUMemoryManager.js - WebGPU Device Memory Management Implements: - Ring Buffer for dynamic uniform data (per-frame) - Buddy Allocator for static geometry (persistent) - Texture Atlas management with LRU eviction - BindGroup caching and deduplication Goal: Minimize GPU API calls and prevent VRAM fragmentation","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/GPUMemoryManager.md","moduleTitle":"core/memory/GPUMemoryManager","source":"engine/core/memory/GPUMemoryManager.js","import":"/engine/core/memory/GPUMemoryManager.js","sourceHash":"504d5df1092817cc3803cfa9fb55ef3d9d9a3b038c6ae946abaf9acd89de324b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/GPUMemoryManager.js#0000:RingBuffer","exportIndex":0,"name":"RingBuffer","kind":"class","signature":"class RingBuffer","summary":"Circular buffer for per-frame dynamic data (uniforms, instance data). Wraps around each frame, avoiding buffer creation overhead."}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/GPUMemoryManager.md","moduleTitle":"core/memory/GPUMemoryManager","source":"engine/core/memory/GPUMemoryManager.js","import":"/engine/core/memory/GPUMemoryManager.js","sourceHash":"504d5df1092817cc3803cfa9fb55ef3d9d9a3b038c6ae946abaf9acd89de324b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/GPUMemoryManager.js#0001:BuddyAllocator","exportIndex":1,"name":"BuddyAllocator","kind":"class","signature":"class BuddyAllocator","summary":"Buddy allocator for persistent GPU memory (geometry, textures). Handles allocation/deallocation without fragmentation."}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/GPUMemoryManager.md","moduleTitle":"core/memory/GPUMemoryManager","source":"engine/core/memory/GPUMemoryManager.js","import":"/engine/core/memory/GPUMemoryManager.js","sourceHash":"504d5df1092817cc3803cfa9fb55ef3d9d9a3b038c6ae946abaf9acd89de324b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/GPUMemoryManager.js#0002:StagingBufferPool","exportIndex":2,"name":"StagingBufferPool","kind":"class","signature":"class StagingBufferPool","summary":"Pool of mappable staging buffers for CPU->GPU transfers. Avoids creating new buffers for every upload."}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/GPUMemoryManager.md","moduleTitle":"core/memory/GPUMemoryManager","source":"engine/core/memory/GPUMemoryManager.js","import":"/engine/core/memory/GPUMemoryManager.js","sourceHash":"504d5df1092817cc3803cfa9fb55ef3d9d9a3b038c6ae946abaf9acd89de324b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/GPUMemoryManager.js#0003:BindGroupCache","exportIndex":3,"name":"BindGroupCache","kind":"class","signature":"class BindGroupCache","summary":"Cache for GPUBindGroup objects to avoid redundant creation. Uses content-based hashing for deduplication."}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/GPUMemoryManager.md","moduleTitle":"core/memory/GPUMemoryManager","source":"engine/core/memory/GPUMemoryManager.js","import":"/engine/core/memory/GPUMemoryManager.js","sourceHash":"504d5df1092817cc3803cfa9fb55ef3d9d9a3b038c6ae946abaf9acd89de324b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/GPUMemoryManager.js#0004:TextureManager","exportIndex":4,"name":"TextureManager","kind":"class","signature":"class TextureManager","summary":"Manages GPU textures with LRU eviction policy."}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/GPUMemoryManager.md","moduleTitle":"core/memory/GPUMemoryManager","source":"engine/core/memory/GPUMemoryManager.js","import":"/engine/core/memory/GPUMemoryManager.js","sourceHash":"504d5df1092817cc3803cfa9fb55ef3d9d9a3b038c6ae946abaf9acd89de324b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/GPUMemoryManager.js#0005:GPUMemoryManager","exportIndex":5,"name":"GPUMemoryManager","kind":"class","signature":"class GPUMemoryManager","summary":"Central GPU memory management facade."}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/GPUMemoryManager.md","moduleTitle":"core/memory/GPUMemoryManager","source":"engine/core/memory/GPUMemoryManager.js","import":"/engine/core/memory/GPUMemoryManager.js","sourceHash":"504d5df1092817cc3803cfa9fb55ef3d9d9a3b038c6ae946abaf9acd89de324b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/GPUMemoryManager.js#0006:getGPUMemoryManager","exportIndex":6,"name":"getGPUMemoryManager","kind":"function","signature":"getGPUMemoryManager(device)","summary":"Get or create GPU memory manager singleton"}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/HostMemoryManager.md","moduleTitle":"core/memory/HostMemoryManager","source":"engine/core/memory/HostMemoryManager.js","import":"/engine/core/memory/HostMemoryManager.js","sourceHash":"81f16b8ccd3ffdcd564162a06a9bf7782e01274ec91f8d8ed4d07db19933695b","subsystem":"engine","recordType":"api-module","id":"module:engine/core/memory/HostMemoryManager.js","title":"core/memory/HostMemoryManager","summary":"Linear allocator that resets every frame. Provides zero-cost TypedArray views into a pre-allocated buffer.","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/HostMemoryManager.md","moduleTitle":"core/memory/HostMemoryManager","source":"engine/core/memory/HostMemoryManager.js","import":"/engine/core/memory/HostMemoryManager.js","sourceHash":"81f16b8ccd3ffdcd564162a06a9bf7782e01274ec91f8d8ed4d07db19933695b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/HostMemoryManager.js#0000:SlabAllocator","exportIndex":0,"name":"SlabAllocator","kind":"class","signature":"class SlabAllocator","summary":"Linear allocator that resets every frame. Provides zero-cost TypedArray views into a pre-allocated buffer."}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/HostMemoryManager.md","moduleTitle":"core/memory/HostMemoryManager","source":"engine/core/memory/HostMemoryManager.js","import":"/engine/core/memory/HostMemoryManager.js","sourceHash":"81f16b8ccd3ffdcd564162a06a9bf7782e01274ec91f8d8ed4d07db19933695b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/HostMemoryManager.js#0001:ObjectPool","exportIndex":1,"name":"ObjectPool","kind":"class","signature":"class ObjectPool","summary":"Generic object pool for reusable JavaScript objects. Uses LIFO (stack) for hot cache retrieval."}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/HostMemoryManager.md","moduleTitle":"core/memory/HostMemoryManager","source":"engine/core/memory/HostMemoryManager.js","import":"/engine/core/memory/HostMemoryManager.js","sourceHash":"81f16b8ccd3ffdcd564162a06a9bf7782e01274ec91f8d8ed4d07db19933695b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/HostMemoryManager.js#0002:SoAContainer","exportIndex":2,"name":"SoAContainer","kind":"class","signature":"class SoAContainer","summary":"SoA container for cache-efficient mass entity storage. All properties stored in contiguous TypedArrays."}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/HostMemoryManager.md","moduleTitle":"core/memory/HostMemoryManager","source":"engine/core/memory/HostMemoryManager.js","import":"/engine/core/memory/HostMemoryManager.js","sourceHash":"81f16b8ccd3ffdcd564162a06a9bf7782e01274ec91f8d8ed4d07db19933695b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/HostMemoryManager.js#0003:HostMemoryManager","exportIndex":3,"name":"HostMemoryManager","kind":"class","signature":"class HostMemoryManager","summary":"Central manager for all host memory allocation."}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/HostMemoryManager.md","moduleTitle":"core/memory/HostMemoryManager","source":"engine/core/memory/HostMemoryManager.js","import":"/engine/core/memory/HostMemoryManager.js","sourceHash":"81f16b8ccd3ffdcd564162a06a9bf7782e01274ec91f8d8ed4d07db19933695b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/HostMemoryManager.js#0004:createCommonPools","exportIndex":4,"name":"createCommonPools","kind":"function","signature":"createCommonPools(manager = hostMemory)","summary":"Create common pools for game objects"}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/HostMemoryManager.md","moduleTitle":"core/memory/HostMemoryManager","source":"engine/core/memory/HostMemoryManager.js","import":"/engine/core/memory/HostMemoryManager.js","sourceHash":"81f16b8ccd3ffdcd564162a06a9bf7782e01274ec91f8d8ed4d07db19933695b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/HostMemoryManager.js#0005:hostMemory","exportIndex":5,"name":"hostMemory","kind":"constant","signature":"hostMemory","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/MappedBufferRing.md","moduleTitle":"core/memory/MappedBufferRing","source":"engine/core/memory/MappedBufferRing.js","import":"/engine/core/memory/MappedBufferRing.js","sourceHash":"e108cbec84970f46442ac14d637945f96ce42037aab33803bebeda1b3f48c459","subsystem":"engine","recordType":"api-module","id":"module:engine/core/memory/MappedBufferRing.js","title":"core/memory/MappedBufferRing","summary":"MappedBufferRing - Efficient GPU data upload with pre-mapped buffers","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/MappedBufferRing.md","moduleTitle":"core/memory/MappedBufferRing","source":"engine/core/memory/MappedBufferRing.js","import":"/engine/core/memory/MappedBufferRing.js","sourceHash":"e108cbec84970f46442ac14d637945f96ce42037aab33803bebeda1b3f48c459","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/MappedBufferRing.js#0000:MappedBufferRing","exportIndex":0,"name":"MappedBufferRing","kind":"class","signature":"class MappedBufferRing","summary":"MappedBufferRing - Efficient GPU data upload with pre-mapped buffers"}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/ObjectPool.md","moduleTitle":"core/memory/ObjectPool","source":"engine/core/memory/ObjectPool.js","import":"/engine/core/memory/ObjectPool.js","sourceHash":"2fed7dfde7ec8eba92258d495048e3597858944c34db9d3bdb3a1687e7241145","subsystem":"engine","recordType":"api-module","id":"module:engine/core/memory/ObjectPool.js","title":"core/memory/ObjectPool","summary":"Generic object pool with factory function","exportCount":12}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/ObjectPool.md","moduleTitle":"core/memory/ObjectPool","source":"engine/core/memory/ObjectPool.js","import":"/engine/core/memory/ObjectPool.js","sourceHash":"2fed7dfde7ec8eba92258d495048e3597858944c34db9d3bdb3a1687e7241145","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/ObjectPool.js#0000:ObjectPool","exportIndex":0,"name":"ObjectPool","kind":"class","signature":"class ObjectPool","summary":"Generic object pool with factory function"}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/ObjectPool.md","moduleTitle":"core/memory/ObjectPool","source":"engine/core/memory/ObjectPool.js","import":"/engine/core/memory/ObjectPool.js","sourceHash":"2fed7dfde7ec8eba92258d495048e3597858944c34db9d3bdb3a1687e7241145","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/ObjectPool.js#0001:acquireVec3","exportIndex":1,"name":"acquireVec3","kind":"function","signature":"acquireVec3(x = 0, y = 0, z = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/ObjectPool.md","moduleTitle":"core/memory/ObjectPool","source":"engine/core/memory/ObjectPool.js","import":"/engine/core/memory/ObjectPool.js","sourceHash":"2fed7dfde7ec8eba92258d495048e3597858944c34db9d3bdb3a1687e7241145","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/ObjectPool.js#0002:releaseVec3","exportIndex":2,"name":"releaseVec3","kind":"function","signature":"releaseVec3(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/ObjectPool.md","moduleTitle":"core/memory/ObjectPool","source":"engine/core/memory/ObjectPool.js","import":"/engine/core/memory/ObjectPool.js","sourceHash":"2fed7dfde7ec8eba92258d495048e3597858944c34db9d3bdb3a1687e7241145","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/ObjectPool.js#0003:acquireChunkInfo","exportIndex":3,"name":"acquireChunkInfo","kind":"function","signature":"acquireChunkInfo(cx, cy, cz)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/ObjectPool.md","moduleTitle":"core/memory/ObjectPool","source":"engine/core/memory/ObjectPool.js","import":"/engine/core/memory/ObjectPool.js","sourceHash":"2fed7dfde7ec8eba92258d495048e3597858944c34db9d3bdb3a1687e7241145","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/ObjectPool.js#0004:releaseChunkInfo","exportIndex":4,"name":"releaseChunkInfo","kind":"function","signature":"releaseChunkInfo(info)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/ObjectPool.md","moduleTitle":"core/memory/ObjectPool","source":"engine/core/memory/ObjectPool.js","import":"/engine/core/memory/ObjectPool.js","sourceHash":"2fed7dfde7ec8eba92258d495048e3597858944c34db9d3bdb3a1687e7241145","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/ObjectPool.js#0005:acquireRayResult","exportIndex":5,"name":"acquireRayResult","kind":"function","signature":"acquireRayResult()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/ObjectPool.md","moduleTitle":"core/memory/ObjectPool","source":"engine/core/memory/ObjectPool.js","import":"/engine/core/memory/ObjectPool.js","sourceHash":"2fed7dfde7ec8eba92258d495048e3597858944c34db9d3bdb3a1687e7241145","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/ObjectPool.js#0006:releaseRayResult","exportIndex":6,"name":"releaseRayResult","kind":"function","signature":"releaseRayResult(result)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/ObjectPool.md","moduleTitle":"core/memory/ObjectPool","source":"engine/core/memory/ObjectPool.js","import":"/engine/core/memory/ObjectPool.js","sourceHash":"2fed7dfde7ec8eba92258d495048e3597858944c34db9d3bdb3a1687e7241145","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/ObjectPool.js#0007:getPoolStats","exportIndex":7,"name":"getPoolStats","kind":"function","signature":"getPoolStats()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/ObjectPool.md","moduleTitle":"core/memory/ObjectPool","source":"engine/core/memory/ObjectPool.js","import":"/engine/core/memory/ObjectPool.js","sourceHash":"2fed7dfde7ec8eba92258d495048e3597858944c34db9d3bdb3a1687e7241145","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/ObjectPool.js#0008:vec3Pool","exportIndex":8,"name":"vec3Pool","kind":"constant","signature":"vec3Pool","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/ObjectPool.md","moduleTitle":"core/memory/ObjectPool","source":"engine/core/memory/ObjectPool.js","import":"/engine/core/memory/ObjectPool.js","sourceHash":"2fed7dfde7ec8eba92258d495048e3597858944c34db9d3bdb3a1687e7241145","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/ObjectPool.js#0009:chunkInfoPool","exportIndex":9,"name":"chunkInfoPool","kind":"constant","signature":"chunkInfoPool","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/ObjectPool.md","moduleTitle":"core/memory/ObjectPool","source":"engine/core/memory/ObjectPool.js","import":"/engine/core/memory/ObjectPool.js","sourceHash":"2fed7dfde7ec8eba92258d495048e3597858944c34db9d3bdb3a1687e7241145","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/ObjectPool.js#0010:rayResultPool","exportIndex":10,"name":"rayResultPool","kind":"constant","signature":"rayResultPool","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/ObjectPool.md","moduleTitle":"core/memory/ObjectPool","source":"engine/core/memory/ObjectPool.js","import":"/engine/core/memory/ObjectPool.js","sourceHash":"2fed7dfde7ec8eba92258d495048e3597858944c34db9d3bdb3a1687e7241145","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/ObjectPool.js#0011:typedArrayPool","exportIndex":11,"name":"typedArrayPool","kind":"constant","signature":"typedArrayPool","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/PipelineCache.md","moduleTitle":"core/memory/PipelineCache","source":"engine/core/memory/PipelineCache.js","import":"/engine/core/memory/PipelineCache.js","sourceHash":"bcc4511bb8a5c18ec8c6df9f01df1ca473b12ad09f4ec3eb26ec53b4ac484b97","subsystem":"engine","recordType":"api-module","id":"module:engine/core/memory/PipelineCache.js","title":"core/memory/PipelineCache","summary":"PipelineCache - Async pipeline compilation and caching","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/PipelineCache.md","moduleTitle":"core/memory/PipelineCache","source":"engine/core/memory/PipelineCache.js","import":"/engine/core/memory/PipelineCache.js","sourceHash":"bcc4511bb8a5c18ec8c6df9f01df1ca473b12ad09f4ec3eb26ec53b4ac484b97","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/PipelineCache.js#0000:PipelineCache","exportIndex":0,"name":"PipelineCache","kind":"class","signature":"class PipelineCache","summary":"PipelineCache - Async pipeline compilation and caching"}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/RenderBundleCache.md","moduleTitle":"core/memory/RenderBundleCache","source":"engine/core/memory/RenderBundleCache.js","import":"/engine/core/memory/RenderBundleCache.js","sourceHash":"5472ec8ec88b2bc120326a2324e4987d5e25e3c153ca4da54b7ba5ae21a8062d","subsystem":"engine","recordType":"api-module","id":"module:engine/core/memory/RenderBundleCache.js","title":"core/memory/RenderBundleCache","summary":"RenderBundleCache - Manages render bundles for voxel terrain","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/RenderBundleCache.md","moduleTitle":"core/memory/RenderBundleCache","source":"engine/core/memory/RenderBundleCache.js","import":"/engine/core/memory/RenderBundleCache.js","sourceHash":"5472ec8ec88b2bc120326a2324e4987d5e25e3c153ca4da54b7ba5ae21a8062d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/RenderBundleCache.js#0000:RenderBundleCache","exportIndex":0,"name":"RenderBundleCache","kind":"class","signature":"class RenderBundleCache","summary":"RenderBundleCache - Manages render bundles for voxel terrain"}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/SubChunkBufferPool.md","moduleTitle":"core/memory/SubChunkBufferPool","source":"engine/core/memory/SubChunkBufferPool.js","import":"/engine/core/memory/SubChunkBufferPool.js","sourceHash":"f93b20d166a07ba3244171b5b76a56b9961e6ca880d2837eeb0aa2b37081eca9","subsystem":"engine","recordType":"api-module","id":"module:engine/core/memory/SubChunkBufferPool.js","title":"core/memory/SubChunkBufferPool","summary":"SubChunkBufferPool - Manages GPU buffer reuse for sub-chunk meshes","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/SubChunkBufferPool.md","moduleTitle":"core/memory/SubChunkBufferPool","source":"engine/core/memory/SubChunkBufferPool.js","import":"/engine/core/memory/SubChunkBufferPool.js","sourceHash":"f93b20d166a07ba3244171b5b76a56b9961e6ca880d2837eeb0aa2b37081eca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/SubChunkBufferPool.js#0000:SubChunkBufferPool","exportIndex":0,"name":"SubChunkBufferPool","kind":"class","signature":"class SubChunkBufferPool","summary":"SubChunkBufferPool - Manages GPU buffer reuse for sub-chunk meshes"}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/SubChunkBufferPool.md","moduleTitle":"core/memory/SubChunkBufferPool","source":"engine/core/memory/SubChunkBufferPool.js","import":"/engine/core/memory/SubChunkBufferPool.js","sourceHash":"f93b20d166a07ba3244171b5b76a56b9961e6ca880d2837eeb0aa2b37081eca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/SubChunkBufferPool.js#0001:getBufferPool","exportIndex":1,"name":"getBufferPool","kind":"function","signature":"getBufferPool()","summary":"Get the global buffer pool instance"}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/SubChunkBufferPool.md","moduleTitle":"core/memory/SubChunkBufferPool","source":"engine/core/memory/SubChunkBufferPool.js","import":"/engine/core/memory/SubChunkBufferPool.js","sourceHash":"f93b20d166a07ba3244171b5b76a56b9961e6ca880d2837eeb0aa2b37081eca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/SubChunkBufferPool.js#0002:initBufferPool","exportIndex":2,"name":"initBufferPool","kind":"function","signature":"initBufferPool(device)","summary":"Initialize the global buffer pool"}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/SubChunkBufferPool.md","moduleTitle":"core/memory/SubChunkBufferPool","source":"engine/core/memory/SubChunkBufferPool.js","import":"/engine/core/memory/SubChunkBufferPool.js","sourceHash":"f93b20d166a07ba3244171b5b76a56b9961e6ca880d2837eeb0aa2b37081eca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/SubChunkBufferPool.js#0003:BUCKET_NAMES","exportIndex":3,"name":"BUCKET_NAMES","kind":"re-export","signature":"BUCKET_NAMES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/SubChunkBufferPool.md","moduleTitle":"core/memory/SubChunkBufferPool","source":"engine/core/memory/SubChunkBufferPool.js","import":"/engine/core/memory/SubChunkBufferPool.js","sourceHash":"f93b20d166a07ba3244171b5b76a56b9961e6ca880d2837eeb0aa2b37081eca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/SubChunkBufferPool.js#0004:BUCKET_SIZES","exportIndex":4,"name":"BUCKET_SIZES","kind":"re-export","signature":"BUCKET_SIZES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/UniformBufferRing.md","moduleTitle":"core/memory/UniformBufferRing","source":"engine/core/memory/UniformBufferRing.js","import":"/engine/core/memory/UniformBufferRing.js","sourceHash":"05a093ea841ce819d9e1bb5c758dc4ee1a20d6a68df9a2b8e1fccbbdcb3b5794","subsystem":"engine","recordType":"api-module","id":"module:engine/core/memory/UniformBufferRing.js","title":"core/memory/UniformBufferRing","summary":"UniformBufferRing - Rotating uniform buffers","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/UniformBufferRing.md","moduleTitle":"core/memory/UniformBufferRing","source":"engine/core/memory/UniformBufferRing.js","import":"/engine/core/memory/UniformBufferRing.js","sourceHash":"05a093ea841ce819d9e1bb5c758dc4ee1a20d6a68df9a2b8e1fccbbdcb3b5794","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/UniformBufferRing.js#0000:UniformBufferRing","exportIndex":0,"name":"UniformBufferRing","kind":"class","signature":"class UniformBufferRing","summary":"UniformBufferRing - Rotating uniform buffers"}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/UniformBufferRing.md","moduleTitle":"core/memory/UniformBufferRing","source":"engine/core/memory/UniformBufferRing.js","import":"/engine/core/memory/UniformBufferRing.js","sourceHash":"05a093ea841ce819d9e1bb5c758dc4ee1a20d6a68df9a2b8e1fccbbdcb3b5794","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/UniformBufferRing.js#0001:FrameUniformManager","exportIndex":1,"name":"FrameUniformManager","kind":"class","signature":"class FrameUniformManager","summary":"FrameUniformManager - Manages per-frame uniforms with automatic rotation"}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/VertexPool.md","moduleTitle":"core/memory/VertexPool","source":"engine/core/memory/VertexPool.js","import":"/engine/core/memory/VertexPool.js","sourceHash":"a4b2e9239333c20b720d665d29e5086e405331e698d2ecfbb2dcce2c61db8af8","subsystem":"engine","recordType":"api-module","id":"module:engine/core/memory/VertexPool.js","title":"core/memory/VertexPool","summary":"VertexPool - Manages a large persistent vertex buffer with bucket allocation","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/VertexPool.md","moduleTitle":"core/memory/VertexPool","source":"engine/core/memory/VertexPool.js","import":"/engine/core/memory/VertexPool.js","sourceHash":"a4b2e9239333c20b720d665d29e5086e405331e698d2ecfbb2dcce2c61db8af8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/VertexPool.js#0000:VertexPool","exportIndex":0,"name":"VertexPool","kind":"class","signature":"class VertexPool","summary":"VertexPool - Manages a large persistent vertex buffer with bucket allocation"}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/VertexPool.md","moduleTitle":"core/memory/VertexPool","source":"engine/core/memory/VertexPool.js","import":"/engine/core/memory/VertexPool.js","sourceHash":"a4b2e9239333c20b720d665d29e5086e405331e698d2ecfbb2dcce2c61db8af8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/VertexPool.js#0001:FaceOrientedVertexPool","exportIndex":1,"name":"FaceOrientedVertexPool","kind":"class","signature":"class FaceOrientedVertexPool","summary":"FaceOrientedVertexPool - Vertex pool with 6 sub-buckets per chunk for true back-face culling Each chunk gets 6 smaller buckets, one per face direction"}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/index.md","moduleTitle":"core/memory/index","source":"engine/core/memory/index.js","import":"/engine/core/memory/index.js","sourceHash":"40ae25e7fdb747419c8d8687ea32adab16f16c34576438f6a516be15422925ac","subsystem":"engine","recordType":"api-module","id":"module:engine/core/memory/index.js","title":"core/memory/index","summary":"","exportCount":13}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/index.md","moduleTitle":"core/memory/index","source":"engine/core/memory/index.js","import":"/engine/core/memory/index.js","sourceHash":"40ae25e7fdb747419c8d8687ea32adab16f16c34576438f6a516be15422925ac","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/index.js#0000:BindGroupCache","exportIndex":0,"name":"BindGroupCache","kind":"re-export","signature":"BindGroupCache","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/index.md","moduleTitle":"core/memory/index","source":"engine/core/memory/index.js","import":"/engine/core/memory/index.js","sourceHash":"40ae25e7fdb747419c8d8687ea32adab16f16c34576438f6a516be15422925ac","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/index.js#0001:BuddyAllocator","exportIndex":1,"name":"BuddyAllocator","kind":"re-export","signature":"BuddyAllocator","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/index.md","moduleTitle":"core/memory/index","source":"engine/core/memory/index.js","import":"/engine/core/memory/index.js","sourceHash":"40ae25e7fdb747419c8d8687ea32adab16f16c34576438f6a516be15422925ac","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/index.js#0002:GPUMemoryManager","exportIndex":2,"name":"GPUMemoryManager","kind":"re-export","signature":"GPUMemoryManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/index.md","moduleTitle":"core/memory/index","source":"engine/core/memory/index.js","import":"/engine/core/memory/index.js","sourceHash":"40ae25e7fdb747419c8d8687ea32adab16f16c34576438f6a516be15422925ac","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/index.js#0003:HostMemoryManager","exportIndex":3,"name":"HostMemoryManager","kind":"re-export","signature":"HostMemoryManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/index.md","moduleTitle":"core/memory/index","source":"engine/core/memory/index.js","import":"/engine/core/memory/index.js","sourceHash":"40ae25e7fdb747419c8d8687ea32adab16f16c34576438f6a516be15422925ac","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/index.js#0004:ObjectPool","exportIndex":4,"name":"ObjectPool","kind":"re-export","signature":"ObjectPool","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/index.md","moduleTitle":"core/memory/index","source":"engine/core/memory/index.js","import":"/engine/core/memory/index.js","sourceHash":"40ae25e7fdb747419c8d8687ea32adab16f16c34576438f6a516be15422925ac","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/index.js#0005:RingBuffer","exportIndex":5,"name":"RingBuffer","kind":"re-export","signature":"RingBuffer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/index.md","moduleTitle":"core/memory/index","source":"engine/core/memory/index.js","import":"/engine/core/memory/index.js","sourceHash":"40ae25e7fdb747419c8d8687ea32adab16f16c34576438f6a516be15422925ac","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/index.js#0006:SlabAllocator","exportIndex":6,"name":"SlabAllocator","kind":"re-export","signature":"SlabAllocator","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/index.md","moduleTitle":"core/memory/index","source":"engine/core/memory/index.js","import":"/engine/core/memory/index.js","sourceHash":"40ae25e7fdb747419c8d8687ea32adab16f16c34576438f6a516be15422925ac","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/index.js#0007:SoAContainer","exportIndex":7,"name":"SoAContainer","kind":"re-export","signature":"SoAContainer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/index.md","moduleTitle":"core/memory/index","source":"engine/core/memory/index.js","import":"/engine/core/memory/index.js","sourceHash":"40ae25e7fdb747419c8d8687ea32adab16f16c34576438f6a516be15422925ac","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/index.js#0008:StagingBufferPool","exportIndex":8,"name":"StagingBufferPool","kind":"re-export","signature":"StagingBufferPool","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/index.md","moduleTitle":"core/memory/index","source":"engine/core/memory/index.js","import":"/engine/core/memory/index.js","sourceHash":"40ae25e7fdb747419c8d8687ea32adab16f16c34576438f6a516be15422925ac","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/index.js#0009:TextureManager","exportIndex":9,"name":"TextureManager","kind":"re-export","signature":"TextureManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/index.md","moduleTitle":"core/memory/index","source":"engine/core/memory/index.js","import":"/engine/core/memory/index.js","sourceHash":"40ae25e7fdb747419c8d8687ea32adab16f16c34576438f6a516be15422925ac","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/index.js#0010:createCommonPools","exportIndex":10,"name":"createCommonPools","kind":"re-export","signature":"createCommonPools","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/index.md","moduleTitle":"core/memory/index","source":"engine/core/memory/index.js","import":"/engine/core/memory/index.js","sourceHash":"40ae25e7fdb747419c8d8687ea32adab16f16c34576438f6a516be15422925ac","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/index.js#0011:getGPUMemoryManager","exportIndex":11,"name":"getGPUMemoryManager","kind":"re-export","signature":"getGPUMemoryManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/memory/index.md","moduleTitle":"core/memory/index","source":"engine/core/memory/index.js","import":"/engine/core/memory/index.js","sourceHash":"40ae25e7fdb747419c8d8687ea32adab16f16c34576438f6a516be15422925ac","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/memory/index.js#0012:hostMemory","exportIndex":12,"name":"hostMemory","kind":"re-export","signature":"hostMemory","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/platform/InputPlumbing.md","moduleTitle":"core/platform/InputPlumbing","source":"engine/core/platform/InputPlumbing.js","import":"/engine/core/platform/InputPlumbing.js","sourceHash":"b7d7cc31c7575fcd6783cd5559402be1e586e70881e6b5e497fdc5740b0972b4","subsystem":"engine","recordType":"api-module","id":"module:engine/core/platform/InputPlumbing.js","title":"core/platform/InputPlumbing","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/core/platform/InputPlumbing.md","moduleTitle":"core/platform/InputPlumbing","source":"engine/core/platform/InputPlumbing.js","import":"/engine/core/platform/InputPlumbing.js","sourceHash":"b7d7cc31c7575fcd6783cd5559402be1e586e70881e6b5e497fdc5740b0972b4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/platform/InputPlumbing.js#0000:installPointerAndKeyboardListeners","exportIndex":0,"name":"installPointerAndKeyboardListeners","kind":"function","signature":"installPointerAndKeyboardListeners(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/platform/MainLoop.md","moduleTitle":"core/platform/MainLoop","source":"engine/core/platform/MainLoop.js","import":"/engine/core/platform/MainLoop.js","sourceHash":"58c9a84e75c26ac5b11bf8d251aa4bdc7ecd5e322626f605a296db99b03aaaac","subsystem":"engine","recordType":"api-module","id":"module:engine/core/platform/MainLoop.js","title":"core/platform/MainLoop","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/core/platform/MainLoop.md","moduleTitle":"core/platform/MainLoop","source":"engine/core/platform/MainLoop.js","import":"/engine/core/platform/MainLoop.js","sourceHash":"58c9a84e75c26ac5b11bf8d251aa4bdc7ecd5e322626f605a296db99b03aaaac","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/platform/MainLoop.js#0000:createMainLoop","exportIndex":0,"name":"createMainLoop","kind":"function","signature":"createMainLoop(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/platform/PlatformCanvas.md","moduleTitle":"core/platform/PlatformCanvas","source":"engine/core/platform/PlatformCanvas.js","import":"/engine/core/platform/PlatformCanvas.js","sourceHash":"f08eddde9b957884dcc08dccb434fa7f5210d126deb2f9536a0b08bc5b18533e","subsystem":"engine","recordType":"api-module","id":"module:engine/core/platform/PlatformCanvas.js","title":"core/platform/PlatformCanvas","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/core/platform/PlatformCanvas.md","moduleTitle":"core/platform/PlatformCanvas","source":"engine/core/platform/PlatformCanvas.js","import":"/engine/core/platform/PlatformCanvas.js","sourceHash":"f08eddde9b957884dcc08dccb434fa7f5210d126deb2f9536a0b08bc5b18533e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/platform/PlatformCanvas.js#0000:createCanvasSurface","exportIndex":0,"name":"createCanvasSurface","kind":"function","signature":"createCanvasSurface(gpuDevice, canvasTarget, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/platform/PlatformCanvas.md","moduleTitle":"core/platform/PlatformCanvas","source":"engine/core/platform/PlatformCanvas.js","import":"/engine/core/platform/PlatformCanvas.js","sourceHash":"f08eddde9b957884dcc08dccb434fa7f5210d126deb2f9536a0b08bc5b18533e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/platform/PlatformCanvas.js#0001:createViewportManager","exportIndex":1,"name":"createViewportManager","kind":"function","signature":"createViewportManager(gpuDevice, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/profiler/DualRNG.md","moduleTitle":"core/profiler/DualRNG","source":"engine/core/profiler/DualRNG.js","import":"/engine/core/profiler/DualRNG.js","sourceHash":"9b3b9dd15c3f168d9f35465890007f2519257f9ae1b273f43bff983724344bff","subsystem":"engine","recordType":"api-module","id":"module:engine/core/profiler/DualRNG.js","title":"core/profiler/DualRNG","summary":"DualRNG - Manages synchronized and visual RNGs","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/core/profiler/DualRNG.md","moduleTitle":"core/profiler/DualRNG","source":"engine/core/profiler/DualRNG.js","import":"/engine/core/profiler/DualRNG.js","sourceHash":"9b3b9dd15c3f168d9f35465890007f2519257f9ae1b273f43bff983724344bff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/profiler/DualRNG.js#0000:DualRNG","exportIndex":0,"name":"DualRNG","kind":"class","signature":"class DualRNG","summary":"DualRNG - Manages synchronized and visual RNGs"}
{"schemaVersion":1,"modulePath":"engine/reference/core/profiler/DualRNG.md","moduleTitle":"core/profiler/DualRNG","source":"engine/core/profiler/DualRNG.js","import":"/engine/core/profiler/DualRNG.js","sourceHash":"9b3b9dd15c3f168d9f35465890007f2519257f9ae1b273f43bff983724344bff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/profiler/DualRNG.js#0001:positionHash","exportIndex":1,"name":"positionHash","kind":"function","signature":"positionHash(x, y, z, seed = 0)","summary":"Position-based hash for deterministic randomness at specific coordinates Useful for terrain generation where you need same result for same position"}
{"schemaVersion":1,"modulePath":"engine/reference/core/profiler/DualRNG.md","moduleTitle":"core/profiler/DualRNG","source":"engine/core/profiler/DualRNG.js","import":"/engine/core/profiler/DualRNG.js","sourceHash":"9b3b9dd15c3f168d9f35465890007f2519257f9ae1b273f43bff983724344bff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/profiler/DualRNG.js#0002:getGlobalRNG","exportIndex":2,"name":"getGlobalRNG","kind":"function","signature":"getGlobalRNG()","summary":"Get or create global DualRNG instance"}
{"schemaVersion":1,"modulePath":"engine/reference/core/profiler/DualRNG.md","moduleTitle":"core/profiler/DualRNG","source":"engine/core/profiler/DualRNG.js","import":"/engine/core/profiler/DualRNG.js","sourceHash":"9b3b9dd15c3f168d9f35465890007f2519257f9ae1b273f43bff983724344bff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/profiler/DualRNG.js#0003:initGlobalRNG","exportIndex":3,"name":"initGlobalRNG","kind":"function","signature":"initGlobalRNG(seed)","summary":"Initialize global RNG with seed (call from game init)"}
{"schemaVersion":1,"modulePath":"engine/reference/core/profiler/FrameBudgetManager.md","moduleTitle":"core/profiler/FrameBudgetManager","source":"engine/core/profiler/FrameBudgetManager.js","import":"/engine/core/profiler/FrameBudgetManager.js","sourceHash":"aa20a1d4dbc50641180e2011eb027a1f39aaf1f3703ca7be2e0fcdd3e837aa23","subsystem":"engine","recordType":"api-module","id":"module:engine/core/profiler/FrameBudgetManager.js","title":"core/profiler/FrameBudgetManager","summary":"FrameBudgetManager - Manages per-frame time budgets","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/core/profiler/FrameBudgetManager.md","moduleTitle":"core/profiler/FrameBudgetManager","source":"engine/core/profiler/FrameBudgetManager.js","import":"/engine/core/profiler/FrameBudgetManager.js","sourceHash":"aa20a1d4dbc50641180e2011eb027a1f39aaf1f3703ca7be2e0fcdd3e837aa23","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/profiler/FrameBudgetManager.js#0000:FrameBudgetManager","exportIndex":0,"name":"FrameBudgetManager","kind":"class","signature":"class FrameBudgetManager","summary":"FrameBudgetManager - Manages per-frame time budgets"}
{"schemaVersion":1,"modulePath":"engine/reference/core/profiler/FrameBudgetManager.md","moduleTitle":"core/profiler/FrameBudgetManager","source":"engine/core/profiler/FrameBudgetManager.js","import":"/engine/core/profiler/FrameBudgetManager.js","sourceHash":"aa20a1d4dbc50641180e2011eb027a1f39aaf1f3703ca7be2e0fcdd3e837aa23","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/profiler/FrameBudgetManager.js#0001:getFrameBudgetManager","exportIndex":1,"name":"getFrameBudgetManager","kind":"function","signature":"getFrameBudgetManager()","summary":"Get global frame budget manager"}
{"schemaVersion":1,"modulePath":"engine/reference/core/profiler/FrameBudgetManager.md","moduleTitle":"core/profiler/FrameBudgetManager","source":"engine/core/profiler/FrameBudgetManager.js","import":"/engine/core/profiler/FrameBudgetManager.js","sourceHash":"aa20a1d4dbc50641180e2011eb027a1f39aaf1f3703ca7be2e0fcdd3e837aa23","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/profiler/FrameBudgetManager.js#0002:shouldSkipWork","exportIndex":2,"name":"shouldSkipWork","kind":"function","signature":"shouldSkipWork(section)","summary":"Quick check if we should skip work this frame"}
{"schemaVersion":1,"modulePath":"engine/reference/core/profiler/FrameBudgetManager.md","moduleTitle":"core/profiler/FrameBudgetManager","source":"engine/core/profiler/FrameBudgetManager.js","import":"/engine/core/profiler/FrameBudgetManager.js","sourceHash":"aa20a1d4dbc50641180e2011eb027a1f39aaf1f3703ca7be2e0fcdd3e837aa23","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/profiler/FrameBudgetManager.js#0003:DEFAULT_BUDGETS","exportIndex":3,"name":"DEFAULT_BUDGETS","kind":"re-export","signature":"DEFAULT_BUDGETS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/profiler/GameplayProfiler.md","moduleTitle":"core/profiler/GameplayProfiler","source":"engine/core/profiler/GameplayProfiler.js","import":"/engine/core/profiler/GameplayProfiler.js","sourceHash":"5690a5acd0afc62e59de9c589332f31d41e6c0a96d4a9a8d07025bbacc6b2b61","subsystem":"engine","recordType":"api-module","id":"module:engine/core/profiler/GameplayProfiler.js","title":"core/profiler/GameplayProfiler","summary":"","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/core/profiler/GameplayProfiler.md","moduleTitle":"core/profiler/GameplayProfiler","source":"engine/core/profiler/GameplayProfiler.js","import":"/engine/core/profiler/GameplayProfiler.js","sourceHash":"5690a5acd0afc62e59de9c589332f31d41e6c0a96d4a9a8d07025bbacc6b2b61","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/profiler/GameplayProfiler.js#0000:GameplayProfiler","exportIndex":0,"name":"GameplayProfiler","kind":"class","signature":"class GameplayProfiler","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/profiler/GameplayProfiler.md","moduleTitle":"core/profiler/GameplayProfiler","source":"engine/core/profiler/GameplayProfiler.js","import":"/engine/core/profiler/GameplayProfiler.js","sourceHash":"5690a5acd0afc62e59de9c589332f31d41e6c0a96d4a9a8d07025bbacc6b2b61","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/profiler/GameplayProfiler.js#0001:PROFILE_MODE","exportIndex":1,"name":"PROFILE_MODE","kind":"constant","signature":"PROFILE_MODE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/profiler/GameplayProfiler.md","moduleTitle":"core/profiler/GameplayProfiler","source":"engine/core/profiler/GameplayProfiler.js","import":"/engine/core/profiler/GameplayProfiler.js","sourceHash":"5690a5acd0afc62e59de9c589332f31d41e6c0a96d4a9a8d07025bbacc6b2b61","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/profiler/GameplayProfiler.js#0002:profiler","exportIndex":2,"name":"profiler","kind":"constant","signature":"profiler","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/profiler/PerformanceOptimizer.md","moduleTitle":"core/profiler/PerformanceOptimizer","source":"engine/core/profiler/PerformanceOptimizer.js","import":"/engine/core/profiler/PerformanceOptimizer.js","sourceHash":"639e68a6aa3f54aa5a369f4a068a4236c6ef874a34286c6c63bfbb8a5aa95fe7","subsystem":"engine","recordType":"api-module","id":"module:engine/core/profiler/PerformanceOptimizer.js","title":"core/profiler/PerformanceOptimizer","summary":"Common workgroup sizes","exportCount":9}
{"schemaVersion":1,"modulePath":"engine/reference/core/profiler/PerformanceOptimizer.md","moduleTitle":"core/profiler/PerformanceOptimizer","source":"engine/core/profiler/PerformanceOptimizer.js","import":"/engine/core/profiler/PerformanceOptimizer.js","sourceHash":"639e68a6aa3f54aa5a369f4a068a4236c6ef874a34286c6c63bfbb8a5aa95fe7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/profiler/PerformanceOptimizer.js#0000:WorkgroupTuner","exportIndex":0,"name":"WorkgroupTuner","kind":"class","signature":"class WorkgroupTuner","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/profiler/PerformanceOptimizer.md","moduleTitle":"core/profiler/PerformanceOptimizer","source":"engine/core/profiler/PerformanceOptimizer.js","import":"/engine/core/profiler/PerformanceOptimizer.js","sourceHash":"639e68a6aa3f54aa5a369f4a068a4236c6ef874a34286c6c63bfbb8a5aa95fe7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/profiler/PerformanceOptimizer.js#0001:PingPongBuffer","exportIndex":1,"name":"PingPongBuffer","kind":"class","signature":"class PingPongBuffer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/profiler/PerformanceOptimizer.md","moduleTitle":"core/profiler/PerformanceOptimizer","source":"engine/core/profiler/PerformanceOptimizer.js","import":"/engine/core/profiler/PerformanceOptimizer.js","sourceHash":"639e68a6aa3f54aa5a369f4a068a4236c6ef874a34286c6c63bfbb8a5aa95fe7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/profiler/PerformanceOptimizer.js#0002:FrameBudgetManager","exportIndex":2,"name":"FrameBudgetManager","kind":"class","signature":"class FrameBudgetManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/profiler/PerformanceOptimizer.md","moduleTitle":"core/profiler/PerformanceOptimizer","source":"engine/core/profiler/PerformanceOptimizer.js","import":"/engine/core/profiler/PerformanceOptimizer.js","sourceHash":"639e68a6aa3f54aa5a369f4a068a4236c6ef874a34286c6c63bfbb8a5aa95fe7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/profiler/PerformanceOptimizer.js#0003:BufferPool","exportIndex":3,"name":"BufferPool","kind":"class","signature":"class BufferPool","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/profiler/PerformanceOptimizer.md","moduleTitle":"core/profiler/PerformanceOptimizer","source":"engine/core/profiler/PerformanceOptimizer.js","import":"/engine/core/profiler/PerformanceOptimizer.js","sourceHash":"639e68a6aa3f54aa5a369f4a068a4236c6ef874a34286c6c63bfbb8a5aa95fe7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/profiler/PerformanceOptimizer.js#0004:PerformanceOptimizer","exportIndex":4,"name":"PerformanceOptimizer","kind":"class","signature":"class PerformanceOptimizer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/profiler/PerformanceOptimizer.md","moduleTitle":"core/profiler/PerformanceOptimizer","source":"engine/core/profiler/PerformanceOptimizer.js","import":"/engine/core/profiler/PerformanceOptimizer.js","sourceHash":"639e68a6aa3f54aa5a369f4a068a4236c6ef874a34286c6c63bfbb8a5aa95fe7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/profiler/PerformanceOptimizer.js#0005:WorkgroupSizes","exportIndex":5,"name":"WorkgroupSizes","kind":"constant","signature":"WorkgroupSizes","summary":"Common workgroup sizes"}
{"schemaVersion":1,"modulePath":"engine/reference/core/profiler/PerformanceOptimizer.md","moduleTitle":"core/profiler/PerformanceOptimizer","source":"engine/core/profiler/PerformanceOptimizer.js","import":"/engine/core/profiler/PerformanceOptimizer.js","sourceHash":"639e68a6aa3f54aa5a369f4a068a4236c6ef874a34286c6c63bfbb8a5aa95fe7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/profiler/PerformanceOptimizer.js#0006:BufferStrategy","exportIndex":6,"name":"BufferStrategy","kind":"constant","signature":"BufferStrategy","summary":"Buffer strategies"}
{"schemaVersion":1,"modulePath":"engine/reference/core/profiler/PerformanceOptimizer.md","moduleTitle":"core/profiler/PerformanceOptimizer","source":"engine/core/profiler/PerformanceOptimizer.js","import":"/engine/core/profiler/PerformanceOptimizer.js","sourceHash":"639e68a6aa3f54aa5a369f4a068a4236c6ef874a34286c6c63bfbb8a5aa95fe7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/profiler/PerformanceOptimizer.js#0007:MemoryTier","exportIndex":7,"name":"MemoryTier","kind":"constant","signature":"MemoryTier","summary":"Memory allocation tiers"}
{"schemaVersion":1,"modulePath":"engine/reference/core/profiler/PerformanceOptimizer.md","moduleTitle":"core/profiler/PerformanceOptimizer","source":"engine/core/profiler/PerformanceOptimizer.js","import":"/engine/core/profiler/PerformanceOptimizer.js","sourceHash":"639e68a6aa3f54aa5a369f4a068a4236c6ef874a34286c6c63bfbb8a5aa95fe7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/profiler/PerformanceOptimizer.js#0008:FrameBudget","exportIndex":8,"name":"FrameBudget","kind":"constant","signature":"FrameBudget","summary":"Frame budget targets"}
{"schemaVersion":1,"modulePath":"engine/reference/core/profiler/index.md","moduleTitle":"core/profiler/index","source":"engine/core/profiler/index.js","import":"/engine/core/profiler/index.js","sourceHash":"d3f3e9b847a627249f09637ac58d03a2a9bbac1e55a202129b85ea3cb6f82371","subsystem":"engine","recordType":"api-module","id":"module:engine/core/profiler/index.js","title":"core/profiler/index","summary":"","exportCount":10}
{"schemaVersion":1,"modulePath":"engine/reference/core/profiler/index.md","moduleTitle":"core/profiler/index","source":"engine/core/profiler/index.js","import":"/engine/core/profiler/index.js","sourceHash":"d3f3e9b847a627249f09637ac58d03a2a9bbac1e55a202129b85ea3cb6f82371","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/profiler/index.js#0000:DEFAULT_BUDGETS","exportIndex":0,"name":"DEFAULT_BUDGETS","kind":"re-export","signature":"DEFAULT_BUDGETS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/profiler/index.md","moduleTitle":"core/profiler/index","source":"engine/core/profiler/index.js","import":"/engine/core/profiler/index.js","sourceHash":"d3f3e9b847a627249f09637ac58d03a2a9bbac1e55a202129b85ea3cb6f82371","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/profiler/index.js#0001:DualRNG","exportIndex":1,"name":"DualRNG","kind":"re-export","signature":"DualRNG","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/profiler/index.md","moduleTitle":"core/profiler/index","source":"engine/core/profiler/index.js","import":"/engine/core/profiler/index.js","sourceHash":"d3f3e9b847a627249f09637ac58d03a2a9bbac1e55a202129b85ea3cb6f82371","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/profiler/index.js#0002:FrameBudgetManager","exportIndex":2,"name":"FrameBudgetManager","kind":"re-export","signature":"FrameBudgetManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/profiler/index.md","moduleTitle":"core/profiler/index","source":"engine/core/profiler/index.js","import":"/engine/core/profiler/index.js","sourceHash":"d3f3e9b847a627249f09637ac58d03a2a9bbac1e55a202129b85ea3cb6f82371","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/profiler/index.js#0003:GameplayProfiler","exportIndex":3,"name":"GameplayProfiler","kind":"re-export","signature":"GameplayProfiler","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/profiler/index.md","moduleTitle":"core/profiler/index","source":"engine/core/profiler/index.js","import":"/engine/core/profiler/index.js","sourceHash":"d3f3e9b847a627249f09637ac58d03a2a9bbac1e55a202129b85ea3cb6f82371","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/profiler/index.js#0004:PerformanceOptimizer","exportIndex":4,"name":"PerformanceOptimizer","kind":"re-export","signature":"PerformanceOptimizer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/profiler/index.md","moduleTitle":"core/profiler/index","source":"engine/core/profiler/index.js","import":"/engine/core/profiler/index.js","sourceHash":"d3f3e9b847a627249f09637ac58d03a2a9bbac1e55a202129b85ea3cb6f82371","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/profiler/index.js#0005:getFrameBudgetManager","exportIndex":5,"name":"getFrameBudgetManager","kind":"re-export","signature":"getFrameBudgetManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/profiler/index.md","moduleTitle":"core/profiler/index","source":"engine/core/profiler/index.js","import":"/engine/core/profiler/index.js","sourceHash":"d3f3e9b847a627249f09637ac58d03a2a9bbac1e55a202129b85ea3cb6f82371","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/profiler/index.js#0006:getGlobalRNG","exportIndex":6,"name":"getGlobalRNG","kind":"re-export","signature":"getGlobalRNG","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/profiler/index.md","moduleTitle":"core/profiler/index","source":"engine/core/profiler/index.js","import":"/engine/core/profiler/index.js","sourceHash":"d3f3e9b847a627249f09637ac58d03a2a9bbac1e55a202129b85ea3cb6f82371","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/profiler/index.js#0007:initGlobalRNG","exportIndex":7,"name":"initGlobalRNG","kind":"re-export","signature":"initGlobalRNG","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/profiler/index.md","moduleTitle":"core/profiler/index","source":"engine/core/profiler/index.js","import":"/engine/core/profiler/index.js","sourceHash":"d3f3e9b847a627249f09637ac58d03a2a9bbac1e55a202129b85ea3cb6f82371","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/profiler/index.js#0008:positionHash","exportIndex":8,"name":"positionHash","kind":"re-export","signature":"positionHash","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/profiler/index.md","moduleTitle":"core/profiler/index","source":"engine/core/profiler/index.js","import":"/engine/core/profiler/index.js","sourceHash":"d3f3e9b847a627249f09637ac58d03a2a9bbac1e55a202129b85ea3cb6f82371","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/profiler/index.js#0009:shouldSkipWork","exportIndex":9,"name":"shouldSkipWork","kind":"re-export","signature":"shouldSkipWork","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/profiling/PerformanceAnalyzer.md","moduleTitle":"core/profiling/PerformanceAnalyzer","source":"engine/core/profiling/PerformanceAnalyzer.js","import":"/engine/core/profiling/PerformanceAnalyzer.js","sourceHash":"0ea5c3f1dc899c7358ebf0f76d514bd311c173301171373f037acb88208ab55c","subsystem":"engine","recordType":"api-module","id":"module:engine/core/profiling/PerformanceAnalyzer.js","title":"core/profiling/PerformanceAnalyzer","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/core/profiling/PerformanceAnalyzer.md","moduleTitle":"core/profiling/PerformanceAnalyzer","source":"engine/core/profiling/PerformanceAnalyzer.js","import":"/engine/core/profiling/PerformanceAnalyzer.js","sourceHash":"0ea5c3f1dc899c7358ebf0f76d514bd311c173301171373f037acb88208ab55c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/profiling/PerformanceAnalyzer.js#0000:PerformanceAnalyzer","exportIndex":0,"name":"PerformanceAnalyzer","kind":"class","signature":"class PerformanceAnalyzer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/save/SaveSystem.md","moduleTitle":"core/save/SaveSystem","source":"engine/core/save/SaveSystem.js","import":"/engine/core/save/SaveSystem.js","sourceHash":"91d0e3a9839e86d3b22acb56793e0e22615879531b6f9e2a2cb7c8a1f8f7216e","subsystem":"engine","recordType":"api-module","id":"module:engine/core/save/SaveSystem.js","title":"core/save/SaveSystem","summary":"","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/core/save/SaveSystem.md","moduleTitle":"core/save/SaveSystem","source":"engine/core/save/SaveSystem.js","import":"/engine/core/save/SaveSystem.js","sourceHash":"91d0e3a9839e86d3b22acb56793e0e22615879531b6f9e2a2cb7c8a1f8f7216e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/save/SaveSystem.js#0000:SaveSystem","exportIndex":0,"name":"SaveSystem","kind":"class","signature":"class SaveSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/save/SaveSystem.md","moduleTitle":"core/save/SaveSystem","source":"engine/core/save/SaveSystem.js","import":"/engine/core/save/SaveSystem.js","sourceHash":"91d0e3a9839e86d3b22acb56793e0e22615879531b6f9e2a2cb7c8a1f8f7216e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/save/SaveSystem.js#0001:createLocalStorageAdapter","exportIndex":1,"name":"createLocalStorageAdapter","kind":"function","signature":"createLocalStorageAdapter(storage)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/save/SaveSystem.md","moduleTitle":"core/save/SaveSystem","source":"engine/core/save/SaveSystem.js","import":"/engine/core/save/SaveSystem.js","sourceHash":"91d0e3a9839e86d3b22acb56793e0e22615879531b6f9e2a2cb7c8a1f8f7216e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/save/SaveSystem.js#0002:SAVE_SCHEMA_VERSION","exportIndex":2,"name":"SAVE_SCHEMA_VERSION","kind":"constant","signature":"SAVE_SCHEMA_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/save/index.md","moduleTitle":"core/save/index","source":"engine/core/save/index.js","import":"/engine/core/save/index.js","sourceHash":"610d3e17c7ba73bc6764adb2fba123bee1e2b8b646f96449e3439dbce74664e6","subsystem":"engine","recordType":"api-module","id":"module:engine/core/save/index.js","title":"core/save/index","summary":"","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/core/save/index.md","moduleTitle":"core/save/index","source":"engine/core/save/index.js","import":"/engine/core/save/index.js","sourceHash":"610d3e17c7ba73bc6764adb2fba123bee1e2b8b646f96449e3439dbce74664e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/save/index.js#0000:SAVE_SCHEMA_VERSION","exportIndex":0,"name":"SAVE_SCHEMA_VERSION","kind":"re-export","signature":"SAVE_SCHEMA_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/save/index.md","moduleTitle":"core/save/index","source":"engine/core/save/index.js","import":"/engine/core/save/index.js","sourceHash":"610d3e17c7ba73bc6764adb2fba123bee1e2b8b646f96449e3439dbce74664e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/save/index.js#0001:SaveSystem","exportIndex":1,"name":"SaveSystem","kind":"re-export","signature":"SaveSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/save/index.md","moduleTitle":"core/save/index","source":"engine/core/save/index.js","import":"/engine/core/save/index.js","sourceHash":"610d3e17c7ba73bc6764adb2fba123bee1e2b8b646f96449e3439dbce74664e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/save/index.js#0002:createLocalStorageAdapter","exportIndex":2,"name":"createLocalStorageAdapter","kind":"re-export","signature":"createLocalStorageAdapter","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/save/index.md","moduleTitle":"core/save/index","source":"engine/core/save/index.js","import":"/engine/core/save/index.js","sourceHash":"610d3e17c7ba73bc6764adb2fba123bee1e2b8b646f96449e3439dbce74664e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/save/index.js#0003:default","exportIndex":3,"name":"default","kind":"re-export","signature":"default","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/scheduler/TaskScheduler.md","moduleTitle":"core/scheduler/TaskScheduler","source":"engine/core/scheduler/TaskScheduler.js","import":"/engine/core/scheduler/TaskScheduler.js","sourceHash":"960af72eb56ef755ce4e1ef1144d5a5c8f00207b799d67dda466267ed7945d70","subsystem":"engine","recordType":"api-module","id":"module:engine/core/scheduler/TaskScheduler.js","title":"core/scheduler/TaskScheduler","summary":"Represents a unit of work","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/core/scheduler/TaskScheduler.md","moduleTitle":"core/scheduler/TaskScheduler","source":"engine/core/scheduler/TaskScheduler.js","import":"/engine/core/scheduler/TaskScheduler.js","sourceHash":"960af72eb56ef755ce4e1ef1144d5a5c8f00207b799d67dda466267ed7945d70","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/scheduler/TaskScheduler.js#0000:Job","exportIndex":0,"name":"Job","kind":"class","signature":"class Job","summary":"Represents a unit of work"}
{"schemaVersion":1,"modulePath":"engine/reference/core/scheduler/TaskScheduler.md","moduleTitle":"core/scheduler/TaskScheduler","source":"engine/core/scheduler/TaskScheduler.js","import":"/engine/core/scheduler/TaskScheduler.js","sourceHash":"960af72eb56ef755ce4e1ef1144d5a5c8f00207b799d67dda466267ed7945d70","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/scheduler/TaskScheduler.js#0001:WorkerPool","exportIndex":1,"name":"WorkerPool","kind":"class","signature":"class WorkerPool","summary":"Pool of Web Workers for parallel job execution"}
{"schemaVersion":1,"modulePath":"engine/reference/core/scheduler/TaskScheduler.md","moduleTitle":"core/scheduler/TaskScheduler","source":"engine/core/scheduler/TaskScheduler.js","import":"/engine/core/scheduler/TaskScheduler.js","sourceHash":"960af72eb56ef755ce4e1ef1144d5a5c8f00207b799d67dda466267ed7945d70","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/scheduler/TaskScheduler.js#0002:TaskScheduler","exportIndex":2,"name":"TaskScheduler","kind":"class","signature":"class TaskScheduler","summary":"Main task scheduler with frame budget management"}
{"schemaVersion":1,"modulePath":"engine/reference/core/scheduler/TaskScheduler.md","moduleTitle":"core/scheduler/TaskScheduler","source":"engine/core/scheduler/TaskScheduler.js","import":"/engine/core/scheduler/TaskScheduler.js","sourceHash":"960af72eb56ef755ce4e1ef1144d5a5c8f00207b799d67dda466267ed7945d70","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/scheduler/TaskScheduler.js#0003:JobPriority","exportIndex":3,"name":"JobPriority","kind":"constant","signature":"JobPriority","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/scheduler/TaskScheduler.md","moduleTitle":"core/scheduler/TaskScheduler","source":"engine/core/scheduler/TaskScheduler.js","import":"/engine/core/scheduler/TaskScheduler.js","sourceHash":"960af72eb56ef755ce4e1ef1144d5a5c8f00207b799d67dda466267ed7945d70","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/scheduler/TaskScheduler.js#0004:scheduler","exportIndex":4,"name":"scheduler","kind":"constant","signature":"scheduler","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/scheduler/TaskScheduler.md","moduleTitle":"core/scheduler/TaskScheduler","source":"engine/core/scheduler/TaskScheduler.js","import":"/engine/core/scheduler/TaskScheduler.js","sourceHash":"960af72eb56ef755ce4e1ef1144d5a5c8f00207b799d67dda466267ed7945d70","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/scheduler/TaskScheduler.js#0005:workerTemplate","exportIndex":5,"name":"workerTemplate","kind":"constant","signature":"workerTemplate","summary":"Template for worker script. Export this and use with URL.createObjectURL."}
{"schemaVersion":1,"modulePath":"engine/reference/core/scheduler/index.md","moduleTitle":"core/scheduler/index","source":"engine/core/scheduler/index.js","import":"/engine/core/scheduler/index.js","sourceHash":"3e708b367f1a07924204365c625b17a8507f5ea08870e0c68547d6b394ebcfef","subsystem":"engine","recordType":"api-module","id":"module:engine/core/scheduler/index.js","title":"core/scheduler/index","summary":"","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/core/scheduler/index.md","moduleTitle":"core/scheduler/index","source":"engine/core/scheduler/index.js","import":"/engine/core/scheduler/index.js","sourceHash":"3e708b367f1a07924204365c625b17a8507f5ea08870e0c68547d6b394ebcfef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/scheduler/index.js#0000:Job","exportIndex":0,"name":"Job","kind":"re-export","signature":"Job","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/scheduler/index.md","moduleTitle":"core/scheduler/index","source":"engine/core/scheduler/index.js","import":"/engine/core/scheduler/index.js","sourceHash":"3e708b367f1a07924204365c625b17a8507f5ea08870e0c68547d6b394ebcfef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/scheduler/index.js#0001:JobPriority","exportIndex":1,"name":"JobPriority","kind":"re-export","signature":"JobPriority","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/scheduler/index.md","moduleTitle":"core/scheduler/index","source":"engine/core/scheduler/index.js","import":"/engine/core/scheduler/index.js","sourceHash":"3e708b367f1a07924204365c625b17a8507f5ea08870e0c68547d6b394ebcfef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/scheduler/index.js#0002:TaskScheduler","exportIndex":2,"name":"TaskScheduler","kind":"re-export","signature":"TaskScheduler","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/scheduler/index.md","moduleTitle":"core/scheduler/index","source":"engine/core/scheduler/index.js","import":"/engine/core/scheduler/index.js","sourceHash":"3e708b367f1a07924204365c625b17a8507f5ea08870e0c68547d6b394ebcfef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/scheduler/index.js#0003:WorkerPool","exportIndex":3,"name":"WorkerPool","kind":"re-export","signature":"WorkerPool","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/scheduler/index.md","moduleTitle":"core/scheduler/index","source":"engine/core/scheduler/index.js","import":"/engine/core/scheduler/index.js","sourceHash":"3e708b367f1a07924204365c625b17a8507f5ea08870e0c68547d6b394ebcfef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/scheduler/index.js#0004:scheduler","exportIndex":4,"name":"scheduler","kind":"re-export","signature":"scheduler","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/scheduler/index.md","moduleTitle":"core/scheduler/index","source":"engine/core/scheduler/index.js","import":"/engine/core/scheduler/index.js","sourceHash":"3e708b367f1a07924204365c625b17a8507f5ea08870e0c68547d6b394ebcfef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/scheduler/index.js#0005:workerTemplate","exportIndex":5,"name":"workerTemplate","kind":"re-export","signature":"workerTemplate","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/schema/BrowserRecordContract.md","moduleTitle":"core/schema/BrowserRecordContract","source":"engine/core/schema/BrowserRecordContract.js","import":"/engine/core/schema/BrowserRecordContract.js","sourceHash":"94304533d4fa512ef7cbdbffcb1b76d2a0964e9635fd43bfcabc2fd23ad82c73","subsystem":"engine","recordType":"api-module","id":"module:engine/core/schema/BrowserRecordContract.js","title":"core/schema/BrowserRecordContract","summary":"Shared expand-contract owner for structured browser key/value records.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/core/schema/BrowserRecordContract.md","moduleTitle":"core/schema/BrowserRecordContract","source":"engine/core/schema/BrowserRecordContract.js","import":"/engine/core/schema/BrowserRecordContract.js","sourceHash":"94304533d4fa512ef7cbdbffcb1b76d2a0964e9635fd43bfcabc2fd23ad82c73","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/schema/BrowserRecordContract.js#0000:BrowserRecordContractError","exportIndex":0,"name":"BrowserRecordContractError","kind":"class","signature":"class BrowserRecordContractError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/schema/BrowserRecordContract.md","moduleTitle":"core/schema/BrowserRecordContract","source":"engine/core/schema/BrowserRecordContract.js","import":"/engine/core/schema/BrowserRecordContract.js","sourceHash":"94304533d4fa512ef7cbdbffcb1b76d2a0964e9635fd43bfcabc2fd23ad82c73","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/schema/BrowserRecordContract.js#0001:createBrowserRecordContract","exportIndex":1,"name":"createBrowserRecordContract","kind":"function","signature":"createBrowserRecordContract({ schema, legacyKey, currentKey = `${legacyKey}.v2`, payloadKey = 'value', validate, maxBytes = 4 * 1024 * 1024, } = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/schema/BrowserRecordContract.md","moduleTitle":"core/schema/BrowserRecordContract","source":"engine/core/schema/BrowserRecordContract.js","import":"/engine/core/schema/BrowserRecordContract.js","sourceHash":"94304533d4fa512ef7cbdbffcb1b76d2a0964e9635fd43bfcabc2fd23ad82c73","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/schema/BrowserRecordContract.js#0002:BROWSER_RECORD_SCHEMA_VERSION","exportIndex":2,"name":"BROWSER_RECORD_SCHEMA_VERSION","kind":"constant","signature":"BROWSER_RECORD_SCHEMA_VERSION","summary":"Shared expand-contract owner for structured browser key/value records."}
{"schemaVersion":1,"modulePath":"engine/reference/core/schema/SchemaEvolutionRegistry.md","moduleTitle":"core/schema/SchemaEvolutionRegistry","source":"engine/core/schema/SchemaEvolutionRegistry.js","import":"/engine/core/schema/SchemaEvolutionRegistry.js","sourceHash":"59842ed7f57d5c085d7fdddff04b79dcb3cc4bf295b4b8a1ff47e52d48d9f8ef","subsystem":"engine","recordType":"api-module","id":"module:engine/core/schema/SchemaEvolutionRegistry.js","title":"core/schema/SchemaEvolutionRegistry","summary":"Pure registry for explicit schema readers, writers, and migration graphs. It transforms decoded values only and never reads or writes persistence.","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/core/schema/SchemaEvolutionRegistry.md","moduleTitle":"core/schema/SchemaEvolutionRegistry","source":"engine/core/schema/SchemaEvolutionRegistry.js","import":"/engine/core/schema/SchemaEvolutionRegistry.js","sourceHash":"59842ed7f57d5c085d7fdddff04b79dcb3cc4bf295b4b8a1ff47e52d48d9f8ef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/schema/SchemaEvolutionRegistry.js#0000:SchemaEvolutionError","exportIndex":0,"name":"SchemaEvolutionError","kind":"class","signature":"class SchemaEvolutionError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/schema/SchemaEvolutionRegistry.md","moduleTitle":"core/schema/SchemaEvolutionRegistry","source":"engine/core/schema/SchemaEvolutionRegistry.js","import":"/engine/core/schema/SchemaEvolutionRegistry.js","sourceHash":"59842ed7f57d5c085d7fdddff04b79dcb3cc4bf295b4b8a1ff47e52d48d9f8ef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/schema/SchemaEvolutionRegistry.js#0001:SchemaEvolutionRegistry","exportIndex":1,"name":"SchemaEvolutionRegistry","kind":"class","signature":"class SchemaEvolutionRegistry","summary":"Pure registry for explicit schema readers, writers, and migration graphs. It transforms decoded values only and never reads or writes persistence."}
{"schemaVersion":1,"modulePath":"engine/reference/core/schema/SchemaEvolutionRegistry.md","moduleTitle":"core/schema/SchemaEvolutionRegistry","source":"engine/core/schema/SchemaEvolutionRegistry.js","import":"/engine/core/schema/SchemaEvolutionRegistry.js","sourceHash":"59842ed7f57d5c085d7fdddff04b79dcb3cc4bf295b4b8a1ff47e52d48d9f8ef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/schema/SchemaEvolutionRegistry.js#0002:canonicalSchemaValue","exportIndex":2,"name":"canonicalSchemaValue","kind":"function","signature":"canonicalSchemaValue(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/schema/SchemaEvolutionRegistry.md","moduleTitle":"core/schema/SchemaEvolutionRegistry","source":"engine/core/schema/SchemaEvolutionRegistry.js","import":"/engine/core/schema/SchemaEvolutionRegistry.js","sourceHash":"59842ed7f57d5c085d7fdddff04b79dcb3cc4bf295b4b8a1ff47e52d48d9f8ef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/schema/SchemaEvolutionRegistry.js#0003:cloneSchemaValue","exportIndex":3,"name":"cloneSchemaValue","kind":"function","signature":"cloneSchemaValue(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/schema/SchemaEvolutionRegistry.md","moduleTitle":"core/schema/SchemaEvolutionRegistry","source":"engine/core/schema/SchemaEvolutionRegistry.js","import":"/engine/core/schema/SchemaEvolutionRegistry.js","sourceHash":"59842ed7f57d5c085d7fdddff04b79dcb3cc4bf295b4b8a1ff47e52d48d9f8ef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/schema/SchemaEvolutionRegistry.js#0004:fingerprintSchemaValue","exportIndex":4,"name":"fingerprintSchemaValue","kind":"function","signature":"fingerprintSchemaValue(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/schema/SchemaEvolutionRegistry.md","moduleTitle":"core/schema/SchemaEvolutionRegistry","source":"engine/core/schema/SchemaEvolutionRegistry.js","import":"/engine/core/schema/SchemaEvolutionRegistry.js","sourceHash":"59842ed7f57d5c085d7fdddff04b79dcb3cc4bf295b4b8a1ff47e52d48d9f8ef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/schema/SchemaEvolutionRegistry.js#0005:createSchemaEvolutionRegistry","exportIndex":5,"name":"createSchemaEvolutionRegistry","kind":"function","signature":"createSchemaEvolutionRegistry()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/schema/SchemaEvolutionRegistry.md","moduleTitle":"core/schema/SchemaEvolutionRegistry","source":"engine/core/schema/SchemaEvolutionRegistry.js","import":"/engine/core/schema/SchemaEvolutionRegistry.js","sourceHash":"59842ed7f57d5c085d7fdddff04b79dcb3cc4bf295b4b8a1ff47e52d48d9f8ef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/schema/SchemaEvolutionRegistry.js#0006:SCHEMA_MIGRATION_PLAN_FORMAT","exportIndex":6,"name":"SCHEMA_MIGRATION_PLAN_FORMAT","kind":"constant","signature":"SCHEMA_MIGRATION_PLAN_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/schema/SchemaValidator.md","moduleTitle":"core/schema/SchemaValidator","source":"engine/core/schema/SchemaValidator.js","import":"/engine/core/schema/SchemaValidator.js","sourceHash":"800783f4d8d032008cb13951de6e7a8bc296f70d63a4caf01b80f26adfd7bd5f","subsystem":"engine","recordType":"api-module","id":"module:engine/core/schema/SchemaValidator.js","title":"core/schema/SchemaValidator","summary":"SchemaValidator — Validates game data against JSON schemas. Lightweight validator (no external deps). Checks required fields, types, enums, min/max, and array items. Reports all errors.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/core/schema/SchemaValidator.md","moduleTitle":"core/schema/SchemaValidator","source":"engine/core/schema/SchemaValidator.js","import":"/engine/core/schema/SchemaValidator.js","sourceHash":"800783f4d8d032008cb13951de6e7a8bc296f70d63a4caf01b80f26adfd7bd5f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/schema/SchemaValidator.js#0000:SchemaValidator","exportIndex":0,"name":"SchemaValidator","kind":"class","signature":"class SchemaValidator","summary":"SchemaValidator — Validates game data against JSON schemas. Lightweight validator (no external deps). Checks required fields, types, enums, min/max, and array items. Reports all errors."}
{"schemaVersion":1,"modulePath":"engine/reference/core/schema/index.md","moduleTitle":"core/schema/index","source":"engine/core/schema/index.js","import":"/engine/core/schema/index.js","sourceHash":"6f2808bd1810808e80b7824a9cdb353d70d80e25fb7b6ee6e54ab9080965f06b","subsystem":"engine","recordType":"api-module","id":"module:engine/core/schema/index.js","title":"core/schema/index","summary":"","exportCount":9}
{"schemaVersion":1,"modulePath":"engine/reference/core/schema/index.md","moduleTitle":"core/schema/index","source":"engine/core/schema/index.js","import":"/engine/core/schema/index.js","sourceHash":"6f2808bd1810808e80b7824a9cdb353d70d80e25fb7b6ee6e54ab9080965f06b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/schema/index.js#0000:SCHEMA_MIGRATION_PLAN_FORMAT","exportIndex":0,"name":"SCHEMA_MIGRATION_PLAN_FORMAT","kind":"re-export","signature":"SCHEMA_MIGRATION_PLAN_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/schema/index.md","moduleTitle":"core/schema/index","source":"engine/core/schema/index.js","import":"/engine/core/schema/index.js","sourceHash":"6f2808bd1810808e80b7824a9cdb353d70d80e25fb7b6ee6e54ab9080965f06b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/schema/index.js#0001:SchemaEvolutionError","exportIndex":1,"name":"SchemaEvolutionError","kind":"re-export","signature":"SchemaEvolutionError","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/schema/index.md","moduleTitle":"core/schema/index","source":"engine/core/schema/index.js","import":"/engine/core/schema/index.js","sourceHash":"6f2808bd1810808e80b7824a9cdb353d70d80e25fb7b6ee6e54ab9080965f06b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/schema/index.js#0002:SchemaEvolutionRegistry","exportIndex":2,"name":"SchemaEvolutionRegistry","kind":"re-export","signature":"SchemaEvolutionRegistry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/schema/index.md","moduleTitle":"core/schema/index","source":"engine/core/schema/index.js","import":"/engine/core/schema/index.js","sourceHash":"6f2808bd1810808e80b7824a9cdb353d70d80e25fb7b6ee6e54ab9080965f06b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/schema/index.js#0003:SchemaValidator","exportIndex":3,"name":"SchemaValidator","kind":"re-export","signature":"SchemaValidator","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/schema/index.md","moduleTitle":"core/schema/index","source":"engine/core/schema/index.js","import":"/engine/core/schema/index.js","sourceHash":"6f2808bd1810808e80b7824a9cdb353d70d80e25fb7b6ee6e54ab9080965f06b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/schema/index.js#0004:canonicalSchemaValue","exportIndex":4,"name":"canonicalSchemaValue","kind":"re-export","signature":"canonicalSchemaValue","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/schema/index.md","moduleTitle":"core/schema/index","source":"engine/core/schema/index.js","import":"/engine/core/schema/index.js","sourceHash":"6f2808bd1810808e80b7824a9cdb353d70d80e25fb7b6ee6e54ab9080965f06b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/schema/index.js#0005:cloneSchemaValue","exportIndex":5,"name":"cloneSchemaValue","kind":"re-export","signature":"cloneSchemaValue","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/schema/index.md","moduleTitle":"core/schema/index","source":"engine/core/schema/index.js","import":"/engine/core/schema/index.js","sourceHash":"6f2808bd1810808e80b7824a9cdb353d70d80e25fb7b6ee6e54ab9080965f06b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/schema/index.js#0006:createSchemaEvolutionRegistry","exportIndex":6,"name":"createSchemaEvolutionRegistry","kind":"re-export","signature":"createSchemaEvolutionRegistry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/schema/index.md","moduleTitle":"core/schema/index","source":"engine/core/schema/index.js","import":"/engine/core/schema/index.js","sourceHash":"6f2808bd1810808e80b7824a9cdb353d70d80e25fb7b6ee6e54ab9080965f06b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/schema/index.js#0007:default","exportIndex":7,"name":"default","kind":"re-export","signature":"default","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/schema/index.md","moduleTitle":"core/schema/index","source":"engine/core/schema/index.js","import":"/engine/core/schema/index.js","sourceHash":"6f2808bd1810808e80b7824a9cdb353d70d80e25fb7b6ee6e54ab9080965f06b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/schema/index.js#0008:fingerprintSchemaValue","exportIndex":8,"name":"fingerprintSchemaValue","kind":"re-export","signature":"fingerprintSchemaValue","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/timing/DisplayRefreshEstimator.md","moduleTitle":"core/timing/DisplayRefreshEstimator","source":"engine/core/timing/DisplayRefreshEstimator.js","import":"/engine/core/timing/DisplayRefreshEstimator.js","sourceHash":"fc39edee4ae3af82519376dd73da91c3d1197803747895bf1afa389bc3e1e43a","subsystem":"engine","recordType":"api-module","id":"module:engine/core/timing/DisplayRefreshEstimator.js","title":"core/timing/DisplayRefreshEstimator","summary":"Robustly estimates the host display cadence from requestAnimationFrame intervals. Missed callbacks are filtered before estimation, so a busy frame does not incorrectly turn a 144 Hz display into a 72 Hz quality target.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/core/timing/DisplayRefreshEstimator.md","moduleTitle":"core/timing/DisplayRefreshEstimator","source":"engine/core/timing/DisplayRefreshEstimator.js","import":"/engine/core/timing/DisplayRefreshEstimator.js","sourceHash":"fc39edee4ae3af82519376dd73da91c3d1197803747895bf1afa389bc3e1e43a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/timing/DisplayRefreshEstimator.js#0000:DisplayRefreshEstimator","exportIndex":0,"name":"DisplayRefreshEstimator","kind":"class","signature":"class DisplayRefreshEstimator","summary":"Robustly estimates the host display cadence from requestAnimationFrame intervals. Missed callbacks are filtered before estimation, so a busy frame does not incorrectly turn a 144 Hz display into a 72 Hz quality target."}
{"schemaVersion":1,"modulePath":"engine/reference/core/timing/DisplayRefreshEstimator.md","moduleTitle":"core/timing/DisplayRefreshEstimator","source":"engine/core/timing/DisplayRefreshEstimator.js","import":"/engine/core/timing/DisplayRefreshEstimator.js","sourceHash":"fc39edee4ae3af82519376dd73da91c3d1197803747895bf1afa389bc3e1e43a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/timing/DisplayRefreshEstimator.js#0001:createDisplayRefreshEstimator","exportIndex":1,"name":"createDisplayRefreshEstimator","kind":"function","signature":"createDisplayRefreshEstimator(options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/timing/FramePacingController.md","moduleTitle":"core/timing/FramePacingController","source":"engine/core/timing/FramePacingController.js","import":"/engine/core/timing/FramePacingController.js","sourceHash":"555e9b18fed8cf9414c1b87bfbc30482962b16a5892ffc299b06bcc3aaaefe24","subsystem":"engine","recordType":"api-module","id":"module:engine/core/timing/FramePacingController.js","title":"core/timing/FramePacingController","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/core/timing/FramePacingController.md","moduleTitle":"core/timing/FramePacingController","source":"engine/core/timing/FramePacingController.js","import":"/engine/core/timing/FramePacingController.js","sourceHash":"555e9b18fed8cf9414c1b87bfbc30482962b16a5892ffc299b06bcc3aaaefe24","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/timing/FramePacingController.js#0000:FramePacingController","exportIndex":0,"name":"FramePacingController","kind":"class","signature":"class FramePacingController","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/timing/index.md","moduleTitle":"core/timing/index","source":"engine/core/timing/index.js","import":"/engine/core/timing/index.js","sourceHash":"32f749a141ed10649314d4a87a0df92461e9bf682f0040d29f043f008dc62fe0","subsystem":"engine","recordType":"api-module","id":"module:engine/core/timing/index.js","title":"core/timing/index","summary":"","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/core/timing/index.md","moduleTitle":"core/timing/index","source":"engine/core/timing/index.js","import":"/engine/core/timing/index.js","sourceHash":"32f749a141ed10649314d4a87a0df92461e9bf682f0040d29f043f008dc62fe0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/timing/index.js#0000:DisplayRefreshEstimator","exportIndex":0,"name":"DisplayRefreshEstimator","kind":"re-export","signature":"DisplayRefreshEstimator","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/timing/index.md","moduleTitle":"core/timing/index","source":"engine/core/timing/index.js","import":"/engine/core/timing/index.js","sourceHash":"32f749a141ed10649314d4a87a0df92461e9bf682f0040d29f043f008dc62fe0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/timing/index.js#0001:FramePacingController","exportIndex":1,"name":"FramePacingController","kind":"re-export","signature":"FramePacingController","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/timing/index.md","moduleTitle":"core/timing/index","source":"engine/core/timing/index.js","import":"/engine/core/timing/index.js","sourceHash":"32f749a141ed10649314d4a87a0df92461e9bf682f0040d29f043f008dc62fe0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/timing/index.js#0002:createDisplayRefreshEstimator","exportIndex":2,"name":"createDisplayRefreshEstimator","kind":"re-export","signature":"createDisplayRefreshEstimator","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/core/workers/WorkerPool.md","moduleTitle":"core/workers/WorkerPool","source":"engine/core/workers/WorkerPool.js","import":"/engine/core/workers/WorkerPool.js","sourceHash":"ba5da61919ffe21d51f3a7bb37b42a059f51c50163b8f24f127e69de9d31ef48","subsystem":"engine","recordType":"api-module","id":"module:engine/core/workers/WorkerPool.js","title":"core/workers/WorkerPool","summary":"Web Worker Pool - Multi-threaded asset loading and processing Eliminates main thread blocking during heavy operations","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/core/workers/WorkerPool.md","moduleTitle":"core/workers/WorkerPool","source":"engine/core/workers/WorkerPool.js","import":"/engine/core/workers/WorkerPool.js","sourceHash":"ba5da61919ffe21d51f3a7bb37b42a059f51c50163b8f24f127e69de9d31ef48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/core/workers/WorkerPool.js#0000:WorkerPool","exportIndex":0,"name":"WorkerPool","kind":"class","signature":"class WorkerPool","summary":"Web Worker Pool - Multi-threaded asset loading and processing Eliminates main thread blocking during heavy operations"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/ComponentHealer.md","moduleTitle":"ecs/ComponentHealer","source":"engine/ecs/ComponentHealer.js","import":"/engine/ecs/ComponentHealer.js","sourceHash":"5892b658a75b37005c40faa9665f9fe1d1e9ecd07625049c7a0f44927ab1de55","subsystem":"engine","recordType":"api-module","id":"module:engine/ecs/ComponentHealer.js","title":"ecs/ComponentHealer","summary":"ComponentHealer.js - Self-Healing Data Validation System Implements auto-repair for component data using triangulation: - Detects missing/invalid/corrupted data - Infers correct values from multiple sources (redundancy) - Applies intelligent repairs with fallbacks - Logs all healing actions for diagnostics Based on self-healing system principles: 1. Monitoring & Detection 2. Diagnostics Engine 3. Decision-Making Module 4. Execution Framework 5. Knowledge Base (schema defaults + inference rules) 6. Feedback Loop (healing log)","exportCount":8}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/ComponentHealer.md","moduleTitle":"ecs/ComponentHealer","source":"engine/ecs/ComponentHealer.js","import":"/engine/ecs/ComponentHealer.js","sourceHash":"5892b658a75b37005c40faa9665f9fe1d1e9ecd07625049c7a0f44927ab1de55","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/ComponentHealer.js#0000:TriangulationContext","exportIndex":0,"name":"TriangulationContext","kind":"class","signature":"class TriangulationContext","summary":"Triangulation context - provides multiple sources for inferring values"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/ComponentHealer.md","moduleTitle":"ecs/ComponentHealer","source":"engine/ecs/ComponentHealer.js","import":"/engine/ecs/ComponentHealer.js","sourceHash":"5892b658a75b37005c40faa9665f9fe1d1e9ecd07625049c7a0f44927ab1de55","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/ComponentHealer.js#0001:getHealingLog","exportIndex":1,"name":"getHealingLog","kind":"function","signature":"getHealingLog()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/ComponentHealer.md","moduleTitle":"ecs/ComponentHealer","source":"engine/ecs/ComponentHealer.js","import":"/engine/ecs/ComponentHealer.js","sourceHash":"5892b658a75b37005c40faa9665f9fe1d1e9ecd07625049c7a0f44927ab1de55","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/ComponentHealer.js#0002:clearHealingLog","exportIndex":2,"name":"clearHealingLog","kind":"function","signature":"clearHealingLog()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/ComponentHealer.md","moduleTitle":"ecs/ComponentHealer","source":"engine/ecs/ComponentHealer.js","import":"/engine/ecs/ComponentHealer.js","sourceHash":"5892b658a75b37005c40faa9665f9fe1d1e9ecd07625049c7a0f44927ab1de55","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/ComponentHealer.js#0003:healComponent","exportIndex":3,"name":"healComponent","kind":"function","signature":"healComponent(componentName, data, ctx = new TriangulationContext()","summary":"Heal a component using schema and triangulation"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/ComponentHealer.md","moduleTitle":"ecs/ComponentHealer","source":"engine/ecs/ComponentHealer.js","import":"/engine/ecs/ComponentHealer.js","sourceHash":"5892b658a75b37005c40faa9665f9fe1d1e9ecd07625049c7a0f44927ab1de55","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/ComponentHealer.js#0004:healAndValidate","exportIndex":4,"name":"healAndValidate","kind":"function","signature":"healAndValidate(componentName, data, options = {})","summary":"Heal and validate component data before use This is the main entry point for the healing system"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/ComponentHealer.md","moduleTitle":"ecs/ComponentHealer","source":"engine/ecs/ComponentHealer.js","import":"/engine/ecs/ComponentHealer.js","sourceHash":"5892b658a75b37005c40faa9665f9fe1d1e9ecd07625049c7a0f44927ab1de55","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/ComponentHealer.js#0005:getHealingStats","exportIndex":5,"name":"getHealingStats","kind":"function","signature":"getHealingStats()","summary":"Get healing statistics with detailed metrics"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/ComponentHealer.md","moduleTitle":"ecs/ComponentHealer","source":"engine/ecs/ComponentHealer.js","import":"/engine/ecs/ComponentHealer.js","sourceHash":"5892b658a75b37005c40faa9665f9fe1d1e9ecd07625049c7a0f44927ab1de55","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/ComponentHealer.js#0006:batchHealComponents","exportIndex":6,"name":"batchHealComponents","kind":"function","signature":"batchHealComponents(components, sharedContext = {})","summary":"Batch heal multiple components efficiently"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/ComponentHealer.md","moduleTitle":"ecs/ComponentHealer","source":"engine/ecs/ComponentHealer.js","import":"/engine/ecs/ComponentHealer.js","sourceHash":"5892b658a75b37005c40faa9665f9fe1d1e9ecd07625049c7a0f44927ab1de55","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/ComponentHealer.js#0007:validateComponentData","exportIndex":7,"name":"validateComponentData","kind":"function","signature":"validateComponentData(componentName, data)","summary":"Validate component without healing - just check for issues"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntityManager.md","moduleTitle":"ecs/EntityManager","source":"engine/ecs/EntityManager.js","import":"/engine/ecs/EntityManager.js","sourceHash":"d36b9d8fc44ae88eb038d652d354eed6d75157a7d9a565023d0e74c8492c0deb","subsystem":"engine","recordType":"api-module","id":"module:engine/ecs/EntityManager.js","title":"ecs/EntityManager","summary":"Delete an entity with full cleanup of associated resources.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntityManager.md","moduleTitle":"ecs/EntityManager","source":"engine/ecs/EntityManager.js","import":"/engine/ecs/EntityManager.js","sourceHash":"d36b9d8fc44ae88eb038d652d354eed6d75157a7d9a565023d0e74c8492c0deb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntityManager.js#0000:deleteEntity","exportIndex":0,"name":"deleteEntity","kind":"function","signature":"deleteEntity(options)","summary":"Delete an entity with full cleanup of associated resources."}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntityManager.md","moduleTitle":"ecs/EntityManager","source":"engine/ecs/EntityManager.js","import":"/engine/ecs/EntityManager.js","sourceHash":"d36b9d8fc44ae88eb038d652d354eed6d75157a7d9a565023d0e74c8492c0deb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntityManager.js#0001:deleteSelectedEntity","exportIndex":1,"name":"deleteSelectedEntity","kind":"function","signature":"deleteSelectedEntity(ecsState, options)","summary":"Delete the currently selected entity."}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-module","id":"module:engine/ecs/EntitySchema.js","title":"ecs/EntitySchema","summary":"Normalize a single field value based on its type definition","exportCount":88}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0000:normalizeField","exportIndex":0,"name":"normalizeField","kind":"function","signature":"normalizeField(fieldDef, value)","summary":"Normalize a single field value based on its type definition"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0001:normalizeBySchema","exportIndex":1,"name":"normalizeBySchema","kind":"function","signature":"normalizeBySchema(schema, value)","summary":"Normalize a component value using its schema definition This is the primary function component files should use"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0002:getSchemaDefaults","exportIndex":2,"name":"getSchemaDefaults","kind":"function","signature":"getSchemaDefaults(schema)","summary":"Get default values from a schema"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0003:getCollisionMask","exportIndex":3,"name":"getCollisionMask","kind":"function","signature":"getCollisionMask(...layerNames)","summary":"Helper: Get collision layer mask from layer names"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0004:layersCollide","exportIndex":4,"name":"layersCollide","kind":"function","signature":"layersCollide(layerA, maskA, layerB, maskB)","summary":"Helper: Check if two layer masks collide"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0005:getPhysXFlagsForCollisionMode","exportIndex":5,"name":"getPhysXFlagsForCollisionMode","kind":"function","signature":"getPhysXFlagsForCollisionMode(mode)","summary":"Helper: Get collision mode flags for PhysX Returns { pairFlags, shapeFlags } for PhysX configuration"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0006:registerComponentSchema","exportIndex":6,"name":"registerComponentSchema","kind":"function","signature":"registerComponentSchema(schema)","summary":"Register a custom component schema at runtime Allows component files to auto-register their schemas"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0007:getRegisteredSchemaNames","exportIndex":7,"name":"getRegisteredSchemaNames","kind":"function","signature":"getRegisteredSchemaNames()","summary":"Get all registered component schema names"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0008:validateComponent","exportIndex":8,"name":"validateComponent","kind":"function","signature":"validateComponent(componentName, value)","summary":"Validate and normalize a component value against its schema"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0009:createDefaultComponent","exportIndex":9,"name":"createDefaultComponent","kind":"function","signature":"createDefaultComponent(componentName)","summary":"Create default component data"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0010:validateTransform","exportIndex":10,"name":"validateTransform","kind":"function","signature":"validateTransform(value)","summary":"Validate Transform component"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0011:validatePhysicsBody","exportIndex":11,"name":"validatePhysicsBody","kind":"function","signature":"validatePhysicsBody(value)","summary":"Validate PhysicsBody component"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0012:validateCollider","exportIndex":12,"name":"validateCollider","kind":"function","signature":"validateCollider(value)","summary":"Validate Collider component"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0013:validateLight","exportIndex":13,"name":"validateLight","kind":"function","signature":"validateLight(value)","summary":"Validate Light component"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0014:validateCamera","exportIndex":14,"name":"validateCamera","kind":"function","signature":"validateCamera(value)","summary":"Validate Camera component"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0015:validateRenderable","exportIndex":15,"name":"validateRenderable","kind":"function","signature":"validateRenderable(value)","summary":"Validate Renderable component"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0016:validateParticleEmitter","exportIndex":16,"name":"validateParticleEmitter","kind":"function","signature":"validateParticleEmitter(value)","summary":"Validate ParticleEmitter component"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0017:validateNavAgent","exportIndex":17,"name":"validateNavAgent","kind":"function","signature":"validateNavAgent(value)","summary":"Validate NavAgent component"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0018:validatePhysicsChain","exportIndex":18,"name":"validatePhysicsChain","kind":"function","signature":"validatePhysicsChain(value)","summary":"Validate PhysicsChain component"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0019:createDefaultTransform","exportIndex":19,"name":"createDefaultTransform","kind":"function","signature":"createDefaultTransform()","summary":"Create default Transform"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0020:createDefaultPhysicsBody","exportIndex":20,"name":"createDefaultPhysicsBody","kind":"function","signature":"createDefaultPhysicsBody()","summary":"Create default PhysicsBody"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0021:createDefaultCollider","exportIndex":21,"name":"createDefaultCollider","kind":"function","signature":"createDefaultCollider()","summary":"Create default Collider"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0022:createDefaultLight","exportIndex":22,"name":"createDefaultLight","kind":"function","signature":"createDefaultLight()","summary":"Create default Light"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0023:createDefaultCamera","exportIndex":23,"name":"createDefaultCamera","kind":"function","signature":"createDefaultCamera()","summary":"Create default Camera"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0024:createDefaultRenderable","exportIndex":24,"name":"createDefaultRenderable","kind":"function","signature":"createDefaultRenderable()","summary":"Create default Renderable"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0025:createDefaultPhysicsChain","exportIndex":25,"name":"createDefaultPhysicsChain","kind":"function","signature":"createDefaultPhysicsChain()","summary":"Create default PhysicsChain"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0026:createEmptyEntity","exportIndex":26,"name":"createEmptyEntity","kind":"function","signature":"createEmptyEntity(id)","summary":"Create empty entity"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0027:createEntitySnapshot","exportIndex":27,"name":"createEntitySnapshot","kind":"function","signature":"createEntitySnapshot(entityId, transform, physicsBody)","summary":"Create entity snapshot"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0028:createWorldSnapshot","exportIndex":28,"name":"createWorldSnapshot","kind":"function","signature":"createWorldSnapshot(time, frameIndex)","summary":"Create world snapshot"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0029:jsonReplacer","exportIndex":29,"name":"jsonReplacer","kind":"function","signature":"jsonReplacer(key, value)","summary":"JSON replacer function for special values Use with JSON.stringify(obj, jsonReplacer)"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0030:jsonReviver","exportIndex":30,"name":"jsonReviver","kind":"function","signature":"jsonReviver(key, value)","summary":"JSON reviver function for special values Use with JSON.parse(str, jsonReviver)"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0031:serializeComponent","exportIndex":31,"name":"serializeComponent","kind":"function","signature":"serializeComponent(componentName, value)","summary":"Serialize component to JSON-safe object"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0032:deserializeComponent","exportIndex":32,"name":"deserializeComponent","kind":"function","signature":"deserializeComponent(componentName, json, healingContext = null)","summary":"Deserialize component from JSON with optional self-healing"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0033:serializeEntitySnapshot","exportIndex":33,"name":"serializeEntitySnapshot","kind":"function","signature":"serializeEntitySnapshot(snapshot)","summary":"Serialize entity snapshot to JSON-safe object"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0034:serializeWorldSnapshot","exportIndex":34,"name":"serializeWorldSnapshot","kind":"function","signature":"serializeWorldSnapshot(snapshot)","summary":"Serialize world snapshot to JSON-safe object"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0035:deserializeWorldSnapshot","exportIndex":35,"name":"deserializeWorldSnapshot","kind":"function","signature":"deserializeWorldSnapshot(json)","summary":"Deserialize world snapshot from JSON"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0036:lerpVec3","exportIndex":36,"name":"lerpVec3","kind":"function","signature":"lerpVec3(a, b, t)","summary":"Interpolate between two vec3 values"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0037:lerpQuat","exportIndex":37,"name":"lerpQuat","kind":"function","signature":"lerpQuat(a, b, t)","summary":"Interpolate between two quaternions (simple lerp, not slerp)"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0038:interpolateTransform","exportIndex":38,"name":"interpolateTransform","kind":"function","signature":"interpolateTransform(a, b, t)","summary":"Interpolate Transform between two states"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0039:interpolatePhysicsBody","exportIndex":39,"name":"interpolatePhysicsBody","kind":"function","signature":"interpolatePhysicsBody(a, b, t)","summary":"Interpolate PhysicsBody between two states"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0040:interpolateEntitySnapshot","exportIndex":40,"name":"interpolateEntitySnapshot","kind":"function","signature":"interpolateEntitySnapshot(a, b, t)","summary":"Interpolate entity snapshot between two states"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0041:getColliderShapeId","exportIndex":41,"name":"getColliderShapeId","kind":"function","signature":"getColliderShapeId(shapeName)","summary":"Get collider shape ID from name"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0042:getColliderShapeName","exportIndex":42,"name":"getColliderShapeName","kind":"function","signature":"getColliderShapeName(shapeId)","summary":"Get collider shape name from ID"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0043:getLightTypeId","exportIndex":43,"name":"getLightTypeId","kind":"function","signature":"getLightTypeId(typeName)","summary":"Get light type ID from name"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0044:getLightTypeName","exportIndex":44,"name":"getLightTypeName","kind":"function","signature":"getLightTypeName(typeId)","summary":"Get light type name from ID"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0045:getCameraProjectionId","exportIndex":45,"name":"getCameraProjectionId","kind":"function","signature":"getCameraProjectionId(projName)","summary":"Get camera projection ID from name"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0046:getEmitterShapeId","exportIndex":46,"name":"getEmitterShapeId","kind":"function","signature":"getEmitterShapeId(shapeName)","summary":"Get emitter shape ID from name"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0047:FIELD_TYPES","exportIndex":47,"name":"FIELD_TYPES","kind":"constant","signature":"FIELD_TYPES","summary":"Common field types used across components"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0048:TRANSFORM_SCHEMA","exportIndex":48,"name":"TRANSFORM_SCHEMA","kind":"constant","signature":"TRANSFORM_SCHEMA","summary":"Transform component schema"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0049:PHYSICS_BODY_SCHEMA","exportIndex":49,"name":"PHYSICS_BODY_SCHEMA","kind":"constant","signature":"PHYSICS_BODY_SCHEMA","summary":"PhysicsBody component schema"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0050:COLLIDER_SHAPES","exportIndex":50,"name":"COLLIDER_SHAPES","kind":"constant","signature":"COLLIDER_SHAPES","summary":"Collider shapes"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0051:COLLIDER_SCHEMA","exportIndex":51,"name":"COLLIDER_SCHEMA","kind":"constant","signature":"COLLIDER_SCHEMA","summary":"Collider component schema"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0052:LIGHT_TYPES","exportIndex":52,"name":"LIGHT_TYPES","kind":"constant","signature":"LIGHT_TYPES","summary":"Light types"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0053:LIGHT_SCHEMA","exportIndex":53,"name":"LIGHT_SCHEMA","kind":"constant","signature":"LIGHT_SCHEMA","summary":"Light component schema"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0054:CAMERA_PROJECTIONS","exportIndex":54,"name":"CAMERA_PROJECTIONS","kind":"constant","signature":"CAMERA_PROJECTIONS","summary":"Camera projection types"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0055:CAMERA_MODES","exportIndex":55,"name":"CAMERA_MODES","kind":"constant","signature":"CAMERA_MODES","summary":"Camera modes"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0056:CAMERA_SCHEMA","exportIndex":56,"name":"CAMERA_SCHEMA","kind":"constant","signature":"CAMERA_SCHEMA","summary":"Camera component schema"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0057:RENDERABLE_SCHEMA","exportIndex":57,"name":"RENDERABLE_SCHEMA","kind":"constant","signature":"RENDERABLE_SCHEMA","summary":"Renderable component schema"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0058:EMITTER_SHAPES","exportIndex":58,"name":"EMITTER_SHAPES","kind":"constant","signature":"EMITTER_SHAPES","summary":"Emitter shapes for particle spawning"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0059:PARTICLE_EMITTER_SCHEMA","exportIndex":59,"name":"PARTICLE_EMITTER_SCHEMA","kind":"constant","signature":"PARTICLE_EMITTER_SCHEMA","summary":"ParticleEmitter component schema"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0060:NAV_AGENT_SCHEMA","exportIndex":60,"name":"NAV_AGENT_SCHEMA","kind":"constant","signature":"NAV_AGENT_SCHEMA","summary":"NavAgent component schema"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0061:CHAIN_BACKENDS","exportIndex":61,"name":"CHAIN_BACKENDS","kind":"constant","signature":"CHAIN_BACKENDS","summary":"Chain physics backends"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0062:ROPE_BACKENDS","exportIndex":62,"name":"ROPE_BACKENDS","kind":"constant","signature":"ROPE_BACKENDS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0063:PHYSICS_CHAIN_SCHEMA","exportIndex":63,"name":"PHYSICS_CHAIN_SCHEMA","kind":"constant","signature":"PHYSICS_CHAIN_SCHEMA","summary":"PhysicsChain component schema (unified: particle chains + rigid chains) mode: \"particle\" = PBD/GPU/PhysX particle chain (formerly PhysicsRope) mode: \"rigid\"    = rigid linked chain (formerly PhysicsChain)"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0064:PHYSICS_ROPE_SCHEMA","exportIndex":64,"name":"PHYSICS_ROPE_SCHEMA","kind":"constant","signature":"PHYSICS_ROPE_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0065:TWISTED_ROPE_SCHEMA","exportIndex":65,"name":"TWISTED_ROPE_SCHEMA","kind":"constant","signature":"TWISTED_ROPE_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0066:WELD_TYPES","exportIndex":66,"name":"WELD_TYPES","kind":"constant","signature":"WELD_TYPES","summary":"Weld constraint types"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0067:WELD_CONSTRAINT_SCHEMA","exportIndex":67,"name":"WELD_CONSTRAINT_SCHEMA","kind":"constant","signature":"WELD_CONSTRAINT_SCHEMA","summary":"WeldConstraint component schema - Defines a physics weld between two entities Welds merge collision shapes from child into parent, creating compound bodies. When saved: stores entity IDs and offset When loaded: recreates weld during physics init"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0068:COLLISION_MODES","exportIndex":68,"name":"COLLISION_MODES","kind":"constant","signature":"COLLISION_MODES","summary":"Collision modes - determines how physics engine handles collisions Maps to PhysX PxPairFlags and shape flags"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0069:COLLISION_LAYERS","exportIndex":69,"name":"COLLISION_LAYERS","kind":"constant","signature":"COLLISION_LAYERS","summary":"Predefined collision layers (bitmask) Each entity belongs to one layer (collisionLayer) and can collide with multiple layers (collisionMask)"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0070:ENTITY_FLAGS_SCHEMA","exportIndex":70,"name":"ENTITY_FLAGS_SCHEMA","kind":"constant","signature":"ENTITY_FLAGS_SCHEMA","summary":"EntityFlags component schema - Unified flags for collision, visibility, and editor behavior This component centralizes all entity interaction flags: - Collision: layer/mask filtering, collision mode (solid/trigger/noPush/ghost) - Visibility: render visibility, layer masks, editor-only visibility - Editor: pickable, selectable, locked, hidden in hierarchy - Physics: weldable, pushable, sleepable PhysX Integration: - collisionLayer → PxFilterData.word0 - collisionMask → PxFilterData.word1 - collisionMode → PxPairFlags (eSOLVE_CONTACT, eDETECT_DISCRETE_CONTACT, etc.)"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0071:COMPONENT_SCHEMAS","exportIndex":71,"name":"COMPONENT_SCHEMAS","kind":"constant","signature":"COMPONENT_SCHEMAS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0072:ENTITY_SCHEMA","exportIndex":72,"name":"ENTITY_SCHEMA","kind":"constant","signature":"ENTITY_SCHEMA","summary":"Complete entity schema (entity + components)"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0073:ENTITY_SNAPSHOT_SCHEMA","exportIndex":73,"name":"ENTITY_SNAPSHOT_SCHEMA","kind":"constant","signature":"ENTITY_SNAPSHOT_SCHEMA","summary":"Entity state snapshot (for rewind)"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0074:WORLD_SNAPSHOT_SCHEMA","exportIndex":74,"name":"WORLD_SNAPSHOT_SCHEMA","kind":"constant","signature":"WORLD_SNAPSHOT_SCHEMA","summary":"World snapshot schema"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0075:validatePhysicsRope","exportIndex":75,"name":"validatePhysicsRope","kind":"constant","signature":"validatePhysicsRope","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0076:createDefaultPhysicsRope","exportIndex":76,"name":"createDefaultPhysicsRope","kind":"constant","signature":"createDefaultPhysicsRope","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0077:normalizeAny","exportIndex":77,"name":"normalizeAny","kind":"re-export","signature":"normalizeAny","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0078:normalizeArray","exportIndex":78,"name":"normalizeArray","kind":"re-export","signature":"normalizeArray","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0079:normalizeBoolean","exportIndex":79,"name":"normalizeBoolean","kind":"re-export","signature":"normalizeBoolean","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0080:normalizeEnum","exportIndex":80,"name":"normalizeEnum","kind":"re-export","signature":"normalizeEnum","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0081:normalizeNumber","exportIndex":81,"name":"normalizeNumber","kind":"re-export","signature":"normalizeNumber","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0082:normalizeQuat","exportIndex":82,"name":"normalizeQuat","kind":"re-export","signature":"normalizeQuat","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0083:normalizeString","exportIndex":83,"name":"normalizeString","kind":"re-export","signature":"normalizeString","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0084:normalizeVec2","exportIndex":84,"name":"normalizeVec2","kind":"re-export","signature":"normalizeVec2","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0085:normalizeVec3","exportIndex":85,"name":"normalizeVec3","kind":"re-export","signature":"normalizeVec3","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0086:normalizeVec3Nullable","exportIndex":86,"name":"normalizeVec3Nullable","kind":"re-export","signature":"normalizeVec3Nullable","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/EntitySchema.md","moduleTitle":"ecs/EntitySchema","source":"engine/ecs/EntitySchema.js","import":"/engine/ecs/EntitySchema.js","sourceHash":"554650c58581f66ce473163c3ec1c21f06bbbf06f68026ee42daec73fcd3a198","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/EntitySchema.js#0087:normalizeVec4","exportIndex":87,"name":"normalizeVec4","kind":"re-export","signature":"normalizeVec4","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/SceneInit.md","moduleTitle":"ecs/SceneInit","source":"engine/ecs/SceneInit.js","import":"/engine/ecs/SceneInit.js","sourceHash":"0191ada9a32aa642d0a83fd27a463bad9cf914975b3f474e71712da07c79ed5b","subsystem":"engine","recordType":"api-module","id":"module:engine/ecs/SceneInit.js","title":"ecs/SceneInit","summary":"Initialize ECS world with physics sandbox scene.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/SceneInit.md","moduleTitle":"ecs/SceneInit","source":"engine/ecs/SceneInit.js","import":"/engine/ecs/SceneInit.js","sourceHash":"0191ada9a32aa642d0a83fd27a463bad9cf914975b3f474e71712da07c79ed5b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/SceneInit.js#0000:initEcsWorld","exportIndex":0,"name":"initEcsWorld","kind":"function","signature":"initEcsWorld(options)","summary":"Initialize ECS world with physics sandbox scene."}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/SceneInit.md","moduleTitle":"ecs/SceneInit","source":"engine/ecs/SceneInit.js","import":"/engine/ecs/SceneInit.js","sourceHash":"0191ada9a32aa642d0a83fd27a463bad9cf914975b3f474e71712da07c79ed5b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/SceneInit.js#0001:createMinimalWorld","exportIndex":1,"name":"createMinimalWorld","kind":"function","signature":"createMinimalWorld(options = {})","summary":"Create a minimal ECS world without physics sandbox."}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/Camera.md","moduleTitle":"ecs/components/Camera","source":"engine/ecs/components/Camera.js","import":"/engine/ecs/components/Camera.js","sourceHash":"2f2a6d26b5253b5e5b656832196f0824969b3d67ec83775279ebc18b79adb807","subsystem":"engine","recordType":"api-module","id":"module:engine/ecs/components/Camera.js","title":"ecs/components/Camera","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/Camera.md","moduleTitle":"ecs/components/Camera","source":"engine/ecs/components/Camera.js","import":"/engine/ecs/components/Camera.js","sourceHash":"2f2a6d26b5253b5e5b656832196f0824969b3d67ec83775279ebc18b79adb807","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/Camera.js#0000:createCamera","exportIndex":0,"name":"createCamera","kind":"function","signature":"createCamera(initial)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/Camera.md","moduleTitle":"ecs/components/Camera","source":"engine/ecs/components/Camera.js","import":"/engine/ecs/components/Camera.js","sourceHash":"2f2a6d26b5253b5e5b656832196f0824969b3d67ec83775279ebc18b79adb807","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/Camera.js#0001:CameraDefinition","exportIndex":1,"name":"CameraDefinition","kind":"constant","signature":"CameraDefinition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/Cloth.md","moduleTitle":"ecs/components/Cloth","source":"engine/ecs/components/Cloth.js","import":"/engine/ecs/components/Cloth.js","sourceHash":"62973a25300366a157b5b3902519e6b0036ffad000c1f4ff7b5afbf114d67ba0","subsystem":"engine","recordType":"api-module","id":"module:engine/ecs/components/Cloth.js","title":"ecs/components/Cloth","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/Cloth.md","moduleTitle":"ecs/components/Cloth","source":"engine/ecs/components/Cloth.js","import":"/engine/ecs/components/Cloth.js","sourceHash":"62973a25300366a157b5b3902519e6b0036ffad000c1f4ff7b5afbf114d67ba0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/Cloth.js#0000:createCloth","exportIndex":0,"name":"createCloth","kind":"function","signature":"createCloth(initial)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/Cloth.md","moduleTitle":"ecs/components/Cloth","source":"engine/ecs/components/Cloth.js","import":"/engine/ecs/components/Cloth.js","sourceHash":"62973a25300366a157b5b3902519e6b0036ffad000c1f4ff7b5afbf114d67ba0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/Cloth.js#0001:ClothDefinition","exportIndex":1,"name":"ClothDefinition","kind":"constant","signature":"ClothDefinition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/Collider.md","moduleTitle":"ecs/components/Collider","source":"engine/ecs/components/Collider.js","import":"/engine/ecs/components/Collider.js","sourceHash":"c338cb8e4f9b9c7c387c24e1a409342eae3e29be7774ce312adcf27f56d49741","subsystem":"engine","recordType":"api-module","id":"module:engine/ecs/components/Collider.js","title":"ecs/components/Collider","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/Collider.md","moduleTitle":"ecs/components/Collider","source":"engine/ecs/components/Collider.js","import":"/engine/ecs/components/Collider.js","sourceHash":"c338cb8e4f9b9c7c387c24e1a409342eae3e29be7774ce312adcf27f56d49741","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/Collider.js#0000:createCollider","exportIndex":0,"name":"createCollider","kind":"function","signature":"createCollider(initial)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/Collider.md","moduleTitle":"ecs/components/Collider","source":"engine/ecs/components/Collider.js","import":"/engine/ecs/components/Collider.js","sourceHash":"c338cb8e4f9b9c7c387c24e1a409342eae3e29be7774ce312adcf27f56d49741","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/Collider.js#0001:ColliderDefinition","exportIndex":1,"name":"ColliderDefinition","kind":"constant","signature":"ColliderDefinition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/ComponentRegistry.md","moduleTitle":"ecs/components/ComponentRegistry","source":"engine/ecs/components/ComponentRegistry.js","import":"/engine/ecs/components/ComponentRegistry.js","sourceHash":"f88996c3cb2d21f5588306dabd04fc3560b3f6f9830e28067ce95afe565365dc","subsystem":"engine","recordType":"api-module","id":"module:engine/ecs/components/ComponentRegistry.js","title":"ecs/components/ComponentRegistry","summary":"Get schema for a component from EntitySchema","exportCount":8}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/ComponentRegistry.md","moduleTitle":"ecs/components/ComponentRegistry","source":"engine/ecs/components/ComponentRegistry.js","import":"/engine/ecs/components/ComponentRegistry.js","sourceHash":"f88996c3cb2d21f5588306dabd04fc3560b3f6f9830e28067ce95afe565365dc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/ComponentRegistry.js#0000:defineComponentType","exportIndex":0,"name":"defineComponentType","kind":"function","signature":"defineComponentType(config)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/ComponentRegistry.md","moduleTitle":"ecs/components/ComponentRegistry","source":"engine/ecs/components/ComponentRegistry.js","import":"/engine/ecs/components/ComponentRegistry.js","sourceHash":"f88996c3cb2d21f5588306dabd04fc3560b3f6f9830e28067ce95afe565365dc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/ComponentRegistry.js#0001:getComponentDefinition","exportIndex":1,"name":"getComponentDefinition","kind":"function","signature":"getComponentDefinition(name)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/ComponentRegistry.md","moduleTitle":"ecs/components/ComponentRegistry","source":"engine/ecs/components/ComponentRegistry.js","import":"/engine/ecs/components/ComponentRegistry.js","sourceHash":"f88996c3cb2d21f5588306dabd04fc3560b3f6f9830e28067ce95afe565365dc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/ComponentRegistry.js#0002:listComponentDefinitions","exportIndex":2,"name":"listComponentDefinitions","kind":"function","signature":"listComponentDefinitions()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/ComponentRegistry.md","moduleTitle":"ecs/components/ComponentRegistry","source":"engine/ecs/components/ComponentRegistry.js","import":"/engine/ecs/components/ComponentRegistry.js","sourceHash":"f88996c3cb2d21f5588306dabd04fc3560b3f6f9830e28067ce95afe565365dc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/ComponentRegistry.js#0003:getComponentSchema","exportIndex":3,"name":"getComponentSchema","kind":"function","signature":"getComponentSchema(name)","summary":"Get schema for a component from EntitySchema"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/ComponentRegistry.md","moduleTitle":"ecs/components/ComponentRegistry","source":"engine/ecs/components/ComponentRegistry.js","import":"/engine/ecs/components/ComponentRegistry.js","sourceHash":"f88996c3cb2d21f5588306dabd04fc3560b3f6f9830e28067ce95afe565365dc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/ComponentRegistry.js#0004:validateComponentSchema","exportIndex":4,"name":"validateComponentSchema","kind":"function","signature":"validateComponentSchema(name, value)","summary":"Validate component using EntitySchema"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/ComponentRegistry.md","moduleTitle":"ecs/components/ComponentRegistry","source":"engine/ecs/components/ComponentRegistry.js","import":"/engine/ecs/components/ComponentRegistry.js","sourceHash":"f88996c3cb2d21f5588306dabd04fc3560b3f6f9830e28067ce95afe565365dc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/ComponentRegistry.js#0005:createDefaultFromSchema","exportIndex":5,"name":"createDefaultFromSchema","kind":"function","signature":"createDefaultFromSchema(name)","summary":"Create default component using EntitySchema"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/ComponentRegistry.md","moduleTitle":"ecs/components/ComponentRegistry","source":"engine/ecs/components/ComponentRegistry.js","import":"/engine/ecs/components/ComponentRegistry.js","sourceHash":"f88996c3cb2d21f5588306dabd04fc3560b3f6f9830e28067ce95afe565365dc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/ComponentRegistry.js#0006:getRegisteredSchemaNames","exportIndex":6,"name":"getRegisteredSchemaNames","kind":"re-export","signature":"getRegisteredSchemaNames","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/ComponentRegistry.md","moduleTitle":"ecs/components/ComponentRegistry","source":"engine/ecs/components/ComponentRegistry.js","import":"/engine/ecs/components/ComponentRegistry.js","sourceHash":"f88996c3cb2d21f5588306dabd04fc3560b3f6f9830e28067ce95afe565365dc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/ComponentRegistry.js#0007:registerComponentSchema","exportIndex":7,"name":"registerComponentSchema","kind":"re-export","signature":"registerComponentSchema","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/FluidSource.md","moduleTitle":"ecs/components/FluidSource","source":"engine/ecs/components/FluidSource.js","import":"/engine/ecs/components/FluidSource.js","sourceHash":"eefdb3ea87139b4f47c6b987485fbfe12eeda25bcb52b10401af6f8005430f85","subsystem":"engine","recordType":"api-module","id":"module:engine/ecs/components/FluidSource.js","title":"ecs/components/FluidSource","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/FluidSource.md","moduleTitle":"ecs/components/FluidSource","source":"engine/ecs/components/FluidSource.js","import":"/engine/ecs/components/FluidSource.js","sourceHash":"eefdb3ea87139b4f47c6b987485fbfe12eeda25bcb52b10401af6f8005430f85","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/FluidSource.js#0000:createFluidSource","exportIndex":0,"name":"createFluidSource","kind":"function","signature":"createFluidSource(initial)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/FluidSource.md","moduleTitle":"ecs/components/FluidSource","source":"engine/ecs/components/FluidSource.js","import":"/engine/ecs/components/FluidSource.js","sourceHash":"eefdb3ea87139b4f47c6b987485fbfe12eeda25bcb52b10401af6f8005430f85","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/FluidSource.js#0001:FluidSourceDefinition","exportIndex":1,"name":"FluidSourceDefinition","kind":"constant","signature":"FluidSourceDefinition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/FluidVolume.md","moduleTitle":"ecs/components/FluidVolume","source":"engine/ecs/components/FluidVolume.js","import":"/engine/ecs/components/FluidVolume.js","sourceHash":"7d050745aacf9674b5a893d6caeda7c1e137f871e8b89d3737d77e567d83d3da","subsystem":"engine","recordType":"api-module","id":"module:engine/ecs/components/FluidVolume.js","title":"ecs/components/FluidVolume","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/FluidVolume.md","moduleTitle":"ecs/components/FluidVolume","source":"engine/ecs/components/FluidVolume.js","import":"/engine/ecs/components/FluidVolume.js","sourceHash":"7d050745aacf9674b5a893d6caeda7c1e137f871e8b89d3737d77e567d83d3da","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/FluidVolume.js#0000:createFluidVolume","exportIndex":0,"name":"createFluidVolume","kind":"function","signature":"createFluidVolume(initial)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/FluidVolume.md","moduleTitle":"ecs/components/FluidVolume","source":"engine/ecs/components/FluidVolume.js","import":"/engine/ecs/components/FluidVolume.js","sourceHash":"7d050745aacf9674b5a893d6caeda7c1e137f871e8b89d3737d77e567d83d3da","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/FluidVolume.js#0001:FluidVolumeDefinition","exportIndex":1,"name":"FluidVolumeDefinition","kind":"constant","signature":"FluidVolumeDefinition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/Input.md","moduleTitle":"ecs/components/Input","source":"engine/ecs/components/Input.js","import":"/engine/ecs/components/Input.js","sourceHash":"f6c864bf3d36730e0023711553587b084569f50e9dd4cedfc98939e039b345ce","subsystem":"engine","recordType":"api-module","id":"module:engine/ecs/components/Input.js","title":"ecs/components/Input","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/Input.md","moduleTitle":"ecs/components/Input","source":"engine/ecs/components/Input.js","import":"/engine/ecs/components/Input.js","sourceHash":"f6c864bf3d36730e0023711553587b084569f50e9dd4cedfc98939e039b345ce","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/Input.js#0000:createInput","exportIndex":0,"name":"createInput","kind":"function","signature":"createInput(initial)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/Input.md","moduleTitle":"ecs/components/Input","source":"engine/ecs/components/Input.js","import":"/engine/ecs/components/Input.js","sourceHash":"f6c864bf3d36730e0023711553587b084569f50e9dd4cedfc98939e039b345ce","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/Input.js#0001:InputDefinition","exportIndex":1,"name":"InputDefinition","kind":"constant","signature":"InputDefinition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/Light.md","moduleTitle":"ecs/components/Light","source":"engine/ecs/components/Light.js","import":"/engine/ecs/components/Light.js","sourceHash":"deaea5b6fa7421475d414bde33193b7f366c7079db2057e20f3b69dcd07a077a","subsystem":"engine","recordType":"api-module","id":"module:engine/ecs/components/Light.js","title":"ecs/components/Light","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/Light.md","moduleTitle":"ecs/components/Light","source":"engine/ecs/components/Light.js","import":"/engine/ecs/components/Light.js","sourceHash":"deaea5b6fa7421475d414bde33193b7f366c7079db2057e20f3b69dcd07a077a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/Light.js#0000:createLight","exportIndex":0,"name":"createLight","kind":"function","signature":"createLight(initial)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/Light.md","moduleTitle":"ecs/components/Light","source":"engine/ecs/components/Light.js","import":"/engine/ecs/components/Light.js","sourceHash":"deaea5b6fa7421475d414bde33193b7f366c7079db2057e20f3b69dcd07a077a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/Light.js#0001:LightDefinition","exportIndex":1,"name":"LightDefinition","kind":"constant","signature":"LightDefinition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/NavAgent.md","moduleTitle":"ecs/components/NavAgent","source":"engine/ecs/components/NavAgent.js","import":"/engine/ecs/components/NavAgent.js","sourceHash":"8ee7a8b42071f6a987755569aaa90a6d00492ec4dad9b4221f05b15c3a704537","subsystem":"engine","recordType":"api-module","id":"module:engine/ecs/components/NavAgent.js","title":"ecs/components/NavAgent","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/NavAgent.md","moduleTitle":"ecs/components/NavAgent","source":"engine/ecs/components/NavAgent.js","import":"/engine/ecs/components/NavAgent.js","sourceHash":"8ee7a8b42071f6a987755569aaa90a6d00492ec4dad9b4221f05b15c3a704537","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/NavAgent.js#0000:createNavAgent","exportIndex":0,"name":"createNavAgent","kind":"function","signature":"createNavAgent(initial)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/NavAgent.md","moduleTitle":"ecs/components/NavAgent","source":"engine/ecs/components/NavAgent.js","import":"/engine/ecs/components/NavAgent.js","sourceHash":"8ee7a8b42071f6a987755569aaa90a6d00492ec4dad9b4221f05b15c3a704537","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/NavAgent.js#0001:NavAgentDefinition","exportIndex":1,"name":"NavAgentDefinition","kind":"constant","signature":"NavAgentDefinition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/NetReplicated.md","moduleTitle":"ecs/components/NetReplicated","source":"engine/ecs/components/NetReplicated.js","import":"/engine/ecs/components/NetReplicated.js","sourceHash":"ff2cc3c46e8016dd5f0830eabeb787529691e4400a6bac83707a38e1cfab4ddb","subsystem":"engine","recordType":"api-module","id":"module:engine/ecs/components/NetReplicated.js","title":"ecs/components/NetReplicated","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/NetReplicated.md","moduleTitle":"ecs/components/NetReplicated","source":"engine/ecs/components/NetReplicated.js","import":"/engine/ecs/components/NetReplicated.js","sourceHash":"ff2cc3c46e8016dd5f0830eabeb787529691e4400a6bac83707a38e1cfab4ddb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/NetReplicated.js#0000:createNetReplicated","exportIndex":0,"name":"createNetReplicated","kind":"function","signature":"createNetReplicated(initial)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/NetReplicated.md","moduleTitle":"ecs/components/NetReplicated","source":"engine/ecs/components/NetReplicated.js","import":"/engine/ecs/components/NetReplicated.js","sourceHash":"ff2cc3c46e8016dd5f0830eabeb787529691e4400a6bac83707a38e1cfab4ddb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/NetReplicated.js#0001:NetReplicatedDefinition","exportIndex":1,"name":"NetReplicatedDefinition","kind":"constant","signature":"NetReplicatedDefinition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/ParticleEmitter.md","moduleTitle":"ecs/components/ParticleEmitter","source":"engine/ecs/components/ParticleEmitter.js","import":"/engine/ecs/components/ParticleEmitter.js","sourceHash":"495091be90a49587d51209227d922ab28403d0ae883333f8ea2cacb0401adf72","subsystem":"engine","recordType":"api-module","id":"module:engine/ecs/components/ParticleEmitter.js","title":"ecs/components/ParticleEmitter","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/ParticleEmitter.md","moduleTitle":"ecs/components/ParticleEmitter","source":"engine/ecs/components/ParticleEmitter.js","import":"/engine/ecs/components/ParticleEmitter.js","sourceHash":"495091be90a49587d51209227d922ab28403d0ae883333f8ea2cacb0401adf72","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/ParticleEmitter.js#0000:createParticleEmitter","exportIndex":0,"name":"createParticleEmitter","kind":"function","signature":"createParticleEmitter(initial)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/ParticleEmitter.md","moduleTitle":"ecs/components/ParticleEmitter","source":"engine/ecs/components/ParticleEmitter.js","import":"/engine/ecs/components/ParticleEmitter.js","sourceHash":"495091be90a49587d51209227d922ab28403d0ae883333f8ea2cacb0401adf72","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/ParticleEmitter.js#0001:ParticleEmitterDefinition","exportIndex":1,"name":"ParticleEmitterDefinition","kind":"constant","signature":"ParticleEmitterDefinition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/ParticleField.md","moduleTitle":"ecs/components/ParticleField","source":"engine/ecs/components/ParticleField.js","import":"/engine/ecs/components/ParticleField.js","sourceHash":"9e15856f40893f783354ed9f609d9e3368ed6a62c22e768958acc77ceb273f2f","subsystem":"engine","recordType":"api-module","id":"module:engine/ecs/components/ParticleField.js","title":"ecs/components/ParticleField","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/ParticleField.md","moduleTitle":"ecs/components/ParticleField","source":"engine/ecs/components/ParticleField.js","import":"/engine/ecs/components/ParticleField.js","sourceHash":"9e15856f40893f783354ed9f609d9e3368ed6a62c22e768958acc77ceb273f2f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/ParticleField.js#0000:createParticleField","exportIndex":0,"name":"createParticleField","kind":"function","signature":"createParticleField(initial)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/ParticleField.md","moduleTitle":"ecs/components/ParticleField","source":"engine/ecs/components/ParticleField.js","import":"/engine/ecs/components/ParticleField.js","sourceHash":"9e15856f40893f783354ed9f609d9e3368ed6a62c22e768958acc77ceb273f2f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/ParticleField.js#0001:ParticleFieldDefinition","exportIndex":1,"name":"ParticleFieldDefinition","kind":"constant","signature":"ParticleFieldDefinition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/PhysicalMaterial.md","moduleTitle":"ecs/components/PhysicalMaterial","source":"engine/ecs/components/PhysicalMaterial.js","import":"/engine/ecs/components/PhysicalMaterial.js","sourceHash":"51912f01e27b4bac788677bba12d33502dd95c6be0496d5ea164c5fe2d8966ff","subsystem":"engine","recordType":"api-module","id":"module:engine/ecs/components/PhysicalMaterial.js","title":"ecs/components/PhysicalMaterial","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/PhysicalMaterial.md","moduleTitle":"ecs/components/PhysicalMaterial","source":"engine/ecs/components/PhysicalMaterial.js","import":"/engine/ecs/components/PhysicalMaterial.js","sourceHash":"51912f01e27b4bac788677bba12d33502dd95c6be0496d5ea164c5fe2d8966ff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/PhysicalMaterial.js#0000:createPhysicalMaterialComponent","exportIndex":0,"name":"createPhysicalMaterialComponent","kind":"function","signature":"createPhysicalMaterialComponent(initial)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/PhysicalMaterial.md","moduleTitle":"ecs/components/PhysicalMaterial","source":"engine/ecs/components/PhysicalMaterial.js","import":"/engine/ecs/components/PhysicalMaterial.js","sourceHash":"51912f01e27b4bac788677bba12d33502dd95c6be0496d5ea164c5fe2d8966ff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/PhysicalMaterial.js#0001:PhysicalMaterialDefinition","exportIndex":1,"name":"PhysicalMaterialDefinition","kind":"constant","signature":"PhysicalMaterialDefinition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/PhysicsBody.md","moduleTitle":"ecs/components/PhysicsBody","source":"engine/ecs/components/PhysicsBody.js","import":"/engine/ecs/components/PhysicsBody.js","sourceHash":"3294d24e457177c44d3396fa1ca4a76a8e634ade0327d7d9d9fb8acf171601c1","subsystem":"engine","recordType":"api-module","id":"module:engine/ecs/components/PhysicsBody.js","title":"ecs/components/PhysicsBody","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/PhysicsBody.md","moduleTitle":"ecs/components/PhysicsBody","source":"engine/ecs/components/PhysicsBody.js","import":"/engine/ecs/components/PhysicsBody.js","sourceHash":"3294d24e457177c44d3396fa1ca4a76a8e634ade0327d7d9d9fb8acf171601c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/PhysicsBody.js#0000:createPhysicsBody","exportIndex":0,"name":"createPhysicsBody","kind":"function","signature":"createPhysicsBody(initial)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/PhysicsBody.md","moduleTitle":"ecs/components/PhysicsBody","source":"engine/ecs/components/PhysicsBody.js","import":"/engine/ecs/components/PhysicsBody.js","sourceHash":"3294d24e457177c44d3396fa1ca4a76a8e634ade0327d7d9d9fb8acf171601c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/PhysicsBody.js#0001:PhysicsBodyDefinition","exportIndex":1,"name":"PhysicsBodyDefinition","kind":"constant","signature":"PhysicsBodyDefinition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/PhysicsChain.md","moduleTitle":"ecs/components/PhysicsChain","source":"engine/ecs/components/PhysicsChain.js","import":"/engine/ecs/components/PhysicsChain.js","sourceHash":"9b76c6dfb9e056b407c029cfc724ee25e0cd436f53ed38b944ac30d3f51e9860","subsystem":"engine","recordType":"api-module","id":"module:engine/ecs/components/PhysicsChain.js","title":"ecs/components/PhysicsChain","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/PhysicsChain.md","moduleTitle":"ecs/components/PhysicsChain","source":"engine/ecs/components/PhysicsChain.js","import":"/engine/ecs/components/PhysicsChain.js","sourceHash":"9b76c6dfb9e056b407c029cfc724ee25e0cd436f53ed38b944ac30d3f51e9860","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/PhysicsChain.js#0000:createPhysicsChain","exportIndex":0,"name":"createPhysicsChain","kind":"function","signature":"createPhysicsChain(initial)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/PhysicsChain.md","moduleTitle":"ecs/components/PhysicsChain","source":"engine/ecs/components/PhysicsChain.js","import":"/engine/ecs/components/PhysicsChain.js","sourceHash":"9b76c6dfb9e056b407c029cfc724ee25e0cd436f53ed38b944ac30d3f51e9860","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/PhysicsChain.js#0001:PhysicsChainDefinition","exportIndex":1,"name":"PhysicsChainDefinition","kind":"constant","signature":"PhysicsChainDefinition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/PhysicsCloth.md","moduleTitle":"ecs/components/PhysicsCloth","source":"engine/ecs/components/PhysicsCloth.js","import":"/engine/ecs/components/PhysicsCloth.js","sourceHash":"b3c742066e869e8840ea02a8f779a4ea95ee395cd8ca85de679923878a0e2f24","subsystem":"engine","recordType":"api-module","id":"module:engine/ecs/components/PhysicsCloth.js","title":"ecs/components/PhysicsCloth","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/PhysicsCloth.md","moduleTitle":"ecs/components/PhysicsCloth","source":"engine/ecs/components/PhysicsCloth.js","import":"/engine/ecs/components/PhysicsCloth.js","sourceHash":"b3c742066e869e8840ea02a8f779a4ea95ee395cd8ca85de679923878a0e2f24","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/PhysicsCloth.js#0000:createPhysicsCloth","exportIndex":0,"name":"createPhysicsCloth","kind":"function","signature":"createPhysicsCloth(initial)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/PhysicsCloth.md","moduleTitle":"ecs/components/PhysicsCloth","source":"engine/ecs/components/PhysicsCloth.js","import":"/engine/ecs/components/PhysicsCloth.js","sourceHash":"b3c742066e869e8840ea02a8f779a4ea95ee395cd8ca85de679923878a0e2f24","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/PhysicsCloth.js#0001:PhysicsClothDefinition","exportIndex":1,"name":"PhysicsClothDefinition","kind":"constant","signature":"PhysicsClothDefinition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/PhysicsHair.md","moduleTitle":"ecs/components/PhysicsHair","source":"engine/ecs/components/PhysicsHair.js","import":"/engine/ecs/components/PhysicsHair.js","sourceHash":"9d5fbf8828b48359016961f0d4d32004f81d9eb0287ba4cb593abde420011c69","subsystem":"engine","recordType":"api-module","id":"module:engine/ecs/components/PhysicsHair.js","title":"ecs/components/PhysicsHair","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/PhysicsHair.md","moduleTitle":"ecs/components/PhysicsHair","source":"engine/ecs/components/PhysicsHair.js","import":"/engine/ecs/components/PhysicsHair.js","sourceHash":"9d5fbf8828b48359016961f0d4d32004f81d9eb0287ba4cb593abde420011c69","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/PhysicsHair.js#0000:createPhysicsHair","exportIndex":0,"name":"createPhysicsHair","kind":"function","signature":"createPhysicsHair(initial)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/PhysicsHair.md","moduleTitle":"ecs/components/PhysicsHair","source":"engine/ecs/components/PhysicsHair.js","import":"/engine/ecs/components/PhysicsHair.js","sourceHash":"9d5fbf8828b48359016961f0d4d32004f81d9eb0287ba4cb593abde420011c69","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/PhysicsHair.js#0001:PhysicsHairDefinition","exportIndex":1,"name":"PhysicsHairDefinition","kind":"constant","signature":"PhysicsHairDefinition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/PhysicsRope.md","moduleTitle":"ecs/components/PhysicsRope","source":"engine/ecs/components/PhysicsRope.js","import":"/engine/ecs/components/PhysicsRope.js","sourceHash":"c68804de3d9f98c828a86e540ae40258e731d27e399795b87a42ac4f6b3e0b1d","subsystem":"engine","recordType":"api-module","id":"module:engine/ecs/components/PhysicsRope.js","title":"ecs/components/PhysicsRope","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/PhysicsRope.md","moduleTitle":"ecs/components/PhysicsRope","source":"engine/ecs/components/PhysicsRope.js","import":"/engine/ecs/components/PhysicsRope.js","sourceHash":"c68804de3d9f98c828a86e540ae40258e731d27e399795b87a42ac4f6b3e0b1d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/PhysicsRope.js#0000:createPhysicsRope","exportIndex":0,"name":"createPhysicsRope","kind":"function","signature":"createPhysicsRope(initial)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/PhysicsRope.md","moduleTitle":"ecs/components/PhysicsRope","source":"engine/ecs/components/PhysicsRope.js","import":"/engine/ecs/components/PhysicsRope.js","sourceHash":"c68804de3d9f98c828a86e540ae40258e731d27e399795b87a42ac4f6b3e0b1d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/PhysicsRope.js#0001:PhysicsRopeDefinition","exportIndex":1,"name":"PhysicsRopeDefinition","kind":"constant","signature":"PhysicsRopeDefinition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/PhysicsSoftBody.md","moduleTitle":"ecs/components/PhysicsSoftBody","source":"engine/ecs/components/PhysicsSoftBody.js","import":"/engine/ecs/components/PhysicsSoftBody.js","sourceHash":"7ac7d8e6aa7fef86b46b2d38daf5b0271f8be612c60743c6f5745a04bf56dfa1","subsystem":"engine","recordType":"api-module","id":"module:engine/ecs/components/PhysicsSoftBody.js","title":"ecs/components/PhysicsSoftBody","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/PhysicsSoftBody.md","moduleTitle":"ecs/components/PhysicsSoftBody","source":"engine/ecs/components/PhysicsSoftBody.js","import":"/engine/ecs/components/PhysicsSoftBody.js","sourceHash":"7ac7d8e6aa7fef86b46b2d38daf5b0271f8be612c60743c6f5745a04bf56dfa1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/PhysicsSoftBody.js#0000:createPhysicsSoftBody","exportIndex":0,"name":"createPhysicsSoftBody","kind":"function","signature":"createPhysicsSoftBody(initial)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/PhysicsSoftBody.md","moduleTitle":"ecs/components/PhysicsSoftBody","source":"engine/ecs/components/PhysicsSoftBody.js","import":"/engine/ecs/components/PhysicsSoftBody.js","sourceHash":"7ac7d8e6aa7fef86b46b2d38daf5b0271f8be612c60743c6f5745a04bf56dfa1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/PhysicsSoftBody.js#0001:PhysicsSoftBodyDefinition","exportIndex":1,"name":"PhysicsSoftBodyDefinition","kind":"constant","signature":"PhysicsSoftBodyDefinition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/PhysicsWire.md","moduleTitle":"ecs/components/PhysicsWire","source":"engine/ecs/components/PhysicsWire.js","import":"/engine/ecs/components/PhysicsWire.js","sourceHash":"cef57e533c2d76bfb1c9395af163a0b9fad50b905a339050b5f0e79cd6ff01fb","subsystem":"engine","recordType":"api-module","id":"module:engine/ecs/components/PhysicsWire.js","title":"ecs/components/PhysicsWire","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/PhysicsWire.md","moduleTitle":"ecs/components/PhysicsWire","source":"engine/ecs/components/PhysicsWire.js","import":"/engine/ecs/components/PhysicsWire.js","sourceHash":"cef57e533c2d76bfb1c9395af163a0b9fad50b905a339050b5f0e79cd6ff01fb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/PhysicsWire.js#0000:createPhysicsWire","exportIndex":0,"name":"createPhysicsWire","kind":"function","signature":"createPhysicsWire(initial)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/PhysicsWire.md","moduleTitle":"ecs/components/PhysicsWire","source":"engine/ecs/components/PhysicsWire.js","import":"/engine/ecs/components/PhysicsWire.js","sourceHash":"cef57e533c2d76bfb1c9395af163a0b9fad50b905a339050b5f0e79cd6ff01fb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/PhysicsWire.js#0001:PhysicsWireDefinition","exportIndex":1,"name":"PhysicsWireDefinition","kind":"constant","signature":"PhysicsWireDefinition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/Renderable.md","moduleTitle":"ecs/components/Renderable","source":"engine/ecs/components/Renderable.js","import":"/engine/ecs/components/Renderable.js","sourceHash":"21bb42c82a3f13aea4c29f4d96e388154105be43d8117b5218365bfea7145b24","subsystem":"engine","recordType":"api-module","id":"module:engine/ecs/components/Renderable.js","title":"ecs/components/Renderable","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/Renderable.md","moduleTitle":"ecs/components/Renderable","source":"engine/ecs/components/Renderable.js","import":"/engine/ecs/components/Renderable.js","sourceHash":"21bb42c82a3f13aea4c29f4d96e388154105be43d8117b5218365bfea7145b24","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/Renderable.js#0000:createRenderable","exportIndex":0,"name":"createRenderable","kind":"function","signature":"createRenderable(initial)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/Renderable.md","moduleTitle":"ecs/components/Renderable","source":"engine/ecs/components/Renderable.js","import":"/engine/ecs/components/Renderable.js","sourceHash":"21bb42c82a3f13aea4c29f4d96e388154105be43d8117b5218365bfea7145b24","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/Renderable.js#0001:RenderableDefinition","exportIndex":1,"name":"RenderableDefinition","kind":"constant","signature":"RenderableDefinition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/StickmanRagdoll.md","moduleTitle":"ecs/components/StickmanRagdoll","source":"engine/ecs/components/StickmanRagdoll.js","import":"/engine/ecs/components/StickmanRagdoll.js","sourceHash":"e18b2bf47447bdc3ec3152956b2226b6079b10e9c6bd228af186dcb4db32a98b","subsystem":"engine","recordType":"api-module","id":"module:engine/ecs/components/StickmanRagdoll.js","title":"ecs/components/StickmanRagdoll","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/StickmanRagdoll.md","moduleTitle":"ecs/components/StickmanRagdoll","source":"engine/ecs/components/StickmanRagdoll.js","import":"/engine/ecs/components/StickmanRagdoll.js","sourceHash":"e18b2bf47447bdc3ec3152956b2226b6079b10e9c6bd228af186dcb4db32a98b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/StickmanRagdoll.js#0000:createStickmanRagdoll","exportIndex":0,"name":"createStickmanRagdoll","kind":"function","signature":"createStickmanRagdoll(initial)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/StickmanRagdoll.md","moduleTitle":"ecs/components/StickmanRagdoll","source":"engine/ecs/components/StickmanRagdoll.js","import":"/engine/ecs/components/StickmanRagdoll.js","sourceHash":"e18b2bf47447bdc3ec3152956b2226b6079b10e9c6bd228af186dcb4db32a98b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/StickmanRagdoll.js#0001:StickmanRagdollDefinition","exportIndex":1,"name":"StickmanRagdollDefinition","kind":"constant","signature":"StickmanRagdollDefinition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/Transform.md","moduleTitle":"ecs/components/Transform","source":"engine/ecs/components/Transform.js","import":"/engine/ecs/components/Transform.js","sourceHash":"61e9493e103a2ec9a4a4cda8b4a6c5ee2134114dd4a458bd8a8953863f880f54","subsystem":"engine","recordType":"api-module","id":"module:engine/ecs/components/Transform.js","title":"ecs/components/Transform","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/Transform.md","moduleTitle":"ecs/components/Transform","source":"engine/ecs/components/Transform.js","import":"/engine/ecs/components/Transform.js","sourceHash":"61e9493e103a2ec9a4a4cda8b4a6c5ee2134114dd4a458bd8a8953863f880f54","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/Transform.js#0000:createTransform","exportIndex":0,"name":"createTransform","kind":"function","signature":"createTransform(initial)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/Transform.md","moduleTitle":"ecs/components/Transform","source":"engine/ecs/components/Transform.js","import":"/engine/ecs/components/Transform.js","sourceHash":"61e9493e103a2ec9a4a4cda8b4a6c5ee2134114dd4a458bd8a8953863f880f54","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/Transform.js#0001:TransformDefinition","exportIndex":1,"name":"TransformDefinition","kind":"constant","signature":"TransformDefinition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/TwistedRope.md","moduleTitle":"ecs/components/TwistedRope","source":"engine/ecs/components/TwistedRope.js","import":"/engine/ecs/components/TwistedRope.js","sourceHash":"50328d830d5a1de0da01bdfe04994abe82323434d05c687abd39689c3b7bb5fc","subsystem":"engine","recordType":"api-module","id":"module:engine/ecs/components/TwistedRope.js","title":"ecs/components/TwistedRope","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/TwistedRope.md","moduleTitle":"ecs/components/TwistedRope","source":"engine/ecs/components/TwistedRope.js","import":"/engine/ecs/components/TwistedRope.js","sourceHash":"50328d830d5a1de0da01bdfe04994abe82323434d05c687abd39689c3b7bb5fc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/TwistedRope.js#0000:TwistedRopeDefinition","exportIndex":0,"name":"TwistedRopeDefinition","kind":"constant","signature":"TwistedRopeDefinition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/WeldConstraint.md","moduleTitle":"ecs/components/WeldConstraint","source":"engine/ecs/components/WeldConstraint.js","import":"/engine/ecs/components/WeldConstraint.js","sourceHash":"e6cd106c78dc16269dac6788d2edf04376b1cdfa93609b9c4fb8156852394d40","subsystem":"engine","recordType":"api-module","id":"module:engine/ecs/components/WeldConstraint.js","title":"ecs/components/WeldConstraint","summary":"Create a new WeldConstraint component","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/WeldConstraint.md","moduleTitle":"ecs/components/WeldConstraint","source":"engine/ecs/components/WeldConstraint.js","import":"/engine/ecs/components/WeldConstraint.js","sourceHash":"e6cd106c78dc16269dac6788d2edf04376b1cdfa93609b9c4fb8156852394d40","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/WeldConstraint.js#0000:createWeldConstraint","exportIndex":0,"name":"createWeldConstraint","kind":"function","signature":"createWeldConstraint(initial)","summary":"Create a new WeldConstraint component"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/WeldConstraint.md","moduleTitle":"ecs/components/WeldConstraint","source":"engine/ecs/components/WeldConstraint.js","import":"/engine/ecs/components/WeldConstraint.js","sourceHash":"e6cd106c78dc16269dac6788d2edf04376b1cdfa93609b9c4fb8156852394d40","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/WeldConstraint.js#0001:createWeld","exportIndex":1,"name":"createWeld","kind":"function","signature":"createWeld(parentEntityId, childEntityId, options = {})","summary":"Create a weld constraint between two entities"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/WeldConstraint.md","moduleTitle":"ecs/components/WeldConstraint","source":"engine/ecs/components/WeldConstraint.js","import":"/engine/ecs/components/WeldConstraint.js","sourceHash":"e6cd106c78dc16269dac6788d2edf04376b1cdfa93609b9c4fb8156852394d40","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/WeldConstraint.js#0002:isValidWeld","exportIndex":2,"name":"isValidWeld","kind":"function","signature":"isValidWeld(weld)","summary":"Check if a weld constraint is valid"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/WeldConstraint.md","moduleTitle":"ecs/components/WeldConstraint","source":"engine/ecs/components/WeldConstraint.js","import":"/engine/ecs/components/WeldConstraint.js","sourceHash":"e6cd106c78dc16269dac6788d2edf04376b1cdfa93609b9c4fb8156852394d40","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/WeldConstraint.js#0003:breakWeld","exportIndex":3,"name":"breakWeld","kind":"function","signature":"breakWeld(weld)","summary":"Mark a weld as broken"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/components/WeldConstraint.md","moduleTitle":"ecs/components/WeldConstraint","source":"engine/ecs/components/WeldConstraint.js","import":"/engine/ecs/components/WeldConstraint.js","sourceHash":"e6cd106c78dc16269dac6788d2edf04376b1cdfa93609b9c4fb8156852394d40","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/components/WeldConstraint.js#0004:WeldConstraintDefinition","exportIndex":4,"name":"WeldConstraintDefinition","kind":"constant","signature":"WeldConstraintDefinition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/prefabs/PrefabRegistry.md","moduleTitle":"ecs/prefabs/PrefabRegistry","source":"engine/ecs/prefabs/PrefabRegistry.js","import":"/engine/ecs/prefabs/PrefabRegistry.js","sourceHash":"8feaa467513f1ff392a44a9152aabd1843aa293222df835d97bcc64b2dafd914","subsystem":"engine","recordType":"api-module","id":"module:engine/ecs/prefabs/PrefabRegistry.js","title":"ecs/prefabs/PrefabRegistry","summary":"PrefabRegistry - Runtime prefab system for entity templates Prefabs define reusable entity configurations including: - Default components - Geometry data - Collider configuration - Visual properties The editor uses spawnables which extend this with spawn UI logic. Runtime uses prefabs directly for instantiation.","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/prefabs/PrefabRegistry.md","moduleTitle":"ecs/prefabs/PrefabRegistry","source":"engine/ecs/prefabs/PrefabRegistry.js","import":"/engine/ecs/prefabs/PrefabRegistry.js","sourceHash":"8feaa467513f1ff392a44a9152aabd1843aa293222df835d97bcc64b2dafd914","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/prefabs/PrefabRegistry.js#0000:registerPrefab","exportIndex":0,"name":"registerPrefab","kind":"function","signature":"registerPrefab(id, definition)","summary":"Register a prefab"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/prefabs/PrefabRegistry.md","moduleTitle":"ecs/prefabs/PrefabRegistry","source":"engine/ecs/prefabs/PrefabRegistry.js","import":"/engine/ecs/prefabs/PrefabRegistry.js","sourceHash":"8feaa467513f1ff392a44a9152aabd1843aa293222df835d97bcc64b2dafd914","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/prefabs/PrefabRegistry.js#0001:getPrefab","exportIndex":1,"name":"getPrefab","kind":"function","signature":"getPrefab(id)","summary":"Get a prefab by ID"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/prefabs/PrefabRegistry.md","moduleTitle":"ecs/prefabs/PrefabRegistry","source":"engine/ecs/prefabs/PrefabRegistry.js","import":"/engine/ecs/prefabs/PrefabRegistry.js","sourceHash":"8feaa467513f1ff392a44a9152aabd1843aa293222df835d97bcc64b2dafd914","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/prefabs/PrefabRegistry.js#0002:getAllPrefabs","exportIndex":2,"name":"getAllPrefabs","kind":"function","signature":"getAllPrefabs()","summary":"Get all registered prefabs"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/prefabs/PrefabRegistry.md","moduleTitle":"ecs/prefabs/PrefabRegistry","source":"engine/ecs/prefabs/PrefabRegistry.js","import":"/engine/ecs/prefabs/PrefabRegistry.js","sourceHash":"8feaa467513f1ff392a44a9152aabd1843aa293222df835d97bcc64b2dafd914","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/prefabs/PrefabRegistry.js#0003:getPrefabsByCategory","exportIndex":3,"name":"getPrefabsByCategory","kind":"function","signature":"getPrefabsByCategory(category)","summary":"Get prefabs by category"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/prefabs/PrefabRegistry.md","moduleTitle":"ecs/prefabs/PrefabRegistry","source":"engine/ecs/prefabs/PrefabRegistry.js","import":"/engine/ecs/prefabs/PrefabRegistry.js","sourceHash":"8feaa467513f1ff392a44a9152aabd1843aa293222df835d97bcc64b2dafd914","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/prefabs/PrefabRegistry.js#0004:instantiatePrefab","exportIndex":4,"name":"instantiatePrefab","kind":"function","signature":"instantiatePrefab(id, overrides = {})","summary":"Instantiate a prefab into components"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/prefabs/PrefabRegistry.md","moduleTitle":"ecs/prefabs/PrefabRegistry","source":"engine/ecs/prefabs/PrefabRegistry.js","import":"/engine/ecs/prefabs/PrefabRegistry.js","sourceHash":"8feaa467513f1ff392a44a9152aabd1843aa293222df835d97bcc64b2dafd914","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/prefabs/PrefabRegistry.js#0005:clearPrefabs","exportIndex":5,"name":"clearPrefabs","kind":"function","signature":"clearPrefabs()","summary":"Clear all prefabs (for testing)"}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/prefabs/index.md","moduleTitle":"ecs/prefabs/index","source":"engine/ecs/prefabs/index.js","import":"/engine/ecs/prefabs/index.js","sourceHash":"5a267fb89a0a9ced984bde99b265cfa48a9d41aa1d626faa99652438157f69ca","subsystem":"engine","recordType":"api-module","id":"module:engine/ecs/prefabs/index.js","title":"ecs/prefabs/index","summary":"Prefab System - Runtime entity templates","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/prefabs/index.md","moduleTitle":"ecs/prefabs/index","source":"engine/ecs/prefabs/index.js","import":"/engine/ecs/prefabs/index.js","sourceHash":"5a267fb89a0a9ced984bde99b265cfa48a9d41aa1d626faa99652438157f69ca","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/prefabs/index.js#0000:clearPrefabs","exportIndex":0,"name":"clearPrefabs","kind":"re-export","signature":"clearPrefabs","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/prefabs/index.md","moduleTitle":"ecs/prefabs/index","source":"engine/ecs/prefabs/index.js","import":"/engine/ecs/prefabs/index.js","sourceHash":"5a267fb89a0a9ced984bde99b265cfa48a9d41aa1d626faa99652438157f69ca","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/prefabs/index.js#0001:getAllPrefabs","exportIndex":1,"name":"getAllPrefabs","kind":"re-export","signature":"getAllPrefabs","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/prefabs/index.md","moduleTitle":"ecs/prefabs/index","source":"engine/ecs/prefabs/index.js","import":"/engine/ecs/prefabs/index.js","sourceHash":"5a267fb89a0a9ced984bde99b265cfa48a9d41aa1d626faa99652438157f69ca","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/prefabs/index.js#0002:getPrefab","exportIndex":2,"name":"getPrefab","kind":"re-export","signature":"getPrefab","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/prefabs/index.md","moduleTitle":"ecs/prefabs/index","source":"engine/ecs/prefabs/index.js","import":"/engine/ecs/prefabs/index.js","sourceHash":"5a267fb89a0a9ced984bde99b265cfa48a9d41aa1d626faa99652438157f69ca","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/prefabs/index.js#0003:getPrefabsByCategory","exportIndex":3,"name":"getPrefabsByCategory","kind":"re-export","signature":"getPrefabsByCategory","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/prefabs/index.md","moduleTitle":"ecs/prefabs/index","source":"engine/ecs/prefabs/index.js","import":"/engine/ecs/prefabs/index.js","sourceHash":"5a267fb89a0a9ced984bde99b265cfa48a9d41aa1d626faa99652438157f69ca","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/prefabs/index.js#0004:instantiatePrefab","exportIndex":4,"name":"instantiatePrefab","kind":"re-export","signature":"instantiatePrefab","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/prefabs/index.md","moduleTitle":"ecs/prefabs/index","source":"engine/ecs/prefabs/index.js","import":"/engine/ecs/prefabs/index.js","sourceHash":"5a267fb89a0a9ced984bde99b265cfa48a9d41aa1d626faa99652438157f69ca","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/prefabs/index.js#0005:registerPrefab","exportIndex":5,"name":"registerPrefab","kind":"re-export","signature":"registerPrefab","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/query/Query.md","moduleTitle":"ecs/query/Query","source":"engine/ecs/query/Query.js","import":"/engine/ecs/query/Query.js","sourceHash":"8d0393bcf53045a15537c60650dd36e309d73b363eee1baa92aad0231e58b6b1","subsystem":"engine","recordType":"api-module","id":"module:engine/ecs/query/Query.js","title":"ecs/query/Query","summary":"","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/query/Query.md","moduleTitle":"ecs/query/Query","source":"engine/ecs/query/Query.js","import":"/engine/ecs/query/Query.js","sourceHash":"8d0393bcf53045a15537c60650dd36e309d73b363eee1baa92aad0231e58b6b1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/query/Query.js#0000:createQuery","exportIndex":0,"name":"createQuery","kind":"function","signature":"createQuery(options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/query/Query.md","moduleTitle":"ecs/query/Query","source":"engine/ecs/query/Query.js","import":"/engine/ecs/query/Query.js","sourceHash":"8d0393bcf53045a15537c60650dd36e309d73b363eee1baa92aad0231e58b6b1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/query/Query.js#0001:forEachEntity","exportIndex":1,"name":"forEachEntity","kind":"function","signature":"forEachEntity(world, query, callback)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/query/Query.md","moduleTitle":"ecs/query/Query","source":"engine/ecs/query/Query.js","import":"/engine/ecs/query/Query.js","sourceHash":"8d0393bcf53045a15537c60650dd36e309d73b363eee1baa92aad0231e58b6b1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/query/Query.js#0002:getQueryDebugSnapshot","exportIndex":2,"name":"getQueryDebugSnapshot","kind":"function","signature":"getQueryDebugSnapshot(world, query)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/replication/ReplicationProfiles.md","moduleTitle":"ecs/replication/ReplicationProfiles","source":"engine/ecs/replication/ReplicationProfiles.js","import":"/engine/ecs/replication/ReplicationProfiles.js","sourceHash":"fd20614cc73ec7ed47feeaab955a8981d39815dead98671fffbc0b346e335900","subsystem":"engine","recordType":"api-module","id":"module:engine/ecs/replication/ReplicationProfiles.js","title":"ecs/replication/ReplicationProfiles","summary":"","exportCount":8}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/replication/ReplicationProfiles.md","moduleTitle":"ecs/replication/ReplicationProfiles","source":"engine/ecs/replication/ReplicationProfiles.js","import":"/engine/ecs/replication/ReplicationProfiles.js","sourceHash":"fd20614cc73ec7ed47feeaab955a8981d39815dead98671fffbc0b346e335900","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/replication/ReplicationProfiles.js#0000:defineReplicationProfile","exportIndex":0,"name":"defineReplicationProfile","kind":"function","signature":"defineReplicationProfile(name, definition, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/replication/ReplicationProfiles.md","moduleTitle":"ecs/replication/ReplicationProfiles","source":"engine/ecs/replication/ReplicationProfiles.js","import":"/engine/ecs/replication/ReplicationProfiles.js","sourceHash":"fd20614cc73ec7ed47feeaab955a8981d39815dead98671fffbc0b346e335900","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/replication/ReplicationProfiles.js#0001:getReplicationProfile","exportIndex":1,"name":"getReplicationProfile","kind":"function","signature":"getReplicationProfile(name)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/replication/ReplicationProfiles.md","moduleTitle":"ecs/replication/ReplicationProfiles","source":"engine/ecs/replication/ReplicationProfiles.js","import":"/engine/ecs/replication/ReplicationProfiles.js","sourceHash":"fd20614cc73ec7ed47feeaab955a8981d39815dead98671fffbc0b346e335900","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/replication/ReplicationProfiles.js#0002:listReplicationProfiles","exportIndex":2,"name":"listReplicationProfiles","kind":"function","signature":"listReplicationProfiles()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/replication/ReplicationProfiles.md","moduleTitle":"ecs/replication/ReplicationProfiles","source":"engine/ecs/replication/ReplicationProfiles.js","import":"/engine/ecs/replication/ReplicationProfiles.js","sourceHash":"fd20614cc73ec7ed47feeaab955a8981d39815dead98671fffbc0b346e335900","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/replication/ReplicationProfiles.js#0003:resolveReplicationProfile","exportIndex":3,"name":"resolveReplicationProfile","kind":"function","signature":"resolveReplicationProfile(name, overrides = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/replication/ReplicationProfiles.md","moduleTitle":"ecs/replication/ReplicationProfiles","source":"engine/ecs/replication/ReplicationProfiles.js","import":"/engine/ecs/replication/ReplicationProfiles.js","sourceHash":"fd20614cc73ec7ed47feeaab955a8981d39815dead98671fffbc0b346e335900","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/replication/ReplicationProfiles.js#0004:profileAllowsComponent","exportIndex":4,"name":"profileAllowsComponent","kind":"function","signature":"profileAllowsComponent(profileOrName, componentName)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/replication/ReplicationProfiles.md","moduleTitle":"ecs/replication/ReplicationProfiles","source":"engine/ecs/replication/ReplicationProfiles.js","import":"/engine/ecs/replication/ReplicationProfiles.js","sourceHash":"fd20614cc73ec7ed47feeaab955a8981d39815dead98671fffbc0b346e335900","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/replication/ReplicationProfiles.js#0005:createReplicationProjection","exportIndex":5,"name":"createReplicationProjection","kind":"function","signature":"createReplicationProjection(netReplicated, components, context = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/replication/ReplicationProfiles.md","moduleTitle":"ecs/replication/ReplicationProfiles","source":"engine/ecs/replication/ReplicationProfiles.js","import":"/engine/ecs/replication/ReplicationProfiles.js","sourceHash":"fd20614cc73ec7ed47feeaab955a8981d39815dead98671fffbc0b346e335900","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/replication/ReplicationProfiles.js#0006:REPLICATION_AUTHORITY","exportIndex":6,"name":"REPLICATION_AUTHORITY","kind":"constant","signature":"REPLICATION_AUTHORITY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/replication/ReplicationProfiles.md","moduleTitle":"ecs/replication/ReplicationProfiles","source":"engine/ecs/replication/ReplicationProfiles.js","import":"/engine/ecs/replication/ReplicationProfiles.js","sourceHash":"fd20614cc73ec7ed47feeaab955a8981d39815dead98671fffbc0b346e335900","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/replication/ReplicationProfiles.js#0007:REPLICATION_STRATEGY","exportIndex":7,"name":"REPLICATION_STRATEGY","kind":"constant","signature":"REPLICATION_STRATEGY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/storage/ArchetypeStorage.md","moduleTitle":"ecs/storage/ArchetypeStorage","source":"engine/ecs/storage/ArchetypeStorage.js","import":"/engine/ecs/storage/ArchetypeStorage.js","sourceHash":"4d9861178db23867f8c92b3c48f8ea06dfd30810533a54e9255248568c770be8","subsystem":"engine","recordType":"api-module","id":"module:engine/ecs/storage/ArchetypeStorage.js","title":"ecs/storage/ArchetypeStorage","summary":"Fast path: update an existing component WITHOUT normalization. Use ONLY when the value is already known-valid (e.g., from physics engine output). The entity MUST already have this component — this will NOT add new components. Returns the value if successful, null if entity/component not found.","exportCount":9}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/storage/ArchetypeStorage.md","moduleTitle":"ecs/storage/ArchetypeStorage","source":"engine/ecs/storage/ArchetypeStorage.js","import":"/engine/ecs/storage/ArchetypeStorage.js","sourceHash":"4d9861178db23867f8c92b3c48f8ea06dfd30810533a54e9255248568c770be8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/storage/ArchetypeStorage.js#0000:createArchetypeStorage","exportIndex":0,"name":"createArchetypeStorage","kind":"function","signature":"createArchetypeStorage(world)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/storage/ArchetypeStorage.md","moduleTitle":"ecs/storage/ArchetypeStorage","source":"engine/ecs/storage/ArchetypeStorage.js","import":"/engine/ecs/storage/ArchetypeStorage.js","sourceHash":"4d9861178db23867f8c92b3c48f8ea06dfd30810533a54e9255248568c770be8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/storage/ArchetypeStorage.js#0001:getArchetypeStorage","exportIndex":1,"name":"getArchetypeStorage","kind":"function","signature":"getArchetypeStorage(world)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/storage/ArchetypeStorage.md","moduleTitle":"ecs/storage/ArchetypeStorage","source":"engine/ecs/storage/ArchetypeStorage.js","import":"/engine/ecs/storage/ArchetypeStorage.js","sourceHash":"4d9861178db23867f8c92b3c48f8ea06dfd30810533a54e9255248568c770be8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/storage/ArchetypeStorage.js#0002:setEntityComponent","exportIndex":2,"name":"setEntityComponent","kind":"function","signature":"setEntityComponent(world, entityId, componentName, value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/storage/ArchetypeStorage.md","moduleTitle":"ecs/storage/ArchetypeStorage","source":"engine/ecs/storage/ArchetypeStorage.js","import":"/engine/ecs/storage/ArchetypeStorage.js","sourceHash":"4d9861178db23867f8c92b3c48f8ea06dfd30810533a54e9255248568c770be8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/storage/ArchetypeStorage.js#0003:setEntityComponentDirect","exportIndex":3,"name":"setEntityComponentDirect","kind":"function","signature":"setEntityComponentDirect(world, entityId, componentName, value)","summary":"Fast path: update an existing component WITHOUT normalization. Use ONLY when the value is already known-valid (e.g., from physics engine output). The entity MUST already have this component — this will NOT add new components. Returns the value if successful, null if entity/component not found."}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/storage/ArchetypeStorage.md","moduleTitle":"ecs/storage/ArchetypeStorage","source":"engine/ecs/storage/ArchetypeStorage.js","import":"/engine/ecs/storage/ArchetypeStorage.js","sourceHash":"4d9861178db23867f8c92b3c48f8ea06dfd30810533a54e9255248568c770be8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/storage/ArchetypeStorage.js#0004:removeEntityComponent","exportIndex":4,"name":"removeEntityComponent","kind":"function","signature":"removeEntityComponent(world, entityId, componentName)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/storage/ArchetypeStorage.md","moduleTitle":"ecs/storage/ArchetypeStorage","source":"engine/ecs/storage/ArchetypeStorage.js","import":"/engine/ecs/storage/ArchetypeStorage.js","sourceHash":"4d9861178db23867f8c92b3c48f8ea06dfd30810533a54e9255248568c770be8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/storage/ArchetypeStorage.js#0005:removeEntityFromStorage","exportIndex":5,"name":"removeEntityFromStorage","kind":"function","signature":"removeEntityFromStorage(world, entityId)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/storage/ArchetypeStorage.md","moduleTitle":"ecs/storage/ArchetypeStorage","source":"engine/ecs/storage/ArchetypeStorage.js","import":"/engine/ecs/storage/ArchetypeStorage.js","sourceHash":"4d9861178db23867f8c92b3c48f8ea06dfd30810533a54e9255248568c770be8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/storage/ArchetypeStorage.js#0006:getEntityComponent","exportIndex":6,"name":"getEntityComponent","kind":"function","signature":"getEntityComponent(world, entityId, componentName)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/storage/ArchetypeStorage.md","moduleTitle":"ecs/storage/ArchetypeStorage","source":"engine/ecs/storage/ArchetypeStorage.js","import":"/engine/ecs/storage/ArchetypeStorage.js","sourceHash":"4d9861178db23867f8c92b3c48f8ea06dfd30810533a54e9255248568c770be8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/storage/ArchetypeStorage.js#0007:getEntityComponentRecord","exportIndex":7,"name":"getEntityComponentRecord","kind":"function","signature":"getEntityComponentRecord(world, entityId)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/storage/ArchetypeStorage.md","moduleTitle":"ecs/storage/ArchetypeStorage","source":"engine/ecs/storage/ArchetypeStorage.js","import":"/engine/ecs/storage/ArchetypeStorage.js","sourceHash":"4d9861178db23867f8c92b3c48f8ea06dfd30810533a54e9255248568c770be8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/storage/ArchetypeStorage.js#0008:getArchetypeStorageSnapshot","exportIndex":8,"name":"getArchetypeStorageSnapshot","kind":"function","signature":"getArchetypeStorageSnapshot(world)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/systems/CameraSystem.md","moduleTitle":"ecs/systems/CameraSystem","source":"engine/ecs/systems/CameraSystem.js","import":"/engine/ecs/systems/CameraSystem.js","sourceHash":"695afb7622e89a7ad7a22a8c14232989f0037471fbf771d56e86da1ff3b37fc8","subsystem":"engine","recordType":"api-module","id":"module:engine/ecs/systems/CameraSystem.js","title":"ecs/systems/CameraSystem","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/systems/CameraSystem.md","moduleTitle":"ecs/systems/CameraSystem","source":"engine/ecs/systems/CameraSystem.js","import":"/engine/ecs/systems/CameraSystem.js","sourceHash":"695afb7622e89a7ad7a22a8c14232989f0037471fbf771d56e86da1ff3b37fc8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/systems/CameraSystem.js#0000:registerCameraSystem","exportIndex":0,"name":"registerCameraSystem","kind":"function","signature":"registerCameraSystem(world, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/systems/ClothSystem.md","moduleTitle":"ecs/systems/ClothSystem","source":"engine/ecs/systems/ClothSystem.js","import":"/engine/ecs/systems/ClothSystem.js","sourceHash":"da58b16f312541cd8a8140e6cbf5eb835602261a56f899dab24e496502eec18e","subsystem":"engine","recordType":"api-module","id":"module:engine/ecs/systems/ClothSystem.js","title":"ecs/systems/ClothSystem","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/systems/ClothSystem.md","moduleTitle":"ecs/systems/ClothSystem","source":"engine/ecs/systems/ClothSystem.js","import":"/engine/ecs/systems/ClothSystem.js","sourceHash":"da58b16f312541cd8a8140e6cbf5eb835602261a56f899dab24e496502eec18e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/systems/ClothSystem.js#0000:registerClothSystem","exportIndex":0,"name":"registerClothSystem","kind":"function","signature":"registerClothSystem(world, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/systems/FluidDebugSystem.md","moduleTitle":"ecs/systems/FluidDebugSystem","source":"engine/ecs/systems/FluidDebugSystem.js","import":"/engine/ecs/systems/FluidDebugSystem.js","sourceHash":"7836595eb31d688a76af1506153fc176ec521b5923f8d948c943bfec227ed90e","subsystem":"engine","recordType":"api-module","id":"module:engine/ecs/systems/FluidDebugSystem.js","title":"ecs/systems/FluidDebugSystem","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/systems/FluidDebugSystem.md","moduleTitle":"ecs/systems/FluidDebugSystem","source":"engine/ecs/systems/FluidDebugSystem.js","import":"/engine/ecs/systems/FluidDebugSystem.js","sourceHash":"7836595eb31d688a76af1506153fc176ec521b5923f8d948c943bfec227ed90e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/systems/FluidDebugSystem.js#0000:registerFluidDebugSystem","exportIndex":0,"name":"registerFluidDebugSystem","kind":"function","signature":"registerFluidDebugSystem(world, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/systems/FluidSystem.md","moduleTitle":"ecs/systems/FluidSystem","source":"engine/ecs/systems/FluidSystem.js","import":"/engine/ecs/systems/FluidSystem.js","sourceHash":"eadaaf44eeb6b66e281a30985312b900751b5afd7f76ba51abf139cf8d6b7554","subsystem":"engine","recordType":"api-module","id":"module:engine/ecs/systems/FluidSystem.js","title":"ecs/systems/FluidSystem","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/systems/FluidSystem.md","moduleTitle":"ecs/systems/FluidSystem","source":"engine/ecs/systems/FluidSystem.js","import":"/engine/ecs/systems/FluidSystem.js","sourceHash":"eadaaf44eeb6b66e281a30985312b900751b5afd7f76ba51abf139cf8d6b7554","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/systems/FluidSystem.js#0000:registerFluidSystem","exportIndex":0,"name":"registerFluidSystem","kind":"function","signature":"registerFluidSystem(world, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/systems/NavAgentSystem.md","moduleTitle":"ecs/systems/NavAgentSystem","source":"engine/ecs/systems/NavAgentSystem.js","import":"/engine/ecs/systems/NavAgentSystem.js","sourceHash":"8517bc7f17d21ea75b99fc393bcb2ce14eeccb9f45a8859ad73414ab14c2ba30","subsystem":"engine","recordType":"api-module","id":"module:engine/ecs/systems/NavAgentSystem.js","title":"ecs/systems/NavAgentSystem","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/systems/NavAgentSystem.md","moduleTitle":"ecs/systems/NavAgentSystem","source":"engine/ecs/systems/NavAgentSystem.js","import":"/engine/ecs/systems/NavAgentSystem.js","sourceHash":"8517bc7f17d21ea75b99fc393bcb2ce14eeccb9f45a8859ad73414ab14c2ba30","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/systems/NavAgentSystem.js#0000:registerNavAgentSystem","exportIndex":0,"name":"registerNavAgentSystem","kind":"function","signature":"registerNavAgentSystem(world, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/systems/ParticleDebugSystem.md","moduleTitle":"ecs/systems/ParticleDebugSystem","source":"engine/ecs/systems/ParticleDebugSystem.js","import":"/engine/ecs/systems/ParticleDebugSystem.js","sourceHash":"65ea67c5f6909715799af6f808c3762d7e858db4d5817b7c3d65cd2e87c3b5b1","subsystem":"engine","recordType":"api-module","id":"module:engine/ecs/systems/ParticleDebugSystem.js","title":"ecs/systems/ParticleDebugSystem","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/systems/ParticleDebugSystem.md","moduleTitle":"ecs/systems/ParticleDebugSystem","source":"engine/ecs/systems/ParticleDebugSystem.js","import":"/engine/ecs/systems/ParticleDebugSystem.js","sourceHash":"65ea67c5f6909715799af6f808c3762d7e858db4d5817b7c3d65cd2e87c3b5b1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/systems/ParticleDebugSystem.js#0000:registerParticleDebugSystem","exportIndex":0,"name":"registerParticleDebugSystem","kind":"function","signature":"registerParticleDebugSystem(world, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/systems/ParticleSystem.md","moduleTitle":"ecs/systems/ParticleSystem","source":"engine/ecs/systems/ParticleSystem.js","import":"/engine/ecs/systems/ParticleSystem.js","sourceHash":"2efe4fa33f76622ce326f75a689d2c6fcd09670231cdd79e754f3a145098b2ae","subsystem":"engine","recordType":"api-module","id":"module:engine/ecs/systems/ParticleSystem.js","title":"ecs/systems/ParticleSystem","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/systems/ParticleSystem.md","moduleTitle":"ecs/systems/ParticleSystem","source":"engine/ecs/systems/ParticleSystem.js","import":"/engine/ecs/systems/ParticleSystem.js","sourceHash":"2efe4fa33f76622ce326f75a689d2c6fcd09670231cdd79e754f3a145098b2ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/systems/ParticleSystem.js#0000:registerParticleSystem","exportIndex":0,"name":"registerParticleSystem","kind":"function","signature":"registerParticleSystem(world, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/systems/PerceptionSystem.md","moduleTitle":"ecs/systems/PerceptionSystem","source":"engine/ecs/systems/PerceptionSystem.js","import":"/engine/ecs/systems/PerceptionSystem.js","sourceHash":"3b2fc98ecd4ea4e301e50f6e32848f8ae36a85b9e80f2197f568a99e80fa02f9","subsystem":"engine","recordType":"api-module","id":"module:engine/ecs/systems/PerceptionSystem.js","title":"ecs/systems/PerceptionSystem","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/systems/PerceptionSystem.md","moduleTitle":"ecs/systems/PerceptionSystem","source":"engine/ecs/systems/PerceptionSystem.js","import":"/engine/ecs/systems/PerceptionSystem.js","sourceHash":"3b2fc98ecd4ea4e301e50f6e32848f8ae36a85b9e80f2197f568a99e80fa02f9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/systems/PerceptionSystem.js#0000:registerPerceptionSystem","exportIndex":0,"name":"registerPerceptionSystem","kind":"function","signature":"registerPerceptionSystem(world, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/systems/PhysicsSystem.md","moduleTitle":"ecs/systems/PhysicsSystem","source":"engine/ecs/systems/PhysicsSystem.js","import":"/engine/ecs/systems/PhysicsSystem.js","sourceHash":"17c569aa87fb2dec5d5dcf0a14bc39adf1c0ce9b205e85854161aa58aeaa942b","subsystem":"engine","recordType":"api-module","id":"module:engine/ecs/systems/PhysicsSystem.js","title":"ecs/systems/PhysicsSystem","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/systems/PhysicsSystem.md","moduleTitle":"ecs/systems/PhysicsSystem","source":"engine/ecs/systems/PhysicsSystem.js","import":"/engine/ecs/systems/PhysicsSystem.js","sourceHash":"17c569aa87fb2dec5d5dcf0a14bc39adf1c0ce9b205e85854161aa58aeaa942b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/systems/PhysicsSystem.js#0000:registerPhysicsSystem","exportIndex":0,"name":"registerPhysicsSystem","kind":"function","signature":"registerPhysicsSystem(world, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/systems/SystemRegistry.md","moduleTitle":"ecs/systems/SystemRegistry","source":"engine/ecs/systems/SystemRegistry.js","import":"/engine/ecs/systems/SystemRegistry.js","sourceHash":"bc499fa47c96bb2abb096361d69a79ddaf48f038d5b77e215fde1e63cd7790f2","subsystem":"engine","recordType":"api-module","id":"module:engine/ecs/systems/SystemRegistry.js","title":"ecs/systems/SystemRegistry","summary":"","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/systems/SystemRegistry.md","moduleTitle":"ecs/systems/SystemRegistry","source":"engine/ecs/systems/SystemRegistry.js","import":"/engine/ecs/systems/SystemRegistry.js","sourceHash":"bc499fa47c96bb2abb096361d69a79ddaf48f038d5b77e215fde1e63cd7790f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/systems/SystemRegistry.js#0000:registerSystem","exportIndex":0,"name":"registerSystem","kind":"function","signature":"registerSystem(world, descriptor)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/systems/SystemRegistry.md","moduleTitle":"ecs/systems/SystemRegistry","source":"engine/ecs/systems/SystemRegistry.js","import":"/engine/ecs/systems/SystemRegistry.js","sourceHash":"bc499fa47c96bb2abb096361d69a79ddaf48f038d5b77e215fde1e63cd7790f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/systems/SystemRegistry.js#0001:unregisterSystem","exportIndex":1,"name":"unregisterSystem","kind":"function","signature":"unregisterSystem(world, systemOrId)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/systems/SystemRegistry.md","moduleTitle":"ecs/systems/SystemRegistry","source":"engine/ecs/systems/SystemRegistry.js","import":"/engine/ecs/systems/SystemRegistry.js","sourceHash":"bc499fa47c96bb2abb096361d69a79ddaf48f038d5b77e215fde1e63cd7790f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/systems/SystemRegistry.js#0002:setSystemEnabled","exportIndex":2,"name":"setSystemEnabled","kind":"function","signature":"setSystemEnabled(world, systemOrId, enabled)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/systems/SystemRegistry.md","moduleTitle":"ecs/systems/SystemRegistry","source":"engine/ecs/systems/SystemRegistry.js","import":"/engine/ecs/systems/SystemRegistry.js","sourceHash":"bc499fa47c96bb2abb096361d69a79ddaf48f038d5b77e215fde1e63cd7790f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/systems/SystemRegistry.js#0003:getRegisteredSystems","exportIndex":3,"name":"getRegisteredSystems","kind":"function","signature":"getRegisteredSystems(world)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/systems/SystemRegistry.md","moduleTitle":"ecs/systems/SystemRegistry","source":"engine/ecs/systems/SystemRegistry.js","import":"/engine/ecs/systems/SystemRegistry.js","sourceHash":"bc499fa47c96bb2abb096361d69a79ddaf48f038d5b77e215fde1e63cd7790f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/systems/SystemRegistry.js#0004:setSystemGroupEnabled","exportIndex":4,"name":"setSystemGroupEnabled","kind":"function","signature":"setSystemGroupEnabled(world, groupName, enabled)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/systems/ThirdPersonCameraSystem.md","moduleTitle":"ecs/systems/ThirdPersonCameraSystem","source":"engine/ecs/systems/ThirdPersonCameraSystem.js","import":"/engine/ecs/systems/ThirdPersonCameraSystem.js","sourceHash":"c8aeca77bcc912493caddc269d5f730d70722b23db5d306cc4198bda0439afa4","subsystem":"engine","recordType":"api-module","id":"module:engine/ecs/systems/ThirdPersonCameraSystem.js","title":"ecs/systems/ThirdPersonCameraSystem","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/systems/ThirdPersonCameraSystem.md","moduleTitle":"ecs/systems/ThirdPersonCameraSystem","source":"engine/ecs/systems/ThirdPersonCameraSystem.js","import":"/engine/ecs/systems/ThirdPersonCameraSystem.js","sourceHash":"c8aeca77bcc912493caddc269d5f730d70722b23db5d306cc4198bda0439afa4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/systems/ThirdPersonCameraSystem.js#0000:registerThirdPersonCameraSystem","exportIndex":0,"name":"registerThirdPersonCameraSystem","kind":"function","signature":"registerThirdPersonCameraSystem(world, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/systems/WorldSystem.md","moduleTitle":"ecs/systems/WorldSystem","source":"engine/ecs/systems/WorldSystem.js","import":"/engine/ecs/systems/WorldSystem.js","sourceHash":"9e1eaad5fcf037e1c26bf67586bddcb0a1caebff0f89f5ec310e226c6be50c4b","subsystem":"engine","recordType":"api-module","id":"module:engine/ecs/systems/WorldSystem.js","title":"ecs/systems/WorldSystem","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/systems/WorldSystem.md","moduleTitle":"ecs/systems/WorldSystem","source":"engine/ecs/systems/WorldSystem.js","import":"/engine/ecs/systems/WorldSystem.js","sourceHash":"9e1eaad5fcf037e1c26bf67586bddcb0a1caebff0f89f5ec310e226c6be50c4b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/systems/WorldSystem.js#0000:registerWorldSystem","exportIndex":0,"name":"registerWorldSystem","kind":"function","signature":"registerWorldSystem(world, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/world/World.md","moduleTitle":"ecs/world/World","source":"engine/ecs/world/World.js","import":"/engine/ecs/world/World.js","sourceHash":"ae9cd51a68eb5ac3f84d35847cab849c086c8e1e8ab395771bdddb48df435547","subsystem":"engine","recordType":"api-module","id":"module:engine/ecs/world/World.js","title":"ecs/world/World","summary":"","exportCount":11}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/world/World.md","moduleTitle":"ecs/world/World","source":"engine/ecs/world/World.js","import":"/engine/ecs/world/World.js","sourceHash":"ae9cd51a68eb5ac3f84d35847cab849c086c8e1e8ab395771bdddb48df435547","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/world/World.js#0000:createWorld","exportIndex":0,"name":"createWorld","kind":"function","signature":"createWorld(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/world/World.md","moduleTitle":"ecs/world/World","source":"engine/ecs/world/World.js","import":"/engine/ecs/world/World.js","sourceHash":"ae9cd51a68eb5ac3f84d35847cab849c086c8e1e8ab395771bdddb48df435547","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/world/World.js#0001:createEntity","exportIndex":1,"name":"createEntity","kind":"function","signature":"createEntity(world)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/world/World.md","moduleTitle":"ecs/world/World","source":"engine/ecs/world/World.js","import":"/engine/ecs/world/World.js","sourceHash":"ae9cd51a68eb5ac3f84d35847cab849c086c8e1e8ab395771bdddb48df435547","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/world/World.js#0002:destroyEntity","exportIndex":2,"name":"destroyEntity","kind":"function","signature":"destroyEntity(world, id)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/world/World.md","moduleTitle":"ecs/world/World","source":"engine/ecs/world/World.js","import":"/engine/ecs/world/World.js","sourceHash":"ae9cd51a68eb5ac3f84d35847cab849c086c8e1e8ab395771bdddb48df435547","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/world/World.js#0003:isEntityAlive","exportIndex":3,"name":"isEntityAlive","kind":"function","signature":"isEntityAlive(world, id)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/world/World.md","moduleTitle":"ecs/world/World","source":"engine/ecs/world/World.js","import":"/engine/ecs/world/World.js","sourceHash":"ae9cd51a68eb5ac3f84d35847cab849c086c8e1e8ab395771bdddb48df435547","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/world/World.js#0004:getWorldStats","exportIndex":4,"name":"getWorldStats","kind":"function","signature":"getWorldStats(world)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/world/World.md","moduleTitle":"ecs/world/World","source":"engine/ecs/world/World.js","import":"/engine/ecs/world/World.js","sourceHash":"ae9cd51a68eb5ac3f84d35847cab849c086c8e1e8ab395771bdddb48df435547","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/world/World.js#0005:getWorldDebugSnapshot","exportIndex":5,"name":"getWorldDebugSnapshot","kind":"function","signature":"getWorldDebugSnapshot(world, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/world/World.md","moduleTitle":"ecs/world/World","source":"engine/ecs/world/World.js","import":"/engine/ecs/world/World.js","sourceHash":"ae9cd51a68eb5ac3f84d35847cab849c086c8e1e8ab395771bdddb48df435547","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/world/World.js#0006:captureWorldSnapshot","exportIndex":6,"name":"captureWorldSnapshot","kind":"function","signature":"captureWorldSnapshot(world, options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/world/World.md","moduleTitle":"ecs/world/World","source":"engine/ecs/world/World.js","import":"/engine/ecs/world/World.js","sourceHash":"ae9cd51a68eb5ac3f84d35847cab849c086c8e1e8ab395771bdddb48df435547","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/world/World.js#0007:restoreWorldFromSnapshot","exportIndex":7,"name":"restoreWorldFromSnapshot","kind":"function","signature":"restoreWorldFromSnapshot(world, snapshot)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/world/World.md","moduleTitle":"ecs/world/World","source":"engine/ecs/world/World.js","import":"/engine/ecs/world/World.js","sourceHash":"ae9cd51a68eb5ac3f84d35847cab849c086c8e1e8ab395771bdddb48df435547","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/world/World.js#0008:stepWorld","exportIndex":8,"name":"stepWorld","kind":"function","signature":"stepWorld(world, deltaSeconds)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/world/World.md","moduleTitle":"ecs/world/World","source":"engine/ecs/world/World.js","import":"/engine/ecs/world/World.js","sourceHash":"ae9cd51a68eb5ac3f84d35847cab849c086c8e1e8ab395771bdddb48df435547","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/world/World.js#0009:stepWorldFrame","exportIndex":9,"name":"stepWorldFrame","kind":"function","signature":"stepWorldFrame(world, deltaSeconds)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/world/World.md","moduleTitle":"ecs/world/World","source":"engine/ecs/world/World.js","import":"/engine/ecs/world/World.js","sourceHash":"ae9cd51a68eb5ac3f84d35847cab849c086c8e1e8ab395771bdddb48df435547","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/world/World.js#0010:debugDecodeEntityId","exportIndex":10,"name":"debugDecodeEntityId","kind":"function","signature":"debugDecodeEntityId(id)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/world/WorldPersistence.md","moduleTitle":"ecs/world/WorldPersistence","source":"engine/ecs/world/WorldPersistence.js","import":"/engine/ecs/world/WorldPersistence.js","sourceHash":"1b9a4e02a4dc71814a30f77d22b27145b999a68c60d226a2187e24408be0f871","subsystem":"engine","recordType":"api-module","id":"module:engine/ecs/world/WorldPersistence.js","title":"ecs/world/WorldPersistence","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/world/WorldPersistence.md","moduleTitle":"ecs/world/WorldPersistence","source":"engine/ecs/world/WorldPersistence.js","import":"/engine/ecs/world/WorldPersistence.js","sourceHash":"1b9a4e02a4dc71814a30f77d22b27145b999a68c60d226a2187e24408be0f871","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/world/WorldPersistence.js#0000:createWorldSavePayload","exportIndex":0,"name":"createWorldSavePayload","kind":"function","signature":"createWorldSavePayload(world, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/ecs/world/WorldPersistence.md","moduleTitle":"ecs/world/WorldPersistence","source":"engine/ecs/world/WorldPersistence.js","import":"/engine/ecs/world/WorldPersistence.js","sourceHash":"1b9a4e02a4dc71814a30f77d22b27145b999a68c60d226a2187e24408be0f871","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/ecs/world/WorldPersistence.js#0001:restoreWorldFromSavePayload","exportIndex":1,"name":"restoreWorldFromSavePayload","kind":"function","signature":"restoreWorldFromSavePayload(world, payload, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/ai/InstinctGraph.md","moduleTitle":"gameplay/ai/InstinctGraph","source":"engine/gameplay/ai/InstinctGraph.js","import":"/engine/gameplay/ai/InstinctGraph.js","sourceHash":"e3f49ca87ab1e2118e6b312c680c1826494f2e8749d2a321d1ee4f341cd935f3","subsystem":"engine","recordType":"api-module","id":"module:engine/gameplay/ai/InstinctGraph.js","title":"gameplay/ai/InstinctGraph","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/ai/InstinctGraph.md","moduleTitle":"gameplay/ai/InstinctGraph","source":"engine/gameplay/ai/InstinctGraph.js","import":"/engine/gameplay/ai/InstinctGraph.js","sourceHash":"e3f49ca87ab1e2118e6b312c680c1826494f2e8749d2a321d1ee4f341cd935f3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/ai/InstinctGraph.js#0000:InstinctGraph","exportIndex":0,"name":"InstinctGraph","kind":"class","signature":"class InstinctGraph","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/ai/NPCBrain.md","moduleTitle":"gameplay/ai/NPCBrain","source":"engine/gameplay/ai/NPCBrain.js","import":"/engine/gameplay/ai/NPCBrain.js","sourceHash":"380ee5aae14fb3b9efa2ade1e794ef8c3fbc46dcf04aebcf2638d326e230b690","subsystem":"engine","recordType":"api-module","id":"module:engine/gameplay/ai/NPCBrain.js","title":"gameplay/ai/NPCBrain","summary":"NPCBrain — Tiny JavaScript brain for each NPC. Inputs feed drives. The strongest LEGAL drive wins (RuleGraph filters). Memory changes the weights over time. Drives: fight, flee, protect, steal, obey, betray, comfort, digBuild, follow, reportCrime","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/ai/NPCBrain.md","moduleTitle":"gameplay/ai/NPCBrain","source":"engine/gameplay/ai/NPCBrain.js","import":"/engine/gameplay/ai/NPCBrain.js","sourceHash":"380ee5aae14fb3b9efa2ade1e794ef8c3fbc46dcf04aebcf2638d326e230b690","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/ai/NPCBrain.js#0000:NPCBrain","exportIndex":0,"name":"NPCBrain","kind":"class","signature":"class NPCBrain","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/ai/NPCBrain.md","moduleTitle":"gameplay/ai/NPCBrain","source":"engine/gameplay/ai/NPCBrain.js","import":"/engine/gameplay/ai/NPCBrain.js","sourceHash":"380ee5aae14fb3b9efa2ade1e794ef8c3fbc46dcf04aebcf2638d326e230b690","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/ai/NPCBrain.js#0001:DriveType","exportIndex":1,"name":"DriveType","kind":"constant","signature":"DriveType","summary":"NPCBrain — Tiny JavaScript brain for each NPC. Inputs feed drives. The strongest LEGAL drive wins (RuleGraph filters). Memory changes the weights over time. Drives: fight, flee, protect, steal, obey, betray, comfort, digBuild, follow, reportCrime"}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/ai/index.md","moduleTitle":"gameplay/ai/index","source":"engine/gameplay/ai/index.js","import":"/engine/gameplay/ai/index.js","sourceHash":"91b8a4123333cce75a789d28d43dc72425d9946e07a265388eed026ed81631c6","subsystem":"engine","recordType":"api-module","id":"module:engine/gameplay/ai/index.js","title":"gameplay/ai/index","summary":"","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/ai/index.md","moduleTitle":"gameplay/ai/index","source":"engine/gameplay/ai/index.js","import":"/engine/gameplay/ai/index.js","sourceHash":"91b8a4123333cce75a789d28d43dc72425d9946e07a265388eed026ed81631c6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/ai/index.js#0000:DriveType","exportIndex":0,"name":"DriveType","kind":"re-export","signature":"DriveType","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/ai/index.md","moduleTitle":"gameplay/ai/index","source":"engine/gameplay/ai/index.js","import":"/engine/gameplay/ai/index.js","sourceHash":"91b8a4123333cce75a789d28d43dc72425d9946e07a265388eed026ed81631c6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/ai/index.js#0001:InstinctGraph","exportIndex":1,"name":"InstinctGraph","kind":"re-export","signature":"InstinctGraph","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/ai/index.md","moduleTitle":"gameplay/ai/index","source":"engine/gameplay/ai/index.js","import":"/engine/gameplay/ai/index.js","sourceHash":"91b8a4123333cce75a789d28d43dc72425d9946e07a265388eed026ed81631c6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/ai/index.js#0002:NPCBrain","exportIndex":2,"name":"NPCBrain","kind":"re-export","signature":"NPCBrain","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/events/EventGraph.md","moduleTitle":"gameplay/events/EventGraph","source":"engine/gameplay/events/EventGraph.js","import":"/engine/gameplay/events/EventGraph.js","sourceHash":"fb3c16fb62bb6fdab4f74ad772010899c6df6143f1fbb33167f33f242b905081","subsystem":"engine","recordType":"api-module","id":"module:engine/gameplay/events/EventGraph.js","title":"gameplay/events/EventGraph","summary":"EventGraph — The event bus and event log for LIFE. Every meaningful thing in the world becomes an event. Events power: memories, dialogue, reputation, crimes, family history, item souls, resolve changes, and storylet triggers. Events are immutable once created. The log is append-only. Listeners can subscribe to event types or use wildcard '*'.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/events/EventGraph.md","moduleTitle":"gameplay/events/EventGraph","source":"engine/gameplay/events/EventGraph.js","import":"/engine/gameplay/events/EventGraph.js","sourceHash":"fb3c16fb62bb6fdab4f74ad772010899c6df6143f1fbb33167f33f242b905081","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/events/EventGraph.js#0000:EventGraph","exportIndex":0,"name":"EventGraph","kind":"class","signature":"class EventGraph","summary":"EventGraph — global event bus + per-entity event logs."}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/events/EventGraph.md","moduleTitle":"gameplay/events/EventGraph","source":"engine/gameplay/events/EventGraph.js","import":"/engine/gameplay/events/EventGraph.js","sourceHash":"fb3c16fb62bb6fdab4f74ad772010899c6df6143f1fbb33167f33f242b905081","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/events/EventGraph.js#0001:createEvent","exportIndex":1,"name":"createEvent","kind":"function","signature":"createEvent(config)","summary":"Creates an immutable event object."}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/events/index.md","moduleTitle":"gameplay/events/index","source":"engine/gameplay/events/index.js","import":"/engine/gameplay/events/index.js","sourceHash":"04097b1bef98c583344c7acb44c772b613ba03e153a12762cc0e7631b65b1e0d","subsystem":"engine","recordType":"api-module","id":"module:engine/gameplay/events/index.js","title":"gameplay/events/index","summary":"","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/events/index.md","moduleTitle":"gameplay/events/index","source":"engine/gameplay/events/index.js","import":"/engine/gameplay/events/index.js","sourceHash":"04097b1bef98c583344c7acb44c772b613ba03e153a12762cc0e7631b65b1e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/events/index.js#0000:EventGraph","exportIndex":0,"name":"EventGraph","kind":"re-export","signature":"EventGraph","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/events/index.md","moduleTitle":"gameplay/events/index","source":"engine/gameplay/events/index.js","import":"/engine/gameplay/events/index.js","sourceHash":"04097b1bef98c583344c7acb44c772b613ba03e153a12762cc0e7631b65b1e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/events/index.js#0001:createEvent","exportIndex":1,"name":"createEvent","kind":"re-export","signature":"createEvent","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/events/index.md","moduleTitle":"gameplay/events/index","source":"engine/gameplay/events/index.js","import":"/engine/gameplay/events/index.js","sourceHash":"04097b1bef98c583344c7acb44c772b613ba03e153a12762cc0e7631b65b1e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/events/index.js#0002:default","exportIndex":2,"name":"default","kind":"re-export","signature":"default","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/inventory/Inventory.md","moduleTitle":"gameplay/inventory/Inventory","source":"engine/gameplay/inventory/Inventory.js","import":"/engine/gameplay/inventory/Inventory.js","sourceHash":"7b0319de588145541bb74705c0e10e90b58c9e9715f0116ad07a7bf113d5ed3f","subsystem":"engine","recordType":"api-module","id":"module:engine/gameplay/inventory/Inventory.js","title":"gameplay/inventory/Inventory","summary":"","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/inventory/Inventory.md","moduleTitle":"gameplay/inventory/Inventory","source":"engine/gameplay/inventory/Inventory.js","import":"/engine/gameplay/inventory/Inventory.js","sourceHash":"7b0319de588145541bb74705c0e10e90b58c9e9715f0116ad07a7bf113d5ed3f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/inventory/Inventory.js#0000:Inventory","exportIndex":0,"name":"Inventory","kind":"class","signature":"class Inventory","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/inventory/Inventory.md","moduleTitle":"gameplay/inventory/Inventory","source":"engine/gameplay/inventory/Inventory.js","import":"/engine/gameplay/inventory/Inventory.js","sourceHash":"7b0319de588145541bb74705c0e10e90b58c9e9715f0116ad07a7bf113d5ed3f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/inventory/Inventory.js#0001:defaultResolveEquipSlot","exportIndex":1,"name":"defaultResolveEquipSlot","kind":"function","signature":"defaultResolveEquipSlot(itemData)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/inventory/Inventory.md","moduleTitle":"gameplay/inventory/Inventory","source":"engine/gameplay/inventory/Inventory.js","import":"/engine/gameplay/inventory/Inventory.js","sourceHash":"7b0319de588145541bb74705c0e10e90b58c9e9715f0116ad07a7bf113d5ed3f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/inventory/Inventory.js#0002:createInventory","exportIndex":2,"name":"createInventory","kind":"function","signature":"createInventory(maxSlots, options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/inventory/Inventory.md","moduleTitle":"gameplay/inventory/Inventory","source":"engine/gameplay/inventory/Inventory.js","import":"/engine/gameplay/inventory/Inventory.js","sourceHash":"7b0319de588145541bb74705c0e10e90b58c9e9715f0116ad07a7bf113d5ed3f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/inventory/Inventory.js#0003:EquipSlot","exportIndex":3,"name":"EquipSlot","kind":"constant","signature":"EquipSlot","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/inventory/index.md","moduleTitle":"gameplay/inventory/index","source":"engine/gameplay/inventory/index.js","import":"/engine/gameplay/inventory/index.js","sourceHash":"6b355e89862004a11957f4dce6c669b8a2d3e7dade3978ee898162536bddd4b6","subsystem":"engine","recordType":"api-module","id":"module:engine/gameplay/inventory/index.js","title":"gameplay/inventory/index","summary":"","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/inventory/index.md","moduleTitle":"gameplay/inventory/index","source":"engine/gameplay/inventory/index.js","import":"/engine/gameplay/inventory/index.js","sourceHash":"6b355e89862004a11957f4dce6c669b8a2d3e7dade3978ee898162536bddd4b6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/inventory/index.js#0000:EquipSlot","exportIndex":0,"name":"EquipSlot","kind":"re-export","signature":"EquipSlot","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/inventory/index.md","moduleTitle":"gameplay/inventory/index","source":"engine/gameplay/inventory/index.js","import":"/engine/gameplay/inventory/index.js","sourceHash":"6b355e89862004a11957f4dce6c669b8a2d3e7dade3978ee898162536bddd4b6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/inventory/index.js#0001:Inventory","exportIndex":1,"name":"Inventory","kind":"re-export","signature":"Inventory","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/inventory/index.md","moduleTitle":"gameplay/inventory/index","source":"engine/gameplay/inventory/index.js","import":"/engine/gameplay/inventory/index.js","sourceHash":"6b355e89862004a11957f4dce6c669b8a2d3e7dade3978ee898162536bddd4b6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/inventory/index.js#0002:createInventory","exportIndex":2,"name":"createInventory","kind":"re-export","signature":"createInventory","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/inventory/index.md","moduleTitle":"gameplay/inventory/index","source":"engine/gameplay/inventory/index.js","import":"/engine/gameplay/inventory/index.js","sourceHash":"6b355e89862004a11957f4dce6c669b8a2d3e7dade3978ee898162536bddd4b6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/inventory/index.js#0003:default","exportIndex":3,"name":"default","kind":"re-export","signature":"default","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/inventory/index.md","moduleTitle":"gameplay/inventory/index","source":"engine/gameplay/inventory/index.js","import":"/engine/gameplay/inventory/index.js","sourceHash":"6b355e89862004a11957f4dce6c669b8a2d3e7dade3978ee898162536bddd4b6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/inventory/index.js#0004:defaultResolveEquipSlot","exportIndex":4,"name":"defaultResolveEquipSlot","kind":"re-export","signature":"defaultResolveEquipSlot","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/items/ItemOwnership.md","moduleTitle":"gameplay/items/ItemOwnership","source":"engine/gameplay/items/ItemOwnership.js","import":"/engine/gameplay/items/ItemOwnership.js","sourceHash":"b62ba607a847d7ddf95f786d9a2102bca0d5d2b6ba3fa8c4b041e915b4731e0c","subsystem":"engine","recordType":"api-module","id":"module:engine/gameplay/items/ItemOwnership.js","title":"gameplay/items/ItemOwnership","summary":"ItemOwnership — Tracks who owns what, detects theft, handles transfers.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/items/ItemOwnership.md","moduleTitle":"gameplay/items/ItemOwnership","source":"engine/gameplay/items/ItemOwnership.js","import":"/engine/gameplay/items/ItemOwnership.js","sourceHash":"b62ba607a847d7ddf95f786d9a2102bca0d5d2b6ba3fa8c4b041e915b4731e0c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/items/ItemOwnership.js#0000:ItemOwnership","exportIndex":0,"name":"ItemOwnership","kind":"class","signature":"class ItemOwnership","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/items/ItemOwnership.md","moduleTitle":"gameplay/items/ItemOwnership","source":"engine/gameplay/items/ItemOwnership.js","import":"/engine/gameplay/items/ItemOwnership.js","sourceHash":"b62ba607a847d7ddf95f786d9a2102bca0d5d2b6ba3fa8c4b041e915b4731e0c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/items/ItemOwnership.js#0001:createOwnedItem","exportIndex":1,"name":"createOwnedItem","kind":"function","signature":"createOwnedItem(config)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/items/ItemOwnership.md","moduleTitle":"gameplay/items/ItemOwnership","source":"engine/gameplay/items/ItemOwnership.js","import":"/engine/gameplay/items/ItemOwnership.js","sourceHash":"b62ba607a847d7ddf95f786d9a2102bca0d5d2b6ba3fa8c4b041e915b4731e0c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/items/ItemOwnership.js#0002:TransferType","exportIndex":2,"name":"TransferType","kind":"constant","signature":"TransferType","summary":"ItemOwnership — Tracks who owns what, detects theft, handles transfers."}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/items/ItemSoulSystem.md","moduleTitle":"gameplay/items/ItemSoulSystem","source":"engine/gameplay/items/ItemSoulSystem.js","import":"/engine/gameplay/items/ItemSoulSystem.js","sourceHash":"ef9c5771d1798031d9788d8446ce72761497685de5828dc4c1b9ebc4b2b10270","subsystem":"engine","recordType":"api-module","id":"module:engine/gameplay/items/ItemSoulSystem.js","title":"gameplay/items/ItemSoulSystem","summary":"ItemSoulSystem — Items slowly gain souls through history. Stages: Normal → Remembered → Resonant → Awakened → Talking → Contract Item Soul growth triggers: named, used often, saved someone, repaired many times, inherited, used in major battles, exposed to domains, part of a contract, emotionally important, connected to death/rescue/betrayal/redemption.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/items/ItemSoulSystem.md","moduleTitle":"gameplay/items/ItemSoulSystem","source":"engine/gameplay/items/ItemSoulSystem.js","import":"/engine/gameplay/items/ItemSoulSystem.js","sourceHash":"ef9c5771d1798031d9788d8446ce72761497685de5828dc4c1b9ebc4b2b10270","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/items/ItemSoulSystem.js#0000:ItemSoulSystem","exportIndex":0,"name":"ItemSoulSystem","kind":"class","signature":"class ItemSoulSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/items/ItemSoulSystem.md","moduleTitle":"gameplay/items/ItemSoulSystem","source":"engine/gameplay/items/ItemSoulSystem.js","import":"/engine/gameplay/items/ItemSoulSystem.js","sourceHash":"ef9c5771d1798031d9788d8446ce72761497685de5828dc4c1b9ebc4b2b10270","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/items/ItemSoulSystem.js#0001:SoulStage","exportIndex":1,"name":"SoulStage","kind":"constant","signature":"SoulStage","summary":"ItemSoulSystem — Items slowly gain souls through history. Stages: Normal → Remembered → Resonant → Awakened → Talking → Contract Item Soul growth triggers: named, used often, saved someone, repaired many times, inherited, used in major battles, exposed to domains, part of a contract, emotionally important, connected to death/rescue/betrayal/redemption."}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/items/ItemSoulSystem.md","moduleTitle":"gameplay/items/ItemSoulSystem","source":"engine/gameplay/items/ItemSoulSystem.js","import":"/engine/gameplay/items/ItemSoulSystem.js","sourceHash":"ef9c5771d1798031d9788d8446ce72761497685de5828dc4c1b9ebc4b2b10270","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/items/ItemSoulSystem.js#0002:SOUL_STAGE_NAMES","exportIndex":2,"name":"SOUL_STAGE_NAMES","kind":"constant","signature":"SOUL_STAGE_NAMES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/items/index.md","moduleTitle":"gameplay/items/index","source":"engine/gameplay/items/index.js","import":"/engine/gameplay/items/index.js","sourceHash":"5d574ddaa25664dadf5a2fef3c01f15e2d0228b06ffc9e7da7f74c7389474f34","subsystem":"engine","recordType":"api-module","id":"module:engine/gameplay/items/index.js","title":"gameplay/items/index","summary":"","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/items/index.md","moduleTitle":"gameplay/items/index","source":"engine/gameplay/items/index.js","import":"/engine/gameplay/items/index.js","sourceHash":"5d574ddaa25664dadf5a2fef3c01f15e2d0228b06ffc9e7da7f74c7389474f34","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/items/index.js#0000:ItemOwnership","exportIndex":0,"name":"ItemOwnership","kind":"re-export","signature":"ItemOwnership","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/items/index.md","moduleTitle":"gameplay/items/index","source":"engine/gameplay/items/index.js","import":"/engine/gameplay/items/index.js","sourceHash":"5d574ddaa25664dadf5a2fef3c01f15e2d0228b06ffc9e7da7f74c7389474f34","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/items/index.js#0001:ItemSoulSystem","exportIndex":1,"name":"ItemSoulSystem","kind":"re-export","signature":"ItemSoulSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/items/index.md","moduleTitle":"gameplay/items/index","source":"engine/gameplay/items/index.js","import":"/engine/gameplay/items/index.js","sourceHash":"5d574ddaa25664dadf5a2fef3c01f15e2d0228b06ffc9e7da7f74c7389474f34","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/items/index.js#0002:SOUL_STAGE_NAMES","exportIndex":2,"name":"SOUL_STAGE_NAMES","kind":"re-export","signature":"SOUL_STAGE_NAMES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/items/index.md","moduleTitle":"gameplay/items/index","source":"engine/gameplay/items/index.js","import":"/engine/gameplay/items/index.js","sourceHash":"5d574ddaa25664dadf5a2fef3c01f15e2d0228b06ffc9e7da7f74c7389474f34","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/items/index.js#0003:SoulStage","exportIndex":3,"name":"SoulStage","kind":"re-export","signature":"SoulStage","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/items/index.md","moduleTitle":"gameplay/items/index","source":"engine/gameplay/items/index.js","import":"/engine/gameplay/items/index.js","sourceHash":"5d574ddaa25664dadf5a2fef3c01f15e2d0228b06ffc9e7da7f74c7389474f34","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/items/index.js#0004:TransferType","exportIndex":4,"name":"TransferType","kind":"re-export","signature":"TransferType","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/items/index.md","moduleTitle":"gameplay/items/index","source":"engine/gameplay/items/index.js","import":"/engine/gameplay/items/index.js","sourceHash":"5d574ddaa25664dadf5a2fef3c01f15e2d0228b06ffc9e7da7f74c7389474f34","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/items/index.js#0005:createOwnedItem","exportIndex":5,"name":"createOwnedItem","kind":"re-export","signature":"createOwnedItem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/items/index.md","moduleTitle":"gameplay/items/index","source":"engine/gameplay/items/index.js","import":"/engine/gameplay/items/index.js","sourceHash":"5d574ddaa25664dadf5a2fef3c01f15e2d0228b06ffc9e7da7f74c7389474f34","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/items/index.js#0006:default","exportIndex":6,"name":"default","kind":"re-export","signature":"default","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/BackgroundMatcher.md","moduleTitle":"gameplay/narrative/BackgroundMatcher","source":"engine/gameplay/narrative/BackgroundMatcher.js","import":"/engine/gameplay/narrative/BackgroundMatcher.js","sourceHash":"671b84924877d94019feecd39d644b2af81cf099ddc382040dc9a39e896f1e76","subsystem":"engine","recordType":"api-module","id":"module:engine/gameplay/narrative/BackgroundMatcher.js","title":"gameplay/narrative/BackgroundMatcher","summary":"BackgroundMatcher — Extracts origin tags from player-written background text. The player types a \"soul memory\" and the system extracts semantic tags that drive world generation: family type, culture, social status, early hardships, resolve seeds, and starting storylets. Uses keyword/phrase matching with weighted scoring. No heavy ML needed for the first playable — just pattern matching with synonyms.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/BackgroundMatcher.md","moduleTitle":"gameplay/narrative/BackgroundMatcher","source":"engine/gameplay/narrative/BackgroundMatcher.js","import":"/engine/gameplay/narrative/BackgroundMatcher.js","sourceHash":"671b84924877d94019feecd39d644b2af81cf099ddc382040dc9a39e896f1e76","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/narrative/BackgroundMatcher.js#0000:extractOriginTags","exportIndex":0,"name":"extractOriginTags","kind":"function","signature":"extractOriginTags(text)","summary":"Extract origin tags from player-written background text."}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/BackgroundMatcher.md","moduleTitle":"gameplay/narrative/BackgroundMatcher","source":"engine/gameplay/narrative/BackgroundMatcher.js","import":"/engine/gameplay/narrative/BackgroundMatcher.js","sourceHash":"671b84924877d94019feecd39d644b2af81cf099ddc382040dc9a39e896f1e76","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/narrative/BackgroundMatcher.js#0001:mapTagsToOrigin","exportIndex":1,"name":"mapTagsToOrigin","kind":"function","signature":"mapTagsToOrigin(tagResult)","summary":"Map extracted tags to world generation parameters."}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/DialogueSystem.md","moduleTitle":"gameplay/narrative/DialogueSystem","source":"engine/gameplay/narrative/DialogueSystem.js","import":"/engine/gameplay/narrative/DialogueSystem.js","sourceHash":"a5580ae0cea0b3eae85580ddb165bdba50dfdee8123ed08abd2de89c46a11b90","subsystem":"engine","recordType":"api-module","id":"module:engine/gameplay/narrative/DialogueSystem.js","title":"gameplay/narrative/DialogueSystem","summary":"DialogueSystem — Dynamic narrative template system. Pipeline: event → intent → template → mood → voice layer → relationship tone → final line NPC speech uses templates, not generative AI. The voice layer changes sentence length, glue words, confidence, politeness, swearing, emotional intensity.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/DialogueSystem.md","moduleTitle":"gameplay/narrative/DialogueSystem","source":"engine/gameplay/narrative/DialogueSystem.js","import":"/engine/gameplay/narrative/DialogueSystem.js","sourceHash":"a5580ae0cea0b3eae85580ddb165bdba50dfdee8123ed08abd2de89c46a11b90","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/narrative/DialogueSystem.js#0000:DialogueSystem","exportIndex":0,"name":"DialogueSystem","kind":"class","signature":"class DialogueSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/DialogueSystem.md","moduleTitle":"gameplay/narrative/DialogueSystem","source":"engine/gameplay/narrative/DialogueSystem.js","import":"/engine/gameplay/narrative/DialogueSystem.js","sourceHash":"a5580ae0cea0b3eae85580ddb165bdba50dfdee8123ed08abd2de89c46a11b90","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/narrative/DialogueSystem.js#0001:VoiceStyle","exportIndex":1,"name":"VoiceStyle","kind":"constant","signature":"VoiceStyle","summary":"DialogueSystem — Dynamic narrative template system. Pipeline: event → intent → template → mood → voice layer → relationship tone → final line NPC speech uses templates, not generative AI. The voice layer changes sentence length, glue words, confidence, politeness, swearing, emotional intensity."}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/DialogueTree.md","moduleTitle":"gameplay/narrative/DialogueTree","source":"engine/gameplay/narrative/DialogueTree.js","import":"/engine/gameplay/narrative/DialogueTree.js","sourceHash":"45a9de51618888f22958a9be07e9ec14538c6d8d3d129f537bff31427ae0fe4b","subsystem":"engine","recordType":"api-module","id":"module:engine/gameplay/narrative/DialogueTree.js","title":"gameplay/narrative/DialogueTree","summary":"DialogueRunner — Executes a dialogue tree, manages state, and produces UI output.","exportCount":8}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/DialogueTree.md","moduleTitle":"gameplay/narrative/DialogueTree","source":"engine/gameplay/narrative/DialogueTree.js","import":"/engine/gameplay/narrative/DialogueTree.js","sourceHash":"45a9de51618888f22958a9be07e9ec14538c6d8d3d129f537bff31427ae0fe4b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/narrative/DialogueTree.js#0000:DialogueRunner","exportIndex":0,"name":"DialogueRunner","kind":"class","signature":"class DialogueRunner","summary":"DialogueRunner — Executes a dialogue tree, manages state, and produces UI output."}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/DialogueTree.md","moduleTitle":"gameplay/narrative/DialogueTree","source":"engine/gameplay/narrative/DialogueTree.js","import":"/engine/gameplay/narrative/DialogueTree.js","sourceHash":"45a9de51618888f22958a9be07e9ec14538c6d8d3d129f537bff31427ae0fe4b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/narrative/DialogueTree.js#0001:node","exportIndex":1,"name":"node","kind":"function","signature":"node(type, data)","summary":"Create a dialogue node."}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/DialogueTree.md","moduleTitle":"gameplay/narrative/DialogueTree","source":"engine/gameplay/narrative/DialogueTree.js","import":"/engine/gameplay/narrative/DialogueTree.js","sourceHash":"45a9de51618888f22958a9be07e9ec14538c6d8d3d129f537bff31427ae0fe4b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/narrative/DialogueTree.js#0002:textNode","exportIndex":2,"name":"textNode","kind":"function","signature":"textNode(speaker, text, next)","summary":"Shorthand builders."}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/DialogueTree.md","moduleTitle":"gameplay/narrative/DialogueTree","source":"engine/gameplay/narrative/DialogueTree.js","import":"/engine/gameplay/narrative/DialogueTree.js","sourceHash":"45a9de51618888f22958a9be07e9ec14538c6d8d3d129f537bff31427ae0fe4b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/narrative/DialogueTree.js#0003:choiceNode","exportIndex":3,"name":"choiceNode","kind":"function","signature":"choiceNode(prompt, choices)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/DialogueTree.md","moduleTitle":"gameplay/narrative/DialogueTree","source":"engine/gameplay/narrative/DialogueTree.js","import":"/engine/gameplay/narrative/DialogueTree.js","sourceHash":"45a9de51618888f22958a9be07e9ec14538c6d8d3d129f537bff31427ae0fe4b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/narrative/DialogueTree.js#0004:branchNode","exportIndex":4,"name":"branchNode","kind":"function","signature":"branchNode(variable, branches, fallback)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/DialogueTree.md","moduleTitle":"gameplay/narrative/DialogueTree","source":"engine/gameplay/narrative/DialogueTree.js","import":"/engine/gameplay/narrative/DialogueTree.js","sourceHash":"45a9de51618888f22958a9be07e9ec14538c6d8d3d129f537bff31427ae0fe4b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/narrative/DialogueTree.js#0005:setNode","exportIndex":5,"name":"setNode","kind":"function","signature":"setNode(variable, value, next)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/DialogueTree.md","moduleTitle":"gameplay/narrative/DialogueTree","source":"engine/gameplay/narrative/DialogueTree.js","import":"/engine/gameplay/narrative/DialogueTree.js","sourceHash":"45a9de51618888f22958a9be07e9ec14538c6d8d3d129f537bff31427ae0fe4b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/narrative/DialogueTree.js#0006:endNode","exportIndex":6,"name":"endNode","kind":"function","signature":"endNode(action)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/DialogueTree.md","moduleTitle":"gameplay/narrative/DialogueTree","source":"engine/gameplay/narrative/DialogueTree.js","import":"/engine/gameplay/narrative/DialogueTree.js","sourceHash":"45a9de51618888f22958a9be07e9ec14538c6d8d3d129f537bff31427ae0fe4b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/narrative/DialogueTree.js#0007:NodeType","exportIndex":7,"name":"NodeType","kind":"constant","signature":"NodeType","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/LifePhases.md","moduleTitle":"gameplay/narrative/LifePhases","source":"engine/gameplay/narrative/LifePhases.js","import":"/engine/gameplay/narrative/LifePhases.js","sourceHash":"ff0851c9a8188b08b67e4bf57a8192936cd46709432254b730482bb43ba08fb2","subsystem":"engine","recordType":"api-module","id":"module:engine/gameplay/narrative/LifePhases.js","title":"gameplay/narrative/LifePhases","summary":"LifePhases — Controls the origin sequence: birth → childhood → crisis → youth → main game. Each phase runs a sequence of events and storylets, then transitions to the next. The player watches/interacts through text during early phases, then gains full control at Youth.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/LifePhases.md","moduleTitle":"gameplay/narrative/LifePhases","source":"engine/gameplay/narrative/LifePhases.js","import":"/engine/gameplay/narrative/LifePhases.js","sourceHash":"ff0851c9a8188b08b67e4bf57a8192936cd46709432254b730482bb43ba08fb2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/narrative/LifePhases.js#0000:LifePhases","exportIndex":0,"name":"LifePhases","kind":"class","signature":"class LifePhases","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/LifePhases.md","moduleTitle":"gameplay/narrative/LifePhases","source":"engine/gameplay/narrative/LifePhases.js","import":"/engine/gameplay/narrative/LifePhases.js","sourceHash":"ff0851c9a8188b08b67e4bf57a8192936cd46709432254b730482bb43ba08fb2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/narrative/LifePhases.js#0001:Phase","exportIndex":1,"name":"Phase","kind":"constant","signature":"Phase","summary":"LifePhases — Controls the origin sequence: birth → childhood → crisis → youth → main game. Each phase runs a sequence of events and storylets, then transitions to the next. The player watches/interacts through text during early phases, then gains full control at Youth."}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/OriginGenerator.md","moduleTitle":"gameplay/narrative/OriginGenerator","source":"engine/gameplay/narrative/OriginGenerator.js","import":"/engine/gameplay/narrative/OriginGenerator.js","sourceHash":"3afbfb507476636365d4150eda680d1e04b6b7ca01ca71babeedc507e1bb9678","subsystem":"engine","recordType":"api-module","id":"module:engine/gameplay/narrative/OriginGenerator.js","title":"gameplay/narrative/OriginGenerator","summary":"Generate a full origin from mapped tags.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/OriginGenerator.md","moduleTitle":"gameplay/narrative/OriginGenerator","source":"engine/gameplay/narrative/OriginGenerator.js","import":"/engine/gameplay/narrative/OriginGenerator.js","sourceHash":"3afbfb507476636365d4150eda680d1e04b6b7ca01ca71babeedc507e1bb9678","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/narrative/OriginGenerator.js#0000:generateOrigin","exportIndex":0,"name":"generateOrigin","kind":"function","signature":"generateOrigin(origin, suggestedName)","summary":"Generate a full origin from mapped tags."}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/SituationGraph.md","moduleTitle":"gameplay/narrative/SituationGraph","source":"engine/gameplay/narrative/SituationGraph.js","import":"/engine/gameplay/narrative/SituationGraph.js","sourceHash":"d165a53ca11fe62def64c89710c8d65933518977faeaccd80b3dc895b50c925d","subsystem":"engine","recordType":"api-module","id":"module:engine/gameplay/narrative/SituationGraph.js","title":"gameplay/narrative/SituationGraph","summary":"SituationGraph — Selects life pressure situations for the player. Situation buckets: family, survival, crime, faction, power, exploration, social, build/dig, item soul, law, domain, revenge, redemption. Chooses situations based on player background, family state, location, NPC relationships, faction reputation, active crimes, wealth, danger, resolve path, recent failures/victories.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/SituationGraph.md","moduleTitle":"gameplay/narrative/SituationGraph","source":"engine/gameplay/narrative/SituationGraph.js","import":"/engine/gameplay/narrative/SituationGraph.js","sourceHash":"d165a53ca11fe62def64c89710c8d65933518977faeaccd80b3dc895b50c925d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/narrative/SituationGraph.js#0000:SituationGraph","exportIndex":0,"name":"SituationGraph","kind":"class","signature":"class SituationGraph","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/SituationGraph.md","moduleTitle":"gameplay/narrative/SituationGraph","source":"engine/gameplay/narrative/SituationGraph.js","import":"/engine/gameplay/narrative/SituationGraph.js","sourceHash":"d165a53ca11fe62def64c89710c8d65933518977faeaccd80b3dc895b50c925d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/narrative/SituationGraph.js#0001:SituationBucket","exportIndex":1,"name":"SituationBucket","kind":"constant","signature":"SituationBucket","summary":"SituationGraph — Selects life pressure situations for the player. Situation buckets: family, survival, crime, faction, power, exploration, social, build/dig, item soul, law, domain, revenge, redemption. Chooses situations based on player background, family state, location, NPC relationships, faction reputation, active crimes, wealth, danger, resolve path, recent failures/victories."}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/StoryGraph.md","moduleTitle":"gameplay/narrative/StoryGraph","source":"engine/gameplay/narrative/StoryGraph.js","import":"/engine/gameplay/narrative/StoryGraph.js","sourceHash":"0f44ada44637fa6bde6b879b1cef17ed6d8cbb9f55151accc809254395749168","subsystem":"engine","recordType":"api-module","id":"module:engine/gameplay/narrative/StoryGraph.js","title":"gameplay/narrative/StoryGraph","summary":"StoryGraph — Storylet engine for LIFE. Stories are storylets, not one fixed script. A storylet is a small reusable story event that triggers when conditions are true. Each storylet has: trigger conditions, cast, stakes, choices, consequences, memories, and graph updates.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/StoryGraph.md","moduleTitle":"gameplay/narrative/StoryGraph","source":"engine/gameplay/narrative/StoryGraph.js","import":"/engine/gameplay/narrative/StoryGraph.js","sourceHash":"0f44ada44637fa6bde6b879b1cef17ed6d8cbb9f55151accc809254395749168","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/narrative/StoryGraph.js#0000:StoryGraph","exportIndex":0,"name":"StoryGraph","kind":"class","signature":"class StoryGraph","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/StoryGraph.md","moduleTitle":"gameplay/narrative/StoryGraph","source":"engine/gameplay/narrative/StoryGraph.js","import":"/engine/gameplay/narrative/StoryGraph.js","sourceHash":"0f44ada44637fa6bde6b879b1cef17ed6d8cbb9f55151accc809254395749168","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/narrative/StoryGraph.js#0001:createStorylet","exportIndex":1,"name":"createStorylet","kind":"function","signature":"createStorylet(config)","summary":"Create a storylet definition."}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/StoryGraph.md","moduleTitle":"gameplay/narrative/StoryGraph","source":"engine/gameplay/narrative/StoryGraph.js","import":"/engine/gameplay/narrative/StoryGraph.js","sourceHash":"0f44ada44637fa6bde6b879b1cef17ed6d8cbb9f55151accc809254395749168","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/narrative/StoryGraph.js#0002:StoryletRarity","exportIndex":2,"name":"StoryletRarity","kind":"constant","signature":"StoryletRarity","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/WorldDirector.md","moduleTitle":"gameplay/narrative/WorldDirector","source":"engine/gameplay/narrative/WorldDirector.js","import":"/engine/gameplay/narrative/WorldDirector.js","sourceHash":"3d99037389e388a6639ae3978554f1f80454a6a7831f96fccfe5b3a81ad506df","subsystem":"engine","recordType":"api-module","id":"module:engine/gameplay/narrative/WorldDirector.js","title":"gameplay/narrative/WorldDirector","summary":"WorldDirector — Controls pacing and selects world events. Watches: player stress, supplies, family conflict, recent fights, deaths, victories, crew size, base strength, faction anger, unresolved crimes, resolve growth, domain activity. Selects events to create: pressure → relief → pressure → consequence. Not constant chaos.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/WorldDirector.md","moduleTitle":"gameplay/narrative/WorldDirector","source":"engine/gameplay/narrative/WorldDirector.js","import":"/engine/gameplay/narrative/WorldDirector.js","sourceHash":"3d99037389e388a6639ae3978554f1f80454a6a7831f96fccfe5b3a81ad506df","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/narrative/WorldDirector.js#0000:WorldDirector","exportIndex":0,"name":"WorldDirector","kind":"class","signature":"class WorldDirector","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/WorldDirector.md","moduleTitle":"gameplay/narrative/WorldDirector","source":"engine/gameplay/narrative/WorldDirector.js","import":"/engine/gameplay/narrative/WorldDirector.js","sourceHash":"3d99037389e388a6639ae3978554f1f80454a6a7831f96fccfe5b3a81ad506df","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/narrative/WorldDirector.js#0001:DirectorEventType","exportIndex":1,"name":"DirectorEventType","kind":"constant","signature":"DirectorEventType","summary":"WorldDirector — Controls pacing and selects world events. Watches: player stress, supplies, family conflict, recent fights, deaths, victories, crew size, base strength, faction anger, unresolved crimes, resolve growth, domain activity. Selects events to create: pressure → relief → pressure → consequence. Not constant chaos."}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/index.md","moduleTitle":"gameplay/narrative/index","source":"engine/gameplay/narrative/index.js","import":"/engine/gameplay/narrative/index.js","sourceHash":"dabd9070596d5a2353c65479a505874df568d3c17a34ec0faa48dacc608fbc3f","subsystem":"engine","recordType":"api-module","id":"module:engine/gameplay/narrative/index.js","title":"gameplay/narrative/index","summary":"","exportCount":23}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/index.md","moduleTitle":"gameplay/narrative/index","source":"engine/gameplay/narrative/index.js","import":"/engine/gameplay/narrative/index.js","sourceHash":"dabd9070596d5a2353c65479a505874df568d3c17a34ec0faa48dacc608fbc3f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/narrative/index.js#0000:CORE_STORYLETS","exportIndex":0,"name":"CORE_STORYLETS","kind":"re-export","signature":"CORE_STORYLETS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/index.md","moduleTitle":"gameplay/narrative/index","source":"engine/gameplay/narrative/index.js","import":"/engine/gameplay/narrative/index.js","sourceHash":"dabd9070596d5a2353c65479a505874df568d3c17a34ec0faa48dacc608fbc3f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/narrative/index.js#0001:DialogueRunner","exportIndex":1,"name":"DialogueRunner","kind":"re-export","signature":"DialogueRunner","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/index.md","moduleTitle":"gameplay/narrative/index","source":"engine/gameplay/narrative/index.js","import":"/engine/gameplay/narrative/index.js","sourceHash":"dabd9070596d5a2353c65479a505874df568d3c17a34ec0faa48dacc608fbc3f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/narrative/index.js#0002:DialogueSystem","exportIndex":2,"name":"DialogueSystem","kind":"re-export","signature":"DialogueSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/index.md","moduleTitle":"gameplay/narrative/index","source":"engine/gameplay/narrative/index.js","import":"/engine/gameplay/narrative/index.js","sourceHash":"dabd9070596d5a2353c65479a505874df568d3c17a34ec0faa48dacc608fbc3f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/narrative/index.js#0003:DirectorEventType","exportIndex":3,"name":"DirectorEventType","kind":"re-export","signature":"DirectorEventType","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/index.md","moduleTitle":"gameplay/narrative/index","source":"engine/gameplay/narrative/index.js","import":"/engine/gameplay/narrative/index.js","sourceHash":"dabd9070596d5a2353c65479a505874df568d3c17a34ec0faa48dacc608fbc3f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/narrative/index.js#0004:LifePhases","exportIndex":4,"name":"LifePhases","kind":"re-export","signature":"LifePhases","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/index.md","moduleTitle":"gameplay/narrative/index","source":"engine/gameplay/narrative/index.js","import":"/engine/gameplay/narrative/index.js","sourceHash":"dabd9070596d5a2353c65479a505874df568d3c17a34ec0faa48dacc608fbc3f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/narrative/index.js#0005:NodeType","exportIndex":5,"name":"NodeType","kind":"re-export","signature":"NodeType","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/index.md","moduleTitle":"gameplay/narrative/index","source":"engine/gameplay/narrative/index.js","import":"/engine/gameplay/narrative/index.js","sourceHash":"dabd9070596d5a2353c65479a505874df568d3c17a34ec0faa48dacc608fbc3f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/narrative/index.js#0006:Phase","exportIndex":6,"name":"Phase","kind":"re-export","signature":"Phase","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/index.md","moduleTitle":"gameplay/narrative/index","source":"engine/gameplay/narrative/index.js","import":"/engine/gameplay/narrative/index.js","sourceHash":"dabd9070596d5a2353c65479a505874df568d3c17a34ec0faa48dacc608fbc3f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/narrative/index.js#0007:SituationBucket","exportIndex":7,"name":"SituationBucket","kind":"re-export","signature":"SituationBucket","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/index.md","moduleTitle":"gameplay/narrative/index","source":"engine/gameplay/narrative/index.js","import":"/engine/gameplay/narrative/index.js","sourceHash":"dabd9070596d5a2353c65479a505874df568d3c17a34ec0faa48dacc608fbc3f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/narrative/index.js#0008:SituationGraph","exportIndex":8,"name":"SituationGraph","kind":"re-export","signature":"SituationGraph","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/index.md","moduleTitle":"gameplay/narrative/index","source":"engine/gameplay/narrative/index.js","import":"/engine/gameplay/narrative/index.js","sourceHash":"dabd9070596d5a2353c65479a505874df568d3c17a34ec0faa48dacc608fbc3f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/narrative/index.js#0009:StoryGraph","exportIndex":9,"name":"StoryGraph","kind":"re-export","signature":"StoryGraph","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/index.md","moduleTitle":"gameplay/narrative/index","source":"engine/gameplay/narrative/index.js","import":"/engine/gameplay/narrative/index.js","sourceHash":"dabd9070596d5a2353c65479a505874df568d3c17a34ec0faa48dacc608fbc3f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/narrative/index.js#0010:StoryletRarity","exportIndex":10,"name":"StoryletRarity","kind":"re-export","signature":"StoryletRarity","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/index.md","moduleTitle":"gameplay/narrative/index","source":"engine/gameplay/narrative/index.js","import":"/engine/gameplay/narrative/index.js","sourceHash":"dabd9070596d5a2353c65479a505874df568d3c17a34ec0faa48dacc608fbc3f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/narrative/index.js#0011:VoiceStyle","exportIndex":11,"name":"VoiceStyle","kind":"re-export","signature":"VoiceStyle","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/index.md","moduleTitle":"gameplay/narrative/index","source":"engine/gameplay/narrative/index.js","import":"/engine/gameplay/narrative/index.js","sourceHash":"dabd9070596d5a2353c65479a505874df568d3c17a34ec0faa48dacc608fbc3f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/narrative/index.js#0012:WorldDirector","exportIndex":12,"name":"WorldDirector","kind":"re-export","signature":"WorldDirector","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/index.md","moduleTitle":"gameplay/narrative/index","source":"engine/gameplay/narrative/index.js","import":"/engine/gameplay/narrative/index.js","sourceHash":"dabd9070596d5a2353c65479a505874df568d3c17a34ec0faa48dacc608fbc3f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/narrative/index.js#0013:branchNode","exportIndex":13,"name":"branchNode","kind":"re-export","signature":"branchNode","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/index.md","moduleTitle":"gameplay/narrative/index","source":"engine/gameplay/narrative/index.js","import":"/engine/gameplay/narrative/index.js","sourceHash":"dabd9070596d5a2353c65479a505874df568d3c17a34ec0faa48dacc608fbc3f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/narrative/index.js#0014:choiceNode","exportIndex":14,"name":"choiceNode","kind":"re-export","signature":"choiceNode","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/index.md","moduleTitle":"gameplay/narrative/index","source":"engine/gameplay/narrative/index.js","import":"/engine/gameplay/narrative/index.js","sourceHash":"dabd9070596d5a2353c65479a505874df568d3c17a34ec0faa48dacc608fbc3f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/narrative/index.js#0015:createStorylet","exportIndex":15,"name":"createStorylet","kind":"re-export","signature":"createStorylet","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/index.md","moduleTitle":"gameplay/narrative/index","source":"engine/gameplay/narrative/index.js","import":"/engine/gameplay/narrative/index.js","sourceHash":"dabd9070596d5a2353c65479a505874df568d3c17a34ec0faa48dacc608fbc3f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/narrative/index.js#0016:endNode","exportIndex":16,"name":"endNode","kind":"re-export","signature":"endNode","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/index.md","moduleTitle":"gameplay/narrative/index","source":"engine/gameplay/narrative/index.js","import":"/engine/gameplay/narrative/index.js","sourceHash":"dabd9070596d5a2353c65479a505874df568d3c17a34ec0faa48dacc608fbc3f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/narrative/index.js#0017:extractOriginTags","exportIndex":17,"name":"extractOriginTags","kind":"re-export","signature":"extractOriginTags","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/index.md","moduleTitle":"gameplay/narrative/index","source":"engine/gameplay/narrative/index.js","import":"/engine/gameplay/narrative/index.js","sourceHash":"dabd9070596d5a2353c65479a505874df568d3c17a34ec0faa48dacc608fbc3f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/narrative/index.js#0018:generateOrigin","exportIndex":18,"name":"generateOrigin","kind":"re-export","signature":"generateOrigin","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/index.md","moduleTitle":"gameplay/narrative/index","source":"engine/gameplay/narrative/index.js","import":"/engine/gameplay/narrative/index.js","sourceHash":"dabd9070596d5a2353c65479a505874df568d3c17a34ec0faa48dacc608fbc3f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/narrative/index.js#0019:mapTagsToOrigin","exportIndex":19,"name":"mapTagsToOrigin","kind":"re-export","signature":"mapTagsToOrigin","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/index.md","moduleTitle":"gameplay/narrative/index","source":"engine/gameplay/narrative/index.js","import":"/engine/gameplay/narrative/index.js","sourceHash":"dabd9070596d5a2353c65479a505874df568d3c17a34ec0faa48dacc608fbc3f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/narrative/index.js#0020:node","exportIndex":20,"name":"node","kind":"re-export","signature":"node","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/index.md","moduleTitle":"gameplay/narrative/index","source":"engine/gameplay/narrative/index.js","import":"/engine/gameplay/narrative/index.js","sourceHash":"dabd9070596d5a2353c65479a505874df568d3c17a34ec0faa48dacc608fbc3f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/narrative/index.js#0021:setNode","exportIndex":21,"name":"setNode","kind":"re-export","signature":"setNode","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/index.md","moduleTitle":"gameplay/narrative/index","source":"engine/gameplay/narrative/index.js","import":"/engine/gameplay/narrative/index.js","sourceHash":"dabd9070596d5a2353c65479a505874df568d3c17a34ec0faa48dacc608fbc3f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/narrative/index.js#0022:textNode","exportIndex":22,"name":"textNode","kind":"re-export","signature":"textNode","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/storylets/core_storylets.md","moduleTitle":"gameplay/narrative/storylets/core_storylets","source":"engine/gameplay/narrative/storylets/core_storylets.js","import":"/engine/gameplay/narrative/storylets/core_storylets.js","sourceHash":"9a62e0aca86c8fc44009f8170d566c27dcb1e92b13a5c1a69c866a099ef68e79","subsystem":"engine","recordType":"api-module","id":"module:engine/gameplay/narrative/storylets/core_storylets.js","title":"gameplay/narrative/storylets/core_storylets","summary":"Core Storylet Library — Initial content for the StoryGraph. Each storylet has trigger conditions, cast selection, and execution logic.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/narrative/storylets/core_storylets.md","moduleTitle":"gameplay/narrative/storylets/core_storylets","source":"engine/gameplay/narrative/storylets/core_storylets.js","import":"/engine/gameplay/narrative/storylets/core_storylets.js","sourceHash":"9a62e0aca86c8fc44009f8170d566c27dcb1e92b13a5c1a69c866a099ef68e79","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/narrative/storylets/core_storylets.js#0000:CORE_STORYLETS","exportIndex":0,"name":"CORE_STORYLETS","kind":"constant","signature":"CORE_STORYLETS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/perception/PerceptionGraph.md","moduleTitle":"gameplay/perception/PerceptionGraph","source":"engine/gameplay/perception/PerceptionGraph.js","import":"/engine/gameplay/perception/PerceptionGraph.js","sourceHash":"00357cacb6128252042654b842e4c232883a97a4116bad9894f22be7cbfe2b94","subsystem":"engine","recordType":"api-module","id":"module:engine/gameplay/perception/PerceptionGraph.js","title":"gameplay/perception/PerceptionGraph","summary":"PerceptionGraph — Controls what the player can perceive about NPCs. NPCs have hidden truth. The player sees tags based on perception skill, distance, lighting, relationship, NPC deception, disguise, and domain effects. Tags can be WRONG if the NPC is good at hiding.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/perception/PerceptionGraph.md","moduleTitle":"gameplay/perception/PerceptionGraph","source":"engine/gameplay/perception/PerceptionGraph.js","import":"/engine/gameplay/perception/PerceptionGraph.js","sourceHash":"00357cacb6128252042654b842e4c232883a97a4116bad9894f22be7cbfe2b94","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/perception/PerceptionGraph.js#0000:PerceptionGraph","exportIndex":0,"name":"PerceptionGraph","kind":"class","signature":"class PerceptionGraph","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/perception/PerceptionGraph.md","moduleTitle":"gameplay/perception/PerceptionGraph","source":"engine/gameplay/perception/PerceptionGraph.js","import":"/engine/gameplay/perception/PerceptionGraph.js","sourceHash":"00357cacb6128252042654b842e4c232883a97a4116bad9894f22be7cbfe2b94","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/perception/PerceptionGraph.js#0001:PerceptionLevel","exportIndex":1,"name":"PerceptionLevel","kind":"constant","signature":"PerceptionLevel","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/perception/index.md","moduleTitle":"gameplay/perception/index","source":"engine/gameplay/perception/index.js","import":"/engine/gameplay/perception/index.js","sourceHash":"cabc4a1aceb6fc8472f11d955823c7fd395314632d8bbe0ef60f45755ab560db","subsystem":"engine","recordType":"api-module","id":"module:engine/gameplay/perception/index.js","title":"gameplay/perception/index","summary":"","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/perception/index.md","moduleTitle":"gameplay/perception/index","source":"engine/gameplay/perception/index.js","import":"/engine/gameplay/perception/index.js","sourceHash":"cabc4a1aceb6fc8472f11d955823c7fd395314632d8bbe0ef60f45755ab560db","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/perception/index.js#0000:PerceptionGraph","exportIndex":0,"name":"PerceptionGraph","kind":"re-export","signature":"PerceptionGraph","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/perception/index.md","moduleTitle":"gameplay/perception/index","source":"engine/gameplay/perception/index.js","import":"/engine/gameplay/perception/index.js","sourceHash":"cabc4a1aceb6fc8472f11d955823c7fd395314632d8bbe0ef60f45755ab560db","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/perception/index.js#0001:PerceptionLevel","exportIndex":1,"name":"PerceptionLevel","kind":"re-export","signature":"PerceptionLevel","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/perception/index.md","moduleTitle":"gameplay/perception/index","source":"engine/gameplay/perception/index.js","import":"/engine/gameplay/perception/index.js","sourceHash":"cabc4a1aceb6fc8472f11d955823c7fd395314632d8bbe0ef60f45755ab560db","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/perception/index.js#0002:default","exportIndex":2,"name":"default","kind":"re-export","signature":"default","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/progression/ContractSystem.md","moduleTitle":"gameplay/progression/ContractSystem","source":"engine/gameplay/progression/ContractSystem.js","import":"/engine/gameplay/progression/ContractSystem.js","sourceHash":"8ae80725a5c41eeb6a0dbc4fd6f5075b954b0b9972f711a1e6770256e0e246a4","subsystem":"engine","recordType":"api-module","id":"module:engine/gameplay/progression/ContractSystem.js","title":"gameplay/progression/ContractSystem","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/progression/ContractSystem.md","moduleTitle":"gameplay/progression/ContractSystem","source":"engine/gameplay/progression/ContractSystem.js","import":"/engine/gameplay/progression/ContractSystem.js","sourceHash":"8ae80725a5c41eeb6a0dbc4fd6f5075b954b0b9972f711a1e6770256e0e246a4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/progression/ContractSystem.js#0000:ContractSystem","exportIndex":0,"name":"ContractSystem","kind":"class","signature":"class ContractSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/progression/DomainGraph.md","moduleTitle":"gameplay/progression/DomainGraph","source":"engine/gameplay/progression/DomainGraph.js","import":"/engine/gameplay/progression/DomainGraph.js","sourceHash":"b5640c030635be785a7c9e3e44b9c00c45da36def79d5b0aff580712ea5d7416","subsystem":"engine","recordType":"api-module","id":"module:engine/gameplay/progression/DomainGraph.js","title":"gameplay/progression/DomainGraph","summary":"DomainGraph — Local rule overrides. A domain is a personal law forced onto an area. Domains are rare and earned. They modify rules within a radius, cost stamina/resolve to maintain, and have weaknesses and failure conditions. Domain rules are priority 8 in RuleGraph — they can override local reality but not engine safety or physics.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/progression/DomainGraph.md","moduleTitle":"gameplay/progression/DomainGraph","source":"engine/gameplay/progression/DomainGraph.js","import":"/engine/gameplay/progression/DomainGraph.js","sourceHash":"b5640c030635be785a7c9e3e44b9c00c45da36def79d5b0aff580712ea5d7416","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/progression/DomainGraph.js#0000:DomainGraph","exportIndex":0,"name":"DomainGraph","kind":"class","signature":"class DomainGraph","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/progression/PowerGraph.md","moduleTitle":"gameplay/progression/PowerGraph","source":"engine/gameplay/progression/PowerGraph.js","import":"/engine/gameplay/progression/PowerGraph.js","sourceHash":"0b2fbe1724948d35f8b2490350ee1f61a7c3e25db85dd313c18fc9d84c49f1b4","subsystem":"engine","recordType":"api-module","id":"module:engine/gameplay/progression/PowerGraph.js","title":"gameplay/progression/PowerGraph","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/progression/PowerGraph.md","moduleTitle":"gameplay/progression/PowerGraph","source":"engine/gameplay/progression/PowerGraph.js","import":"/engine/gameplay/progression/PowerGraph.js","sourceHash":"0b2fbe1724948d35f8b2490350ee1f61a7c3e25db85dd313c18fc9d84c49f1b4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/progression/PowerGraph.js#0000:PowerGraph","exportIndex":0,"name":"PowerGraph","kind":"class","signature":"class PowerGraph","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/progression/PowerGraph.md","moduleTitle":"gameplay/progression/PowerGraph","source":"engine/gameplay/progression/PowerGraph.js","import":"/engine/gameplay/progression/PowerGraph.js","sourceHash":"0b2fbe1724948d35f8b2490350ee1f61a7c3e25db85dd313c18fc9d84c49f1b4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/progression/PowerGraph.js#0001:createPower","exportIndex":1,"name":"createPower","kind":"function","signature":"createPower(config)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/progression/ResolveSystem.md","moduleTitle":"gameplay/progression/ResolveSystem","source":"engine/gameplay/progression/ResolveSystem.js","import":"/engine/gameplay/progression/ResolveSystem.js","sourceHash":"da1f1137044f68962a192858d2d51303318721fdb1b32ed9d59a69be5298c313","subsystem":"engine","recordType":"api-module","id":"module:engine/gameplay/progression/ResolveSystem.js","title":"gameplay/progression/ResolveSystem","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/progression/ResolveSystem.md","moduleTitle":"gameplay/progression/ResolveSystem","source":"engine/gameplay/progression/ResolveSystem.js","import":"/engine/gameplay/progression/ResolveSystem.js","sourceHash":"da1f1137044f68962a192858d2d51303318721fdb1b32ed9d59a69be5298c313","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/progression/ResolveSystem.js#0000:ResolveSystem","exportIndex":0,"name":"ResolveSystem","kind":"class","signature":"class ResolveSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/progression/index.md","moduleTitle":"gameplay/progression/index","source":"engine/gameplay/progression/index.js","import":"/engine/gameplay/progression/index.js","sourceHash":"d672cec2fe6045ec6baa8fad828da44089d905e1b4c7a40956afd654adb77f98","subsystem":"engine","recordType":"api-module","id":"module:engine/gameplay/progression/index.js","title":"gameplay/progression/index","summary":"","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/progression/index.md","moduleTitle":"gameplay/progression/index","source":"engine/gameplay/progression/index.js","import":"/engine/gameplay/progression/index.js","sourceHash":"d672cec2fe6045ec6baa8fad828da44089d905e1b4c7a40956afd654adb77f98","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/progression/index.js#0000:ContractSystem","exportIndex":0,"name":"ContractSystem","kind":"re-export","signature":"ContractSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/progression/index.md","moduleTitle":"gameplay/progression/index","source":"engine/gameplay/progression/index.js","import":"/engine/gameplay/progression/index.js","sourceHash":"d672cec2fe6045ec6baa8fad828da44089d905e1b4c7a40956afd654adb77f98","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/progression/index.js#0001:DomainGraph","exportIndex":1,"name":"DomainGraph","kind":"re-export","signature":"DomainGraph","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/progression/index.md","moduleTitle":"gameplay/progression/index","source":"engine/gameplay/progression/index.js","import":"/engine/gameplay/progression/index.js","sourceHash":"d672cec2fe6045ec6baa8fad828da44089d905e1b4c7a40956afd654adb77f98","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/progression/index.js#0002:PowerGraph","exportIndex":2,"name":"PowerGraph","kind":"re-export","signature":"PowerGraph","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/progression/index.md","moduleTitle":"gameplay/progression/index","source":"engine/gameplay/progression/index.js","import":"/engine/gameplay/progression/index.js","sourceHash":"d672cec2fe6045ec6baa8fad828da44089d905e1b4c7a40956afd654adb77f98","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/progression/index.js#0003:ResolveSystem","exportIndex":3,"name":"ResolveSystem","kind":"re-export","signature":"ResolveSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/progression/index.md","moduleTitle":"gameplay/progression/index","source":"engine/gameplay/progression/index.js","import":"/engine/gameplay/progression/index.js","sourceHash":"d672cec2fe6045ec6baa8fad828da44089d905e1b4c7a40956afd654adb77f98","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/progression/index.js#0004:createPower","exportIndex":4,"name":"createPower","kind":"re-export","signature":"createPower","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/rules/RuleGraph.md","moduleTitle":"gameplay/rules/RuleGraph","source":"engine/gameplay/rules/RuleGraph.js","import":"/engine/gameplay/rules/RuleGraph.js","sourceHash":"8014bcdfe1b098cadf7b966ccb6e87d350b71bdf56a508e9792d13f1b8e40c3d","subsystem":"engine","recordType":"api-module","id":"module:engine/gameplay/rules/RuleGraph.js","title":"gameplay/rules/RuleGraph","summary":"RuleGraph — The master rule resolver for LIFE. Everything in the world passes through RuleGraph to decide what is legal. Rules have priorities (1=highest), conditions, effects, and sources. When rules conflict, the highest priority wins. Ties break by specificity. Priority levels: 1 = Engine safety (cannot crash the game) 2 = Physics / material (fire burns wood) 3 = Survival / body (hunger kills) 4 = World rules (gravity, time) 5 = Law / faction (city forbids theft) 6 = Item rules (sword needs two hands) 7 = Contract rules (guardian vow restricts solo fighting) 8 = Domain rules (domain overrides local reality) 9 = Temporary status / visual (buff, aura, particle effect)","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/rules/RuleGraph.md","moduleTitle":"gameplay/rules/RuleGraph","source":"engine/gameplay/rules/RuleGraph.js","import":"/engine/gameplay/rules/RuleGraph.js","sourceHash":"8014bcdfe1b098cadf7b966ccb6e87d350b71bdf56a508e9792d13f1b8e40c3d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/rules/RuleGraph.js#0000:RuleGraph","exportIndex":0,"name":"RuleGraph","kind":"class","signature":"class RuleGraph","summary":"RuleGraph — singleton-style rule management and resolution."}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/rules/RuleGraph.md","moduleTitle":"gameplay/rules/RuleGraph","source":"engine/gameplay/rules/RuleGraph.js","import":"/engine/gameplay/rules/RuleGraph.js","sourceHash":"8014bcdfe1b098cadf7b966ccb6e87d350b71bdf56a508e9792d13f1b8e40c3d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/rules/RuleGraph.js#0001:createRule","exportIndex":1,"name":"createRule","kind":"function","signature":"createRule(config)","summary":"Creates a new rule object."}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/rules/RuleGraph.md","moduleTitle":"gameplay/rules/RuleGraph","source":"engine/gameplay/rules/RuleGraph.js","import":"/engine/gameplay/rules/RuleGraph.js","sourceHash":"8014bcdfe1b098cadf7b966ccb6e87d350b71bdf56a508e9792d13f1b8e40c3d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/rules/RuleGraph.js#0002:RuleCategory","exportIndex":2,"name":"RuleCategory","kind":"constant","signature":"RuleCategory","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/rules/RuleGraph.md","moduleTitle":"gameplay/rules/RuleGraph","source":"engine/gameplay/rules/RuleGraph.js","import":"/engine/gameplay/rules/RuleGraph.js","sourceHash":"8014bcdfe1b098cadf7b966ccb6e87d350b71bdf56a508e9792d13f1b8e40c3d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/rules/RuleGraph.js#0003:RuleEffect","exportIndex":3,"name":"RuleEffect","kind":"constant","signature":"RuleEffect","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/rules/index.md","moduleTitle":"gameplay/rules/index","source":"engine/gameplay/rules/index.js","import":"/engine/gameplay/rules/index.js","sourceHash":"452f3a40c249e728bd436cefb8f61e72fc455c970f7698f248c3c635ce0f7b52","subsystem":"engine","recordType":"api-module","id":"module:engine/gameplay/rules/index.js","title":"gameplay/rules/index","summary":"","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/rules/index.md","moduleTitle":"gameplay/rules/index","source":"engine/gameplay/rules/index.js","import":"/engine/gameplay/rules/index.js","sourceHash":"452f3a40c249e728bd436cefb8f61e72fc455c970f7698f248c3c635ce0f7b52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/rules/index.js#0000:RuleCategory","exportIndex":0,"name":"RuleCategory","kind":"re-export","signature":"RuleCategory","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/rules/index.md","moduleTitle":"gameplay/rules/index","source":"engine/gameplay/rules/index.js","import":"/engine/gameplay/rules/index.js","sourceHash":"452f3a40c249e728bd436cefb8f61e72fc455c970f7698f248c3c635ce0f7b52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/rules/index.js#0001:RuleEffect","exportIndex":1,"name":"RuleEffect","kind":"re-export","signature":"RuleEffect","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/rules/index.md","moduleTitle":"gameplay/rules/index","source":"engine/gameplay/rules/index.js","import":"/engine/gameplay/rules/index.js","sourceHash":"452f3a40c249e728bd436cefb8f61e72fc455c970f7698f248c3c635ce0f7b52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/rules/index.js#0002:RuleGraph","exportIndex":2,"name":"RuleGraph","kind":"re-export","signature":"RuleGraph","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/rules/index.md","moduleTitle":"gameplay/rules/index","source":"engine/gameplay/rules/index.js","import":"/engine/gameplay/rules/index.js","sourceHash":"452f3a40c249e728bd436cefb8f61e72fc455c970f7698f248c3c635ce0f7b52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/rules/index.js#0003:createRule","exportIndex":3,"name":"createRule","kind":"re-export","signature":"createRule","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/rules/index.md","moduleTitle":"gameplay/rules/index","source":"engine/gameplay/rules/index.js","import":"/engine/gameplay/rules/index.js","sourceHash":"452f3a40c249e728bd436cefb8f61e72fc455c970f7698f248c3c635ce0f7b52","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/rules/index.js#0004:default","exportIndex":4,"name":"default","kind":"re-export","signature":"default","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/simulation/SimulationManager.md","moduleTitle":"gameplay/simulation/SimulationManager","source":"engine/gameplay/simulation/SimulationManager.js","import":"/engine/gameplay/simulation/SimulationManager.js","sourceHash":"c79d82c746d0aa692499661e9156a79f6cf48831cba7f41a94bfe5ced3052217","subsystem":"engine","recordType":"api-module","id":"module:engine/gameplay/simulation/SimulationManager.js","title":"gameplay/simulation/SimulationManager","summary":"SimulationManager — Controls simulation levels for all entities. Active:  Near player — full behavior, every tick Warm:    Same town — slower updates, simplified drives Cold:    Far away — daily summary simulation Frozen:  No updates until touched by event Transition triggers: player proximity, event targeting, faction actions.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/simulation/SimulationManager.md","moduleTitle":"gameplay/simulation/SimulationManager","source":"engine/gameplay/simulation/SimulationManager.js","import":"/engine/gameplay/simulation/SimulationManager.js","sourceHash":"c79d82c746d0aa692499661e9156a79f6cf48831cba7f41a94bfe5ced3052217","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/simulation/SimulationManager.js#0000:SimulationManager","exportIndex":0,"name":"SimulationManager","kind":"class","signature":"class SimulationManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/simulation/SimulationManager.md","moduleTitle":"gameplay/simulation/SimulationManager","source":"engine/gameplay/simulation/SimulationManager.js","import":"/engine/gameplay/simulation/SimulationManager.js","sourceHash":"c79d82c746d0aa692499661e9156a79f6cf48831cba7f41a94bfe5ced3052217","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/simulation/SimulationManager.js#0001:SimLevel","exportIndex":1,"name":"SimLevel","kind":"constant","signature":"SimLevel","summary":"SimulationManager — Controls simulation levels for all entities. Active:  Near player — full behavior, every tick Warm:    Same town — slower updates, simplified drives Cold:    Far away — daily summary simulation Frozen:  No updates until touched by event Transition triggers: player proximity, event targeting, faction actions."}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/simulation/index.md","moduleTitle":"gameplay/simulation/index","source":"engine/gameplay/simulation/index.js","import":"/engine/gameplay/simulation/index.js","sourceHash":"8d45bbf80e2a8299b5592a71ef18e868dc9f95e324009d34d7080bb30a5e6fd7","subsystem":"engine","recordType":"api-module","id":"module:engine/gameplay/simulation/index.js","title":"gameplay/simulation/index","summary":"","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/simulation/index.md","moduleTitle":"gameplay/simulation/index","source":"engine/gameplay/simulation/index.js","import":"/engine/gameplay/simulation/index.js","sourceHash":"8d45bbf80e2a8299b5592a71ef18e868dc9f95e324009d34d7080bb30a5e6fd7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/simulation/index.js#0000:SimLevel","exportIndex":0,"name":"SimLevel","kind":"re-export","signature":"SimLevel","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/simulation/index.md","moduleTitle":"gameplay/simulation/index","source":"engine/gameplay/simulation/index.js","import":"/engine/gameplay/simulation/index.js","sourceHash":"8d45bbf80e2a8299b5592a71ef18e868dc9f95e324009d34d7080bb30a5e6fd7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/simulation/index.js#0001:SimulationManager","exportIndex":1,"name":"SimulationManager","kind":"re-export","signature":"SimulationManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/simulation/index.md","moduleTitle":"gameplay/simulation/index","source":"engine/gameplay/simulation/index.js","import":"/engine/gameplay/simulation/index.js","sourceHash":"8d45bbf80e2a8299b5592a71ef18e868dc9f95e324009d34d7080bb30a5e6fd7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/simulation/index.js#0002:default","exportIndex":2,"name":"default","kind":"re-export","signature":"default","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/social/SoulGraph.md","moduleTitle":"gameplay/social/SoulGraph","source":"engine/gameplay/social/SoulGraph.js","import":"/engine/gameplay/social/SoulGraph.js","sourceHash":"d36fe14946ff800f603c9f7f5fe0f83ddc8736e2265d6fe54e57a22903841300","subsystem":"engine","recordType":"api-module","id":"module:engine/gameplay/social/SoulGraph.js","title":"gameplay/social/SoulGraph","summary":"SoulGraph — The social nervous system of the world. Each NPC is a \"neuron\" node. Relationships are weighted edges. Events are signals. Mood is activation state. Memory is weight change. Actions are outputs. The graph propagates influence through connections. NPC = soul node Relationship = weighted edge (trust, fear, love, hate, loyalty, resentment, familiarity) Event = signal Mood = activation state Memory = weight change Action = output","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/social/SoulGraph.md","moduleTitle":"gameplay/social/SoulGraph","source":"engine/gameplay/social/SoulGraph.js","import":"/engine/gameplay/social/SoulGraph.js","sourceHash":"d36fe14946ff800f603c9f7f5fe0f83ddc8736e2265d6fe54e57a22903841300","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/social/SoulGraph.js#0000:SoulGraph","exportIndex":0,"name":"SoulGraph","kind":"class","signature":"class SoulGraph","summary":"SoulGraph — The social nervous system of the world. Each NPC is a \"neuron\" node. Relationships are weighted edges. Events are signals. Mood is activation state. Memory is weight change. Actions are outputs. The graph propagates influence through connections. NPC = soul node Relationship = weighted edge (trust, fear, love, hate, loyalty, resentment, familiarity) Event = signal Mood = activation state Memory = weight change Action = output"}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/social/SoulGraphMessaging.md","moduleTitle":"gameplay/social/SoulGraphMessaging","source":"engine/gameplay/social/SoulGraphMessaging.js","import":"/engine/gameplay/social/SoulGraphMessaging.js","sourceHash":"687588af365ade04ad8bcdaa7cf6c666b3f99b5e160fa46e48639909629093cd","subsystem":"engine","recordType":"api-module","id":"module:engine/gameplay/social/SoulGraphMessaging.js","title":"gameplay/social/SoulGraphMessaging","summary":"Create a message.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/social/SoulGraphMessaging.md","moduleTitle":"gameplay/social/SoulGraphMessaging","source":"engine/gameplay/social/SoulGraphMessaging.js","import":"/engine/gameplay/social/SoulGraphMessaging.js","sourceHash":"687588af365ade04ad8bcdaa7cf6c666b3f99b5e160fa46e48639909629093cd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/social/SoulGraphMessaging.js#0000:SoulGraphMessaging","exportIndex":0,"name":"SoulGraphMessaging","kind":"class","signature":"class SoulGraphMessaging","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/social/SoulGraphMessaging.md","moduleTitle":"gameplay/social/SoulGraphMessaging","source":"engine/gameplay/social/SoulGraphMessaging.js","import":"/engine/gameplay/social/SoulGraphMessaging.js","sourceHash":"687588af365ade04ad8bcdaa7cf6c666b3f99b5e160fa46e48639909629093cd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/social/SoulGraphMessaging.js#0001:createMessage","exportIndex":1,"name":"createMessage","kind":"function","signature":"createMessage(config)","summary":"Create a message."}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/social/SoulGraphMessaging.md","moduleTitle":"gameplay/social/SoulGraphMessaging","source":"engine/gameplay/social/SoulGraphMessaging.js","import":"/engine/gameplay/social/SoulGraphMessaging.js","sourceHash":"687588af365ade04ad8bcdaa7cf6c666b3f99b5e160fa46e48639909629093cd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/social/SoulGraphMessaging.js#0002:MessageChannel","exportIndex":2,"name":"MessageChannel","kind":"constant","signature":"MessageChannel","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/social/index.md","moduleTitle":"gameplay/social/index","source":"engine/gameplay/social/index.js","import":"/engine/gameplay/social/index.js","sourceHash":"b0a08d4eb47dc2b52ef63fade7f392df360014adf6f3b94532d226842748a75f","subsystem":"engine","recordType":"api-module","id":"module:engine/gameplay/social/index.js","title":"gameplay/social/index","summary":"","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/social/index.md","moduleTitle":"gameplay/social/index","source":"engine/gameplay/social/index.js","import":"/engine/gameplay/social/index.js","sourceHash":"b0a08d4eb47dc2b52ef63fade7f392df360014adf6f3b94532d226842748a75f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/social/index.js#0000:MessageChannel","exportIndex":0,"name":"MessageChannel","kind":"re-export","signature":"MessageChannel","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/social/index.md","moduleTitle":"gameplay/social/index","source":"engine/gameplay/social/index.js","import":"/engine/gameplay/social/index.js","sourceHash":"b0a08d4eb47dc2b52ef63fade7f392df360014adf6f3b94532d226842748a75f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/social/index.js#0001:SoulGraph","exportIndex":1,"name":"SoulGraph","kind":"re-export","signature":"SoulGraph","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/social/index.md","moduleTitle":"gameplay/social/index","source":"engine/gameplay/social/index.js","import":"/engine/gameplay/social/index.js","sourceHash":"b0a08d4eb47dc2b52ef63fade7f392df360014adf6f3b94532d226842748a75f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/social/index.js#0002:SoulGraphMessaging","exportIndex":2,"name":"SoulGraphMessaging","kind":"re-export","signature":"SoulGraphMessaging","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/social/index.md","moduleTitle":"gameplay/social/index","source":"engine/gameplay/social/index.js","import":"/engine/gameplay/social/index.js","sourceHash":"b0a08d4eb47dc2b52ef63fade7f392df360014adf6f3b94532d226842748a75f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/social/index.js#0003:createMessage","exportIndex":3,"name":"createMessage","kind":"re-export","signature":"createMessage","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/society/CitySystem.md","moduleTitle":"gameplay/society/CitySystem","source":"engine/gameplay/society/CitySystem.js","import":"/engine/gameplay/society/CitySystem.js","sourceHash":"240b5aa53fa67642e9ac641a364fc9edf510af72a69a0ba17ba819c97dce6353","subsystem":"engine","recordType":"api-module","id":"module:engine/gameplay/society/CitySystem.js","title":"gameplay/society/CitySystem","summary":"CitySystem — City templates, population, economy, laws, reputation.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/society/CitySystem.md","moduleTitle":"gameplay/society/CitySystem","source":"engine/gameplay/society/CitySystem.js","import":"/engine/gameplay/society/CitySystem.js","sourceHash":"240b5aa53fa67642e9ac641a364fc9edf510af72a69a0ba17ba819c97dce6353","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/society/CitySystem.js#0000:CitySystem","exportIndex":0,"name":"CitySystem","kind":"class","signature":"class CitySystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/society/CitySystem.md","moduleTitle":"gameplay/society/CitySystem","source":"engine/gameplay/society/CitySystem.js","import":"/engine/gameplay/society/CitySystem.js","sourceHash":"240b5aa53fa67642e9ac641a364fc9edf510af72a69a0ba17ba819c97dce6353","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/society/CitySystem.js#0001:createCity","exportIndex":1,"name":"createCity","kind":"function","signature":"createCity(config)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/society/FactionGraph.md","moduleTitle":"gameplay/society/FactionGraph","source":"engine/gameplay/society/FactionGraph.js","import":"/engine/gameplay/society/FactionGraph.js","sourceHash":"6896c515aaeca79b4a55a26930a3d8ff4da28997f5207b66bfc435d95a8b1e9a","subsystem":"engine","recordType":"api-module","id":"module:engine/gameplay/society/FactionGraph.js","title":"gameplay/society/FactionGraph","summary":"FactionGraph — Group souls with politics, reputation, and actions. Factions track: leader, values, laws, territory, resources, enemies/allies, fear, morale, population, reputation toward player, domain users, crimes, contracts.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/society/FactionGraph.md","moduleTitle":"gameplay/society/FactionGraph","source":"engine/gameplay/society/FactionGraph.js","import":"/engine/gameplay/society/FactionGraph.js","sourceHash":"6896c515aaeca79b4a55a26930a3d8ff4da28997f5207b66bfc435d95a8b1e9a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/society/FactionGraph.js#0000:FactionGraph","exportIndex":0,"name":"FactionGraph","kind":"class","signature":"class FactionGraph","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/society/FactionGraph.md","moduleTitle":"gameplay/society/FactionGraph","source":"engine/gameplay/society/FactionGraph.js","import":"/engine/gameplay/society/FactionGraph.js","sourceHash":"6896c515aaeca79b4a55a26930a3d8ff4da28997f5207b66bfc435d95a8b1e9a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/society/FactionGraph.js#0001:createFaction","exportIndex":1,"name":"createFaction","kind":"function","signature":"createFaction(config)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/society/FactionGraph.md","moduleTitle":"gameplay/society/FactionGraph","source":"engine/gameplay/society/FactionGraph.js","import":"/engine/gameplay/society/FactionGraph.js","sourceHash":"6896c515aaeca79b4a55a26930a3d8ff4da28997f5207b66bfc435d95a8b1e9a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/society/FactionGraph.js#0002:FactionAction","exportIndex":2,"name":"FactionAction","kind":"constant","signature":"FactionAction","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/society/LawGraph.md","moduleTitle":"gameplay/society/LawGraph","source":"engine/gameplay/society/LawGraph.js","import":"/engine/gameplay/society/LawGraph.js","sourceHash":"878e0574febe2706730f2196d89ca9cfe3da2768966d83ed028a7b35d7e46bb9","subsystem":"engine","recordType":"api-module","id":"module:engine/gameplay/society/LawGraph.js","title":"gameplay/society/LawGraph","summary":"LawGraph — Crime, witnesses, punishment, and justice. Different cities and factions have different laws. Tracks: witnesses, evidence, suspicion, reputation. Punishment: bounty, exile, prison, revenge, retaliation.","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/society/LawGraph.md","moduleTitle":"gameplay/society/LawGraph","source":"engine/gameplay/society/LawGraph.js","import":"/engine/gameplay/society/LawGraph.js","sourceHash":"878e0574febe2706730f2196d89ca9cfe3da2768966d83ed028a7b35d7e46bb9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/society/LawGraph.js#0000:LawGraph","exportIndex":0,"name":"LawGraph","kind":"class","signature":"class LawGraph","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/society/LawGraph.md","moduleTitle":"gameplay/society/LawGraph","source":"engine/gameplay/society/LawGraph.js","import":"/engine/gameplay/society/LawGraph.js","sourceHash":"878e0574febe2706730f2196d89ca9cfe3da2768966d83ed028a7b35d7e46bb9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/society/LawGraph.js#0001:createCrimeRecord","exportIndex":1,"name":"createCrimeRecord","kind":"function","signature":"createCrimeRecord(config)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/society/LawGraph.md","moduleTitle":"gameplay/society/LawGraph","source":"engine/gameplay/society/LawGraph.js","import":"/engine/gameplay/society/LawGraph.js","sourceHash":"878e0574febe2706730f2196d89ca9cfe3da2768966d83ed028a7b35d7e46bb9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/society/LawGraph.js#0002:CrimeType","exportIndex":2,"name":"CrimeType","kind":"constant","signature":"CrimeType","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/society/LawGraph.md","moduleTitle":"gameplay/society/LawGraph","source":"engine/gameplay/society/LawGraph.js","import":"/engine/gameplay/society/LawGraph.js","sourceHash":"878e0574febe2706730f2196d89ca9cfe3da2768966d83ed028a7b35d7e46bb9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/society/LawGraph.js#0003:PunishmentType","exportIndex":3,"name":"PunishmentType","kind":"constant","signature":"PunishmentType","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/society/index.md","moduleTitle":"gameplay/society/index","source":"engine/gameplay/society/index.js","import":"/engine/gameplay/society/index.js","sourceHash":"d43c6d90ea93a2eb820515f61fa91bf3833856755a5b1378d39f53d6cb644b0c","subsystem":"engine","recordType":"api-module","id":"module:engine/gameplay/society/index.js","title":"gameplay/society/index","summary":"","exportCount":10}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/society/index.md","moduleTitle":"gameplay/society/index","source":"engine/gameplay/society/index.js","import":"/engine/gameplay/society/index.js","sourceHash":"d43c6d90ea93a2eb820515f61fa91bf3833856755a5b1378d39f53d6cb644b0c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/society/index.js#0000:CitySystem","exportIndex":0,"name":"CitySystem","kind":"re-export","signature":"CitySystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/society/index.md","moduleTitle":"gameplay/society/index","source":"engine/gameplay/society/index.js","import":"/engine/gameplay/society/index.js","sourceHash":"d43c6d90ea93a2eb820515f61fa91bf3833856755a5b1378d39f53d6cb644b0c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/society/index.js#0001:CrimeType","exportIndex":1,"name":"CrimeType","kind":"re-export","signature":"CrimeType","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/society/index.md","moduleTitle":"gameplay/society/index","source":"engine/gameplay/society/index.js","import":"/engine/gameplay/society/index.js","sourceHash":"d43c6d90ea93a2eb820515f61fa91bf3833856755a5b1378d39f53d6cb644b0c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/society/index.js#0002:FactionAction","exportIndex":2,"name":"FactionAction","kind":"re-export","signature":"FactionAction","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/society/index.md","moduleTitle":"gameplay/society/index","source":"engine/gameplay/society/index.js","import":"/engine/gameplay/society/index.js","sourceHash":"d43c6d90ea93a2eb820515f61fa91bf3833856755a5b1378d39f53d6cb644b0c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/society/index.js#0003:FactionGraph","exportIndex":3,"name":"FactionGraph","kind":"re-export","signature":"FactionGraph","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/society/index.md","moduleTitle":"gameplay/society/index","source":"engine/gameplay/society/index.js","import":"/engine/gameplay/society/index.js","sourceHash":"d43c6d90ea93a2eb820515f61fa91bf3833856755a5b1378d39f53d6cb644b0c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/society/index.js#0004:LawGraph","exportIndex":4,"name":"LawGraph","kind":"re-export","signature":"LawGraph","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/society/index.md","moduleTitle":"gameplay/society/index","source":"engine/gameplay/society/index.js","import":"/engine/gameplay/society/index.js","sourceHash":"d43c6d90ea93a2eb820515f61fa91bf3833856755a5b1378d39f53d6cb644b0c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/society/index.js#0005:PunishmentType","exportIndex":5,"name":"PunishmentType","kind":"re-export","signature":"PunishmentType","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/society/index.md","moduleTitle":"gameplay/society/index","source":"engine/gameplay/society/index.js","import":"/engine/gameplay/society/index.js","sourceHash":"d43c6d90ea93a2eb820515f61fa91bf3833856755a5b1378d39f53d6cb644b0c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/society/index.js#0006:createCity","exportIndex":6,"name":"createCity","kind":"re-export","signature":"createCity","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/society/index.md","moduleTitle":"gameplay/society/index","source":"engine/gameplay/society/index.js","import":"/engine/gameplay/society/index.js","sourceHash":"d43c6d90ea93a2eb820515f61fa91bf3833856755a5b1378d39f53d6cb644b0c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/society/index.js#0007:createCrimeRecord","exportIndex":7,"name":"createCrimeRecord","kind":"re-export","signature":"createCrimeRecord","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/society/index.md","moduleTitle":"gameplay/society/index","source":"engine/gameplay/society/index.js","import":"/engine/gameplay/society/index.js","sourceHash":"d43c6d90ea93a2eb820515f61fa91bf3833856755a5b1378d39f53d6cb644b0c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/society/index.js#0008:createFaction","exportIndex":8,"name":"createFaction","kind":"re-export","signature":"createFaction","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/society/index.md","moduleTitle":"gameplay/society/index","source":"engine/gameplay/society/index.js","import":"/engine/gameplay/society/index.js","sourceHash":"d43c6d90ea93a2eb820515f61fa91bf3833856755a5b1378d39f53d6cb644b0c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/society/index.js#0009:default","exportIndex":9,"name":"default","kind":"re-export","signature":"default","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/SpellElementMixer.md","moduleTitle":"gameplay/spells/SpellElementMixer","source":"engine/gameplay/spells/SpellElementMixer.js","import":"/engine/gameplay/spells/SpellElementMixer.js","sourceHash":"d536ca217304ea9db223a4f724a0b19a1dbf360e34973d77caab597f4f20ce0d","subsystem":"engine","recordType":"api-module","id":"module:engine/gameplay/spells/SpellElementMixer.js","title":"gameplay/spells/SpellElementMixer","summary":"SpellElementMixer.js - Element Combination System Handles mixing two or more elements to create combined/hybrid elements: - Fire + Ice = Steam - Fire + Nature = Ash - Lightning + Water = Electrified - etc. Combined elements have unique visual effects and status effects.","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/SpellElementMixer.md","moduleTitle":"gameplay/spells/SpellElementMixer","source":"engine/gameplay/spells/SpellElementMixer.js","import":"/engine/gameplay/spells/SpellElementMixer.js","sourceHash":"d536ca217304ea9db223a4f724a0b19a1dbf360e34973d77caab597f4f20ce0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/SpellElementMixer.js#0000:SpellElementMixer","exportIndex":0,"name":"SpellElementMixer","kind":"class","signature":"class SpellElementMixer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/SpellElementMixer.md","moduleTitle":"gameplay/spells/SpellElementMixer","source":"engine/gameplay/spells/SpellElementMixer.js","import":"/engine/gameplay/spells/SpellElementMixer.js","sourceHash":"d536ca217304ea9db223a4f724a0b19a1dbf360e34973d77caab597f4f20ce0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/SpellElementMixer.js#0001:getSpellElementMixer","exportIndex":1,"name":"getSpellElementMixer","kind":"function","signature":"getSpellElementMixer()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/SpellElementMixer.md","moduleTitle":"gameplay/spells/SpellElementMixer","source":"engine/gameplay/spells/SpellElementMixer.js","import":"/engine/gameplay/spells/SpellElementMixer.js","sourceHash":"d536ca217304ea9db223a4f724a0b19a1dbf360e34973d77caab597f4f20ce0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/SpellElementMixer.js#0002:mixElements","exportIndex":2,"name":"mixElements","kind":"function","signature":"mixElements(element1, element2)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/SpellElementMixer.md","moduleTitle":"gameplay/spells/SpellElementMixer","source":"engine/gameplay/spells/SpellElementMixer.js","import":"/engine/gameplay/spells/SpellElementMixer.js","sourceHash":"d536ca217304ea9db223a4f724a0b19a1dbf360e34973d77caab597f4f20ce0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/SpellElementMixer.js#0003:mixMultipleElements","exportIndex":3,"name":"mixMultipleElements","kind":"function","signature":"mixMultipleElements(elements)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/SpellElementMixer.md","moduleTitle":"gameplay/spells/SpellElementMixer","source":"engine/gameplay/spells/SpellElementMixer.js","import":"/engine/gameplay/spells/SpellElementMixer.js","sourceHash":"d536ca217304ea9db223a4f724a0b19a1dbf360e34973d77caab597f4f20ce0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/SpellElementMixer.js#0004:ELEMENT_COMBINATIONS","exportIndex":4,"name":"ELEMENT_COMBINATIONS","kind":"constant","signature":"ELEMENT_COMBINATIONS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/SpellGenerator.md","moduleTitle":"gameplay/spells/SpellGenerator","source":"engine/gameplay/spells/SpellGenerator.js","import":"/engine/gameplay/spells/SpellGenerator.js","sourceHash":"434ec3334ea155bad394df49b3d08b42103d7044afa00f75ff0429f15e43dcd8","subsystem":"engine","recordType":"api-module","id":"module:engine/gameplay/spells/SpellGenerator.js","title":"gameplay/spells/SpellGenerator","summary":"SpellGenerator.js - Procedural Spell Creation System Generates complete spells from parameters: - Element (Fire, Ice, Lightning, Arcane, Nature, Dark, Holy) - Type (Projectile, AOE, Beam, Shield, Buff, Summon) - Modifiers (Homing, Piercing, Explosive, Chain, etc.) - Power level for stat scaling Outputs: - Visual effect (uses CustomParticleEffect SDF) - Collision shape (same SDF as visual) - Particle emitter config - Game stats (damage, mana cost, cooldown) - Sound effect hints MULTIPLAYER: All generation is deterministic via seeded RNG. Never use Math.random() or Date.now() for gameplay-affecting values.","exportCount":12}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/SpellGenerator.md","moduleTitle":"gameplay/spells/SpellGenerator","source":"engine/gameplay/spells/SpellGenerator.js","import":"/engine/gameplay/spells/SpellGenerator.js","sourceHash":"434ec3334ea155bad394df49b3d08b42103d7044afa00f75ff0429f15e43dcd8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/SpellGenerator.js#0000:SpellGenerator","exportIndex":0,"name":"SpellGenerator","kind":"class","signature":"class SpellGenerator","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/SpellGenerator.md","moduleTitle":"gameplay/spells/SpellGenerator","source":"engine/gameplay/spells/SpellGenerator.js","import":"/engine/gameplay/spells/SpellGenerator.js","sourceHash":"434ec3334ea155bad394df49b3d08b42103d7044afa00f75ff0429f15e43dcd8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/SpellGenerator.js#0001:spellDeterministicIdHash","exportIndex":1,"name":"spellDeterministicIdHash","kind":"function","signature":"spellDeterministicIdHash(element, seed)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/SpellGenerator.md","moduleTitle":"gameplay/spells/SpellGenerator","source":"engine/gameplay/spells/SpellGenerator.js","import":"/engine/gameplay/spells/SpellGenerator.js","sourceHash":"434ec3334ea155bad394df49b3d08b42103d7044afa00f75ff0429f15e43dcd8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/SpellGenerator.js#0002:spellParticleEffectHash","exportIndex":2,"name":"spellParticleEffectHash","kind":"function","signature":"spellParticleEffectHash(elementId, seed)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/SpellGenerator.md","moduleTitle":"gameplay/spells/SpellGenerator","source":"engine/gameplay/spells/SpellGenerator.js","import":"/engine/gameplay/spells/SpellGenerator.js","sourceHash":"434ec3334ea155bad394df49b3d08b42103d7044afa00f75ff0429f15e43dcd8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/SpellGenerator.js#0003:serializeSpellForNetwork","exportIndex":3,"name":"serializeSpellForNetwork","kind":"function","signature":"serializeSpellForNetwork(spell)","summary":"Serialize spell to minimal format for network transmission Only includes data needed to regenerate the spell deterministically"}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/SpellGenerator.md","moduleTitle":"gameplay/spells/SpellGenerator","source":"engine/gameplay/spells/SpellGenerator.js","import":"/engine/gameplay/spells/SpellGenerator.js","sourceHash":"434ec3334ea155bad394df49b3d08b42103d7044afa00f75ff0429f15e43dcd8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/SpellGenerator.js#0004:deserializeSpellFromNetwork","exportIndex":4,"name":"deserializeSpellFromNetwork","kind":"function","signature":"deserializeSpellFromNetwork(data)","summary":"Deserialize spell from network format Regenerates full spell from minimal data"}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/SpellGenerator.md","moduleTitle":"gameplay/spells/SpellGenerator","source":"engine/gameplay/spells/SpellGenerator.js","import":"/engine/gameplay/spells/SpellGenerator.js","sourceHash":"434ec3334ea155bad394df49b3d08b42103d7044afa00f75ff0429f15e43dcd8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/SpellGenerator.js#0005:validateSpellIntegrity","exportIndex":5,"name":"validateSpellIntegrity","kind":"function","signature":"validateSpellIntegrity(spell)","summary":"Validate spell data matches seed (anti-cheat) Returns true if spell stats match what seed would generate"}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/SpellGenerator.md","moduleTitle":"gameplay/spells/SpellGenerator","source":"engine/gameplay/spells/SpellGenerator.js","import":"/engine/gameplay/spells/SpellGenerator.js","sourceHash":"434ec3334ea155bad394df49b3d08b42103d7044afa00f75ff0429f15e43dcd8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/SpellGenerator.js#0006:getSpellGenerator","exportIndex":6,"name":"getSpellGenerator","kind":"function","signature":"getSpellGenerator()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/SpellGenerator.md","moduleTitle":"gameplay/spells/SpellGenerator","source":"engine/gameplay/spells/SpellGenerator.js","import":"/engine/gameplay/spells/SpellGenerator.js","sourceHash":"434ec3334ea155bad394df49b3d08b42103d7044afa00f75ff0429f15e43dcd8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/SpellGenerator.js#0007:generateSpell","exportIndex":7,"name":"generateSpell","kind":"function","signature":"generateSpell(params)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/SpellGenerator.md","moduleTitle":"gameplay/spells/SpellGenerator","source":"engine/gameplay/spells/SpellGenerator.js","import":"/engine/gameplay/spells/SpellGenerator.js","sourceHash":"434ec3334ea155bad394df49b3d08b42103d7044afa00f75ff0429f15e43dcd8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/SpellGenerator.js#0008:generateRandomSpell","exportIndex":8,"name":"generateRandomSpell","kind":"function","signature":"generateRandomSpell(constraints)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/SpellGenerator.md","moduleTitle":"gameplay/spells/SpellGenerator","source":"engine/gameplay/spells/SpellGenerator.js","import":"/engine/gameplay/spells/SpellGenerator.js","sourceHash":"434ec3334ea155bad394df49b3d08b42103d7044afa00f75ff0429f15e43dcd8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/SpellGenerator.js#0009:SPELL_ELEMENTS","exportIndex":9,"name":"SPELL_ELEMENTS","kind":"constant","signature":"SPELL_ELEMENTS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/SpellGenerator.md","moduleTitle":"gameplay/spells/SpellGenerator","source":"engine/gameplay/spells/SpellGenerator.js","import":"/engine/gameplay/spells/SpellGenerator.js","sourceHash":"434ec3334ea155bad394df49b3d08b42103d7044afa00f75ff0429f15e43dcd8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/SpellGenerator.js#0010:SPELL_TYPES","exportIndex":10,"name":"SPELL_TYPES","kind":"constant","signature":"SPELL_TYPES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/SpellGenerator.md","moduleTitle":"gameplay/spells/SpellGenerator","source":"engine/gameplay/spells/SpellGenerator.js","import":"/engine/gameplay/spells/SpellGenerator.js","sourceHash":"434ec3334ea155bad394df49b3d08b42103d7044afa00f75ff0429f15e43dcd8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/SpellGenerator.js#0011:SPELL_MODIFIERS","exportIndex":11,"name":"SPELL_MODIFIERS","kind":"constant","signature":"SPELL_MODIFIERS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/SpellGeneratorIntegration.md","moduleTitle":"gameplay/spells/SpellGeneratorIntegration","source":"engine/gameplay/spells/SpellGeneratorIntegration.js","import":"/engine/gameplay/spells/SpellGeneratorIntegration.js","sourceHash":"6e26b0829944e6f1867ebf71705530a4fbfd1afd220c0a0853f6c089336b0cfb","subsystem":"engine","recordType":"api-module","id":"module:engine/gameplay/spells/SpellGeneratorIntegration.js","title":"gameplay/spells/SpellGeneratorIntegration","summary":"SpellGeneratorIntegration.js - Connect SpellGenerator to existing SpellConfig Bridges the procedural spell generator with the existing spell system: - Converts generated spells to SpellConfig format - Integrates with SpellEffectFactory for particle emitters - Provides save/load for generated spells","exportCount":15}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/SpellGeneratorIntegration.md","moduleTitle":"gameplay/spells/SpellGeneratorIntegration","source":"engine/gameplay/spells/SpellGeneratorIntegration.js","import":"/engine/gameplay/spells/SpellGeneratorIntegration.js","sourceHash":"6e26b0829944e6f1867ebf71705530a4fbfd1afd220c0a0853f6c089336b0cfb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/SpellGeneratorIntegration.js#0000:generatedSpellToConfig","exportIndex":0,"name":"generatedSpellToConfig","kind":"function","signature":"generatedSpellToConfig(generatedSpell)","summary":"Convert a generated spell to the existing SpellConfig format Compatible with SpellConfig.js SPELL_PRESETS structure"}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/SpellGeneratorIntegration.md","moduleTitle":"gameplay/spells/SpellGeneratorIntegration","source":"engine/gameplay/spells/SpellGeneratorIntegration.js","import":"/engine/gameplay/spells/SpellGeneratorIntegration.js","sourceHash":"6e26b0829944e6f1867ebf71705530a4fbfd1afd220c0a0853f6c089336b0cfb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/SpellGeneratorIntegration.js#0001:configToGeneratorFormat","exportIndex":1,"name":"configToGeneratorFormat","kind":"function","signature":"configToGeneratorFormat(spellConfig)","summary":"Convert existing SpellConfig preset to generator format Allows editing existing spells in the generator"}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/SpellGeneratorIntegration.md","moduleTitle":"gameplay/spells/SpellGeneratorIntegration","source":"engine/gameplay/spells/SpellGeneratorIntegration.js","import":"/engine/gameplay/spells/SpellGeneratorIntegration.js","sourceHash":"6e26b0829944e6f1867ebf71705530a4fbfd1afd220c0a0853f6c089336b0cfb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/SpellGeneratorIntegration.js#0002:readGeneratedSpellLibraryRecord","exportIndex":2,"name":"readGeneratedSpellLibraryRecord","kind":"function","signature":"readGeneratedSpellLibraryRecord(storage = globalThis.localStorage)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/SpellGeneratorIntegration.md","moduleTitle":"gameplay/spells/SpellGeneratorIntegration","source":"engine/gameplay/spells/SpellGeneratorIntegration.js","import":"/engine/gameplay/spells/SpellGeneratorIntegration.js","sourceHash":"6e26b0829944e6f1867ebf71705530a4fbfd1afd220c0a0853f6c089336b0cfb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/SpellGeneratorIntegration.js#0003:writeGeneratedSpellLibraryRecord","exportIndex":3,"name":"writeGeneratedSpellLibraryRecord","kind":"function","signature":"writeGeneratedSpellLibraryRecord(library, storage = globalThis.localStorage)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/SpellGeneratorIntegration.md","moduleTitle":"gameplay/spells/SpellGeneratorIntegration","source":"engine/gameplay/spells/SpellGeneratorIntegration.js","import":"/engine/gameplay/spells/SpellGeneratorIntegration.js","sourceHash":"6e26b0829944e6f1867ebf71705530a4fbfd1afd220c0a0853f6c089336b0cfb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/SpellGeneratorIntegration.js#0004:saveGeneratedSpell","exportIndex":4,"name":"saveGeneratedSpell","kind":"function","signature":"async saveGeneratedSpell(generatedSpell, storage = globalThis.localStorage)","summary":"Save generated spell to library (IndexedDB via registry pattern)"}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/SpellGeneratorIntegration.md","moduleTitle":"gameplay/spells/SpellGeneratorIntegration","source":"engine/gameplay/spells/SpellGeneratorIntegration.js","import":"/engine/gameplay/spells/SpellGeneratorIntegration.js","sourceHash":"6e26b0829944e6f1867ebf71705530a4fbfd1afd220c0a0853f6c089336b0cfb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/SpellGeneratorIntegration.js#0005:getSpellLibrary","exportIndex":5,"name":"getSpellLibrary","kind":"function","signature":"getSpellLibrary(storage = globalThis.localStorage)","summary":"Load spell library from storage"}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/SpellGeneratorIntegration.md","moduleTitle":"gameplay/spells/SpellGeneratorIntegration","source":"engine/gameplay/spells/SpellGeneratorIntegration.js","import":"/engine/gameplay/spells/SpellGeneratorIntegration.js","sourceHash":"6e26b0829944e6f1867ebf71705530a4fbfd1afd220c0a0853f6c089336b0cfb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/SpellGeneratorIntegration.js#0006:getGeneratedSpell","exportIndex":6,"name":"getGeneratedSpell","kind":"function","signature":"getGeneratedSpell(id)","summary":"Get a generated spell by ID"}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/SpellGeneratorIntegration.md","moduleTitle":"gameplay/spells/SpellGeneratorIntegration","source":"engine/gameplay/spells/SpellGeneratorIntegration.js","import":"/engine/gameplay/spells/SpellGeneratorIntegration.js","sourceHash":"6e26b0829944e6f1867ebf71705530a4fbfd1afd220c0a0853f6c089336b0cfb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/SpellGeneratorIntegration.js#0007:deleteGeneratedSpell","exportIndex":7,"name":"deleteGeneratedSpell","kind":"function","signature":"deleteGeneratedSpell(id, storage = globalThis.localStorage)","summary":"Delete a generated spell"}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/SpellGeneratorIntegration.md","moduleTitle":"gameplay/spells/SpellGeneratorIntegration","source":"engine/gameplay/spells/SpellGeneratorIntegration.js","import":"/engine/gameplay/spells/SpellGeneratorIntegration.js","sourceHash":"6e26b0829944e6f1867ebf71705530a4fbfd1afd220c0a0853f6c089336b0cfb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/SpellGeneratorIntegration.js#0008:getAllGeneratedSpells","exportIndex":8,"name":"getAllGeneratedSpells","kind":"function","signature":"getAllGeneratedSpells(storage = globalThis.localStorage)","summary":"Get all generated spells as array"}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/SpellGeneratorIntegration.md","moduleTitle":"gameplay/spells/SpellGeneratorIntegration","source":"engine/gameplay/spells/SpellGeneratorIntegration.js","import":"/engine/gameplay/spells/SpellGeneratorIntegration.js","sourceHash":"6e26b0829944e6f1867ebf71705530a4fbfd1afd220c0a0853f6c089336b0cfb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/SpellGeneratorIntegration.js#0009:createEmitterFromGeneratedSpell","exportIndex":9,"name":"createEmitterFromGeneratedSpell","kind":"function","signature":"createEmitterFromGeneratedSpell(generatedSpell, options = {})","summary":"Create particle emitter config from generated spell For use with SpellEffectFactory IMPORTANT: Physics parameters (mass, drag, bounciness, collisionEnabled) are included to ensure collision behavior matches visual expectations. The effectId links to the SAME SDF used for both rendering AND collision."}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/SpellGeneratorIntegration.md","moduleTitle":"gameplay/spells/SpellGeneratorIntegration","source":"engine/gameplay/spells/SpellGeneratorIntegration.js","import":"/engine/gameplay/spells/SpellGeneratorIntegration.js","sourceHash":"6e26b0829944e6f1867ebf71705530a4fbfd1afd220c0a0853f6c089336b0cfb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/SpellGeneratorIntegration.js#0010:quickGenerateSpell","exportIndex":10,"name":"quickGenerateSpell","kind":"function","signature":"quickGenerateSpell(element, type, powerLevel = 1.0)","summary":"Quick generate a spell with minimal parameters"}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/SpellGeneratorIntegration.md","moduleTitle":"gameplay/spells/SpellGeneratorIntegration","source":"engine/gameplay/spells/SpellGeneratorIntegration.js","import":"/engine/gameplay/spells/SpellGeneratorIntegration.js","sourceHash":"6e26b0829944e6f1867ebf71705530a4fbfd1afd220c0a0853f6c089336b0cfb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/SpellGeneratorIntegration.js#0011:generateCombinedSpell","exportIndex":11,"name":"generateCombinedSpell","kind":"function","signature":"generateCombinedSpell(element1, element2, type, powerLevel = 1.0)","summary":"Generate a combined element spell"}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/SpellGeneratorIntegration.md","moduleTitle":"gameplay/spells/SpellGeneratorIntegration","source":"engine/gameplay/spells/SpellGeneratorIntegration.js","import":"/engine/gameplay/spells/SpellGeneratorIntegration.js","sourceHash":"6e26b0829944e6f1867ebf71705530a4fbfd1afd220c0a0853f6c089336b0cfb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/SpellGeneratorIntegration.js#0012:generateLootSpell","exportIndex":12,"name":"generateLootSpell","kind":"function","signature":"generateLootSpell(rarity = 'common')","summary":"Generate loot-style random spell"}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/SpellGeneratorIntegration.md","moduleTitle":"gameplay/spells/SpellGeneratorIntegration","source":"engine/gameplay/spells/SpellGeneratorIntegration.js","import":"/engine/gameplay/spells/SpellGeneratorIntegration.js","sourceHash":"6e26b0829944e6f1867ebf71705530a4fbfd1afd220c0a0853f6c089336b0cfb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/SpellGeneratorIntegration.js#0013:GENERATED_SPELL_LIBRARY_SCHEMA","exportIndex":13,"name":"GENERATED_SPELL_LIBRARY_SCHEMA","kind":"constant","signature":"GENERATED_SPELL_LIBRARY_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/SpellGeneratorIntegration.md","moduleTitle":"gameplay/spells/SpellGeneratorIntegration","source":"engine/gameplay/spells/SpellGeneratorIntegration.js","import":"/engine/gameplay/spells/SpellGeneratorIntegration.js","sourceHash":"6e26b0829944e6f1867ebf71705530a4fbfd1afd220c0a0853f6c089336b0cfb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/SpellGeneratorIntegration.js#0014:GENERATED_SPELL_LIBRARY_SCHEMA_VERSION","exportIndex":14,"name":"GENERATED_SPELL_LIBRARY_SCHEMA_VERSION","kind":"constant","signature":"GENERATED_SPELL_LIBRARY_SCHEMA_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/index.md","moduleTitle":"gameplay/spells/index","source":"engine/gameplay/spells/index.js","import":"/engine/gameplay/spells/index.js","sourceHash":"2e5ccda254652ea919ce7f39bd7094dc74b60276eb920b83c10340a636983811","subsystem":"engine","recordType":"api-module","id":"module:engine/gameplay/spells/index.js","title":"gameplay/spells/index","summary":"Spell System Exports Barrel file for easy importing of all spell-related modules.","exportCount":26}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/index.md","moduleTitle":"gameplay/spells/index","source":"engine/gameplay/spells/index.js","import":"/engine/gameplay/spells/index.js","sourceHash":"2e5ccda254652ea919ce7f39bd7094dc74b60276eb920b83c10340a636983811","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/index.js#0000:ELEMENT_COMBINATIONS","exportIndex":0,"name":"ELEMENT_COMBINATIONS","kind":"re-export","signature":"ELEMENT_COMBINATIONS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/index.md","moduleTitle":"gameplay/spells/index","source":"engine/gameplay/spells/index.js","import":"/engine/gameplay/spells/index.js","sourceHash":"2e5ccda254652ea919ce7f39bd7094dc74b60276eb920b83c10340a636983811","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/index.js#0001:SPELL_ELEMENTS","exportIndex":1,"name":"SPELL_ELEMENTS","kind":"re-export","signature":"SPELL_ELEMENTS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/index.md","moduleTitle":"gameplay/spells/index","source":"engine/gameplay/spells/index.js","import":"/engine/gameplay/spells/index.js","sourceHash":"2e5ccda254652ea919ce7f39bd7094dc74b60276eb920b83c10340a636983811","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/index.js#0002:SPELL_MODIFIERS","exportIndex":2,"name":"SPELL_MODIFIERS","kind":"re-export","signature":"SPELL_MODIFIERS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/index.md","moduleTitle":"gameplay/spells/index","source":"engine/gameplay/spells/index.js","import":"/engine/gameplay/spells/index.js","sourceHash":"2e5ccda254652ea919ce7f39bd7094dc74b60276eb920b83c10340a636983811","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/index.js#0003:SPELL_TYPES","exportIndex":3,"name":"SPELL_TYPES","kind":"re-export","signature":"SPELL_TYPES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/index.md","moduleTitle":"gameplay/spells/index","source":"engine/gameplay/spells/index.js","import":"/engine/gameplay/spells/index.js","sourceHash":"2e5ccda254652ea919ce7f39bd7094dc74b60276eb920b83c10340a636983811","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/index.js#0004:SpellElementMixer","exportIndex":4,"name":"SpellElementMixer","kind":"re-export","signature":"SpellElementMixer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/index.md","moduleTitle":"gameplay/spells/index","source":"engine/gameplay/spells/index.js","import":"/engine/gameplay/spells/index.js","sourceHash":"2e5ccda254652ea919ce7f39bd7094dc74b60276eb920b83c10340a636983811","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/index.js#0005:SpellGenerator","exportIndex":5,"name":"SpellGenerator","kind":"re-export","signature":"SpellGenerator","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/index.md","moduleTitle":"gameplay/spells/index","source":"engine/gameplay/spells/index.js","import":"/engine/gameplay/spells/index.js","sourceHash":"2e5ccda254652ea919ce7f39bd7094dc74b60276eb920b83c10340a636983811","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/index.js#0006:configToGeneratorFormat","exportIndex":6,"name":"configToGeneratorFormat","kind":"re-export","signature":"configToGeneratorFormat","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/index.md","moduleTitle":"gameplay/spells/index","source":"engine/gameplay/spells/index.js","import":"/engine/gameplay/spells/index.js","sourceHash":"2e5ccda254652ea919ce7f39bd7094dc74b60276eb920b83c10340a636983811","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/index.js#0007:createEmitterFromGeneratedSpell","exportIndex":7,"name":"createEmitterFromGeneratedSpell","kind":"re-export","signature":"createEmitterFromGeneratedSpell","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/index.md","moduleTitle":"gameplay/spells/index","source":"engine/gameplay/spells/index.js","import":"/engine/gameplay/spells/index.js","sourceHash":"2e5ccda254652ea919ce7f39bd7094dc74b60276eb920b83c10340a636983811","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/index.js#0008:deleteGeneratedSpell","exportIndex":8,"name":"deleteGeneratedSpell","kind":"re-export","signature":"deleteGeneratedSpell","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/index.md","moduleTitle":"gameplay/spells/index","source":"engine/gameplay/spells/index.js","import":"/engine/gameplay/spells/index.js","sourceHash":"2e5ccda254652ea919ce7f39bd7094dc74b60276eb920b83c10340a636983811","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/index.js#0009:deserializeSpellFromNetwork","exportIndex":9,"name":"deserializeSpellFromNetwork","kind":"re-export","signature":"deserializeSpellFromNetwork","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/index.md","moduleTitle":"gameplay/spells/index","source":"engine/gameplay/spells/index.js","import":"/engine/gameplay/spells/index.js","sourceHash":"2e5ccda254652ea919ce7f39bd7094dc74b60276eb920b83c10340a636983811","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/index.js#0010:generateCombinedSpell","exportIndex":10,"name":"generateCombinedSpell","kind":"re-export","signature":"generateCombinedSpell","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/index.md","moduleTitle":"gameplay/spells/index","source":"engine/gameplay/spells/index.js","import":"/engine/gameplay/spells/index.js","sourceHash":"2e5ccda254652ea919ce7f39bd7094dc74b60276eb920b83c10340a636983811","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/index.js#0011:generateLootSpell","exportIndex":11,"name":"generateLootSpell","kind":"re-export","signature":"generateLootSpell","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/index.md","moduleTitle":"gameplay/spells/index","source":"engine/gameplay/spells/index.js","import":"/engine/gameplay/spells/index.js","sourceHash":"2e5ccda254652ea919ce7f39bd7094dc74b60276eb920b83c10340a636983811","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/index.js#0012:generateRandomSpell","exportIndex":12,"name":"generateRandomSpell","kind":"re-export","signature":"generateRandomSpell","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/index.md","moduleTitle":"gameplay/spells/index","source":"engine/gameplay/spells/index.js","import":"/engine/gameplay/spells/index.js","sourceHash":"2e5ccda254652ea919ce7f39bd7094dc74b60276eb920b83c10340a636983811","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/index.js#0013:generateSpell","exportIndex":13,"name":"generateSpell","kind":"re-export","signature":"generateSpell","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/index.md","moduleTitle":"gameplay/spells/index","source":"engine/gameplay/spells/index.js","import":"/engine/gameplay/spells/index.js","sourceHash":"2e5ccda254652ea919ce7f39bd7094dc74b60276eb920b83c10340a636983811","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/index.js#0014:generatedSpellToConfig","exportIndex":14,"name":"generatedSpellToConfig","kind":"re-export","signature":"generatedSpellToConfig","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/index.md","moduleTitle":"gameplay/spells/index","source":"engine/gameplay/spells/index.js","import":"/engine/gameplay/spells/index.js","sourceHash":"2e5ccda254652ea919ce7f39bd7094dc74b60276eb920b83c10340a636983811","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/index.js#0015:getAllGeneratedSpells","exportIndex":15,"name":"getAllGeneratedSpells","kind":"re-export","signature":"getAllGeneratedSpells","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/index.md","moduleTitle":"gameplay/spells/index","source":"engine/gameplay/spells/index.js","import":"/engine/gameplay/spells/index.js","sourceHash":"2e5ccda254652ea919ce7f39bd7094dc74b60276eb920b83c10340a636983811","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/index.js#0016:getGeneratedSpell","exportIndex":16,"name":"getGeneratedSpell","kind":"re-export","signature":"getGeneratedSpell","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/index.md","moduleTitle":"gameplay/spells/index","source":"engine/gameplay/spells/index.js","import":"/engine/gameplay/spells/index.js","sourceHash":"2e5ccda254652ea919ce7f39bd7094dc74b60276eb920b83c10340a636983811","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/index.js#0017:getSpellElementMixer","exportIndex":17,"name":"getSpellElementMixer","kind":"re-export","signature":"getSpellElementMixer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/index.md","moduleTitle":"gameplay/spells/index","source":"engine/gameplay/spells/index.js","import":"/engine/gameplay/spells/index.js","sourceHash":"2e5ccda254652ea919ce7f39bd7094dc74b60276eb920b83c10340a636983811","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/index.js#0018:getSpellGenerator","exportIndex":18,"name":"getSpellGenerator","kind":"re-export","signature":"getSpellGenerator","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/index.md","moduleTitle":"gameplay/spells/index","source":"engine/gameplay/spells/index.js","import":"/engine/gameplay/spells/index.js","sourceHash":"2e5ccda254652ea919ce7f39bd7094dc74b60276eb920b83c10340a636983811","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/index.js#0019:getSpellLibrary","exportIndex":19,"name":"getSpellLibrary","kind":"re-export","signature":"getSpellLibrary","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/index.md","moduleTitle":"gameplay/spells/index","source":"engine/gameplay/spells/index.js","import":"/engine/gameplay/spells/index.js","sourceHash":"2e5ccda254652ea919ce7f39bd7094dc74b60276eb920b83c10340a636983811","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/index.js#0020:mixElements","exportIndex":20,"name":"mixElements","kind":"re-export","signature":"mixElements","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/index.md","moduleTitle":"gameplay/spells/index","source":"engine/gameplay/spells/index.js","import":"/engine/gameplay/spells/index.js","sourceHash":"2e5ccda254652ea919ce7f39bd7094dc74b60276eb920b83c10340a636983811","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/index.js#0021:mixMultipleElements","exportIndex":21,"name":"mixMultipleElements","kind":"re-export","signature":"mixMultipleElements","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/index.md","moduleTitle":"gameplay/spells/index","source":"engine/gameplay/spells/index.js","import":"/engine/gameplay/spells/index.js","sourceHash":"2e5ccda254652ea919ce7f39bd7094dc74b60276eb920b83c10340a636983811","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/index.js#0022:quickGenerateSpell","exportIndex":22,"name":"quickGenerateSpell","kind":"re-export","signature":"quickGenerateSpell","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/index.md","moduleTitle":"gameplay/spells/index","source":"engine/gameplay/spells/index.js","import":"/engine/gameplay/spells/index.js","sourceHash":"2e5ccda254652ea919ce7f39bd7094dc74b60276eb920b83c10340a636983811","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/index.js#0023:saveGeneratedSpell","exportIndex":23,"name":"saveGeneratedSpell","kind":"re-export","signature":"saveGeneratedSpell","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/index.md","moduleTitle":"gameplay/spells/index","source":"engine/gameplay/spells/index.js","import":"/engine/gameplay/spells/index.js","sourceHash":"2e5ccda254652ea919ce7f39bd7094dc74b60276eb920b83c10340a636983811","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/index.js#0024:serializeSpellForNetwork","exportIndex":24,"name":"serializeSpellForNetwork","kind":"re-export","signature":"serializeSpellForNetwork","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/gameplay/spells/index.md","moduleTitle":"gameplay/spells/index","source":"engine/gameplay/spells/index.js","import":"/engine/gameplay/spells/index.js","sourceHash":"2e5ccda254652ea919ce7f39bd7094dc74b60276eb920b83c10340a636983811","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/gameplay/spells/index.js#0025:validateSpellIntegrity","exportIndex":25,"name":"validateSpellIntegrity","kind":"re-export","signature":"validateSpellIntegrity","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/index.md","moduleTitle":"kaolin/index","source":"engine/kaolin/index.js","import":"/engine/kaolin/index.js","sourceHash":"7b9094e6622b1fedc822856820d68912e40f86dff63211841bc78bc369b51663","subsystem":"engine","recordType":"api-module","id":"module:engine/kaolin/index.js","title":"kaolin/index","summary":"engine/kaolin — Kaolin-equivalent 3D Geometry Toolkit WebGPU-native geometry operations inspired by NVIDIA Kaolin. Provides representation conversions, mesh ops, SDF tools, point cloud ops, and physics bridges for the engine's particle/softbody/mesh/voxel systems. Usage: import { ops } from '../kaolin/index.js'; const he = new ops.mesh.HalfEdgeMesh(positions, indices); const normals = ops.mesh.computeVertexNormals(positions, indices);","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/io/MeshIO.md","moduleTitle":"kaolin/io/MeshIO","source":"engine/kaolin/io/MeshIO.js","import":"/engine/kaolin/io/MeshIO.js","sourceHash":"c0446e47b634c9bf1694dc82488895f33f055abffa831172c4f64826570878d8","subsystem":"engine","recordType":"api-module","id":"module:engine/kaolin/io/MeshIO.js","title":"kaolin/io/MeshIO","summary":"MeshIO.js — Programmatic mesh import/export (OBJ, PLY, STL) Pure JS parsers/writers for common mesh formats. No dependencies — works with fetch() or FileReader in browser. All outputs use the Kaolin convention: positions: Float32Array stride 3 indices:   Uint32Array stride 3 normals:   Float32Array stride 3 (optional) uvs:       Float32Array stride 2 (optional) Compatible with: - MeshOps.js, MeshSubdivision.js, MeshTetrahedralize.js - Editor GLB loader (supplementary path for non-GLB formats) - EntityMeshRenderer","exportCount":8}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/io/MeshIO.md","moduleTitle":"kaolin/io/MeshIO","source":"engine/kaolin/io/MeshIO.js","import":"/engine/kaolin/io/MeshIO.js","sourceHash":"c0446e47b634c9bf1694dc82488895f33f055abffa831172c4f64826570878d8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/io/MeshIO.js#0000:parseOBJ","exportIndex":0,"name":"parseOBJ","kind":"function","signature":"parseOBJ(objText, options = {})","summary":"Parse an OBJ string into mesh data."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/io/MeshIO.md","moduleTitle":"kaolin/io/MeshIO","source":"engine/kaolin/io/MeshIO.js","import":"/engine/kaolin/io/MeshIO.js","sourceHash":"c0446e47b634c9bf1694dc82488895f33f055abffa831172c4f64826570878d8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/io/MeshIO.js#0001:writeOBJ","exportIndex":1,"name":"writeOBJ","kind":"function","signature":"writeOBJ(positions, indices, options = {})","summary":"Write mesh data to OBJ format string."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/io/MeshIO.md","moduleTitle":"kaolin/io/MeshIO","source":"engine/kaolin/io/MeshIO.js","import":"/engine/kaolin/io/MeshIO.js","sourceHash":"c0446e47b634c9bf1694dc82488895f33f055abffa831172c4f64826570878d8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/io/MeshIO.js#0002:parsePLY","exportIndex":2,"name":"parsePLY","kind":"function","signature":"parsePLY(buffer)","summary":"Parse a PLY file (ArrayBuffer) into mesh data. Supports ASCII and binary_little_endian formats."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/io/MeshIO.md","moduleTitle":"kaolin/io/MeshIO","source":"engine/kaolin/io/MeshIO.js","import":"/engine/kaolin/io/MeshIO.js","sourceHash":"c0446e47b634c9bf1694dc82488895f33f055abffa831172c4f64826570878d8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/io/MeshIO.js#0003:writePLY","exportIndex":3,"name":"writePLY","kind":"function","signature":"writePLY(positions, indices, options = {})","summary":"Write mesh data to PLY format (ASCII)."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/io/MeshIO.md","moduleTitle":"kaolin/io/MeshIO","source":"engine/kaolin/io/MeshIO.js","import":"/engine/kaolin/io/MeshIO.js","sourceHash":"c0446e47b634c9bf1694dc82488895f33f055abffa831172c4f64826570878d8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/io/MeshIO.js#0004:parseSTL","exportIndex":4,"name":"parseSTL","kind":"function","signature":"parseSTL(buffer)","summary":"Parse an STL file (ArrayBuffer) into mesh data. Auto-detects ASCII vs binary."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/io/MeshIO.md","moduleTitle":"kaolin/io/MeshIO","source":"engine/kaolin/io/MeshIO.js","import":"/engine/kaolin/io/MeshIO.js","sourceHash":"c0446e47b634c9bf1694dc82488895f33f055abffa831172c4f64826570878d8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/io/MeshIO.js#0005:writeSTL","exportIndex":5,"name":"writeSTL","kind":"function","signature":"writeSTL(positions, indices, normals = null)","summary":"Write mesh data to binary STL format."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/io/MeshIO.md","moduleTitle":"kaolin/io/MeshIO","source":"engine/kaolin/io/MeshIO.js","import":"/engine/kaolin/io/MeshIO.js","sourceHash":"c0446e47b634c9bf1694dc82488895f33f055abffa831172c4f64826570878d8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/io/MeshIO.js#0006:loadMesh","exportIndex":6,"name":"loadMesh","kind":"function","signature":"async loadMesh(url)","summary":"Load a mesh from URL (auto-detects format from extension)."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/io/MeshIO.md","moduleTitle":"kaolin/io/MeshIO","source":"engine/kaolin/io/MeshIO.js","import":"/engine/kaolin/io/MeshIO.js","sourceHash":"c0446e47b634c9bf1694dc82488895f33f055abffa831172c4f64826570878d8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/io/MeshIO.js#0007:downloadMesh","exportIndex":7,"name":"downloadMesh","kind":"function","signature":"downloadMesh(filename, data)","summary":"Download mesh as a file (browser)."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/io/PointCloudIO.md","moduleTitle":"kaolin/io/PointCloudIO","source":"engine/kaolin/io/PointCloudIO.js","import":"/engine/kaolin/io/PointCloudIO.js","sourceHash":"9cc4a885c779fa0471ab3db1d3ce69a88bcf5691c0b33e983b4190304809fbd1","subsystem":"engine","recordType":"api-module","id":"module:engine/kaolin/io/PointCloudIO.js","title":"kaolin/io/PointCloudIO","summary":"PointCloudIO.js — Point cloud import/export (PLY, PCD, XYZ) Pure JS parsers/writers for point cloud formats. Outputs: Float32Array positions (stride 3) + optional normals/colors. Compatible with: - PointCloudOps.js - MeshToPoints.js / PointsToMesh.js - Particle system (direct spawn from loaded points)","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/io/PointCloudIO.md","moduleTitle":"kaolin/io/PointCloudIO","source":"engine/kaolin/io/PointCloudIO.js","import":"/engine/kaolin/io/PointCloudIO.js","sourceHash":"9cc4a885c779fa0471ab3db1d3ce69a88bcf5691c0b33e983b4190304809fbd1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/io/PointCloudIO.js#0000:parsePLYPointCloud","exportIndex":0,"name":"parsePLYPointCloud","kind":"function","signature":"parsePLYPointCloud(buffer)","summary":"Load a point cloud from PLY (ArrayBuffer). Ignores face data — returns only vertex positions + attributes."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/io/PointCloudIO.md","moduleTitle":"kaolin/io/PointCloudIO","source":"engine/kaolin/io/PointCloudIO.js","import":"/engine/kaolin/io/PointCloudIO.js","sourceHash":"9cc4a885c779fa0471ab3db1d3ce69a88bcf5691c0b33e983b4190304809fbd1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/io/PointCloudIO.js#0001:writePLYPointCloud","exportIndex":1,"name":"writePLYPointCloud","kind":"function","signature":"writePLYPointCloud(points, options = {})","summary":"Write a point cloud to PLY format (ASCII string, no faces)."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/io/PointCloudIO.md","moduleTitle":"kaolin/io/PointCloudIO","source":"engine/kaolin/io/PointCloudIO.js","import":"/engine/kaolin/io/PointCloudIO.js","sourceHash":"9cc4a885c779fa0471ab3db1d3ce69a88bcf5691c0b33e983b4190304809fbd1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/io/PointCloudIO.js#0002:parseXYZ","exportIndex":2,"name":"parseXYZ","kind":"function","signature":"parseXYZ(text)","summary":"Parse XYZ text format. Each line: x y z [nx ny nz] [r g b]"}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/io/PointCloudIO.md","moduleTitle":"kaolin/io/PointCloudIO","source":"engine/kaolin/io/PointCloudIO.js","import":"/engine/kaolin/io/PointCloudIO.js","sourceHash":"9cc4a885c779fa0471ab3db1d3ce69a88bcf5691c0b33e983b4190304809fbd1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/io/PointCloudIO.js#0003:writeXYZ","exportIndex":3,"name":"writeXYZ","kind":"function","signature":"writeXYZ(points, options = {})","summary":"Write points to XYZ text format."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/io/PointCloudIO.md","moduleTitle":"kaolin/io/PointCloudIO","source":"engine/kaolin/io/PointCloudIO.js","import":"/engine/kaolin/io/PointCloudIO.js","sourceHash":"9cc4a885c779fa0471ab3db1d3ce69a88bcf5691c0b33e983b4190304809fbd1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/io/PointCloudIO.js#0004:parsePCD","exportIndex":4,"name":"parsePCD","kind":"function","signature":"parsePCD(text)","summary":"Parse PCD text format (ASCII only)."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/io/PointCloudIO.md","moduleTitle":"kaolin/io/PointCloudIO","source":"engine/kaolin/io/PointCloudIO.js","import":"/engine/kaolin/io/PointCloudIO.js","sourceHash":"9cc4a885c779fa0471ab3db1d3ce69a88bcf5691c0b33e983b4190304809fbd1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/io/PointCloudIO.js#0005:writePCD","exportIndex":5,"name":"writePCD","kind":"function","signature":"writePCD(points, options = {})","summary":"Write points to PCD ASCII format."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/io/PointCloudIO.md","moduleTitle":"kaolin/io/PointCloudIO","source":"engine/kaolin/io/PointCloudIO.js","import":"/engine/kaolin/io/PointCloudIO.js","sourceHash":"9cc4a885c779fa0471ab3db1d3ce69a88bcf5691c0b33e983b4190304809fbd1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/io/PointCloudIO.js#0006:loadPointCloud","exportIndex":6,"name":"loadPointCloud","kind":"function","signature":"async loadPointCloud(url)","summary":"Load a point cloud from URL (auto-detects format from extension)."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/io/index.md","moduleTitle":"kaolin/io/index","source":"engine/kaolin/io/index.js","import":"/engine/kaolin/io/index.js","sourceHash":"b09c4152a97b8921d81430facd3794cbec8f989c90d39a88dd1ff9109e17f445","subsystem":"engine","recordType":"api-module","id":"module:engine/kaolin/io/index.js","title":"kaolin/io/index","summary":"Kaolin IO — Barrel exports Mesh and point cloud import/export (OBJ, PLY, STL, XYZ, PCD).","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/metrics/ChamferDistance.md","moduleTitle":"kaolin/metrics/ChamferDistance","source":"engine/kaolin/metrics/ChamferDistance.js","import":"/engine/kaolin/metrics/ChamferDistance.js","sourceHash":"48ea5c5a575af5c0552230fe6d8525deb7c06cf0ca923546436b8b52f6752bc0","subsystem":"engine","recordType":"api-module","id":"module:engine/kaolin/metrics/ChamferDistance.js","title":"kaolin/metrics/ChamferDistance","summary":"ChamferDistance.js — Bidirectional nearest-neighbor distance metric Measures how close two point sets (or meshes) are to each other. For each point in A, find nearest in B (and vice versa), average the distances. Standard metric in 3D reconstruction / generative model evaluation. Used by: agi/ training loops, mesh quality assessment, LOD validation. CPU path with spatial hash acceleration. For GPU path, see future WebGPU compute implementation.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/metrics/ChamferDistance.md","moduleTitle":"kaolin/metrics/ChamferDistance","source":"engine/kaolin/metrics/ChamferDistance.js","import":"/engine/kaolin/metrics/ChamferDistance.js","sourceHash":"48ea5c5a575af5c0552230fe6d8525deb7c06cf0ca923546436b8b52f6752bc0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/metrics/ChamferDistance.js#0000:chamferDistance","exportIndex":0,"name":"chamferDistance","kind":"function","signature":"chamferDistance(pointsA, pointsB, options = {})","summary":"Compute Chamfer Distance between two point sets. CD(A, B) = (1/|A|) Σ min_{b∈B} ||a - b||² + (1/|B|) Σ min_{a∈A} ||b - a||²"}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/metrics/ChamferDistance.md","moduleTitle":"kaolin/metrics/ChamferDistance","source":"engine/kaolin/metrics/ChamferDistance.js","import":"/engine/kaolin/metrics/ChamferDistance.js","sourceHash":"48ea5c5a575af5c0552230fe6d8525deb7c06cf0ca923546436b8b52f6752bc0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/metrics/ChamferDistance.js#0001:chamferDistancePerPoint","exportIndex":1,"name":"chamferDistancePerPoint","kind":"function","signature":"chamferDistancePerPoint(pointsA, pointsB)","summary":"Compute per-point nearest distances from A to B. Useful for visualization (color-coded error maps)."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/metrics/ChamferDistance.md","moduleTitle":"kaolin/metrics/ChamferDistance","source":"engine/kaolin/metrics/ChamferDistance.js","import":"/engine/kaolin/metrics/ChamferDistance.js","sourceHash":"48ea5c5a575af5c0552230fe6d8525deb7c06cf0ca923546436b8b52f6752bc0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/metrics/ChamferDistance.js#0002:earthMoversDistance","exportIndex":2,"name":"earthMoversDistance","kind":"function","signature":"earthMoversDistance(pointsA, pointsB)","summary":"Approximate Earth Mover's Distance via auction algorithm. Both point sets must have the same number of points. This is O(n²) and practical only for small sets (<1000 points)."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/metrics/GPUMetrics.md","moduleTitle":"kaolin/metrics/GPUMetrics","source":"engine/kaolin/metrics/GPUMetrics.js","import":"/engine/kaolin/metrics/GPUMetrics.js","sourceHash":"46595a65454ba210cfee0469f03a635285f165dd93e04260361bfd764ec1c9bd","subsystem":"engine","recordType":"api-module","id":"module:engine/kaolin/metrics/GPUMetrics.js","title":"kaolin/metrics/GPUMetrics","summary":"GPUMetrics.js — WebGPU compute shader accelerated 3D distance metrics GPU-accelerated implementations of: - Chamfer Distance (bidirectional nearest-neighbor) - Hausdorff Distance (max nearest-neighbor) - Mean Distance / RMSE For each point in set A, a compute shader finds the nearest point in set B using a brute-force O(N*M) scan parallelized across workgroups. Results are reduced on the GPU via a parallel reduction pass. Falls back to CPU path (ChamferDistance.js / HausdorffDistance.js) if WebGPU is unavailable or point counts are below the GPU-beneficial threshold (~2000). Usage: const gpu = new GPUMetrics(device); const result = await gpu.chamferDistance(pointsA, pointsB);","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/metrics/GPUMetrics.md","moduleTitle":"kaolin/metrics/GPUMetrics","source":"engine/kaolin/metrics/GPUMetrics.js","import":"/engine/kaolin/metrics/GPUMetrics.js","sourceHash":"46595a65454ba210cfee0469f03a635285f165dd93e04260361bfd764ec1c9bd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/metrics/GPUMetrics.js#0000:GPUMetrics","exportIndex":0,"name":"GPUMetrics","kind":"class","signature":"class GPUMetrics","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/metrics/GPUMetrics.md","moduleTitle":"kaolin/metrics/GPUMetrics","source":"engine/kaolin/metrics/GPUMetrics.js","import":"/engine/kaolin/metrics/GPUMetrics.js","sourceHash":"46595a65454ba210cfee0469f03a635285f165dd93e04260361bfd764ec1c9bd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/metrics/GPUMetrics.js#0001:getGPUMetrics","exportIndex":1,"name":"getGPUMetrics","kind":"function","signature":"getGPUMetrics(device)","summary":"Get or create a singleton GPUMetrics instance."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/metrics/HausdorffDistance.md","moduleTitle":"kaolin/metrics/HausdorffDistance","source":"engine/kaolin/metrics/HausdorffDistance.js","import":"/engine/kaolin/metrics/HausdorffDistance.js","sourceHash":"1b4cb4dc234c976adc4c2f9c82f15c7727fb092f822c38d0d60dff5f5af4c221","subsystem":"engine","recordType":"api-module","id":"module:engine/kaolin/metrics/HausdorffDistance.js","title":"kaolin/metrics/HausdorffDistance","summary":"HausdorffDistance.js — Maximum surface deviation metric Measures the worst-case distance between two point sets or meshes. Hausdorff(A, B) = max( max_{a∈A} min_{b∈B} ||a-b||, max_{b∈B} min_{a∈A} ||b-a|| ) Variants: - Standard Hausdorff (max of mins) - Percentile Hausdorff (e.g. 95th percentile — more robust to outliers) - Directed Hausdorff (one direction only) Used by: mesh quality validation, LOD error bounds, surface fitting.","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/metrics/HausdorffDistance.md","moduleTitle":"kaolin/metrics/HausdorffDistance","source":"engine/kaolin/metrics/HausdorffDistance.js","import":"/engine/kaolin/metrics/HausdorffDistance.js","sourceHash":"1b4cb4dc234c976adc4c2f9c82f15c7727fb092f822c38d0d60dff5f5af4c221","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/metrics/HausdorffDistance.js#0000:hausdorffDistance","exportIndex":0,"name":"hausdorffDistance","kind":"function","signature":"hausdorffDistance(pointsA, pointsB, options = {})","summary":"Compute Hausdorff distance between two point sets."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/metrics/HausdorffDistance.md","moduleTitle":"kaolin/metrics/HausdorffDistance","source":"engine/kaolin/metrics/HausdorffDistance.js","import":"/engine/kaolin/metrics/HausdorffDistance.js","sourceHash":"1b4cb4dc234c976adc4c2f9c82f15c7727fb092f822c38d0d60dff5f5af4c221","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/metrics/HausdorffDistance.js#0001:directedDistances","exportIndex":1,"name":"directedDistances","kind":"function","signature":"directedDistances(pointsA, pointsB)","summary":"Compute per-point minimum distances from A to B. Returns the distance of each point in A to its nearest neighbor in B."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/metrics/HausdorffDistance.md","moduleTitle":"kaolin/metrics/HausdorffDistance","source":"engine/kaolin/metrics/HausdorffDistance.js","import":"/engine/kaolin/metrics/HausdorffDistance.js","sourceHash":"1b4cb4dc234c976adc4c2f9c82f15c7727fb092f822c38d0d60dff5f5af4c221","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/metrics/HausdorffDistance.js#0002:rmse","exportIndex":2,"name":"rmse","kind":"function","signature":"rmse(pointsA, pointsB)","summary":"Compute RMSE (Root Mean Square Error) between two point sets. Symmetric: averages both directions."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/metrics/HausdorffDistance.md","moduleTitle":"kaolin/metrics/HausdorffDistance","source":"engine/kaolin/metrics/HausdorffDistance.js","import":"/engine/kaolin/metrics/HausdorffDistance.js","sourceHash":"1b4cb4dc234c976adc4c2f9c82f15c7727fb092f822c38d0d60dff5f5af4c221","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/metrics/HausdorffDistance.js#0003:meanDistance","exportIndex":3,"name":"meanDistance","kind":"function","signature":"meanDistance(pointsA, pointsB)","summary":"Compute mean absolute distance between two point sets (one direction)."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/metrics/VolumetricIoU.md","moduleTitle":"kaolin/metrics/VolumetricIoU","source":"engine/kaolin/metrics/VolumetricIoU.js","import":"/engine/kaolin/metrics/VolumetricIoU.js","sourceHash":"5e6dbb19ac870833bed2189edeed74278a306e25eb53d17a467747e131fd7ea4","subsystem":"engine","recordType":"api-module","id":"module:engine/kaolin/metrics/VolumetricIoU.js","title":"kaolin/metrics/VolumetricIoU","summary":"VolumetricIoU.js — Intersection over Union for 3D shapes Measures overlap between two 3D shapes by voxelizing both and computing |intersection| / |union|. Also supports direct voxel grid inputs (skip re-voxelization). Used by: agi/ training loops, mesh reconstruction quality, shape matching.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/metrics/VolumetricIoU.md","moduleTitle":"kaolin/metrics/VolumetricIoU","source":"engine/kaolin/metrics/VolumetricIoU.js","import":"/engine/kaolin/metrics/VolumetricIoU.js","sourceHash":"5e6dbb19ac870833bed2189edeed74278a306e25eb53d17a467747e131fd7ea4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/metrics/VolumetricIoU.js#0000:volumetricIoU","exportIndex":0,"name":"volumetricIoU","kind":"function","signature":"volumetricIoU(positionsA, indicesA, positionsB, indicesB, options = {})","summary":"Compute Volumetric IoU between two triangle meshes. Voxelizes both at the same resolution/origin, then counts overlap."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/metrics/VolumetricIoU.md","moduleTitle":"kaolin/metrics/VolumetricIoU","source":"engine/kaolin/metrics/VolumetricIoU.js","import":"/engine/kaolin/metrics/VolumetricIoU.js","sourceHash":"5e6dbb19ac870833bed2189edeed74278a306e25eb53d17a467747e131fd7ea4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/metrics/VolumetricIoU.js#0001:voxelGridIoU","exportIndex":1,"name":"voxelGridIoU","kind":"function","signature":"voxelGridIoU(gridA, gridB)","summary":"Compute IoU directly from two voxel grids (same dimensions)."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/metrics/VolumetricIoU.md","moduleTitle":"kaolin/metrics/VolumetricIoU","source":"engine/kaolin/metrics/VolumetricIoU.js","import":"/engine/kaolin/metrics/VolumetricIoU.js","sourceHash":"5e6dbb19ac870833bed2189edeed74278a306e25eb53d17a467747e131fd7ea4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/metrics/VolumetricIoU.js#0002:fScore","exportIndex":2,"name":"fScore","kind":"function","signature":"fScore(pointsPred, pointsGT, threshold)","summary":"F-Score: harmonic mean of precision and recall at a distance threshold. Precision = fraction of predicted points within threshold of ground truth. Recall = fraction of ground truth points within threshold of prediction."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/metrics/index.md","moduleTitle":"kaolin/metrics/index","source":"engine/kaolin/metrics/index.js","import":"/engine/kaolin/metrics/index.js","sourceHash":"02acaef08727a4c1ee19317b0491b9f813f355d2b038269a8a70d40d7c9cc856","subsystem":"engine","recordType":"api-module","id":"module:engine/kaolin/metrics/index.js","title":"kaolin/metrics/index","summary":"Kaolin Metrics — Barrel exports 3D shape comparison metrics for training loops and quality assessment.","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/conversions/DualContouring.md","moduleTitle":"kaolin/ops/conversions/DualContouring","source":"engine/kaolin/ops/conversions/DualContouring.js","import":"/engine/kaolin/ops/conversions/DualContouring.js","sourceHash":"f985ede43c3d6df963d7842aa819cef306438024555e81a2346076c1fe089a88","subsystem":"engine","recordType":"api-module","id":"module:engine/kaolin/ops/conversions/DualContouring.js","title":"kaolin/ops/conversions/DualContouring","summary":"DualContouring.js — Sharp-feature-preserving isosurface extraction Implements Dual Contouring (Ju et al., 2002) for extracting triangle meshes from SDF fields while preserving sharp edges and corners that Marching Cubes rounds off. Uses Hermite data (intersection points + normals on sign-changing edges) and QEF (Quadratic Error Function) minimization to optimally place vertices within cells. Features: - QEF vertex placement via SVD-free normal equations solver - Sharp edge/corner detection via eigenvalue analysis - Adaptive sharpness threshold (user-configurable) - Manifold quad→tri output with consistent winding - Works with grid SDF arrays or analytical SDF functions Compatible with: - SDFToMesh.js (same input/output conventions) - MeshToVoxel.js voxelGridToSDF() output - CSGShape.js V2 boolean operations","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/conversions/DualContouring.md","moduleTitle":"kaolin/ops/conversions/DualContouring","source":"engine/kaolin/ops/conversions/DualContouring.js","import":"/engine/kaolin/ops/conversions/DualContouring.js","sourceHash":"f985ede43c3d6df963d7842aa819cef306438024555e81a2346076c1fe089a88","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/conversions/DualContouring.js#0000:dualContouringSDF","exportIndex":0,"name":"dualContouringSDF","kind":"function","signature":"dualContouringSDF(sdf, resX, resY, resZ, options = {})","summary":"Extract an isosurface from a 3D SDF grid using Dual Contouring."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/conversions/DualContouring.md","moduleTitle":"kaolin/ops/conversions/DualContouring","source":"engine/kaolin/ops/conversions/DualContouring.js","import":"/engine/kaolin/ops/conversions/DualContouring.js","sourceHash":"f985ede43c3d6df963d7842aa819cef306438024555e81a2346076c1fe089a88","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/conversions/DualContouring.js#0001:dualContouringFunction","exportIndex":1,"name":"dualContouringFunction","kind":"function","signature":"dualContouringFunction(sdfFn, boundsMin, boundsMax, resolution = 64, options = {})","summary":"Dual Contour an analytical SDF function."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/conversions/FlexiCubes.md","moduleTitle":"kaolin/ops/conversions/FlexiCubes","source":"engine/kaolin/ops/conversions/FlexiCubes.js","import":"/engine/kaolin/ops/conversions/FlexiCubes.js","sourceHash":"a9cffce30bc766147eb3448feb1f004ddc8d795439b5c6c56e4d5f19e8ae7075","subsystem":"engine","recordType":"api-module","id":"module:engine/kaolin/ops/conversions/FlexiCubes.js","title":"kaolin/ops/conversions/FlexiCubes","summary":"FlexiCubes.js — Flexible Marching Cubes mesh extraction An improved isosurface extraction inspired by NVIDIA's FlexiCubes (2023). Key improvements over standard Marching Cubes: 1. **Flexible edge vertices** — Instead of fixed linear interpolation along edges, vertex positions can be adjusted (flexed) to better approximate the true surface, improving triangle quality. 2. **Flexible dual vertices** — Each cube gets a \"dual vertex\" (interior point) that can be optimized. Quads are formed connecting dual vertices of adjacent cubes across sign-changing edges, then split into tris. 3. **Adaptive splitting** — Quad-to-triangle splitting direction is chosen to minimize the max angle, producing more uniform triangulations. 4. **Gradient-aware vertex placement** — Uses SDF gradient (surface normal) to project dual vertices onto the isosurface for better accuracy. Compatible with: - SDFToMesh.js (same API conventions) - DualContouring.js (complementary approach) - MeshToVoxel.js voxelGridToSDF() output","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/conversions/FlexiCubes.md","moduleTitle":"kaolin/ops/conversions/FlexiCubes","source":"engine/kaolin/ops/conversions/FlexiCubes.js","import":"/engine/kaolin/ops/conversions/FlexiCubes.js","sourceHash":"a9cffce30bc766147eb3448feb1f004ddc8d795439b5c6c56e4d5f19e8ae7075","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/conversions/FlexiCubes.js#0000:flexiCubesSDF","exportIndex":0,"name":"flexiCubesSDF","kind":"function","signature":"flexiCubesSDF(sdf, resX, resY, resZ, options = {})","summary":"Extract an isosurface from a 3D SDF grid using FlexiCubes."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/conversions/FlexiCubes.md","moduleTitle":"kaolin/ops/conversions/FlexiCubes","source":"engine/kaolin/ops/conversions/FlexiCubes.js","import":"/engine/kaolin/ops/conversions/FlexiCubes.js","sourceHash":"a9cffce30bc766147eb3448feb1f004ddc8d795439b5c6c56e4d5f19e8ae7075","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/conversions/FlexiCubes.js#0001:flexiCubesFunction","exportIndex":1,"name":"flexiCubesFunction","kind":"function","signature":"flexiCubesFunction(sdfFn, boundsMin, boundsMax, resolution = 64, options = {})","summary":"FlexiCubes extraction from an analytical SDF function."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/conversions/MeshToPoints.md","moduleTitle":"kaolin/ops/conversions/MeshToPoints","source":"engine/kaolin/ops/conversions/MeshToPoints.js","import":"/engine/kaolin/ops/conversions/MeshToPoints.js","sourceHash":"c946147eb05442949c5ce81f79b6b018077af984479f30df86dd8469c7886610","subsystem":"engine","recordType":"api-module","id":"module:engine/kaolin/ops/conversions/MeshToPoints.js","title":"kaolin/ops/conversions/MeshToPoints","summary":"MeshToPoints.js — Sample points from triangle meshes Three sampling strategies: 1. Uniform random — area-weighted triangle sampling (fast) 2. Poisson disk — blue-noise distribution (quality) 3. Farthest point — greedy maximin spacing (LOD/coverage) Output: Float32Array of positions (stride 3) + optional normals Compatible with: - Particle system (direct spawn from sampled points) - MeshToParticlesCompute.js (CPU fallback path) - Point cloud operations (PointCloudOps.js)","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/conversions/MeshToPoints.md","moduleTitle":"kaolin/ops/conversions/MeshToPoints","source":"engine/kaolin/ops/conversions/MeshToPoints.js","import":"/engine/kaolin/ops/conversions/MeshToPoints.js","sourceHash":"c946147eb05442949c5ce81f79b6b018077af984479f30df86dd8469c7886610","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/conversions/MeshToPoints.js#0000:sampleUniform","exportIndex":0,"name":"sampleUniform","kind":"function","signature":"sampleUniform(positions, indices, numSamples, options = {})","summary":"Sample points uniformly on a triangle mesh surface. Uses area-weighted triangle selection + barycentric random point."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/conversions/MeshToPoints.md","moduleTitle":"kaolin/ops/conversions/MeshToPoints","source":"engine/kaolin/ops/conversions/MeshToPoints.js","import":"/engine/kaolin/ops/conversions/MeshToPoints.js","sourceHash":"c946147eb05442949c5ce81f79b6b018077af984479f30df86dd8469c7886610","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/conversions/MeshToPoints.js#0001:samplePoissonDisk","exportIndex":1,"name":"samplePoissonDisk","kind":"function","signature":"samplePoissonDisk(positions, indices, minDist, options = {})","summary":"Poisson disk sampling on a triangle mesh surface. Produces well-distributed (blue-noise) point sets. Uses dart-throwing with spatial hash acceleration."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/conversions/MeshToPoints.md","moduleTitle":"kaolin/ops/conversions/MeshToPoints","source":"engine/kaolin/ops/conversions/MeshToPoints.js","import":"/engine/kaolin/ops/conversions/MeshToPoints.js","sourceHash":"c946147eb05442949c5ce81f79b6b018077af984479f30df86dd8469c7886610","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/conversions/MeshToPoints.js#0002:farthestPointSample","exportIndex":2,"name":"farthestPointSample","kind":"function","signature":"farthestPointSample(points, numSamples)","summary":"Farthest point sampling from a set of candidate points. Iteratively picks the point farthest from all previously selected points. Produces excellent coverage for LOD and feature-preserving downsampling."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/conversions/MeshToVoxel.md","moduleTitle":"kaolin/ops/conversions/MeshToVoxel","source":"engine/kaolin/ops/conversions/MeshToVoxel.js","import":"/engine/kaolin/ops/conversions/MeshToVoxel.js","sourceHash":"5f378d38724da3f123db0945ac776e45f1552221653fd7aa5ddf4d128806bca9","subsystem":"engine","recordType":"api-module","id":"module:engine/kaolin/ops/conversions/MeshToVoxel.js","title":"kaolin/ops/conversions/MeshToVoxel","summary":"MeshToVoxel.js — Voxelize any triangle mesh Converts a triangle surface mesh into a 3D voxel grid. Uses conservative voxelization: any voxel that overlaps a triangle is set. Approaches: 1. CPU scanline (simple, robust) — default 2. GPU compute (fast, for large meshes) — requires WebGPU device Output: Uint8Array (1 = solid, 0 = empty) indexed [x + y*resX + z*resX*resY] Compatible with: - engine/voxel/ chunk system (ChunkRegistry) - MarchingCubesMesher (feed density field) - ConnectivityCompute (structural analysis) - VoronoiFracture (fracture source)","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/conversions/MeshToVoxel.md","moduleTitle":"kaolin/ops/conversions/MeshToVoxel","source":"engine/kaolin/ops/conversions/MeshToVoxel.js","import":"/engine/kaolin/ops/conversions/MeshToVoxel.js","sourceHash":"5f378d38724da3f123db0945ac776e45f1552221653fd7aa5ddf4d128806bca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/conversions/MeshToVoxel.js#0000:meshToVoxel","exportIndex":0,"name":"meshToVoxel","kind":"function","signature":"meshToVoxel(positions, indices, options = {})","summary":"Voxelize a triangle mesh on the CPU."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/conversions/MeshToVoxel.md","moduleTitle":"kaolin/ops/conversions/MeshToVoxel","source":"engine/kaolin/ops/conversions/MeshToVoxel.js","import":"/engine/kaolin/ops/conversions/MeshToVoxel.js","sourceHash":"5f378d38724da3f123db0945ac776e45f1552221653fd7aa5ddf4d128806bca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/conversions/MeshToVoxel.js#0001:voxelGridToDensity","exportIndex":1,"name":"voxelGridToDensity","kind":"function","signature":"voxelGridToDensity(grid, resX, resY, resZ)","summary":"Convert voxel grid to a density field (Float32Array) for Marching Cubes. Surface voxels get density 0, interior > 0, exterior < 0."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/conversions/MeshToVoxel.md","moduleTitle":"kaolin/ops/conversions/MeshToVoxel","source":"engine/kaolin/ops/conversions/MeshToVoxel.js","import":"/engine/kaolin/ops/conversions/MeshToVoxel.js","sourceHash":"5f378d38724da3f123db0945ac776e45f1552221653fd7aa5ddf4d128806bca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/conversions/MeshToVoxel.js#0002:voxelGridToSDF","exportIndex":2,"name":"voxelGridToSDF","kind":"function","signature":"voxelGridToSDF(grid, resX, resY, resZ, voxelSize)","summary":"Compute a signed distance field from a voxel grid. Uses distance transform (chamfer approximation)."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/conversions/ParticlesToMesh.md","moduleTitle":"kaolin/ops/conversions/ParticlesToMesh","source":"engine/kaolin/ops/conversions/ParticlesToMesh.js","import":"/engine/kaolin/ops/conversions/ParticlesToMesh.js","sourceHash":"6862661b6cc6d7785637110432a10e046b2f8fa8b9e70193461f6a1204e1aeb2","subsystem":"engine","recordType":"api-module","id":"module:engine/kaolin/ops/conversions/ParticlesToMesh.js","title":"kaolin/ops/conversions/ParticlesToMesh","summary":"ParticlesToMesh.js — Convert particle positions into a triangle mesh Generates an isosurface from particle density fields using metaball-style implicit functions + Marching Cubes extraction. Use cases: - Fluid surface rendering (SPH → mesh) - Particle cloud → solid mesh for physics - Point sprite → mesh conversion for LOD Compatible with: - Particle system readback (ParticleSimWorld positions) - FluidMPM / ParticleSPH output - SDFToMesh.js (shares MC internals)","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/conversions/ParticlesToMesh.md","moduleTitle":"kaolin/ops/conversions/ParticlesToMesh","source":"engine/kaolin/ops/conversions/ParticlesToMesh.js","import":"/engine/kaolin/ops/conversions/ParticlesToMesh.js","sourceHash":"6862661b6cc6d7785637110432a10e046b2f8fa8b9e70193461f6a1204e1aeb2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/conversions/ParticlesToMesh.js#0000:particlesToMesh","exportIndex":0,"name":"particlesToMesh","kind":"function","signature":"particlesToMesh(particlePositions, options = {})","summary":"Build an isosurface mesh from particle positions using metaball density. Each particle contributes a smooth falloff: d(r) = 1 - (r/radius)^2 summed at each grid point. Isosurface at threshold extracts the mesh."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/conversions/ParticlesToMesh.md","moduleTitle":"kaolin/ops/conversions/ParticlesToMesh","source":"engine/kaolin/ops/conversions/ParticlesToMesh.js","import":"/engine/kaolin/ops/conversions/ParticlesToMesh.js","sourceHash":"6862661b6cc6d7785637110432a10e046b2f8fa8b9e70193461f6a1204e1aeb2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/conversions/ParticlesToMesh.js#0001:particlesToMeshAnisotropic","exportIndex":1,"name":"particlesToMeshAnisotropic","kind":"function","signature":"particlesToMeshAnisotropic(positions, velocities, options = {})","summary":"Build mesh from particles with anisotropic kernels. Each particle's influence is stretched along its velocity direction."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/conversions/ParticlesToMesh.md","moduleTitle":"kaolin/ops/conversions/ParticlesToMesh","source":"engine/kaolin/ops/conversions/ParticlesToMesh.js","import":"/engine/kaolin/ops/conversions/ParticlesToMesh.js","sourceHash":"6862661b6cc6d7785637110432a10e046b2f8fa8b9e70193461f6a1204e1aeb2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/conversions/ParticlesToMesh.js#0002:particlesToMeshFast","exportIndex":2,"name":"particlesToMeshFast","kind":"function","signature":"particlesToMeshFast(positions, radius, resolution = 24)","summary":"Quick mesh from particles using a simple point-to-voxel splat. Faster than full metaball but lower quality. Good for preview/LOD."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/conversions/PointsToMesh.md","moduleTitle":"kaolin/ops/conversions/PointsToMesh","source":"engine/kaolin/ops/conversions/PointsToMesh.js","import":"/engine/kaolin/ops/conversions/PointsToMesh.js","sourceHash":"3624813a5da53c2b2ec3aed2148df15fdf221849db17257599d64983ec289c09","subsystem":"engine","recordType":"api-module","id":"module:engine/kaolin/ops/conversions/PointsToMesh.js","title":"kaolin/ops/conversions/PointsToMesh","summary":"PointsToMesh.js — Surface reconstruction from point clouds Converts unstructured 3D point sets into triangle meshes. Approaches: 1. Ball-Pivoting Algorithm (BPA) — requires oriented normals 2. Poisson Surface Reconstruction (simplified) — smooth, gap-filling 3. Alpha Shapes — convex hull variant with concavity control Compatible with: - MeshToPoints.js output (round-trip) - Particle system readback positions - LiDAR / scan data","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/conversions/PointsToMesh.md","moduleTitle":"kaolin/ops/conversions/PointsToMesh","source":"engine/kaolin/ops/conversions/PointsToMesh.js","import":"/engine/kaolin/ops/conversions/PointsToMesh.js","sourceHash":"3624813a5da53c2b2ec3aed2148df15fdf221849db17257599d64983ec289c09","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/conversions/PointsToMesh.js#0000:ballPivoting","exportIndex":0,"name":"ballPivoting","kind":"function","signature":"ballPivoting(points, normals, radius, options = {})","summary":"Ball-Pivoting Algorithm for surface reconstruction. Rolls a ball of given radius over the point cloud; when it touches exactly 3 points it creates a triangle. Requires oriented normals for consistent triangle winding."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/conversions/PointsToMesh.md","moduleTitle":"kaolin/ops/conversions/PointsToMesh","source":"engine/kaolin/ops/conversions/PointsToMesh.js","import":"/engine/kaolin/ops/conversions/PointsToMesh.js","sourceHash":"3624813a5da53c2b2ec3aed2148df15fdf221849db17257599d64983ec289c09","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/conversions/PointsToMesh.js#0001:alphaShape","exportIndex":1,"name":"alphaShape","kind":"function","signature":"alphaShape(points, alpha)","summary":"Alpha-shape surface reconstruction. Computes 3D Delaunay tetrahedralization, then removes tetrahedra whose circumradius exceeds 1/alpha. Extracts boundary triangles."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/conversions/PointsToMesh.md","moduleTitle":"kaolin/ops/conversions/PointsToMesh","source":"engine/kaolin/ops/conversions/PointsToMesh.js","import":"/engine/kaolin/ops/conversions/PointsToMesh.js","sourceHash":"3624813a5da53c2b2ec3aed2148df15fdf221849db17257599d64983ec289c09","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/conversions/PointsToMesh.js#0002:convexHull","exportIndex":2,"name":"convexHull","kind":"function","signature":"convexHull(points)","summary":"Convex hull of a 3D point set. Uses incremental algorithm. For large sets, prefer GPUConvexHull.js."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/conversions/SDFToMesh.md","moduleTitle":"kaolin/ops/conversions/SDFToMesh","source":"engine/kaolin/ops/conversions/SDFToMesh.js","import":"/engine/kaolin/ops/conversions/SDFToMesh.js","sourceHash":"1cf835669df9f6221cf5c4c052d78a8c1963c7d994f2a0340aa94324f0dfede5","subsystem":"engine","recordType":"api-module","id":"module:engine/kaolin/ops/conversions/SDFToMesh.js","title":"kaolin/ops/conversions/SDFToMesh","summary":"SDFToMesh.js — Extract triangle mesh from a Signed Distance Field Converts a 3D SDF volume (Float32Array grid) into a triangle mesh using Marching Cubes. This is the CPU path for Kaolin conversions; for GPU-accelerated MC see engine/voxel/MarchingCubesMesher.js. Also supports evaluating analytical SDF functions directly. Compatible with: - MeshToVoxel.js voxelGridToSDF() output - MeshSDFGenerator.js baked SDF textures - SDFCollision.js primitives - FlexiCubes (future Phase 3+)","exportCount":9}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/conversions/SDFToMesh.md","moduleTitle":"kaolin/ops/conversions/SDFToMesh","source":"engine/kaolin/ops/conversions/SDFToMesh.js","import":"/engine/kaolin/ops/conversions/SDFToMesh.js","sourceHash":"1cf835669df9f6221cf5c4c052d78a8c1963c7d994f2a0340aa94324f0dfede5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/conversions/SDFToMesh.js#0000:sdfToMesh","exportIndex":0,"name":"sdfToMesh","kind":"function","signature":"sdfToMesh(sdf, resX, resY, resZ, options = {})","summary":"Extract an isosurface from a 3D SDF grid using Marching Cubes."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/conversions/SDFToMesh.md","moduleTitle":"kaolin/ops/conversions/SDFToMesh","source":"engine/kaolin/ops/conversions/SDFToMesh.js","import":"/engine/kaolin/ops/conversions/SDFToMesh.js","sourceHash":"1cf835669df9f6221cf5c4c052d78a8c1963c7d994f2a0340aa94324f0dfede5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/conversions/SDFToMesh.js#0001:sdfFunctionToMesh","exportIndex":1,"name":"sdfFunctionToMesh","kind":"function","signature":"sdfFunctionToMesh(sdfFn, boundsMin, boundsMax, resolution = 64, options = {})","summary":"Mesh an analytical SDF function by evaluating it on a grid."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/conversions/SDFToMesh.md","moduleTitle":"kaolin/ops/conversions/SDFToMesh","source":"engine/kaolin/ops/conversions/SDFToMesh.js","import":"/engine/kaolin/ops/conversions/SDFToMesh.js","sourceHash":"1cf835669df9f6221cf5c4c052d78a8c1963c7d994f2a0340aa94324f0dfede5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/conversions/SDFToMesh.js#0002:sdfCSGToMesh","exportIndex":2,"name":"sdfCSGToMesh","kind":"function","signature":"sdfCSGToMesh(ops, boundsMin, boundsMax, resolution = 64)","summary":"Mesh a CSG combination of SDF primitives. Accepts an array of { sdf: fn(x,y,z), op: 'union'|'subtract'|'intersect' }."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/conversions/SDFToMesh.md","moduleTitle":"kaolin/ops/conversions/SDFToMesh","source":"engine/kaolin/ops/conversions/SDFToMesh.js","import":"/engine/kaolin/ops/conversions/SDFToMesh.js","sourceHash":"1cf835669df9f6221cf5c4c052d78a8c1963c7d994f2a0340aa94324f0dfede5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/conversions/SDFToMesh.js#0003:sdfSphere","exportIndex":3,"name":"sdfSphere","kind":"function","signature":"sdfSphere(radius)","summary":"Sphere SDF centered at origin"}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/conversions/SDFToMesh.md","moduleTitle":"kaolin/ops/conversions/SDFToMesh","source":"engine/kaolin/ops/conversions/SDFToMesh.js","import":"/engine/kaolin/ops/conversions/SDFToMesh.js","sourceHash":"1cf835669df9f6221cf5c4c052d78a8c1963c7d994f2a0340aa94324f0dfede5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/conversions/SDFToMesh.js#0004:sdfBox","exportIndex":4,"name":"sdfBox","kind":"function","signature":"sdfBox(halfX, halfY, halfZ)","summary":"Box SDF centered at origin"}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/conversions/SDFToMesh.md","moduleTitle":"kaolin/ops/conversions/SDFToMesh","source":"engine/kaolin/ops/conversions/SDFToMesh.js","import":"/engine/kaolin/ops/conversions/SDFToMesh.js","sourceHash":"1cf835669df9f6221cf5c4c052d78a8c1963c7d994f2a0340aa94324f0dfede5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/conversions/SDFToMesh.js#0005:sdfTorus","exportIndex":5,"name":"sdfTorus","kind":"function","signature":"sdfTorus(majorR, minorR)","summary":"Torus SDF centered at origin, in XZ plane"}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/conversions/SDFToMesh.md","moduleTitle":"kaolin/ops/conversions/SDFToMesh","source":"engine/kaolin/ops/conversions/SDFToMesh.js","import":"/engine/kaolin/ops/conversions/SDFToMesh.js","sourceHash":"1cf835669df9f6221cf5c4c052d78a8c1963c7d994f2a0340aa94324f0dfede5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/conversions/SDFToMesh.js#0006:sdfCylinder","exportIndex":6,"name":"sdfCylinder","kind":"function","signature":"sdfCylinder(radius, halfHeight)","summary":"Cylinder SDF centered at origin, along Y axis"}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/conversions/SDFToMesh.md","moduleTitle":"kaolin/ops/conversions/SDFToMesh","source":"engine/kaolin/ops/conversions/SDFToMesh.js","import":"/engine/kaolin/ops/conversions/SDFToMesh.js","sourceHash":"1cf835669df9f6221cf5c4c052d78a8c1963c7d994f2a0340aa94324f0dfede5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/conversions/SDFToMesh.js#0007:sdfTranslate","exportIndex":7,"name":"sdfTranslate","kind":"function","signature":"sdfTranslate(sdfFn, tx, ty, tz)","summary":"Translate an SDF function"}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/conversions/SDFToMesh.md","moduleTitle":"kaolin/ops/conversions/SDFToMesh","source":"engine/kaolin/ops/conversions/SDFToMesh.js","import":"/engine/kaolin/ops/conversions/SDFToMesh.js","sourceHash":"1cf835669df9f6221cf5c4c052d78a8c1963c7d994f2a0340aa94324f0dfede5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/conversions/SDFToMesh.js#0008:sdfSmoothUnion","exportIndex":8,"name":"sdfSmoothUnion","kind":"function","signature":"sdfSmoothUnion(sdfA, sdfB, k)","summary":"Smooth union of two SDF functions"}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/conversions/index.md","moduleTitle":"kaolin/ops/conversions/index","source":"engine/kaolin/ops/conversions/index.js","import":"/engine/kaolin/ops/conversions/index.js","sourceHash":"ed4a42ee6b0fd88382f9a789618d87f6efcf8c6f3ab3a71a8f207f7e7c3cb3d3","subsystem":"engine","recordType":"api-module","id":"module:engine/kaolin/ops/conversions/index.js","title":"kaolin/ops/conversions/index","summary":"Kaolin Conversions — Barrel exports Representation conversion modules: - Mesh ↔ Voxel - Mesh ↔ Points - Mesh ↔ SDF - Particles → Mesh","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/index.md","moduleTitle":"kaolin/ops/index","source":"engine/kaolin/ops/index.js","import":"/engine/kaolin/ops/index.js","sourceHash":"ba2904257eecd4ce606e3296dc75967db77403d04fae11bbacb9be8d6423354f","subsystem":"engine","recordType":"api-module","id":"module:engine/kaolin/ops/index.js","title":"kaolin/ops/index","summary":"engine/kaolin/ops — Geometry operations Primitive processing functions for batched 3D models: meshes, voxelgrids, point clouds, and conversions between them.","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/mesh/MeshOps.md","moduleTitle":"kaolin/ops/mesh/MeshOps","source":"engine/kaolin/ops/mesh/MeshOps.js","import":"/engine/kaolin/ops/mesh/MeshOps.js","sourceHash":"12b2869b789a1e8f198f08ac5114197ce9824d7d4280832e244d41a283a9df16","subsystem":"engine","recordType":"api-module","id":"module:engine/kaolin/ops/mesh/MeshOps.js","title":"kaolin/ops/mesh/MeshOps","summary":"MeshOps.js — Core Mesh Operations for Kaolin-style 3D Geometry Toolkit Provides half-edge data structure, adjacency queries, normals, area, Laplacian smoothing, validation, and mesh analysis. All operations work on flat typed arrays (GPU-friendly) with optional object wrappers. Data format (Kaolin convention): positions: Float32Array — stride 3 (x, y, z per vertex) indices:   Uint32Array  — stride 3 (v0, v1, v2 per triangle) Compatible with existing engine systems: - MeshDecimation.js (Vertex/Triangle classes) - MeshCutter.js (plain [x,y,z] arrays) - GPUSoftBody.js (SoA GPU buffers) - EntityMeshRenderer (interleaved vertex buffers)","exportCount":21}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/mesh/MeshOps.md","moduleTitle":"kaolin/ops/mesh/MeshOps","source":"engine/kaolin/ops/mesh/MeshOps.js","import":"/engine/kaolin/ops/mesh/MeshOps.js","sourceHash":"12b2869b789a1e8f198f08ac5114197ce9824d7d4280832e244d41a283a9df16","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/mesh/MeshOps.js#0000:HalfEdgeMesh","exportIndex":0,"name":"HalfEdgeMesh","kind":"class","signature":"class HalfEdgeMesh","summary":"Index-based half-edge mesh representation. Each half-edge stores: vertex   — index of the vertex it points TO face     — index of the face it belongs to (-1 for boundary) twin     — index of the opposite half-edge (-1 if boundary) next     — index of the next half-edge in the face loop prev     — index of the previous half-edge in the face loop Stored as parallel typed arrays for cache efficiency."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/mesh/MeshOps.md","moduleTitle":"kaolin/ops/mesh/MeshOps","source":"engine/kaolin/ops/mesh/MeshOps.js","import":"/engine/kaolin/ops/mesh/MeshOps.js","sourceHash":"12b2869b789a1e8f198f08ac5114197ce9824d7d4280832e244d41a283a9df16","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/mesh/MeshOps.js#0001:computeFaceNormals","exportIndex":1,"name":"computeFaceNormals","kind":"function","signature":"computeFaceNormals(positions, indices, normalize = true)","summary":"Compute per-face normals (unnormalized = area-weighted, or normalized)."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/mesh/MeshOps.md","moduleTitle":"kaolin/ops/mesh/MeshOps","source":"engine/kaolin/ops/mesh/MeshOps.js","import":"/engine/kaolin/ops/mesh/MeshOps.js","sourceHash":"12b2869b789a1e8f198f08ac5114197ce9824d7d4280832e244d41a283a9df16","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/mesh/MeshOps.js#0002:computeVertexNormals","exportIndex":2,"name":"computeVertexNormals","kind":"function","signature":"computeVertexNormals(positions, indices)","summary":"Compute per-vertex normals via area-weighted average of adjacent face normals."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/mesh/MeshOps.md","moduleTitle":"kaolin/ops/mesh/MeshOps","source":"engine/kaolin/ops/mesh/MeshOps.js","import":"/engine/kaolin/ops/mesh/MeshOps.js","sourceHash":"12b2869b789a1e8f198f08ac5114197ce9824d7d4280832e244d41a283a9df16","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/mesh/MeshOps.js#0003:computeVertexNormalsAngleWeighted","exportIndex":3,"name":"computeVertexNormalsAngleWeighted","kind":"function","signature":"computeVertexNormalsAngleWeighted(positions, indices)","summary":"Compute per-vertex normals weighted by the angle at each vertex in each face. More accurate than area-weighted for meshes with very different triangle sizes."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/mesh/MeshOps.md","moduleTitle":"kaolin/ops/mesh/MeshOps","source":"engine/kaolin/ops/mesh/MeshOps.js","import":"/engine/kaolin/ops/mesh/MeshOps.js","sourceHash":"12b2869b789a1e8f198f08ac5114197ce9824d7d4280832e244d41a283a9df16","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/mesh/MeshOps.js#0004:computeFaceAreas","exportIndex":4,"name":"computeFaceAreas","kind":"function","signature":"computeFaceAreas(positions, indices)","summary":"Compute area of each triangle face."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/mesh/MeshOps.md","moduleTitle":"kaolin/ops/mesh/MeshOps","source":"engine/kaolin/ops/mesh/MeshOps.js","import":"/engine/kaolin/ops/mesh/MeshOps.js","sourceHash":"12b2869b789a1e8f198f08ac5114197ce9824d7d4280832e244d41a283a9df16","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/mesh/MeshOps.js#0005:computeSurfaceArea","exportIndex":5,"name":"computeSurfaceArea","kind":"function","signature":"computeSurfaceArea(positions, indices)","summary":"Total surface area of the mesh."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/mesh/MeshOps.md","moduleTitle":"kaolin/ops/mesh/MeshOps","source":"engine/kaolin/ops/mesh/MeshOps.js","import":"/engine/kaolin/ops/mesh/MeshOps.js","sourceHash":"12b2869b789a1e8f198f08ac5114197ce9824d7d4280832e244d41a283a9df16","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/mesh/MeshOps.js#0006:computeSignedVolume","exportIndex":6,"name":"computeSignedVolume","kind":"function","signature":"computeSignedVolume(positions, indices)","summary":"Signed volume of a closed triangle mesh (divergence theorem). Positive if normals point outward with consistent winding."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/mesh/MeshOps.md","moduleTitle":"kaolin/ops/mesh/MeshOps","source":"engine/kaolin/ops/mesh/MeshOps.js","import":"/engine/kaolin/ops/mesh/MeshOps.js","sourceHash":"12b2869b789a1e8f198f08ac5114197ce9824d7d4280832e244d41a283a9df16","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/mesh/MeshOps.js#0007:computeEdgeLengths","exportIndex":7,"name":"computeEdgeLengths","kind":"function","signature":"computeEdgeLengths(positions, indices)","summary":"Compute lengths of all unique edges."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/mesh/MeshOps.md","moduleTitle":"kaolin/ops/mesh/MeshOps","source":"engine/kaolin/ops/mesh/MeshOps.js","import":"/engine/kaolin/ops/mesh/MeshOps.js","sourceHash":"12b2869b789a1e8f198f08ac5114197ce9824d7d4280832e244d41a283a9df16","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/mesh/MeshOps.js#0008:computeBoundingBox","exportIndex":8,"name":"computeBoundingBox","kind":"function","signature":"computeBoundingBox(positions)","summary":"Compute axis-aligned bounding box."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/mesh/MeshOps.md","moduleTitle":"kaolin/ops/mesh/MeshOps","source":"engine/kaolin/ops/mesh/MeshOps.js","import":"/engine/kaolin/ops/mesh/MeshOps.js","sourceHash":"12b2869b789a1e8f198f08ac5114197ce9824d7d4280832e244d41a283a9df16","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/mesh/MeshOps.js#0009:buildVertexAdjacency","exportIndex":9,"name":"buildVertexAdjacency","kind":"function","signature":"buildVertexAdjacency(indices, numVertices)","summary":"Build vertex-to-vertex adjacency (sparse neighbor lists)."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/mesh/MeshOps.md","moduleTitle":"kaolin/ops/mesh/MeshOps","source":"engine/kaolin/ops/mesh/MeshOps.js","import":"/engine/kaolin/ops/mesh/MeshOps.js","sourceHash":"12b2869b789a1e8f198f08ac5114197ce9824d7d4280832e244d41a283a9df16","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/mesh/MeshOps.js#0010:buildVertexFaceAdjacency","exportIndex":10,"name":"buildVertexFaceAdjacency","kind":"function","signature":"buildVertexFaceAdjacency(indices, numVertices)","summary":"Build vertex-to-face adjacency."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/mesh/MeshOps.md","moduleTitle":"kaolin/ops/mesh/MeshOps","source":"engine/kaolin/ops/mesh/MeshOps.js","import":"/engine/kaolin/ops/mesh/MeshOps.js","sourceHash":"12b2869b789a1e8f198f08ac5114197ce9824d7d4280832e244d41a283a9df16","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/mesh/MeshOps.js#0011:buildFaceAdjacency","exportIndex":11,"name":"buildFaceAdjacency","kind":"function","signature":"buildFaceAdjacency(indices, numFaces)","summary":"Build face-to-face adjacency (faces sharing an edge)."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/mesh/MeshOps.md","moduleTitle":"kaolin/ops/mesh/MeshOps","source":"engine/kaolin/ops/mesh/MeshOps.js","import":"/engine/kaolin/ops/mesh/MeshOps.js","sourceHash":"12b2869b789a1e8f198f08ac5114197ce9824d7d4280832e244d41a283a9df16","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/mesh/MeshOps.js#0012:laplacianSmooth","exportIndex":12,"name":"laplacianSmooth","kind":"function","signature":"laplacianSmooth(positions, indices, iterations = 1, lambda = 0.5, pinned = null)","summary":"Uniform Laplacian smoothing (iterative). Moves each vertex toward the centroid of its neighbors."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/mesh/MeshOps.md","moduleTitle":"kaolin/ops/mesh/MeshOps","source":"engine/kaolin/ops/mesh/MeshOps.js","import":"/engine/kaolin/ops/mesh/MeshOps.js","sourceHash":"12b2869b789a1e8f198f08ac5114197ce9824d7d4280832e244d41a283a9df16","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/mesh/MeshOps.js#0013:taubinSmooth","exportIndex":13,"name":"taubinSmooth","kind":"function","signature":"taubinSmooth(positions, indices, iterations = 5, lambda = 0.5, mu = -0.53, pinned = null)","summary":"Taubin smoothing (λ|μ) — Laplacian smooth that preserves volume. Alternates positive (shrinking) and negative (inflating) steps."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/mesh/MeshOps.md","moduleTitle":"kaolin/ops/mesh/MeshOps","source":"engine/kaolin/ops/mesh/MeshOps.js","import":"/engine/kaolin/ops/mesh/MeshOps.js","sourceHash":"12b2869b789a1e8f198f08ac5114197ce9824d7d4280832e244d41a283a9df16","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/mesh/MeshOps.js#0014:cotangentLaplacianSmooth","exportIndex":14,"name":"cotangentLaplacianSmooth","kind":"function","signature":"cotangentLaplacianSmooth(positions, indices, lambda = 0.5, pinned = null)","summary":"Cotangent-weighted Laplacian smoothing (1 iteration). More geometrically accurate than uniform — preserves curvature better."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/mesh/MeshOps.md","moduleTitle":"kaolin/ops/mesh/MeshOps","source":"engine/kaolin/ops/mesh/MeshOps.js","import":"/engine/kaolin/ops/mesh/MeshOps.js","sourceHash":"12b2869b789a1e8f198f08ac5114197ce9824d7d4280832e244d41a283a9df16","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/mesh/MeshOps.js#0015:validateMesh","exportIndex":15,"name":"validateMesh","kind":"function","signature":"validateMesh(positions, indices)","summary":"Validate mesh integrity. Returns a report object."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/mesh/MeshOps.md","moduleTitle":"kaolin/ops/mesh/MeshOps","source":"engine/kaolin/ops/mesh/MeshOps.js","import":"/engine/kaolin/ops/mesh/MeshOps.js","sourceHash":"12b2869b789a1e8f198f08ac5114197ce9824d7d4280832e244d41a283a9df16","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/mesh/MeshOps.js#0016:computeCentroid","exportIndex":16,"name":"computeCentroid","kind":"function","signature":"computeCentroid(positions)","summary":"Compute mesh centroid (average of vertex positions)."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/mesh/MeshOps.md","moduleTitle":"kaolin/ops/mesh/MeshOps","source":"engine/kaolin/ops/mesh/MeshOps.js","import":"/engine/kaolin/ops/mesh/MeshOps.js","sourceHash":"12b2869b789a1e8f198f08ac5114197ce9824d7d4280832e244d41a283a9df16","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/mesh/MeshOps.js#0017:fromVertexTriangleClasses","exportIndex":17,"name":"fromVertexTriangleClasses","kind":"function","signature":"fromVertexTriangleClasses(vertices, triangles)","summary":"Convert from MeshDecimation.js Vertex/Triangle classes to flat arrays."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/mesh/MeshOps.md","moduleTitle":"kaolin/ops/mesh/MeshOps","source":"engine/kaolin/ops/mesh/MeshOps.js","import":"/engine/kaolin/ops/mesh/MeshOps.js","sourceHash":"12b2869b789a1e8f198f08ac5114197ce9824d7d4280832e244d41a283a9df16","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/mesh/MeshOps.js#0018:fromArrays","exportIndex":18,"name":"fromArrays","kind":"function","signature":"fromArrays(verts, faces)","summary":"Convert from plain [x,y,z] arrays (MeshCutter style) to flat Float32Array."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/mesh/MeshOps.md","moduleTitle":"kaolin/ops/mesh/MeshOps","source":"engine/kaolin/ops/mesh/MeshOps.js","import":"/engine/kaolin/ops/mesh/MeshOps.js","sourceHash":"12b2869b789a1e8f198f08ac5114197ce9824d7d4280832e244d41a283a9df16","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/mesh/MeshOps.js#0019:toArrays","exportIndex":19,"name":"toArrays","kind":"function","signature":"toArrays(positions, indices)","summary":"Convert flat arrays to plain [x,y,z] arrays."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/mesh/MeshOps.md","moduleTitle":"kaolin/ops/mesh/MeshOps","source":"engine/kaolin/ops/mesh/MeshOps.js","import":"/engine/kaolin/ops/mesh/MeshOps.js","sourceHash":"12b2869b789a1e8f198f08ac5114197ce9824d7d4280832e244d41a283a9df16","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/mesh/MeshOps.js#0020:fromInterleavedBuffer","exportIndex":20,"name":"fromInterleavedBuffer","kind":"function","signature":"fromInterleavedBuffer(interleavedBuffer, stride, posOffset, indexBuffer)","summary":"Extract positions/indices from an interleaved GPU vertex buffer + index buffer."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/mesh/MeshSubdivision.md","moduleTitle":"kaolin/ops/mesh/MeshSubdivision","source":"engine/kaolin/ops/mesh/MeshSubdivision.js","import":"/engine/kaolin/ops/mesh/MeshSubdivision.js","sourceHash":"e351e17376afb9d96ba821efcb04aa3febf52c7784b866f238daf7c1305ae32c","subsystem":"engine","recordType":"api-module","id":"module:engine/kaolin/ops/mesh/MeshSubdivision.js","title":"kaolin/ops/mesh/MeshSubdivision","summary":"MeshSubdivision.js — Loop & Catmull-Clark Subdivision Subdivision surface algorithms for the Kaolin geometry toolkit. Loop Subdivision (Charles Loop, 1987): - Operates on triangle meshes only - Inserts edge midpoints, reconnects into 4 sub-triangles per face - Uses β-weighting for smooth limit surface (Warren weights) - Boundary edges get special 1/8, 3/4, 1/8 stencil Catmull-Clark Subdivision (Catmull & Clark, 1978): - Operates on quad or mixed meshes - Face points → edge points → vertex points → reconnect - Converges to C² (bi-cubic B-spline) surface away from extraordinary verts - Triangle input is first converted to all-quad via 1-to-3 split Both algorithms support: - Boundary handling (crease preservation) - Pinned vertices (kept fixed) - Multiple subdivision levels Data format matches MeshOps.js: positions: Float32Array — stride 3 indices:   Uint32Array  — stride 3 (triangles) or stride 4 (quads)","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/mesh/MeshSubdivision.md","moduleTitle":"kaolin/ops/mesh/MeshSubdivision","source":"engine/kaolin/ops/mesh/MeshSubdivision.js","import":"/engine/kaolin/ops/mesh/MeshSubdivision.js","sourceHash":"e351e17376afb9d96ba821efcb04aa3febf52c7784b866f238daf7c1305ae32c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/mesh/MeshSubdivision.js#0000:loopSubdivide","exportIndex":0,"name":"loopSubdivide","kind":"function","signature":"loopSubdivide(positions, indices, options = {})","summary":"Perform one level of Loop subdivision on a triangle mesh."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/mesh/MeshSubdivision.md","moduleTitle":"kaolin/ops/mesh/MeshSubdivision","source":"engine/kaolin/ops/mesh/MeshSubdivision.js","import":"/engine/kaolin/ops/mesh/MeshSubdivision.js","sourceHash":"e351e17376afb9d96ba821efcb04aa3febf52c7784b866f238daf7c1305ae32c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/mesh/MeshSubdivision.js#0001:loopSubdivideMulti","exportIndex":1,"name":"loopSubdivideMulti","kind":"function","signature":"loopSubdivideMulti(positions, indices, levels = 1, options = {})","summary":"Perform multiple levels of Loop subdivision."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/mesh/MeshSubdivision.md","moduleTitle":"kaolin/ops/mesh/MeshSubdivision","source":"engine/kaolin/ops/mesh/MeshSubdivision.js","import":"/engine/kaolin/ops/mesh/MeshSubdivision.js","sourceHash":"e351e17376afb9d96ba821efcb04aa3febf52c7784b866f238daf7c1305ae32c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/mesh/MeshSubdivision.js#0002:catmullClarkSubdivide","exportIndex":2,"name":"catmullClarkSubdivide","kind":"function","signature":"catmullClarkSubdivide(positions, faceIndices, faceVertCounts, options = {})","summary":"Perform one level of Catmull-Clark subdivision. Input can be triangle or quad faces (mixed is allowed). - triangles: indices stride 3, faceVertCounts = [3, 3, ...] - quads:     indices stride 4, faceVertCounts = [4, 4, ...] - mixed:     flat indices + faceVertCounts array For simplicity, this implementation accepts two formats: 1. (positions, quadIndices) — all-quad, quadIndices = Uint32Array stride 4 2. (positions, triIndices, { triangleInput: true }) — converts tris to quads first"}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/mesh/MeshSubdivision.md","moduleTitle":"kaolin/ops/mesh/MeshSubdivision","source":"engine/kaolin/ops/mesh/MeshSubdivision.js","import":"/engine/kaolin/ops/mesh/MeshSubdivision.js","sourceHash":"e351e17376afb9d96ba821efcb04aa3febf52c7784b866f238daf7c1305ae32c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/mesh/MeshSubdivision.js#0003:catmullClarkSubdivideMulti","exportIndex":3,"name":"catmullClarkSubdivideMulti","kind":"function","signature":"catmullClarkSubdivideMulti(positions, faceIndices, faceVertCounts, levels = 1, options = {})","summary":"Perform multiple levels of Catmull-Clark subdivision."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/mesh/MeshSubdivision.md","moduleTitle":"kaolin/ops/mesh/MeshSubdivision","source":"engine/kaolin/ops/mesh/MeshSubdivision.js","import":"/engine/kaolin/ops/mesh/MeshSubdivision.js","sourceHash":"e351e17376afb9d96ba821efcb04aa3febf52c7784b866f238daf7c1305ae32c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/mesh/MeshSubdivision.js#0004:trianglesToFaceList","exportIndex":4,"name":"trianglesToFaceList","kind":"function","signature":"trianglesToFaceList(triIndices)","summary":"Convert a triangle mesh to the faceIndices + faceVertCounts format expected by catmullClarkSubdivide."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/mesh/MeshSubdivision.md","moduleTitle":"kaolin/ops/mesh/MeshSubdivision","source":"engine/kaolin/ops/mesh/MeshSubdivision.js","import":"/engine/kaolin/ops/mesh/MeshSubdivision.js","sourceHash":"e351e17376afb9d96ba821efcb04aa3febf52c7784b866f238daf7c1305ae32c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/mesh/MeshSubdivision.js#0005:quadFacesToTriangles","exportIndex":5,"name":"quadFacesToTriangles","kind":"function","signature":"quadFacesToTriangles(positions, faceIndices, faceVertCounts)","summary":"Convert Catmull-Clark output (all quads) to triangles for rendering. Each quad is split into 2 triangles along the shorter diagonal."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/mesh/MeshTetrahedralize.md","moduleTitle":"kaolin/ops/mesh/MeshTetrahedralize","source":"engine/kaolin/ops/mesh/MeshTetrahedralize.js","import":"/engine/kaolin/ops/mesh/MeshTetrahedralize.js","sourceHash":"3dfc6cb8a9d8c8ce29f37ee176d70c99d642bf6815e786729cc0676c8263494c","subsystem":"engine","recordType":"api-module","id":"module:engine/kaolin/ops/mesh/MeshTetrahedralize.js","title":"kaolin/ops/mesh/MeshTetrahedralize","summary":"MeshTetrahedralize.js — Surface Mesh → Tetrahedral Mesh Converts a closed triangle surface mesh into a tetrahedral volume mesh suitable for FEM soft body simulation (GPUSoftBody.js). Algorithm: Constrained Delaunay Tetrahedralization 1. Compute bounding box, generate interior sample points 2. Combine surface vertices + interior points 3. Build Delaunay tetrahedralization via incremental insertion 4. Remove tets outside the surface (using winding number or ray test) 5. Output: nodePositions (Float32Array stride 3) + tetIndices (Uint32Array stride 4) The output format matches GPUSoftBody.createSoftBody() exactly: nodePositions: Float32Array — [x0, y0, z0, x1, y1, z1, ...] tetIndices:    Uint32Array  — [n0, n1, n2, n3, ...] (4 per tet) References: - Si, \"TetGen: A Delaunay-Based Quality Tetrahedral Mesh Generator\" (2015) - Shewchuk, \"Tetrahedral Mesh Generation by Delaunay Refinement\" (1998) - Jacobson et al., \"Robust Inside-Outside Segmentation using Generalized Winding Numbers\" (2013)","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/mesh/MeshTetrahedralize.md","moduleTitle":"kaolin/ops/mesh/MeshTetrahedralize","source":"engine/kaolin/ops/mesh/MeshTetrahedralize.js","import":"/engine/kaolin/ops/mesh/MeshTetrahedralize.js","sourceHash":"3dfc6cb8a9d8c8ce29f37ee176d70c99d642bf6815e786729cc0676c8263494c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/mesh/MeshTetrahedralize.js#0000:tetrahedralize","exportIndex":0,"name":"tetrahedralize","kind":"function","signature":"tetrahedralize(positions, indices, options = {})","summary":"Tetrahedralize a closed triangle surface mesh."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/mesh/MeshTetrahedralize.md","moduleTitle":"kaolin/ops/mesh/MeshTetrahedralize","source":"engine/kaolin/ops/mesh/MeshTetrahedralize.js","import":"/engine/kaolin/ops/mesh/MeshTetrahedralize.js","sourceHash":"3dfc6cb8a9d8c8ce29f37ee176d70c99d642bf6815e786729cc0676c8263494c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/mesh/MeshTetrahedralize.js#0001:tetrahedralizeGrid","exportIndex":1,"name":"tetrahedralizeGrid","kind":"function","signature":"tetrahedralizeGrid(positions, indices, gridRes = 6)","summary":"Quick tetrahedralize using simple grid-based approach. Faster but lower quality than full Delaunay. Good for real-time use."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/mesh/MeshTetrahedralize.md","moduleTitle":"kaolin/ops/mesh/MeshTetrahedralize","source":"engine/kaolin/ops/mesh/MeshTetrahedralize.js","import":"/engine/kaolin/ops/mesh/MeshTetrahedralize.js","sourceHash":"3dfc6cb8a9d8c8ce29f37ee176d70c99d642bf6815e786729cc0676c8263494c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/mesh/MeshTetrahedralize.js#0002:computeTetQuality","exportIndex":2,"name":"computeTetQuality","kind":"function","signature":"computeTetQuality(positions, tetIndices)","summary":"Compute quality ratio for each tet (radius ratio = circumradius / inradius). Ideal = 3 (regular tet). Higher = worse (slivers)."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/mesh/MeshTetrahedralize.md","moduleTitle":"kaolin/ops/mesh/MeshTetrahedralize","source":"engine/kaolin/ops/mesh/MeshTetrahedralize.js","import":"/engine/kaolin/ops/mesh/MeshTetrahedralize.js","sourceHash":"3dfc6cb8a9d8c8ce29f37ee176d70c99d642bf6815e786729cc0676c8263494c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/mesh/MeshTetrahedralize.js#0003:extractTetSurface","exportIndex":3,"name":"extractTetSurface","kind":"function","signature":"extractTetSurface(tetIndices)","summary":"Extract the surface triangles of a tetrahedral mesh. Surface faces are those that belong to exactly one tetrahedron."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/mesh/index.md","moduleTitle":"kaolin/ops/mesh/index","source":"engine/kaolin/ops/mesh/index.js","import":"/engine/kaolin/ops/mesh/index.js","sourceHash":"2a392948d091a5a22d10d545f39c5448cf91191dfaf6d69d2e7e8bdb0dfefd8c","subsystem":"engine","recordType":"api-module","id":"module:engine/kaolin/ops/mesh/index.js","title":"kaolin/ops/mesh/index","summary":"engine/kaolin/ops/mesh — Core mesh operations Half-edge data structure, adjacency, normals, area, Laplacian smoothing, validation, and subdivision surfaces (Loop + Catmull-Clark).","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/pointcloud/PointCloudOps.md","moduleTitle":"kaolin/ops/pointcloud/PointCloudOps","source":"engine/kaolin/ops/pointcloud/PointCloudOps.js","import":"/engine/kaolin/ops/pointcloud/PointCloudOps.js","sourceHash":"4ff18a6b98a537bc8c716b076a609995d5881ec913083aeca863331f3a40516f","subsystem":"engine","recordType":"api-module","id":"module:engine/kaolin/ops/pointcloud/PointCloudOps.js","title":"kaolin/ops/pointcloud/PointCloudOps","summary":"PointCloudOps.js — Point cloud geometric analysis Operations on unstructured 3D point sets: - k-NN queries via spatial hash - Normal estimation (PCA on local neighborhood) - Curvature estimation (from fitted normals) - Statistical outlier removal - Voxel downsampling - Centroid / bounding box / oriented bounding box - Normal orientation propagation (MST-based) Compatible with: - MeshToPoints.js output - Particle system readback (Float32Array stride 3) - PointsToMesh.js input (provides normals for BPA)","exportCount":13}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/pointcloud/PointCloudOps.md","moduleTitle":"kaolin/ops/pointcloud/PointCloudOps","source":"engine/kaolin/ops/pointcloud/PointCloudOps.js","import":"/engine/kaolin/ops/pointcloud/PointCloudOps.js","sourceHash":"4ff18a6b98a537bc8c716b076a609995d5881ec913083aeca863331f3a40516f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/pointcloud/PointCloudOps.js#0000:buildSpatialHash","exportIndex":0,"name":"buildSpatialHash","kind":"function","signature":"buildSpatialHash(points, cellSize)","summary":"Build a spatial hash for fast neighbor queries."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/pointcloud/PointCloudOps.md","moduleTitle":"kaolin/ops/pointcloud/PointCloudOps","source":"engine/kaolin/ops/pointcloud/PointCloudOps.js","import":"/engine/kaolin/ops/pointcloud/PointCloudOps.js","sourceHash":"4ff18a6b98a537bc8c716b076a609995d5881ec913083aeca863331f3a40516f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/pointcloud/PointCloudOps.js#0001:knnQuery","exportIndex":1,"name":"knnQuery","kind":"function","signature":"knnQuery(points, grid, cellSize, qi, k, maxRadius = Infinity)","summary":"Find k nearest neighbors for a single query point."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/pointcloud/PointCloudOps.md","moduleTitle":"kaolin/ops/pointcloud/PointCloudOps","source":"engine/kaolin/ops/pointcloud/PointCloudOps.js","import":"/engine/kaolin/ops/pointcloud/PointCloudOps.js","sourceHash":"4ff18a6b98a537bc8c716b076a609995d5881ec913083aeca863331f3a40516f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/pointcloud/PointCloudOps.js#0002:batchKNN","exportIndex":2,"name":"batchKNN","kind":"function","signature":"batchKNN(points, k, searchRadius)","summary":"Batch k-NN for all points."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/pointcloud/PointCloudOps.md","moduleTitle":"kaolin/ops/pointcloud/PointCloudOps","source":"engine/kaolin/ops/pointcloud/PointCloudOps.js","import":"/engine/kaolin/ops/pointcloud/PointCloudOps.js","sourceHash":"4ff18a6b98a537bc8c716b076a609995d5881ec913083aeca863331f3a40516f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/pointcloud/PointCloudOps.js#0003:estimateNormals","exportIndex":3,"name":"estimateNormals","kind":"function","signature":"estimateNormals(points, k = 12, options = {})","summary":"Estimate normals for a point cloud using PCA on local neighborhoods. For each point, finds k nearest neighbors and fits a plane via PCA. The normal is the eigenvector corresponding to the smallest eigenvalue of the covariance matrix."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/pointcloud/PointCloudOps.md","moduleTitle":"kaolin/ops/pointcloud/PointCloudOps","source":"engine/kaolin/ops/pointcloud/PointCloudOps.js","import":"/engine/kaolin/ops/pointcloud/PointCloudOps.js","sourceHash":"4ff18a6b98a537bc8c716b076a609995d5881ec913083aeca863331f3a40516f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/pointcloud/PointCloudOps.js#0004:estimateCurvature","exportIndex":4,"name":"estimateCurvature","kind":"function","signature":"estimateCurvature(points, normals, k = 12)","summary":"Estimate per-point curvature from normals and neighborhood. Uses the ratio of the smallest eigenvalue to the sum of eigenvalues."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/pointcloud/PointCloudOps.md","moduleTitle":"kaolin/ops/pointcloud/PointCloudOps","source":"engine/kaolin/ops/pointcloud/PointCloudOps.js","import":"/engine/kaolin/ops/pointcloud/PointCloudOps.js","sourceHash":"4ff18a6b98a537bc8c716b076a609995d5881ec913083aeca863331f3a40516f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/pointcloud/PointCloudOps.js#0005:removeStatisticalOutliers","exportIndex":5,"name":"removeStatisticalOutliers","kind":"function","signature":"removeStatisticalOutliers(points, k = 20, stdRatio = 2.0)","summary":"Remove statistical outliers based on mean distance to k neighbors. Points with mean distance > (global_mean + stdRatio * global_std) are removed."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/pointcloud/PointCloudOps.md","moduleTitle":"kaolin/ops/pointcloud/PointCloudOps","source":"engine/kaolin/ops/pointcloud/PointCloudOps.js","import":"/engine/kaolin/ops/pointcloud/PointCloudOps.js","sourceHash":"4ff18a6b98a537bc8c716b076a609995d5881ec913083aeca863331f3a40516f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/pointcloud/PointCloudOps.js#0006:removeRadiusOutliers","exportIndex":6,"name":"removeRadiusOutliers","kind":"function","signature":"removeRadiusOutliers(points, radius, minNeighbors = 3)","summary":"Remove points with fewer than minNeighbors within given radius."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/pointcloud/PointCloudOps.md","moduleTitle":"kaolin/ops/pointcloud/PointCloudOps","source":"engine/kaolin/ops/pointcloud/PointCloudOps.js","import":"/engine/kaolin/ops/pointcloud/PointCloudOps.js","sourceHash":"4ff18a6b98a537bc8c716b076a609995d5881ec913083aeca863331f3a40516f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/pointcloud/PointCloudOps.js#0007:voxelDownsample","exportIndex":7,"name":"voxelDownsample","kind":"function","signature":"voxelDownsample(points, voxelSize, normals = null)","summary":"Downsample a point cloud by averaging points within each voxel cell."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/pointcloud/PointCloudOps.md","moduleTitle":"kaolin/ops/pointcloud/PointCloudOps","source":"engine/kaolin/ops/pointcloud/PointCloudOps.js","import":"/engine/kaolin/ops/pointcloud/PointCloudOps.js","sourceHash":"4ff18a6b98a537bc8c716b076a609995d5881ec913083aeca863331f3a40516f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/pointcloud/PointCloudOps.js#0008:computeAABB","exportIndex":8,"name":"computeAABB","kind":"function","signature":"computeAABB(points)","summary":"Compute axis-aligned bounding box."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/pointcloud/PointCloudOps.md","moduleTitle":"kaolin/ops/pointcloud/PointCloudOps","source":"engine/kaolin/ops/pointcloud/PointCloudOps.js","import":"/engine/kaolin/ops/pointcloud/PointCloudOps.js","sourceHash":"4ff18a6b98a537bc8c716b076a609995d5881ec913083aeca863331f3a40516f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/pointcloud/PointCloudOps.js#0009:computeCentroid","exportIndex":9,"name":"computeCentroid","kind":"function","signature":"computeCentroid(points)","summary":"Compute centroid of a point cloud."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/pointcloud/PointCloudOps.md","moduleTitle":"kaolin/ops/pointcloud/PointCloudOps","source":"engine/kaolin/ops/pointcloud/PointCloudOps.js","import":"/engine/kaolin/ops/pointcloud/PointCloudOps.js","sourceHash":"4ff18a6b98a537bc8c716b076a609995d5881ec913083aeca863331f3a40516f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/pointcloud/PointCloudOps.js#0010:computeOBB","exportIndex":10,"name":"computeOBB","kind":"function","signature":"computeOBB(points)","summary":"Compute oriented bounding box via PCA. Returns axes (3 Float32Array[3]), half-extents, and center."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/pointcloud/PointCloudOps.md","moduleTitle":"kaolin/ops/pointcloud/PointCloudOps","source":"engine/kaolin/ops/pointcloud/PointCloudOps.js","import":"/engine/kaolin/ops/pointcloud/PointCloudOps.js","sourceHash":"4ff18a6b98a537bc8c716b076a609995d5881ec913083aeca863331f3a40516f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/pointcloud/PointCloudOps.js#0011:cropToAABB","exportIndex":11,"name":"cropToAABB","kind":"function","signature":"cropToAABB(points, min, max)","summary":"Crop points to an axis-aligned bounding box."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/pointcloud/PointCloudOps.md","moduleTitle":"kaolin/ops/pointcloud/PointCloudOps","source":"engine/kaolin/ops/pointcloud/PointCloudOps.js","import":"/engine/kaolin/ops/pointcloud/PointCloudOps.js","sourceHash":"4ff18a6b98a537bc8c716b076a609995d5881ec913083aeca863331f3a40516f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/pointcloud/PointCloudOps.js#0012:cropToSphere","exportIndex":12,"name":"cropToSphere","kind":"function","signature":"cropToSphere(points, cx, cy, cz, radius)","summary":"Crop points to a sphere."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/pointcloud/index.md","moduleTitle":"kaolin/ops/pointcloud/index","source":"engine/kaolin/ops/pointcloud/index.js","import":"/engine/kaolin/ops/pointcloud/index.js","sourceHash":"ce357a5edaaa573ced00e18444788cafd95f5f64da131e858894cac9125506ca","subsystem":"engine","recordType":"api-module","id":"module:engine/kaolin/ops/pointcloud/index.js","title":"kaolin/ops/pointcloud/index","summary":"Kaolin Point Cloud — Barrel exports","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/voxelgrid/VoxelOps.md","moduleTitle":"kaolin/ops/voxelgrid/VoxelOps","source":"engine/kaolin/ops/voxelgrid/VoxelOps.js","import":"/engine/kaolin/ops/voxelgrid/VoxelOps.js","sourceHash":"b9ca8e462e6f106ef7ec18c6c67f018eb135850c0cd354770452e6e77f4c01b7","subsystem":"engine","recordType":"api-module","id":"module:engine/kaolin/ops/voxelgrid/VoxelOps.js","title":"kaolin/ops/voxelgrid/VoxelOps","summary":"VoxelOps.js — Voxel grid operations Operations on binary/scalar 3D voxel grids: - Fill interior (flood fill) - Hollow (keep only surface shell) - CSG boolean: union, intersect, subtract - Downsample / upsample - Morphological: dilate, erode, open, close - Extract isosurface info (surface voxels, boundary) - Connected component labeling Grid format: Uint8Array indexed [x + y*resX + z*resX*resY] 1 = solid, 0 = empty (unless scalar grid — Float32Array) Compatible with: - MeshToVoxel.js output - engine/voxel/ chunk system (ChunkRegistry) - ConnectivityCompute.js (structural analysis) - VoronoiFracture.js (fracture source)","exportCount":22}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/voxelgrid/VoxelOps.md","moduleTitle":"kaolin/ops/voxelgrid/VoxelOps","source":"engine/kaolin/ops/voxelgrid/VoxelOps.js","import":"/engine/kaolin/ops/voxelgrid/VoxelOps.js","sourceHash":"b9ca8e462e6f106ef7ec18c6c67f018eb135850c0cd354770452e6e77f4c01b7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/voxelgrid/VoxelOps.js#0000:voxelUnion","exportIndex":0,"name":"voxelUnion","kind":"function","signature":"voxelUnion(gridA, gridB)","summary":"Union of two voxel grids (same dimensions required). Result = A OR B."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/voxelgrid/VoxelOps.md","moduleTitle":"kaolin/ops/voxelgrid/VoxelOps","source":"engine/kaolin/ops/voxelgrid/VoxelOps.js","import":"/engine/kaolin/ops/voxelgrid/VoxelOps.js","sourceHash":"b9ca8e462e6f106ef7ec18c6c67f018eb135850c0cd354770452e6e77f4c01b7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/voxelgrid/VoxelOps.js#0001:voxelIntersect","exportIndex":1,"name":"voxelIntersect","kind":"function","signature":"voxelIntersect(gridA, gridB)","summary":"Intersection of two voxel grids. Result = A AND B."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/voxelgrid/VoxelOps.md","moduleTitle":"kaolin/ops/voxelgrid/VoxelOps","source":"engine/kaolin/ops/voxelgrid/VoxelOps.js","import":"/engine/kaolin/ops/voxelgrid/VoxelOps.js","sourceHash":"b9ca8e462e6f106ef7ec18c6c67f018eb135850c0cd354770452e6e77f4c01b7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/voxelgrid/VoxelOps.js#0002:voxelSubtract","exportIndex":2,"name":"voxelSubtract","kind":"function","signature":"voxelSubtract(gridA, gridB)","summary":"Subtraction: A minus B. Result = A AND NOT B."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/voxelgrid/VoxelOps.md","moduleTitle":"kaolin/ops/voxelgrid/VoxelOps","source":"engine/kaolin/ops/voxelgrid/VoxelOps.js","import":"/engine/kaolin/ops/voxelgrid/VoxelOps.js","sourceHash":"b9ca8e462e6f106ef7ec18c6c67f018eb135850c0cd354770452e6e77f4c01b7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/voxelgrid/VoxelOps.js#0003:voxelXOR","exportIndex":3,"name":"voxelXOR","kind":"function","signature":"voxelXOR(gridA, gridB)","summary":"Symmetric difference (XOR). Result = A XOR B."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/voxelgrid/VoxelOps.md","moduleTitle":"kaolin/ops/voxelgrid/VoxelOps","source":"engine/kaolin/ops/voxelgrid/VoxelOps.js","import":"/engine/kaolin/ops/voxelgrid/VoxelOps.js","sourceHash":"b9ca8e462e6f106ef7ec18c6c67f018eb135850c0cd354770452e6e77f4c01b7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/voxelgrid/VoxelOps.js#0004:voxelInvert","exportIndex":4,"name":"voxelInvert","kind":"function","signature":"voxelInvert(grid)","summary":"Invert a voxel grid."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/voxelgrid/VoxelOps.md","moduleTitle":"kaolin/ops/voxelgrid/VoxelOps","source":"engine/kaolin/ops/voxelgrid/VoxelOps.js","import":"/engine/kaolin/ops/voxelgrid/VoxelOps.js","sourceHash":"b9ca8e462e6f106ef7ec18c6c67f018eb135850c0cd354770452e6e77f4c01b7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/voxelgrid/VoxelOps.js#0005:voxelFill","exportIndex":5,"name":"voxelFill","kind":"function","signature":"voxelFill(grid, resX, resY, resZ)","summary":"Fill the interior of a closed voxel shell. Uses flood fill from boundary to mark exterior, then inverts."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/voxelgrid/VoxelOps.md","moduleTitle":"kaolin/ops/voxelgrid/VoxelOps","source":"engine/kaolin/ops/voxelgrid/VoxelOps.js","import":"/engine/kaolin/ops/voxelgrid/VoxelOps.js","sourceHash":"b9ca8e462e6f106ef7ec18c6c67f018eb135850c0cd354770452e6e77f4c01b7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/voxelgrid/VoxelOps.js#0006:voxelHollow","exportIndex":6,"name":"voxelHollow","kind":"function","signature":"voxelHollow(grid, resX, resY, resZ, thickness = 1)","summary":"Hollow a voxel grid — keep only the outer shell (surface voxels). A voxel is surface if it's solid and has at least one empty 6-neighbor."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/voxelgrid/VoxelOps.md","moduleTitle":"kaolin/ops/voxelgrid/VoxelOps","source":"engine/kaolin/ops/voxelgrid/VoxelOps.js","import":"/engine/kaolin/ops/voxelgrid/VoxelOps.js","sourceHash":"b9ca8e462e6f106ef7ec18c6c67f018eb135850c0cd354770452e6e77f4c01b7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/voxelgrid/VoxelOps.js#0007:voxelDilate","exportIndex":7,"name":"voxelDilate","kind":"function","signature":"voxelDilate(grid, resX, resY, resZ, radius = 1)","summary":"Dilate: expand solid voxels by `radius` voxels (6-connected)."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/voxelgrid/VoxelOps.md","moduleTitle":"kaolin/ops/voxelgrid/VoxelOps","source":"engine/kaolin/ops/voxelgrid/VoxelOps.js","import":"/engine/kaolin/ops/voxelgrid/VoxelOps.js","sourceHash":"b9ca8e462e6f106ef7ec18c6c67f018eb135850c0cd354770452e6e77f4c01b7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/voxelgrid/VoxelOps.js#0008:voxelErode","exportIndex":8,"name":"voxelErode","kind":"function","signature":"voxelErode(grid, resX, resY, resZ, radius = 1)","summary":"Erode: shrink solid voxels by `radius` voxels (6-connected)."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/voxelgrid/VoxelOps.md","moduleTitle":"kaolin/ops/voxelgrid/VoxelOps","source":"engine/kaolin/ops/voxelgrid/VoxelOps.js","import":"/engine/kaolin/ops/voxelgrid/VoxelOps.js","sourceHash":"b9ca8e462e6f106ef7ec18c6c67f018eb135850c0cd354770452e6e77f4c01b7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/voxelgrid/VoxelOps.js#0009:voxelOpen","exportIndex":9,"name":"voxelOpen","kind":"function","signature":"voxelOpen(grid, resX, resY, resZ, radius = 1)","summary":"Morphological open: erode then dilate (removes small protrusions)."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/voxelgrid/VoxelOps.md","moduleTitle":"kaolin/ops/voxelgrid/VoxelOps","source":"engine/kaolin/ops/voxelgrid/VoxelOps.js","import":"/engine/kaolin/ops/voxelgrid/VoxelOps.js","sourceHash":"b9ca8e462e6f106ef7ec18c6c67f018eb135850c0cd354770452e6e77f4c01b7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/voxelgrid/VoxelOps.js#0010:voxelClose","exportIndex":10,"name":"voxelClose","kind":"function","signature":"voxelClose(grid, resX, resY, resZ, radius = 1)","summary":"Morphological close: dilate then erode (fills small holes)."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/voxelgrid/VoxelOps.md","moduleTitle":"kaolin/ops/voxelgrid/VoxelOps","source":"engine/kaolin/ops/voxelgrid/VoxelOps.js","import":"/engine/kaolin/ops/voxelgrid/VoxelOps.js","sourceHash":"b9ca8e462e6f106ef7ec18c6c67f018eb135850c0cd354770452e6e77f4c01b7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/voxelgrid/VoxelOps.js#0011:voxelDownsample","exportIndex":11,"name":"voxelDownsample","kind":"function","signature":"voxelDownsample(grid, resX, resY, resZ, factor = 2)","summary":"Downsample a voxel grid by factor (majority vote per super-voxel)."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/voxelgrid/VoxelOps.md","moduleTitle":"kaolin/ops/voxelgrid/VoxelOps","source":"engine/kaolin/ops/voxelgrid/VoxelOps.js","import":"/engine/kaolin/ops/voxelgrid/VoxelOps.js","sourceHash":"b9ca8e462e6f106ef7ec18c6c67f018eb135850c0cd354770452e6e77f4c01b7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/voxelgrid/VoxelOps.js#0012:voxelUpsample","exportIndex":12,"name":"voxelUpsample","kind":"function","signature":"voxelUpsample(grid, resX, resY, resZ, factor = 2)","summary":"Upsample a voxel grid by factor (nearest-neighbor replication)."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/voxelgrid/VoxelOps.md","moduleTitle":"kaolin/ops/voxelgrid/VoxelOps","source":"engine/kaolin/ops/voxelgrid/VoxelOps.js","import":"/engine/kaolin/ops/voxelgrid/VoxelOps.js","sourceHash":"b9ca8e462e6f106ef7ec18c6c67f018eb135850c0cd354770452e6e77f4c01b7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/voxelgrid/VoxelOps.js#0013:connectedComponents","exportIndex":13,"name":"connectedComponents","kind":"function","signature":"connectedComponents(grid, resX, resY, resZ)","summary":"Label connected components in a voxel grid (6-connected)."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/voxelgrid/VoxelOps.md","moduleTitle":"kaolin/ops/voxelgrid/VoxelOps","source":"engine/kaolin/ops/voxelgrid/VoxelOps.js","import":"/engine/kaolin/ops/voxelgrid/VoxelOps.js","sourceHash":"b9ca8e462e6f106ef7ec18c6c67f018eb135850c0cd354770452e6e77f4c01b7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/voxelgrid/VoxelOps.js#0014:removeSmallComponents","exportIndex":14,"name":"removeSmallComponents","kind":"function","signature":"removeSmallComponents(grid, resX, resY, resZ, minSize)","summary":"Remove small connected components below a size threshold."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/voxelgrid/VoxelOps.md","moduleTitle":"kaolin/ops/voxelgrid/VoxelOps","source":"engine/kaolin/ops/voxelgrid/VoxelOps.js","import":"/engine/kaolin/ops/voxelgrid/VoxelOps.js","sourceHash":"b9ca8e462e6f106ef7ec18c6c67f018eb135850c0cd354770452e6e77f4c01b7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/voxelgrid/VoxelOps.js#0015:extractSurfaceVoxels","exportIndex":15,"name":"extractSurfaceVoxels","kind":"function","signature":"extractSurfaceVoxels(grid, resX, resY, resZ)","summary":"Extract surface voxels (solid voxels with at least one empty 6-neighbor)."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/voxelgrid/VoxelOps.md","moduleTitle":"kaolin/ops/voxelgrid/VoxelOps","source":"engine/kaolin/ops/voxelgrid/VoxelOps.js","import":"/engine/kaolin/ops/voxelgrid/VoxelOps.js","sourceHash":"b9ca8e462e6f106ef7ec18c6c67f018eb135850c0cd354770452e6e77f4c01b7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/voxelgrid/VoxelOps.js#0016:countSolid","exportIndex":16,"name":"countSolid","kind":"function","signature":"countSolid(grid)","summary":"Count solid voxels."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/voxelgrid/VoxelOps.md","moduleTitle":"kaolin/ops/voxelgrid/VoxelOps","source":"engine/kaolin/ops/voxelgrid/VoxelOps.js","import":"/engine/kaolin/ops/voxelgrid/VoxelOps.js","sourceHash":"b9ca8e462e6f106ef7ec18c6c67f018eb135850c0cd354770452e6e77f4c01b7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/voxelgrid/VoxelOps.js#0017:computeVolume","exportIndex":17,"name":"computeVolume","kind":"function","signature":"computeVolume(grid, voxelSize)","summary":"Compute volume in world units."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/voxelgrid/VoxelOps.md","moduleTitle":"kaolin/ops/voxelgrid/VoxelOps","source":"engine/kaolin/ops/voxelgrid/VoxelOps.js","import":"/engine/kaolin/ops/voxelgrid/VoxelOps.js","sourceHash":"b9ca8e462e6f106ef7ec18c6c67f018eb135850c0cd354770452e6e77f4c01b7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/voxelgrid/VoxelOps.js#0018:computeSurfaceArea","exportIndex":18,"name":"computeSurfaceArea","kind":"function","signature":"computeSurfaceArea(grid, resX, resY, resZ, voxelSize)","summary":"Compute approximate surface area (count exposed faces × voxelSize²)."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/voxelgrid/VoxelOps.md","moduleTitle":"kaolin/ops/voxelgrid/VoxelOps","source":"engine/kaolin/ops/voxelgrid/VoxelOps.js","import":"/engine/kaolin/ops/voxelgrid/VoxelOps.js","sourceHash":"b9ca8e462e6f106ef7ec18c6c67f018eb135850c0cd354770452e6e77f4c01b7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/voxelgrid/VoxelOps.js#0019:createGrid","exportIndex":19,"name":"createGrid","kind":"function","signature":"createGrid(resX, resY, resZ)","summary":"Create an empty voxel grid."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/voxelgrid/VoxelOps.md","moduleTitle":"kaolin/ops/voxelgrid/VoxelOps","source":"engine/kaolin/ops/voxelgrid/VoxelOps.js","import":"/engine/kaolin/ops/voxelgrid/VoxelOps.js","sourceHash":"b9ca8e462e6f106ef7ec18c6c67f018eb135850c0cd354770452e6e77f4c01b7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/voxelgrid/VoxelOps.js#0020:createSphere","exportIndex":20,"name":"createSphere","kind":"function","signature":"createSphere(resX, resY, resZ, cx, cy, cz, radius)","summary":"Create a solid sphere in a voxel grid."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/voxelgrid/VoxelOps.md","moduleTitle":"kaolin/ops/voxelgrid/VoxelOps","source":"engine/kaolin/ops/voxelgrid/VoxelOps.js","import":"/engine/kaolin/ops/voxelgrid/VoxelOps.js","sourceHash":"b9ca8e462e6f106ef7ec18c6c67f018eb135850c0cd354770452e6e77f4c01b7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/ops/voxelgrid/VoxelOps.js#0021:createBox","exportIndex":21,"name":"createBox","kind":"function","signature":"createBox(resX, resY, resZ, minX, minY, minZ, maxX, maxY, maxZ)","summary":"Create a solid box in a voxel grid."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/ops/voxelgrid/index.md","moduleTitle":"kaolin/ops/voxelgrid/index","source":"engine/kaolin/ops/voxelgrid/index.js","import":"/engine/kaolin/ops/voxelgrid/index.js","sourceHash":"8a0ab248ec3f75b73b89cc5da8150ebe449096cd385c6d3776b143236c51d4bb","subsystem":"engine","recordType":"api-module","id":"module:engine/kaolin/ops/voxelgrid/index.js","title":"kaolin/ops/voxelgrid/index","summary":"Kaolin Voxel Grid — Barrel exports","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/physics/AutoTetMesh.md","moduleTitle":"kaolin/physics/AutoTetMesh","source":"engine/kaolin/physics/AutoTetMesh.js","import":"/engine/kaolin/physics/AutoTetMesh.js","sourceHash":"1f9ab015155aadf821b703eb514ff34eefabf583a810398e5f8def3e2d1a427d","subsystem":"engine","recordType":"api-module","id":"module:engine/kaolin/physics/AutoTetMesh.js","title":"kaolin/physics/AutoTetMesh","summary":"AutoTetMesh.js — Automatic surface mesh → tetrahedral mesh → GPUSoftBody bridge One-call pipeline: give it a triangle mesh, get back a soft body. Pipeline: 1. Validate + repair mesh (MeshOps.validateMesh) 2. Optionally decimate for performance (MeshDecimation) 3. Tetrahedralize (MeshTetrahedralize) 4. Quality check + optimization 5. Create GPUSoftBody instance Compatible with: - GPUSoftBody.createSoftBody() — exact format match - MeshDecimation.js — LOD before tet generation - EntityMeshRenderer — visual mesh binding - MeshTetrahedralize.js — Delaunay + grid methods","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/physics/AutoTetMesh.md","moduleTitle":"kaolin/physics/AutoTetMesh","source":"engine/kaolin/physics/AutoTetMesh.js","import":"/engine/kaolin/physics/AutoTetMesh.js","sourceHash":"1f9ab015155aadf821b703eb514ff34eefabf583a810398e5f8def3e2d1a427d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/physics/AutoTetMesh.js#0000:autoTetMesh","exportIndex":0,"name":"autoTetMesh","kind":"function","signature":"autoTetMesh(positions, indices, options = {})","summary":"Full pipeline: surface mesh → tet mesh ready for GPUSoftBody."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/physics/AutoTetMesh.md","moduleTitle":"kaolin/physics/AutoTetMesh","source":"engine/kaolin/physics/AutoTetMesh.js","import":"/engine/kaolin/physics/AutoTetMesh.js","sourceHash":"1f9ab015155aadf821b703eb514ff34eefabf583a810398e5f8def3e2d1a427d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/physics/AutoTetMesh.js#0001:createSoftBodyFromMesh","exportIndex":1,"name":"createSoftBodyFromMesh","kind":"function","signature":"createSoftBodyFromMesh(softBodySystem, positions, indices, material = 'rubber', options = {})","summary":"Create a GPUSoftBody from a surface mesh in one call."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/physics/AutoTetMesh.md","moduleTitle":"kaolin/physics/AutoTetMesh","source":"engine/kaolin/physics/AutoTetMesh.js","import":"/engine/kaolin/physics/AutoTetMesh.js","sourceHash":"1f9ab015155aadf821b703eb514ff34eefabf583a810398e5f8def3e2d1a427d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/physics/AutoTetMesh.js#0002:createSoftBodiesBatch","exportIndex":2,"name":"createSoftBodiesBatch","kind":"function","signature":"createSoftBodiesBatch(softBodySystem, meshes)","summary":"Batch-create multiple soft bodies from meshes."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/physics/AutoTetMesh.md","moduleTitle":"kaolin/physics/AutoTetMesh","source":"engine/kaolin/physics/AutoTetMesh.js","import":"/engine/kaolin/physics/AutoTetMesh.js","sourceHash":"1f9ab015155aadf821b703eb514ff34eefabf583a810398e5f8def3e2d1a427d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/physics/AutoTetMesh.js#0003:generateTetLODs","exportIndex":3,"name":"generateTetLODs","kind":"function","signature":"generateTetLODs(positions, indices, gridResolutions = [8, 5, 3])","summary":"Generate multiple LOD levels of tet meshes from a single surface mesh."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/physics/AutoTetMesh.md","moduleTitle":"kaolin/physics/AutoTetMesh","source":"engine/kaolin/physics/AutoTetMesh.js","import":"/engine/kaolin/physics/AutoTetMesh.js","sourceHash":"1f9ab015155aadf821b703eb514ff34eefabf583a810398e5f8def3e2d1a427d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/physics/AutoTetMesh.js#0004:TET_PRESETS","exportIndex":4,"name":"TET_PRESETS","kind":"constant","signature":"TET_PRESETS","summary":"Preset configurations for different use cases."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/physics/ParticleSkinning.md","moduleTitle":"kaolin/physics/ParticleSkinning","source":"engine/kaolin/physics/ParticleSkinning.js","import":"/engine/kaolin/physics/ParticleSkinning.js","sourceHash":"5c84a5bf4d40d0c37d057f697ed2ece139a298cacae986eeac5d9f6723d38fdb","subsystem":"engine","recordType":"api-module","id":"module:engine/kaolin/physics/ParticleSkinning.js","title":"kaolin/physics/ParticleSkinning","summary":"ParticleSkinning.js — Learned reduced deformation basis from particle sim Inspired by NVIDIA Simplicits: learn a small set of skinning weights that approximate the full FEM simulation at a fraction of the cost. Pipeline: 1. Run full sim for N frames → capture deformation snapshots 2. PCA on displacement field → extract dominant deformation modes 3. Compute skinning weights via least-squares fitting 4. At runtime: blend modes with learned weights → fast approximate deformation This enables: - Real-time soft body preview without FEM solve - LOD: near = full FEM, far = skinned approximation - Baking physics to animation for replay Compatible with: - GPUSoftBody.js — reads back node positions for training - EntityMeshRenderer — applies skinned deformation to visual mesh - SkeletalAnimation.js — similar weight/bone concept","exportCount":9}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/physics/ParticleSkinning.md","moduleTitle":"kaolin/physics/ParticleSkinning","source":"engine/kaolin/physics/ParticleSkinning.js","import":"/engine/kaolin/physics/ParticleSkinning.js","sourceHash":"5c84a5bf4d40d0c37d057f697ed2ece139a298cacae986eeac5d9f6723d38fdb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/physics/ParticleSkinning.js#0000:createDeformationCapture","exportIndex":0,"name":"createDeformationCapture","kind":"function","signature":"createDeformationCapture(restPositions)","summary":"Capture deformation snapshots from a running soft body. Call this each frame during a training run."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/physics/ParticleSkinning.md","moduleTitle":"kaolin/physics/ParticleSkinning","source":"engine/kaolin/physics/ParticleSkinning.js","import":"/engine/kaolin/physics/ParticleSkinning.js","sourceHash":"5c84a5bf4d40d0c37d057f697ed2ece139a298cacae986eeac5d9f6723d38fdb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/physics/ParticleSkinning.js#0001:captureFrame","exportIndex":1,"name":"captureFrame","kind":"function","signature":"captureFrame(capture, currentPositions)","summary":"Record a frame's deformed positions."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/physics/ParticleSkinning.md","moduleTitle":"kaolin/physics/ParticleSkinning","source":"engine/kaolin/physics/ParticleSkinning.js","import":"/engine/kaolin/physics/ParticleSkinning.js","sourceHash":"5c84a5bf4d40d0c37d057f697ed2ece139a298cacae986eeac5d9f6723d38fdb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/physics/ParticleSkinning.js#0002:extractDeformationModes","exportIndex":2,"name":"extractDeformationModes","kind":"function","signature":"extractDeformationModes(capture, numModes = 8)","summary":"Extract dominant deformation modes via PCA on displacement snapshots."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/physics/ParticleSkinning.md","moduleTitle":"kaolin/physics/ParticleSkinning","source":"engine/kaolin/physics/ParticleSkinning.js","import":"/engine/kaolin/physics/ParticleSkinning.js","sourceHash":"5c84a5bf4d40d0c37d057f697ed2ece139a298cacae986eeac5d9f6723d38fdb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/physics/ParticleSkinning.js#0003:computeSkinningWeights","exportIndex":3,"name":"computeSkinningWeights","kind":"function","signature":"computeSkinningWeights(decomposition, capture)","summary":"Compute skinning weights for each node per deformation mode. Uses least-squares: for each snapshot, find mode weights that best reconstruct the displacement."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/physics/ParticleSkinning.md","moduleTitle":"kaolin/physics/ParticleSkinning","source":"engine/kaolin/physics/ParticleSkinning.js","import":"/engine/kaolin/physics/ParticleSkinning.js","sourceHash":"5c84a5bf4d40d0c37d057f697ed2ece139a298cacae986eeac5d9f6723d38fdb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/physics/ParticleSkinning.js#0004:createSkinningEvaluator","exportIndex":4,"name":"createSkinningEvaluator","kind":"function","signature":"createSkinningEvaluator(restPositions, modes, meanDisplacement)","summary":"Create a runtime skinning evaluator."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/physics/ParticleSkinning.md","moduleTitle":"kaolin/physics/ParticleSkinning","source":"engine/kaolin/physics/ParticleSkinning.js","import":"/engine/kaolin/physics/ParticleSkinning.js","sourceHash":"5c84a5bf4d40d0c37d057f697ed2ece139a298cacae986eeac5d9f6723d38fdb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/physics/ParticleSkinning.js#0005:evaluateSkinning","exportIndex":5,"name":"evaluateSkinning","kind":"function","signature":"evaluateSkinning(evaluator, coefficients)","summary":"Evaluate skinned deformation with given mode coefficients."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/physics/ParticleSkinning.md","moduleTitle":"kaolin/physics/ParticleSkinning","source":"engine/kaolin/physics/ParticleSkinning.js","import":"/engine/kaolin/physics/ParticleSkinning.js","sourceHash":"5c84a5bf4d40d0c37d057f697ed2ece139a298cacae986eeac5d9f6723d38fdb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/physics/ParticleSkinning.js#0006:fitCoefficients","exportIndex":6,"name":"fitCoefficients","kind":"function","signature":"fitCoefficients(evaluator, targetPositions)","summary":"Fit mode coefficients to match a target deformation (least-squares). Useful for transitioning from full FEM to skinned approximation."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/physics/ParticleSkinning.md","moduleTitle":"kaolin/physics/ParticleSkinning","source":"engine/kaolin/physics/ParticleSkinning.js","import":"/engine/kaolin/physics/ParticleSkinning.js","sourceHash":"5c84a5bf4d40d0c37d057f697ed2ece139a298cacae986eeac5d9f6723d38fdb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/physics/ParticleSkinning.js#0007:bakeToAnimation","exportIndex":7,"name":"bakeToAnimation","kind":"function","signature":"bakeToAnimation(capture, decomposition, fps = 60)","summary":"Bake deformation snapshots into mode coefficient keyframes. Output can drive the skinning evaluator for replay without physics."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/physics/ParticleSkinning.md","moduleTitle":"kaolin/physics/ParticleSkinning","source":"engine/kaolin/physics/ParticleSkinning.js","import":"/engine/kaolin/physics/ParticleSkinning.js","sourceHash":"5c84a5bf4d40d0c37d057f697ed2ece139a298cacae986eeac5d9f6723d38fdb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/kaolin/physics/ParticleSkinning.js#0008:sampleAnimation","exportIndex":8,"name":"sampleAnimation","kind":"function","signature":"sampleAnimation(animation, time)","summary":"Interpolate baked animation at a given time."}
{"schemaVersion":1,"modulePath":"engine/reference/kaolin/physics/index.md","moduleTitle":"kaolin/physics/index","source":"engine/kaolin/physics/index.js","import":"/engine/kaolin/physics/index.js","sourceHash":"cd051e3b3b8e414f70cb2133e26fe858b3486e761935bc384c76de4ebc44a26a","subsystem":"engine","recordType":"api-module","id":"module:engine/kaolin/physics/index.js","title":"kaolin/physics/index","summary":"Kaolin Physics — Barrel exports Physics bridges: auto tet mesh generation + learned skinning.","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/network/capability/RouteCapability.md","moduleTitle":"network/capability/RouteCapability","source":"engine/network/capability/RouteCapability.js","import":"/engine/network/capability/RouteCapability.js","sourceHash":"82424c8ab87f3200ad2cce0e76ae843d2b3c0ce5ec7fde4dba35a4c7f270b3ed","subsystem":"engine","recordType":"api-module","id":"module:engine/network/capability/RouteCapability.js","title":"network/capability/RouteCapability","summary":"network/capability/RouteCapability.js — capability-based route access for the Particle Global OS Network Layer (network plan §10).  Reuses the Causal State Engine's UCAN-style capability primitive (engine/state/authority/Capability.js: makeCapability/attenuate/authorizes) unmodified. A route capability names a principal (device/profile/membership signer fingerprint), the route as its object, and an allow-list of route/* verbs enforced via a caveat predicate — narrowing-only delegation comes for free from `attenuate()`. `CapabilityRegistry` (also reused as-is) tracks issuance, revocation, and single-use consumption.","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/network/capability/RouteCapability.md","moduleTitle":"network/capability/RouteCapability","source":"engine/network/capability/RouteCapability.js","import":"/engine/network/capability/RouteCapability.js","sourceHash":"82424c8ab87f3200ad2cce0e76ae843d2b3c0ce5ec7fde4dba35a4c7f270b3ed","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/capability/RouteCapability.js#0000:makeRouteCapability","exportIndex":0,"name":"makeRouteCapability","kind":"function","signature":"makeRouteCapability({ principal, routeId, allow = DEFAULT_ROUTE_ALLOW, constraints = {}, expiresAt = null, singleUse = false, delegable = true, } = {})","summary":"Mint a route capability. The capability's own `action` is always `'*'`; the actual allow-list is enforced by a `route-allow` caveat so it composes correctly with further `attenuateRouteCapability()` narrowing."}
{"schemaVersion":1,"modulePath":"engine/reference/network/capability/RouteCapability.md","moduleTitle":"network/capability/RouteCapability","source":"engine/network/capability/RouteCapability.js","import":"/engine/network/capability/RouteCapability.js","sourceHash":"82424c8ab87f3200ad2cce0e76ae843d2b3c0ce5ec7fde4dba35a4c7f270b3ed","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/capability/RouteCapability.js#0001:attenuateRouteCapability","exportIndex":1,"name":"attenuateRouteCapability","kind":"function","signature":"attenuateRouteCapability(cap, { allow, predicate, key, label } = {})","summary":"Narrow an existing route capability's allow-list and/or add an arbitrary extra predicate (e.g. \"only from this device fingerprint\"). Cannot widen beyond the parent's allow-list — throws if it would."}
{"schemaVersion":1,"modulePath":"engine/reference/network/capability/RouteCapability.md","moduleTitle":"network/capability/RouteCapability","source":"engine/network/capability/RouteCapability.js","import":"/engine/network/capability/RouteCapability.js","sourceHash":"82424c8ab87f3200ad2cce0e76ae843d2b3c0ce5ec7fde4dba35a4c7f270b3ed","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/capability/RouteCapability.js#0002:authorizesRoute","exportIndex":2,"name":"authorizesRoute","kind":"function","signature":"authorizesRoute(cap, { principal, routeId, action, epoch, context = {} } = {})","summary":"Check whether a capability authorizes a specific route action right now."}
{"schemaVersion":1,"modulePath":"engine/reference/network/capability/RouteCapability.md","moduleTitle":"network/capability/RouteCapability","source":"engine/network/capability/RouteCapability.js","import":"/engine/network/capability/RouteCapability.js","sourceHash":"82424c8ab87f3200ad2cce0e76ae843d2b3c0ce5ec7fde4dba35a4c7f270b3ed","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/capability/RouteCapability.js#0003:createRouteCapabilityRegistry","exportIndex":3,"name":"createRouteCapabilityRegistry","kind":"function","signature":"createRouteCapabilityRegistry()","summary":"Create a fresh registry to issue/revoke/consume route capabilities in."}
{"schemaVersion":1,"modulePath":"engine/reference/network/capability/RouteCapability.md","moduleTitle":"network/capability/RouteCapability","source":"engine/network/capability/RouteCapability.js","import":"/engine/network/capability/RouteCapability.js","sourceHash":"82424c8ab87f3200ad2cce0e76ae843d2b3c0ce5ec7fde4dba35a4c7f270b3ed","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/capability/RouteCapability.js#0004:DEFAULT_ROUTE_ALLOW","exportIndex":4,"name":"DEFAULT_ROUTE_ALLOW","kind":"constant","signature":"DEFAULT_ROUTE_ALLOW","summary":"Default allow-list for a freshly-minted route capability (network plan §10)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/capability/RouteCapability.md","moduleTitle":"network/capability/RouteCapability","source":"engine/network/capability/RouteCapability.js","import":"/engine/network/capability/RouteCapability.js","sourceHash":"82424c8ab87f3200ad2cce0e76ae843d2b3c0ce5ec7fde4dba35a4c7f270b3ed","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/capability/RouteCapability.js#0005:ROUTE_ACTIONS","exportIndex":5,"name":"ROUTE_ACTIONS","kind":"constant","signature":"ROUTE_ACTIONS","summary":"All route verbs the network layer currently understands."}
{"schemaVersion":1,"modulePath":"engine/reference/network/carrier/AnonymityMode.md","moduleTitle":"network/carrier/AnonymityMode","source":"engine/network/carrier/AnonymityMode.js","import":"/engine/network/carrier/AnonymityMode.js","sourceHash":"2ad3e61252431762618d92c424dac4919aa16ea4458169b9099f7426c039565e","subsystem":"engine","recordType":"api-module","id":"module:engine/network/carrier/AnonymityMode.js","title":"network/carrier/AnonymityMode","summary":"network/carrier/AnonymityMode.js — connection mode selection + UI transport-truth labels (network plan §25/§42): the UI must never claim a connection is more private than it actually is.","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/network/carrier/AnonymityMode.md","moduleTitle":"network/carrier/AnonymityMode","source":"engine/network/carrier/AnonymityMode.js","import":"/engine/network/carrier/AnonymityMode.js","sourceHash":"2ad3e61252431762618d92c424dac4919aa16ea4458169b9099f7426c039565e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/carrier/AnonymityMode.js#0000:selectAnonymityMode","exportIndex":0,"name":"selectAnonymityMode","kind":"function","signature":"selectAnonymityMode({ isSelfDevice = false, groupApproved = false, trustPending = false, highRiskOverride = false } = {})","summary":"Decide the anonymity mode for a peer relationship (network plan §25 policy: unknown/public -> anonymous; new invites -> anonymous until approved; group members -> group policy; trusted/own devices -> direct)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/carrier/AnonymityMode.md","moduleTitle":"network/carrier/AnonymityMode","source":"engine/network/carrier/AnonymityMode.js","import":"/engine/network/carrier/AnonymityMode.js","sourceHash":"2ad3e61252431762618d92c424dac4919aa16ea4458169b9099f7426c039565e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/carrier/AnonymityMode.js#0001:transportTruthLabel","exportIndex":1,"name":"transportTruthLabel","kind":"function","signature":"transportTruthLabel(mode)","summary":"Human-readable, honest transport label for the UI (§42)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/carrier/AnonymityMode.md","moduleTitle":"network/carrier/AnonymityMode","source":"engine/network/carrier/AnonymityMode.js","import":"/engine/network/carrier/AnonymityMode.js","sourceHash":"2ad3e61252431762618d92c424dac4919aa16ea4458169b9099f7426c039565e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/carrier/AnonymityMode.js#0002:allowsDirectTransport","exportIndex":2,"name":"allowsDirectTransport","kind":"function","signature":"allowsDirectTransport(mode)","summary":"Whether a mode permits direct (non-relayed) transport — direct may reveal network metadata to the peer (§42)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/carrier/AnonymityMode.md","moduleTitle":"network/carrier/AnonymityMode","source":"engine/network/carrier/AnonymityMode.js","import":"/engine/network/carrier/AnonymityMode.js","sourceHash":"2ad3e61252431762618d92c424dac4919aa16ea4458169b9099f7426c039565e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/carrier/AnonymityMode.js#0003:ANONYMITY_MODE","exportIndex":3,"name":"ANONYMITY_MODE","kind":"constant","signature":"ANONYMITY_MODE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/carrier/CarrierForwarder.md","moduleTitle":"network/carrier/CarrierForwarder","source":"engine/network/carrier/CarrierForwarder.js","import":"/engine/network/carrier/CarrierForwarder.js","sourceHash":"92787daaff6b2f0eacdf713a3c13c3aab58a976fad152c0991a5f981f634b261","subsystem":"engine","recordType":"api-module","id":"module:engine/network/carrier/CarrierForwarder.js","title":"network/carrier/CarrierForwarder","summary":"network/carrier/CarrierForwarder.js — the forwarding decision a carrier node makes for a sealed packet, WITHOUT ever inspecting its payload (network plan §24/§35/§36): expiry, hop-limit (TTL), dedupe, and rate limit, in that order. Reuses `chunks/DedupeCache.js` as-is (network plan §29 dedupe applies uniformly to control/route/carrier traffic).","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/network/carrier/CarrierForwarder.md","moduleTitle":"network/carrier/CarrierForwarder","source":"engine/network/carrier/CarrierForwarder.js","import":"/engine/network/carrier/CarrierForwarder.js","sourceHash":"92787daaff6b2f0eacdf713a3c13c3aab58a976fad152c0991a5f981f634b261","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/carrier/CarrierForwarder.js#0000:evaluateForward","exportIndex":0,"name":"evaluateForward","kind":"function","signature":"evaluateForward({ packet, dedupeCache, rateLimiter, dedupeTtlMs = 60000, now = Date.now()","summary":"Decide whether to forward a carrier packet."}
{"schemaVersion":1,"modulePath":"engine/reference/network/carrier/CarrierIdentity.md","moduleTitle":"network/carrier/CarrierIdentity","source":"engine/network/carrier/CarrierIdentity.js","import":"/engine/network/carrier/CarrierIdentity.js","sourceHash":"097de13581112ac514b3c66b477897df4c92af8e29afd0e913ffdd24ba0e05f2","subsystem":"engine","recordType":"api-module","id":"module:engine/network/carrier/CarrierIdentity.js","title":"network/carrier/CarrierIdentity","summary":"network/carrier/CarrierIdentity.js — announces a node's carrier-layer (§26) ECDH onion-recipient public key to its current mesh peers. Closes the gap `CarrierRelay.js`'s own doc flagged: \"another peer can only address this device as an onion hop if it learned the key out-of-band.\" This is that in-band announce: a tiny message sent over the SAME mesh session data channel (via `sendToPeer`, typically from `onPeerJoin`), cached locally so a future `SealedPacket.buildSealedPacket({hops, payload})` call can look up a hop's key without any prior out-of-band exchange.  Deliberately NOT signed/verified against a stronger identity (e.g. the CSE profile/device signer) — WebRTC's own DTLS already authenticates \"these bytes came from the peer this data channel is connected to\"; the remaining trust question (should carrier packets even be routed through this specific peer) is a routing/reputation decision for the caller, not this module's job. `handleCarrierIdentityMessage` only checks that the announce's claimed peerId matches the channel it arrived on (fails closed on mismatch — either a bug or a spoof attempt).","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/network/carrier/CarrierIdentity.md","moduleTitle":"network/carrier/CarrierIdentity","source":"engine/network/carrier/CarrierIdentity.js","import":"/engine/network/carrier/CarrierIdentity.js","sourceHash":"097de13581112ac514b3c66b477897df4c92af8e29afd0e913ffdd24ba0e05f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/carrier/CarrierIdentity.js#0000:createCarrierIdentityRegistry","exportIndex":0,"name":"createCarrierIdentityRegistry","kind":"function","signature":"createCarrierIdentityRegistry()","summary":"Create an empty registry of peerId -> carrier-recipient ECDH public key."}
{"schemaVersion":1,"modulePath":"engine/reference/network/carrier/CarrierIdentity.md","moduleTitle":"network/carrier/CarrierIdentity","source":"engine/network/carrier/CarrierIdentity.js","import":"/engine/network/carrier/CarrierIdentity.js","sourceHash":"097de13581112ac514b3c66b477897df4c92af8e29afd0e913ffdd24ba0e05f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/carrier/CarrierIdentity.js#0001:buildCarrierIdentityAnnounce","exportIndex":1,"name":"buildCarrierIdentityAnnounce","kind":"function","signature":"buildCarrierIdentityAnnounce(selfPeerId, ecdhPublicKeyRaw)","summary":"Build the announce message to hand to a mesh session's `sendToPeer`. Returns null if this node has no key to announce."}
{"schemaVersion":1,"modulePath":"engine/reference/network/carrier/CarrierIdentity.md","moduleTitle":"network/carrier/CarrierIdentity","source":"engine/network/carrier/CarrierIdentity.js","import":"/engine/network/carrier/CarrierIdentity.js","sourceHash":"097de13581112ac514b3c66b477897df4c92af8e29afd0e913ffdd24ba0e05f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/carrier/CarrierIdentity.js#0002:handleCarrierIdentityMessage","exportIndex":2,"name":"handleCarrierIdentityMessage","kind":"function","signature":"handleCarrierIdentityMessage(registry, fromPeerId, op)","summary":"Feed every relevant `onOp(peerId, op)` message through this, alongside `ChunkTransport.js`/`CarrierRelay.js`/`DhtTransport.js`'s own handlers (same `(peerId, op) => boolean` chaining pattern)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/carrier/CarrierIdentity.md","moduleTitle":"network/carrier/CarrierIdentity","source":"engine/network/carrier/CarrierIdentity.js","import":"/engine/network/carrier/CarrierIdentity.js","sourceHash":"097de13581112ac514b3c66b477897df4c92af8e29afd0e913ffdd24ba0e05f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/carrier/CarrierIdentity.js#0003:lookupCarrierRecipientKey","exportIndex":3,"name":"lookupCarrierRecipientKey","kind":"function","signature":"lookupCarrierRecipientKey(registry, peerId)","summary":"Look up a previously-announced peer's carrier-recipient ECDH public key (raw bytes), or null."}
{"schemaVersion":1,"modulePath":"engine/reference/network/carrier/CarrierIdentity.md","moduleTitle":"network/carrier/CarrierIdentity","source":"engine/network/carrier/CarrierIdentity.js","import":"/engine/network/carrier/CarrierIdentity.js","sourceHash":"097de13581112ac514b3c66b477897df4c92af8e29afd0e913ffdd24ba0e05f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/carrier/CarrierIdentity.js#0004:listKnownCarrierRecipients","exportIndex":4,"name":"listKnownCarrierRecipients","kind":"function","signature":"listKnownCarrierRecipients(registry)","summary":"List peerIds this node has learned a carrier-recipient key for."}
{"schemaVersion":1,"modulePath":"engine/reference/network/carrier/CarrierIdentity.md","moduleTitle":"network/carrier/CarrierIdentity","source":"engine/network/carrier/CarrierIdentity.js","import":"/engine/network/carrier/CarrierIdentity.js","sourceHash":"097de13581112ac514b3c66b477897df4c92af8e29afd0e913ffdd24ba0e05f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/carrier/CarrierIdentity.js#0005:forgetCarrierRecipient","exportIndex":5,"name":"forgetCarrierRecipient","kind":"function","signature":"forgetCarrierRecipient(registry, peerId)","summary":"Forget a peer's announced key (e.g. on disconnect/leave)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/carrier/CarrierIdentity.md","moduleTitle":"network/carrier/CarrierIdentity","source":"engine/network/carrier/CarrierIdentity.js","import":"/engine/network/carrier/CarrierIdentity.js","sourceHash":"097de13581112ac514b3c66b477897df4c92af8e29afd0e913ffdd24ba0e05f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/carrier/CarrierIdentity.js#0006:CARRIER_IDENTITY_MESSAGE_TYPE","exportIndex":6,"name":"CARRIER_IDENTITY_MESSAGE_TYPE","kind":"constant","signature":"CARRIER_IDENTITY_MESSAGE_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/carrier/CarrierPacket.md","moduleTitle":"network/carrier/CarrierPacket","source":"engine/network/carrier/CarrierPacket.js","import":"/engine/network/carrier/CarrierPacket.js","sourceHash":"a94afcc2b175dc373e942cc55d9fda6772c3571db020dc3d9a8bcdaa2cefaff1","subsystem":"engine","recordType":"api-module","id":"module:engine/network/carrier/CarrierPacket.js","title":"network/carrier/CarrierPacket","summary":"network/carrier/CarrierPacket.js — the carrier layer's OUTER envelope (network plan §26): visible routing metadata (route/ttl/expiry) plus an opaque sealed payload (SealedPacket.js) that carrier nodes forward without ever decrypting.","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/network/carrier/CarrierPacket.md","moduleTitle":"network/carrier/CarrierPacket","source":"engine/network/carrier/CarrierPacket.js","import":"/engine/network/carrier/CarrierPacket.js","sourceHash":"a94afcc2b175dc373e942cc55d9fda6772c3571db020dc3d9a8bcdaa2cefaff1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/carrier/CarrierPacket.js#0000:makeCarrierPacket","exportIndex":0,"name":"makeCarrierPacket","kind":"function","signature":"makeCarrierPacket({ routeId, ttl = 4, expiresAt = null, sealed } = {})","summary":"Wrap a sealed onion packet for carrier forwarding."}
{"schemaVersion":1,"modulePath":"engine/reference/network/carrier/CarrierPacket.md","moduleTitle":"network/carrier/CarrierPacket","source":"engine/network/carrier/CarrierPacket.js","import":"/engine/network/carrier/CarrierPacket.js","sourceHash":"a94afcc2b175dc373e942cc55d9fda6772c3571db020dc3d9a8bcdaa2cefaff1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/carrier/CarrierPacket.js#0001:decrementCarrierTtl","exportIndex":1,"name":"decrementCarrierTtl","kind":"function","signature":"decrementCarrierTtl(packet)","summary":"Return a new carrier packet with ttl decremented by 1 (does not mutate the input)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/carrier/CarrierPacket.md","moduleTitle":"network/carrier/CarrierPacket","source":"engine/network/carrier/CarrierPacket.js","import":"/engine/network/carrier/CarrierPacket.js","sourceHash":"a94afcc2b175dc373e942cc55d9fda6772c3571db020dc3d9a8bcdaa2cefaff1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/carrier/CarrierPacket.js#0002:isCarrierPacketExpired","exportIndex":2,"name":"isCarrierPacketExpired","kind":"function","signature":"isCarrierPacketExpired(packet, now = Date.now()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/carrier/CarrierPacket.md","moduleTitle":"network/carrier/CarrierPacket","source":"engine/network/carrier/CarrierPacket.js","import":"/engine/network/carrier/CarrierPacket.js","sourceHash":"a94afcc2b175dc373e942cc55d9fda6772c3571db020dc3d9a8bcdaa2cefaff1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/carrier/CarrierPacket.js#0003:isCarrierTtlExhausted","exportIndex":3,"name":"isCarrierTtlExhausted","kind":"function","signature":"isCarrierTtlExhausted(packet)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/carrier/CarrierRelay.md","moduleTitle":"network/carrier/CarrierRelay","source":"engine/network/carrier/CarrierRelay.js","import":"/engine/network/carrier/CarrierRelay.js","sourceHash":"c360a804893025dc821a693b07c9b59b00b970404bc66d1b5ae8d27f6bc7c77d","subsystem":"engine","recordType":"api-module","id":"module:engine/network/carrier/CarrierRelay.js","title":"network/carrier/CarrierRelay","summary":"network/carrier/CarrierRelay.js — routes a CarrierPacket across a real mesh (network plan §24/§35/§36, previously deferred: \"CollabMeshTopology gossip/fanout/TTL wiring for actual multi-peer carrier mesh topology\").  SealedPacket.js's onion path is an ordered peerId list chosen by the SENDER, but not every hop in that path is necessarily a live WebRTC neighbor of the previous hop — K-neighbor partial-mesh/supernode modes deliberately do NOT connect every peer to every peer (see engine/collab/CollabMeshTopology.js's header comment: \"K-neighbor gossip mesh ... messages reach all N peers in ~log_K(N) hops\"). This module bridges that gap: - If the addressed next hop IS a direct neighbor right now, deliver directly — cheapest path, one hop, no flood. - Otherwise, gossip-flood the envelope via CollabMeshTopology's existing TTL+dedupe fanout (`gossipWrap`/`gossipReceive`) so it propagates through the mesh until it reaches a peer who either IS the target or has it as a direct neighbor, at which point THAT peer delivers it directly instead of re-flooding.  Every touch of a carrier packet — direct delivery or gossip relay — always runs through `CarrierForwarder.evaluateForward()` first (onion-layer expiry/TTL/dedupe/rate-limit), independent of and in addition to the mesh gossip's OWN TTL/dedupe: gossip TTL bounds mesh hops for one flood attempt; carrier TTL bounds total onion hops end-to-end. Neither layer ever inspects the sealed payload itself (network plan §24's core guarantee) — only `peelSealedPacket`, called with THIS node's own private key when (and only when) this node is the addressed hop, can see anything beyond the next hop id.","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/network/carrier/CarrierRelay.md","moduleTitle":"network/carrier/CarrierRelay","source":"engine/network/carrier/CarrierRelay.js","import":"/engine/network/carrier/CarrierRelay.js","sourceHash":"c360a804893025dc821a693b07c9b59b00b970404bc66d1b5ae8d27f6bc7c77d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/carrier/CarrierRelay.js#0000:createCarrierRelay","exportIndex":0,"name":"createCarrierRelay","kind":"function","signature":"createCarrierRelay({ sendToPeer, topology, dedupeCache, rateLimiter, recipientEcdhPrivateKey = null, onPayloadReceived = ()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/carrier/CarrierRelay.md","moduleTitle":"network/carrier/CarrierRelay","source":"engine/network/carrier/CarrierRelay.js","import":"/engine/network/carrier/CarrierRelay.js","sourceHash":"c360a804893025dc821a693b07c9b59b00b970404bc66d1b5ae8d27f6bc7c77d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/carrier/CarrierRelay.js#0001:relayCarrierPacket","exportIndex":1,"name":"relayCarrierPacket","kind":"function","signature":"relayCarrierPacket(relay, nextHopPeerId, packet)","summary":"Send/relay a carrier packet toward its addressed next hop. Runs the standard forwarding check first — a caller originating a brand-new packet should still go through this (it's the same expiry/TTL/dedupe/rate-limit gate every intermediate hop uses, applied uniformly per network plan §35)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/carrier/CarrierRelay.md","moduleTitle":"network/carrier/CarrierRelay","source":"engine/network/carrier/CarrierRelay.js","import":"/engine/network/carrier/CarrierRelay.js","sourceHash":"c360a804893025dc821a693b07c9b59b00b970404bc66d1b5ae8d27f6bc7c77d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/carrier/CarrierRelay.js#0002:handleCarrierRelayMessage","exportIndex":2,"name":"handleCarrierRelayMessage","kind":"function","signature":"async handleCarrierRelayMessage(relay, fromPeerId, op)","summary":"Feed every relevant `onOp(peerId, op)` message through this (e.g. from `createCollabCore({ onOp })`, alongside `ChunkTransport.js`'s own `handleChunkTransportMessage` — both follow the same \"return false if not ours\" chaining pattern). Handles: peeling a layer addressed to this node, delivering the final payload, direct-hop forwarding, and mesh-gossip re-forwarding."}
{"schemaVersion":1,"modulePath":"engine/reference/network/carrier/CarrierRelay.md","moduleTitle":"network/carrier/CarrierRelay","source":"engine/network/carrier/CarrierRelay.js","import":"/engine/network/carrier/CarrierRelay.js","sourceHash":"c360a804893025dc821a693b07c9b59b00b970404bc66d1b5ae8d27f6bc7c77d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/carrier/CarrierRelay.js#0003:CARRIER_RELAY_MESSAGE_TYPE","exportIndex":3,"name":"CARRIER_RELAY_MESSAGE_TYPE","kind":"constant","signature":"CARRIER_RELAY_MESSAGE_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/carrier/RateLimiter.md","moduleTitle":"network/carrier/RateLimiter","source":"engine/network/carrier/RateLimiter.js","import":"/engine/network/carrier/RateLimiter.js","sourceHash":"f8e16317d3349f229b875b0d880e1cda0b14abac4a6dac2a12d7fd1b7c755c89","subsystem":"engine","recordType":"api-module","id":"module:engine/network/carrier/RateLimiter.js","title":"network/carrier/RateLimiter","summary":"network/carrier/RateLimiter.js — token-bucket rate limiting for carrier forwarding (network plan §35/§36 spam controls, V1: rate limits + dedupe, no proof-of-work yet).","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/network/carrier/RateLimiter.md","moduleTitle":"network/carrier/RateLimiter","source":"engine/network/carrier/RateLimiter.js","import":"/engine/network/carrier/RateLimiter.js","sourceHash":"f8e16317d3349f229b875b0d880e1cda0b14abac4a6dac2a12d7fd1b7c755c89","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/carrier/RateLimiter.js#0000:createRateLimiter","exportIndex":0,"name":"createRateLimiter","kind":"function","signature":"createRateLimiter({ capacity = 30, refillPerSecond = 10 } = {})","summary":"Create a token bucket."}
{"schemaVersion":1,"modulePath":"engine/reference/network/carrier/RateLimiter.md","moduleTitle":"network/carrier/RateLimiter","source":"engine/network/carrier/RateLimiter.js","import":"/engine/network/carrier/RateLimiter.js","sourceHash":"f8e16317d3349f229b875b0d880e1cda0b14abac4a6dac2a12d7fd1b7c755c89","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/carrier/RateLimiter.js#0001:tryConsume","exportIndex":1,"name":"tryConsume","kind":"function","signature":"tryConsume(limiter, cost = 1, now = Date.now()","summary":"Try to consume `cost` tokens. Returns false (caller should drop/reject) if insufficient."}
{"schemaVersion":1,"modulePath":"engine/reference/network/carrier/RateLimiter.md","moduleTitle":"network/carrier/RateLimiter","source":"engine/network/carrier/RateLimiter.js","import":"/engine/network/carrier/RateLimiter.js","sourceHash":"f8e16317d3349f229b875b0d880e1cda0b14abac4a6dac2a12d7fd1b7c755c89","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/carrier/RateLimiter.js#0002:availableTokens","exportIndex":2,"name":"availableTokens","kind":"function","signature":"availableTokens(limiter, now = Date.now()","summary":"Tokens currently available (after applying refill for elapsed time)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/carrier/SealedPacket.md","moduleTitle":"network/carrier/SealedPacket","source":"engine/network/carrier/SealedPacket.js","import":"/engine/network/carrier/SealedPacket.js","sourceHash":"2e66d31a51adcf9548c8aba00fb77a8b72b15b2189d3102e0b479ad788028e17","subsystem":"engine","recordType":"api-module","id":"module:engine/network/carrier/SealedPacket.js","title":"network/carrier/SealedPacket","summary":"network/carrier/SealedPacket.js — multi-hop onion-sealed packets (network plan §24/§26 public carrier layer).  Phase 0 audit finding: `engine/collab/CollabAnonymousRelay.js` implements SINGLE-hop anonymization (host relay + garlic-encrypted payload) for one game-collab session. The OS network layer needs TRUE multi-hop onion routing across semi-trusted carrier meshes that are not part of any group. This module builds that generically, reusing the same ECDH P-256 + AES-256-GCM primitives (`CollabCrypto`) rather than inventing new crypto.  Each layer is wrapped from the innermost (final recipient) outward, so only the addressed hop can decrypt its own layer. A peeled layer reveals only the NEXT hop's peerId (or, at the final layer, the actual payload) — never the full path, the true sender, or the payload, matching §26.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/network/carrier/SealedPacket.md","moduleTitle":"network/carrier/SealedPacket","source":"engine/network/carrier/SealedPacket.js","import":"/engine/network/carrier/SealedPacket.js","sourceHash":"2e66d31a51adcf9548c8aba00fb77a8b72b15b2189d3102e0b479ad788028e17","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/carrier/SealedPacket.js#0000:buildSealedPacket","exportIndex":0,"name":"buildSealedPacket","kind":"function","signature":"async buildSealedPacket({ hops, payload } = {})","summary":"Build a multi-hop sealed packet."}
{"schemaVersion":1,"modulePath":"engine/reference/network/carrier/SealedPacket.md","moduleTitle":"network/carrier/SealedPacket","source":"engine/network/carrier/SealedPacket.js","import":"/engine/network/carrier/SealedPacket.js","sourceHash":"2e66d31a51adcf9548c8aba00fb77a8b72b15b2189d3102e0b479ad788028e17","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/carrier/SealedPacket.js#0001:peelSealedPacket","exportIndex":1,"name":"peelSealedPacket","kind":"function","signature":"async peelSealedPacket(sealedLayer, recipientPrivateKey)","summary":"Peel one layer with this hop's ECDH private key."}
{"schemaVersion":1,"modulePath":"engine/reference/network/carrier/index.md","moduleTitle":"network/carrier/index","source":"engine/network/carrier/index.js","import":"/engine/network/carrier/index.js","sourceHash":"b8d1eaa85357a4851afb33d05a71361ed7d98c34782761b34fd13a9e79a724e4","subsystem":"engine","recordType":"api-module","id":"module:engine/network/carrier/index.js","title":"network/carrier/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/ChunkCache.md","moduleTitle":"network/chunks/ChunkCache","source":"engine/network/chunks/ChunkCache.js","import":"/engine/network/chunks/ChunkCache.js","sourceHash":"080d95eca8da322e2627de08758b9712016f93514f15d1112eade50b19b4a54f","subsystem":"engine","recordType":"api-module","id":"module:engine/network/chunks/ChunkCache.js","title":"network/chunks/ChunkCache","summary":"Bounded in-memory LRU used only while the browser endpoint is alive.","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/ChunkCache.md","moduleTitle":"network/chunks/ChunkCache","source":"engine/network/chunks/ChunkCache.js","import":"/engine/network/chunks/ChunkCache.js","sourceHash":"080d95eca8da322e2627de08758b9712016f93514f15d1112eade50b19b4a54f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/ChunkCache.js#0000:createChunkCache","exportIndex":0,"name":"createChunkCache","kind":"function","signature":"createChunkCache({ maxEntries = 128, maxBytes = 64 * 1024 * 1024 } = {})","summary":"Bounded in-memory LRU used only while the browser endpoint is alive."}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/ChunkCache.md","moduleTitle":"network/chunks/ChunkCache","source":"engine/network/chunks/ChunkCache.js","import":"/engine/network/chunks/ChunkCache.js","sourceHash":"080d95eca8da322e2627de08758b9712016f93514f15d1112eade50b19b4a54f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/ChunkCache.js#0001:cacheVerifiedChunk","exportIndex":1,"name":"cacheVerifiedChunk","kind":"function","signature":"cacheVerifiedChunk(cache, { chunkId, fragmentRoot, bytes } = {})","summary":"Store bytes that the caller has already content/Merkle verified."}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/ChunkCache.md","moduleTitle":"network/chunks/ChunkCache","source":"engine/network/chunks/ChunkCache.js","import":"/engine/network/chunks/ChunkCache.js","sourceHash":"080d95eca8da322e2627de08758b9712016f93514f15d1112eade50b19b4a54f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/ChunkCache.js#0002:readCachedChunk","exportIndex":2,"name":"readCachedChunk","kind":"function","signature":"readCachedChunk(cache, chunkId)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/ChunkCache.md","moduleTitle":"network/chunks/ChunkCache","source":"engine/network/chunks/ChunkCache.js","import":"/engine/network/chunks/ChunkCache.js","sourceHash":"080d95eca8da322e2627de08758b9712016f93514f15d1112eade50b19b4a54f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/ChunkCache.js#0003:chunkCacheStatus","exportIndex":3,"name":"chunkCacheStatus","kind":"function","signature":"chunkCacheStatus(cache)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/ChunkFragmenter.md","moduleTitle":"network/chunks/ChunkFragmenter","source":"engine/network/chunks/ChunkFragmenter.js","import":"/engine/network/chunks/ChunkFragmenter.js","sourceHash":"1c5ebd97202016060cf531bdbf1f1445f97d1e3ccb43601d6c23eeedce5d444f","subsystem":"engine","recordType":"api-module","id":"module:engine/network/chunks/ChunkFragmenter.js","title":"network/chunks/ChunkFragmenter","summary":"network/chunks/ChunkFragmenter.js — split large objects into chunks, and chunks into transport-sized fragments (network plan §27/§31/§32).","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/ChunkFragmenter.md","moduleTitle":"network/chunks/ChunkFragmenter","source":"engine/network/chunks/ChunkFragmenter.js","import":"/engine/network/chunks/ChunkFragmenter.js","sourceHash":"1c5ebd97202016060cf531bdbf1f1445f97d1e3ccb43601d6c23eeedce5d444f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/ChunkFragmenter.js#0000:splitIntoChunks","exportIndex":0,"name":"splitIntoChunks","kind":"function","signature":"splitIntoChunks(bytes, chunkSize = DEFAULT_CHUNK_BYTES)","summary":"Split an object's bytes into chunks no larger than `chunkSize` (which must not exceed the network-wide 4MB ceiling)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/ChunkFragmenter.md","moduleTitle":"network/chunks/ChunkFragmenter","source":"engine/network/chunks/ChunkFragmenter.js","import":"/engine/network/chunks/ChunkFragmenter.js","sourceHash":"1c5ebd97202016060cf531bdbf1f1445f97d1e3ccb43601d6c23eeedce5d444f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/ChunkFragmenter.js#0001:splitChunkIntoFragments","exportIndex":1,"name":"splitChunkIntoFragments","kind":"function","signature":"splitChunkIntoFragments(chunkBytes, fragmentSize = DEFAULT_FRAGMENT_BYTES)","summary":"Split one chunk's bytes into transport-sized fragments."}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/ChunkFragmenter.md","moduleTitle":"network/chunks/ChunkFragmenter","source":"engine/network/chunks/ChunkFragmenter.js","import":"/engine/network/chunks/ChunkFragmenter.js","sourceHash":"1c5ebd97202016060cf531bdbf1f1445f97d1e3ccb43601d6c23eeedce5d444f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/ChunkFragmenter.js#0002:reassembleFragments","exportIndex":2,"name":"reassembleFragments","kind":"function","signature":"reassembleFragments(fragments)","summary":"Concatenate fragments back into one chunk's bytes."}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/ChunkFragmenter.md","moduleTitle":"network/chunks/ChunkFragmenter","source":"engine/network/chunks/ChunkFragmenter.js","import":"/engine/network/chunks/ChunkFragmenter.js","sourceHash":"1c5ebd97202016060cf531bdbf1f1445f97d1e3ccb43601d6c23eeedce5d444f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/ChunkFragmenter.js#0003:reassembleChunks","exportIndex":3,"name":"reassembleChunks","kind":"function","signature":"reassembleChunks(chunks)","summary":"Concatenate chunks back into the full object's bytes."}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/ChunkLimits.md","moduleTitle":"network/chunks/ChunkLimits","source":"engine/network/chunks/ChunkLimits.js","import":"/engine/network/chunks/ChunkLimits.js","sourceHash":"d83f4d8c7b1e85960f2eb49876fc1ba86ca74a5f940df7eb7dadc0da12e75e21","subsystem":"engine","recordType":"api-module","id":"module:engine/network/chunks/ChunkLimits.js","title":"network/chunks/ChunkLimits","summary":"network/chunks/ChunkLimits.js — size ceilings/defaults (network plan §27).","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/ChunkLimits.md","moduleTitle":"network/chunks/ChunkLimits","source":"engine/network/chunks/ChunkLimits.js","import":"/engine/network/chunks/ChunkLimits.js","sourceHash":"d83f4d8c7b1e85960f2eb49876fc1ba86ca74a5f940df7eb7dadc0da12e75e21","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/ChunkLimits.js#0000:MAX_CHUNK_BYTES","exportIndex":0,"name":"MAX_CHUNK_BYTES","kind":"constant","signature":"MAX_CHUNK_BYTES","summary":"Network-wide hard ceiling for one logical chunk. Not the default — a ceiling."}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/ChunkLimits.md","moduleTitle":"network/chunks/ChunkLimits","source":"engine/network/chunks/ChunkLimits.js","import":"/engine/network/chunks/ChunkLimits.js","sourceHash":"d83f4d8c7b1e85960f2eb49876fc1ba86ca74a5f940df7eb7dadc0da12e75e21","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/ChunkLimits.js#0001:DEFAULT_CHUNK_BYTES","exportIndex":1,"name":"DEFAULT_CHUNK_BYTES","kind":"constant","signature":"DEFAULT_CHUNK_BYTES","summary":"Sensible default chunk size (§27: \"512 KB-1 MB\")."}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/ChunkLimits.md","moduleTitle":"network/chunks/ChunkLimits","source":"engine/network/chunks/ChunkLimits.js","import":"/engine/network/chunks/ChunkLimits.js","sourceHash":"d83f4d8c7b1e85960f2eb49876fc1ba86ca74a5f940df7eb7dadc0da12e75e21","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/ChunkLimits.js#0002:DEFAULT_FRAGMENT_BYTES","exportIndex":2,"name":"DEFAULT_FRAGMENT_BYTES","kind":"constant","signature":"DEFAULT_FRAGMENT_BYTES","summary":"Default transport fragment size (§27/§28; matches WebRTC DataChannel's assumed default `max-message-size`)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/ChunkLimits.md","moduleTitle":"network/chunks/ChunkLimits","source":"engine/network/chunks/ChunkLimits.js","import":"/engine/network/chunks/ChunkLimits.js","sourceHash":"d83f4d8c7b1e85960f2eb49876fc1ba86ca74a5f940df7eb7dadc0da12e75e21","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/ChunkLimits.js#0003:MAX_FRAGMENT_BYTES","exportIndex":3,"name":"MAX_FRAGMENT_BYTES","kind":"constant","signature":"MAX_FRAGMENT_BYTES","summary":"Experimental larger fragment size for trusted high-bandwidth links."}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/ChunkLimits.md","moduleTitle":"network/chunks/ChunkLimits","source":"engine/network/chunks/ChunkLimits.js","import":"/engine/network/chunks/ChunkLimits.js","sourceHash":"d83f4d8c7b1e85960f2eb49876fc1ba86ca74a5f940df7eb7dadc0da12e75e21","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/ChunkLimits.js#0004:CONTROL_MAX_BYTES","exportIndex":4,"name":"CONTROL_MAX_BYTES","kind":"constant","signature":"CONTROL_MAX_BYTES","summary":"Soft caps for non-bulk message classes (§27)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/ChunkLimits.md","moduleTitle":"network/chunks/ChunkLimits","source":"engine/network/chunks/ChunkLimits.js","import":"/engine/network/chunks/ChunkLimits.js","sourceHash":"d83f4d8c7b1e85960f2eb49876fc1ba86ca74a5f940df7eb7dadc0da12e75e21","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/ChunkLimits.js#0005:MANIFEST_MAX_BYTES","exportIndex":5,"name":"MANIFEST_MAX_BYTES","kind":"constant","signature":"MANIFEST_MAX_BYTES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/ChunkTransport.md","moduleTitle":"network/chunks/ChunkTransport","source":"engine/network/chunks/ChunkTransport.js","import":"/engine/network/chunks/ChunkTransport.js","sourceHash":"93dc7e6b16d2ac9febfdc5a0aacec1dd7d3f80dc920368394569509d773ae13a","subsystem":"engine","recordType":"api-module","id":"module:engine/network/chunks/ChunkTransport.js","title":"network/chunks/ChunkTransport","summary":"network/chunks/ChunkTransport.js — binds the transport-agnostic chunk pipeline (ChunkFragmenter/MerkleFragments/ChunkVerifier/FlowControl/ DedupeCache) to a real peer connection (network plan §27/§28/§31/§32, previously deferred: \"Real WebRTC DataChannel transport wiring\").  Deliberately transport-agnostic at the call boundary — takes a `sendToPeer` function matching engine/collab/CollabCore.js's `sendToPeer(core, peerId, data)` signature (which already auto-chunks anything over ~60KB to dodge SCTP frame limits and reassembles transparently on the receive side, and round-trips `Uint8Array` natively via CollabCodec.js's msgpack `bin` format) rather than importing CollabCore itself. Callers feed every relevant `onOp(peerId, op)` message through `handleChunkTransportMessage` before their own app-level op handling — same pattern SyncTransport.js uses for MasterServerClient signal events.  Real credit-based backpressure (FlowControl.js's whole point): a CollabCore-style reliable-ordered data channel does NOT drop or backpressure large \"critical\" application messages on its own (see CollabCore.js's `_sendBinary` — only a handful of non-critical types like `__ping__` get dropped under buffer pressure); blasting every fragment of a multi-MB object immediately would build unbounded `bufferedAmount`. This module gates sends on an ACK-based credit window instead: a fragment's credit is only released once the receiver confirms it actually arrived (`CHUNK_FRAGMENT_ACK`), not merely once handed to the transport.","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/ChunkTransport.md","moduleTitle":"network/chunks/ChunkTransport","source":"engine/network/chunks/ChunkTransport.js","import":"/engine/network/chunks/ChunkTransport.js","sourceHash":"93dc7e6b16d2ac9febfdc5a0aacec1dd7d3f80dc920368394569509d773ae13a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/ChunkTransport.js#0000:createChunkTransport","exportIndex":0,"name":"createChunkTransport","kind":"function","signature":"createChunkTransport({ sendToPeer, maxInFlightBytes, getChunk = async ()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/ChunkTransport.md","moduleTitle":"network/chunks/ChunkTransport","source":"engine/network/chunks/ChunkTransport.js","import":"/engine/network/chunks/ChunkTransport.js","sourceHash":"93dc7e6b16d2ac9febfdc5a0aacec1dd7d3f80dc920368394569509d773ae13a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/ChunkTransport.js#0001:requestChunkFromPeer","exportIndex":1,"name":"requestChunkFromPeer","kind":"function","signature":"requestChunkFromPeer(transport, { peerId, chunkId, fragmentRoot, timeoutMs = REQUEST_TIMEOUT_MS, lane = PRIORITY_LANE.NORMAL, } = {})","summary":"Ask one peer for a manifest-declared chunk and await its verified bytes."}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/ChunkTransport.md","moduleTitle":"network/chunks/ChunkTransport","source":"engine/network/chunks/ChunkTransport.js","import":"/engine/network/chunks/ChunkTransport.js","sourceHash":"93dc7e6b16d2ac9febfdc5a0aacec1dd7d3f80dc920368394569509d773ae13a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/ChunkTransport.js#0002:enqueueChunkSend","exportIndex":2,"name":"enqueueChunkSend","kind":"function","signature":"enqueueChunkSend(transport, { peerId, chunkId, chunkBytes, fragmentRoot, lane = PRIORITY_LANE.NORMAL, fragmentSize = DEFAULT_FRAGMENT_BYTES })","summary":"Enqueue one chunk's fragments for sending to a peer. Actual sends are paced by the credit window (see module doc) — this returns immediately; fragments drain asynchronously as ACKs free up credit."}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/ChunkTransport.md","moduleTitle":"network/chunks/ChunkTransport","source":"engine/network/chunks/ChunkTransport.js","import":"/engine/network/chunks/ChunkTransport.js","sourceHash":"93dc7e6b16d2ac9febfdc5a0aacec1dd7d3f80dc920368394569509d773ae13a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/ChunkTransport.js#0003:handleChunkTransportMessage","exportIndex":3,"name":"handleChunkTransportMessage","kind":"function","signature":"handleChunkTransportMessage(transport, peerId, op)","summary":"Feed every `onOp(peerId, op)` message through this (e.g. from `createCollabCore({ onOp })`). Handles fragment sends and their acks; returns false for anything that isn't a chunk-transport message so callers can safely chain their own app-level op handling after it."}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/ChunkTransport.md","moduleTitle":"network/chunks/ChunkTransport","source":"engine/network/chunks/ChunkTransport.js","import":"/engine/network/chunks/ChunkTransport.js","sourceHash":"93dc7e6b16d2ac9febfdc5a0aacec1dd7d3f80dc920368394569509d773ae13a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/ChunkTransport.js#0004:CHUNK_MESSAGE_TYPE","exportIndex":4,"name":"CHUNK_MESSAGE_TYPE","kind":"constant","signature":"CHUNK_MESSAGE_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/ChunkVerifier.md","moduleTitle":"network/chunks/ChunkVerifier","source":"engine/network/chunks/ChunkVerifier.js","import":"/engine/network/chunks/ChunkVerifier.js","sourceHash":"5418977135881e995ef27f1937bf98ebd5b2051323719d7322e0c08757a7f6f4","subsystem":"engine","recordType":"api-module","id":"module:engine/network/chunks/ChunkVerifier.js","title":"network/chunks/ChunkVerifier","summary":"network/chunks/ChunkVerifier.js — verify received fragments/chunks against a manifest's declared hashes (network plan §31/§32).","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/ChunkVerifier.md","moduleTitle":"network/chunks/ChunkVerifier","source":"engine/network/chunks/ChunkVerifier.js","import":"/engine/network/chunks/ChunkVerifier.js","sourceHash":"5418977135881e995ef27f1937bf98ebd5b2051323719d7322e0c08757a7f6f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/ChunkVerifier.js#0000:verifyChunkFragments","exportIndex":0,"name":"verifyChunkFragments","kind":"function","signature":"async verifyChunkFragments(fragments, expectedFragmentRoot)","summary":"Verify a fully-received set of fragments for one chunk against the manifest's declared fragment merkle root — before spending time/memory reassembling+hashing the whole chunk."}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/ChunkVerifier.md","moduleTitle":"network/chunks/ChunkVerifier","source":"engine/network/chunks/ChunkVerifier.js","import":"/engine/network/chunks/ChunkVerifier.js","sourceHash":"5418977135881e995ef27f1937bf98ebd5b2051323719d7322e0c08757a7f6f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/ChunkVerifier.js#0001:reassembleAndVerifyChunk","exportIndex":1,"name":"reassembleAndVerifyChunk","kind":"function","signature":"async reassembleAndVerifyChunk(fragments, expectedChunkId)","summary":"Reassemble fragments and verify the resulting chunk's content hash matches the manifest's declared chunkId. Returns the reassembled bytes on success, or null (fails closed) on mismatch."}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/DedupeCache.md","moduleTitle":"network/chunks/DedupeCache","source":"engine/network/chunks/DedupeCache.js","import":"/engine/network/chunks/DedupeCache.js","sourceHash":"30e612e0be70581ab3b58bce15096a6fc2e530050e50a57f6431b9a171a0bc1f","subsystem":"engine","recordType":"api-module","id":"module:engine/network/chunks/DedupeCache.js","title":"network/chunks/DedupeCache","summary":"network/chunks/DedupeCache.js — generic seen-packet dedupe table (network plan §29), keyed by whatever content/event/packet hash a caller chooses. Type-specific retention: callers pick the ttlMs per dedupe key type (control packets 1-5min, route announcements 5-30min, chunks/ledger events effectively forever via their own content hash, etc.) — this module just enforces \"seen within its TTL -> drop\" generically.","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/DedupeCache.md","moduleTitle":"network/chunks/DedupeCache","source":"engine/network/chunks/DedupeCache.js","import":"/engine/network/chunks/DedupeCache.js","sourceHash":"30e612e0be70581ab3b58bce15096a6fc2e530050e50a57f6431b9a171a0bc1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/DedupeCache.js#0000:createDedupeCache","exportIndex":0,"name":"createDedupeCache","kind":"function","signature":"createDedupeCache()","summary":"Create an empty dedupe cache."}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/DedupeCache.md","moduleTitle":"network/chunks/DedupeCache","source":"engine/network/chunks/DedupeCache.js","import":"/engine/network/chunks/DedupeCache.js","sourceHash":"30e612e0be70581ab3b58bce15096a6fc2e530050e50a57f6431b9a171a0bc1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/DedupeCache.js#0001:hasSeen","exportIndex":1,"name":"hasSeen","kind":"function","signature":"hasSeen(cache, key, now = Date.now()","summary":"True if `key` was marked seen and its TTL hasn't expired yet. Expired entries are lazily evicted."}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/DedupeCache.md","moduleTitle":"network/chunks/DedupeCache","source":"engine/network/chunks/DedupeCache.js","import":"/engine/network/chunks/DedupeCache.js","sourceHash":"30e612e0be70581ab3b58bce15096a6fc2e530050e50a57f6431b9a171a0bc1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/DedupeCache.js#0002:markSeen","exportIndex":2,"name":"markSeen","kind":"function","signature":"markSeen(cache, key, ttlMs, now = Date.now()","summary":"Mark `key` as seen for `ttlMs` milliseconds."}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/DedupeCache.md","moduleTitle":"network/chunks/DedupeCache","source":"engine/network/chunks/DedupeCache.js","import":"/engine/network/chunks/DedupeCache.js","sourceHash":"30e612e0be70581ab3b58bce15096a6fc2e530050e50a57f6431b9a171a0bc1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/DedupeCache.js#0003:checkAndMark","exportIndex":3,"name":"checkAndMark","kind":"function","signature":"checkAndMark(cache, key, ttlMs, now = Date.now()","summary":"Convenience: check-and-mark in one call — the usual receive-path pattern (\"if already seen, drop; otherwise mark seen and process\")."}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/DedupeCache.md","moduleTitle":"network/chunks/DedupeCache","source":"engine/network/chunks/DedupeCache.js","import":"/engine/network/chunks/DedupeCache.js","sourceHash":"30e612e0be70581ab3b58bce15096a6fc2e530050e50a57f6431b9a171a0bc1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/DedupeCache.js#0004:pruneDedupeCache","exportIndex":4,"name":"pruneDedupeCache","kind":"function","signature":"pruneDedupeCache(cache, now = Date.now()","summary":"Remove all expired entries. Returns the number removed."}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/DedupeCache.md","moduleTitle":"network/chunks/DedupeCache","source":"engine/network/chunks/DedupeCache.js","import":"/engine/network/chunks/DedupeCache.js","sourceHash":"30e612e0be70581ab3b58bce15096a6fc2e530050e50a57f6431b9a171a0bc1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/DedupeCache.js#0005:dedupeCacheSize","exportIndex":5,"name":"dedupeCacheSize","kind":"function","signature":"dedupeCacheSize(cache)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/FlowControl.md","moduleTitle":"network/chunks/FlowControl","source":"engine/network/chunks/FlowControl.js","import":"/engine/network/chunks/FlowControl.js","sourceHash":"732ba36307b3b2ee51e3f43e0ccf26a9ca249c53dbe453eaa18a73732df13e4e","subsystem":"engine","recordType":"api-module","id":"module:engine/network/chunks/FlowControl.js","title":"network/chunks/FlowControl","summary":"network/chunks/FlowControl.js — credit-based flow control + priority lanes (network plan §28). QUIC-style: a receiver advertises how much in-flight data it can absorb; senders must reserve credit before sending and the receiver restores it once a fragment is verified/written.","exportCount":9}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/FlowControl.md","moduleTitle":"network/chunks/FlowControl","source":"engine/network/chunks/FlowControl.js","import":"/engine/network/chunks/FlowControl.js","sourceHash":"732ba36307b3b2ee51e3f43e0ccf26a9ca249c53dbe453eaa18a73732df13e4e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/FlowControl.js#0000:createFlowControl","exportIndex":0,"name":"createFlowControl","kind":"function","signature":"createFlowControl({ maxInFlightBytes = 16 * 1024 * 1024 } = {})","summary":"Create a flow-control window."}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/FlowControl.md","moduleTitle":"network/chunks/FlowControl","source":"engine/network/chunks/FlowControl.js","import":"/engine/network/chunks/FlowControl.js","sourceHash":"732ba36307b3b2ee51e3f43e0ccf26a9ca249c53dbe453eaa18a73732df13e4e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/FlowControl.js#0001:tryReserveCredit","exportIndex":1,"name":"tryReserveCredit","kind":"function","signature":"tryReserveCredit(fc, bytes)","summary":"Try to reserve `bytes` of send credit. Returns false (caller must pause) if it would exceed the window."}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/FlowControl.md","moduleTitle":"network/chunks/FlowControl","source":"engine/network/chunks/FlowControl.js","import":"/engine/network/chunks/FlowControl.js","sourceHash":"732ba36307b3b2ee51e3f43e0ccf26a9ca249c53dbe453eaa18a73732df13e4e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/FlowControl.js#0002:releaseCredit","exportIndex":2,"name":"releaseCredit","kind":"function","signature":"releaseCredit(fc, bytes)","summary":"Restore credit after a fragment is verified/written (or dropped/timed out)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/FlowControl.md","moduleTitle":"network/chunks/FlowControl","source":"engine/network/chunks/FlowControl.js","import":"/engine/network/chunks/FlowControl.js","sourceHash":"732ba36307b3b2ee51e3f43e0ccf26a9ca249c53dbe453eaa18a73732df13e4e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/FlowControl.js#0003:availableCredit","exportIndex":3,"name":"availableCredit","kind":"function","signature":"availableCredit(fc)","summary":"Bytes of credit still available right now."}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/FlowControl.md","moduleTitle":"network/chunks/FlowControl","source":"engine/network/chunks/FlowControl.js","import":"/engine/network/chunks/FlowControl.js","sourceHash":"732ba36307b3b2ee51e3f43e0ccf26a9ca249c53dbe453eaa18a73732df13e4e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/FlowControl.js#0004:createPriorityQueue","exportIndex":4,"name":"createPriorityQueue","kind":"function","signature":"createPriorityQueue()","summary":"Create an empty multi-lane priority queue."}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/FlowControl.md","moduleTitle":"network/chunks/FlowControl","source":"engine/network/chunks/FlowControl.js","import":"/engine/network/chunks/FlowControl.js","sourceHash":"732ba36307b3b2ee51e3f43e0ccf26a9ca249c53dbe453eaa18a73732df13e4e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/FlowControl.js#0005:enqueue","exportIndex":5,"name":"enqueue","kind":"function","signature":"enqueue(pq, lane, item)","summary":"Enqueue an item on a priority lane (lower lane number = served first)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/FlowControl.md","moduleTitle":"network/chunks/FlowControl","source":"engine/network/chunks/FlowControl.js","import":"/engine/network/chunks/FlowControl.js","sourceHash":"732ba36307b3b2ee51e3f43e0ccf26a9ca249c53dbe453eaa18a73732df13e4e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/FlowControl.js#0006:dequeue","exportIndex":6,"name":"dequeue","kind":"function","signature":"dequeue(pq)","summary":"Dequeue the next item, always draining the lowest non-empty lane first."}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/FlowControl.md","moduleTitle":"network/chunks/FlowControl","source":"engine/network/chunks/FlowControl.js","import":"/engine/network/chunks/FlowControl.js","sourceHash":"732ba36307b3b2ee51e3f43e0ccf26a9ca249c53dbe453eaa18a73732df13e4e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/FlowControl.js#0007:isQueueEmpty","exportIndex":7,"name":"isQueueEmpty","kind":"function","signature":"isQueueEmpty(pq)","summary":"True if every lane is empty."}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/FlowControl.md","moduleTitle":"network/chunks/FlowControl","source":"engine/network/chunks/FlowControl.js","import":"/engine/network/chunks/FlowControl.js","sourceHash":"732ba36307b3b2ee51e3f43e0ccf26a9ca249c53dbe453eaa18a73732df13e4e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/FlowControl.js#0008:PRIORITY_LANE","exportIndex":8,"name":"PRIORITY_LANE","kind":"constant","signature":"PRIORITY_LANE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/Manifest.md","moduleTitle":"network/chunks/Manifest","source":"engine/network/chunks/Manifest.js","import":"/engine/network/chunks/Manifest.js","sourceHash":"53acacadce5196033d917466a8242975f965807f2f678c78b7c43409bd1852e9","subsystem":"engine","recordType":"api-module","id":"module:engine/network/chunks/Manifest.js","title":"network/chunks/Manifest","summary":"network/chunks/Manifest.js — signed object manifests (network plan §31). A manifest describes an object as an ordered list of chunks (each with a content hash + fragment merkle root); the object itself is fetched chunk-by-chunk, possibly from many peers at once (SwarmScheduler.js).","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/Manifest.md","moduleTitle":"network/chunks/Manifest","source":"engine/network/chunks/Manifest.js","import":"/engine/network/chunks/Manifest.js","sourceHash":"53acacadce5196033d917466a8242975f965807f2f678c78b7c43409bd1852e9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/Manifest.js#0000:buildManifest","exportIndex":0,"name":"buildManifest","kind":"function","signature":"async buildManifest({ objectId, scope = 'private', version = 1, chunks = [], permissions = [], encryptionEpoch = null, signer, } = {})","summary":"Build + sign a manifest."}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/Manifest.md","moduleTitle":"network/chunks/Manifest","source":"engine/network/chunks/Manifest.js","import":"/engine/network/chunks/Manifest.js","sourceHash":"53acacadce5196033d917466a8242975f965807f2f678c78b7c43409bd1852e9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/Manifest.js#0001:verifyManifest","exportIndex":1,"name":"verifyManifest","kind":"function","signature":"async verifyManifest(signedManifest)","summary":"Verify a manifest's protocol/type and signature."}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/Manifest.md","moduleTitle":"network/chunks/Manifest","source":"engine/network/chunks/Manifest.js","import":"/engine/network/chunks/Manifest.js","sourceHash":"53acacadce5196033d917466a8242975f965807f2f678c78b7c43409bd1852e9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/Manifest.js#0002:manifestTotalSize","exportIndex":2,"name":"manifestTotalSize","kind":"function","signature":"manifestTotalSize(signedManifest)","summary":"Total object size implied by a manifest's chunk list."}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/Manifest.md","moduleTitle":"network/chunks/Manifest","source":"engine/network/chunks/Manifest.js","import":"/engine/network/chunks/Manifest.js","sourceHash":"53acacadce5196033d917466a8242975f965807f2f678c78b7c43409bd1852e9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/Manifest.js#0003:manifestChunkIds","exportIndex":3,"name":"manifestChunkIds","kind":"function","signature":"manifestChunkIds(signedManifest)","summary":"List of chunk ids a manifest references, in order."}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/Manifest.md","moduleTitle":"network/chunks/Manifest","source":"engine/network/chunks/Manifest.js","import":"/engine/network/chunks/Manifest.js","sourceHash":"53acacadce5196033d917466a8242975f965807f2f678c78b7c43409bd1852e9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/Manifest.js#0004:MAX_MANIFEST_CHUNKS","exportIndex":4,"name":"MAX_MANIFEST_CHUNKS","kind":"constant","signature":"MAX_MANIFEST_CHUNKS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/Manifest.md","moduleTitle":"network/chunks/Manifest","source":"engine/network/chunks/Manifest.js","import":"/engine/network/chunks/Manifest.js","sourceHash":"53acacadce5196033d917466a8242975f965807f2f678c78b7c43409bd1852e9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/Manifest.js#0005:MAX_MANIFEST_OBJECT_BYTES","exportIndex":5,"name":"MAX_MANIFEST_OBJECT_BYTES","kind":"constant","signature":"MAX_MANIFEST_OBJECT_BYTES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/MerkleFragments.md","moduleTitle":"network/chunks/MerkleFragments","source":"engine/network/chunks/MerkleFragments.js","import":"/engine/network/chunks/MerkleFragments.js","sourceHash":"5f335a21c57aacddbca27d4d9b6e879364d12286a17985a55d70acadcfe3b8a0","subsystem":"engine","recordType":"api-module","id":"module:engine/network/chunks/MerkleFragments.js","title":"network/chunks/MerkleFragments","summary":"network/chunks/MerkleFragments.js — per-fragment hashing + a chunk's merkle root (network plan §32), so receivers can reject a corrupted fragment early instead of only detecting failure after the whole chunk is reassembled. Reuses the engine's existing SHA-256 content hash helper (already used for identity fingerprints elsewhere).","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/MerkleFragments.md","moduleTitle":"network/chunks/MerkleFragments","source":"engine/network/chunks/MerkleFragments.js","import":"/engine/network/chunks/MerkleFragments.js","sourceHash":"5f335a21c57aacddbca27d4d9b6e879364d12286a17985a55d70acadcfe3b8a0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/MerkleFragments.js#0000:hashFragment","exportIndex":0,"name":"hashFragment","kind":"function","signature":"async hashFragment(fragmentBytes)","summary":"SHA-256 hex hash of one fragment's raw bytes."}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/MerkleFragments.md","moduleTitle":"network/chunks/MerkleFragments","source":"engine/network/chunks/MerkleFragments.js","import":"/engine/network/chunks/MerkleFragments.js","sourceHash":"5f335a21c57aacddbca27d4d9b6e879364d12286a17985a55d70acadcfe3b8a0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/MerkleFragments.js#0001:computeChunkHash","exportIndex":1,"name":"computeChunkHash","kind":"function","signature":"async computeChunkHash(chunkBytes)","summary":"SHA-256 hex hash of a full chunk's raw bytes (used as the chunk's content id)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/MerkleFragments.md","moduleTitle":"network/chunks/MerkleFragments","source":"engine/network/chunks/MerkleFragments.js","import":"/engine/network/chunks/MerkleFragments.js","sourceHash":"5f335a21c57aacddbca27d4d9b6e879364d12286a17985a55d70acadcfe3b8a0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/MerkleFragments.js#0002:computeFragmentHashes","exportIndex":2,"name":"computeFragmentHashes","kind":"function","signature":"async computeFragmentHashes(fragments)","summary":"Hash every fragment of a chunk, in order."}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/MerkleFragments.md","moduleTitle":"network/chunks/MerkleFragments","source":"engine/network/chunks/MerkleFragments.js","import":"/engine/network/chunks/MerkleFragments.js","sourceHash":"5f335a21c57aacddbca27d4d9b6e879364d12286a17985a55d70acadcfe3b8a0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/MerkleFragments.js#0003:computeMerkleRoot","exportIndex":3,"name":"computeMerkleRoot","kind":"function","signature":"async computeMerkleRoot(fragmentHashes)","summary":"Compute a chunk's merkle root from its (ordered) fragment hashes: pair up adjacent hashes, hash their concatenation, repeat until one root remains (odd node carries up unchanged, standard merkle tree construction)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/SwarmFetchCoordinator.md","moduleTitle":"network/chunks/SwarmFetchCoordinator","source":"engine/network/chunks/SwarmFetchCoordinator.js","import":"/engine/network/chunks/SwarmFetchCoordinator.js","sourceHash":"1f2aa183500cc10a7e45068a253b2668dacad447990d3f71f0cb40ca437dcf3f","subsystem":"engine","recordType":"api-module","id":"module:engine/network/chunks/SwarmFetchCoordinator.js","title":"network/chunks/SwarmFetchCoordinator","summary":"Resolve a signed manifest from many DHT providers, retrying failed peers, verifying every content hash, and preserving manifest chunk order.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/SwarmFetchCoordinator.md","moduleTitle":"network/chunks/SwarmFetchCoordinator","source":"engine/network/chunks/SwarmFetchCoordinator.js","import":"/engine/network/chunks/SwarmFetchCoordinator.js","sourceHash":"1f2aa183500cc10a7e45068a253b2668dacad447990d3f71f0cb40ca437dcf3f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/SwarmFetchCoordinator.js#0000:SwarmFetchError","exportIndex":0,"name":"SwarmFetchError","kind":"class","signature":"class SwarmFetchError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/SwarmFetchCoordinator.md","moduleTitle":"network/chunks/SwarmFetchCoordinator","source":"engine/network/chunks/SwarmFetchCoordinator.js","import":"/engine/network/chunks/SwarmFetchCoordinator.js","sourceHash":"1f2aa183500cc10a7e45068a253b2668dacad447990d3f71f0cb40ca437dcf3f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/SwarmFetchCoordinator.js#0001:fetchManifestFromSwarm","exportIndex":1,"name":"fetchManifestFromSwarm","kind":"function","signature":"async fetchManifestFromSwarm({ signedManifest, transport, findProviders, fallbackPeers = ()","summary":"Resolve a signed manifest from many DHT providers, retrying failed peers, verifying every content hash, and preserving manifest chunk order."}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/SwarmScheduler.md","moduleTitle":"network/chunks/SwarmScheduler","source":"engine/network/chunks/SwarmScheduler.js","import":"/engine/network/chunks/SwarmScheduler.js","sourceHash":"c3dfc7f3efebe126529f846afc00adebc56730077e409262f770a2d74c9265b0","subsystem":"engine","recordType":"api-module","id":"module:engine/network/chunks/SwarmScheduler.js","title":"network/chunks/SwarmScheduler","summary":"network/chunks/SwarmScheduler.js — spread chunk fetches across multiple providing peers (network plan §31 swarm fetching). Pure scheduling logic; the actual byte transfer happens over routes/sessions from earlier phases.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/SwarmScheduler.md","moduleTitle":"network/chunks/SwarmScheduler","source":"engine/network/chunks/SwarmScheduler.js","import":"/engine/network/chunks/SwarmScheduler.js","sourceHash":"c3dfc7f3efebe126529f846afc00adebc56730077e409262f770a2d74c9265b0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/chunks/SwarmScheduler.js#0000:planSwarmFetch","exportIndex":0,"name":"planSwarmFetch","kind":"function","signature":"planSwarmFetch({ chunkIds, providers, maxLanes = 4 } = {})","summary":"Assign each requested chunk to one candidate provider peer, load-balancing so no single peer is asked for every chunk, then group the assignments into fetch \"lanes\" of up to `maxLanes` concurrent requests."}
{"schemaVersion":1,"modulePath":"engine/reference/network/chunks/index.md","moduleTitle":"network/chunks/index","source":"engine/network/chunks/index.js","import":"/engine/network/chunks/index.js","sourceHash":"f1c585e6b4afa548d2f361696407d00821e651f717d0e69ed37871a8cc820431","subsystem":"engine","recordType":"api-module","id":"module:engine/network/chunks/index.js","title":"network/chunks/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/network/crypto/Hpke.md","moduleTitle":"network/crypto/Hpke","source":"engine/network/crypto/Hpke.js","import":"/engine/network/crypto/Hpke.js","sourceHash":"5c3c8bf3da8c221b1173b59ffb63777e47756ae109cdc90ce41967f451e3b5a2","subsystem":"engine","recordType":"api-module","id":"module:engine/network/crypto/Hpke.js","title":"network/crypto/Hpke","summary":"RFC 9180 base mode: DHKEM(P-256, HKDF-SHA256), HKDF-SHA256, AES-128-GCM. Signaling uses a fresh encapsulation for every message, so the AEAD sequence number is always zero and the base nonce is used directly.","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/network/crypto/Hpke.md","moduleTitle":"network/crypto/Hpke","source":"engine/network/crypto/Hpke.js","import":"/engine/network/crypto/Hpke.js","sourceHash":"5c3c8bf3da8c221b1173b59ffb63777e47756ae109cdc90ce41967f451e3b5a2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/crypto/Hpke.js#0000:generateHpkeKeyPair","exportIndex":0,"name":"generateHpkeKeyPair","kind":"function","signature":"async generateHpkeKeyPair()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/crypto/Hpke.md","moduleTitle":"network/crypto/Hpke","source":"engine/network/crypto/Hpke.js","import":"/engine/network/crypto/Hpke.js","sourceHash":"5c3c8bf3da8c221b1173b59ffb63777e47756ae109cdc90ce41967f451e3b5a2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/crypto/Hpke.js#0001:hpkeSeal","exportIndex":1,"name":"hpkeSeal","kind":"function","signature":"async hpkeSeal(recipientPublicKeyHex, plaintext, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/crypto/Hpke.md","moduleTitle":"network/crypto/Hpke","source":"engine/network/crypto/Hpke.js","import":"/engine/network/crypto/Hpke.js","sourceHash":"5c3c8bf3da8c221b1173b59ffb63777e47756ae109cdc90ce41967f451e3b5a2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/crypto/Hpke.js#0002:hpkeOpen","exportIndex":2,"name":"hpkeOpen","kind":"function","signature":"async hpkeOpen(recipientPrivateKey, encHex, ciphertextHex, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/crypto/Hpke.md","moduleTitle":"network/crypto/Hpke","source":"engine/network/crypto/Hpke.js","import":"/engine/network/crypto/Hpke.js","sourceHash":"5c3c8bf3da8c221b1173b59ffb63777e47756ae109cdc90ce41967f451e3b5a2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/crypto/Hpke.js#0003:hpkeBytesToHex","exportIndex":3,"name":"hpkeBytesToHex","kind":"re-export","signature":"hpkeBytesToHex","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/crypto/Hpke.md","moduleTitle":"network/crypto/Hpke","source":"engine/network/crypto/Hpke.js","import":"/engine/network/crypto/Hpke.js","sourceHash":"5c3c8bf3da8c221b1173b59ffb63777e47756ae109cdc90ce41967f451e3b5a2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/crypto/Hpke.js#0004:hpkeHexToBytes","exportIndex":4,"name":"hpkeHexToBytes","kind":"re-export","signature":"hpkeHexToBytes","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/crypto/OpaqueRoute.md","moduleTitle":"network/crypto/OpaqueRoute","source":"engine/network/crypto/OpaqueRoute.js","import":"/engine/network/crypto/OpaqueRoute.js","sourceHash":"513a9f3e3b94d8793e8533d230b1f997f630f6df370493ee079442094542a06c","subsystem":"engine","recordType":"api-module","id":"module:engine/network/crypto/OpaqueRoute.js","title":"network/crypto/OpaqueRoute","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/network/crypto/OpaqueRoute.md","moduleTitle":"network/crypto/OpaqueRoute","source":"engine/network/crypto/OpaqueRoute.js","import":"/engine/network/crypto/OpaqueRoute.js","sourceHash":"513a9f3e3b94d8793e8533d230b1f997f630f6df370493ee079442094542a06c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/crypto/OpaqueRoute.js#0000:deriveOpaqueRoute","exportIndex":0,"name":"deriveOpaqueRoute","kind":"function","signature":"async deriveOpaqueRoute({ routeSecret = null, projectId = 'default' } = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/crypto/Trust.md","moduleTitle":"network/crypto/Trust","source":"engine/network/crypto/Trust.js","import":"/engine/network/crypto/Trust.js","sourceHash":"9353d1992431e41107807fc1e6d9ac7e525feeefaf8b4fd85cb80c42005185e6","subsystem":"engine","recordType":"api-module","id":"module:engine/network/crypto/Trust.js","title":"network/crypto/Trust","summary":"","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/network/crypto/Trust.md","moduleTitle":"network/crypto/Trust","source":"engine/network/crypto/Trust.js","import":"/engine/network/crypto/Trust.js","sourceHash":"9353d1992431e41107807fc1e6d9ac7e525feeefaf8b4fd85cb80c42005185e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/crypto/Trust.js#0000:canonicalJson","exportIndex":0,"name":"canonicalJson","kind":"function","signature":"canonicalJson(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/crypto/Trust.md","moduleTitle":"network/crypto/Trust","source":"engine/network/crypto/Trust.js","import":"/engine/network/crypto/Trust.js","sourceHash":"9353d1992431e41107807fc1e6d9ac7e525feeefaf8b4fd85cb80c42005185e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/crypto/Trust.js#0001:sha256Hex","exportIndex":1,"name":"sha256Hex","kind":"function","signature":"async sha256Hex(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/crypto/Trust.md","moduleTitle":"network/crypto/Trust","source":"engine/network/crypto/Trust.js","import":"/engine/network/crypto/Trust.js","sourceHash":"9353d1992431e41107807fc1e6d9ac7e525feeefaf8b4fd85cb80c42005185e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/crypto/Trust.js#0002:verifyRawSignature","exportIndex":2,"name":"verifyRawSignature","kind":"function","signature":"async verifyRawSignature(publicKeyHex, bytes, signatureHex)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/crypto/Trust.md","moduleTitle":"network/crypto/Trust","source":"engine/network/crypto/Trust.js","import":"/engine/network/crypto/Trust.js","sourceHash":"9353d1992431e41107807fc1e6d9ac7e525feeefaf8b4fd85cb80c42005185e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/crypto/Trust.js#0003:verifySignedManifest","exportIndex":3,"name":"verifySignedManifest","kind":"function","signature":"async verifySignedManifest(signed, expectedPins, nowSeconds = Math.floor(Date.now()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/crypto/Trust.md","moduleTitle":"network/crypto/Trust","source":"engine/network/crypto/Trust.js","import":"/engine/network/crypto/Trust.js","sourceHash":"9353d1992431e41107807fc1e6d9ac7e525feeefaf8b4fd85cb80c42005185e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/crypto/Trust.js#0004:verifySignedV3Manifest","exportIndex":4,"name":"verifySignedV3Manifest","kind":"function","signature":"async verifySignedV3Manifest(signed, expectedPins, nowSeconds = Math.floor(Date.now()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/crypto/index.md","moduleTitle":"network/crypto/index","source":"engine/network/crypto/index.js","import":"/engine/network/crypto/index.js","sourceHash":"e97417713a16c64884d868d01d9572d19f2facb7e5b23131f2d3ceafbe7359d8","subsystem":"engine","recordType":"api-module","id":"module:engine/network/crypto/index.js","title":"network/crypto/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/network/daemon/ParticleNetworkDaemon.md","moduleTitle":"network/daemon/ParticleNetworkDaemon","source":"engine/network/daemon/ParticleNetworkDaemon.js","import":"/engine/network/daemon/ParticleNetworkDaemon.js","sourceHash":"f5f03a19193d574eca1f0130e1455841b9ba753860e97c748ba7f0a07d5fbd43","subsystem":"engine","recordType":"api-module","id":"module:engine/network/daemon/ParticleNetworkDaemon.js","title":"network/daemon/ParticleNetworkDaemon","summary":"Validate and normalize a V2 ICE response. Explicit direct mode is strict so a malformed or compromised response cannot smuggle relay credentials into a no-TURN client. Legacy relay responses remain accepted when they contain a real authenticated TURN URL.","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/network/daemon/ParticleNetworkDaemon.md","moduleTitle":"network/daemon/ParticleNetworkDaemon","source":"engine/network/daemon/ParticleNetworkDaemon.js","import":"/engine/network/daemon/ParticleNetworkDaemon.js","sourceHash":"f5f03a19193d574eca1f0130e1455841b9ba753860e97c748ba7f0a07d5fbd43","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/daemon/ParticleNetworkDaemon.js#0000:ParticleNetworkDaemon","exportIndex":0,"name":"ParticleNetworkDaemon","kind":"class","signature":"class ParticleNetworkDaemon","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/daemon/ParticleNetworkDaemon.md","moduleTitle":"network/daemon/ParticleNetworkDaemon","source":"engine/network/daemon/ParticleNetworkDaemon.js","import":"/engine/network/daemon/ParticleNetworkDaemon.js","sourceHash":"f5f03a19193d574eca1f0130e1455841b9ba753860e97c748ba7f0a07d5fbd43","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/daemon/ParticleNetworkDaemon.js#0001:readParticleTrustFloor","exportIndex":1,"name":"readParticleTrustFloor","kind":"function","signature":"readParticleTrustFloor(networkRootId, nodeId, storage = globalThis.localStorage)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/daemon/ParticleNetworkDaemon.md","moduleTitle":"network/daemon/ParticleNetworkDaemon","source":"engine/network/daemon/ParticleNetworkDaemon.js","import":"/engine/network/daemon/ParticleNetworkDaemon.js","sourceHash":"f5f03a19193d574eca1f0130e1455841b9ba753860e97c748ba7f0a07d5fbd43","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/daemon/ParticleNetworkDaemon.js#0002:writeParticleTrustFloor","exportIndex":2,"name":"writeParticleTrustFloor","kind":"function","signature":"writeParticleTrustFloor(networkRootId, nodeId, floor, storage = globalThis.localStorage)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/daemon/ParticleNetworkDaemon.md","moduleTitle":"network/daemon/ParticleNetworkDaemon","source":"engine/network/daemon/ParticleNetworkDaemon.js","import":"/engine/network/daemon/ParticleNetworkDaemon.js","sourceHash":"f5f03a19193d574eca1f0130e1455841b9ba753860e97c748ba7f0a07d5fbd43","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/daemon/ParticleNetworkDaemon.js#0003:particleIceConfigurationReport","exportIndex":3,"name":"particleIceConfigurationReport","kind":"function","signature":"particleIceConfigurationReport(value)","summary":"Validate and normalize a V2 ICE response. Explicit direct mode is strict so a malformed or compromised response cannot smuggle relay credentials into a no-TURN client. Legacy relay responses remain accepted when they contain a real authenticated TURN URL."}
{"schemaVersion":1,"modulePath":"engine/reference/network/daemon/ParticleNetworkDaemon.md","moduleTitle":"network/daemon/ParticleNetworkDaemon","source":"engine/network/daemon/ParticleNetworkDaemon.js","import":"/engine/network/daemon/ParticleNetworkDaemon.js","sourceHash":"f5f03a19193d574eca1f0130e1455841b9ba753860e97c748ba7f0a07d5fbd43","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/daemon/ParticleNetworkDaemon.js#0004:PARTICLE_TRUST_FLOOR_SCHEMA","exportIndex":4,"name":"PARTICLE_TRUST_FLOOR_SCHEMA","kind":"constant","signature":"PARTICLE_TRUST_FLOOR_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/daemon/ParticleNetworkDaemon.md","moduleTitle":"network/daemon/ParticleNetworkDaemon","source":"engine/network/daemon/ParticleNetworkDaemon.js","import":"/engine/network/daemon/ParticleNetworkDaemon.js","sourceHash":"f5f03a19193d574eca1f0130e1455841b9ba753860e97c748ba7f0a07d5fbd43","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/daemon/ParticleNetworkDaemon.js#0005:PARTICLE_TRUST_FLOOR_SCHEMA_VERSION","exportIndex":5,"name":"PARTICLE_TRUST_FLOOR_SCHEMA_VERSION","kind":"constant","signature":"PARTICLE_TRUST_FLOOR_SCHEMA_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/daemon/ParticleNetworkDaemonRegistry.md","moduleTitle":"network/daemon/ParticleNetworkDaemonRegistry","source":"engine/network/daemon/ParticleNetworkDaemonRegistry.js","import":"/engine/network/daemon/ParticleNetworkDaemonRegistry.js","sourceHash":"ce3ecd4a884f7d262ab28fcfd4c2f0b1777a121eabd54f6fb8ac7026c5e2c563","subsystem":"engine","recordType":"api-module","id":"module:engine/network/daemon/ParticleNetworkDaemonRegistry.js","title":"network/daemon/ParticleNetworkDaemonRegistry","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/network/daemon/ParticleNetworkDaemonRegistry.md","moduleTitle":"network/daemon/ParticleNetworkDaemonRegistry","source":"engine/network/daemon/ParticleNetworkDaemonRegistry.js","import":"/engine/network/daemon/ParticleNetworkDaemonRegistry.js","sourceHash":"ce3ecd4a884f7d262ab28fcfd4c2f0b1777a121eabd54f6fb8ac7026c5e2c563","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/daemon/ParticleNetworkDaemonRegistry.js#0000:acquireParticleNetworkDaemon","exportIndex":0,"name":"acquireParticleNetworkDaemon","kind":"function","signature":"acquireParticleNetworkDaemon({ server, deviceSigner, onEvent = null, preferV3 = false } = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/daemon/ParticleNetworkDaemonRegistry.md","moduleTitle":"network/daemon/ParticleNetworkDaemonRegistry","source":"engine/network/daemon/ParticleNetworkDaemonRegistry.js","import":"/engine/network/daemon/ParticleNetworkDaemonRegistry.js","sourceHash":"ce3ecd4a884f7d262ab28fcfd4c2f0b1777a121eabd54f6fb8ac7026c5e2c563","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/daemon/ParticleNetworkDaemonRegistry.js#0001:particleNetworkDaemonStats","exportIndex":1,"name":"particleNetworkDaemonStats","kind":"function","signature":"particleNetworkDaemonStats()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/daemon/ParticleNetworkPreferredDaemon.md","moduleTitle":"network/daemon/ParticleNetworkPreferredDaemon","source":"engine/network/daemon/ParticleNetworkPreferredDaemon.js","import":"/engine/network/daemon/ParticleNetworkPreferredDaemon.js","sourceHash":"a07a8c04103287ec7c253b6f2aaaffb5cc65290f4f0d85b09e29690b23c0e6b9","subsystem":"engine","recordType":"api-module","id":"module:engine/network/daemon/ParticleNetworkPreferredDaemon.js","title":"network/daemon/ParticleNetworkPreferredDaemon","summary":"Selects V3 only from a valid, pinned V2 advertisement. A valid advertisement with no V3 marker selects V2. Any V3 marker commits the connection attempt to V3; V3 integrity failures are forwarded and never retried as V2.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/network/daemon/ParticleNetworkPreferredDaemon.md","moduleTitle":"network/daemon/ParticleNetworkPreferredDaemon","source":"engine/network/daemon/ParticleNetworkPreferredDaemon.js","import":"/engine/network/daemon/ParticleNetworkPreferredDaemon.js","sourceHash":"a07a8c04103287ec7c253b6f2aaaffb5cc65290f4f0d85b09e29690b23c0e6b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/daemon/ParticleNetworkPreferredDaemon.js#0000:ParticleNetworkPreferredDaemon","exportIndex":0,"name":"ParticleNetworkPreferredDaemon","kind":"class","signature":"class ParticleNetworkPreferredDaemon","summary":"Selects V3 only from a valid, pinned V2 advertisement. A valid advertisement with no V3 marker selects V2. Any V3 marker commits the connection attempt to V3; V3 integrity failures are forwarded and never retried as V2."}
{"schemaVersion":1,"modulePath":"engine/reference/network/daemon/ParticleNetworkPreferredDaemon.md","moduleTitle":"network/daemon/ParticleNetworkPreferredDaemon","source":"engine/network/daemon/ParticleNetworkPreferredDaemon.js","import":"/engine/network/daemon/ParticleNetworkPreferredDaemon.js","sourceHash":"a07a8c04103287ec7c253b6f2aaaffb5cc65290f4f0d85b09e29690b23c0e6b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/daemon/ParticleNetworkPreferredDaemon.js#0001:advertisesV3","exportIndex":1,"name":"advertisesV3","kind":"re-export","signature":"advertisesV3","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/daemon/ParticleNetworkPreferredDaemon.md","moduleTitle":"network/daemon/ParticleNetworkPreferredDaemon","source":"engine/network/daemon/ParticleNetworkPreferredDaemon.js","import":"/engine/network/daemon/ParticleNetworkPreferredDaemon.js","sourceHash":"a07a8c04103287ec7c253b6f2aaaffb5cc65290f4f0d85b09e29690b23c0e6b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/daemon/ParticleNetworkPreferredDaemon.js#0002:hasValidV3Advertisement","exportIndex":2,"name":"hasValidV3Advertisement","kind":"re-export","signature":"hasValidV3Advertisement","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/daemon/index.md","moduleTitle":"network/daemon/index","source":"engine/network/daemon/index.js","import":"/engine/network/daemon/index.js","sourceHash":"9bc9e82076a4d0e7c1d639a5018d7cae6e731498f98d8174644458f7828e5fe5","subsystem":"engine","recordType":"api-module","id":"module:engine/network/daemon/index.js","title":"network/daemon/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/network/dht/BootstrapSource.md","moduleTitle":"network/dht/BootstrapSource","source":"engine/network/dht/BootstrapSource.js","import":"/engine/network/dht/BootstrapSource.js","sourceHash":"d4ee5bdc48c69bac68762c081f87f159d95c74e0e66a0d0f20241a75edd7934f","subsystem":"engine","recordType":"api-module","id":"module:engine/network/dht/BootstrapSource.js","title":"network/dht/BootstrapSource","summary":"network/dht/BootstrapSource.js — pluggable bootstrap sources for the no-bootstrap-is-impossible reality check (network plan §37/§47/§48): \"no pure zero-bootstrap global discovery exists\" — cached peers, LAN, invite code, DHT, radio beacon, or a seed/master server are the only starting paths. This module defines a tiny, transport-agnostic interface (`{ id, scan(), advertise(record) }`) and a registry to combine several sources into one bootstrap attempt order; it ships NO concrete transport.  Concrete adapter (wired at the OS integration layer, per this module's engine/network-stays-webgpu-os-free rule): webgpu-os/drivers/ ResidentBootstrapSource.js wraps the OS browser extension's \"resident\" node (webgpu-os/browser-extension/services/ResidentService.js, exposed via BrowserBridgeClient.resident) — a standing MV3 offscreen document that persists a device's PUBLIC identity cert and stays warm via a chrome.alarms keepalive. Kept honest in that adapter: the resident node does NOT answer presence with no OS tab open (it is a lightweight cert vault + heartbeat only, off by default) — its `scan()` returns a \"last remembered identity\" hint, not a confirmed-reachable peer.","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/network/dht/BootstrapSource.md","moduleTitle":"network/dht/BootstrapSource","source":"engine/network/dht/BootstrapSource.js","import":"/engine/network/dht/BootstrapSource.js","sourceHash":"d4ee5bdc48c69bac68762c081f87f159d95c74e0e66a0d0f20241a75edd7934f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/dht/BootstrapSource.js#0000:createBootstrapSource","exportIndex":0,"name":"createBootstrapSource","kind":"function","signature":"createBootstrapSource({ id, scan, advertise = null } = {})","summary":"Wrap a bootstrap source implementation."}
{"schemaVersion":1,"modulePath":"engine/reference/network/dht/BootstrapSource.md","moduleTitle":"network/dht/BootstrapSource","source":"engine/network/dht/BootstrapSource.js","import":"/engine/network/dht/BootstrapSource.js","sourceHash":"d4ee5bdc48c69bac68762c081f87f159d95c74e0e66a0d0f20241a75edd7934f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/dht/BootstrapSource.js#0001:createBootstrapRegistry","exportIndex":1,"name":"createBootstrapRegistry","kind":"function","signature":"createBootstrapRegistry()","summary":"Create a registry of bootstrap sources, tried in registration order."}
{"schemaVersion":1,"modulePath":"engine/reference/network/dht/BootstrapSource.md","moduleTitle":"network/dht/BootstrapSource","source":"engine/network/dht/BootstrapSource.js","import":"/engine/network/dht/BootstrapSource.js","sourceHash":"d4ee5bdc48c69bac68762c081f87f159d95c74e0e66a0d0f20241a75edd7934f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/dht/BootstrapSource.js#0002:registerBootstrapSource","exportIndex":2,"name":"registerBootstrapSource","kind":"function","signature":"registerBootstrapSource(registry, source)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/dht/BootstrapSource.md","moduleTitle":"network/dht/BootstrapSource","source":"engine/network/dht/BootstrapSource.js","import":"/engine/network/dht/BootstrapSource.js","sourceHash":"d4ee5bdc48c69bac68762c081f87f159d95c74e0e66a0d0f20241a75edd7934f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/dht/BootstrapSource.js#0003:runBootstrap","exportIndex":3,"name":"runBootstrap","kind":"function","signature":"async runBootstrap(registry)","summary":"Try each registered source in order, collecting whatever records each one returns (a source throwing/timing out just contributes nothing — this never fails the whole bootstrap attempt)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/dht/BootstrapSource.md","moduleTitle":"network/dht/BootstrapSource","source":"engine/network/dht/BootstrapSource.js","import":"/engine/network/dht/BootstrapSource.js","sourceHash":"d4ee5bdc48c69bac68762c081f87f159d95c74e0e66a0d0f20241a75edd7934f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/dht/BootstrapSource.js#0004:flattenBootstrapResults","exportIndex":4,"name":"flattenBootstrapResults","kind":"function","signature":"flattenBootstrapResults(results)","summary":"Flatten runBootstrap()'s per-source results into one record list, tagged with their source."}
{"schemaVersion":1,"modulePath":"engine/reference/network/dht/DhtMessages.md","moduleTitle":"network/dht/DhtMessages","source":"engine/network/dht/DhtMessages.js","import":"/engine/network/dht/DhtMessages.js","sourceHash":"e259a4dba5d1a58fba30846560c3d4796dbf80eca257bab0d8265bb6df2e1a30","subsystem":"engine","recordType":"api-module","id":"module:engine/network/dht/DhtMessages.js","title":"network/dht/DhtMessages","summary":"network/dht/DhtMessages.js — future Particle DHT message primitives (network plan §47): FIND_PEER / FIND_ROUTE / FIND_PROVIDERS / PEER_EXCHANGE ANNOUNCE_PROVIDER / ANNOUNCE_ROUTE. Low priority per the plan — these are just versioned envelope builders (protocol.js `particle-dht/1`) for a future real DHT transport; no network code lives here yet. Bootstrap is still required even with a DHT (network plan §47: cached peers/LAN/master server/invite) — see BootstrapSource.js.","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/network/dht/DhtMessages.md","moduleTitle":"network/dht/DhtMessages","source":"engine/network/dht/DhtMessages.js","import":"/engine/network/dht/DhtMessages.js","sourceHash":"e259a4dba5d1a58fba30846560c3d4796dbf80eca257bab0d8265bb6df2e1a30","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/dht/DhtMessages.js#0000:makeFindPeerMessage","exportIndex":0,"name":"makeFindPeerMessage","kind":"function","signature":"makeFindPeerMessage({ targetPeerId, requesterPeerId } = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/dht/DhtMessages.md","moduleTitle":"network/dht/DhtMessages","source":"engine/network/dht/DhtMessages.js","import":"/engine/network/dht/DhtMessages.js","sourceHash":"e259a4dba5d1a58fba30846560c3d4796dbf80eca257bab0d8265bb6df2e1a30","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/dht/DhtMessages.js#0001:makeFindRouteMessage","exportIndex":1,"name":"makeFindRouteMessage","kind":"function","signature":"makeFindRouteMessage({ routeId, requesterPeerId } = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/dht/DhtMessages.md","moduleTitle":"network/dht/DhtMessages","source":"engine/network/dht/DhtMessages.js","import":"/engine/network/dht/DhtMessages.js","sourceHash":"e259a4dba5d1a58fba30846560c3d4796dbf80eca257bab0d8265bb6df2e1a30","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/dht/DhtMessages.js#0002:makeFindProvidersMessage","exportIndex":2,"name":"makeFindProvidersMessage","kind":"function","signature":"makeFindProvidersMessage({ key, requesterPeerId } = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/dht/DhtMessages.md","moduleTitle":"network/dht/DhtMessages","source":"engine/network/dht/DhtMessages.js","import":"/engine/network/dht/DhtMessages.js","sourceHash":"e259a4dba5d1a58fba30846560c3d4796dbf80eca257bab0d8265bb6df2e1a30","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/dht/DhtMessages.js#0003:makeAnnounceProviderMessage","exportIndex":3,"name":"makeAnnounceProviderMessage","kind":"function","signature":"makeAnnounceProviderMessage({ key, peerId, ttlMs } = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/dht/DhtMessages.md","moduleTitle":"network/dht/DhtMessages","source":"engine/network/dht/DhtMessages.js","import":"/engine/network/dht/DhtMessages.js","sourceHash":"e259a4dba5d1a58fba30846560c3d4796dbf80eca257bab0d8265bb6df2e1a30","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/dht/DhtMessages.js#0004:makeAnnounceRouteMessage","exportIndex":4,"name":"makeAnnounceRouteMessage","kind":"function","signature":"makeAnnounceRouteMessage({ routeId, peerId, services = [], ttlMs } = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/dht/DhtMessages.md","moduleTitle":"network/dht/DhtMessages","source":"engine/network/dht/DhtMessages.js","import":"/engine/network/dht/DhtMessages.js","sourceHash":"e259a4dba5d1a58fba30846560c3d4796dbf80eca257bab0d8265bb6df2e1a30","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/dht/DhtMessages.js#0005:makePeerExchangeMessage","exportIndex":5,"name":"makePeerExchangeMessage","kind":"function","signature":"makePeerExchangeMessage({ knownPeers = [] } = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/dht/DhtNode.md","moduleTitle":"network/dht/DhtNode","source":"engine/network/dht/DhtNode.js","import":"/engine/network/dht/DhtNode.js","sourceHash":"16338f46088164efd73f1954fd48c299833b473d61e55d31cab1c8ea6e522697","subsystem":"engine","recordType":"api-module","id":"module:engine/network/dht/DhtNode.js","title":"network/dht/DhtNode","summary":"network/dht/DhtNode.js — a local Particle DHT node view (network plan §47, low priority/future). Combines a ProviderStore with a lightweight known- peers registry and answers FIND_PEER/FIND_ROUTE/FIND_PROVIDERS queries from LOCAL knowledge only — this phase delivers the data structures and message-handling logic; real gossip/replication across a live DHT transport is deferred (network plan §47: \"still needs bootstrap\" even once a real DHT exists — see BootstrapSource.js).","exportCount":10}
{"schemaVersion":1,"modulePath":"engine/reference/network/dht/DhtNode.md","moduleTitle":"network/dht/DhtNode","source":"engine/network/dht/DhtNode.js","import":"/engine/network/dht/DhtNode.js","sourceHash":"16338f46088164efd73f1954fd48c299833b473d61e55d31cab1c8ea6e522697","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/dht/DhtNode.js#0000:createDhtNode","exportIndex":0,"name":"createDhtNode","kind":"function","signature":"createDhtNode({ selfPeerId } = {})","summary":"Create a local DHT node view."}
{"schemaVersion":1,"modulePath":"engine/reference/network/dht/DhtNode.md","moduleTitle":"network/dht/DhtNode","source":"engine/network/dht/DhtNode.js","import":"/engine/network/dht/DhtNode.js","sourceHash":"16338f46088164efd73f1954fd48c299833b473d61e55d31cab1c8ea6e522697","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/dht/DhtNode.js#0001:rememberPeer","exportIndex":1,"name":"rememberPeer","kind":"function","signature":"rememberPeer(node, peerId, { routeHints = [], reportedBy = null, direct = false } = {}, now = Date.now()","summary":"Record/refresh knowledge of a peer (from PEER_EXCHANGE or any direct contact)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/dht/DhtNode.md","moduleTitle":"network/dht/DhtNode","source":"engine/network/dht/DhtNode.js","import":"/engine/network/dht/DhtNode.js","sourceHash":"16338f46088164efd73f1954fd48c299833b473d61e55d31cab1c8ea6e522697","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/dht/DhtNode.js#0002:handleFindPeer","exportIndex":2,"name":"handleFindPeer","kind":"function","signature":"handleFindPeer(node, targetPeerId)","summary":"Answer a local FIND_PEER query: do we know this peer, and if so, its route hints?"}
{"schemaVersion":1,"modulePath":"engine/reference/network/dht/DhtNode.md","moduleTitle":"network/dht/DhtNode","source":"engine/network/dht/DhtNode.js","import":"/engine/network/dht/DhtNode.js","sourceHash":"16338f46088164efd73f1954fd48c299833b473d61e55d31cab1c8ea6e522697","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/dht/DhtNode.js#0003:handleFindRoute","exportIndex":3,"name":"handleFindRoute","kind":"function","signature":"handleFindRoute(node, routeId, now = Date.now()","summary":"Answer a local FIND_ROUTE query: any peers providing this route?"}
{"schemaVersion":1,"modulePath":"engine/reference/network/dht/DhtNode.md","moduleTitle":"network/dht/DhtNode","source":"engine/network/dht/DhtNode.js","import":"/engine/network/dht/DhtNode.js","sourceHash":"16338f46088164efd73f1954fd48c299833b473d61e55d31cab1c8ea6e522697","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/dht/DhtNode.js#0004:handleFindProviders","exportIndex":4,"name":"handleFindProviders","kind":"function","signature":"handleFindProviders(node, key, now = Date.now()","summary":"Answer a local FIND_PROVIDERS query for an arbitrary key (chunk hash, service name, ...)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/dht/DhtNode.md","moduleTitle":"network/dht/DhtNode","source":"engine/network/dht/DhtNode.js","import":"/engine/network/dht/DhtNode.js","sourceHash":"16338f46088164efd73f1954fd48c299833b473d61e55d31cab1c8ea6e522697","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/dht/DhtNode.js#0005:handleAnnounceProvider","exportIndex":5,"name":"handleAnnounceProvider","kind":"function","signature":"handleAnnounceProvider(node, { key, peerId, ttlMs } = {}, now = Date.now()","summary":"Ingest an ANNOUNCE_PROVIDER (route or generic key -> peer)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/dht/DhtNode.md","moduleTitle":"network/dht/DhtNode","source":"engine/network/dht/DhtNode.js","import":"/engine/network/dht/DhtNode.js","sourceHash":"16338f46088164efd73f1954fd48c299833b473d61e55d31cab1c8ea6e522697","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/dht/DhtNode.js#0006:handlePeerExchange","exportIndex":6,"name":"handlePeerExchange","kind":"function","signature":"handlePeerExchange(node, knownPeers = [], now = Date.now()","summary":"Ingest a PEER_EXCHANGE payload (array of `{peerId, routeHints}`)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/dht/DhtNode.md","moduleTitle":"network/dht/DhtNode","source":"engine/network/dht/DhtNode.js","import":"/engine/network/dht/DhtNode.js","sourceHash":"16338f46088164efd73f1954fd48c299833b473d61e55d31cab1c8ea6e522697","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/dht/DhtNode.js#0007:listKnownPeers","exportIndex":7,"name":"listKnownPeers","kind":"function","signature":"listKnownPeers(node, { limit = 64 } = {})","summary":"Bounded peer summaries for authenticated PEER_EXCHANGE messages."}
{"schemaVersion":1,"modulePath":"engine/reference/network/dht/DhtNode.md","moduleTitle":"network/dht/DhtNode","source":"engine/network/dht/DhtNode.js","import":"/engine/network/dht/DhtNode.js","sourceHash":"16338f46088164efd73f1954fd48c299833b473d61e55d31cab1c8ea6e522697","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/dht/DhtNode.js#0008:providersMapForKeys","exportIndex":8,"name":"providersMapForKeys","kind":"function","signature":"providersMapForKeys(node, keys, now = Date.now()","summary":"Build the providers map SwarmScheduler.planSwarmFetch expects for a list of keys."}
{"schemaVersion":1,"modulePath":"engine/reference/network/dht/DhtNode.md","moduleTitle":"network/dht/DhtNode","source":"engine/network/dht/DhtNode.js","import":"/engine/network/dht/DhtNode.js","sourceHash":"16338f46088164efd73f1954fd48c299833b473d61e55d31cab1c8ea6e522697","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/dht/DhtNode.js#0009:pruneDhtNode","exportIndex":9,"name":"pruneDhtNode","kind":"function","signature":"pruneDhtNode(node, { peerStaleMs = 30 * 60 * 1000 } = {}, now = Date.now()","summary":"Prune expired provider records and stale peer knowledge."}
{"schemaVersion":1,"modulePath":"engine/reference/network/dht/DhtTransport.md","moduleTitle":"network/dht/DhtTransport","source":"engine/network/dht/DhtTransport.js","import":"/engine/network/dht/DhtTransport.js","sourceHash":"fee03137768ea8e62051c41512f24811d6beab845411687ae6675afb710be288","subsystem":"engine","recordType":"api-module","id":"module:engine/network/dht/DhtTransport.js","title":"network/dht/DhtTransport","summary":"network/dht/DhtTransport.js — a scoped-down real transport for DhtNode.js's FIND_PEER/FIND_ROUTE/FIND_PROVIDERS queries (network plan §47, low priority). Deliberately NOT a full Kademlia DHT (no k-buckets, no XOR distance routing, no iterative closest-node lookup) — this is a minimal query/forward/respond loop over the existing mesh:  1. A query with no local answer is gossip-flooded across the mesh via CollabMeshTopology.js's existing TTL+dedupe fanout (same mechanism CarrierRelay.js uses) — reuses its per-query fingerprint (`_gossip.fp`) as this transport's queryId, so no new id scheme or message-shape changes were needed in DhtMessages.js. 2. Every node that relays a (non-duplicate) query remembers which neighbor it heard the query from (`reversePaths`) — classic flood/reverse-path relay (the same idea AODV uses), not a gossip broadcast itself. 3. Any node with a local answer (from its own DhtNode.js knowledge) sends a direct (non-gossiped) DHT_RESPONSE back along that reverse path, one hop at a time, until it reaches the original requester.  Known MVP limitation (intentional, per the plan's \"low priority\" scope): `reversePaths` entries are not proactively pruned by this module; a real deployment would want a TTL sweep alongside `pruneDhtNode()`.","exportCount":9}
{"schemaVersion":1,"modulePath":"engine/reference/network/dht/DhtTransport.md","moduleTitle":"network/dht/DhtTransport","source":"engine/network/dht/DhtTransport.js","import":"/engine/network/dht/DhtTransport.js","sourceHash":"fee03137768ea8e62051c41512f24811d6beab845411687ae6675afb710be288","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/dht/DhtTransport.js#0000:createDhtTransport","exportIndex":0,"name":"createDhtTransport","kind":"function","signature":"createDhtTransport({ sendToPeer, topology, node, verifyControlIdentity = async ()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/dht/DhtTransport.md","moduleTitle":"network/dht/DhtTransport","source":"engine/network/dht/DhtTransport.js","import":"/engine/network/dht/DhtTransport.js","sourceHash":"fee03137768ea8e62051c41512f24811d6beab845411687ae6675afb710be288","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/dht/DhtTransport.js#0001:findPeerOverNetwork","exportIndex":1,"name":"findPeerOverNetwork","kind":"function","signature":"findPeerOverNetwork(transport, targetPeerId, { timeoutMs = DEFAULT_QUERY_TIMEOUT_MS } = {})","summary":"Query the mesh for a peer's route hints. Checks local knowledge first; only floods the network if we don't already know it."}
{"schemaVersion":1,"modulePath":"engine/reference/network/dht/DhtTransport.md","moduleTitle":"network/dht/DhtTransport","source":"engine/network/dht/DhtTransport.js","import":"/engine/network/dht/DhtTransport.js","sourceHash":"fee03137768ea8e62051c41512f24811d6beab845411687ae6675afb710be288","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/dht/DhtTransport.js#0002:findRouteOverNetwork","exportIndex":2,"name":"findRouteOverNetwork","kind":"function","signature":"findRouteOverNetwork(transport, routeId, { timeoutMs = DEFAULT_QUERY_TIMEOUT_MS } = {})","summary":"Query the mesh for a route's live providers. Checks local knowledge first."}
{"schemaVersion":1,"modulePath":"engine/reference/network/dht/DhtTransport.md","moduleTitle":"network/dht/DhtTransport","source":"engine/network/dht/DhtTransport.js","import":"/engine/network/dht/DhtTransport.js","sourceHash":"fee03137768ea8e62051c41512f24811d6beab845411687ae6675afb710be288","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/dht/DhtTransport.js#0003:findProvidersOverNetwork","exportIndex":3,"name":"findProvidersOverNetwork","kind":"function","signature":"findProvidersOverNetwork(transport, key, { timeoutMs = DEFAULT_QUERY_TIMEOUT_MS } = {})","summary":"Query the mesh for an arbitrary key's providers (chunk hash, service name, ...). Checks local knowledge first."}
{"schemaVersion":1,"modulePath":"engine/reference/network/dht/DhtTransport.md","moduleTitle":"network/dht/DhtTransport","source":"engine/network/dht/DhtTransport.js","import":"/engine/network/dht/DhtTransport.js","sourceHash":"fee03137768ea8e62051c41512f24811d6beab845411687ae6675afb710be288","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/dht/DhtTransport.js#0004:announceProviderOverNetwork","exportIndex":4,"name":"announceProviderOverNetwork","kind":"function","signature":"async announceProviderOverNetwork(transport, { key, ttlMs, signer } = {})","summary":"Authenticated, bounded provider announcement to current mesh neighbors."}
{"schemaVersion":1,"modulePath":"engine/reference/network/dht/DhtTransport.md","moduleTitle":"network/dht/DhtTransport","source":"engine/network/dht/DhtTransport.js","import":"/engine/network/dht/DhtTransport.js","sourceHash":"fee03137768ea8e62051c41512f24811d6beab845411687ae6675afb710be288","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/dht/DhtTransport.js#0005:announceRouteOverNetwork","exportIndex":5,"name":"announceRouteOverNetwork","kind":"function","signature":"async announceRouteOverNetwork(transport, { routeId, services = [], ttlMs, signer } = {})","summary":"Authenticated route announcement; services are descriptive and bounded, never ambient authority."}
{"schemaVersion":1,"modulePath":"engine/reference/network/dht/DhtTransport.md","moduleTitle":"network/dht/DhtTransport","source":"engine/network/dht/DhtTransport.js","import":"/engine/network/dht/DhtTransport.js","sourceHash":"fee03137768ea8e62051c41512f24811d6beab845411687ae6675afb710be288","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/dht/DhtTransport.js#0006:sendPeerExchangeOverNetwork","exportIndex":6,"name":"sendPeerExchangeOverNetwork","kind":"function","signature":"async sendPeerExchangeOverNetwork(transport, { peerId, signer, limit = MAX_PEER_EXCHANGE } = {})","summary":"Send a signed, bounded sample of local peer knowledge to one connected peer."}
{"schemaVersion":1,"modulePath":"engine/reference/network/dht/DhtTransport.md","moduleTitle":"network/dht/DhtTransport","source":"engine/network/dht/DhtTransport.js","import":"/engine/network/dht/DhtTransport.js","sourceHash":"fee03137768ea8e62051c41512f24811d6beab845411687ae6675afb710be288","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/dht/DhtTransport.js#0007:getDhtTransportHealth","exportIndex":7,"name":"getDhtTransportHealth","kind":"function","signature":"getDhtTransportHealth(transport)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/dht/DhtTransport.md","moduleTitle":"network/dht/DhtTransport","source":"engine/network/dht/DhtTransport.js","import":"/engine/network/dht/DhtTransport.js","sourceHash":"fee03137768ea8e62051c41512f24811d6beab845411687ae6675afb710be288","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/dht/DhtTransport.js#0008:handleDhtMessage","exportIndex":8,"name":"handleDhtMessage","kind":"function","signature":"handleDhtMessage(transport, fromPeerId, op)","summary":"Feed every relevant `onOp(peerId, op)` message through this, alongside `ChunkTransport.js`'s and `CarrierRelay.js`'s own handlers (same \"return false if not ours\" chaining pattern)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/dht/ProviderStore.md","moduleTitle":"network/dht/ProviderStore","source":"engine/network/dht/ProviderStore.js","import":"/engine/network/dht/ProviderStore.js","sourceHash":"5551f158a678b6bebf4e77d648206f7ffdc1da81b0d379411ce933370f7d1ee2","subsystem":"engine","recordType":"api-module","id":"module:engine/network/dht/ProviderStore.js","title":"network/dht/ProviderStore","summary":"network/dht/ProviderStore.js — local view of \"who provides what\" (network plan §47 DHT objects: network_id -> route providers, manifest_hash -> chunk providers, group_alias -> route hints, service_name -> providers). This is a LOCAL cache only — no network gossip/replication yet (that's the deferred real-DHT transport); it's what a future DHT node would populate from FIND_PROVIDERS/ANNOUNCE_PROVIDER traffic, and what SwarmScheduler.js (Phase 7) already consumes as its `providers` map.","exportCount":8}
{"schemaVersion":1,"modulePath":"engine/reference/network/dht/ProviderStore.md","moduleTitle":"network/dht/ProviderStore","source":"engine/network/dht/ProviderStore.js","import":"/engine/network/dht/ProviderStore.js","sourceHash":"5551f158a678b6bebf4e77d648206f7ffdc1da81b0d379411ce933370f7d1ee2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/dht/ProviderStore.js#0000:createProviderStore","exportIndex":0,"name":"createProviderStore","kind":"function","signature":"createProviderStore()","summary":"Create an empty provider store."}
{"schemaVersion":1,"modulePath":"engine/reference/network/dht/ProviderStore.md","moduleTitle":"network/dht/ProviderStore","source":"engine/network/dht/ProviderStore.js","import":"/engine/network/dht/ProviderStore.js","sourceHash":"5551f158a678b6bebf4e77d648206f7ffdc1da81b0d379411ce933370f7d1ee2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/dht/ProviderStore.js#0001:announceProvider","exportIndex":1,"name":"announceProvider","kind":"function","signature":"announceProvider(store, key, peerId, ttlMs = DEFAULT_PROVIDER_TTL_MS, now = Date.now()","summary":"Announce that `peerId` provides `key` (e.g. a manifest chunk hash, route id, service name)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/dht/ProviderStore.md","moduleTitle":"network/dht/ProviderStore","source":"engine/network/dht/ProviderStore.js","import":"/engine/network/dht/ProviderStore.js","sourceHash":"5551f158a678b6bebf4e77d648206f7ffdc1da81b0d379411ce933370f7d1ee2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/dht/ProviderStore.js#0002:revokeProvider","exportIndex":2,"name":"revokeProvider","kind":"function","signature":"revokeProvider(store, key, peerId)","summary":"Remove one provider's record for a key."}
{"schemaVersion":1,"modulePath":"engine/reference/network/dht/ProviderStore.md","moduleTitle":"network/dht/ProviderStore","source":"engine/network/dht/ProviderStore.js","import":"/engine/network/dht/ProviderStore.js","sourceHash":"5551f158a678b6bebf4e77d648206f7ffdc1da81b0d379411ce933370f7d1ee2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/dht/ProviderStore.js#0003:findProviders","exportIndex":3,"name":"findProviders","kind":"function","signature":"findProviders(store, key, now = Date.now()","summary":"Live (non-expired) provider peerIds for a key, or []."}
{"schemaVersion":1,"modulePath":"engine/reference/network/dht/ProviderStore.md","moduleTitle":"network/dht/ProviderStore","source":"engine/network/dht/ProviderStore.js","import":"/engine/network/dht/ProviderStore.js","sourceHash":"5551f158a678b6bebf4e77d648206f7ffdc1da81b0d379411ce933370f7d1ee2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/dht/ProviderStore.js#0004:providersMapFor","exportIndex":4,"name":"providersMapFor","kind":"function","signature":"providersMapFor(store, keys, now = Date.now()","summary":"Build the `Map<key, peerId[]>` shape SwarmScheduler.planSwarmFetch expects, for a set of keys."}
{"schemaVersion":1,"modulePath":"engine/reference/network/dht/ProviderStore.md","moduleTitle":"network/dht/ProviderStore","source":"engine/network/dht/ProviderStore.js","import":"/engine/network/dht/ProviderStore.js","sourceHash":"5551f158a678b6bebf4e77d648206f7ffdc1da81b0d379411ce933370f7d1ee2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/dht/ProviderStore.js#0005:pruneProviderStore","exportIndex":5,"name":"pruneProviderStore","kind":"function","signature":"pruneProviderStore(store, now = Date.now()","summary":"Remove all expired provider records. Returns the number of (key, peerId) pairs removed."}
{"schemaVersion":1,"modulePath":"engine/reference/network/dht/ProviderStore.md","moduleTitle":"network/dht/ProviderStore","source":"engine/network/dht/ProviderStore.js","import":"/engine/network/dht/ProviderStore.js","sourceHash":"5551f158a678b6bebf4e77d648206f7ffdc1da81b0d379411ce933370f7d1ee2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/dht/ProviderStore.js#0006:DEFAULT_PROVIDER_TTL_MS","exportIndex":6,"name":"DEFAULT_PROVIDER_TTL_MS","kind":"constant","signature":"DEFAULT_PROVIDER_TTL_MS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/dht/ProviderStore.md","moduleTitle":"network/dht/ProviderStore","source":"engine/network/dht/ProviderStore.js","import":"/engine/network/dht/ProviderStore.js","sourceHash":"5551f158a678b6bebf4e77d648206f7ffdc1da81b0d379411ce933370f7d1ee2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/dht/ProviderStore.js#0007:MAX_PROVIDER_TTL_MS","exportIndex":7,"name":"MAX_PROVIDER_TTL_MS","kind":"constant","signature":"MAX_PROVIDER_TTL_MS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/dht/index.md","moduleTitle":"network/dht/index","source":"engine/network/dht/index.js","import":"/engine/network/dht/index.js","sourceHash":"0c9e539397cf04e5a094244ba6d78a347026f91e7ab885cb67dae41ad8781e41","subsystem":"engine","recordType":"api-module","id":"module:engine/network/dht/index.js","title":"network/dht/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/network/endpoint/ParticleEndpointRuntime.md","moduleTitle":"network/endpoint/ParticleEndpointRuntime","source":"engine/network/endpoint/ParticleEndpointRuntime.js","import":"/engine/network/endpoint/ParticleEndpointRuntime.js","sourceHash":"6b824e893c20d9d5021bc2ccd3be932bcacb7b67de14369d801d164f4db9373f","subsystem":"engine","recordType":"api-module","id":"module:engine/network/endpoint/ParticleEndpointRuntime.js","title":"network/endpoint/ParticleEndpointRuntime","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/network/endpoint/ParticleEndpointRuntime.md","moduleTitle":"network/endpoint/ParticleEndpointRuntime","source":"engine/network/endpoint/ParticleEndpointRuntime.js","import":"/engine/network/endpoint/ParticleEndpointRuntime.js","sourceHash":"6b824e893c20d9d5021bc2ccd3be932bcacb7b67de14369d801d164f4db9373f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/endpoint/ParticleEndpointRuntime.js#0000:ParticleEndpointRuntime","exportIndex":0,"name":"ParticleEndpointRuntime","kind":"class","signature":"class ParticleEndpointRuntime","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/endpoint/ParticleEndpointRuntime.md","moduleTitle":"network/endpoint/ParticleEndpointRuntime","source":"engine/network/endpoint/ParticleEndpointRuntime.js","import":"/engine/network/endpoint/ParticleEndpointRuntime.js","sourceHash":"6b824e893c20d9d5021bc2ccd3be932bcacb7b67de14369d801d164f4db9373f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/endpoint/ParticleEndpointRuntime.js#0001:createParticleEndpointRuntime","exportIndex":1,"name":"createParticleEndpointRuntime","kind":"function","signature":"createParticleEndpointRuntime(options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/endpoint/index.md","moduleTitle":"network/endpoint/index","source":"engine/network/endpoint/index.js","import":"/engine/network/endpoint/index.js","sourceHash":"e0fb8f6a57a8561061de37529d74fae38b06efbca5a3973fe0c19ddc3cb67b8d","subsystem":"engine","recordType":"api-module","id":"module:engine/network/endpoint/index.js","title":"network/endpoint/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/network/groupCrypto/DeviceEncryptionKey.md","moduleTitle":"network/groupCrypto/DeviceEncryptionKey","source":"engine/network/groupCrypto/DeviceEncryptionKey.js","import":"/engine/network/groupCrypto/DeviceEncryptionKey.js","sourceHash":"e80089fcef723e0738b8b2766b23d3955ff4686de369f7b1f07918be46da373d","subsystem":"engine","recordType":"api-module","id":"module:engine/network/groupCrypto/DeviceEncryptionKey.js","title":"network/groupCrypto/DeviceEncryptionKey","summary":"network/groupCrypto/DeviceEncryptionKey.js — per-device ECDH encryption keypair used to receive group welcome packets (network plan §14).  This is intentionally SEPARATE from the ECDSA signing identities in engine/network/identity/NetworkIdentity.js: signing proves \"who you are\"; this key only exists so other members can encrypt an epoch key TO this specific device. Reuses engine/collab/CollabCrypto.js's ECDH P-256 primitives (the same ones used for peer-to-peer session encryption).","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/network/groupCrypto/DeviceEncryptionKey.md","moduleTitle":"network/groupCrypto/DeviceEncryptionKey","source":"engine/network/groupCrypto/DeviceEncryptionKey.js","import":"/engine/network/groupCrypto/DeviceEncryptionKey.js","sourceHash":"e80089fcef723e0738b8b2766b23d3955ff4686de369f7b1f07918be46da373d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/groupCrypto/DeviceEncryptionKey.js#0000:createDeviceEncryptionKeyPair","exportIndex":0,"name":"createDeviceEncryptionKeyPair","kind":"function","signature":"async createDeviceEncryptionKeyPair()","summary":"Generate a fresh ECDH P-256 keypair for this device to receive welcome packets. Ephemeral by design (network plan §14 \"per-device public encryption keys\") — callers that need persistence should store `publicKeyRaw`/export the private key themselves via their own storage."}
{"schemaVersion":1,"modulePath":"engine/reference/network/groupCrypto/GroupEpoch.md","moduleTitle":"network/groupCrypto/GroupEpoch","source":"engine/network/groupCrypto/GroupEpoch.js","import":"/engine/network/groupCrypto/GroupEpoch.js","sourceHash":"14c13c2a152c1024269dfd92f4b6edbfba56a7291e58bddc9e6bae4a84e1e281","subsystem":"engine","recordType":"api-module","id":"module:engine/network/groupCrypto/GroupEpoch.js","title":"network/groupCrypto/GroupEpoch","summary":"network/groupCrypto/GroupEpoch.js — MLS-inspired group encryption epochs (network plan §14 group security / §39 route+key rotation on removal).  Each group has a sequence of \"epochs\"; each epoch has its own AES-256-GCM key. Content sealed under an epoch can only be opened by holders of that epoch's key. Removing a member rotates to a fresh epoch and CRYPTO-ERASES the old one (drops the key reference) so previously-sealed content stays unreadable to anyone who only has the new epoch's key — the removed member's copy of the old epoch key becomes useless going forward, and any FUTURE content is sealed under a key they never received.  This deliberately builds directly on `engine/state/integrity/SecureCrypto.js` (raw AES-256-GCM primitives) rather than the higher-level `SecureRetentionManager` class: welcome packets need to export/re-wrap the raw epoch key material for a specific recipient's ECDH public key, and `SecureRetentionManager` does not expose its internal CryptoKey for export. The crypto-erase SEMANTICS (drop the key reference; GCM tamper detection) are identical to `SecureRetentionManager.cryptoErase()`.","exportCount":9}
{"schemaVersion":1,"modulePath":"engine/reference/network/groupCrypto/GroupEpoch.md","moduleTitle":"network/groupCrypto/GroupEpoch","source":"engine/network/groupCrypto/GroupEpoch.js","import":"/engine/network/groupCrypto/GroupEpoch.js","sourceHash":"14c13c2a152c1024269dfd92f4b6edbfba56a7291e58bddc9e6bae4a84e1e281","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/groupCrypto/GroupEpoch.js#0000:createGroupCrypto","exportIndex":0,"name":"createGroupCrypto","kind":"function","signature":"createGroupCrypto({ groupId } = {})","summary":"Create an empty group crypto state (no epochs started yet)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/groupCrypto/GroupEpoch.md","moduleTitle":"network/groupCrypto/GroupEpoch","source":"engine/network/groupCrypto/GroupEpoch.js","import":"/engine/network/groupCrypto/GroupEpoch.js","sourceHash":"14c13c2a152c1024269dfd92f4b6edbfba56a7291e58bddc9e6bae4a84e1e281","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/groupCrypto/GroupEpoch.js#0001:startEpoch","exportIndex":1,"name":"startEpoch","kind":"function","signature":"async startEpoch(gc)","summary":"Start the next epoch with a fresh AES-256-GCM key. Returns the new epoch number."}
{"schemaVersion":1,"modulePath":"engine/reference/network/groupCrypto/GroupEpoch.md","moduleTitle":"network/groupCrypto/GroupEpoch","source":"engine/network/groupCrypto/GroupEpoch.js","import":"/engine/network/groupCrypto/GroupEpoch.js","sourceHash":"14c13c2a152c1024269dfd92f4b6edbfba56a7291e58bddc9e6bae4a84e1e281","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/groupCrypto/GroupEpoch.js#0002:getCurrentEpoch","exportIndex":2,"name":"getCurrentEpoch","kind":"function","signature":"getCurrentEpoch(gc)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/groupCrypto/GroupEpoch.md","moduleTitle":"network/groupCrypto/GroupEpoch","source":"engine/network/groupCrypto/GroupEpoch.js","import":"/engine/network/groupCrypto/GroupEpoch.js","sourceHash":"14c13c2a152c1024269dfd92f4b6edbfba56a7291e58bddc9e6bae4a84e1e281","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/groupCrypto/GroupEpoch.js#0003:isEpochErased","exportIndex":3,"name":"isEpochErased","kind":"function","signature":"isEpochErased(gc, epoch)","summary":"True if `epoch` has no live key (never started here, or crypto-erased)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/groupCrypto/GroupEpoch.md","moduleTitle":"network/groupCrypto/GroupEpoch","source":"engine/network/groupCrypto/GroupEpoch.js","import":"/engine/network/groupCrypto/GroupEpoch.js","sourceHash":"14c13c2a152c1024269dfd92f4b6edbfba56a7291e58bddc9e6bae4a84e1e281","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/groupCrypto/GroupEpoch.js#0004:sealForEpoch","exportIndex":4,"name":"sealForEpoch","kind":"function","signature":"async sealForEpoch(gc, epoch, plaintext)","summary":"Seal a plaintext string under a specific epoch's key."}
{"schemaVersion":1,"modulePath":"engine/reference/network/groupCrypto/GroupEpoch.md","moduleTitle":"network/groupCrypto/GroupEpoch","source":"engine/network/groupCrypto/GroupEpoch.js","import":"/engine/network/groupCrypto/GroupEpoch.js","sourceHash":"14c13c2a152c1024269dfd92f4b6edbfba56a7291e58bddc9e6bae4a84e1e281","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/groupCrypto/GroupEpoch.js#0005:openEnvelope","exportIndex":5,"name":"openEnvelope","kind":"function","signature":"async openEnvelope(gc, envelope)","summary":"Open an envelope from `sealForEpoch`. Returns null (fails closed) if the epoch's key is missing/erased, the group id doesn't match, or the GCM authentication tag fails (tampering/wrong key)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/groupCrypto/GroupEpoch.md","moduleTitle":"network/groupCrypto/GroupEpoch","source":"engine/network/groupCrypto/GroupEpoch.js","import":"/engine/network/groupCrypto/GroupEpoch.js","sourceHash":"14c13c2a152c1024269dfd92f4b6edbfba56a7291e58bddc9e6bae4a84e1e281","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/groupCrypto/GroupEpoch.js#0006:rotateEpoch","exportIndex":6,"name":"rotateEpoch","kind":"function","signature":"async rotateEpoch(gc)","summary":"Rotate to a new epoch and crypto-erase the current one (network plan §14/§39). Removed members keep whatever they already downloaded, but cannot read anything sealed after the rotation, and (once their key reference is dropped) cannot re-derive the old epoch's key either."}
{"schemaVersion":1,"modulePath":"engine/reference/network/groupCrypto/GroupEpoch.md","moduleTitle":"network/groupCrypto/GroupEpoch","source":"engine/network/groupCrypto/GroupEpoch.js","import":"/engine/network/groupCrypto/GroupEpoch.js","sourceHash":"14c13c2a152c1024269dfd92f4b6edbfba56a7291e58bddc9e6bae4a84e1e281","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/groupCrypto/GroupEpoch.js#0007:makeWelcomePacket","exportIndex":7,"name":"makeWelcomePacket","kind":"function","signature":"async makeWelcomePacket({ gc, epoch, recipientEcdhPublicKeyRaw } = {})","summary":"Build a welcome packet: an epoch's raw key, ECDH-wrapped to one recipient's device encryption public key. Only that recipient's matching private key can unwrap it."}
{"schemaVersion":1,"modulePath":"engine/reference/network/groupCrypto/GroupEpoch.md","moduleTitle":"network/groupCrypto/GroupEpoch","source":"engine/network/groupCrypto/GroupEpoch.js","import":"/engine/network/groupCrypto/GroupEpoch.js","sourceHash":"14c13c2a152c1024269dfd92f4b6edbfba56a7291e58bddc9e6bae4a84e1e281","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/groupCrypto/GroupEpoch.js#0008:openWelcomePacket","exportIndex":8,"name":"openWelcomePacket","kind":"function","signature":"async openWelcomePacket({ gc, welcomePacket, recipientPrivateKey } = {})","summary":"Recipient side: unwrap a welcome packet with the matching device private key and import the epoch's raw key into the recipient's own GroupCrypto instance (so they can now `openEnvelope()` content sealed under it)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/groupCrypto/index.md","moduleTitle":"network/groupCrypto/index","source":"engine/network/groupCrypto/index.js","import":"/engine/network/groupCrypto/index.js","sourceHash":"894a58c42a2fe72696b1a22f454192bad0b58cd25393a111f1ba743173ac482c","subsystem":"engine","recordType":"api-module","id":"module:engine/network/groupCrypto/index.js","title":"network/groupCrypto/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/network/groupLedger/GovernancePolicy.md","moduleTitle":"network/groupLedger/GovernancePolicy","source":"engine/network/groupLedger/GovernancePolicy.js","import":"/engine/network/groupLedger/GovernancePolicy.js","sourceHash":"0e2320f1ae76ab2b9c350a7f6610967b7d82d06c2733468aa54de668c3d9b29c","subsystem":"engine","recordType":"api-module","id":"module:engine/network/groupLedger/GovernancePolicy.js","title":"network/groupLedger/GovernancePolicy","summary":"network/groupLedger/GovernancePolicy.js — group governance modes on top of the CSE PolicyEngine (network plan §16 \"adminless and moderatorless groups\"): unanimous / majority / threshold / founder-protected / open-capability. This module decides WHETHER a given vote/approval set is enough for a governance action to commit; GroupLedger.js decides WHAT happens once it does.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/network/groupLedger/GovernancePolicy.md","moduleTitle":"network/groupLedger/GovernancePolicy","source":"engine/network/groupLedger/GovernancePolicy.js","import":"/engine/network/groupLedger/GovernancePolicy.js","sourceHash":"0e2320f1ae76ab2b9c350a7f6610967b7d82d06c2733468aa54de668c3d9b29c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/groupLedger/GovernancePolicy.js#0000:createGovernancePolicy","exportIndex":0,"name":"createGovernancePolicy","kind":"function","signature":"createGovernancePolicy({ mode = GOVERNANCE_MODES.MAJORITY, founders = ()","summary":"Build a governance policy for a group."}
{"schemaVersion":1,"modulePath":"engine/reference/network/groupLedger/GovernancePolicy.md","moduleTitle":"network/groupLedger/GovernancePolicy","source":"engine/network/groupLedger/GovernancePolicy.js","import":"/engine/network/groupLedger/GovernancePolicy.js","sourceHash":"0e2320f1ae76ab2b9c350a7f6610967b7d82d06c2733468aa54de668c3d9b29c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/groupLedger/GovernancePolicy.js#0001:GOVERNANCE_MODES","exportIndex":1,"name":"GOVERNANCE_MODES","kind":"constant","signature":"GOVERNANCE_MODES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/groupLedger/GovernancePolicy.md","moduleTitle":"network/groupLedger/GovernancePolicy","source":"engine/network/groupLedger/GovernancePolicy.js","import":"/engine/network/groupLedger/GovernancePolicy.js","sourceHash":"0e2320f1ae76ab2b9c350a7f6610967b7d82d06c2733468aa54de668c3d9b29c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/groupLedger/GovernancePolicy.js#0002:IRREVERSIBLE_ACTIONS","exportIndex":2,"name":"IRREVERSIBLE_ACTIONS","kind":"constant","signature":"IRREVERSIBLE_ACTIONS","summary":"Governance actions that always require approval (network plan §17 eviction/bans)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/groupLedger/GroupLedger.md","moduleTitle":"network/groupLedger/GroupLedger","source":"engine/network/groupLedger/GroupLedger.js","import":"/engine/network/groupLedger/GroupLedger.js","sourceHash":"506884f7c41002f38d87ee75839dac5c3f8ab8c0d64c748338e509cd0ee1f24f","subsystem":"engine","recordType":"api-module","id":"module:engine/network/groupLedger/GroupLedger.js","title":"network/groupLedger/GroupLedger","summary":"network/groupLedger/GroupLedger.js — private append-only group governance ledger (network plan §15/§16/§17).  Reuses the Causal State Engine's `EventLog` (hash-chained append-only log, spec §13) and `CapabilityRegistry` as-is; governance approval decisions go through `GovernancePolicy.js` (PolicyEngine). Every event is a signed protocol envelope (protocol.js `particle-group-ledger/1`), so the ledger itself is a plain array of verifiable receipts — a group's current state is always the result of replaying it, never a separate source of truth.  `EventLog` is in-memory only; callers are responsible for persisting `ledger.eventLog.entries()` (e.g. via webgpu-os/storage/AppSandbox on the OS side) and rehydrating with `replayGroupLedger()` — this module does not import any OS/storage code, keeping the engine layer storage-agnostic.","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/network/groupLedger/GroupLedger.md","moduleTitle":"network/groupLedger/GroupLedger","source":"engine/network/groupLedger/GroupLedger.js","import":"/engine/network/groupLedger/GroupLedger.js","sourceHash":"506884f7c41002f38d87ee75839dac5c3f8ab8c0d64c748338e509cd0ee1f24f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/groupLedger/GroupLedger.js#0000:createGroupLedger","exportIndex":0,"name":"createGroupLedger","kind":"function","signature":"createGroupLedger({ groupId, founders = [], mode = GOVERNANCE_MODES.MAJORITY, threshold = null } = {})","summary":"Create a new (empty, ungenesised) group ledger."}
{"schemaVersion":1,"modulePath":"engine/reference/network/groupLedger/GroupLedger.md","moduleTitle":"network/groupLedger/GroupLedger","source":"engine/network/groupLedger/GroupLedger.js","import":"/engine/network/groupLedger/GroupLedger.js","sourceHash":"506884f7c41002f38d87ee75839dac5c3f8ab8c0d64c748338e509cd0ee1f24f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/groupLedger/GroupLedger.js#0001:genesisGroup","exportIndex":1,"name":"genesisGroup","kind":"function","signature":"async genesisGroup(ledger, { founderSigner, constitution = {} } = {})","summary":"Append the GROUP_GENESIS event and register the signing founder as the first member."}
{"schemaVersion":1,"modulePath":"engine/reference/network/groupLedger/GroupLedger.md","moduleTitle":"network/groupLedger/GroupLedger","source":"engine/network/groupLedger/GroupLedger.js","import":"/engine/network/groupLedger/GroupLedger.js","sourceHash":"506884f7c41002f38d87ee75839dac5c3f8ab8c0d64c748338e509cd0ee1f24f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/groupLedger/GroupLedger.js#0002:castVote","exportIndex":2,"name":"castVote","kind":"function","signature":"castVote(ledger, proposalId, voterMembershipId)","summary":"Cast a vote toward approving a pending proposal (network plan §17 eviction flow)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/groupLedger/GroupLedger.md","moduleTitle":"network/groupLedger/GroupLedger","source":"engine/network/groupLedger/GroupLedger.js","import":"/engine/network/groupLedger/GroupLedger.js","sourceHash":"506884f7c41002f38d87ee75839dac5c3f8ab8c0d64c748338e509cd0ee1f24f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/groupLedger/GroupLedger.js#0003:getVotes","exportIndex":3,"name":"getVotes","kind":"function","signature":"getVotes(ledger, proposalId)","summary":"Current vote set for a pending proposal (read-only copy)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/groupLedger/GroupLedger.md","moduleTitle":"network/groupLedger/GroupLedger","source":"engine/network/groupLedger/GroupLedger.js","import":"/engine/network/groupLedger/GroupLedger.js","sourceHash":"506884f7c41002f38d87ee75839dac5c3f8ab8c0d64c748338e509cd0ee1f24f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/groupLedger/GroupLedger.js#0004:proposeGroupEvent","exportIndex":4,"name":"proposeGroupEvent","kind":"function","signature":"async proposeGroupEvent(ledger, { type, payload = {}, signer, proposalId = null } = {})","summary":"Propose (and, if the governance policy allows, immediately commit) a governance event. Safe/low-risk actions commit right away; irreversible actions (MEMBER_REVOKED/MEMBER_BANNED/KEY_ROTATED/ROLE_CHANGED) require enough prior `castVote()` calls under the same `proposalId` first."}
{"schemaVersion":1,"modulePath":"engine/reference/network/groupLedger/GroupLedger.md","moduleTitle":"network/groupLedger/GroupLedger","source":"engine/network/groupLedger/GroupLedger.js","import":"/engine/network/groupLedger/GroupLedger.js","sourceHash":"506884f7c41002f38d87ee75839dac5c3f8ab8c0d64c748338e509cd0ee1f24f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/groupLedger/GroupLedger.js#0005:verifyGroupLedger","exportIndex":5,"name":"verifyGroupLedger","kind":"function","signature":"verifyGroupLedger(ledger)","summary":"True if the ledger's hash chain is intact end-to-end (tamper check)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/groupLedger/GroupLedger.md","moduleTitle":"network/groupLedger/GroupLedger","source":"engine/network/groupLedger/GroupLedger.js","import":"/engine/network/groupLedger/GroupLedger.js","sourceHash":"506884f7c41002f38d87ee75839dac5c3f8ab8c0d64c748338e509cd0ee1f24f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/groupLedger/GroupLedger.js#0006:replayGroupLedger","exportIndex":6,"name":"replayGroupLedger","kind":"function","signature":"replayGroupLedger({ groupId, founders = [], mode = GOVERNANCE_MODES.MAJORITY, threshold = null, entries = [] } = {})","summary":"Rebuild a live ledger from previously-persisted `ledger.eventLog.entries()` (network plan §15 persistence gap — see this file's header comment; OS-side storage, e.g. webgpu-os/storage/AppSandbox, is the caller's job, not this module's). Replays each entry through `EventLog.append()` (recomputing the exact same hash chain deterministically) and re-derives `members`/ `founders` via the same side-effect rules `genesisGroup`/`proposeGroupEvent` apply live, so a rehydrated ledger behaves identically to one built by replaying the same operations in real time — with one honest limitation: `EventLog` entries carry no wall-clock timestamp, and a `GROUP_GENESIS` envelope only embeds the ONE signer's public key, so a `members` entry reconstructed from genesis (unlike a later `MEMBER_ADDED`, whose payload carries full details) will have `joinedAt: null` and, for any co-founder who isn't the genesis envelope's own signer, `publicKeyHex: null`. This does NOT weaken governance security — founder-protected mode checks `ledger.founders` (a Set of principals, fully and exactly restored from the genesis payload), not the `members` map."}
{"schemaVersion":1,"modulePath":"engine/reference/network/groupLedger/index.md","moduleTitle":"network/groupLedger/index","source":"engine/network/groupLedger/index.js","import":"/engine/network/groupLedger/index.js","sourceHash":"3c9e0f61a3df1dbe9597f5585fe106cf494423b2f50f4f9d1ad25ebfbf1cf157","subsystem":"engine","recordType":"api-module","id":"module:engine/network/groupLedger/index.js","title":"network/groupLedger/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/network/identity/NetworkIdentity.md","moduleTitle":"network/identity/NetworkIdentity","source":"engine/network/identity/NetworkIdentity.js","import":"/engine/network/identity/NetworkIdentity.js","sourceHash":"1a0bfef049ab519cbd16a269db2f5fbd78150ee1bb8798f8a194b138c22d5896","subsystem":"engine","recordType":"api-module","id":"module:engine/network/identity/NetworkIdentity.js","title":"network/identity/NetworkIdentity","summary":"network/identity/NetworkIdentity.js — profile/device/membership identity layer for the Particle Global OS Network Layer (network plan §11).  The network plan keeps several identity levels distinct: profile_id      stable user identity, portable across devices/groups device_id       per-device identity used for route/session proofs membership_id   per-group pseudonymous identity (unlinkable across groups)  engine/state/authority/Identity.js already wraps CollabIdentity (ECDSA P-256) as a generic `createSigner(principal)`, and now mints a SEPARATE persisted keypair per distinct principal string (Phase 0 audit finding — no new crypto, just named keys). This module is a thin, semantically-named layer on top of that: each helper below is just `createSigner()` with a principal string that encodes the identity level.","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/network/identity/NetworkIdentity.md","moduleTitle":"network/identity/NetworkIdentity","source":"engine/network/identity/NetworkIdentity.js","import":"/engine/network/identity/NetworkIdentity.js","sourceHash":"1a0bfef049ab519cbd16a269db2f5fbd78150ee1bb8798f8a194b138c22d5896","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/identity/NetworkIdentity.js#0000:bindProfileIdentityProvider","exportIndex":0,"name":"bindProfileIdentityProvider","kind":"function","signature":"bindProfileIdentityProvider(provider)","summary":"Bind the OS ProfileDriver as the canonical profile/Passport identity owner. The engine retains its named-key fallback for standalone demos and tests, but an initialized OS always resolves the active profile through this provider."}
{"schemaVersion":1,"modulePath":"engine/reference/network/identity/NetworkIdentity.md","moduleTitle":"network/identity/NetworkIdentity","source":"engine/network/identity/NetworkIdentity.js","import":"/engine/network/identity/NetworkIdentity.js","sourceHash":"1a0bfef049ab519cbd16a269db2f5fbd78150ee1bb8798f8a194b138c22d5896","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/identity/NetworkIdentity.js#0001:createDeviceIdentity","exportIndex":1,"name":"createDeviceIdentity","kind":"function","signature":"async createDeviceIdentity()","summary":"This device's per-device signer — used for low-level route/session proofs with a Masterserver (HELLO/PROVE). Never used as group identity."}
{"schemaVersion":1,"modulePath":"engine/reference/network/identity/NetworkIdentity.md","moduleTitle":"network/identity/NetworkIdentity","source":"engine/network/identity/NetworkIdentity.js","import":"/engine/network/identity/NetworkIdentity.js","sourceHash":"1a0bfef049ab519cbd16a269db2f5fbd78150ee1bb8798f8a194b138c22d5896","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/identity/NetworkIdentity.js#0002:createProfileIdentity","exportIndex":2,"name":"createProfileIdentity","kind":"function","signature":"async createProfileIdentity(profileId = 'default')","summary":"This user's stable profile signer. One profile per logical user on this device (multiple profiles are supported by passing distinct `profileId`s, e.g. for multi-account testing) — each gets its own persisted keypair."}
{"schemaVersion":1,"modulePath":"engine/reference/network/identity/NetworkIdentity.md","moduleTitle":"network/identity/NetworkIdentity","source":"engine/network/identity/NetworkIdentity.js","import":"/engine/network/identity/NetworkIdentity.js","sourceHash":"1a0bfef049ab519cbd16a269db2f5fbd78150ee1bb8798f8a194b138c22d5896","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/identity/NetworkIdentity.js#0003:createMembershipIdentity","exportIndex":3,"name":"createMembershipIdentity","kind":"function","signature":"async createMembershipIdentity(profileId, groupId)","summary":"A per-group pseudonymous membership signer for a profile. Distinct keypair per (profileId, groupId) pair, so a member's participation in one group cannot be linked to their participation in another, or to their underlying profile, by key alone."}
{"schemaVersion":1,"modulePath":"engine/reference/network/identity/NetworkIdentity.md","moduleTitle":"network/identity/NetworkIdentity","source":"engine/network/identity/NetworkIdentity.js","import":"/engine/network/identity/NetworkIdentity.js","sourceHash":"1a0bfef049ab519cbd16a269db2f5fbd78150ee1bb8798f8a194b138c22d5896","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/identity/NetworkIdentity.js#0004:peerIdFromSigner","exportIndex":4,"name":"peerIdFromSigner","kind":"function","signature":"peerIdFromSigner(signer)","summary":"Derive a stable \"peer id\" string for use in route tables / mesh topology from any signer's fingerprint (device, profile, or membership signer)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/identity/NetworkIdentity.md","moduleTitle":"network/identity/NetworkIdentity","source":"engine/network/identity/NetworkIdentity.js","import":"/engine/network/identity/NetworkIdentity.js","sourceHash":"1a0bfef049ab519cbd16a269db2f5fbd78150ee1bb8798f8a194b138c22d5896","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/identity/NetworkIdentity.js#0005:computeFingerprint","exportIndex":5,"name":"computeFingerprint","kind":"constant","signature":"computeFingerprint","summary":"Full SHA-256 public-key fingerprint used by Realm Network identities."}
{"schemaVersion":1,"modulePath":"engine/reference/network/identity/NetworkIdentity.md","moduleTitle":"network/identity/NetworkIdentity","source":"engine/network/identity/NetworkIdentity.js","import":"/engine/network/identity/NetworkIdentity.js","sourceHash":"1a0bfef049ab519cbd16a269db2f5fbd78150ee1bb8798f8a194b138c22d5896","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/identity/NetworkIdentity.js#0006:verifyWithKey","exportIndex":6,"name":"verifyWithKey","kind":"re-export","signature":"verifyWithKey","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/index.md","moduleTitle":"network/index","source":"engine/network/index.js","import":"/engine/network/index.js","sourceHash":"c3ffbc353727cf9138a2147cf2f27474eb9e168ed358bdcb53b64f7eb34be6ad","subsystem":"engine","recordType":"api-module","id":"module:engine/network/index.js","title":"network/index","summary":"network/index.js — public barrel for the Particle Global OS Network Layer.  See C:\\Users\\btspa\\.windsurf\\plans\\particle-network-layer-2bf6f0.md for the full plan. Phase 1 (protocol foundation): versioned envelopes, canonical signing, and profile/device/membership identity + route capabilities on top of the existing engine/collab (P2P) and engine/state (CSE) modules.  Build status: [x] Phase 0 audit  [x] Phase 1 protocol foundation [x] Phase 2 dynamic routes + master server list [x] Phase 2b live Masterserver signaling client (transport/MasterServerClient.js) [x] Phase 3 invites & trust groups   [x] Phase 4 group crypto [x] Phase 5 peer tickets  [x] Phase 6 sync manager/workstations, now WIRED to live transport (syncManager/SyncTransport.js broadcasts/merges workstation CRDT ops over an attached route's MasterServerClient.signal(), gated by SyncManager.shouldSync()) — demoed live in factory/apps/network-manager's Routes tab [x] Phase 7 chunks  [x] Phase 8 carrier layer  [x] Phase 9 DHT-lite (future/low-priority scope), with a concrete BootstrapSource adapter for the browser extension's resident cert vault at webgpu-os/drivers/ResidentBootstrapSource.js (OS-layer glue, per this module's no-webgpu-os-dependency rule — read-only, honestly scoped to \"remembered identity\", not live background reachability)","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/network/invites/InvitePacket.md","moduleTitle":"network/invites/InvitePacket","source":"engine/network/invites/InvitePacket.js","import":"/engine/network/invites/InvitePacket.js","sourceHash":"d63f4b877b8f58a1c6048184053d677e8804a7c0196a8a4dbb5359062610ec86","subsystem":"engine","recordType":"api-module","id":"module:engine/network/invites/InvitePacket.js","title":"network/invites/InvitePacket","summary":"network/invites/InvitePacket.js — signed, one-time, expiring invites (network plan §13).  An invite is a doorway into a group's approval process, NOT automatic membership: it just names a temporary meeting route and a role offer, and is signed by the inviter so anyone can verify who issued it. It does not itself grant route/group access — that capability is minted only after the join-request identity exchange (see JoinFlow.js), once the joiner's real principal is known. \"Base64 is not security\" (network plan §13) — the encode/decode here is just a convenient transport, the actual guarantee is the ECDSA signature over the canonical envelope (protocol.js).","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/network/invites/InvitePacket.md","moduleTitle":"network/invites/InvitePacket","source":"engine/network/invites/InvitePacket.js","import":"/engine/network/invites/InvitePacket.js","sourceHash":"d63f4b877b8f58a1c6048184053d677e8804a7c0196a8a4dbb5359062610ec86","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/invites/InvitePacket.js#0000:makeInvite","exportIndex":0,"name":"makeInvite","kind":"function","signature":"async makeInvite({ groupId, routeId, roleOffer = 'member', oneTime = true, expiresAt = null, inviterSigner, } = {})","summary":"Build + sign an invite packet."}
{"schemaVersion":1,"modulePath":"engine/reference/network/invites/InvitePacket.md","moduleTitle":"network/invites/InvitePacket","source":"engine/network/invites/InvitePacket.js","import":"/engine/network/invites/InvitePacket.js","sourceHash":"d63f4b877b8f58a1c6048184053d677e8804a7c0196a8a4dbb5359062610ec86","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/invites/InvitePacket.js#0001:encodeInvite","exportIndex":1,"name":"encodeInvite","kind":"function","signature":"encodeInvite(signedInvite)","summary":"URL-safe base64 encoding of a signed invite envelope, for sharing as a code/link."}
{"schemaVersion":1,"modulePath":"engine/reference/network/invites/InvitePacket.md","moduleTitle":"network/invites/InvitePacket","source":"engine/network/invites/InvitePacket.js","import":"/engine/network/invites/InvitePacket.js","sourceHash":"d63f4b877b8f58a1c6048184053d677e8804a7c0196a8a4dbb5359062610ec86","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/invites/InvitePacket.js#0002:decodeInvite","exportIndex":2,"name":"decodeInvite","kind":"function","signature":"decodeInvite(inviteCode)","summary":"Decode an invite code back into its (still-UNVERIFIED) signed envelope."}
{"schemaVersion":1,"modulePath":"engine/reference/network/invites/InvitePacket.md","moduleTitle":"network/invites/InvitePacket","source":"engine/network/invites/InvitePacket.js","import":"/engine/network/invites/InvitePacket.js","sourceHash":"d63f4b877b8f58a1c6048184053d677e8804a7c0196a8a4dbb5359062610ec86","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/invites/InvitePacket.js#0003:verifyInvite","exportIndex":3,"name":"verifyInvite","kind":"function","signature":"async verifyInvite(signedInvite, { now = Date.now()","summary":"Verify a decoded invite: known protocol/type, not expired, and the signature actually matches the embedded inviter public key."}
{"schemaVersion":1,"modulePath":"engine/reference/network/invites/InvitePacket.md","moduleTitle":"network/invites/InvitePacket","source":"engine/network/invites/InvitePacket.js","import":"/engine/network/invites/InvitePacket.js","sourceHash":"d63f4b877b8f58a1c6048184053d677e8804a7c0196a8a4dbb5359062610ec86","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/invites/InvitePacket.js#0004:createInviteRegistry","exportIndex":4,"name":"createInviteRegistry","kind":"function","signature":"createInviteRegistry()","summary":"Create a registry to track which one-time invites have already been used."}
{"schemaVersion":1,"modulePath":"engine/reference/network/invites/InvitePacket.md","moduleTitle":"network/invites/InvitePacket","source":"engine/network/invites/InvitePacket.js","import":"/engine/network/invites/InvitePacket.js","sourceHash":"d63f4b877b8f58a1c6048184053d677e8804a7c0196a8a4dbb5359062610ec86","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/invites/InvitePacket.js#0005:isInviteConsumed","exportIndex":5,"name":"isInviteConsumed","kind":"function","signature":"isInviteConsumed(registry, inviteId)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/invites/InvitePacket.md","moduleTitle":"network/invites/InvitePacket","source":"engine/network/invites/InvitePacket.js","import":"/engine/network/invites/InvitePacket.js","sourceHash":"d63f4b877b8f58a1c6048184053d677e8804a7c0196a8a4dbb5359062610ec86","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/invites/InvitePacket.js#0006:consumeInvite","exportIndex":6,"name":"consumeInvite","kind":"function","signature":"consumeInvite(registry, inviteId)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/invites/JoinFlow.md","moduleTitle":"network/invites/JoinFlow","source":"engine/network/invites/JoinFlow.js","import":"/engine/network/invites/JoinFlow.js","sourceHash":"83362c93f6fdb4a91dbf9081bc8aeca708f8bcee5af0b053ae368af873ff9448","subsystem":"engine","recordType":"api-module","id":"module:engine/network/invites/JoinFlow.js","title":"network/invites/JoinFlow","summary":"network/invites/JoinFlow.js — invite -> temp route -> mutual identity proof exchange -> group policy check (network plan §13 invite pipeline).  This module only establishes \"this join request is a genuine, signed response to a live, unconsumed invite\" — it does NOT decide group policy (vote thresholds, founder approval, etc). That decision belongs to GroupLedger.proposeGroupEvent('MEMBER_ADDED', ...); once that commits, call grantJoinCapability() to actually let the new member attach to the group's real route.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/network/invites/JoinFlow.md","moduleTitle":"network/invites/JoinFlow","source":"engine/network/invites/JoinFlow.js","import":"/engine/network/invites/JoinFlow.js","sourceHash":"83362c93f6fdb4a91dbf9081bc8aeca708f8bcee5af0b053ae368af873ff9448","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/invites/JoinFlow.js#0000:requestJoin","exportIndex":0,"name":"requestJoin","kind":"function","signature":"async requestJoin({ signedInvite, joinerSigner } = {})","summary":"Joiner side: build a signed join request referencing a (decoded) invite."}
{"schemaVersion":1,"modulePath":"engine/reference/network/invites/JoinFlow.md","moduleTitle":"network/invites/JoinFlow","source":"engine/network/invites/JoinFlow.js","import":"/engine/network/invites/JoinFlow.js","sourceHash":"83362c93f6fdb4a91dbf9081bc8aeca708f8bcee5af0b053ae368af873ff9448","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/invites/JoinFlow.js#0001:verifyJoinRequest","exportIndex":1,"name":"verifyJoinRequest","kind":"function","signature":"async verifyJoinRequest({ signedInvite, joinRequest, inviteRegistry = null, now = Date.now()","summary":"Inviter/group side: validate an invite together with a join request responding to it."}
{"schemaVersion":1,"modulePath":"engine/reference/network/invites/JoinFlow.md","moduleTitle":"network/invites/JoinFlow","source":"engine/network/invites/JoinFlow.js","import":"/engine/network/invites/JoinFlow.js","sourceHash":"83362c93f6fdb4a91dbf9081bc8aeca708f8bcee5af0b053ae368af873ff9448","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/invites/JoinFlow.js#0002:grantJoinCapability","exportIndex":2,"name":"grantJoinCapability","kind":"function","signature":"grantJoinCapability({ signedInvite, joinerPrincipal, groupRouteId, inviteRegistry = null, allow = [ROUTE_ACTIONS.ATTACH, ROUTE_ACTIONS.SUBSCRIBE, ROUTE_ACTIONS.PUBLISH], } = {})","summary":"After the group has approved the join (GroupLedger MEMBER_ADDED commit), mint the new member's first route capability for the group's real route and consume the invite if it was one-time."}
{"schemaVersion":1,"modulePath":"engine/reference/network/invites/index.md","moduleTitle":"network/invites/index","source":"engine/network/invites/index.js","import":"/engine/network/invites/index.js","sourceHash":"ab4628d0794e7dbc76b06278ce60f378d81c2957b65d7a7529e0cc6756092903","subsystem":"engine","recordType":"api-module","id":"module:engine/network/invites/index.js","title":"network/invites/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/network/peerTickets/PeerTicket.md","moduleTitle":"network/peerTickets/PeerTicket","source":"engine/network/peerTickets/PeerTicket.js","import":"/engine/network/peerTickets/PeerTicket.js","sourceHash":"9fd9e5475a1a060ed3604b1234f29f4e97a01920df81ba4b67a580f76472476e","subsystem":"engine","recordType":"api-module","id":"module:engine/network/peerTickets/PeerTicket.js","title":"network/peerTickets/PeerTicket","summary":"network/peerTickets/PeerTicket.js — encrypted, remembered reconnect records (network plan §38).  A peer ticket is a signed statement \"peerId X is reachable, offers these services, at these route hints, valid until Y\" — it lets a device reconnect to known peers/groups without the discovery server, once trust has already been established once. Sealing (encrypting the ticket itself) reuses the same ECDH-wrap pattern as group welcome packets (engine/network/groupCrypto/GroupEpoch.js), OR a group's current encryption epoch directly, per network plan §38 \"encrypt to recipient device key OR group epoch key\".","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/network/peerTickets/PeerTicket.md","moduleTitle":"network/peerTickets/PeerTicket","source":"engine/network/peerTickets/PeerTicket.js","import":"/engine/network/peerTickets/PeerTicket.js","sourceHash":"9fd9e5475a1a060ed3604b1234f29f4e97a01920df81ba4b67a580f76472476e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/peerTickets/PeerTicket.js#0000:makePeerTicket","exportIndex":0,"name":"makePeerTicket","kind":"function","signature":"async makePeerTicket({ peerId, deviceId = null, profileId = null, groupId = null, services = [], routeHints = [], expiresAt = null, routeEpoch = null, encryptionEpoch = null, issuerSigner, } = {})","summary":"Build + sign a peer ticket."}
{"schemaVersion":1,"modulePath":"engine/reference/network/peerTickets/PeerTicket.md","moduleTitle":"network/peerTickets/PeerTicket","source":"engine/network/peerTickets/PeerTicket.js","import":"/engine/network/peerTickets/PeerTicket.js","sourceHash":"9fd9e5475a1a060ed3604b1234f29f4e97a01920df81ba4b67a580f76472476e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/peerTickets/PeerTicket.js#0001:verifyPeerTicket","exportIndex":1,"name":"verifyPeerTicket","kind":"function","signature":"async verifyPeerTicket(signedTicket, { now = Date.now()","summary":"Verify a peer ticket: known protocol/type, not expired, signature valid."}
{"schemaVersion":1,"modulePath":"engine/reference/network/peerTickets/PeerTicket.md","moduleTitle":"network/peerTickets/PeerTicket","source":"engine/network/peerTickets/PeerTicket.js","import":"/engine/network/peerTickets/PeerTicket.js","sourceHash":"9fd9e5475a1a060ed3604b1234f29f4e97a01920df81ba4b67a580f76472476e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/peerTickets/PeerTicket.js#0002:sealPeerTicketToDevice","exportIndex":2,"name":"sealPeerTicketToDevice","kind":"function","signature":"async sealPeerTicketToDevice(signedTicket, recipientEcdhPublicKeyRaw)","summary":"ECDH-wrap a signed ticket so only the holder of `recipientEcdhPublicKeyRaw`'s private key can read it."}
{"schemaVersion":1,"modulePath":"engine/reference/network/peerTickets/PeerTicket.md","moduleTitle":"network/peerTickets/PeerTicket","source":"engine/network/peerTickets/PeerTicket.js","import":"/engine/network/peerTickets/PeerTicket.js","sourceHash":"9fd9e5475a1a060ed3604b1234f29f4e97a01920df81ba4b67a580f76472476e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/peerTickets/PeerTicket.js#0003:openSealedPeerTicket","exportIndex":3,"name":"openSealedPeerTicket","kind":"function","signature":"async openSealedPeerTicket(sealed, recipientPrivateKey)","summary":"Recipient side: unwrap a device-sealed ticket. Returns null (fails closed) on any error."}
{"schemaVersion":1,"modulePath":"engine/reference/network/peerTickets/PeerTicket.md","moduleTitle":"network/peerTickets/PeerTicket","source":"engine/network/peerTickets/PeerTicket.js","import":"/engine/network/peerTickets/PeerTicket.js","sourceHash":"9fd9e5475a1a060ed3604b1234f29f4e97a01920df81ba4b67a580f76472476e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/peerTickets/PeerTicket.js#0004:sealPeerTicketToEpoch","exportIndex":4,"name":"sealPeerTicketToEpoch","kind":"function","signature":"async sealPeerTicketToEpoch(groupCrypto, epoch, signedTicket)","summary":"Seal a ticket under a group encryption epoch (readable by any member with that epoch's key)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/peerTickets/PeerTicket.md","moduleTitle":"network/peerTickets/PeerTicket","source":"engine/network/peerTickets/PeerTicket.js","import":"/engine/network/peerTickets/PeerTicket.js","sourceHash":"9fd9e5475a1a060ed3604b1234f29f4e97a01920df81ba4b67a580f76472476e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/peerTickets/PeerTicket.js#0005:openSealedPeerTicketFromEpoch","exportIndex":5,"name":"openSealedPeerTicketFromEpoch","kind":"function","signature":"async openSealedPeerTicketFromEpoch(groupCrypto, envelope)","summary":"Open an epoch-sealed ticket. Returns null if the epoch key is missing/erased or tampered."}
{"schemaVersion":1,"modulePath":"engine/reference/network/peerTickets/PeerTicketStore.md","moduleTitle":"network/peerTickets/PeerTicketStore","source":"engine/network/peerTickets/PeerTicketStore.js","import":"/engine/network/peerTickets/PeerTicketStore.js","sourceHash":"38742cd36290902ebe28fe2e0b5875b8634d9d9df78f79f02f9727403b006d6c","subsystem":"engine","recordType":"api-module","id":"module:engine/network/peerTickets/PeerTicketStore.js","title":"network/peerTickets/PeerTicketStore","summary":"network/peerTickets/PeerTicketStore.js — local reconnect memory (network plan §38). In-memory only; callers persist via their own storage (e.g. webgpu-os/storage/AppSandbox) and rehydrate with addPeerTicket() on boot — engine/network stays storage-agnostic (see GroupLedger.js for the same pattern).","exportCount":8}
{"schemaVersion":1,"modulePath":"engine/reference/network/peerTickets/PeerTicketStore.md","moduleTitle":"network/peerTickets/PeerTicketStore","source":"engine/network/peerTickets/PeerTicketStore.js","import":"/engine/network/peerTickets/PeerTicketStore.js","sourceHash":"38742cd36290902ebe28fe2e0b5875b8634d9d9df78f79f02f9727403b006d6c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/peerTickets/PeerTicketStore.js#0000:createPeerTicketStore","exportIndex":0,"name":"createPeerTicketStore","kind":"function","signature":"createPeerTicketStore()","summary":"Create an empty peer ticket store."}
{"schemaVersion":1,"modulePath":"engine/reference/network/peerTickets/PeerTicketStore.md","moduleTitle":"network/peerTickets/PeerTicketStore","source":"engine/network/peerTickets/PeerTicketStore.js","import":"/engine/network/peerTickets/PeerTicketStore.js","sourceHash":"38742cd36290902ebe28fe2e0b5875b8634d9d9df78f79f02f9727403b006d6c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/peerTickets/PeerTicketStore.js#0001:addPeerTicket","exportIndex":1,"name":"addPeerTicket","kind":"function","signature":"addPeerTicket(store, signedTicket)","summary":"Remember a (already verified) peer ticket, keyed by its peerId. Overwrites any older ticket for the same peer."}
{"schemaVersion":1,"modulePath":"engine/reference/network/peerTickets/PeerTicketStore.md","moduleTitle":"network/peerTickets/PeerTicketStore","source":"engine/network/peerTickets/PeerTicketStore.js","import":"/engine/network/peerTickets/PeerTicketStore.js","sourceHash":"38742cd36290902ebe28fe2e0b5875b8634d9d9df78f79f02f9727403b006d6c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/peerTickets/PeerTicketStore.js#0002:getPeerTicket","exportIndex":2,"name":"getPeerTicket","kind":"function","signature":"getPeerTicket(store, peerId)","summary":"Look up the remembered ticket for a peer, or null."}
{"schemaVersion":1,"modulePath":"engine/reference/network/peerTickets/PeerTicketStore.md","moduleTitle":"network/peerTickets/PeerTicketStore","source":"engine/network/peerTickets/PeerTicketStore.js","import":"/engine/network/peerTickets/PeerTicketStore.js","sourceHash":"38742cd36290902ebe28fe2e0b5875b8634d9d9df78f79f02f9727403b006d6c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/peerTickets/PeerTicketStore.js#0003:removePeerTicket","exportIndex":3,"name":"removePeerTicket","kind":"function","signature":"removePeerTicket(store, peerId)","summary":"Forget a peer's ticket. Returns true if one existed."}
{"schemaVersion":1,"modulePath":"engine/reference/network/peerTickets/PeerTicketStore.md","moduleTitle":"network/peerTickets/PeerTicketStore","source":"engine/network/peerTickets/PeerTicketStore.js","import":"/engine/network/peerTickets/PeerTicketStore.js","sourceHash":"38742cd36290902ebe28fe2e0b5875b8634d9d9df78f79f02f9727403b006d6c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/peerTickets/PeerTicketStore.js#0004:pruneExpiredPeerTickets","exportIndex":4,"name":"pruneExpiredPeerTickets","kind":"function","signature":"pruneExpiredPeerTickets(store, now = Date.now()","summary":"Remove tickets whose payload.expiresAt has passed. Returns the removed peerIds."}
{"schemaVersion":1,"modulePath":"engine/reference/network/peerTickets/PeerTicketStore.md","moduleTitle":"network/peerTickets/PeerTicketStore","source":"engine/network/peerTickets/PeerTicketStore.js","import":"/engine/network/peerTickets/PeerTicketStore.js","sourceHash":"38742cd36290902ebe28fe2e0b5875b8634d9d9df78f79f02f9727403b006d6c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/peerTickets/PeerTicketStore.js#0005:listPeerTicketsByFreshness","exportIndex":5,"name":"listPeerTicketsByFreshness","kind":"function","signature":"listPeerTicketsByFreshness(store)","summary":"All remembered tickets, most-recently-received first (network plan §38: try freshest known peers first)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/peerTickets/PeerTicketStore.md","moduleTitle":"network/peerTickets/PeerTicketStore","source":"engine/network/peerTickets/PeerTicketStore.js","import":"/engine/network/peerTickets/PeerTicketStore.js","sourceHash":"38742cd36290902ebe28fe2e0b5875b8634d9d9df78f79f02f9727403b006d6c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/peerTickets/PeerTicketStore.js#0006:snapshotPeerTicketStore","exportIndex":6,"name":"snapshotPeerTicketStore","kind":"function","signature":"snapshotPeerTicketStore(store)","summary":"Full, JSON-serializable snapshot of a peer ticket store for OS-side persistence (network plan §38 persistence gap — see this file's header comment; storage itself, e.g. webgpu-os/storage/AppSandbox, is the caller's job). Same shape `listPeerTicketsByFreshness` already returns — exposed under its own name so the persistence contract (snapshot/hydrate pair) stays explicit even if the internal shape changes later."}
{"schemaVersion":1,"modulePath":"engine/reference/network/peerTickets/PeerTicketStore.md","moduleTitle":"network/peerTickets/PeerTicketStore","source":"engine/network/peerTickets/PeerTicketStore.js","import":"/engine/network/peerTickets/PeerTicketStore.js","sourceHash":"38742cd36290902ebe28fe2e0b5875b8634d9d9df78f79f02f9727403b006d6c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/peerTickets/PeerTicketStore.js#0007:hydratePeerTicketStore","exportIndex":7,"name":"hydratePeerTicketStore","kind":"function","signature":"hydratePeerTicketStore(snapshot = [])","summary":"Rebuild a peer ticket store from a previously-persisted snapshotPeerTicketStore() array."}
{"schemaVersion":1,"modulePath":"engine/reference/network/peerTickets/ReconnectOrder.md","moduleTitle":"network/peerTickets/ReconnectOrder","source":"engine/network/peerTickets/ReconnectOrder.js","import":"/engine/network/peerTickets/ReconnectOrder.js","sourceHash":"5bd310a83aff6131f95ee9a03d5ef10c45ea34529425e57aa42802715fed9715","subsystem":"engine","recordType":"api-module","id":"module:engine/network/peerTickets/ReconnectOrder.js","title":"network/peerTickets/ReconnectOrder","summary":"network/peerTickets/ReconnectOrder.js — full device-boot reconnect order (network plan §38): cached peer tickets (freshest first) -> LAN -> group gossip -> master servers -> carrier -> DHT. Ties Phase 5 (peer tickets) onto Phase 2's `buildConnectionOrder` (routes/MasterServerList.js) without modifying it.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/network/peerTickets/ReconnectOrder.md","moduleTitle":"network/peerTickets/ReconnectOrder","source":"engine/network/peerTickets/ReconnectOrder.js","import":"/engine/network/peerTickets/ReconnectOrder.js","sourceHash":"5bd310a83aff6131f95ee9a03d5ef10c45ea34529425e57aa42802715fed9715","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/peerTickets/ReconnectOrder.js#0000:buildPeerReconnectOrder","exportIndex":0,"name":"buildPeerReconnectOrder","kind":"function","signature":"buildPeerReconnectOrder(store, normalizedMasterServerList)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/peerTickets/index.md","moduleTitle":"network/peerTickets/index","source":"engine/network/peerTickets/index.js","import":"/engine/network/peerTickets/index.js","sourceHash":"a9807fe95191ae9823d3b2c2c3597e64169c2a9c3106feb4566fabcf9eda184a","subsystem":"engine","recordType":"api-module","id":"module:engine/network/peerTickets/index.js","title":"network/peerTickets/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/network/protocol.md","moduleTitle":"network/protocol","source":"engine/network/protocol.js","import":"/engine/network/protocol.js","sourceHash":"55eaf62a89413aa45b5b747ca8a4a28f9c7ccbe444319122efedd3cd480ab90a","subsystem":"engine","recordType":"api-module","id":"module:engine/network/protocol.js","title":"network/protocol","summary":"network/protocol.js — namespaced/versioned message envelopes for the Particle Global OS Network Layer (network plan §34).  Every message on the network carries an explicit, versioned protocol namespace (e.g. `particle-route/1`). Unversioned or unrecognized protocol strings are rejected outright — this is what lets the wire format evolve (particle-route/2, ...) without silently misparsing old/foreign traffic.  Canonical signing reuses the Causal State Engine's deterministic canonicalization (engine/state/util/canonical.js, RFC-8785-style) so that signed envelopes hash/verify identically regardless of key order or JS engine, and reuses CSE's cross-actor verification (verifyWithKey) so a receiver can verify a sender's signature from just their public key hex.","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/network/protocol.md","moduleTitle":"network/protocol","source":"engine/network/protocol.js","import":"/engine/network/protocol.js","sourceHash":"55eaf62a89413aa45b5b747ca8a4a28f9c7ccbe444319122efedd3cd480ab90a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/protocol.js#0000:isKnownProtocol","exportIndex":0,"name":"isKnownProtocol","kind":"function","signature":"isKnownProtocol(protocol)","summary":"True when `protocol` is one of this build's known, versioned namespaces."}
{"schemaVersion":1,"modulePath":"engine/reference/network/protocol.md","moduleTitle":"network/protocol","source":"engine/network/protocol.js","import":"/engine/network/protocol.js","sourceHash":"55eaf62a89413aa45b5b747ca8a4a28f9c7ccbe444319122efedd3cd480ab90a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/protocol.js#0001:makeEnvelope","exportIndex":1,"name":"makeEnvelope","kind":"function","signature":"makeEnvelope({ protocol, type, payload = null, extra = {} } = {})","summary":"Build an unsigned protocol envelope. Throws if `protocol` isn't a known, versioned namespace (spec §34 rule: reject unversioned packets)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/protocol.md","moduleTitle":"network/protocol","source":"engine/network/protocol.js","import":"/engine/network/protocol.js","sourceHash":"55eaf62a89413aa45b5b747ca8a4a28f9c7ccbe444319122efedd3cd480ab90a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/protocol.js#0002:assertKnownProtocol","exportIndex":2,"name":"assertKnownProtocol","kind":"function","signature":"assertKnownProtocol(msg)","summary":"Assert an inbound (possibly untrusted) message is a well-formed envelope with a known protocol namespace. Does NOT verify signatures — see `verifyEnvelope`. Throws on failure so callers fail closed."}
{"schemaVersion":1,"modulePath":"engine/reference/network/protocol.md","moduleTitle":"network/protocol","source":"engine/network/protocol.js","import":"/engine/network/protocol.js","sourceHash":"55eaf62a89413aa45b5b747ca8a4a28f9c7ccbe444319122efedd3cd480ab90a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/protocol.js#0003:signEnvelope","exportIndex":3,"name":"signEnvelope","kind":"function","signature":"async signEnvelope(envelope, signer)","summary":"Sign an envelope with a CSE authority signer (engine/state/authority/Identity.js `createSigner`, itself bound to a CollabIdentity ECDSA P-256 keypair). The signature covers the canonical bytes of the envelope BEFORE the signature/signerFingerprint fields exist, so verification reconstructs the same canonical body by stripping those two fields back off."}
{"schemaVersion":1,"modulePath":"engine/reference/network/protocol.md","moduleTitle":"network/protocol","source":"engine/network/protocol.js","import":"/engine/network/protocol.js","sourceHash":"55eaf62a89413aa45b5b747ca8a4a28f9c7ccbe444319122efedd3cd480ab90a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/protocol.js#0004:verifyEnvelope","exportIndex":4,"name":"verifyEnvelope","kind":"function","signature":"async verifyEnvelope(signedEnvelope, signer = null)","summary":"Verify a signed envelope. Pass either a `signer` (verifies against its own key — same-principal round-trip) or nothing to verify against the envelope's own embedded `signerPublicKeyHex` (cross-actor verification, the normal case when receiving from a remote peer)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/protocol.md","moduleTitle":"network/protocol","source":"engine/network/protocol.js","import":"/engine/network/protocol.js","sourceHash":"55eaf62a89413aa45b5b747ca8a4a28f9c7ccbe444319122efedd3cd480ab90a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/protocol.js#0005:PROTOCOL_VERSIONS","exportIndex":5,"name":"PROTOCOL_VERSIONS","kind":"constant","signature":"PROTOCOL_VERSIONS","summary":"All known/versioned protocol namespaces (network plan §34)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordCapabilityV1.md","moduleTitle":"network/realm/accord/AccordCapabilityV1","source":"engine/network/realm/accord/AccordCapabilityV1.js","import":"/engine/network/realm/accord/AccordCapabilityV1.js","sourceHash":"a815855f0850eca978e4fdf1c5bcb23f06519bc9aabb35f623e7bc2bdd72004c","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/accord/AccordCapabilityV1.js","title":"network/realm/accord/AccordCapabilityV1","summary":"Signed, short-lived Accord capability discovery records.","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordCapabilityV1.md","moduleTitle":"network/realm/accord/AccordCapabilityV1","source":"engine/network/realm/accord/AccordCapabilityV1.js","import":"/engine/network/realm/accord/AccordCapabilityV1.js","sourceHash":"a815855f0850eca978e4fdf1c5bcb23f06519bc9aabb35f623e7bc2bdd72004c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordCapabilityV1.js#0000:createAccordCapabilityAdvertisement","exportIndex":0,"name":"createAccordCapabilityAdvertisement","kind":"function","signature":"async createAccordCapabilityAdvertisement(input, signer)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordCapabilityV1.md","moduleTitle":"network/realm/accord/AccordCapabilityV1","source":"engine/network/realm/accord/AccordCapabilityV1.js","import":"/engine/network/realm/accord/AccordCapabilityV1.js","sourceHash":"a815855f0850eca978e4fdf1c5bcb23f06519bc9aabb35f623e7bc2bdd72004c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordCapabilityV1.js#0001:verifyAccordCapabilityAdvertisement","exportIndex":1,"name":"verifyAccordCapabilityAdvertisement","kind":"function","signature":"async verifyAccordCapabilityAdvertisement(record, { now = Date.now()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordCapabilityV1.md","moduleTitle":"network/realm/accord/AccordCapabilityV1","source":"engine/network/realm/accord/AccordCapabilityV1.js","import":"/engine/network/realm/accord/AccordCapabilityV1.js","sourceHash":"a815855f0850eca978e4fdf1c5bcb23f06519bc9aabb35f623e7bc2bdd72004c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordCapabilityV1.js#0002:negotiateAccordCapability","exportIndex":2,"name":"negotiateAccordCapability","kind":"function","signature":"async negotiateAccordCapability(advertisements, request, options = {})","summary":"Select a verified capability that can satisfy an exact bounded request."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordCapabilityV1.md","moduleTitle":"network/realm/accord/AccordCapabilityV1","source":"engine/network/realm/accord/AccordCapabilityV1.js","import":"/engine/network/realm/accord/AccordCapabilityV1.js","sourceHash":"a815855f0850eca978e4fdf1c5bcb23f06519bc9aabb35f623e7bc2bdd72004c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordCapabilityV1.js#0003:ACCORD_CAPABILITY_ADVERTISEMENT_V1_FORMAT","exportIndex":3,"name":"ACCORD_CAPABILITY_ADVERTISEMENT_V1_FORMAT","kind":"constant","signature":"ACCORD_CAPABILITY_ADVERTISEMENT_V1_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordCapabilityV1.md","moduleTitle":"network/realm/accord/AccordCapabilityV1","source":"engine/network/realm/accord/AccordCapabilityV1.js","import":"/engine/network/realm/accord/AccordCapabilityV1.js","sourceHash":"a815855f0850eca978e4fdf1c5bcb23f06519bc9aabb35f623e7bc2bdd72004c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordCapabilityV1.js#0004:ACCORD_CONTEXT_KINDS","exportIndex":4,"name":"ACCORD_CONTEXT_KINDS","kind":"constant","signature":"ACCORD_CONTEXT_KINDS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordCapabilityV1.md","moduleTitle":"network/realm/accord/AccordCapabilityV1","source":"engine/network/realm/accord/AccordCapabilityV1.js","import":"/engine/network/realm/accord/AccordCapabilityV1.js","sourceHash":"a815855f0850eca978e4fdf1c5bcb23f06519bc9aabb35f623e7bc2bdd72004c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordCapabilityV1.js#0005:AccordCapabilityAdvertisementV1","exportIndex":5,"name":"AccordCapabilityAdvertisementV1","kind":"constant","signature":"AccordCapabilityAdvertisementV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordCrypto.md","moduleTitle":"network/realm/accord/AccordCrypto","source":"engine/network/realm/accord/AccordCrypto.js","import":"/engine/network/realm/accord/AccordCrypto.js","sourceHash":"2e3f222d9e305573f0fe61785ffe6dd87858c868bf4c89a65b5e046c822db7a1","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/accord/AccordCrypto.js","title":"network/realm/accord/AccordCrypto","summary":"Shared validation and domain-separated signing for the Navi Accord wire protocol.","exportCount":24}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordCrypto.md","moduleTitle":"network/realm/accord/AccordCrypto","source":"engine/network/realm/accord/AccordCrypto.js","import":"/engine/network/realm/accord/AccordCrypto.js","sourceHash":"2e3f222d9e305573f0fe61785ffe6dd87858c868bf4c89a65b5e046c822db7a1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordCrypto.js#0000:safeInteger","exportIndex":0,"name":"safeInteger","kind":"function","signature":"safeInteger(value, name, minimum = 0, maximum = Number.MAX_SAFE_INTEGER)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordCrypto.md","moduleTitle":"network/realm/accord/AccordCrypto","source":"engine/network/realm/accord/AccordCrypto.js","import":"/engine/network/realm/accord/AccordCrypto.js","sourceHash":"2e3f222d9e305573f0fe61785ffe6dd87858c868bf4c89a65b5e046c822db7a1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordCrypto.js#0001:boundedText","exportIndex":1,"name":"boundedText","kind":"function","signature":"boundedText(value, name, maximum = 512)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordCrypto.md","moduleTitle":"network/realm/accord/AccordCrypto","source":"engine/network/realm/accord/AccordCrypto.js","import":"/engine/network/realm/accord/AccordCrypto.js","sourceHash":"2e3f222d9e305573f0fe61785ffe6dd87858c868bf4c89a65b5e046c822db7a1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordCrypto.js#0002:boundedToken","exportIndex":2,"name":"boundedToken","kind":"function","signature":"boundedToken(value, name, maximum = 128)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordCrypto.md","moduleTitle":"network/realm/accord/AccordCrypto","source":"engine/network/realm/accord/AccordCrypto.js","import":"/engine/network/realm/accord/AccordCrypto.js","sourceHash":"2e3f222d9e305573f0fe61785ffe6dd87858c868bf4c89a65b5e046c822db7a1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordCrypto.js#0003:normalizeNonce","exportIndex":3,"name":"normalizeNonce","kind":"function","signature":"normalizeNonce(value, name = 'nonce')","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordCrypto.md","moduleTitle":"network/realm/accord/AccordCrypto","source":"engine/network/realm/accord/AccordCrypto.js","import":"/engine/network/realm/accord/AccordCrypto.js","sourceHash":"2e3f222d9e305573f0fe61785ffe6dd87858c868bf4c89a65b5e046c822db7a1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordCrypto.js#0004:assertSecureRecordId","exportIndex":4,"name":"assertSecureRecordId","kind":"function","signature":"assertSecureRecordId(value, name = 'record ID')","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordCrypto.md","moduleTitle":"network/realm/accord/AccordCrypto","source":"engine/network/realm/accord/AccordCrypto.js","import":"/engine/network/realm/accord/AccordCrypto.js","sourceHash":"2e3f222d9e305573f0fe61785ffe6dd87858c868bf4c89a65b5e046c822db7a1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordCrypto.js#0005:normalizeTokenList","exportIndex":5,"name":"normalizeTokenList","kind":"function","signature":"normalizeTokenList(values, name, { maximum = 128, allowEmpty = false } = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordCrypto.md","moduleTitle":"network/realm/accord/AccordCrypto","source":"engine/network/realm/accord/AccordCrypto.js","import":"/engine/network/realm/accord/AccordCrypto.js","sourceHash":"2e3f222d9e305573f0fe61785ffe6dd87858c868bf4c89a65b5e046c822db7a1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordCrypto.js#0006:normalizeIdList","exportIndex":6,"name":"normalizeIdList","kind":"function","signature":"normalizeIdList(values, name, { maximum = 128, allowEmpty = true } = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordCrypto.md","moduleTitle":"network/realm/accord/AccordCrypto","source":"engine/network/realm/accord/AccordCrypto.js","import":"/engine/network/realm/accord/AccordCrypto.js","sourceHash":"2e3f222d9e305573f0fe61785ffe6dd87858c868bf4c89a65b5e046c822db7a1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordCrypto.js#0007:assertIdentityId","exportIndex":7,"name":"assertIdentityId","kind":"function","signature":"assertIdentityId(value, name = 'identity ID')","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordCrypto.md","moduleTitle":"network/realm/accord/AccordCrypto","source":"engine/network/realm/accord/AccordCrypto.js","import":"/engine/network/realm/accord/AccordCrypto.js","sourceHash":"2e3f222d9e305573f0fe61785ffe6dd87858c868bf4c89a65b5e046c822db7a1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordCrypto.js#0008:normalizeWindow","exportIndex":8,"name":"normalizeWindow","kind":"function","signature":"normalizeWindow(input, { issuedAt = Date.now()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordCrypto.md","moduleTitle":"network/realm/accord/AccordCrypto","source":"engine/network/realm/accord/AccordCrypto.js","import":"/engine/network/realm/accord/AccordCrypto.js","sourceHash":"2e3f222d9e305573f0fe61785ffe6dd87858c868bf4c89a65b5e046c822db7a1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordCrypto.js#0009:validateActiveWindow","exportIndex":9,"name":"validateActiveWindow","kind":"function","signature":"validateActiveWindow(record, now = Date.now()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordCrypto.md","moduleTitle":"network/realm/accord/AccordCrypto","source":"engine/network/realm/accord/AccordCrypto.js","import":"/engine/network/realm/accord/AccordCrypto.js","sourceHash":"2e3f222d9e305573f0fe61785ffe6dd87858c868bf4c89a65b5e046c822db7a1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordCrypto.js#0010:normalizeBudget","exportIndex":10,"name":"normalizeBudget","kind":"function","signature":"normalizeBudget(value, name = 'budget', { allowZero = false } = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordCrypto.md","moduleTitle":"network/realm/accord/AccordCrypto","source":"engine/network/realm/accord/AccordCrypto.js","import":"/engine/network/realm/accord/AccordCrypto.js","sourceHash":"2e3f222d9e305573f0fe61785ffe6dd87858c868bf4c89a65b5e046c822db7a1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordCrypto.js#0011:budgetWithin","exportIndex":11,"name":"budgetWithin","kind":"function","signature":"budgetWithin(candidate, ceiling)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordCrypto.md","moduleTitle":"network/realm/accord/AccordCrypto","source":"engine/network/realm/accord/AccordCrypto.js","import":"/engine/network/realm/accord/AccordCrypto.js","sourceHash":"2e3f222d9e305573f0fe61785ffe6dd87858c868bf4c89a65b5e046c822db7a1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordCrypto.js#0012:normalizeScope","exportIndex":12,"name":"normalizeScope","kind":"function","signature":"normalizeScope(value, name = 'scope')","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordCrypto.md","moduleTitle":"network/realm/accord/AccordCrypto","source":"engine/network/realm/accord/AccordCrypto.js","import":"/engine/network/realm/accord/AccordCrypto.js","sourceHash":"2e3f222d9e305573f0fe61785ffe6dd87858c868bf4c89a65b5e046c822db7a1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordCrypto.js#0013:scopeWithin","exportIndex":13,"name":"scopeWithin","kind":"function","signature":"scopeWithin(candidate, ceiling)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordCrypto.md","moduleTitle":"network/realm/accord/AccordCrypto","source":"engine/network/realm/accord/AccordCrypto.js","import":"/engine/network/realm/accord/AccordCrypto.js","sourceHash":"2e3f222d9e305573f0fe61785ffe6dd87858c868bf4c89a65b5e046c822db7a1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordCrypto.js#0014:assertSafePublicData","exportIndex":14,"name":"assertSafePublicData","kind":"function","signature":"assertSafePublicData(value, name = 'public data', { maximumBytes = ACCORD_MAX_PUBLIC_BYTES } = {})","summary":"Validate bounded JSON-compatible public data and reject common exfiltration containers. This is deliberately structural: unrestricted session exports, credentials, and private-memory payloads cannot be smuggled under aliases."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordCrypto.md","moduleTitle":"network/realm/accord/AccordCrypto","source":"engine/network/realm/accord/AccordCrypto.js","import":"/engine/network/realm/accord/AccordCrypto.js","sourceHash":"2e3f222d9e305573f0fe61785ffe6dd87858c868bf4c89a65b5e046c822db7a1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordCrypto.js#0015:canonicalPublicCopy","exportIndex":15,"name":"canonicalPublicCopy","kind":"function","signature":"canonicalPublicCopy(value, name = 'public data', options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordCrypto.md","moduleTitle":"network/realm/accord/AccordCrypto","source":"engine/network/realm/accord/AccordCrypto.js","import":"/engine/network/realm/accord/AccordCrypto.js","sourceHash":"2e3f222d9e305573f0fe61785ffe6dd87858c868bf4c89a65b5e046c822db7a1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordCrypto.js#0016:accordSignerDescriptor","exportIndex":16,"name":"accordSignerDescriptor","kind":"function","signature":"async accordSignerDescriptor(signer)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordCrypto.md","moduleTitle":"network/realm/accord/AccordCrypto","source":"engine/network/realm/accord/AccordCrypto.js","import":"/engine/network/realm/accord/AccordCrypto.js","sourceHash":"2e3f222d9e305573f0fe61785ffe6dd87858c868bf4c89a65b5e046c822db7a1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordCrypto.js#0017:finishSignedAccordRecord","exportIndex":17,"name":"finishSignedAccordRecord","kind":"function","signature":"async finishSignedAccordRecord(record, idField, signer)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordCrypto.md","moduleTitle":"network/realm/accord/AccordCrypto","source":"engine/network/realm/accord/AccordCrypto.js","import":"/engine/network/realm/accord/AccordCrypto.js","sourceHash":"2e3f222d9e305573f0fe61785ffe6dd87858c868bf4c89a65b5e046c822db7a1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordCrypto.js#0018:verifySignedAccordRecord","exportIndex":18,"name":"verifySignedAccordRecord","kind":"function","signature":"async verifySignedAccordRecord(record, { format, idField })","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordCrypto.md","moduleTitle":"network/realm/accord/AccordCrypto","source":"engine/network/realm/accord/AccordCrypto.js","import":"/engine/network/realm/accord/AccordCrypto.js","sourceHash":"2e3f222d9e305573f0fe61785ffe6dd87858c868bf4c89a65b5e046c822db7a1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordCrypto.js#0019:authorizeWith","exportIndex":19,"name":"authorizeWith","kind":"function","signature":"async authorizeWith(adapter, record, role)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordCrypto.md","moduleTitle":"network/realm/accord/AccordCrypto","source":"engine/network/realm/accord/AccordCrypto.js","import":"/engine/network/realm/accord/AccordCrypto.js","sourceHash":"2e3f222d9e305573f0fe61785ffe6dd87858c868bf4c89a65b5e046c822db7a1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordCrypto.js#0020:exactKeys","exportIndex":20,"name":"exactKeys","kind":"function","signature":"exactKeys(value, expected, name)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordCrypto.md","moduleTitle":"network/realm/accord/AccordCrypto","source":"engine/network/realm/accord/AccordCrypto.js","import":"/engine/network/realm/accord/AccordCrypto.js","sourceHash":"2e3f222d9e305573f0fe61785ffe6dd87858c868bf4c89a65b5e046c822db7a1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordCrypto.js#0021:normalizedBodyMatches","exportIndex":21,"name":"normalizedBodyMatches","kind":"function","signature":"normalizedBodyMatches(record, normalized)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordCrypto.md","moduleTitle":"network/realm/accord/AccordCrypto","source":"engine/network/realm/accord/AccordCrypto.js","import":"/engine/network/realm/accord/AccordCrypto.js","sourceHash":"2e3f222d9e305573f0fe61785ffe6dd87858c868bf4c89a65b5e046c822db7a1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordCrypto.js#0022:ACCORD_MAX_LIFETIME_MS","exportIndex":22,"name":"ACCORD_MAX_LIFETIME_MS","kind":"constant","signature":"ACCORD_MAX_LIFETIME_MS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordCrypto.md","moduleTitle":"network/realm/accord/AccordCrypto","source":"engine/network/realm/accord/AccordCrypto.js","import":"/engine/network/realm/accord/AccordCrypto.js","sourceHash":"2e3f222d9e305573f0fe61785ffe6dd87858c868bf4c89a65b5e046c822db7a1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordCrypto.js#0023:ACCORD_MAX_PUBLIC_BYTES","exportIndex":23,"name":"ACCORD_MAX_PUBLIC_BYTES","kind":"constant","signature":"ACCORD_MAX_PUBLIC_BYTES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordDelegationV1.md","moduleTitle":"network/realm/accord/AccordDelegationV1","source":"engine/network/realm/accord/AccordDelegationV1.js","import":"/engine/network/realm/accord/AccordDelegationV1.js","sourceHash":"8da8bbc642cbe63759ec432927ed6cb4acfe69114e4556e0795046b57a0658ad","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/accord/AccordDelegationV1.js","title":"network/realm/accord/AccordDelegationV1","summary":"Task-bound capability delegation, revocation, and approval proofs.","exportCount":10}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordDelegationV1.md","moduleTitle":"network/realm/accord/AccordDelegationV1","source":"engine/network/realm/accord/AccordDelegationV1.js","import":"/engine/network/realm/accord/AccordDelegationV1.js","sourceHash":"8da8bbc642cbe63759ec432927ed6cb4acfe69114e4556e0795046b57a0658ad","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordDelegationV1.js#0000:AccordDelegationRegistry","exportIndex":0,"name":"AccordDelegationRegistry","kind":"class","signature":"class AccordDelegationRegistry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordDelegationV1.md","moduleTitle":"network/realm/accord/AccordDelegationV1","source":"engine/network/realm/accord/AccordDelegationV1.js","import":"/engine/network/realm/accord/AccordDelegationV1.js","sourceHash":"8da8bbc642cbe63759ec432927ed6cb4acfe69114e4556e0795046b57a0658ad","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordDelegationV1.js#0001:createAccordDelegation","exportIndex":1,"name":"createAccordDelegation","kind":"function","signature":"async createAccordDelegation(task, input, signer)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordDelegationV1.md","moduleTitle":"network/realm/accord/AccordDelegationV1","source":"engine/network/realm/accord/AccordDelegationV1.js","import":"/engine/network/realm/accord/AccordDelegationV1.js","sourceHash":"8da8bbc642cbe63759ec432927ed6cb4acfe69114e4556e0795046b57a0658ad","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordDelegationV1.js#0002:verifyAccordDelegation","exportIndex":2,"name":"verifyAccordDelegation","kind":"function","signature":"async verifyAccordDelegation(record, { task, acceptance = null, capabilityGrant, verifyCapabilityGrant, now = Date.now()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordDelegationV1.md","moduleTitle":"network/realm/accord/AccordDelegationV1","source":"engine/network/realm/accord/AccordDelegationV1.js","import":"/engine/network/realm/accord/AccordDelegationV1.js","sourceHash":"8da8bbc642cbe63759ec432927ed6cb4acfe69114e4556e0795046b57a0658ad","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordDelegationV1.js#0003:createAccordDelegationRevocation","exportIndex":3,"name":"createAccordDelegationRevocation","kind":"function","signature":"async createAccordDelegationRevocation(delegation, input, signer)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordDelegationV1.md","moduleTitle":"network/realm/accord/AccordDelegationV1","source":"engine/network/realm/accord/AccordDelegationV1.js","import":"/engine/network/realm/accord/AccordDelegationV1.js","sourceHash":"8da8bbc642cbe63759ec432927ed6cb4acfe69114e4556e0795046b57a0658ad","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordDelegationV1.js#0004:verifyAccordDelegationRevocation","exportIndex":4,"name":"verifyAccordDelegationRevocation","kind":"function","signature":"async verifyAccordDelegationRevocation(record, { delegation, now = Date.now()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordDelegationV1.md","moduleTitle":"network/realm/accord/AccordDelegationV1","source":"engine/network/realm/accord/AccordDelegationV1.js","import":"/engine/network/realm/accord/AccordDelegationV1.js","sourceHash":"8da8bbc642cbe63759ec432927ed6cb4acfe69114e4556e0795046b57a0658ad","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordDelegationV1.js#0005:createAccordApprovalProof","exportIndex":5,"name":"createAccordApprovalProof","kind":"function","signature":"async createAccordApprovalProof(task, input, signer)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordDelegationV1.md","moduleTitle":"network/realm/accord/AccordDelegationV1","source":"engine/network/realm/accord/AccordDelegationV1.js","import":"/engine/network/realm/accord/AccordDelegationV1.js","sourceHash":"8da8bbc642cbe63759ec432927ed6cb4acfe69114e4556e0795046b57a0658ad","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordDelegationV1.js#0006:verifyAccordApprovalProof","exportIndex":6,"name":"verifyAccordApprovalProof","kind":"function","signature":"async verifyAccordApprovalProof(record, { task, now = Date.now()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordDelegationV1.md","moduleTitle":"network/realm/accord/AccordDelegationV1","source":"engine/network/realm/accord/AccordDelegationV1.js","import":"/engine/network/realm/accord/AccordDelegationV1.js","sourceHash":"8da8bbc642cbe63759ec432927ed6cb4acfe69114e4556e0795046b57a0658ad","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordDelegationV1.js#0007:ACCORD_DELEGATION_V1_FORMAT","exportIndex":7,"name":"ACCORD_DELEGATION_V1_FORMAT","kind":"constant","signature":"ACCORD_DELEGATION_V1_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordDelegationV1.md","moduleTitle":"network/realm/accord/AccordDelegationV1","source":"engine/network/realm/accord/AccordDelegationV1.js","import":"/engine/network/realm/accord/AccordDelegationV1.js","sourceHash":"8da8bbc642cbe63759ec432927ed6cb4acfe69114e4556e0795046b57a0658ad","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordDelegationV1.js#0008:ACCORD_DELEGATION_REVOCATION_V1_FORMAT","exportIndex":8,"name":"ACCORD_DELEGATION_REVOCATION_V1_FORMAT","kind":"constant","signature":"ACCORD_DELEGATION_REVOCATION_V1_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordDelegationV1.md","moduleTitle":"network/realm/accord/AccordDelegationV1","source":"engine/network/realm/accord/AccordDelegationV1.js","import":"/engine/network/realm/accord/AccordDelegationV1.js","sourceHash":"8da8bbc642cbe63759ec432927ed6cb4acfe69114e4556e0795046b57a0658ad","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordDelegationV1.js#0009:ACCORD_APPROVAL_PROOF_V1_FORMAT","exportIndex":9,"name":"ACCORD_APPROVAL_PROOF_V1_FORMAT","kind":"constant","signature":"ACCORD_APPROVAL_PROOF_V1_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordReplayGuard.md","moduleTitle":"network/realm/accord/AccordReplayGuard","source":"engine/network/realm/accord/AccordReplayGuard.js","import":"/engine/network/realm/accord/AccordReplayGuard.js","sourceHash":"9a588caf973b509aec089fafc6f7ff63107ed86e273a7146d790b63b788a1e37","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/accord/AccordReplayGuard.js","title":"network/realm/accord/AccordReplayGuard","summary":"Bounded replay and monotonic-sequence protection for verified Accord records.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordReplayGuard.md","moduleTitle":"network/realm/accord/AccordReplayGuard","source":"engine/network/realm/accord/AccordReplayGuard.js","import":"/engine/network/realm/accord/AccordReplayGuard.js","sourceHash":"9a588caf973b509aec089fafc6f7ff63107ed86e273a7146d790b63b788a1e37","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordReplayGuard.js#0000:AccordReplayGuard","exportIndex":0,"name":"AccordReplayGuard","kind":"class","signature":"class AccordReplayGuard","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordReplayGuard.md","moduleTitle":"network/realm/accord/AccordReplayGuard","source":"engine/network/realm/accord/AccordReplayGuard.js","import":"/engine/network/realm/accord/AccordReplayGuard.js","sourceHash":"9a588caf973b509aec089fafc6f7ff63107ed86e273a7146d790b63b788a1e37","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordReplayGuard.js#0001:consumeReplay","exportIndex":1,"name":"consumeReplay","kind":"function","signature":"consumeReplay(replayGuard, record, { idField, streamKey = null, sequence = null } = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordResultV1.md","moduleTitle":"network/realm/accord/AccordResultV1","source":"engine/network/realm/accord/AccordResultV1.js","import":"/engine/network/realm/accord/AccordResultV1.js","sourceHash":"c50acff966bdc272ef2e6f5386833241920f75c813a5d7896ef83287f60f19f2","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/accord/AccordResultV1.js","title":"network/realm/accord/AccordResultV1","summary":"Signed Accord progress, cancellation, results, and purpose-isolated reputation evidence.","exportCount":13}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordResultV1.md","moduleTitle":"network/realm/accord/AccordResultV1","source":"engine/network/realm/accord/AccordResultV1.js","import":"/engine/network/realm/accord/AccordResultV1.js","sourceHash":"c50acff966bdc272ef2e6f5386833241920f75c813a5d7896ef83287f60f19f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordResultV1.js#0000:createAccordProgress","exportIndex":0,"name":"createAccordProgress","kind":"function","signature":"async createAccordProgress(task, acceptance, input, signer)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordResultV1.md","moduleTitle":"network/realm/accord/AccordResultV1","source":"engine/network/realm/accord/AccordResultV1.js","import":"/engine/network/realm/accord/AccordResultV1.js","sourceHash":"c50acff966bdc272ef2e6f5386833241920f75c813a5d7896ef83287f60f19f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordResultV1.js#0001:verifyAccordProgress","exportIndex":1,"name":"verifyAccordProgress","kind":"function","signature":"async verifyAccordProgress(record, { task, acceptance, now = Date.now()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordResultV1.md","moduleTitle":"network/realm/accord/AccordResultV1","source":"engine/network/realm/accord/AccordResultV1.js","import":"/engine/network/realm/accord/AccordResultV1.js","sourceHash":"c50acff966bdc272ef2e6f5386833241920f75c813a5d7896ef83287f60f19f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordResultV1.js#0002:createAccordCancellation","exportIndex":2,"name":"createAccordCancellation","kind":"function","signature":"async createAccordCancellation(task, input, signer)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordResultV1.md","moduleTitle":"network/realm/accord/AccordResultV1","source":"engine/network/realm/accord/AccordResultV1.js","import":"/engine/network/realm/accord/AccordResultV1.js","sourceHash":"c50acff966bdc272ef2e6f5386833241920f75c813a5d7896ef83287f60f19f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordResultV1.js#0003:verifyAccordCancellation","exportIndex":3,"name":"verifyAccordCancellation","kind":"function","signature":"async verifyAccordCancellation(record, { task, now = Date.now()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordResultV1.md","moduleTitle":"network/realm/accord/AccordResultV1","source":"engine/network/realm/accord/AccordResultV1.js","import":"/engine/network/realm/accord/AccordResultV1.js","sourceHash":"c50acff966bdc272ef2e6f5386833241920f75c813a5d7896ef83287f60f19f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordResultV1.js#0004:createAccordResultV1","exportIndex":4,"name":"createAccordResultV1","kind":"function","signature":"async createAccordResultV1(task, acceptance, delegation, input, signer)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordResultV1.md","moduleTitle":"network/realm/accord/AccordResultV1","source":"engine/network/realm/accord/AccordResultV1.js","import":"/engine/network/realm/accord/AccordResultV1.js","sourceHash":"c50acff966bdc272ef2e6f5386833241920f75c813a5d7896ef83287f60f19f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordResultV1.js#0005:verifyAccordResultV1","exportIndex":5,"name":"verifyAccordResultV1","kind":"function","signature":"async verifyAccordResultV1(record, { task, acceptance, delegation, capabilityGrant, verifyCapabilityGrant, contextCapsules = [], approvalProofs = [], cancellation = null, now = Date.now()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordResultV1.md","moduleTitle":"network/realm/accord/AccordResultV1","source":"engine/network/realm/accord/AccordResultV1.js","import":"/engine/network/realm/accord/AccordResultV1.js","sourceHash":"c50acff966bdc272ef2e6f5386833241920f75c813a5d7896ef83287f60f19f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordResultV1.js#0006:createAccordReputationEvidence","exportIndex":6,"name":"createAccordReputationEvidence","kind":"function","signature":"async createAccordReputationEvidence(task, result, input, signer)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordResultV1.md","moduleTitle":"network/realm/accord/AccordResultV1","source":"engine/network/realm/accord/AccordResultV1.js","import":"/engine/network/realm/accord/AccordResultV1.js","sourceHash":"c50acff966bdc272ef2e6f5386833241920f75c813a5d7896ef83287f60f19f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordResultV1.js#0007:verifyAccordReputationEvidence","exportIndex":7,"name":"verifyAccordReputationEvidence","kind":"function","signature":"async verifyAccordReputationEvidence(record, { now = Date.now()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordResultV1.md","moduleTitle":"network/realm/accord/AccordResultV1","source":"engine/network/realm/accord/AccordResultV1.js","import":"/engine/network/realm/accord/AccordResultV1.js","sourceHash":"c50acff966bdc272ef2e6f5386833241920f75c813a5d7896ef83287f60f19f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordResultV1.js#0008:ACCORD_PROGRESS_V1_FORMAT","exportIndex":8,"name":"ACCORD_PROGRESS_V1_FORMAT","kind":"constant","signature":"ACCORD_PROGRESS_V1_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordResultV1.md","moduleTitle":"network/realm/accord/AccordResultV1","source":"engine/network/realm/accord/AccordResultV1.js","import":"/engine/network/realm/accord/AccordResultV1.js","sourceHash":"c50acff966bdc272ef2e6f5386833241920f75c813a5d7896ef83287f60f19f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordResultV1.js#0009:ACCORD_CANCELLATION_V1_FORMAT","exportIndex":9,"name":"ACCORD_CANCELLATION_V1_FORMAT","kind":"constant","signature":"ACCORD_CANCELLATION_V1_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordResultV1.md","moduleTitle":"network/realm/accord/AccordResultV1","source":"engine/network/realm/accord/AccordResultV1.js","import":"/engine/network/realm/accord/AccordResultV1.js","sourceHash":"c50acff966bdc272ef2e6f5386833241920f75c813a5d7896ef83287f60f19f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordResultV1.js#0010:ACCORD_RESULT_V1_FORMAT","exportIndex":10,"name":"ACCORD_RESULT_V1_FORMAT","kind":"constant","signature":"ACCORD_RESULT_V1_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordResultV1.md","moduleTitle":"network/realm/accord/AccordResultV1","source":"engine/network/realm/accord/AccordResultV1.js","import":"/engine/network/realm/accord/AccordResultV1.js","sourceHash":"c50acff966bdc272ef2e6f5386833241920f75c813a5d7896ef83287f60f19f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordResultV1.js#0011:ACCORD_REPUTATION_EVIDENCE_V1_FORMAT","exportIndex":11,"name":"ACCORD_REPUTATION_EVIDENCE_V1_FORMAT","kind":"constant","signature":"ACCORD_REPUTATION_EVIDENCE_V1_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordResultV1.md","moduleTitle":"network/realm/accord/AccordResultV1","source":"engine/network/realm/accord/AccordResultV1.js","import":"/engine/network/realm/accord/AccordResultV1.js","sourceHash":"c50acff966bdc272ef2e6f5386833241920f75c813a5d7896ef83287f60f19f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordResultV1.js#0012:AccordResultV1","exportIndex":12,"name":"AccordResultV1","kind":"constant","signature":"AccordResultV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordTaskV1.md","moduleTitle":"network/realm/accord/AccordTaskV1","source":"engine/network/realm/accord/AccordTaskV1.js","import":"/engine/network/realm/accord/AccordTaskV1.js","sourceHash":"9e86ee24d53027cf7a0895ef6d0f5df9e78a847d9ed42dddb38f8c2ba08174e7","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/accord/AccordTaskV1.js","title":"network/realm/accord/AccordTaskV1","summary":"Requester-signed Accord tasks and executor-signed negotiated acceptance.","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordTaskV1.md","moduleTitle":"network/realm/accord/AccordTaskV1","source":"engine/network/realm/accord/AccordTaskV1.js","import":"/engine/network/realm/accord/AccordTaskV1.js","sourceHash":"9e86ee24d53027cf7a0895ef6d0f5df9e78a847d9ed42dddb38f8c2ba08174e7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordTaskV1.js#0000:createAccordTask","exportIndex":0,"name":"createAccordTask","kind":"function","signature":"async createAccordTask(input, signer)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordTaskV1.md","moduleTitle":"network/realm/accord/AccordTaskV1","source":"engine/network/realm/accord/AccordTaskV1.js","import":"/engine/network/realm/accord/AccordTaskV1.js","sourceHash":"9e86ee24d53027cf7a0895ef6d0f5df9e78a847d9ed42dddb38f8c2ba08174e7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordTaskV1.js#0001:verifyAccordTask","exportIndex":1,"name":"verifyAccordTask","kind":"function","signature":"async verifyAccordTask(record, { now = Date.now()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordTaskV1.md","moduleTitle":"network/realm/accord/AccordTaskV1","source":"engine/network/realm/accord/AccordTaskV1.js","import":"/engine/network/realm/accord/AccordTaskV1.js","sourceHash":"9e86ee24d53027cf7a0895ef6d0f5df9e78a847d9ed42dddb38f8c2ba08174e7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordTaskV1.js#0002:createAccordTaskAcceptance","exportIndex":2,"name":"createAccordTaskAcceptance","kind":"function","signature":"async createAccordTaskAcceptance(task, input, signer)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordTaskV1.md","moduleTitle":"network/realm/accord/AccordTaskV1","source":"engine/network/realm/accord/AccordTaskV1.js","import":"/engine/network/realm/accord/AccordTaskV1.js","sourceHash":"9e86ee24d53027cf7a0895ef6d0f5df9e78a847d9ed42dddb38f8c2ba08174e7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordTaskV1.js#0003:verifyAccordTaskAcceptance","exportIndex":3,"name":"verifyAccordTaskAcceptance","kind":"function","signature":"async verifyAccordTaskAcceptance(record, { task, now = Date.now()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordTaskV1.md","moduleTitle":"network/realm/accord/AccordTaskV1","source":"engine/network/realm/accord/AccordTaskV1.js","import":"/engine/network/realm/accord/AccordTaskV1.js","sourceHash":"9e86ee24d53027cf7a0895ef6d0f5df9e78a847d9ed42dddb38f8c2ba08174e7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordTaskV1.js#0004:ACCORD_TASK_V1_FORMAT","exportIndex":4,"name":"ACCORD_TASK_V1_FORMAT","kind":"constant","signature":"ACCORD_TASK_V1_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordTaskV1.md","moduleTitle":"network/realm/accord/AccordTaskV1","source":"engine/network/realm/accord/AccordTaskV1.js","import":"/engine/network/realm/accord/AccordTaskV1.js","sourceHash":"9e86ee24d53027cf7a0895ef6d0f5df9e78a847d9ed42dddb38f8c2ba08174e7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordTaskV1.js#0005:ACCORD_TASK_ACCEPTANCE_V1_FORMAT","exportIndex":5,"name":"ACCORD_TASK_ACCEPTANCE_V1_FORMAT","kind":"constant","signature":"ACCORD_TASK_ACCEPTANCE_V1_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/AccordTaskV1.md","moduleTitle":"network/realm/accord/AccordTaskV1","source":"engine/network/realm/accord/AccordTaskV1.js","import":"/engine/network/realm/accord/AccordTaskV1.js","sourceHash":"9e86ee24d53027cf7a0895ef6d0f5df9e78a847d9ed42dddb38f8c2ba08174e7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/AccordTaskV1.js#0006:AccordTaskV1","exportIndex":6,"name":"AccordTaskV1","kind":"constant","signature":"AccordTaskV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/ContextCapsuleV1.md","moduleTitle":"network/realm/accord/ContextCapsuleV1","source":"engine/network/realm/accord/ContextCapsuleV1.js","import":"/engine/network/realm/accord/ContextCapsuleV1.js","sourceHash":"bb811bdc6b920fd35ac733662114a17c6869f6c9328d3b9f3a1d15eb90563384","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/accord/ContextCapsuleV1.js","title":"network/realm/accord/ContextCapsuleV1","summary":"Recipient-bound, allowlisted, signed context for a single Accord task.","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/ContextCapsuleV1.md","moduleTitle":"network/realm/accord/ContextCapsuleV1","source":"engine/network/realm/accord/ContextCapsuleV1.js","import":"/engine/network/realm/accord/ContextCapsuleV1.js","sourceHash":"bb811bdc6b920fd35ac733662114a17c6869f6c9328d3b9f3a1d15eb90563384","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/ContextCapsuleV1.js#0000:createContextCapsuleV1","exportIndex":0,"name":"createContextCapsuleV1","kind":"function","signature":"async createContextCapsuleV1(task, input, signer)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/ContextCapsuleV1.md","moduleTitle":"network/realm/accord/ContextCapsuleV1","source":"engine/network/realm/accord/ContextCapsuleV1.js","import":"/engine/network/realm/accord/ContextCapsuleV1.js","sourceHash":"bb811bdc6b920fd35ac733662114a17c6869f6c9328d3b9f3a1d15eb90563384","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/ContextCapsuleV1.js#0001:verifyContextCapsuleV1","exportIndex":1,"name":"verifyContextCapsuleV1","kind":"function","signature":"async verifyContextCapsuleV1(record, { task, acceptance = null, now = Date.now()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/ContextCapsuleV1.md","moduleTitle":"network/realm/accord/ContextCapsuleV1","source":"engine/network/realm/accord/ContextCapsuleV1.js","import":"/engine/network/realm/accord/ContextCapsuleV1.js","sourceHash":"bb811bdc6b920fd35ac733662114a17c6869f6c9328d3b9f3a1d15eb90563384","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/ContextCapsuleV1.js#0002:CONTEXT_CAPSULE_V1_FORMAT","exportIndex":2,"name":"CONTEXT_CAPSULE_V1_FORMAT","kind":"constant","signature":"CONTEXT_CAPSULE_V1_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/ContextCapsuleV1.md","moduleTitle":"network/realm/accord/ContextCapsuleV1","source":"engine/network/realm/accord/ContextCapsuleV1.js","import":"/engine/network/realm/accord/ContextCapsuleV1.js","sourceHash":"bb811bdc6b920fd35ac733662114a17c6869f6c9328d3b9f3a1d15eb90563384","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/accord/ContextCapsuleV1.js#0003:ContextCapsuleV1","exportIndex":3,"name":"ContextCapsuleV1","kind":"constant","signature":"ContextCapsuleV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/accord/index.md","moduleTitle":"network/realm/accord/index","source":"engine/network/realm/accord/index.js","import":"/engine/network/realm/accord/index.js","sourceHash":"24ad9df4c6176c69089763d392b6b7f9dc08d40548b5ce148f9f6cc95459ac30","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/accord/index.js","title":"network/realm/accord/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/addressing/RealmAddress.md","moduleTitle":"network/realm/addressing/RealmAddress","source":"engine/network/realm/addressing/RealmAddress.js","import":"/engine/network/realm/addressing/RealmAddress.js","sourceHash":"0dad5f7981b581cc5f9b8235d01b7818ab5f4bc26431f91eea28d2a66c50de9f","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/addressing/RealmAddress.js","title":"network/realm/addressing/RealmAddress","summary":"RealmAddress.js — human aliases that resolve to location-independent IDs.","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/addressing/RealmAddress.md","moduleTitle":"network/realm/addressing/RealmAddress","source":"engine/network/realm/addressing/RealmAddress.js","import":"/engine/network/realm/addressing/RealmAddress.js","sourceHash":"0dad5f7981b581cc5f9b8235d01b7818ab5f4bc26431f91eea28d2a66c50de9f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/addressing/RealmAddress.js#0000:RealmAddressResolver","exportIndex":0,"name":"RealmAddressResolver","kind":"class","signature":"class RealmAddressResolver","summary":"In-memory verified resolver. Persistence/discovery providers can replay records into it."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/addressing/RealmAddress.md","moduleTitle":"network/realm/addressing/RealmAddress","source":"engine/network/realm/addressing/RealmAddress.js","import":"/engine/network/realm/addressing/RealmAddress.js","sourceHash":"0dad5f7981b581cc5f9b8235d01b7818ab5f4bc26431f91eea28d2a66c50de9f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/addressing/RealmAddress.js#0001:parseRealmAddress","exportIndex":1,"name":"parseRealmAddress","kind":"function","signature":"parseRealmAddress(address)","summary":"Parse and canonicalize a realm:// alias or direct-ID address."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/addressing/RealmAddress.md","moduleTitle":"network/realm/addressing/RealmAddress","source":"engine/network/realm/addressing/RealmAddress.js","import":"/engine/network/realm/addressing/RealmAddress.js","sourceHash":"0dad5f7981b581cc5f9b8235d01b7818ab5f4bc26431f91eea28d2a66c50de9f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/addressing/RealmAddress.js#0002:realmAddressForId","exportIndex":2,"name":"realmAddressForId","kind":"function","signature":"realmAddressForId(realmId)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/addressing/RealmAddress.md","moduleTitle":"network/realm/addressing/RealmAddress","source":"engine/network/realm/addressing/RealmAddress.js","import":"/engine/network/realm/addressing/RealmAddress.js","sourceHash":"0dad5f7981b581cc5f9b8235d01b7818ab5f4bc26431f91eea28d2a66c50de9f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/addressing/RealmAddress.js#0003:createRealmAliasRecord","exportIndex":3,"name":"createRealmAliasRecord","kind":"function","signature":"async createRealmAliasRecord(input, signer)","summary":"Create an attributable alias update. Aliases can move; Realm IDs cannot."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/addressing/RealmAddress.md","moduleTitle":"network/realm/addressing/RealmAddress","source":"engine/network/realm/addressing/RealmAddress.js","import":"/engine/network/realm/addressing/RealmAddress.js","sourceHash":"0dad5f7981b581cc5f9b8235d01b7818ab5f4bc26431f91eea28d2a66c50de9f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/addressing/RealmAddress.js#0004:verifyRealmAliasRecord","exportIndex":4,"name":"verifyRealmAliasRecord","kind":"function","signature":"async verifyRealmAliasRecord(record, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/addressing/RealmAddress.md","moduleTitle":"network/realm/addressing/RealmAddress","source":"engine/network/realm/addressing/RealmAddress.js","import":"/engine/network/realm/addressing/RealmAddress.js","sourceHash":"0dad5f7981b581cc5f9b8235d01b7818ab5f4bc26431f91eea28d2a66c50de9f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/addressing/RealmAddress.js#0005:REALM_ALIAS_FORMAT","exportIndex":5,"name":"REALM_ALIAS_FORMAT","kind":"constant","signature":"REALM_ALIAS_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/addressing/RealmIds.md","moduleTitle":"network/realm/addressing/RealmIds","source":"engine/network/realm/addressing/RealmIds.js","import":"/engine/network/realm/addressing/RealmIds.js","sourceHash":"9cd53b8d5e17aba708075d74c5e63c9902f4e24770ac9eca28d7c8ae89507c76","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/addressing/RealmIds.js","title":"network/realm/addressing/RealmIds","summary":"RealmIds.js — stable, typed identifiers for Realm Network resources. IDs are deliberately independent of names, hosts, routes, and storage locations.  The digest is SHA-256 over domain-separated canonical data, so the same control material always produces the same identifier while two resource types can never collide with one another.","exportCount":9}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/addressing/RealmIds.md","moduleTitle":"network/realm/addressing/RealmIds","source":"engine/network/realm/addressing/RealmIds.js","import":"/engine/network/realm/addressing/RealmIds.js","sourceHash":"9cd53b8d5e17aba708075d74c5e63c9902f4e24770ac9eca28d7c8ae89507c76","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/addressing/RealmIds.js#0000:realmKeyFingerprint","exportIndex":0,"name":"realmKeyFingerprint","kind":"function","signature":"async realmKeyFingerprint(publicKey)","summary":"Return the full SHA-256 fingerprint of a raw uncompressed P-256 key."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/addressing/RealmIds.md","moduleTitle":"network/realm/addressing/RealmIds","source":"engine/network/realm/addressing/RealmIds.js","import":"/engine/network/realm/addressing/RealmIds.js","sourceHash":"9cd53b8d5e17aba708075d74c5e63c9902f4e24770ac9eca28d7c8ae89507c76","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/addressing/RealmIds.js#0001:createRealmId","exportIndex":1,"name":"createRealmId","kind":"function","signature":"async createRealmId(type, controlMaterial)","summary":"Derive a typed stable ID from canonical control material. Callers must provide persistent material, never a location or session ID."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/addressing/RealmIds.md","moduleTitle":"network/realm/addressing/RealmIds","source":"engine/network/realm/addressing/RealmIds.js","import":"/engine/network/realm/addressing/RealmIds.js","sourceHash":"9cd53b8d5e17aba708075d74c5e63c9902f4e24770ac9eca28d7c8ae89507c76","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/addressing/RealmIds.js#0002:createKeyControlledRealmId","exportIndex":2,"name":"createKeyControlledRealmId","kind":"function","signature":"async createKeyControlledRealmId(type, publicKey)","summary":"Derive an identity controlled by a specific P-256 public key."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/addressing/RealmIds.md","moduleTitle":"network/realm/addressing/RealmIds","source":"engine/network/realm/addressing/RealmIds.js","import":"/engine/network/realm/addressing/RealmIds.js","sourceHash":"9cd53b8d5e17aba708075d74c5e63c9902f4e24770ac9eca28d7c8ae89507c76","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/addressing/RealmIds.js#0003:createContentRealmId","exportIndex":3,"name":"createContentRealmId","kind":"function","signature":"async createContentRealmId(type, content)","summary":"Derive an immutable content identity from exact bytes."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/addressing/RealmIds.md","moduleTitle":"network/realm/addressing/RealmIds","source":"engine/network/realm/addressing/RealmIds.js","import":"/engine/network/realm/addressing/RealmIds.js","sourceHash":"9cd53b8d5e17aba708075d74c5e63c9902f4e24770ac9eca28d7c8ae89507c76","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/addressing/RealmIds.js#0004:parseRealmId","exportIndex":4,"name":"parseRealmId","kind":"function","signature":"parseRealmId(id)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/addressing/RealmIds.md","moduleTitle":"network/realm/addressing/RealmIds","source":"engine/network/realm/addressing/RealmIds.js","import":"/engine/network/realm/addressing/RealmIds.js","sourceHash":"9cd53b8d5e17aba708075d74c5e63c9902f4e24770ac9eca28d7c8ae89507c76","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/addressing/RealmIds.js#0005:isRealmId","exportIndex":5,"name":"isRealmId","kind":"function","signature":"isRealmId(id, expectedType = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/addressing/RealmIds.md","moduleTitle":"network/realm/addressing/RealmIds","source":"engine/network/realm/addressing/RealmIds.js","import":"/engine/network/realm/addressing/RealmIds.js","sourceHash":"9cd53b8d5e17aba708075d74c5e63c9902f4e24770ac9eca28d7c8ae89507c76","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/addressing/RealmIds.js#0006:assertRealmId","exportIndex":6,"name":"assertRealmId","kind":"function","signature":"assertRealmId(id, expectedType = null, label = 'Realm ID')","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/addressing/RealmIds.md","moduleTitle":"network/realm/addressing/RealmIds","source":"engine/network/realm/addressing/RealmIds.js","import":"/engine/network/realm/addressing/RealmIds.js","sourceHash":"9cd53b8d5e17aba708075d74c5e63c9902f4e24770ac9eca28d7c8ae89507c76","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/addressing/RealmIds.js#0007:REALM_ID_FORMAT","exportIndex":7,"name":"REALM_ID_FORMAT","kind":"constant","signature":"REALM_ID_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/addressing/RealmIds.md","moduleTitle":"network/realm/addressing/RealmIds","source":"engine/network/realm/addressing/RealmIds.js","import":"/engine/network/realm/addressing/RealmIds.js","sourceHash":"9cd53b8d5e17aba708075d74c5e63c9902f4e24770ac9eca28d7c8ae89507c76","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/addressing/RealmIds.js#0008:REALM_ID_TYPE","exportIndex":8,"name":"REALM_ID_TYPE","kind":"constant","signature":"REALM_ID_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/addressing/index.md","moduleTitle":"network/realm/addressing/index","source":"engine/network/realm/addressing/index.js","import":"/engine/network/realm/addressing/index.js","sourceHash":"e4e0dfd366c4c12367db2388a479262029f415316e7aa8013561a17b608b46e7","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/addressing/index.js","title":"network/realm/addressing/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/atlas/AtlasProviders.md","moduleTitle":"network/realm/atlas/AtlasProviders","source":"engine/network/realm/atlas/AtlasProviders.js","import":"/engine/network/realm/atlas/AtlasProviders.js","sourceHash":"c2a15b7b1f75719ed53c4a3a6ac2f10e5be5aea8899b3329f5ff242ccfe1c52f","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/atlas/AtlasProviders.js","title":"network/realm/atlas/AtlasProviders","summary":"Feature-gated Atlas provider contracts with bounded verified in-memory stores.","exportCount":9}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/atlas/AtlasProviders.md","moduleTitle":"network/realm/atlas/AtlasProviders","source":"engine/network/realm/atlas/AtlasProviders.js","import":"/engine/network/realm/atlas/AtlasProviders.js","sourceHash":"c2a15b7b1f75719ed53c4a3a6ac2f10e5be5aea8899b3329f5ff242ccfe1c52f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/atlas/AtlasProviders.js#0000:AtlasRecordProvider","exportIndex":0,"name":"AtlasRecordProvider","kind":"class","signature":"class AtlasRecordProvider","summary":"A complete bounded provider suitable for local, direct-contact, organization, and peer-gossip adapters. Network code passes verified records into this contract; no provider becomes active until explicitly enabled."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/atlas/AtlasProviders.md","moduleTitle":"network/realm/atlas/AtlasProviders","source":"engine/network/realm/atlas/AtlasProviders.js","import":"/engine/network/realm/atlas/AtlasProviders.js","sourceHash":"c2a15b7b1f75719ed53c4a3a6ac2f10e5be5aea8899b3329f5ff242ccfe1c52f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/atlas/AtlasProviders.js#0001:atlasProviderAllowsVisibility","exportIndex":1,"name":"atlasProviderAllowsVisibility","kind":"function","signature":"atlasProviderAllowsVisibility(kind, visibility)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/atlas/AtlasProviders.md","moduleTitle":"network/realm/atlas/AtlasProviders","source":"engine/network/realm/atlas/AtlasProviders.js","import":"/engine/network/realm/atlas/AtlasProviders.js","sourceHash":"c2a15b7b1f75719ed53c4a3a6ac2f10e5be5aea8899b3329f5ff242ccfe1c52f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/atlas/AtlasProviders.js#0002:createLocalAtlasProvider","exportIndex":2,"name":"createLocalAtlasProvider","kind":"function","signature":"createLocalAtlasProvider(options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/atlas/AtlasProviders.md","moduleTitle":"network/realm/atlas/AtlasProviders","source":"engine/network/realm/atlas/AtlasProviders.js","import":"/engine/network/realm/atlas/AtlasProviders.js","sourceHash":"c2a15b7b1f75719ed53c4a3a6ac2f10e5be5aea8899b3329f5ff242ccfe1c52f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/atlas/AtlasProviders.js#0003:createContactAtlasProvider","exportIndex":3,"name":"createContactAtlasProvider","kind":"function","signature":"createContactAtlasProvider(options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/atlas/AtlasProviders.md","moduleTitle":"network/realm/atlas/AtlasProviders","source":"engine/network/realm/atlas/AtlasProviders.js","import":"/engine/network/realm/atlas/AtlasProviders.js","sourceHash":"c2a15b7b1f75719ed53c4a3a6ac2f10e5be5aea8899b3329f5ff242ccfe1c52f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/atlas/AtlasProviders.js#0004:createOrganizationAtlasProvider","exportIndex":4,"name":"createOrganizationAtlasProvider","kind":"function","signature":"createOrganizationAtlasProvider(options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/atlas/AtlasProviders.md","moduleTitle":"network/realm/atlas/AtlasProviders","source":"engine/network/realm/atlas/AtlasProviders.js","import":"/engine/network/realm/atlas/AtlasProviders.js","sourceHash":"c2a15b7b1f75719ed53c4a3a6ac2f10e5be5aea8899b3329f5ff242ccfe1c52f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/atlas/AtlasProviders.js#0005:createPeerGossipAtlasProvider","exportIndex":5,"name":"createPeerGossipAtlasProvider","kind":"function","signature":"createPeerGossipAtlasProvider(options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/atlas/AtlasProviders.md","moduleTitle":"network/realm/atlas/AtlasProviders","source":"engine/network/realm/atlas/AtlasProviders.js","import":"/engine/network/realm/atlas/AtlasProviders.js","sourceHash":"c2a15b7b1f75719ed53c4a3a6ac2f10e5be5aea8899b3329f5ff242ccfe1c52f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/atlas/AtlasProviders.js#0006:ATLAS_PROVIDER_KIND","exportIndex":6,"name":"ATLAS_PROVIDER_KIND","kind":"constant","signature":"ATLAS_PROVIDER_KIND","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/atlas/AtlasProviders.md","moduleTitle":"network/realm/atlas/AtlasProviders","source":"engine/network/realm/atlas/AtlasProviders.js","import":"/engine/network/realm/atlas/AtlasProviders.js","sourceHash":"c2a15b7b1f75719ed53c4a3a6ac2f10e5be5aea8899b3329f5ff242ccfe1c52f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/atlas/AtlasProviders.js#0007:ATLAS_PROVIDER_VISIBILITY","exportIndex":7,"name":"ATLAS_PROVIDER_VISIBILITY","kind":"constant","signature":"ATLAS_PROVIDER_VISIBILITY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/atlas/AtlasProviders.md","moduleTitle":"network/realm/atlas/AtlasProviders","source":"engine/network/realm/atlas/AtlasProviders.js","import":"/engine/network/realm/atlas/AtlasProviders.js","sourceHash":"c2a15b7b1f75719ed53c4a3a6ac2f10e5be5aea8899b3329f5ff242ccfe1c52f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/atlas/AtlasProviders.js#0008:AtlasProviderV1","exportIndex":8,"name":"AtlasProviderV1","kind":"constant","signature":"AtlasProviderV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/atlas/AtlasRecordV1.md","moduleTitle":"network/realm/atlas/AtlasRecordV1","source":"engine/network/realm/atlas/AtlasRecordV1.js","import":"/engine/network/realm/atlas/AtlasRecordV1.js","sourceHash":"9b1be1220b46f2dafd1b8a0fff1e096d5c03a7ee4c21d2a63a72b91a2d251bd4","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/atlas/AtlasRecordV1.js","title":"network/realm/atlas/AtlasRecordV1","summary":"Signed, bounded Realm Atlas publication records and visibility policy.","exportCount":11}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/atlas/AtlasRecordV1.md","moduleTitle":"network/realm/atlas/AtlasRecordV1","source":"engine/network/realm/atlas/AtlasRecordV1.js","import":"/engine/network/realm/atlas/AtlasRecordV1.js","sourceHash":"9b1be1220b46f2dafd1b8a0fff1e096d5c03a7ee4c21d2a63a72b91a2d251bd4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/atlas/AtlasRecordV1.js#0000:AtlasReplayGuard","exportIndex":0,"name":"AtlasReplayGuard","kind":"class","signature":"class AtlasReplayGuard","summary":"Monotonic per-publisher replay guard for verified Atlas histories."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/atlas/AtlasRecordV1.md","moduleTitle":"network/realm/atlas/AtlasRecordV1","source":"engine/network/realm/atlas/AtlasRecordV1.js","import":"/engine/network/realm/atlas/AtlasRecordV1.js","sourceHash":"9b1be1220b46f2dafd1b8a0fff1e096d5c03a7ee4c21d2a63a72b91a2d251bd4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/atlas/AtlasRecordV1.js#0001:createAtlasRecordV1","exportIndex":1,"name":"createAtlasRecordV1","kind":"function","signature":"async createAtlasRecordV1(input, signer)","summary":"Create a signed immutable AtlasRecordV1."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/atlas/AtlasRecordV1.md","moduleTitle":"network/realm/atlas/AtlasRecordV1","source":"engine/network/realm/atlas/AtlasRecordV1.js","import":"/engine/network/realm/atlas/AtlasRecordV1.js","sourceHash":"9b1be1220b46f2dafd1b8a0fff1e096d5c03a7ee4c21d2a63a72b91a2d251bd4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/atlas/AtlasRecordV1.js#0002:verifyAtlasRecordV1","exportIndex":2,"name":"verifyAtlasRecordV1","kind":"function","signature":"async verifyAtlasRecordV1(record, { now = Date.now()","summary":"Verify canonical structure, SHA-256 identity, signature, freshness, and optional publisher authority."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/atlas/AtlasRecordV1.md","moduleTitle":"network/realm/atlas/AtlasRecordV1","source":"engine/network/realm/atlas/AtlasRecordV1.js","import":"/engine/network/realm/atlas/AtlasRecordV1.js","sourceHash":"9b1be1220b46f2dafd1b8a0fff1e096d5c03a7ee4c21d2a63a72b91a2d251bd4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/atlas/AtlasRecordV1.js#0003:atlasVisibilitySemantics","exportIndex":3,"name":"atlasVisibilitySemantics","kind":"function","signature":"atlasVisibilitySemantics(visibility)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/atlas/AtlasRecordV1.md","moduleTitle":"network/realm/atlas/AtlasRecordV1","source":"engine/network/realm/atlas/AtlasRecordV1.js","import":"/engine/network/realm/atlas/AtlasRecordV1.js","sourceHash":"9b1be1220b46f2dafd1b8a0fff1e096d5c03a7ee4c21d2a63a72b91a2d251bd4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/atlas/AtlasRecordV1.js#0004:canAccessAtlasRecordV1","exportIndex":4,"name":"canAccessAtlasRecordV1","kind":"function","signature":"canAccessAtlasRecordV1(record, context = {})","summary":"Evaluate a viewer against the signed audience without granting entry permissions."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/atlas/AtlasRecordV1.md","moduleTitle":"network/realm/atlas/AtlasRecordV1","source":"engine/network/realm/atlas/AtlasRecordV1.js","import":"/engine/network/realm/atlas/AtlasRecordV1.js","sourceHash":"9b1be1220b46f2dafd1b8a0fff1e096d5c03a7ee4c21d2a63a72b91a2d251bd4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/atlas/AtlasRecordV1.js#0005:ATLAS_RECORD_FORMAT","exportIndex":5,"name":"ATLAS_RECORD_FORMAT","kind":"constant","signature":"ATLAS_RECORD_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/atlas/AtlasRecordV1.md","moduleTitle":"network/realm/atlas/AtlasRecordV1","source":"engine/network/realm/atlas/AtlasRecordV1.js","import":"/engine/network/realm/atlas/AtlasRecordV1.js","sourceHash":"9b1be1220b46f2dafd1b8a0fff1e096d5c03a7ee4c21d2a63a72b91a2d251bd4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/atlas/AtlasRecordV1.js#0006:ATLAS_RECORD_MAX_BYTES","exportIndex":6,"name":"ATLAS_RECORD_MAX_BYTES","kind":"constant","signature":"ATLAS_RECORD_MAX_BYTES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/atlas/AtlasRecordV1.md","moduleTitle":"network/realm/atlas/AtlasRecordV1","source":"engine/network/realm/atlas/AtlasRecordV1.js","import":"/engine/network/realm/atlas/AtlasRecordV1.js","sourceHash":"9b1be1220b46f2dafd1b8a0fff1e096d5c03a7ee4c21d2a63a72b91a2d251bd4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/atlas/AtlasRecordV1.js#0007:ATLAS_RECORD_MAX_TTL_MS","exportIndex":7,"name":"ATLAS_RECORD_MAX_TTL_MS","kind":"constant","signature":"ATLAS_RECORD_MAX_TTL_MS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/atlas/AtlasRecordV1.md","moduleTitle":"network/realm/atlas/AtlasRecordV1","source":"engine/network/realm/atlas/AtlasRecordV1.js","import":"/engine/network/realm/atlas/AtlasRecordV1.js","sourceHash":"9b1be1220b46f2dafd1b8a0fff1e096d5c03a7ee4c21d2a63a72b91a2d251bd4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/atlas/AtlasRecordV1.js#0008:ATLAS_RECORD_MIN_TTL_MS","exportIndex":8,"name":"ATLAS_RECORD_MIN_TTL_MS","kind":"constant","signature":"ATLAS_RECORD_MIN_TTL_MS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/atlas/AtlasRecordV1.md","moduleTitle":"network/realm/atlas/AtlasRecordV1","source":"engine/network/realm/atlas/AtlasRecordV1.js","import":"/engine/network/realm/atlas/AtlasRecordV1.js","sourceHash":"9b1be1220b46f2dafd1b8a0fff1e096d5c03a7ee4c21d2a63a72b91a2d251bd4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/atlas/AtlasRecordV1.js#0009:ATLAS_VISIBILITY","exportIndex":9,"name":"ATLAS_VISIBILITY","kind":"constant","signature":"ATLAS_VISIBILITY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/atlas/AtlasRecordV1.md","moduleTitle":"network/realm/atlas/AtlasRecordV1","source":"engine/network/realm/atlas/AtlasRecordV1.js","import":"/engine/network/realm/atlas/AtlasRecordV1.js","sourceHash":"9b1be1220b46f2dafd1b8a0fff1e096d5c03a7ee4c21d2a63a72b91a2d251bd4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/atlas/AtlasRecordV1.js#0010:AtlasRecordV1","exportIndex":10,"name":"AtlasRecordV1","kind":"constant","signature":"AtlasRecordV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/atlas/BoundedServerAtlasProvider.md","moduleTitle":"network/realm/atlas/BoundedServerAtlasProvider","source":"engine/network/realm/atlas/BoundedServerAtlasProvider.js","import":"/engine/network/realm/atlas/BoundedServerAtlasProvider.js","sourceHash":"c23a9b910b3435ee93115c3033d0f47e137ca835509f748bbf958ca9fb9fb481","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/atlas/BoundedServerAtlasProvider.js","title":"network/realm/atlas/BoundedServerAtlasProvider","summary":"Optional opaque V3 Atlas provider matching the bounded ephemeral server contract.","exportCount":10}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/atlas/BoundedServerAtlasProvider.md","moduleTitle":"network/realm/atlas/BoundedServerAtlasProvider","source":"engine/network/realm/atlas/BoundedServerAtlasProvider.js","import":"/engine/network/realm/atlas/BoundedServerAtlasProvider.js","sourceHash":"c23a9b910b3435ee93115c3033d0f47e137ca835509f748bbf958ca9fb9fb481","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/atlas/BoundedServerAtlasProvider.js#0000:BoundedServerAtlasProvider","exportIndex":0,"name":"BoundedServerAtlasProvider","kind":"class","signature":"class BoundedServerAtlasProvider","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/atlas/BoundedServerAtlasProvider.md","moduleTitle":"network/realm/atlas/BoundedServerAtlasProvider","source":"engine/network/realm/atlas/BoundedServerAtlasProvider.js","import":"/engine/network/realm/atlas/BoundedServerAtlasProvider.js","sourceHash":"c23a9b910b3435ee93115c3033d0f47e137ca835509f748bbf958ca9fb9fb481","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/atlas/BoundedServerAtlasProvider.js#0001:deriveAtlasScopeTag","exportIndex":1,"name":"deriveAtlasScopeTag","kind":"function","signature":"async deriveAtlasScopeTag(scopeKey)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/atlas/BoundedServerAtlasProvider.md","moduleTitle":"network/realm/atlas/BoundedServerAtlasProvider","source":"engine/network/realm/atlas/BoundedServerAtlasProvider.js","import":"/engine/network/realm/atlas/BoundedServerAtlasProvider.js","sourceHash":"c23a9b910b3435ee93115c3033d0f47e137ca835509f748bbf958ca9fb9fb481","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/atlas/BoundedServerAtlasProvider.js#0002:createServerAtlasAdvertisement","exportIndex":2,"name":"createServerAtlasAdvertisement","kind":"function","signature":"async createServerAtlasAdvertisement(record, { scopeKey, signer, issuedAt = Math.floor(Date.now()","summary":"Build the exact opaque advertisement accepted by the additive V3 server."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/atlas/BoundedServerAtlasProvider.md","moduleTitle":"network/realm/atlas/BoundedServerAtlasProvider","source":"engine/network/realm/atlas/BoundedServerAtlasProvider.js","import":"/engine/network/realm/atlas/BoundedServerAtlasProvider.js","sourceHash":"c23a9b910b3435ee93115c3033d0f47e137ca835509f748bbf958ca9fb9fb481","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/atlas/BoundedServerAtlasProvider.js#0003:verifyServerAtlasAdvertisement","exportIndex":3,"name":"verifyServerAtlasAdvertisement","kind":"function","signature":"async verifyServerAtlasAdvertisement(record, { now = Math.floor(Date.now()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/atlas/BoundedServerAtlasProvider.md","moduleTitle":"network/realm/atlas/BoundedServerAtlasProvider","source":"engine/network/realm/atlas/BoundedServerAtlasProvider.js","import":"/engine/network/realm/atlas/BoundedServerAtlasProvider.js","sourceHash":"c23a9b910b3435ee93115c3033d0f47e137ca835509f748bbf958ca9fb9fb481","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/atlas/BoundedServerAtlasProvider.js#0004:openServerAtlasAdvertisement","exportIndex":4,"name":"openServerAtlasAdvertisement","kind":"function","signature":"async openServerAtlasAdvertisement(advertisement, { scopeKey, now = Date.now()","summary":"Verify and decrypt one V3 envelope without trusting the server that stored it."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/atlas/BoundedServerAtlasProvider.md","moduleTitle":"network/realm/atlas/BoundedServerAtlasProvider","source":"engine/network/realm/atlas/BoundedServerAtlasProvider.js","import":"/engine/network/realm/atlas/BoundedServerAtlasProvider.js","sourceHash":"c23a9b910b3435ee93115c3033d0f47e137ca835509f748bbf958ca9fb9fb481","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/atlas/BoundedServerAtlasProvider.js#0005:SERVER_ATLAS_ADVERTISEMENT_FORMAT","exportIndex":5,"name":"SERVER_ATLAS_ADVERTISEMENT_FORMAT","kind":"constant","signature":"SERVER_ATLAS_ADVERTISEMENT_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/atlas/BoundedServerAtlasProvider.md","moduleTitle":"network/realm/atlas/BoundedServerAtlasProvider","source":"engine/network/realm/atlas/BoundedServerAtlasProvider.js","import":"/engine/network/realm/atlas/BoundedServerAtlasProvider.js","sourceHash":"c23a9b910b3435ee93115c3033d0f47e137ca835509f748bbf958ca9fb9fb481","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/atlas/BoundedServerAtlasProvider.js#0006:SERVER_ATLAS_MAX_TTL_SECONDS","exportIndex":6,"name":"SERVER_ATLAS_MAX_TTL_SECONDS","kind":"constant","signature":"SERVER_ATLAS_MAX_TTL_SECONDS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/atlas/BoundedServerAtlasProvider.md","moduleTitle":"network/realm/atlas/BoundedServerAtlasProvider","source":"engine/network/realm/atlas/BoundedServerAtlasProvider.js","import":"/engine/network/realm/atlas/BoundedServerAtlasProvider.js","sourceHash":"c23a9b910b3435ee93115c3033d0f47e137ca835509f748bbf958ca9fb9fb481","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/atlas/BoundedServerAtlasProvider.js#0007:SERVER_ATLAS_MAX_PAYLOAD_BYTES","exportIndex":7,"name":"SERVER_ATLAS_MAX_PAYLOAD_BYTES","kind":"constant","signature":"SERVER_ATLAS_MAX_PAYLOAD_BYTES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/atlas/BoundedServerAtlasProvider.md","moduleTitle":"network/realm/atlas/BoundedServerAtlasProvider","source":"engine/network/realm/atlas/BoundedServerAtlasProvider.js","import":"/engine/network/realm/atlas/BoundedServerAtlasProvider.js","sourceHash":"c23a9b910b3435ee93115c3033d0f47e137ca835509f748bbf958ca9fb9fb481","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/atlas/BoundedServerAtlasProvider.js#0008:SERVER_ATLAS_MAX_QUERY_RECORDS","exportIndex":8,"name":"SERVER_ATLAS_MAX_QUERY_RECORDS","kind":"constant","signature":"SERVER_ATLAS_MAX_QUERY_RECORDS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/atlas/BoundedServerAtlasProvider.md","moduleTitle":"network/realm/atlas/BoundedServerAtlasProvider","source":"engine/network/realm/atlas/BoundedServerAtlasProvider.js","import":"/engine/network/realm/atlas/BoundedServerAtlasProvider.js","sourceHash":"c23a9b910b3435ee93115c3033d0f47e137ca835509f748bbf958ca9fb9fb481","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/atlas/BoundedServerAtlasProvider.js#0009:BoundedAtlasTransportV1","exportIndex":9,"name":"BoundedAtlasTransportV1","kind":"constant","signature":"BoundedAtlasTransportV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/atlas/index.md","moduleTitle":"network/realm/atlas/index","source":"engine/network/realm/atlas/index.js","import":"/engine/network/realm/atlas/index.js","sourceHash":"7a6ad56d9368a220befb2eb08c82b3149194ef20ac2c29c2db271dee2b3eccab","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/atlas/index.js","title":"network/realm/atlas/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/authority/AuthorityHandoff.md","moduleTitle":"network/realm/authority/AuthorityHandoff","source":"engine/network/realm/authority/AuthorityHandoff.js","import":"/engine/network/realm/authority/AuthorityHandoff.js","sourceHash":"ae55204b2f378b8a1997a29cd2e1c42efb192c1163c1d7865becc4b3da7dbef6","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/authority/AuthorityHandoff.js","title":"network/realm/authority/AuthorityHandoff","summary":"Checkpoint-backed, signed authority handoff state machine.","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/authority/AuthorityHandoff.md","moduleTitle":"network/realm/authority/AuthorityHandoff","source":"engine/network/realm/authority/AuthorityHandoff.js","import":"/engine/network/realm/authority/AuthorityHandoff.js","sourceHash":"ae55204b2f378b8a1997a29cd2e1c42efb192c1163c1d7865becc4b3da7dbef6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/authority/AuthorityHandoff.js#0000:AuthorityHandoffCoordinator","exportIndex":0,"name":"AuthorityHandoffCoordinator","kind":"class","signature":"class AuthorityHandoffCoordinator","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/authority/AuthorityHandoff.md","moduleTitle":"network/realm/authority/AuthorityHandoff","source":"engine/network/realm/authority/AuthorityHandoff.js","import":"/engine/network/realm/authority/AuthorityHandoff.js","sourceHash":"ae55204b2f378b8a1997a29cd2e1c42efb192c1163c1d7865becc4b3da7dbef6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/authority/AuthorityHandoff.js#0001:createAuthorityHandoffMessage","exportIndex":1,"name":"createAuthorityHandoffMessage","kind":"function","signature":"async createAuthorityHandoffMessage(input, signer)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/authority/AuthorityHandoff.md","moduleTitle":"network/realm/authority/AuthorityHandoff","source":"engine/network/realm/authority/AuthorityHandoff.js","import":"/engine/network/realm/authority/AuthorityHandoff.js","sourceHash":"ae55204b2f378b8a1997a29cd2e1c42efb192c1163c1d7865becc4b3da7dbef6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/authority/AuthorityHandoff.js#0002:verifyAuthorityHandoffMessage","exportIndex":2,"name":"verifyAuthorityHandoffMessage","kind":"function","signature":"async verifyAuthorityHandoffMessage(message, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/authority/AuthorityHandoff.md","moduleTitle":"network/realm/authority/AuthorityHandoff","source":"engine/network/realm/authority/AuthorityHandoff.js","import":"/engine/network/realm/authority/AuthorityHandoff.js","sourceHash":"ae55204b2f378b8a1997a29cd2e1c42efb192c1163c1d7865becc4b3da7dbef6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/authority/AuthorityHandoff.js#0003:AUTHORITY_HANDOFF_FORMAT","exportIndex":3,"name":"AUTHORITY_HANDOFF_FORMAT","kind":"constant","signature":"AUTHORITY_HANDOFF_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/authority/AuthorityHandoff.md","moduleTitle":"network/realm/authority/AuthorityHandoff","source":"engine/network/realm/authority/AuthorityHandoff.js","import":"/engine/network/realm/authority/AuthorityHandoff.js","sourceHash":"ae55204b2f378b8a1997a29cd2e1c42efb192c1163c1d7865becc4b3da7dbef6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/authority/AuthorityHandoff.js#0004:AUTHORITY_HANDOFF_STAGE","exportIndex":4,"name":"AUTHORITY_HANDOFF_STAGE","kind":"constant","signature":"AUTHORITY_HANDOFF_STAGE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/authority/AuthorityLease.md","moduleTitle":"network/realm/authority/AuthorityLease","source":"engine/network/realm/authority/AuthorityLease.js","import":"/engine/network/realm/authority/AuthorityLease.js","sourceHash":"44c31cf512d713e4fd0e5326c4469ed4fd4bcc69bcfd207c2426473b90772e69","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/authority/AuthorityLease.js","title":"network/realm/authority/AuthorityLease","summary":"Signed, fenced authority leases for semantic Realm state. Leases are explicit records. They never confer authority merely because a peer has a connection, hosts a transport, or possesses a Capsule. Every mutation must present the active lease ID and its monotonically increasing fencing token.","exportCount":8}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/authority/AuthorityLease.md","moduleTitle":"network/realm/authority/AuthorityLease","source":"engine/network/realm/authority/AuthorityLease.js","import":"/engine/network/realm/authority/AuthorityLease.js","sourceHash":"44c31cf512d713e4fd0e5326c4469ed4fd4bcc69bcfd207c2426473b90772e69","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/authority/AuthorityLease.js#0000:createAuthorityLease","exportIndex":0,"name":"createAuthorityLease","kind":"function","signature":"async createAuthorityLease(input, signer)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/authority/AuthorityLease.md","moduleTitle":"network/realm/authority/AuthorityLease","source":"engine/network/realm/authority/AuthorityLease.js","import":"/engine/network/realm/authority/AuthorityLease.js","sourceHash":"44c31cf512d713e4fd0e5326c4469ed4fd4bcc69bcfd207c2426473b90772e69","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/authority/AuthorityLease.js#0001:renewAuthorityLease","exportIndex":1,"name":"renewAuthorityLease","kind":"function","signature":"async renewAuthorityLease(previous, input, signer)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/authority/AuthorityLease.md","moduleTitle":"network/realm/authority/AuthorityLease","source":"engine/network/realm/authority/AuthorityLease.js","import":"/engine/network/realm/authority/AuthorityLease.js","sourceHash":"44c31cf512d713e4fd0e5326c4469ed4fd4bcc69bcfd207c2426473b90772e69","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/authority/AuthorityLease.js#0002:verifyAuthorityLease","exportIndex":2,"name":"verifyAuthorityLease","kind":"function","signature":"async verifyAuthorityLease(lease, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/authority/AuthorityLease.md","moduleTitle":"network/realm/authority/AuthorityLease","source":"engine/network/realm/authority/AuthorityLease.js","import":"/engine/network/realm/authority/AuthorityLease.js","sourceHash":"44c31cf512d713e4fd0e5326c4469ed4fd4bcc69bcfd207c2426473b90772e69","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/authority/AuthorityLease.js#0003:createAuthorityRevocation","exportIndex":3,"name":"createAuthorityRevocation","kind":"function","signature":"async createAuthorityRevocation(input, signer)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/authority/AuthorityLease.md","moduleTitle":"network/realm/authority/AuthorityLease","source":"engine/network/realm/authority/AuthorityLease.js","import":"/engine/network/realm/authority/AuthorityLease.js","sourceHash":"44c31cf512d713e4fd0e5326c4469ed4fd4bcc69bcfd207c2426473b90772e69","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/authority/AuthorityLease.js#0004:verifyAuthorityRevocation","exportIndex":4,"name":"verifyAuthorityRevocation","kind":"function","signature":"async verifyAuthorityRevocation(record, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/authority/AuthorityLease.md","moduleTitle":"network/realm/authority/AuthorityLease","source":"engine/network/realm/authority/AuthorityLease.js","import":"/engine/network/realm/authority/AuthorityLease.js","sourceHash":"44c31cf512d713e4fd0e5326c4469ed4fd4bcc69bcfd207c2426473b90772e69","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/authority/AuthorityLease.js#0005:AUTHORITY_LEASE_FORMAT","exportIndex":5,"name":"AUTHORITY_LEASE_FORMAT","kind":"constant","signature":"AUTHORITY_LEASE_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/authority/AuthorityLease.md","moduleTitle":"network/realm/authority/AuthorityLease","source":"engine/network/realm/authority/AuthorityLease.js","import":"/engine/network/realm/authority/AuthorityLease.js","sourceHash":"44c31cf512d713e4fd0e5326c4469ed4fd4bcc69bcfd207c2426473b90772e69","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/authority/AuthorityLease.js#0006:AUTHORITY_REVOCATION_FORMAT","exportIndex":6,"name":"AUTHORITY_REVOCATION_FORMAT","kind":"constant","signature":"AUTHORITY_REVOCATION_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/authority/AuthorityLease.md","moduleTitle":"network/realm/authority/AuthorityLease","source":"engine/network/realm/authority/AuthorityLease.js","import":"/engine/network/realm/authority/AuthorityLease.js","sourceHash":"44c31cf512d713e4fd0e5326c4469ed4fd4bcc69bcfd207c2426473b90772e69","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/authority/AuthorityLease.js#0007:AUTHORITY_POLICY","exportIndex":7,"name":"AUTHORITY_POLICY","kind":"constant","signature":"AUTHORITY_POLICY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/authority/AuthorityLeaseManager.md","moduleTitle":"network/realm/authority/AuthorityLeaseManager","source":"engine/network/realm/authority/AuthorityLeaseManager.js","import":"/engine/network/realm/authority/AuthorityLeaseManager.js","sourceHash":"ee868e22afb858732a47acf02c832fa7a0e6202d7f77fbb956f6d2692bc90cf7","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/authority/AuthorityLeaseManager.js","title":"network/realm/authority/AuthorityLeaseManager","summary":"In-memory authority decision engine; persistence is supplied by the caller.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/authority/AuthorityLeaseManager.md","moduleTitle":"network/realm/authority/AuthorityLeaseManager","source":"engine/network/realm/authority/AuthorityLeaseManager.js","import":"/engine/network/realm/authority/AuthorityLeaseManager.js","sourceHash":"ee868e22afb858732a47acf02c832fa7a0e6202d7f77fbb956f6d2692bc90cf7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/authority/AuthorityLeaseManager.js#0000:AuthorityLeaseManager","exportIndex":0,"name":"AuthorityLeaseManager","kind":"class","signature":"class AuthorityLeaseManager","summary":"In-memory authority decision engine; persistence is supplied by the caller."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/authority/AuthorityLeaseManager.md","moduleTitle":"network/realm/authority/AuthorityLeaseManager","source":"engine/network/realm/authority/AuthorityLeaseManager.js","import":"/engine/network/realm/authority/AuthorityLeaseManager.js","sourceHash":"ee868e22afb858732a47acf02c832fa7a0e6202d7f77fbb956f6d2692bc90cf7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/authority/AuthorityLeaseManager.js#0001:createAuthorityLeaseManager","exportIndex":1,"name":"createAuthorityLeaseManager","kind":"function","signature":"createAuthorityLeaseManager(options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/authority/HostMigrationQuorum.md","moduleTitle":"network/realm/authority/HostMigrationQuorum","source":"engine/network/realm/authority/HostMigrationQuorum.js","import":"/engine/network/realm/authority/HostMigrationQuorum.js","sourceHash":"4e6a8c275c4b3080cc155b94e14a0f64f1ae480f70d0a166642b0281dd91a6ff","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/authority/HostMigrationQuorum.js","title":"network/realm/authority/HostMigrationQuorum","summary":"","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/authority/HostMigrationQuorum.md","moduleTitle":"network/realm/authority/HostMigrationQuorum","source":"engine/network/realm/authority/HostMigrationQuorum.js","import":"/engine/network/realm/authority/HostMigrationQuorum.js","sourceHash":"4e6a8c275c4b3080cc155b94e14a0f64f1ae480f70d0a166642b0281dd91a6ff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/authority/HostMigrationQuorum.js#0000:HostMigrationQuorum","exportIndex":0,"name":"HostMigrationQuorum","kind":"class","signature":"class HostMigrationQuorum","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/authority/HostMigrationQuorum.md","moduleTitle":"network/realm/authority/HostMigrationQuorum","source":"engine/network/realm/authority/HostMigrationQuorum.js","import":"/engine/network/realm/authority/HostMigrationQuorum.js","sourceHash":"4e6a8c275c4b3080cc155b94e14a0f64f1ae480f70d0a166642b0281dd91a6ff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/authority/HostMigrationQuorum.js#0001:createHostMigrationVote","exportIndex":1,"name":"createHostMigrationVote","kind":"function","signature":"async createHostMigrationVote(input, signer)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/authority/HostMigrationQuorum.md","moduleTitle":"network/realm/authority/HostMigrationQuorum","source":"engine/network/realm/authority/HostMigrationQuorum.js","import":"/engine/network/realm/authority/HostMigrationQuorum.js","sourceHash":"4e6a8c275c4b3080cc155b94e14a0f64f1ae480f70d0a166642b0281dd91a6ff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/authority/HostMigrationQuorum.js#0002:verifyHostMigrationVote","exportIndex":2,"name":"verifyHostMigrationVote","kind":"function","signature":"async verifyHostMigrationVote(vote, authorizeVoter = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/authority/HostMigrationQuorum.md","moduleTitle":"network/realm/authority/HostMigrationQuorum","source":"engine/network/realm/authority/HostMigrationQuorum.js","import":"/engine/network/realm/authority/HostMigrationQuorum.js","sourceHash":"4e6a8c275c4b3080cc155b94e14a0f64f1ae480f70d0a166642b0281dd91a6ff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/authority/HostMigrationQuorum.js#0003:HOST_MIGRATION_VOTE_FORMAT","exportIndex":3,"name":"HOST_MIGRATION_VOTE_FORMAT","kind":"constant","signature":"HOST_MIGRATION_VOTE_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/authority/SemanticReplication.md","moduleTitle":"network/realm/authority/SemanticReplication","source":"engine/network/realm/authority/SemanticReplication.js","import":"/engine/network/realm/authority/SemanticReplication.js","sourceHash":"e6d7181a8e85d9e9155637e3f6bcc83a63fed47bfa22edd63936a498ee7dfd6e","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/authority/SemanticReplication.js","title":"network/realm/authority/SemanticReplication","summary":"Semantic replication records, idempotent inboxes, resumable outboxes, and divergence evidence.","exportCount":11}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/authority/SemanticReplication.md","moduleTitle":"network/realm/authority/SemanticReplication","source":"engine/network/realm/authority/SemanticReplication.js","import":"/engine/network/realm/authority/SemanticReplication.js","sourceHash":"e6d7181a8e85d9e9155637e3f6bcc83a63fed47bfa22edd63936a498ee7dfd6e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/authority/SemanticReplication.js#0000:SemanticInbox","exportIndex":0,"name":"SemanticInbox","kind":"class","signature":"class SemanticInbox","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/authority/SemanticReplication.md","moduleTitle":"network/realm/authority/SemanticReplication","source":"engine/network/realm/authority/SemanticReplication.js","import":"/engine/network/realm/authority/SemanticReplication.js","sourceHash":"e6d7181a8e85d9e9155637e3f6bcc83a63fed47bfa22edd63936a498ee7dfd6e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/authority/SemanticReplication.js#0001:SemanticOutbox","exportIndex":1,"name":"SemanticOutbox","kind":"class","signature":"class SemanticOutbox","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/authority/SemanticReplication.md","moduleTitle":"network/realm/authority/SemanticReplication","source":"engine/network/realm/authority/SemanticReplication.js","import":"/engine/network/realm/authority/SemanticReplication.js","sourceHash":"e6d7181a8e85d9e9155637e3f6bcc83a63fed47bfa22edd63936a498ee7dfd6e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/authority/SemanticReplication.js#0002:createSemanticRecord","exportIndex":2,"name":"createSemanticRecord","kind":"function","signature":"createSemanticRecord(input, signer)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/authority/SemanticReplication.md","moduleTitle":"network/realm/authority/SemanticReplication","source":"engine/network/realm/authority/SemanticReplication.js","import":"/engine/network/realm/authority/SemanticReplication.js","sourceHash":"e6d7181a8e85d9e9155637e3f6bcc83a63fed47bfa22edd63936a498ee7dfd6e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/authority/SemanticReplication.js#0003:createSemanticDelta","exportIndex":3,"name":"createSemanticDelta","kind":"function","signature":"createSemanticDelta(input, signer)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/authority/SemanticReplication.md","moduleTitle":"network/realm/authority/SemanticReplication","source":"engine/network/realm/authority/SemanticReplication.js","import":"/engine/network/realm/authority/SemanticReplication.js","sourceHash":"e6d7181a8e85d9e9155637e3f6bcc83a63fed47bfa22edd63936a498ee7dfd6e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/authority/SemanticReplication.js#0004:createSemanticCheckpoint","exportIndex":4,"name":"createSemanticCheckpoint","kind":"function","signature":"createSemanticCheckpoint(input, signer)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/authority/SemanticReplication.md","moduleTitle":"network/realm/authority/SemanticReplication","source":"engine/network/realm/authority/SemanticReplication.js","import":"/engine/network/realm/authority/SemanticReplication.js","sourceHash":"e6d7181a8e85d9e9155637e3f6bcc83a63fed47bfa22edd63936a498ee7dfd6e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/authority/SemanticReplication.js#0005:verifySemanticEnvelope","exportIndex":5,"name":"verifySemanticEnvelope","kind":"function","signature":"async verifySemanticEnvelope(value, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/authority/SemanticReplication.md","moduleTitle":"network/realm/authority/SemanticReplication","source":"engine/network/realm/authority/SemanticReplication.js","import":"/engine/network/realm/authority/SemanticReplication.js","sourceHash":"e6d7181a8e85d9e9155637e3f6bcc83a63fed47bfa22edd63936a498ee7dfd6e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/authority/SemanticReplication.js#0006:detectSemanticDivergence","exportIndex":6,"name":"detectSemanticDivergence","kind":"function","signature":"detectSemanticDivergence(local, remote)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/authority/SemanticReplication.md","moduleTitle":"network/realm/authority/SemanticReplication","source":"engine/network/realm/authority/SemanticReplication.js","import":"/engine/network/realm/authority/SemanticReplication.js","sourceHash":"e6d7181a8e85d9e9155637e3f6bcc83a63fed47bfa22edd63936a498ee7dfd6e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/authority/SemanticReplication.js#0007:SEMANTIC_RECORD_FORMAT","exportIndex":7,"name":"SEMANTIC_RECORD_FORMAT","kind":"constant","signature":"SEMANTIC_RECORD_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/authority/SemanticReplication.md","moduleTitle":"network/realm/authority/SemanticReplication","source":"engine/network/realm/authority/SemanticReplication.js","import":"/engine/network/realm/authority/SemanticReplication.js","sourceHash":"e6d7181a8e85d9e9155637e3f6bcc83a63fed47bfa22edd63936a498ee7dfd6e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/authority/SemanticReplication.js#0008:SEMANTIC_DELTA_FORMAT","exportIndex":8,"name":"SEMANTIC_DELTA_FORMAT","kind":"constant","signature":"SEMANTIC_DELTA_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/authority/SemanticReplication.md","moduleTitle":"network/realm/authority/SemanticReplication","source":"engine/network/realm/authority/SemanticReplication.js","import":"/engine/network/realm/authority/SemanticReplication.js","sourceHash":"e6d7181a8e85d9e9155637e3f6bcc83a63fed47bfa22edd63936a498ee7dfd6e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/authority/SemanticReplication.js#0009:SEMANTIC_CHECKPOINT_FORMAT","exportIndex":9,"name":"SEMANTIC_CHECKPOINT_FORMAT","kind":"constant","signature":"SEMANTIC_CHECKPOINT_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/authority/SemanticReplication.md","moduleTitle":"network/realm/authority/SemanticReplication","source":"engine/network/realm/authority/SemanticReplication.js","import":"/engine/network/realm/authority/SemanticReplication.js","sourceHash":"e6d7181a8e85d9e9155637e3f6bcc83a63fed47bfa22edd63936a498ee7dfd6e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/authority/SemanticReplication.js#0010:SEMANTIC_ACK_FORMAT","exportIndex":10,"name":"SEMANTIC_ACK_FORMAT","kind":"constant","signature":"SEMANTIC_ACK_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/authority/index.md","moduleTitle":"network/realm/authority/index","source":"engine/network/realm/authority/index.js","import":"/engine/network/realm/authority/index.js","sourceHash":"a1c9ae805d303835fcae9dbea8354a492fc2fed104bac3554b539b9fdb5d5eee","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/authority/index.js","title":"network/realm/authority/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/BranchStorage.md","moduleTitle":"network/realm/branches/BranchStorage","source":"engine/network/realm/branches/BranchStorage.js","import":"/engine/network/realm/branches/BranchStorage.js","sourceHash":"b31f60b9064534ebf4808bd42bd9e88e25b6a5e9975599ae16bcd74ba961d6ae","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/branches/BranchStorage.js","title":"network/realm/branches/BranchStorage","summary":"Bounded persistent storage adapter for branch metadata and offline queues. Capsule/blob bytes remain in the shared RealmContentStore; this adapter never duplicates content-addressed storage.","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/BranchStorage.md","moduleTitle":"network/realm/branches/BranchStorage","source":"engine/network/realm/branches/BranchStorage.js","import":"/engine/network/realm/branches/BranchStorage.js","sourceHash":"b31f60b9064534ebf4808bd42bd9e88e25b6a5e9975599ae16bcd74ba961d6ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/BranchStorage.js#0000:RealmBranchStorage","exportIndex":0,"name":"RealmBranchStorage","kind":"class","signature":"class RealmBranchStorage","summary":"LocalStorage-compatible persistent key/value adapter."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/BranchStorage.md","moduleTitle":"network/realm/branches/BranchStorage","source":"engine/network/realm/branches/BranchStorage.js","import":"/engine/network/realm/branches/BranchStorage.js","sourceHash":"b31f60b9064534ebf4808bd42bd9e88e25b6a5e9975599ae16bcd74ba961d6ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/BranchStorage.js#0001:prepareRealmBranchStorageRecord","exportIndex":1,"name":"prepareRealmBranchStorageRecord","kind":"function","signature":"prepareRealmBranchStorageRecord(record, label = 'branch storage record')","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/BranchStorage.md","moduleTitle":"network/realm/branches/BranchStorage","source":"engine/network/realm/branches/BranchStorage.js","import":"/engine/network/realm/branches/BranchStorage.js","sourceHash":"b31f60b9064534ebf4808bd42bd9e88e25b6a5e9975599ae16bcd74ba961d6ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/BranchStorage.js#0002:REALM_BRANCH_STORAGE_SCHEMA","exportIndex":2,"name":"REALM_BRANCH_STORAGE_SCHEMA","kind":"constant","signature":"REALM_BRANCH_STORAGE_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/BranchStorage.md","moduleTitle":"network/realm/branches/BranchStorage","source":"engine/network/realm/branches/BranchStorage.js","import":"/engine/network/realm/branches/BranchStorage.js","sourceHash":"b31f60b9064534ebf4808bd42bd9e88e25b6a5e9975599ae16bcd74ba961d6ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/BranchStorage.js#0003:REALM_BRANCH_STORAGE_VERSION","exportIndex":3,"name":"REALM_BRANCH_STORAGE_VERSION","kind":"constant","signature":"REALM_BRANCH_STORAGE_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/MergeProposal.md","moduleTitle":"network/realm/branches/MergeProposal","source":"engine/network/realm/branches/MergeProposal.js","import":"/engine/network/realm/branches/MergeProposal.js","sourceHash":"bb584d590f8a95631131d780526dfc05b0da89f197365ccb930289ea9b37fd35","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/branches/MergeProposal.js","title":"network/realm/branches/MergeProposal","summary":"MergeProposalV1 contracts, dependency-safe decisions, and merge commits.","exportCount":10}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/MergeProposal.md","moduleTitle":"network/realm/branches/MergeProposal","source":"engine/network/realm/branches/MergeProposal.js","import":"/engine/network/realm/branches/MergeProposal.js","sourceHash":"bb584d590f8a95631131d780526dfc05b0da89f197365ccb930289ea9b37fd35","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/MergeProposal.js#0000:createMergeProposal","exportIndex":0,"name":"createMergeProposal","kind":"function","signature":"async createMergeProposal(input, signer)","summary":"Create a signed MergeProposalV1 from a semantic comparison."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/MergeProposal.md","moduleTitle":"network/realm/branches/MergeProposal","source":"engine/network/realm/branches/MergeProposal.js","import":"/engine/network/realm/branches/MergeProposal.js","sourceHash":"bb584d590f8a95631131d780526dfc05b0da89f197365ccb930289ea9b37fd35","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/MergeProposal.js#0001:verifyMergeProposal","exportIndex":1,"name":"verifyMergeProposal","kind":"function","signature":"async verifyMergeProposal(proposal, options = {})","summary":"Verify proposal signature, IDs, dependency DAG, authorization, and expiry."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/MergeProposal.md","moduleTitle":"network/realm/branches/MergeProposal","source":"engine/network/realm/branches/MergeProposal.js","import":"/engine/network/realm/branches/MergeProposal.js","sourceHash":"bb584d590f8a95631131d780526dfc05b0da89f197365ccb930289ea9b37fd35","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/MergeProposal.js#0002:buildDefaultMergeDecisions","exportIndex":2,"name":"buildDefaultMergeDecisions","kind":"function","signature":"buildDefaultMergeDecisions(proposal)","summary":"Default policy: accept clean changes and retain conflicts on the source branch."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/MergeProposal.md","moduleTitle":"network/realm/branches/MergeProposal","source":"engine/network/realm/branches/MergeProposal.js","import":"/engine/network/realm/branches/MergeProposal.js","sourceHash":"bb584d590f8a95631131d780526dfc05b0da89f197365ccb930289ea9b37fd35","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/MergeProposal.js#0003:validateMergeDecisions","exportIndex":3,"name":"validateMergeDecisions","kind":"function","signature":"validateMergeDecisions(proposal, decisions)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/MergeProposal.md","moduleTitle":"network/realm/branches/MergeProposal","source":"engine/network/realm/branches/MergeProposal.js","import":"/engine/network/realm/branches/MergeProposal.js","sourceHash":"bb584d590f8a95631131d780526dfc05b0da89f197365ccb930289ea9b37fd35","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/MergeProposal.js#0004:applyMergeProposal","exportIndex":4,"name":"applyMergeProposal","kind":"function","signature":"async applyMergeProposal({ proposal, decisions, base, mine, theirs }, options = {})","summary":"Apply accepted changes to mine; rejected/conflicting source work is untouched."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/MergeProposal.md","moduleTitle":"network/realm/branches/MergeProposal","source":"engine/network/realm/branches/MergeProposal.js","import":"/engine/network/realm/branches/MergeProposal.js","sourceHash":"bb584d590f8a95631131d780526dfc05b0da89f197365ccb930289ea9b37fd35","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/MergeProposal.js#0005:createMergeCommit","exportIndex":5,"name":"createMergeCommit","kind":"function","signature":"async createMergeCommit(input, signer, options = {})","summary":"Apply a proposal and publish the decision as a signed Chronicle event. Any rejected work receives a stable signed branch rooted at the source head."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/MergeProposal.md","moduleTitle":"network/realm/branches/MergeProposal","source":"engine/network/realm/branches/MergeProposal.js","import":"/engine/network/realm/branches/MergeProposal.js","sourceHash":"bb584d590f8a95631131d780526dfc05b0da89f197365ccb930289ea9b37fd35","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/MergeProposal.js#0006:verifyMergeCommit","exportIndex":6,"name":"verifyMergeCommit","kind":"function","signature":"async verifyMergeCommit(event, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/MergeProposal.md","moduleTitle":"network/realm/branches/MergeProposal","source":"engine/network/realm/branches/MergeProposal.js","import":"/engine/network/realm/branches/MergeProposal.js","sourceHash":"bb584d590f8a95631131d780526dfc05b0da89f197365ccb930289ea9b37fd35","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/MergeProposal.js#0007:MERGE_PROPOSAL_FORMAT","exportIndex":7,"name":"MERGE_PROPOSAL_FORMAT","kind":"constant","signature":"MERGE_PROPOSAL_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/MergeProposal.md","moduleTitle":"network/realm/branches/MergeProposal","source":"engine/network/realm/branches/MergeProposal.js","import":"/engine/network/realm/branches/MergeProposal.js","sourceHash":"bb584d590f8a95631131d780526dfc05b0da89f197365ccb930289ea9b37fd35","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/MergeProposal.js#0008:MERGE_COMMIT_PAYLOAD_FORMAT","exportIndex":8,"name":"MERGE_COMMIT_PAYLOAD_FORMAT","kind":"constant","signature":"MERGE_COMMIT_PAYLOAD_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/MergeProposal.md","moduleTitle":"network/realm/branches/MergeProposal","source":"engine/network/realm/branches/MergeProposal.js","import":"/engine/network/realm/branches/MergeProposal.js","sourceHash":"bb584d590f8a95631131d780526dfc05b0da89f197365ccb930289ea9b37fd35","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/MergeProposal.js#0009:MergeProposalV1","exportIndex":9,"name":"MergeProposalV1","kind":"constant","signature":"MergeProposalV1","summary":"Public MergeProposalV1 contract."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/OfflineOperationQueue.md","moduleTitle":"network/realm/branches/OfflineOperationQueue","source":"engine/network/realm/branches/OfflineOperationQueue.js","import":"/engine/network/realm/branches/OfflineOperationQueue.js","sourceHash":"58fd5ee0038e0ef8536d300fc0e074b86ca72f19512c2d64f4f172efe1db2f6d","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/branches/OfflineOperationQueue.js","title":"network/realm/branches/OfflineOperationQueue","summary":"Persistent, causal, resumable queue for signed offline Chronicle events.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/OfflineOperationQueue.md","moduleTitle":"network/realm/branches/OfflineOperationQueue","source":"engine/network/realm/branches/OfflineOperationQueue.js","import":"/engine/network/realm/branches/OfflineOperationQueue.js","sourceHash":"58fd5ee0038e0ef8536d300fc0e074b86ca72f19512c2d64f4f172efe1db2f6d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/OfflineOperationQueue.js#0000:OfflineOperationQueue","exportIndex":0,"name":"OfflineOperationQueue","kind":"class","signature":"class OfflineOperationQueue","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/OfflineOperationQueue.md","moduleTitle":"network/realm/branches/OfflineOperationQueue","source":"engine/network/realm/branches/OfflineOperationQueue.js","import":"/engine/network/realm/branches/OfflineOperationQueue.js","sourceHash":"58fd5ee0038e0ef8536d300fc0e074b86ca72f19512c2d64f4f172efe1db2f6d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/OfflineOperationQueue.js#0001:OFFLINE_QUEUE_FORMAT","exportIndex":1,"name":"OFFLINE_QUEUE_FORMAT","kind":"constant","signature":"OFFLINE_QUEUE_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/OfflineOperationQueue.md","moduleTitle":"network/realm/branches/OfflineOperationQueue","source":"engine/network/realm/branches/OfflineOperationQueue.js","import":"/engine/network/realm/branches/OfflineOperationQueue.js","sourceHash":"58fd5ee0038e0ef8536d300fc0e074b86ca72f19512c2d64f4f172efe1db2f6d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/OfflineOperationQueue.js#0002:OFFLINE_OPERATION_STATUS","exportIndex":2,"name":"OFFLINE_OPERATION_STATUS","kind":"constant","signature":"OFFLINE_OPERATION_STATUS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/RealmBranch.md","moduleTitle":"network/realm/branches/RealmBranch","source":"engine/network/realm/branches/RealmBranch.js","import":"/engine/network/realm/branches/RealmBranch.js","sourceHash":"81974cf9607263cd53514c7f214beeb34bb830b09bc1eb7d88db4f9f0945efec","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/branches/RealmBranch.js","title":"network/realm/branches/RealmBranch","summary":"RealmBranchV1 identity, ownership, signed-head chains, and branch DAGs.","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/RealmBranch.md","moduleTitle":"network/realm/branches/RealmBranch","source":"engine/network/realm/branches/RealmBranch.js","import":"/engine/network/realm/branches/RealmBranch.js","sourceHash":"81974cf9607263cd53514c7f214beeb34bb830b09bc1eb7d88db4f9f0945efec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/RealmBranch.js#0000:RealmBranchDAG","exportIndex":0,"name":"RealmBranchDAG","kind":"class","signature":"class RealmBranchDAG","summary":"Verified in-memory projection of branch descriptors and RealmBranchRefV1 head chains. Persistence is delegated to BranchStorage.js."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/RealmBranch.md","moduleTitle":"network/realm/branches/RealmBranch","source":"engine/network/realm/branches/RealmBranch.js","import":"/engine/network/realm/branches/RealmBranch.js","sourceHash":"81974cf9607263cd53514c7f214beeb34bb830b09bc1eb7d88db4f9f0945efec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/RealmBranch.js#0001:createRealmBranch","exportIndex":1,"name":"createRealmBranch","kind":"function","signature":"async createRealmBranch(input, signer)","summary":"Create a stable RealmBranchV1. The label is intentionally excluded from the identity derivation, so renaming or alias changes cannot change branch IDs."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/RealmBranch.md","moduleTitle":"network/realm/branches/RealmBranch","source":"engine/network/realm/branches/RealmBranch.js","import":"/engine/network/realm/branches/RealmBranch.js","sourceHash":"81974cf9607263cd53514c7f214beeb34bb830b09bc1eb7d88db4f9f0945efec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/RealmBranch.js#0002:verifyRealmBranch","exportIndex":2,"name":"verifyRealmBranch","kind":"function","signature":"async verifyRealmBranch(branch, options = {})","summary":"Verify branch identity, controller signature, and optional owner authority."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/RealmBranch.md","moduleTitle":"network/realm/branches/RealmBranch","source":"engine/network/realm/branches/RealmBranch.js","import":"/engine/network/realm/branches/RealmBranch.js","sourceHash":"81974cf9607263cd53514c7f214beeb34bb830b09bc1eb7d88db4f9f0945efec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/RealmBranch.js#0003:REALM_BRANCH_FORMAT","exportIndex":3,"name":"REALM_BRANCH_FORMAT","kind":"constant","signature":"REALM_BRANCH_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/RealmBranch.md","moduleTitle":"network/realm/branches/RealmBranch","source":"engine/network/realm/branches/RealmBranch.js","import":"/engine/network/realm/branches/RealmBranch.js","sourceHash":"81974cf9607263cd53514c7f214beeb34bb830b09bc1eb7d88db4f9f0945efec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/RealmBranch.js#0004:REALM_BRANCH_PURPOSE","exportIndex":4,"name":"REALM_BRANCH_PURPOSE","kind":"constant","signature":"REALM_BRANCH_PURPOSE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/RealmBranch.md","moduleTitle":"network/realm/branches/RealmBranch","source":"engine/network/realm/branches/RealmBranch.js","import":"/engine/network/realm/branches/RealmBranch.js","sourceHash":"81974cf9607263cd53514c7f214beeb34bb830b09bc1eb7d88db4f9f0945efec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/RealmBranch.js#0005:RealmBranchV1","exportIndex":5,"name":"RealmBranchV1","kind":"constant","signature":"RealmBranchV1","summary":"Public RealmBranchV1 contract."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/RealmBranchCrypto.md","moduleTitle":"network/realm/branches/RealmBranchCrypto","source":"engine/network/realm/branches/RealmBranchCrypto.js","import":"/engine/network/realm/branches/RealmBranchCrypto.js","sourceHash":"3819cc3258e549d3a2a6878d82f7fec78c0224437bc4a7052c8b0124d7707762","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/branches/RealmBranchCrypto.js","title":"network/realm/branches/RealmBranchCrypto","summary":"Shared signed-record plumbing for Realm branch contracts.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/RealmBranchCrypto.md","moduleTitle":"network/realm/branches/RealmBranchCrypto","source":"engine/network/realm/branches/RealmBranchCrypto.js","import":"/engine/network/realm/branches/RealmBranchCrypto.js","sourceHash":"3819cc3258e549d3a2a6878d82f7fec78c0224437bc4a7052c8b0124d7707762","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/RealmBranchCrypto.js#0000:withoutSignedFields","exportIndex":0,"name":"withoutSignedFields","kind":"function","signature":"withoutSignedFields(record, idField)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/RealmBranchCrypto.md","moduleTitle":"network/realm/branches/RealmBranchCrypto","source":"engine/network/realm/branches/RealmBranchCrypto.js","import":"/engine/network/realm/branches/RealmBranchCrypto.js","sourceHash":"3819cc3258e549d3a2a6878d82f7fec78c0224437bc4a7052c8b0124d7707762","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/RealmBranchCrypto.js#0001:signBranchRecord","exportIndex":1,"name":"signBranchRecord","kind":"function","signature":"async signBranchRecord(body, { idField, format }, signer)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/RealmBranchCrypto.md","moduleTitle":"network/realm/branches/RealmBranchCrypto","source":"engine/network/realm/branches/RealmBranchCrypto.js","import":"/engine/network/realm/branches/RealmBranchCrypto.js","sourceHash":"3819cc3258e549d3a2a6878d82f7fec78c0224437bc4a7052c8b0124d7707762","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/RealmBranchCrypto.js#0002:verifyBranchRecord","exportIndex":2,"name":"verifyBranchRecord","kind":"function","signature":"async verifyBranchRecord(record, { idField, format })","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/SemanticAdapters.md","moduleTitle":"network/realm/branches/SemanticAdapters","source":"engine/network/realm/branches/SemanticAdapters.js","import":"/engine/network/realm/branches/SemanticAdapters.js","sourceHash":"aa923642ed9f2d0174372d2434a3e83744ba7ac58bb3312ba0a5cf9588bbf413","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/branches/SemanticAdapters.js","title":"network/realm/branches/SemanticAdapters","summary":"Explicit semantic and confluence-proven CRDT adapters for three-way merge.","exportCount":10}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/SemanticAdapters.md","moduleTitle":"network/realm/branches/SemanticAdapters","source":"engine/network/realm/branches/SemanticAdapters.js","import":"/engine/network/realm/branches/SemanticAdapters.js","sourceHash":"aa923642ed9f2d0174372d2434a3e83744ba7ac58bb3312ba0a5cf9588bbf413","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/SemanticAdapters.js#0000:SemanticAdapterRegistry","exportIndex":0,"name":"SemanticAdapterRegistry","kind":"class","signature":"class SemanticAdapterRegistry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/SemanticAdapters.md","moduleTitle":"network/realm/branches/SemanticAdapters","source":"engine/network/realm/branches/SemanticAdapters.js","import":"/engine/network/realm/branches/SemanticAdapters.js","sourceHash":"aa923642ed9f2d0174372d2434a3e83744ba7ac58bb3312ba0a5cf9588bbf413","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/SemanticAdapters.js#0001:normalizeSemanticSnapshot","exportIndex":1,"name":"normalizeSemanticSnapshot","kind":"function","signature":"normalizeSemanticSnapshot(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/SemanticAdapters.md","moduleTitle":"network/realm/branches/SemanticAdapters","source":"engine/network/realm/branches/SemanticAdapters.js","import":"/engine/network/realm/branches/SemanticAdapters.js","sourceHash":"aa923642ed9f2d0174372d2434a3e83744ba7ac58bb3312ba0a5cf9588bbf413","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/SemanticAdapters.js#0002:hashSemanticChange","exportIndex":2,"name":"hashSemanticChange","kind":"function","signature":"async hashSemanticChange(change)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/SemanticAdapters.md","moduleTitle":"network/realm/branches/SemanticAdapters","source":"engine/network/realm/branches/SemanticAdapters.js","import":"/engine/network/realm/branches/SemanticAdapters.js","sourceHash":"aa923642ed9f2d0174372d2434a3e83744ba7ac58bb3312ba0a5cf9588bbf413","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/SemanticAdapters.js#0003:createDefaultSemanticAdapterRegistry","exportIndex":3,"name":"createDefaultSemanticAdapterRegistry","kind":"function","signature":"createDefaultSemanticAdapterRegistry()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/SemanticAdapters.md","moduleTitle":"network/realm/branches/SemanticAdapters","source":"engine/network/realm/branches/SemanticAdapters.js","import":"/engine/network/realm/branches/SemanticAdapters.js","sourceHash":"aa923642ed9f2d0174372d2434a3e83744ba7ac58bb3312ba0a5cf9588bbf413","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/SemanticAdapters.js#0004:compareSemanticSnapshots","exportIndex":4,"name":"compareSemanticSnapshots","kind":"function","signature":"async compareSemanticSnapshots({ base, mine, theirs }, registry = createDefaultSemanticAdapterRegistry()","summary":"Produce a deterministic base/mine/theirs semantic comparison."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/SemanticAdapters.md","moduleTitle":"network/realm/branches/SemanticAdapters","source":"engine/network/realm/branches/SemanticAdapters.js","import":"/engine/network/realm/branches/SemanticAdapters.js","sourceHash":"aa923642ed9f2d0174372d2434a3e83744ba7ac58bb3312ba0a5cf9588bbf413","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/SemanticAdapters.js#0005:applySemanticChange","exportIndex":5,"name":"applySemanticChange","kind":"function","signature":"applySemanticChange(snapshot, change, selected, registry)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/SemanticAdapters.md","moduleTitle":"network/realm/branches/SemanticAdapters","source":"engine/network/realm/branches/SemanticAdapters.js","import":"/engine/network/realm/branches/SemanticAdapters.js","sourceHash":"aa923642ed9f2d0174372d2434a3e83744ba7ac58bb3312ba0a5cf9588bbf413","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/SemanticAdapters.js#0006:orderSemanticChanges","exportIndex":6,"name":"orderSemanticChanges","kind":"function","signature":"orderSemanticChanges(changes)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/SemanticAdapters.md","moduleTitle":"network/realm/branches/SemanticAdapters","source":"engine/network/realm/branches/SemanticAdapters.js","import":"/engine/network/realm/branches/SemanticAdapters.js","sourceHash":"aa923642ed9f2d0174372d2434a3e83744ba7ac58bb3312ba0a5cf9588bbf413","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/SemanticAdapters.js#0007:SEMANTIC_COMPARISON_FORMAT","exportIndex":7,"name":"SEMANTIC_COMPARISON_FORMAT","kind":"constant","signature":"SEMANTIC_COMPARISON_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/SemanticAdapters.md","moduleTitle":"network/realm/branches/SemanticAdapters","source":"engine/network/realm/branches/SemanticAdapters.js","import":"/engine/network/realm/branches/SemanticAdapters.js","sourceHash":"aa923642ed9f2d0174372d2434a3e83744ba7ac58bb3312ba0a5cf9588bbf413","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/SemanticAdapters.js#0008:REALM_MAP_RECORD_TYPE","exportIndex":8,"name":"REALM_MAP_RECORD_TYPE","kind":"constant","signature":"REALM_MAP_RECORD_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/SemanticAdapters.md","moduleTitle":"network/realm/branches/SemanticAdapters","source":"engine/network/realm/branches/SemanticAdapters.js","import":"/engine/network/realm/branches/SemanticAdapters.js","sourceHash":"aa923642ed9f2d0174372d2434a3e83744ba7ac58bb3312ba0a5cf9588bbf413","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/SemanticAdapters.js#0009:REALM_GSET_RECORD_TYPE","exportIndex":9,"name":"REALM_GSET_RECORD_TYPE","kind":"constant","signature":"REALM_GSET_RECORD_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/index.md","moduleTitle":"network/realm/branches/index","source":"engine/network/realm/branches/index.js","import":"/engine/network/realm/branches/index.js","sourceHash":"ded2e810f543806e25c3c0024cb717843da05609cdcd061e61f811ce36f3934a","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/branches/index.js","title":"network/realm/branches/index","summary":"","exportCount":30}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/index.md","moduleTitle":"network/realm/branches/index","source":"engine/network/realm/branches/index.js","import":"/engine/network/realm/branches/index.js","sourceHash":"ded2e810f543806e25c3c0024cb717843da05609cdcd061e61f811ce36f3934a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/index.js#0000:MERGE_COMMIT_PAYLOAD_FORMAT","exportIndex":0,"name":"MERGE_COMMIT_PAYLOAD_FORMAT","kind":"re-export","signature":"MERGE_COMMIT_PAYLOAD_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/index.md","moduleTitle":"network/realm/branches/index","source":"engine/network/realm/branches/index.js","import":"/engine/network/realm/branches/index.js","sourceHash":"ded2e810f543806e25c3c0024cb717843da05609cdcd061e61f811ce36f3934a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/index.js#0001:MERGE_PROPOSAL_FORMAT","exportIndex":1,"name":"MERGE_PROPOSAL_FORMAT","kind":"re-export","signature":"MERGE_PROPOSAL_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/index.md","moduleTitle":"network/realm/branches/index","source":"engine/network/realm/branches/index.js","import":"/engine/network/realm/branches/index.js","sourceHash":"ded2e810f543806e25c3c0024cb717843da05609cdcd061e61f811ce36f3934a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/index.js#0002:MergeProposalV1","exportIndex":2,"name":"MergeProposalV1","kind":"re-export","signature":"MergeProposalV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/index.md","moduleTitle":"network/realm/branches/index","source":"engine/network/realm/branches/index.js","import":"/engine/network/realm/branches/index.js","sourceHash":"ded2e810f543806e25c3c0024cb717843da05609cdcd061e61f811ce36f3934a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/index.js#0003:OFFLINE_OPERATION_STATUS","exportIndex":3,"name":"OFFLINE_OPERATION_STATUS","kind":"re-export","signature":"OFFLINE_OPERATION_STATUS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/index.md","moduleTitle":"network/realm/branches/index","source":"engine/network/realm/branches/index.js","import":"/engine/network/realm/branches/index.js","sourceHash":"ded2e810f543806e25c3c0024cb717843da05609cdcd061e61f811ce36f3934a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/index.js#0004:OFFLINE_QUEUE_FORMAT","exportIndex":4,"name":"OFFLINE_QUEUE_FORMAT","kind":"re-export","signature":"OFFLINE_QUEUE_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/index.md","moduleTitle":"network/realm/branches/index","source":"engine/network/realm/branches/index.js","import":"/engine/network/realm/branches/index.js","sourceHash":"ded2e810f543806e25c3c0024cb717843da05609cdcd061e61f811ce36f3934a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/index.js#0005:OfflineOperationQueue","exportIndex":5,"name":"OfflineOperationQueue","kind":"re-export","signature":"OfflineOperationQueue","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/index.md","moduleTitle":"network/realm/branches/index","source":"engine/network/realm/branches/index.js","import":"/engine/network/realm/branches/index.js","sourceHash":"ded2e810f543806e25c3c0024cb717843da05609cdcd061e61f811ce36f3934a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/index.js#0006:REALM_BRANCH_FORMAT","exportIndex":6,"name":"REALM_BRANCH_FORMAT","kind":"re-export","signature":"REALM_BRANCH_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/index.md","moduleTitle":"network/realm/branches/index","source":"engine/network/realm/branches/index.js","import":"/engine/network/realm/branches/index.js","sourceHash":"ded2e810f543806e25c3c0024cb717843da05609cdcd061e61f811ce36f3934a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/index.js#0007:REALM_BRANCH_PURPOSE","exportIndex":7,"name":"REALM_BRANCH_PURPOSE","kind":"re-export","signature":"REALM_BRANCH_PURPOSE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/index.md","moduleTitle":"network/realm/branches/index","source":"engine/network/realm/branches/index.js","import":"/engine/network/realm/branches/index.js","sourceHash":"ded2e810f543806e25c3c0024cb717843da05609cdcd061e61f811ce36f3934a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/index.js#0008:REALM_GSET_RECORD_TYPE","exportIndex":8,"name":"REALM_GSET_RECORD_TYPE","kind":"re-export","signature":"REALM_GSET_RECORD_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/index.md","moduleTitle":"network/realm/branches/index","source":"engine/network/realm/branches/index.js","import":"/engine/network/realm/branches/index.js","sourceHash":"ded2e810f543806e25c3c0024cb717843da05609cdcd061e61f811ce36f3934a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/index.js#0009:REALM_MAP_RECORD_TYPE","exportIndex":9,"name":"REALM_MAP_RECORD_TYPE","kind":"re-export","signature":"REALM_MAP_RECORD_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/index.md","moduleTitle":"network/realm/branches/index","source":"engine/network/realm/branches/index.js","import":"/engine/network/realm/branches/index.js","sourceHash":"ded2e810f543806e25c3c0024cb717843da05609cdcd061e61f811ce36f3934a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/index.js#0010:RealmBranchDAG","exportIndex":10,"name":"RealmBranchDAG","kind":"re-export","signature":"RealmBranchDAG","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/index.md","moduleTitle":"network/realm/branches/index","source":"engine/network/realm/branches/index.js","import":"/engine/network/realm/branches/index.js","sourceHash":"ded2e810f543806e25c3c0024cb717843da05609cdcd061e61f811ce36f3934a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/index.js#0011:RealmBranchStorage","exportIndex":11,"name":"RealmBranchStorage","kind":"re-export","signature":"RealmBranchStorage","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/index.md","moduleTitle":"network/realm/branches/index","source":"engine/network/realm/branches/index.js","import":"/engine/network/realm/branches/index.js","sourceHash":"ded2e810f543806e25c3c0024cb717843da05609cdcd061e61f811ce36f3934a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/index.js#0012:RealmBranchV1","exportIndex":12,"name":"RealmBranchV1","kind":"re-export","signature":"RealmBranchV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/index.md","moduleTitle":"network/realm/branches/index","source":"engine/network/realm/branches/index.js","import":"/engine/network/realm/branches/index.js","sourceHash":"ded2e810f543806e25c3c0024cb717843da05609cdcd061e61f811ce36f3934a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/index.js#0013:SEMANTIC_COMPARISON_FORMAT","exportIndex":13,"name":"SEMANTIC_COMPARISON_FORMAT","kind":"re-export","signature":"SEMANTIC_COMPARISON_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/index.md","moduleTitle":"network/realm/branches/index","source":"engine/network/realm/branches/index.js","import":"/engine/network/realm/branches/index.js","sourceHash":"ded2e810f543806e25c3c0024cb717843da05609cdcd061e61f811ce36f3934a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/index.js#0014:SemanticAdapterRegistry","exportIndex":14,"name":"SemanticAdapterRegistry","kind":"re-export","signature":"SemanticAdapterRegistry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/index.md","moduleTitle":"network/realm/branches/index","source":"engine/network/realm/branches/index.js","import":"/engine/network/realm/branches/index.js","sourceHash":"ded2e810f543806e25c3c0024cb717843da05609cdcd061e61f811ce36f3934a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/index.js#0015:applyMergeProposal","exportIndex":15,"name":"applyMergeProposal","kind":"re-export","signature":"applyMergeProposal","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/index.md","moduleTitle":"network/realm/branches/index","source":"engine/network/realm/branches/index.js","import":"/engine/network/realm/branches/index.js","sourceHash":"ded2e810f543806e25c3c0024cb717843da05609cdcd061e61f811ce36f3934a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/index.js#0016:applySemanticChange","exportIndex":16,"name":"applySemanticChange","kind":"re-export","signature":"applySemanticChange","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/index.md","moduleTitle":"network/realm/branches/index","source":"engine/network/realm/branches/index.js","import":"/engine/network/realm/branches/index.js","sourceHash":"ded2e810f543806e25c3c0024cb717843da05609cdcd061e61f811ce36f3934a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/index.js#0017:buildDefaultMergeDecisions","exportIndex":17,"name":"buildDefaultMergeDecisions","kind":"re-export","signature":"buildDefaultMergeDecisions","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/index.md","moduleTitle":"network/realm/branches/index","source":"engine/network/realm/branches/index.js","import":"/engine/network/realm/branches/index.js","sourceHash":"ded2e810f543806e25c3c0024cb717843da05609cdcd061e61f811ce36f3934a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/index.js#0018:compareSemanticSnapshots","exportIndex":18,"name":"compareSemanticSnapshots","kind":"re-export","signature":"compareSemanticSnapshots","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/index.md","moduleTitle":"network/realm/branches/index","source":"engine/network/realm/branches/index.js","import":"/engine/network/realm/branches/index.js","sourceHash":"ded2e810f543806e25c3c0024cb717843da05609cdcd061e61f811ce36f3934a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/index.js#0019:createDefaultSemanticAdapterRegistry","exportIndex":19,"name":"createDefaultSemanticAdapterRegistry","kind":"re-export","signature":"createDefaultSemanticAdapterRegistry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/index.md","moduleTitle":"network/realm/branches/index","source":"engine/network/realm/branches/index.js","import":"/engine/network/realm/branches/index.js","sourceHash":"ded2e810f543806e25c3c0024cb717843da05609cdcd061e61f811ce36f3934a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/index.js#0020:createMergeCommit","exportIndex":20,"name":"createMergeCommit","kind":"re-export","signature":"createMergeCommit","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/index.md","moduleTitle":"network/realm/branches/index","source":"engine/network/realm/branches/index.js","import":"/engine/network/realm/branches/index.js","sourceHash":"ded2e810f543806e25c3c0024cb717843da05609cdcd061e61f811ce36f3934a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/index.js#0021:createMergeProposal","exportIndex":21,"name":"createMergeProposal","kind":"re-export","signature":"createMergeProposal","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/index.md","moduleTitle":"network/realm/branches/index","source":"engine/network/realm/branches/index.js","import":"/engine/network/realm/branches/index.js","sourceHash":"ded2e810f543806e25c3c0024cb717843da05609cdcd061e61f811ce36f3934a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/index.js#0022:createRealmBranch","exportIndex":22,"name":"createRealmBranch","kind":"re-export","signature":"createRealmBranch","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/index.md","moduleTitle":"network/realm/branches/index","source":"engine/network/realm/branches/index.js","import":"/engine/network/realm/branches/index.js","sourceHash":"ded2e810f543806e25c3c0024cb717843da05609cdcd061e61f811ce36f3934a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/index.js#0023:hashSemanticChange","exportIndex":23,"name":"hashSemanticChange","kind":"re-export","signature":"hashSemanticChange","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/index.md","moduleTitle":"network/realm/branches/index","source":"engine/network/realm/branches/index.js","import":"/engine/network/realm/branches/index.js","sourceHash":"ded2e810f543806e25c3c0024cb717843da05609cdcd061e61f811ce36f3934a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/index.js#0024:normalizeSemanticSnapshot","exportIndex":24,"name":"normalizeSemanticSnapshot","kind":"re-export","signature":"normalizeSemanticSnapshot","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/index.md","moduleTitle":"network/realm/branches/index","source":"engine/network/realm/branches/index.js","import":"/engine/network/realm/branches/index.js","sourceHash":"ded2e810f543806e25c3c0024cb717843da05609cdcd061e61f811ce36f3934a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/index.js#0025:orderSemanticChanges","exportIndex":25,"name":"orderSemanticChanges","kind":"re-export","signature":"orderSemanticChanges","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/index.md","moduleTitle":"network/realm/branches/index","source":"engine/network/realm/branches/index.js","import":"/engine/network/realm/branches/index.js","sourceHash":"ded2e810f543806e25c3c0024cb717843da05609cdcd061e61f811ce36f3934a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/index.js#0026:validateMergeDecisions","exportIndex":26,"name":"validateMergeDecisions","kind":"re-export","signature":"validateMergeDecisions","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/index.md","moduleTitle":"network/realm/branches/index","source":"engine/network/realm/branches/index.js","import":"/engine/network/realm/branches/index.js","sourceHash":"ded2e810f543806e25c3c0024cb717843da05609cdcd061e61f811ce36f3934a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/index.js#0027:verifyMergeCommit","exportIndex":27,"name":"verifyMergeCommit","kind":"re-export","signature":"verifyMergeCommit","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/index.md","moduleTitle":"network/realm/branches/index","source":"engine/network/realm/branches/index.js","import":"/engine/network/realm/branches/index.js","sourceHash":"ded2e810f543806e25c3c0024cb717843da05609cdcd061e61f811ce36f3934a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/index.js#0028:verifyMergeProposal","exportIndex":28,"name":"verifyMergeProposal","kind":"re-export","signature":"verifyMergeProposal","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/branches/index.md","moduleTitle":"network/realm/branches/index","source":"engine/network/realm/branches/index.js","import":"/engine/network/realm/branches/index.js","sourceHash":"ded2e810f543806e25c3c0024cb717843da05609cdcd061e61f811ce36f3934a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/branches/index.js#0029:verifyRealmBranch","exportIndex":29,"name":"verifyRealmBranch","kind":"re-export","signature":"verifyRealmBranch","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/CapsuleAssembler.md","moduleTitle":"network/realm/capsule/CapsuleAssembler","source":"engine/network/realm/capsule/CapsuleAssembler.js","import":"/engine/network/realm/capsule/CapsuleAssembler.js","sourceHash":"5845d9ade31c91e0ad3536426e7a3ac0b164ca4ef67f473d41949f2ea58d310d","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/capsule/CapsuleAssembler.js","title":"network/realm/capsule/CapsuleAssembler","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/CapsuleAssembler.md","moduleTitle":"network/realm/capsule/CapsuleAssembler","source":"engine/network/realm/capsule/CapsuleAssembler.js","import":"/engine/network/realm/capsule/CapsuleAssembler.js","sourceHash":"5845d9ade31c91e0ad3536426e7a3ac0b164ca4ef67f473d41949f2ea58d310d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/CapsuleAssembler.js#0000:CapsuleAssembler","exportIndex":0,"name":"CapsuleAssembler","kind":"class","signature":"class CapsuleAssembler","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/CapsuleMigration.md","moduleTitle":"network/realm/capsule/CapsuleMigration","source":"engine/network/realm/capsule/CapsuleMigration.js","import":"/engine/network/realm/capsule/CapsuleMigration.js","sourceHash":"1e5281e4f306569349e4921d48cabcd96e25277d96e314c77d5df8558ea99b0f","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/capsule/CapsuleMigration.js","title":"network/realm/capsule/CapsuleMigration","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/CapsuleMigration.md","moduleTitle":"network/realm/capsule/CapsuleMigration","source":"engine/network/realm/capsule/CapsuleMigration.js","import":"/engine/network/realm/capsule/CapsuleMigration.js","sourceHash":"1e5281e4f306569349e4921d48cabcd96e25277d96e314c77d5df8558ea99b0f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/CapsuleMigration.js#0000:CapsuleMigrationRegistry","exportIndex":0,"name":"CapsuleMigrationRegistry","kind":"class","signature":"class CapsuleMigrationRegistry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/RealmBranchRef.md","moduleTitle":"network/realm/capsule/RealmBranchRef","source":"engine/network/realm/capsule/RealmBranchRef.js","import":"/engine/network/realm/capsule/RealmBranchRef.js","sourceHash":"4815f0b7a1410d904324d3d2ef6fffbe83e6454d150e71bf1418bc7c23863f49","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/capsule/RealmBranchRef.js","title":"network/realm/capsule/RealmBranchRef","summary":"","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/RealmBranchRef.md","moduleTitle":"network/realm/capsule/RealmBranchRef","source":"engine/network/realm/capsule/RealmBranchRef.js","import":"/engine/network/realm/capsule/RealmBranchRef.js","sourceHash":"4815f0b7a1410d904324d3d2ef6fffbe83e6454d150e71bf1418bc7c23863f49","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/RealmBranchRef.js#0000:hashRealmBranchRef","exportIndex":0,"name":"hashRealmBranchRef","kind":"function","signature":"async hashRealmBranchRef(ref)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/RealmBranchRef.md","moduleTitle":"network/realm/capsule/RealmBranchRef","source":"engine/network/realm/capsule/RealmBranchRef.js","import":"/engine/network/realm/capsule/RealmBranchRef.js","sourceHash":"4815f0b7a1410d904324d3d2ef6fffbe83e6454d150e71bf1418bc7c23863f49","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/RealmBranchRef.js#0001:createRealmBranchRef","exportIndex":1,"name":"createRealmBranchRef","kind":"function","signature":"async createRealmBranchRef(input, signer, previous = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/RealmBranchRef.md","moduleTitle":"network/realm/capsule/RealmBranchRef","source":"engine/network/realm/capsule/RealmBranchRef.js","import":"/engine/network/realm/capsule/RealmBranchRef.js","sourceHash":"4815f0b7a1410d904324d3d2ef6fffbe83e6454d150e71bf1418bc7c23863f49","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/RealmBranchRef.js#0002:verifyRealmBranchRef","exportIndex":2,"name":"verifyRealmBranchRef","kind":"function","signature":"async verifyRealmBranchRef(ref, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/RealmCapsule.md","moduleTitle":"network/realm/capsule/RealmCapsule","source":"engine/network/realm/capsule/RealmCapsule.js","import":"/engine/network/realm/capsule/RealmCapsule.js","sourceHash":"cf6288b176a4ab9e8f3dd4777c03da32f61da78e840ea7ac0f63d3ebe1f5682e","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/capsule/RealmCapsule.js","title":"network/realm/capsule/RealmCapsule","summary":"Convert the output of PackageVerifier.parseAny()/verify() into the package input accepted by buildRealmCapsule. Package verification stays owned by the existing package stack; this adapter only binds its verified artifact bytes and roots into the Capsule.","exportCount":14}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/RealmCapsule.md","moduleTitle":"network/realm/capsule/RealmCapsule","source":"engine/network/realm/capsule/RealmCapsule.js","import":"/engine/network/realm/capsule/RealmCapsule.js","sourceHash":"cf6288b176a4ab9e8f3dd4777c03da32f61da78e840ea7ac0f63d3ebe1f5682e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/RealmCapsule.js#0000:toUint8Array","exportIndex":0,"name":"toUint8Array","kind":"function","signature":"toUint8Array(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/RealmCapsule.md","moduleTitle":"network/realm/capsule/RealmCapsule","source":"engine/network/realm/capsule/RealmCapsule.js","import":"/engine/network/realm/capsule/RealmCapsule.js","sourceHash":"cf6288b176a4ab9e8f3dd4777c03da32f61da78e840ea7ac0f63d3ebe1f5682e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/RealmCapsule.js#0001:taggedSha256","exportIndex":1,"name":"taggedSha256","kind":"function","signature":"taggedSha256(hex)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/RealmCapsule.md","moduleTitle":"network/realm/capsule/RealmCapsule","source":"engine/network/realm/capsule/RealmCapsule.js","import":"/engine/network/realm/capsule/RealmCapsule.js","sourceHash":"cf6288b176a4ab9e8f3dd4777c03da32f61da78e840ea7ac0f63d3ebe1f5682e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/RealmCapsule.js#0002:adaptVerifiedPackageArtifact","exportIndex":2,"name":"adaptVerifiedPackageArtifact","kind":"function","signature":"async adaptVerifiedPackageArtifact({ artifactBytes, parsedPackage, verification } = {})","summary":"Convert the output of PackageVerifier.parseAny()/verify() into the package input accepted by buildRealmCapsule. Package verification stays owned by the existing package stack; this adapter only binds its verified artifact bytes and roots into the Capsule."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/RealmCapsule.md","moduleTitle":"network/realm/capsule/RealmCapsule","source":"engine/network/realm/capsule/RealmCapsule.js","import":"/engine/network/realm/capsule/RealmCapsule.js","sourceHash":"cf6288b176a4ab9e8f3dd4777c03da32f61da78e840ea7ac0f63d3ebe1f5682e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/RealmCapsule.js#0003:computeCapsuleRoot","exportIndex":3,"name":"computeCapsuleRoot","kind":"function","signature":"async computeCapsuleRoot(body)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/RealmCapsule.md","moduleTitle":"network/realm/capsule/RealmCapsule","source":"engine/network/realm/capsule/RealmCapsule.js","import":"/engine/network/realm/capsule/RealmCapsule.js","sourceHash":"cf6288b176a4ab9e8f3dd4777c03da32f61da78e840ea7ac0f63d3ebe1f5682e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/RealmCapsule.js#0004:prepareRealmBlob","exportIndex":4,"name":"prepareRealmBlob","kind":"function","signature":"async prepareRealmBlob(input, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/RealmCapsule.md","moduleTitle":"network/realm/capsule/RealmCapsule","source":"engine/network/realm/capsule/RealmCapsule.js","import":"/engine/network/realm/capsule/RealmCapsule.js","sourceHash":"cf6288b176a4ab9e8f3dd4777c03da32f61da78e840ea7ac0f63d3ebe1f5682e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/RealmCapsule.js#0005:buildRealmCapsule","exportIndex":5,"name":"buildRealmCapsule","kind":"function","signature":"async buildRealmCapsule(input, signer, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/RealmCapsule.md","moduleTitle":"network/realm/capsule/RealmCapsule","source":"engine/network/realm/capsule/RealmCapsule.js","import":"/engine/network/realm/capsule/RealmCapsule.js","sourceHash":"cf6288b176a4ab9e8f3dd4777c03da32f61da78e840ea7ac0f63d3ebe1f5682e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/RealmCapsule.js#0006:verifyRealmCapsule","exportIndex":6,"name":"verifyRealmCapsule","kind":"function","signature":"async verifyRealmCapsule(capsule, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/RealmCapsule.md","moduleTitle":"network/realm/capsule/RealmCapsule","source":"engine/network/realm/capsule/RealmCapsule.js","import":"/engine/network/realm/capsule/RealmCapsule.js","sourceHash":"cf6288b176a4ab9e8f3dd4777c03da32f61da78e840ea7ac0f63d3ebe1f5682e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/RealmCapsule.js#0007:verifyBlobAgainstDescriptor","exportIndex":7,"name":"verifyBlobAgainstDescriptor","kind":"function","signature":"async verifyBlobAgainstDescriptor(bytesLike, descriptor)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/RealmCapsule.md","moduleTitle":"network/realm/capsule/RealmCapsule","source":"engine/network/realm/capsule/RealmCapsule.js","import":"/engine/network/realm/capsule/RealmCapsule.js","sourceHash":"cf6288b176a4ab9e8f3dd4777c03da32f61da78e840ea7ac0f63d3ebe1f5682e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/RealmCapsule.js#0008:bytesToBase64","exportIndex":8,"name":"bytesToBase64","kind":"function","signature":"bytesToBase64(bytes)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/RealmCapsule.md","moduleTitle":"network/realm/capsule/RealmCapsule","source":"engine/network/realm/capsule/RealmCapsule.js","import":"/engine/network/realm/capsule/RealmCapsule.js","sourceHash":"cf6288b176a4ab9e8f3dd4777c03da32f61da78e840ea7ac0f63d3ebe1f5682e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/RealmCapsule.js#0009:base64ToBytes","exportIndex":9,"name":"base64ToBytes","kind":"function","signature":"base64ToBytes(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/RealmCapsule.md","moduleTitle":"network/realm/capsule/RealmCapsule","source":"engine/network/realm/capsule/RealmCapsule.js","import":"/engine/network/realm/capsule/RealmCapsule.js","sourceHash":"cf6288b176a4ab9e8f3dd4777c03da32f61da78e840ea7ac0f63d3ebe1f5682e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/RealmCapsule.js#0010:createOfflineCapsuleExport","exportIndex":10,"name":"createOfflineCapsuleExport","kind":"function","signature":"async createOfflineCapsuleExport(capsule, resolveBlob, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/RealmCapsule.md","moduleTitle":"network/realm/capsule/RealmCapsule","source":"engine/network/realm/capsule/RealmCapsule.js","import":"/engine/network/realm/capsule/RealmCapsule.js","sourceHash":"cf6288b176a4ab9e8f3dd4777c03da32f61da78e840ea7ac0f63d3ebe1f5682e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/RealmCapsule.js#0011:verifyOfflineCapsuleExport","exportIndex":11,"name":"verifyOfflineCapsuleExport","kind":"function","signature":"async verifyOfflineCapsuleExport(bundle, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/RealmCapsule.md","moduleTitle":"network/realm/capsule/RealmCapsule","source":"engine/network/realm/capsule/RealmCapsule.js","import":"/engine/network/realm/capsule/RealmCapsule.js","sourceHash":"cf6288b176a4ab9e8f3dd4777c03da32f61da78e840ea7ac0f63d3ebe1f5682e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/RealmCapsule.js#0012:reassembleBlobChunks","exportIndex":12,"name":"reassembleBlobChunks","kind":"function","signature":"reassembleBlobChunks(chunks)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/RealmCapsule.md","moduleTitle":"network/realm/capsule/RealmCapsule","source":"engine/network/realm/capsule/RealmCapsule.js","import":"/engine/network/realm/capsule/RealmCapsule.js","sourceHash":"cf6288b176a4ab9e8f3dd4777c03da32f61da78e840ea7ac0f63d3ebe1f5682e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/RealmCapsule.js#0013:RealmCapsuleV1","exportIndex":13,"name":"RealmCapsuleV1","kind":"constant","signature":"RealmCapsuleV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/RealmCapsuleSchema.md","moduleTitle":"network/realm/capsule/RealmCapsuleSchema","source":"engine/network/realm/capsule/RealmCapsuleSchema.js","import":"/engine/network/realm/capsule/RealmCapsuleSchema.js","sourceHash":"aa30df2ec1362e94290878285521e1f05520bce436be2e1ecf479d6416605e20","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/capsule/RealmCapsuleSchema.js","title":"network/realm/capsule/RealmCapsuleSchema","summary":"","exportCount":18}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/RealmCapsuleSchema.md","moduleTitle":"network/realm/capsule/RealmCapsuleSchema","source":"engine/network/realm/capsule/RealmCapsuleSchema.js","import":"/engine/network/realm/capsule/RealmCapsuleSchema.js","sourceHash":"aa30df2ec1362e94290878285521e1f05520bce436be2e1ecf479d6416605e20","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/RealmCapsuleSchema.js#0000:RealmCapsuleValidationError","exportIndex":0,"name":"RealmCapsuleValidationError","kind":"class","signature":"class RealmCapsuleValidationError extends TypeError","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/RealmCapsuleSchema.md","moduleTitle":"network/realm/capsule/RealmCapsuleSchema","source":"engine/network/realm/capsule/RealmCapsuleSchema.js","import":"/engine/network/realm/capsule/RealmCapsuleSchema.js","sourceHash":"aa30df2ec1362e94290878285521e1f05520bce436be2e1ecf479d6416605e20","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/RealmCapsuleSchema.js#0001:normalizeRights","exportIndex":1,"name":"normalizeRights","kind":"function","signature":"normalizeRights(value = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/RealmCapsuleSchema.md","moduleTitle":"network/realm/capsule/RealmCapsuleSchema","source":"engine/network/realm/capsule/RealmCapsuleSchema.js","import":"/engine/network/realm/capsule/RealmCapsuleSchema.js","sourceHash":"aa30df2ec1362e94290878285521e1f05520bce436be2e1ecf479d6416605e20","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/RealmCapsuleSchema.js#0002:normalizeProvenance","exportIndex":2,"name":"normalizeProvenance","kind":"function","signature":"normalizeProvenance(value = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/RealmCapsuleSchema.md","moduleTitle":"network/realm/capsule/RealmCapsuleSchema","source":"engine/network/realm/capsule/RealmCapsuleSchema.js","import":"/engine/network/realm/capsule/RealmCapsuleSchema.js","sourceHash":"aa30df2ec1362e94290878285521e1f05520bce436be2e1ecf479d6416605e20","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/RealmCapsuleSchema.js#0003:normalizeCompatibility","exportIndex":3,"name":"normalizeCompatibility","kind":"function","signature":"normalizeCompatibility(value = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/RealmCapsuleSchema.md","moduleTitle":"network/realm/capsule/RealmCapsuleSchema","source":"engine/network/realm/capsule/RealmCapsuleSchema.js","import":"/engine/network/realm/capsule/RealmCapsuleSchema.js","sourceHash":"aa30df2ec1362e94290878285521e1f05520bce436be2e1ecf479d6416605e20","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/RealmCapsuleSchema.js#0004:normalizeCapsuleBody","exportIndex":4,"name":"normalizeCapsuleBody","kind":"function","signature":"normalizeCapsuleBody(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/RealmCapsuleSchema.md","moduleTitle":"network/realm/capsule/RealmCapsuleSchema","source":"engine/network/realm/capsule/RealmCapsuleSchema.js","import":"/engine/network/realm/capsule/RealmCapsuleSchema.js","sourceHash":"aa30df2ec1362e94290878285521e1f05520bce436be2e1ecf479d6416605e20","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/RealmCapsuleSchema.js#0005:validateRealmCapsuleShape","exportIndex":5,"name":"validateRealmCapsuleShape","kind":"function","signature":"validateRealmCapsuleShape(value, { requireSignature = true } = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/RealmCapsuleSchema.md","moduleTitle":"network/realm/capsule/RealmCapsuleSchema","source":"engine/network/realm/capsule/RealmCapsuleSchema.js","import":"/engine/network/realm/capsule/RealmCapsuleSchema.js","sourceHash":"aa30df2ec1362e94290878285521e1f05520bce436be2e1ecf479d6416605e20","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/RealmCapsuleSchema.js#0006:validateDependencyGraph","exportIndex":6,"name":"validateDependencyGraph","kind":"function","signature":"validateDependencyGraph(records, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/RealmCapsuleSchema.md","moduleTitle":"network/realm/capsule/RealmCapsuleSchema","source":"engine/network/realm/capsule/RealmCapsuleSchema.js","import":"/engine/network/realm/capsule/RealmCapsuleSchema.js","sourceHash":"aa30df2ec1362e94290878285521e1f05520bce436be2e1ecf479d6416605e20","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/RealmCapsuleSchema.js#0007:isContentId","exportIndex":7,"name":"isContentId","kind":"function","signature":"isContentId(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/RealmCapsuleSchema.md","moduleTitle":"network/realm/capsule/RealmCapsuleSchema","source":"engine/network/realm/capsule/RealmCapsuleSchema.js","import":"/engine/network/realm/capsule/RealmCapsuleSchema.js","sourceHash":"aa30df2ec1362e94290878285521e1f05520bce436be2e1ecf479d6416605e20","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/RealmCapsuleSchema.js#0008:contentIdHex","exportIndex":8,"name":"contentIdHex","kind":"function","signature":"contentIdHex(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/RealmCapsuleSchema.md","moduleTitle":"network/realm/capsule/RealmCapsuleSchema","source":"engine/network/realm/capsule/RealmCapsuleSchema.js","import":"/engine/network/realm/capsule/RealmCapsuleSchema.js","sourceHash":"aa30df2ec1362e94290878285521e1f05520bce436be2e1ecf479d6416605e20","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/RealmCapsuleSchema.js#0009:deepFreeze","exportIndex":9,"name":"deepFreeze","kind":"function","signature":"deepFreeze(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/RealmCapsuleSchema.md","moduleTitle":"network/realm/capsule/RealmCapsuleSchema","source":"engine/network/realm/capsule/RealmCapsuleSchema.js","import":"/engine/network/realm/capsule/RealmCapsuleSchema.js","sourceHash":"aa30df2ec1362e94290878285521e1f05520bce436be2e1ecf479d6416605e20","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/RealmCapsuleSchema.js#0010:REALM_CAPSULE_FORMAT","exportIndex":10,"name":"REALM_CAPSULE_FORMAT","kind":"constant","signature":"REALM_CAPSULE_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/RealmCapsuleSchema.md","moduleTitle":"network/realm/capsule/RealmCapsuleSchema","source":"engine/network/realm/capsule/RealmCapsuleSchema.js","import":"/engine/network/realm/capsule/RealmCapsuleSchema.js","sourceHash":"aa30df2ec1362e94290878285521e1f05520bce436be2e1ecf479d6416605e20","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/RealmCapsuleSchema.js#0011:REALM_CAPSULE_SCHEMA_VERSION","exportIndex":11,"name":"REALM_CAPSULE_SCHEMA_VERSION","kind":"constant","signature":"REALM_CAPSULE_SCHEMA_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/RealmCapsuleSchema.md","moduleTitle":"network/realm/capsule/RealmCapsuleSchema","source":"engine/network/realm/capsule/RealmCapsuleSchema.js","import":"/engine/network/realm/capsule/RealmCapsuleSchema.js","sourceHash":"aa30df2ec1362e94290878285521e1f05520bce436be2e1ecf479d6416605e20","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/RealmCapsuleSchema.js#0012:REALM_CAPSULE_EXPORT_FORMAT","exportIndex":12,"name":"REALM_CAPSULE_EXPORT_FORMAT","kind":"constant","signature":"REALM_CAPSULE_EXPORT_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/RealmCapsuleSchema.md","moduleTitle":"network/realm/capsule/RealmCapsuleSchema","source":"engine/network/realm/capsule/RealmCapsuleSchema.js","import":"/engine/network/realm/capsule/RealmCapsuleSchema.js","sourceHash":"aa30df2ec1362e94290878285521e1f05520bce436be2e1ecf479d6416605e20","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/RealmCapsuleSchema.js#0013:REALM_BRANCH_REF_FORMAT","exportIndex":13,"name":"REALM_BRANCH_REF_FORMAT","kind":"constant","signature":"REALM_BRANCH_REF_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/RealmCapsuleSchema.md","moduleTitle":"network/realm/capsule/RealmCapsuleSchema","source":"engine/network/realm/capsule/RealmCapsuleSchema.js","import":"/engine/network/realm/capsule/RealmCapsuleSchema.js","sourceHash":"aa30df2ec1362e94290878285521e1f05520bce436be2e1ecf479d6416605e20","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/RealmCapsuleSchema.js#0014:DEPENDENCY_CLASSES","exportIndex":14,"name":"DEPENDENCY_CLASSES","kind":"constant","signature":"DEPENDENCY_CLASSES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/RealmCapsuleSchema.md","moduleTitle":"network/realm/capsule/RealmCapsuleSchema","source":"engine/network/realm/capsule/RealmCapsuleSchema.js","import":"/engine/network/realm/capsule/RealmCapsuleSchema.js","sourceHash":"aa30df2ec1362e94290878285521e1f05520bce436be2e1ecf479d6416605e20","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/RealmCapsuleSchema.js#0015:DEPENDENCY_KINDS","exportIndex":15,"name":"DEPENDENCY_KINDS","kind":"constant","signature":"DEPENDENCY_KINDS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/RealmCapsuleSchema.md","moduleTitle":"network/realm/capsule/RealmCapsuleSchema","source":"engine/network/realm/capsule/RealmCapsuleSchema.js","import":"/engine/network/realm/capsule/RealmCapsuleSchema.js","sourceHash":"aa30df2ec1362e94290878285521e1f05520bce436be2e1ecf479d6416605e20","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/RealmCapsuleSchema.js#0016:RIGHTS_DECISIONS","exportIndex":16,"name":"RIGHTS_DECISIONS","kind":"constant","signature":"RIGHTS_DECISIONS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/RealmCapsuleSchema.md","moduleTitle":"network/realm/capsule/RealmCapsuleSchema","source":"engine/network/realm/capsule/RealmCapsuleSchema.js","import":"/engine/network/realm/capsule/RealmCapsuleSchema.js","sourceHash":"aa30df2ec1362e94290878285521e1f05520bce436be2e1ecf479d6416605e20","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/RealmCapsuleSchema.js#0017:CAPSULE_LIMITS","exportIndex":17,"name":"CAPSULE_LIMITS","kind":"constant","signature":"CAPSULE_LIMITS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/index.md","moduleTitle":"network/realm/capsule/index","source":"engine/network/realm/capsule/index.js","import":"/engine/network/realm/capsule/index.js","sourceHash":"bc88b01280f5c828fd86b354cb7ebacca413d55bbe99612f2eb1cb4048401a43","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/capsule/index.js","title":"network/realm/capsule/index","summary":"","exportCount":37}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/index.md","moduleTitle":"network/realm/capsule/index","source":"engine/network/realm/capsule/index.js","import":"/engine/network/realm/capsule/index.js","sourceHash":"bc88b01280f5c828fd86b354cb7ebacca413d55bbe99612f2eb1cb4048401a43","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/index.js#0000:CAPSULE_LIMITS","exportIndex":0,"name":"CAPSULE_LIMITS","kind":"re-export","signature":"CAPSULE_LIMITS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/index.md","moduleTitle":"network/realm/capsule/index","source":"engine/network/realm/capsule/index.js","import":"/engine/network/realm/capsule/index.js","sourceHash":"bc88b01280f5c828fd86b354cb7ebacca413d55bbe99612f2eb1cb4048401a43","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/index.js#0001:CapsuleAssembler","exportIndex":1,"name":"CapsuleAssembler","kind":"re-export","signature":"CapsuleAssembler","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/index.md","moduleTitle":"network/realm/capsule/index","source":"engine/network/realm/capsule/index.js","import":"/engine/network/realm/capsule/index.js","sourceHash":"bc88b01280f5c828fd86b354cb7ebacca413d55bbe99612f2eb1cb4048401a43","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/index.js#0002:CapsuleMigrationRegistry","exportIndex":2,"name":"CapsuleMigrationRegistry","kind":"re-export","signature":"CapsuleMigrationRegistry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/index.md","moduleTitle":"network/realm/capsule/index","source":"engine/network/realm/capsule/index.js","import":"/engine/network/realm/capsule/index.js","sourceHash":"bc88b01280f5c828fd86b354cb7ebacca413d55bbe99612f2eb1cb4048401a43","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/index.js#0003:DEPENDENCY_CLASSES","exportIndex":3,"name":"DEPENDENCY_CLASSES","kind":"re-export","signature":"DEPENDENCY_CLASSES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/index.md","moduleTitle":"network/realm/capsule/index","source":"engine/network/realm/capsule/index.js","import":"/engine/network/realm/capsule/index.js","sourceHash":"bc88b01280f5c828fd86b354cb7ebacca413d55bbe99612f2eb1cb4048401a43","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/index.js#0004:DEPENDENCY_KINDS","exportIndex":4,"name":"DEPENDENCY_KINDS","kind":"re-export","signature":"DEPENDENCY_KINDS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/index.md","moduleTitle":"network/realm/capsule/index","source":"engine/network/realm/capsule/index.js","import":"/engine/network/realm/capsule/index.js","sourceHash":"bc88b01280f5c828fd86b354cb7ebacca413d55bbe99612f2eb1cb4048401a43","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/index.js#0005:REALM_BRANCH_REF_FORMAT","exportIndex":5,"name":"REALM_BRANCH_REF_FORMAT","kind":"re-export","signature":"REALM_BRANCH_REF_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/index.md","moduleTitle":"network/realm/capsule/index","source":"engine/network/realm/capsule/index.js","import":"/engine/network/realm/capsule/index.js","sourceHash":"bc88b01280f5c828fd86b354cb7ebacca413d55bbe99612f2eb1cb4048401a43","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/index.js#0006:REALM_CAPSULE_EXPORT_FORMAT","exportIndex":6,"name":"REALM_CAPSULE_EXPORT_FORMAT","kind":"re-export","signature":"REALM_CAPSULE_EXPORT_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/index.md","moduleTitle":"network/realm/capsule/index","source":"engine/network/realm/capsule/index.js","import":"/engine/network/realm/capsule/index.js","sourceHash":"bc88b01280f5c828fd86b354cb7ebacca413d55bbe99612f2eb1cb4048401a43","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/index.js#0007:REALM_CAPSULE_FORMAT","exportIndex":7,"name":"REALM_CAPSULE_FORMAT","kind":"re-export","signature":"REALM_CAPSULE_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/index.md","moduleTitle":"network/realm/capsule/index","source":"engine/network/realm/capsule/index.js","import":"/engine/network/realm/capsule/index.js","sourceHash":"bc88b01280f5c828fd86b354cb7ebacca413d55bbe99612f2eb1cb4048401a43","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/index.js#0008:REALM_CAPSULE_SCHEMA_VERSION","exportIndex":8,"name":"REALM_CAPSULE_SCHEMA_VERSION","kind":"re-export","signature":"REALM_CAPSULE_SCHEMA_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/index.md","moduleTitle":"network/realm/capsule/index","source":"engine/network/realm/capsule/index.js","import":"/engine/network/realm/capsule/index.js","sourceHash":"bc88b01280f5c828fd86b354cb7ebacca413d55bbe99612f2eb1cb4048401a43","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/index.js#0009:RIGHTS_DECISIONS","exportIndex":9,"name":"RIGHTS_DECISIONS","kind":"re-export","signature":"RIGHTS_DECISIONS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/index.md","moduleTitle":"network/realm/capsule/index","source":"engine/network/realm/capsule/index.js","import":"/engine/network/realm/capsule/index.js","sourceHash":"bc88b01280f5c828fd86b354cb7ebacca413d55bbe99612f2eb1cb4048401a43","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/index.js#0010:RealmCapsuleV1","exportIndex":10,"name":"RealmCapsuleV1","kind":"re-export","signature":"RealmCapsuleV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/index.md","moduleTitle":"network/realm/capsule/index","source":"engine/network/realm/capsule/index.js","import":"/engine/network/realm/capsule/index.js","sourceHash":"bc88b01280f5c828fd86b354cb7ebacca413d55bbe99612f2eb1cb4048401a43","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/index.js#0011:RealmCapsuleValidationError","exportIndex":11,"name":"RealmCapsuleValidationError","kind":"re-export","signature":"RealmCapsuleValidationError","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/index.md","moduleTitle":"network/realm/capsule/index","source":"engine/network/realm/capsule/index.js","import":"/engine/network/realm/capsule/index.js","sourceHash":"bc88b01280f5c828fd86b354cb7ebacca413d55bbe99612f2eb1cb4048401a43","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/index.js#0012:adaptVerifiedPackageArtifact","exportIndex":12,"name":"adaptVerifiedPackageArtifact","kind":"re-export","signature":"adaptVerifiedPackageArtifact","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/index.md","moduleTitle":"network/realm/capsule/index","source":"engine/network/realm/capsule/index.js","import":"/engine/network/realm/capsule/index.js","sourceHash":"bc88b01280f5c828fd86b354cb7ebacca413d55bbe99612f2eb1cb4048401a43","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/index.js#0013:base64ToBytes","exportIndex":13,"name":"base64ToBytes","kind":"re-export","signature":"base64ToBytes","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/index.md","moduleTitle":"network/realm/capsule/index","source":"engine/network/realm/capsule/index.js","import":"/engine/network/realm/capsule/index.js","sourceHash":"bc88b01280f5c828fd86b354cb7ebacca413d55bbe99612f2eb1cb4048401a43","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/index.js#0014:buildRealmCapsule","exportIndex":14,"name":"buildRealmCapsule","kind":"re-export","signature":"buildRealmCapsule","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/index.md","moduleTitle":"network/realm/capsule/index","source":"engine/network/realm/capsule/index.js","import":"/engine/network/realm/capsule/index.js","sourceHash":"bc88b01280f5c828fd86b354cb7ebacca413d55bbe99612f2eb1cb4048401a43","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/index.js#0015:bytesToBase64","exportIndex":15,"name":"bytesToBase64","kind":"re-export","signature":"bytesToBase64","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/index.md","moduleTitle":"network/realm/capsule/index","source":"engine/network/realm/capsule/index.js","import":"/engine/network/realm/capsule/index.js","sourceHash":"bc88b01280f5c828fd86b354cb7ebacca413d55bbe99612f2eb1cb4048401a43","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/index.js#0016:computeCapsuleRoot","exportIndex":16,"name":"computeCapsuleRoot","kind":"re-export","signature":"computeCapsuleRoot","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/index.md","moduleTitle":"network/realm/capsule/index","source":"engine/network/realm/capsule/index.js","import":"/engine/network/realm/capsule/index.js","sourceHash":"bc88b01280f5c828fd86b354cb7ebacca413d55bbe99612f2eb1cb4048401a43","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/index.js#0017:contentIdHex","exportIndex":17,"name":"contentIdHex","kind":"re-export","signature":"contentIdHex","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/index.md","moduleTitle":"network/realm/capsule/index","source":"engine/network/realm/capsule/index.js","import":"/engine/network/realm/capsule/index.js","sourceHash":"bc88b01280f5c828fd86b354cb7ebacca413d55bbe99612f2eb1cb4048401a43","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/index.js#0018:createOfflineCapsuleExport","exportIndex":18,"name":"createOfflineCapsuleExport","kind":"re-export","signature":"createOfflineCapsuleExport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/index.md","moduleTitle":"network/realm/capsule/index","source":"engine/network/realm/capsule/index.js","import":"/engine/network/realm/capsule/index.js","sourceHash":"bc88b01280f5c828fd86b354cb7ebacca413d55bbe99612f2eb1cb4048401a43","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/index.js#0019:createRealmBranchRef","exportIndex":19,"name":"createRealmBranchRef","kind":"re-export","signature":"createRealmBranchRef","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/index.md","moduleTitle":"network/realm/capsule/index","source":"engine/network/realm/capsule/index.js","import":"/engine/network/realm/capsule/index.js","sourceHash":"bc88b01280f5c828fd86b354cb7ebacca413d55bbe99612f2eb1cb4048401a43","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/index.js#0020:deepFreeze","exportIndex":20,"name":"deepFreeze","kind":"re-export","signature":"deepFreeze","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/index.md","moduleTitle":"network/realm/capsule/index","source":"engine/network/realm/capsule/index.js","import":"/engine/network/realm/capsule/index.js","sourceHash":"bc88b01280f5c828fd86b354cb7ebacca413d55bbe99612f2eb1cb4048401a43","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/index.js#0021:hashRealmBranchRef","exportIndex":21,"name":"hashRealmBranchRef","kind":"re-export","signature":"hashRealmBranchRef","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/index.md","moduleTitle":"network/realm/capsule/index","source":"engine/network/realm/capsule/index.js","import":"/engine/network/realm/capsule/index.js","sourceHash":"bc88b01280f5c828fd86b354cb7ebacca413d55bbe99612f2eb1cb4048401a43","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/index.js#0022:isContentId","exportIndex":22,"name":"isContentId","kind":"re-export","signature":"isContentId","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/index.md","moduleTitle":"network/realm/capsule/index","source":"engine/network/realm/capsule/index.js","import":"/engine/network/realm/capsule/index.js","sourceHash":"bc88b01280f5c828fd86b354cb7ebacca413d55bbe99612f2eb1cb4048401a43","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/index.js#0023:normalizeCapsuleBody","exportIndex":23,"name":"normalizeCapsuleBody","kind":"re-export","signature":"normalizeCapsuleBody","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/index.md","moduleTitle":"network/realm/capsule/index","source":"engine/network/realm/capsule/index.js","import":"/engine/network/realm/capsule/index.js","sourceHash":"bc88b01280f5c828fd86b354cb7ebacca413d55bbe99612f2eb1cb4048401a43","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/index.js#0024:normalizeCompatibility","exportIndex":24,"name":"normalizeCompatibility","kind":"re-export","signature":"normalizeCompatibility","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/index.md","moduleTitle":"network/realm/capsule/index","source":"engine/network/realm/capsule/index.js","import":"/engine/network/realm/capsule/index.js","sourceHash":"bc88b01280f5c828fd86b354cb7ebacca413d55bbe99612f2eb1cb4048401a43","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/index.js#0025:normalizeProvenance","exportIndex":25,"name":"normalizeProvenance","kind":"re-export","signature":"normalizeProvenance","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/index.md","moduleTitle":"network/realm/capsule/index","source":"engine/network/realm/capsule/index.js","import":"/engine/network/realm/capsule/index.js","sourceHash":"bc88b01280f5c828fd86b354cb7ebacca413d55bbe99612f2eb1cb4048401a43","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/index.js#0026:normalizeRights","exportIndex":26,"name":"normalizeRights","kind":"re-export","signature":"normalizeRights","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/index.md","moduleTitle":"network/realm/capsule/index","source":"engine/network/realm/capsule/index.js","import":"/engine/network/realm/capsule/index.js","sourceHash":"bc88b01280f5c828fd86b354cb7ebacca413d55bbe99612f2eb1cb4048401a43","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/index.js#0027:prepareRealmBlob","exportIndex":27,"name":"prepareRealmBlob","kind":"re-export","signature":"prepareRealmBlob","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/index.md","moduleTitle":"network/realm/capsule/index","source":"engine/network/realm/capsule/index.js","import":"/engine/network/realm/capsule/index.js","sourceHash":"bc88b01280f5c828fd86b354cb7ebacca413d55bbe99612f2eb1cb4048401a43","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/index.js#0028:reassembleBlobChunks","exportIndex":28,"name":"reassembleBlobChunks","kind":"re-export","signature":"reassembleBlobChunks","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/index.md","moduleTitle":"network/realm/capsule/index","source":"engine/network/realm/capsule/index.js","import":"/engine/network/realm/capsule/index.js","sourceHash":"bc88b01280f5c828fd86b354cb7ebacca413d55bbe99612f2eb1cb4048401a43","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/index.js#0029:taggedSha256","exportIndex":29,"name":"taggedSha256","kind":"re-export","signature":"taggedSha256","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/index.md","moduleTitle":"network/realm/capsule/index","source":"engine/network/realm/capsule/index.js","import":"/engine/network/realm/capsule/index.js","sourceHash":"bc88b01280f5c828fd86b354cb7ebacca413d55bbe99612f2eb1cb4048401a43","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/index.js#0030:toUint8Array","exportIndex":30,"name":"toUint8Array","kind":"re-export","signature":"toUint8Array","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/index.md","moduleTitle":"network/realm/capsule/index","source":"engine/network/realm/capsule/index.js","import":"/engine/network/realm/capsule/index.js","sourceHash":"bc88b01280f5c828fd86b354cb7ebacca413d55bbe99612f2eb1cb4048401a43","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/index.js#0031:validateDependencyGraph","exportIndex":31,"name":"validateDependencyGraph","kind":"re-export","signature":"validateDependencyGraph","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/index.md","moduleTitle":"network/realm/capsule/index","source":"engine/network/realm/capsule/index.js","import":"/engine/network/realm/capsule/index.js","sourceHash":"bc88b01280f5c828fd86b354cb7ebacca413d55bbe99612f2eb1cb4048401a43","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/index.js#0032:validateRealmCapsuleShape","exportIndex":32,"name":"validateRealmCapsuleShape","kind":"re-export","signature":"validateRealmCapsuleShape","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/index.md","moduleTitle":"network/realm/capsule/index","source":"engine/network/realm/capsule/index.js","import":"/engine/network/realm/capsule/index.js","sourceHash":"bc88b01280f5c828fd86b354cb7ebacca413d55bbe99612f2eb1cb4048401a43","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/index.js#0033:verifyBlobAgainstDescriptor","exportIndex":33,"name":"verifyBlobAgainstDescriptor","kind":"re-export","signature":"verifyBlobAgainstDescriptor","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/index.md","moduleTitle":"network/realm/capsule/index","source":"engine/network/realm/capsule/index.js","import":"/engine/network/realm/capsule/index.js","sourceHash":"bc88b01280f5c828fd86b354cb7ebacca413d55bbe99612f2eb1cb4048401a43","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/index.js#0034:verifyOfflineCapsuleExport","exportIndex":34,"name":"verifyOfflineCapsuleExport","kind":"re-export","signature":"verifyOfflineCapsuleExport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/index.md","moduleTitle":"network/realm/capsule/index","source":"engine/network/realm/capsule/index.js","import":"/engine/network/realm/capsule/index.js","sourceHash":"bc88b01280f5c828fd86b354cb7ebacca413d55bbe99612f2eb1cb4048401a43","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/index.js#0035:verifyRealmBranchRef","exportIndex":35,"name":"verifyRealmBranchRef","kind":"re-export","signature":"verifyRealmBranchRef","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/capsule/index.md","moduleTitle":"network/realm/capsule/index","source":"engine/network/realm/capsule/index.js","import":"/engine/network/realm/capsule/index.js","sourceHash":"bc88b01280f5c828fd86b354cb7ebacca413d55bbe99612f2eb1cb4048401a43","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/capsule/index.js#0036:verifyRealmCapsule","exportIndex":36,"name":"verifyRealmCapsule","kind":"re-export","signature":"verifyRealmCapsule","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/chronicle/RealmChronicle.md","moduleTitle":"network/realm/chronicle/RealmChronicle","source":"engine/network/realm/chronicle/RealmChronicle.js","import":"/engine/network/realm/chronicle/RealmChronicle.js","sourceHash":"d4b40473f143c289ddfa944054b890f5307030cb1c92a1075dafd0e1b4ee40b5","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/chronicle/RealmChronicle.js","title":"network/realm/chronicle/RealmChronicle","summary":"RealmChronicle.js — signed SHA-256 causal history for a Realm branch. Chronicle events contain semantic records and state-root transitions, not simulation ticks.  The implementation is storage-agnostic so the same verification code is used for local persistence, Capsule import, and peers.","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/chronicle/RealmChronicle.md","moduleTitle":"network/realm/chronicle/RealmChronicle","source":"engine/network/realm/chronicle/RealmChronicle.js","import":"/engine/network/realm/chronicle/RealmChronicle.js","sourceHash":"d4b40473f143c289ddfa944054b890f5307030cb1c92a1075dafd0e1b4ee40b5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/chronicle/RealmChronicle.js#0000:RealmChronicle","exportIndex":0,"name":"RealmChronicle","kind":"class","signature":"class RealmChronicle","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/chronicle/RealmChronicle.md","moduleTitle":"network/realm/chronicle/RealmChronicle","source":"engine/network/realm/chronicle/RealmChronicle.js","import":"/engine/network/realm/chronicle/RealmChronicle.js","sourceHash":"d4b40473f143c289ddfa944054b890f5307030cb1c92a1075dafd0e1b4ee40b5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/chronicle/RealmChronicle.js#0001:createChronicleEvent","exportIndex":1,"name":"createChronicleEvent","kind":"function","signature":"async createChronicleEvent(input, signer)","summary":"Create a complete signed Chronicle event."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/chronicle/RealmChronicle.md","moduleTitle":"network/realm/chronicle/RealmChronicle","source":"engine/network/realm/chronicle/RealmChronicle.js","import":"/engine/network/realm/chronicle/RealmChronicle.js","sourceHash":"d4b40473f143c289ddfa944054b890f5307030cb1c92a1075dafd0e1b4ee40b5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/chronicle/RealmChronicle.js#0002:verifyChronicleEvent","exportIndex":2,"name":"verifyChronicleEvent","kind":"function","signature":"async verifyChronicleEvent(event, options = {})","summary":"Verify content hash, event hash, signer fingerprint, signature, and optional actor binding."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/chronicle/RealmChronicle.md","moduleTitle":"network/realm/chronicle/RealmChronicle","source":"engine/network/realm/chronicle/RealmChronicle.js","import":"/engine/network/realm/chronicle/RealmChronicle.js","sourceHash":"d4b40473f143c289ddfa944054b890f5307030cb1c92a1075dafd0e1b4ee40b5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/chronicle/RealmChronicle.js#0003:verifyChronicle","exportIndex":3,"name":"verifyChronicle","kind":"function","signature":"async verifyChronicle(value, options = {})","summary":"Verify and rebuild a complete Chronicle snapshot or event list."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/chronicle/RealmChronicle.md","moduleTitle":"network/realm/chronicle/RealmChronicle","source":"engine/network/realm/chronicle/RealmChronicle.js","import":"/engine/network/realm/chronicle/RealmChronicle.js","sourceHash":"d4b40473f143c289ddfa944054b890f5307030cb1c92a1075dafd0e1b4ee40b5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/chronicle/RealmChronicle.js#0004:CHRONICLE_EVENT_FORMAT","exportIndex":4,"name":"CHRONICLE_EVENT_FORMAT","kind":"constant","signature":"CHRONICLE_EVENT_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/chronicle/RealmChronicle.md","moduleTitle":"network/realm/chronicle/RealmChronicle","source":"engine/network/realm/chronicle/RealmChronicle.js","import":"/engine/network/realm/chronicle/RealmChronicle.js","sourceHash":"d4b40473f143c289ddfa944054b890f5307030cb1c92a1075dafd0e1b4ee40b5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/chronicle/RealmChronicle.js#0005:CHRONICLE_FORMAT","exportIndex":5,"name":"CHRONICLE_FORMAT","kind":"constant","signature":"CHRONICLE_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/chronicle/index.md","moduleTitle":"network/realm/chronicle/index","source":"engine/network/realm/chronicle/index.js","import":"/engine/network/realm/chronicle/index.js","sourceHash":"fb1ffbec25619cc8f6fbeaea531419199116fb0be05a1541ee9a9d16b2b0cd63","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/chronicle/index.js","title":"network/realm/chronicle/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/contracts.md","moduleTitle":"network/realm/contracts","source":"engine/network/realm/contracts.js","import":"/engine/network/realm/contracts.js","sourceHash":"41d3156962dd71b5d89b0401947cad140fa183d11a6b9f02628f29785aedde76","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/contracts.js","title":"network/realm/contracts","summary":"Stable Realm Network V1 contract descriptors. Descriptors contain references to the concrete implementations. Importing this module does not create stores, links, providers, timers, or network connections.","exportCount":20}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/contracts.md","moduleTitle":"network/realm/contracts","source":"engine/network/realm/contracts.js","import":"/engine/network/realm/contracts.js","sourceHash":"41d3156962dd71b5d89b0401947cad140fa183d11a6b9f02628f29785aedde76","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/contracts.js#0000:RealmPassportV1","exportIndex":0,"name":"RealmPassportV1","kind":"constant","signature":"RealmPassportV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/contracts.md","moduleTitle":"network/realm/contracts","source":"engine/network/realm/contracts.js","import":"/engine/network/realm/contracts.js","sourceHash":"41d3156962dd71b5d89b0401947cad140fa183d11a6b9f02628f29785aedde76","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/contracts.js#0001:RealmAddressV1","exportIndex":1,"name":"RealmAddressV1","kind":"constant","signature":"RealmAddressV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/contracts.md","moduleTitle":"network/realm/contracts","source":"engine/network/realm/contracts.js","import":"/engine/network/realm/contracts.js","sourceHash":"41d3156962dd71b5d89b0401947cad140fa183d11a6b9f02628f29785aedde76","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/contracts.js#0002:ChronicleEventV1","exportIndex":2,"name":"ChronicleEventV1","kind":"constant","signature":"ChronicleEventV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/contracts.md","moduleTitle":"network/realm/contracts","source":"engine/network/realm/contracts.js","import":"/engine/network/realm/contracts.js","sourceHash":"41d3156962dd71b5d89b0401947cad140fa183d11a6b9f02628f29785aedde76","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/contracts.js#0003:RealmLinkV1","exportIndex":3,"name":"RealmLinkV1","kind":"constant","signature":"RealmLinkV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/contracts.md","moduleTitle":"network/realm/contracts","source":"engine/network/realm/contracts.js","import":"/engine/network/realm/contracts.js","sourceHash":"41d3156962dd71b5d89b0401947cad140fa183d11a6b9f02628f29785aedde76","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/contracts.js#0004:AuthorityLeaseV1","exportIndex":4,"name":"AuthorityLeaseV1","kind":"constant","signature":"AuthorityLeaseV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/contracts.md","moduleTitle":"network/realm/contracts","source":"engine/network/realm/contracts.js","import":"/engine/network/realm/contracts.js","sourceHash":"41d3156962dd71b5d89b0401947cad140fa183d11a6b9f02628f29785aedde76","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/contracts.js#0005:AtlasRecordV1","exportIndex":5,"name":"AtlasRecordV1","kind":"constant","signature":"AtlasRecordV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/contracts.md","moduleTitle":"network/realm/contracts","source":"engine/network/realm/contracts.js","import":"/engine/network/realm/contracts.js","sourceHash":"41d3156962dd71b5d89b0401947cad140fa183d11a6b9f02628f29785aedde76","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/contracts.js#0006:PresenceV1","exportIndex":6,"name":"PresenceV1","kind":"constant","signature":"PresenceV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/contracts.md","moduleTitle":"network/realm/contracts","source":"engine/network/realm/contracts.js","import":"/engine/network/realm/contracts.js","sourceHash":"41d3156962dd71b5d89b0401947cad140fa183d11a6b9f02628f29785aedde76","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/contracts.js#0007:ContinuityV1","exportIndex":7,"name":"ContinuityV1","kind":"constant","signature":"ContinuityV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/contracts.md","moduleTitle":"network/realm/contracts","source":"engine/network/realm/contracts.js","import":"/engine/network/realm/contracts.js","sourceHash":"41d3156962dd71b5d89b0401947cad140fa183d11a6b9f02628f29785aedde76","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/contracts.js#0008:HealthSnapshotV1","exportIndex":8,"name":"HealthSnapshotV1","kind":"constant","signature":"HealthSnapshotV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/contracts.md","moduleTitle":"network/realm/contracts","source":"engine/network/realm/contracts.js","import":"/engine/network/realm/contracts.js","sourceHash":"41d3156962dd71b5d89b0401947cad140fa183d11a6b9f02628f29785aedde76","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/contracts.js#0009:REALM_NETWORK_PUBLIC_CONTRACTS_V1","exportIndex":9,"name":"REALM_NETWORK_PUBLIC_CONTRACTS_V1","kind":"constant","signature":"REALM_NETWORK_PUBLIC_CONTRACTS_V1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/contracts.md","moduleTitle":"network/realm/contracts","source":"engine/network/realm/contracts.js","import":"/engine/network/realm/contracts.js","sourceHash":"41d3156962dd71b5d89b0401947cad140fa183d11a6b9f02628f29785aedde76","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/contracts.js#0010:REALM_NETWORK_PUBLIC_CONTRACT_NAMES_V1","exportIndex":10,"name":"REALM_NETWORK_PUBLIC_CONTRACT_NAMES_V1","kind":"constant","signature":"REALM_NETWORK_PUBLIC_CONTRACT_NAMES_V1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/contracts.md","moduleTitle":"network/realm/contracts","source":"engine/network/realm/contracts.js","import":"/engine/network/realm/contracts.js","sourceHash":"41d3156962dd71b5d89b0401947cad140fa183d11a6b9f02628f29785aedde76","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/contracts.js#0011:AccordResultV1","exportIndex":11,"name":"AccordResultV1","kind":"re-export","signature":"AccordResultV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/contracts.md","moduleTitle":"network/realm/contracts","source":"engine/network/realm/contracts.js","import":"/engine/network/realm/contracts.js","sourceHash":"41d3156962dd71b5d89b0401947cad140fa183d11a6b9f02628f29785aedde76","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/contracts.js#0012:AccordTaskV1","exportIndex":12,"name":"AccordTaskV1","kind":"re-export","signature":"AccordTaskV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/contracts.md","moduleTitle":"network/realm/contracts","source":"engine/network/realm/contracts.js","import":"/engine/network/realm/contracts.js","sourceHash":"41d3156962dd71b5d89b0401947cad140fa183d11a6b9f02628f29785aedde76","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/contracts.js#0013:CapabilityGrantV1","exportIndex":13,"name":"CapabilityGrantV1","kind":"re-export","signature":"CapabilityGrantV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/contracts.md","moduleTitle":"network/realm/contracts","source":"engine/network/realm/contracts.js","import":"/engine/network/realm/contracts.js","sourceHash":"41d3156962dd71b5d89b0401947cad140fa183d11a6b9f02628f29785aedde76","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/contracts.js#0014:ContextCapsuleV1","exportIndex":14,"name":"ContextCapsuleV1","kind":"re-export","signature":"ContextCapsuleV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/contracts.md","moduleTitle":"network/realm/contracts","source":"engine/network/realm/contracts.js","import":"/engine/network/realm/contracts.js","sourceHash":"41d3156962dd71b5d89b0401947cad140fa183d11a6b9f02628f29785aedde76","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/contracts.js#0015:GatePlanV1","exportIndex":15,"name":"GatePlanV1","kind":"re-export","signature":"GatePlanV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/contracts.md","moduleTitle":"network/realm/contracts","source":"engine/network/realm/contracts.js","import":"/engine/network/realm/contracts.js","sourceHash":"41d3156962dd71b5d89b0401947cad140fa183d11a6b9f02628f29785aedde76","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/contracts.js#0016:MergeProposalV1","exportIndex":16,"name":"MergeProposalV1","kind":"re-export","signature":"MergeProposalV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/contracts.md","moduleTitle":"network/realm/contracts","source":"engine/network/realm/contracts.js","import":"/engine/network/realm/contracts.js","sourceHash":"41d3156962dd71b5d89b0401947cad140fa183d11a6b9f02628f29785aedde76","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/contracts.js#0017:OrganizationV1","exportIndex":17,"name":"OrganizationV1","kind":"re-export","signature":"OrganizationV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/contracts.md","moduleTitle":"network/realm/contracts","source":"engine/network/realm/contracts.js","import":"/engine/network/realm/contracts.js","sourceHash":"41d3156962dd71b5d89b0401947cad140fa183d11a6b9f02628f29785aedde76","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/contracts.js#0018:RealmBranchV1","exportIndex":18,"name":"RealmBranchV1","kind":"re-export","signature":"RealmBranchV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/contracts.md","moduleTitle":"network/realm/contracts","source":"engine/network/realm/contracts.js","import":"/engine/network/realm/contracts.js","sourceHash":"41d3156962dd71b5d89b0401947cad140fa183d11a6b9f02628f29785aedde76","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/contracts.js#0019:RealmCapsuleV1","exportIndex":19,"name":"RealmCapsuleV1","kind":"re-export","signature":"RealmCapsuleV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/gate/GatePlanV1.md","moduleTitle":"network/realm/gate/GatePlanV1","source":"engine/network/realm/gate/GatePlanV1.js","import":"/engine/network/realm/gate/GatePlanV1.js","sourceHash":"7e169d4ade6166a1da781c988b99eb2cf2e036b672ad49cec655951582200b5d","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/gate/GatePlanV1.js","title":"network/realm/gate/GatePlanV1","summary":"Fail-closed Realm entry planning over verified identity, content, and policy evidence.","exportCount":9}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/gate/GatePlanV1.md","moduleTitle":"network/realm/gate/GatePlanV1","source":"engine/network/realm/gate/GatePlanV1.js","import":"/engine/network/realm/gate/GatePlanV1.js","sourceHash":"7e169d4ade6166a1da781c988b99eb2cf2e036b672ad49cec655951582200b5d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/gate/GatePlanV1.js#0000:RealmGate","exportIndex":0,"name":"RealmGate","kind":"class","signature":"class RealmGate","summary":"Runtime Gate evaluator. It owns no persistence and performs no entry itself; it only emits a short-lived signed plan that Shield can enforce."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/gate/GatePlanV1.md","moduleTitle":"network/realm/gate/GatePlanV1","source":"engine/network/realm/gate/GatePlanV1.js","import":"/engine/network/realm/gate/GatePlanV1.js","sourceHash":"7e169d4ade6166a1da781c988b99eb2cf2e036b672ad49cec655951582200b5d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/gate/GatePlanV1.js#0001:deriveGateOutcome","exportIndex":1,"name":"deriveGateOutcome","kind":"function","signature":"deriveGateOutcome(checks)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/gate/GatePlanV1.md","moduleTitle":"network/realm/gate/GatePlanV1","source":"engine/network/realm/gate/GatePlanV1.js","import":"/engine/network/realm/gate/GatePlanV1.js","sourceHash":"7e169d4ade6166a1da781c988b99eb2cf2e036b672ad49cec655951582200b5d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/gate/GatePlanV1.js#0002:createGatePlan","exportIndex":2,"name":"createGatePlan","kind":"function","signature":"async createGatePlan(input, signer)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/gate/GatePlanV1.md","moduleTitle":"network/realm/gate/GatePlanV1","source":"engine/network/realm/gate/GatePlanV1.js","import":"/engine/network/realm/gate/GatePlanV1.js","sourceHash":"7e169d4ade6166a1da781c988b99eb2cf2e036b672ad49cec655951582200b5d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/gate/GatePlanV1.js#0003:verifyGatePlan","exportIndex":3,"name":"verifyGatePlan","kind":"function","signature":"async verifyGatePlan(record, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/gate/GatePlanV1.md","moduleTitle":"network/realm/gate/GatePlanV1","source":"engine/network/realm/gate/GatePlanV1.js","import":"/engine/network/realm/gate/GatePlanV1.js","sourceHash":"7e169d4ade6166a1da781c988b99eb2cf2e036b672ad49cec655951582200b5d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/gate/GatePlanV1.js#0004:GATE_PLAN_V1_FORMAT","exportIndex":4,"name":"GATE_PLAN_V1_FORMAT","kind":"constant","signature":"GATE_PLAN_V1_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/gate/GatePlanV1.md","moduleTitle":"network/realm/gate/GatePlanV1","source":"engine/network/realm/gate/GatePlanV1.js","import":"/engine/network/realm/gate/GatePlanV1.js","sourceHash":"7e169d4ade6166a1da781c988b99eb2cf2e036b672ad49cec655951582200b5d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/gate/GatePlanV1.js#0005:GATE_OUTCOME","exportIndex":5,"name":"GATE_OUTCOME","kind":"constant","signature":"GATE_OUTCOME","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/gate/GatePlanV1.md","moduleTitle":"network/realm/gate/GatePlanV1","source":"engine/network/realm/gate/GatePlanV1.js","import":"/engine/network/realm/gate/GatePlanV1.js","sourceHash":"7e169d4ade6166a1da781c988b99eb2cf2e036b672ad49cec655951582200b5d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/gate/GatePlanV1.js#0006:GATE_ACTION","exportIndex":6,"name":"GATE_ACTION","kind":"constant","signature":"GATE_ACTION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/gate/GatePlanV1.md","moduleTitle":"network/realm/gate/GatePlanV1","source":"engine/network/realm/gate/GatePlanV1.js","import":"/engine/network/realm/gate/GatePlanV1.js","sourceHash":"7e169d4ade6166a1da781c988b99eb2cf2e036b672ad49cec655951582200b5d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/gate/GatePlanV1.js#0007:GATE_CHECK","exportIndex":7,"name":"GATE_CHECK","kind":"constant","signature":"GATE_CHECK","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/gate/GatePlanV1.md","moduleTitle":"network/realm/gate/GatePlanV1","source":"engine/network/realm/gate/GatePlanV1.js","import":"/engine/network/realm/gate/GatePlanV1.js","sourceHash":"7e169d4ade6166a1da781c988b99eb2cf2e036b672ad49cec655951582200b5d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/gate/GatePlanV1.js#0008:GatePlanV1","exportIndex":8,"name":"GatePlanV1","kind":"constant","signature":"GatePlanV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/gate/index.md","moduleTitle":"network/realm/gate/index","source":"engine/network/realm/gate/index.js","import":"/engine/network/realm/gate/index.js","sourceHash":"a3acad02ca0c1c652a8b8249afee26e0485b4195e05ba2d4f068c41d7c357c1b","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/gate/index.js","title":"network/realm/gate/index","summary":"","exportCount":9}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/gate/index.md","moduleTitle":"network/realm/gate/index","source":"engine/network/realm/gate/index.js","import":"/engine/network/realm/gate/index.js","sourceHash":"a3acad02ca0c1c652a8b8249afee26e0485b4195e05ba2d4f068c41d7c357c1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/gate/index.js#0000:GATE_ACTION","exportIndex":0,"name":"GATE_ACTION","kind":"re-export","signature":"GATE_ACTION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/gate/index.md","moduleTitle":"network/realm/gate/index","source":"engine/network/realm/gate/index.js","import":"/engine/network/realm/gate/index.js","sourceHash":"a3acad02ca0c1c652a8b8249afee26e0485b4195e05ba2d4f068c41d7c357c1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/gate/index.js#0001:GATE_CHECK","exportIndex":1,"name":"GATE_CHECK","kind":"re-export","signature":"GATE_CHECK","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/gate/index.md","moduleTitle":"network/realm/gate/index","source":"engine/network/realm/gate/index.js","import":"/engine/network/realm/gate/index.js","sourceHash":"a3acad02ca0c1c652a8b8249afee26e0485b4195e05ba2d4f068c41d7c357c1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/gate/index.js#0002:GATE_OUTCOME","exportIndex":2,"name":"GATE_OUTCOME","kind":"re-export","signature":"GATE_OUTCOME","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/gate/index.md","moduleTitle":"network/realm/gate/index","source":"engine/network/realm/gate/index.js","import":"/engine/network/realm/gate/index.js","sourceHash":"a3acad02ca0c1c652a8b8249afee26e0485b4195e05ba2d4f068c41d7c357c1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/gate/index.js#0003:GATE_PLAN_V1_FORMAT","exportIndex":3,"name":"GATE_PLAN_V1_FORMAT","kind":"re-export","signature":"GATE_PLAN_V1_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/gate/index.md","moduleTitle":"network/realm/gate/index","source":"engine/network/realm/gate/index.js","import":"/engine/network/realm/gate/index.js","sourceHash":"a3acad02ca0c1c652a8b8249afee26e0485b4195e05ba2d4f068c41d7c357c1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/gate/index.js#0004:GatePlanV1","exportIndex":4,"name":"GatePlanV1","kind":"re-export","signature":"GatePlanV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/gate/index.md","moduleTitle":"network/realm/gate/index","source":"engine/network/realm/gate/index.js","import":"/engine/network/realm/gate/index.js","sourceHash":"a3acad02ca0c1c652a8b8249afee26e0485b4195e05ba2d4f068c41d7c357c1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/gate/index.js#0005:RealmGate","exportIndex":5,"name":"RealmGate","kind":"re-export","signature":"RealmGate","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/gate/index.md","moduleTitle":"network/realm/gate/index","source":"engine/network/realm/gate/index.js","import":"/engine/network/realm/gate/index.js","sourceHash":"a3acad02ca0c1c652a8b8249afee26e0485b4195e05ba2d4f068c41d7c357c1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/gate/index.js#0006:createGatePlan","exportIndex":6,"name":"createGatePlan","kind":"re-export","signature":"createGatePlan","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/gate/index.md","moduleTitle":"network/realm/gate/index","source":"engine/network/realm/gate/index.js","import":"/engine/network/realm/gate/index.js","sourceHash":"a3acad02ca0c1c652a8b8249afee26e0485b4195e05ba2d4f068c41d7c357c1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/gate/index.js#0007:deriveGateOutcome","exportIndex":7,"name":"deriveGateOutcome","kind":"re-export","signature":"deriveGateOutcome","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/gate/index.md","moduleTitle":"network/realm/gate/index","source":"engine/network/realm/gate/index.js","import":"/engine/network/realm/gate/index.js","sourceHash":"a3acad02ca0c1c652a8b8249afee26e0485b4195e05ba2d4f068c41d7c357c1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/gate/index.js#0008:verifyGatePlan","exportIndex":8,"name":"verifyGatePlan","kind":"re-export","signature":"verifyGatePlan","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/CapabilityGrantV1.md","moduleTitle":"network/realm/governance/CapabilityGrantV1","source":"engine/network/realm/governance/CapabilityGrantV1.js","import":"/engine/network/realm/governance/CapabilityGrantV1.js","sourceHash":"138f60c95a6e102b69ff02b033bba767f7217e6c1f4c97cd0e9ca1acd352176a","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/governance/CapabilityGrantV1.js","title":"network/realm/governance/CapabilityGrantV1","summary":"Scoped, attenuable, delegable, revocable CapabilityGrantV1 contracts.","exportCount":13}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/CapabilityGrantV1.md","moduleTitle":"network/realm/governance/CapabilityGrantV1","source":"engine/network/realm/governance/CapabilityGrantV1.js","import":"/engine/network/realm/governance/CapabilityGrantV1.js","sourceHash":"138f60c95a6e102b69ff02b033bba767f7217e6c1f4c97cd0e9ca1acd352176a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/CapabilityGrantV1.js#0000:RealmCapabilityRegistry","exportIndex":0,"name":"RealmCapabilityRegistry","kind":"class","signature":"class RealmCapabilityRegistry","summary":"Runtime registry with online revocation and dynamic membership/role checks."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/CapabilityGrantV1.md","moduleTitle":"network/realm/governance/CapabilityGrantV1","source":"engine/network/realm/governance/CapabilityGrantV1.js","import":"/engine/network/realm/governance/CapabilityGrantV1.js","sourceHash":"138f60c95a6e102b69ff02b033bba767f7217e6c1f4c97cd0e9ca1acd352176a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/CapabilityGrantV1.js#0001:createCapabilityGrant","exportIndex":1,"name":"createCapabilityGrant","kind":"function","signature":"async createCapabilityGrant(input, signer)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/CapabilityGrantV1.md","moduleTitle":"network/realm/governance/CapabilityGrantV1","source":"engine/network/realm/governance/CapabilityGrantV1.js","import":"/engine/network/realm/governance/CapabilityGrantV1.js","sourceHash":"138f60c95a6e102b69ff02b033bba767f7217e6c1f4c97cd0e9ca1acd352176a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/CapabilityGrantV1.js#0002:verifyCapabilityGrant","exportIndex":2,"name":"verifyCapabilityGrant","kind":"function","signature":"async verifyCapabilityGrant(record, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/CapabilityGrantV1.md","moduleTitle":"network/realm/governance/CapabilityGrantV1","source":"engine/network/realm/governance/CapabilityGrantV1.js","import":"/engine/network/realm/governance/CapabilityGrantV1.js","sourceHash":"138f60c95a6e102b69ff02b033bba767f7217e6c1f4c97cd0e9ca1acd352176a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/CapabilityGrantV1.js#0003:attenuateCapabilityGrant","exportIndex":3,"name":"attenuateCapabilityGrant","kind":"function","signature":"async attenuateCapabilityGrant(parentRecord, input, signer)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/CapabilityGrantV1.md","moduleTitle":"network/realm/governance/CapabilityGrantV1","source":"engine/network/realm/governance/CapabilityGrantV1.js","import":"/engine/network/realm/governance/CapabilityGrantV1.js","sourceHash":"138f60c95a6e102b69ff02b033bba767f7217e6c1f4c97cd0e9ca1acd352176a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/CapabilityGrantV1.js#0004:recoverCapabilityGrant","exportIndex":4,"name":"recoverCapabilityGrant","kind":"function","signature":"async recoverCapabilityGrant(previousRecord, input, signer)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/CapabilityGrantV1.md","moduleTitle":"network/realm/governance/CapabilityGrantV1","source":"engine/network/realm/governance/CapabilityGrantV1.js","import":"/engine/network/realm/governance/CapabilityGrantV1.js","sourceHash":"138f60c95a6e102b69ff02b033bba767f7217e6c1f4c97cd0e9ca1acd352176a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/CapabilityGrantV1.js#0005:createCapabilityRevocation","exportIndex":5,"name":"createCapabilityRevocation","kind":"function","signature":"async createCapabilityRevocation(input, signer)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/CapabilityGrantV1.md","moduleTitle":"network/realm/governance/CapabilityGrantV1","source":"engine/network/realm/governance/CapabilityGrantV1.js","import":"/engine/network/realm/governance/CapabilityGrantV1.js","sourceHash":"138f60c95a6e102b69ff02b033bba767f7217e6c1f4c97cd0e9ca1acd352176a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/CapabilityGrantV1.js#0006:verifyCapabilityRevocation","exportIndex":6,"name":"verifyCapabilityRevocation","kind":"function","signature":"async verifyCapabilityRevocation(record, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/CapabilityGrantV1.md","moduleTitle":"network/realm/governance/CapabilityGrantV1","source":"engine/network/realm/governance/CapabilityGrantV1.js","import":"/engine/network/realm/governance/CapabilityGrantV1.js","sourceHash":"138f60c95a6e102b69ff02b033bba767f7217e6c1f4c97cd0e9ca1acd352176a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/CapabilityGrantV1.js#0007:createCapabilityAuditReceipt","exportIndex":7,"name":"createCapabilityAuditReceipt","kind":"function","signature":"async createCapabilityAuditReceipt(input, signer)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/CapabilityGrantV1.md","moduleTitle":"network/realm/governance/CapabilityGrantV1","source":"engine/network/realm/governance/CapabilityGrantV1.js","import":"/engine/network/realm/governance/CapabilityGrantV1.js","sourceHash":"138f60c95a6e102b69ff02b033bba767f7217e6c1f4c97cd0e9ca1acd352176a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/CapabilityGrantV1.js#0008:verifyCapabilityAuditReceipt","exportIndex":8,"name":"verifyCapabilityAuditReceipt","kind":"function","signature":"async verifyCapabilityAuditReceipt(record, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/CapabilityGrantV1.md","moduleTitle":"network/realm/governance/CapabilityGrantV1","source":"engine/network/realm/governance/CapabilityGrantV1.js","import":"/engine/network/realm/governance/CapabilityGrantV1.js","sourceHash":"138f60c95a6e102b69ff02b033bba767f7217e6c1f4c97cd0e9ca1acd352176a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/CapabilityGrantV1.js#0009:CAPABILITY_GRANT_V1_FORMAT","exportIndex":9,"name":"CAPABILITY_GRANT_V1_FORMAT","kind":"constant","signature":"CAPABILITY_GRANT_V1_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/CapabilityGrantV1.md","moduleTitle":"network/realm/governance/CapabilityGrantV1","source":"engine/network/realm/governance/CapabilityGrantV1.js","import":"/engine/network/realm/governance/CapabilityGrantV1.js","sourceHash":"138f60c95a6e102b69ff02b033bba767f7217e6c1f4c97cd0e9ca1acd352176a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/CapabilityGrantV1.js#0010:CAPABILITY_REVOCATION_V1_FORMAT","exportIndex":10,"name":"CAPABILITY_REVOCATION_V1_FORMAT","kind":"constant","signature":"CAPABILITY_REVOCATION_V1_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/CapabilityGrantV1.md","moduleTitle":"network/realm/governance/CapabilityGrantV1","source":"engine/network/realm/governance/CapabilityGrantV1.js","import":"/engine/network/realm/governance/CapabilityGrantV1.js","sourceHash":"138f60c95a6e102b69ff02b033bba767f7217e6c1f4c97cd0e9ca1acd352176a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/CapabilityGrantV1.js#0011:CAPABILITY_AUDIT_RECEIPT_V1_FORMAT","exportIndex":11,"name":"CAPABILITY_AUDIT_RECEIPT_V1_FORMAT","kind":"constant","signature":"CAPABILITY_AUDIT_RECEIPT_V1_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/CapabilityGrantV1.md","moduleTitle":"network/realm/governance/CapabilityGrantV1","source":"engine/network/realm/governance/CapabilityGrantV1.js","import":"/engine/network/realm/governance/CapabilityGrantV1.js","sourceHash":"138f60c95a6e102b69ff02b033bba767f7217e6c1f4c97cd0e9ca1acd352176a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/CapabilityGrantV1.js#0012:CapabilityGrantV1","exportIndex":12,"name":"CapabilityGrantV1","kind":"constant","signature":"CapabilityGrantV1","summary":"Public contract descriptor for callers that discover schemas dynamically."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/GovernanceCrypto.md","moduleTitle":"network/realm/governance/GovernanceCrypto","source":"engine/network/realm/governance/GovernanceCrypto.js","import":"/engine/network/realm/governance/GovernanceCrypto.js","sourceHash":"5a26102258b7ba992b8ac90e77cee4c8466200a185352dd3017b21a4678fcdee","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/governance/GovernanceCrypto.js","title":"network/realm/governance/GovernanceCrypto","summary":"Shared signing primitives for Realm organization and capability records.","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/GovernanceCrypto.md","moduleTitle":"network/realm/governance/GovernanceCrypto","source":"engine/network/realm/governance/GovernanceCrypto.js","import":"/engine/network/realm/governance/GovernanceCrypto.js","sourceHash":"5a26102258b7ba992b8ac90e77cee4c8466200a185352dd3017b21a4678fcdee","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/GovernanceCrypto.js#0000:signerDescriptor","exportIndex":0,"name":"signerDescriptor","kind":"function","signature":"async signerDescriptor(signer)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/GovernanceCrypto.md","moduleTitle":"network/realm/governance/GovernanceCrypto","source":"engine/network/realm/governance/GovernanceCrypto.js","import":"/engine/network/realm/governance/GovernanceCrypto.js","sourceHash":"5a26102258b7ba992b8ac90e77cee4c8466200a185352dd3017b21a4678fcdee","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/GovernanceCrypto.js#0001:finishSignedRecord","exportIndex":1,"name":"finishSignedRecord","kind":"function","signature":"async finishSignedRecord(record, idField, signer)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/GovernanceCrypto.md","moduleTitle":"network/realm/governance/GovernanceCrypto","source":"engine/network/realm/governance/GovernanceCrypto.js","import":"/engine/network/realm/governance/GovernanceCrypto.js","sourceHash":"5a26102258b7ba992b8ac90e77cee4c8466200a185352dd3017b21a4678fcdee","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/GovernanceCrypto.js#0002:verifySignedRecord","exportIndex":2,"name":"verifySignedRecord","kind":"function","signature":"async verifySignedRecord(record, { format, idField })","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/GovernanceCrypto.md","moduleTitle":"network/realm/governance/GovernanceCrypto","source":"engine/network/realm/governance/GovernanceCrypto.js","import":"/engine/network/realm/governance/GovernanceCrypto.js","sourceHash":"5a26102258b7ba992b8ac90e77cee4c8466200a185352dd3017b21a4678fcdee","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/GovernanceCrypto.js#0003:boundedInteger","exportIndex":3,"name":"boundedInteger","kind":"function","signature":"boundedInteger(value, name, minimum = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/GovernanceCrypto.md","moduleTitle":"network/realm/governance/GovernanceCrypto","source":"engine/network/realm/governance/GovernanceCrypto.js","import":"/engine/network/realm/governance/GovernanceCrypto.js","sourceHash":"5a26102258b7ba992b8ac90e77cee4c8466200a185352dd3017b21a4678fcdee","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/GovernanceCrypto.js#0004:boundedToken","exportIndex":4,"name":"boundedToken","kind":"function","signature":"boundedToken(value, name, maximum = 128, { wildcard = false } = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/GovernanceCrypto.md","moduleTitle":"network/realm/governance/GovernanceCrypto","source":"engine/network/realm/governance/GovernanceCrypto.js","import":"/engine/network/realm/governance/GovernanceCrypto.js","sourceHash":"5a26102258b7ba992b8ac90e77cee4c8466200a185352dd3017b21a4678fcdee","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/GovernanceCrypto.js#0005:boundedText","exportIndex":5,"name":"boundedText","kind":"function","signature":"boundedText(value, name, maximum = 512)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/GovernanceCrypto.md","moduleTitle":"network/realm/governance/GovernanceCrypto","source":"engine/network/realm/governance/GovernanceCrypto.js","import":"/engine/network/realm/governance/GovernanceCrypto.js","sourceHash":"5a26102258b7ba992b8ac90e77cee4c8466200a185352dd3017b21a4678fcdee","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/GovernanceCrypto.js#0006:uniqueSorted","exportIndex":6,"name":"uniqueSorted","kind":"function","signature":"uniqueSorted(values, name, normalize, maximum = 128)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/OrganizationLedger.md","moduleTitle":"network/realm/governance/OrganizationLedger","source":"engine/network/realm/governance/OrganizationLedger.js","import":"/engine/network/realm/governance/OrganizationLedger.js","sourceHash":"da86b71a128bcd5aa9fe3e15d0c3c340c230081138b9bf1bb60e4630b827618c","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/governance/OrganizationLedger.js","title":"network/realm/governance/OrganizationLedger","summary":"Cryptographically verified organization history. The ledger uses the same contextual verifier for live persistence and replay. A proposal freezes its eligible membership set and quorum at its epoch; later joins cannot vote, while revoked members and superseded keys fail immediately.","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/OrganizationLedger.md","moduleTitle":"network/realm/governance/OrganizationLedger","source":"engine/network/realm/governance/OrganizationLedger.js","import":"/engine/network/realm/governance/OrganizationLedger.js","sourceHash":"da86b71a128bcd5aa9fe3e15d0c3c340c230081138b9bf1bb60e4630b827618c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/OrganizationLedger.js#0000:RealmOrganizationLedger","exportIndex":0,"name":"RealmOrganizationLedger","kind":"class","signature":"class RealmOrganizationLedger","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/OrganizationLedger.md","moduleTitle":"network/realm/governance/OrganizationLedger","source":"engine/network/realm/governance/OrganizationLedger.js","import":"/engine/network/realm/governance/OrganizationLedger.js","sourceHash":"da86b71a128bcd5aa9fe3e15d0c3c340c230081138b9bf1bb60e4630b827618c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/OrganizationLedger.js#0001:createGovernanceEnvelope","exportIndex":1,"name":"createGovernanceEnvelope","kind":"function","signature":"async createGovernanceEnvelope(input, signer)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/OrganizationLedger.md","moduleTitle":"network/realm/governance/OrganizationLedger","source":"engine/network/realm/governance/OrganizationLedger.js","import":"/engine/network/realm/governance/OrganizationLedger.js","sourceHash":"da86b71a128bcd5aa9fe3e15d0c3c340c230081138b9bf1bb60e4630b827618c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/OrganizationLedger.js#0002:verifyGovernanceEnvelope","exportIndex":2,"name":"verifyGovernanceEnvelope","kind":"function","signature":"async verifyGovernanceEnvelope(record)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/OrganizationLedger.md","moduleTitle":"network/realm/governance/OrganizationLedger","source":"engine/network/realm/governance/OrganizationLedger.js","import":"/engine/network/realm/governance/OrganizationLedger.js","sourceHash":"da86b71a128bcd5aa9fe3e15d0c3c340c230081138b9bf1bb60e4630b827618c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/OrganizationLedger.js#0003:replayOrganizationLedger","exportIndex":3,"name":"replayOrganizationLedger","kind":"function","signature":"async replayOrganizationLedger(organizationRecord, envelopes, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/OrganizationLedger.md","moduleTitle":"network/realm/governance/OrganizationLedger","source":"engine/network/realm/governance/OrganizationLedger.js","import":"/engine/network/realm/governance/OrganizationLedger.js","sourceHash":"da86b71a128bcd5aa9fe3e15d0c3c340c230081138b9bf1bb60e4630b827618c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/OrganizationLedger.js#0004:GOVERNANCE_ENVELOPE_FORMAT","exportIndex":4,"name":"GOVERNANCE_ENVELOPE_FORMAT","kind":"constant","signature":"GOVERNANCE_ENVELOPE_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/OrganizationLedger.md","moduleTitle":"network/realm/governance/OrganizationLedger","source":"engine/network/realm/governance/OrganizationLedger.js","import":"/engine/network/realm/governance/OrganizationLedger.js","sourceHash":"da86b71a128bcd5aa9fe3e15d0c3c340c230081138b9bf1bb60e4630b827618c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/OrganizationLedger.js#0005:GOVERNANCE_ENVELOPE_KIND","exportIndex":5,"name":"GOVERNANCE_ENVELOPE_KIND","kind":"constant","signature":"GOVERNANCE_ENVELOPE_KIND","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/OrganizationLedger.md","moduleTitle":"network/realm/governance/OrganizationLedger","source":"engine/network/realm/governance/OrganizationLedger.js","import":"/engine/network/realm/governance/OrganizationLedger.js","sourceHash":"da86b71a128bcd5aa9fe3e15d0c3c340c230081138b9bf1bb60e4630b827618c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/OrganizationLedger.js#0006:ORGANIZATION_ACTION","exportIndex":6,"name":"ORGANIZATION_ACTION","kind":"constant","signature":"ORGANIZATION_ACTION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/OrganizationV1.md","moduleTitle":"network/realm/governance/OrganizationV1","source":"engine/network/realm/governance/OrganizationV1.js","import":"/engine/network/realm/governance/OrganizationV1.js","sourceHash":"f5f6e8ea4b06cfb40b83fbff9022537d625682870ba4f4bf8d76eaf39fe92dae","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/governance/OrganizationV1.js","title":"network/realm/governance/OrganizationV1","summary":"Signed OrganizationV1 root contract and its fixed governance vocabulary.","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/OrganizationV1.md","moduleTitle":"network/realm/governance/OrganizationV1","source":"engine/network/realm/governance/OrganizationV1.js","import":"/engine/network/realm/governance/OrganizationV1.js","sourceHash":"f5f6e8ea4b06cfb40b83fbff9022537d625682870ba4f4bf8d76eaf39fe92dae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/OrganizationV1.js#0000:createOrganizationV1","exportIndex":0,"name":"createOrganizationV1","kind":"function","signature":"async createOrganizationV1(input, signer)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/OrganizationV1.md","moduleTitle":"network/realm/governance/OrganizationV1","source":"engine/network/realm/governance/OrganizationV1.js","import":"/engine/network/realm/governance/OrganizationV1.js","sourceHash":"f5f6e8ea4b06cfb40b83fbff9022537d625682870ba4f4bf8d76eaf39fe92dae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/OrganizationV1.js#0001:verifyOrganizationV1","exportIndex":1,"name":"verifyOrganizationV1","kind":"function","signature":"async verifyOrganizationV1(record)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/OrganizationV1.md","moduleTitle":"network/realm/governance/OrganizationV1","source":"engine/network/realm/governance/OrganizationV1.js","import":"/engine/network/realm/governance/OrganizationV1.js","sourceHash":"f5f6e8ea4b06cfb40b83fbff9022537d625682870ba4f4bf8d76eaf39fe92dae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/OrganizationV1.js#0002:ORGANIZATION_V1_FORMAT","exportIndex":2,"name":"ORGANIZATION_V1_FORMAT","kind":"constant","signature":"ORGANIZATION_V1_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/OrganizationV1.md","moduleTitle":"network/realm/governance/OrganizationV1","source":"engine/network/realm/governance/OrganizationV1.js","import":"/engine/network/realm/governance/OrganizationV1.js","sourceHash":"f5f6e8ea4b06cfb40b83fbff9022537d625682870ba4f4bf8d76eaf39fe92dae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/OrganizationV1.js#0003:ORGANIZATION_POWER","exportIndex":3,"name":"ORGANIZATION_POWER","kind":"constant","signature":"ORGANIZATION_POWER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/OrganizationV1.md","moduleTitle":"network/realm/governance/OrganizationV1","source":"engine/network/realm/governance/OrganizationV1.js","import":"/engine/network/realm/governance/OrganizationV1.js","sourceHash":"f5f6e8ea4b06cfb40b83fbff9022537d625682870ba4f4bf8d76eaf39fe92dae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/OrganizationV1.js#0004:DEFAULT_ORGANIZATION_ROLES","exportIndex":4,"name":"DEFAULT_ORGANIZATION_ROLES","kind":"constant","signature":"DEFAULT_ORGANIZATION_ROLES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/OrganizationV1.md","moduleTitle":"network/realm/governance/OrganizationV1","source":"engine/network/realm/governance/OrganizationV1.js","import":"/engine/network/realm/governance/OrganizationV1.js","sourceHash":"f5f6e8ea4b06cfb40b83fbff9022537d625682870ba4f4bf8d76eaf39fe92dae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/OrganizationV1.js#0005:OrganizationV1","exportIndex":5,"name":"OrganizationV1","kind":"constant","signature":"OrganizationV1","summary":"Public contract descriptor for callers that discover schemas dynamically."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/index.md","moduleTitle":"network/realm/governance/index","source":"engine/network/realm/governance/index.js","import":"/engine/network/realm/governance/index.js","sourceHash":"5a55c50d48cd975774812bd0457868da3f24fabdc79e33b32e3f9a7f99d3ab1f","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/governance/index.js","title":"network/realm/governance/index","summary":"","exportCount":26}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/index.md","moduleTitle":"network/realm/governance/index","source":"engine/network/realm/governance/index.js","import":"/engine/network/realm/governance/index.js","sourceHash":"5a55c50d48cd975774812bd0457868da3f24fabdc79e33b32e3f9a7f99d3ab1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/index.js#0000:CAPABILITY_AUDIT_RECEIPT_V1_FORMAT","exportIndex":0,"name":"CAPABILITY_AUDIT_RECEIPT_V1_FORMAT","kind":"re-export","signature":"CAPABILITY_AUDIT_RECEIPT_V1_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/index.md","moduleTitle":"network/realm/governance/index","source":"engine/network/realm/governance/index.js","import":"/engine/network/realm/governance/index.js","sourceHash":"5a55c50d48cd975774812bd0457868da3f24fabdc79e33b32e3f9a7f99d3ab1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/index.js#0001:CAPABILITY_GRANT_V1_FORMAT","exportIndex":1,"name":"CAPABILITY_GRANT_V1_FORMAT","kind":"re-export","signature":"CAPABILITY_GRANT_V1_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/index.md","moduleTitle":"network/realm/governance/index","source":"engine/network/realm/governance/index.js","import":"/engine/network/realm/governance/index.js","sourceHash":"5a55c50d48cd975774812bd0457868da3f24fabdc79e33b32e3f9a7f99d3ab1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/index.js#0002:CAPABILITY_REVOCATION_V1_FORMAT","exportIndex":2,"name":"CAPABILITY_REVOCATION_V1_FORMAT","kind":"re-export","signature":"CAPABILITY_REVOCATION_V1_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/index.md","moduleTitle":"network/realm/governance/index","source":"engine/network/realm/governance/index.js","import":"/engine/network/realm/governance/index.js","sourceHash":"5a55c50d48cd975774812bd0457868da3f24fabdc79e33b32e3f9a7f99d3ab1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/index.js#0003:CapabilityGrantV1","exportIndex":3,"name":"CapabilityGrantV1","kind":"re-export","signature":"CapabilityGrantV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/index.md","moduleTitle":"network/realm/governance/index","source":"engine/network/realm/governance/index.js","import":"/engine/network/realm/governance/index.js","sourceHash":"5a55c50d48cd975774812bd0457868da3f24fabdc79e33b32e3f9a7f99d3ab1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/index.js#0004:DEFAULT_ORGANIZATION_ROLES","exportIndex":4,"name":"DEFAULT_ORGANIZATION_ROLES","kind":"re-export","signature":"DEFAULT_ORGANIZATION_ROLES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/index.md","moduleTitle":"network/realm/governance/index","source":"engine/network/realm/governance/index.js","import":"/engine/network/realm/governance/index.js","sourceHash":"5a55c50d48cd975774812bd0457868da3f24fabdc79e33b32e3f9a7f99d3ab1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/index.js#0005:GOVERNANCE_ENVELOPE_FORMAT","exportIndex":5,"name":"GOVERNANCE_ENVELOPE_FORMAT","kind":"re-export","signature":"GOVERNANCE_ENVELOPE_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/index.md","moduleTitle":"network/realm/governance/index","source":"engine/network/realm/governance/index.js","import":"/engine/network/realm/governance/index.js","sourceHash":"5a55c50d48cd975774812bd0457868da3f24fabdc79e33b32e3f9a7f99d3ab1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/index.js#0006:GOVERNANCE_ENVELOPE_KIND","exportIndex":6,"name":"GOVERNANCE_ENVELOPE_KIND","kind":"re-export","signature":"GOVERNANCE_ENVELOPE_KIND","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/index.md","moduleTitle":"network/realm/governance/index","source":"engine/network/realm/governance/index.js","import":"/engine/network/realm/governance/index.js","sourceHash":"5a55c50d48cd975774812bd0457868da3f24fabdc79e33b32e3f9a7f99d3ab1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/index.js#0007:ORGANIZATION_ACTION","exportIndex":7,"name":"ORGANIZATION_ACTION","kind":"re-export","signature":"ORGANIZATION_ACTION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/index.md","moduleTitle":"network/realm/governance/index","source":"engine/network/realm/governance/index.js","import":"/engine/network/realm/governance/index.js","sourceHash":"5a55c50d48cd975774812bd0457868da3f24fabdc79e33b32e3f9a7f99d3ab1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/index.js#0008:ORGANIZATION_POWER","exportIndex":8,"name":"ORGANIZATION_POWER","kind":"re-export","signature":"ORGANIZATION_POWER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/index.md","moduleTitle":"network/realm/governance/index","source":"engine/network/realm/governance/index.js","import":"/engine/network/realm/governance/index.js","sourceHash":"5a55c50d48cd975774812bd0457868da3f24fabdc79e33b32e3f9a7f99d3ab1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/index.js#0009:ORGANIZATION_V1_FORMAT","exportIndex":9,"name":"ORGANIZATION_V1_FORMAT","kind":"re-export","signature":"ORGANIZATION_V1_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/index.md","moduleTitle":"network/realm/governance/index","source":"engine/network/realm/governance/index.js","import":"/engine/network/realm/governance/index.js","sourceHash":"5a55c50d48cd975774812bd0457868da3f24fabdc79e33b32e3f9a7f99d3ab1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/index.js#0010:OrganizationV1","exportIndex":10,"name":"OrganizationV1","kind":"re-export","signature":"OrganizationV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/index.md","moduleTitle":"network/realm/governance/index","source":"engine/network/realm/governance/index.js","import":"/engine/network/realm/governance/index.js","sourceHash":"5a55c50d48cd975774812bd0457868da3f24fabdc79e33b32e3f9a7f99d3ab1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/index.js#0011:RealmCapabilityRegistry","exportIndex":11,"name":"RealmCapabilityRegistry","kind":"re-export","signature":"RealmCapabilityRegistry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/index.md","moduleTitle":"network/realm/governance/index","source":"engine/network/realm/governance/index.js","import":"/engine/network/realm/governance/index.js","sourceHash":"5a55c50d48cd975774812bd0457868da3f24fabdc79e33b32e3f9a7f99d3ab1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/index.js#0012:RealmOrganizationLedger","exportIndex":12,"name":"RealmOrganizationLedger","kind":"re-export","signature":"RealmOrganizationLedger","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/index.md","moduleTitle":"network/realm/governance/index","source":"engine/network/realm/governance/index.js","import":"/engine/network/realm/governance/index.js","sourceHash":"5a55c50d48cd975774812bd0457868da3f24fabdc79e33b32e3f9a7f99d3ab1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/index.js#0013:attenuateCapabilityGrant","exportIndex":13,"name":"attenuateCapabilityGrant","kind":"re-export","signature":"attenuateCapabilityGrant","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/index.md","moduleTitle":"network/realm/governance/index","source":"engine/network/realm/governance/index.js","import":"/engine/network/realm/governance/index.js","sourceHash":"5a55c50d48cd975774812bd0457868da3f24fabdc79e33b32e3f9a7f99d3ab1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/index.js#0014:createCapabilityAuditReceipt","exportIndex":14,"name":"createCapabilityAuditReceipt","kind":"re-export","signature":"createCapabilityAuditReceipt","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/index.md","moduleTitle":"network/realm/governance/index","source":"engine/network/realm/governance/index.js","import":"/engine/network/realm/governance/index.js","sourceHash":"5a55c50d48cd975774812bd0457868da3f24fabdc79e33b32e3f9a7f99d3ab1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/index.js#0015:createCapabilityGrant","exportIndex":15,"name":"createCapabilityGrant","kind":"re-export","signature":"createCapabilityGrant","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/index.md","moduleTitle":"network/realm/governance/index","source":"engine/network/realm/governance/index.js","import":"/engine/network/realm/governance/index.js","sourceHash":"5a55c50d48cd975774812bd0457868da3f24fabdc79e33b32e3f9a7f99d3ab1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/index.js#0016:createCapabilityRevocation","exportIndex":16,"name":"createCapabilityRevocation","kind":"re-export","signature":"createCapabilityRevocation","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/index.md","moduleTitle":"network/realm/governance/index","source":"engine/network/realm/governance/index.js","import":"/engine/network/realm/governance/index.js","sourceHash":"5a55c50d48cd975774812bd0457868da3f24fabdc79e33b32e3f9a7f99d3ab1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/index.js#0017:createGovernanceEnvelope","exportIndex":17,"name":"createGovernanceEnvelope","kind":"re-export","signature":"createGovernanceEnvelope","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/index.md","moduleTitle":"network/realm/governance/index","source":"engine/network/realm/governance/index.js","import":"/engine/network/realm/governance/index.js","sourceHash":"5a55c50d48cd975774812bd0457868da3f24fabdc79e33b32e3f9a7f99d3ab1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/index.js#0018:createOrganizationV1","exportIndex":18,"name":"createOrganizationV1","kind":"re-export","signature":"createOrganizationV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/index.md","moduleTitle":"network/realm/governance/index","source":"engine/network/realm/governance/index.js","import":"/engine/network/realm/governance/index.js","sourceHash":"5a55c50d48cd975774812bd0457868da3f24fabdc79e33b32e3f9a7f99d3ab1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/index.js#0019:recoverCapabilityGrant","exportIndex":19,"name":"recoverCapabilityGrant","kind":"re-export","signature":"recoverCapabilityGrant","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/index.md","moduleTitle":"network/realm/governance/index","source":"engine/network/realm/governance/index.js","import":"/engine/network/realm/governance/index.js","sourceHash":"5a55c50d48cd975774812bd0457868da3f24fabdc79e33b32e3f9a7f99d3ab1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/index.js#0020:replayOrganizationLedger","exportIndex":20,"name":"replayOrganizationLedger","kind":"re-export","signature":"replayOrganizationLedger","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/index.md","moduleTitle":"network/realm/governance/index","source":"engine/network/realm/governance/index.js","import":"/engine/network/realm/governance/index.js","sourceHash":"5a55c50d48cd975774812bd0457868da3f24fabdc79e33b32e3f9a7f99d3ab1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/index.js#0021:verifyCapabilityAuditReceipt","exportIndex":21,"name":"verifyCapabilityAuditReceipt","kind":"re-export","signature":"verifyCapabilityAuditReceipt","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/index.md","moduleTitle":"network/realm/governance/index","source":"engine/network/realm/governance/index.js","import":"/engine/network/realm/governance/index.js","sourceHash":"5a55c50d48cd975774812bd0457868da3f24fabdc79e33b32e3f9a7f99d3ab1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/index.js#0022:verifyCapabilityGrant","exportIndex":22,"name":"verifyCapabilityGrant","kind":"re-export","signature":"verifyCapabilityGrant","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/index.md","moduleTitle":"network/realm/governance/index","source":"engine/network/realm/governance/index.js","import":"/engine/network/realm/governance/index.js","sourceHash":"5a55c50d48cd975774812bd0457868da3f24fabdc79e33b32e3f9a7f99d3ab1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/index.js#0023:verifyCapabilityRevocation","exportIndex":23,"name":"verifyCapabilityRevocation","kind":"re-export","signature":"verifyCapabilityRevocation","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/index.md","moduleTitle":"network/realm/governance/index","source":"engine/network/realm/governance/index.js","import":"/engine/network/realm/governance/index.js","sourceHash":"5a55c50d48cd975774812bd0457868da3f24fabdc79e33b32e3f9a7f99d3ab1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/index.js#0024:verifyGovernanceEnvelope","exportIndex":24,"name":"verifyGovernanceEnvelope","kind":"re-export","signature":"verifyGovernanceEnvelope","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/governance/index.md","moduleTitle":"network/realm/governance/index","source":"engine/network/realm/governance/index.js","import":"/engine/network/realm/governance/index.js","sourceHash":"5a55c50d48cd975774812bd0457868da3f24fabdc79e33b32e3f9a7f99d3ab1f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/governance/index.js#0025:verifyOrganizationV1","exportIndex":25,"name":"verifyOrganizationV1","kind":"re-export","signature":"verifyOrganizationV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/health/HealthSnapshot.md","moduleTitle":"network/realm/health/HealthSnapshot","source":"engine/network/realm/health/HealthSnapshot.js","import":"/engine/network/realm/health/HealthSnapshot.js","sourceHash":"6b19a2a8cb45e013592c0b258d852a4002524b6031f90f511041ab0d5b318a28","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/health/HealthSnapshot.js","title":"network/realm/health/HealthSnapshot","summary":"Record a RealmLink snapshot without exposing identities, keys, or payloads.","exportCount":10}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/health/HealthSnapshot.md","moduleTitle":"network/realm/health/HealthSnapshot","source":"engine/network/realm/health/HealthSnapshot.js","import":"/engine/network/realm/health/HealthSnapshot.js","sourceHash":"6b19a2a8cb45e013592c0b258d852a4002524b6031f90f511041ab0d5b318a28","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/health/HealthSnapshot.js#0000:createHealthMonitor","exportIndex":0,"name":"createHealthMonitor","kind":"function","signature":"createHealthMonitor({ realmId = null, branchId = null, now = ()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/health/HealthSnapshot.md","moduleTitle":"network/realm/health/HealthSnapshot","source":"engine/network/realm/health/HealthSnapshot.js","import":"/engine/network/realm/health/HealthSnapshot.js","sourceHash":"6b19a2a8cb45e013592c0b258d852a4002524b6031f90f511041ab0d5b318a28","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/health/HealthSnapshot.js#0001:recordHealthComponent","exportIndex":1,"name":"recordHealthComponent","kind":"function","signature":"recordHealthComponent(monitor, componentId, { status, reason = null, metrics = {}, ttlMs = 60_000, } = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/health/HealthSnapshot.md","moduleTitle":"network/realm/health/HealthSnapshot","source":"engine/network/realm/health/HealthSnapshot.js","import":"/engine/network/realm/health/HealthSnapshot.js","sourceHash":"6b19a2a8cb45e013592c0b258d852a4002524b6031f90f511041ab0d5b318a28","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/health/HealthSnapshot.js#0002:removeHealthComponent","exportIndex":2,"name":"removeHealthComponent","kind":"function","signature":"removeHealthComponent(monitor, componentId)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/health/HealthSnapshot.md","moduleTitle":"network/realm/health/HealthSnapshot","source":"engine/network/realm/health/HealthSnapshot.js","import":"/engine/network/realm/health/HealthSnapshot.js","sourceHash":"6b19a2a8cb45e013592c0b258d852a4002524b6031f90f511041ab0d5b318a28","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/health/HealthSnapshot.js#0003:subscribeHealth","exportIndex":3,"name":"subscribeHealth","kind":"function","signature":"subscribeHealth(monitor, subscriber)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/health/HealthSnapshot.md","moduleTitle":"network/realm/health/HealthSnapshot","source":"engine/network/realm/health/HealthSnapshot.js","import":"/engine/network/realm/health/HealthSnapshot.js","sourceHash":"6b19a2a8cb45e013592c0b258d852a4002524b6031f90f511041ab0d5b318a28","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/health/HealthSnapshot.js#0004:buildHealthSnapshotV1","exportIndex":4,"name":"buildHealthSnapshotV1","kind":"function","signature":"buildHealthSnapshotV1(monitor)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/health/HealthSnapshot.md","moduleTitle":"network/realm/health/HealthSnapshot","source":"engine/network/realm/health/HealthSnapshot.js","import":"/engine/network/realm/health/HealthSnapshot.js","sourceHash":"6b19a2a8cb45e013592c0b258d852a4002524b6031f90f511041ab0d5b318a28","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/health/HealthSnapshot.js#0005:observeRealmLinkHealth","exportIndex":5,"name":"observeRealmLinkHealth","kind":"function","signature":"observeRealmLinkHealth(monitor, linkSnapshot, { ttlMs = 30_000 } = {})","summary":"Record a RealmLink snapshot without exposing identities, keys, or payloads."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/health/HealthSnapshot.md","moduleTitle":"network/realm/health/HealthSnapshot","source":"engine/network/realm/health/HealthSnapshot.js","import":"/engine/network/realm/health/HealthSnapshot.js","sourceHash":"6b19a2a8cb45e013592c0b258d852a4002524b6031f90f511041ab0d5b318a28","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/health/HealthSnapshot.js#0006:observeDiscoveryHealth","exportIndex":6,"name":"observeDiscoveryHealth","kind":"function","signature":"observeDiscoveryHealth(monitor, providerStatuses, { ttlMs = 60_000 } = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/health/HealthSnapshot.md","moduleTitle":"network/realm/health/HealthSnapshot","source":"engine/network/realm/health/HealthSnapshot.js","import":"/engine/network/realm/health/HealthSnapshot.js","sourceHash":"6b19a2a8cb45e013592c0b258d852a4002524b6031f90f511041ab0d5b318a28","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/health/HealthSnapshot.js#0007:observePresenceHealth","exportIndex":7,"name":"observePresenceHealth","kind":"function","signature":"observePresenceHealth(monitor, { activeActors = 0, rejected = 0, sequenceGaps = 0 } = {}, { ttlMs = 60_000 } = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/health/HealthSnapshot.md","moduleTitle":"network/realm/health/HealthSnapshot","source":"engine/network/realm/health/HealthSnapshot.js","import":"/engine/network/realm/health/HealthSnapshot.js","sourceHash":"6b19a2a8cb45e013592c0b258d852a4002524b6031f90f511041ab0d5b318a28","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/health/HealthSnapshot.js#0008:HEALTH_SCHEMA","exportIndex":8,"name":"HEALTH_SCHEMA","kind":"constant","signature":"HEALTH_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/health/HealthSnapshot.md","moduleTitle":"network/realm/health/HealthSnapshot","source":"engine/network/realm/health/HealthSnapshot.js","import":"/engine/network/realm/health/HealthSnapshot.js","sourceHash":"6b19a2a8cb45e013592c0b258d852a4002524b6031f90f511041ab0d5b318a28","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/health/HealthSnapshot.js#0009:HEALTH_STATUS","exportIndex":9,"name":"HEALTH_STATUS","kind":"constant","signature":"HEALTH_STATUS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/health/ReachabilityProjection.md","moduleTitle":"network/realm/health/ReachabilityProjection","source":"engine/network/realm/health/ReachabilityProjection.js","import":"/engine/network/realm/health/ReachabilityProjection.js","sourceHash":"d36c4b7e7bcf5582d8cacb26a7c71c556284ae4962c7cb00644fa8d2145d3764","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/health/ReachabilityProjection.js","title":"network/realm/health/ReachabilityProjection","summary":"Build a secret-free reachability projection from locally observed evidence.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/health/ReachabilityProjection.md","moduleTitle":"network/realm/health/ReachabilityProjection","source":"engine/network/realm/health/ReachabilityProjection.js","import":"/engine/network/realm/health/ReachabilityProjection.js","sourceHash":"d36c4b7e7bcf5582d8cacb26a7c71c556284ae4962c7cb00644fa8d2145d3764","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/health/ReachabilityProjection.js#0000:projectEndpointReachability","exportIndex":0,"name":"projectEndpointReachability","kind":"function","signature":"projectEndpointReachability({ residentActive = false, routeCount = 0, masterservers = [], peers = [], observedAt = Date.now()","summary":"Build a secret-free reachability projection from locally observed evidence."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/health/ReachabilityProjection.md","moduleTitle":"network/realm/health/ReachabilityProjection","source":"engine/network/realm/health/ReachabilityProjection.js","import":"/engine/network/realm/health/ReachabilityProjection.js","sourceHash":"d36c4b7e7bcf5582d8cacb26a7c71c556284ae4962c7cb00644fa8d2145d3764","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/health/ReachabilityProjection.js#0001:ENDPOINT_REACHABILITY","exportIndex":1,"name":"ENDPOINT_REACHABILITY","kind":"constant","signature":"ENDPOINT_REACHABILITY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/health/index.md","moduleTitle":"network/realm/health/index","source":"engine/network/realm/health/index.js","import":"/engine/network/realm/health/index.js","sourceHash":"78d8045b0250cdea5bfc7f5ef30e2dce6a56baa4ef92f55870da2d4d8b9d8e41","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/health/index.js","title":"network/realm/health/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/identity/RealmPassport.md","moduleTitle":"network/realm/identity/RealmPassport","source":"engine/network/realm/identity/RealmPassport.js","import":"/engine/network/realm/identity/RealmPassport.js","sourceHash":"9e8d810bcb980b79d88b6ee6414532166850e3290ce72c00dcddec23ba80f7ee","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/identity/RealmPassport.js","title":"network/realm/identity/RealmPassport","summary":"RealmPassport.js — portable, signed public identity records. This module owns no keys and performs no persistence.  It consumes the existing signer interface and produces canonical records that can be stored, copied, and independently verified by any Realm Network peer.","exportCount":22}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/identity/RealmPassport.md","moduleTitle":"network/realm/identity/RealmPassport","source":"engine/network/realm/identity/RealmPassport.js","import":"/engine/network/realm/identity/RealmPassport.js","sourceHash":"9e8d810bcb980b79d88b6ee6414532166850e3290ce72c00dcddec23ba80f7ee","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/identity/RealmPassport.js#0000:createPassportLineage","exportIndex":0,"name":"createPassportLineage","kind":"function","signature":"async createPassportLineage({ passportId, createdAt = Date.now()","summary":"Create a self-signed genesis lineage. The Passport ID is bound to its root key."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/identity/RealmPassport.md","moduleTitle":"network/realm/identity/RealmPassport","source":"engine/network/realm/identity/RealmPassport.js","import":"/engine/network/realm/identity/RealmPassport.js","sourceHash":"9e8d810bcb980b79d88b6ee6414532166850e3290ce72c00dcddec23ba80f7ee","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/identity/RealmPassport.js#0001:appendPassportRotation","exportIndex":1,"name":"appendPassportRotation","kind":"function","signature":"appendPassportRotation(lineage, newSigner, previousSigner, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/identity/RealmPassport.md","moduleTitle":"network/realm/identity/RealmPassport","source":"engine/network/realm/identity/RealmPassport.js","import":"/engine/network/realm/identity/RealmPassport.js","sourceHash":"9e8d810bcb980b79d88b6ee6414532166850e3290ce72c00dcddec23ba80f7ee","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/identity/RealmPassport.js#0002:appendPassportRecovery","exportIndex":2,"name":"appendPassportRecovery","kind":"function","signature":"appendPassportRecovery(lineage, newSigner, previousSigner, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/identity/RealmPassport.md","moduleTitle":"network/realm/identity/RealmPassport","source":"engine/network/realm/identity/RealmPassport.js","import":"/engine/network/realm/identity/RealmPassport.js","sourceHash":"9e8d810bcb980b79d88b6ee6414532166850e3290ce72c00dcddec23ba80f7ee","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/identity/RealmPassport.js#0003:appendPassportRevocation","exportIndex":3,"name":"appendPassportRevocation","kind":"function","signature":"async appendPassportRevocation(lineage, currentSigner, options = {})","summary":"Append a terminal, signed key-revocation record."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/identity/RealmPassport.md","moduleTitle":"network/realm/identity/RealmPassport","source":"engine/network/realm/identity/RealmPassport.js","import":"/engine/network/realm/identity/RealmPassport.js","sourceHash":"9e8d810bcb980b79d88b6ee6414532166850e3290ce72c00dcddec23ba80f7ee","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/identity/RealmPassport.js#0004:verifyPassportLineage","exportIndex":4,"name":"verifyPassportLineage","kind":"function","signature":"async verifyPassportLineage(lineage)","summary":"Verify every digest, key fingerprint, link, and signature in a lineage."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/identity/RealmPassport.md","moduleTitle":"network/realm/identity/RealmPassport","source":"engine/network/realm/identity/RealmPassport.js","import":"/engine/network/realm/identity/RealmPassport.js","sourceHash":"9e8d810bcb980b79d88b6ee6414532166850e3290ce72c00dcddec23ba80f7ee","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/identity/RealmPassport.js#0005:createDeviceGrant","exportIndex":5,"name":"createDeviceGrant","kind":"function","signature":"async createDeviceGrant(input, passportSigner)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/identity/RealmPassport.md","moduleTitle":"network/realm/identity/RealmPassport","source":"engine/network/realm/identity/RealmPassport.js","import":"/engine/network/realm/identity/RealmPassport.js","sourceHash":"9e8d810bcb980b79d88b6ee6414532166850e3290ce72c00dcddec23ba80f7ee","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/identity/RealmPassport.js#0006:verifyDeviceGrant","exportIndex":6,"name":"verifyDeviceGrant","kind":"function","signature":"async verifyDeviceGrant(grant, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/identity/RealmPassport.md","moduleTitle":"network/realm/identity/RealmPassport","source":"engine/network/realm/identity/RealmPassport.js","import":"/engine/network/realm/identity/RealmPassport.js","sourceHash":"9e8d810bcb980b79d88b6ee6414532166850e3290ce72c00dcddec23ba80f7ee","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/identity/RealmPassport.js#0007:createDeviceRevocation","exportIndex":7,"name":"createDeviceRevocation","kind":"function","signature":"async createDeviceRevocation(input, passportSigner)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/identity/RealmPassport.md","moduleTitle":"network/realm/identity/RealmPassport","source":"engine/network/realm/identity/RealmPassport.js","import":"/engine/network/realm/identity/RealmPassport.js","sourceHash":"9e8d810bcb980b79d88b6ee6414532166850e3290ce72c00dcddec23ba80f7ee","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/identity/RealmPassport.js#0008:verifyDeviceRevocation","exportIndex":8,"name":"verifyDeviceRevocation","kind":"function","signature":"async verifyDeviceRevocation(record, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/identity/RealmPassport.md","moduleTitle":"network/realm/identity/RealmPassport","source":"engine/network/realm/identity/RealmPassport.js","import":"/engine/network/realm/identity/RealmPassport.js","sourceHash":"9e8d810bcb980b79d88b6ee6414532166850e3290ce72c00dcddec23ba80f7ee","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/identity/RealmPassport.js#0009:createRecoveryPolicy","exportIndex":9,"name":"createRecoveryPolicy","kind":"function","signature":"async createRecoveryPolicy(input, passportSigner)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/identity/RealmPassport.md","moduleTitle":"network/realm/identity/RealmPassport","source":"engine/network/realm/identity/RealmPassport.js","import":"/engine/network/realm/identity/RealmPassport.js","sourceHash":"9e8d810bcb980b79d88b6ee6414532166850e3290ce72c00dcddec23ba80f7ee","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/identity/RealmPassport.js#0010:verifyRecoveryPolicy","exportIndex":10,"name":"verifyRecoveryPolicy","kind":"function","signature":"async verifyRecoveryPolicy(policy)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/identity/RealmPassport.md","moduleTitle":"network/realm/identity/RealmPassport","source":"engine/network/realm/identity/RealmPassport.js","import":"/engine/network/realm/identity/RealmPassport.js","sourceHash":"9e8d810bcb980b79d88b6ee6414532166850e3290ce72c00dcddec23ba80f7ee","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/identity/RealmPassport.js#0011:createRecoveryRecord","exportIndex":11,"name":"createRecoveryRecord","kind":"function","signature":"async createRecoveryRecord(input, passportSigner)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/identity/RealmPassport.md","moduleTitle":"network/realm/identity/RealmPassport","source":"engine/network/realm/identity/RealmPassport.js","import":"/engine/network/realm/identity/RealmPassport.js","sourceHash":"9e8d810bcb980b79d88b6ee6414532166850e3290ce72c00dcddec23ba80f7ee","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/identity/RealmPassport.js#0012:verifyRecoveryRecord","exportIndex":12,"name":"verifyRecoveryRecord","kind":"function","signature":"async verifyRecoveryRecord(record, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/identity/RealmPassport.md","moduleTitle":"network/realm/identity/RealmPassport","source":"engine/network/realm/identity/RealmPassport.js","import":"/engine/network/realm/identity/RealmPassport.js","sourceHash":"9e8d810bcb980b79d88b6ee6414532166850e3290ce72c00dcddec23ba80f7ee","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/identity/RealmPassport.js#0013:createRealmPassport","exportIndex":13,"name":"createRealmPassport","kind":"function","signature":"async createRealmPassport(input, passportSigner)","summary":"Build a signed, allowlisted public Passport projection."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/identity/RealmPassport.md","moduleTitle":"network/realm/identity/RealmPassport","source":"engine/network/realm/identity/RealmPassport.js","import":"/engine/network/realm/identity/RealmPassport.js","sourceHash":"9e8d810bcb980b79d88b6ee6414532166850e3290ce72c00dcddec23ba80f7ee","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/identity/RealmPassport.js#0014:verifyRealmPassport","exportIndex":14,"name":"verifyRealmPassport","kind":"function","signature":"async verifyRealmPassport(passport)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/identity/RealmPassport.md","moduleTitle":"network/realm/identity/RealmPassport","source":"engine/network/realm/identity/RealmPassport.js","import":"/engine/network/realm/identity/RealmPassport.js","sourceHash":"9e8d810bcb980b79d88b6ee6414532166850e3290ce72c00dcddec23ba80f7ee","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/identity/RealmPassport.js#0015:PASSPORT_FORMAT","exportIndex":15,"name":"PASSPORT_FORMAT","kind":"constant","signature":"PASSPORT_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/identity/RealmPassport.md","moduleTitle":"network/realm/identity/RealmPassport","source":"engine/network/realm/identity/RealmPassport.js","import":"/engine/network/realm/identity/RealmPassport.js","sourceHash":"9e8d810bcb980b79d88b6ee6414532166850e3290ce72c00dcddec23ba80f7ee","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/identity/RealmPassport.js#0016:PASSPORT_LINEAGE_FORMAT","exportIndex":16,"name":"PASSPORT_LINEAGE_FORMAT","kind":"constant","signature":"PASSPORT_LINEAGE_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/identity/RealmPassport.md","moduleTitle":"network/realm/identity/RealmPassport","source":"engine/network/realm/identity/RealmPassport.js","import":"/engine/network/realm/identity/RealmPassport.js","sourceHash":"9e8d810bcb980b79d88b6ee6414532166850e3290ce72c00dcddec23ba80f7ee","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/identity/RealmPassport.js#0017:PASSPORT_EVENT_FORMAT","exportIndex":17,"name":"PASSPORT_EVENT_FORMAT","kind":"constant","signature":"PASSPORT_EVENT_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/identity/RealmPassport.md","moduleTitle":"network/realm/identity/RealmPassport","source":"engine/network/realm/identity/RealmPassport.js","import":"/engine/network/realm/identity/RealmPassport.js","sourceHash":"9e8d810bcb980b79d88b6ee6414532166850e3290ce72c00dcddec23ba80f7ee","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/identity/RealmPassport.js#0018:DEVICE_GRANT_FORMAT","exportIndex":18,"name":"DEVICE_GRANT_FORMAT","kind":"constant","signature":"DEVICE_GRANT_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/identity/RealmPassport.md","moduleTitle":"network/realm/identity/RealmPassport","source":"engine/network/realm/identity/RealmPassport.js","import":"/engine/network/realm/identity/RealmPassport.js","sourceHash":"9e8d810bcb980b79d88b6ee6414532166850e3290ce72c00dcddec23ba80f7ee","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/identity/RealmPassport.js#0019:DEVICE_REVOCATION_FORMAT","exportIndex":19,"name":"DEVICE_REVOCATION_FORMAT","kind":"constant","signature":"DEVICE_REVOCATION_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/identity/RealmPassport.md","moduleTitle":"network/realm/identity/RealmPassport","source":"engine/network/realm/identity/RealmPassport.js","import":"/engine/network/realm/identity/RealmPassport.js","sourceHash":"9e8d810bcb980b79d88b6ee6414532166850e3290ce72c00dcddec23ba80f7ee","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/identity/RealmPassport.js#0020:RECOVERY_POLICY_FORMAT","exportIndex":20,"name":"RECOVERY_POLICY_FORMAT","kind":"constant","signature":"RECOVERY_POLICY_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/identity/RealmPassport.md","moduleTitle":"network/realm/identity/RealmPassport","source":"engine/network/realm/identity/RealmPassport.js","import":"/engine/network/realm/identity/RealmPassport.js","sourceHash":"9e8d810bcb980b79d88b6ee6414532166850e3290ce72c00dcddec23ba80f7ee","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/identity/RealmPassport.js#0021:RECOVERY_RECORD_FORMAT","exportIndex":21,"name":"RECOVERY_RECORD_FORMAT","kind":"constant","signature":"RECOVERY_RECORD_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/identity/index.md","moduleTitle":"network/realm/identity/index","source":"engine/network/realm/identity/index.js","import":"/engine/network/realm/identity/index.js","sourceHash":"036cbdb09f13136e820c76a4352323ac114824da7c0cf936efc2223e1a616f1d","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/identity/index.js","title":"network/realm/identity/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/index.md","moduleTitle":"network/realm/index","source":"engine/network/realm/index.js","import":"/engine/network/realm/index.js","sourceHash":"375f6bf7b884191f4fcc297e3b13d1d9666c0a612f8392ba538ffcfdd5c63736","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/index.js","title":"network/realm/index","summary":"Explicit exports win over same-named subsystem descriptors and keep the public V1 contract surface stable while subsystem APIs remain available.","exportCount":20}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/index.md","moduleTitle":"network/realm/index","source":"engine/network/realm/index.js","import":"/engine/network/realm/index.js","sourceHash":"375f6bf7b884191f4fcc297e3b13d1d9666c0a612f8392ba538ffcfdd5c63736","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/index.js#0000:AccordResultV1","exportIndex":0,"name":"AccordResultV1","kind":"re-export","signature":"AccordResultV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/index.md","moduleTitle":"network/realm/index","source":"engine/network/realm/index.js","import":"/engine/network/realm/index.js","sourceHash":"375f6bf7b884191f4fcc297e3b13d1d9666c0a612f8392ba538ffcfdd5c63736","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/index.js#0001:AccordTaskV1","exportIndex":1,"name":"AccordTaskV1","kind":"re-export","signature":"AccordTaskV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/index.md","moduleTitle":"network/realm/index","source":"engine/network/realm/index.js","import":"/engine/network/realm/index.js","sourceHash":"375f6bf7b884191f4fcc297e3b13d1d9666c0a612f8392ba538ffcfdd5c63736","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/index.js#0002:AtlasRecordV1","exportIndex":2,"name":"AtlasRecordV1","kind":"re-export","signature":"AtlasRecordV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/index.md","moduleTitle":"network/realm/index","source":"engine/network/realm/index.js","import":"/engine/network/realm/index.js","sourceHash":"375f6bf7b884191f4fcc297e3b13d1d9666c0a612f8392ba538ffcfdd5c63736","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/index.js#0003:AuthorityLeaseV1","exportIndex":3,"name":"AuthorityLeaseV1","kind":"re-export","signature":"AuthorityLeaseV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/index.md","moduleTitle":"network/realm/index","source":"engine/network/realm/index.js","import":"/engine/network/realm/index.js","sourceHash":"375f6bf7b884191f4fcc297e3b13d1d9666c0a612f8392ba538ffcfdd5c63736","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/index.js#0004:CapabilityGrantV1","exportIndex":4,"name":"CapabilityGrantV1","kind":"re-export","signature":"CapabilityGrantV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/index.md","moduleTitle":"network/realm/index","source":"engine/network/realm/index.js","import":"/engine/network/realm/index.js","sourceHash":"375f6bf7b884191f4fcc297e3b13d1d9666c0a612f8392ba538ffcfdd5c63736","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/index.js#0005:ChronicleEventV1","exportIndex":5,"name":"ChronicleEventV1","kind":"re-export","signature":"ChronicleEventV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/index.md","moduleTitle":"network/realm/index","source":"engine/network/realm/index.js","import":"/engine/network/realm/index.js","sourceHash":"375f6bf7b884191f4fcc297e3b13d1d9666c0a612f8392ba538ffcfdd5c63736","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/index.js#0006:ContextCapsuleV1","exportIndex":6,"name":"ContextCapsuleV1","kind":"re-export","signature":"ContextCapsuleV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/index.md","moduleTitle":"network/realm/index","source":"engine/network/realm/index.js","import":"/engine/network/realm/index.js","sourceHash":"375f6bf7b884191f4fcc297e3b13d1d9666c0a612f8392ba538ffcfdd5c63736","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/index.js#0007:ContinuityV1","exportIndex":7,"name":"ContinuityV1","kind":"re-export","signature":"ContinuityV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/index.md","moduleTitle":"network/realm/index","source":"engine/network/realm/index.js","import":"/engine/network/realm/index.js","sourceHash":"375f6bf7b884191f4fcc297e3b13d1d9666c0a612f8392ba538ffcfdd5c63736","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/index.js#0008:GatePlanV1","exportIndex":8,"name":"GatePlanV1","kind":"re-export","signature":"GatePlanV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/index.md","moduleTitle":"network/realm/index","source":"engine/network/realm/index.js","import":"/engine/network/realm/index.js","sourceHash":"375f6bf7b884191f4fcc297e3b13d1d9666c0a612f8392ba538ffcfdd5c63736","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/index.js#0009:HealthSnapshotV1","exportIndex":9,"name":"HealthSnapshotV1","kind":"re-export","signature":"HealthSnapshotV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/index.md","moduleTitle":"network/realm/index","source":"engine/network/realm/index.js","import":"/engine/network/realm/index.js","sourceHash":"375f6bf7b884191f4fcc297e3b13d1d9666c0a612f8392ba538ffcfdd5c63736","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/index.js#0010:MergeProposalV1","exportIndex":10,"name":"MergeProposalV1","kind":"re-export","signature":"MergeProposalV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/index.md","moduleTitle":"network/realm/index","source":"engine/network/realm/index.js","import":"/engine/network/realm/index.js","sourceHash":"375f6bf7b884191f4fcc297e3b13d1d9666c0a612f8392ba538ffcfdd5c63736","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/index.js#0011:OrganizationV1","exportIndex":11,"name":"OrganizationV1","kind":"re-export","signature":"OrganizationV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/index.md","moduleTitle":"network/realm/index","source":"engine/network/realm/index.js","import":"/engine/network/realm/index.js","sourceHash":"375f6bf7b884191f4fcc297e3b13d1d9666c0a612f8392ba538ffcfdd5c63736","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/index.js#0012:PresenceV1","exportIndex":12,"name":"PresenceV1","kind":"re-export","signature":"PresenceV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/index.md","moduleTitle":"network/realm/index","source":"engine/network/realm/index.js","import":"/engine/network/realm/index.js","sourceHash":"375f6bf7b884191f4fcc297e3b13d1d9666c0a612f8392ba538ffcfdd5c63736","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/index.js#0013:REALM_NETWORK_PUBLIC_CONTRACTS_V1","exportIndex":13,"name":"REALM_NETWORK_PUBLIC_CONTRACTS_V1","kind":"re-export","signature":"REALM_NETWORK_PUBLIC_CONTRACTS_V1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/index.md","moduleTitle":"network/realm/index","source":"engine/network/realm/index.js","import":"/engine/network/realm/index.js","sourceHash":"375f6bf7b884191f4fcc297e3b13d1d9666c0a612f8392ba538ffcfdd5c63736","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/index.js#0014:REALM_NETWORK_PUBLIC_CONTRACT_NAMES_V1","exportIndex":14,"name":"REALM_NETWORK_PUBLIC_CONTRACT_NAMES_V1","kind":"re-export","signature":"REALM_NETWORK_PUBLIC_CONTRACT_NAMES_V1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/index.md","moduleTitle":"network/realm/index","source":"engine/network/realm/index.js","import":"/engine/network/realm/index.js","sourceHash":"375f6bf7b884191f4fcc297e3b13d1d9666c0a612f8392ba538ffcfdd5c63736","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/index.js#0015:RealmAddressV1","exportIndex":15,"name":"RealmAddressV1","kind":"re-export","signature":"RealmAddressV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/index.md","moduleTitle":"network/realm/index","source":"engine/network/realm/index.js","import":"/engine/network/realm/index.js","sourceHash":"375f6bf7b884191f4fcc297e3b13d1d9666c0a612f8392ba538ffcfdd5c63736","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/index.js#0016:RealmBranchV1","exportIndex":16,"name":"RealmBranchV1","kind":"re-export","signature":"RealmBranchV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/index.md","moduleTitle":"network/realm/index","source":"engine/network/realm/index.js","import":"/engine/network/realm/index.js","sourceHash":"375f6bf7b884191f4fcc297e3b13d1d9666c0a612f8392ba538ffcfdd5c63736","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/index.js#0017:RealmCapsuleV1","exportIndex":17,"name":"RealmCapsuleV1","kind":"re-export","signature":"RealmCapsuleV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/index.md","moduleTitle":"network/realm/index","source":"engine/network/realm/index.js","import":"/engine/network/realm/index.js","sourceHash":"375f6bf7b884191f4fcc297e3b13d1d9666c0a612f8392ba538ffcfdd5c63736","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/index.js#0018:RealmLinkV1","exportIndex":18,"name":"RealmLinkV1","kind":"re-export","signature":"RealmLinkV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/index.md","moduleTitle":"network/realm/index","source":"engine/network/realm/index.js","import":"/engine/network/realm/index.js","sourceHash":"375f6bf7b884191f4fcc297e3b13d1d9666c0a612f8392ba538ffcfdd5c63736","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/index.js#0019:RealmPassportV1","exportIndex":19,"name":"RealmPassportV1","kind":"re-export","signature":"RealmPassportV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/ContinuityStore.md","moduleTitle":"network/realm/link/ContinuityStore","source":"engine/network/realm/link/ContinuityStore.js","import":"/engine/network/realm/link/ContinuityStore.js","sourceHash":"aae6e0e12aa87b09db4c5721b2feb15760d8dfef121673880956dbb836ea8406","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/link/ContinuityStore.js","title":"network/realm/link/ContinuityStore","summary":"Storage-agnostic continuity records for reconnect and verified transfer resume. Raw reconnect tokens are deliberately rejected: callers persist an opaque credential only after sealing it with the OS/profile storage layer.","exportCount":11}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/ContinuityStore.md","moduleTitle":"network/realm/link/ContinuityStore","source":"engine/network/realm/link/ContinuityStore.js","import":"/engine/network/realm/link/ContinuityStore.js","sourceHash":"aae6e0e12aa87b09db4c5721b2feb15760d8dfef121673880956dbb836ea8406","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/ContinuityStore.js#0000:validateContinuityRecord","exportIndex":0,"name":"validateContinuityRecord","kind":"function","signature":"validateContinuityRecord(record)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/ContinuityStore.md","moduleTitle":"network/realm/link/ContinuityStore","source":"engine/network/realm/link/ContinuityStore.js","import":"/engine/network/realm/link/ContinuityStore.js","sourceHash":"aae6e0e12aa87b09db4c5721b2feb15760d8dfef121673880956dbb836ea8406","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/ContinuityStore.js#0001:createContinuityRecord","exportIndex":1,"name":"createContinuityRecord","kind":"function","signature":"createContinuityRecord({ linkId, realmId, branchId, localPeerId, remotePeerId = null, sessionEpoch = 0, lastSentSequence = 0, remoteMaxSequence = 0, remoteSeenSequences = [], sealedReconnectCredential = null, peerTicket = null, routeHints = [], transfers = [], updatedAt = Date.now()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/ContinuityStore.md","moduleTitle":"network/realm/link/ContinuityStore","source":"engine/network/realm/link/ContinuityStore.js","import":"/engine/network/realm/link/ContinuityStore.js","sourceHash":"aae6e0e12aa87b09db4c5721b2feb15760d8dfef121673880956dbb836ea8406","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/ContinuityStore.js#0002:continuityStorageKey","exportIndex":2,"name":"continuityStorageKey","kind":"function","signature":"continuityStorageKey({ realmId, branchId, linkId })","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/ContinuityStore.md","moduleTitle":"network/realm/link/ContinuityStore","source":"engine/network/realm/link/ContinuityStore.js","import":"/engine/network/realm/link/ContinuityStore.js","sourceHash":"aae6e0e12aa87b09db4c5721b2feb15760d8dfef121673880956dbb836ea8406","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/ContinuityStore.js#0003:createMemoryContinuityAdapter","exportIndex":3,"name":"createMemoryContinuityAdapter","kind":"function","signature":"createMemoryContinuityAdapter()","summary":"In-memory adapter for tests and ephemeral sessions; durable OS storage is injected with the same interface."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/ContinuityStore.md","moduleTitle":"network/realm/link/ContinuityStore","source":"engine/network/realm/link/ContinuityStore.js","import":"/engine/network/realm/link/ContinuityStore.js","sourceHash":"aae6e0e12aa87b09db4c5721b2feb15760d8dfef121673880956dbb836ea8406","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/ContinuityStore.js#0004:createContinuityStore","exportIndex":4,"name":"createContinuityStore","kind":"function","signature":"createContinuityStore({ adapter = createMemoryContinuityAdapter()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/ContinuityStore.md","moduleTitle":"network/realm/link/ContinuityStore","source":"engine/network/realm/link/ContinuityStore.js","import":"/engine/network/realm/link/ContinuityStore.js","sourceHash":"aae6e0e12aa87b09db4c5721b2feb15760d8dfef121673880956dbb836ea8406","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/ContinuityStore.js#0005:saveContinuity","exportIndex":5,"name":"saveContinuity","kind":"function","signature":"async saveContinuity(store, record)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/ContinuityStore.md","moduleTitle":"network/realm/link/ContinuityStore","source":"engine/network/realm/link/ContinuityStore.js","import":"/engine/network/realm/link/ContinuityStore.js","sourceHash":"aae6e0e12aa87b09db4c5721b2feb15760d8dfef121673880956dbb836ea8406","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/ContinuityStore.js#0006:loadContinuity","exportIndex":6,"name":"loadContinuity","kind":"function","signature":"async loadContinuity(store, ids)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/ContinuityStore.md","moduleTitle":"network/realm/link/ContinuityStore","source":"engine/network/realm/link/ContinuityStore.js","import":"/engine/network/realm/link/ContinuityStore.js","sourceHash":"aae6e0e12aa87b09db4c5721b2feb15760d8dfef121673880956dbb836ea8406","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/ContinuityStore.js#0007:removeContinuity","exportIndex":7,"name":"removeContinuity","kind":"function","signature":"async removeContinuity(store, ids)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/ContinuityStore.md","moduleTitle":"network/realm/link/ContinuityStore","source":"engine/network/realm/link/ContinuityStore.js","import":"/engine/network/realm/link/ContinuityStore.js","sourceHash":"aae6e0e12aa87b09db4c5721b2feb15760d8dfef121673880956dbb836ea8406","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/ContinuityStore.js#0008:updateTransferProgress","exportIndex":8,"name":"updateTransferProgress","kind":"function","signature":"updateTransferProgress(record, update, now = Date.now()","summary":"Update one transfer monotonically; completed/cancelled records cannot be reopened."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/ContinuityStore.md","moduleTitle":"network/realm/link/ContinuityStore","source":"engine/network/realm/link/ContinuityStore.js","import":"/engine/network/realm/link/ContinuityStore.js","sourceHash":"aae6e0e12aa87b09db4c5721b2feb15760d8dfef121673880956dbb836ea8406","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/ContinuityStore.js#0009:CONTINUITY_SCHEMA","exportIndex":9,"name":"CONTINUITY_SCHEMA","kind":"constant","signature":"CONTINUITY_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/ContinuityStore.md","moduleTitle":"network/realm/link/ContinuityStore","source":"engine/network/realm/link/ContinuityStore.js","import":"/engine/network/realm/link/ContinuityStore.js","sourceHash":"aae6e0e12aa87b09db4c5721b2feb15760d8dfef121673880956dbb836ea8406","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/ContinuityStore.js#0010:TRANSFER_STATE","exportIndex":10,"name":"TRANSFER_STATE","kind":"constant","signature":"TRANSFER_STATE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/DiscoveryProvider.md","moduleTitle":"network/realm/link/DiscoveryProvider","source":"engine/network/realm/link/DiscoveryProvider.js","import":"/engine/network/realm/link/DiscoveryProvider.js","sourceHash":"d218c7b04f7477a1ec7dfbbb779d812d197fe64e245d5fd8379edf43ee21ce0d","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/link/DiscoveryProvider.js","title":"network/realm/link/DiscoveryProvider","summary":"Realm discovery is an orchestration contract, not a new discovery network. Providers adapt the existing bootstrap, DHT, invite, contact, peer-ticket, and Masterserver mechanisms into one bounded result shape.","exportCount":11}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/DiscoveryProvider.md","moduleTitle":"network/realm/link/DiscoveryProvider","source":"engine/network/realm/link/DiscoveryProvider.js","import":"/engine/network/realm/link/DiscoveryProvider.js","sourceHash":"d218c7b04f7477a1ec7dfbbb779d812d197fe64e245d5fd8379edf43ee21ce0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/DiscoveryProvider.js#0000:normalizeDiscoveryCandidate","exportIndex":0,"name":"normalizeDiscoveryCandidate","kind":"function","signature":"normalizeDiscoveryCandidate(candidate, { sourceId, now = Date.now()","summary":"Normalize an untrusted provider result into the Realm discovery shape."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/DiscoveryProvider.md","moduleTitle":"network/realm/link/DiscoveryProvider","source":"engine/network/realm/link/DiscoveryProvider.js","import":"/engine/network/realm/link/DiscoveryProvider.js","sourceHash":"d218c7b04f7477a1ec7dfbbb779d812d197fe64e245d5fd8379edf43ee21ce0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/DiscoveryProvider.js#0001:createDiscoveryProvider","exportIndex":1,"name":"createDiscoveryProvider","kind":"function","signature":"createDiscoveryProvider({ id, kind = DISCOVERY_KIND.CUSTOM, priority = 0, discover, advertise = null, revoke = null, health = null, } = {})","summary":"Define one discovery provider. Network algorithms remain in the adapted subsystem."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/DiscoveryProvider.md","moduleTitle":"network/realm/link/DiscoveryProvider","source":"engine/network/realm/link/DiscoveryProvider.js","import":"/engine/network/realm/link/DiscoveryProvider.js","sourceHash":"d218c7b04f7477a1ec7dfbbb779d812d197fe64e245d5fd8379edf43ee21ce0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/DiscoveryProvider.js#0002:createDiscoveryRegistry","exportIndex":2,"name":"createDiscoveryRegistry","kind":"function","signature":"createDiscoveryRegistry({ now = ()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/DiscoveryProvider.md","moduleTitle":"network/realm/link/DiscoveryProvider","source":"engine/network/realm/link/DiscoveryProvider.js","import":"/engine/network/realm/link/DiscoveryProvider.js","sourceHash":"d218c7b04f7477a1ec7dfbbb779d812d197fe64e245d5fd8379edf43ee21ce0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/DiscoveryProvider.js#0003:registerDiscoveryProvider","exportIndex":3,"name":"registerDiscoveryProvider","kind":"function","signature":"registerDiscoveryProvider(registry, provider)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/DiscoveryProvider.md","moduleTitle":"network/realm/link/DiscoveryProvider","source":"engine/network/realm/link/DiscoveryProvider.js","import":"/engine/network/realm/link/DiscoveryProvider.js","sourceHash":"d218c7b04f7477a1ec7dfbbb779d812d197fe64e245d5fd8379edf43ee21ce0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/DiscoveryProvider.js#0004:unregisterDiscoveryProvider","exportIndex":4,"name":"unregisterDiscoveryProvider","kind":"function","signature":"unregisterDiscoveryProvider(registry, providerId)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/DiscoveryProvider.md","moduleTitle":"network/realm/link/DiscoveryProvider","source":"engine/network/realm/link/DiscoveryProvider.js","import":"/engine/network/realm/link/DiscoveryProvider.js","sourceHash":"d218c7b04f7477a1ec7dfbbb779d812d197fe64e245d5fd8379edf43ee21ce0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/DiscoveryProvider.js#0005:discoverRealmPeers","exportIndex":5,"name":"discoverRealmPeers","kind":"function","signature":"async discoverRealmPeers(registry, query = {}, { timeoutMs = 5000, correlationId = null } = {})","summary":"Query all enabled providers concurrently; one provider failure never erases valid peer results."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/DiscoveryProvider.md","moduleTitle":"network/realm/link/DiscoveryProvider","source":"engine/network/realm/link/DiscoveryProvider.js","import":"/engine/network/realm/link/DiscoveryProvider.js","sourceHash":"d218c7b04f7477a1ec7dfbbb779d812d197fe64e245d5fd8379edf43ee21ce0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/DiscoveryProvider.js#0006:discoveryProviderStatus","exportIndex":6,"name":"discoveryProviderStatus","kind":"function","signature":"discoveryProviderStatus(registry)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/DiscoveryProvider.md","moduleTitle":"network/realm/link/DiscoveryProvider","source":"engine/network/realm/link/DiscoveryProvider.js","import":"/engine/network/realm/link/DiscoveryProvider.js","sourceHash":"d218c7b04f7477a1ec7dfbbb779d812d197fe64e245d5fd8379edf43ee21ce0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/DiscoveryProvider.js#0007:createBootstrapRegistryProvider","exportIndex":7,"name":"createBootstrapRegistryProvider","kind":"function","signature":"createBootstrapRegistryProvider({ id = 'bootstrap', registry, priority = 10 } = {})","summary":"Adapt the existing ordered bootstrap registry without reproducing its scan logic."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/DiscoveryProvider.md","moduleTitle":"network/realm/link/DiscoveryProvider","source":"engine/network/realm/link/DiscoveryProvider.js","import":"/engine/network/realm/link/DiscoveryProvider.js","sourceHash":"d218c7b04f7477a1ec7dfbbb779d812d197fe64e245d5fd8379edf43ee21ce0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/DiscoveryProvider.js#0008:createPeerTicketDiscoveryProvider","exportIndex":8,"name":"createPeerTicketDiscoveryProvider","kind":"function","signature":"createPeerTicketDiscoveryProvider({ id = 'peer-tickets', store, priority = 100 } = {})","summary":"Adapt the existing signed peer-ticket store into discovery hints."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/DiscoveryProvider.md","moduleTitle":"network/realm/link/DiscoveryProvider","source":"engine/network/realm/link/DiscoveryProvider.js","import":"/engine/network/realm/link/DiscoveryProvider.js","sourceHash":"d218c7b04f7477a1ec7dfbbb779d812d197fe64e245d5fd8379edf43ee21ce0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/DiscoveryProvider.js#0009:createDhtDiscoveryProvider","exportIndex":9,"name":"createDhtDiscoveryProvider","kind":"function","signature":"createDhtDiscoveryProvider({ id = 'dht', transport, priority = 20 } = {})","summary":"Adapt the existing mesh DHT query transport; callers choose exactly one query key."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/DiscoveryProvider.md","moduleTitle":"network/realm/link/DiscoveryProvider","source":"engine/network/realm/link/DiscoveryProvider.js","import":"/engine/network/realm/link/DiscoveryProvider.js","sourceHash":"d218c7b04f7477a1ec7dfbbb779d812d197fe64e245d5fd8379edf43ee21ce0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/DiscoveryProvider.js#0010:DISCOVERY_KIND","exportIndex":10,"name":"DISCOVERY_KIND","kind":"constant","signature":"DISCOVERY_KIND","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/RealmLink.md","moduleTitle":"network/realm/link/RealmLink","source":"engine/network/realm/link/RealmLink.js","import":"/engine/network/realm/link/RealmLink.js","sourceHash":"91b068c708007eed1d8cb17c9324805b57f7bb902078c69281257013a736be1c","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/link/RealmLink.js","title":"network/realm/link/RealmLink","summary":"Create one transport-independent logical link. `verifyIdentity` is required so cryptographic key ownership is also checked against Passport/device authorization rather than trusted from an embedded public key.","exportCount":12}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/RealmLink.md","moduleTitle":"network/realm/link/RealmLink","source":"engine/network/realm/link/RealmLink.js","import":"/engine/network/realm/link/RealmLink.js","sourceHash":"91b068c708007eed1d8cb17c9324805b57f7bb902078c69281257013a736be1c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/RealmLink.js#0000:createRealmLink","exportIndex":0,"name":"createRealmLink","kind":"function","signature":"createRealmLink({ linkId, realmId, branchId, localIdentity, signer, verifyIdentity, supportedCapabilities = [], authorizeCapabilities = async ({ requested, supported })","summary":"Create one transport-independent logical link. `verifyIdentity` is required so cryptographic key ownership is also checked against Passport/device authorization rather than trusted from an embedded public key."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/RealmLink.md","moduleTitle":"network/realm/link/RealmLink","source":"engine/network/realm/link/RealmLink.js","import":"/engine/network/realm/link/RealmLink.js","sourceHash":"91b068c708007eed1d8cb17c9324805b57f7bb902078c69281257013a736be1c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/RealmLink.js#0001:attachRealmLinkTransport","exportIndex":1,"name":"attachRealmLinkTransport","kind":"function","signature":"async attachRealmLinkTransport(link, session, { initiate = true } = {})","summary":"Attach an existing transport session and optionally initiate the authenticated handshake."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/RealmLink.md","moduleTitle":"network/realm/link/RealmLink","source":"engine/network/realm/link/RealmLink.js","import":"/engine/network/realm/link/RealmLink.js","sourceHash":"91b068c708007eed1d8cb17c9324805b57f7bb902078c69281257013a736be1c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/RealmLink.js#0002:handleRealmLinkFrame","exportIndex":2,"name":"handleRealmLinkFrame","kind":"function","signature":"async handleRealmLinkFrame(link, frame, { binding = null } = {})","summary":"Verify, deduplicate, authorize, and dispatch one inbound Realm Link frame."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/RealmLink.md","moduleTitle":"network/realm/link/RealmLink","source":"engine/network/realm/link/RealmLink.js","import":"/engine/network/realm/link/RealmLink.js","sourceHash":"91b068c708007eed1d8cb17c9324805b57f7bb902078c69281257013a736be1c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/RealmLink.js#0003:sendRealmLinkData","exportIndex":3,"name":"sendRealmLinkData","kind":"function","signature":"async sendRealmLinkData(link, kind, payload, { capability = null } = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/RealmLink.md","moduleTitle":"network/realm/link/RealmLink","source":"engine/network/realm/link/RealmLink.js","import":"/engine/network/realm/link/RealmLink.js","sourceHash":"91b068c708007eed1d8cb17c9324805b57f7bb902078c69281257013a736be1c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/RealmLink.js#0004:upgradeRealmLinkTransport","exportIndex":4,"name":"upgradeRealmLinkTransport","kind":"function","signature":"async upgradeRealmLinkTransport(link, candidateSession)","summary":"Attempt a higher-priority channel while the current one remains live."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/RealmLink.md","moduleTitle":"network/realm/link/RealmLink","source":"engine/network/realm/link/RealmLink.js","import":"/engine/network/realm/link/RealmLink.js","sourceHash":"91b068c708007eed1d8cb17c9324805b57f7bb902078c69281257013a736be1c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/RealmLink.js#0005:snapshotRealmLink","exportIndex":5,"name":"snapshotRealmLink","kind":"function","signature":"snapshotRealmLink(link)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/RealmLink.md","moduleTitle":"network/realm/link/RealmLink","source":"engine/network/realm/link/RealmLink.js","import":"/engine/network/realm/link/RealmLink.js","sourceHash":"91b068c708007eed1d8cb17c9324805b57f7bb902078c69281257013a736be1c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/RealmLink.js#0006:realmLinkContinuityRecord","exportIndex":6,"name":"realmLinkContinuityRecord","kind":"function","signature":"realmLinkContinuityRecord(link, overrides = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/RealmLink.md","moduleTitle":"network/realm/link/RealmLink","source":"engine/network/realm/link/RealmLink.js","import":"/engine/network/realm/link/RealmLink.js","sourceHash":"91b068c708007eed1d8cb17c9324805b57f7bb902078c69281257013a736be1c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/RealmLink.js#0007:persistRealmLinkContinuity","exportIndex":7,"name":"persistRealmLinkContinuity","kind":"function","signature":"async persistRealmLinkContinuity(link, overrides = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/RealmLink.md","moduleTitle":"network/realm/link/RealmLink","source":"engine/network/realm/link/RealmLink.js","import":"/engine/network/realm/link/RealmLink.js","sourceHash":"91b068c708007eed1d8cb17c9324805b57f7bb902078c69281257013a736be1c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/RealmLink.js#0008:markRealmLinkDisconnected","exportIndex":8,"name":"markRealmLinkDisconnected","kind":"function","signature":"async markRealmLinkDisconnected(link, reason = 'transport-disconnected')","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/RealmLink.md","moduleTitle":"network/realm/link/RealmLink","source":"engine/network/realm/link/RealmLink.js","import":"/engine/network/realm/link/RealmLink.js","sourceHash":"91b068c708007eed1d8cb17c9324805b57f7bb902078c69281257013a736be1c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/RealmLink.js#0009:closeRealmLink","exportIndex":9,"name":"closeRealmLink","kind":"function","signature":"async closeRealmLink(link, reason = 'local-close')","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/RealmLink.md","moduleTitle":"network/realm/link/RealmLink","source":"engine/network/realm/link/RealmLink.js","import":"/engine/network/realm/link/RealmLink.js","sourceHash":"91b068c708007eed1d8cb17c9324805b57f7bb902078c69281257013a736be1c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/RealmLink.js#0010:realmLinkEvidence","exportIndex":10,"name":"realmLinkEvidence","kind":"function","signature":"realmLinkEvidence(link)","summary":"Canonical digest input for diagnostics/evidence without exposing keys or payloads."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/RealmLink.md","moduleTitle":"network/realm/link/RealmLink","source":"engine/network/realm/link/RealmLink.js","import":"/engine/network/realm/link/RealmLink.js","sourceHash":"91b068c708007eed1d8cb17c9324805b57f7bb902078c69281257013a736be1c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/RealmLink.js#0011:REALM_LINK_STATE","exportIndex":11,"name":"REALM_LINK_STATE","kind":"constant","signature":"REALM_LINK_STATE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/RealmLinkProtocol.md","moduleTitle":"network/realm/link/RealmLinkProtocol","source":"engine/network/realm/link/RealmLinkProtocol.js","import":"/engine/network/realm/link/RealmLinkProtocol.js","sourceHash":"cb039d55962b77aaf9d3da910bf8cfee1c0e75aaf4fda1b46426e6c97e49dd80","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/link/RealmLinkProtocol.js","title":"network/realm/link/RealmLinkProtocol","summary":"Build and sign one control/data frame using the existing authority signer.","exportCount":8}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/RealmLinkProtocol.md","moduleTitle":"network/realm/link/RealmLinkProtocol","source":"engine/network/realm/link/RealmLinkProtocol.js","import":"/engine/network/realm/link/RealmLinkProtocol.js","sourceHash":"cb039d55962b77aaf9d3da910bf8cfee1c0e75aaf4fda1b46426e6c97e49dd80","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/RealmLinkProtocol.js#0000:unsignedRealmLinkFrame","exportIndex":0,"name":"unsignedRealmLinkFrame","kind":"function","signature":"unsignedRealmLinkFrame(frame)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/RealmLinkProtocol.md","moduleTitle":"network/realm/link/RealmLinkProtocol","source":"engine/network/realm/link/RealmLinkProtocol.js","import":"/engine/network/realm/link/RealmLinkProtocol.js","sourceHash":"cb039d55962b77aaf9d3da910bf8cfee1c0e75aaf4fda1b46426e6c97e49dd80","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/RealmLinkProtocol.js#0001:signRealmLinkFrame","exportIndex":1,"name":"signRealmLinkFrame","kind":"function","signature":"async signRealmLinkFrame({ linkId, realmId, branchId, senderPeerId, sessionEpoch, sequence, messageId, issuedAt, type, payload = null, signer, } = {})","summary":"Build and sign one control/data frame using the existing authority signer."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/RealmLinkProtocol.md","moduleTitle":"network/realm/link/RealmLinkProtocol","source":"engine/network/realm/link/RealmLinkProtocol.js","import":"/engine/network/realm/link/RealmLinkProtocol.js","sourceHash":"cb039d55962b77aaf9d3da910bf8cfee1c0e75aaf4fda1b46426e6c97e49dd80","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/RealmLinkProtocol.js#0002:verifyRealmLinkFrame","exportIndex":2,"name":"verifyRealmLinkFrame","kind":"function","signature":"async verifyRealmLinkFrame(frame, { linkId, realmId, branchId, now = Date.now()","summary":"Cryptographically validate a frame. Passport/device authorization is a separate required hook."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/RealmLinkProtocol.md","moduleTitle":"network/realm/link/RealmLinkProtocol","source":"engine/network/realm/link/RealmLinkProtocol.js","import":"/engine/network/realm/link/RealmLinkProtocol.js","sourceHash":"cb039d55962b77aaf9d3da910bf8cfee1c0e75aaf4fda1b46426e6c97e49dd80","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/RealmLinkProtocol.js#0003:createRealmLinkReplayWindow","exportIndex":3,"name":"createRealmLinkReplayWindow","kind":"function","signature":"createRealmLinkReplayWindow({ width = 256, maxSequence = 0, seen = [] } = {})","summary":"Sliding sequence window supports limited cross-transport reordering while rejecting replay."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/RealmLinkProtocol.md","moduleTitle":"network/realm/link/RealmLinkProtocol","source":"engine/network/realm/link/RealmLinkProtocol.js","import":"/engine/network/realm/link/RealmLinkProtocol.js","sourceHash":"cb039d55962b77aaf9d3da910bf8cfee1c0e75aaf4fda1b46426e6c97e49dd80","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/RealmLinkProtocol.js#0004:acceptRealmLinkReplay","exportIndex":4,"name":"acceptRealmLinkReplay","kind":"function","signature":"acceptRealmLinkReplay(window, frame, { now = Date.now()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/RealmLinkProtocol.md","moduleTitle":"network/realm/link/RealmLinkProtocol","source":"engine/network/realm/link/RealmLinkProtocol.js","import":"/engine/network/realm/link/RealmLinkProtocol.js","sourceHash":"cb039d55962b77aaf9d3da910bf8cfee1c0e75aaf4fda1b46426e6c97e49dd80","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/RealmLinkProtocol.js#0005:snapshotRealmLinkReplayWindow","exportIndex":5,"name":"snapshotRealmLinkReplayWindow","kind":"function","signature":"snapshotRealmLinkReplayWindow(window)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/RealmLinkProtocol.md","moduleTitle":"network/realm/link/RealmLinkProtocol","source":"engine/network/realm/link/RealmLinkProtocol.js","import":"/engine/network/realm/link/RealmLinkProtocol.js","sourceHash":"cb039d55962b77aaf9d3da910bf8cfee1c0e75aaf4fda1b46426e6c97e49dd80","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/RealmLinkProtocol.js#0006:REALM_LINK_PROTOCOL","exportIndex":6,"name":"REALM_LINK_PROTOCOL","kind":"constant","signature":"REALM_LINK_PROTOCOL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/RealmLinkProtocol.md","moduleTitle":"network/realm/link/RealmLinkProtocol","source":"engine/network/realm/link/RealmLinkProtocol.js","import":"/engine/network/realm/link/RealmLinkProtocol.js","sourceHash":"cb039d55962b77aaf9d3da910bf8cfee1c0e75aaf4fda1b46426e6c97e49dd80","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/RealmLinkProtocol.js#0007:REALM_LINK_FRAME","exportIndex":7,"name":"REALM_LINK_FRAME","kind":"constant","signature":"REALM_LINK_FRAME","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/TransportProvider.md","moduleTitle":"network/realm/link/TransportProvider","source":"engine/network/realm/link/TransportProvider.js","import":"/engine/network/realm/link/TransportProvider.js","sourceHash":"faf61dfccb510baea9e2c5d90cf3ee23831f1998f35b75f7062f484de95b5b20","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/link/TransportProvider.js","title":"network/realm/link/TransportProvider","summary":"Realm transport providers adapt existing channels. They do not implement WebRTC, relays, WebSockets, LAN sockets, or encryption themselves.","exportCount":10}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/TransportProvider.md","moduleTitle":"network/realm/link/TransportProvider","source":"engine/network/realm/link/TransportProvider.js","import":"/engine/network/realm/link/TransportProvider.js","sourceHash":"faf61dfccb510baea9e2c5d90cf3ee23831f1998f35b75f7062f484de95b5b20","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/TransportProvider.js#0000:assertRealmTransportSession","exportIndex":0,"name":"assertRealmTransportSession","kind":"function","signature":"assertRealmTransportSession(session)","summary":"Validate the minimal bidirectional channel RealmLink consumes."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/TransportProvider.md","moduleTitle":"network/realm/link/TransportProvider","source":"engine/network/realm/link/TransportProvider.js","import":"/engine/network/realm/link/TransportProvider.js","sourceHash":"faf61dfccb510baea9e2c5d90cf3ee23831f1998f35b75f7062f484de95b5b20","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/TransportProvider.js#0001:createTransportProvider","exportIndex":1,"name":"createTransportProvider","kind":"function","signature":"createTransportProvider({ id, kind = TRANSPORT_KIND.CUSTOM, priority = null, canConnect = ()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/TransportProvider.md","moduleTitle":"network/realm/link/TransportProvider","source":"engine/network/realm/link/TransportProvider.js","import":"/engine/network/realm/link/TransportProvider.js","sourceHash":"faf61dfccb510baea9e2c5d90cf3ee23831f1998f35b75f7062f484de95b5b20","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/TransportProvider.js#0002:createTransportRegistry","exportIndex":2,"name":"createTransportRegistry","kind":"function","signature":"createTransportRegistry({ now = ()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/TransportProvider.md","moduleTitle":"network/realm/link/TransportProvider","source":"engine/network/realm/link/TransportProvider.js","import":"/engine/network/realm/link/TransportProvider.js","sourceHash":"faf61dfccb510baea9e2c5d90cf3ee23831f1998f35b75f7062f484de95b5b20","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/TransportProvider.js#0003:registerTransportProvider","exportIndex":3,"name":"registerTransportProvider","kind":"function","signature":"registerTransportProvider(registry, provider)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/TransportProvider.md","moduleTitle":"network/realm/link/TransportProvider","source":"engine/network/realm/link/TransportProvider.js","import":"/engine/network/realm/link/TransportProvider.js","sourceHash":"faf61dfccb510baea9e2c5d90cf3ee23831f1998f35b75f7062f484de95b5b20","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/TransportProvider.js#0004:unregisterTransportProvider","exportIndex":4,"name":"unregisterTransportProvider","kind":"function","signature":"unregisterTransportProvider(registry, providerId)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/TransportProvider.md","moduleTitle":"network/realm/link/TransportProvider","source":"engine/network/realm/link/TransportProvider.js","import":"/engine/network/realm/link/TransportProvider.js","sourceHash":"faf61dfccb510baea9e2c5d90cf3ee23831f1998f35b75f7062f484de95b5b20","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/TransportProvider.js#0005:connectRealmTransport","exportIndex":5,"name":"connectRealmTransport","kind":"function","signature":"async connectRealmTransport(registry, target, opts = {})","summary":"Try compatible providers in priority order. A failed direct path naturally falls through to an existing relay/WebSocket provider."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/TransportProvider.md","moduleTitle":"network/realm/link/TransportProvider","source":"engine/network/realm/link/TransportProvider.js","import":"/engine/network/realm/link/TransportProvider.js","sourceHash":"faf61dfccb510baea9e2c5d90cf3ee23831f1998f35b75f7062f484de95b5b20","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/TransportProvider.js#0006:transportProviderStatus","exportIndex":6,"name":"transportProviderStatus","kind":"function","signature":"transportProviderStatus(registry)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/TransportProvider.md","moduleTitle":"network/realm/link/TransportProvider","source":"engine/network/realm/link/TransportProvider.js","import":"/engine/network/realm/link/TransportProvider.js","sourceHash":"faf61dfccb510baea9e2c5d90cf3ee23831f1998f35b75f7062f484de95b5b20","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/TransportProvider.js#0007:isPreferredTransport","exportIndex":7,"name":"isPreferredTransport","kind":"function","signature":"isPreferredTransport(candidate, current)","summary":"True when a candidate session is a meaningful relay-to-direct upgrade."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/TransportProvider.md","moduleTitle":"network/realm/link/TransportProvider","source":"engine/network/realm/link/TransportProvider.js","import":"/engine/network/realm/link/TransportProvider.js","sourceHash":"faf61dfccb510baea9e2c5d90cf3ee23831f1998f35b75f7062f484de95b5b20","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/TransportProvider.js#0008:TRANSPORT_KIND","exportIndex":8,"name":"TRANSPORT_KIND","kind":"constant","signature":"TRANSPORT_KIND","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/TransportProvider.md","moduleTitle":"network/realm/link/TransportProvider","source":"engine/network/realm/link/TransportProvider.js","import":"/engine/network/realm/link/TransportProvider.js","sourceHash":"faf61dfccb510baea9e2c5d90cf3ee23831f1998f35b75f7062f484de95b5b20","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/link/TransportProvider.js#0009:DEFAULT_TRANSPORT_PRIORITY","exportIndex":9,"name":"DEFAULT_TRANSPORT_PRIORITY","kind":"constant","signature":"DEFAULT_TRANSPORT_PRIORITY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/link/index.md","moduleTitle":"network/realm/link/index","source":"engine/network/realm/link/index.js","import":"/engine/network/realm/link/index.js","sourceHash":"cc645d46a4eabae5ba70283065f0108f5292a6a0695febead05cad652b6cd14d","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/link/index.js","title":"network/realm/link/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/presence/PresenceV1.md","moduleTitle":"network/realm/presence/PresenceV1","source":"engine/network/realm/presence/PresenceV1.js","import":"/engine/network/realm/presence/PresenceV1.js","sourceHash":"877487bca81f833dae83bc12b48b2a25f245d6d56fd5fdbb366d84e752fba327","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/presence/PresenceV1.js","title":"network/realm/presence/PresenceV1","summary":"Verify signature, expiry, and Passport/device key authorization.","exportCount":10}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/presence/PresenceV1.md","moduleTitle":"network/realm/presence/PresenceV1","source":"engine/network/realm/presence/PresenceV1.js","import":"/engine/network/realm/presence/PresenceV1.js","sourceHash":"877487bca81f833dae83bc12b48b2a25f245d6d56fd5fdbb366d84e752fba327","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/presence/PresenceV1.js#0000:createPresenceV1","exportIndex":0,"name":"createPresenceV1","kind":"function","signature":"createPresenceV1({ realmId, branchId, actorId, deviceId, sessionId, sequence, status = PRESENCE_STATUS.ONLINE, activity = null, location = null, issuedAt = Date.now()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/presence/PresenceV1.md","moduleTitle":"network/realm/presence/PresenceV1","source":"engine/network/realm/presence/PresenceV1.js","import":"/engine/network/realm/presence/PresenceV1.js","sourceHash":"877487bca81f833dae83bc12b48b2a25f245d6d56fd5fdbb366d84e752fba327","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/presence/PresenceV1.js#0001:signPresenceV1","exportIndex":1,"name":"signPresenceV1","kind":"function","signature":"async signPresenceV1(record, signer)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/presence/PresenceV1.md","moduleTitle":"network/realm/presence/PresenceV1","source":"engine/network/realm/presence/PresenceV1.js","import":"/engine/network/realm/presence/PresenceV1.js","sourceHash":"877487bca81f833dae83bc12b48b2a25f245d6d56fd5fdbb366d84e752fba327","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/presence/PresenceV1.js#0002:verifyPresenceV1","exportIndex":2,"name":"verifyPresenceV1","kind":"function","signature":"async verifyPresenceV1(record, { authorizeKey, now = Date.now()","summary":"Verify signature, expiry, and Passport/device key authorization."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/presence/PresenceV1.md","moduleTitle":"network/realm/presence/PresenceV1","source":"engine/network/realm/presence/PresenceV1.js","import":"/engine/network/realm/presence/PresenceV1.js","sourceHash":"877487bca81f833dae83bc12b48b2a25f245d6d56fd5fdbb366d84e752fba327","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/presence/PresenceV1.js#0003:createPresenceTracker","exportIndex":3,"name":"createPresenceTracker","kind":"function","signature":"createPresenceTracker({ authorizeKey, now = ()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/presence/PresenceV1.md","moduleTitle":"network/realm/presence/PresenceV1","source":"engine/network/realm/presence/PresenceV1.js","import":"/engine/network/realm/presence/PresenceV1.js","sourceHash":"877487bca81f833dae83bc12b48b2a25f245d6d56fd5fdbb366d84e752fba327","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/presence/PresenceV1.js#0004:ingestPresence","exportIndex":4,"name":"ingestPresence","kind":"function","signature":"async ingestPresence(tracker, record)","summary":"Accept each signed session sequence once; a gap is surfaced but does not invent missing state."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/presence/PresenceV1.md","moduleTitle":"network/realm/presence/PresenceV1","source":"engine/network/realm/presence/PresenceV1.js","import":"/engine/network/realm/presence/PresenceV1.js","sourceHash":"877487bca81f833dae83bc12b48b2a25f245d6d56fd5fdbb366d84e752fba327","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/presence/PresenceV1.js#0005:pruneExpiredPresence","exportIndex":5,"name":"pruneExpiredPresence","kind":"function","signature":"pruneExpiredPresence(tracker, now = tracker.now()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/presence/PresenceV1.md","moduleTitle":"network/realm/presence/PresenceV1","source":"engine/network/realm/presence/PresenceV1.js","import":"/engine/network/realm/presence/PresenceV1.js","sourceHash":"877487bca81f833dae83bc12b48b2a25f245d6d56fd5fdbb366d84e752fba327","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/presence/PresenceV1.js#0006:presenceSnapshot","exportIndex":6,"name":"presenceSnapshot","kind":"function","signature":"presenceSnapshot(tracker, { realmId = null, branchId = null } = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/presence/PresenceV1.md","moduleTitle":"network/realm/presence/PresenceV1","source":"engine/network/realm/presence/PresenceV1.js","import":"/engine/network/realm/presence/PresenceV1.js","sourceHash":"877487bca81f833dae83bc12b48b2a25f245d6d56fd5fdbb366d84e752fba327","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/presence/PresenceV1.js#0007:PRESENCE_PROTOCOL","exportIndex":7,"name":"PRESENCE_PROTOCOL","kind":"constant","signature":"PRESENCE_PROTOCOL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/presence/PresenceV1.md","moduleTitle":"network/realm/presence/PresenceV1","source":"engine/network/realm/presence/PresenceV1.js","import":"/engine/network/realm/presence/PresenceV1.js","sourceHash":"877487bca81f833dae83bc12b48b2a25f245d6d56fd5fdbb366d84e752fba327","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/presence/PresenceV1.js#0008:PRESENCE_SCHEMA","exportIndex":8,"name":"PRESENCE_SCHEMA","kind":"constant","signature":"PRESENCE_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/presence/PresenceV1.md","moduleTitle":"network/realm/presence/PresenceV1","source":"engine/network/realm/presence/PresenceV1.js","import":"/engine/network/realm/presence/PresenceV1.js","sourceHash":"877487bca81f833dae83bc12b48b2a25f245d6d56fd5fdbb366d84e752fba327","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/presence/PresenceV1.js#0009:PRESENCE_STATUS","exportIndex":9,"name":"PRESENCE_STATUS","kind":"constant","signature":"PRESENCE_STATUS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/presence/index.md","moduleTitle":"network/realm/presence/index","source":"engine/network/realm/presence/index.js","import":"/engine/network/realm/presence/index.js","sourceHash":"875341afaffb927032e7b4f145096f7503e21ad4953c10fd5b31a525c3bb2cb2","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/presence/index.js","title":"network/realm/presence/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/publishing/RealmJourneyJournal.md","moduleTitle":"network/realm/publishing/RealmJourneyJournal","source":"engine/network/realm/publishing/RealmJourneyJournal.js","import":"/engine/network/realm/publishing/RealmJourneyJournal.js","sourceHash":"aea615f86818b20762e6f2886d9a6b94f852c3b21f0aa652b941e6bb8e31ff24","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/publishing/RealmJourneyJournal.js","title":"network/realm/publishing/RealmJourneyJournal","summary":"Signed publish/inspect/enter/leave history with exact branch-aware returns.","exportCount":9}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/publishing/RealmJourneyJournal.md","moduleTitle":"network/realm/publishing/RealmJourneyJournal","source":"engine/network/realm/publishing/RealmJourneyJournal.js","import":"/engine/network/realm/publishing/RealmJourneyJournal.js","sourceHash":"aea615f86818b20762e6f2886d9a6b94f852c3b21f0aa652b941e6bb8e31ff24","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/publishing/RealmJourneyJournal.js#0000:RealmJourneyJournal","exportIndex":0,"name":"RealmJourneyJournal","kind":"class","signature":"class RealmJourneyJournal","summary":"An append-only signed journal. Entry transitions are replayed locally; no network or storage side effects occur until a caller persists its snapshot."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/publishing/RealmJourneyJournal.md","moduleTitle":"network/realm/publishing/RealmJourneyJournal","source":"engine/network/realm/publishing/RealmJourneyJournal.js","import":"/engine/network/realm/publishing/RealmJourneyJournal.js","sourceHash":"aea615f86818b20762e6f2886d9a6b94f852c3b21f0aa652b941e6bb8e31ff24","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/publishing/RealmJourneyJournal.js#0001:normalizeRealmLocation","exportIndex":1,"name":"normalizeRealmLocation","kind":"function","signature":"normalizeRealmLocation(value, name = 'Realm location')","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/publishing/RealmJourneyJournal.md","moduleTitle":"network/realm/publishing/RealmJourneyJournal","source":"engine/network/realm/publishing/RealmJourneyJournal.js","import":"/engine/network/realm/publishing/RealmJourneyJournal.js","sourceHash":"aea615f86818b20762e6f2886d9a6b94f852c3b21f0aa652b941e6bb8e31ff24","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/publishing/RealmJourneyJournal.js#0002:createJourneyEvent","exportIndex":2,"name":"createJourneyEvent","kind":"function","signature":"async createJourneyEvent(input, signer)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/publishing/RealmJourneyJournal.md","moduleTitle":"network/realm/publishing/RealmJourneyJournal","source":"engine/network/realm/publishing/RealmJourneyJournal.js","import":"/engine/network/realm/publishing/RealmJourneyJournal.js","sourceHash":"aea615f86818b20762e6f2886d9a6b94f852c3b21f0aa652b941e6bb8e31ff24","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/publishing/RealmJourneyJournal.js#0003:verifyJourneyEvent","exportIndex":3,"name":"verifyJourneyEvent","kind":"function","signature":"async verifyJourneyEvent(record, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/publishing/RealmJourneyJournal.md","moduleTitle":"network/realm/publishing/RealmJourneyJournal","source":"engine/network/realm/publishing/RealmJourneyJournal.js","import":"/engine/network/realm/publishing/RealmJourneyJournal.js","sourceHash":"aea615f86818b20762e6f2886d9a6b94f852c3b21f0aa652b941e6bb8e31ff24","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/publishing/RealmJourneyJournal.js#0004:verifyJourneyJournal","exportIndex":4,"name":"verifyJourneyJournal","kind":"function","signature":"async verifyJourneyJournal(events, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/publishing/RealmJourneyJournal.md","moduleTitle":"network/realm/publishing/RealmJourneyJournal","source":"engine/network/realm/publishing/RealmJourneyJournal.js","import":"/engine/network/realm/publishing/RealmJourneyJournal.js","sourceHash":"aea615f86818b20762e6f2886d9a6b94f852c3b21f0aa652b941e6bb8e31ff24","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/publishing/RealmJourneyJournal.js#0005:REALM_JOURNEY_EVENT_V1_FORMAT","exportIndex":5,"name":"REALM_JOURNEY_EVENT_V1_FORMAT","kind":"constant","signature":"REALM_JOURNEY_EVENT_V1_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/publishing/RealmJourneyJournal.md","moduleTitle":"network/realm/publishing/RealmJourneyJournal","source":"engine/network/realm/publishing/RealmJourneyJournal.js","import":"/engine/network/realm/publishing/RealmJourneyJournal.js","sourceHash":"aea615f86818b20762e6f2886d9a6b94f852c3b21f0aa652b941e6bb8e31ff24","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/publishing/RealmJourneyJournal.js#0006:REALM_JOURNEY_SNAPSHOT_V1_FORMAT","exportIndex":6,"name":"REALM_JOURNEY_SNAPSHOT_V1_FORMAT","kind":"constant","signature":"REALM_JOURNEY_SNAPSHOT_V1_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/publishing/RealmJourneyJournal.md","moduleTitle":"network/realm/publishing/RealmJourneyJournal","source":"engine/network/realm/publishing/RealmJourneyJournal.js","import":"/engine/network/realm/publishing/RealmJourneyJournal.js","sourceHash":"aea615f86818b20762e6f2886d9a6b94f852c3b21f0aa652b941e6bb8e31ff24","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/publishing/RealmJourneyJournal.js#0007:REALM_JOURNEY_ACTION","exportIndex":7,"name":"REALM_JOURNEY_ACTION","kind":"constant","signature":"REALM_JOURNEY_ACTION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/publishing/RealmJourneyJournal.md","moduleTitle":"network/realm/publishing/RealmJourneyJournal","source":"engine/network/realm/publishing/RealmJourneyJournal.js","import":"/engine/network/realm/publishing/RealmJourneyJournal.js","sourceHash":"aea615f86818b20762e6f2886d9a6b94f852c3b21f0aa652b941e6bb8e31ff24","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/publishing/RealmJourneyJournal.js#0008:RealmJourneyJournalV1","exportIndex":8,"name":"RealmJourneyJournalV1","kind":"constant","signature":"RealmJourneyJournalV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/publishing/index.md","moduleTitle":"network/realm/publishing/index","source":"engine/network/realm/publishing/index.js","import":"/engine/network/realm/publishing/index.js","sourceHash":"a73f5eca44e3d648086fad516a8fa2e51007f32f71c01394419d1f1d18593eb6","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/publishing/index.js","title":"network/realm/publishing/index","summary":"","exportCount":9}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/publishing/index.md","moduleTitle":"network/realm/publishing/index","source":"engine/network/realm/publishing/index.js","import":"/engine/network/realm/publishing/index.js","sourceHash":"a73f5eca44e3d648086fad516a8fa2e51007f32f71c01394419d1f1d18593eb6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/publishing/index.js#0000:REALM_JOURNEY_ACTION","exportIndex":0,"name":"REALM_JOURNEY_ACTION","kind":"re-export","signature":"REALM_JOURNEY_ACTION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/publishing/index.md","moduleTitle":"network/realm/publishing/index","source":"engine/network/realm/publishing/index.js","import":"/engine/network/realm/publishing/index.js","sourceHash":"a73f5eca44e3d648086fad516a8fa2e51007f32f71c01394419d1f1d18593eb6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/publishing/index.js#0001:REALM_JOURNEY_EVENT_V1_FORMAT","exportIndex":1,"name":"REALM_JOURNEY_EVENT_V1_FORMAT","kind":"re-export","signature":"REALM_JOURNEY_EVENT_V1_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/publishing/index.md","moduleTitle":"network/realm/publishing/index","source":"engine/network/realm/publishing/index.js","import":"/engine/network/realm/publishing/index.js","sourceHash":"a73f5eca44e3d648086fad516a8fa2e51007f32f71c01394419d1f1d18593eb6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/publishing/index.js#0002:REALM_JOURNEY_SNAPSHOT_V1_FORMAT","exportIndex":2,"name":"REALM_JOURNEY_SNAPSHOT_V1_FORMAT","kind":"re-export","signature":"REALM_JOURNEY_SNAPSHOT_V1_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/publishing/index.md","moduleTitle":"network/realm/publishing/index","source":"engine/network/realm/publishing/index.js","import":"/engine/network/realm/publishing/index.js","sourceHash":"a73f5eca44e3d648086fad516a8fa2e51007f32f71c01394419d1f1d18593eb6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/publishing/index.js#0003:RealmJourneyJournal","exportIndex":3,"name":"RealmJourneyJournal","kind":"re-export","signature":"RealmJourneyJournal","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/publishing/index.md","moduleTitle":"network/realm/publishing/index","source":"engine/network/realm/publishing/index.js","import":"/engine/network/realm/publishing/index.js","sourceHash":"a73f5eca44e3d648086fad516a8fa2e51007f32f71c01394419d1f1d18593eb6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/publishing/index.js#0004:RealmJourneyJournalV1","exportIndex":4,"name":"RealmJourneyJournalV1","kind":"re-export","signature":"RealmJourneyJournalV1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/publishing/index.md","moduleTitle":"network/realm/publishing/index","source":"engine/network/realm/publishing/index.js","import":"/engine/network/realm/publishing/index.js","sourceHash":"a73f5eca44e3d648086fad516a8fa2e51007f32f71c01394419d1f1d18593eb6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/publishing/index.js#0005:createJourneyEvent","exportIndex":5,"name":"createJourneyEvent","kind":"re-export","signature":"createJourneyEvent","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/publishing/index.md","moduleTitle":"network/realm/publishing/index","source":"engine/network/realm/publishing/index.js","import":"/engine/network/realm/publishing/index.js","sourceHash":"a73f5eca44e3d648086fad516a8fa2e51007f32f71c01394419d1f1d18593eb6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/publishing/index.js#0006:normalizeRealmLocation","exportIndex":6,"name":"normalizeRealmLocation","kind":"re-export","signature":"normalizeRealmLocation","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/publishing/index.md","moduleTitle":"network/realm/publishing/index","source":"engine/network/realm/publishing/index.js","import":"/engine/network/realm/publishing/index.js","sourceHash":"a73f5eca44e3d648086fad516a8fa2e51007f32f71c01394419d1f1d18593eb6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/publishing/index.js#0007:verifyJourneyEvent","exportIndex":7,"name":"verifyJourneyEvent","kind":"re-export","signature":"verifyJourneyEvent","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/publishing/index.md","moduleTitle":"network/realm/publishing/index","source":"engine/network/realm/publishing/index.js","import":"/engine/network/realm/publishing/index.js","sourceHash":"a73f5eca44e3d648086fad516a8fa2e51007f32f71c01394419d1f1d18593eb6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/publishing/index.js#0008:verifyJourneyJournal","exportIndex":8,"name":"verifyJourneyJournal","kind":"re-export","signature":"verifyJourneyJournal","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/shield/RealmShield.md","moduleTitle":"network/realm/shield/RealmShield","source":"engine/network/realm/shield/RealmShield.js","import":"/engine/network/realm/shield/RealmShield.js","sourceHash":"26c45db6e76e4ce929ecca556498c09245052721c32bc7c678a26888f2b73768","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/shield/RealmShield.js","title":"network/realm/shield/RealmShield","summary":"Runtime isolation, quotas, moderation, and tamper-evident audit for Realm entry.","exportCount":8}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/shield/RealmShield.md","moduleTitle":"network/realm/shield/RealmShield","source":"engine/network/realm/shield/RealmShield.js","import":"/engine/network/realm/shield/RealmShield.js","sourceHash":"26c45db6e76e4ce929ecca556498c09245052721c32bc7c678a26888f2b73768","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/shield/RealmShield.js#0000:RealmShield","exportIndex":0,"name":"RealmShield","kind":"class","signature":"class RealmShield","summary":"Realm Shield is deliberately local. It applies signed Gate plans but stores no Realm authority and performs no server-side enforcement."}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/shield/RealmShield.md","moduleTitle":"network/realm/shield/RealmShield","source":"engine/network/realm/shield/RealmShield.js","import":"/engine/network/realm/shield/RealmShield.js","sourceHash":"26c45db6e76e4ce929ecca556498c09245052721c32bc7c678a26888f2b73768","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/shield/RealmShield.js#0001:verifyShieldAuditTrail","exportIndex":1,"name":"verifyShieldAuditTrail","kind":"function","signature":"async verifyShieldAuditTrail(events)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/shield/RealmShield.md","moduleTitle":"network/realm/shield/RealmShield","source":"engine/network/realm/shield/RealmShield.js","import":"/engine/network/realm/shield/RealmShield.js","sourceHash":"26c45db6e76e4ce929ecca556498c09245052721c32bc7c678a26888f2b73768","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/shield/RealmShield.js#0002:SHIELD_AUDIT_V1_FORMAT","exportIndex":2,"name":"SHIELD_AUDIT_V1_FORMAT","kind":"constant","signature":"SHIELD_AUDIT_V1_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/shield/RealmShield.md","moduleTitle":"network/realm/shield/RealmShield","source":"engine/network/realm/shield/RealmShield.js","import":"/engine/network/realm/shield/RealmShield.js","sourceHash":"26c45db6e76e4ce929ecca556498c09245052721c32bc7c678a26888f2b73768","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/shield/RealmShield.js#0003:SHIELD_REPORT_V1_FORMAT","exportIndex":3,"name":"SHIELD_REPORT_V1_FORMAT","kind":"constant","signature":"SHIELD_REPORT_V1_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/shield/RealmShield.md","moduleTitle":"network/realm/shield/RealmShield","source":"engine/network/realm/shield/RealmShield.js","import":"/engine/network/realm/shield/RealmShield.js","sourceHash":"26c45db6e76e4ce929ecca556498c09245052721c32bc7c678a26888f2b73768","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/shield/RealmShield.js#0004:SHIELD_SNAPSHOT_V1_FORMAT","exportIndex":4,"name":"SHIELD_SNAPSHOT_V1_FORMAT","kind":"constant","signature":"SHIELD_SNAPSHOT_V1_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/shield/RealmShield.md","moduleTitle":"network/realm/shield/RealmShield","source":"engine/network/realm/shield/RealmShield.js","import":"/engine/network/realm/shield/RealmShield.js","sourceHash":"26c45db6e76e4ce929ecca556498c09245052721c32bc7c678a26888f2b73768","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/shield/RealmShield.js#0005:SHIELD_RESOURCE","exportIndex":5,"name":"SHIELD_RESOURCE","kind":"constant","signature":"SHIELD_RESOURCE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/shield/RealmShield.md","moduleTitle":"network/realm/shield/RealmShield","source":"engine/network/realm/shield/RealmShield.js","import":"/engine/network/realm/shield/RealmShield.js","sourceHash":"26c45db6e76e4ce929ecca556498c09245052721c32bc7c678a26888f2b73768","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/shield/RealmShield.js#0006:SHIELD_ACTION","exportIndex":6,"name":"SHIELD_ACTION","kind":"constant","signature":"SHIELD_ACTION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/shield/RealmShield.md","moduleTitle":"network/realm/shield/RealmShield","source":"engine/network/realm/shield/RealmShield.js","import":"/engine/network/realm/shield/RealmShield.js","sourceHash":"26c45db6e76e4ce929ecca556498c09245052721c32bc7c678a26888f2b73768","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/shield/RealmShield.js#0007:SHIELD_MODERATION_ACTION","exportIndex":7,"name":"SHIELD_MODERATION_ACTION","kind":"constant","signature":"SHIELD_MODERATION_ACTION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/shield/index.md","moduleTitle":"network/realm/shield/index","source":"engine/network/realm/shield/index.js","import":"/engine/network/realm/shield/index.js","sourceHash":"e2644ed633df4c0be2b5bafcd52d2953f60f6338d77885c6207965af1a226f36","subsystem":"engine","recordType":"api-module","id":"module:engine/network/realm/shield/index.js","title":"network/realm/shield/index","summary":"","exportCount":8}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/shield/index.md","moduleTitle":"network/realm/shield/index","source":"engine/network/realm/shield/index.js","import":"/engine/network/realm/shield/index.js","sourceHash":"e2644ed633df4c0be2b5bafcd52d2953f60f6338d77885c6207965af1a226f36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/shield/index.js#0000:RealmShield","exportIndex":0,"name":"RealmShield","kind":"re-export","signature":"RealmShield","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/shield/index.md","moduleTitle":"network/realm/shield/index","source":"engine/network/realm/shield/index.js","import":"/engine/network/realm/shield/index.js","sourceHash":"e2644ed633df4c0be2b5bafcd52d2953f60f6338d77885c6207965af1a226f36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/shield/index.js#0001:SHIELD_ACTION","exportIndex":1,"name":"SHIELD_ACTION","kind":"re-export","signature":"SHIELD_ACTION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/shield/index.md","moduleTitle":"network/realm/shield/index","source":"engine/network/realm/shield/index.js","import":"/engine/network/realm/shield/index.js","sourceHash":"e2644ed633df4c0be2b5bafcd52d2953f60f6338d77885c6207965af1a226f36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/shield/index.js#0002:SHIELD_AUDIT_V1_FORMAT","exportIndex":2,"name":"SHIELD_AUDIT_V1_FORMAT","kind":"re-export","signature":"SHIELD_AUDIT_V1_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/shield/index.md","moduleTitle":"network/realm/shield/index","source":"engine/network/realm/shield/index.js","import":"/engine/network/realm/shield/index.js","sourceHash":"e2644ed633df4c0be2b5bafcd52d2953f60f6338d77885c6207965af1a226f36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/shield/index.js#0003:SHIELD_MODERATION_ACTION","exportIndex":3,"name":"SHIELD_MODERATION_ACTION","kind":"re-export","signature":"SHIELD_MODERATION_ACTION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/shield/index.md","moduleTitle":"network/realm/shield/index","source":"engine/network/realm/shield/index.js","import":"/engine/network/realm/shield/index.js","sourceHash":"e2644ed633df4c0be2b5bafcd52d2953f60f6338d77885c6207965af1a226f36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/shield/index.js#0004:SHIELD_REPORT_V1_FORMAT","exportIndex":4,"name":"SHIELD_REPORT_V1_FORMAT","kind":"re-export","signature":"SHIELD_REPORT_V1_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/shield/index.md","moduleTitle":"network/realm/shield/index","source":"engine/network/realm/shield/index.js","import":"/engine/network/realm/shield/index.js","sourceHash":"e2644ed633df4c0be2b5bafcd52d2953f60f6338d77885c6207965af1a226f36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/shield/index.js#0005:SHIELD_RESOURCE","exportIndex":5,"name":"SHIELD_RESOURCE","kind":"re-export","signature":"SHIELD_RESOURCE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/shield/index.md","moduleTitle":"network/realm/shield/index","source":"engine/network/realm/shield/index.js","import":"/engine/network/realm/shield/index.js","sourceHash":"e2644ed633df4c0be2b5bafcd52d2953f60f6338d77885c6207965af1a226f36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/shield/index.js#0006:SHIELD_SNAPSHOT_V1_FORMAT","exportIndex":6,"name":"SHIELD_SNAPSHOT_V1_FORMAT","kind":"re-export","signature":"SHIELD_SNAPSHOT_V1_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/realm/shield/index.md","moduleTitle":"network/realm/shield/index","source":"engine/network/realm/shield/index.js","import":"/engine/network/realm/shield/index.js","sourceHash":"e2644ed633df4c0be2b5bafcd52d2953f60f6338d77885c6207965af1a226f36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/realm/shield/index.js#0007:verifyShieldAuditTrail","exportIndex":7,"name":"verifyShieldAuditTrail","kind":"re-export","signature":"verifyShieldAuditTrail","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/MasterServerList.md","moduleTitle":"network/routes/MasterServerList","source":"engine/network/routes/MasterServerList.js","import":"/engine/network/routes/MasterServerList.js","sourceHash":"e384f76070eb04ca2a3aa64950c3f702a3dd1e3839871c5296f7544317e1c5ea","subsystem":"engine","recordType":"api-module","id":"module:engine/network/routes/MasterServerList.js","title":"network/routes/MasterServerList","summary":"network/routes/MasterServerList.js — client-shipped master server list + connection fallback ordering (network plan §4).  A master server is a meeting place, not an authority: it introduces peers and forwards signaling, nothing more (network plan §4/§6). This module only normalizes/validates the list shape and computes connection attempt order; it does not open any sockets (that is the signaling tier, Phase 2b/Phase A).","exportCount":14}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/MasterServerList.md","moduleTitle":"network/routes/MasterServerList","source":"engine/network/routes/MasterServerList.js","import":"/engine/network/routes/MasterServerList.js","sourceHash":"e384f76070eb04ca2a3aa64950c3f702a3dd1e3839871c5296f7544317e1c5ea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/MasterServerList.js#0000:defaultParticleMasterServers","exportIndex":0,"name":"defaultParticleMasterServers","kind":"function","signature":"defaultParticleMasterServers()","summary":"A fresh, mutable copy of the client-shipped production bootstrap list."}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/MasterServerList.md","moduleTitle":"network/routes/MasterServerList","source":"engine/network/routes/MasterServerList.js","import":"/engine/network/routes/MasterServerList.js","sourceHash":"e384f76070eb04ca2a3aa64950c3f702a3dd1e3839871c5296f7544317e1c5ea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/MasterServerList.js#0001:readParticleMasterServerRecord","exportIndex":1,"name":"readParticleMasterServerRecord","kind":"function","signature":"readParticleMasterServerRecord(storage = globalThis.localStorage)","summary":"Strict read used by writers to quarantine unsupported/corrupt records."}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/MasterServerList.md","moduleTitle":"network/routes/MasterServerList","source":"engine/network/routes/MasterServerList.js","import":"/engine/network/routes/MasterServerList.js","sourceHash":"e384f76070eb04ca2a3aa64950c3f702a3dd1e3839871c5296f7544317e1c5ea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/MasterServerList.js#0002:loadParticleMasterServers","exportIndex":2,"name":"loadParticleMasterServers","kind":"function","signature":"loadParticleMasterServers(storage = globalThis.localStorage)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/MasterServerList.md","moduleTitle":"network/routes/MasterServerList","source":"engine/network/routes/MasterServerList.js","import":"/engine/network/routes/MasterServerList.js","sourceHash":"e384f76070eb04ca2a3aa64950c3f702a3dd1e3839871c5296f7544317e1c5ea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/MasterServerList.js#0003:saveParticleMasterServers","exportIndex":3,"name":"saveParticleMasterServers","kind":"function","signature":"saveParticleMasterServers(list, storage = globalThis.localStorage)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/MasterServerList.md","moduleTitle":"network/routes/MasterServerList","source":"engine/network/routes/MasterServerList.js","import":"/engine/network/routes/MasterServerList.js","sourceHash":"e384f76070eb04ca2a3aa64950c3f702a3dd1e3839871c5296f7544317e1c5ea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/MasterServerList.js#0004:normalizeMasterServerList","exportIndex":4,"name":"normalizeMasterServerList","kind":"function","signature":"normalizeMasterServerList(config = {})","summary":"Validate + normalize a client master-server-list config (network plan §4). Unknown/malformed servers are dropped rather than throwing, so a bad entry in a self-hosted community list can't break the whole client."}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/MasterServerList.md","moduleTitle":"network/routes/MasterServerList","source":"engine/network/routes/MasterServerList.js","import":"/engine/network/routes/MasterServerList.js","sourceHash":"e384f76070eb04ca2a3aa64950c3f702a3dd1e3839871c5296f7544317e1c5ea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/MasterServerList.js#0005:pickNextMasterServer","exportIndex":5,"name":"pickNextMasterServer","kind":"function","signature":"pickNextMasterServer(masterServers, { excluded = [] } = {})","summary":"Pick the next enabled master server to try, in priority order, skipping any whose url is in `excluded` (e.g. servers that just failed this round)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/MasterServerList.md","moduleTitle":"network/routes/MasterServerList","source":"engine/network/routes/MasterServerList.js","import":"/engine/network/routes/MasterServerList.js","sourceHash":"e384f76070eb04ca2a3aa64950c3f702a3dd1e3839871c5296f7544317e1c5ea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/MasterServerList.js#0006:buildConnectionOrder","exportIndex":6,"name":"buildConnectionOrder","kind":"function","signature":"buildConnectionOrder(normalized)","summary":"Build the full connection attempt order (network plan §4): cached peers -> LAN -> group gossip -> master servers (by priority) -> carrier -> DHT -> relay. Stages disabled via `fallbacks` (or with no master servers configured) are omitted."}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/MasterServerList.md","moduleTitle":"network/routes/MasterServerList","source":"engine/network/routes/MasterServerList.js","import":"/engine/network/routes/MasterServerList.js","sourceHash":"e384f76070eb04ca2a3aa64950c3f702a3dd1e3839871c5296f7544317e1c5ea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/MasterServerList.js#0007:FALLBACK_STAGES","exportIndex":7,"name":"FALLBACK_STAGES","kind":"constant","signature":"FALLBACK_STAGES","summary":"Fallback stages other than master servers themselves, in priority order (§4)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/MasterServerList.md","moduleTitle":"network/routes/MasterServerList","source":"engine/network/routes/MasterServerList.js","import":"/engine/network/routes/MasterServerList.js","sourceHash":"e384f76070eb04ca2a3aa64950c3f702a3dd1e3839871c5296f7544317e1c5ea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/MasterServerList.js#0008:PARTICLE_MASTER_SERVERS_KEY","exportIndex":8,"name":"PARTICLE_MASTER_SERVERS_KEY","kind":"constant","signature":"PARTICLE_MASTER_SERVERS_KEY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/MasterServerList.md","moduleTitle":"network/routes/MasterServerList","source":"engine/network/routes/MasterServerList.js","import":"/engine/network/routes/MasterServerList.js","sourceHash":"e384f76070eb04ca2a3aa64950c3f702a3dd1e3839871c5296f7544317e1c5ea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/MasterServerList.js#0009:PARTICLE_MASTER_SERVER_LIST_FORMAT","exportIndex":9,"name":"PARTICLE_MASTER_SERVER_LIST_FORMAT","kind":"constant","signature":"PARTICLE_MASTER_SERVER_LIST_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/MasterServerList.md","moduleTitle":"network/routes/MasterServerList","source":"engine/network/routes/MasterServerList.js","import":"/engine/network/routes/MasterServerList.js","sourceHash":"e384f76070eb04ca2a3aa64950c3f702a3dd1e3839871c5296f7544317e1c5ea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/MasterServerList.js#0010:PARTICLE_MASTER_SERVER_LIST_VERSION","exportIndex":10,"name":"PARTICLE_MASTER_SERVER_LIST_VERSION","kind":"constant","signature":"PARTICLE_MASTER_SERVER_LIST_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/MasterServerList.md","moduleTitle":"network/routes/MasterServerList","source":"engine/network/routes/MasterServerList.js","import":"/engine/network/routes/MasterServerList.js","sourceHash":"e384f76070eb04ca2a3aa64950c3f702a3dd1e3839871c5296f7544317e1c5ea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/MasterServerList.js#0011:PARTICLE_PRODUCTION_V2_URL","exportIndex":11,"name":"PARTICLE_PRODUCTION_V2_URL","kind":"constant","signature":"PARTICLE_PRODUCTION_V2_URL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/MasterServerList.md","moduleTitle":"network/routes/MasterServerList","source":"engine/network/routes/MasterServerList.js","import":"/engine/network/routes/MasterServerList.js","sourceHash":"e384f76070eb04ca2a3aa64950c3f702a3dd1e3839871c5296f7544317e1c5ea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/MasterServerList.js#0012:PARTICLE_PRODUCTION_V1_URL","exportIndex":12,"name":"PARTICLE_PRODUCTION_V1_URL","kind":"constant","signature":"PARTICLE_PRODUCTION_V1_URL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/MasterServerList.md","moduleTitle":"network/routes/MasterServerList","source":"engine/network/routes/MasterServerList.js","import":"/engine/network/routes/MasterServerList.js","sourceHash":"e384f76070eb04ca2a3aa64950c3f702a3dd1e3839871c5296f7544317e1c5ea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/MasterServerList.js#0013:PARTICLE_PRODUCTION_SERVER_KEY_PIN","exportIndex":13,"name":"PARTICLE_PRODUCTION_SERVER_KEY_PIN","kind":"constant","signature":"PARTICLE_PRODUCTION_SERVER_KEY_PIN","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/NodeRoleProtocol.md","moduleTitle":"network/routes/NodeRoleProtocol","source":"engine/network/routes/NodeRoleProtocol.js","import":"/engine/network/routes/NodeRoleProtocol.js","sourceHash":"494bdcd8467bf90115022989b15d722aba2592fed2a987548357318d2763e61f","subsystem":"engine","recordType":"api-module","id":"module:engine/network/routes/NodeRoleProtocol.js","title":"network/routes/NodeRoleProtocol","summary":"Build a signed, expiring role announcement for one route.","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/NodeRoleProtocol.md","moduleTitle":"network/routes/NodeRoleProtocol","source":"engine/network/routes/NodeRoleProtocol.js","import":"/engine/network/routes/NodeRoleProtocol.js","sourceHash":"494bdcd8467bf90115022989b15d722aba2592fed2a987548357318d2763e61f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/NodeRoleProtocol.js#0000:signNodeRoleAnnouncement","exportIndex":0,"name":"signNodeRoleAnnouncement","kind":"function","signature":"async signNodeRoleAnnouncement({ routeId, nodeId, sequence, availability = 'foreground', roles = ['resident'], capabilities = [], ttlMs = NODE_ROLE_MAX_TTL_MS, signer, now = Date.now()","summary":"Build a signed, expiring role announcement for one route."}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/NodeRoleProtocol.md","moduleTitle":"network/routes/NodeRoleProtocol","source":"engine/network/routes/NodeRoleProtocol.js","import":"/engine/network/routes/NodeRoleProtocol.js","sourceHash":"494bdcd8467bf90115022989b15d722aba2592fed2a987548357318d2763e61f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/NodeRoleProtocol.js#0001:verifyNodeRoleAnnouncement","exportIndex":1,"name":"verifyNodeRoleAnnouncement","kind":"function","signature":"async verifyNodeRoleAnnouncement(message, { routeId, peerId, lastSequence = 0, now = Date.now()","summary":"Verify signature, device-key binding, route scope, freshness, and ordering."}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/NodeRoleProtocol.md","moduleTitle":"network/routes/NodeRoleProtocol","source":"engine/network/routes/NodeRoleProtocol.js","import":"/engine/network/routes/NodeRoleProtocol.js","sourceHash":"494bdcd8467bf90115022989b15d722aba2592fed2a987548357318d2763e61f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/NodeRoleProtocol.js#0002:NODE_ROLE_MESSAGE_TYPE","exportIndex":2,"name":"NODE_ROLE_MESSAGE_TYPE","kind":"constant","signature":"NODE_ROLE_MESSAGE_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/NodeRoleProtocol.md","moduleTitle":"network/routes/NodeRoleProtocol","source":"engine/network/routes/NodeRoleProtocol.js","import":"/engine/network/routes/NodeRoleProtocol.js","sourceHash":"494bdcd8467bf90115022989b15d722aba2592fed2a987548357318d2763e61f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/NodeRoleProtocol.js#0003:NODE_ROLE_MAX_TTL_MS","exportIndex":3,"name":"NODE_ROLE_MAX_TTL_MS","kind":"constant","signature":"NODE_ROLE_MAX_TTL_MS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/OsNetworkSession.md","moduleTitle":"network/routes/OsNetworkSession","source":"engine/network/routes/OsNetworkSession.js","import":"/engine/network/routes/OsNetworkSession.js","sourceHash":"2b14bb708a2e5064d760b7ce058f059bc03b7a4010d5bdcd697ac0d241e9e05b","subsystem":"engine","recordType":"api-module","id":"module:engine/network/routes/OsNetworkSession.js","title":"network/routes/OsNetworkSession","summary":"network/routes/OsNetworkSession.js — the concrete `createSession(routeId, opts)` factory `RouteSessionManager.js` was designed to take (network plan Phase 2 note: \"typically a thin wrapper around `createCollabCore({ projectId: routeId, ... })`\"). This was the one piece of the plan's own architecture that was designed but never actually instantiated — Phase 2b shipped the simpler Masterserver-relay-as-direct- transport shortcut (`syncManager/SyncTransport.js`) for V1 sync, which left `ChunkTransport.js`/`CarrierRelay.js`/`DhtTransport.js` (all three built against a real peer-addressed `sendToPeer` + `CollabMeshTopology`) with no live mesh to run on. This module closes that gap.  `CollabCore.js`'s Tier 4 signaling (see `CollabSignal.js`'s header comment) already reads `os.network.masterServers` from localStorage and lazily acquires the shared pinned V2 ParticleNetworkDaemon itself. Explicit compatibility endpoints may still use the shared V1 registry. Therefore `createCollabCore({ projectId: routeId })` gets real cross-internet WebRTC signaling over the same Masterserver config the Control Panel manages.  Deliberately skips CollabCore's own peer-identity/ECDH handshake (`publicKeyRaw`/`identityProof`/`ecdhPublicKeyRaw`/`ecdhPrivateKey`, `encrypt: true`): that machinery expects raw `CollabIdentity.js` keys (ECDH keypair + identity proof), which is a different, lower-level API than the CSE-wrapped `createSigner()` this layer's identity/ signers use (see `engine/network/identity/NetworkIdentity.js`'s own header comment). This is not a security gap — every OS-level payload carried over this session already brings its own crypto/verification: `ChunkVerifier.js` content hashes, `SealedPacket.js` onion ECDH, `GroupEpoch.js` AES-GCM, signed `GroupLedger.js`/`PeerTicket.js` envelopes. CollabCore here is used purely as a WebRTC *transport* (data channels + DTLS), the same way `ChunkTransport.js` et al. were written to treat any `sendToPeer`.","exportCount":12}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/OsNetworkSession.md","moduleTitle":"network/routes/OsNetworkSession","source":"engine/network/routes/OsNetworkSession.js","import":"/engine/network/routes/OsNetworkSession.js","sourceHash":"2b14bb708a2e5064d760b7ce058f059bc03b7a4010d5bdcd697ac0d241e9e05b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/OsNetworkSession.js#0000:createOsNetworkSession","exportIndex":0,"name":"createOsNetworkSession","kind":"function","signature":"createOsNetworkSession(routeId, opts = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/OsNetworkSession.md","moduleTitle":"network/routes/OsNetworkSession","source":"engine/network/routes/OsNetworkSession.js","import":"/engine/network/routes/OsNetworkSession.js","sourceHash":"2b14bb708a2e5064d760b7ce058f059bc03b7a4010d5bdcd697ac0d241e9e05b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/OsNetworkSession.js#0001:addSessionOpHandler","exportIndex":1,"name":"addSessionOpHandler","kind":"function","signature":"addSessionOpHandler(session, handlerFn)","summary":"Register an op handler (e.g. `ChunkTransport.js`'s `handleChunkTransportMessage`, `CarrierRelay.js`'s `handleCarrierRelayMessage`, `DhtTransport.js`'s `handleDhtMessage` — all follow the same `(peerId, op) => boolean` \"handled?\" chaining pattern). Handlers are tried in registration order; the first one that returns `true` consumes the message."}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/OsNetworkSession.md","moduleTitle":"network/routes/OsNetworkSession","source":"engine/network/routes/OsNetworkSession.js","import":"/engine/network/routes/OsNetworkSession.js","sourceHash":"2b14bb708a2e5064d760b7ce058f059bc03b7a4010d5bdcd697ac0d241e9e05b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/OsNetworkSession.js#0002:registerSessionProtocol","exportIndex":2,"name":"registerSessionProtocol","kind":"function","signature":"registerSessionProtocol(session, descriptor)","summary":"Register a bounded, version-aware route protocol handler."}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/OsNetworkSession.md","moduleTitle":"network/routes/OsNetworkSession","source":"engine/network/routes/OsNetworkSession.js","import":"/engine/network/routes/OsNetworkSession.js","sourceHash":"2b14bb708a2e5064d760b7ce058f059bc03b7a4010d5bdcd697ac0d241e9e05b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/OsNetworkSession.js#0003:sessionSendToPeer","exportIndex":3,"name":"sessionSendToPeer","kind":"function","signature":"sessionSendToPeer(session, peerId, data)","summary":"This session's `sendToPeer(peerId, data)` — the exact shape ChunkTransport/CarrierRelay/DhtTransport expect."}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/OsNetworkSession.md","moduleTitle":"network/routes/OsNetworkSession","source":"engine/network/routes/OsNetworkSession.js","import":"/engine/network/routes/OsNetworkSession.js","sourceHash":"2b14bb708a2e5064d760b7ce058f059bc03b7a4010d5bdcd697ac0d241e9e05b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/OsNetworkSession.js#0004:sessionSendProtocol","exportIndex":4,"name":"sessionSendProtocol","kind":"function","signature":"sessionSendProtocol(session, peerId, data, { requireAdvertised = false } = {})","summary":"Send a versioned protocol envelope, optionally requiring peer advertisement."}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/OsNetworkSession.md","moduleTitle":"network/routes/OsNetworkSession","source":"engine/network/routes/OsNetworkSession.js","import":"/engine/network/routes/OsNetworkSession.js","sourceHash":"2b14bb708a2e5064d760b7ce058f059bc03b7a4010d5bdcd697ac0d241e9e05b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/OsNetworkSession.js#0005:sessionBroadcast","exportIndex":5,"name":"sessionBroadcast","kind":"function","signature":"sessionBroadcast(session, data)","summary":"Broadcast one application op to every connected direct mesh neighbor."}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/OsNetworkSession.md","moduleTitle":"network/routes/OsNetworkSession","source":"engine/network/routes/OsNetworkSession.js","import":"/engine/network/routes/OsNetworkSession.js","sourceHash":"2b14bb708a2e5064d760b7ce058f059bc03b7a4010d5bdcd697ac0d241e9e05b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/OsNetworkSession.js#0006:sessionBroadcastProtocol","exportIndex":6,"name":"sessionBroadcastProtocol","kind":"function","signature":"sessionBroadcastProtocol(session, data, { requireAdvertised = false } = {})","summary":"Broadcast a versioned envelope only to compatible or pre-catalog peers."}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/OsNetworkSession.md","moduleTitle":"network/routes/OsNetworkSession","source":"engine/network/routes/OsNetworkSession.js","import":"/engine/network/routes/OsNetworkSession.js","sourceHash":"2b14bb708a2e5064d760b7ce058f059bc03b7a4010d5bdcd697ac0d241e9e05b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/OsNetworkSession.js#0007:sessionPeerIds","exportIndex":7,"name":"sessionPeerIds","kind":"function","signature":"sessionPeerIds(session)","summary":"Connected peer IDs for routing and role coordination."}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/OsNetworkSession.md","moduleTitle":"network/routes/OsNetworkSession","source":"engine/network/routes/OsNetworkSession.js","import":"/engine/network/routes/OsNetworkSession.js","sourceHash":"2b14bb708a2e5064d760b7ce058f059bc03b7a4010d5bdcd697ac0d241e9e05b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/OsNetworkSession.js#0008:sessionTopologyStats","exportIndex":8,"name":"sessionTopologyStats","kind":"function","signature":"sessionTopologyStats(session)","summary":"Mesh topology stats for UI display (mode, neighbor count, supernode status, gossip counters)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/OsNetworkSession.md","moduleTitle":"network/routes/OsNetworkSession","source":"engine/network/routes/OsNetworkSession.js","import":"/engine/network/routes/OsNetworkSession.js","sourceHash":"2b14bb708a2e5064d760b7ce058f059bc03b7a4010d5bdcd697ac0d241e9e05b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/OsNetworkSession.js#0009:sessionPeerMetrics","exportIndex":9,"name":"sessionPeerMetrics","kind":"function","signature":"sessionPeerMetrics(session)","summary":"Locally measured, secret-free peer transport observations."}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/OsNetworkSession.md","moduleTitle":"network/routes/OsNetworkSession","source":"engine/network/routes/OsNetworkSession.js","import":"/engine/network/routes/OsNetworkSession.js","sourceHash":"2b14bb708a2e5064d760b7ce058f059bc03b7a4010d5bdcd697ac0d241e9e05b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/OsNetworkSession.js#0010:sessionProtocolStatus","exportIndex":10,"name":"sessionProtocolStatus","kind":"function","signature":"sessionProtocolStatus(session)","summary":"Protocol catalog, peer negotiation, and bounded dispatch counters."}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/OsNetworkSession.md","moduleTitle":"network/routes/OsNetworkSession","source":"engine/network/routes/OsNetworkSession.js","import":"/engine/network/routes/OsNetworkSession.js","sourceHash":"2b14bb708a2e5064d760b7ce058f059bc03b7a4010d5bdcd697ac0d241e9e05b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/OsNetworkSession.js#0011:destroyOsNetworkSession","exportIndex":11,"name":"destroyOsNetworkSession","kind":"function","signature":"destroyOsNetworkSession(session)","summary":"Tear down a session's WebRTC connections, signaling, and topology timers."}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/ReconnectBackoff.md","moduleTitle":"network/routes/ReconnectBackoff","source":"engine/network/routes/ReconnectBackoff.js","import":"/engine/network/routes/ReconnectBackoff.js","sourceHash":"0f02c92fb693b4022ae6fc032046fc9dd26292fcc01c97a4d892441715cb2016","subsystem":"engine","recordType":"api-module","id":"module:engine/network/routes/ReconnectBackoff.js","title":"network/routes/ReconnectBackoff","summary":"network/routes/ReconnectBackoff.js — exponential reconnect backoff with jitter (network plan §8: \"0.5s -> 1s -> 2s -> 4s -> 8s -> max 30s, with random jitter\"). Mirrors the constants already used by engine/collab/CollabCore.js (RECONNECT_BASE_MS=1000, RECONNECT_MAX_MS=30000, MAX_RECONNECT_ATTEMPTS=8) so route-level and WebRTC-level reconnects behave consistently.","exportCount":8}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/ReconnectBackoff.md","moduleTitle":"network/routes/ReconnectBackoff","source":"engine/network/routes/ReconnectBackoff.js","import":"/engine/network/routes/ReconnectBackoff.js","sourceHash":"0f02c92fb693b4022ae6fc032046fc9dd26292fcc01c97a4d892441715cb2016","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/ReconnectBackoff.js#0000:createReconnectBackoff","exportIndex":0,"name":"createReconnectBackoff","kind":"function","signature":"createReconnectBackoff(cfg = {})","summary":"Create a reconnect backoff sequence."}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/ReconnectBackoff.md","moduleTitle":"network/routes/ReconnectBackoff","source":"engine/network/routes/ReconnectBackoff.js","import":"/engine/network/routes/ReconnectBackoff.js","sourceHash":"0f02c92fb693b4022ae6fc032046fc9dd26292fcc01c97a4d892441715cb2016","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/ReconnectBackoff.js#0001:nextBackoffDelay","exportIndex":1,"name":"nextBackoffDelay","kind":"function","signature":"nextBackoffDelay(backoff)","summary":"Compute the next delay (ms) and advance the attempt counter."}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/ReconnectBackoff.md","moduleTitle":"network/routes/ReconnectBackoff","source":"engine/network/routes/ReconnectBackoff.js","import":"/engine/network/routes/ReconnectBackoff.js","sourceHash":"0f02c92fb693b4022ae6fc032046fc9dd26292fcc01c97a4d892441715cb2016","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/ReconnectBackoff.js#0002:isBackoffExhausted","exportIndex":2,"name":"isBackoffExhausted","kind":"function","signature":"isBackoffExhausted(backoff)","summary":"True once `maxAttempts` has been exceeded (0 = never exhausted). Matches nextBackoffDelay's `exhausted` flag."}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/ReconnectBackoff.md","moduleTitle":"network/routes/ReconnectBackoff","source":"engine/network/routes/ReconnectBackoff.js","import":"/engine/network/routes/ReconnectBackoff.js","sourceHash":"0f02c92fb693b4022ae6fc032046fc9dd26292fcc01c97a4d892441715cb2016","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/ReconnectBackoff.js#0003:resetBackoff","exportIndex":3,"name":"resetBackoff","kind":"function","signature":"resetBackoff(backoff)","summary":"Reset the attempt counter after a successful (re)connect."}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/ReconnectBackoff.md","moduleTitle":"network/routes/ReconnectBackoff","source":"engine/network/routes/ReconnectBackoff.js","import":"/engine/network/routes/ReconnectBackoff.js","sourceHash":"0f02c92fb693b4022ae6fc032046fc9dd26292fcc01c97a4d892441715cb2016","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/ReconnectBackoff.js#0004:DEFAULT_BACKOFF_BASE_MS","exportIndex":4,"name":"DEFAULT_BACKOFF_BASE_MS","kind":"constant","signature":"DEFAULT_BACKOFF_BASE_MS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/ReconnectBackoff.md","moduleTitle":"network/routes/ReconnectBackoff","source":"engine/network/routes/ReconnectBackoff.js","import":"/engine/network/routes/ReconnectBackoff.js","sourceHash":"0f02c92fb693b4022ae6fc032046fc9dd26292fcc01c97a4d892441715cb2016","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/ReconnectBackoff.js#0005:DEFAULT_BACKOFF_MAX_MS","exportIndex":5,"name":"DEFAULT_BACKOFF_MAX_MS","kind":"constant","signature":"DEFAULT_BACKOFF_MAX_MS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/ReconnectBackoff.md","moduleTitle":"network/routes/ReconnectBackoff","source":"engine/network/routes/ReconnectBackoff.js","import":"/engine/network/routes/ReconnectBackoff.js","sourceHash":"0f02c92fb693b4022ae6fc032046fc9dd26292fcc01c97a4d892441715cb2016","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/ReconnectBackoff.js#0006:DEFAULT_BACKOFF_MAX_ATTEMPTS","exportIndex":6,"name":"DEFAULT_BACKOFF_MAX_ATTEMPTS","kind":"constant","signature":"DEFAULT_BACKOFF_MAX_ATTEMPTS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/ReconnectBackoff.md","moduleTitle":"network/routes/ReconnectBackoff","source":"engine/network/routes/ReconnectBackoff.js","import":"/engine/network/routes/ReconnectBackoff.js","sourceHash":"0f02c92fb693b4022ae6fc032046fc9dd26292fcc01c97a4d892441715cb2016","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/ReconnectBackoff.js#0007:DEFAULT_BACKOFF_JITTER_RATIO","exportIndex":7,"name":"DEFAULT_BACKOFF_JITTER_RATIO","kind":"constant","signature":"DEFAULT_BACKOFF_JITTER_RATIO","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/RouteProtocolRegistry.md","moduleTitle":"network/routes/RouteProtocolRegistry","source":"engine/network/routes/RouteProtocolRegistry.js","import":"/engine/network/routes/RouteProtocolRegistry.js","sourceHash":"6a15e8a54892c149ea2d673af7f23644e4d9784436fb8f25a15032e1bf0aaf55","subsystem":"engine","recordType":"api-module","id":"module:engine/network/routes/RouteProtocolRegistry.js","title":"network/routes/RouteProtocolRegistry","summary":"Dispatch one route operation. Protocol-bearing traffic always fails closed.","exportCount":10}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/RouteProtocolRegistry.md","moduleTitle":"network/routes/RouteProtocolRegistry","source":"engine/network/routes/RouteProtocolRegistry.js","import":"/engine/network/routes/RouteProtocolRegistry.js","sourceHash":"6a15e8a54892c149ea2d673af7f23644e4d9784436fb8f25a15032e1bf0aaf55","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/RouteProtocolRegistry.js#0000:createRouteProtocolRegistry","exportIndex":0,"name":"createRouteProtocolRegistry","kind":"function","signature":"createRouteProtocolRegistry({ now = ()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/RouteProtocolRegistry.md","moduleTitle":"network/routes/RouteProtocolRegistry","source":"engine/network/routes/RouteProtocolRegistry.js","import":"/engine/network/routes/RouteProtocolRegistry.js","sourceHash":"6a15e8a54892c149ea2d673af7f23644e4d9784436fb8f25a15032e1bf0aaf55","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/RouteProtocolRegistry.js#0001:registerRouteProtocol","exportIndex":1,"name":"registerRouteProtocol","kind":"function","signature":"registerRouteProtocol(registry, { id, protocols = [], matches = null, handle, authorize = null, validate = null, priority = 0, maxBytes = null, } = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/RouteProtocolRegistry.md","moduleTitle":"network/routes/RouteProtocolRegistry","source":"engine/network/routes/RouteProtocolRegistry.js","import":"/engine/network/routes/RouteProtocolRegistry.js","sourceHash":"6a15e8a54892c149ea2d673af7f23644e4d9784436fb8f25a15032e1bf0aaf55","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/RouteProtocolRegistry.js#0002:unregisterRouteProtocol","exportIndex":2,"name":"unregisterRouteProtocol","kind":"function","signature":"unregisterRouteProtocol(registry, descriptorId)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/RouteProtocolRegistry.md","moduleTitle":"network/routes/RouteProtocolRegistry","source":"engine/network/routes/RouteProtocolRegistry.js","import":"/engine/network/routes/RouteProtocolRegistry.js","sourceHash":"6a15e8a54892c149ea2d673af7f23644e4d9784436fb8f25a15032e1bf0aaf55","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/RouteProtocolRegistry.js#0003:routeProtocolCatalog","exportIndex":3,"name":"routeProtocolCatalog","kind":"function","signature":"routeProtocolCatalog(registry)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/RouteProtocolRegistry.md","moduleTitle":"network/routes/RouteProtocolRegistry","source":"engine/network/routes/RouteProtocolRegistry.js","import":"/engine/network/routes/RouteProtocolRegistry.js","sourceHash":"6a15e8a54892c149ea2d673af7f23644e4d9784436fb8f25a15032e1bf0aaf55","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/RouteProtocolRegistry.js#0004:createRouteProtocolCatalogOp","exportIndex":4,"name":"createRouteProtocolCatalogOp","kind":"function","signature":"createRouteProtocolCatalogOp(registry)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/RouteProtocolRegistry.md","moduleTitle":"network/routes/RouteProtocolRegistry","source":"engine/network/routes/RouteProtocolRegistry.js","import":"/engine/network/routes/RouteProtocolRegistry.js","sourceHash":"6a15e8a54892c149ea2d673af7f23644e4d9784436fb8f25a15032e1bf0aaf55","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/RouteProtocolRegistry.js#0005:forgetRouteProtocolPeer","exportIndex":5,"name":"forgetRouteProtocolPeer","kind":"function","signature":"forgetRouteProtocolPeer(registry, peerId)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/RouteProtocolRegistry.md","moduleTitle":"network/routes/RouteProtocolRegistry","source":"engine/network/routes/RouteProtocolRegistry.js","import":"/engine/network/routes/RouteProtocolRegistry.js","sourceHash":"6a15e8a54892c149ea2d673af7f23644e4d9784436fb8f25a15032e1bf0aaf55","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/RouteProtocolRegistry.js#0006:peerSupportsRouteProtocol","exportIndex":6,"name":"peerSupportsRouteProtocol","kind":"function","signature":"peerSupportsRouteProtocol(registry, peerId, protocol)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/RouteProtocolRegistry.md","moduleTitle":"network/routes/RouteProtocolRegistry","source":"engine/network/routes/RouteProtocolRegistry.js","import":"/engine/network/routes/RouteProtocolRegistry.js","sourceHash":"6a15e8a54892c149ea2d673af7f23644e4d9784436fb8f25a15032e1bf0aaf55","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/RouteProtocolRegistry.js#0007:dispatchRouteProtocol","exportIndex":7,"name":"dispatchRouteProtocol","kind":"function","signature":"async dispatchRouteProtocol(registry, peerId, op, context = {})","summary":"Dispatch one route operation. Protocol-bearing traffic always fails closed."}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/RouteProtocolRegistry.md","moduleTitle":"network/routes/RouteProtocolRegistry","source":"engine/network/routes/RouteProtocolRegistry.js","import":"/engine/network/routes/RouteProtocolRegistry.js","sourceHash":"6a15e8a54892c149ea2d673af7f23644e4d9784436fb8f25a15032e1bf0aaf55","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/RouteProtocolRegistry.js#0008:routeProtocolRegistryStatus","exportIndex":8,"name":"routeProtocolRegistryStatus","kind":"function","signature":"routeProtocolRegistryStatus(registry)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/RouteProtocolRegistry.md","moduleTitle":"network/routes/RouteProtocolRegistry","source":"engine/network/routes/RouteProtocolRegistry.js","import":"/engine/network/routes/RouteProtocolRegistry.js","sourceHash":"6a15e8a54892c149ea2d673af7f23644e4d9784436fb8f25a15032e1bf0aaf55","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/RouteProtocolRegistry.js#0009:ROUTE_PROTOCOL_CONTROL","exportIndex":9,"name":"ROUTE_PROTOCOL_CONTROL","kind":"constant","signature":"ROUTE_PROTOCOL_CONTROL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/RouteSessionManager.md","moduleTitle":"network/routes/RouteSessionManager","source":"engine/network/routes/RouteSessionManager.js","import":"/engine/network/routes/RouteSessionManager.js","sourceHash":"7587e533c7af021f6c9d2682be9f1138a9b3f4dc82645695d0a89a4220fb2078","subsystem":"engine","recordType":"api-module","id":"module:engine/network/routes/RouteSessionManager.js","title":"network/routes/RouteSessionManager","summary":"network/routes/RouteSessionManager.js — orchestrates one P2P session per attached route/group.  Phase 0 audit finding: engine/collab/CollabCore.js is built around a single projectId/roomPassword session. The network layer needs many concurrent routes/groups at once, so rather than rewriting CollabCore.js (which would risk existing game-collab call sites), this manager holds N session instances behind a pluggable factory — callers pass in `createSession(routeId, opts) => session` (typically a thin wrapper around `createCollabCore({ projectId: routeId, ... })`) and this module just tracks lifecycle (one session per routeId, created on demand, torn down explicitly or when the route's last local lease is dropped).","exportCount":8}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/RouteSessionManager.md","moduleTitle":"network/routes/RouteSessionManager","source":"engine/network/routes/RouteSessionManager.js","import":"/engine/network/routes/RouteSessionManager.js","sourceHash":"7587e533c7af021f6c9d2682be9f1138a9b3f4dc82645695d0a89a4220fb2078","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/RouteSessionManager.js#0000:createRouteSessionManager","exportIndex":0,"name":"createRouteSessionManager","kind":"function","signature":"createRouteSessionManager({ createSession, destroySession = null } = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/RouteSessionManager.md","moduleTitle":"network/routes/RouteSessionManager","source":"engine/network/routes/RouteSessionManager.js","import":"/engine/network/routes/RouteSessionManager.js","sourceHash":"7587e533c7af021f6c9d2682be9f1138a9b3f4dc82645695d0a89a4220fb2078","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/RouteSessionManager.js#0001:ensureRouteSession","exportIndex":1,"name":"ensureRouteSession","kind":"function","signature":"ensureRouteSession(manager, routeId, opts = {})","summary":"Get the session for `routeId`, creating it via the factory if it doesn't exist yet."}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/RouteSessionManager.md","moduleTitle":"network/routes/RouteSessionManager","source":"engine/network/routes/RouteSessionManager.js","import":"/engine/network/routes/RouteSessionManager.js","sourceHash":"7587e533c7af021f6c9d2682be9f1138a9b3f4dc82645695d0a89a4220fb2078","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/RouteSessionManager.js#0002:acquireRouteSession","exportIndex":2,"name":"acquireRouteSession","kind":"function","signature":"acquireRouteSession(manager, routeId, opts = {})","summary":"Acquire one local consumer lease for a route. The first lease creates the session. The final release tears it down after a bounded idle grace period."}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/RouteSessionManager.md","moduleTitle":"network/routes/RouteSessionManager","source":"engine/network/routes/RouteSessionManager.js","import":"/engine/network/routes/RouteSessionManager.js","sourceHash":"7587e533c7af021f6c9d2682be9f1138a9b3f4dc82645695d0a89a4220fb2078","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/RouteSessionManager.js#0003:releaseRouteSession","exportIndex":3,"name":"releaseRouteSession","kind":"function","signature":"releaseRouteSession(manager, routeId, options = {})","summary":"Release one local route lease without affecting other consumers."}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/RouteSessionManager.md","moduleTitle":"network/routes/RouteSessionManager","source":"engine/network/routes/RouteSessionManager.js","import":"/engine/network/routes/RouteSessionManager.js","sourceHash":"7587e533c7af021f6c9d2682be9f1138a9b3f4dc82645695d0a89a4220fb2078","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/RouteSessionManager.js#0004:routeSessionLeaseStatus","exportIndex":4,"name":"routeSessionLeaseStatus","kind":"function","signature":"routeSessionLeaseStatus(manager, routeId)","summary":"Inspect lease ownership without exposing route secrets or session internals."}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/RouteSessionManager.md","moduleTitle":"network/routes/RouteSessionManager","source":"engine/network/routes/RouteSessionManager.js","import":"/engine/network/routes/RouteSessionManager.js","sourceHash":"7587e533c7af021f6c9d2682be9f1138a9b3f4dc82645695d0a89a4220fb2078","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/RouteSessionManager.js#0005:getRouteSession","exportIndex":5,"name":"getRouteSession","kind":"function","signature":"getRouteSession(manager, routeId)","summary":"Get an existing session, or null. Does NOT create one."}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/RouteSessionManager.md","moduleTitle":"network/routes/RouteSessionManager","source":"engine/network/routes/RouteSessionManager.js","import":"/engine/network/routes/RouteSessionManager.js","sourceHash":"7587e533c7af021f6c9d2682be9f1138a9b3f4dc82645695d0a89a4220fb2078","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/RouteSessionManager.js#0006:teardownRouteSession","exportIndex":6,"name":"teardownRouteSession","kind":"function","signature":"teardownRouteSession(manager, routeId, options = {})","summary":"Tear down and forget a route's session (calls `destroySession` if provided)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/RouteSessionManager.md","moduleTitle":"network/routes/RouteSessionManager","source":"engine/network/routes/RouteSessionManager.js","import":"/engine/network/routes/RouteSessionManager.js","sourceHash":"7587e533c7af021f6c9d2682be9f1138a9b3f4dc82645695d0a89a4220fb2078","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/RouteSessionManager.js#0007:listRouteSessions","exportIndex":7,"name":"listRouteSessions","kind":"function","signature":"listRouteSessions(manager)","summary":"List routeIds with a live session."}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/RouteTable.md","moduleTitle":"network/routes/RouteTable","source":"engine/network/routes/RouteTable.js","import":"/engine/network/routes/RouteTable.js","sourceHash":"55f92bd54c42af3c6976f771e2993de457eba2b62d1e215be37b5ec77bcb0bfc","subsystem":"engine","recordType":"api-module","id":"module:engine/network/routes/RouteTable.js","title":"network/routes/RouteTable","summary":"network/routes/RouteTable.js — dynamic, capability-gated routes for the Particle Global OS Network Layer (network plan §9 \"dynamic routes instead of rooms\" + §10 capability checks).  A route is NOT server-owned: it exists in this local table only while a capability-holding principal has attached to it and kept its lease alive via heartbeats. There is no createRoute() — attachRoute() both creates the local entry (if absent) and joins it. Leases expire on their own; nothing here talks to a network — this is pure local bookkeeping that the Masterserver signaling tier (Phase 2b) and per-route session manager below will drive.","exportCount":10}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/RouteTable.md","moduleTitle":"network/routes/RouteTable","source":"engine/network/routes/RouteTable.js","import":"/engine/network/routes/RouteTable.js","sourceHash":"55f92bd54c42af3c6976f771e2993de457eba2b62d1e215be37b5ec77bcb0bfc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/RouteTable.js#0000:createRouteTable","exportIndex":0,"name":"createRouteTable","kind":"function","signature":"createRouteTable(cfg = {})","summary":"Create an empty route table."}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/RouteTable.md","moduleTitle":"network/routes/RouteTable","source":"engine/network/routes/RouteTable.js","import":"/engine/network/routes/RouteTable.js","sourceHash":"55f92bd54c42af3c6976f771e2993de457eba2b62d1e215be37b5ec77bcb0bfc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/RouteTable.js#0001:attachRoute","exportIndex":1,"name":"attachRoute","kind":"function","signature":"attachRoute(table, { routeId, principal, capability, ttlMs = DEFAULT_ROUTE_TTL_MS, meta = {} } = {})","summary":"Attach to a route. Validates the capability authorizes `route/attach` for (principal, routeId) right now; if the route doesn't exist locally yet it is created (this is what \"routes appear when clients attach\" means — there is no separate creation step). Re-attaching refreshes the lease."}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/RouteTable.md","moduleTitle":"network/routes/RouteTable","source":"engine/network/routes/RouteTable.js","import":"/engine/network/routes/RouteTable.js","sourceHash":"55f92bd54c42af3c6976f771e2993de457eba2b62d1e215be37b5ec77bcb0bfc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/RouteTable.js#0002:heartbeatRoute","exportIndex":2,"name":"heartbeatRoute","kind":"function","signature":"heartbeatRoute(table, { routeId, principal, ttlMs = DEFAULT_ROUTE_TTL_MS } = {})","summary":"Refresh a principal's lease on a route (heartbeat). Re-checks the capability so a revoked capability cannot keep renewing its lease."}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/RouteTable.md","moduleTitle":"network/routes/RouteTable","source":"engine/network/routes/RouteTable.js","import":"/engine/network/routes/RouteTable.js","sourceHash":"55f92bd54c42af3c6976f771e2993de457eba2b62d1e215be37b5ec77bcb0bfc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/RouteTable.js#0003:detachRoute","exportIndex":3,"name":"detachRoute","kind":"function","signature":"detachRoute(table, { routeId, principal } = {})","summary":"Detach a principal from a route. Removes the route entirely once empty."}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/RouteTable.md","moduleTitle":"network/routes/RouteTable","source":"engine/network/routes/RouteTable.js","import":"/engine/network/routes/RouteTable.js","sourceHash":"55f92bd54c42af3c6976f771e2993de457eba2b62d1e215be37b5ec77bcb0bfc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/RouteTable.js#0004:pruneExpiredRoutes","exportIndex":4,"name":"pruneExpiredRoutes","kind":"function","signature":"pruneExpiredRoutes(table, now = _now()","summary":"Remove all expired subscriber leases (and any routes left with zero subscribers). Call this periodically (e.g. alongside heartbeat ticks)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/RouteTable.md","moduleTitle":"network/routes/RouteTable","source":"engine/network/routes/RouteTable.js","import":"/engine/network/routes/RouteTable.js","sourceHash":"55f92bd54c42af3c6976f771e2993de457eba2b62d1e215be37b5ec77bcb0bfc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/RouteTable.js#0005:isRouteAttached","exportIndex":5,"name":"isRouteAttached","kind":"function","signature":"isRouteAttached(table, routeId)","summary":"True if `routeId` currently has at least one live subscriber."}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/RouteTable.md","moduleTitle":"network/routes/RouteTable","source":"engine/network/routes/RouteTable.js","import":"/engine/network/routes/RouteTable.js","sourceHash":"55f92bd54c42af3c6976f771e2993de457eba2b62d1e215be37b5ec77bcb0bfc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/RouteTable.js#0006:getRoute","exportIndex":6,"name":"getRoute","kind":"function","signature":"getRoute(table, routeId)","summary":"Snapshot of a route's subscribers, or null."}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/RouteTable.md","moduleTitle":"network/routes/RouteTable","source":"engine/network/routes/RouteTable.js","import":"/engine/network/routes/RouteTable.js","sourceHash":"55f92bd54c42af3c6976f771e2993de457eba2b62d1e215be37b5ec77bcb0bfc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/RouteTable.js#0007:listRoutes","exportIndex":7,"name":"listRoutes","kind":"function","signature":"listRoutes(table)","summary":"List all currently-live routes (opaque summaries only — no capability objects)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/RouteTable.md","moduleTitle":"network/routes/RouteTable","source":"engine/network/routes/RouteTable.js","import":"/engine/network/routes/RouteTable.js","sourceHash":"55f92bd54c42af3c6976f771e2993de457eba2b62d1e215be37b5ec77bcb0bfc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/RouteTable.js#0008:DEFAULT_ROUTE_TTL_MS","exportIndex":8,"name":"DEFAULT_ROUTE_TTL_MS","kind":"constant","signature":"DEFAULT_ROUTE_TTL_MS","summary":"Default route lease TTL (network plan §9/§35: ~90s)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/RouteTable.md","moduleTitle":"network/routes/RouteTable","source":"engine/network/routes/RouteTable.js","import":"/engine/network/routes/RouteTable.js","sourceHash":"55f92bd54c42af3c6976f771e2993de457eba2b62d1e215be37b5ec77bcb0bfc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/routes/RouteTable.js#0009:DEFAULT_HEARTBEAT_MS","exportIndex":9,"name":"DEFAULT_HEARTBEAT_MS","kind":"constant","signature":"DEFAULT_HEARTBEAT_MS","summary":"Default heartbeat interval to keep a lease alive (network plan §8: 25-30s)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/routes/index.md","moduleTitle":"network/routes/index","source":"engine/network/routes/index.js","import":"/engine/network/routes/index.js","sourceHash":"951b88710ae74d0609e8055cb7697f6b85d3730549498ff3e16413dcecdbb290","subsystem":"engine","recordType":"api-module","id":"module:engine/network/routes/index.js","title":"network/routes/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/network/stateChannels/BroadcastStateChannelTransport.md","moduleTitle":"network/stateChannels/BroadcastStateChannelTransport","source":"engine/network/stateChannels/BroadcastStateChannelTransport.js","import":"/engine/network/stateChannels/BroadcastStateChannelTransport.js","sourceHash":"d8fd0b8632534365cfa988ae8992fee09fe93a0f3b1588e3fd337e0d4154a7a0","subsystem":"engine","recordType":"api-module","id":"module:engine/network/stateChannels/BroadcastStateChannelTransport.js","title":"network/stateChannels/BroadcastStateChannelTransport","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/network/stateChannels/BroadcastStateChannelTransport.md","moduleTitle":"network/stateChannels/BroadcastStateChannelTransport","source":"engine/network/stateChannels/BroadcastStateChannelTransport.js","import":"/engine/network/stateChannels/BroadcastStateChannelTransport.js","sourceHash":"d8fd0b8632534365cfa988ae8992fee09fe93a0f3b1588e3fd337e0d4154a7a0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/stateChannels/BroadcastStateChannelTransport.js#0000:BroadcastStateChannelTransport","exportIndex":0,"name":"BroadcastStateChannelTransport","kind":"class","signature":"class BroadcastStateChannelTransport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/stateChannels/InProcessStateChannelTransport.md","moduleTitle":"network/stateChannels/InProcessStateChannelTransport","source":"engine/network/stateChannels/InProcessStateChannelTransport.js","import":"/engine/network/stateChannels/InProcessStateChannelTransport.js","sourceHash":"324393b3d8cc1fec1bcd92900f5342e9a24be07b5fdd358cd284ce2eeb6517ae","subsystem":"engine","recordType":"api-module","id":"module:engine/network/stateChannels/InProcessStateChannelTransport.js","title":"network/stateChannels/InProcessStateChannelTransport","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/network/stateChannels/InProcessStateChannelTransport.md","moduleTitle":"network/stateChannels/InProcessStateChannelTransport","source":"engine/network/stateChannels/InProcessStateChannelTransport.js","import":"/engine/network/stateChannels/InProcessStateChannelTransport.js","sourceHash":"324393b3d8cc1fec1bcd92900f5342e9a24be07b5fdd358cd284ce2eeb6517ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/stateChannels/InProcessStateChannelTransport.js#0000:InProcessStateChannelTransport","exportIndex":0,"name":"InProcessStateChannelTransport","kind":"class","signature":"class InProcessStateChannelTransport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/stateChannels/MeshStateChannelTransport.md","moduleTitle":"network/stateChannels/MeshStateChannelTransport","source":"engine/network/stateChannels/MeshStateChannelTransport.js","import":"/engine/network/stateChannels/MeshStateChannelTransport.js","sourceHash":"7be30f8d1f57a0cb9b2f3a18754d2b6c57b8eb5d37dc6cc045f93b1a3a84b743","subsystem":"engine","recordType":"api-module","id":"module:engine/network/stateChannels/MeshStateChannelTransport.js","title":"network/stateChannels/MeshStateChannelTransport","summary":"State Channel transport over browser-to-browser WebRTC mesh messages.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/network/stateChannels/MeshStateChannelTransport.md","moduleTitle":"network/stateChannels/MeshStateChannelTransport","source":"engine/network/stateChannels/MeshStateChannelTransport.js","import":"/engine/network/stateChannels/MeshStateChannelTransport.js","sourceHash":"7be30f8d1f57a0cb9b2f3a18754d2b6c57b8eb5d37dc6cc045f93b1a3a84b743","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/stateChannels/MeshStateChannelTransport.js#0000:MeshStateChannelTransport","exportIndex":0,"name":"MeshStateChannelTransport","kind":"class","signature":"class MeshStateChannelTransport","summary":"State Channel transport over browser-to-browser WebRTC mesh messages."}
{"schemaVersion":1,"modulePath":"engine/reference/network/stateChannels/MeshStateChannelTransport.md","moduleTitle":"network/stateChannels/MeshStateChannelTransport","source":"engine/network/stateChannels/MeshStateChannelTransport.js","import":"/engine/network/stateChannels/MeshStateChannelTransport.js","sourceHash":"7be30f8d1f57a0cb9b2f3a18754d2b6c57b8eb5d37dc6cc045f93b1a3a84b743","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/stateChannels/MeshStateChannelTransport.js#0001:MESH_STATE_CHANNEL_ENVELOPE_TYPE","exportIndex":1,"name":"MESH_STATE_CHANNEL_ENVELOPE_TYPE","kind":"constant","signature":"MESH_STATE_CHANNEL_ENVELOPE_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/stateChannels/ParticleSignalStateChannelTransport.md","moduleTitle":"network/stateChannels/ParticleSignalStateChannelTransport","source":"engine/network/stateChannels/ParticleSignalStateChannelTransport.js","import":"/engine/network/stateChannels/ParticleSignalStateChannelTransport.js","sourceHash":"85ff6070d5c4ab975d6fed51fbd2cdf4d2c7fc6e6572281560b8f8eea440d908","subsystem":"engine","recordType":"api-module","id":"module:engine/network/stateChannels/ParticleSignalStateChannelTransport.js","title":"network/stateChannels/ParticleSignalStateChannelTransport","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/network/stateChannels/ParticleSignalStateChannelTransport.md","moduleTitle":"network/stateChannels/ParticleSignalStateChannelTransport","source":"engine/network/stateChannels/ParticleSignalStateChannelTransport.js","import":"/engine/network/stateChannels/ParticleSignalStateChannelTransport.js","sourceHash":"85ff6070d5c4ab975d6fed51fbd2cdf4d2c7fc6e6572281560b8f8eea440d908","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/stateChannels/ParticleSignalStateChannelTransport.js#0000:ParticleSignalStateChannelTransport","exportIndex":0,"name":"ParticleSignalStateChannelTransport","kind":"class","signature":"class ParticleSignalStateChannelTransport","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/stateChannels/SseStateChannelTransport.md","moduleTitle":"network/stateChannels/SseStateChannelTransport","source":"engine/network/stateChannels/SseStateChannelTransport.js","import":"/engine/network/stateChannels/SseStateChannelTransport.js","sourceHash":"7b6ac6015820191ff255b2a048b256ca0856d3d9b48ff6ace1ba866941541ec8","subsystem":"engine","recordType":"api-module","id":"module:engine/network/stateChannels/SseStateChannelTransport.js","title":"network/stateChannels/SseStateChannelTransport","summary":"Default standard transport: SSE projections/receipts down, HTTP intents up.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/network/stateChannels/SseStateChannelTransport.md","moduleTitle":"network/stateChannels/SseStateChannelTransport","source":"engine/network/stateChannels/SseStateChannelTransport.js","import":"/engine/network/stateChannels/SseStateChannelTransport.js","sourceHash":"7b6ac6015820191ff255b2a048b256ca0856d3d9b48ff6ace1ba866941541ec8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/stateChannels/SseStateChannelTransport.js#0000:SseStateChannelTransport","exportIndex":0,"name":"SseStateChannelTransport","kind":"class","signature":"class SseStateChannelTransport","summary":"Default standard transport: SSE projections/receipts down, HTTP intents up."}
{"schemaVersion":1,"modulePath":"engine/reference/network/stateChannels/SseStateChannelTransport.md","moduleTitle":"network/stateChannels/SseStateChannelTransport","source":"engine/network/stateChannels/SseStateChannelTransport.js","import":"/engine/network/stateChannels/SseStateChannelTransport.js","sourceHash":"7b6ac6015820191ff255b2a048b256ca0856d3d9b48ff6ace1ba866941541ec8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/stateChannels/SseStateChannelTransport.js#0001:createDefaultStateChannelTransport","exportIndex":1,"name":"createDefaultStateChannelTransport","kind":"function","signature":"createDefaultStateChannelTransport(options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/stateChannels/StateChannelAuthority.md","moduleTitle":"network/stateChannels/StateChannelAuthority","source":"engine/network/stateChannels/StateChannelAuthority.js","import":"/engine/network/stateChannels/StateChannelAuthority.js","sourceHash":"3989938e0fef2635815440c350e228ce35b23141e02a3debb3cd45d2093a1c24","subsystem":"engine","recordType":"api-module","id":"module:engine/network/stateChannels/StateChannelAuthority.js","title":"network/stateChannels/StateChannelAuthority","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/network/stateChannels/StateChannelAuthority.md","moduleTitle":"network/stateChannels/StateChannelAuthority","source":"engine/network/stateChannels/StateChannelAuthority.js","import":"/engine/network/stateChannels/StateChannelAuthority.js","sourceHash":"3989938e0fef2635815440c350e228ce35b23141e02a3debb3cd45d2093a1c24","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/stateChannels/StateChannelAuthority.js#0000:StateChannelAuthority","exportIndex":0,"name":"StateChannelAuthority","kind":"class","signature":"class StateChannelAuthority","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/stateChannels/StateChannelAuthorityCoordinator.md","moduleTitle":"network/stateChannels/StateChannelAuthorityCoordinator","source":"engine/network/stateChannels/StateChannelAuthorityCoordinator.js","import":"/engine/network/stateChannels/StateChannelAuthorityCoordinator.js","sourceHash":"af9e7f97980122a64f38e2a222de061d6bac4dc949b926b49adff2901b29dbfb","subsystem":"engine","recordType":"api-module","id":"module:engine/network/stateChannels/StateChannelAuthorityCoordinator.js","title":"network/stateChannels/StateChannelAuthorityCoordinator","summary":"Browser authority lifecycle with signed heartbeats, replicated checkpoints, deterministic takeover, and fencing. It never makes the discovery server an authority and can be attached to any MeshStateChannelTransport.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/network/stateChannels/StateChannelAuthorityCoordinator.md","moduleTitle":"network/stateChannels/StateChannelAuthorityCoordinator","source":"engine/network/stateChannels/StateChannelAuthorityCoordinator.js","import":"/engine/network/stateChannels/StateChannelAuthorityCoordinator.js","sourceHash":"af9e7f97980122a64f38e2a222de061d6bac4dc949b926b49adff2901b29dbfb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/stateChannels/StateChannelAuthorityCoordinator.js#0000:StateChannelAuthorityCoordinator","exportIndex":0,"name":"StateChannelAuthorityCoordinator","kind":"class","signature":"class StateChannelAuthorityCoordinator","summary":"Browser authority lifecycle with signed heartbeats, replicated checkpoints, deterministic takeover, and fencing. It never makes the discovery server an authority and can be attached to any MeshStateChannelTransport."}
{"schemaVersion":1,"modulePath":"engine/reference/network/stateChannels/StateChannelClient.md","moduleTitle":"network/stateChannels/StateChannelClient","source":"engine/network/stateChannels/StateChannelClient.js","import":"/engine/network/stateChannels/StateChannelClient.js","sourceHash":"dc2a139249bd4447465bbcb2c1e212dadbbe2a94b4596034a2c4d5af01030f03","subsystem":"engine","recordType":"api-module","id":"module:engine/network/stateChannels/StateChannelClient.js","title":"network/stateChannels/StateChannelClient","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/network/stateChannels/StateChannelClient.md","moduleTitle":"network/stateChannels/StateChannelClient","source":"engine/network/stateChannels/StateChannelClient.js","import":"/engine/network/stateChannels/StateChannelClient.js","sourceHash":"dc2a139249bd4447465bbcb2c1e212dadbbe2a94b4596034a2c4d5af01030f03","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/stateChannels/StateChannelClient.js#0000:StateChannelClient","exportIndex":0,"name":"StateChannelClient","kind":"class","signature":"class StateChannelClient","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/stateChannels/StateChannelContract.md","moduleTitle":"network/stateChannels/StateChannelContract","source":"engine/network/stateChannels/StateChannelContract.js","import":"/engine/network/stateChannels/StateChannelContract.js","sourceHash":"cb26f8181eb249b9990a0f2aa6c757d530a34dee396f0a16526ba6cf32618685","subsystem":"engine","recordType":"api-module","id":"module:engine/network/stateChannels/StateChannelContract.js","title":"network/stateChannels/StateChannelContract","summary":"","exportCount":19}
{"schemaVersion":1,"modulePath":"engine/reference/network/stateChannels/StateChannelContract.md","moduleTitle":"network/stateChannels/StateChannelContract","source":"engine/network/stateChannels/StateChannelContract.js","import":"/engine/network/stateChannels/StateChannelContract.js","sourceHash":"cb26f8181eb249b9990a0f2aa6c757d530a34dee396f0a16526ba6cf32618685","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/stateChannels/StateChannelContract.js#0000:defineStateChannelContract","exportIndex":0,"name":"defineStateChannelContract","kind":"function","signature":"defineStateChannelContract(input = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/stateChannels/StateChannelContract.md","moduleTitle":"network/stateChannels/StateChannelContract","source":"engine/network/stateChannels/StateChannelContract.js","import":"/engine/network/stateChannels/StateChannelContract.js","sourceHash":"cb26f8181eb249b9990a0f2aa6c757d530a34dee396f0a16526ba6cf32618685","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/stateChannels/StateChannelContract.js#0001:createStateIntent","exportIndex":1,"name":"createStateIntent","kind":"function","signature":"createStateIntent(channelId, action, payload, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/stateChannels/StateChannelContract.md","moduleTitle":"network/stateChannels/StateChannelContract","source":"engine/network/stateChannels/StateChannelContract.js","import":"/engine/network/stateChannels/StateChannelContract.js","sourceHash":"cb26f8181eb249b9990a0f2aa6c757d530a34dee396f0a16526ba6cf32618685","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/stateChannels/StateChannelContract.js#0002:createStateProjection","exportIndex":2,"name":"createStateProjection","kind":"function","signature":"createStateProjection(channelId, projection, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/stateChannels/StateChannelContract.md","moduleTitle":"network/stateChannels/StateChannelContract","source":"engine/network/stateChannels/StateChannelContract.js","import":"/engine/network/stateChannels/StateChannelContract.js","sourceHash":"cb26f8181eb249b9990a0f2aa6c757d530a34dee396f0a16526ba6cf32618685","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/stateChannels/StateChannelContract.js#0003:createStateReceipt","exportIndex":3,"name":"createStateReceipt","kind":"function","signature":"createStateReceipt(intent, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/stateChannels/StateChannelContract.md","moduleTitle":"network/stateChannels/StateChannelContract","source":"engine/network/stateChannels/StateChannelContract.js","import":"/engine/network/stateChannels/StateChannelContract.js","sourceHash":"cb26f8181eb249b9990a0f2aa6c757d530a34dee396f0a16526ba6cf32618685","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/stateChannels/StateChannelContract.js#0004:validateStateChannelMessage","exportIndex":4,"name":"validateStateChannelMessage","kind":"function","signature":"validateStateChannelMessage(message, channelId = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/stateChannels/StateChannelContract.md","moduleTitle":"network/stateChannels/StateChannelContract","source":"engine/network/stateChannels/StateChannelContract.js","import":"/engine/network/stateChannels/StateChannelContract.js","sourceHash":"cb26f8181eb249b9990a0f2aa6c757d530a34dee396f0a16526ba6cf32618685","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/stateChannels/StateChannelContract.js#0005:readStateChannelMessage","exportIndex":5,"name":"readStateChannelMessage","kind":"function","signature":"readStateChannelMessage(message, channelId = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/stateChannels/StateChannelContract.md","moduleTitle":"network/stateChannels/StateChannelContract","source":"engine/network/stateChannels/StateChannelContract.js","import":"/engine/network/stateChannels/StateChannelContract.js","sourceHash":"cb26f8181eb249b9990a0f2aa6c757d530a34dee396f0a16526ba6cf32618685","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/stateChannels/StateChannelContract.js#0006:negotiateStateChannelVersion","exportIndex":6,"name":"negotiateStateChannelVersion","kind":"function","signature":"negotiateStateChannelVersion(peerVersions, localVersions = STATE_CHANNEL_SUPPORTED_VERSIONS)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/stateChannels/StateChannelContract.md","moduleTitle":"network/stateChannels/StateChannelContract","source":"engine/network/stateChannels/StateChannelContract.js","import":"/engine/network/stateChannels/StateChannelContract.js","sourceHash":"cb26f8181eb249b9990a0f2aa6c757d530a34dee396f0a16526ba6cf32618685","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/stateChannels/StateChannelContract.js#0007:applyStateProjection","exportIndex":7,"name":"applyStateProjection","kind":"function","signature":"applyStateProjection(currentState, message)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/stateChannels/StateChannelContract.md","moduleTitle":"network/stateChannels/StateChannelContract","source":"engine/network/stateChannels/StateChannelContract.js","import":"/engine/network/stateChannels/StateChannelContract.js","sourceHash":"cb26f8181eb249b9990a0f2aa6c757d530a34dee396f0a16526ba6cf32618685","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/stateChannels/StateChannelContract.js#0008:createMergePatch","exportIndex":8,"name":"createMergePatch","kind":"function","signature":"createMergePatch(previous, next)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/stateChannels/StateChannelContract.md","moduleTitle":"network/stateChannels/StateChannelContract","source":"engine/network/stateChannels/StateChannelContract.js","import":"/engine/network/stateChannels/StateChannelContract.js","sourceHash":"cb26f8181eb249b9990a0f2aa6c757d530a34dee396f0a16526ba6cf32618685","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/stateChannels/StateChannelContract.js#0009:applyMergePatch","exportIndex":9,"name":"applyMergePatch","kind":"function","signature":"applyMergePatch(target, patch)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/stateChannels/StateChannelContract.md","moduleTitle":"network/stateChannels/StateChannelContract","source":"engine/network/stateChannels/StateChannelContract.js","import":"/engine/network/stateChannels/StateChannelContract.js","sourceHash":"cb26f8181eb249b9990a0f2aa6c757d530a34dee396f0a16526ba6cf32618685","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/stateChannels/StateChannelContract.js#0010:jsonClone","exportIndex":10,"name":"jsonClone","kind":"function","signature":"jsonClone(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/stateChannels/StateChannelContract.md","moduleTitle":"network/stateChannels/StateChannelContract","source":"engine/network/stateChannels/StateChannelContract.js","import":"/engine/network/stateChannels/StateChannelContract.js","sourceHash":"cb26f8181eb249b9990a0f2aa6c757d530a34dee396f0a16526ba6cf32618685","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/stateChannels/StateChannelContract.js#0011:STATE_CHANNEL_VERSION","exportIndex":11,"name":"STATE_CHANNEL_VERSION","kind":"constant","signature":"STATE_CHANNEL_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/stateChannels/StateChannelContract.md","moduleTitle":"network/stateChannels/StateChannelContract","source":"engine/network/stateChannels/StateChannelContract.js","import":"/engine/network/stateChannels/StateChannelContract.js","sourceHash":"cb26f8181eb249b9990a0f2aa6c757d530a34dee396f0a16526ba6cf32618685","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/stateChannels/StateChannelContract.js#0012:STATE_CHANNEL_LATEST_VERSION","exportIndex":12,"name":"STATE_CHANNEL_LATEST_VERSION","kind":"constant","signature":"STATE_CHANNEL_LATEST_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/stateChannels/StateChannelContract.md","moduleTitle":"network/stateChannels/StateChannelContract","source":"engine/network/stateChannels/StateChannelContract.js","import":"/engine/network/stateChannels/StateChannelContract.js","sourceHash":"cb26f8181eb249b9990a0f2aa6c757d530a34dee396f0a16526ba6cf32618685","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/stateChannels/StateChannelContract.js#0013:STATE_CHANNEL_SUPPORTED_VERSIONS","exportIndex":13,"name":"STATE_CHANNEL_SUPPORTED_VERSIONS","kind":"constant","signature":"STATE_CHANNEL_SUPPORTED_VERSIONS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/stateChannels/StateChannelContract.md","moduleTitle":"network/stateChannels/StateChannelContract","source":"engine/network/stateChannels/StateChannelContract.js","import":"/engine/network/stateChannels/StateChannelContract.js","sourceHash":"cb26f8181eb249b9990a0f2aa6c757d530a34dee396f0a16526ba6cf32618685","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/stateChannels/StateChannelContract.js#0014:STATE_CHANNEL_MESSAGE_FORMAT","exportIndex":14,"name":"STATE_CHANNEL_MESSAGE_FORMAT","kind":"constant","signature":"STATE_CHANNEL_MESSAGE_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/stateChannels/StateChannelContract.md","moduleTitle":"network/stateChannels/StateChannelContract","source":"engine/network/stateChannels/StateChannelContract.js","import":"/engine/network/stateChannels/StateChannelContract.js","sourceHash":"cb26f8181eb249b9990a0f2aa6c757d530a34dee396f0a16526ba6cf32618685","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/stateChannels/StateChannelContract.js#0015:DEFAULT_STATE_CHANNEL_TRANSPORT","exportIndex":15,"name":"DEFAULT_STATE_CHANNEL_TRANSPORT","kind":"constant","signature":"DEFAULT_STATE_CHANNEL_TRANSPORT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/stateChannels/StateChannelContract.md","moduleTitle":"network/stateChannels/StateChannelContract","source":"engine/network/stateChannels/StateChannelContract.js","import":"/engine/network/stateChannels/StateChannelContract.js","sourceHash":"cb26f8181eb249b9990a0f2aa6c757d530a34dee396f0a16526ba6cf32618685","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/stateChannels/StateChannelContract.js#0016:STATE_CHANNEL_TRANSPORT","exportIndex":16,"name":"STATE_CHANNEL_TRANSPORT","kind":"constant","signature":"STATE_CHANNEL_TRANSPORT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/stateChannels/StateChannelContract.md","moduleTitle":"network/stateChannels/StateChannelContract","source":"engine/network/stateChannels/StateChannelContract.js","import":"/engine/network/stateChannels/StateChannelContract.js","sourceHash":"cb26f8181eb249b9990a0f2aa6c757d530a34dee396f0a16526ba6cf32618685","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/stateChannels/StateChannelContract.js#0017:STATE_CHANNEL_MESSAGE","exportIndex":17,"name":"STATE_CHANNEL_MESSAGE","kind":"constant","signature":"STATE_CHANNEL_MESSAGE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/stateChannels/StateChannelContract.md","moduleTitle":"network/stateChannels/StateChannelContract","source":"engine/network/stateChannels/StateChannelContract.js","import":"/engine/network/stateChannels/StateChannelContract.js","sourceHash":"cb26f8181eb249b9990a0f2aa6c757d530a34dee396f0a16526ba6cf32618685","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/stateChannels/StateChannelContract.js#0018:STATE_CHANNEL_PROJECTION","exportIndex":18,"name":"STATE_CHANNEL_PROJECTION","kind":"constant","signature":"STATE_CHANNEL_PROJECTION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/stateChannels/StateChannelTransportResolver.md","moduleTitle":"network/stateChannels/StateChannelTransportResolver","source":"engine/network/stateChannels/StateChannelTransportResolver.js","import":"/engine/network/stateChannels/StateChannelTransportResolver.js","sourceHash":"c49bdb6dda18104df86e79f95e6f73f21cb226e91c29f9562e7eaf7216a189c2","subsystem":"engine","recordType":"api-module","id":"module:engine/network/stateChannels/StateChannelTransportResolver.js","title":"network/stateChannels/StateChannelTransportResolver","summary":"Resolve transport from authority location. Server-backed channels remain SSE by default; peer authority explicitly selects the WebRTC mesh.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/network/stateChannels/StateChannelTransportResolver.md","moduleTitle":"network/stateChannels/StateChannelTransportResolver","source":"engine/network/stateChannels/StateChannelTransportResolver.js","import":"/engine/network/stateChannels/StateChannelTransportResolver.js","sourceHash":"c49bdb6dda18104df86e79f95e6f73f21cb226e91c29f9562e7eaf7216a189c2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/stateChannels/StateChannelTransportResolver.js#0000:resolveStateChannelTransport","exportIndex":0,"name":"resolveStateChannelTransport","kind":"function","signature":"resolveStateChannelTransport(options = {})","summary":"Resolve transport from authority location. Server-backed channels remain SSE by default; peer authority explicitly selects the WebRTC mesh."}
{"schemaVersion":1,"modulePath":"engine/reference/network/stateChannels/StateChannelTransportResolver.md","moduleTitle":"network/stateChannels/StateChannelTransportResolver","source":"engine/network/stateChannels/StateChannelTransportResolver.js","import":"/engine/network/stateChannels/StateChannelTransportResolver.js","sourceHash":"c49bdb6dda18104df86e79f95e6f73f21cb226e91c29f9562e7eaf7216a189c2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/stateChannels/StateChannelTransportResolver.js#0001:STATE_CHANNEL_AUTHORITY_LOCATION","exportIndex":1,"name":"STATE_CHANNEL_AUTHORITY_LOCATION","kind":"constant","signature":"STATE_CHANNEL_AUTHORITY_LOCATION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/stateChannels/index.md","moduleTitle":"network/stateChannels/index","source":"engine/network/stateChannels/index.js","import":"/engine/network/stateChannels/index.js","sourceHash":"b96f9a6a4e021df6878463299ab1ebd5ac841be69ce239a3adf8f7aef56742c7","subsystem":"engine","recordType":"api-module","id":"module:engine/network/stateChannels/index.js","title":"network/stateChannels/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/network/syncManager/SyncCategory.md","moduleTitle":"network/syncManager/SyncCategory","source":"engine/network/syncManager/SyncCategory.js","import":"/engine/network/syncManager/SyncCategory.js","sourceHash":"c19ebaca3e9c6a9337eed0c2a62032e7baccefb54e63afae2b2b3d7ae2a45fd3","subsystem":"engine","recordType":"api-module","id":"module:engine/network/syncManager/SyncCategory.js","title":"network/syncManager/SyncCategory","summary":"network/syncManager/SyncCategory.js — sync categories + target scopes (network plan §20 Sync Manager).","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/network/syncManager/SyncCategory.md","moduleTitle":"network/syncManager/SyncCategory","source":"engine/network/syncManager/SyncCategory.js","import":"/engine/network/syncManager/SyncCategory.js","sourceHash":"c19ebaca3e9c6a9337eed0c2a62032e7baccefb54e63afae2b2b3d7ae2a45fd3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/syncManager/SyncCategory.js#0000:SYNC_SCOPE","exportIndex":0,"name":"SYNC_SCOPE","kind":"constant","signature":"SYNC_SCOPE","summary":"What a synced value may fan out to."}
{"schemaVersion":1,"modulePath":"engine/reference/network/syncManager/SyncCategory.md","moduleTitle":"network/syncManager/SyncCategory","source":"engine/network/syncManager/SyncCategory.js","import":"/engine/network/syncManager/SyncCategory.js","sourceHash":"c19ebaca3e9c6a9337eed0c2a62032e7baccefb54e63afae2b2b3d7ae2a45fd3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/syncManager/SyncCategory.js#0001:SYNC_CATEGORIES","exportIndex":1,"name":"SYNC_CATEGORIES","kind":"constant","signature":"SYNC_CATEGORIES","summary":"The category groupings a profile's Sync Manager governs (network plan §20)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/syncManager/SyncManager.md","moduleTitle":"network/syncManager/SyncManager","source":"engine/network/syncManager/SyncManager.js","import":"/engine/network/syncManager/SyncManager.js","sourceHash":"2cb0ae405b8afd459b6eff702576fb02dd5aace3d9bb66ea1eb76db4cde35d22","subsystem":"engine","recordType":"api-module","id":"module:engine/network/syncManager/SyncManager.js","title":"network/syncManager/SyncManager","summary":"network/syncManager/SyncManager.js — per-profile sync rules (network plan §20). This module only decides WHAT should sync WHERE (rules + gating); it does not move any bytes — actual transport goes through the routes/ group crypto layers built in earlier phases. Rules are local, in-memory config; callers persist them via their own storage.","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/network/syncManager/SyncManager.md","moduleTitle":"network/syncManager/SyncManager","source":"engine/network/syncManager/SyncManager.js","import":"/engine/network/syncManager/SyncManager.js","sourceHash":"2cb0ae405b8afd459b6eff702576fb02dd5aace3d9bb66ea1eb76db4cde35d22","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/syncManager/SyncManager.js#0000:createSyncManager","exportIndex":0,"name":"createSyncManager","kind":"function","signature":"createSyncManager({ rules = {} } = {})","summary":"Create a sync manager with sensible defaults (network plan §20 examples: \"sync AI memory only to my devices\", \"never sync private keys\" — private keys simply have no category here at all, by design)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/syncManager/SyncManager.md","moduleTitle":"network/syncManager/SyncManager","source":"engine/network/syncManager/SyncManager.js","import":"/engine/network/syncManager/SyncManager.js","sourceHash":"2cb0ae405b8afd459b6eff702576fb02dd5aace3d9bb66ea1eb76db4cde35d22","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/syncManager/SyncManager.js#0001:setSyncRule","exportIndex":1,"name":"setSyncRule","kind":"function","signature":"setSyncRule(manager, category, { scope, enabled, targetDeviceIds } = {})","summary":"Set/update a category's sync rule."}
{"schemaVersion":1,"modulePath":"engine/reference/network/syncManager/SyncManager.md","moduleTitle":"network/syncManager/SyncManager","source":"engine/network/syncManager/SyncManager.js","import":"/engine/network/syncManager/SyncManager.js","sourceHash":"2cb0ae405b8afd459b6eff702576fb02dd5aace3d9bb66ea1eb76db4cde35d22","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/syncManager/SyncManager.js#0002:getSyncRule","exportIndex":2,"name":"getSyncRule","kind":"function","signature":"getSyncRule(manager, category)","summary":"Get a category's current rule, or null if unset."}
{"schemaVersion":1,"modulePath":"engine/reference/network/syncManager/SyncManager.md","moduleTitle":"network/syncManager/SyncManager","source":"engine/network/syncManager/SyncManager.js","import":"/engine/network/syncManager/SyncManager.js","sourceHash":"2cb0ae405b8afd459b6eff702576fb02dd5aace3d9bb66ea1eb76db4cde35d22","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/syncManager/SyncManager.js#0003:listSyncRules","exportIndex":3,"name":"listSyncRules","kind":"function","signature":"listSyncRules(manager)","summary":"All rules as a flat array of `{ category, scope, enabled, ... }`."}
{"schemaVersion":1,"modulePath":"engine/reference/network/syncManager/SyncManager.md","moduleTitle":"network/syncManager/SyncManager","source":"engine/network/syncManager/SyncManager.js","import":"/engine/network/syncManager/SyncManager.js","sourceHash":"2cb0ae405b8afd459b6eff702576fb02dd5aace3d9bb66ea1eb76db4cde35d22","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/syncManager/SyncManager.js#0004:shouldSync","exportIndex":4,"name":"shouldSync","kind":"function","signature":"shouldSync(manager, category, targetScope)","summary":"Should `category` currently sync to `targetScope` right now? Used as a gate before a caller pushes an update over a route/group."}
{"schemaVersion":1,"modulePath":"engine/reference/network/syncManager/SyncTransport.md","moduleTitle":"network/syncManager/SyncTransport","source":"engine/network/syncManager/SyncTransport.js","import":"/engine/network/syncManager/SyncTransport.js","sourceHash":"89cbe6ed1a6ed6ffb6801dde34681749041738a8acd7bf6ac43c52c51c229def","subsystem":"engine","recordType":"api-module","id":"module:engine/network/syncManager/SyncTransport.js","title":"network/syncManager/SyncTransport","summary":"network/syncManager/SyncTransport.js — moves the group-workstation CRDT bytes that SyncManager.js only ever decided WHETHER to send (network plan §20, plus §18/§19's workstation CRDT). Reuses a caller-owned, already connected + already route-attached Particle daemon or explicitly enabled legacy client as the wire: local ops use `client.signal(routeId, ...)` to every other session attached to the route, and incoming SIGNAL events for that routeId are folded in via CRDT join (`mergeWorkstationState`). CRDTs are commutative/idempotent by construction, so no ordering, ack, or conflict-resolution logic is needed here — this is intentionally the entire transport.  This module owns no socket/timer of its own; it is pure glue between SyncManager's gate (`shouldSync`), Workstation's CRDT state, and whatever Particle signaling session + opaque route tag the caller has brought up (e.g. factory/apps/network-manager's Routes tab, or a future group app).","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/network/syncManager/SyncTransport.md","moduleTitle":"network/syncManager/SyncTransport","source":"engine/network/syncManager/SyncTransport.js","import":"/engine/network/syncManager/SyncTransport.js","sourceHash":"89cbe6ed1a6ed6ffb6801dde34681749041738a8acd7bf6ac43c52c51c229def","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/syncManager/SyncTransport.js#0000:serializeWorkstationState","exportIndex":0,"name":"serializeWorkstationState","kind":"function","signature":"serializeWorkstationState(state)","summary":"Serialize a WorkstationState.js state object into a JSON-safe wire payload."}
{"schemaVersion":1,"modulePath":"engine/reference/network/syncManager/SyncTransport.md","moduleTitle":"network/syncManager/SyncTransport","source":"engine/network/syncManager/SyncTransport.js","import":"/engine/network/syncManager/SyncTransport.js","sourceHash":"89cbe6ed1a6ed6ffb6801dde34681749041738a8acd7bf6ac43c52c51c229def","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/syncManager/SyncTransport.js#0001:deserializeWorkstationState","exportIndex":1,"name":"deserializeWorkstationState","kind":"function","signature":"deserializeWorkstationState(wire)","summary":"Inverse of serializeWorkstationState — reconstructs real CRDT instances (not plain values)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/syncManager/SyncTransport.md","moduleTitle":"network/syncManager/SyncTransport","source":"engine/network/syncManager/SyncTransport.js","import":"/engine/network/syncManager/SyncTransport.js","sourceHash":"89cbe6ed1a6ed6ffb6801dde34681749041738a8acd7bf6ac43c52c51c229def","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/syncManager/SyncTransport.js#0002:createSyncTransport","exportIndex":2,"name":"createSyncTransport","kind":"function","signature":"createSyncTransport({ client, routeId, syncManager, category, targetScope, getWorkstation, setWorkstation })","summary":"Wire a live group workstation to a connected + route-attached MasterServerClient. Both push (outgoing) and handleEvent (incoming) are gated by the same `shouldSync` check, so disabling a category locally stops us from both broadcasting AND accepting that category's updates."}
{"schemaVersion":1,"modulePath":"engine/reference/network/syncManager/index.md","moduleTitle":"network/syncManager/index","source":"engine/network/syncManager/index.js","import":"/engine/network/syncManager/index.js","sourceHash":"3df903799f703106d898c1f5ae2a625d2fae53c59454fecc1f7054a03b778da9","subsystem":"engine","recordType":"api-module","id":"module:engine/network/syncManager/index.js","title":"network/syncManager/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/network/transport/MasterServerClient.md","moduleTitle":"network/transport/MasterServerClient","source":"engine/network/transport/MasterServerClient.js","import":"/engine/network/transport/MasterServerClient.js","sourceHash":"f9ced496c38583e9c7513abbeeac3f83df4f1243431866fd56f6bef81e07d1d6","subsystem":"engine","recordType":"api-module","id":"module:engine/network/transport/MasterServerClient.js","title":"network/transport/MasterServerClient","summary":"network/transport/MasterServerClient.js — live WebSocket signaling client for a single Masterserver (network plan §7/§8/§12, Phase 2b). Speaks the tiny HELLO -> PROVE -> PING/PONG -> DISCOVER wire protocol implemented by Masterserver/app/routes.py. All outgoing envelopes use the `particle-discovery/1` namespace — the server validates `protocol` and `type` independently (Masterserver/app/protocol.py validate_envelope), so a single namespace for every message type from this client is sufficient and matches the confirmed-live wire format.  PROVE requires signing the exact raw challenge bytes the server issued (Masterserver/app/session_crypto.py verifies a raw P1363 ECDSA signature over those bytes) — NOT a stringified/hex-encoded form of them. This is why deviceSigner.signRaw() (engine/state/authority/Identity.js) is used here instead of the string-based signer.sign().","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/network/transport/MasterServerClient.md","moduleTitle":"network/transport/MasterServerClient","source":"engine/network/transport/MasterServerClient.js","import":"/engine/network/transport/MasterServerClient.js","sourceHash":"f9ced496c38583e9c7513abbeeac3f83df4f1243431866fd56f6bef81e07d1d6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/transport/MasterServerClient.js#0000:createMasterServerClient","exportIndex":0,"name":"createMasterServerClient","kind":"function","signature":"createMasterServerClient({ url, deviceSigner = null, onEvent = null } = {})","summary":"Create a live client for one Masterserver. Does not auto-connect — call `connect()` explicitly."}
{"schemaVersion":1,"modulePath":"engine/reference/network/transport/MasterServerClient.md","moduleTitle":"network/transport/MasterServerClient","source":"engine/network/transport/MasterServerClient.js","import":"/engine/network/transport/MasterServerClient.js","sourceHash":"f9ced496c38583e9c7513abbeeac3f83df4f1243431866fd56f6bef81e07d1d6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/transport/MasterServerClient.js#0001:MS_CLIENT_STATE","exportIndex":1,"name":"MS_CLIENT_STATE","kind":"constant","signature":"MS_CLIENT_STATE","summary":"Connection lifecycle states surfaced via onEvent()."}
{"schemaVersion":1,"modulePath":"engine/reference/network/transport/MasterServerRegistry.md","moduleTitle":"network/transport/MasterServerRegistry","source":"engine/network/transport/MasterServerRegistry.js","import":"/engine/network/transport/MasterServerRegistry.js","sourceHash":"f9f361f0e75d53b89c9c1525e70d7595b46af3351519b6d44b2f739a18c914a4","subsystem":"engine","recordType":"api-module","id":"module:engine/network/transport/MasterServerRegistry.js","title":"network/transport/MasterServerRegistry","summary":"network/transport/MasterServerRegistry.js — shared, ref-counted transport/MasterServerClient.js registry (network plan §4/§7/§8/§12).  Multiple independent OS consumers can each want a live session to the same Masterserver URL at the same time — e.g. SecureMesh's signaling tier (engine/collab/CollabSignal.js Tier 4) and the Particle Network control panel's live inspector (factory/apps/network-manager/NetworkManagerApp.js). Without this, each would open its own redundant WebSocket + HELLO/PROVE handshake to the same server. This module multiplexes N listeners onto ONE underlying MasterServerClient connection per URL, connecting on first acquire and disconnecting only once every consumer has released it.  A Masterserver route/session concept is per-connection, not per-consumer — sharing one session is exactly what \"a master server introduces peers and forwards signaling\" (README.md's can/cannot boundary) assumes: any number of local app-level features can ride the same proven session and attach their own routes on it independently (ATTACH_ROUTE is additive; a session can be attached to many routes at once).","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/network/transport/MasterServerRegistry.md","moduleTitle":"network/transport/MasterServerRegistry","source":"engine/network/transport/MasterServerRegistry.js","import":"/engine/network/transport/MasterServerRegistry.js","sourceHash":"f9f361f0e75d53b89c9c1525e70d7595b46af3351519b6d44b2f739a18c914a4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/transport/MasterServerRegistry.js#0000:acquireSharedMasterServerClient","exportIndex":0,"name":"acquireSharedMasterServerClient","kind":"function","signature":"acquireSharedMasterServerClient({ url, deviceSigner = null, onEvent = null } = {})","summary":"Acquire a shared, ref-counted MasterServerClient for `url`, connecting it if this is the first consumer. Every event the underlying client emits is fanned out to every registered listener — consumers are expected to filter for events relevant to them (by routeId/message shape), same as they would with their own private client."}
{"schemaVersion":1,"modulePath":"engine/reference/network/transport/MasterServerRegistry.md","moduleTitle":"network/transport/MasterServerRegistry","source":"engine/network/transport/MasterServerRegistry.js","import":"/engine/network/transport/MasterServerRegistry.js","sourceHash":"f9f361f0e75d53b89c9c1525e70d7595b46af3351519b6d44b2f739a18c914a4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/transport/MasterServerRegistry.js#0001:hasSharedMasterServerClient","exportIndex":1,"name":"hasSharedMasterServerClient","kind":"function","signature":"hasSharedMasterServerClient(url)","summary":"True if a shared client for this url already exists (connecting or connected)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/transport/MasterServerRegistry.md","moduleTitle":"network/transport/MasterServerRegistry","source":"engine/network/transport/MasterServerRegistry.js","import":"/engine/network/transport/MasterServerRegistry.js","sourceHash":"f9f361f0e75d53b89c9c1525e70d7595b46af3351519b6d44b2f739a18c914a4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/transport/MasterServerRegistry.js#0002:sharedMasterServerClientStats","exportIndex":2,"name":"sharedMasterServerClientStats","kind":"function","signature":"sharedMasterServerClientStats(url)","summary":"Current listener/ref count for a url's shared client, or null if none exists. Diagnostics only."}
{"schemaVersion":1,"modulePath":"engine/reference/network/transport/index.md","moduleTitle":"network/transport/index","source":"engine/network/transport/index.js","import":"/engine/network/transport/index.js","sourceHash":"3dc1089d2cf154591f2eb4eab4af0a06205116f1835ce323d1aa4416e1173a2d","subsystem":"engine","recordType":"api-module","id":"module:engine/network/transport/index.js","title":"network/transport/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/network/workstation/Workstation.md","moduleTitle":"network/workstation/Workstation","source":"engine/network/workstation/Workstation.js","import":"/engine/network/workstation/Workstation.js","sourceHash":"84aeae0082573599524b4d808cdd5c9924aa7cf0bf79f96c1384e9aa73cae93a","subsystem":"engine","recordType":"api-module","id":"module:engine/network/workstation/Workstation.js","title":"network/workstation/Workstation","summary":"network/workstation/Workstation.js — a group's shared OS surface (network plan §18), distinct from any member's personal desktop. Wraps WorkstationState.js (the CRDT layer) with a groupId and a checkpoint-payload builder for GroupLedger's WORKSTATION_CHECKPOINTED event (network plan §19: \"the governance ledger periodically checkpoints collaborative state\" — the ledger stores authority decisions plus a hash of live state, not every live edit).","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/network/workstation/Workstation.md","moduleTitle":"network/workstation/Workstation","source":"engine/network/workstation/Workstation.js","import":"/engine/network/workstation/Workstation.js","sourceHash":"84aeae0082573599524b4d808cdd5c9924aa7cf0bf79f96c1384e9aa73cae93a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/workstation/Workstation.js#0000:createWorkstation","exportIndex":0,"name":"createWorkstation","kind":"function","signature":"createWorkstation({ groupId } = {})","summary":"Create a new (empty) group workstation."}
{"schemaVersion":1,"modulePath":"engine/reference/network/workstation/Workstation.md","moduleTitle":"network/workstation/Workstation","source":"engine/network/workstation/Workstation.js","import":"/engine/network/workstation/Workstation.js","sourceHash":"84aeae0082573599524b4d808cdd5c9924aa7cf0bf79f96c1384e9aa73cae93a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/workstation/Workstation.js#0001:mergeWorkstation","exportIndex":1,"name":"mergeWorkstation","kind":"function","signature":"mergeWorkstation(workstation, otherState)","summary":"Merge in another replica's CRDT state (order-independent)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/workstation/Workstation.md","moduleTitle":"network/workstation/Workstation","source":"engine/network/workstation/Workstation.js","import":"/engine/network/workstation/Workstation.js","sourceHash":"84aeae0082573599524b4d808cdd5c9924aa7cf0bf79f96c1384e9aa73cae93a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/workstation/Workstation.js#0002:computeWorkstationStateRoot","exportIndex":2,"name":"computeWorkstationStateRoot","kind":"function","signature":"computeWorkstationStateRoot(workstation)","summary":"Stable content hash of the current workstation state (\"desktopStateRoot\")."}
{"schemaVersion":1,"modulePath":"engine/reference/network/workstation/Workstation.md","moduleTitle":"network/workstation/Workstation","source":"engine/network/workstation/Workstation.js","import":"/engine/network/workstation/Workstation.js","sourceHash":"84aeae0082573599524b4d808cdd5c9924aa7cf0bf79f96c1384e9aa73cae93a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/workstation/Workstation.js#0003:buildWorkstationCheckpointPayload","exportIndex":3,"name":"buildWorkstationCheckpointPayload","kind":"function","signature":"buildWorkstationCheckpointPayload(workstation, { governanceHead, appRegistryHash = null, manifestRoot = null } = {})","summary":"Build the payload for a WORKSTATION_CHECKPOINTED governance event (network plan §19). Pass the result straight into GroupLedger's `proposeGroupEvent(ledger, { type: 'WORKSTATION_CHECKPOINTED', payload, signer })`."}
{"schemaVersion":1,"modulePath":"engine/reference/network/workstation/WorkstationState.md","moduleTitle":"network/workstation/WorkstationState","source":"engine/network/workstation/WorkstationState.js","import":"/engine/network/workstation/WorkstationState.js","sourceHash":"d7f04cd83579b763eb99ec0ad60b17862d6fba1343b270dc402c59a918417bf6","subsystem":"engine","recordType":"api-module","id":"module:engine/network/workstation/WorkstationState.js","title":"network/workstation/WorkstationState","summary":"network/workstation/WorkstationState.js — CRDT-backed group workstation surface (network plan §18/§19: shared desktop layout, app registry, folders, agents — distinct from any member's personal desktop).  Reuses the Causal State Engine's approved CRDT types (ORSet for pinned-apps/folders/agents membership, LWWRegister for per-window layout and wallpaper) unmodified: every mutation returns a NEW state object (non-mutating join algebra), so replicas that exchange state in any order converge without coordination.","exportCount":12}
{"schemaVersion":1,"modulePath":"engine/reference/network/workstation/WorkstationState.md","moduleTitle":"network/workstation/WorkstationState","source":"engine/network/workstation/WorkstationState.js","import":"/engine/network/workstation/WorkstationState.js","sourceHash":"d7f04cd83579b763eb99ec0ad60b17862d6fba1343b270dc402c59a918417bf6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/workstation/WorkstationState.js#0000:createWorkstationState","exportIndex":0,"name":"createWorkstationState","kind":"function","signature":"createWorkstationState()","summary":"Create an empty workstation CRDT state."}
{"schemaVersion":1,"modulePath":"engine/reference/network/workstation/WorkstationState.md","moduleTitle":"network/workstation/WorkstationState","source":"engine/network/workstation/WorkstationState.js","import":"/engine/network/workstation/WorkstationState.js","sourceHash":"d7f04cd83579b763eb99ec0ad60b17862d6fba1343b270dc402c59a918417bf6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/workstation/WorkstationState.js#0001:pinApp","exportIndex":1,"name":"pinApp","kind":"function","signature":"pinApp(state, appId)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/workstation/WorkstationState.md","moduleTitle":"network/workstation/WorkstationState","source":"engine/network/workstation/WorkstationState.js","import":"/engine/network/workstation/WorkstationState.js","sourceHash":"d7f04cd83579b763eb99ec0ad60b17862d6fba1343b270dc402c59a918417bf6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/workstation/WorkstationState.js#0002:unpinApp","exportIndex":2,"name":"unpinApp","kind":"function","signature":"unpinApp(state, appId)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/workstation/WorkstationState.md","moduleTitle":"network/workstation/WorkstationState","source":"engine/network/workstation/WorkstationState.js","import":"/engine/network/workstation/WorkstationState.js","sourceHash":"d7f04cd83579b763eb99ec0ad60b17862d6fba1343b270dc402c59a918417bf6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/workstation/WorkstationState.js#0003:addFolder","exportIndex":3,"name":"addFolder","kind":"function","signature":"addFolder(state, folderId)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/workstation/WorkstationState.md","moduleTitle":"network/workstation/WorkstationState","source":"engine/network/workstation/WorkstationState.js","import":"/engine/network/workstation/WorkstationState.js","sourceHash":"d7f04cd83579b763eb99ec0ad60b17862d6fba1343b270dc402c59a918417bf6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/workstation/WorkstationState.js#0004:removeFolder","exportIndex":4,"name":"removeFolder","kind":"function","signature":"removeFolder(state, folderId)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/workstation/WorkstationState.md","moduleTitle":"network/workstation/WorkstationState","source":"engine/network/workstation/WorkstationState.js","import":"/engine/network/workstation/WorkstationState.js","sourceHash":"d7f04cd83579b763eb99ec0ad60b17862d6fba1343b270dc402c59a918417bf6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/workstation/WorkstationState.js#0005:addAgent","exportIndex":5,"name":"addAgent","kind":"function","signature":"addAgent(state, agentId)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/workstation/WorkstationState.md","moduleTitle":"network/workstation/WorkstationState","source":"engine/network/workstation/WorkstationState.js","import":"/engine/network/workstation/WorkstationState.js","sourceHash":"d7f04cd83579b763eb99ec0ad60b17862d6fba1343b270dc402c59a918417bf6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/workstation/WorkstationState.js#0006:removeAgent","exportIndex":6,"name":"removeAgent","kind":"function","signature":"removeAgent(state, agentId)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/workstation/WorkstationState.md","moduleTitle":"network/workstation/WorkstationState","source":"engine/network/workstation/WorkstationState.js","import":"/engine/network/workstation/WorkstationState.js","sourceHash":"d7f04cd83579b763eb99ec0ad60b17862d6fba1343b270dc402c59a918417bf6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/workstation/WorkstationState.js#0007:setWindowLayout","exportIndex":7,"name":"setWindowLayout","kind":"function","signature":"setWindowLayout(state, windowId, layout, ts, node = '')","summary":"Set a window's layout (LWW: highest (ts, node) wins on merge)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/workstation/WorkstationState.md","moduleTitle":"network/workstation/WorkstationState","source":"engine/network/workstation/WorkstationState.js","import":"/engine/network/workstation/WorkstationState.js","sourceHash":"d7f04cd83579b763eb99ec0ad60b17862d6fba1343b270dc402c59a918417bf6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/workstation/WorkstationState.js#0008:getWindowLayout","exportIndex":8,"name":"getWindowLayout","kind":"function","signature":"getWindowLayout(state, windowId)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/workstation/WorkstationState.md","moduleTitle":"network/workstation/WorkstationState","source":"engine/network/workstation/WorkstationState.js","import":"/engine/network/workstation/WorkstationState.js","sourceHash":"d7f04cd83579b763eb99ec0ad60b17862d6fba1343b270dc402c59a918417bf6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/workstation/WorkstationState.js#0009:setWallpaper","exportIndex":9,"name":"setWallpaper","kind":"function","signature":"setWallpaper(state, wallpaper, ts, node = '')","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/network/workstation/WorkstationState.md","moduleTitle":"network/workstation/WorkstationState","source":"engine/network/workstation/WorkstationState.js","import":"/engine/network/workstation/WorkstationState.js","sourceHash":"d7f04cd83579b763eb99ec0ad60b17862d6fba1343b270dc402c59a918417bf6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/workstation/WorkstationState.js#0010:mergeWorkstationState","exportIndex":10,"name":"mergeWorkstationState","kind":"function","signature":"mergeWorkstationState(a, b)","summary":"Join two workstation states (CRDT merge — order-independent, convergent)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/workstation/WorkstationState.md","moduleTitle":"network/workstation/WorkstationState","source":"engine/network/workstation/WorkstationState.js","import":"/engine/network/workstation/WorkstationState.js","sourceHash":"d7f04cd83579b763eb99ec0ad60b17862d6fba1343b270dc402c59a918417bf6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/network/workstation/WorkstationState.js#0011:snapshotWorkstationState","exportIndex":11,"name":"snapshotWorkstationState","kind":"function","signature":"snapshotWorkstationState(state)","summary":"Plain, JSON-serializable snapshot (for hashing/checkpointing/transport)."}
{"schemaVersion":1,"modulePath":"engine/reference/network/workstation/index.md","moduleTitle":"network/workstation/index","source":"engine/network/workstation/index.js","import":"/engine/network/workstation/index.js","sourceHash":"e29ee59b612a9a8b6dd423b55be0c29f0fc07d7731bb0c00f2445e93aa7fdb1a","subsystem":"engine","recordType":"api-module","id":"module:engine/network/workstation/index.js","title":"network/workstation/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/render/CameraMath.md","moduleTitle":"render/CameraMath","source":"engine/render/CameraMath.js","import":"/engine/render/CameraMath.js","sourceHash":"68be32e7582d28c4a3f78d350802f2513398a90c4c86f763d7a6785c94cc9118","subsystem":"engine","recordType":"api-module","id":"module:engine/render/CameraMath.js","title":"render/CameraMath","summary":"Compute perspective projection matrix.","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/render/CameraMath.md","moduleTitle":"render/CameraMath","source":"engine/render/CameraMath.js","import":"/engine/render/CameraMath.js","sourceHash":"68be32e7582d28c4a3f78d350802f2513398a90c4c86f763d7a6785c94cc9118","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/CameraMath.js#0000:computePerspectiveProjection","exportIndex":0,"name":"computePerspectiveProjection","kind":"function","signature":"computePerspectiveProjection(camera, aspectFallback, options = {})","summary":"Compute perspective projection matrix."}
{"schemaVersion":1,"modulePath":"engine/reference/render/CameraMath.md","moduleTitle":"render/CameraMath","source":"engine/render/CameraMath.js","import":"/engine/render/CameraMath.js","sourceHash":"68be32e7582d28c4a3f78d350802f2513398a90c4c86f763d7a6785c94cc9118","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/CameraMath.js#0001:computeOrthographicProjection","exportIndex":1,"name":"computeOrthographicProjection","kind":"function","signature":"computeOrthographicProjection(camera, viewHeight, aspectFallback)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/CameraMath.md","moduleTitle":"render/CameraMath","source":"engine/render/CameraMath.js","import":"/engine/render/CameraMath.js","sourceHash":"68be32e7582d28c4a3f78d350802f2513398a90c4c86f763d7a6785c94cc9118","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/CameraMath.js#0002:computeViewMatrixFromTransform","exportIndex":2,"name":"computeViewMatrixFromTransform","kind":"function","signature":"computeViewMatrixFromTransform(transform)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/CameraMath.md","moduleTitle":"render/CameraMath","source":"engine/render/CameraMath.js","import":"/engine/render/CameraMath.js","sourceHash":"68be32e7582d28c4a3f78d350802f2513398a90c4c86f763d7a6785c94cc9118","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/CameraMath.js#0003:computeViewProjMatrix","exportIndex":3,"name":"computeViewProjMatrix","kind":"function","signature":"computeViewProjMatrix(camera, transform, viewportWidth, viewportHeight)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/DrawHelpers.md","moduleTitle":"render/DrawHelpers","source":"engine/render/DrawHelpers.js","import":"/engine/render/DrawHelpers.js","sourceHash":"a837c689a0ff6f9491ec181c63ee8846f230d4ed09f920c090d5da9bd2930e03","subsystem":"engine","recordType":"api-module","id":"module:engine/render/DrawHelpers.js","title":"render/DrawHelpers","summary":"Draw a mesh with the given bind group and uniforms.","exportCount":9}
{"schemaVersion":1,"modulePath":"engine/reference/render/DrawHelpers.md","moduleTitle":"render/DrawHelpers","source":"engine/render/DrawHelpers.js","import":"/engine/render/DrawHelpers.js","sourceHash":"a837c689a0ff6f9491ec181c63ee8846f230d4ed09f920c090d5da9bd2930e03","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/DrawHelpers.js#0000:drawMesh","exportIndex":0,"name":"drawMesh","kind":"function","signature":"drawMesh(pass, mesh, bindGroup)","summary":"Draw a mesh with the given bind group and uniforms."}
{"schemaVersion":1,"modulePath":"engine/reference/render/DrawHelpers.md","moduleTitle":"render/DrawHelpers","source":"engine/render/DrawHelpers.js","import":"/engine/render/DrawHelpers.js","sourceHash":"a837c689a0ff6f9491ec181c63ee8846f230d4ed09f920c090d5da9bd2930e03","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/DrawHelpers.js#0001:encodeIndexedMeshClusterCulling","exportIndex":1,"name":"encodeIndexedMeshClusterCulling","kind":"function","signature":"encodeIndexedMeshClusterCulling(commandEncoder, viewProj, meshes)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/DrawHelpers.md","moduleTitle":"render/DrawHelpers","source":"engine/render/DrawHelpers.js","import":"/engine/render/DrawHelpers.js","sourceHash":"a837c689a0ff6f9491ec181c63ee8846f230d4ed09f920c090d5da9bd2930e03","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/DrawHelpers.js#0002:drawMeshes","exportIndex":2,"name":"drawMeshes","kind":"function","signature":"drawMeshes(pass, meshEntries)","summary":"Draw multiple meshes efficiently."}
{"schemaVersion":1,"modulePath":"engine/reference/render/DrawHelpers.md","moduleTitle":"render/DrawHelpers","source":"engine/render/DrawHelpers.js","import":"/engine/render/DrawHelpers.js","sourceHash":"a837c689a0ff6f9491ec181c63ee8846f230d4ed09f920c090d5da9bd2930e03","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/DrawHelpers.js#0003:beginStandardRenderPass","exportIndex":3,"name":"beginStandardRenderPass","kind":"function","signature":"beginStandardRenderPass(encoder, options)","summary":"Create a render pass with standard settings."}
{"schemaVersion":1,"modulePath":"engine/reference/render/DrawHelpers.md","moduleTitle":"render/DrawHelpers","source":"engine/render/DrawHelpers.js","import":"/engine/render/DrawHelpers.js","sourceHash":"a837c689a0ff6f9491ec181c63ee8846f230d4ed09f920c090d5da9bd2930e03","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/DrawHelpers.js#0004:ensureDepthTexture","exportIndex":4,"name":"ensureDepthTexture","kind":"function","signature":"ensureDepthTexture(device, current, width, height)","summary":"Ensure depth texture matches canvas size, recreating if needed."}
{"schemaVersion":1,"modulePath":"engine/reference/render/DrawHelpers.md","moduleTitle":"render/DrawHelpers","source":"engine/render/DrawHelpers.js","import":"/engine/render/DrawHelpers.js","sourceHash":"a837c689a0ff6f9491ec181c63ee8846f230d4ed09f920c090d5da9bd2930e03","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/DrawHelpers.js#0005:ensureSceneColorTexture","exportIndex":5,"name":"ensureSceneColorTexture","kind":"function","signature":"ensureSceneColorTexture(device, current, width, height, format = \"bgra8unorm\")","summary":"Ensure scene color texture matches canvas size, recreating if needed. Used for screen-space water refraction which needs to sample the rendered scene."}
{"schemaVersion":1,"modulePath":"engine/reference/render/DrawHelpers.md","moduleTitle":"render/DrawHelpers","source":"engine/render/DrawHelpers.js","import":"/engine/render/DrawHelpers.js","sourceHash":"a837c689a0ff6f9491ec181c63ee8846f230d4ed09f920c090d5da9bd2930e03","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/DrawHelpers.js#0006:buildViewProjData","exportIndex":6,"name":"buildViewProjData","kind":"function","signature":"buildViewProjData(projection, view, multiply, out = null)","summary":"Build viewProj matrix data for a frame buffer."}
{"schemaVersion":1,"modulePath":"engine/reference/render/DrawHelpers.md","moduleTitle":"render/DrawHelpers","source":"engine/render/DrawHelpers.js","import":"/engine/render/DrawHelpers.js","sourceHash":"a837c689a0ff6f9491ec181c63ee8846f230d4ed09f920c090d5da9bd2930e03","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/DrawHelpers.js#0007:renderParticleBillboards","exportIndex":7,"name":"renderParticleBillboards","kind":"function","signature":"renderParticleBillboards(renderPass, particles, options)","summary":"Render particle billboards or points in an existing render pass. Automatically detects point-list vs triangle-list topology."}
{"schemaVersion":1,"modulePath":"engine/reference/render/DrawHelpers.md","moduleTitle":"render/DrawHelpers","source":"engine/render/DrawHelpers.js","import":"/engine/render/DrawHelpers.js","sourceHash":"a837c689a0ff6f9491ec181c63ee8846f230d4ed09f920c090d5da9bd2930e03","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/DrawHelpers.js#0008:renderVolumetricSmoke","exportIndex":8,"name":"renderVolumetricSmoke","kind":"function","signature":"renderVolumetricSmoke(encoder, swapView, smoke, options)","summary":"Render volumetric smoke in a separate pass after the main render pass."}
{"schemaVersion":1,"modulePath":"engine/reference/render/DualModeRenderer.md","moduleTitle":"render/DualModeRenderer","source":"engine/render/DualModeRenderer.js","import":"/engine/render/DualModeRenderer.js","sourceHash":"249e97f6bd096c059590fe7479cb65102d5a21825f856879920e4c7983848abf","subsystem":"engine","recordType":"api-module","id":"module:engine/render/DualModeRenderer.js","title":"render/DualModeRenderer","summary":"Map velocity to color","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/render/DualModeRenderer.md","moduleTitle":"render/DualModeRenderer","source":"engine/render/DualModeRenderer.js","import":"/engine/render/DualModeRenderer.js","sourceHash":"249e97f6bd096c059590fe7479cb65102d5a21825f856879920e4c7983848abf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/DualModeRenderer.js#0000:ParticleRenderer","exportIndex":0,"name":"ParticleRenderer","kind":"class","signature":"class ParticleRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/DualModeRenderer.md","moduleTitle":"render/DualModeRenderer","source":"engine/render/DualModeRenderer.js","import":"/engine/render/DualModeRenderer.js","sourceHash":"249e97f6bd096c059590fe7479cb65102d5a21825f856879920e4c7983848abf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/DualModeRenderer.js#0001:DualModeRenderer","exportIndex":1,"name":"DualModeRenderer","kind":"class","signature":"class DualModeRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/DualModeRenderer.md","moduleTitle":"render/DualModeRenderer","source":"engine/render/DualModeRenderer.js","import":"/engine/render/DualModeRenderer.js","sourceHash":"249e97f6bd096c059590fe7479cb65102d5a21825f856879920e4c7983848abf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/DualModeRenderer.js#0002:velocityToColor","exportIndex":2,"name":"velocityToColor","kind":"function","signature":"velocityToColor(vx, vy, vz, scale = 0.1)","summary":"Map velocity to color"}
{"schemaVersion":1,"modulePath":"engine/reference/render/DualModeRenderer.md","moduleTitle":"render/DualModeRenderer","source":"engine/render/DualModeRenderer.js","import":"/engine/render/DualModeRenderer.js","sourceHash":"249e97f6bd096c059590fe7479cb65102d5a21825f856879920e4c7983848abf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/DualModeRenderer.js#0003:generateInstanceData","exportIndex":3,"name":"generateInstanceData","kind":"function","signature":"generateInstanceData(positions, velocities, particleSize = 1.0, colorScale = 0.1)","summary":"Generate particle instance data from positions and velocities"}
{"schemaVersion":1,"modulePath":"engine/reference/render/DualModeRenderer.md","moduleTitle":"render/DualModeRenderer","source":"engine/render/DualModeRenderer.js","import":"/engine/render/DualModeRenderer.js","sourceHash":"249e97f6bd096c059590fe7479cb65102d5a21825f856879920e4c7983848abf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/DualModeRenderer.js#0004:ViewMode","exportIndex":4,"name":"ViewMode","kind":"constant","signature":"ViewMode","summary":"View modes"}
{"schemaVersion":1,"modulePath":"engine/reference/render/DualModeRenderer.md","moduleTitle":"render/DualModeRenderer","source":"engine/render/DualModeRenderer.js","import":"/engine/render/DualModeRenderer.js","sourceHash":"249e97f6bd096c059590fe7479cb65102d5a21825f856879920e4c7983848abf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/DualModeRenderer.js#0005:LOD_THRESHOLDS","exportIndex":5,"name":"LOD_THRESHOLDS","kind":"constant","signature":"LOD_THRESHOLDS","summary":"LOD distance thresholds"}
{"schemaVersion":1,"modulePath":"engine/reference/render/DualModeRenderer.md","moduleTitle":"render/DualModeRenderer","source":"engine/render/DualModeRenderer.js","import":"/engine/render/DualModeRenderer.js","sourceHash":"249e97f6bd096c059590fe7479cb65102d5a21825f856879920e4c7983848abf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/DualModeRenderer.js#0006:ParticleStyle","exportIndex":6,"name":"ParticleStyle","kind":"constant","signature":"ParticleStyle","summary":"Particle rendering styles"}
{"schemaVersion":1,"modulePath":"engine/reference/render/IndexedClusterCuller.md","moduleTitle":"render/IndexedClusterCuller","source":"engine/render/IndexedClusterCuller.js","import":"/engine/render/IndexedClusterCuller.js","sourceHash":"2126dc39b04679ae9c5257b50ebe17ba7f49c4795dece7511da9abd0eafba530","subsystem":"engine","recordType":"api-module","id":"module:engine/render/IndexedClusterCuller.js","title":"render/IndexedClusterCuller","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/IndexedClusterCuller.md","moduleTitle":"render/IndexedClusterCuller","source":"engine/render/IndexedClusterCuller.js","import":"/engine/render/IndexedClusterCuller.js","sourceHash":"2126dc39b04679ae9c5257b50ebe17ba7f49c4795dece7511da9abd0eafba530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/IndexedClusterCuller.js#0000:IndexedClusterCuller","exportIndex":0,"name":"IndexedClusterCuller","kind":"class","signature":"class IndexedClusterCuller","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/LightManager.md","moduleTitle":"render/LightManager","source":"engine/render/LightManager.js","import":"/engine/render/LightManager.js","sourceHash":"0b711d14fcc20186a62f289f04b45b759686e1def5ef09dc902794ef1b19d9a0","subsystem":"engine","recordType":"api-module","id":"module:engine/render/LightManager.js","title":"render/LightManager","summary":"LightManager.js - Collects ECS Light entities and uploads to GPU Queries all entities with Light + Transform components each frame, builds a GPU uniform buffer, and exposes a bind group for renderers. GPU Layout (std140-aligned): vec3 ambientColor + f32 ambientIntensity        (16 bytes) vec3 sunDirection + f32 sunIntensity             (16 bytes) vec3 sunColor     + u32 lightCount               (16 bytes) f32  globalBrightness + f32 enableDiffuse + f32 enableSun + f32 _pad (16 bytes) Light[16] array                                   (16 * 48 = 768 bytes) Total: 64 + 768 = 832 bytes Each Light (48 bytes, 12 floats): vec3 position  + u32 lightType     (16 bytes) vec3 color     + f32 intensity     (16 bytes) vec3 direction + f32 range         (16 bytes)","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/LightManager.md","moduleTitle":"render/LightManager","source":"engine/render/LightManager.js","import":"/engine/render/LightManager.js","sourceHash":"0b711d14fcc20186a62f289f04b45b759686e1def5ef09dc902794ef1b19d9a0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/LightManager.js#0000:LightManager","exportIndex":0,"name":"LightManager","kind":"class","signature":"class LightManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/Mesh.md","moduleTitle":"render/Mesh","source":"engine/render/Mesh.js","import":"/engine/render/Mesh.js","sourceHash":"42b3b7969deae78f8c937a899d4378a09d127d695f6e683678cb40d01428cd9b","subsystem":"engine","recordType":"api-module","id":"module:engine/render/Mesh.js","title":"render/Mesh","summary":"","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/render/Mesh.md","moduleTitle":"render/Mesh","source":"engine/render/Mesh.js","import":"/engine/render/Mesh.js","sourceHash":"42b3b7969deae78f8c937a899d4378a09d127d695f6e683678cb40d01428cd9b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/Mesh.js#0000:computeBoundsFromInterleavedPositions","exportIndex":0,"name":"computeBoundsFromInterleavedPositions","kind":"function","signature":"computeBoundsFromInterleavedPositions(vertexData, strideFloats, positionOffsetFloats = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/Mesh.md","moduleTitle":"render/Mesh","source":"engine/render/Mesh.js","import":"/engine/render/Mesh.js","sourceHash":"42b3b7969deae78f8c937a899d4378a09d127d695f6e683678cb40d01428cd9b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/Mesh.js#0001:createMesh","exportIndex":1,"name":"createMesh","kind":"function","signature":"createMesh(device, description)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/Mesh.md","moduleTitle":"render/Mesh","source":"engine/render/Mesh.js","import":"/engine/render/Mesh.js","sourceHash":"42b3b7969deae78f8c937a899d4378a09d127d695f6e683678cb40d01428cd9b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/Mesh.js#0002:createScreenQuadMesh","exportIndex":2,"name":"createScreenQuadMesh","kind":"function","signature":"createScreenQuadMesh(device, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/Mesh.md","moduleTitle":"render/Mesh","source":"engine/render/Mesh.js","import":"/engine/render/Mesh.js","sourceHash":"42b3b7969deae78f8c937a899d4378a09d127d695f6e683678cb40d01428cd9b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/Mesh.js#0003:createSphereMesh","exportIndex":3,"name":"createSphereMesh","kind":"function","signature":"createSphereMesh(device, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/Mesh.md","moduleTitle":"render/Mesh","source":"engine/render/Mesh.js","import":"/engine/render/Mesh.js","sourceHash":"42b3b7969deae78f8c937a899d4378a09d127d695f6e683678cb40d01428cd9b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/Mesh.js#0004:getVertexBufferLayoutForMesh","exportIndex":4,"name":"getVertexBufferLayoutForMesh","kind":"function","signature":"getVertexBufferLayoutForMesh(mesh, slot = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/Mesh.md","moduleTitle":"render/Mesh","source":"engine/render/Mesh.js","import":"/engine/render/Mesh.js","sourceHash":"42b3b7969deae78f8c937a899d4378a09d127d695f6e683678cb40d01428cd9b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/Mesh.js#0005:createUnitCubeMesh","exportIndex":5,"name":"createUnitCubeMesh","kind":"function","signature":"createUnitCubeMesh(device, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/MinimapRenderer.md","moduleTitle":"render/MinimapRenderer","source":"engine/render/MinimapRenderer.js","import":"/engine/render/MinimapRenderer.js","sourceHash":"9a0eb47d8e4bba28bdaab04fdfe5cb0900fbfc1a791dd428e90b9001eb1f34b8","subsystem":"engine","recordType":"api-module","id":"module:engine/render/MinimapRenderer.js","title":"render/MinimapRenderer","summary":"MinimapRenderer.js - Top-Down Minimap System Renders a 2D top-down view of the terrain showing: - Terrain colors based on block types - Player position and direction indicator - Chunk boundaries (optional) - Points of interest markers","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/MinimapRenderer.md","moduleTitle":"render/MinimapRenderer","source":"engine/render/MinimapRenderer.js","import":"/engine/render/MinimapRenderer.js","sourceHash":"9a0eb47d8e4bba28bdaab04fdfe5cb0900fbfc1a791dd428e90b9001eb1f34b8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/MinimapRenderer.js#0000:MinimapRenderer","exportIndex":0,"name":"MinimapRenderer","kind":"class","signature":"class MinimapRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/PlanetPreviewRenderer.md","moduleTitle":"render/PlanetPreviewRenderer","source":"engine/render/PlanetPreviewRenderer.js","import":"/engine/render/PlanetPreviewRenderer.js","sourceHash":"af9bd935b64b683c814a4a98c69332e2254119a761acfaa620207968df29c3a0","subsystem":"engine","recordType":"api-module","id":"module:engine/render/PlanetPreviewRenderer.js","title":"render/PlanetPreviewRenderer","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/PlanetPreviewRenderer.md","moduleTitle":"render/PlanetPreviewRenderer","source":"engine/render/PlanetPreviewRenderer.js","import":"/engine/render/PlanetPreviewRenderer.js","sourceHash":"af9bd935b64b683c814a4a98c69332e2254119a761acfaa620207968df29c3a0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/PlanetPreviewRenderer.js#0000:PlanetPreviewRenderer","exportIndex":0,"name":"PlanetPreviewRenderer","kind":"class","signature":"class PlanetPreviewRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/RenderBundleManager.md","moduleTitle":"render/RenderBundleManager","source":"engine/render/RenderBundleManager.js","import":"/engine/render/RenderBundleManager.js","sourceHash":"4f1f60c3093f327f236cdfabea8524822be40eed1532c0ff705809dcdd067cef","subsystem":"engine","recordType":"api-module","id":"module:engine/render/RenderBundleManager.js","title":"render/RenderBundleManager","summary":"Render Bundle Manager - Pre-record draw commands for massive CPU overhead reduction Based on WebGPU best practices from Toji.dev Reduces draw call overhead by 10x for repeated rendering","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/RenderBundleManager.md","moduleTitle":"render/RenderBundleManager","source":"engine/render/RenderBundleManager.js","import":"/engine/render/RenderBundleManager.js","sourceHash":"4f1f60c3093f327f236cdfabea8524822be40eed1532c0ff705809dcdd067cef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/RenderBundleManager.js#0000:RenderBundleManager","exportIndex":0,"name":"RenderBundleManager","kind":"class","signature":"class RenderBundleManager","summary":"Render Bundle Manager - Pre-record draw commands for massive CPU overhead reduction Based on WebGPU best practices from Toji.dev Reduces draw call overhead by 10x for repeated rendering"}
{"schemaVersion":1,"modulePath":"engine/reference/render/RenderBundleManager.md","moduleTitle":"render/RenderBundleManager","source":"engine/render/RenderBundleManager.js","import":"/engine/render/RenderBundleManager.js","sourceHash":"4f1f60c3093f327f236cdfabea8524822be40eed1532c0ff705809dcdd067cef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/RenderBundleManager.js#0001:ParticleRenderBundleCache","exportIndex":1,"name":"ParticleRenderBundleCache","kind":"class","signature":"class ParticleRenderBundleCache","summary":"Particle-specific render bundle optimization Pre-records particle billboard rendering for massive performance gains"}
{"schemaVersion":1,"modulePath":"engine/reference/render/RenderingInit.md","moduleTitle":"render/RenderingInit","source":"engine/render/RenderingInit.js","import":"/engine/render/RenderingInit.js","sourceHash":"5dd02ba833d628e28dccb78e44b1529d935c643171296744aa5b0cd176d50176","subsystem":"engine","recordType":"api-module","id":"module:engine/render/RenderingInit.js","title":"render/RenderingInit","summary":"Initialize particle simulation and renderer.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/render/RenderingInit.md","moduleTitle":"render/RenderingInit","source":"engine/render/RenderingInit.js","import":"/engine/render/RenderingInit.js","sourceHash":"5dd02ba833d628e28dccb78e44b1529d935c643171296744aa5b0cd176d50176","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/RenderingInit.js#0000:initParticleSystem","exportIndex":0,"name":"initParticleSystem","kind":"function","signature":"async initParticleSystem(options)","summary":"Initialize particle simulation and renderer."}
{"schemaVersion":1,"modulePath":"engine/reference/render/RenderingInit.md","moduleTitle":"render/RenderingInit","source":"engine/render/RenderingInit.js","import":"/engine/render/RenderingInit.js","sourceHash":"5dd02ba833d628e28dccb78e44b1529d935c643171296744aa5b0cd176d50176","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/RenderingInit.js#0001:initSmokeRenderer","exportIndex":1,"name":"initSmokeRenderer","kind":"function","signature":"async initSmokeRenderer(options)","summary":"Initialize volumetric smoke renderer (fluid sim is lazy)."}
{"schemaVersion":1,"modulePath":"engine/reference/render/RenderingInit.md","moduleTitle":"render/RenderingInit","source":"engine/render/RenderingInit.js","import":"/engine/render/RenderingInit.js","sourceHash":"5dd02ba833d628e28dccb78e44b1529d935c643171296744aa5b0cd176d50176","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/RenderingInit.js#0002:initSimulationRendering","exportIndex":2,"name":"initSimulationRendering","kind":"function","signature":"async initSimulationRendering(options)","summary":"Initialize particle system and optionally smoke renderer."}
{"schemaVersion":1,"modulePath":"engine/reference/render/SceneRenderer.md","moduleTitle":"render/SceneRenderer","source":"engine/render/SceneRenderer.js","import":"/engine/render/SceneRenderer.js","sourceHash":"bb7b5116135e718adb1b29b66d517e6c6e00b9fb77a4dfcf90a98656c032b08b","subsystem":"engine","recordType":"api-module","id":"module:engine/render/SceneRenderer.js","title":"render/SceneRenderer","summary":"Render all spawned ECS entities.","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/render/SceneRenderer.md","moduleTitle":"render/SceneRenderer","source":"engine/render/SceneRenderer.js","import":"/engine/render/SceneRenderer.js","sourceHash":"bb7b5116135e718adb1b29b66d517e6c6e00b9fb77a4dfcf90a98656c032b08b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/SceneRenderer.js#0000:encodeEntitiesClusterCulling","exportIndex":0,"name":"encodeEntitiesClusterCulling","kind":"function","signature":"encodeEntitiesClusterCulling(options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/SceneRenderer.md","moduleTitle":"render/SceneRenderer","source":"engine/render/SceneRenderer.js","import":"/engine/render/SceneRenderer.js","sourceHash":"bb7b5116135e718adb1b29b66d517e6c6e00b9fb77a4dfcf90a98656c032b08b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/SceneRenderer.js#0001:renderEntities","exportIndex":1,"name":"renderEntities","kind":"function","signature":"renderEntities(options)","summary":"Render all spawned ECS entities."}
{"schemaVersion":1,"modulePath":"engine/reference/render/SceneRenderer.md","moduleTitle":"render/SceneRenderer","source":"engine/render/SceneRenderer.js","import":"/engine/render/SceneRenderer.js","sourceHash":"bb7b5116135e718adb1b29b66d517e6c6e00b9fb77a4dfcf90a98656c032b08b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/SceneRenderer.js#0002:renderRoom","exportIndex":2,"name":"renderRoom","kind":"function","signature":"renderRoom(options)","summary":"Render room geometry (floor, walls, ceiling)."}
{"schemaVersion":1,"modulePath":"engine/reference/render/SceneRenderer.md","moduleTitle":"render/SceneRenderer","source":"engine/render/SceneRenderer.js","import":"/engine/render/SceneRenderer.js","sourceHash":"bb7b5116135e718adb1b29b66d517e6c6e00b9fb77a4dfcf90a98656c032b08b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/SceneRenderer.js#0003:renderLightCube","exportIndex":3,"name":"renderLightCube","kind":"function","signature":"renderLightCube(options)","summary":"Render a light cube at a position."}
{"schemaVersion":1,"modulePath":"engine/reference/render/VolumetricRaymarch.md","moduleTitle":"render/VolumetricRaymarch","source":"engine/render/VolumetricRaymarch.js","import":"/engine/render/VolumetricRaymarch.js","sourceHash":"fbeef4ee7755edb8b16bee88dc09a0d5ff4bdd2020fba7e578fdf0e922347bb7","subsystem":"engine","recordType":"api-module","id":"module:engine/render/VolumetricRaymarch.js","title":"render/VolumetricRaymarch","summary":"Default raymarch parameters","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/render/VolumetricRaymarch.md","moduleTitle":"render/VolumetricRaymarch","source":"engine/render/VolumetricRaymarch.js","import":"/engine/render/VolumetricRaymarch.js","sourceHash":"fbeef4ee7755edb8b16bee88dc09a0d5ff4bdd2020fba7e578fdf0e922347bb7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/VolumetricRaymarch.js#0000:VolumetricRaymarcher","exportIndex":0,"name":"VolumetricRaymarcher","kind":"class","signature":"class VolumetricRaymarcher","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/VolumetricRaymarch.md","moduleTitle":"render/VolumetricRaymarch","source":"engine/render/VolumetricRaymarch.js","import":"/engine/render/VolumetricRaymarch.js","sourceHash":"fbeef4ee7755edb8b16bee88dc09a0d5ff4bdd2020fba7e578fdf0e922347bb7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/VolumetricRaymarch.js#0001:DEFAULT_PARAMS","exportIndex":1,"name":"DEFAULT_PARAMS","kind":"constant","signature":"DEFAULT_PARAMS","summary":"Default raymarch parameters"}
{"schemaVersion":1,"modulePath":"engine/reference/render/VolumetricRaymarch.md","moduleTitle":"render/VolumetricRaymarch","source":"engine/render/VolumetricRaymarch.js","import":"/engine/render/VolumetricRaymarch.js","sourceHash":"fbeef4ee7755edb8b16bee88dc09a0d5ff4bdd2020fba7e578fdf0e922347bb7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/VolumetricRaymarch.js#0002:RenderMode","exportIndex":2,"name":"RenderMode","kind":"constant","signature":"RenderMode","summary":"Render modes"}
{"schemaVersion":1,"modulePath":"engine/reference/render/World3DPreviewRenderer.md","moduleTitle":"render/World3DPreviewRenderer","source":"engine/render/World3DPreviewRenderer.js","import":"/engine/render/World3DPreviewRenderer.js","sourceHash":"601259fe329aee026b0c6691c1538476e7ae4e65793fe21b18b5512dbd29f82f","subsystem":"engine","recordType":"api-module","id":"module:engine/render/World3DPreviewRenderer.js","title":"render/World3DPreviewRenderer","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/World3DPreviewRenderer.md","moduleTitle":"render/World3DPreviewRenderer","source":"engine/render/World3DPreviewRenderer.js","import":"/engine/render/World3DPreviewRenderer.js","sourceHash":"601259fe329aee026b0c6691c1538476e7ae4e65793fe21b18b5512dbd29f82f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/World3DPreviewRenderer.js#0000:World3DPreviewRenderer","exportIndex":0,"name":"World3DPreviewRenderer","kind":"class","signature":"class World3DPreviewRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/WorldParticleRenderer.md","moduleTitle":"render/WorldParticleRenderer","source":"engine/render/WorldParticleRenderer.js","import":"/engine/render/WorldParticleRenderer.js","sourceHash":"216e1d7887bc14006447f1139b73447e4e08cfdbd988d8170158de44f2d6bf77","subsystem":"engine","recordType":"api-module","id":"module:engine/render/WorldParticleRenderer.js","title":"render/WorldParticleRenderer","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/WorldParticleRenderer.md","moduleTitle":"render/WorldParticleRenderer","source":"engine/render/WorldParticleRenderer.js","import":"/engine/render/WorldParticleRenderer.js","sourceHash":"216e1d7887bc14006447f1139b73447e4e08cfdbd988d8170158de44f2d6bf77","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/WorldParticleRenderer.js#0000:WorldParticleRenderer","exportIndex":0,"name":"WorldParticleRenderer","kind":"class","signature":"class WorldParticleRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/AerialPerspective.md","moduleTitle":"render/atmosphere/AerialPerspective","source":"engine/render/atmosphere/AerialPerspective.js","import":"/engine/render/atmosphere/AerialPerspective.js","sourceHash":"92cf90646ed56b80f880d6d553df45a6577d1461939e82717ec85afe14b094af","subsystem":"engine","recordType":"api-module","id":"module:engine/render/atmosphere/AerialPerspective.js","title":"render/atmosphere/AerialPerspective","summary":"AerialPerspective - Distance-based color shifting","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/AerialPerspective.md","moduleTitle":"render/atmosphere/AerialPerspective","source":"engine/render/atmosphere/AerialPerspective.js","import":"/engine/render/atmosphere/AerialPerspective.js","sourceHash":"92cf90646ed56b80f880d6d553df45a6577d1461939e82717ec85afe14b094af","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/AerialPerspective.js#0000:AerialPerspective","exportIndex":0,"name":"AerialPerspective","kind":"class","signature":"class AerialPerspective","summary":"AerialPerspective - Distance-based color shifting"}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/AerialPerspective.md","moduleTitle":"render/atmosphere/AerialPerspective","source":"engine/render/atmosphere/AerialPerspective.js","import":"/engine/render/atmosphere/AerialPerspective.js","sourceHash":"92cf90646ed56b80f880d6d553df45a6577d1461939e82717ec85afe14b094af","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/AerialPerspective.js#0001:AERIAL_PERSPECTIVE_WGSL","exportIndex":1,"name":"AERIAL_PERSPECTIVE_WGSL","kind":"constant","signature":"AERIAL_PERSPECTIVE_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/AtmosphereUtils.md","moduleTitle":"render/atmosphere/AtmosphereUtils","source":"engine/render/atmosphere/AtmosphereUtils.js","import":"/engine/render/atmosphere/AtmosphereUtils.js","sourceHash":"823b09a986e3069d324027bd91e45e5ee6cc9a79251524d84d02f0e4b42c29d5","subsystem":"engine","recordType":"api-module","id":"module:engine/render/atmosphere/AtmosphereUtils.js","title":"render/atmosphere/AtmosphereUtils","summary":"Calculate recommended Mie asymmetry based on visibility","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/AtmosphereUtils.md","moduleTitle":"render/atmosphere/AtmosphereUtils","source":"engine/render/atmosphere/AtmosphereUtils.js","import":"/engine/render/atmosphere/AtmosphereUtils.js","sourceHash":"823b09a986e3069d324027bd91e45e5ee6cc9a79251524d84d02f0e4b42c29d5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/AtmosphereUtils.js#0000:getMieAsymmetryFromVisibility","exportIndex":0,"name":"getMieAsymmetryFromVisibility","kind":"function","signature":"getMieAsymmetryFromVisibility(visibility)","summary":"Calculate recommended Mie asymmetry based on visibility"}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/AtmosphereUtils.md","moduleTitle":"render/atmosphere/AtmosphereUtils","source":"engine/render/atmosphere/AtmosphereUtils.js","import":"/engine/render/atmosphere/AtmosphereUtils.js","sourceHash":"823b09a986e3069d324027bd91e45e5ee6cc9a79251524d84d02f0e4b42c29d5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/AtmosphereUtils.js#0001:getAdaptiveStepMultiplier","exportIndex":1,"name":"getAdaptiveStepMultiplier","kind":"function","signature":"getAdaptiveStepMultiplier(opticalDepth)","summary":"Get step size recommendation based on optical depth"}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/AtmosphereUtils.md","moduleTitle":"render/atmosphere/AtmosphereUtils","source":"engine/render/atmosphere/AtmosphereUtils.js","import":"/engine/render/atmosphere/AtmosphereUtils.js","sourceHash":"823b09a986e3069d324027bd91e45e5ee6cc9a79251524d84d02f0e4b42c29d5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/AtmosphereUtils.js#0002:ATMOSPHERE_UTILS_WGSL","exportIndex":2,"name":"ATMOSPHERE_UTILS_WGSL","kind":"constant","signature":"ATMOSPHERE_UTILS_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/AtmosphereUtils.md","moduleTitle":"render/atmosphere/AtmosphereUtils","source":"engine/render/atmosphere/AtmosphereUtils.js","import":"/engine/render/atmosphere/AtmosphereUtils.js","sourceHash":"823b09a986e3069d324027bd91e45e5ee6cc9a79251524d84d02f0e4b42c29d5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/AtmosphereUtils.js#0003:MIE_ASYMMETRY","exportIndex":3,"name":"MIE_ASYMMETRY","kind":"constant","signature":"MIE_ASYMMETRY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/AtmosphereUtils.md","moduleTitle":"render/atmosphere/AtmosphereUtils","source":"engine/render/atmosphere/AtmosphereUtils.js","import":"/engine/render/atmosphere/AtmosphereUtils.js","sourceHash":"823b09a986e3069d324027bd91e45e5ee6cc9a79251524d84d02f0e4b42c29d5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/AtmosphereUtils.js#0004:ADAPTIVE_STEPS","exportIndex":4,"name":"ADAPTIVE_STEPS","kind":"constant","signature":"ADAPTIVE_STEPS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/AtmosphericScattering.md","moduleTitle":"render/atmosphere/AtmosphericScattering","source":"engine/render/atmosphere/AtmosphericScattering.js","import":"/engine/render/atmosphere/AtmosphericScattering.js","sourceHash":"936770afae28b4ea376ddf39ccbf2404dd6ffb955ba5d5098f1f8e6b736d80bf","subsystem":"engine","recordType":"api-module","id":"module:engine/render/atmosphere/AtmosphericScattering.js","title":"render/atmosphere/AtmosphericScattering","summary":"AtmosphericScattering - Physical atmosphere simulation","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/AtmosphericScattering.md","moduleTitle":"render/atmosphere/AtmosphericScattering","source":"engine/render/atmosphere/AtmosphericScattering.js","import":"/engine/render/atmosphere/AtmosphericScattering.js","sourceHash":"936770afae28b4ea376ddf39ccbf2404dd6ffb955ba5d5098f1f8e6b736d80bf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/AtmosphericScattering.js#0000:AtmosphericScattering","exportIndex":0,"name":"AtmosphericScattering","kind":"class","signature":"class AtmosphericScattering","summary":"AtmosphericScattering - Physical atmosphere simulation"}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/AtmosphericScattering.md","moduleTitle":"render/atmosphere/AtmosphericScattering","source":"engine/render/atmosphere/AtmosphericScattering.js","import":"/engine/render/atmosphere/AtmosphericScattering.js","sourceHash":"936770afae28b4ea376ddf39ccbf2404dd6ffb955ba5d5098f1f8e6b736d80bf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/AtmosphericScattering.js#0001:ATMOSPHERIC_SCATTERING_WGSL","exportIndex":1,"name":"ATMOSPHERIC_SCATTERING_WGSL","kind":"constant","signature":"ATMOSPHERIC_SCATTERING_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/AuroraPass.md","moduleTitle":"render/atmosphere/AuroraPass","source":"engine/render/atmosphere/AuroraPass.js","import":"/engine/render/atmosphere/AuroraPass.js","sourceHash":"b7b6b31b380933e5da816fb720f5b8ffe19b6972545b12054a2a1de77a8bec49","subsystem":"engine","recordType":"api-module","id":"module:engine/render/atmosphere/AuroraPass.js","title":"render/atmosphere/AuroraPass","summary":"AuroraPass - Volumetric aurora rendering pass","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/AuroraPass.md","moduleTitle":"render/atmosphere/AuroraPass","source":"engine/render/atmosphere/AuroraPass.js","import":"/engine/render/atmosphere/AuroraPass.js","sourceHash":"b7b6b31b380933e5da816fb720f5b8ffe19b6972545b12054a2a1de77a8bec49","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/AuroraPass.js#0000:AuroraPass","exportIndex":0,"name":"AuroraPass","kind":"class","signature":"class AuroraPass","summary":"AuroraPass - Volumetric aurora rendering pass"}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/AuroraPass.md","moduleTitle":"render/atmosphere/AuroraPass","source":"engine/render/atmosphere/AuroraPass.js","import":"/engine/render/atmosphere/AuroraPass.js","sourceHash":"b7b6b31b380933e5da816fb720f5b8ffe19b6972545b12054a2a1de77a8bec49","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/AuroraPass.js#0001:AURORA_WGSL","exportIndex":1,"name":"AURORA_WGSL","kind":"constant","signature":"AURORA_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/BlueNoise.md","moduleTitle":"render/atmosphere/BlueNoise","source":"engine/render/atmosphere/BlueNoise.js","import":"/engine/render/atmosphere/BlueNoise.js","sourceHash":"8985836a5b825213bf6bfcfa1bd6f66dd4abf67dc4a438ff17d4adade01a2587","subsystem":"engine","recordType":"api-module","id":"module:engine/render/atmosphere/BlueNoise.js","title":"render/atmosphere/BlueNoise","summary":"BlueNoiseTexture - GPU blue noise texture manager","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/BlueNoise.md","moduleTitle":"render/atmosphere/BlueNoise","source":"engine/render/atmosphere/BlueNoise.js","import":"/engine/render/atmosphere/BlueNoise.js","sourceHash":"8985836a5b825213bf6bfcfa1bd6f66dd4abf67dc4a438ff17d4adade01a2587","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/BlueNoise.js#0000:BlueNoiseTexture","exportIndex":0,"name":"BlueNoiseTexture","kind":"class","signature":"class BlueNoiseTexture","summary":"BlueNoiseTexture - GPU blue noise texture manager"}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/BlueNoise.md","moduleTitle":"render/atmosphere/BlueNoise","source":"engine/render/atmosphere/BlueNoise.js","import":"/engine/render/atmosphere/BlueNoise.js","sourceHash":"8985836a5b825213bf6bfcfa1bd6f66dd4abf67dc4a438ff17d4adade01a2587","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/BlueNoise.js#0001:BLUE_NOISE_WGSL","exportIndex":1,"name":"BLUE_NOISE_WGSL","kind":"constant","signature":"BLUE_NOISE_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/CelestialMoon.md","moduleTitle":"render/atmosphere/CelestialMoon","source":"engine/render/atmosphere/CelestialMoon.js","import":"/engine/render/atmosphere/CelestialMoon.js","sourceHash":"1ce6fe609ee24fafcc48ec2f4c2825850bdabe40bea8bacb5d932a5388da311e","subsystem":"engine","recordType":"api-module","id":"module:engine/render/atmosphere/CelestialMoon.js","title":"render/atmosphere/CelestialMoon","summary":"Moon class for orbital mechanics and state management","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/CelestialMoon.md","moduleTitle":"render/atmosphere/CelestialMoon","source":"engine/render/atmosphere/CelestialMoon.js","import":"/engine/render/atmosphere/CelestialMoon.js","sourceHash":"1ce6fe609ee24fafcc48ec2f4c2825850bdabe40bea8bacb5d932a5388da311e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/CelestialMoon.js#0000:Moon","exportIndex":0,"name":"Moon","kind":"class","signature":"class Moon","summary":"Moon class for orbital mechanics and state management"}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/CelestialMoon.md","moduleTitle":"render/atmosphere/CelestialMoon","source":"engine/render/atmosphere/CelestialMoon.js","import":"/engine/render/atmosphere/CelestialMoon.js","sourceHash":"1ce6fe609ee24fafcc48ec2f4c2825850bdabe40bea8bacb5d932a5388da311e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/CelestialMoon.js#0001:MoonSystem","exportIndex":1,"name":"MoonSystem","kind":"class","signature":"class MoonSystem","summary":"MoonSystem - Manages multiple moons"}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/CelestialMoon.md","moduleTitle":"render/atmosphere/CelestialMoon","source":"engine/render/atmosphere/CelestialMoon.js","import":"/engine/render/atmosphere/CelestialMoon.js","sourceHash":"1ce6fe609ee24fafcc48ec2f4c2825850bdabe40bea8bacb5d932a5388da311e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/CelestialMoon.js#0002:MoonType","exportIndex":2,"name":"MoonType","kind":"constant","signature":"MoonType","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/CelestialMoon.md","moduleTitle":"render/atmosphere/CelestialMoon","source":"engine/render/atmosphere/CelestialMoon.js","import":"/engine/render/atmosphere/CelestialMoon.js","sourceHash":"1ce6fe609ee24fafcc48ec2f4c2825850bdabe40bea8bacb5d932a5388da311e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/CelestialMoon.js#0003:MoonDefaults","exportIndex":3,"name":"MoonDefaults","kind":"constant","signature":"MoonDefaults","summary":"Default configurations for different moon types"}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/CelestialMoon.md","moduleTitle":"render/atmosphere/CelestialMoon","source":"engine/render/atmosphere/CelestialMoon.js","import":"/engine/render/atmosphere/CelestialMoon.js","sourceHash":"1ce6fe609ee24fafcc48ec2f4c2825850bdabe40bea8bacb5d932a5388da311e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/CelestialMoon.js#0004:MoonPresets","exportIndex":4,"name":"MoonPresets","kind":"constant","signature":"MoonPresets","summary":"Preset moon configurations for the world"}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/CelestialMoon.md","moduleTitle":"render/atmosphere/CelestialMoon","source":"engine/render/atmosphere/CelestialMoon.js","import":"/engine/render/atmosphere/CelestialMoon.js","sourceHash":"1ce6fe609ee24fafcc48ec2f4c2825850bdabe40bea8bacb5d932a5388da311e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/CelestialMoon.js#0005:MoonWGSL","exportIndex":5,"name":"MoonWGSL","kind":"constant","signature":"MoonWGSL","summary":"WGSL shader code for moon rendering"}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/CelestialStars.md","moduleTitle":"render/atmosphere/CelestialStars","source":"engine/render/atmosphere/CelestialStars.js","import":"/engine/render/atmosphere/CelestialStars.js","sourceHash":"f31ba9fa7337306109486c828375ad5c22905af5b4f9214cdaf9c13a62f3f54d","subsystem":"engine","recordType":"api-module","id":"module:engine/render/atmosphere/CelestialStars.js","title":"render/atmosphere/CelestialStars","summary":"StarField class for managing star rendering","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/CelestialStars.md","moduleTitle":"render/atmosphere/CelestialStars","source":"engine/render/atmosphere/CelestialStars.js","import":"/engine/render/atmosphere/CelestialStars.js","sourceHash":"f31ba9fa7337306109486c828375ad5c22905af5b4f9214cdaf9c13a62f3f54d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/CelestialStars.js#0000:StarField","exportIndex":0,"name":"StarField","kind":"class","signature":"class StarField","summary":"StarField class for managing star rendering"}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/CelestialStars.md","moduleTitle":"render/atmosphere/CelestialStars","source":"engine/render/atmosphere/CelestialStars.js","import":"/engine/render/atmosphere/CelestialStars.js","sourceHash":"f31ba9fa7337306109486c828375ad5c22905af5b4f9214cdaf9c13a62f3f54d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/CelestialStars.js#0001:StarSystem","exportIndex":1,"name":"StarSystem","kind":"class","signature":"class StarSystem","summary":"StarSystem - Complete star management system"}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/CelestialStars.md","moduleTitle":"render/atmosphere/CelestialStars","source":"engine/render/atmosphere/CelestialStars.js","import":"/engine/render/atmosphere/CelestialStars.js","sourceHash":"f31ba9fa7337306109486c828375ad5c22905af5b4f9214cdaf9c13a62f3f54d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/CelestialStars.js#0002:StarLayer","exportIndex":2,"name":"StarLayer","kind":"constant","signature":"StarLayer","summary":"Star layer types - for different visual effects"}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/CelestialStars.md","moduleTitle":"render/atmosphere/CelestialStars","source":"engine/render/atmosphere/CelestialStars.js","import":"/engine/render/atmosphere/CelestialStars.js","sourceHash":"f31ba9fa7337306109486c828375ad5c22905af5b4f9214cdaf9c13a62f3f54d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/CelestialStars.js#0003:StarDefaults","exportIndex":3,"name":"StarDefaults","kind":"constant","signature":"StarDefaults","summary":"Star field configuration defaults"}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/CelestialStars.md","moduleTitle":"render/atmosphere/CelestialStars","source":"engine/render/atmosphere/CelestialStars.js","import":"/engine/render/atmosphere/CelestialStars.js","sourceHash":"f31ba9fa7337306109486c828375ad5c22905af5b4f9214cdaf9c13a62f3f54d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/CelestialStars.js#0004:StarLayerPresets","exportIndex":4,"name":"StarLayerPresets","kind":"constant","signature":"StarLayerPresets","summary":"Star layer presets"}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/CelestialStars.md","moduleTitle":"render/atmosphere/CelestialStars","source":"engine/render/atmosphere/CelestialStars.js","import":"/engine/render/atmosphere/CelestialStars.js","sourceHash":"f31ba9fa7337306109486c828375ad5c22905af5b4f9214cdaf9c13a62f3f54d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/CelestialStars.js#0005:Constellations","exportIndex":5,"name":"Constellations","kind":"constant","signature":"Constellations","summary":"Constellation definitions (named star patterns)"}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/CelestialStars.md","moduleTitle":"render/atmosphere/CelestialStars","source":"engine/render/atmosphere/CelestialStars.js","import":"/engine/render/atmosphere/CelestialStars.js","sourceHash":"f31ba9fa7337306109486c828375ad5c22905af5b4f9214cdaf9c13a62f3f54d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/CelestialStars.js#0006:StarsWGSL","exportIndex":6,"name":"StarsWGSL","kind":"constant","signature":"StarsWGSL","summary":"WGSL shader code for star rendering"}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/CelestialSun.md","moduleTitle":"render/atmosphere/CelestialSun","source":"engine/render/atmosphere/CelestialSun.js","import":"/engine/render/atmosphere/CelestialSun.js","sourceHash":"caa37f8fe8d521f2118e9f8ef6e5b3d15eae879839cfac499cf1a56f4ef329b0","subsystem":"engine","recordType":"api-module","id":"module:engine/render/atmosphere/CelestialSun.js","title":"render/atmosphere/CelestialSun","summary":"Sun class for orbital mechanics and state management","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/CelestialSun.md","moduleTitle":"render/atmosphere/CelestialSun","source":"engine/render/atmosphere/CelestialSun.js","import":"/engine/render/atmosphere/CelestialSun.js","sourceHash":"caa37f8fe8d521f2118e9f8ef6e5b3d15eae879839cfac499cf1a56f4ef329b0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/CelestialSun.js#0000:Sun","exportIndex":0,"name":"Sun","kind":"class","signature":"class Sun","summary":"Sun class for orbital mechanics and state management"}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/CelestialSun.md","moduleTitle":"render/atmosphere/CelestialSun","source":"engine/render/atmosphere/CelestialSun.js","import":"/engine/render/atmosphere/CelestialSun.js","sourceHash":"caa37f8fe8d521f2118e9f8ef6e5b3d15eae879839cfac499cf1a56f4ef329b0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/CelestialSun.js#0001:SunDefaults","exportIndex":1,"name":"SunDefaults","kind":"constant","signature":"SunDefaults","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/CelestialSun.md","moduleTitle":"render/atmosphere/CelestialSun","source":"engine/render/atmosphere/CelestialSun.js","import":"/engine/render/atmosphere/CelestialSun.js","sourceHash":"caa37f8fe8d521f2118e9f8ef6e5b3d15eae879839cfac499cf1a56f4ef329b0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/CelestialSun.js#0002:SunWGSL","exportIndex":2,"name":"SunWGSL","kind":"constant","signature":"SunWGSL","summary":"WGSL shader code for sun rendering"}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/DistanceFog.md","moduleTitle":"render/atmosphere/DistanceFog","source":"engine/render/atmosphere/DistanceFog.js","import":"/engine/render/atmosphere/DistanceFog.js","sourceHash":"b2d65a455568a53ba9c0191cb8db20b1be07dc3859f09e8f4397b911fcaef537","subsystem":"engine","recordType":"api-module","id":"module:engine/render/atmosphere/DistanceFog.js","title":"render/atmosphere/DistanceFog","summary":"DistanceFog - Distance-based fog system","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/DistanceFog.md","moduleTitle":"render/atmosphere/DistanceFog","source":"engine/render/atmosphere/DistanceFog.js","import":"/engine/render/atmosphere/DistanceFog.js","sourceHash":"b2d65a455568a53ba9c0191cb8db20b1be07dc3859f09e8f4397b911fcaef537","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/DistanceFog.js#0000:DistanceFog","exportIndex":0,"name":"DistanceFog","kind":"class","signature":"class DistanceFog","summary":"DistanceFog - Distance-based fog system"}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/DistanceFog.md","moduleTitle":"render/atmosphere/DistanceFog","source":"engine/render/atmosphere/DistanceFog.js","import":"/engine/render/atmosphere/DistanceFog.js","sourceHash":"b2d65a455568a53ba9c0191cb8db20b1be07dc3859f09e8f4397b911fcaef537","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/DistanceFog.js#0001:FOG_TYPE","exportIndex":1,"name":"FOG_TYPE","kind":"constant","signature":"FOG_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/DistanceFog.md","moduleTitle":"render/atmosphere/DistanceFog","source":"engine/render/atmosphere/DistanceFog.js","import":"/engine/render/atmosphere/DistanceFog.js","sourceHash":"b2d65a455568a53ba9c0191cb8db20b1be07dc3859f09e8f4397b911fcaef537","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/DistanceFog.js#0002:FOG_WGSL","exportIndex":2,"name":"FOG_WGSL","kind":"constant","signature":"FOG_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/HillaireLUT.md","moduleTitle":"render/atmosphere/HillaireLUT","source":"engine/render/atmosphere/HillaireLUT.js","import":"/engine/render/atmosphere/HillaireLUT.js","sourceHash":"010aa9d03b1a6a7a68f2a08189bb55eefcc55f09f7fb2082a4eb6d29971bb26c","subsystem":"engine","recordType":"api-module","id":"module:engine/render/atmosphere/HillaireLUT.js","title":"render/atmosphere/HillaireLUT","summary":"HillaireLUT - Main class for Hillaire-style atmospheric LUT system","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/HillaireLUT.md","moduleTitle":"render/atmosphere/HillaireLUT","source":"engine/render/atmosphere/HillaireLUT.js","import":"/engine/render/atmosphere/HillaireLUT.js","sourceHash":"010aa9d03b1a6a7a68f2a08189bb55eefcc55f09f7fb2082a4eb6d29971bb26c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/HillaireLUT.js#0000:HillaireLUT","exportIndex":0,"name":"HillaireLUT","kind":"class","signature":"class HillaireLUT","summary":"HillaireLUT - Main class for Hillaire-style atmospheric LUT system"}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/HillaireLUT.md","moduleTitle":"render/atmosphere/HillaireLUT","source":"engine/render/atmosphere/HillaireLUT.js","import":"/engine/render/atmosphere/HillaireLUT.js","sourceHash":"010aa9d03b1a6a7a68f2a08189bb55eefcc55f09f7fb2082a4eb6d29971bb26c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/HillaireLUT.js#0001:TRANSMITTANCE_COMPUTE_WGSL","exportIndex":1,"name":"TRANSMITTANCE_COMPUTE_WGSL","kind":"constant","signature":"TRANSMITTANCE_COMPUTE_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/HillaireLUT.md","moduleTitle":"render/atmosphere/HillaireLUT","source":"engine/render/atmosphere/HillaireLUT.js","import":"/engine/render/atmosphere/HillaireLUT.js","sourceHash":"010aa9d03b1a6a7a68f2a08189bb55eefcc55f09f7fb2082a4eb6d29971bb26c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/HillaireLUT.js#0002:MULTISCATTER_COMPUTE_WGSL","exportIndex":2,"name":"MULTISCATTER_COMPUTE_WGSL","kind":"constant","signature":"MULTISCATTER_COMPUTE_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/HillaireLUT.md","moduleTitle":"render/atmosphere/HillaireLUT","source":"engine/render/atmosphere/HillaireLUT.js","import":"/engine/render/atmosphere/HillaireLUT.js","sourceHash":"010aa9d03b1a6a7a68f2a08189bb55eefcc55f09f7fb2082a4eb6d29971bb26c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/HillaireLUT.js#0003:SKYVIEW_COMPUTE_WGSL","exportIndex":3,"name":"SKYVIEW_COMPUTE_WGSL","kind":"constant","signature":"SKYVIEW_COMPUTE_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/HillaireLUT.md","moduleTitle":"render/atmosphere/HillaireLUT","source":"engine/render/atmosphere/HillaireLUT.js","import":"/engine/render/atmosphere/HillaireLUT.js","sourceHash":"010aa9d03b1a6a7a68f2a08189bb55eefcc55f09f7fb2082a4eb6d29971bb26c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/HillaireLUT.js#0004:AERIAL_PERSPECTIVE_COMPUTE_WGSL","exportIndex":4,"name":"AERIAL_PERSPECTIVE_COMPUTE_WGSL","kind":"constant","signature":"AERIAL_PERSPECTIVE_COMPUTE_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/PlanetCurvature.md","moduleTitle":"render/atmosphere/PlanetCurvature","source":"engine/render/atmosphere/PlanetCurvature.js","import":"/engine/render/atmosphere/PlanetCurvature.js","sourceHash":"e5bcf52a5f2edd1a46d16e17d25299ff2c339d7daafc0fb06cc6e463940d4efe","subsystem":"engine","recordType":"api-module","id":"module:engine/render/atmosphere/PlanetCurvature.js","title":"render/atmosphere/PlanetCurvature","summary":"PlanetCurvature - Planetary curvature simulation","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/PlanetCurvature.md","moduleTitle":"render/atmosphere/PlanetCurvature","source":"engine/render/atmosphere/PlanetCurvature.js","import":"/engine/render/atmosphere/PlanetCurvature.js","sourceHash":"e5bcf52a5f2edd1a46d16e17d25299ff2c339d7daafc0fb06cc6e463940d4efe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/PlanetCurvature.js#0000:PlanetCurvature","exportIndex":0,"name":"PlanetCurvature","kind":"class","signature":"class PlanetCurvature","summary":"PlanetCurvature - Planetary curvature simulation"}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/PlanetCurvature.md","moduleTitle":"render/atmosphere/PlanetCurvature","source":"engine/render/atmosphere/PlanetCurvature.js","import":"/engine/render/atmosphere/PlanetCurvature.js","sourceHash":"e5bcf52a5f2edd1a46d16e17d25299ff2c339d7daafc0fb06cc6e463940d4efe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/PlanetCurvature.js#0001:PLANET_CURVATURE_WGSL","exportIndex":1,"name":"PLANET_CURVATURE_WGSL","kind":"constant","signature":"PLANET_CURVATURE_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/ProceduralSky.md","moduleTitle":"render/atmosphere/ProceduralSky","source":"engine/render/atmosphere/ProceduralSky.js","import":"/engine/render/atmosphere/ProceduralSky.js","sourceHash":"78ee2a7008c0754c4222462f17730896a662190bb84b812dfb1847023a3b5263","subsystem":"engine","recordType":"api-module","id":"module:engine/render/atmosphere/ProceduralSky.js","title":"render/atmosphere/ProceduralSky","summary":"ProceduralSky - Complete sky system","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/ProceduralSky.md","moduleTitle":"render/atmosphere/ProceduralSky","source":"engine/render/atmosphere/ProceduralSky.js","import":"/engine/render/atmosphere/ProceduralSky.js","sourceHash":"78ee2a7008c0754c4222462f17730896a662190bb84b812dfb1847023a3b5263","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/ProceduralSky.js#0000:ProceduralSky","exportIndex":0,"name":"ProceduralSky","kind":"class","signature":"class ProceduralSky","summary":"ProceduralSky - Complete sky system"}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/ProceduralSky.md","moduleTitle":"render/atmosphere/ProceduralSky","source":"engine/render/atmosphere/ProceduralSky.js","import":"/engine/render/atmosphere/ProceduralSky.js","sourceHash":"78ee2a7008c0754c4222462f17730896a662190bb84b812dfb1847023a3b5263","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/ProceduralSky.js#0001:SUN_PHASE","exportIndex":1,"name":"SUN_PHASE","kind":"constant","signature":"SUN_PHASE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/ProceduralSky.md","moduleTitle":"render/atmosphere/ProceduralSky","source":"engine/render/atmosphere/ProceduralSky.js","import":"/engine/render/atmosphere/ProceduralSky.js","sourceHash":"78ee2a7008c0754c4222462f17730896a662190bb84b812dfb1847023a3b5263","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/ProceduralSky.js#0002:PROCEDURAL_SKY_WGSL","exportIndex":2,"name":"PROCEDURAL_SKY_WGSL","kind":"constant","signature":"PROCEDURAL_SKY_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/Space.md","moduleTitle":"render/atmosphere/Space","source":"engine/render/atmosphere/Space.js","import":"/engine/render/atmosphere/Space.js","sourceHash":"6cbed31af4f7286decf8ab612e220dbc2c455955f907729dbfd2338b0d0a85d6","subsystem":"engine","recordType":"api-module","id":"module:engine/render/atmosphere/Space.js","title":"render/atmosphere/Space","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/Space.md","moduleTitle":"render/atmosphere/Space","source":"engine/render/atmosphere/Space.js","import":"/engine/render/atmosphere/Space.js","sourceHash":"6cbed31af4f7286decf8ab612e220dbc2c455955f907729dbfd2338b0d0a85d6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/Space.js#0000:SpaceWGSL","exportIndex":0,"name":"SpaceWGSL","kind":"constant","signature":"SpaceWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/SpectralWeather.md","moduleTitle":"render/atmosphere/SpectralWeather","source":"engine/render/atmosphere/SpectralWeather.js","import":"/engine/render/atmosphere/SpectralWeather.js","sourceHash":"82739323ab36b7d0ac4b5af6fc35e00944607096c710ad4c95043a806f892bac","subsystem":"engine","recordType":"api-module","id":"module:engine/render/atmosphere/SpectralWeather.js","title":"render/atmosphere/SpectralWeather","summary":"SpectralWeather - T21 spectral weather simulation","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/SpectralWeather.md","moduleTitle":"render/atmosphere/SpectralWeather","source":"engine/render/atmosphere/SpectralWeather.js","import":"/engine/render/atmosphere/SpectralWeather.js","sourceHash":"82739323ab36b7d0ac4b5af6fc35e00944607096c710ad4c95043a806f892bac","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/SpectralWeather.js#0000:SpectralWeather","exportIndex":0,"name":"SpectralWeather","kind":"class","signature":"class SpectralWeather","summary":"SpectralWeather - T21 spectral weather simulation"}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/SpectralWeather.md","moduleTitle":"render/atmosphere/SpectralWeather","source":"engine/render/atmosphere/SpectralWeather.js","import":"/engine/render/atmosphere/SpectralWeather.js","sourceHash":"82739323ab36b7d0ac4b5af6fc35e00944607096c710ad4c95043a806f892bac","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/SpectralWeather.js#0001:SPECTRAL_WEATHER_WGSL","exportIndex":1,"name":"SPECTRAL_WEATHER_WGSL","kind":"constant","signature":"SPECTRAL_WEATHER_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/TemporalAccumulation.md","moduleTitle":"render/atmosphere/TemporalAccumulation","source":"engine/render/atmosphere/TemporalAccumulation.js","import":"/engine/render/atmosphere/TemporalAccumulation.js","sourceHash":"8d5c01fb45cb2c6d68f636e63fa3329923ea59de5da2e830d145ffda9da7ea49","subsystem":"engine","recordType":"api-module","id":"module:engine/render/atmosphere/TemporalAccumulation.js","title":"render/atmosphere/TemporalAccumulation","summary":"TemporalAccumulation - TAA pass for atmosphere","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/TemporalAccumulation.md","moduleTitle":"render/atmosphere/TemporalAccumulation","source":"engine/render/atmosphere/TemporalAccumulation.js","import":"/engine/render/atmosphere/TemporalAccumulation.js","sourceHash":"8d5c01fb45cb2c6d68f636e63fa3329923ea59de5da2e830d145ffda9da7ea49","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/TemporalAccumulation.js#0000:TemporalAccumulation","exportIndex":0,"name":"TemporalAccumulation","kind":"class","signature":"class TemporalAccumulation","summary":"TemporalAccumulation - TAA pass for atmosphere"}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/TemporalAccumulation.md","moduleTitle":"render/atmosphere/TemporalAccumulation","source":"engine/render/atmosphere/TemporalAccumulation.js","import":"/engine/render/atmosphere/TemporalAccumulation.js","sourceHash":"8d5c01fb45cb2c6d68f636e63fa3329923ea59de5da2e830d145ffda9da7ea49","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/TemporalAccumulation.js#0001:TEMPORAL_ACCUMULATION_WGSL","exportIndex":1,"name":"TEMPORAL_ACCUMULATION_WGSL","kind":"constant","signature":"TEMPORAL_ACCUMULATION_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/index.md","moduleTitle":"render/atmosphere/index","source":"engine/render/atmosphere/index.js","import":"/engine/render/atmosphere/index.js","sourceHash":"61292cc150decf22960dcfa60aff4239a8d6e54b183403c2be635d7f545ac328","subsystem":"engine","recordType":"api-module","id":"module:engine/render/atmosphere/index.js","title":"render/atmosphere/index","summary":"","exportCount":18}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/index.md","moduleTitle":"render/atmosphere/index","source":"engine/render/atmosphere/index.js","import":"/engine/render/atmosphere/index.js","sourceHash":"61292cc150decf22960dcfa60aff4239a8d6e54b183403c2be635d7f545ac328","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/index.js#0000:ADAPTIVE_STEPS","exportIndex":0,"name":"ADAPTIVE_STEPS","kind":"re-export","signature":"ADAPTIVE_STEPS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/index.md","moduleTitle":"render/atmosphere/index","source":"engine/render/atmosphere/index.js","import":"/engine/render/atmosphere/index.js","sourceHash":"61292cc150decf22960dcfa60aff4239a8d6e54b183403c2be635d7f545ac328","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/index.js#0001:AERIAL_PERSPECTIVE_COMPUTE_WGSL","exportIndex":1,"name":"AERIAL_PERSPECTIVE_COMPUTE_WGSL","kind":"re-export","signature":"AERIAL_PERSPECTIVE_COMPUTE_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/index.md","moduleTitle":"render/atmosphere/index","source":"engine/render/atmosphere/index.js","import":"/engine/render/atmosphere/index.js","sourceHash":"61292cc150decf22960dcfa60aff4239a8d6e54b183403c2be635d7f545ac328","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/index.js#0002:ATMOSPHERE_UTILS_WGSL","exportIndex":2,"name":"ATMOSPHERE_UTILS_WGSL","kind":"re-export","signature":"ATMOSPHERE_UTILS_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/index.md","moduleTitle":"render/atmosphere/index","source":"engine/render/atmosphere/index.js","import":"/engine/render/atmosphere/index.js","sourceHash":"61292cc150decf22960dcfa60aff4239a8d6e54b183403c2be635d7f545ac328","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/index.js#0003:AURORA_WGSL","exportIndex":3,"name":"AURORA_WGSL","kind":"re-export","signature":"AURORA_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/index.md","moduleTitle":"render/atmosphere/index","source":"engine/render/atmosphere/index.js","import":"/engine/render/atmosphere/index.js","sourceHash":"61292cc150decf22960dcfa60aff4239a8d6e54b183403c2be635d7f545ac328","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/index.js#0004:AuroraPass","exportIndex":4,"name":"AuroraPass","kind":"re-export","signature":"AuroraPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/index.md","moduleTitle":"render/atmosphere/index","source":"engine/render/atmosphere/index.js","import":"/engine/render/atmosphere/index.js","sourceHash":"61292cc150decf22960dcfa60aff4239a8d6e54b183403c2be635d7f545ac328","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/index.js#0005:BLUE_NOISE_WGSL","exportIndex":5,"name":"BLUE_NOISE_WGSL","kind":"re-export","signature":"BLUE_NOISE_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/index.md","moduleTitle":"render/atmosphere/index","source":"engine/render/atmosphere/index.js","import":"/engine/render/atmosphere/index.js","sourceHash":"61292cc150decf22960dcfa60aff4239a8d6e54b183403c2be635d7f545ac328","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/index.js#0006:BlueNoiseTexture","exportIndex":6,"name":"BlueNoiseTexture","kind":"re-export","signature":"BlueNoiseTexture","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/index.md","moduleTitle":"render/atmosphere/index","source":"engine/render/atmosphere/index.js","import":"/engine/render/atmosphere/index.js","sourceHash":"61292cc150decf22960dcfa60aff4239a8d6e54b183403c2be635d7f545ac328","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/index.js#0007:HillaireLUT","exportIndex":7,"name":"HillaireLUT","kind":"re-export","signature":"HillaireLUT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/index.md","moduleTitle":"render/atmosphere/index","source":"engine/render/atmosphere/index.js","import":"/engine/render/atmosphere/index.js","sourceHash":"61292cc150decf22960dcfa60aff4239a8d6e54b183403c2be635d7f545ac328","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/index.js#0008:MIE_ASYMMETRY","exportIndex":8,"name":"MIE_ASYMMETRY","kind":"re-export","signature":"MIE_ASYMMETRY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/index.md","moduleTitle":"render/atmosphere/index","source":"engine/render/atmosphere/index.js","import":"/engine/render/atmosphere/index.js","sourceHash":"61292cc150decf22960dcfa60aff4239a8d6e54b183403c2be635d7f545ac328","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/index.js#0009:MULTISCATTER_COMPUTE_WGSL","exportIndex":9,"name":"MULTISCATTER_COMPUTE_WGSL","kind":"re-export","signature":"MULTISCATTER_COMPUTE_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/index.md","moduleTitle":"render/atmosphere/index","source":"engine/render/atmosphere/index.js","import":"/engine/render/atmosphere/index.js","sourceHash":"61292cc150decf22960dcfa60aff4239a8d6e54b183403c2be635d7f545ac328","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/index.js#0010:SKYVIEW_COMPUTE_WGSL","exportIndex":10,"name":"SKYVIEW_COMPUTE_WGSL","kind":"re-export","signature":"SKYVIEW_COMPUTE_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/index.md","moduleTitle":"render/atmosphere/index","source":"engine/render/atmosphere/index.js","import":"/engine/render/atmosphere/index.js","sourceHash":"61292cc150decf22960dcfa60aff4239a8d6e54b183403c2be635d7f545ac328","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/index.js#0011:SPECTRAL_WEATHER_WGSL","exportIndex":11,"name":"SPECTRAL_WEATHER_WGSL","kind":"re-export","signature":"SPECTRAL_WEATHER_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/index.md","moduleTitle":"render/atmosphere/index","source":"engine/render/atmosphere/index.js","import":"/engine/render/atmosphere/index.js","sourceHash":"61292cc150decf22960dcfa60aff4239a8d6e54b183403c2be635d7f545ac328","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/index.js#0012:SpectralWeather","exportIndex":12,"name":"SpectralWeather","kind":"re-export","signature":"SpectralWeather","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/index.md","moduleTitle":"render/atmosphere/index","source":"engine/render/atmosphere/index.js","import":"/engine/render/atmosphere/index.js","sourceHash":"61292cc150decf22960dcfa60aff4239a8d6e54b183403c2be635d7f545ac328","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/index.js#0013:TEMPORAL_ACCUMULATION_WGSL","exportIndex":13,"name":"TEMPORAL_ACCUMULATION_WGSL","kind":"re-export","signature":"TEMPORAL_ACCUMULATION_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/index.md","moduleTitle":"render/atmosphere/index","source":"engine/render/atmosphere/index.js","import":"/engine/render/atmosphere/index.js","sourceHash":"61292cc150decf22960dcfa60aff4239a8d6e54b183403c2be635d7f545ac328","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/index.js#0014:TRANSMITTANCE_COMPUTE_WGSL","exportIndex":14,"name":"TRANSMITTANCE_COMPUTE_WGSL","kind":"re-export","signature":"TRANSMITTANCE_COMPUTE_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/index.md","moduleTitle":"render/atmosphere/index","source":"engine/render/atmosphere/index.js","import":"/engine/render/atmosphere/index.js","sourceHash":"61292cc150decf22960dcfa60aff4239a8d6e54b183403c2be635d7f545ac328","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/index.js#0015:TemporalAccumulation","exportIndex":15,"name":"TemporalAccumulation","kind":"re-export","signature":"TemporalAccumulation","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/index.md","moduleTitle":"render/atmosphere/index","source":"engine/render/atmosphere/index.js","import":"/engine/render/atmosphere/index.js","sourceHash":"61292cc150decf22960dcfa60aff4239a8d6e54b183403c2be635d7f545ac328","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/index.js#0016:getAdaptiveStepMultiplier","exportIndex":16,"name":"getAdaptiveStepMultiplier","kind":"re-export","signature":"getAdaptiveStepMultiplier","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/index.md","moduleTitle":"render/atmosphere/index","source":"engine/render/atmosphere/index.js","import":"/engine/render/atmosphere/index.js","sourceHash":"61292cc150decf22960dcfa60aff4239a8d6e54b183403c2be635d7f545ac328","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/index.js#0017:getMieAsymmetryFromVisibility","exportIndex":17,"name":"getMieAsymmetryFromVisibility","kind":"re-export","signature":"getMieAsymmetryFromVisibility","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/sky/index.md","moduleTitle":"render/atmosphere/sky/index","source":"engine/render/atmosphere/sky/index.js","import":"/engine/render/atmosphere/sky/index.js","sourceHash":"2ca4c1d1f4c4e69ef40ffddd78105b13c1126ceb2f20dd80ae2180600cd89c37","subsystem":"engine","recordType":"api-module","id":"module:engine/render/atmosphere/sky/index.js","title":"render/atmosphere/sky/index","summary":"","exportCount":18}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/sky/index.md","moduleTitle":"render/atmosphere/sky/index","source":"engine/render/atmosphere/sky/index.js","import":"/engine/render/atmosphere/sky/index.js","sourceHash":"2ca4c1d1f4c4e69ef40ffddd78105b13c1126ceb2f20dd80ae2180600cd89c37","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/sky/index.js#0000:CelestialBodiesWGSL","exportIndex":0,"name":"CelestialBodiesWGSL","kind":"constant","signature":"CelestialBodiesWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/sky/index.md","moduleTitle":"render/atmosphere/sky/index","source":"engine/render/atmosphere/sky/index.js","import":"/engine/render/atmosphere/sky/index.js","sourceHash":"2ca4c1d1f4c4e69ef40ffddd78105b13c1126ceb2f20dd80ae2180600cd89c37","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/sky/index.js#0001:Constellations","exportIndex":1,"name":"Constellations","kind":"re-export","signature":"Constellations","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/sky/index.md","moduleTitle":"render/atmosphere/sky/index","source":"engine/render/atmosphere/sky/index.js","import":"/engine/render/atmosphere/sky/index.js","sourceHash":"2ca4c1d1f4c4e69ef40ffddd78105b13c1126ceb2f20dd80ae2180600cd89c37","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/sky/index.js#0002:Moon","exportIndex":2,"name":"Moon","kind":"re-export","signature":"Moon","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/sky/index.md","moduleTitle":"render/atmosphere/sky/index","source":"engine/render/atmosphere/sky/index.js","import":"/engine/render/atmosphere/sky/index.js","sourceHash":"2ca4c1d1f4c4e69ef40ffddd78105b13c1126ceb2f20dd80ae2180600cd89c37","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/sky/index.js#0003:MoonDefaults","exportIndex":3,"name":"MoonDefaults","kind":"re-export","signature":"MoonDefaults","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/sky/index.md","moduleTitle":"render/atmosphere/sky/index","source":"engine/render/atmosphere/sky/index.js","import":"/engine/render/atmosphere/sky/index.js","sourceHash":"2ca4c1d1f4c4e69ef40ffddd78105b13c1126ceb2f20dd80ae2180600cd89c37","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/sky/index.js#0004:MoonPresets","exportIndex":4,"name":"MoonPresets","kind":"re-export","signature":"MoonPresets","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/sky/index.md","moduleTitle":"render/atmosphere/sky/index","source":"engine/render/atmosphere/sky/index.js","import":"/engine/render/atmosphere/sky/index.js","sourceHash":"2ca4c1d1f4c4e69ef40ffddd78105b13c1126ceb2f20dd80ae2180600cd89c37","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/sky/index.js#0005:MoonSystem","exportIndex":5,"name":"MoonSystem","kind":"re-export","signature":"MoonSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/sky/index.md","moduleTitle":"render/atmosphere/sky/index","source":"engine/render/atmosphere/sky/index.js","import":"/engine/render/atmosphere/sky/index.js","sourceHash":"2ca4c1d1f4c4e69ef40ffddd78105b13c1126ceb2f20dd80ae2180600cd89c37","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/sky/index.js#0006:MoonType","exportIndex":6,"name":"MoonType","kind":"re-export","signature":"MoonType","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/sky/index.md","moduleTitle":"render/atmosphere/sky/index","source":"engine/render/atmosphere/sky/index.js","import":"/engine/render/atmosphere/sky/index.js","sourceHash":"2ca4c1d1f4c4e69ef40ffddd78105b13c1126ceb2f20dd80ae2180600cd89c37","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/sky/index.js#0007:MoonWGSL","exportIndex":7,"name":"MoonWGSL","kind":"re-export","signature":"MoonWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/sky/index.md","moduleTitle":"render/atmosphere/sky/index","source":"engine/render/atmosphere/sky/index.js","import":"/engine/render/atmosphere/sky/index.js","sourceHash":"2ca4c1d1f4c4e69ef40ffddd78105b13c1126ceb2f20dd80ae2180600cd89c37","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/sky/index.js#0008:SpaceWGSL","exportIndex":8,"name":"SpaceWGSL","kind":"re-export","signature":"SpaceWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/sky/index.md","moduleTitle":"render/atmosphere/sky/index","source":"engine/render/atmosphere/sky/index.js","import":"/engine/render/atmosphere/sky/index.js","sourceHash":"2ca4c1d1f4c4e69ef40ffddd78105b13c1126ceb2f20dd80ae2180600cd89c37","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/sky/index.js#0009:StarDefaults","exportIndex":9,"name":"StarDefaults","kind":"re-export","signature":"StarDefaults","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/sky/index.md","moduleTitle":"render/atmosphere/sky/index","source":"engine/render/atmosphere/sky/index.js","import":"/engine/render/atmosphere/sky/index.js","sourceHash":"2ca4c1d1f4c4e69ef40ffddd78105b13c1126ceb2f20dd80ae2180600cd89c37","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/sky/index.js#0010:StarField","exportIndex":10,"name":"StarField","kind":"re-export","signature":"StarField","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/sky/index.md","moduleTitle":"render/atmosphere/sky/index","source":"engine/render/atmosphere/sky/index.js","import":"/engine/render/atmosphere/sky/index.js","sourceHash":"2ca4c1d1f4c4e69ef40ffddd78105b13c1126ceb2f20dd80ae2180600cd89c37","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/sky/index.js#0011:StarLayer","exportIndex":11,"name":"StarLayer","kind":"re-export","signature":"StarLayer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/sky/index.md","moduleTitle":"render/atmosphere/sky/index","source":"engine/render/atmosphere/sky/index.js","import":"/engine/render/atmosphere/sky/index.js","sourceHash":"2ca4c1d1f4c4e69ef40ffddd78105b13c1126ceb2f20dd80ae2180600cd89c37","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/sky/index.js#0012:StarLayerPresets","exportIndex":12,"name":"StarLayerPresets","kind":"re-export","signature":"StarLayerPresets","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/sky/index.md","moduleTitle":"render/atmosphere/sky/index","source":"engine/render/atmosphere/sky/index.js","import":"/engine/render/atmosphere/sky/index.js","sourceHash":"2ca4c1d1f4c4e69ef40ffddd78105b13c1126ceb2f20dd80ae2180600cd89c37","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/sky/index.js#0013:StarSystem","exportIndex":13,"name":"StarSystem","kind":"re-export","signature":"StarSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/sky/index.md","moduleTitle":"render/atmosphere/sky/index","source":"engine/render/atmosphere/sky/index.js","import":"/engine/render/atmosphere/sky/index.js","sourceHash":"2ca4c1d1f4c4e69ef40ffddd78105b13c1126ceb2f20dd80ae2180600cd89c37","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/sky/index.js#0014:StarsWGSL","exportIndex":14,"name":"StarsWGSL","kind":"re-export","signature":"StarsWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/sky/index.md","moduleTitle":"render/atmosphere/sky/index","source":"engine/render/atmosphere/sky/index.js","import":"/engine/render/atmosphere/sky/index.js","sourceHash":"2ca4c1d1f4c4e69ef40ffddd78105b13c1126ceb2f20dd80ae2180600cd89c37","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/sky/index.js#0015:Sun","exportIndex":15,"name":"Sun","kind":"re-export","signature":"Sun","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/sky/index.md","moduleTitle":"render/atmosphere/sky/index","source":"engine/render/atmosphere/sky/index.js","import":"/engine/render/atmosphere/sky/index.js","sourceHash":"2ca4c1d1f4c4e69ef40ffddd78105b13c1126ceb2f20dd80ae2180600cd89c37","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/sky/index.js#0016:SunDefaults","exportIndex":16,"name":"SunDefaults","kind":"re-export","signature":"SunDefaults","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/atmosphere/sky/index.md","moduleTitle":"render/atmosphere/sky/index","source":"engine/render/atmosphere/sky/index.js","import":"/engine/render/atmosphere/sky/index.js","sourceHash":"2ca4c1d1f4c4e69ef40ffddd78105b13c1126ceb2f20dd80ae2180600cd89c37","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/atmosphere/sky/index.js#0017:SunWGSL","exportIndex":17,"name":"SunWGSL","kind":"re-export","signature":"SunWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/debug/GridRenderer.md","moduleTitle":"render/debug/GridRenderer","source":"engine/render/debug/GridRenderer.js","import":"/engine/render/debug/GridRenderer.js","sourceHash":"7e5cb9a7a7f108cdb038e89edb56754b9a89e5fe0e5406c33c250f6c57799477","subsystem":"engine","recordType":"api-module","id":"module:engine/render/debug/GridRenderer.js","title":"render/debug/GridRenderer","summary":"GridRenderer - Infinite grid for 3D viewport Now powered by vGPU driver","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/debug/GridRenderer.md","moduleTitle":"render/debug/GridRenderer","source":"engine/render/debug/GridRenderer.js","import":"/engine/render/debug/GridRenderer.js","sourceHash":"7e5cb9a7a7f108cdb038e89edb56754b9a89e5fe0e5406c33c250f6c57799477","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/debug/GridRenderer.js#0000:GridRenderer","exportIndex":0,"name":"GridRenderer","kind":"class","signature":"class GridRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/debug/PhysicsLineRenderer.md","moduleTitle":"render/debug/PhysicsLineRenderer","source":"engine/render/debug/PhysicsLineRenderer.js","import":"/engine/render/debug/PhysicsLineRenderer.js","sourceHash":"0284b3f8694744e5f2090e3da55a157d28ab7182f8a4d1f7b0408ebda511f9d5","subsystem":"engine","recordType":"api-module","id":"module:engine/render/debug/PhysicsLineRenderer.js","title":"render/debug/PhysicsLineRenderer","summary":"PhysicsLineRenderer.js - GPU Line Rendering for Physics Objects Renders ropes, wires, hair strands, and chain links using GPU instancing. Supports both line primitives and tube geometry for thicker cables.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/debug/PhysicsLineRenderer.md","moduleTitle":"render/debug/PhysicsLineRenderer","source":"engine/render/debug/PhysicsLineRenderer.js","import":"/engine/render/debug/PhysicsLineRenderer.js","sourceHash":"0284b3f8694744e5f2090e3da55a157d28ab7182f8a4d1f7b0408ebda511f9d5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/debug/PhysicsLineRenderer.js#0000:PhysicsLineRenderer","exportIndex":0,"name":"PhysicsLineRenderer","kind":"class","signature":"class PhysicsLineRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/debug/WireframeBoxRenderer.md","moduleTitle":"render/debug/WireframeBoxRenderer","source":"engine/render/debug/WireframeBoxRenderer.js","import":"/engine/render/debug/WireframeBoxRenderer.js","sourceHash":"2a9eeb31dccabedffbea5f1f4d87e73b83fc56c8b8e12902ccf2310507d9390f","subsystem":"engine","recordType":"api-module","id":"module:engine/render/debug/WireframeBoxRenderer.js","title":"render/debug/WireframeBoxRenderer","summary":"WireframeBoxRenderer - Renders wireframe boxes for debug visualization Used to visualize voxel colliders in the editor Now powered by vGPU driver","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/debug/WireframeBoxRenderer.md","moduleTitle":"render/debug/WireframeBoxRenderer","source":"engine/render/debug/WireframeBoxRenderer.js","import":"/engine/render/debug/WireframeBoxRenderer.js","sourceHash":"2a9eeb31dccabedffbea5f1f4d87e73b83fc56c8b8e12902ccf2310507d9390f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/debug/WireframeBoxRenderer.js#0000:WireframeBoxRenderer","exportIndex":0,"name":"WireframeBoxRenderer","kind":"class","signature":"class WireframeBoxRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/debug/index.md","moduleTitle":"render/debug/index","source":"engine/render/debug/index.js","import":"/engine/render/debug/index.js","sourceHash":"7036d4b6e1e10925aba41df41de5c15b55ba5e58422af3e793a744a53cface94","subsystem":"engine","recordType":"api-module","id":"module:engine/render/debug/index.js","title":"render/debug/index","summary":"Debug Renderers - GPU debug visualization tools These renderers are useful for both editor and runtime debug visualization.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/render/debug/index.md","moduleTitle":"render/debug/index","source":"engine/render/debug/index.js","import":"/engine/render/debug/index.js","sourceHash":"7036d4b6e1e10925aba41df41de5c15b55ba5e58422af3e793a744a53cface94","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/debug/index.js#0000:GridRenderer","exportIndex":0,"name":"GridRenderer","kind":"re-export","signature":"GridRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/debug/index.md","moduleTitle":"render/debug/index","source":"engine/render/debug/index.js","import":"/engine/render/debug/index.js","sourceHash":"7036d4b6e1e10925aba41df41de5c15b55ba5e58422af3e793a744a53cface94","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/debug/index.js#0001:PhysicsLineRenderer","exportIndex":1,"name":"PhysicsLineRenderer","kind":"re-export","signature":"PhysicsLineRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/debug/index.md","moduleTitle":"render/debug/index","source":"engine/render/debug/index.js","import":"/engine/render/debug/index.js","sourceHash":"7036d4b6e1e10925aba41df41de5c15b55ba5e58422af3e793a744a53cface94","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/debug/index.js#0002:WireframeBoxRenderer","exportIndex":2,"name":"WireframeBoxRenderer","kind":"re-export","signature":"WireframeBoxRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/geometry/CapsuleGeometry.md","moduleTitle":"render/geometry/CapsuleGeometry","source":"engine/render/geometry/CapsuleGeometry.js","import":"/engine/render/geometry/CapsuleGeometry.js","sourceHash":"6062ab7e9d7e3e1c7feb4e7aaa5b7798e0a2d7e36ab87a9f5fbf3089efd16f7b","subsystem":"engine","recordType":"api-module","id":"module:engine/render/geometry/CapsuleGeometry.js","title":"render/geometry/CapsuleGeometry","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/geometry/CapsuleGeometry.md","moduleTitle":"render/geometry/CapsuleGeometry","source":"engine/render/geometry/CapsuleGeometry.js","import":"/engine/render/geometry/CapsuleGeometry.js","sourceHash":"6062ab7e9d7e3e1c7feb4e7aaa5b7798e0a2d7e36ab87a9f5fbf3089efd16f7b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/geometry/CapsuleGeometry.js#0000:createCapsuleGeometry","exportIndex":0,"name":"createCapsuleGeometry","kind":"function","signature":"createCapsuleGeometry(radius = 0.3, height = 1.0, radialSegments = 16, hemisphereSegments = 8)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/geometry/ConeGeometry.md","moduleTitle":"render/geometry/ConeGeometry","source":"engine/render/geometry/ConeGeometry.js","import":"/engine/render/geometry/ConeGeometry.js","sourceHash":"1a3b41c03df5fca87278f7eef74e887974f85922cb0574800ac3145891fe8930","subsystem":"engine","recordType":"api-module","id":"module:engine/render/geometry/ConeGeometry.js","title":"render/geometry/ConeGeometry","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/geometry/ConeGeometry.md","moduleTitle":"render/geometry/ConeGeometry","source":"engine/render/geometry/ConeGeometry.js","import":"/engine/render/geometry/ConeGeometry.js","sourceHash":"1a3b41c03df5fca87278f7eef74e887974f85922cb0574800ac3145891fe8930","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/geometry/ConeGeometry.js#0000:createConeGeometry","exportIndex":0,"name":"createConeGeometry","kind":"function","signature":"createConeGeometry(radius = 0.5, height = 1.0, segments = 16)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/geometry/CubeGeometry.md","moduleTitle":"render/geometry/CubeGeometry","source":"engine/render/geometry/CubeGeometry.js","import":"/engine/render/geometry/CubeGeometry.js","sourceHash":"60b32149ef420964144828f817bb4435cf9b5105e5acd76415287e154643a6ed","subsystem":"engine","recordType":"api-module","id":"module:engine/render/geometry/CubeGeometry.js","title":"render/geometry/CubeGeometry","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/geometry/CubeGeometry.md","moduleTitle":"render/geometry/CubeGeometry","source":"engine/render/geometry/CubeGeometry.js","import":"/engine/render/geometry/CubeGeometry.js","sourceHash":"60b32149ef420964144828f817bb4435cf9b5105e5acd76415287e154643a6ed","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/geometry/CubeGeometry.js#0000:createCubeGeometry","exportIndex":0,"name":"createCubeGeometry","kind":"function","signature":"createCubeGeometry(size = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/geometry/CylinderGeometry.md","moduleTitle":"render/geometry/CylinderGeometry","source":"engine/render/geometry/CylinderGeometry.js","import":"/engine/render/geometry/CylinderGeometry.js","sourceHash":"de08c510ef08f59d630bca95beb5d232861e4d7a87af5303815143a94cdeba2e","subsystem":"engine","recordType":"api-module","id":"module:engine/render/geometry/CylinderGeometry.js","title":"render/geometry/CylinderGeometry","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/geometry/CylinderGeometry.md","moduleTitle":"render/geometry/CylinderGeometry","source":"engine/render/geometry/CylinderGeometry.js","import":"/engine/render/geometry/CylinderGeometry.js","sourceHash":"de08c510ef08f59d630bca95beb5d232861e4d7a87af5303815143a94cdeba2e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/geometry/CylinderGeometry.js#0000:createHollowCylinderGeometry","exportIndex":0,"name":"createHollowCylinderGeometry","kind":"function","signature":"createHollowCylinderGeometry(outerRadius = 0.5, innerRadius = 0.4, height = 1.0, radialSegments = 24,)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/geometry/CylinderGeometry.md","moduleTitle":"render/geometry/CylinderGeometry","source":"engine/render/geometry/CylinderGeometry.js","import":"/engine/render/geometry/CylinderGeometry.js","sourceHash":"de08c510ef08f59d630bca95beb5d232861e4d7a87af5303815143a94cdeba2e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/geometry/CylinderGeometry.js#0001:createCylinderGeometry","exportIndex":1,"name":"createCylinderGeometry","kind":"function","signature":"createCylinderGeometry(radius = 0.5, height = 1.0, radialSegments = 16, heightSegments = 1,)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/geometry/GroundGeometry.md","moduleTitle":"render/geometry/GroundGeometry","source":"engine/render/geometry/GroundGeometry.js","import":"/engine/render/geometry/GroundGeometry.js","sourceHash":"4b852fef0ba874c4ec600f8cea763dbcdc83ae40b50e156b07493599901f6404","subsystem":"engine","recordType":"api-module","id":"module:engine/render/geometry/GroundGeometry.js","title":"render/geometry/GroundGeometry","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/geometry/GroundGeometry.md","moduleTitle":"render/geometry/GroundGeometry","source":"engine/render/geometry/GroundGeometry.js","import":"/engine/render/geometry/GroundGeometry.js","sourceHash":"4b852fef0ba874c4ec600f8cea763dbcdc83ae40b50e156b07493599901f6404","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/geometry/GroundGeometry.js#0000:createGroundGeometry","exportIndex":0,"name":"createGroundGeometry","kind":"function","signature":"createGroundGeometry(size = 30)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/geometry/PlaneGeometry.md","moduleTitle":"render/geometry/PlaneGeometry","source":"engine/render/geometry/PlaneGeometry.js","import":"/engine/render/geometry/PlaneGeometry.js","sourceHash":"ccc29d54ea661fc458686f010638ebe282f1a96d9615d8840271e3f7e55b359f","subsystem":"engine","recordType":"api-module","id":"module:engine/render/geometry/PlaneGeometry.js","title":"render/geometry/PlaneGeometry","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/geometry/PlaneGeometry.md","moduleTitle":"render/geometry/PlaneGeometry","source":"engine/render/geometry/PlaneGeometry.js","import":"/engine/render/geometry/PlaneGeometry.js","sourceHash":"ccc29d54ea661fc458686f010638ebe282f1a96d9615d8840271e3f7e55b359f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/geometry/PlaneGeometry.js#0000:createPlaneGeometry","exportIndex":0,"name":"createPlaneGeometry","kind":"function","signature":"createPlaneGeometry(size = 10, y = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/geometry/PrimitiveGeometry.md","moduleTitle":"render/geometry/PrimitiveGeometry","source":"engine/render/geometry/PrimitiveGeometry.js","import":"/engine/render/geometry/PrimitiveGeometry.js","sourceHash":"d78db203f9aecc7ce8e03bf89bcbe21921a01b0412bd5fbef030a086003e5dda","subsystem":"engine","recordType":"api-module","id":"module:engine/render/geometry/PrimitiveGeometry.js","title":"render/geometry/PrimitiveGeometry","summary":"Barrel export file for primitive geometry generators Re-exports all geometry modules for convenient importing","exportCount":10}
{"schemaVersion":1,"modulePath":"engine/reference/render/geometry/PrimitiveGeometry.md","moduleTitle":"render/geometry/PrimitiveGeometry","source":"engine/render/geometry/PrimitiveGeometry.js","import":"/engine/render/geometry/PrimitiveGeometry.js","sourceHash":"d78db203f9aecc7ce8e03bf89bcbe21921a01b0412bd5fbef030a086003e5dda","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/geometry/PrimitiveGeometry.js#0000:createCapsuleGeometry","exportIndex":0,"name":"createCapsuleGeometry","kind":"re-export","signature":"createCapsuleGeometry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/geometry/PrimitiveGeometry.md","moduleTitle":"render/geometry/PrimitiveGeometry","source":"engine/render/geometry/PrimitiveGeometry.js","import":"/engine/render/geometry/PrimitiveGeometry.js","sourceHash":"d78db203f9aecc7ce8e03bf89bcbe21921a01b0412bd5fbef030a086003e5dda","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/geometry/PrimitiveGeometry.js#0001:createConeGeometry","exportIndex":1,"name":"createConeGeometry","kind":"re-export","signature":"createConeGeometry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/geometry/PrimitiveGeometry.md","moduleTitle":"render/geometry/PrimitiveGeometry","source":"engine/render/geometry/PrimitiveGeometry.js","import":"/engine/render/geometry/PrimitiveGeometry.js","sourceHash":"d78db203f9aecc7ce8e03bf89bcbe21921a01b0412bd5fbef030a086003e5dda","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/geometry/PrimitiveGeometry.js#0002:createCubeGeometry","exportIndex":2,"name":"createCubeGeometry","kind":"re-export","signature":"createCubeGeometry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/geometry/PrimitiveGeometry.md","moduleTitle":"render/geometry/PrimitiveGeometry","source":"engine/render/geometry/PrimitiveGeometry.js","import":"/engine/render/geometry/PrimitiveGeometry.js","sourceHash":"d78db203f9aecc7ce8e03bf89bcbe21921a01b0412bd5fbef030a086003e5dda","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/geometry/PrimitiveGeometry.js#0003:createCylinderGeometry","exportIndex":3,"name":"createCylinderGeometry","kind":"re-export","signature":"createCylinderGeometry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/geometry/PrimitiveGeometry.md","moduleTitle":"render/geometry/PrimitiveGeometry","source":"engine/render/geometry/PrimitiveGeometry.js","import":"/engine/render/geometry/PrimitiveGeometry.js","sourceHash":"d78db203f9aecc7ce8e03bf89bcbe21921a01b0412bd5fbef030a086003e5dda","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/geometry/PrimitiveGeometry.js#0004:createGroundGeometry","exportIndex":4,"name":"createGroundGeometry","kind":"re-export","signature":"createGroundGeometry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/geometry/PrimitiveGeometry.md","moduleTitle":"render/geometry/PrimitiveGeometry","source":"engine/render/geometry/PrimitiveGeometry.js","import":"/engine/render/geometry/PrimitiveGeometry.js","sourceHash":"d78db203f9aecc7ce8e03bf89bcbe21921a01b0412bd5fbef030a086003e5dda","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/geometry/PrimitiveGeometry.js#0005:createHollowCylinderGeometry","exportIndex":5,"name":"createHollowCylinderGeometry","kind":"re-export","signature":"createHollowCylinderGeometry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/geometry/PrimitiveGeometry.md","moduleTitle":"render/geometry/PrimitiveGeometry","source":"engine/render/geometry/PrimitiveGeometry.js","import":"/engine/render/geometry/PrimitiveGeometry.js","sourceHash":"d78db203f9aecc7ce8e03bf89bcbe21921a01b0412bd5fbef030a086003e5dda","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/geometry/PrimitiveGeometry.js#0006:createPlaneGeometry","exportIndex":6,"name":"createPlaneGeometry","kind":"re-export","signature":"createPlaneGeometry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/geometry/PrimitiveGeometry.md","moduleTitle":"render/geometry/PrimitiveGeometry","source":"engine/render/geometry/PrimitiveGeometry.js","import":"/engine/render/geometry/PrimitiveGeometry.js","sourceHash":"d78db203f9aecc7ce8e03bf89bcbe21921a01b0412bd5fbef030a086003e5dda","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/geometry/PrimitiveGeometry.js#0007:createSkyboxGeometry","exportIndex":7,"name":"createSkyboxGeometry","kind":"re-export","signature":"createSkyboxGeometry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/geometry/PrimitiveGeometry.md","moduleTitle":"render/geometry/PrimitiveGeometry","source":"engine/render/geometry/PrimitiveGeometry.js","import":"/engine/render/geometry/PrimitiveGeometry.js","sourceHash":"d78db203f9aecc7ce8e03bf89bcbe21921a01b0412bd5fbef030a086003e5dda","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/geometry/PrimitiveGeometry.js#0008:createSphereGeometry","exportIndex":8,"name":"createSphereGeometry","kind":"re-export","signature":"createSphereGeometry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/geometry/PrimitiveGeometry.md","moduleTitle":"render/geometry/PrimitiveGeometry","source":"engine/render/geometry/PrimitiveGeometry.js","import":"/engine/render/geometry/PrimitiveGeometry.js","sourceHash":"d78db203f9aecc7ce8e03bf89bcbe21921a01b0412bd5fbef030a086003e5dda","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/geometry/PrimitiveGeometry.js#0009:createTorusGeometry","exportIndex":9,"name":"createTorusGeometry","kind":"re-export","signature":"createTorusGeometry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/geometry/SkyboxGeometry.md","moduleTitle":"render/geometry/SkyboxGeometry","source":"engine/render/geometry/SkyboxGeometry.js","import":"/engine/render/geometry/SkyboxGeometry.js","sourceHash":"8b4b1e8702104594a58fc580035de057d314ca973c868e831d83d110307c2616","subsystem":"engine","recordType":"api-module","id":"module:engine/render/geometry/SkyboxGeometry.js","title":"render/geometry/SkyboxGeometry","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/geometry/SkyboxGeometry.md","moduleTitle":"render/geometry/SkyboxGeometry","source":"engine/render/geometry/SkyboxGeometry.js","import":"/engine/render/geometry/SkyboxGeometry.js","sourceHash":"8b4b1e8702104594a58fc580035de057d314ca973c868e831d83d110307c2616","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/geometry/SkyboxGeometry.js#0000:createSkyboxGeometry","exportIndex":0,"name":"createSkyboxGeometry","kind":"function","signature":"createSkyboxGeometry(size = 50)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/geometry/SphereGeometry.md","moduleTitle":"render/geometry/SphereGeometry","source":"engine/render/geometry/SphereGeometry.js","import":"/engine/render/geometry/SphereGeometry.js","sourceHash":"fd4d824f4bcf3984e887455bd880f1a305e89c7f9084511238dd3a70e5d2dac3","subsystem":"engine","recordType":"api-module","id":"module:engine/render/geometry/SphereGeometry.js","title":"render/geometry/SphereGeometry","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/geometry/SphereGeometry.md","moduleTitle":"render/geometry/SphereGeometry","source":"engine/render/geometry/SphereGeometry.js","import":"/engine/render/geometry/SphereGeometry.js","sourceHash":"fd4d824f4bcf3984e887455bd880f1a305e89c7f9084511238dd3a70e5d2dac3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/geometry/SphereGeometry.js#0000:createSphereGeometry","exportIndex":0,"name":"createSphereGeometry","kind":"function","signature":"createSphereGeometry(radius = 0.5, widthSegments = 16, heightSegments = 12)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/geometry/StaticMeshBuilder.md","moduleTitle":"render/geometry/StaticMeshBuilder","source":"engine/render/geometry/StaticMeshBuilder.js","import":"/engine/render/geometry/StaticMeshBuilder.js","sourceHash":"caedd5db47352d8b0b695e6e21d162b6770ccb1e9140d6f9987ed8863a07cea1","subsystem":"engine","recordType":"api-module","id":"module:engine/render/geometry/StaticMeshBuilder.js","title":"render/geometry/StaticMeshBuilder","summary":"","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/render/geometry/StaticMeshBuilder.md","moduleTitle":"render/geometry/StaticMeshBuilder","source":"engine/render/geometry/StaticMeshBuilder.js","import":"/engine/render/geometry/StaticMeshBuilder.js","sourceHash":"caedd5db47352d8b0b695e6e21d162b6770ccb1e9140d6f9987ed8863a07cea1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/geometry/StaticMeshBuilder.js#0000:staticMeshVertexLayoutForGeometry","exportIndex":0,"name":"staticMeshVertexLayoutForGeometry","kind":"function","signature":"staticMeshVertexLayoutForGeometry(geometry)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/geometry/StaticMeshBuilder.md","moduleTitle":"render/geometry/StaticMeshBuilder","source":"engine/render/geometry/StaticMeshBuilder.js","import":"/engine/render/geometry/StaticMeshBuilder.js","sourceHash":"caedd5db47352d8b0b695e6e21d162b6770ccb1e9140d6f9987ed8863a07cea1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/geometry/StaticMeshBuilder.js#0001:staticMeshVertexDataFromGeometry","exportIndex":1,"name":"staticMeshVertexDataFromGeometry","kind":"function","signature":"staticMeshVertexDataFromGeometry(geometry)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/geometry/StaticMeshBuilder.md","moduleTitle":"render/geometry/StaticMeshBuilder","source":"engine/render/geometry/StaticMeshBuilder.js","import":"/engine/render/geometry/StaticMeshBuilder.js","sourceHash":"caedd5db47352d8b0b695e6e21d162b6770ccb1e9140d6f9987ed8863a07cea1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/geometry/StaticMeshBuilder.js#0002:buildStaticMeshFromGeometry","exportIndex":2,"name":"buildStaticMeshFromGeometry","kind":"function","signature":"buildStaticMeshFromGeometry(device, geometry, label, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/geometry/TorusGeometry.md","moduleTitle":"render/geometry/TorusGeometry","source":"engine/render/geometry/TorusGeometry.js","import":"/engine/render/geometry/TorusGeometry.js","sourceHash":"f14de78134f776b6d649b6e10617c1ee4ca039c165d2cf0884589a38c48e4262","subsystem":"engine","recordType":"api-module","id":"module:engine/render/geometry/TorusGeometry.js","title":"render/geometry/TorusGeometry","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/geometry/TorusGeometry.md","moduleTitle":"render/geometry/TorusGeometry","source":"engine/render/geometry/TorusGeometry.js","import":"/engine/render/geometry/TorusGeometry.js","sourceHash":"f14de78134f776b6d649b6e10617c1ee4ca039c165d2cf0884589a38c48e4262","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/geometry/TorusGeometry.js#0000:createTorusGeometry","exportIndex":0,"name":"createTorusGeometry","kind":"function","signature":"createTorusGeometry(majorRadius = 0.4, minorRadius = 0.15, majorSegments = 24, minorSegments = 12)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/gpu/IndirectDrawSystem.md","moduleTitle":"render/gpu/IndirectDrawSystem","source":"engine/render/gpu/IndirectDrawSystem.js","import":"/engine/render/gpu/IndirectDrawSystem.js","sourceHash":"04a76570c357f074f07a0d264654dd0278ce58badfb4b3b63cd111fec422ed39","subsystem":"engine","recordType":"api-module","id":"module:engine/render/gpu/IndirectDrawSystem.js","title":"render/gpu/IndirectDrawSystem","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/gpu/IndirectDrawSystem.md","moduleTitle":"render/gpu/IndirectDrawSystem","source":"engine/render/gpu/IndirectDrawSystem.js","import":"/engine/render/gpu/IndirectDrawSystem.js","sourceHash":"04a76570c357f074f07a0d264654dd0278ce58badfb4b3b63cd111fec422ed39","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/gpu/IndirectDrawSystem.js#0000:IndirectDrawSystem","exportIndex":0,"name":"IndirectDrawSystem","kind":"class","signature":"class IndirectDrawSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/index.md","moduleTitle":"render/index","source":"engine/render/index.js","import":"/engine/render/index.js","sourceHash":"0f5f50532d86bf6a44a78e5837037ddf315629c37b22b4f1f448ae515b40c7e6","subsystem":"engine","recordType":"api-module","id":"module:engine/render/index.js","title":"render/index","summary":"Engine Render Modules Exports all render-related utilities from subfolders","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/render/lighting/RealtimeGI.md","moduleTitle":"render/lighting/RealtimeGI","source":"engine/render/lighting/RealtimeGI.js","import":"/engine/render/lighting/RealtimeGI.js","sourceHash":"7b44666a07d441c4cdd2a91bb4f834a5381e8c64f9a902670132912c4a236cc0","subsystem":"engine","recordType":"api-module","id":"module:engine/render/lighting/RealtimeGI.js","title":"render/lighting/RealtimeGI","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/lighting/RealtimeGI.md","moduleTitle":"render/lighting/RealtimeGI","source":"engine/render/lighting/RealtimeGI.js","import":"/engine/render/lighting/RealtimeGI.js","sourceHash":"7b44666a07d441c4cdd2a91bb4f834a5381e8c64f9a902670132912c4a236cc0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/lighting/RealtimeGI.js#0000:RealtimeGI","exportIndex":0,"name":"RealtimeGI","kind":"class","signature":"class RealtimeGI","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/AnimatedMaterialSystem.md","moduleTitle":"render/materials/AnimatedMaterialSystem","source":"engine/render/materials/AnimatedMaterialSystem.js","import":"/engine/render/materials/AnimatedMaterialSystem.js","sourceHash":"aeff82e937099ba15870230f4703a379569ac2ad0faa5f7febc05487e4b32a30","subsystem":"engine","recordType":"api-module","id":"module:engine/render/materials/AnimatedMaterialSystem.js","title":"render/materials/AnimatedMaterialSystem","summary":"AnimatedMaterialSystem.js Per-frame evaluation of animated material node graphs. Materials with Time nodes in their graph get evaluated every frame, producing live PBR values (baseColor, metallic, roughness, emissive) that the viewport renderer uses instead of static material definitions.","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/AnimatedMaterialSystem.md","moduleTitle":"render/materials/AnimatedMaterialSystem","source":"engine/render/materials/AnimatedMaterialSystem.js","import":"/engine/render/materials/AnimatedMaterialSystem.js","sourceHash":"aeff82e937099ba15870230f4703a379569ac2ad0faa5f7febc05487e4b32a30","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/AnimatedMaterialSystem.js#0000:initAnimatedMaterials","exportIndex":0,"name":"initAnimatedMaterials","kind":"function","signature":"async initAnimatedMaterials(materialLibrary)","summary":"Initialize the animated material system. Scans all materials for animated node graphs and caches them."}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/AnimatedMaterialSystem.md","moduleTitle":"render/materials/AnimatedMaterialSystem","source":"engine/render/materials/AnimatedMaterialSystem.js","import":"/engine/render/materials/AnimatedMaterialSystem.js","sourceHash":"aeff82e937099ba15870230f4703a379569ac2ad0faa5f7febc05487e4b32a30","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/AnimatedMaterialSystem.js#0001:tickAnimatedMaterials","exportIndex":1,"name":"tickAnimatedMaterials","kind":"function","signature":"tickAnimatedMaterials()","summary":"Evaluate all animated material graphs for this frame. Call once per frame before rendering entities."}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/AnimatedMaterialSystem.md","moduleTitle":"render/materials/AnimatedMaterialSystem","source":"engine/render/materials/AnimatedMaterialSystem.js","import":"/engine/render/materials/AnimatedMaterialSystem.js","sourceHash":"aeff82e937099ba15870230f4703a379569ac2ad0faa5f7febc05487e4b32a30","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/AnimatedMaterialSystem.js#0002:getAnimatedPBR","exportIndex":2,"name":"getAnimatedPBR","kind":"function","signature":"getAnimatedPBR(materialId)","summary":"Get the current-frame animated PBR values for a material. Returns null if the material is not animated."}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/AnimatedMaterialSystem.md","moduleTitle":"render/materials/AnimatedMaterialSystem","source":"engine/render/materials/AnimatedMaterialSystem.js","import":"/engine/render/materials/AnimatedMaterialSystem.js","sourceHash":"aeff82e937099ba15870230f4703a379569ac2ad0faa5f7febc05487e4b32a30","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/AnimatedMaterialSystem.js#0003:isAnimatedMaterial","exportIndex":3,"name":"isAnimatedMaterial","kind":"function","signature":"isAnimatedMaterial(materialId)","summary":"Check if a material is registered as animated."}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/BindGroupManager.md","moduleTitle":"render/materials/BindGroupManager","source":"engine/render/materials/BindGroupManager.js","import":"/engine/render/materials/BindGroupManager.js","sourceHash":"847bbcbda58f2ff535ec4694ab546e60ac7995aae2d7c3dad537e38ebfd1cb41","subsystem":"engine","recordType":"api-module","id":"module:engine/render/materials/BindGroupManager.js","title":"render/materials/BindGroupManager","summary":"BindGroupLayoutBuilder - Fluent API for building bind group layouts","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/BindGroupManager.md","moduleTitle":"render/materials/BindGroupManager","source":"engine/render/materials/BindGroupManager.js","import":"/engine/render/materials/BindGroupManager.js","sourceHash":"847bbcbda58f2ff535ec4694ab546e60ac7995aae2d7c3dad537e38ebfd1cb41","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/BindGroupManager.js#0000:BindGroupLayoutBuilder","exportIndex":0,"name":"BindGroupLayoutBuilder","kind":"class","signature":"class BindGroupLayoutBuilder","summary":"BindGroupLayoutBuilder - Fluent API for building bind group layouts"}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/BindGroupManager.md","moduleTitle":"render/materials/BindGroupManager","source":"engine/render/materials/BindGroupManager.js","import":"/engine/render/materials/BindGroupManager.js","sourceHash":"847bbcbda58f2ff535ec4694ab546e60ac7995aae2d7c3dad537e38ebfd1cb41","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/BindGroupManager.js#0001:FrameBindGroup","exportIndex":1,"name":"FrameBindGroup","kind":"class","signature":"class FrameBindGroup","summary":"FrameBindGroup - Manages Group 0 (per-frame global data)"}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/BindGroupManager.md","moduleTitle":"render/materials/BindGroupManager","source":"engine/render/materials/BindGroupManager.js","import":"/engine/render/materials/BindGroupManager.js","sourceHash":"847bbcbda58f2ff535ec4694ab546e60ac7995aae2d7c3dad537e38ebfd1cb41","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/BindGroupManager.js#0002:MaterialBindGroup","exportIndex":2,"name":"MaterialBindGroup","kind":"class","signature":"class MaterialBindGroup","summary":"MaterialBindGroup - Manages Group 1 (per-material data)"}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/BindGroupManager.md","moduleTitle":"render/materials/BindGroupManager","source":"engine/render/materials/BindGroupManager.js","import":"/engine/render/materials/BindGroupManager.js","sourceHash":"847bbcbda58f2ff535ec4694ab546e60ac7995aae2d7c3dad537e38ebfd1cb41","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/BindGroupManager.js#0003:ObjectBindGroup","exportIndex":3,"name":"ObjectBindGroup","kind":"class","signature":"class ObjectBindGroup","summary":"ObjectBindGroup - Manages Group 2 (per-object data like transforms)"}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/BindGroupManager.md","moduleTitle":"render/materials/BindGroupManager","source":"engine/render/materials/BindGroupManager.js","import":"/engine/render/materials/BindGroupManager.js","sourceHash":"847bbcbda58f2ff535ec4694ab546e60ac7995aae2d7c3dad537e38ebfd1cb41","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/BindGroupManager.js#0004:BindGroupCache","exportIndex":4,"name":"BindGroupCache","kind":"class","signature":"class BindGroupCache","summary":"BindGroupCache - Caches bind groups to avoid recreation"}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/BindGroupManager.md","moduleTitle":"render/materials/BindGroupManager","source":"engine/render/materials/BindGroupManager.js","import":"/engine/render/materials/BindGroupManager.js","sourceHash":"847bbcbda58f2ff535ec4694ab546e60ac7995aae2d7c3dad537e38ebfd1cb41","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/BindGroupManager.js#0005:createVoxelBindGroupLayouts","exportIndex":5,"name":"createVoxelBindGroupLayouts","kind":"function","signature":"createVoxelBindGroupLayouts(device)","summary":"Create the standard voxel renderer bind group layouts"}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/BindGroupManager.md","moduleTitle":"render/materials/BindGroupManager","source":"engine/render/materials/BindGroupManager.js","import":"/engine/render/materials/BindGroupManager.js","sourceHash":"847bbcbda58f2ff535ec4694ab546e60ac7995aae2d7c3dad537e38ebfd1cb41","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/BindGroupManager.js#0006:BIND_GROUP_FREQUENCY","exportIndex":6,"name":"BIND_GROUP_FREQUENCY","kind":"constant","signature":"BIND_GROUP_FREQUENCY","summary":"Bind group frequency tiers"}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/MaterialLibrary.md","moduleTitle":"render/materials/MaterialLibrary","source":"engine/render/materials/MaterialLibrary.js","import":"/engine/render/materials/MaterialLibrary.js","sourceHash":"da56fe8b87daaedec0f3ef7f8880727b951c41185917b2f231ac25386fa994bd","subsystem":"engine","recordType":"api-module","id":"module:engine/render/materials/MaterialLibrary.js","title":"render/materials/MaterialLibrary","summary":"MaterialLibrary.js - Material CRUD & Persistence Manages a collection of PBR material definitions. Each material has: - PBR scalar properties (metallic, roughness, emissive intensity) - Color values (baseColor, emissiveColor) - Texture slot paths (albedo, normal, metallicRoughness, emissive, ao) - Metadata (id, label, tags) Persists to localStorage and can export/import JSON.","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/MaterialLibrary.md","moduleTitle":"render/materials/MaterialLibrary","source":"engine/render/materials/MaterialLibrary.js","import":"/engine/render/materials/MaterialLibrary.js","sourceHash":"da56fe8b87daaedec0f3ef7f8880727b951c41185917b2f231ac25386fa994bd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/MaterialLibrary.js#0000:readMaterialLibraryRecord","exportIndex":0,"name":"readMaterialLibraryRecord","kind":"function","signature":"readMaterialLibraryRecord(storage = globalThis.localStorage)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/MaterialLibrary.md","moduleTitle":"render/materials/MaterialLibrary","source":"engine/render/materials/MaterialLibrary.js","import":"/engine/render/materials/MaterialLibrary.js","sourceHash":"da56fe8b87daaedec0f3ef7f8880727b951c41185917b2f231ac25386fa994bd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/MaterialLibrary.js#0001:writeMaterialLibraryRecord","exportIndex":1,"name":"writeMaterialLibraryRecord","kind":"function","signature":"writeMaterialLibraryRecord(materials, storage = globalThis.localStorage)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/MaterialLibrary.md","moduleTitle":"render/materials/MaterialLibrary","source":"engine/render/materials/MaterialLibrary.js","import":"/engine/render/materials/MaterialLibrary.js","sourceHash":"da56fe8b87daaedec0f3ef7f8880727b951c41185917b2f231ac25386fa994bd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/MaterialLibrary.js#0002:normalizeMaterial","exportIndex":2,"name":"normalizeMaterial","kind":"function","signature":"normalizeMaterial(input)","summary":"Normalize a material descriptor, filling missing fields with defaults."}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/MaterialLibrary.md","moduleTitle":"render/materials/MaterialLibrary","source":"engine/render/materials/MaterialLibrary.js","import":"/engine/render/materials/MaterialLibrary.js","sourceHash":"da56fe8b87daaedec0f3ef7f8880727b951c41185917b2f231ac25386fa994bd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/MaterialLibrary.js#0003:createMaterialLibrary","exportIndex":3,"name":"createMaterialLibrary","kind":"function","signature":"createMaterialLibrary(storage = globalThis.localStorage)","summary":"Create a MaterialLibrary instance."}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/MaterialLibrary.md","moduleTitle":"render/materials/MaterialLibrary","source":"engine/render/materials/MaterialLibrary.js","import":"/engine/render/materials/MaterialLibrary.js","sourceHash":"da56fe8b87daaedec0f3ef7f8880727b951c41185917b2f231ac25386fa994bd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/MaterialLibrary.js#0004:MATERIAL_LIBRARY_SCHEMA","exportIndex":4,"name":"MATERIAL_LIBRARY_SCHEMA","kind":"constant","signature":"MATERIAL_LIBRARY_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/MaterialLibrary.md","moduleTitle":"render/materials/MaterialLibrary","source":"engine/render/materials/MaterialLibrary.js","import":"/engine/render/materials/MaterialLibrary.js","sourceHash":"da56fe8b87daaedec0f3ef7f8880727b951c41185917b2f231ac25386fa994bd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/MaterialLibrary.js#0005:MATERIAL_LIBRARY_SCHEMA_VERSION","exportIndex":5,"name":"MATERIAL_LIBRARY_SCHEMA_VERSION","kind":"constant","signature":"MATERIAL_LIBRARY_SCHEMA_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/MaterialSystem.md","moduleTitle":"render/materials/MaterialSystem","source":"engine/render/materials/MaterialSystem.js","import":"/engine/render/materials/MaterialSystem.js","sourceHash":"0efbdaf20e183c1b1a7632887511bea6745287c2386178b75b181b6c1efab815","subsystem":"engine","recordType":"api-module","id":"module:engine/render/materials/MaterialSystem.js","title":"render/materials/MaterialSystem","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/MaterialSystem.md","moduleTitle":"render/materials/MaterialSystem","source":"engine/render/materials/MaterialSystem.js","import":"/engine/render/materials/MaterialSystem.js","sourceHash":"0efbdaf20e183c1b1a7632887511bea6745287c2386178b75b181b6c1efab815","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/MaterialSystem.js#0000:normalizeMaterialDescriptor","exportIndex":0,"name":"normalizeMaterialDescriptor","kind":"function","signature":"normalizeMaterialDescriptor(input)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/MaterialSystem.md","moduleTitle":"render/materials/MaterialSystem","source":"engine/render/materials/MaterialSystem.js","import":"/engine/render/materials/MaterialSystem.js","sourceHash":"0efbdaf20e183c1b1a7632887511bea6745287c2386178b75b181b6c1efab815","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/MaterialSystem.js#0001:createMaterialSystem","exportIndex":1,"name":"createMaterialSystem","kind":"function","signature":"createMaterialSystem(device, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/PipelineCache.md","moduleTitle":"render/materials/PipelineCache","source":"engine/render/materials/PipelineCache.js","import":"/engine/render/materials/PipelineCache.js","sourceHash":"b210e97a7906b46d028552d0c10240a2572363a58d44c76729e80f0e9206dc3d","subsystem":"engine","recordType":"api-module","id":"module:engine/render/materials/PipelineCache.js","title":"render/materials/PipelineCache","summary":"PipelineCache.js - WebGPU Pipeline Caching and Specialization Implements: 1. Pipeline caching with composite keys (shader + overrides + render state) 2. Async pipeline compilation to prevent frame hitches 3. Pipeline specialization via override constants 4. Automatic pipeline invalidation on shader changes","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/PipelineCache.md","moduleTitle":"render/materials/PipelineCache","source":"engine/render/materials/PipelineCache.js","import":"/engine/render/materials/PipelineCache.js","sourceHash":"b210e97a7906b46d028552d0c10240a2572363a58d44c76729e80f0e9206dc3d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/PipelineCache.js#0000:RenderStateDescriptor","exportIndex":0,"name":"RenderStateDescriptor","kind":"class","signature":"class RenderStateDescriptor","summary":"RenderStateDescriptor - Describes render pipeline state"}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/PipelineCache.md","moduleTitle":"render/materials/PipelineCache","source":"engine/render/materials/PipelineCache.js","import":"/engine/render/materials/PipelineCache.js","sourceHash":"b210e97a7906b46d028552d0c10240a2572363a58d44c76729e80f0e9206dc3d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/PipelineCache.js#0001:PipelineDescriptor","exportIndex":1,"name":"PipelineDescriptor","kind":"class","signature":"class PipelineDescriptor","summary":"PipelineDescriptor - Complete pipeline configuration"}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/PipelineCache.md","moduleTitle":"render/materials/PipelineCache","source":"engine/render/materials/PipelineCache.js","import":"/engine/render/materials/PipelineCache.js","sourceHash":"b210e97a7906b46d028552d0c10240a2572363a58d44c76729e80f0e9206dc3d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/PipelineCache.js#0002:ComputePipelineDescriptor","exportIndex":2,"name":"ComputePipelineDescriptor","kind":"class","signature":"class ComputePipelineDescriptor","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/PipelineCache.md","moduleTitle":"render/materials/PipelineCache","source":"engine/render/materials/PipelineCache.js","import":"/engine/render/materials/PipelineCache.js","sourceHash":"b210e97a7906b46d028552d0c10240a2572363a58d44c76729e80f0e9206dc3d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/PipelineCache.js#0003:PipelineCache","exportIndex":3,"name":"PipelineCache","kind":"class","signature":"class PipelineCache","summary":"PipelineCache - Caches compiled pipelines"}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/PipelineCache.md","moduleTitle":"render/materials/PipelineCache","source":"engine/render/materials/PipelineCache.js","import":"/engine/render/materials/PipelineCache.js","sourceHash":"b210e97a7906b46d028552d0c10240a2572363a58d44c76729e80f0e9206dc3d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/PipelineCache.js#0004:ComputePipelineCache","exportIndex":4,"name":"ComputePipelineCache","kind":"class","signature":"class ComputePipelineCache","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/PipelineCache.md","moduleTitle":"render/materials/PipelineCache","source":"engine/render/materials/PipelineCache.js","import":"/engine/render/materials/PipelineCache.js","sourceHash":"b210e97a7906b46d028552d0c10240a2572363a58d44c76729e80f0e9206dc3d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/PipelineCache.js#0005:ShaderModuleCache","exportIndex":5,"name":"ShaderModuleCache","kind":"class","signature":"class ShaderModuleCache","summary":"ShaderModuleCache - Caches compiled shader modules"}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/PipelineCache.md","moduleTitle":"render/materials/PipelineCache","source":"engine/render/materials/PipelineCache.js","import":"/engine/render/materials/PipelineCache.js","sourceHash":"b210e97a7906b46d028552d0c10240a2572363a58d44c76729e80f0e9206dc3d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/PipelineCache.js#0006:MaterialPipelineManager","exportIndex":6,"name":"MaterialPipelineManager","kind":"class","signature":"class MaterialPipelineManager","summary":"MaterialPipelineManager - High-level material-to-pipeline management"}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/ShaderComposer.md","moduleTitle":"render/materials/ShaderComposer","source":"engine/render/materials/ShaderComposer.js","import":"/engine/render/materials/ShaderComposer.js","sourceHash":"241e9acad1aa0f4ca5a84d42cbee32d3b4a4fe50154ac75a4d593be608670d3e","subsystem":"engine","recordType":"api-module","id":"module:engine/render/materials/ShaderComposer.js","title":"render/materials/ShaderComposer","summary":"ShaderChunkRegistry - Central registry for shader code chunks","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/ShaderComposer.md","moduleTitle":"render/materials/ShaderComposer","source":"engine/render/materials/ShaderComposer.js","import":"/engine/render/materials/ShaderComposer.js","sourceHash":"241e9acad1aa0f4ca5a84d42cbee32d3b4a4fe50154ac75a4d593be608670d3e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/ShaderComposer.js#0000:ShaderChunkRegistry","exportIndex":0,"name":"ShaderChunkRegistry","kind":"class","signature":"class ShaderChunkRegistry","summary":"ShaderChunkRegistry - Central registry for shader code chunks"}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/ShaderComposer.md","moduleTitle":"render/materials/ShaderComposer","source":"engine/render/materials/ShaderComposer.js","import":"/engine/render/materials/ShaderComposer.js","sourceHash":"241e9acad1aa0f4ca5a84d42cbee32d3b4a4fe50154ac75a4d593be608670d3e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/ShaderComposer.js#0001:PipelineOverrides","exportIndex":1,"name":"PipelineOverrides","kind":"class","signature":"class PipelineOverrides","summary":"PipelineOverrides - Manage WGSL override constants WGSL override constants allow compile-time specialization: ```wgsl override USE_NORMAL_MAP: bool = false; override ALPHA_CUTOFF: f32 = 0.5; ```"}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/ShaderComposer.md","moduleTitle":"render/materials/ShaderComposer","source":"engine/render/materials/ShaderComposer.js","import":"/engine/render/materials/ShaderComposer.js","sourceHash":"241e9acad1aa0f4ca5a84d42cbee32d3b4a4fe50154ac75a4d593be608670d3e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/ShaderComposer.js#0002:ShaderVariant","exportIndex":2,"name":"ShaderVariant","kind":"class","signature":"class ShaderVariant","summary":"ShaderVariant - A specific configuration of a shader"}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/ShaderComposer.md","moduleTitle":"render/materials/ShaderComposer","source":"engine/render/materials/ShaderComposer.js","import":"/engine/render/materials/ShaderComposer.js","sourceHash":"241e9acad1aa0f4ca5a84d42cbee32d3b4a4fe50154ac75a4d593be608670d3e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/ShaderComposer.js#0003:UberShaderBuilder","exportIndex":3,"name":"UberShaderBuilder","kind":"class","signature":"class UberShaderBuilder","summary":"UberShaderBuilder - Build ubershaders with feature toggles"}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/ShaderComposer.md","moduleTitle":"render/materials/ShaderComposer","source":"engine/render/materials/ShaderComposer.js","import":"/engine/render/materials/ShaderComposer.js","sourceHash":"241e9acad1aa0f4ca5a84d42cbee32d3b4a4fe50154ac75a4d593be608670d3e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/ShaderComposer.js#0004:createDefaultRegistry","exportIndex":4,"name":"createDefaultRegistry","kind":"function","signature":"createDefaultRegistry()","summary":"Create a default shader chunk registry with standard chunks"}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/ShaderComposer.md","moduleTitle":"render/materials/ShaderComposer","source":"engine/render/materials/ShaderComposer.js","import":"/engine/render/materials/ShaderComposer.js","sourceHash":"241e9acad1aa0f4ca5a84d42cbee32d3b4a4fe50154ac75a4d593be608670d3e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/ShaderComposer.js#0005:STANDARD_CHUNKS","exportIndex":5,"name":"STANDARD_CHUNKS","kind":"constant","signature":"STANDARD_CHUNKS","summary":"Standard WGSL chunks for voxel rendering"}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/Std140Layout.md","moduleTitle":"render/materials/Std140Layout","source":"engine/render/materials/Std140Layout.js","import":"/engine/render/materials/Std140Layout.js","sourceHash":"b302a6d42b557f2538074fbd90dd56c4c53e42df3c3042a0bd1880f3b41c3261","subsystem":"engine","recordType":"api-module","id":"module:engine/render/materials/Std140Layout.js","title":"render/materials/Std140Layout","summary":"Std140StructBuilder - Build CPU-side structs that match GPU layout exactly","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/Std140Layout.md","moduleTitle":"render/materials/Std140Layout","source":"engine/render/materials/Std140Layout.js","import":"/engine/render/materials/Std140Layout.js","sourceHash":"b302a6d42b557f2538074fbd90dd56c4c53e42df3c3042a0bd1880f3b41c3261","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/Std140Layout.js#0000:Std140StructBuilder","exportIndex":0,"name":"Std140StructBuilder","kind":"class","signature":"class Std140StructBuilder","summary":"Std140StructBuilder - Build CPU-side structs that match GPU layout exactly"}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/Std140Layout.md","moduleTitle":"render/materials/Std140Layout","source":"engine/render/materials/Std140Layout.js","import":"/engine/render/materials/Std140Layout.js","sourceHash":"b302a6d42b557f2538074fbd90dd56c4c53e42df3c3042a0bd1880f3b41c3261","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/Std140Layout.js#0001:Std140StructLayout","exportIndex":1,"name":"Std140StructLayout","kind":"class","signature":"class Std140StructLayout","summary":"Std140StructLayout - Immutable layout definition with write methods"}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/Std140Layout.md","moduleTitle":"render/materials/Std140Layout","source":"engine/render/materials/Std140Layout.js","import":"/engine/render/materials/Std140Layout.js","sourceHash":"b302a6d42b557f2538074fbd90dd56c4c53e42df3c3042a0bd1880f3b41c3261","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/Std140Layout.js#0002:alignOffset","exportIndex":2,"name":"alignOffset","kind":"function","signature":"alignOffset(currentOffset, alignment)","summary":"Calculate aligned offset for a field"}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/Std140Layout.md","moduleTitle":"render/materials/Std140Layout","source":"engine/render/materials/Std140Layout.js","import":"/engine/render/materials/Std140Layout.js","sourceHash":"b302a6d42b557f2538074fbd90dd56c4c53e42df3c3042a0bd1880f3b41c3261","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/Std140Layout.js#0003:createFrameUniformsLayout","exportIndex":3,"name":"createFrameUniformsLayout","kind":"function","signature":"createFrameUniformsLayout()","summary":"Create a FrameUniforms layout matching the VoxelRenderer"}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/Std140Layout.md","moduleTitle":"render/materials/Std140Layout","source":"engine/render/materials/Std140Layout.js","import":"/engine/render/materials/Std140Layout.js","sourceHash":"b302a6d42b557f2538074fbd90dd56c4c53e42df3c3042a0bd1880f3b41c3261","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/Std140Layout.js#0004:createChunkUniformsLayout","exportIndex":4,"name":"createChunkUniformsLayout","kind":"function","signature":"createChunkUniformsLayout()","summary":"Create a ChunkUniforms layout"}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/Std140Layout.md","moduleTitle":"render/materials/Std140Layout","source":"engine/render/materials/Std140Layout.js","import":"/engine/render/materials/Std140Layout.js","sourceHash":"b302a6d42b557f2538074fbd90dd56c4c53e42df3c3042a0bd1880f3b41c3261","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/Std140Layout.js#0005:createPBRMaterialLayout","exportIndex":5,"name":"createPBRMaterialLayout","kind":"function","signature":"createPBRMaterialLayout()","summary":"Create a MaterialUniforms layout for PBR materials"}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/Std140Layout.md","moduleTitle":"render/materials/Std140Layout","source":"engine/render/materials/Std140Layout.js","import":"/engine/render/materials/Std140Layout.js","sourceHash":"b302a6d42b557f2538074fbd90dd56c4c53e42df3c3042a0bd1880f3b41c3261","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/Std140Layout.js#0006:STD140_TYPES","exportIndex":6,"name":"STD140_TYPES","kind":"constant","signature":"STD140_TYPES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/TextureManager.md","moduleTitle":"render/materials/TextureManager","source":"engine/render/materials/TextureManager.js","import":"/engine/render/materials/TextureManager.js","sourceHash":"f3af0fb1e7d010e34a4b56151e64068398a8c91994e25047151001cfc15670f5","subsystem":"engine","recordType":"api-module","id":"module:engine/render/materials/TextureManager.js","title":"render/materials/TextureManager","summary":"Create a TextureManager instance.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/TextureManager.md","moduleTitle":"render/materials/TextureManager","source":"engine/render/materials/TextureManager.js","import":"/engine/render/materials/TextureManager.js","sourceHash":"f3af0fb1e7d010e34a4b56151e64068398a8c91994e25047151001cfc15670f5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/TextureManager.js#0000:createTextureManager","exportIndex":0,"name":"createTextureManager","kind":"function","signature":"createTextureManager(device, options = {})","summary":"Create a TextureManager instance."}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/VoxelMaterial.md","moduleTitle":"render/materials/VoxelMaterial","source":"engine/render/materials/VoxelMaterial.js","import":"/engine/render/materials/VoxelMaterial.js","sourceHash":"5bb14e08250cb9bf9e85eb226a0b8d6cb6cb6bf3df74ee76049da4d0347a5379","subsystem":"engine","recordType":"api-module","id":"module:engine/render/materials/VoxelMaterial.js","title":"render/materials/VoxelMaterial","summary":"VoxelMaterial.js - Production Voxel Material Implementation Now powered by vGPU driver Demonstrates the complete material system architecture: - Frequency-based bind groups (Frame/Material/Chunk) - std140-compliant uniform layouts - Pipeline specialization with override constants - Modular shader composition","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/VoxelMaterial.md","moduleTitle":"render/materials/VoxelMaterial","source":"engine/render/materials/VoxelMaterial.js","import":"/engine/render/materials/VoxelMaterial.js","sourceHash":"5bb14e08250cb9bf9e85eb226a0b8d6cb6cb6bf3df74ee76049da4d0347a5379","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/VoxelMaterial.js#0000:VoxelMaterial","exportIndex":0,"name":"VoxelMaterial","kind":"class","signature":"class VoxelMaterial","summary":"VoxelMaterial - Complete material implementation for voxel rendering"}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/VoxelMaterial.md","moduleTitle":"render/materials/VoxelMaterial","source":"engine/render/materials/VoxelMaterial.js","import":"/engine/render/materials/VoxelMaterial.js","sourceHash":"5bb14e08250cb9bf9e85eb226a0b8d6cb6cb6bf3df74ee76049da4d0347a5379","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/VoxelMaterial.js#0001:createVoxelFrameLayout","exportIndex":1,"name":"createVoxelFrameLayout","kind":"function","signature":"createVoxelFrameLayout()","summary":"Create the Frame uniforms layout (Group 0)"}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/VoxelMaterial.md","moduleTitle":"render/materials/VoxelMaterial","source":"engine/render/materials/VoxelMaterial.js","import":"/engine/render/materials/VoxelMaterial.js","sourceHash":"5bb14e08250cb9bf9e85eb226a0b8d6cb6cb6bf3df74ee76049da4d0347a5379","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/VoxelMaterial.js#0002:createVoxelMaterialLayout","exportIndex":2,"name":"createVoxelMaterialLayout","kind":"function","signature":"createVoxelMaterialLayout()","summary":"Create the Material uniforms layout (Group 1)"}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/VoxelMaterial.md","moduleTitle":"render/materials/VoxelMaterial","source":"engine/render/materials/VoxelMaterial.js","import":"/engine/render/materials/VoxelMaterial.js","sourceHash":"5bb14e08250cb9bf9e85eb226a0b8d6cb6cb6bf3df74ee76049da4d0347a5379","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/VoxelMaterial.js#0003:createVoxelChunkLayout","exportIndex":3,"name":"createVoxelChunkLayout","kind":"function","signature":"createVoxelChunkLayout()","summary":"Create the Chunk uniforms layout (Group 2)"}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/VoxelMaterial.md","moduleTitle":"render/materials/VoxelMaterial","source":"engine/render/materials/VoxelMaterial.js","import":"/engine/render/materials/VoxelMaterial.js","sourceHash":"5bb14e08250cb9bf9e85eb226a0b8d6cb6cb6bf3df74ee76049da4d0347a5379","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/VoxelMaterial.js#0004:VOXEL_VERTEX_LAYOUT","exportIndex":4,"name":"VOXEL_VERTEX_LAYOUT","kind":"constant","signature":"VOXEL_VERTEX_LAYOUT","summary":"Standard voxel vertex buffer layout"}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/VoxelMaterialIntegration.md","moduleTitle":"render/materials/VoxelMaterialIntegration","source":"engine/render/materials/VoxelMaterialIntegration.js","import":"/engine/render/materials/VoxelMaterialIntegration.js","sourceHash":"93e4962749e0688a62fe44404f57f136c37e25d969710a85cb1ad823942f5f70","subsystem":"engine","recordType":"api-module","id":"module:engine/render/materials/VoxelMaterialIntegration.js","title":"render/materials/VoxelMaterialIntegration","summary":"VoxelMaterialManager - Manages voxel materials with the new system","exportCount":9}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/VoxelMaterialIntegration.md","moduleTitle":"render/materials/VoxelMaterialIntegration","source":"engine/render/materials/VoxelMaterialIntegration.js","import":"/engine/render/materials/VoxelMaterialIntegration.js","sourceHash":"93e4962749e0688a62fe44404f57f136c37e25d969710a85cb1ad823942f5f70","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/VoxelMaterialIntegration.js#0000:VoxelMaterialManager","exportIndex":0,"name":"VoxelMaterialManager","kind":"class","signature":"class VoxelMaterialManager","summary":"VoxelMaterialManager - Manages voxel materials with the new system"}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/VoxelMaterialIntegration.md","moduleTitle":"render/materials/VoxelMaterialIntegration","source":"engine/render/materials/VoxelMaterialIntegration.js","import":"/engine/render/materials/VoxelMaterialIntegration.js","sourceHash":"93e4962749e0688a62fe44404f57f136c37e25d969710a85cb1ad823942f5f70","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/VoxelMaterialIntegration.js#0001:createVoxelFrameUniformsLayout","exportIndex":1,"name":"createVoxelFrameUniformsLayout","kind":"function","signature":"createVoxelFrameUniformsLayout()","summary":"Create validated Frame uniforms layout matching VoxelRenderer shader"}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/VoxelMaterialIntegration.md","moduleTitle":"render/materials/VoxelMaterialIntegration","source":"engine/render/materials/VoxelMaterialIntegration.js","import":"/engine/render/materials/VoxelMaterialIntegration.js","sourceHash":"93e4962749e0688a62fe44404f57f136c37e25d969710a85cb1ad823942f5f70","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/VoxelMaterialIntegration.js#0002:createVoxelChunkUniformsLayout","exportIndex":2,"name":"createVoxelChunkUniformsLayout","kind":"function","signature":"createVoxelChunkUniformsLayout()","summary":"Create validated Chunk uniforms layout"}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/VoxelMaterialIntegration.md","moduleTitle":"render/materials/VoxelMaterialIntegration","source":"engine/render/materials/VoxelMaterialIntegration.js","import":"/engine/render/materials/VoxelMaterialIntegration.js","sourceHash":"93e4962749e0688a62fe44404f57f136c37e25d969710a85cb1ad823942f5f70","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/VoxelMaterialIntegration.js#0003:createDefaultVoxelOverrides","exportIndex":3,"name":"createDefaultVoxelOverrides","kind":"function","signature":"createDefaultVoxelOverrides()","summary":"Create default voxel pipeline overrides"}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/VoxelMaterialIntegration.md","moduleTitle":"render/materials/VoxelMaterialIntegration","source":"engine/render/materials/VoxelMaterialIntegration.js","import":"/engine/render/materials/VoxelMaterialIntegration.js","sourceHash":"93e4962749e0688a62fe44404f57f136c37e25d969710a85cb1ad823942f5f70","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/VoxelMaterialIntegration.js#0004:createLowQualityOverrides","exportIndex":4,"name":"createLowQualityOverrides","kind":"function","signature":"createLowQualityOverrides()","summary":"Create low-quality overrides for performance"}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/VoxelMaterialIntegration.md","moduleTitle":"render/materials/VoxelMaterialIntegration","source":"engine/render/materials/VoxelMaterialIntegration.js","import":"/engine/render/materials/VoxelMaterialIntegration.js","sourceHash":"93e4962749e0688a62fe44404f57f136c37e25d969710a85cb1ad823942f5f70","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/VoxelMaterialIntegration.js#0005:integrateWithVoxelRenderer","exportIndex":5,"name":"integrateWithVoxelRenderer","kind":"function","signature":"integrateWithVoxelRenderer(renderer, device)","summary":"Integrate material system with existing VoxelRenderer"}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/VoxelMaterialIntegration.md","moduleTitle":"render/materials/VoxelMaterialIntegration","source":"engine/render/materials/VoxelMaterialIntegration.js","import":"/engine/render/materials/VoxelMaterialIntegration.js","sourceHash":"93e4962749e0688a62fe44404f57f136c37e25d969710a85cb1ad823942f5f70","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/VoxelMaterialIntegration.js#0006:createValidatedFrameUniformsBuffer","exportIndex":6,"name":"createValidatedFrameUniformsBuffer","kind":"function","signature":"createValidatedFrameUniformsBuffer(device)","summary":"Create frame uniforms buffer with validated layout"}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/VoxelMaterialIntegration.md","moduleTitle":"render/materials/VoxelMaterialIntegration","source":"engine/render/materials/VoxelMaterialIntegration.js","import":"/engine/render/materials/VoxelMaterialIntegration.js","sourceHash":"93e4962749e0688a62fe44404f57f136c37e25d969710a85cb1ad823942f5f70","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/VoxelMaterialIntegration.js#0007:createValidatedChunkUniformsBuffer","exportIndex":7,"name":"createValidatedChunkUniformsBuffer","kind":"function","signature":"createValidatedChunkUniformsBuffer(device)","summary":"Create chunk uniforms buffer with validated layout"}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/VoxelMaterialIntegration.md","moduleTitle":"render/materials/VoxelMaterialIntegration","source":"engine/render/materials/VoxelMaterialIntegration.js","import":"/engine/render/materials/VoxelMaterialIntegration.js","sourceHash":"93e4962749e0688a62fe44404f57f136c37e25d969710a85cb1ad823942f5f70","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/VoxelMaterialIntegration.js#0008:VOXEL_FEATURES","exportIndex":8,"name":"VOXEL_FEATURES","kind":"constant","signature":"VOXEL_FEATURES","summary":"Voxel shader features that can be toggled via overrides"}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/index.md","moduleTitle":"render/materials/index","source":"engine/render/materials/index.js","import":"/engine/render/materials/index.js","sourceHash":"d5cbf10dc5a31e76ef0db245c541932218072c4ab989722337a84b5c162c34e6","subsystem":"engine","recordType":"api-module","id":"module:engine/render/materials/index.js","title":"render/materials/index","summary":"Create a complete material system for voxel rendering","exportCount":42}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/index.md","moduleTitle":"render/materials/index","source":"engine/render/materials/index.js","import":"/engine/render/materials/index.js","sourceHash":"d5cbf10dc5a31e76ef0db245c541932218072c4ab989722337a84b5c162c34e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/index.js#0000:createVoxelMaterialSystem","exportIndex":0,"name":"createVoxelMaterialSystem","kind":"function","signature":"createVoxelMaterialSystem(device)","summary":"Create a complete material system for voxel rendering"}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/index.md","moduleTitle":"render/materials/index","source":"engine/render/materials/index.js","import":"/engine/render/materials/index.js","sourceHash":"d5cbf10dc5a31e76ef0db245c541932218072c4ab989722337a84b5c162c34e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/index.js#0001:BIND_GROUP_FREQUENCY","exportIndex":1,"name":"BIND_GROUP_FREQUENCY","kind":"re-export","signature":"BIND_GROUP_FREQUENCY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/index.md","moduleTitle":"render/materials/index","source":"engine/render/materials/index.js","import":"/engine/render/materials/index.js","sourceHash":"d5cbf10dc5a31e76ef0db245c541932218072c4ab989722337a84b5c162c34e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/index.js#0002:BindGroupCache","exportIndex":2,"name":"BindGroupCache","kind":"re-export","signature":"BindGroupCache","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/index.md","moduleTitle":"render/materials/index","source":"engine/render/materials/index.js","import":"/engine/render/materials/index.js","sourceHash":"d5cbf10dc5a31e76ef0db245c541932218072c4ab989722337a84b5c162c34e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/index.js#0003:BindGroupLayoutBuilder","exportIndex":3,"name":"BindGroupLayoutBuilder","kind":"re-export","signature":"BindGroupLayoutBuilder","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/index.md","moduleTitle":"render/materials/index","source":"engine/render/materials/index.js","import":"/engine/render/materials/index.js","sourceHash":"d5cbf10dc5a31e76ef0db245c541932218072c4ab989722337a84b5c162c34e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/index.js#0004:ComputePipelineCache","exportIndex":4,"name":"ComputePipelineCache","kind":"re-export","signature":"ComputePipelineCache","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/index.md","moduleTitle":"render/materials/index","source":"engine/render/materials/index.js","import":"/engine/render/materials/index.js","sourceHash":"d5cbf10dc5a31e76ef0db245c541932218072c4ab989722337a84b5c162c34e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/index.js#0005:ComputePipelineDescriptor","exportIndex":5,"name":"ComputePipelineDescriptor","kind":"re-export","signature":"ComputePipelineDescriptor","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/index.md","moduleTitle":"render/materials/index","source":"engine/render/materials/index.js","import":"/engine/render/materials/index.js","sourceHash":"d5cbf10dc5a31e76ef0db245c541932218072c4ab989722337a84b5c162c34e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/index.js#0006:FrameBindGroup","exportIndex":6,"name":"FrameBindGroup","kind":"re-export","signature":"FrameBindGroup","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/index.md","moduleTitle":"render/materials/index","source":"engine/render/materials/index.js","import":"/engine/render/materials/index.js","sourceHash":"d5cbf10dc5a31e76ef0db245c541932218072c4ab989722337a84b5c162c34e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/index.js#0007:MaterialBindGroup","exportIndex":7,"name":"MaterialBindGroup","kind":"re-export","signature":"MaterialBindGroup","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/index.md","moduleTitle":"render/materials/index","source":"engine/render/materials/index.js","import":"/engine/render/materials/index.js","sourceHash":"d5cbf10dc5a31e76ef0db245c541932218072c4ab989722337a84b5c162c34e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/index.js#0008:MaterialPipelineManager","exportIndex":8,"name":"MaterialPipelineManager","kind":"re-export","signature":"MaterialPipelineManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/index.md","moduleTitle":"render/materials/index","source":"engine/render/materials/index.js","import":"/engine/render/materials/index.js","sourceHash":"d5cbf10dc5a31e76ef0db245c541932218072c4ab989722337a84b5c162c34e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/index.js#0009:ObjectBindGroup","exportIndex":9,"name":"ObjectBindGroup","kind":"re-export","signature":"ObjectBindGroup","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/index.md","moduleTitle":"render/materials/index","source":"engine/render/materials/index.js","import":"/engine/render/materials/index.js","sourceHash":"d5cbf10dc5a31e76ef0db245c541932218072c4ab989722337a84b5c162c34e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/index.js#0010:PipelineCache","exportIndex":10,"name":"PipelineCache","kind":"re-export","signature":"PipelineCache","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/index.md","moduleTitle":"render/materials/index","source":"engine/render/materials/index.js","import":"/engine/render/materials/index.js","sourceHash":"d5cbf10dc5a31e76ef0db245c541932218072c4ab989722337a84b5c162c34e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/index.js#0011:PipelineDescriptor","exportIndex":11,"name":"PipelineDescriptor","kind":"re-export","signature":"PipelineDescriptor","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/index.md","moduleTitle":"render/materials/index","source":"engine/render/materials/index.js","import":"/engine/render/materials/index.js","sourceHash":"d5cbf10dc5a31e76ef0db245c541932218072c4ab989722337a84b5c162c34e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/index.js#0012:PipelineOverrides","exportIndex":12,"name":"PipelineOverrides","kind":"re-export","signature":"PipelineOverrides","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/index.md","moduleTitle":"render/materials/index","source":"engine/render/materials/index.js","import":"/engine/render/materials/index.js","sourceHash":"d5cbf10dc5a31e76ef0db245c541932218072c4ab989722337a84b5c162c34e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/index.js#0013:RenderStateDescriptor","exportIndex":13,"name":"RenderStateDescriptor","kind":"re-export","signature":"RenderStateDescriptor","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/index.md","moduleTitle":"render/materials/index","source":"engine/render/materials/index.js","import":"/engine/render/materials/index.js","sourceHash":"d5cbf10dc5a31e76ef0db245c541932218072c4ab989722337a84b5c162c34e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/index.js#0014:STANDARD_CHUNKS","exportIndex":14,"name":"STANDARD_CHUNKS","kind":"re-export","signature":"STANDARD_CHUNKS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/index.md","moduleTitle":"render/materials/index","source":"engine/render/materials/index.js","import":"/engine/render/materials/index.js","sourceHash":"d5cbf10dc5a31e76ef0db245c541932218072c4ab989722337a84b5c162c34e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/index.js#0015:STD140_TYPES","exportIndex":15,"name":"STD140_TYPES","kind":"re-export","signature":"STD140_TYPES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/index.md","moduleTitle":"render/materials/index","source":"engine/render/materials/index.js","import":"/engine/render/materials/index.js","sourceHash":"d5cbf10dc5a31e76ef0db245c541932218072c4ab989722337a84b5c162c34e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/index.js#0016:ShaderChunkRegistry","exportIndex":16,"name":"ShaderChunkRegistry","kind":"re-export","signature":"ShaderChunkRegistry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/index.md","moduleTitle":"render/materials/index","source":"engine/render/materials/index.js","import":"/engine/render/materials/index.js","sourceHash":"d5cbf10dc5a31e76ef0db245c541932218072c4ab989722337a84b5c162c34e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/index.js#0017:ShaderModuleCache","exportIndex":17,"name":"ShaderModuleCache","kind":"re-export","signature":"ShaderModuleCache","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/index.md","moduleTitle":"render/materials/index","source":"engine/render/materials/index.js","import":"/engine/render/materials/index.js","sourceHash":"d5cbf10dc5a31e76ef0db245c541932218072c4ab989722337a84b5c162c34e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/index.js#0018:ShaderVariant","exportIndex":18,"name":"ShaderVariant","kind":"re-export","signature":"ShaderVariant","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/index.md","moduleTitle":"render/materials/index","source":"engine/render/materials/index.js","import":"/engine/render/materials/index.js","sourceHash":"d5cbf10dc5a31e76ef0db245c541932218072c4ab989722337a84b5c162c34e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/index.js#0019:Std140StructBuilder","exportIndex":19,"name":"Std140StructBuilder","kind":"re-export","signature":"Std140StructBuilder","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/index.md","moduleTitle":"render/materials/index","source":"engine/render/materials/index.js","import":"/engine/render/materials/index.js","sourceHash":"d5cbf10dc5a31e76ef0db245c541932218072c4ab989722337a84b5c162c34e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/index.js#0020:Std140StructLayout","exportIndex":20,"name":"Std140StructLayout","kind":"re-export","signature":"Std140StructLayout","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/index.md","moduleTitle":"render/materials/index","source":"engine/render/materials/index.js","import":"/engine/render/materials/index.js","sourceHash":"d5cbf10dc5a31e76ef0db245c541932218072c4ab989722337a84b5c162c34e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/index.js#0021:UberShaderBuilder","exportIndex":21,"name":"UberShaderBuilder","kind":"re-export","signature":"UberShaderBuilder","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/index.md","moduleTitle":"render/materials/index","source":"engine/render/materials/index.js","import":"/engine/render/materials/index.js","sourceHash":"d5cbf10dc5a31e76ef0db245c541932218072c4ab989722337a84b5c162c34e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/index.js#0022:VOXEL_FEATURES","exportIndex":22,"name":"VOXEL_FEATURES","kind":"re-export","signature":"VOXEL_FEATURES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/index.md","moduleTitle":"render/materials/index","source":"engine/render/materials/index.js","import":"/engine/render/materials/index.js","sourceHash":"d5cbf10dc5a31e76ef0db245c541932218072c4ab989722337a84b5c162c34e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/index.js#0023:VoxelMaterialManager","exportIndex":23,"name":"VoxelMaterialManager","kind":"re-export","signature":"VoxelMaterialManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/index.md","moduleTitle":"render/materials/index","source":"engine/render/materials/index.js","import":"/engine/render/materials/index.js","sourceHash":"d5cbf10dc5a31e76ef0db245c541932218072c4ab989722337a84b5c162c34e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/index.js#0024:alignOffset","exportIndex":24,"name":"alignOffset","kind":"re-export","signature":"alignOffset","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/index.md","moduleTitle":"render/materials/index","source":"engine/render/materials/index.js","import":"/engine/render/materials/index.js","sourceHash":"d5cbf10dc5a31e76ef0db245c541932218072c4ab989722337a84b5c162c34e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/index.js#0025:createChunkUniformsLayout","exportIndex":25,"name":"createChunkUniformsLayout","kind":"re-export","signature":"createChunkUniformsLayout","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/index.md","moduleTitle":"render/materials/index","source":"engine/render/materials/index.js","import":"/engine/render/materials/index.js","sourceHash":"d5cbf10dc5a31e76ef0db245c541932218072c4ab989722337a84b5c162c34e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/index.js#0026:createDefaultRegistry","exportIndex":26,"name":"createDefaultRegistry","kind":"re-export","signature":"createDefaultRegistry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/index.md","moduleTitle":"render/materials/index","source":"engine/render/materials/index.js","import":"/engine/render/materials/index.js","sourceHash":"d5cbf10dc5a31e76ef0db245c541932218072c4ab989722337a84b5c162c34e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/index.js#0027:createDefaultVoxelOverrides","exportIndex":27,"name":"createDefaultVoxelOverrides","kind":"re-export","signature":"createDefaultVoxelOverrides","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/index.md","moduleTitle":"render/materials/index","source":"engine/render/materials/index.js","import":"/engine/render/materials/index.js","sourceHash":"d5cbf10dc5a31e76ef0db245c541932218072c4ab989722337a84b5c162c34e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/index.js#0028:createFrameUniformsLayout","exportIndex":28,"name":"createFrameUniformsLayout","kind":"re-export","signature":"createFrameUniformsLayout","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/index.md","moduleTitle":"render/materials/index","source":"engine/render/materials/index.js","import":"/engine/render/materials/index.js","sourceHash":"d5cbf10dc5a31e76ef0db245c541932218072c4ab989722337a84b5c162c34e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/index.js#0029:createLowQualityOverrides","exportIndex":29,"name":"createLowQualityOverrides","kind":"re-export","signature":"createLowQualityOverrides","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/index.md","moduleTitle":"render/materials/index","source":"engine/render/materials/index.js","import":"/engine/render/materials/index.js","sourceHash":"d5cbf10dc5a31e76ef0db245c541932218072c4ab989722337a84b5c162c34e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/index.js#0030:createMaterialLibrary","exportIndex":30,"name":"createMaterialLibrary","kind":"re-export","signature":"createMaterialLibrary","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/index.md","moduleTitle":"render/materials/index","source":"engine/render/materials/index.js","import":"/engine/render/materials/index.js","sourceHash":"d5cbf10dc5a31e76ef0db245c541932218072c4ab989722337a84b5c162c34e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/index.js#0031:createMaterialSystem","exportIndex":31,"name":"createMaterialSystem","kind":"re-export","signature":"createMaterialSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/index.md","moduleTitle":"render/materials/index","source":"engine/render/materials/index.js","import":"/engine/render/materials/index.js","sourceHash":"d5cbf10dc5a31e76ef0db245c541932218072c4ab989722337a84b5c162c34e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/index.js#0032:createPBRMaterialLayout","exportIndex":32,"name":"createPBRMaterialLayout","kind":"re-export","signature":"createPBRMaterialLayout","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/index.md","moduleTitle":"render/materials/index","source":"engine/render/materials/index.js","import":"/engine/render/materials/index.js","sourceHash":"d5cbf10dc5a31e76ef0db245c541932218072c4ab989722337a84b5c162c34e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/index.js#0033:createTextureManager","exportIndex":33,"name":"createTextureManager","kind":"re-export","signature":"createTextureManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/index.md","moduleTitle":"render/materials/index","source":"engine/render/materials/index.js","import":"/engine/render/materials/index.js","sourceHash":"d5cbf10dc5a31e76ef0db245c541932218072c4ab989722337a84b5c162c34e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/index.js#0034:createValidatedChunkUniformsBuffer","exportIndex":34,"name":"createValidatedChunkUniformsBuffer","kind":"re-export","signature":"createValidatedChunkUniformsBuffer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/index.md","moduleTitle":"render/materials/index","source":"engine/render/materials/index.js","import":"/engine/render/materials/index.js","sourceHash":"d5cbf10dc5a31e76ef0db245c541932218072c4ab989722337a84b5c162c34e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/index.js#0035:createValidatedFrameUniformsBuffer","exportIndex":35,"name":"createValidatedFrameUniformsBuffer","kind":"re-export","signature":"createValidatedFrameUniformsBuffer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/index.md","moduleTitle":"render/materials/index","source":"engine/render/materials/index.js","import":"/engine/render/materials/index.js","sourceHash":"d5cbf10dc5a31e76ef0db245c541932218072c4ab989722337a84b5c162c34e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/index.js#0036:createVoxelBindGroupLayouts","exportIndex":36,"name":"createVoxelBindGroupLayouts","kind":"re-export","signature":"createVoxelBindGroupLayouts","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/index.md","moduleTitle":"render/materials/index","source":"engine/render/materials/index.js","import":"/engine/render/materials/index.js","sourceHash":"d5cbf10dc5a31e76ef0db245c541932218072c4ab989722337a84b5c162c34e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/index.js#0037:createVoxelChunkUniformsLayout","exportIndex":37,"name":"createVoxelChunkUniformsLayout","kind":"re-export","signature":"createVoxelChunkUniformsLayout","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/index.md","moduleTitle":"render/materials/index","source":"engine/render/materials/index.js","import":"/engine/render/materials/index.js","sourceHash":"d5cbf10dc5a31e76ef0db245c541932218072c4ab989722337a84b5c162c34e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/index.js#0038:createVoxelFrameUniformsLayout","exportIndex":38,"name":"createVoxelFrameUniformsLayout","kind":"re-export","signature":"createVoxelFrameUniformsLayout","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/index.md","moduleTitle":"render/materials/index","source":"engine/render/materials/index.js","import":"/engine/render/materials/index.js","sourceHash":"d5cbf10dc5a31e76ef0db245c541932218072c4ab989722337a84b5c162c34e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/index.js#0039:integrateWithVoxelRenderer","exportIndex":39,"name":"integrateWithVoxelRenderer","kind":"re-export","signature":"integrateWithVoxelRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/index.md","moduleTitle":"render/materials/index","source":"engine/render/materials/index.js","import":"/engine/render/materials/index.js","sourceHash":"d5cbf10dc5a31e76ef0db245c541932218072c4ab989722337a84b5c162c34e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/index.js#0040:normalizeMaterial","exportIndex":40,"name":"normalizeMaterial","kind":"re-export","signature":"normalizeMaterial","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/materials/index.md","moduleTitle":"render/materials/index","source":"engine/render/materials/index.js","import":"/engine/render/materials/index.js","sourceHash":"d5cbf10dc5a31e76ef0db245c541932218072c4ab989722337a84b5c162c34e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/materials/index.js#0041:normalizeMaterialDescriptor","exportIndex":41,"name":"normalizeMaterialDescriptor","kind":"re-export","signature":"normalizeMaterialDescriptor","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/ClothMeshRenderer.md","moduleTitle":"render/mesh/ClothMeshRenderer","source":"engine/render/mesh/ClothMeshRenderer.js","import":"/engine/render/mesh/ClothMeshRenderer.js","sourceHash":"df5205d002a6f32f0e755c3ff6f638b8fce929ced06570c8ff6619299980d376","subsystem":"engine","recordType":"api-module","id":"module:engine/render/mesh/ClothMeshRenderer.js","title":"render/mesh/ClothMeshRenderer","summary":"ClothMeshRenderer.js - GPU Cloth Mesh Rendering Renders cloth simulations as triangle meshes with proper shading. Reads particle positions from GPU buffer and generates mesh on the fly.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/ClothMeshRenderer.md","moduleTitle":"render/mesh/ClothMeshRenderer","source":"engine/render/mesh/ClothMeshRenderer.js","import":"/engine/render/mesh/ClothMeshRenderer.js","sourceHash":"df5205d002a6f32f0e755c3ff6f638b8fce929ced06570c8ff6619299980d376","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/ClothMeshRenderer.js#0000:ClothMeshRenderer","exportIndex":0,"name":"ClothMeshRenderer","kind":"class","signature":"class ClothMeshRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/CustomMeshRegistry.md","moduleTitle":"render/mesh/CustomMeshRegistry","source":"engine/render/mesh/CustomMeshRegistry.js","import":"/engine/render/mesh/CustomMeshRegistry.js","sourceHash":"09896bc5b783e59ff67753e2f9d11b30340a2d0b646a1d694bb300d416194c3f","subsystem":"engine","recordType":"api-module","id":"module:engine/render/mesh/CustomMeshRegistry.js","title":"render/mesh/CustomMeshRegistry","summary":"============================================================================ CustomMeshRegistry.js - Store imported mesh geometry for custom models ============================================================================","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/CustomMeshRegistry.md","moduleTitle":"render/mesh/CustomMeshRegistry","source":"engine/render/mesh/CustomMeshRegistry.js","import":"/engine/render/mesh/CustomMeshRegistry.js","sourceHash":"09896bc5b783e59ff67753e2f9d11b30340a2d0b646a1d694bb300d416194c3f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/CustomMeshRegistry.js#0000:registerCustomMesh","exportIndex":0,"name":"registerCustomMesh","kind":"function","signature":"registerCustomMesh(meshKey, geo)","summary":"Register a custom mesh geometry."}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/CustomMeshRegistry.md","moduleTitle":"render/mesh/CustomMeshRegistry","source":"engine/render/mesh/CustomMeshRegistry.js","import":"/engine/render/mesh/CustomMeshRegistry.js","sourceHash":"09896bc5b783e59ff67753e2f9d11b30340a2d0b646a1d694bb300d416194c3f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/CustomMeshRegistry.js#0001:unregisterCustomMesh","exportIndex":1,"name":"unregisterCustomMesh","kind":"function","signature":"unregisterCustomMesh(meshKey)","summary":"Unregister a custom mesh."}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/CustomMeshRegistry.md","moduleTitle":"render/mesh/CustomMeshRegistry","source":"engine/render/mesh/CustomMeshRegistry.js","import":"/engine/render/mesh/CustomMeshRegistry.js","sourceHash":"09896bc5b783e59ff67753e2f9d11b30340a2d0b646a1d694bb300d416194c3f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/CustomMeshRegistry.js#0002:getCustomMesh","exportIndex":2,"name":"getCustomMesh","kind":"function","signature":"getCustomMesh(meshKey)","summary":"Get geometry data for a custom mesh."}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/CustomMeshRegistry.md","moduleTitle":"render/mesh/CustomMeshRegistry","source":"engine/render/mesh/CustomMeshRegistry.js","import":"/engine/render/mesh/CustomMeshRegistry.js","sourceHash":"09896bc5b783e59ff67753e2f9d11b30340a2d0b646a1d694bb300d416194c3f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/CustomMeshRegistry.js#0003:isCustomMesh","exportIndex":3,"name":"isCustomMesh","kind":"function","signature":"isCustomMesh(meshType)","summary":"Check if a meshType is a custom (imported) mesh."}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/CustomMeshRegistry.md","moduleTitle":"render/mesh/CustomMeshRegistry","source":"engine/render/mesh/CustomMeshRegistry.js","import":"/engine/render/mesh/CustomMeshRegistry.js","sourceHash":"09896bc5b783e59ff67753e2f9d11b30340a2d0b646a1d694bb300d416194c3f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/CustomMeshRegistry.js#0004:getRegisteredMeshTypes","exportIndex":4,"name":"getRegisteredMeshTypes","kind":"function","signature":"getRegisteredMeshTypes()","summary":"Get all registered custom mesh keys."}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/CustomMeshRegistry.md","moduleTitle":"render/mesh/CustomMeshRegistry","source":"engine/render/mesh/CustomMeshRegistry.js","import":"/engine/render/mesh/CustomMeshRegistry.js","sourceHash":"09896bc5b783e59ff67753e2f9d11b30340a2d0b646a1d694bb300d416194c3f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/CustomMeshRegistry.js#0005:onMeshRegistered","exportIndex":5,"name":"onMeshRegistered","kind":"function","signature":"onMeshRegistered(fn)","summary":"Subscribe to mesh registration events. Callback: (meshKey, geo) => void"}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/CustomMeshRegistry.md","moduleTitle":"render/mesh/CustomMeshRegistry","source":"engine/render/mesh/CustomMeshRegistry.js","import":"/engine/render/mesh/CustomMeshRegistry.js","sourceHash":"09896bc5b783e59ff67753e2f9d11b30340a2d0b646a1d694bb300d416194c3f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/CustomMeshRegistry.js#0006:getCustomMeshCount","exportIndex":6,"name":"getCustomMeshCount","kind":"function","signature":"getCustomMeshCount()","summary":"Get count of registered custom meshes."}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/EntityMeshRenderer.md","moduleTitle":"render/mesh/EntityMeshRenderer","source":"engine/render/mesh/EntityMeshRenderer.js","import":"/engine/render/mesh/EntityMeshRenderer.js","sourceHash":"4c596adc351c3e2126ff808d7094db220c2bdacdee3efad9da959e2ede5a61bb","subsystem":"engine","recordType":"api-module","id":"module:engine/render/mesh/EntityMeshRenderer.js","title":"render/mesh/EntityMeshRenderer","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/EntityMeshRenderer.md","moduleTitle":"render/mesh/EntityMeshRenderer","source":"engine/render/mesh/EntityMeshRenderer.js","import":"/engine/render/mesh/EntityMeshRenderer.js","sourceHash":"4c596adc351c3e2126ff808d7094db220c2bdacdee3efad9da959e2ede5a61bb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/EntityMeshRenderer.js#0000:EntityMeshRenderer","exportIndex":0,"name":"EntityMeshRenderer","kind":"class","signature":"class EntityMeshRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/EntityMeshRenderer.md","moduleTitle":"render/mesh/EntityMeshRenderer","source":"engine/render/mesh/EntityMeshRenderer.js","import":"/engine/render/mesh/EntityMeshRenderer.js","sourceHash":"4c596adc351c3e2126ff808d7094db220c2bdacdee3efad9da959e2ede5a61bb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/EntityMeshRenderer.js#0001:entityMaterialParamsData","exportIndex":1,"name":"entityMaterialParamsData","kind":"function","signature":"entityMaterialParamsData(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/GPUSkinning.md","moduleTitle":"render/mesh/GPUSkinning","source":"engine/render/mesh/GPUSkinning.js","import":"/engine/render/mesh/GPUSkinning.js","sourceHash":"8d9afd01100c42fbe1f1c544b3fce3fc21e1ae59996e54210ff8b1356e485a95","subsystem":"engine","recordType":"api-module","id":"module:engine/render/mesh/GPUSkinning.js","title":"render/mesh/GPUSkinning","summary":"============================================================================ GPUSkinning.js — Compute-shader skeletal skinning  Moves vertex skinning from CPU to GPU. Per skinned mesh: Static buffers (uploaded once):  bind-pose positions+normals+tangents, UVs, joint indices, joint weights Dynamic buffer (per frame):       skin matrices (jointCount × mat4x4) Output:                           interleaved vertex buffer (pos3+norm3+uv2+tangent4) with STORAGE|VERTEX usage so the existing render pipeline reads it directly.  The compute shader skins all vertices in parallel (workgroup_size=64). ============================================================================","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/GPUSkinning.md","moduleTitle":"render/mesh/GPUSkinning","source":"engine/render/mesh/GPUSkinning.js","import":"/engine/render/mesh/GPUSkinning.js","sourceHash":"8d9afd01100c42fbe1f1c544b3fce3fc21e1ae59996e54210ff8b1356e485a95","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/GPUSkinning.js#0000:GPUSkinning","exportIndex":0,"name":"GPUSkinning","kind":"class","signature":"class GPUSkinning","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/ProceduralSkeleton.md","moduleTitle":"render/mesh/ProceduralSkeleton","source":"engine/render/mesh/ProceduralSkeleton.js","import":"/engine/render/mesh/ProceduralSkeleton.js","sourceHash":"b0fffec3d355091069957c1d9c828eeaf9645dbd5077d9d23114ef0edcaeac03","subsystem":"engine","recordType":"api-module","id":"module:engine/render/mesh/ProceduralSkeleton.js","title":"render/mesh/ProceduralSkeleton","summary":"============================================================================ ProceduralSkeleton.js — Auto-generate skeleton + skin weights for arbitrary meshes  Uses PCA to find principal axes, places bones along them, and computes smooth distance-based vertex weights (4 influences per vertex). Output format matches glTF import so it plugs directly into registerSkinnedMesh() / SkeletalAnimation.js. ============================================================================","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/ProceduralSkeleton.md","moduleTitle":"render/mesh/ProceduralSkeleton","source":"engine/render/mesh/ProceduralSkeleton.js","import":"/engine/render/mesh/ProceduralSkeleton.js","sourceHash":"b0fffec3d355091069957c1d9c828eeaf9645dbd5077d9d23114ef0edcaeac03","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/ProceduralSkeleton.js#0000:generateProceduralSkeleton","exportIndex":0,"name":"generateProceduralSkeleton","kind":"function","signature":"generateProceduralSkeleton(positions, normals, options = {})","summary":"Generate a procedural skeleton for an arbitrary mesh. Algorithm: 1. Compute mesh centroid + covariance matrix 2. PCA via Jacobi iteration → 3 principal axes sorted by extent 3. Place bones along principal axis (chain), with optional branches along secondary axis if mesh is wide enough 4. Compute per-vertex weights: 4 nearest bones, inverse-distance 5. Build inverse bind matrices (identity rotation, translation only)"}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/ProceduralSkeleton.md","moduleTitle":"render/mesh/ProceduralSkeleton","source":"engine/render/mesh/ProceduralSkeleton.js","import":"/engine/render/mesh/ProceduralSkeleton.js","sourceHash":"b0fffec3d355091069957c1d9c828eeaf9645dbd5077d9d23114ef0edcaeac03","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/ProceduralSkeleton.js#0001:augmentGeoWithSkeleton","exportIndex":1,"name":"augmentGeoWithSkeleton","kind":"function","signature":"augmentGeoWithSkeleton(geo, options)","summary":"Convenience: generate skeleton AND augment geo object in-place. Returns the skeleton object for passing to registerSkinnedMesh."}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/RopeMeshRenderer.md","moduleTitle":"render/mesh/RopeMeshRenderer","source":"engine/render/mesh/RopeMeshRenderer.js","import":"/engine/render/mesh/RopeMeshRenderer.js","sourceHash":"4267285e542d7ae57b7055f634c1f37c4cd56203678896fd19961af15b860617","subsystem":"engine","recordType":"api-module","id":"module:engine/render/mesh/RopeMeshRenderer.js","title":"render/mesh/RopeMeshRenderer","summary":"RopeMeshRenderer.js - GPU Rope Mesh Rendering with Anisotropic Fiber Shading Renders rope simulations as smooth tube meshes with Marschner hair shading model. Supports twist, color blending, and material properties for realistic fiber appearance.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/RopeMeshRenderer.md","moduleTitle":"render/mesh/RopeMeshRenderer","source":"engine/render/mesh/RopeMeshRenderer.js","import":"/engine/render/mesh/RopeMeshRenderer.js","sourceHash":"4267285e542d7ae57b7055f634c1f37c4cd56203678896fd19961af15b860617","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/RopeMeshRenderer.js#0000:RopeMeshRenderer","exportIndex":0,"name":"RopeMeshRenderer","kind":"class","signature":"class RopeMeshRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/SkeletalAnimation.md","moduleTitle":"render/mesh/SkeletalAnimation","source":"engine/render/mesh/SkeletalAnimation.js","import":"/engine/render/mesh/SkeletalAnimation.js","sourceHash":"4b4bff67cacdb1d683e8b968483b7d34e57d74e1077bd5e49d264b219b52820d","subsystem":"engine","recordType":"api-module","id":"module:engine/render/mesh/SkeletalAnimation.js","title":"render/mesh/SkeletalAnimation","summary":"============================================================================ SkeletalAnimation.js - CPU skeletal animation + skinning for imported models  Evaluates glTF animations per-frame, computes joint world matrices, and skins vertex positions/normals/tangents on CPU. Updates the GPU vertex buffer via EntityMeshRenderer. ============================================================================","exportCount":31}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/SkeletalAnimation.md","moduleTitle":"render/mesh/SkeletalAnimation","source":"engine/render/mesh/SkeletalAnimation.js","import":"/engine/render/mesh/SkeletalAnimation.js","sourceHash":"4b4bff67cacdb1d683e8b968483b7d34e57d74e1077bd5e49d264b219b52820d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/SkeletalAnimation.js#0000:registerSkinnedMesh","exportIndex":0,"name":"registerSkinnedMesh","kind":"function","signature":"registerSkinnedMesh(meshKey, geo, skeleton, animations)","summary":"Register a skinned mesh for animation playback."}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/SkeletalAnimation.md","moduleTitle":"render/mesh/SkeletalAnimation","source":"engine/render/mesh/SkeletalAnimation.js","import":"/engine/render/mesh/SkeletalAnimation.js","sourceHash":"4b4bff67cacdb1d683e8b968483b7d34e57d74e1077bd5e49d264b219b52820d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/SkeletalAnimation.js#0001:unregisterSkinnedMesh","exportIndex":1,"name":"unregisterSkinnedMesh","kind":"function","signature":"unregisterSkinnedMesh(meshKey)","summary":"Unregister a skinned mesh."}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/SkeletalAnimation.md","moduleTitle":"render/mesh/SkeletalAnimation","source":"engine/render/mesh/SkeletalAnimation.js","import":"/engine/render/mesh/SkeletalAnimation.js","sourceHash":"4b4bff67cacdb1d683e8b968483b7d34e57d74e1077bd5e49d264b219b52820d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/SkeletalAnimation.js#0002:getSkinnedMesh","exportIndex":2,"name":"getSkinnedMesh","kind":"function","signature":"getSkinnedMesh(meshKey)","summary":"Get a skinned mesh instance."}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/SkeletalAnimation.md","moduleTitle":"render/mesh/SkeletalAnimation","source":"engine/render/mesh/SkeletalAnimation.js","import":"/engine/render/mesh/SkeletalAnimation.js","sourceHash":"4b4bff67cacdb1d683e8b968483b7d34e57d74e1077bd5e49d264b219b52820d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/SkeletalAnimation.js#0003:tickSkeletalAnimations","exportIndex":3,"name":"tickSkeletalAnimations","kind":"function","signature":"tickSkeletalAnimations(dt)","summary":"Tick all active skinned meshes. Call once per frame before rendering."}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/SkeletalAnimation.md","moduleTitle":"render/mesh/SkeletalAnimation","source":"engine/render/mesh/SkeletalAnimation.js","import":"/engine/render/mesh/SkeletalAnimation.js","sourceHash":"4b4bff67cacdb1d683e8b968483b7d34e57d74e1077bd5e49d264b219b52820d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/SkeletalAnimation.js#0004:registerModelNodeAnimation","exportIndex":4,"name":"registerModelNodeAnimation","kind":"function","signature":"registerModelNodeAnimation(modelInstanceId, graph, animations, playbackState = null)","summary":"Register ordinary glTF node animation once per model entity instance."}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/SkeletalAnimation.md","moduleTitle":"render/mesh/SkeletalAnimation","source":"engine/render/mesh/SkeletalAnimation.js","import":"/engine/render/mesh/SkeletalAnimation.js","sourceHash":"4b4bff67cacdb1d683e8b968483b7d34e57d74e1077bd5e49d264b219b52820d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/SkeletalAnimation.js#0005:unregisterModelNodeAnimation","exportIndex":5,"name":"unregisterModelNodeAnimation","kind":"function","signature":"unregisterModelNodeAnimation(modelInstanceId)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/SkeletalAnimation.md","moduleTitle":"render/mesh/SkeletalAnimation","source":"engine/render/mesh/SkeletalAnimation.js","import":"/engine/render/mesh/SkeletalAnimation.js","sourceHash":"4b4bff67cacdb1d683e8b968483b7d34e57d74e1077bd5e49d264b219b52820d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/SkeletalAnimation.js#0006:getModelNodeAnimation","exportIndex":6,"name":"getModelNodeAnimation","kind":"function","signature":"getModelNodeAnimation(modelInstanceId)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/SkeletalAnimation.md","moduleTitle":"render/mesh/SkeletalAnimation","source":"engine/render/mesh/SkeletalAnimation.js","import":"/engine/render/mesh/SkeletalAnimation.js","sourceHash":"4b4bff67cacdb1d683e8b968483b7d34e57d74e1077bd5e49d264b219b52820d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/SkeletalAnimation.js#0007:getModelNodeAnimationState","exportIndex":7,"name":"getModelNodeAnimationState","kind":"function","signature":"getModelNodeAnimationState(modelInstanceId)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/SkeletalAnimation.md","moduleTitle":"render/mesh/SkeletalAnimation","source":"engine/render/mesh/SkeletalAnimation.js","import":"/engine/render/mesh/SkeletalAnimation.js","sourceHash":"4b4bff67cacdb1d683e8b968483b7d34e57d74e1077bd5e49d264b219b52820d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/SkeletalAnimation.js#0008:getModelNodeAnimationDescriptor","exportIndex":8,"name":"getModelNodeAnimationDescriptor","kind":"function","signature":"getModelNodeAnimationDescriptor(modelInstanceId)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/SkeletalAnimation.md","moduleTitle":"render/mesh/SkeletalAnimation","source":"engine/render/mesh/SkeletalAnimation.js","import":"/engine/render/mesh/SkeletalAnimation.js","sourceHash":"4b4bff67cacdb1d683e8b968483b7d34e57d74e1077bd5e49d264b219b52820d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/SkeletalAnimation.js#0009:setModelNodeAnimationState","exportIndex":9,"name":"setModelNodeAnimationState","kind":"function","signature":"setModelNodeAnimationState(modelInstanceId, playbackState)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/SkeletalAnimation.md","moduleTitle":"render/mesh/SkeletalAnimation","source":"engine/render/mesh/SkeletalAnimation.js","import":"/engine/render/mesh/SkeletalAnimation.js","sourceHash":"4b4bff67cacdb1d683e8b968483b7d34e57d74e1077bd5e49d264b219b52820d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/SkeletalAnimation.js#0010:getModelNodeWorldMatrix","exportIndex":10,"name":"getModelNodeWorldMatrix","kind":"function","signature":"getModelNodeWorldMatrix(modelInstanceId, nodeIndex)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/SkeletalAnimation.md","moduleTitle":"render/mesh/SkeletalAnimation","source":"engine/render/mesh/SkeletalAnimation.js","import":"/engine/render/mesh/SkeletalAnimation.js","sourceHash":"4b4bff67cacdb1d683e8b968483b7d34e57d74e1077bd5e49d264b219b52820d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/SkeletalAnimation.js#0011:getModelNodeAnimationKeys","exportIndex":11,"name":"getModelNodeAnimationKeys","kind":"function","signature":"getModelNodeAnimationKeys()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/SkeletalAnimation.md","moduleTitle":"render/mesh/SkeletalAnimation","source":"engine/render/mesh/SkeletalAnimation.js","import":"/engine/render/mesh/SkeletalAnimation.js","sourceHash":"4b4bff67cacdb1d683e8b968483b7d34e57d74e1077bd5e49d264b219b52820d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/SkeletalAnimation.js#0012:consumeModelNodeAnimationDirty","exportIndex":12,"name":"consumeModelNodeAnimationDirty","kind":"function","signature":"consumeModelNodeAnimationDirty(modelInstanceId)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/SkeletalAnimation.md","moduleTitle":"render/mesh/SkeletalAnimation","source":"engine/render/mesh/SkeletalAnimation.js","import":"/engine/render/mesh/SkeletalAnimation.js","sourceHash":"4b4bff67cacdb1d683e8b968483b7d34e57d74e1077bd5e49d264b219b52820d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/SkeletalAnimation.js#0013:bindSkinnedMeshNodeAnimation","exportIndex":13,"name":"bindSkinnedMeshNodeAnimation","kind":"function","signature":"bindSkinnedMeshNodeAnimation(meshKey, modelInstanceId)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/SkeletalAnimation.md","moduleTitle":"render/mesh/SkeletalAnimation","source":"engine/render/mesh/SkeletalAnimation.js","import":"/engine/render/mesh/SkeletalAnimation.js","sourceHash":"4b4bff67cacdb1d683e8b968483b7d34e57d74e1077bd5e49d264b219b52820d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/SkeletalAnimation.js#0014:isSkinnedMesh","exportIndex":14,"name":"isSkinnedMesh","kind":"function","signature":"isSkinnedMesh(meshKey)","summary":"Check if a meshKey has skeletal animation."}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/SkeletalAnimation.md","moduleTitle":"render/mesh/SkeletalAnimation","source":"engine/render/mesh/SkeletalAnimation.js","import":"/engine/render/mesh/SkeletalAnimation.js","sourceHash":"4b4bff67cacdb1d683e8b968483b7d34e57d74e1077bd5e49d264b219b52820d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/SkeletalAnimation.js#0015:getSkinnedGeometry","exportIndex":15,"name":"getSkinnedGeometry","kind":"function","signature":"getSkinnedGeometry(meshKey)","summary":"Get the current skinned positions/normals/tangents for a mesh. Returns null if not a skinned mesh."}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/SkeletalAnimation.md","moduleTitle":"render/mesh/SkeletalAnimation","source":"engine/render/mesh/SkeletalAnimation.js","import":"/engine/render/mesh/SkeletalAnimation.js","sourceHash":"4b4bff67cacdb1d683e8b968483b7d34e57d74e1077bd5e49d264b219b52820d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/SkeletalAnimation.js#0016:getSkinnedBounds","exportIndex":16,"name":"getSkinnedBounds","kind":"function","signature":"getSkinnedBounds(meshKey)","summary":"Compute current local-space skinned bounds from bind vertices and live skin matrices. This remains authoritative when GPU skinning intentionally leaves CPU outputs stale."}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/SkeletalAnimation.md","moduleTitle":"render/mesh/SkeletalAnimation","source":"engine/render/mesh/SkeletalAnimation.js","import":"/engine/render/mesh/SkeletalAnimation.js","sourceHash":"4b4bff67cacdb1d683e8b968483b7d34e57d74e1077bd5e49d264b219b52820d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/SkeletalAnimation.js#0017:getCachedSkinnedBounds","exportIndex":17,"name":"getCachedSkinnedBounds","kind":"function","signature":"getCachedSkinnedBounds(meshKey)","summary":"Get the current bounds already refreshed by the animation/ragdoll tick."}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/SkeletalAnimation.md","moduleTitle":"render/mesh/SkeletalAnimation","source":"engine/render/mesh/SkeletalAnimation.js","import":"/engine/render/mesh/SkeletalAnimation.js","sourceHash":"4b4bff67cacdb1d683e8b968483b7d34e57d74e1077bd5e49d264b219b52820d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/SkeletalAnimation.js#0018:getMorphWeights","exportIndex":18,"name":"getMorphWeights","kind":"function","signature":"getMorphWeights(meshKey)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/SkeletalAnimation.md","moduleTitle":"render/mesh/SkeletalAnimation","source":"engine/render/mesh/SkeletalAnimation.js","import":"/engine/render/mesh/SkeletalAnimation.js","sourceHash":"4b4bff67cacdb1d683e8b968483b7d34e57d74e1077bd5e49d264b219b52820d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/SkeletalAnimation.js#0019:setMorphWeights","exportIndex":19,"name":"setMorphWeights","kind":"function","signature":"setMorphWeights(meshKey, weights)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/SkeletalAnimation.md","moduleTitle":"render/mesh/SkeletalAnimation","source":"engine/render/mesh/SkeletalAnimation.js","import":"/engine/render/mesh/SkeletalAnimation.js","sourceHash":"4b4bff67cacdb1d683e8b968483b7d34e57d74e1077bd5e49d264b219b52820d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/SkeletalAnimation.js#0020:getMorphTargetCount","exportIndex":20,"name":"getMorphTargetCount","kind":"function","signature":"getMorphTargetCount(meshKey)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/SkeletalAnimation.md","moduleTitle":"render/mesh/SkeletalAnimation","source":"engine/render/mesh/SkeletalAnimation.js","import":"/engine/render/mesh/SkeletalAnimation.js","sourceHash":"4b4bff67cacdb1d683e8b968483b7d34e57d74e1077bd5e49d264b219b52820d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/SkeletalAnimation.js#0021:getModelMorphState","exportIndex":21,"name":"getModelMorphState","kind":"function","signature":"getModelMorphState(parts)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/SkeletalAnimation.md","moduleTitle":"render/mesh/SkeletalAnimation","source":"engine/render/mesh/SkeletalAnimation.js","import":"/engine/render/mesh/SkeletalAnimation.js","sourceHash":"4b4bff67cacdb1d683e8b968483b7d34e57d74e1077bd5e49d264b219b52820d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/SkeletalAnimation.js#0022:getModelMorphDescriptor","exportIndex":22,"name":"getModelMorphDescriptor","kind":"function","signature":"getModelMorphDescriptor(parts)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/SkeletalAnimation.md","moduleTitle":"render/mesh/SkeletalAnimation","source":"engine/render/mesh/SkeletalAnimation.js","import":"/engine/render/mesh/SkeletalAnimation.js","sourceHash":"4b4bff67cacdb1d683e8b968483b7d34e57d74e1077bd5e49d264b219b52820d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/SkeletalAnimation.js#0023:setModelMorphState","exportIndex":23,"name":"setModelMorphState","kind":"function","signature":"setModelMorphState(parts, state)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/SkeletalAnimation.md","moduleTitle":"render/mesh/SkeletalAnimation","source":"engine/render/mesh/SkeletalAnimation.js","import":"/engine/render/mesh/SkeletalAnimation.js","sourceHash":"4b4bff67cacdb1d683e8b968483b7d34e57d74e1077bd5e49d264b219b52820d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/SkeletalAnimation.js#0024:getSkinnedMeshKeys","exportIndex":24,"name":"getSkinnedMeshKeys","kind":"function","signature":"getSkinnedMeshKeys()","summary":"Get all registered skinned mesh keys."}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/SkeletalAnimation.md","moduleTitle":"render/mesh/SkeletalAnimation","source":"engine/render/mesh/SkeletalAnimation.js","import":"/engine/render/mesh/SkeletalAnimation.js","sourceHash":"4b4bff67cacdb1d683e8b968483b7d34e57d74e1077bd5e49d264b219b52820d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/SkeletalAnimation.js#0025:getBoneCapsules","exportIndex":25,"name":"getBoneCapsules","kind":"function","signature":"getBoneCapsules(meshKey)","summary":"Get per-bone capsule dimensions computed from vertex weights. Returns cached data computed once at registration time."}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/SkeletalAnimation.md","moduleTitle":"render/mesh/SkeletalAnimation","source":"engine/render/mesh/SkeletalAnimation.js","import":"/engine/render/mesh/SkeletalAnimation.js","sourceHash":"4b4bff67cacdb1d683e8b968483b7d34e57d74e1077bd5e49d264b219b52820d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/SkeletalAnimation.js#0026:getAnimatedBoneShapes","exportIndex":26,"name":"getAnimatedBoneShapes","kind":"function","signature":"getAnimatedBoneShapes(meshKey, entityPos)","summary":"Get ANIMATED bone shapes for visual overlay rendering. Returns current-frame bone positions/rotations with mesh-measured capsule sizes. Uses the CURRENT animated worldMatrices so capsules track the animation exactly. This is the PRIMARY API for the visual bone overlay in Viewport.js. Each bone returns: - pos: world position (midpoint between bone and first child) - rot: quaternion aligning Y-axis with bone direction - radius: mesh-measured perpendicular distance (90th percentile) - halfHeight: half the bone length minus radius - name: bone name for debug/classification - parentIndex: parent bone index (-1 for roots) - isTerminal: true for end/nub bones (skip rendering)"}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/SkeletalAnimation.md","moduleTitle":"render/mesh/SkeletalAnimation","source":"engine/render/mesh/SkeletalAnimation.js","import":"/engine/render/mesh/SkeletalAnimation.js","sourceHash":"4b4bff67cacdb1d683e8b968483b7d34e57d74e1077bd5e49d264b219b52820d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/SkeletalAnimation.js#0027:getBindPoseBones","exportIndex":27,"name":"getBindPoseBones","kind":"function","signature":"getBindPoseBones(meshKey, entityPos)","summary":"Get bind-pose bone data WITHOUT modifying state (no ragdoll, no animation stop). Used for edit-mode SDF collider visualization preview."}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/SkeletalAnimation.md","moduleTitle":"render/mesh/SkeletalAnimation","source":"engine/render/mesh/SkeletalAnimation.js","import":"/engine/render/mesh/SkeletalAnimation.js","sourceHash":"4b4bff67cacdb1d683e8b968483b7d34e57d74e1077bd5e49d264b219b52820d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/SkeletalAnimation.js#0028:enableRagdoll","exportIndex":28,"name":"enableRagdoll","kind":"function","signature":"enableRagdoll(meshKey, entityPos)","summary":"Enable ragdoll mode for a skinned mesh. Stops animation and returns bind-pose bone world positions + hierarchy for creating physics bodies."}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/SkeletalAnimation.md","moduleTitle":"render/mesh/SkeletalAnimation","source":"engine/render/mesh/SkeletalAnimation.js","import":"/engine/render/mesh/SkeletalAnimation.js","sourceHash":"4b4bff67cacdb1d683e8b968483b7d34e57d74e1077bd5e49d264b219b52820d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/SkeletalAnimation.js#0029:setRagdollBoneTransforms","exportIndex":29,"name":"setRagdollBoneTransforms","kind":"function","signature":"setRagdollBoneTransforms(meshKey, boneWorldMatrices)","summary":"Update bone world matrices from ragdoll physics transforms, then reskin."}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/SkeletalAnimation.md","moduleTitle":"render/mesh/SkeletalAnimation","source":"engine/render/mesh/SkeletalAnimation.js","import":"/engine/render/mesh/SkeletalAnimation.js","sourceHash":"4b4bff67cacdb1d683e8b968483b7d34e57d74e1077bd5e49d264b219b52820d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/SkeletalAnimation.js#0030:disableRagdoll","exportIndex":30,"name":"disableRagdoll","kind":"function","signature":"disableRagdoll(meshKey)","summary":"Disable ragdoll mode, resuming animation."}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/VirtualGeometrySystem.md","moduleTitle":"render/mesh/VirtualGeometrySystem","source":"engine/render/mesh/VirtualGeometrySystem.js","import":"/engine/render/mesh/VirtualGeometrySystem.js","sourceHash":"e357de7c40817d095e56143d5abde6ea61b1b7ef4df4a030f02d4f3db2886a18","subsystem":"engine","recordType":"api-module","id":"module:engine/render/mesh/VirtualGeometrySystem.js","title":"render/mesh/VirtualGeometrySystem","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/VirtualGeometrySystem.md","moduleTitle":"render/mesh/VirtualGeometrySystem","source":"engine/render/mesh/VirtualGeometrySystem.js","import":"/engine/render/mesh/VirtualGeometrySystem.js","sourceHash":"e357de7c40817d095e56143d5abde6ea61b1b7ef4df4a030f02d4f3db2886a18","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/VirtualGeometrySystem.js#0000:VirtualGeometrySystem","exportIndex":0,"name":"VirtualGeometrySystem","kind":"class","signature":"class VirtualGeometrySystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/index.md","moduleTitle":"render/mesh/index","source":"engine/render/mesh/index.js","import":"/engine/render/mesh/index.js","sourceHash":"a1a44fa691c576dc2e6235c36b911fd552a8dfb45876e44463a77443226b704b","subsystem":"engine","recordType":"api-module","id":"module:engine/render/mesh/index.js","title":"render/mesh/index","summary":"Mesh Renderers - GPU mesh rendering utilities","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/index.md","moduleTitle":"render/mesh/index","source":"engine/render/mesh/index.js","import":"/engine/render/mesh/index.js","sourceHash":"a1a44fa691c576dc2e6235c36b911fd552a8dfb45876e44463a77443226b704b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/index.js#0000:ClothMeshRenderer","exportIndex":0,"name":"ClothMeshRenderer","kind":"re-export","signature":"ClothMeshRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/index.md","moduleTitle":"render/mesh/index","source":"engine/render/mesh/index.js","import":"/engine/render/mesh/index.js","sourceHash":"a1a44fa691c576dc2e6235c36b911fd552a8dfb45876e44463a77443226b704b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/index.js#0001:EntityMeshRenderer","exportIndex":1,"name":"EntityMeshRenderer","kind":"re-export","signature":"EntityMeshRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/mesh/index.md","moduleTitle":"render/mesh/index","source":"engine/render/mesh/index.js","import":"/engine/render/mesh/index.js","sourceHash":"a1a44fa691c576dc2e6235c36b911fd552a8dfb45876e44463a77443226b704b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/mesh/index.js#0002:RopeMeshRenderer","exportIndex":2,"name":"RopeMeshRenderer","kind":"re-export","signature":"RopeMeshRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/assets/MorphAssetCodec.md","moduleTitle":"render/morphfield/assets/MorphAssetCodec","source":"engine/render/morphfield/assets/MorphAssetCodec.js","import":"/engine/render/morphfield/assets/MorphAssetCodec.js","sourceHash":"0bbd5e27ba6414d4b92606e64c4e8ff950d6129acbd9ec6de602e2517bbab11d","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/assets/MorphAssetCodec.js","title":"render/morphfield/assets/MorphAssetCodec","summary":"","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/assets/MorphAssetCodec.md","moduleTitle":"render/morphfield/assets/MorphAssetCodec","source":"engine/render/morphfield/assets/MorphAssetCodec.js","import":"/engine/render/morphfield/assets/MorphAssetCodec.js","sourceHash":"0bbd5e27ba6414d4b92606e64c4e8ff950d6129acbd9ec6de602e2517bbab11d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/assets/MorphAssetCodec.js#0000:encodeMorphAsset","exportIndex":0,"name":"encodeMorphAsset","kind":"function","signature":"async encodeMorphAsset(sceneInput, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/assets/MorphAssetCodec.md","moduleTitle":"render/morphfield/assets/MorphAssetCodec","source":"engine/render/morphfield/assets/MorphAssetCodec.js","import":"/engine/render/morphfield/assets/MorphAssetCodec.js","sourceHash":"0bbd5e27ba6414d4b92606e64c4e8ff950d6129acbd9ec6de602e2517bbab11d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/assets/MorphAssetCodec.js#0001:decodeMorphAsset","exportIndex":1,"name":"decodeMorphAsset","kind":"function","signature":"async decodeMorphAsset(input, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/assets/MorphAssetCodec.md","moduleTitle":"render/morphfield/assets/MorphAssetCodec","source":"engine/render/morphfield/assets/MorphAssetCodec.js","import":"/engine/render/morphfield/assets/MorphAssetCodec.js","sourceHash":"0bbd5e27ba6414d4b92606e64c4e8ff950d6129acbd9ec6de602e2517bbab11d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/assets/MorphAssetCodec.js#0002:loadMorphAsset","exportIndex":2,"name":"loadMorphAsset","kind":"function","signature":"async loadMorphAsset(source, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/assets/MorphAssetCodec.md","moduleTitle":"render/morphfield/assets/MorphAssetCodec","source":"engine/render/morphfield/assets/MorphAssetCodec.js","import":"/engine/render/morphfield/assets/MorphAssetCodec.js","sourceHash":"0bbd5e27ba6414d4b92606e64c4e8ff950d6129acbd9ec6de602e2517bbab11d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/assets/MorphAssetCodec.js#0003:writeMorphAsset","exportIndex":3,"name":"writeMorphAsset","kind":"constant","signature":"writeMorphAsset","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/assets/MorphAssetFormat.md","moduleTitle":"render/morphfield/assets/MorphAssetFormat","source":"engine/render/morphfield/assets/MorphAssetFormat.js","import":"/engine/render/morphfield/assets/MorphAssetFormat.js","sourceHash":"e7445cceb4685d4faba9713be4d96acde50da3eaecb6aeb5683d554df602752d","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/assets/MorphAssetFormat.js","title":"render/morphfield/assets/MorphAssetFormat","summary":"","exportCount":15}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/assets/MorphAssetFormat.md","moduleTitle":"render/morphfield/assets/MorphAssetFormat","source":"engine/render/morphfield/assets/MorphAssetFormat.js","import":"/engine/render/morphfield/assets/MorphAssetFormat.js","sourceHash":"e7445cceb4685d4faba9713be4d96acde50da3eaecb6aeb5683d554df602752d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/assets/MorphAssetFormat.js#0000:fourCCToUint32","exportIndex":0,"name":"fourCCToUint32","kind":"function","signature":"fourCCToUint32(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/assets/MorphAssetFormat.md","moduleTitle":"render/morphfield/assets/MorphAssetFormat","source":"engine/render/morphfield/assets/MorphAssetFormat.js","import":"/engine/render/morphfield/assets/MorphAssetFormat.js","sourceHash":"e7445cceb4685d4faba9713be4d96acde50da3eaecb6aeb5683d554df602752d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/assets/MorphAssetFormat.js#0001:uint32ToFourCC","exportIndex":1,"name":"uint32ToFourCC","kind":"function","signature":"uint32ToFourCC(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/assets/MorphAssetFormat.md","moduleTitle":"render/morphfield/assets/MorphAssetFormat","source":"engine/render/morphfield/assets/MorphAssetFormat.js","import":"/engine/render/morphfield/assets/MorphAssetFormat.js","sourceHash":"e7445cceb4685d4faba9713be4d96acde50da3eaecb6aeb5683d554df602752d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/assets/MorphAssetFormat.js#0002:MORPH_ASSET_MAGIC","exportIndex":2,"name":"MORPH_ASSET_MAGIC","kind":"constant","signature":"MORPH_ASSET_MAGIC","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/assets/MorphAssetFormat.md","moduleTitle":"render/morphfield/assets/MorphAssetFormat","source":"engine/render/morphfield/assets/MorphAssetFormat.js","import":"/engine/render/morphfield/assets/MorphAssetFormat.js","sourceHash":"e7445cceb4685d4faba9713be4d96acde50da3eaecb6aeb5683d554df602752d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/assets/MorphAssetFormat.js#0003:MORPH_ASSET_HEADER_BYTES","exportIndex":3,"name":"MORPH_ASSET_HEADER_BYTES","kind":"constant","signature":"MORPH_ASSET_HEADER_BYTES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/assets/MorphAssetFormat.md","moduleTitle":"render/morphfield/assets/MorphAssetFormat","source":"engine/render/morphfield/assets/MorphAssetFormat.js","import":"/engine/render/morphfield/assets/MorphAssetFormat.js","sourceHash":"e7445cceb4685d4faba9713be4d96acde50da3eaecb6aeb5683d554df602752d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/assets/MorphAssetFormat.js#0004:MORPH_ASSET_DIRECTORY_ENTRY_BYTES","exportIndex":4,"name":"MORPH_ASSET_DIRECTORY_ENTRY_BYTES","kind":"constant","signature":"MORPH_ASSET_DIRECTORY_ENTRY_BYTES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/assets/MorphAssetFormat.md","moduleTitle":"render/morphfield/assets/MorphAssetFormat","source":"engine/render/morphfield/assets/MorphAssetFormat.js","import":"/engine/render/morphfield/assets/MorphAssetFormat.js","sourceHash":"e7445cceb4685d4faba9713be4d96acde50da3eaecb6aeb5683d554df602752d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/assets/MorphAssetFormat.js#0005:MORPH_ASSET_VERSION","exportIndex":5,"name":"MORPH_ASSET_VERSION","kind":"constant","signature":"MORPH_ASSET_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/assets/MorphAssetFormat.md","moduleTitle":"render/morphfield/assets/MorphAssetFormat","source":"engine/render/morphfield/assets/MorphAssetFormat.js","import":"/engine/render/morphfield/assets/MorphAssetFormat.js","sourceHash":"e7445cceb4685d4faba9713be4d96acde50da3eaecb6aeb5683d554df602752d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/assets/MorphAssetFormat.js#0006:MORPH_HEADER_FLAG","exportIndex":6,"name":"MORPH_HEADER_FLAG","kind":"constant","signature":"MORPH_HEADER_FLAG","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/assets/MorphAssetFormat.md","moduleTitle":"render/morphfield/assets/MorphAssetFormat","source":"engine/render/morphfield/assets/MorphAssetFormat.js","import":"/engine/render/morphfield/assets/MorphAssetFormat.js","sourceHash":"e7445cceb4685d4faba9713be4d96acde50da3eaecb6aeb5683d554df602752d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/assets/MorphAssetFormat.js#0007:MORPH_HEADER_FLAG_MASK","exportIndex":7,"name":"MORPH_HEADER_FLAG_MASK","kind":"constant","signature":"MORPH_HEADER_FLAG_MASK","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/assets/MorphAssetFormat.md","moduleTitle":"render/morphfield/assets/MorphAssetFormat","source":"engine/render/morphfield/assets/MorphAssetFormat.js","import":"/engine/render/morphfield/assets/MorphAssetFormat.js","sourceHash":"e7445cceb4685d4faba9713be4d96acde50da3eaecb6aeb5683d554df602752d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/assets/MorphAssetFormat.js#0008:MORPH_CHUNK_FLAG","exportIndex":8,"name":"MORPH_CHUNK_FLAG","kind":"constant","signature":"MORPH_CHUNK_FLAG","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/assets/MorphAssetFormat.md","moduleTitle":"render/morphfield/assets/MorphAssetFormat","source":"engine/render/morphfield/assets/MorphAssetFormat.js","import":"/engine/render/morphfield/assets/MorphAssetFormat.js","sourceHash":"e7445cceb4685d4faba9713be4d96acde50da3eaecb6aeb5683d554df602752d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/assets/MorphAssetFormat.js#0009:MORPH_CHUNK_FLAG_MASK","exportIndex":9,"name":"MORPH_CHUNK_FLAG_MASK","kind":"constant","signature":"MORPH_CHUNK_FLAG_MASK","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/assets/MorphAssetFormat.md","moduleTitle":"render/morphfield/assets/MorphAssetFormat","source":"engine/render/morphfield/assets/MorphAssetFormat.js","import":"/engine/render/morphfield/assets/MorphAssetFormat.js","sourceHash":"e7445cceb4685d4faba9713be4d96acde50da3eaecb6aeb5683d554df602752d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/assets/MorphAssetFormat.js#0010:MORPH_COMPRESSION","exportIndex":10,"name":"MORPH_COMPRESSION","kind":"constant","signature":"MORPH_COMPRESSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/assets/MorphAssetFormat.md","moduleTitle":"render/morphfield/assets/MorphAssetFormat","source":"engine/render/morphfield/assets/MorphAssetFormat.js","import":"/engine/render/morphfield/assets/MorphAssetFormat.js","sourceHash":"e7445cceb4685d4faba9713be4d96acde50da3eaecb6aeb5683d554df602752d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/assets/MorphAssetFormat.js#0011:MORPH_COMPRESSION_NAME","exportIndex":11,"name":"MORPH_COMPRESSION_NAME","kind":"constant","signature":"MORPH_COMPRESSION_NAME","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/assets/MorphAssetFormat.md","moduleTitle":"render/morphfield/assets/MorphAssetFormat","source":"engine/render/morphfield/assets/MorphAssetFormat.js","import":"/engine/render/morphfield/assets/MorphAssetFormat.js","sourceHash":"e7445cceb4685d4faba9713be4d96acde50da3eaecb6aeb5683d554df602752d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/assets/MorphAssetFormat.js#0012:MORPH_CHUNK_TYPE","exportIndex":12,"name":"MORPH_CHUNK_TYPE","kind":"constant","signature":"MORPH_CHUNK_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/assets/MorphAssetFormat.md","moduleTitle":"render/morphfield/assets/MorphAssetFormat","source":"engine/render/morphfield/assets/MorphAssetFormat.js","import":"/engine/render/morphfield/assets/MorphAssetFormat.js","sourceHash":"e7445cceb4685d4faba9713be4d96acde50da3eaecb6aeb5683d554df602752d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/assets/MorphAssetFormat.js#0013:MORPH_KNOWN_CHUNK_TYPES","exportIndex":13,"name":"MORPH_KNOWN_CHUNK_TYPES","kind":"constant","signature":"MORPH_KNOWN_CHUNK_TYPES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/assets/MorphAssetFormat.md","moduleTitle":"render/morphfield/assets/MorphAssetFormat","source":"engine/render/morphfield/assets/MorphAssetFormat.js","import":"/engine/render/morphfield/assets/MorphAssetFormat.js","sourceHash":"e7445cceb4685d4faba9713be4d96acde50da3eaecb6aeb5683d554df602752d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/assets/MorphAssetFormat.js#0014:MORPH_ASSET_LIMITS","exportIndex":14,"name":"MORPH_ASSET_LIMITS","kind":"constant","signature":"MORPH_ASSET_LIMITS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/assets/index.md","moduleTitle":"render/morphfield/assets/index","source":"engine/render/morphfield/assets/index.js","import":"/engine/render/morphfield/assets/index.js","sourceHash":"dfaeada42bc84e4b921ef4f66848840bad244faeddc29f5787e3b8829300f09c","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/assets/index.js","title":"render/morphfield/assets/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/assets/selfTest.md","moduleTitle":"render/morphfield/assets/selfTest","source":"engine/render/morphfield/assets/selfTest.js","import":"/engine/render/morphfield/assets/selfTest.js","sourceHash":"874c17b28dcf9c996dc3624585306313b94b13918e6444836021eacfb80c0bd2","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/assets/selfTest.js","title":"render/morphfield/assets/selfTest","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/assets/selfTest.md","moduleTitle":"render/morphfield/assets/selfTest","source":"engine/render/morphfield/assets/selfTest.js","import":"/engine/render/morphfield/assets/selfTest.js","sourceHash":"874c17b28dcf9c996dc3624585306313b94b13918e6444836021eacfb80c0bd2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/assets/selfTest.js#0000:runMorphAssetSelfTests","exportIndex":0,"name":"runMorphAssetSelfTests","kind":"function","signature":"async runMorphAssetSelfTests()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/AabbBvh.md","moduleTitle":"render/morphfield/core/AabbBvh","source":"engine/render/morphfield/core/AabbBvh.js","import":"/engine/render/morphfield/core/AabbBvh.js","sourceHash":"6a7a10f7e837d3fd73244cbceb19b805aee604c467663080650d12352a2c059f","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/core/AabbBvh.js","title":"render/morphfield/core/AabbBvh","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/AabbBvh.md","moduleTitle":"render/morphfield/core/AabbBvh","source":"engine/render/morphfield/core/AabbBvh.js","import":"/engine/render/morphfield/core/AabbBvh.js","sourceHash":"6a7a10f7e837d3fd73244cbceb19b805aee604c467663080650d12352a2c059f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/AabbBvh.js#0000:AabbBvh","exportIndex":0,"name":"AabbBvh","kind":"class","signature":"class AabbBvh","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/AabbBvh.md","moduleTitle":"render/morphfield/core/AabbBvh","source":"engine/render/morphfield/core/AabbBvh.js","import":"/engine/render/morphfield/core/AabbBvh.js","sourceHash":"6a7a10f7e837d3fd73244cbceb19b805aee604c467663080650d12352a2c059f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/AabbBvh.js#0001:buildAabbBvh","exportIndex":1,"name":"buildAabbBvh","kind":"function","signature":"buildAabbBvh(leaves)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/FieldletAbi.md","moduleTitle":"render/morphfield/core/FieldletAbi","source":"engine/render/morphfield/core/FieldletAbi.js","import":"/engine/render/morphfield/core/FieldletAbi.js","sourceHash":"69d5f798feae1331d13bc63ac99bcb2fb38241f875550b5eb7de3743d1f1e954","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/core/FieldletAbi.js","title":"render/morphfield/core/FieldletAbi","summary":"","exportCount":13}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/FieldletAbi.md","moduleTitle":"render/morphfield/core/FieldletAbi","source":"engine/render/morphfield/core/FieldletAbi.js","import":"/engine/render/morphfield/core/FieldletAbi.js","sourceHash":"69d5f798feae1331d13bc63ac99bcb2fb38241f875550b5eb7de3743d1f1e954","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/FieldletAbi.js#0000:createOutwardF32Bounds","exportIndex":0,"name":"createOutwardF32Bounds","kind":"function","signature":"createOutwardF32Bounds(bounds, expansion = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/FieldletAbi.md","moduleTitle":"render/morphfield/core/FieldletAbi","source":"engine/render/morphfield/core/FieldletAbi.js","import":"/engine/render/morphfield/core/FieldletAbi.js","sourceHash":"69d5f798feae1331d13bc63ac99bcb2fb38241f875550b5eb7de3743d1f1e954","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/FieldletAbi.js#0001:packFieldletMeta","exportIndex":1,"name":"packFieldletMeta","kind":"function","signature":"packFieldletMeta({ subtype = 0, family = 0, queryMask = 0, flags = 0 } = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/FieldletAbi.md","moduleTitle":"render/morphfield/core/FieldletAbi","source":"engine/render/morphfield/core/FieldletAbi.js","import":"/engine/render/morphfield/core/FieldletAbi.js","sourceHash":"69d5f798feae1331d13bc63ac99bcb2fb38241f875550b5eb7de3743d1f1e954","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/FieldletAbi.js#0002:unpackFieldletMeta","exportIndex":2,"name":"unpackFieldletMeta","kind":"function","signature":"unpackFieldletMeta(meta)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/FieldletAbi.md","moduleTitle":"render/morphfield/core/FieldletAbi","source":"engine/render/morphfield/core/FieldletAbi.js","import":"/engine/render/morphfield/core/FieldletAbi.js","sourceHash":"69d5f798feae1331d13bc63ac99bcb2fb38241f875550b5eb7de3743d1f1e954","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/FieldletAbi.js#0003:createFieldletHeader","exportIndex":3,"name":"createFieldletHeader","kind":"function","signature":"createFieldletHeader({ boundsRef, payloadRef, meta, certificateRef = INVALID_REF })","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/FieldletAbi.md","moduleTitle":"render/morphfield/core/FieldletAbi","source":"engine/render/morphfield/core/FieldletAbi.js","import":"/engine/render/morphfield/core/FieldletAbi.js","sourceHash":"69d5f798feae1331d13bc63ac99bcb2fb38241f875550b5eb7de3743d1f1e954","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/FieldletAbi.js#0004:writeFieldletHeader","exportIndex":4,"name":"writeFieldletHeader","kind":"function","signature":"writeFieldletHeader(view, byteOffset, header)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/FieldletAbi.md","moduleTitle":"render/morphfield/core/FieldletAbi","source":"engine/render/morphfield/core/FieldletAbi.js","import":"/engine/render/morphfield/core/FieldletAbi.js","sourceHash":"69d5f798feae1331d13bc63ac99bcb2fb38241f875550b5eb7de3743d1f1e954","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/FieldletAbi.js#0005:readFieldletHeader","exportIndex":5,"name":"readFieldletHeader","kind":"function","signature":"readFieldletHeader(view, byteOffset = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/FieldletAbi.md","moduleTitle":"render/morphfield/core/FieldletAbi","source":"engine/render/morphfield/core/FieldletAbi.js","import":"/engine/render/morphfield/core/FieldletAbi.js","sourceHash":"69d5f798feae1331d13bc63ac99bcb2fb38241f875550b5eb7de3743d1f1e954","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/FieldletAbi.js#0006:createCertificateBundle","exportIndex":6,"name":"createCertificateBundle","kind":"function","signature":"createCertificateBundle({ surfaceRef = INVALID_REF, mediumRef = INVALID_REF, motionRef = INVALID_REF, collisionRef = INVALID_REF, } = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/FieldletAbi.md","moduleTitle":"render/morphfield/core/FieldletAbi","source":"engine/render/morphfield/core/FieldletAbi.js","import":"/engine/render/morphfield/core/FieldletAbi.js","sourceHash":"69d5f798feae1331d13bc63ac99bcb2fb38241f875550b5eb7de3743d1f1e954","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/FieldletAbi.js#0007:createSurfaceCertificate","exportIndex":7,"name":"createSurfaceCertificate","kind":"function","signature":"createSurfaceCertificate({ fieldValueErrorMax = 0, lipschitzMax, fallbackBand = 0, motionRadiusMax = 0, })","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/FieldletAbi.md","moduleTitle":"render/morphfield/core/FieldletAbi","source":"engine/render/morphfield/core/FieldletAbi.js","import":"/engine/render/morphfield/core/FieldletAbi.js","sourceHash":"69d5f798feae1331d13bc63ac99bcb2fb38241f875550b5eb7de3743d1f1e954","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/FieldletAbi.js#0008:createMediumCertificate","exportIndex":8,"name":"createMediumCertificate","kind":"function","signature":"createMediumCertificate({ densityMax = 0, extinctionMax = 0, emissionLuminanceMax = 0, motionRadiusMax = 0, } = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/FieldletAbi.md","moduleTitle":"render/morphfield/core/FieldletAbi","source":"engine/render/morphfield/core/FieldletAbi.js","import":"/engine/render/morphfield/core/FieldletAbi.js","sourceHash":"69d5f798feae1331d13bc63ac99bcb2fb38241f875550b5eb7de3743d1f1e954","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/FieldletAbi.js#0009:createMotionCertificate","exportIndex":9,"name":"createMotionCertificate","kind":"function","signature":"createMotionCertificate({ displacementMax = 0, speedMax = 0, accelerationMax = 0, validDuration = 0, } = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/FieldletAbi.md","moduleTitle":"render/morphfield/core/FieldletAbi","source":"engine/render/morphfield/core/FieldletAbi.js","import":"/engine/render/morphfield/core/FieldletAbi.js","sourceHash":"69d5f798feae1331d13bc63ac99bcb2fb38241f875550b5eb7de3743d1f1e954","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/FieldletAbi.js#0010:createCollisionCertificate","exportIndex":10,"name":"createCollisionCertificate","kind":"function","signature":"createCollisionCertificate({ fieldValueErrorMax = 0, lipschitzMax, contactOffset, contactSlop = 0, motionRadiusMax = 0, })","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/FieldletAbi.md","moduleTitle":"render/morphfield/core/FieldletAbi","source":"engine/render/morphfield/core/FieldletAbi.js","import":"/engine/render/morphfield/core/FieldletAbi.js","sourceHash":"69d5f798feae1331d13bc63ac99bcb2fb38241f875550b5eb7de3743d1f1e954","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/FieldletAbi.js#0011:safeCertifiedStep","exportIndex":11,"name":"safeCertifiedStep","kind":"function","signature":"safeCertifiedStep(fieldEstimate, certificate)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/FieldletAbi.md","moduleTitle":"render/morphfield/core/FieldletAbi","source":"engine/render/morphfield/core/FieldletAbi.js","import":"/engine/render/morphfield/core/FieldletAbi.js","sourceHash":"69d5f798feae1331d13bc63ac99bcb2fb38241f875550b5eb7de3743d1f1e954","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/FieldletAbi.js#0012:validateFieldletAbi","exportIndex":12,"name":"validateFieldletAbi","kind":"function","signature":"validateFieldletAbi()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/MeshTopologyValidation.md","moduleTitle":"render/morphfield/core/MeshTopologyValidation","source":"engine/render/morphfield/core/MeshTopologyValidation.js","import":"/engine/render/morphfield/core/MeshTopologyValidation.js","sourceHash":"3874c1d485cfa1edc782a9998870ffb6337d56d3b3b56a5e176da14e73c62516","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/core/MeshTopologyValidation.js","title":"render/morphfield/core/MeshTopologyValidation","summary":"Validate finite indexed triangle geometry and, when requested, prove an oriented closed 2-manifold index topology. This is shared by authored indexed Nexels and extracted surface-cache publication.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/MeshTopologyValidation.md","moduleTitle":"render/morphfield/core/MeshTopologyValidation","source":"engine/render/morphfield/core/MeshTopologyValidation.js","import":"/engine/render/morphfield/core/MeshTopologyValidation.js","sourceHash":"3874c1d485cfa1edc782a9998870ffb6337d56d3b3b56a5e176da14e73c62516","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/MeshTopologyValidation.js#0000:validateIndexedTriangleMesh","exportIndex":0,"name":"validateIndexedTriangleMesh","kind":"function","signature":"validateIndexedTriangleMesh(mesh, options = {})","summary":"Validate finite indexed triangle geometry and, when requested, prove an oriented closed 2-manifold index topology. This is shared by authored indexed Nexels and extracted surface-cache publication."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/MorphFieldCompiler.md","moduleTitle":"render/morphfield/core/MorphFieldCompiler","source":"engine/render/morphfield/core/MorphFieldCompiler.js","import":"/engine/render/morphfield/core/MorphFieldCompiler.js","sourceHash":"f30c828239cc9ff5ebdfc6a61b415022bc627ef8200fa6e7f356c4b8209959d6","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/core/MorphFieldCompiler.js","title":"render/morphfield/core/MorphFieldCompiler","summary":"Qualify a structured-cloned/worker result by deterministically recompiling its authoritative semantic snapshot and comparing every executable ABI byte. This is the cross-realm path; normal same-realm compiler output uses the private registry above and does not pay for a second compilation.","exportCount":9}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/MorphFieldCompiler.md","moduleTitle":"render/morphfield/core/MorphFieldCompiler","source":"engine/render/morphfield/core/MorphFieldCompiler.js","import":"/engine/render/morphfield/core/MorphFieldCompiler.js","sourceHash":"f30c828239cc9ff5ebdfc6a61b415022bc627ef8200fa6e7f356c4b8209959d6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/MorphFieldCompiler.js#0000:MorphFieldCompiler","exportIndex":0,"name":"MorphFieldCompiler","kind":"class","signature":"class MorphFieldCompiler","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/MorphFieldCompiler.md","moduleTitle":"render/morphfield/core/MorphFieldCompiler","source":"engine/render/morphfield/core/MorphFieldCompiler.js","import":"/engine/render/morphfield/core/MorphFieldCompiler.js","sourceHash":"f30c828239cc9ff5ebdfc6a61b415022bc627ef8200fa6e7f356c4b8209959d6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/MorphFieldCompiler.js#0001:isCompilerProducedCompiledScene","exportIndex":1,"name":"isCompilerProducedCompiledScene","kind":"function","signature":"isCompilerProducedCompiledScene(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/MorphFieldCompiler.md","moduleTitle":"render/morphfield/core/MorphFieldCompiler","source":"engine/render/morphfield/core/MorphFieldCompiler.js","import":"/engine/render/morphfield/core/MorphFieldCompiler.js","sourceHash":"f30c828239cc9ff5ebdfc6a61b415022bc627ef8200fa6e7f356c4b8209959d6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/MorphFieldCompiler.js#0002:verifyCompiledSceneProvenance","exportIndex":2,"name":"verifyCompiledSceneProvenance","kind":"function","signature":"verifyCompiledSceneProvenance(value)","summary":"Qualify a structured-cloned/worker result by deterministically recompiling its authoritative semantic snapshot and comparing every executable ABI byte. This is the cross-realm path; normal same-realm compiler output uses the private registry above and does not pay for a second compilation."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/MorphFieldCompiler.md","moduleTitle":"render/morphfield/core/MorphFieldCompiler","source":"engine/render/morphfield/core/MorphFieldCompiler.js","import":"/engine/render/morphfield/core/MorphFieldCompiler.js","sourceHash":"f30c828239cc9ff5ebdfc6a61b415022bc627ef8200fa6e7f356c4b8209959d6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/MorphFieldCompiler.js#0003:inspectNexelCompilerFeasibility","exportIndex":3,"name":"inspectNexelCompilerFeasibility","kind":"function","signature":"inspectNexelCompilerFeasibility(input)","summary":"Run the compiler's exact isolated-descriptor admission gates synchronously. Capability inspection uses this probe so it cannot claim a direct GPU path for a descriptor that compilation would later reject."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/MorphFieldCompiler.md","moduleTitle":"render/morphfield/core/MorphFieldCompiler","source":"engine/render/morphfield/core/MorphFieldCompiler.js","import":"/engine/render/morphfield/core/MorphFieldCompiler.js","sourceHash":"f30c828239cc9ff5ebdfc6a61b415022bc627ef8200fa6e7f356c4b8209959d6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/MorphFieldCompiler.js#0004:createMorphFieldCompiler","exportIndex":4,"name":"createMorphFieldCompiler","kind":"function","signature":"createMorphFieldCompiler(options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/MorphFieldCompiler.md","moduleTitle":"render/morphfield/core/MorphFieldCompiler","source":"engine/render/morphfield/core/MorphFieldCompiler.js","import":"/engine/render/morphfield/core/MorphFieldCompiler.js","sourceHash":"f30c828239cc9ff5ebdfc6a61b415022bc627ef8200fa6e7f356c4b8209959d6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/MorphFieldCompiler.js#0005:compileMorphFieldScene","exportIndex":5,"name":"compileMorphFieldScene","kind":"function","signature":"async compileMorphFieldScene(scene, options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/MorphFieldCompiler.md","moduleTitle":"render/morphfield/core/MorphFieldCompiler","source":"engine/render/morphfield/core/MorphFieldCompiler.js","import":"/engine/render/morphfield/core/MorphFieldCompiler.js","sourceHash":"f30c828239cc9ff5ebdfc6a61b415022bc627ef8200fa6e7f356c4b8209959d6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/MorphFieldCompiler.js#0006:COMPILED_PATCH_SCHEMA","exportIndex":6,"name":"COMPILED_PATCH_SCHEMA","kind":"re-export","signature":"COMPILED_PATCH_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/MorphFieldCompiler.md","moduleTitle":"render/morphfield/core/MorphFieldCompiler","source":"engine/render/morphfield/core/MorphFieldCompiler.js","import":"/engine/render/morphfield/core/MorphFieldCompiler.js","sourceHash":"f30c828239cc9ff5ebdfc6a61b415022bc627ef8200fa6e7f356c4b8209959d6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/MorphFieldCompiler.js#0007:COMPILED_SCENE_SCHEMA","exportIndex":7,"name":"COMPILED_SCENE_SCHEMA","kind":"re-export","signature":"COMPILED_SCENE_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/MorphFieldCompiler.md","moduleTitle":"render/morphfield/core/MorphFieldCompiler","source":"engine/render/morphfield/core/MorphFieldCompiler.js","import":"/engine/render/morphfield/core/MorphFieldCompiler.js","sourceHash":"f30c828239cc9ff5ebdfc6a61b415022bc627ef8200fa6e7f356c4b8209959d6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/MorphFieldCompiler.js#0008:RUNTIME_DELTA_SCHEMA","exportIndex":8,"name":"RUNTIME_DELTA_SCHEMA","kind":"re-export","signature":"RUNTIME_DELTA_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/NexelScene.md","moduleTitle":"render/morphfield/core/NexelScene","source":"engine/render/morphfield/core/NexelScene.js","import":"/engine/render/morphfield/core/NexelScene.js","sourceHash":"c96f3e0e5dc1e6eb51606550ad58c272e4125e6316aea2ad155cb4680ef3fa69","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/core/NexelScene.js","title":"render/morphfield/core/NexelScene","summary":"","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/NexelScene.md","moduleTitle":"render/morphfield/core/NexelScene","source":"engine/render/morphfield/core/NexelScene.js","import":"/engine/render/morphfield/core/NexelScene.js","sourceHash":"c96f3e0e5dc1e6eb51606550ad58c272e4125e6316aea2ad155cb4680ef3fa69","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/NexelScene.js#0000:NexelScene","exportIndex":0,"name":"NexelScene","kind":"class","signature":"class NexelScene","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/NexelScene.md","moduleTitle":"render/morphfield/core/NexelScene","source":"engine/render/morphfield/core/NexelScene.js","import":"/engine/render/morphfield/core/NexelScene.js","sourceHash":"c96f3e0e5dc1e6eb51606550ad58c272e4125e6316aea2ad155cb4680ef3fa69","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/NexelScene.js#0001:normalizeNexelPatch","exportIndex":1,"name":"normalizeNexelPatch","kind":"function","signature":"normalizeNexelPatch(input)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/NexelScene.md","moduleTitle":"render/morphfield/core/NexelScene","source":"engine/render/morphfield/core/NexelScene.js","import":"/engine/render/morphfield/core/NexelScene.js","sourceHash":"c96f3e0e5dc1e6eb51606550ad58c272e4125e6316aea2ad155cb4680ef3fa69","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/NexelScene.js#0002:createNexelScene","exportIndex":2,"name":"createNexelScene","kind":"function","signature":"createNexelScene(options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/NexelScene.md","moduleTitle":"render/morphfield/core/NexelScene","source":"engine/render/morphfield/core/NexelScene.js","import":"/engine/render/morphfield/core/NexelScene.js","sourceHash":"c96f3e0e5dc1e6eb51606550ad58c272e4125e6316aea2ad155cb4680ef3fa69","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/NexelScene.js#0003:isNexelScene","exportIndex":3,"name":"isNexelScene","kind":"function","signature":"isNexelScene(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/NexelScene.md","moduleTitle":"render/morphfield/core/NexelScene","source":"engine/render/morphfield/core/NexelScene.js","import":"/engine/render/morphfield/core/NexelScene.js","sourceHash":"c96f3e0e5dc1e6eb51606550ad58c272e4125e6316aea2ad155cb4680ef3fa69","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/NexelScene.js#0004:NEXEL_PATCH_SCHEMA","exportIndex":4,"name":"NEXEL_PATCH_SCHEMA","kind":"re-export","signature":"NEXEL_PATCH_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/NexelScene.md","moduleTitle":"render/morphfield/core/NexelScene","source":"engine/render/morphfield/core/NexelScene.js","import":"/engine/render/morphfield/core/NexelScene.js","sourceHash":"c96f3e0e5dc1e6eb51606550ad58c272e4125e6316aea2ad155cb4680ef3fa69","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/NexelScene.js#0005:NEXEL_SCENE_SCHEMA","exportIndex":5,"name":"NEXEL_SCENE_SCHEMA","kind":"re-export","signature":"NEXEL_SCENE_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/ReferenceQueries.md","moduleTitle":"render/morphfield/core/ReferenceQueries","source":"engine/render/morphfield/core/ReferenceQueries.js","import":"/engine/render/morphfield/core/ReferenceQueries.js","sourceHash":"0dfdeb837f906c5cb597751cb91b03172d35ad36b296e91b25ab820a0f531581","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/core/ReferenceQueries.js","title":"render/morphfield/core/ReferenceQueries","summary":"","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/ReferenceQueries.md","moduleTitle":"render/morphfield/core/ReferenceQueries","source":"engine/render/morphfield/core/ReferenceQueries.js","import":"/engine/render/morphfield/core/ReferenceQueries.js","sourceHash":"0dfdeb837f906c5cb597751cb91b03172d35ad36b296e91b25ab820a0f531581","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/ReferenceQueries.js#0000:MorphFieldReferenceEvaluator","exportIndex":0,"name":"MorphFieldReferenceEvaluator","kind":"class","signature":"class MorphFieldReferenceEvaluator","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/ReferenceQueries.md","moduleTitle":"render/morphfield/core/ReferenceQueries","source":"engine/render/morphfield/core/ReferenceQueries.js","import":"/engine/render/morphfield/core/ReferenceQueries.js","sourceHash":"0dfdeb837f906c5cb597751cb91b03172d35ad36b296e91b25ab820a0f531581","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/ReferenceQueries.js#0001:evaluateSourceDistance","exportIndex":1,"name":"evaluateSourceDistance","kind":"function","signature":"evaluateSourceDistance(source, pointValue)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/ReferenceQueries.md","moduleTitle":"render/morphfield/core/ReferenceQueries","source":"engine/render/morphfield/core/ReferenceQueries.js","import":"/engine/render/morphfield/core/ReferenceQueries.js","sourceHash":"0dfdeb837f906c5cb597751cb91b03172d35ad36b296e91b25ab820a0f531581","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/ReferenceQueries.js#0002:evaluateNexelDistance","exportIndex":2,"name":"evaluateNexelDistance","kind":"function","signature":"evaluateNexelDistance(nexelValue, pointValue)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/ReferenceQueries.md","moduleTitle":"render/morphfield/core/ReferenceQueries","source":"engine/render/morphfield/core/ReferenceQueries.js","import":"/engine/render/morphfield/core/ReferenceQueries.js","sourceHash":"0dfdeb837f906c5cb597751cb91b03172d35ad36b296e91b25ab820a0f531581","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/ReferenceQueries.js#0003:createMorphFieldReferenceEvaluator","exportIndex":3,"name":"createMorphFieldReferenceEvaluator","kind":"function","signature":"createMorphFieldReferenceEvaluator(sceneOrCompiled)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/Transform.md","moduleTitle":"render/morphfield/core/Transform","source":"engine/render/morphfield/core/Transform.js","import":"/engine/render/morphfield/core/Transform.js","sourceHash":"b86e4be3c9d2ec8af42a442579bbccf0683dda261b4c83b6c4d354b37a48aded","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/core/Transform.js","title":"render/morphfield/core/Transform","summary":"","exportCount":9}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/Transform.md","moduleTitle":"render/morphfield/core/Transform","source":"engine/render/morphfield/core/Transform.js","import":"/engine/render/morphfield/core/Transform.js","sourceHash":"b86e4be3c9d2ec8af42a442579bbccf0683dda261b4c83b6c4d354b37a48aded","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/Transform.js#0000:normalizeVector3","exportIndex":0,"name":"normalizeVector3","kind":"function","signature":"normalizeVector3(value, path = 'vector', fallback = [0, 0, 0])","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/Transform.md","moduleTitle":"render/morphfield/core/Transform","source":"engine/render/morphfield/core/Transform.js","import":"/engine/render/morphfield/core/Transform.js","sourceHash":"b86e4be3c9d2ec8af42a442579bbccf0683dda261b4c83b6c4d354b37a48aded","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/Transform.js#0001:normalizeQuaternion","exportIndex":1,"name":"normalizeQuaternion","kind":"function","signature":"normalizeQuaternion(value, path = 'rotation')","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/Transform.md","moduleTitle":"render/morphfield/core/Transform","source":"engine/render/morphfield/core/Transform.js","import":"/engine/render/morphfield/core/Transform.js","sourceHash":"b86e4be3c9d2ec8af42a442579bbccf0683dda261b4c83b6c4d354b37a48aded","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/Transform.js#0002:matrixFromRigidUniformTransform","exportIndex":2,"name":"matrixFromRigidUniformTransform","kind":"function","signature":"matrixFromRigidUniformTransform(translation, rotation, scale)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/Transform.md","moduleTitle":"render/morphfield/core/Transform","source":"engine/render/morphfield/core/Transform.js","import":"/engine/render/morphfield/core/Transform.js","sourceHash":"b86e4be3c9d2ec8af42a442579bbccf0683dda261b4c83b6c4d354b37a48aded","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/Transform.js#0003:normalizeTransform","exportIndex":3,"name":"normalizeTransform","kind":"function","signature":"normalizeTransform(input = undefined, path = 'transform')","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/Transform.md","moduleTitle":"render/morphfield/core/Transform","source":"engine/render/morphfield/core/Transform.js","import":"/engine/render/morphfield/core/Transform.js","sourceHash":"b86e4be3c9d2ec8af42a442579bbccf0683dda261b4c83b6c4d354b37a48aded","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/Transform.js#0004:isIdentityTransform","exportIndex":4,"name":"isIdentityTransform","kind":"function","signature":"isIdentityTransform(transform)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/Transform.md","moduleTitle":"render/morphfield/core/Transform","source":"engine/render/morphfield/core/Transform.js","import":"/engine/render/morphfield/core/Transform.js","sourceHash":"b86e4be3c9d2ec8af42a442579bbccf0683dda261b4c83b6c4d354b37a48aded","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/Transform.js#0005:transformPoint","exportIndex":5,"name":"transformPoint","kind":"function","signature":"transformPoint(matrix, point)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/Transform.md","moduleTitle":"render/morphfield/core/Transform","source":"engine/render/morphfield/core/Transform.js","import":"/engine/render/morphfield/core/Transform.js","sourceHash":"b86e4be3c9d2ec8af42a442579bbccf0683dda261b4c83b6c4d354b37a48aded","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/Transform.js#0006:transformDirection","exportIndex":6,"name":"transformDirection","kind":"function","signature":"transformDirection(matrix, direction)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/Transform.md","moduleTitle":"render/morphfield/core/Transform","source":"engine/render/morphfield/core/Transform.js","import":"/engine/render/morphfield/core/Transform.js","sourceHash":"b86e4be3c9d2ec8af42a442579bbccf0683dda261b4c83b6c4d354b37a48aded","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/Transform.js#0007:transformAabb","exportIndex":7,"name":"transformAabb","kind":"function","signature":"transformAabb(bounds, transform)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/Transform.md","moduleTitle":"render/morphfield/core/Transform","source":"engine/render/morphfield/core/Transform.js","import":"/engine/render/morphfield/core/Transform.js","sourceHash":"b86e4be3c9d2ec8af42a442579bbccf0683dda261b4c83b6c4d354b37a48aded","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/Transform.js#0008:composeTransforms","exportIndex":8,"name":"composeTransforms","kind":"function","signature":"composeTransforms(parent, child)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/constants.md","moduleTitle":"render/morphfield/core/constants","source":"engine/render/morphfield/core/constants.js","import":"/engine/render/morphfield/core/constants.js","sourceHash":"922ff6ecd178ff759bab70df00d42539551e54380a5f1fa133a231ecf83a9c45","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/core/constants.js","title":"render/morphfield/core/constants","summary":"","exportCount":26}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/constants.md","moduleTitle":"render/morphfield/core/constants","source":"engine/render/morphfield/core/constants.js","import":"/engine/render/morphfield/core/constants.js","sourceHash":"922ff6ecd178ff759bab70df00d42539551e54380a5f1fa133a231ecf83a9c45","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/constants.js#0000:queryMaskForKind","exportIndex":0,"name":"queryMaskForKind","kind":"function","signature":"queryMaskForKind(kind)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/constants.md","moduleTitle":"render/morphfield/core/constants","source":"engine/render/morphfield/core/constants.js","import":"/engine/render/morphfield/core/constants.js","sourceHash":"922ff6ecd178ff759bab70df00d42539551e54380a5f1fa133a231ecf83a9c45","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/constants.js#0001:MORPHFIELD_SCHEMA_VERSION","exportIndex":1,"name":"MORPHFIELD_SCHEMA_VERSION","kind":"constant","signature":"MORPHFIELD_SCHEMA_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/constants.md","moduleTitle":"render/morphfield/core/constants","source":"engine/render/morphfield/core/constants.js","import":"/engine/render/morphfield/core/constants.js","sourceHash":"922ff6ecd178ff759bab70df00d42539551e54380a5f1fa133a231ecf83a9c45","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/constants.js#0002:FIELDLET_FAMILY","exportIndex":2,"name":"FIELDLET_FAMILY","kind":"constant","signature":"FIELDLET_FAMILY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/constants.md","moduleTitle":"render/morphfield/core/constants","source":"engine/render/morphfield/core/constants.js","import":"/engine/render/morphfield/core/constants.js","sourceHash":"922ff6ecd178ff759bab70df00d42539551e54380a5f1fa133a231ecf83a9c45","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/constants.js#0003:FIELDLET_FAMILY_NAME","exportIndex":3,"name":"FIELDLET_FAMILY_NAME","kind":"constant","signature":"FIELDLET_FAMILY_NAME","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/constants.md","moduleTitle":"render/morphfield/core/constants","source":"engine/render/morphfield/core/constants.js","import":"/engine/render/morphfield/core/constants.js","sourceHash":"922ff6ecd178ff759bab70df00d42539551e54380a5f1fa133a231ecf83a9c45","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/constants.js#0004:FIELDLET_SUBTYPE","exportIndex":4,"name":"FIELDLET_SUBTYPE","kind":"constant","signature":"FIELDLET_SUBTYPE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/constants.md","moduleTitle":"render/morphfield/core/constants","source":"engine/render/morphfield/core/constants.js","import":"/engine/render/morphfield/core/constants.js","sourceHash":"922ff6ecd178ff759bab70df00d42539551e54380a5f1fa133a231ecf83a9c45","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/constants.js#0005:QUERY_KIND","exportIndex":5,"name":"QUERY_KIND","kind":"constant","signature":"QUERY_KIND","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/constants.md","moduleTitle":"render/morphfield/core/constants","source":"engine/render/morphfield/core/constants.js","import":"/engine/render/morphfield/core/constants.js","sourceHash":"922ff6ecd178ff759bab70df00d42539551e54380a5f1fa133a231ecf83a9c45","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/constants.js#0006:QUERY_MASK","exportIndex":6,"name":"QUERY_MASK","kind":"constant","signature":"QUERY_MASK","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/constants.md","moduleTitle":"render/morphfield/core/constants","source":"engine/render/morphfield/core/constants.js","import":"/engine/render/morphfield/core/constants.js","sourceHash":"922ff6ecd178ff759bab70df00d42539551e54380a5f1fa133a231ecf83a9c45","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/constants.js#0007:FIELDLET_FLAG","exportIndex":7,"name":"FIELDLET_FLAG","kind":"constant","signature":"FIELDLET_FLAG","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/constants.md","moduleTitle":"render/morphfield/core/constants","source":"engine/render/morphfield/core/constants.js","import":"/engine/render/morphfield/core/constants.js","sourceHash":"922ff6ecd178ff759bab70df00d42539551e54380a5f1fa133a231ecf83a9c45","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/constants.js#0008:META_LAYOUT","exportIndex":8,"name":"META_LAYOUT","kind":"constant","signature":"META_LAYOUT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/constants.md","moduleTitle":"render/morphfield/core/constants","source":"engine/render/morphfield/core/constants.js","import":"/engine/render/morphfield/core/constants.js","sourceHash":"922ff6ecd178ff759bab70df00d42539551e54380a5f1fa133a231ecf83a9c45","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/constants.js#0009:INVALID_REF","exportIndex":9,"name":"INVALID_REF","kind":"constant","signature":"INVALID_REF","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/constants.md","moduleTitle":"render/morphfield/core/constants","source":"engine/render/morphfield/core/constants.js","import":"/engine/render/morphfield/core/constants.js","sourceHash":"922ff6ecd178ff759bab70df00d42539551e54380a5f1fa133a231ecf83a9c45","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/constants.js#0010:FIELDLET_HEADER_BYTES","exportIndex":10,"name":"FIELDLET_HEADER_BYTES","kind":"constant","signature":"FIELDLET_HEADER_BYTES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/constants.md","moduleTitle":"render/morphfield/core/constants","source":"engine/render/morphfield/core/constants.js","import":"/engine/render/morphfield/core/constants.js","sourceHash":"922ff6ecd178ff759bab70df00d42539551e54380a5f1fa133a231ecf83a9c45","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/constants.js#0011:FIELDLET_HEADER_WORDS","exportIndex":11,"name":"FIELDLET_HEADER_WORDS","kind":"constant","signature":"FIELDLET_HEADER_WORDS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/constants.md","moduleTitle":"render/morphfield/core/constants","source":"engine/render/morphfield/core/constants.js","import":"/engine/render/morphfield/core/constants.js","sourceHash":"922ff6ecd178ff759bab70df00d42539551e54380a5f1fa133a231ecf83a9c45","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/constants.js#0012:CERTIFICATE_BUNDLE_BYTES","exportIndex":12,"name":"CERTIFICATE_BUNDLE_BYTES","kind":"constant","signature":"CERTIFICATE_BUNDLE_BYTES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/constants.md","moduleTitle":"render/morphfield/core/constants","source":"engine/render/morphfield/core/constants.js","import":"/engine/render/morphfield/core/constants.js","sourceHash":"922ff6ecd178ff759bab70df00d42539551e54380a5f1fa133a231ecf83a9c45","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/constants.js#0013:CERTIFICATE_RECORD_BYTES","exportIndex":13,"name":"CERTIFICATE_RECORD_BYTES","kind":"constant","signature":"CERTIFICATE_RECORD_BYTES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/constants.md","moduleTitle":"render/morphfield/core/constants","source":"engine/render/morphfield/core/constants.js","import":"/engine/render/morphfield/core/constants.js","sourceHash":"922ff6ecd178ff759bab70df00d42539551e54380a5f1fa133a231ecf83a9c45","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/constants.js#0014:FIELDLET_HEADER_WORD","exportIndex":14,"name":"FIELDLET_HEADER_WORD","kind":"constant","signature":"FIELDLET_HEADER_WORD","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/constants.md","moduleTitle":"render/morphfield/core/constants","source":"engine/render/morphfield/core/constants.js","import":"/engine/render/morphfield/core/constants.js","sourceHash":"922ff6ecd178ff759bab70df00d42539551e54380a5f1fa133a231ecf83a9c45","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/constants.js#0015:CERTIFICATE_BUNDLE_WORD","exportIndex":15,"name":"CERTIFICATE_BUNDLE_WORD","kind":"constant","signature":"CERTIFICATE_BUNDLE_WORD","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/constants.md","moduleTitle":"render/morphfield/core/constants","source":"engine/render/morphfield/core/constants.js","import":"/engine/render/morphfield/core/constants.js","sourceHash":"922ff6ecd178ff759bab70df00d42539551e54380a5f1fa133a231ecf83a9c45","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/constants.js#0016:ANALYTIC_OPCODE","exportIndex":16,"name":"ANALYTIC_OPCODE","kind":"constant","signature":"ANALYTIC_OPCODE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/constants.md","moduleTitle":"render/morphfield/core/constants","source":"engine/render/morphfield/core/constants.js","import":"/engine/render/morphfield/core/constants.js","sourceHash":"922ff6ecd178ff759bab70df00d42539551e54380a5f1fa133a231ecf83a9c45","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/constants.js#0017:PAYLOAD_SHAPE","exportIndex":17,"name":"PAYLOAD_SHAPE","kind":"constant","signature":"PAYLOAD_SHAPE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/constants.md","moduleTitle":"render/morphfield/core/constants","source":"engine/render/morphfield/core/constants.js","import":"/engine/render/morphfield/core/constants.js","sourceHash":"922ff6ecd178ff759bab70df00d42539551e54380a5f1fa133a231ecf83a9c45","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/constants.js#0018:ANALYTIC_LIMITS","exportIndex":18,"name":"ANALYTIC_LIMITS","kind":"constant","signature":"ANALYTIC_LIMITS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/constants.md","moduleTitle":"render/morphfield/core/constants","source":"engine/render/morphfield/core/constants.js","import":"/engine/render/morphfield/core/constants.js","sourceHash":"922ff6ecd178ff759bab70df00d42539551e54380a5f1fa133a231ecf83a9c45","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/constants.js#0019:ANALYTIC_GPU_PARAMETER_MINIMUM","exportIndex":19,"name":"ANALYTIC_GPU_PARAMETER_MINIMUM","kind":"constant","signature":"ANALYTIC_GPU_PARAMETER_MINIMUM","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/constants.md","moduleTitle":"render/morphfield/core/constants","source":"engine/render/morphfield/core/constants.js","import":"/engine/render/morphfield/core/constants.js","sourceHash":"922ff6ecd178ff759bab70df00d42539551e54380a5f1fa133a231ecf83a9c45","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/constants.js#0020:NEXEL_LIMITS","exportIndex":20,"name":"NEXEL_LIMITS","kind":"constant","signature":"NEXEL_LIMITS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/constants.md","moduleTitle":"render/morphfield/core/constants","source":"engine/render/morphfield/core/constants.js","import":"/engine/render/morphfield/core/constants.js","sourceHash":"922ff6ecd178ff759bab70df00d42539551e54380a5f1fa133a231ecf83a9c45","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/constants.js#0021:SOURCE_KIND","exportIndex":21,"name":"SOURCE_KIND","kind":"constant","signature":"SOURCE_KIND","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/constants.md","moduleTitle":"render/morphfield/core/constants","source":"engine/render/morphfield/core/constants.js","import":"/engine/render/morphfield/core/constants.js","sourceHash":"922ff6ecd178ff759bab70df00d42539551e54380a5f1fa133a231ecf83a9c45","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/constants.js#0022:CSG_OPERATION","exportIndex":22,"name":"CSG_OPERATION","kind":"constant","signature":"CSG_OPERATION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/constants.md","moduleTitle":"render/morphfield/core/constants","source":"engine/render/morphfield/core/constants.js","import":"/engine/render/morphfield/core/constants.js","sourceHash":"922ff6ecd178ff759bab70df00d42539551e54380a5f1fa133a231ecf83a9c45","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/constants.js#0023:UPDATE_CLASS","exportIndex":23,"name":"UPDATE_CLASS","kind":"constant","signature":"UPDATE_CLASS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/constants.md","moduleTitle":"render/morphfield/core/constants","source":"engine/render/morphfield/core/constants.js","import":"/engine/render/morphfield/core/constants.js","sourceHash":"922ff6ecd178ff759bab70df00d42539551e54380a5f1fa133a231ecf83a9c45","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/constants.js#0024:TOPOLOGY_REQUIREMENT","exportIndex":24,"name":"TOPOLOGY_REQUIREMENT","kind":"constant","signature":"TOPOLOGY_REQUIREMENT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/constants.md","moduleTitle":"render/morphfield/core/constants","source":"engine/render/morphfield/core/constants.js","import":"/engine/render/morphfield/core/constants.js","sourceHash":"922ff6ecd178ff759bab70df00d42539551e54380a5f1fa133a231ecf83a9c45","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/constants.js#0025:FEATURE_MODE","exportIndex":25,"name":"FEATURE_MODE","kind":"constant","signature":"FEATURE_MODE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/errors.md","moduleTitle":"render/morphfield/core/errors","source":"engine/render/morphfield/core/errors.js","import":"/engine/render/morphfield/core/errors.js","sourceHash":"533330a8f55988171313011c0a7052d9a5ec18b7ca44239d91c872fb08f5fde1","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/core/errors.js","title":"render/morphfield/core/errors","summary":"","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/errors.md","moduleTitle":"render/morphfield/core/errors","source":"engine/render/morphfield/core/errors.js","import":"/engine/render/morphfield/core/errors.js","sourceHash":"533330a8f55988171313011c0a7052d9a5ec18b7ca44239d91c872fb08f5fde1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/errors.js#0000:MorphFieldError","exportIndex":0,"name":"MorphFieldError","kind":"class","signature":"class MorphFieldError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/errors.md","moduleTitle":"render/morphfield/core/errors","source":"engine/render/morphfield/core/errors.js","import":"/engine/render/morphfield/core/errors.js","sourceHash":"533330a8f55988171313011c0a7052d9a5ec18b7ca44239d91c872fb08f5fde1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/errors.js#0001:failMorphField","exportIndex":1,"name":"failMorphField","kind":"function","signature":"failMorphField(code, message, details = undefined)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/errors.md","moduleTitle":"render/morphfield/core/errors","source":"engine/render/morphfield/core/errors.js","import":"/engine/render/morphfield/core/errors.js","sourceHash":"533330a8f55988171313011c0a7052d9a5ec18b7ca44239d91c872fb08f5fde1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/errors.js#0002:invariant","exportIndex":2,"name":"invariant","kind":"function","signature":"invariant(condition, code, message, details = undefined)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/errors.md","moduleTitle":"render/morphfield/core/errors","source":"engine/render/morphfield/core/errors.js","import":"/engine/render/morphfield/core/errors.js","sourceHash":"533330a8f55988171313011c0a7052d9a5ec18b7ca44239d91c872fb08f5fde1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/errors.js#0003:asMorphFieldError","exportIndex":3,"name":"asMorphFieldError","kind":"function","signature":"asMorphFieldError(error, code, message, details = undefined)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/index.md","moduleTitle":"render/morphfield/core/index","source":"engine/render/morphfield/core/index.js","import":"/engine/render/morphfield/core/index.js","sourceHash":"53a4ac433583e78c18ea7680cf24bb4e9f722ec5112bd32f95c778e934775629","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/core/index.js","title":"render/morphfield/core/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/selfTest.md","moduleTitle":"render/morphfield/core/selfTest","source":"engine/render/morphfield/core/selfTest.js","import":"/engine/render/morphfield/core/selfTest.js","sourceHash":"252515dd36ce7197d17b634a7cbf02d8317989720cd938cc757db1dd3a956016","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/core/selfTest.js","title":"render/morphfield/core/selfTest","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/selfTest.md","moduleTitle":"render/morphfield/core/selfTest","source":"engine/render/morphfield/core/selfTest.js","import":"/engine/render/morphfield/core/selfTest.js","sourceHash":"252515dd36ce7197d17b634a7cbf02d8317989720cd938cc757db1dd3a956016","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/selfTest.js#0000:runMorphFieldCoreSelfTests","exportIndex":0,"name":"runMorphFieldCoreSelfTests","kind":"function","signature":"async runMorphFieldCoreSelfTests()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/serialization.md","moduleTitle":"render/morphfield/core/serialization","source":"engine/render/morphfield/core/serialization.js","import":"/engine/render/morphfield/core/serialization.js","sourceHash":"3fd1e9aa583b9962d5079d5db9f7b4b6ae63d9b96e334d6c27bc09ff7853904a","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/core/serialization.js","title":"render/morphfield/core/serialization","summary":"Compare identifiers by ECMAScript UTF-16 code-unit order. Unlike localeCompare(), this ordering is independent of the host locale and ICU version, so packed Fieldlet indices remain reproducible across machines.","exportCount":10}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/serialization.md","moduleTitle":"render/morphfield/core/serialization","source":"engine/render/morphfield/core/serialization.js","import":"/engine/render/morphfield/core/serialization.js","sourceHash":"3fd1e9aa583b9962d5079d5db9f7b4b6ae63d9b96e334d6c27bc09ff7853904a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/serialization.js#0000:isPlainObject","exportIndex":0,"name":"isPlainObject","kind":"function","signature":"isPlainObject(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/serialization.md","moduleTitle":"render/morphfield/core/serialization","source":"engine/render/morphfield/core/serialization.js","import":"/engine/render/morphfield/core/serialization.js","sourceHash":"3fd1e9aa583b9962d5079d5db9f7b4b6ae63d9b96e334d6c27bc09ff7853904a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/serialization.js#0001:compareCanonicalStrings","exportIndex":1,"name":"compareCanonicalStrings","kind":"function","signature":"compareCanonicalStrings(left, right)","summary":"Compare identifiers by ECMAScript UTF-16 code-unit order. Unlike localeCompare(), this ordering is independent of the host locale and ICU version, so packed Fieldlet indices remain reproducible across machines."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/serialization.md","moduleTitle":"render/morphfield/core/serialization","source":"engine/render/morphfield/core/serialization.js","import":"/engine/render/morphfield/core/serialization.js","sourceHash":"3fd1e9aa583b9962d5079d5db9f7b4b6ae63d9b96e334d6c27bc09ff7853904a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/serialization.js#0002:canonicalize","exportIndex":2,"name":"canonicalize","kind":"function","signature":"canonicalize(value, path = '$', options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/serialization.md","moduleTitle":"render/morphfield/core/serialization","source":"engine/render/morphfield/core/serialization.js","import":"/engine/render/morphfield/core/serialization.js","sourceHash":"3fd1e9aa583b9962d5079d5db9f7b4b6ae63d9b96e334d6c27bc09ff7853904a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/serialization.js#0003:canonicalStringify","exportIndex":3,"name":"canonicalStringify","kind":"function","signature":"canonicalStringify(value, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/serialization.md","moduleTitle":"render/morphfield/core/serialization","source":"engine/render/morphfield/core/serialization.js","import":"/engine/render/morphfield/core/serialization.js","sourceHash":"3fd1e9aa583b9962d5079d5db9f7b4b6ae63d9b96e334d6c27bc09ff7853904a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/serialization.js#0004:canonicalParse","exportIndex":4,"name":"canonicalParse","kind":"function","signature":"canonicalParse(text, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/serialization.md","moduleTitle":"render/morphfield/core/serialization","source":"engine/render/morphfield/core/serialization.js","import":"/engine/render/morphfield/core/serialization.js","sourceHash":"3fd1e9aa583b9962d5079d5db9f7b4b6ae63d9b96e334d6c27bc09ff7853904a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/serialization.js#0005:deepFreeze","exportIndex":5,"name":"deepFreeze","kind":"function","signature":"deepFreeze(value, visited = new WeakSet()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/serialization.md","moduleTitle":"render/morphfield/core/serialization","source":"engine/render/morphfield/core/serialization.js","import":"/engine/render/morphfield/core/serialization.js","sourceHash":"3fd1e9aa583b9962d5079d5db9f7b4b6ae63d9b96e334d6c27bc09ff7853904a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/serialization.js#0006:cloneCanonical","exportIndex":6,"name":"cloneCanonical","kind":"function","signature":"cloneCanonical(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/serialization.md","moduleTitle":"render/morphfield/core/serialization","source":"engine/render/morphfield/core/serialization.js","import":"/engine/render/morphfield/core/serialization.js","sourceHash":"3fd1e9aa583b9962d5079d5db9f7b4b6ae63d9b96e334d6c27bc09ff7853904a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/serialization.js#0007:utf8Encode","exportIndex":7,"name":"utf8Encode","kind":"function","signature":"utf8Encode(text)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/serialization.md","moduleTitle":"render/morphfield/core/serialization","source":"engine/render/morphfield/core/serialization.js","import":"/engine/render/morphfield/core/serialization.js","sourceHash":"3fd1e9aa583b9962d5079d5db9f7b4b6ae63d9b96e334d6c27bc09ff7853904a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/serialization.js#0008:utf8Decode","exportIndex":8,"name":"utf8Decode","kind":"function","signature":"utf8Decode(bytes, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/serialization.md","moduleTitle":"render/morphfield/core/serialization","source":"engine/render/morphfield/core/serialization.js","import":"/engine/render/morphfield/core/serialization.js","sourceHash":"3fd1e9aa583b9962d5079d5db9f7b4b6ae63d9b96e334d6c27bc09ff7853904a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/serialization.js#0009:MORPHFIELD_CANONICAL_LIMITS","exportIndex":9,"name":"MORPHFIELD_CANONICAL_LIMITS","kind":"constant","signature":"MORPHFIELD_CANONICAL_LIMITS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/validation.md","moduleTitle":"render/morphfield/core/validation","source":"engine/render/morphfield/core/validation.js","import":"/engine/render/morphfield/core/validation.js","sourceHash":"4978d7f3cb256e8c36df8109264d64f50a79f2941884070167bfd2fb176d2f64","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/core/validation.js","title":"render/morphfield/core/validation","summary":"","exportCount":14}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/validation.md","moduleTitle":"render/morphfield/core/validation","source":"engine/render/morphfield/core/validation.js","import":"/engine/render/morphfield/core/validation.js","sourceHash":"4978d7f3cb256e8c36df8109264d64f50a79f2941884070167bfd2fb176d2f64","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/validation.js#0000:normalizeBounds","exportIndex":0,"name":"normalizeBounds","kind":"function","signature":"normalizeBounds(value, path = 'bounds')","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/validation.md","moduleTitle":"render/morphfield/core/validation","source":"engine/render/morphfield/core/validation.js","import":"/engine/render/morphfield/core/validation.js","sourceHash":"4978d7f3cb256e8c36df8109264d64f50a79f2941884070167bfd2fb176d2f64","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/validation.js#0001:normalizeSource","exportIndex":1,"name":"normalizeSource","kind":"function","signature":"normalizeSource(input, path = 'source', depth = 0, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/validation.md","moduleTitle":"render/morphfield/core/validation","source":"engine/render/morphfield/core/validation.js","import":"/engine/render/morphfield/core/validation.js","sourceHash":"4978d7f3cb256e8c36df8109264d64f50a79f2941884070167bfd2fb176d2f64","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/validation.js#0002:validateMaterialF32Channels","exportIndex":2,"name":"validateMaterialF32Channels","kind":"function","signature":"validateMaterialF32Channels(material, path = 'material')","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/validation.md","moduleTitle":"render/morphfield/core/validation","source":"engine/render/morphfield/core/validation.js","import":"/engine/render/morphfield/core/validation.js","sourceHash":"4978d7f3cb256e8c36df8109264d64f50a79f2941884070167bfd2fb176d2f64","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/validation.js#0003:validateNexelId","exportIndex":3,"name":"validateNexelId","kind":"function","signature":"validateNexelId(value, path = 'id')","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/validation.md","moduleTitle":"render/morphfield/core/validation","source":"engine/render/morphfield/core/validation.js","import":"/engine/render/morphfield/core/validation.js","sourceHash":"4978d7f3cb256e8c36df8109264d64f50a79f2941884070167bfd2fb176d2f64","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/validation.js#0004:normalizeNexelDescriptor","exportIndex":4,"name":"normalizeNexelDescriptor","kind":"function","signature":"normalizeNexelDescriptor(input, path = 'nexel')","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/validation.md","moduleTitle":"render/morphfield/core/validation","source":"engine/render/morphfield/core/validation.js","import":"/engine/render/morphfield/core/validation.js","sourceHash":"4978d7f3cb256e8c36df8109264d64f50a79f2941884070167bfd2fb176d2f64","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/validation.js#0005:planRepresentation","exportIndex":5,"name":"planRepresentation","kind":"function","signature":"planRepresentation(source)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/validation.md","moduleTitle":"render/morphfield/core/validation","source":"engine/render/morphfield/core/validation.js","import":"/engine/render/morphfield/core/validation.js","sourceHash":"4978d7f3cb256e8c36df8109264d64f50a79f2941884070167bfd2fb176d2f64","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/validation.js#0006:computeSourceBounds","exportIndex":6,"name":"computeSourceBounds","kind":"function","signature":"computeSourceBounds(source)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/validation.md","moduleTitle":"render/morphfield/core/validation","source":"engine/render/morphfield/core/validation.js","import":"/engine/render/morphfield/core/validation.js","sourceHash":"4978d7f3cb256e8c36df8109264d64f50a79f2941884070167bfd2fb176d2f64","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/validation.js#0007:computeNexelBounds","exportIndex":7,"name":"computeNexelBounds","kind":"function","signature":"computeNexelBounds(nexel)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/validation.md","moduleTitle":"render/morphfield/core/validation","source":"engine/render/morphfield/core/validation.js","import":"/engine/render/morphfield/core/validation.js","sourceHash":"4978d7f3cb256e8c36df8109264d64f50a79f2941884070167bfd2fb176d2f64","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/validation.js#0008:computeNexelQueryMask","exportIndex":8,"name":"computeNexelQueryMask","kind":"function","signature":"computeNexelQueryMask(nexel)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/validation.md","moduleTitle":"render/morphfield/core/validation","source":"engine/render/morphfield/core/validation.js","import":"/engine/render/morphfield/core/validation.js","sourceHash":"4978d7f3cb256e8c36df8109264d64f50a79f2941884070167bfd2fb176d2f64","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/validation.js#0009:sourceContainsLocalTransforms","exportIndex":9,"name":"sourceContainsLocalTransforms","kind":"function","signature":"sourceContainsLocalTransforms(source)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/validation.md","moduleTitle":"render/morphfield/core/validation","source":"engine/render/morphfield/core/validation.js","import":"/engine/render/morphfield/core/validation.js","sourceHash":"4978d7f3cb256e8c36df8109264d64f50a79f2941884070167bfd2fb176d2f64","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/validation.js#0010:countAnalyticInstructions","exportIndex":10,"name":"countAnalyticInstructions","kind":"function","signature":"countAnalyticInstructions(source)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/validation.md","moduleTitle":"render/morphfield/core/validation","source":"engine/render/morphfield/core/validation.js","import":"/engine/render/morphfield/core/validation.js","sourceHash":"4978d7f3cb256e8c36df8109264d64f50a79f2941884070167bfd2fb176d2f64","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/validation.js#0011:maximumAnalyticStackDepth","exportIndex":11,"name":"maximumAnalyticStackDepth","kind":"function","signature":"maximumAnalyticStackDepth(source)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/validation.md","moduleTitle":"render/morphfield/core/validation","source":"engine/render/morphfield/core/validation.js","import":"/engine/render/morphfield/core/validation.js","sourceHash":"4978d7f3cb256e8c36df8109264d64f50a79f2941884070167bfd2fb176d2f64","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/validation.js#0012:MORPHFIELD_F32_MAX","exportIndex":12,"name":"MORPHFIELD_F32_MAX","kind":"constant","signature":"MORPHFIELD_F32_MAX","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/core/validation.md","moduleTitle":"render/morphfield/core/validation","source":"engine/render/morphfield/core/validation.js","import":"/engine/render/morphfield/core/validation.js","sourceHash":"4978d7f3cb256e8c36df8109264d64f50a79f2941884070167bfd2fb176d2f64","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/core/validation.js#0013:ORIENTED_KERNEL_SUPPORT_SQUARED_RADIUS","exportIndex":13,"name":"ORIENTED_KERNEL_SUPPORT_SQUARED_RADIUS","kind":"constant","signature":"ORIENTED_KERNEL_SUPPORT_SQUARED_RADIUS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/index.md","moduleTitle":"render/morphfield/index","source":"engine/render/morphfield/index.js","import":"/engine/render/morphfield/index.js","sourceHash":"6fbe91a745a7d5298b89c516e1a2377d651a56bc01799221c5dd89ebe94b3d60","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/index.js","title":"render/morphfield/index","summary":"Create a device-independent semantic Nexel scene.","exportCount":25}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/index.md","moduleTitle":"render/morphfield/index","source":"engine/render/morphfield/index.js","import":"/engine/render/morphfield/index.js","sourceHash":"6fbe91a745a7d5298b89c516e1a2377d651a56bc01799221c5dd89ebe94b3d60","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/index.js#0000:createScene","exportIndex":0,"name":"createScene","kind":"function","signature":"createScene(options)","summary":"Create a device-independent semantic Nexel scene."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/index.md","moduleTitle":"render/morphfield/index","source":"engine/render/morphfield/index.js","import":"/engine/render/morphfield/index.js","sourceHash":"6fbe91a745a7d5298b89c516e1a2377d651a56bc01799221c5dd89ebe94b3d60","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/index.js#0001:createCompiler","exportIndex":1,"name":"createCompiler","kind":"function","signature":"createCompiler(options)","summary":"Create a deterministic device-independent MorphField compiler."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/index.md","moduleTitle":"render/morphfield/index","source":"engine/render/morphfield/index.js","import":"/engine/render/morphfield/index.js","sourceHash":"6fbe91a745a7d5298b89c516e1a2377d651a56bc01799221c5dd89ebe94b3d60","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/index.js#0002:encodeAsset","exportIndex":2,"name":"encodeAsset","kind":"function","signature":"encodeAsset(scene, options)","summary":"Encode a semantic scene into a bounded, checksummed MOR2 container."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/index.md","moduleTitle":"render/morphfield/index","source":"engine/render/morphfield/index.js","import":"/engine/render/morphfield/index.js","sourceHash":"6fbe91a745a7d5298b89c516e1a2377d651a56bc01799221c5dd89ebe94b3d60","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/index.js#0003:loadAsset","exportIndex":3,"name":"loadAsset","kind":"function","signature":"async loadAsset(source, options)","summary":"Load a MOR2 container and return its authoritative semantic Nexel scene. Use inspectAsset() when chunk metadata or provenance is also required."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/index.md","moduleTitle":"render/morphfield/index","source":"engine/render/morphfield/index.js","import":"/engine/render/morphfield/index.js","sourceHash":"6fbe91a745a7d5298b89c516e1a2377d651a56bc01799221c5dd89ebe94b3d60","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/index.js#0004:inspectAsset","exportIndex":4,"name":"inspectAsset","kind":"function","signature":"inspectAsset(source, options)","summary":"Decode a MOR2 container while retaining provenance and optional chunks."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/index.md","moduleTitle":"render/morphfield/index","source":"engine/render/morphfield/index.js","import":"/engine/render/morphfield/index.js","sourceHash":"6fbe91a745a7d5298b89c516e1a2377d651a56bc01799221c5dd89ebe94b3d60","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/index.js#0005:createRenderer","exportIndex":5,"name":"createRenderer","kind":"function","signature":"createRenderer(options)","summary":"Create an external-encoder renderer that borrows its host GPUDevice."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/index.md","moduleTitle":"render/morphfield/index","source":"engine/render/morphfield/index.js","import":"/engine/render/morphfield/index.js","sourceHash":"6fbe91a745a7d5298b89c516e1a2377d651a56bc01799221c5dd89ebe94b3d60","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/index.js#0006:createPathTracer","exportIndex":6,"name":"createPathTracer","kind":"function","signature":"createPathTracer(options)","summary":"Create the bounded-queue progressive compute path tracer."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/index.md","moduleTitle":"render/morphfield/index","source":"engine/render/morphfield/index.js","import":"/engine/render/morphfield/index.js","sourceHash":"6fbe91a745a7d5298b89c516e1a2377d651a56bc01799221c5dd89ebe94b3d60","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/index.js#0007:createMicrostructureRenderer","exportIndex":7,"name":"createMicrostructureRenderer","kind":"function","signature":"createMicrostructureRenderer(options)","summary":"Create the portable u32 render-cluster decoder on a borrowed GPU device."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/index.md","moduleTitle":"render/morphfield/index","source":"engine/render/morphfield/index.js","import":"/engine/render/morphfield/index.js","sourceHash":"6fbe91a745a7d5298b89c516e1a2377d651a56bc01799221c5dd89ebe94b3d60","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/index.js#0008:createAffineBrickRenderer","exportIndex":8,"name":"createAffineBrickRenderer","kind":"function","signature":"createAffineBrickRenderer(options)","summary":"Create the direct 32-byte AFFINE4 brick decoder on a borrowed GPU device."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/index.md","moduleTitle":"render/morphfield/index","source":"engine/render/morphfield/index.js","import":"/engine/render/morphfield/index.js","sourceHash":"6fbe91a745a7d5298b89c516e1a2377d651a56bc01799221c5dd89ebe94b3d60","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/index.js#0009:MorphField","exportIndex":9,"name":"MorphField","kind":"constant","signature":"MorphField","summary":"Stable public namespace used by Engine.MorphField and bundled window.PE. Internal implementation groups remain inspectable without flattening conflicting ABI aliases into the public method surface."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/index.md","moduleTitle":"render/morphfield/index","source":"engine/render/morphfield/index.js","import":"/engine/render/morphfield/index.js","sourceHash":"6fbe91a745a7d5298b89c516e1a2377d651a56bc01799221c5dd89ebe94b3d60","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/index.js#0010:MORPHFIELD_LOGICAL_PHASES","exportIndex":10,"name":"MORPHFIELD_LOGICAL_PHASES","kind":"re-export","signature":"MORPHFIELD_LOGICAL_PHASES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/index.md","moduleTitle":"render/morphfield/index","source":"engine/render/morphfield/index.js","import":"/engine/render/morphfield/index.js","sourceHash":"6fbe91a745a7d5298b89c516e1a2377d651a56bc01799221c5dd89ebe94b3d60","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/index.js#0011:MORPHFIELD_QUALITY_TIERS","exportIndex":11,"name":"MORPHFIELD_QUALITY_TIERS","kind":"re-export","signature":"MORPHFIELD_QUALITY_TIERS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/index.md","moduleTitle":"render/morphfield/index","source":"engine/render/morphfield/index.js","import":"/engine/render/morphfield/index.js","sourceHash":"6fbe91a745a7d5298b89c516e1a2377d651a56bc01799221c5dd89ebe94b3d60","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/index.js#0012:MorphFieldQueryEncoder","exportIndex":12,"name":"MorphFieldQueryEncoder","kind":"re-export","signature":"MorphFieldQueryEncoder","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/index.md","moduleTitle":"render/morphfield/index","source":"engine/render/morphfield/index.js","import":"/engine/render/morphfield/index.js","sourceHash":"6fbe91a745a7d5298b89c516e1a2377d651a56bc01799221c5dd89ebe94b3d60","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/index.js#0013:MorphFieldRenderer","exportIndex":13,"name":"MorphFieldRenderer","kind":"re-export","signature":"MorphFieldRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/index.md","moduleTitle":"render/morphfield/index","source":"engine/render/morphfield/index.js","import":"/engine/render/morphfield/index.js","sourceHash":"6fbe91a745a7d5298b89c516e1a2377d651a56bc01799221c5dd89ebe94b3d60","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/index.js#0014:MorphFieldWavefrontPathTracer","exportIndex":14,"name":"MorphFieldWavefrontPathTracer","kind":"re-export","signature":"MorphFieldWavefrontPathTracer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/index.md","moduleTitle":"render/morphfield/index","source":"engine/render/morphfield/index.js","import":"/engine/render/morphfield/index.js","sourceHash":"6fbe91a745a7d5298b89c516e1a2377d651a56bc01799221c5dd89ebe94b3d60","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/index.js#0015:NexelAffineBrickRenderer","exportIndex":15,"name":"NexelAffineBrickRenderer","kind":"re-export","signature":"NexelAffineBrickRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/index.md","moduleTitle":"render/morphfield/index","source":"engine/render/morphfield/index.js","import":"/engine/render/morphfield/index.js","sourceHash":"6fbe91a745a7d5298b89c516e1a2377d651a56bc01799221c5dd89ebe94b3d60","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/index.js#0016:NexelMicrostructureRenderer","exportIndex":16,"name":"NexelMicrostructureRenderer","kind":"re-export","signature":"NexelMicrostructureRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/index.md","moduleTitle":"render/morphfield/index","source":"engine/render/morphfield/index.js","import":"/engine/render/morphfield/index.js","sourceHash":"6fbe91a745a7d5298b89c516e1a2377d651a56bc01799221c5dd89ebe94b3d60","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/index.js#0017:canonicalizeCompiledScene","exportIndex":17,"name":"canonicalizeCompiledScene","kind":"re-export","signature":"canonicalizeCompiledScene","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/index.md","moduleTitle":"render/morphfield/index","source":"engine/render/morphfield/index.js","import":"/engine/render/morphfield/index.js","sourceHash":"6fbe91a745a7d5298b89c516e1a2377d651a56bc01799221c5dd89ebe94b3d60","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/index.js#0018:createNexelAffineBrickRenderer","exportIndex":18,"name":"createNexelAffineBrickRenderer","kind":"re-export","signature":"createNexelAffineBrickRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/index.md","moduleTitle":"render/morphfield/index","source":"engine/render/morphfield/index.js","import":"/engine/render/morphfield/index.js","sourceHash":"6fbe91a745a7d5298b89c516e1a2377d651a56bc01799221c5dd89ebe94b3d60","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/index.js#0019:createNexelMicrostructureRenderer","exportIndex":19,"name":"createNexelMicrostructureRenderer","kind":"re-export","signature":"createNexelMicrostructureRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/index.md","moduleTitle":"render/morphfield/index","source":"engine/render/morphfield/index.js","import":"/engine/render/morphfield/index.js","sourceHash":"6fbe91a745a7d5298b89c516e1a2377d651a56bc01799221c5dd89ebe94b3d60","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/index.js#0020:createWavefrontPathTracer","exportIndex":20,"name":"createWavefrontPathTracer","kind":"re-export","signature":"createWavefrontPathTracer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/index.md","moduleTitle":"render/morphfield/index","source":"engine/render/morphfield/index.js","import":"/engine/render/morphfield/index.js","sourceHash":"6fbe91a745a7d5298b89c516e1a2377d651a56bc01799221c5dd89ebe94b3d60","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/index.js#0021:inspectDeviceCapabilities","exportIndex":21,"name":"inspectDeviceCapabilities","kind":"re-export","signature":"inspectDeviceCapabilities","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/index.md","moduleTitle":"render/morphfield/index","source":"engine/render/morphfield/index.js","import":"/engine/render/morphfield/index.js","sourceHash":"6fbe91a745a7d5298b89c516e1a2377d651a56bc01799221c5dd89ebe94b3d60","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/index.js#0022:inspectNexelComputeCapabilities","exportIndex":22,"name":"inspectNexelComputeCapabilities","kind":"re-export","signature":"inspectNexelComputeCapabilities","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/index.md","moduleTitle":"render/morphfield/index","source":"engine/render/morphfield/index.js","import":"/engine/render/morphfield/index.js","sourceHash":"6fbe91a745a7d5298b89c516e1a2377d651a56bc01799221c5dd89ebe94b3d60","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/index.js#0023:validateBorrowedDevice","exportIndex":23,"name":"validateBorrowedDevice","kind":"re-export","signature":"validateBorrowedDevice","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/index.md","moduleTitle":"render/morphfield/index","source":"engine/render/morphfield/index.js","import":"/engine/render/morphfield/index.js","sourceHash":"6fbe91a745a7d5298b89c516e1a2377d651a56bc01799221c5dd89ebe94b3d60","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/index.js#0024:validateCompiledSceneAbi","exportIndex":24,"name":"validateCompiledSceneAbi","kind":"re-export","signature":"validateCompiledSceneAbi","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/AdaptiveQualityGovernor.md","moduleTitle":"render/morphfield/runtime/AdaptiveQualityGovernor","source":"engine/render/morphfield/runtime/AdaptiveQualityGovernor.js","import":"/engine/render/morphfield/runtime/AdaptiveQualityGovernor.js","sourceHash":"909f4ea54d5aa39a4e8c5a355c948be07789461ddea1d2349b4f80e6e790e914","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/runtime/AdaptiveQualityGovernor.js","title":"render/morphfield/runtime/AdaptiveQualityGovernor","summary":"","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/AdaptiveQualityGovernor.md","moduleTitle":"render/morphfield/runtime/AdaptiveQualityGovernor","source":"engine/render/morphfield/runtime/AdaptiveQualityGovernor.js","import":"/engine/render/morphfield/runtime/AdaptiveQualityGovernor.js","sourceHash":"909f4ea54d5aa39a4e8c5a355c948be07789461ddea1d2349b4f80e6e790e914","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/AdaptiveQualityGovernor.js#0000:normalizeQualityDecision","exportIndex":0,"name":"normalizeQualityDecision","kind":"function","signature":"normalizeQualityDecision(decision, fallback, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/AdaptiveQualityGovernor.md","moduleTitle":"render/morphfield/runtime/AdaptiveQualityGovernor","source":"engine/render/morphfield/runtime/AdaptiveQualityGovernor.js","import":"/engine/render/morphfield/runtime/AdaptiveQualityGovernor.js","sourceHash":"909f4ea54d5aa39a4e8c5a355c948be07789461ddea1d2349b4f80e6e790e914","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/AdaptiveQualityGovernor.js#0001:MORPHFIELD_QUALITY_TIERS","exportIndex":1,"name":"MORPHFIELD_QUALITY_TIERS","kind":"constant","signature":"MORPHFIELD_QUALITY_TIERS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/AdaptiveQualityGovernor.md","moduleTitle":"render/morphfield/runtime/AdaptiveQualityGovernor","source":"engine/render/morphfield/runtime/AdaptiveQualityGovernor.js","import":"/engine/render/morphfield/runtime/AdaptiveQualityGovernor.js","sourceHash":"909f4ea54d5aa39a4e8c5a355c948be07789461ddea1d2349b4f80e6e790e914","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/AdaptiveQualityGovernor.js#0002:AdaptiveQualityGovernor","exportIndex":2,"name":"AdaptiveQualityGovernor","kind":"re-export","signature":"AdaptiveQualityGovernor","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/MorphFieldRenderer.md","moduleTitle":"render/morphfield/runtime/MorphFieldRenderer","source":"engine/render/morphfield/runtime/MorphFieldRenderer.js","import":"/engine/render/morphfield/runtime/MorphFieldRenderer.js","sourceHash":"c3eef7dc3c65f61b9864d77c133b1000ac5bb572ee462af31cf8bbffac776258","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/runtime/MorphFieldRenderer.js","title":"render/morphfield/runtime/MorphFieldRenderer","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/MorphFieldRenderer.md","moduleTitle":"render/morphfield/runtime/MorphFieldRenderer","source":"engine/render/morphfield/runtime/MorphFieldRenderer.js","import":"/engine/render/morphfield/runtime/MorphFieldRenderer.js","sourceHash":"c3eef7dc3c65f61b9864d77c133b1000ac5bb572ee462af31cf8bbffac776258","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/MorphFieldRenderer.js#0000:MorphFieldRenderer","exportIndex":0,"name":"MorphFieldRenderer","kind":"class","signature":"class MorphFieldRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/MorphFieldRenderer.md","moduleTitle":"render/morphfield/runtime/MorphFieldRenderer","source":"engine/render/morphfield/runtime/MorphFieldRenderer.js","import":"/engine/render/morphfield/runtime/MorphFieldRenderer.js","sourceHash":"c3eef7dc3c65f61b9864d77c133b1000ac5bb572ee462af31cf8bbffac776258","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/MorphFieldRenderer.js#0001:MORPHFIELD_LOGICAL_PHASES","exportIndex":1,"name":"MORPHFIELD_LOGICAL_PHASES","kind":"re-export","signature":"MORPHFIELD_LOGICAL_PHASES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/NexelAffineBrickRenderer.md","moduleTitle":"render/morphfield/runtime/NexelAffineBrickRenderer","source":"engine/render/morphfield/runtime/NexelAffineBrickRenderer.js","import":"/engine/render/morphfield/runtime/NexelAffineBrickRenderer.js","sourceHash":"2e44dde5c6ca2951530ee7c30dac61f494774cbb01b885d4e260a50865da9df8","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/runtime/NexelAffineBrickRenderer.js","title":"render/morphfield/runtime/NexelAffineBrickRenderer","summary":"Directly expands 32-byte AFFINE4 morphology payloads into render-only cells. Simulation/collision remains attached to the authoritative MorphField scene.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/NexelAffineBrickRenderer.md","moduleTitle":"render/morphfield/runtime/NexelAffineBrickRenderer","source":"engine/render/morphfield/runtime/NexelAffineBrickRenderer.js","import":"/engine/render/morphfield/runtime/NexelAffineBrickRenderer.js","sourceHash":"2e44dde5c6ca2951530ee7c30dac61f494774cbb01b885d4e260a50865da9df8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/NexelAffineBrickRenderer.js#0000:NexelAffineBrickRenderer","exportIndex":0,"name":"NexelAffineBrickRenderer","kind":"class","signature":"class NexelAffineBrickRenderer","summary":"Directly expands 32-byte AFFINE4 morphology payloads into render-only cells. Simulation/collision remains attached to the authoritative MorphField scene."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/NexelAffineBrickRenderer.md","moduleTitle":"render/morphfield/runtime/NexelAffineBrickRenderer","source":"engine/render/morphfield/runtime/NexelAffineBrickRenderer.js","import":"/engine/render/morphfield/runtime/NexelAffineBrickRenderer.js","sourceHash":"2e44dde5c6ca2951530ee7c30dac61f494774cbb01b885d4e260a50865da9df8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/NexelAffineBrickRenderer.js#0001:createNexelAffineBrickRenderer","exportIndex":1,"name":"createNexelAffineBrickRenderer","kind":"function","signature":"createNexelAffineBrickRenderer(options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/NexelAffineBrickShaders.md","moduleTitle":"render/morphfield/runtime/NexelAffineBrickShaders","source":"engine/render/morphfield/runtime/NexelAffineBrickShaders.js","import":"/engine/render/morphfield/runtime/NexelAffineBrickShaders.js","sourceHash":"83edf0228f426022de2f3636f986de264d0e9b4590673899a9fcdc41e95938be","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/runtime/NexelAffineBrickShaders.js","title":"render/morphfield/runtime/NexelAffineBrickShaders","summary":"Direct GPU expansion of a 32-byte, sixty-four-microcube AFFINE4 payload.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/NexelAffineBrickShaders.md","moduleTitle":"render/morphfield/runtime/NexelAffineBrickShaders","source":"engine/render/morphfield/runtime/NexelAffineBrickShaders.js","import":"/engine/render/morphfield/runtime/NexelAffineBrickShaders.js","sourceHash":"83edf0228f426022de2f3636f986de264d0e9b4590673899a9fcdc41e95938be","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/NexelAffineBrickShaders.js#0000:NEXEL_AFFINE_BRICK_SHADER_WGSL","exportIndex":0,"name":"NEXEL_AFFINE_BRICK_SHADER_WGSL","kind":"constant","signature":"NEXEL_AFFINE_BRICK_SHADER_WGSL","summary":"Direct GPU expansion of a 32-byte, sixty-four-microcube AFFINE4 payload."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/NexelMicrostructureRenderer.md","moduleTitle":"render/morphfield/runtime/NexelMicrostructureRenderer","source":"engine/render/morphfield/runtime/NexelMicrostructureRenderer.js","import":"/engine/render/morphfield/runtime/NexelMicrostructureRenderer.js","sourceHash":"24d588ca09b699e4839bcc59197e5d77e91fc020044912ccab4b7e5b1b3213f9","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/runtime/NexelMicrostructureRenderer.js","title":"render/morphfield/runtime/NexelMicrostructureRenderer","summary":"A borrowed-device, external-encoder renderer. Each 32-byte parent Nexel is decoded directly in WGSL into at most eight render-only samples.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/NexelMicrostructureRenderer.md","moduleTitle":"render/morphfield/runtime/NexelMicrostructureRenderer","source":"engine/render/morphfield/runtime/NexelMicrostructureRenderer.js","import":"/engine/render/morphfield/runtime/NexelMicrostructureRenderer.js","sourceHash":"24d588ca09b699e4839bcc59197e5d77e91fc020044912ccab4b7e5b1b3213f9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/NexelMicrostructureRenderer.js#0000:NexelMicrostructureRenderer","exportIndex":0,"name":"NexelMicrostructureRenderer","kind":"class","signature":"class NexelMicrostructureRenderer","summary":"A borrowed-device, external-encoder renderer. Each 32-byte parent Nexel is decoded directly in WGSL into at most eight render-only samples."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/NexelMicrostructureRenderer.md","moduleTitle":"render/morphfield/runtime/NexelMicrostructureRenderer","source":"engine/render/morphfield/runtime/NexelMicrostructureRenderer.js","import":"/engine/render/morphfield/runtime/NexelMicrostructureRenderer.js","sourceHash":"24d588ca09b699e4839bcc59197e5d77e91fc020044912ccab4b7e5b1b3213f9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/NexelMicrostructureRenderer.js#0001:createNexelMicrostructureRenderer","exportIndex":1,"name":"createNexelMicrostructureRenderer","kind":"function","signature":"createNexelMicrostructureRenderer(options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/NexelMicrostructureShaders.md","moduleTitle":"render/morphfield/runtime/NexelMicrostructureShaders","source":"engine/render/morphfield/runtime/NexelMicrostructureShaders.js","import":"/engine/render/morphfield/runtime/NexelMicrostructureShaders.js","sourceHash":"967ac5f1a526d125366c003242bf9e30a3e86585ff6bb03bed3168c364159369","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/runtime/NexelMicrostructureShaders.js","title":"render/morphfield/runtime/NexelMicrostructureShaders","summary":"Portable u32 direct-decode renderer for RM(1,3) Nexel clusters.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/NexelMicrostructureShaders.md","moduleTitle":"render/morphfield/runtime/NexelMicrostructureShaders","source":"engine/render/morphfield/runtime/NexelMicrostructureShaders.js","import":"/engine/render/morphfield/runtime/NexelMicrostructureShaders.js","sourceHash":"967ac5f1a526d125366c003242bf9e30a3e86585ff6bb03bed3168c364159369","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/NexelMicrostructureShaders.js#0000:NEXEL_MICROSTRUCTURE_SHADER_WGSL","exportIndex":0,"name":"NEXEL_MICROSTRUCTURE_SHADER_WGSL","kind":"constant","signature":"NEXEL_MICROSTRUCTURE_SHADER_WGSL","summary":"Portable u32 direct-decode renderer for RM(1,3) Nexel clusters."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/NexelMicrostructureShaders.md","moduleTitle":"render/morphfield/runtime/NexelMicrostructureShaders","source":"engine/render/morphfield/runtime/NexelMicrostructureShaders.js","import":"/engine/render/morphfield/runtime/NexelMicrostructureShaders.js","sourceHash":"967ac5f1a526d125366c003242bf9e30a3e86585ff6bb03bed3168c364159369","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/NexelMicrostructureShaders.js#0001:NEXEL_AFFINE_SHADER_PLAN_SIGNATURE","exportIndex":1,"name":"NEXEL_AFFINE_SHADER_PLAN_SIGNATURE","kind":"re-export","signature":"NEXEL_AFFINE_SHADER_PLAN_SIGNATURE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/NexelPresentationRuntime.md","moduleTitle":"render/morphfield/runtime/NexelPresentationRuntime","source":"engine/render/morphfield/runtime/NexelPresentationRuntime.js","import":"/engine/render/morphfield/runtime/NexelPresentationRuntime.js","sourceHash":"a18cd7f36ae3a3923227fed97f0afe5867ba7544824516e0e21172d4fc6529de","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/runtime/NexelPresentationRuntime.js","title":"render/morphfield/runtime/NexelPresentationRuntime","summary":"","exportCount":10}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/NexelPresentationRuntime.md","moduleTitle":"render/morphfield/runtime/NexelPresentationRuntime","source":"engine/render/morphfield/runtime/NexelPresentationRuntime.js","import":"/engine/render/morphfield/runtime/NexelPresentationRuntime.js","sourceHash":"a18cd7f36ae3a3923227fed97f0afe5867ba7544824516e0e21172d4fc6529de","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/NexelPresentationRuntime.js#0000:finiteNexelNumber","exportIndex":0,"name":"finiteNexelNumber","kind":"function","signature":"finiteNexelNumber(value, fallback = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/NexelPresentationRuntime.md","moduleTitle":"render/morphfield/runtime/NexelPresentationRuntime","source":"engine/render/morphfield/runtime/NexelPresentationRuntime.js","import":"/engine/render/morphfield/runtime/NexelPresentationRuntime.js","sourceHash":"a18cd7f36ae3a3923227fed97f0afe5867ba7544824516e0e21172d4fc6529de","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/NexelPresentationRuntime.js#0001:clampNexelNumber","exportIndex":1,"name":"clampNexelNumber","kind":"function","signature":"clampNexelNumber(value, minimum, maximum)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/NexelPresentationRuntime.md","moduleTitle":"render/morphfield/runtime/NexelPresentationRuntime","source":"engine/render/morphfield/runtime/NexelPresentationRuntime.js","import":"/engine/render/morphfield/runtime/NexelPresentationRuntime.js","sourceHash":"a18cd7f36ae3a3923227fed97f0afe5867ba7544824516e0e21172d4fc6529de","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/NexelPresentationRuntime.js#0002:checkedNexelU32","exportIndex":2,"name":"checkedNexelU32","kind":"function","signature":"checkedNexelU32(value, label)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/NexelPresentationRuntime.md","moduleTitle":"render/morphfield/runtime/NexelPresentationRuntime","source":"engine/render/morphfield/runtime/NexelPresentationRuntime.js","import":"/engine/render/morphfield/runtime/NexelPresentationRuntime.js","sourceHash":"a18cd7f36ae3a3923227fed97f0afe5867ba7544824516e0e21172d4fc6529de","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/NexelPresentationRuntime.js#0003:finiteNexelVector","exportIndex":3,"name":"finiteNexelVector","kind":"function","signature":"finiteNexelVector(value, length, label)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/NexelPresentationRuntime.md","moduleTitle":"render/morphfield/runtime/NexelPresentationRuntime","source":"engine/render/morphfield/runtime/NexelPresentationRuntime.js","import":"/engine/render/morphfield/runtime/NexelPresentationRuntime.js","sourceHash":"a18cd7f36ae3a3923227fed97f0afe5867ba7544824516e0e21172d4fc6529de","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/NexelPresentationRuntime.js#0004:packNexelRgba8","exportIndex":4,"name":"packNexelRgba8","kind":"function","signature":"packNexelRgba8(color)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/NexelPresentationRuntime.md","moduleTitle":"render/morphfield/runtime/NexelPresentationRuntime","source":"engine/render/morphfield/runtime/NexelPresentationRuntime.js","import":"/engine/render/morphfield/runtime/NexelPresentationRuntime.js","sourceHash":"a18cd7f36ae3a3923227fed97f0afe5867ba7544824516e0e21172d4fc6529de","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/NexelPresentationRuntime.js#0005:nextNexelCapacity","exportIndex":5,"name":"nextNexelCapacity","kind":"function","signature":"nextNexelCapacity(required, maximum)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/NexelPresentationRuntime.md","moduleTitle":"render/morphfield/runtime/NexelPresentationRuntime","source":"engine/render/morphfield/runtime/NexelPresentationRuntime.js","import":"/engine/render/morphfield/runtime/NexelPresentationRuntime.js","sourceHash":"a18cd7f36ae3a3923227fed97f0afe5867ba7544824516e0e21172d4fc6529de","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/NexelPresentationRuntime.js#0006:assertNexelShaderCompiles","exportIndex":6,"name":"assertNexelShaderCompiles","kind":"function","signature":"async assertNexelShaderCompiles(module, label)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/NexelPresentationRuntime.md","moduleTitle":"render/morphfield/runtime/NexelPresentationRuntime","source":"engine/render/morphfield/runtime/NexelPresentationRuntime.js","import":"/engine/render/morphfield/runtime/NexelPresentationRuntime.js","sourceHash":"a18cd7f36ae3a3923227fed97f0afe5867ba7544824516e0e21172d4fc6529de","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/NexelPresentationRuntime.js#0007:writeNexelFrameUniforms","exportIndex":7,"name":"writeNexelFrameUniforms","kind":"function","signature":"writeNexelFrameUniforms(target, { camera, viewport, time, frameCount, quality, pointGain, projectionScale, opacity, } = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/NexelPresentationRuntime.md","moduleTitle":"render/morphfield/runtime/NexelPresentationRuntime","source":"engine/render/morphfield/runtime/NexelPresentationRuntime.js","import":"/engine/render/morphfield/runtime/NexelPresentationRuntime.js","sourceHash":"a18cd7f36ae3a3923227fed97f0afe5867ba7544824516e0e21172d4fc6529de","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/NexelPresentationRuntime.js#0008:createNexelOverlayPassDescriptor","exportIndex":8,"name":"createNexelOverlayPassDescriptor","kind":"function","signature":"createNexelOverlayPassDescriptor(label, target, depthFormat)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/NexelPresentationRuntime.md","moduleTitle":"render/morphfield/runtime/NexelPresentationRuntime","source":"engine/render/morphfield/runtime/NexelPresentationRuntime.js","import":"/engine/render/morphfield/runtime/NexelPresentationRuntime.js","sourceHash":"a18cd7f36ae3a3923227fed97f0afe5867ba7544824516e0e21172d4fc6529de","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/NexelPresentationRuntime.js#0009:NEXEL_FRAME_UNIFORM_BYTES","exportIndex":9,"name":"NEXEL_FRAME_UNIFORM_BYTES","kind":"constant","signature":"NEXEL_FRAME_UNIFORM_BYTES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/NexelShaderPlan.md","moduleTitle":"render/morphfield/runtime/NexelShaderPlan","source":"engine/render/morphfield/runtime/NexelShaderPlan.js","import":"/engine/render/morphfield/runtime/NexelShaderPlan.js","sourceHash":"5bb707bba078bb2d314f0ba9d700d637d35015dae526411f48887f4c64693a29","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/runtime/NexelShaderPlan.js","title":"render/morphfield/runtime/NexelShaderPlan","summary":"Root-Algebra-style immutable execution plan shared by every Nexel shader.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/NexelShaderPlan.md","moduleTitle":"render/morphfield/runtime/NexelShaderPlan","source":"engine/render/morphfield/runtime/NexelShaderPlan.js","import":"/engine/render/morphfield/runtime/NexelShaderPlan.js","sourceHash":"5bb707bba078bb2d314f0ba9d700d637d35015dae526411f48887f4c64693a29","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/NexelShaderPlan.js#0000:NEXEL_AFFINE_SHADER_PLAN_SIGNATURE","exportIndex":0,"name":"NEXEL_AFFINE_SHADER_PLAN_SIGNATURE","kind":"constant","signature":"NEXEL_AFFINE_SHADER_PLAN_SIGNATURE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/NexelShaderPlan.md","moduleTitle":"render/morphfield/runtime/NexelShaderPlan","source":"engine/render/morphfield/runtime/NexelShaderPlan.js","import":"/engine/render/morphfield/runtime/NexelShaderPlan.js","sourceHash":"5bb707bba078bb2d314f0ba9d700d637d35015dae526411f48887f4c64693a29","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/NexelShaderPlan.js#0001:NEXEL_AFFINE_DECODER_WGSL","exportIndex":1,"name":"NEXEL_AFFINE_DECODER_WGSL","kind":"constant","signature":"NEXEL_AFFINE_DECODER_WGSL","summary":"Root-Algebra-style immutable execution plan shared by every Nexel shader."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/QueryEncoder.md","moduleTitle":"render/morphfield/runtime/QueryEncoder","source":"engine/render/morphfield/runtime/QueryEncoder.js","import":"/engine/render/morphfield/runtime/QueryEncoder.js","sourceHash":"9e7739f619a66fb05d3ceb5b0793173bed9d3041c06b8549755a7dd331dac055","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/runtime/QueryEncoder.js","title":"render/morphfield/runtime/QueryEncoder","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/QueryEncoder.md","moduleTitle":"render/morphfield/runtime/QueryEncoder","source":"engine/render/morphfield/runtime/QueryEncoder.js","import":"/engine/render/morphfield/runtime/QueryEncoder.js","sourceHash":"9e7739f619a66fb05d3ceb5b0793173bed9d3041c06b8549755a7dd331dac055","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/QueryEncoder.js#0000:MorphFieldQueryEncoder","exportIndex":0,"name":"MorphFieldQueryEncoder","kind":"class","signature":"class MorphFieldQueryEncoder","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/ResourceOwnershipTracker.md","moduleTitle":"render/morphfield/runtime/ResourceOwnershipTracker","source":"engine/render/morphfield/runtime/ResourceOwnershipTracker.js","import":"/engine/render/morphfield/runtime/ResourceOwnershipTracker.js","sourceHash":"57c2f817d361f3d270229d3d8bb01d807771dfdab0eb5748a7334700c5983ba3","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/runtime/ResourceOwnershipTracker.js","title":"render/morphfield/runtime/ResourceOwnershipTracker","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/ResourceOwnershipTracker.md","moduleTitle":"render/morphfield/runtime/ResourceOwnershipTracker","source":"engine/render/morphfield/runtime/ResourceOwnershipTracker.js","import":"/engine/render/morphfield/runtime/ResourceOwnershipTracker.js","sourceHash":"57c2f817d361f3d270229d3d8bb01d807771dfdab0eb5748a7334700c5983ba3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/ResourceOwnershipTracker.js#0000:ResourceOwnershipTracker","exportIndex":0,"name":"ResourceOwnershipTracker","kind":"class","signature":"class ResourceOwnershipTracker","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/RuntimeShaders.md","moduleTitle":"render/morphfield/runtime/RuntimeShaders","source":"engine/render/morphfield/runtime/RuntimeShaders.js","import":"/engine/render/morphfield/runtime/RuntimeShaders.js","sourceHash":"010d0db982a29a0c1a5d125eaed3a364444dbedd6b8387aa2fe23cba240f7b3e","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/runtime/RuntimeShaders.js","title":"render/morphfield/runtime/RuntimeShaders","summary":"","exportCount":14}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/RuntimeShaders.md","moduleTitle":"render/morphfield/runtime/RuntimeShaders","source":"engine/render/morphfield/runtime/RuntimeShaders.js","import":"/engine/render/morphfield/runtime/RuntimeShaders.js","sourceHash":"010d0db982a29a0c1a5d125eaed3a364444dbedd6b8387aa2fe23cba240f7b3e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/RuntimeShaders.js#0000:FRAME_UNIFORMS_WGSL","exportIndex":0,"name":"FRAME_UNIFORMS_WGSL","kind":"constant","signature":"FRAME_UNIFORMS_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/RuntimeShaders.md","moduleTitle":"render/morphfield/runtime/RuntimeShaders","source":"engine/render/morphfield/runtime/RuntimeShaders.js","import":"/engine/render/morphfield/runtime/RuntimeShaders.js","sourceHash":"010d0db982a29a0c1a5d125eaed3a364444dbedd6b8387aa2fe23cba240f7b3e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/RuntimeShaders.js#0001:FIELDLET_SCENE_WGSL","exportIndex":1,"name":"FIELDLET_SCENE_WGSL","kind":"constant","signature":"FIELDLET_SCENE_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/RuntimeShaders.md","moduleTitle":"render/morphfield/runtime/RuntimeShaders","source":"engine/render/morphfield/runtime/RuntimeShaders.js","import":"/engine/render/morphfield/runtime/RuntimeShaders.js","sourceHash":"010d0db982a29a0c1a5d125eaed3a364444dbedd6b8387aa2fe23cba240f7b3e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/RuntimeShaders.js#0002:FIELDLET_SCENE_LINEAR_WGSL","exportIndex":2,"name":"FIELDLET_SCENE_LINEAR_WGSL","kind":"constant","signature":"FIELDLET_SCENE_LINEAR_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/RuntimeShaders.md","moduleTitle":"render/morphfield/runtime/RuntimeShaders","source":"engine/render/morphfield/runtime/RuntimeShaders.js","import":"/engine/render/morphfield/runtime/RuntimeShaders.js","sourceHash":"010d0db982a29a0c1a5d125eaed3a364444dbedd6b8387aa2fe23cba240f7b3e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/RuntimeShaders.js#0003:FIELDLET_SCENE_TILE_LINEAR_WGSL","exportIndex":3,"name":"FIELDLET_SCENE_TILE_LINEAR_WGSL","kind":"constant","signature":"FIELDLET_SCENE_TILE_LINEAR_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/RuntimeShaders.md","moduleTitle":"render/morphfield/runtime/RuntimeShaders","source":"engine/render/morphfield/runtime/RuntimeShaders.js","import":"/engine/render/morphfield/runtime/RuntimeShaders.js","sourceHash":"010d0db982a29a0c1a5d125eaed3a364444dbedd6b8387aa2fe23cba240f7b3e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/RuntimeShaders.js#0004:TRACE_SHADER_WGSL","exportIndex":4,"name":"TRACE_SHADER_WGSL","kind":"constant","signature":"TRACE_SHADER_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/RuntimeShaders.md","moduleTitle":"render/morphfield/runtime/RuntimeShaders","source":"engine/render/morphfield/runtime/RuntimeShaders.js","import":"/engine/render/morphfield/runtime/RuntimeShaders.js","sourceHash":"010d0db982a29a0c1a5d125eaed3a364444dbedd6b8387aa2fe23cba240f7b3e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/RuntimeShaders.js#0005:TRACE_LINEAR_SHADER_WGSL","exportIndex":5,"name":"TRACE_LINEAR_SHADER_WGSL","kind":"constant","signature":"TRACE_LINEAR_SHADER_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/RuntimeShaders.md","moduleTitle":"render/morphfield/runtime/RuntimeShaders","source":"engine/render/morphfield/runtime/RuntimeShaders.js","import":"/engine/render/morphfield/runtime/RuntimeShaders.js","sourceHash":"010d0db982a29a0c1a5d125eaed3a364444dbedd6b8387aa2fe23cba240f7b3e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/RuntimeShaders.js#0006:TRACE_TILE_BVH_SHADER_WGSL","exportIndex":6,"name":"TRACE_TILE_BVH_SHADER_WGSL","kind":"constant","signature":"TRACE_TILE_BVH_SHADER_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/RuntimeShaders.md","moduleTitle":"render/morphfield/runtime/RuntimeShaders","source":"engine/render/morphfield/runtime/RuntimeShaders.js","import":"/engine/render/morphfield/runtime/RuntimeShaders.js","sourceHash":"010d0db982a29a0c1a5d125eaed3a364444dbedd6b8387aa2fe23cba240f7b3e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/RuntimeShaders.js#0007:TILE_BVH_BIN_SHADER_WGSL","exportIndex":7,"name":"TILE_BVH_BIN_SHADER_WGSL","kind":"constant","signature":"TILE_BVH_BIN_SHADER_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/RuntimeShaders.md","moduleTitle":"render/morphfield/runtime/RuntimeShaders","source":"engine/render/morphfield/runtime/RuntimeShaders.js","import":"/engine/render/morphfield/runtime/RuntimeShaders.js","sourceHash":"010d0db982a29a0c1a5d125eaed3a364444dbedd6b8387aa2fe23cba240f7b3e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/RuntimeShaders.js#0008:PHASE_SHADER_WGSL","exportIndex":8,"name":"PHASE_SHADER_WGSL","kind":"constant","signature":"PHASE_SHADER_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/RuntimeShaders.md","moduleTitle":"render/morphfield/runtime/RuntimeShaders","source":"engine/render/morphfield/runtime/RuntimeShaders.js","import":"/engine/render/morphfield/runtime/RuntimeShaders.js","sourceHash":"010d0db982a29a0c1a5d125eaed3a364444dbedd6b8387aa2fe23cba240f7b3e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/RuntimeShaders.js#0009:ACCUMULATION_SHADER_WGSL","exportIndex":9,"name":"ACCUMULATION_SHADER_WGSL","kind":"constant","signature":"ACCUMULATION_SHADER_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/RuntimeShaders.md","moduleTitle":"render/morphfield/runtime/RuntimeShaders","source":"engine/render/morphfield/runtime/RuntimeShaders.js","import":"/engine/render/morphfield/runtime/RuntimeShaders.js","sourceHash":"010d0db982a29a0c1a5d125eaed3a364444dbedd6b8387aa2fe23cba240f7b3e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/RuntimeShaders.js#0010:WAVEFRONT_RESOLVE_SHADER_WGSL","exportIndex":10,"name":"WAVEFRONT_RESOLVE_SHADER_WGSL","kind":"constant","signature":"WAVEFRONT_RESOLVE_SHADER_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/RuntimeShaders.md","moduleTitle":"render/morphfield/runtime/RuntimeShaders","source":"engine/render/morphfield/runtime/RuntimeShaders.js","import":"/engine/render/morphfield/runtime/RuntimeShaders.js","sourceHash":"010d0db982a29a0c1a5d125eaed3a364444dbedd6b8387aa2fe23cba240f7b3e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/RuntimeShaders.js#0011:COMPOSITE_SHADER_WGSL","exportIndex":11,"name":"COMPOSITE_SHADER_WGSL","kind":"constant","signature":"COMPOSITE_SHADER_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/RuntimeShaders.md","moduleTitle":"render/morphfield/runtime/RuntimeShaders","source":"engine/render/morphfield/runtime/RuntimeShaders.js","import":"/engine/render/morphfield/runtime/RuntimeShaders.js","sourceHash":"010d0db982a29a0c1a5d125eaed3a364444dbedd6b8387aa2fe23cba240f7b3e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/RuntimeShaders.js#0012:QUERY_SHADER_WGSL","exportIndex":12,"name":"QUERY_SHADER_WGSL","kind":"constant","signature":"QUERY_SHADER_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/RuntimeShaders.md","moduleTitle":"render/morphfield/runtime/RuntimeShaders","source":"engine/render/morphfield/runtime/RuntimeShaders.js","import":"/engine/render/morphfield/runtime/RuntimeShaders.js","sourceHash":"010d0db982a29a0c1a5d125eaed3a364444dbedd6b8387aa2fe23cba240f7b3e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/RuntimeShaders.js#0013:QUERY_LINEAR_SHADER_WGSL","exportIndex":13,"name":"QUERY_LINEAR_SHADER_WGSL","kind":"constant","signature":"QUERY_LINEAR_SHADER_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/SceneBufferUploader.md","moduleTitle":"render/morphfield/runtime/SceneBufferUploader","source":"engine/render/morphfield/runtime/SceneBufferUploader.js","import":"/engine/render/morphfield/runtime/SceneBufferUploader.js","sourceHash":"a96b919792bdade5c69730a2e9f5458eeacea525e28892f00fc3adbed18dc5b1","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/runtime/SceneBufferUploader.js","title":"render/morphfield/runtime/SceneBufferUploader","summary":"Validate the compiler-to-runtime binary contract without granting runtime trust.  This is intentionally useful for diagnostics and fuzzing; renderer activation separately requires the private compiler-origin registry.","exportCount":8}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/SceneBufferUploader.md","moduleTitle":"render/morphfield/runtime/SceneBufferUploader","source":"engine/render/morphfield/runtime/SceneBufferUploader.js","import":"/engine/render/morphfield/runtime/SceneBufferUploader.js","sourceHash":"a96b919792bdade5c69730a2e9f5458eeacea525e28892f00fc3adbed18dc5b1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/SceneBufferUploader.js#0000:SceneBufferUploader","exportIndex":0,"name":"SceneBufferUploader","kind":"class","signature":"class SceneBufferUploader","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/SceneBufferUploader.md","moduleTitle":"render/morphfield/runtime/SceneBufferUploader","source":"engine/render/morphfield/runtime/SceneBufferUploader.js","import":"/engine/render/morphfield/runtime/SceneBufferUploader.js","sourceHash":"a96b919792bdade5c69730a2e9f5458eeacea525e28892f00fc3adbed18dc5b1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/SceneBufferUploader.js#0001:validateCompiledSceneAbi","exportIndex":1,"name":"validateCompiledSceneAbi","kind":"function","signature":"validateCompiledSceneAbi(scene)","summary":"Validate the compiler-to-runtime binary contract without granting runtime trust.  This is intentionally useful for diagnostics and fuzzing; renderer activation separately requires the private compiler-origin registry."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/SceneBufferUploader.md","moduleTitle":"render/morphfield/runtime/SceneBufferUploader","source":"engine/render/morphfield/runtime/SceneBufferUploader.js","import":"/engine/render/morphfield/runtime/SceneBufferUploader.js","sourceHash":"a96b919792bdade5c69730a2e9f5458eeacea525e28892f00fc3adbed18dc5b1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/SceneBufferUploader.js#0002:normalizeCompiledScene","exportIndex":2,"name":"normalizeCompiledScene","kind":"function","signature":"normalizeCompiledScene(scene)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/SceneBufferUploader.md","moduleTitle":"render/morphfield/runtime/SceneBufferUploader","source":"engine/render/morphfield/runtime/SceneBufferUploader.js","import":"/engine/render/morphfield/runtime/SceneBufferUploader.js","sourceHash":"a96b919792bdade5c69730a2e9f5458eeacea525e28892f00fc3adbed18dc5b1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/SceneBufferUploader.js#0003:packSpatialRecords","exportIndex":3,"name":"packSpatialRecords","kind":"function","signature":"packSpatialRecords(canonical)","summary":"Pack Fieldlet bounds, compiler BVH nodes, per-Fieldlet collision metadata, and one validated scene trailer in a single storage binding. WebGPU guarantees only eight storage buffers per shader stage on the portable baseline, so tracing and queries cannot add separate spatial or collision bindings to the existing scene ABI."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/SceneBufferUploader.md","moduleTitle":"render/morphfield/runtime/SceneBufferUploader","source":"engine/render/morphfield/runtime/SceneBufferUploader.js","import":"/engine/render/morphfield/runtime/SceneBufferUploader.js","sourceHash":"a96b919792bdade5c69730a2e9f5458eeacea525e28892f00fc3adbed18dc5b1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/SceneBufferUploader.js#0004:FIELDLET_FAMILY","exportIndex":4,"name":"FIELDLET_FAMILY","kind":"constant","signature":"FIELDLET_FAMILY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/SceneBufferUploader.md","moduleTitle":"render/morphfield/runtime/SceneBufferUploader","source":"engine/render/morphfield/runtime/SceneBufferUploader.js","import":"/engine/render/morphfield/runtime/SceneBufferUploader.js","sourceHash":"a96b919792bdade5c69730a2e9f5458eeacea525e28892f00fc3adbed18dc5b1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/SceneBufferUploader.js#0005:ANALYTIC_SUBTYPE","exportIndex":5,"name":"ANALYTIC_SUBTYPE","kind":"constant","signature":"ANALYTIC_SUBTYPE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/SceneBufferUploader.md","moduleTitle":"render/morphfield/runtime/SceneBufferUploader","source":"engine/render/morphfield/runtime/SceneBufferUploader.js","import":"/engine/render/morphfield/runtime/SceneBufferUploader.js","sourceHash":"a96b919792bdade5c69730a2e9f5458eeacea525e28892f00fc3adbed18dc5b1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/SceneBufferUploader.js#0006:FIELDLET_SUBTYPE","exportIndex":6,"name":"FIELDLET_SUBTYPE","kind":"constant","signature":"FIELDLET_SUBTYPE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/SceneBufferUploader.md","moduleTitle":"render/morphfield/runtime/SceneBufferUploader","source":"engine/render/morphfield/runtime/SceneBufferUploader.js","import":"/engine/render/morphfield/runtime/SceneBufferUploader.js","sourceHash":"a96b919792bdade5c69730a2e9f5458eeacea525e28892f00fc3adbed18dc5b1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/SceneBufferUploader.js#0007:QUERY_KIND","exportIndex":7,"name":"QUERY_KIND","kind":"constant","signature":"QUERY_KIND","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/capabilities.md","moduleTitle":"render/morphfield/runtime/capabilities","source":"engine/render/morphfield/runtime/capabilities.js","import":"/engine/render/morphfield/runtime/capabilities.js","sourceHash":"a030419dd4c8a377f0d0875b75973911faf51cbb70dd975dbb6ddb171c462843","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/runtime/capabilities.js","title":"render/morphfield/runtime/capabilities","summary":"Reports optional compute paths separately from the portable u32 baseline. Support is not evidence that a pipeline selected or used a feature; callers must record those two states alongside benchmark results.","exportCount":8}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/capabilities.md","moduleTitle":"render/morphfield/runtime/capabilities","source":"engine/render/morphfield/runtime/capabilities.js","import":"/engine/render/morphfield/runtime/capabilities.js","sourceHash":"a030419dd4c8a377f0d0875b75973911faf51cbb70dd975dbb6ddb171c462843","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/capabilities.js#0000:bufferUsage","exportIndex":0,"name":"bufferUsage","kind":"function","signature":"bufferUsage(...names)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/capabilities.md","moduleTitle":"render/morphfield/runtime/capabilities","source":"engine/render/morphfield/runtime/capabilities.js","import":"/engine/render/morphfield/runtime/capabilities.js","sourceHash":"a030419dd4c8a377f0d0875b75973911faf51cbb70dd975dbb6ddb171c462843","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/capabilities.js#0001:textureUsage","exportIndex":1,"name":"textureUsage","kind":"function","signature":"textureUsage(...names)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/capabilities.md","moduleTitle":"render/morphfield/runtime/capabilities","source":"engine/render/morphfield/runtime/capabilities.js","import":"/engine/render/morphfield/runtime/capabilities.js","sourceHash":"a030419dd4c8a377f0d0875b75973911faf51cbb70dd975dbb6ddb171c462843","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/capabilities.js#0002:shaderStages","exportIndex":2,"name":"shaderStages","kind":"function","signature":"shaderStages(...names)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/capabilities.md","moduleTitle":"render/morphfield/runtime/capabilities","source":"engine/render/morphfield/runtime/capabilities.js","import":"/engine/render/morphfield/runtime/capabilities.js","sourceHash":"a030419dd4c8a377f0d0875b75973911faf51cbb70dd975dbb6ddb171c462843","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/capabilities.js#0003:validateBorrowedDevice","exportIndex":3,"name":"validateBorrowedDevice","kind":"function","signature":"validateBorrowedDevice(device)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/capabilities.md","moduleTitle":"render/morphfield/runtime/capabilities","source":"engine/render/morphfield/runtime/capabilities.js","import":"/engine/render/morphfield/runtime/capabilities.js","sourceHash":"a030419dd4c8a377f0d0875b75973911faf51cbb70dd975dbb6ddb171c462843","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/capabilities.js#0004:validateExternalEncoder","exportIndex":4,"name":"validateExternalEncoder","kind":"function","signature":"validateExternalEncoder(encoder)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/capabilities.md","moduleTitle":"render/morphfield/runtime/capabilities","source":"engine/render/morphfield/runtime/capabilities.js","import":"/engine/render/morphfield/runtime/capabilities.js","sourceHash":"a030419dd4c8a377f0d0875b75973911faf51cbb70dd975dbb6ddb171c462843","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/capabilities.js#0005:inspectDeviceCapabilities","exportIndex":5,"name":"inspectDeviceCapabilities","kind":"function","signature":"inspectDeviceCapabilities(device)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/capabilities.md","moduleTitle":"render/morphfield/runtime/capabilities","source":"engine/render/morphfield/runtime/capabilities.js","import":"/engine/render/morphfield/runtime/capabilities.js","sourceHash":"a030419dd4c8a377f0d0875b75973911faf51cbb70dd975dbb6ddb171c462843","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/capabilities.js#0006:inspectNexelComputeCapabilities","exportIndex":6,"name":"inspectNexelComputeCapabilities","kind":"function","signature":"inspectNexelComputeCapabilities(device, { wgslLanguageFeatures } = {})","summary":"Reports optional compute paths separately from the portable u32 baseline. Support is not evidence that a pipeline selected or used a feature; callers must record those two states alongside benchmark results."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/capabilities.md","moduleTitle":"render/morphfield/runtime/capabilities","source":"engine/render/morphfield/runtime/capabilities.js","import":"/engine/render/morphfield/runtime/capabilities.js","sourceHash":"a030419dd4c8a377f0d0875b75973911faf51cbb70dd975dbb6ddb171c462843","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/capabilities.js#0007:positiveExtent","exportIndex":7,"name":"positiveExtent","kind":"function","signature":"positiveExtent(value, maximum)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/index.md","moduleTitle":"render/morphfield/runtime/index","source":"engine/render/morphfield/runtime/index.js","import":"/engine/render/morphfield/runtime/index.js","sourceHash":"509b437fe307177f1c9c1dd49539e757e0bbb127c826764cf10a65be4df8422b","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/runtime/index.js","title":"render/morphfield/runtime/index","summary":"Validates and detaches the canonical typed-array ABI published by this realm's MorphFieldCompiler. Authored object Fieldlets and cloned certificate arrays are not a certification boundary and are rejected.","exportCount":21}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/index.md","moduleTitle":"render/morphfield/runtime/index","source":"engine/render/morphfield/runtime/index.js","import":"/engine/render/morphfield/runtime/index.js","sourceHash":"509b437fe307177f1c9c1dd49539e757e0bbb127c826764cf10a65be4df8422b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/index.js#0000:createRenderer","exportIndex":0,"name":"createRenderer","kind":"function","signature":"async createRenderer(options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/index.md","moduleTitle":"render/morphfield/runtime/index","source":"engine/render/morphfield/runtime/index.js","import":"/engine/render/morphfield/runtime/index.js","sourceHash":"509b437fe307177f1c9c1dd49539e757e0bbb127c826764cf10a65be4df8422b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/index.js#0001:canonicalizeCompiledScene","exportIndex":1,"name":"canonicalizeCompiledScene","kind":"function","signature":"canonicalizeCompiledScene(scene)","summary":"Validates and detaches the canonical typed-array ABI published by this realm's MorphFieldCompiler. Authored object Fieldlets and cloned certificate arrays are not a certification boundary and are rejected."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/index.md","moduleTitle":"render/morphfield/runtime/index","source":"engine/render/morphfield/runtime/index.js","import":"/engine/render/morphfield/runtime/index.js","sourceHash":"509b437fe307177f1c9c1dd49539e757e0bbb127c826764cf10a65be4df8422b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/index.js#0002:ANALYTIC_SUBTYPE","exportIndex":2,"name":"ANALYTIC_SUBTYPE","kind":"re-export","signature":"ANALYTIC_SUBTYPE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/index.md","moduleTitle":"render/morphfield/runtime/index","source":"engine/render/morphfield/runtime/index.js","import":"/engine/render/morphfield/runtime/index.js","sourceHash":"509b437fe307177f1c9c1dd49539e757e0bbb127c826764cf10a65be4df8422b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/index.js#0003:AdaptiveQualityGovernor","exportIndex":3,"name":"AdaptiveQualityGovernor","kind":"re-export","signature":"AdaptiveQualityGovernor","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/index.md","moduleTitle":"render/morphfield/runtime/index","source":"engine/render/morphfield/runtime/index.js","import":"/engine/render/morphfield/runtime/index.js","sourceHash":"509b437fe307177f1c9c1dd49539e757e0bbb127c826764cf10a65be4df8422b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/index.js#0004:FIELDLET_FAMILY","exportIndex":4,"name":"FIELDLET_FAMILY","kind":"re-export","signature":"FIELDLET_FAMILY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/index.md","moduleTitle":"render/morphfield/runtime/index","source":"engine/render/morphfield/runtime/index.js","import":"/engine/render/morphfield/runtime/index.js","sourceHash":"509b437fe307177f1c9c1dd49539e757e0bbb127c826764cf10a65be4df8422b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/index.js#0005:FIELDLET_SUBTYPE","exportIndex":5,"name":"FIELDLET_SUBTYPE","kind":"re-export","signature":"FIELDLET_SUBTYPE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/index.md","moduleTitle":"render/morphfield/runtime/index","source":"engine/render/morphfield/runtime/index.js","import":"/engine/render/morphfield/runtime/index.js","sourceHash":"509b437fe307177f1c9c1dd49539e757e0bbb127c826764cf10a65be4df8422b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/index.js#0006:MORPHFIELD_LOGICAL_PHASES","exportIndex":6,"name":"MORPHFIELD_LOGICAL_PHASES","kind":"re-export","signature":"MORPHFIELD_LOGICAL_PHASES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/index.md","moduleTitle":"render/morphfield/runtime/index","source":"engine/render/morphfield/runtime/index.js","import":"/engine/render/morphfield/runtime/index.js","sourceHash":"509b437fe307177f1c9c1dd49539e757e0bbb127c826764cf10a65be4df8422b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/index.js#0007:MORPHFIELD_QUALITY_TIERS","exportIndex":7,"name":"MORPHFIELD_QUALITY_TIERS","kind":"re-export","signature":"MORPHFIELD_QUALITY_TIERS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/index.md","moduleTitle":"render/morphfield/runtime/index","source":"engine/render/morphfield/runtime/index.js","import":"/engine/render/morphfield/runtime/index.js","sourceHash":"509b437fe307177f1c9c1dd49539e757e0bbb127c826764cf10a65be4df8422b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/index.js#0008:MorphFieldQueryEncoder","exportIndex":8,"name":"MorphFieldQueryEncoder","kind":"re-export","signature":"MorphFieldQueryEncoder","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/index.md","moduleTitle":"render/morphfield/runtime/index","source":"engine/render/morphfield/runtime/index.js","import":"/engine/render/morphfield/runtime/index.js","sourceHash":"509b437fe307177f1c9c1dd49539e757e0bbb127c826764cf10a65be4df8422b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/index.js#0009:MorphFieldRenderer","exportIndex":9,"name":"MorphFieldRenderer","kind":"re-export","signature":"MorphFieldRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/index.md","moduleTitle":"render/morphfield/runtime/index","source":"engine/render/morphfield/runtime/index.js","import":"/engine/render/morphfield/runtime/index.js","sourceHash":"509b437fe307177f1c9c1dd49539e757e0bbb127c826764cf10a65be4df8422b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/index.js#0010:MorphFieldWavefrontPathTracer","exportIndex":10,"name":"MorphFieldWavefrontPathTracer","kind":"re-export","signature":"MorphFieldWavefrontPathTracer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/index.md","moduleTitle":"render/morphfield/runtime/index","source":"engine/render/morphfield/runtime/index.js","import":"/engine/render/morphfield/runtime/index.js","sourceHash":"509b437fe307177f1c9c1dd49539e757e0bbb127c826764cf10a65be4df8422b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/index.js#0011:NexelAffineBrickRenderer","exportIndex":11,"name":"NexelAffineBrickRenderer","kind":"re-export","signature":"NexelAffineBrickRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/index.md","moduleTitle":"render/morphfield/runtime/index","source":"engine/render/morphfield/runtime/index.js","import":"/engine/render/morphfield/runtime/index.js","sourceHash":"509b437fe307177f1c9c1dd49539e757e0bbb127c826764cf10a65be4df8422b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/index.js#0012:NexelMicrostructureRenderer","exportIndex":12,"name":"NexelMicrostructureRenderer","kind":"re-export","signature":"NexelMicrostructureRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/index.md","moduleTitle":"render/morphfield/runtime/index","source":"engine/render/morphfield/runtime/index.js","import":"/engine/render/morphfield/runtime/index.js","sourceHash":"509b437fe307177f1c9c1dd49539e757e0bbb127c826764cf10a65be4df8422b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/index.js#0013:QUERY_KIND","exportIndex":13,"name":"QUERY_KIND","kind":"re-export","signature":"QUERY_KIND","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/index.md","moduleTitle":"render/morphfield/runtime/index","source":"engine/render/morphfield/runtime/index.js","import":"/engine/render/morphfield/runtime/index.js","sourceHash":"509b437fe307177f1c9c1dd49539e757e0bbb127c826764cf10a65be4df8422b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/index.js#0014:createNexelAffineBrickRenderer","exportIndex":14,"name":"createNexelAffineBrickRenderer","kind":"re-export","signature":"createNexelAffineBrickRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/index.md","moduleTitle":"render/morphfield/runtime/index","source":"engine/render/morphfield/runtime/index.js","import":"/engine/render/morphfield/runtime/index.js","sourceHash":"509b437fe307177f1c9c1dd49539e757e0bbb127c826764cf10a65be4df8422b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/index.js#0015:createNexelMicrostructureRenderer","exportIndex":15,"name":"createNexelMicrostructureRenderer","kind":"re-export","signature":"createNexelMicrostructureRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/index.md","moduleTitle":"render/morphfield/runtime/index","source":"engine/render/morphfield/runtime/index.js","import":"/engine/render/morphfield/runtime/index.js","sourceHash":"509b437fe307177f1c9c1dd49539e757e0bbb127c826764cf10a65be4df8422b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/index.js#0016:createWavefrontPathTracer","exportIndex":16,"name":"createWavefrontPathTracer","kind":"re-export","signature":"createWavefrontPathTracer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/index.md","moduleTitle":"render/morphfield/runtime/index","source":"engine/render/morphfield/runtime/index.js","import":"/engine/render/morphfield/runtime/index.js","sourceHash":"509b437fe307177f1c9c1dd49539e757e0bbb127c826764cf10a65be4df8422b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/index.js#0017:inspectDeviceCapabilities","exportIndex":17,"name":"inspectDeviceCapabilities","kind":"re-export","signature":"inspectDeviceCapabilities","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/index.md","moduleTitle":"render/morphfield/runtime/index","source":"engine/render/morphfield/runtime/index.js","import":"/engine/render/morphfield/runtime/index.js","sourceHash":"509b437fe307177f1c9c1dd49539e757e0bbb127c826764cf10a65be4df8422b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/index.js#0018:inspectNexelComputeCapabilities","exportIndex":18,"name":"inspectNexelComputeCapabilities","kind":"re-export","signature":"inspectNexelComputeCapabilities","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/index.md","moduleTitle":"render/morphfield/runtime/index","source":"engine/render/morphfield/runtime/index.js","import":"/engine/render/morphfield/runtime/index.js","sourceHash":"509b437fe307177f1c9c1dd49539e757e0bbb127c826764cf10a65be4df8422b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/index.js#0019:validateBorrowedDevice","exportIndex":19,"name":"validateBorrowedDevice","kind":"re-export","signature":"validateBorrowedDevice","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/index.md","moduleTitle":"render/morphfield/runtime/index","source":"engine/render/morphfield/runtime/index.js","import":"/engine/render/morphfield/runtime/index.js","sourceHash":"509b437fe307177f1c9c1dd49539e757e0bbb127c826764cf10a65be4df8422b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/index.js#0020:validateCompiledSceneAbi","exportIndex":20,"name":"validateCompiledSceneAbi","kind":"re-export","signature":"validateCompiledSceneAbi","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/wavefront/MorphFieldWavefrontPathTracer.md","moduleTitle":"render/morphfield/runtime/wavefront/MorphFieldWavefrontPathTracer","source":"engine/render/morphfield/runtime/wavefront/MorphFieldWavefrontPathTracer.js","import":"/engine/render/morphfield/runtime/wavefront/MorphFieldWavefrontPathTracer.js","sourceHash":"6580cdd8f0f0a896d1c03f4660e0fa0e3ca68974cdeb2a6b65fd5c0617ed9321","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/runtime/wavefront/MorphFieldWavefrontPathTracer.js","title":"render/morphfield/runtime/wavefront/MorphFieldWavefrontPathTracer","summary":"Buffer-only compute wavefront path tracer for compiled MorphField scenes. It borrows every host object, records only into the supplied encoder, and owns only its pipelines, queue/state buffers, uniforms, and accumulation.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/wavefront/MorphFieldWavefrontPathTracer.md","moduleTitle":"render/morphfield/runtime/wavefront/MorphFieldWavefrontPathTracer","source":"engine/render/morphfield/runtime/wavefront/MorphFieldWavefrontPathTracer.js","import":"/engine/render/morphfield/runtime/wavefront/MorphFieldWavefrontPathTracer.js","sourceHash":"6580cdd8f0f0a896d1c03f4660e0fa0e3ca68974cdeb2a6b65fd5c0617ed9321","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/wavefront/MorphFieldWavefrontPathTracer.js#0000:MorphFieldWavefrontPathTracer","exportIndex":0,"name":"MorphFieldWavefrontPathTracer","kind":"class","signature":"class MorphFieldWavefrontPathTracer","summary":"Buffer-only compute wavefront path tracer for compiled MorphField scenes. It borrows every host object, records only into the supplied encoder, and owns only its pipelines, queue/state buffers, uniforms, and accumulation."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/wavefront/MorphFieldWavefrontPathTracer.md","moduleTitle":"render/morphfield/runtime/wavefront/MorphFieldWavefrontPathTracer","source":"engine/render/morphfield/runtime/wavefront/MorphFieldWavefrontPathTracer.js","import":"/engine/render/morphfield/runtime/wavefront/MorphFieldWavefrontPathTracer.js","sourceHash":"6580cdd8f0f0a896d1c03f4660e0fa0e3ca68974cdeb2a6b65fd5c0617ed9321","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/wavefront/MorphFieldWavefrontPathTracer.js#0001:createWavefrontPathTracer","exportIndex":1,"name":"createWavefrontPathTracer","kind":"function","signature":"async createWavefrontPathTracer(options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/wavefront/WavefrontShaders.md","moduleTitle":"render/morphfield/runtime/wavefront/WavefrontShaders","source":"engine/render/morphfield/runtime/wavefront/WavefrontShaders.js","import":"/engine/render/morphfield/runtime/wavefront/WavefrontShaders.js","sourceHash":"ed597e806e04668ed95acc506a092699d4300feed1f17740b5e81fd969daf7d0","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/runtime/wavefront/WavefrontShaders.js","title":"render/morphfield/runtime/wavefront/WavefrontShaders","summary":"","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/wavefront/WavefrontShaders.md","moduleTitle":"render/morphfield/runtime/wavefront/WavefrontShaders","source":"engine/render/morphfield/runtime/wavefront/WavefrontShaders.js","import":"/engine/render/morphfield/runtime/wavefront/WavefrontShaders.js","sourceHash":"ed597e806e04668ed95acc506a092699d4300feed1f17740b5e81fd969daf7d0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/wavefront/WavefrontShaders.js#0000:WAVEFRONT_GENERATE_WGSL","exportIndex":0,"name":"WAVEFRONT_GENERATE_WGSL","kind":"constant","signature":"WAVEFRONT_GENERATE_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/wavefront/WavefrontShaders.md","moduleTitle":"render/morphfield/runtime/wavefront/WavefrontShaders","source":"engine/render/morphfield/runtime/wavefront/WavefrontShaders.js","import":"/engine/render/morphfield/runtime/wavefront/WavefrontShaders.js","sourceHash":"ed597e806e04668ed95acc506a092699d4300feed1f17740b5e81fd969daf7d0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/wavefront/WavefrontShaders.js#0001:WAVEFRONT_INTERSECT_WGSL","exportIndex":1,"name":"WAVEFRONT_INTERSECT_WGSL","kind":"constant","signature":"WAVEFRONT_INTERSECT_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/wavefront/WavefrontShaders.md","moduleTitle":"render/morphfield/runtime/wavefront/WavefrontShaders","source":"engine/render/morphfield/runtime/wavefront/WavefrontShaders.js","import":"/engine/render/morphfield/runtime/wavefront/WavefrontShaders.js","sourceHash":"ed597e806e04668ed95acc506a092699d4300feed1f17740b5e81fd969daf7d0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/wavefront/WavefrontShaders.js#0002:WAVEFRONT_SHADE_WGSL","exportIndex":2,"name":"WAVEFRONT_SHADE_WGSL","kind":"constant","signature":"WAVEFRONT_SHADE_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/wavefront/WavefrontShaders.md","moduleTitle":"render/morphfield/runtime/wavefront/WavefrontShaders","source":"engine/render/morphfield/runtime/wavefront/WavefrontShaders.js","import":"/engine/render/morphfield/runtime/wavefront/WavefrontShaders.js","sourceHash":"ed597e806e04668ed95acc506a092699d4300feed1f17740b5e81fd969daf7d0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/wavefront/WavefrontShaders.js#0003:WAVEFRONT_SHADOW_WGSL","exportIndex":3,"name":"WAVEFRONT_SHADOW_WGSL","kind":"constant","signature":"WAVEFRONT_SHADOW_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/wavefront/WavefrontShaders.md","moduleTitle":"render/morphfield/runtime/wavefront/WavefrontShaders","source":"engine/render/morphfield/runtime/wavefront/WavefrontShaders.js","import":"/engine/render/morphfield/runtime/wavefront/WavefrontShaders.js","sourceHash":"ed597e806e04668ed95acc506a092699d4300feed1f17740b5e81fd969daf7d0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/wavefront/WavefrontShaders.js#0004:WAVEFRONT_FINALIZE_WGSL","exportIndex":4,"name":"WAVEFRONT_FINALIZE_WGSL","kind":"constant","signature":"WAVEFRONT_FINALIZE_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/wavefront/WavefrontShaders.md","moduleTitle":"render/morphfield/runtime/wavefront/WavefrontShaders","source":"engine/render/morphfield/runtime/wavefront/WavefrontShaders.js","import":"/engine/render/morphfield/runtime/wavefront/WavefrontShaders.js","sourceHash":"ed597e806e04668ed95acc506a092699d4300feed1f17740b5e81fd969daf7d0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/wavefront/WavefrontShaders.js#0005:WAVEFRONT_SHADER_SOURCES","exportIndex":5,"name":"WAVEFRONT_SHADER_SOURCES","kind":"constant","signature":"WAVEFRONT_SHADER_SOURCES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/wavefront/constants.md","moduleTitle":"render/morphfield/runtime/wavefront/constants","source":"engine/render/morphfield/runtime/wavefront/constants.js","import":"/engine/render/morphfield/runtime/wavefront/constants.js","sourceHash":"31678f569559164161e0e8c2295748ba531e67c175d350651ec5ee8859ed3ad4","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/runtime/wavefront/constants.js","title":"render/morphfield/runtime/wavefront/constants","summary":"Packs one extension record per material as [transmissionFactor, ior, clearcoatFactor, clearcoatRoughness].","exportCount":9}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/wavefront/constants.md","moduleTitle":"render/morphfield/runtime/wavefront/constants","source":"engine/render/morphfield/runtime/wavefront/constants.js","import":"/engine/render/morphfield/runtime/wavefront/constants.js","sourceHash":"31678f569559164161e0e8c2295748ba531e67c175d350651ec5ee8859ed3ad4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/wavefront/constants.js#0000:queueByteSize","exportIndex":0,"name":"queueByteSize","kind":"function","signature":"queueByteSize(capacity, recordBytes)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/wavefront/constants.md","moduleTitle":"render/morphfield/runtime/wavefront/constants","source":"engine/render/morphfield/runtime/wavefront/constants.js","import":"/engine/render/morphfield/runtime/wavefront/constants.js","sourceHash":"31678f569559164161e0e8c2295748ba531e67c175d350651ec5ee8859ed3ad4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/wavefront/constants.js#0001:packMaterialExtensions","exportIndex":1,"name":"packMaterialExtensions","kind":"function","signature":"packMaterialExtensions(descriptors = [])","summary":"Packs one extension record per material as [transmissionFactor, ior, clearcoatFactor, clearcoatRoughness]."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/wavefront/constants.md","moduleTitle":"render/morphfield/runtime/wavefront/constants","source":"engine/render/morphfield/runtime/wavefront/constants.js","import":"/engine/render/morphfield/runtime/wavefront/constants.js","sourceHash":"31678f569559164161e0e8c2295748ba531e67c175d350651ec5ee8859ed3ad4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/wavefront/constants.js#0002:WAVEFRONT_WORKGROUP_SIZE","exportIndex":2,"name":"WAVEFRONT_WORKGROUP_SIZE","kind":"constant","signature":"WAVEFRONT_WORKGROUP_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/wavefront/constants.md","moduleTitle":"render/morphfield/runtime/wavefront/constants","source":"engine/render/morphfield/runtime/wavefront/constants.js","import":"/engine/render/morphfield/runtime/wavefront/constants.js","sourceHash":"31678f569559164161e0e8c2295748ba531e67c175d350651ec5ee8859ed3ad4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/wavefront/constants.js#0003:WAVEFRONT_MAX_BOUNCES","exportIndex":3,"name":"WAVEFRONT_MAX_BOUNCES","kind":"constant","signature":"WAVEFRONT_MAX_BOUNCES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/wavefront/constants.md","moduleTitle":"render/morphfield/runtime/wavefront/constants","source":"engine/render/morphfield/runtime/wavefront/constants.js","import":"/engine/render/morphfield/runtime/wavefront/constants.js","sourceHash":"31678f569559164161e0e8c2295748ba531e67c175d350651ec5ee8859ed3ad4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/wavefront/constants.js#0004:WAVEFRONT_MAX_TRACE_STEPS","exportIndex":4,"name":"WAVEFRONT_MAX_TRACE_STEPS","kind":"constant","signature":"WAVEFRONT_MAX_TRACE_STEPS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/wavefront/constants.md","moduleTitle":"render/morphfield/runtime/wavefront/constants","source":"engine/render/morphfield/runtime/wavefront/constants.js","import":"/engine/render/morphfield/runtime/wavefront/constants.js","sourceHash":"31678f569559164161e0e8c2295748ba531e67c175d350651ec5ee8859ed3ad4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/wavefront/constants.js#0005:WAVEFRONT_RECORD_BYTES","exportIndex":5,"name":"WAVEFRONT_RECORD_BYTES","kind":"constant","signature":"WAVEFRONT_RECORD_BYTES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/wavefront/constants.md","moduleTitle":"render/morphfield/runtime/wavefront/constants","source":"engine/render/morphfield/runtime/wavefront/constants.js","import":"/engine/render/morphfield/runtime/wavefront/constants.js","sourceHash":"31678f569559164161e0e8c2295748ba531e67c175d350651ec5ee8859ed3ad4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/wavefront/constants.js#0006:WAVEFRONT_OUTPUT_ENCODING","exportIndex":6,"name":"WAVEFRONT_OUTPUT_ENCODING","kind":"constant","signature":"WAVEFRONT_OUTPUT_ENCODING","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/wavefront/constants.md","moduleTitle":"render/morphfield/runtime/wavefront/constants","source":"engine/render/morphfield/runtime/wavefront/constants.js","import":"/engine/render/morphfield/runtime/wavefront/constants.js","sourceHash":"31678f569559164161e0e8c2295748ba531e67c175d350651ec5ee8859ed3ad4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/wavefront/constants.js#0007:WAVEFRONT_SCENE_BUFFER_ABI","exportIndex":7,"name":"WAVEFRONT_SCENE_BUFFER_ABI","kind":"constant","signature":"WAVEFRONT_SCENE_BUFFER_ABI","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/wavefront/constants.md","moduleTitle":"render/morphfield/runtime/wavefront/constants","source":"engine/render/morphfield/runtime/wavefront/constants.js","import":"/engine/render/morphfield/runtime/wavefront/constants.js","sourceHash":"31678f569559164161e0e8c2295748ba531e67c175d350651ec5ee8859ed3ad4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/wavefront/constants.js#0008:WAVEFRONT_LIMITATIONS","exportIndex":8,"name":"WAVEFRONT_LIMITATIONS","kind":"constant","signature":"WAVEFRONT_LIMITATIONS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/wavefront/index.md","moduleTitle":"render/morphfield/runtime/wavefront/index","source":"engine/render/morphfield/runtime/wavefront/index.js","import":"/engine/render/morphfield/runtime/wavefront/index.js","sourceHash":"f682c6b16b96a24b0557be031adf7293f8e5cd13b27edcdc2c2ca94b4c3fcf53","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/runtime/wavefront/index.js","title":"render/morphfield/runtime/wavefront/index","summary":"","exportCount":17}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/wavefront/index.md","moduleTitle":"render/morphfield/runtime/wavefront/index","source":"engine/render/morphfield/runtime/wavefront/index.js","import":"/engine/render/morphfield/runtime/wavefront/index.js","sourceHash":"f682c6b16b96a24b0557be031adf7293f8e5cd13b27edcdc2c2ca94b4c3fcf53","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/wavefront/index.js#0000:MorphFieldWavefrontPathTracer","exportIndex":0,"name":"MorphFieldWavefrontPathTracer","kind":"re-export","signature":"MorphFieldWavefrontPathTracer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/wavefront/index.md","moduleTitle":"render/morphfield/runtime/wavefront/index","source":"engine/render/morphfield/runtime/wavefront/index.js","import":"/engine/render/morphfield/runtime/wavefront/index.js","sourceHash":"f682c6b16b96a24b0557be031adf7293f8e5cd13b27edcdc2c2ca94b4c3fcf53","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/wavefront/index.js#0001:WAVEFRONT_FINALIZE_WGSL","exportIndex":1,"name":"WAVEFRONT_FINALIZE_WGSL","kind":"re-export","signature":"WAVEFRONT_FINALIZE_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/wavefront/index.md","moduleTitle":"render/morphfield/runtime/wavefront/index","source":"engine/render/morphfield/runtime/wavefront/index.js","import":"/engine/render/morphfield/runtime/wavefront/index.js","sourceHash":"f682c6b16b96a24b0557be031adf7293f8e5cd13b27edcdc2c2ca94b4c3fcf53","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/wavefront/index.js#0002:WAVEFRONT_GENERATE_WGSL","exportIndex":2,"name":"WAVEFRONT_GENERATE_WGSL","kind":"re-export","signature":"WAVEFRONT_GENERATE_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/wavefront/index.md","moduleTitle":"render/morphfield/runtime/wavefront/index","source":"engine/render/morphfield/runtime/wavefront/index.js","import":"/engine/render/morphfield/runtime/wavefront/index.js","sourceHash":"f682c6b16b96a24b0557be031adf7293f8e5cd13b27edcdc2c2ca94b4c3fcf53","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/wavefront/index.js#0003:WAVEFRONT_INTERSECT_WGSL","exportIndex":3,"name":"WAVEFRONT_INTERSECT_WGSL","kind":"re-export","signature":"WAVEFRONT_INTERSECT_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/wavefront/index.md","moduleTitle":"render/morphfield/runtime/wavefront/index","source":"engine/render/morphfield/runtime/wavefront/index.js","import":"/engine/render/morphfield/runtime/wavefront/index.js","sourceHash":"f682c6b16b96a24b0557be031adf7293f8e5cd13b27edcdc2c2ca94b4c3fcf53","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/wavefront/index.js#0004:WAVEFRONT_LIMITATIONS","exportIndex":4,"name":"WAVEFRONT_LIMITATIONS","kind":"re-export","signature":"WAVEFRONT_LIMITATIONS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/wavefront/index.md","moduleTitle":"render/morphfield/runtime/wavefront/index","source":"engine/render/morphfield/runtime/wavefront/index.js","import":"/engine/render/morphfield/runtime/wavefront/index.js","sourceHash":"f682c6b16b96a24b0557be031adf7293f8e5cd13b27edcdc2c2ca94b4c3fcf53","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/wavefront/index.js#0005:WAVEFRONT_MAX_BOUNCES","exportIndex":5,"name":"WAVEFRONT_MAX_BOUNCES","kind":"re-export","signature":"WAVEFRONT_MAX_BOUNCES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/wavefront/index.md","moduleTitle":"render/morphfield/runtime/wavefront/index","source":"engine/render/morphfield/runtime/wavefront/index.js","import":"/engine/render/morphfield/runtime/wavefront/index.js","sourceHash":"f682c6b16b96a24b0557be031adf7293f8e5cd13b27edcdc2c2ca94b4c3fcf53","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/wavefront/index.js#0006:WAVEFRONT_MAX_TRACE_STEPS","exportIndex":6,"name":"WAVEFRONT_MAX_TRACE_STEPS","kind":"re-export","signature":"WAVEFRONT_MAX_TRACE_STEPS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/wavefront/index.md","moduleTitle":"render/morphfield/runtime/wavefront/index","source":"engine/render/morphfield/runtime/wavefront/index.js","import":"/engine/render/morphfield/runtime/wavefront/index.js","sourceHash":"f682c6b16b96a24b0557be031adf7293f8e5cd13b27edcdc2c2ca94b4c3fcf53","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/wavefront/index.js#0007:WAVEFRONT_OUTPUT_ENCODING","exportIndex":7,"name":"WAVEFRONT_OUTPUT_ENCODING","kind":"re-export","signature":"WAVEFRONT_OUTPUT_ENCODING","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/wavefront/index.md","moduleTitle":"render/morphfield/runtime/wavefront/index","source":"engine/render/morphfield/runtime/wavefront/index.js","import":"/engine/render/morphfield/runtime/wavefront/index.js","sourceHash":"f682c6b16b96a24b0557be031adf7293f8e5cd13b27edcdc2c2ca94b4c3fcf53","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/wavefront/index.js#0008:WAVEFRONT_RECORD_BYTES","exportIndex":8,"name":"WAVEFRONT_RECORD_BYTES","kind":"re-export","signature":"WAVEFRONT_RECORD_BYTES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/wavefront/index.md","moduleTitle":"render/morphfield/runtime/wavefront/index","source":"engine/render/morphfield/runtime/wavefront/index.js","import":"/engine/render/morphfield/runtime/wavefront/index.js","sourceHash":"f682c6b16b96a24b0557be031adf7293f8e5cd13b27edcdc2c2ca94b4c3fcf53","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/wavefront/index.js#0009:WAVEFRONT_SCENE_BUFFER_ABI","exportIndex":9,"name":"WAVEFRONT_SCENE_BUFFER_ABI","kind":"re-export","signature":"WAVEFRONT_SCENE_BUFFER_ABI","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/wavefront/index.md","moduleTitle":"render/morphfield/runtime/wavefront/index","source":"engine/render/morphfield/runtime/wavefront/index.js","import":"/engine/render/morphfield/runtime/wavefront/index.js","sourceHash":"f682c6b16b96a24b0557be031adf7293f8e5cd13b27edcdc2c2ca94b4c3fcf53","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/wavefront/index.js#0010:WAVEFRONT_SHADER_SOURCES","exportIndex":10,"name":"WAVEFRONT_SHADER_SOURCES","kind":"re-export","signature":"WAVEFRONT_SHADER_SOURCES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/wavefront/index.md","moduleTitle":"render/morphfield/runtime/wavefront/index","source":"engine/render/morphfield/runtime/wavefront/index.js","import":"/engine/render/morphfield/runtime/wavefront/index.js","sourceHash":"f682c6b16b96a24b0557be031adf7293f8e5cd13b27edcdc2c2ca94b4c3fcf53","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/wavefront/index.js#0011:WAVEFRONT_SHADE_WGSL","exportIndex":11,"name":"WAVEFRONT_SHADE_WGSL","kind":"re-export","signature":"WAVEFRONT_SHADE_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/wavefront/index.md","moduleTitle":"render/morphfield/runtime/wavefront/index","source":"engine/render/morphfield/runtime/wavefront/index.js","import":"/engine/render/morphfield/runtime/wavefront/index.js","sourceHash":"f682c6b16b96a24b0557be031adf7293f8e5cd13b27edcdc2c2ca94b4c3fcf53","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/wavefront/index.js#0012:WAVEFRONT_SHADOW_WGSL","exportIndex":12,"name":"WAVEFRONT_SHADOW_WGSL","kind":"re-export","signature":"WAVEFRONT_SHADOW_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/wavefront/index.md","moduleTitle":"render/morphfield/runtime/wavefront/index","source":"engine/render/morphfield/runtime/wavefront/index.js","import":"/engine/render/morphfield/runtime/wavefront/index.js","sourceHash":"f682c6b16b96a24b0557be031adf7293f8e5cd13b27edcdc2c2ca94b4c3fcf53","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/wavefront/index.js#0013:WAVEFRONT_WORKGROUP_SIZE","exportIndex":13,"name":"WAVEFRONT_WORKGROUP_SIZE","kind":"re-export","signature":"WAVEFRONT_WORKGROUP_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/wavefront/index.md","moduleTitle":"render/morphfield/runtime/wavefront/index","source":"engine/render/morphfield/runtime/wavefront/index.js","import":"/engine/render/morphfield/runtime/wavefront/index.js","sourceHash":"f682c6b16b96a24b0557be031adf7293f8e5cd13b27edcdc2c2ca94b4c3fcf53","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/wavefront/index.js#0014:createWavefrontPathTracer","exportIndex":14,"name":"createWavefrontPathTracer","kind":"re-export","signature":"createWavefrontPathTracer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/wavefront/index.md","moduleTitle":"render/morphfield/runtime/wavefront/index","source":"engine/render/morphfield/runtime/wavefront/index.js","import":"/engine/render/morphfield/runtime/wavefront/index.js","sourceHash":"f682c6b16b96a24b0557be031adf7293f8e5cd13b27edcdc2c2ca94b4c3fcf53","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/wavefront/index.js#0015:packMaterialExtensions","exportIndex":15,"name":"packMaterialExtensions","kind":"re-export","signature":"packMaterialExtensions","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/wavefront/index.md","moduleTitle":"render/morphfield/runtime/wavefront/index","source":"engine/render/morphfield/runtime/wavefront/index.js","import":"/engine/render/morphfield/runtime/wavefront/index.js","sourceHash":"f682c6b16b96a24b0557be031adf7293f8e5cd13b27edcdc2c2ca94b4c3fcf53","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/wavefront/index.js#0016:queueByteSize","exportIndex":16,"name":"queueByteSize","kind":"re-export","signature":"queueByteSize","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/wavefront/selfTest.md","moduleTitle":"render/morphfield/runtime/wavefront/selfTest","source":"engine/render/morphfield/runtime/wavefront/selfTest.js","import":"/engine/render/morphfield/runtime/wavefront/selfTest.js","sourceHash":"ab3bdc5ce4d8b77fc5a7c2bcbc10c03bed8b9c2bae6c47b50009c08cfcb16eb9","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/runtime/wavefront/selfTest.js","title":"render/morphfield/runtime/wavefront/selfTest","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/runtime/wavefront/selfTest.md","moduleTitle":"render/morphfield/runtime/wavefront/selfTest","source":"engine/render/morphfield/runtime/wavefront/selfTest.js","import":"/engine/render/morphfield/runtime/wavefront/selfTest.js","sourceHash":"ab3bdc5ce4d8b77fc5a7c2bcbc10c03bed8b9c2bae6c47b50009c08cfcb16eb9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/runtime/wavefront/selfTest.js#0000:runWavefrontSelfTest","exportIndex":0,"name":"runWavefrontSelfTest","kind":"function","signature":"async runWavefrontSelfTest({ realWebGpu = false, device = null } = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/schemas/ids.md","moduleTitle":"render/morphfield/schemas/ids","source":"engine/render/morphfield/schemas/ids.js","import":"/engine/render/morphfield/schemas/ids.js","sourceHash":"34de4173a36bdf6b5777d9a344fba2e5110ccf850e6c00c3766f81e206d2183e","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/schemas/ids.js","title":"render/morphfield/schemas/ids","summary":"","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/schemas/ids.md","moduleTitle":"render/morphfield/schemas/ids","source":"engine/render/morphfield/schemas/ids.js","import":"/engine/render/morphfield/schemas/ids.js","sourceHash":"34de4173a36bdf6b5777d9a344fba2e5110ccf850e6c00c3766f81e206d2183e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/schemas/ids.js#0000:MORPHFIELD_JSON_SCHEMA_DIALECT","exportIndex":0,"name":"MORPHFIELD_JSON_SCHEMA_DIALECT","kind":"constant","signature":"MORPHFIELD_JSON_SCHEMA_DIALECT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/schemas/ids.md","moduleTitle":"render/morphfield/schemas/ids","source":"engine/render/morphfield/schemas/ids.js","import":"/engine/render/morphfield/schemas/ids.js","sourceHash":"34de4173a36bdf6b5777d9a344fba2e5110ccf850e6c00c3766f81e206d2183e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/schemas/ids.js#0001:MORPHFIELD_SCHEMA_IDS","exportIndex":1,"name":"MORPHFIELD_SCHEMA_IDS","kind":"constant","signature":"MORPHFIELD_SCHEMA_IDS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/schemas/ids.md","moduleTitle":"render/morphfield/schemas/ids","source":"engine/render/morphfield/schemas/ids.js","import":"/engine/render/morphfield/schemas/ids.js","sourceHash":"34de4173a36bdf6b5777d9a344fba2e5110ccf850e6c00c3766f81e206d2183e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/schemas/ids.js#0002:MORPHFIELD_SCHEMA_FILES","exportIndex":2,"name":"MORPHFIELD_SCHEMA_FILES","kind":"constant","signature":"MORPHFIELD_SCHEMA_FILES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/schemas/index.md","moduleTitle":"render/morphfield/schemas/index","source":"engine/render/morphfield/schemas/index.js","import":"/engine/render/morphfield/schemas/index.js","sourceHash":"dd5c75ee43bdabd404765ef314cb85996bab911920c0ac5db9f09c259a761f19","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/schemas/index.js","title":"render/morphfield/schemas/index","summary":"Normalize one semantic Nexel and report the execution/query capabilities the current R2 implementation can honestly provide for it.","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/schemas/index.md","moduleTitle":"render/morphfield/schemas/index","source":"engine/render/morphfield/schemas/index.js","import":"/engine/render/morphfield/schemas/index.js","sourceHash":"dd5c75ee43bdabd404765ef314cb85996bab911920c0ac5db9f09c259a761f19","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/schemas/index.js#0000:inspectNexelCapabilities","exportIndex":0,"name":"inspectNexelCapabilities","kind":"function","signature":"inspectNexelCapabilities(input)","summary":"Normalize one semantic Nexel and report the execution/query capabilities the current R2 implementation can honestly provide for it."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/schemas/index.md","moduleTitle":"render/morphfield/schemas/index","source":"engine/render/morphfield/schemas/index.js","import":"/engine/render/morphfield/schemas/index.js","sourceHash":"dd5c75ee43bdabd404765ef314cb85996bab911920c0ac5db9f09c259a761f19","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/schemas/index.js#0001:NEXEL_COMPILER_MODE","exportIndex":1,"name":"NEXEL_COMPILER_MODE","kind":"constant","signature":"NEXEL_COMPILER_MODE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/schemas/index.md","moduleTitle":"render/morphfield/schemas/index","source":"engine/render/morphfield/schemas/index.js","import":"/engine/render/morphfield/schemas/index.js","sourceHash":"dd5c75ee43bdabd404765ef314cb85996bab911920c0ac5db9f09c259a761f19","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/schemas/index.js#0002:NEXEL_GPU_QUERY_MODE","exportIndex":2,"name":"NEXEL_GPU_QUERY_MODE","kind":"constant","signature":"NEXEL_GPU_QUERY_MODE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/schemas/index.md","moduleTitle":"render/morphfield/schemas/index","source":"engine/render/morphfield/schemas/index.js","import":"/engine/render/morphfield/schemas/index.js","sourceHash":"dd5c75ee43bdabd404765ef314cb85996bab911920c0ac5db9f09c259a761f19","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/schemas/index.js#0003:NEXEL_CAPABILITY_PROFILE","exportIndex":3,"name":"NEXEL_CAPABILITY_PROFILE","kind":"constant","signature":"NEXEL_CAPABILITY_PROFILE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/EngineSimulationAdapters.md","moduleTitle":"render/morphfield/systems/EngineSimulationAdapters","source":"engine/render/morphfield/systems/EngineSimulationAdapters.js","import":"/engine/render/morphfield/systems/EngineSimulationAdapters.js","sourceHash":"5a7b16a009c1208eda606e148adf60b9172bc1bdd053e639f42669ecbd6a9b20","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/systems/EngineSimulationAdapters.js","title":"render/morphfield/systems/EngineSimulationAdapters","summary":"Adapt the existing particle world to the shared host encoder.","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/EngineSimulationAdapters.md","moduleTitle":"render/morphfield/systems/EngineSimulationAdapters","source":"engine/render/morphfield/systems/EngineSimulationAdapters.js","import":"/engine/render/morphfield/systems/EngineSimulationAdapters.js","sourceHash":"5a7b16a009c1208eda606e148adf60b9172bc1bdd053e639f42669ecbd6a9b20","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/EngineSimulationAdapters.js#0000:createParticleWorldAdapter","exportIndex":0,"name":"createParticleWorldAdapter","kind":"function","signature":"createParticleWorldAdapter(world, options = {})","summary":"Adapt the existing particle world to the shared host encoder."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/EngineSimulationAdapters.md","moduleTitle":"render/morphfield/systems/EngineSimulationAdapters","source":"engine/render/morphfield/systems/EngineSimulationAdapters.js","import":"/engine/render/morphfield/systems/EngineSimulationAdapters.js","sourceHash":"5a7b16a009c1208eda606e148adf60b9172bc1bdd053e639f42669ecbd6a9b20","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/EngineSimulationAdapters.js#0001:createFluidWorldAdapter","exportIndex":1,"name":"createFluidWorldAdapter","kind":"function","signature":"createFluidWorldAdapter(world, options = {})","summary":"Adapt the existing external-encoder fluid grid."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/EngineSimulationAdapters.md","moduleTitle":"render/morphfield/systems/EngineSimulationAdapters","source":"engine/render/morphfield/systems/EngineSimulationAdapters.js","import":"/engine/render/morphfield/systems/EngineSimulationAdapters.js","sourceHash":"5a7b16a009c1208eda606e148adf60b9172bc1bdd053e639f42669ecbd6a9b20","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/EngineSimulationAdapters.js#0002:createVolumeSystemAdapter","exportIndex":2,"name":"createVolumeSystemAdapter","kind":"function","signature":"createVolumeSystemAdapter(volumeSystem, options = {})","summary":"Adapt an existing volume system exposing update(encoder, camera)."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/EngineSimulationAdapters.md","moduleTitle":"render/morphfield/systems/EngineSimulationAdapters","source":"engine/render/morphfield/systems/EngineSimulationAdapters.js","import":"/engine/render/morphfield/systems/EngineSimulationAdapters.js","sourceHash":"5a7b16a009c1208eda606e148adf60b9172bc1bdd053e639f42669ecbd6a9b20","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/EngineSimulationAdapters.js#0003:createGpuSimulationAdapter","exportIndex":3,"name":"createGpuSimulationAdapter","kind":"function","signature":"createGpuSimulationAdapter(descriptor)","summary":"Generic bridge for a caller-owned GPU simulation. It deliberately does not invent domain-specific solver names or resource ownership."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/KernelMedia.md","moduleTitle":"render/morphfield/systems/KernelMedia","source":"engine/render/morphfield/systems/KernelMedia.js","import":"/engine/render/morphfield/systems/KernelMedia.js","sourceHash":"72577f511465fbb1384366529237afe81554397edd654557aa13ba27ff52c7f8","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/systems/KernelMedia.js","title":"render/morphfield/systems/KernelMedia","summary":"CPU reference and bin-builder for semantic anisotropic oriented kernels.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/KernelMedia.md","moduleTitle":"render/morphfield/systems/KernelMedia","source":"engine/render/morphfield/systems/KernelMedia.js","import":"/engine/render/morphfield/systems/KernelMedia.js","sourceHash":"72577f511465fbb1384366529237afe81554397edd654557aa13ba27ff52c7f8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/KernelMedia.js#0000:OrientedKernelSet","exportIndex":0,"name":"OrientedKernelSet","kind":"class","signature":"class OrientedKernelSet","summary":"CPU reference and bin-builder for semantic anisotropic oriented kernels."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/KernelMedia.md","moduleTitle":"render/morphfield/systems/KernelMedia","source":"engine/render/morphfield/systems/KernelMedia.js","import":"/engine/render/morphfield/systems/KernelMedia.js","sourceHash":"72577f511465fbb1384366529237afe81554397edd654557aa13ba27ff52c7f8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/KernelMedia.js#0001:LayeredOITAccumulator","exportIndex":1,"name":"LayeredOITAccumulator","kind":"class","signature":"class LayeredOITAccumulator","summary":"Four exact sorted layers followed by a bounded weighted-blended tail."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/KernelMedia.md","moduleTitle":"render/morphfield/systems/KernelMedia","source":"engine/render/morphfield/systems/KernelMedia.js","import":"/engine/render/morphfield/systems/KernelMedia.js","sourceHash":"72577f511465fbb1384366529237afe81554397edd654557aa13ba27ff52c7f8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/KernelMedia.js#0002:integrateMedium","exportIndex":2,"name":"integrateMedium","kind":"function","signature":"integrateMedium(ray, evaluateMedium, options = {})","summary":"Deterministic reference integrator using a certified extinction majorant."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/NexelMicrostructure.md","moduleTitle":"render/morphfield/systems/NexelMicrostructure","source":"engine/render/morphfield/systems/NexelMicrostructure.js","import":"/engine/render/morphfield/systems/NexelMicrostructure.js","sourceHash":"4286af7c5032f82315cd6517898c6b1249f6bd7be256af084a14dc7be698b77f","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/systems/NexelMicrostructure.js","title":"render/morphfield/systems/NexelMicrostructure","summary":"Portable binary microstructure tools for Nexel render clusters and voxel bricks. These helpers describe local storage and verification only; they do not replace a chunk CRC/authentication tag or an outer error-correcting code.","exportCount":30}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/NexelMicrostructure.md","moduleTitle":"render/morphfield/systems/NexelMicrostructure","source":"engine/render/morphfield/systems/NexelMicrostructure.js","import":"/engine/render/morphfield/systems/NexelMicrostructure.js","sourceHash":"4286af7c5032f82315cd6517898c6b1249f6bd7be256af084a14dc7be698b77f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/NexelMicrostructure.js#0000:compileNexelAffineDecodePlan","exportIndex":0,"name":"compileNexelAffineDecodePlan","kind":"function","signature":"compileNexelAffineDecodePlan()","summary":"Compile the eight affine Boolean equations into one u32 of nibble masks, then exhaustively prove the branch-free parity plan against the reducer. This follows Root Algebra Lab's validated-plan discipline without adopting its deliberately research-only carry/sign multiplier."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/NexelMicrostructure.md","moduleTitle":"render/morphfield/systems/NexelMicrostructure","source":"engine/render/morphfield/systems/NexelMicrostructure.js","import":"/engine/render/morphfield/systems/NexelMicrostructure.js","sourceHash":"4286af7c5032f82315cd6517898c6b1249f6bd7be256af084a14dc7be698b77f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/NexelMicrostructure.js#0001:compileNexelDictionary","exportIndex":1,"name":"compileNexelDictionary","kind":"function","signature":"compileNexelDictionary(dictionary = [])","summary":"Compile an immutable exact dictionary and reverse lookup once per codebook."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/NexelMicrostructure.md","moduleTitle":"render/morphfield/systems/NexelMicrostructure","source":"engine/render/morphfield/systems/NexelMicrostructure.js","import":"/engine/render/morphfield/systems/NexelMicrostructure.js","sourceHash":"4286af7c5032f82315cd6517898c6b1249f6bd7be256af084a14dc7be698b77f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/NexelMicrostructure.js#0002:affineCubeSample","exportIndex":2,"name":"affineCubeSample","kind":"function","signature":"affineCubeSample(morphology, corner)","summary":"Evaluate one corner of an RM(1,3) affine microcube."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/NexelMicrostructure.md","moduleTitle":"render/morphfield/systems/NexelMicrostructure","source":"engine/render/morphfield/systems/NexelMicrostructure.js","import":"/engine/render/morphfield/systems/NexelMicrostructure.js","sourceHash":"4286af7c5032f82315cd6517898c6b1249f6bd7be256af084a14dc7be698b77f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/NexelMicrostructure.js#0003:expandAffineCube","exportIndex":3,"name":"expandAffineCube","kind":"function","signature":"expandAffineCube(morphology)","summary":"Expand an affine morphology into its exact eight-bit occupancy mask."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/NexelMicrostructure.md","moduleTitle":"render/morphfield/systems/NexelMicrostructure","source":"engine/render/morphfield/systems/NexelMicrostructure.js","import":"/engine/render/morphfield/systems/NexelMicrostructure.js","sourceHash":"4286af7c5032f82315cd6517898c6b1249f6bd7be256af084a14dc7be698b77f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/NexelMicrostructure.js#0004:decodeAffineCube","exportIndex":4,"name":"decodeAffineCube","kind":"function","signature":"decodeAffineCube(pattern)","summary":"Return the affine morphology for a pattern, or null for a non-codeword."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/NexelMicrostructure.md","moduleTitle":"render/morphfield/systems/NexelMicrostructure","source":"engine/render/morphfield/systems/NexelMicrostructure.js","import":"/engine/render/morphfield/systems/NexelMicrostructure.js","sourceHash":"4286af7c5032f82315cd6517898c6b1249f6bd7be256af084a14dc7be698b77f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/NexelMicrostructure.js#0005:affineFaceParitySyndrome","exportIndex":5,"name":"affineFaceParitySyndrome","kind":"function","signature":"affineFaceParitySyndrome(pattern)","summary":"Six-bit local face-parity syndrome ordered x0,x1,y0,y1,z0,z1. A valid RM(1,3) word has zero syndrome; another valid word can still evade it."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/NexelMicrostructure.md","moduleTitle":"render/morphfield/systems/NexelMicrostructure","source":"engine/render/morphfield/systems/NexelMicrostructure.js","import":"/engine/render/morphfield/systems/NexelMicrostructure.js","sourceHash":"4286af7c5032f82315cd6517898c6b1249f6bd7be256af084a14dc7be698b77f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/NexelMicrostructure.js#0006:inspectAffineCube","exportIndex":6,"name":"inspectAffineCube","kind":"function","signature":"inspectAffineCube(pattern)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/NexelMicrostructure.md","moduleTitle":"render/morphfield/systems/NexelMicrostructure","source":"engine/render/morphfield/systems/NexelMicrostructure.js","import":"/engine/render/morphfield/systems/NexelMicrostructure.js","sourceHash":"4286af7c5032f82315cd6517898c6b1249f6bd7be256af084a14dc7be698b77f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/NexelMicrostructure.js#0007:countSetBits8","exportIndex":7,"name":"countSetBits8","kind":"function","signature":"countSetBits8(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/NexelMicrostructure.md","moduleTitle":"render/morphfield/systems/NexelMicrostructure","source":"engine/render/morphfield/systems/NexelMicrostructure.js","import":"/engine/render/morphfield/systems/NexelMicrostructure.js","sourceHash":"4286af7c5032f82315cd6517898c6b1249f6bd7be256af084a14dc7be698b77f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/NexelMicrostructure.js#0008:hammingDistance8","exportIndex":8,"name":"hammingDistance8","kind":"function","signature":"hammingDistance8(left, right)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/NexelMicrostructure.md","moduleTitle":"render/morphfield/systems/NexelMicrostructure","source":"engine/render/morphfield/systems/NexelMicrostructure.js","import":"/engine/render/morphfield/systems/NexelMicrostructure.js","sourceHash":"4286af7c5032f82315cd6517898c6b1249f6bd7be256af084a14dc7be698b77f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/NexelMicrostructure.js#0009:packNexelMorton3D5","exportIndex":9,"name":"packNexelMorton3D5","kind":"function","signature":"packNexelMorton3D5(x, y, z)","summary":"Interleave three five-bit coordinates into the descriptor's 15-bit Morton field."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/NexelMicrostructure.md","moduleTitle":"render/morphfield/systems/NexelMicrostructure","source":"engine/render/morphfield/systems/NexelMicrostructure.js","import":"/engine/render/morphfield/systems/NexelMicrostructure.js","sourceHash":"4286af7c5032f82315cd6517898c6b1249f6bd7be256af084a14dc7be698b77f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/NexelMicrostructure.js#0010:unpackNexelMorton3D5","exportIndex":10,"name":"unpackNexelMorton3D5","kind":"function","signature":"unpackNexelMorton3D5(mortonCoordinate)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/NexelMicrostructure.md","moduleTitle":"render/morphfield/systems/NexelMicrostructure","source":"engine/render/morphfield/systems/NexelMicrostructure.js","import":"/engine/render/morphfield/systems/NexelMicrostructure.js","sourceHash":"4286af7c5032f82315cd6517898c6b1249f6bd7be256af084a14dc7be698b77f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/NexelMicrostructure.js#0011:encodeNexelMicrocube","exportIndex":11,"name":"encodeNexelMicrocube","kind":"function","signature":"encodeNexelMicrocube(pattern, { dictionary } = {})","summary":"Choose the smallest lossless local mode under the supplied dictionary."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/NexelMicrostructure.md","moduleTitle":"render/morphfield/systems/NexelMicrostructure","source":"engine/render/morphfield/systems/NexelMicrostructure.js","import":"/engine/render/morphfield/systems/NexelMicrostructure.js","sourceHash":"4286af7c5032f82315cd6517898c6b1249f6bd7be256af084a14dc7be698b77f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/NexelMicrostructure.js#0012:decodeNexelMicrocube","exportIndex":12,"name":"decodeNexelMicrocube","kind":"function","signature":"decodeNexelMicrocube(encoded, { dictionary } = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/NexelMicrostructure.md","moduleTitle":"render/morphfield/systems/NexelMicrostructure","source":"engine/render/morphfield/systems/NexelMicrostructure.js","import":"/engine/render/morphfield/systems/NexelMicrostructure.js","sourceHash":"4286af7c5032f82315cd6517898c6b1249f6bd7be256af084a14dc7be698b77f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/NexelMicrostructure.js#0013:packNexelDescriptor","exportIndex":13,"name":"packNexelDescriptor","kind":"function","signature":"packNexelDescriptor({ mortonCoordinate = 0, material = 0, morphology = 0, state = 0, lod = 0, flags = 0, } = {})","summary":"Pack the research descriptor: 15/6/4/3/2/2 exact integer fields."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/NexelMicrostructure.md","moduleTitle":"render/morphfield/systems/NexelMicrostructure","source":"engine/render/morphfield/systems/NexelMicrostructure.js","import":"/engine/render/morphfield/systems/NexelMicrostructure.js","sourceHash":"4286af7c5032f82315cd6517898c6b1249f6bd7be256af084a14dc7be698b77f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/NexelMicrostructure.js#0014:unpackNexelDescriptor","exportIndex":14,"name":"unpackNexelDescriptor","kind":"function","signature":"unpackNexelDescriptor(word)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/NexelMicrostructure.md","moduleTitle":"render/morphfield/systems/NexelMicrostructure","source":"engine/render/morphfield/systems/NexelMicrostructure.js","import":"/engine/render/morphfield/systems/NexelMicrostructure.js","sourceHash":"4286af7c5032f82315cd6517898c6b1249f6bd7be256af084a14dc7be698b77f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/NexelMicrostructure.js#0015:packAffine4Brick","exportIndex":15,"name":"packAffine4Brick","kind":"function","signature":"packAffine4Brick(patterns)","summary":"Pack sixty-four affine microcubes into eight u32 words (32 bytes)."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/NexelMicrostructure.md","moduleTitle":"render/morphfield/systems/NexelMicrostructure","source":"engine/render/morphfield/systems/NexelMicrostructure.js","import":"/engine/render/morphfield/systems/NexelMicrostructure.js","sourceHash":"4286af7c5032f82315cd6517898c6b1249f6bd7be256af084a14dc7be698b77f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/NexelMicrostructure.js#0016:packAffine4Morphologies","exportIndex":16,"name":"packAffine4Morphologies","kind":"function","signature":"packAffine4Morphologies(morphologies)","summary":"Pack already-proven morphology nibbles without expanding and re-decoding."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/NexelMicrostructure.md","moduleTitle":"render/morphfield/systems/NexelMicrostructure","source":"engine/render/morphfield/systems/NexelMicrostructure.js","import":"/engine/render/morphfield/systems/NexelMicrostructure.js","sourceHash":"4286af7c5032f82315cd6517898c6b1249f6bd7be256af084a14dc7be698b77f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/NexelMicrostructure.js#0017:unpackAffine4Brick","exportIndex":17,"name":"unpackAffine4Brick","kind":"function","signature":"unpackAffine4Brick(words)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/NexelMicrostructure.md","moduleTitle":"render/morphfield/systems/NexelMicrostructure","source":"engine/render/morphfield/systems/NexelMicrostructure.js","import":"/engine/render/morphfield/systems/NexelMicrostructure.js","sourceHash":"4286af7c5032f82315cd6517898c6b1249f6bd7be256af084a14dc7be698b77f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/NexelMicrostructure.js#0018:crc32Bytes","exportIndex":18,"name":"crc32Bytes","kind":"function","signature":"crc32Bytes(bytes)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/NexelMicrostructure.md","moduleTitle":"render/morphfield/systems/NexelMicrostructure","source":"engine/render/morphfield/systems/NexelMicrostructure.js","import":"/engine/render/morphfield/systems/NexelMicrostructure.js","sourceHash":"4286af7c5032f82315cd6517898c6b1249f6bd7be256af084a14dc7be698b77f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/NexelMicrostructure.js#0019:computeAffineBrickFaceSignatures","exportIndex":19,"name":"computeAffineBrickFaceSignatures","kind":"function","signature":"computeAffineBrickFaceSignatures(patterns)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/NexelMicrostructure.md","moduleTitle":"render/morphfield/systems/NexelMicrostructure","source":"engine/render/morphfield/systems/NexelMicrostructure.js","import":"/engine/render/morphfield/systems/NexelMicrostructure.js","sourceHash":"4286af7c5032f82315cd6517898c6b1249f6bd7be256af084a14dc7be698b77f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/NexelMicrostructure.js#0020:createAffineNexelBrick","exportIndex":20,"name":"createAffineNexelBrick","kind":"function","signature":"createAffineNexelBrick(patterns, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/NexelMicrostructure.md","moduleTitle":"render/morphfield/systems/NexelMicrostructure","source":"engine/render/morphfield/systems/NexelMicrostructure.js","import":"/engine/render/morphfield/systems/NexelMicrostructure.js","sourceHash":"4286af7c5032f82315cd6517898c6b1249f6bd7be256af084a14dc7be698b77f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/NexelMicrostructure.js#0021:createAffineNexelBrickFromMorphologies","exportIndex":21,"name":"createAffineNexelBrickFromMorphologies","kind":"function","signature":"createAffineNexelBrickFromMorphologies(morphologies, options = {})","summary":"Build a brick directly from its sixty-four affine morphology nibbles."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/NexelMicrostructure.md","moduleTitle":"render/morphfield/systems/NexelMicrostructure","source":"engine/render/morphfield/systems/NexelMicrostructure.js","import":"/engine/render/morphfield/systems/NexelMicrostructure.js","sourceHash":"4286af7c5032f82315cd6517898c6b1249f6bd7be256af084a14dc7be698b77f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/NexelMicrostructure.js#0022:verifyAffineNexelBrick","exportIndex":22,"name":"verifyAffineNexelBrick","kind":"function","signature":"verifyAffineNexelBrick(brick)","summary":"Recompute every local brick invariant without trusting stored TypedArrays."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/NexelMicrostructure.md","moduleTitle":"render/morphfield/systems/NexelMicrostructure","source":"engine/render/morphfield/systems/NexelMicrostructure.js","import":"/engine/render/morphfield/systems/NexelMicrostructure.js","sourceHash":"4286af7c5032f82315cd6517898c6b1249f6bd7be256af084a14dc7be698b77f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/NexelMicrostructure.js#0023:nexelClusterCornerOrder","exportIndex":23,"name":"nexelClusterCornerOrder","kind":"function","signature":"nexelClusterCornerOrder(seed = 0)","summary":"Return a deterministic, exact permutation of the eight microcube corners."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/NexelMicrostructure.md","moduleTitle":"render/morphfield/systems/NexelMicrostructure","source":"engine/render/morphfield/systems/NexelMicrostructure.js","import":"/engine/render/morphfield/systems/NexelMicrostructure.js","sourceHash":"4286af7c5032f82315cd6517898c6b1249f6bd7be256af084a14dc7be698b77f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/NexelMicrostructure.js#0024:NEXEL_MICROCUBE_MODE","exportIndex":24,"name":"NEXEL_MICROCUBE_MODE","kind":"constant","signature":"NEXEL_MICROCUBE_MODE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/NexelMicrostructure.md","moduleTitle":"render/morphfield/systems/NexelMicrostructure","source":"engine/render/morphfield/systems/NexelMicrostructure.js","import":"/engine/render/morphfield/systems/NexelMicrostructure.js","sourceHash":"4286af7c5032f82315cd6517898c6b1249f6bd7be256af084a14dc7be698b77f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/NexelMicrostructure.js#0025:NEXEL_DESCRIPTOR_LAYOUT","exportIndex":25,"name":"NEXEL_DESCRIPTOR_LAYOUT","kind":"constant","signature":"NEXEL_DESCRIPTOR_LAYOUT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/NexelMicrostructure.md","moduleTitle":"render/morphfield/systems/NexelMicrostructure","source":"engine/render/morphfield/systems/NexelMicrostructure.js","import":"/engine/render/morphfield/systems/NexelMicrostructure.js","sourceHash":"4286af7c5032f82315cd6517898c6b1249f6bd7be256af084a14dc7be698b77f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/NexelMicrostructure.js#0026:NEXEL_CLUSTER_CORNER_ORDER","exportIndex":26,"name":"NEXEL_CLUSTER_CORNER_ORDER","kind":"constant","signature":"NEXEL_CLUSTER_CORNER_ORDER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/NexelMicrostructure.md","moduleTitle":"render/morphfield/systems/NexelMicrostructure","source":"engine/render/morphfield/systems/NexelMicrostructure.js","import":"/engine/render/morphfield/systems/NexelMicrostructure.js","sourceHash":"4286af7c5032f82315cd6517898c6b1249f6bd7be256af084a14dc7be698b77f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/NexelMicrostructure.js#0027:NEXEL_AFFINE_DECODE_PLAN","exportIndex":27,"name":"NEXEL_AFFINE_DECODE_PLAN","kind":"constant","signature":"NEXEL_AFFINE_DECODE_PLAN","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/NexelMicrostructure.md","moduleTitle":"render/morphfield/systems/NexelMicrostructure","source":"engine/render/morphfield/systems/NexelMicrostructure.js","import":"/engine/render/morphfield/systems/NexelMicrostructure.js","sourceHash":"4286af7c5032f82315cd6517898c6b1249f6bd7be256af084a14dc7be698b77f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/NexelMicrostructure.js#0028:NEXEL_AFFINE_OCCUPANCY_LUT","exportIndex":28,"name":"NEXEL_AFFINE_OCCUPANCY_LUT","kind":"constant","signature":"NEXEL_AFFINE_OCCUPANCY_LUT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/NexelMicrostructure.md","moduleTitle":"render/morphfield/systems/NexelMicrostructure","source":"engine/render/morphfield/systems/NexelMicrostructure.js","import":"/engine/render/morphfield/systems/NexelMicrostructure.js","sourceHash":"4286af7c5032f82315cd6517898c6b1249f6bd7be256af084a14dc7be698b77f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/NexelMicrostructure.js#0029:NEXEL_ACTIVE_CORNER_LUT","exportIndex":29,"name":"NEXEL_ACTIVE_CORNER_LUT","kind":"constant","signature":"NEXEL_ACTIVE_CORNER_LUT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/NexelPbdCollisionAdapter.md","moduleTitle":"render/morphfield/systems/NexelPbdCollisionAdapter","source":"engine/render/morphfield/systems/NexelPbdCollisionAdapter.js","import":"/engine/render/morphfield/systems/NexelPbdCollisionAdapter.js","sourceHash":"cdde9454a1d1cdc88417dc5c3a0dbc003cec79a1bf2c6fcd571b045ad30c6b75","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/systems/NexelPbdCollisionAdapter.js","title":"render/morphfield/systems/NexelPbdCollisionAdapter","summary":"Compile semantic static Nexels into PBDSolver collider inputs. PBDSolver's contactRadius remains a predictive OGC shell, while the solver geometry is inset by contactOffset-restOffset so the rendered and collision surfaces settle at the requested restOffset (zero by default).","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/NexelPbdCollisionAdapter.md","moduleTitle":"render/morphfield/systems/NexelPbdCollisionAdapter","source":"engine/render/morphfield/systems/NexelPbdCollisionAdapter.js","import":"/engine/render/morphfield/systems/NexelPbdCollisionAdapter.js","sourceHash":"cdde9454a1d1cdc88417dc5c3a0dbc003cec79a1bf2c6fcd571b045ad30c6b75","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/NexelPbdCollisionAdapter.js#0000:NexelPbdCollisionAdapter","exportIndex":0,"name":"NexelPbdCollisionAdapter","kind":"class","signature":"class NexelPbdCollisionAdapter","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/NexelPbdCollisionAdapter.md","moduleTitle":"render/morphfield/systems/NexelPbdCollisionAdapter","source":"engine/render/morphfield/systems/NexelPbdCollisionAdapter.js","import":"/engine/render/morphfield/systems/NexelPbdCollisionAdapter.js","sourceHash":"cdde9454a1d1cdc88417dc5c3a0dbc003cec79a1bf2c6fcd571b045ad30c6b75","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/NexelPbdCollisionAdapter.js#0001:compileNexelPbdColliderSet","exportIndex":1,"name":"compileNexelPbdColliderSet","kind":"function","signature":"compileNexelPbdColliderSet(descriptorInput, { contactOffset = 0.002, restOffset = 0, friction = 0.36, } = {})","summary":"Compile semantic static Nexels into PBDSolver collider inputs. PBDSolver's contactRadius remains a predictive OGC shell, while the solver geometry is inset by contactOffset-restOffset so the rendered and collision surfaces settle at the requested restOffset (zero by default)."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/NexelPbdCollisionAdapter.md","moduleTitle":"render/morphfield/systems/NexelPbdCollisionAdapter","source":"engine/render/morphfield/systems/NexelPbdCollisionAdapter.js","import":"/engine/render/morphfield/systems/NexelPbdCollisionAdapter.js","sourceHash":"cdde9454a1d1cdc88417dc5c3a0dbc003cec79a1bf2c6fcd571b045ad30c6b75","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/NexelPbdCollisionAdapter.js#0002:applyNexelPbdColliderSet","exportIndex":2,"name":"applyNexelPbdColliderSet","kind":"function","signature":"applyNexelPbdColliderSet(solver, colliderSet)","summary":"Apply a compiled collider set without taking ownership of the solver."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/NexelPbdCollisionAdapter.md","moduleTitle":"render/morphfield/systems/NexelPbdCollisionAdapter","source":"engine/render/morphfield/systems/NexelPbdCollisionAdapter.js","import":"/engine/render/morphfield/systems/NexelPbdCollisionAdapter.js","sourceHash":"cdde9454a1d1cdc88417dc5c3a0dbc003cec79a1bf2c6fcd571b045ad30c6b75","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/NexelPbdCollisionAdapter.js#0003:createNexelPbdCollisionAdapter","exportIndex":3,"name":"createNexelPbdCollisionAdapter","kind":"function","signature":"createNexelPbdCollisionAdapter(options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/NexelPbdCollisionAdapter.md","moduleTitle":"render/morphfield/systems/NexelPbdCollisionAdapter","source":"engine/render/morphfield/systems/NexelPbdCollisionAdapter.js","import":"/engine/render/morphfield/systems/NexelPbdCollisionAdapter.js","sourceHash":"cdde9454a1d1cdc88417dc5c3a0dbc003cec79a1bf2c6fcd571b045ad30c6b75","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/NexelPbdCollisionAdapter.js#0004:NEXEL_PBD_COLLIDER_KIND","exportIndex":4,"name":"NEXEL_PBD_COLLIDER_KIND","kind":"re-export","signature":"NEXEL_PBD_COLLIDER_KIND","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/ParticleChainNexelAdapter.md","moduleTitle":"render/morphfield/systems/ParticleChainNexelAdapter","source":"engine/render/morphfield/systems/ParticleChainNexelAdapter.js","import":"/engine/render/morphfield/systems/ParticleChainNexelAdapter.js","sourceHash":"3f0ba2452ac9658dfe4b788c0b6f5f4882d3bceafc19a67a136ad532764e564f","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/systems/ParticleChainNexelAdapter.js","title":"render/morphfield/systems/ParticleChainNexelAdapter","summary":"Convert a caller-owned particle-chain snapshot into stable sphere/capsule Nexels. The simulation remains authoritative; this adapter performs no stepping, GPU readback, queue submission, or resource ownership transfer. Editor PhysicsChain component `links`, CPU PBD `particles`, and ordinary `[x,y,z]` arrays intentionally share this one input contract.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/ParticleChainNexelAdapter.md","moduleTitle":"render/morphfield/systems/ParticleChainNexelAdapter","source":"engine/render/morphfield/systems/ParticleChainNexelAdapter.js","import":"/engine/render/morphfield/systems/ParticleChainNexelAdapter.js","sourceHash":"3f0ba2452ac9658dfe4b788c0b6f5f4882d3bceafc19a67a136ad532764e564f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/ParticleChainNexelAdapter.js#0000:createParticleChainNexelDescriptors","exportIndex":0,"name":"createParticleChainNexelDescriptors","kind":"function","signature":"createParticleChainNexelDescriptors(snapshot, options = {})","summary":"Convert a caller-owned particle-chain snapshot into stable sphere/capsule Nexels. The simulation remains authoritative; this adapter performs no stepping, GPU readback, queue submission, or resource ownership transfer. Editor PhysicsChain component `links`, CPU PBD `particles`, and ordinary `[x,y,z]` arrays intentionally share this one input contract."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/ParticleChainNexelAdapter.md","moduleTitle":"render/morphfield/systems/ParticleChainNexelAdapter","source":"engine/render/morphfield/systems/ParticleChainNexelAdapter.js","import":"/engine/render/morphfield/systems/ParticleChainNexelAdapter.js","sourceHash":"3f0ba2452ac9658dfe4b788c0b6f5f4882d3bceafc19a67a136ad532764e564f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/ParticleChainNexelAdapter.js#0001:createParticleChainNexelPatch","exportIndex":1,"name":"createParticleChainNexelPatch","kind":"function","signature":"createParticleChainNexelPatch(scene, snapshot, options = {})","summary":"Build an incremental scene patch while preserving stable chain IDs."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/ParticleChainNexelAdapter.md","moduleTitle":"render/morphfield/systems/ParticleChainNexelAdapter","source":"engine/render/morphfield/systems/ParticleChainNexelAdapter.js","import":"/engine/render/morphfield/systems/ParticleChainNexelAdapter.js","sourceHash":"3f0ba2452ac9658dfe4b788c0b6f5f4882d3bceafc19a67a136ad532764e564f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/ParticleChainNexelAdapter.js#0002:PARTICLE_CHAIN_NEXEL_LIMITS","exportIndex":2,"name":"PARTICLE_CHAIN_NEXEL_LIMITS","kind":"constant","signature":"PARTICLE_CHAIN_NEXEL_LIMITS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/QefSolver.md","moduleTitle":"render/morphfield/systems/QefSolver","source":"engine/render/morphfield/systems/QefSolver.js","import":"/engine/render/morphfield/systems/QefSolver.js","sourceHash":"0a5338dc2576bae0609dc43d06438fdea79710e0678950e82d7171120ff98b8e","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/systems/QefSolver.js","title":"render/morphfield/systems/QefSolver","summary":"Rank-aware QEF solver using a Jacobi eigendecomposition of the local normal covariance and a truncated pseudoinverse. Coordinates are translated to the cell center before solving to preserve f32-compatible numerical scale.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/QefSolver.md","moduleTitle":"render/morphfield/systems/QefSolver","source":"engine/render/morphfield/systems/QefSolver.js","import":"/engine/render/morphfield/systems/QefSolver.js","sourceHash":"0a5338dc2576bae0609dc43d06438fdea79710e0678950e82d7171120ff98b8e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/QefSolver.js#0000:solveQef","exportIndex":0,"name":"solveQef","kind":"function","signature":"solveQef(intersections, normals, bounds, options = {})","summary":"Rank-aware QEF solver using a Jacobi eigendecomposition of the local normal covariance and a truncated pseudoinverse. Coordinates are translated to the cell center before solving to preserve f32-compatible numerical scale."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/RepresentationPlanner.md","moduleTitle":"render/morphfield/systems/RepresentationPlanner","source":"engine/render/morphfield/systems/RepresentationPlanner.js","import":"/engine/render/morphfield/systems/RepresentationPlanner.js","sourceHash":"6ed000dffdb613adb9727a573e9ea7a5fb327ffcf2eef8a1a16aa9e4331cecb3","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/systems/RepresentationPlanner.js","title":"render/morphfield/systems/RepresentationPlanner","summary":"Stable top-level MorphField execution families.","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/RepresentationPlanner.md","moduleTitle":"render/morphfield/systems/RepresentationPlanner","source":"engine/render/morphfield/systems/RepresentationPlanner.js","import":"/engine/render/morphfield/systems/RepresentationPlanner.js","sourceHash":"6ed000dffdb613adb9727a573e9ea7a5fb327ffcf2eef8a1a16aa9e4331cecb3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/RepresentationPlanner.js#0000:RepresentationPlanner","exportIndex":0,"name":"RepresentationPlanner","kind":"class","signature":"class RepresentationPlanner","summary":"Deterministic representation planner. Source semantics and certificates are authoritative; performance history can only promote an eligible surface to a disposable cache."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/RepresentationPlanner.md","moduleTitle":"render/morphfield/systems/RepresentationPlanner","source":"engine/render/morphfield/systems/RepresentationPlanner.js","import":"/engine/render/morphfield/systems/RepresentationPlanner.js","sourceHash":"6ed000dffdb613adb9727a573e9ea7a5fb327ffcf2eef8a1a16aa9e4331cecb3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/RepresentationPlanner.js#0001:selectSurfaceExtractor","exportIndex":1,"name":"selectSurfaceExtractor","kind":"function","signature":"selectSurfaceExtractor(intent = {}, capabilities = {})","summary":"Selects a single extractor for an entire connected seam domain. The selector intentionally returns direct rendering when a requested topology guarantee cannot be supported by certified Hermite data."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/RepresentationPlanner.md","moduleTitle":"render/morphfield/systems/RepresentationPlanner","source":"engine/render/morphfield/systems/RepresentationPlanner.js","import":"/engine/render/morphfield/systems/RepresentationPlanner.js","sourceHash":"6ed000dffdb613adb9727a573e9ea7a5fb327ffcf2eef8a1a16aa9e4331cecb3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/RepresentationPlanner.js#0002:EXECUTION_FAMILY","exportIndex":2,"name":"EXECUTION_FAMILY","kind":"constant","signature":"EXECUTION_FAMILY","summary":"Stable top-level MorphField execution families."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/RepresentationPlanner.md","moduleTitle":"render/morphfield/systems/RepresentationPlanner","source":"engine/render/morphfield/systems/RepresentationPlanner.js","import":"/engine/render/morphfield/systems/RepresentationPlanner.js","sourceHash":"6ed000dffdb613adb9727a573e9ea7a5fb327ffcf2eef8a1a16aa9e4331cecb3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/RepresentationPlanner.js#0003:SURFACE_EXTRACTOR","exportIndex":3,"name":"SURFACE_EXTRACTOR","kind":"constant","signature":"SURFACE_EXTRACTOR","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/ResidualHierarchy.md","moduleTitle":"render/morphfield/systems/ResidualHierarchy","source":"engine/render/morphfield/systems/ResidualHierarchy.js","import":"/engine/render/morphfield/systems/ResidualHierarchy.js","sourceHash":"009e61bee560637fc050c6a454b1f07cefef0cac7654ce52162e26e2cc8e4619","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/systems/ResidualHierarchy.js","title":"render/morphfield/systems/ResidualHierarchy","summary":"Certified scalar residual brick with deterministic trilinear sampling.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/ResidualHierarchy.md","moduleTitle":"render/morphfield/systems/ResidualHierarchy","source":"engine/render/morphfield/systems/ResidualHierarchy.js","import":"/engine/render/morphfield/systems/ResidualHierarchy.js","sourceHash":"009e61bee560637fc050c6a454b1f07cefef0cac7654ce52162e26e2cc8e4619","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/ResidualHierarchy.js#0000:CertifiedResidualBrick","exportIndex":0,"name":"CertifiedResidualBrick","kind":"class","signature":"class CertifiedResidualBrick","summary":"Certified scalar residual brick with deterministic trilinear sampling."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/ResidualHierarchy.md","moduleTitle":"render/morphfield/systems/ResidualHierarchy","source":"engine/render/morphfield/systems/ResidualHierarchy.js","import":"/engine/render/morphfield/systems/ResidualHierarchy.js","sourceHash":"009e61bee560637fc050c6a454b1f07cefef0cac7654ce52162e26e2cc8e4619","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/ResidualHierarchy.js#0001:ResidualHierarchy","exportIndex":1,"name":"ResidualHierarchy","kind":"class","signature":"class ResidualHierarchy","summary":"Revisioned, fixed-budget residual residency manager. The coarsest level is pinned, so every accepted source always has a certified fallback."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/ResidualHierarchy.md","moduleTitle":"render/morphfield/systems/ResidualHierarchy","source":"engine/render/morphfield/systems/ResidualHierarchy.js","import":"/engine/render/morphfield/systems/ResidualHierarchy.js","sourceHash":"009e61bee560637fc050c6a454b1f07cefef0cac7654ce52162e26e2cc8e4619","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/ResidualHierarchy.js#0002:composeResidualCertificate","exportIndex":2,"name":"composeResidualCertificate","kind":"function","signature":"composeResidualCertificate(analytic, residual)","summary":"Compose analytic and residual surface certificates conservatively."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/SimulationScheduler.md","moduleTitle":"render/morphfield/systems/SimulationScheduler","source":"engine/render/morphfield/systems/SimulationScheduler.js","import":"/engine/render/morphfield/systems/SimulationScheduler.js","sourceHash":"e2edf166ba796f1dc8542c72726fa13512ca3871fd0accd9a7e42e0e1ac3c7b6","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/systems/SimulationScheduler.js","title":"render/morphfield/systems/SimulationScheduler","summary":"Fixed-step scheduler for external-encoder simulation domains.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/SimulationScheduler.md","moduleTitle":"render/morphfield/systems/SimulationScheduler","source":"engine/render/morphfield/systems/SimulationScheduler.js","import":"/engine/render/morphfield/systems/SimulationScheduler.js","sourceHash":"e2edf166ba796f1dc8542c72726fa13512ca3871fd0accd9a7e42e0e1ac3c7b6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/SimulationScheduler.js#0000:FixedStepSimulationScheduler","exportIndex":0,"name":"FixedStepSimulationScheduler","kind":"class","signature":"class FixedStepSimulationScheduler","summary":"Fixed-step scheduler for external-encoder simulation domains."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/SimulationScheduler.md","moduleTitle":"render/morphfield/systems/SimulationScheduler","source":"engine/render/morphfield/systems/SimulationScheduler.js","import":"/engine/render/morphfield/systems/SimulationScheduler.js","sourceHash":"e2edf166ba796f1dc8542c72726fa13512ca3871fd0accd9a7e42e0e1ac3c7b6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/SimulationScheduler.js#0001:createExternalEncoderAdapter","exportIndex":1,"name":"createExternalEncoderAdapter","kind":"function","signature":"createExternalEncoderAdapter({ id, authority = 'authoritative', encode, interpolate, updateStride = 1 })","summary":"Wrap an existing external-encoder simulation API without changing its name."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/SimulationScheduler.md","moduleTitle":"render/morphfield/systems/SimulationScheduler","source":"engine/render/morphfield/systems/SimulationScheduler.js","import":"/engine/render/morphfield/systems/SimulationScheduler.js","sourceHash":"e2edf166ba796f1dc8542c72726fa13512ca3871fd0accd9a7e42e0e1ac3c7b6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/SimulationScheduler.js#0002:createKinematicAdapter","exportIndex":2,"name":"createKinematicAdapter","kind":"function","signature":"createKinematicAdapter({ id, sample, apply, authority = 'authoritative' })","summary":"Kinematic adapter that advances a caller-owned transform source."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/SurfaceCacheExtractor.md","moduleTitle":"render/morphfield/systems/SurfaceCacheExtractor","source":"engine/render/morphfield/systems/SurfaceCacheExtractor.js","import":"/engine/render/morphfield/systems/SurfaceCacheExtractor.js","sourceHash":"9c100ec2a6c7efacb49414a4f6517549dc577c465046991bfab45c205d13eeff","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/systems/SurfaceCacheExtractor.js","title":"render/morphfield/systems/SurfaceCacheExtractor","summary":"Device-independent surface cache extractor and validation boundary.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/SurfaceCacheExtractor.md","moduleTitle":"render/morphfield/systems/SurfaceCacheExtractor","source":"engine/render/morphfield/systems/SurfaceCacheExtractor.js","import":"/engine/render/morphfield/systems/SurfaceCacheExtractor.js","sourceHash":"9c100ec2a6c7efacb49414a4f6517549dc577c465046991bfab45c205d13eeff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/SurfaceCacheExtractor.js#0000:SurfaceCacheExtractor","exportIndex":0,"name":"SurfaceCacheExtractor","kind":"class","signature":"class SurfaceCacheExtractor","summary":"Device-independent surface cache extractor and validation boundary."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/SurfaceCacheExtractor.md","moduleTitle":"render/morphfield/systems/SurfaceCacheExtractor","source":"engine/render/morphfield/systems/SurfaceCacheExtractor.js","import":"/engine/render/morphfield/systems/SurfaceCacheExtractor.js","sourceHash":"9c100ec2a6c7efacb49414a4f6517549dc577c465046991bfab45c205d13eeff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/SurfaceCacheExtractor.js#0001:SurfaceCacheManager","exportIndex":1,"name":"SurfaceCacheManager","kind":"class","signature":"class SurfaceCacheManager","summary":"Stages complete connected domains and atomically replaces validated entries."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/SurfaceCacheExtractor.md","moduleTitle":"render/morphfield/systems/SurfaceCacheExtractor","source":"engine/render/morphfield/systems/SurfaceCacheExtractor.js","import":"/engine/render/morphfield/systems/SurfaceCacheExtractor.js","sourceHash":"9c100ec2a6c7efacb49414a4f6517549dc577c465046991bfab45c205d13eeff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/SurfaceCacheExtractor.js#0002:validateMesh","exportIndex":2,"name":"validateMesh","kind":"function","signature":"validateMesh(mesh, topologyRequirement = 'unspecified')","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/index.md","moduleTitle":"render/morphfield/systems/index","source":"engine/render/morphfield/systems/index.js","import":"/engine/render/morphfield/systems/index.js","sourceHash":"d1d3fed255b00b41e3bba384a4cab3720796db00ba91f31f64b0510468ef2686","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/systems/index.js","title":"render/morphfield/systems/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/transitions/TransitionBoundary.md","moduleTitle":"render/morphfield/systems/transitions/TransitionBoundary","source":"engine/render/morphfield/systems/transitions/TransitionBoundary.js","import":"/engine/render/morphfield/systems/transitions/TransitionBoundary.js","sourceHash":"ce86119135f06a253962865bdb9f88d6f41703bc0ed95c5aa3ac02a2aadcb4fc","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/systems/transitions/TransitionBoundary.js","title":"render/morphfield/systems/transitions/TransitionBoundary","summary":"Build canonical signatures from the open edges of a transition mesh. Signatures contain complete sorted segment records as well as a compact hash; comparisons therefore never rely on hash equality alone.  World-space quantization makes opposite local face orientations compare identically.","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/transitions/TransitionBoundary.md","moduleTitle":"render/morphfield/systems/transitions/TransitionBoundary","source":"engine/render/morphfield/systems/transitions/TransitionBoundary.js","import":"/engine/render/morphfield/systems/transitions/TransitionBoundary.js","sourceHash":"ce86119135f06a253962865bdb9f88d6f41703bc0ed95c5aa3ac02a2aadcb4fc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/transitions/TransitionBoundary.js#0000:createTransitionBoundarySignatures","exportIndex":0,"name":"createTransitionBoundarySignatures","kind":"function","signature":"createTransitionBoundarySignatures(mesh, options = {})","summary":"Build canonical signatures from the open edges of a transition mesh. Signatures contain complete sorted segment records as well as a compact hash; comparisons therefore never rely on hash equality alone.  World-space quantization makes opposite local face orientations compare identically."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/transitions/TransitionBoundary.md","moduleTitle":"render/morphfield/systems/transitions/TransitionBoundary","source":"engine/render/morphfield/systems/transitions/TransitionBoundary.js","import":"/engine/render/morphfield/systems/transitions/TransitionBoundary.js","sourceHash":"ce86119135f06a253962865bdb9f88d6f41703bc0ed95c5aa3ac02a2aadcb4fc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/transitions/TransitionBoundary.js#0001:compareTransitionBoundarySignatures","exportIndex":1,"name":"compareTransitionBoundarySignatures","kind":"function","signature":"compareTransitionBoundarySignatures(left, right)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/transitions/TransitionBoundary.md","moduleTitle":"render/morphfield/systems/transitions/TransitionBoundary","source":"engine/render/morphfield/systems/transitions/TransitionBoundary.js","import":"/engine/render/morphfield/systems/transitions/TransitionBoundary.js","sourceHash":"ce86119135f06a253962865bdb9f88d6f41703bc0ed95c5aa3ac02a2aadcb4fc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/transitions/TransitionBoundary.js#0002:compareTransitionBoundaries","exportIndex":2,"name":"compareTransitionBoundaries","kind":"function","signature":"compareTransitionBoundaries(left, leftFace, right, rightFace)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/transitions/TransitionBoundary.md","moduleTitle":"render/morphfield/systems/transitions/TransitionBoundary","source":"engine/render/morphfield/systems/transitions/TransitionBoundary.js","import":"/engine/render/morphfield/systems/transitions/TransitionBoundary.js","sourceHash":"ce86119135f06a253962865bdb9f88d6f41703bc0ed95c5aa3ac02a2aadcb4fc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/transitions/TransitionBoundary.js#0003:assertTransitionBoundaryMatch","exportIndex":3,"name":"assertTransitionBoundaryMatch","kind":"function","signature":"assertTransitionBoundaryMatch(left, leftFace, right, rightFace)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/transitions/TransitionBoundary.md","moduleTitle":"render/morphfield/systems/transitions/TransitionBoundary","source":"engine/render/morphfield/systems/transitions/TransitionBoundary.js","import":"/engine/render/morphfield/systems/transitions/TransitionBoundary.js","sourceHash":"ce86119135f06a253962865bdb9f88d6f41703bc0ed95c5aa3ac02a2aadcb4fc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/transitions/TransitionBoundary.js#0004:TRANSITION_BOUNDARY_SCHEMA","exportIndex":4,"name":"TRANSITION_BOUNDARY_SCHEMA","kind":"constant","signature":"TRANSITION_BOUNDARY_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/transitions/TransitionBoundary.md","moduleTitle":"render/morphfield/systems/transitions/TransitionBoundary","source":"engine/render/morphfield/systems/transitions/TransitionBoundary.js","import":"/engine/render/morphfield/systems/transitions/TransitionBoundary.js","sourceHash":"ce86119135f06a253962865bdb9f88d6f41703bc0ed95c5aa3ac02a2aadcb4fc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/transitions/TransitionBoundary.js#0005:TRANSITION_FACE","exportIndex":5,"name":"TRANSITION_FACE","kind":"constant","signature":"TRANSITION_FACE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/transitions/TransitionBoundary.md","moduleTitle":"render/morphfield/systems/transitions/TransitionBoundary","source":"engine/render/morphfield/systems/transitions/TransitionBoundary.js","import":"/engine/render/morphfield/systems/transitions/TransitionBoundary.js","sourceHash":"ce86119135f06a253962865bdb9f88d6f41703bc0ed95c5aa3ac02a2aadcb4fc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/transitions/TransitionBoundary.js#0006:TRANSITION_FACE_ORDER","exportIndex":6,"name":"TRANSITION_FACE_ORDER","kind":"constant","signature":"TRANSITION_FACE_ORDER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/transitions/TransitionCellExtractor.md","moduleTitle":"render/morphfield/systems/transitions/TransitionCellExtractor","source":"engine/render/morphfield/systems/transitions/TransitionCellExtractor.js","import":"/engine/render/morphfield/systems/transitions/TransitionCellExtractor.js","sourceHash":"7564d754a463aa532798fb67b2f684bca3cda6228b6027ecfa6aebcffe7613b3","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/systems/transitions/TransitionCellExtractor.js","title":"render/morphfield/systems/transitions/TransitionCellExtractor","summary":"Extract a deterministic transition slab for one exact-2:1 grid pair.","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/transitions/TransitionCellExtractor.md","moduleTitle":"render/morphfield/systems/transitions/TransitionCellExtractor","source":"engine/render/morphfield/systems/transitions/TransitionCellExtractor.js","import":"/engine/render/morphfield/systems/transitions/TransitionCellExtractor.js","sourceHash":"7564d754a463aa532798fb67b2f684bca3cda6228b6027ecfa6aebcffe7613b3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/transitions/TransitionCellExtractor.js#0000:TransitionExtractionError","exportIndex":0,"name":"TransitionExtractionError","kind":"class","signature":"class TransitionExtractionError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/transitions/TransitionCellExtractor.md","moduleTitle":"render/morphfield/systems/transitions/TransitionCellExtractor","source":"engine/render/morphfield/systems/transitions/TransitionCellExtractor.js","import":"/engine/render/morphfield/systems/transitions/TransitionCellExtractor.js","sourceHash":"7564d754a463aa532798fb67b2f684bca3cda6228b6027ecfa6aebcffe7613b3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/transitions/TransitionCellExtractor.js#0001:TransitionCellExtractor","exportIndex":1,"name":"TransitionCellExtractor","kind":"class","signature":"class TransitionCellExtractor","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/transitions/TransitionCellExtractor.md","moduleTitle":"render/morphfield/systems/transitions/TransitionCellExtractor","source":"engine/render/morphfield/systems/transitions/TransitionCellExtractor.js","import":"/engine/render/morphfield/systems/transitions/TransitionCellExtractor.js","sourceHash":"7564d754a463aa532798fb67b2f684bca3cda6228b6027ecfa6aebcffe7613b3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/transitions/TransitionCellExtractor.js#0002:validateExact2To1GridPair","exportIndex":2,"name":"validateExact2To1GridPair","kind":"function","signature":"validateExact2To1GridPair(fineInput, coarseInput)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/transitions/TransitionCellExtractor.md","moduleTitle":"render/morphfield/systems/transitions/TransitionCellExtractor","source":"engine/render/morphfield/systems/transitions/TransitionCellExtractor.js","import":"/engine/render/morphfield/systems/transitions/TransitionCellExtractor.js","sourceHash":"7564d754a463aa532798fb67b2f684bca3cda6228b6027ecfa6aebcffe7613b3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/transitions/TransitionCellExtractor.js#0003:extractTransitionInterface","exportIndex":3,"name":"extractTransitionInterface","kind":"function","signature":"extractTransitionInterface(input)","summary":"Extract a deterministic transition slab for one exact-2:1 grid pair."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/transitions/TransitionCellExtractor.md","moduleTitle":"render/morphfield/systems/transitions/TransitionCellExtractor","source":"engine/render/morphfield/systems/transitions/TransitionCellExtractor.js","import":"/engine/render/morphfield/systems/transitions/TransitionCellExtractor.js","sourceHash":"7564d754a463aa532798fb67b2f684bca3cda6228b6027ecfa6aebcffe7613b3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/transitions/TransitionCellExtractor.js#0004:TRANSITION_INTERFACE_SCHEMA","exportIndex":4,"name":"TRANSITION_INTERFACE_SCHEMA","kind":"constant","signature":"TRANSITION_INTERFACE_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/transitions/TransitionCellExtractor.md","moduleTitle":"render/morphfield/systems/transitions/TransitionCellExtractor","source":"engine/render/morphfield/systems/transitions/TransitionCellExtractor.js","import":"/engine/render/morphfield/systems/transitions/TransitionCellExtractor.js","sourceHash":"7564d754a463aa532798fb67b2f684bca3cda6228b6027ecfa6aebcffe7613b3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/transitions/TransitionCellExtractor.js#0005:TRANSITION_LIMITS","exportIndex":5,"name":"TRANSITION_LIMITS","kind":"constant","signature":"TRANSITION_LIMITS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/transitions/TransitionValidation.md","moduleTitle":"render/morphfield/systems/transitions/TransitionValidation","source":"engine/render/morphfield/systems/transitions/TransitionValidation.js","import":"/engine/render/morphfield/systems/transitions/TransitionValidation.js","sourceHash":"f4240952d698cc53b3d8ee8d50cf8bb494dd45513c62eeded2122d7ab4f727cb","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/systems/transitions/TransitionValidation.js","title":"render/morphfield/systems/transitions/TransitionValidation","summary":"Validate geometry, local manifoldness, winding, exact-2:1 metadata, and all recorded boundary signatures.  Open edges are valid only on one of the six transition-prism faces.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/transitions/TransitionValidation.md","moduleTitle":"render/morphfield/systems/transitions/TransitionValidation","source":"engine/render/morphfield/systems/transitions/TransitionValidation.js","import":"/engine/render/morphfield/systems/transitions/TransitionValidation.js","sourceHash":"f4240952d698cc53b3d8ee8d50cf8bb494dd45513c62eeded2122d7ab4f727cb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/transitions/TransitionValidation.js#0000:validateTransitionInterface","exportIndex":0,"name":"validateTransitionInterface","kind":"function","signature":"validateTransitionInterface(mesh, options = {})","summary":"Validate geometry, local manifoldness, winding, exact-2:1 metadata, and all recorded boundary signatures.  Open edges are valid only on one of the six transition-prism faces."}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/transitions/index.md","moduleTitle":"render/morphfield/systems/transitions/index","source":"engine/render/morphfield/systems/transitions/index.js","import":"/engine/render/morphfield/systems/transitions/index.js","sourceHash":"6c12fbd148381d590846bcc0c70666f3340bb87dd70193b5b3688b2378a89e60","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/systems/transitions/index.js","title":"render/morphfield/systems/transitions/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/transitions/selfTest.md","moduleTitle":"render/morphfield/systems/transitions/selfTest","source":"engine/render/morphfield/systems/transitions/selfTest.js","import":"/engine/render/morphfield/systems/transitions/selfTest.js","sourceHash":"756a525930d025f1f4daa6e4f3b0d1141dde54fc2342debd095992c60734f4e6","subsystem":"engine","recordType":"api-module","id":"module:engine/render/morphfield/systems/transitions/selfTest.js","title":"render/morphfield/systems/transitions/selfTest","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/morphfield/systems/transitions/selfTest.md","moduleTitle":"render/morphfield/systems/transitions/selfTest","source":"engine/render/morphfield/systems/transitions/selfTest.js","import":"/engine/render/morphfield/systems/transitions/selfTest.js","sourceHash":"756a525930d025f1f4daa6e4f3b0d1141dde54fc2342debd095992c60734f4e6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/morphfield/systems/transitions/selfTest.js#0000:runMorphFieldTransitionSelfTests","exportIndex":0,"name":"runMorphFieldTransitionSelfTests","kind":"function","signature":"runMorphFieldTransitionSelfTests()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/CustomParticleEffect.md","moduleTitle":"render/particles/CustomParticleEffect","source":"engine/render/particles/CustomParticleEffect.js","import":"/engine/render/particles/CustomParticleEffect.js","sourceHash":"dd1cfce2edd82e360cae0c47d839fd4313cd98cd3abb2d6f60370fcaa0beba95","subsystem":"engine","recordType":"api-module","id":"module:engine/render/particles/CustomParticleEffect.js","title":"render/particles/CustomParticleEffect","summary":"CustomParticleEffect.js - Unified Particle Effect System KEY PRINCIPLE: ONE SDF function defines BOTH: 1. Visual rendering (raymarching in fragment shader) 2. Collision detection (compute shader physics) This ensures particle appearance ALWAYS matches collision shape.","exportCount":14}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/CustomParticleEffect.md","moduleTitle":"render/particles/CustomParticleEffect","source":"engine/render/particles/CustomParticleEffect.js","import":"/engine/render/particles/CustomParticleEffect.js","sourceHash":"dd1cfce2edd82e360cae0c47d839fd4313cd98cd3abb2d6f60370fcaa0beba95","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/CustomParticleEffect.js#0000:createCustomEffectId","exportIndex":0,"name":"createCustomEffectId","kind":"function","signature":"createCustomEffectId()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/CustomParticleEffect.md","moduleTitle":"render/particles/CustomParticleEffect","source":"engine/render/particles/CustomParticleEffect.js","import":"/engine/render/particles/CustomParticleEffect.js","sourceHash":"dd1cfce2edd82e360cae0c47d839fd4313cd98cd3abb2d6f60370fcaa0beba95","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/CustomParticleEffect.js#0001:createCustomEffectCloneId","exportIndex":1,"name":"createCustomEffectCloneId","kind":"function","signature":"createCustomEffectCloneId(effectId)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/CustomParticleEffect.md","moduleTitle":"render/particles/CustomParticleEffect","source":"engine/render/particles/CustomParticleEffect.js","import":"/engine/render/particles/CustomParticleEffect.js","sourceHash":"dd1cfce2edd82e360cae0c47d839fd4313cd98cd3abb2d6f60370fcaa0beba95","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/CustomParticleEffect.js#0002:createImportedEffectId","exportIndex":2,"name":"createImportedEffectId","kind":"function","signature":"createImportedEffectId(effectId)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/CustomParticleEffect.md","moduleTitle":"render/particles/CustomParticleEffect","source":"engine/render/particles/CustomParticleEffect.js","import":"/engine/render/particles/CustomParticleEffect.js","sourceHash":"dd1cfce2edd82e360cae0c47d839fd4313cd98cd3abb2d6f60370fcaa0beba95","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/CustomParticleEffect.js#0003:generateVisualShader","exportIndex":3,"name":"generateVisualShader","kind":"function","signature":"generateVisualShader(effect, options = {})","summary":"Generate visual raymarching shader from effect"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/CustomParticleEffect.md","moduleTitle":"render/particles/CustomParticleEffect","source":"engine/render/particles/CustomParticleEffect.js","import":"/engine/render/particles/CustomParticleEffect.js","sourceHash":"dd1cfce2edd82e360cae0c47d839fd4313cd98cd3abb2d6f60370fcaa0beba95","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/CustomParticleEffect.js#0004:generateCollisionShader","exportIndex":4,"name":"generateCollisionShader","kind":"function","signature":"generateCollisionShader(effect)","summary":"Generate collision compute shader from effect"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/CustomParticleEffect.md","moduleTitle":"render/particles/CustomParticleEffect","source":"engine/render/particles/CustomParticleEffect.js","import":"/engine/render/particles/CustomParticleEffect.js","sourceHash":"dd1cfce2edd82e360cae0c47d839fd4313cd98cd3abb2d6f60370fcaa0beba95","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/CustomParticleEffect.js#0005:validateEffect","exportIndex":5,"name":"validateEffect","kind":"function","signature":"validateEffect(effect)","summary":"Validate effect WGSL code"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/CustomParticleEffect.md","moduleTitle":"render/particles/CustomParticleEffect","source":"engine/render/particles/CustomParticleEffect.js","import":"/engine/render/particles/CustomParticleEffect.js","sourceHash":"dd1cfce2edd82e360cae0c47d839fd4313cd98cd3abb2d6f60370fcaa0beba95","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/CustomParticleEffect.js#0006:compileEffect","exportIndex":6,"name":"compileEffect","kind":"function","signature":"async compileEffect(device, effect)","summary":"Compile effect shaders on device (validates WGSL syntax)"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/CustomParticleEffect.md","moduleTitle":"render/particles/CustomParticleEffect","source":"engine/render/particles/CustomParticleEffect.js","import":"/engine/render/particles/CustomParticleEffect.js","sourceHash":"dd1cfce2edd82e360cae0c47d839fd4313cd98cd3abb2d6f60370fcaa0beba95","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/CustomParticleEffect.js#0007:createEffect","exportIndex":7,"name":"createEffect","kind":"function","signature":"createEffect(options = {})","summary":"Create a new custom effect from template"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/CustomParticleEffect.md","moduleTitle":"render/particles/CustomParticleEffect","source":"engine/render/particles/CustomParticleEffect.js","import":"/engine/render/particles/CustomParticleEffect.js","sourceHash":"dd1cfce2edd82e360cae0c47d839fd4313cd98cd3abb2d6f60370fcaa0beba95","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/CustomParticleEffect.js#0008:cloneEffect","exportIndex":8,"name":"cloneEffect","kind":"function","signature":"cloneEffect(effect, newId)","summary":"Clone an existing effect"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/CustomParticleEffect.md","moduleTitle":"render/particles/CustomParticleEffect","source":"engine/render/particles/CustomParticleEffect.js","import":"/engine/render/particles/CustomParticleEffect.js","sourceHash":"dd1cfce2edd82e360cae0c47d839fd4313cd98cd3abb2d6f60370fcaa0beba95","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/CustomParticleEffect.js#0009:getPresets","exportIndex":9,"name":"getPresets","kind":"function","signature":"getPresets()","summary":"Get all built-in presets as array"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/CustomParticleEffect.md","moduleTitle":"render/particles/CustomParticleEffect","source":"engine/render/particles/CustomParticleEffect.js","import":"/engine/render/particles/CustomParticleEffect.js","sourceHash":"dd1cfce2edd82e360cae0c47d839fd4313cd98cd3abb2d6f60370fcaa0beba95","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/CustomParticleEffect.js#0010:getPreset","exportIndex":10,"name":"getPreset","kind":"function","signature":"getPreset(id)","summary":"Get preset by ID"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/CustomParticleEffect.md","moduleTitle":"render/particles/CustomParticleEffect","source":"engine/render/particles/CustomParticleEffect.js","import":"/engine/render/particles/CustomParticleEffect.js","sourceHash":"dd1cfce2edd82e360cae0c47d839fd4313cd98cd3abb2d6f60370fcaa0beba95","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/CustomParticleEffect.js#0011:CUSTOM_PARTICLE_SPARKLE_PCG_HASH_WGSL","exportIndex":11,"name":"CUSTOM_PARTICLE_SPARKLE_PCG_HASH_WGSL","kind":"constant","signature":"CUSTOM_PARTICLE_SPARKLE_PCG_HASH_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/CustomParticleEffect.md","moduleTitle":"render/particles/CustomParticleEffect","source":"engine/render/particles/CustomParticleEffect.js","import":"/engine/render/particles/CustomParticleEffect.js","sourceHash":"dd1cfce2edd82e360cae0c47d839fd4313cd98cd3abb2d6f60370fcaa0beba95","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/CustomParticleEffect.js#0012:SDF_HELPERS_WGSL","exportIndex":12,"name":"SDF_HELPERS_WGSL","kind":"constant","signature":"SDF_HELPERS_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/CustomParticleEffect.md","moduleTitle":"render/particles/CustomParticleEffect","source":"engine/render/particles/CustomParticleEffect.js","import":"/engine/render/particles/CustomParticleEffect.js","sourceHash":"dd1cfce2edd82e360cae0c47d839fd4313cd98cd3abb2d6f60370fcaa0beba95","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/CustomParticleEffect.js#0013:EFFECT_PRESETS","exportIndex":13,"name":"EFFECT_PRESETS","kind":"constant","signature":"EFFECT_PRESETS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/CustomParticleEffectIntegration.md","moduleTitle":"render/particles/CustomParticleEffectIntegration","source":"engine/render/particles/CustomParticleEffectIntegration.js","import":"/engine/render/particles/CustomParticleEffectIntegration.js","sourceHash":"6dd0acdcd19a076833ee7879b27654d6b03f07852f9d6a87d653160358276e39","subsystem":"engine","recordType":"api-module","id":"module:engine/render/particles/CustomParticleEffectIntegration.js","title":"render/particles/CustomParticleEffectIntegration","summary":"CustomParticleEffectIntegration.js - Integration Layer Wires the custom particle effect system into the engine: - Initializes registry on engine startup - Provides utilities for applying effects to emitters - Connects visual effects to collision system","exportCount":8}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/CustomParticleEffectIntegration.md","moduleTitle":"render/particles/CustomParticleEffectIntegration","source":"engine/render/particles/CustomParticleEffectIntegration.js","import":"/engine/render/particles/CustomParticleEffectIntegration.js","sourceHash":"6dd0acdcd19a076833ee7879b27654d6b03f07852f9d6a87d653160358276e39","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/CustomParticleEffectIntegration.js#0000:initCustomParticleEffects","exportIndex":0,"name":"initCustomParticleEffects","kind":"function","signature":"async initCustomParticleEffects(device)","summary":"Initialize the custom particle effect system Call this during engine initialization"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/CustomParticleEffectIntegration.md","moduleTitle":"render/particles/CustomParticleEffectIntegration","source":"engine/render/particles/CustomParticleEffectIntegration.js","import":"/engine/render/particles/CustomParticleEffectIntegration.js","sourceHash":"6dd0acdcd19a076833ee7879b27654d6b03f07852f9d6a87d653160358276e39","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/CustomParticleEffectIntegration.js#0001:getCompiledEffect","exportIndex":1,"name":"getCompiledEffect","kind":"function","signature":"async getCompiledEffect(device, effectId)","summary":"Get compiled effect shaders for an effect ID"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/CustomParticleEffectIntegration.md","moduleTitle":"render/particles/CustomParticleEffectIntegration","source":"engine/render/particles/CustomParticleEffectIntegration.js","import":"/engine/render/particles/CustomParticleEffectIntegration.js","sourceHash":"6dd0acdcd19a076833ee7879b27654d6b03f07852f9d6a87d653160358276e39","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/CustomParticleEffectIntegration.js#0002:getCollisionSDFSystem","exportIndex":2,"name":"getCollisionSDFSystem","kind":"function","signature":"getCollisionSDFSystem()","summary":"Get the collision SDF system"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/CustomParticleEffectIntegration.md","moduleTitle":"render/particles/CustomParticleEffectIntegration","source":"engine/render/particles/CustomParticleEffectIntegration.js","import":"/engine/render/particles/CustomParticleEffectIntegration.js","sourceHash":"6dd0acdcd19a076833ee7879b27654d6b03f07852f9d6a87d653160358276e39","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/CustomParticleEffectIntegration.js#0003:applyEffectToEmitter","exportIndex":3,"name":"applyEffectToEmitter","kind":"function","signature":"applyEffectToEmitter(emitterComponent, effectId, params = null)","summary":"Apply a custom effect to a particle emitter component"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/CustomParticleEffectIntegration.md","moduleTitle":"render/particles/CustomParticleEffectIntegration","source":"engine/render/particles/CustomParticleEffectIntegration.js","import":"/engine/render/particles/CustomParticleEffectIntegration.js","sourceHash":"6dd0acdcd19a076833ee7879b27654d6b03f07852f9d6a87d653160358276e39","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/CustomParticleEffectIntegration.js#0004:getEffectForRendering","exportIndex":4,"name":"getEffectForRendering","kind":"function","signature":"getEffectForRendering(effectId)","summary":"Get effect data for rendering"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/CustomParticleEffectIntegration.md","moduleTitle":"render/particles/CustomParticleEffectIntegration","source":"engine/render/particles/CustomParticleEffectIntegration.js","import":"/engine/render/particles/CustomParticleEffectIntegration.js","sourceHash":"6dd0acdcd19a076833ee7879b27654d6b03f07852f9d6a87d653160358276e39","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/CustomParticleEffectIntegration.js#0005:createEffectParamsData","exportIndex":5,"name":"createEffectParamsData","kind":"function","signature":"createEffectParamsData(emitter)","summary":"Create effect parameters buffer data for GPU Returns a reusable Float32Array - DO NOT modify after passing to GPU"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/CustomParticleEffectIntegration.md","moduleTitle":"render/particles/CustomParticleEffectIntegration","source":"engine/render/particles/CustomParticleEffectIntegration.js","import":"/engine/render/particles/CustomParticleEffectIntegration.js","sourceHash":"6dd0acdcd19a076833ee7879b27654d6b03f07852f9d6a87d653160358276e39","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/CustomParticleEffectIntegration.js#0006:getParticleSDF","exportIndex":6,"name":"getParticleSDF","kind":"function","signature":"getParticleSDF(effectId)","summary":"Get the effective SDF for a particle (for collision queries) Returns a function that evaluates the SDF at a local position"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/CustomParticleEffectIntegration.md","moduleTitle":"render/particles/CustomParticleEffectIntegration","source":"engine/render/particles/CustomParticleEffectIntegration.js","import":"/engine/render/particles/CustomParticleEffectIntegration.js","sourceHash":"6dd0acdcd19a076833ee7879b27654d6b03f07852f9d6a87d653160358276e39","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/CustomParticleEffectIntegration.js#0007:isCustomEffectsInitialized","exportIndex":7,"name":"isCustomEffectsInitialized","kind":"function","signature":"isCustomEffectsInitialized()","summary":"Check if custom effects system is initialized"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleAgeRenderer.md","moduleTitle":"render/particles/ParticleAgeRenderer","source":"engine/render/particles/ParticleAgeRenderer.js","import":"/engine/render/particles/ParticleAgeRenderer.js","sourceHash":"6fde28bc1fa07d51d587a5722effacc7056ecec30aa08c490a4544be24ed41ed","subsystem":"engine","recordType":"api-module","id":"module:engine/render/particles/ParticleAgeRenderer.js","title":"render/particles/ParticleAgeRenderer","summary":"","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleAgeRenderer.md","moduleTitle":"render/particles/ParticleAgeRenderer","source":"engine/render/particles/ParticleAgeRenderer.js","import":"/engine/render/particles/ParticleAgeRenderer.js","sourceHash":"6fde28bc1fa07d51d587a5722effacc7056ecec30aa08c490a4544be24ed41ed","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleAgeRenderer.js#0000:createParticleAgeRenderer","exportIndex":0,"name":"createParticleAgeRenderer","kind":"function","signature":"async createParticleAgeRenderer(options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleAgeRenderer.md","moduleTitle":"render/particles/ParticleAgeRenderer","source":"engine/render/particles/ParticleAgeRenderer.js","import":"/engine/render/particles/ParticleAgeRenderer.js","sourceHash":"6fde28bc1fa07d51d587a5722effacc7056ecec30aa08c490a4544be24ed41ed","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleAgeRenderer.js#0001:createParticleAgeDataBindGroup","exportIndex":1,"name":"createParticleAgeDataBindGroup","kind":"function","signature":"createParticleAgeDataBindGroup(renderer, positionBuffer, metaBuffer, velocityBuffer)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleAgeRenderer.md","moduleTitle":"render/particles/ParticleAgeRenderer","source":"engine/render/particles/ParticleAgeRenderer.js","import":"/engine/render/particles/ParticleAgeRenderer.js","sourceHash":"6fde28bc1fa07d51d587a5722effacc7056ecec30aa08c490a4544be24ed41ed","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleAgeRenderer.js#0002:setParticleAgeParams","exportIndex":2,"name":"setParticleAgeParams","kind":"function","signature":"setParticleAgeParams(renderer, { size = 1, quality = 1.0, lodBias = 1.0, cullThreshold = 0 })","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleAlbedoRenderer.md","moduleTitle":"render/particles/ParticleAlbedoRenderer","source":"engine/render/particles/ParticleAlbedoRenderer.js","import":"/engine/render/particles/ParticleAlbedoRenderer.js","sourceHash":"db404a9004fd4728bc8c66e8b95dbd5ce5caad99d1237a97353f88b2a63fa5b7","subsystem":"engine","recordType":"api-module","id":"module:engine/render/particles/ParticleAlbedoRenderer.js","title":"render/particles/ParticleAlbedoRenderer","summary":"Create particle albedo pass renderer","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleAlbedoRenderer.md","moduleTitle":"render/particles/ParticleAlbedoRenderer","source":"engine/render/particles/ParticleAlbedoRenderer.js","import":"/engine/render/particles/ParticleAlbedoRenderer.js","sourceHash":"db404a9004fd4728bc8c66e8b95dbd5ce5caad99d1237a97353f88b2a63fa5b7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleAlbedoRenderer.js#0000:createParticleAlbedoRenderer","exportIndex":0,"name":"createParticleAlbedoRenderer","kind":"function","signature":"async createParticleAlbedoRenderer(options)","summary":"Create particle albedo pass renderer"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleAlbedoRenderer.md","moduleTitle":"render/particles/ParticleAlbedoRenderer","source":"engine/render/particles/ParticleAlbedoRenderer.js","import":"/engine/render/particles/ParticleAlbedoRenderer.js","sourceHash":"db404a9004fd4728bc8c66e8b95dbd5ce5caad99d1237a97353f88b2a63fa5b7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleAlbedoRenderer.js#0001:createParticleAlbedoDataBindGroup","exportIndex":1,"name":"createParticleAlbedoDataBindGroup","kind":"function","signature":"createParticleAlbedoDataBindGroup(renderer, positionBuffer, metaBuffer, velocityBuffer)","summary":"Create data bind group for albedo pass"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleAlbedoRenderer.md","moduleTitle":"render/particles/ParticleAlbedoRenderer","source":"engine/render/particles/ParticleAlbedoRenderer.js","import":"/engine/render/particles/ParticleAlbedoRenderer.js","sourceHash":"db404a9004fd4728bc8c66e8b95dbd5ce5caad99d1237a97353f88b2a63fa5b7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleAlbedoRenderer.js#0002:setParticleAlbedoParams","exportIndex":2,"name":"setParticleAlbedoParams","kind":"function","signature":"setParticleAlbedoParams(renderer, { size = 1, quality = 1.0, lodBias = 1.0, cullThreshold = 0 })","summary":"Update albedo pass parameters"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleBeamRenderer.md","moduleTitle":"render/particles/ParticleBeamRenderer","source":"engine/render/particles/ParticleBeamRenderer.js","import":"/engine/render/particles/ParticleBeamRenderer.js","sourceHash":"177fd3e2b45bff5e7846b9c9d4bf2a78f055ec7891ec0f2e2e81f48c5bd91d10","subsystem":"engine","recordType":"api-module","id":"module:engine/render/particles/ParticleBeamRenderer.js","title":"render/particles/ParticleBeamRenderer","summary":"ParticleBeamRenderer.js - Beam / Lightning Particle Renderer (GAP 14) Renders connected line segments between sequential particles as thick beams. Supports: - Chain mode: connect particles in sequence (particle 0→1→2→3...) - Source mode: connect all particles to a single source point - Lightning mode: chain + per-segment jitter for electric arcs Each beam segment is a camera-facing quad strip (2 triangles per segment). Width can vary per particle (from meta.w size) and taper at ends. Usage: const beam = await createParticleBeamRenderer(device, { format }); renderBeamParticles(pass, beam, world, { viewProj, instanceCount });","exportCount":8}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleBeamRenderer.md","moduleTitle":"render/particles/ParticleBeamRenderer","source":"engine/render/particles/ParticleBeamRenderer.js","import":"/engine/render/particles/ParticleBeamRenderer.js","sourceHash":"177fd3e2b45bff5e7846b9c9d4bf2a78f055ec7891ec0f2e2e81f48c5bd91d10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleBeamRenderer.js#0000:createParticleBeamRenderer","exportIndex":0,"name":"createParticleBeamRenderer","kind":"function","signature":"async createParticleBeamRenderer(device, options = {})","summary":"Create a particle beam renderer."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleBeamRenderer.md","moduleTitle":"render/particles/ParticleBeamRenderer","source":"engine/render/particles/ParticleBeamRenderer.js","import":"/engine/render/particles/ParticleBeamRenderer.js","sourceHash":"177fd3e2b45bff5e7846b9c9d4bf2a78f055ec7891ec0f2e2e81f48c5bd91d10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleBeamRenderer.js#0001:bindBeamParticleData","exportIndex":1,"name":"bindBeamParticleData","kind":"function","signature":"bindBeamParticleData(renderer, world)","summary":"Bind particle data from a particle world."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleBeamRenderer.md","moduleTitle":"render/particles/ParticleBeamRenderer","source":"engine/render/particles/ParticleBeamRenderer.js","import":"/engine/render/particles/ParticleBeamRenderer.js","sourceHash":"177fd3e2b45bff5e7846b9c9d4bf2a78f055ec7891ec0f2e2e81f48c5bd91d10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleBeamRenderer.js#0002:renderBeamParticles","exportIndex":2,"name":"renderBeamParticles","kind":"function","signature":"renderBeamParticles(pass, renderer, options = {})","summary":"Render beam particles."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleBeamRenderer.md","moduleTitle":"render/particles/ParticleBeamRenderer","source":"engine/render/particles/ParticleBeamRenderer.js","import":"/engine/render/particles/ParticleBeamRenderer.js","sourceHash":"177fd3e2b45bff5e7846b9c9d4bf2a78f055ec7891ec0f2e2e81f48c5bd91d10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleBeamRenderer.js#0003:setBeamParams","exportIndex":3,"name":"setBeamParams","kind":"function","signature":"setBeamParams(renderer, params = {})","summary":"Update beam parameters."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleBeamRenderer.md","moduleTitle":"render/particles/ParticleBeamRenderer","source":"engine/render/particles/ParticleBeamRenderer.js","import":"/engine/render/particles/ParticleBeamRenderer.js","sourceHash":"177fd3e2b45bff5e7846b9c9d4bf2a78f055ec7891ec0f2e2e81f48c5bd91d10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleBeamRenderer.js#0004:destroyParticleBeamRenderer","exportIndex":4,"name":"destroyParticleBeamRenderer","kind":"function","signature":"destroyParticleBeamRenderer(renderer)","summary":"Destroy the beam renderer."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleBeamRenderer.md","moduleTitle":"render/particles/ParticleBeamRenderer","source":"engine/render/particles/ParticleBeamRenderer.js","import":"/engine/render/particles/ParticleBeamRenderer.js","sourceHash":"177fd3e2b45bff5e7846b9c9d4bf2a78f055ec7891ec0f2e2e81f48c5bd91d10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleBeamRenderer.js#0005:BEAM_MODE_CHAIN","exportIndex":5,"name":"BEAM_MODE_CHAIN","kind":"constant","signature":"BEAM_MODE_CHAIN","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleBeamRenderer.md","moduleTitle":"render/particles/ParticleBeamRenderer","source":"engine/render/particles/ParticleBeamRenderer.js","import":"/engine/render/particles/ParticleBeamRenderer.js","sourceHash":"177fd3e2b45bff5e7846b9c9d4bf2a78f055ec7891ec0f2e2e81f48c5bd91d10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleBeamRenderer.js#0006:BEAM_MODE_SOURCE","exportIndex":6,"name":"BEAM_MODE_SOURCE","kind":"constant","signature":"BEAM_MODE_SOURCE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleBeamRenderer.md","moduleTitle":"render/particles/ParticleBeamRenderer","source":"engine/render/particles/ParticleBeamRenderer.js","import":"/engine/render/particles/ParticleBeamRenderer.js","sourceHash":"177fd3e2b45bff5e7846b9c9d4bf2a78f055ec7891ec0f2e2e81f48c5bd91d10","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleBeamRenderer.js#0007:BEAM_MODE_LIGHTNING","exportIndex":7,"name":"BEAM_MODE_LIGHTNING","kind":"constant","signature":"BEAM_MODE_LIGHTNING","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleBillboardRenderer.md","moduleTitle":"render/particles/ParticleBillboardRenderer","source":"engine/render/particles/ParticleBillboardRenderer.js","import":"/engine/render/particles/ParticleBillboardRenderer.js","sourceHash":"5e9913adcf6d458591938ae829fb077d5572899bb243fd68f6f2467f6410a861","subsystem":"engine","recordType":"api-module","id":"module:engine/render/particles/ParticleBillboardRenderer.js","title":"render/particles/ParticleBillboardRenderer","summary":"Creates a particle point renderer (spheres instead of flat billboards). This renders particles as actual points with spherical falloff.","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleBillboardRenderer.md","moduleTitle":"render/particles/ParticleBillboardRenderer","source":"engine/render/particles/ParticleBillboardRenderer.js","import":"/engine/render/particles/ParticleBillboardRenderer.js","sourceHash":"5e9913adcf6d458591938ae829fb077d5572899bb243fd68f6f2467f6410a861","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleBillboardRenderer.js#0000:createParticlePointRenderer","exportIndex":0,"name":"createParticlePointRenderer","kind":"function","signature":"async createParticlePointRenderer(options)","summary":"Creates a particle point renderer (spheres instead of flat billboards). This renders particles as actual points with spherical falloff."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleBillboardRenderer.md","moduleTitle":"render/particles/ParticleBillboardRenderer","source":"engine/render/particles/ParticleBillboardRenderer.js","import":"/engine/render/particles/ParticleBillboardRenderer.js","sourceHash":"5e9913adcf6d458591938ae829fb077d5572899bb243fd68f6f2467f6410a861","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleBillboardRenderer.js#0001:createParticleBillboardRenderer","exportIndex":1,"name":"createParticleBillboardRenderer","kind":"function","signature":"async createParticleBillboardRenderer(options)","summary":"Creates a particle billboard renderer. This is a pure rendering module - it does not own particle simulation."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleBillboardRenderer.md","moduleTitle":"render/particles/ParticleBillboardRenderer","source":"engine/render/particles/ParticleBillboardRenderer.js","import":"/engine/render/particles/ParticleBillboardRenderer.js","sourceHash":"5e9913adcf6d458591938ae829fb077d5572899bb243fd68f6f2467f6410a861","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleBillboardRenderer.js#0002:createParticleBillboardDataBindGroup","exportIndex":2,"name":"createParticleBillboardDataBindGroup","kind":"function","signature":"createParticleBillboardDataBindGroup(renderer, positionBuffer, metaBuffer, velocityBuffer, uvBuffer, albedoTextureView, albedoSampler)","summary":"Creates a data bind group for a specific particle world. Call this once per particle world you want to render."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleBillboardRenderer.md","moduleTitle":"render/particles/ParticleBillboardRenderer","source":"engine/render/particles/ParticleBillboardRenderer.js","import":"/engine/render/particles/ParticleBillboardRenderer.js","sourceHash":"5e9913adcf6d458591938ae829fb077d5572899bb243fd68f6f2467f6410a861","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleBillboardRenderer.js#0003:setParticleBillboardParams","exportIndex":3,"name":"setParticleBillboardParams","kind":"function","signature":"setParticleBillboardParams(renderer, { size = 1, quality = 1.0, lodBias = 1.0, cullThreshold = 0, rotationRate = 0, useColorGradient = false, stretchFactor = 0, facingMode = 0, })","summary":"Updates particle rendering parameters including quality settings."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleBillboardRenderer.md","moduleTitle":"render/particles/ParticleBillboardRenderer","source":"engine/render/particles/ParticleBillboardRenderer.js","import":"/engine/render/particles/ParticleBillboardRenderer.js","sourceHash":"5e9913adcf6d458591938ae829fb077d5572899bb243fd68f6f2467f6410a861","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleBillboardRenderer.js#0004:setParticleBillboardDepth","exportIndex":4,"name":"setParticleBillboardDepth","kind":"function","signature":"setParticleBillboardDepth(renderer, depthTextureView, aliveListBuffer)","summary":"Create or update the scene depth + alive list bind group (GAP 17 + 18). Call this when the depth texture changes (e.g. on resize) or when connecting the alive list from IndirectDispatch for GPU indirect draw."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleBlackbodyRenderer.md","moduleTitle":"render/particles/ParticleBlackbodyRenderer","source":"engine/render/particles/ParticleBlackbodyRenderer.js","import":"/engine/render/particles/ParticleBlackbodyRenderer.js","sourceHash":"40c5027bab6af922823b77aa23eebd9c776d2b590f5a6395f4609b476ebcc253","subsystem":"engine","recordType":"api-module","id":"module:engine/render/particles/ParticleBlackbodyRenderer.js","title":"render/particles/ParticleBlackbodyRenderer","summary":"ParticleBlackbodyRenderer.js - Blackbody Radiation Renderer (GAP 39) Creates and manages the 1D blackbody LUT texture. Provides bind group for particle fragment shaders to sample temperature → color. Integrates with existing billboard and SDF renderers. Usage: const bb = createBlackbodySystem(device); const bindGroup = getBlackbodyBindGroup(bb); // Set as additional bind group in particle render pass","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleBlackbodyRenderer.md","moduleTitle":"render/particles/ParticleBlackbodyRenderer","source":"engine/render/particles/ParticleBlackbodyRenderer.js","import":"/engine/render/particles/ParticleBlackbodyRenderer.js","sourceHash":"40c5027bab6af922823b77aa23eebd9c776d2b590f5a6395f4609b476ebcc253","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleBlackbodyRenderer.js#0000:createBlackbodySystem","exportIndex":0,"name":"createBlackbodySystem","kind":"function","signature":"createBlackbodySystem(device, options = {})","summary":"Create the blackbody rendering system with LUT texture."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleBlackbodyRenderer.md","moduleTitle":"render/particles/ParticleBlackbodyRenderer","source":"engine/render/particles/ParticleBlackbodyRenderer.js","import":"/engine/render/particles/ParticleBlackbodyRenderer.js","sourceHash":"40c5027bab6af922823b77aa23eebd9c776d2b590f5a6395f4609b476ebcc253","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleBlackbodyRenderer.js#0001:createBlackbodyBindGroupLayout","exportIndex":1,"name":"createBlackbodyBindGroupLayout","kind":"function","signature":"createBlackbodyBindGroupLayout(device)","summary":"Create a bind group layout for blackbody resources. Typically bound as an additional group in particle render pipelines."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleBlackbodyRenderer.md","moduleTitle":"render/particles/ParticleBlackbodyRenderer","source":"engine/render/particles/ParticleBlackbodyRenderer.js","import":"/engine/render/particles/ParticleBlackbodyRenderer.js","sourceHash":"40c5027bab6af922823b77aa23eebd9c776d2b590f5a6395f4609b476ebcc253","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleBlackbodyRenderer.js#0002:getBlackbodyBindGroup","exportIndex":2,"name":"getBlackbodyBindGroup","kind":"function","signature":"getBlackbodyBindGroup(system, layout)","summary":"Create the bind group for blackbody resources."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleBlackbodyRenderer.md","moduleTitle":"render/particles/ParticleBlackbodyRenderer","source":"engine/render/particles/ParticleBlackbodyRenderer.js","import":"/engine/render/particles/ParticleBlackbodyRenderer.js","sourceHash":"40c5027bab6af922823b77aa23eebd9c776d2b590f5a6395f4609b476ebcc253","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleBlackbodyRenderer.js#0003:setBlackbodyEmission","exportIndex":3,"name":"setBlackbodyEmission","kind":"function","signature":"setBlackbodyEmission(system, strength)","summary":"Update emission strength at runtime."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleBlackbodyRenderer.md","moduleTitle":"render/particles/ParticleBlackbodyRenderer","source":"engine/render/particles/ParticleBlackbodyRenderer.js","import":"/engine/render/particles/ParticleBlackbodyRenderer.js","sourceHash":"40c5027bab6af922823b77aa23eebd9c776d2b590f5a6395f4609b476ebcc253","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleBlackbodyRenderer.js#0004:destroyBlackbodySystem","exportIndex":4,"name":"destroyBlackbodySystem","kind":"function","signature":"destroyBlackbodySystem(system)","summary":"Destroy."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleBondRenderer.md","moduleTitle":"render/particles/ParticleBondRenderer","source":"engine/render/particles/ParticleBondRenderer.js","import":"/engine/render/particles/ParticleBondRenderer.js","sourceHash":"b291e93541019f010779b60822f481c29004e6a2bd655deed4f1cfbad7a451b7","subsystem":"engine","recordType":"api-module","id":"module:engine/render/particles/ParticleBondRenderer.js","title":"render/particles/ParticleBondRenderer","summary":"ParticleBondRenderer.js - Bond Line / Stick Renderer (GAP 41) Renders molecular bonds as camera-facing quads between bonded particle pairs. Reads a bond buffer (vec4<u32> per bond: particleA, particleB, bondType, bondOrder). Color blends between element CPK colors at each endpoint. Supports covalent (solid), ionic (dashed), metallic (thick), hydrogen (dotted). Usage: const br = createBondRenderer(device, format); initBondRendererBindGroups(br, device, posBuffer, velBuffer, bondBuffer, colorLutBuffer, elementBuffer); uploadBonds(br, device, bondArray); renderBonds(pass, br, viewProj, cameraPos, viewRight, viewUp, bondCount);","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleBondRenderer.md","moduleTitle":"render/particles/ParticleBondRenderer","source":"engine/render/particles/ParticleBondRenderer.js","import":"/engine/render/particles/ParticleBondRenderer.js","sourceHash":"b291e93541019f010779b60822f481c29004e6a2bd655deed4f1cfbad7a451b7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleBondRenderer.js#0000:createBondRenderer","exportIndex":0,"name":"createBondRenderer","kind":"function","signature":"createBondRenderer(device, format)","summary":"Create the bond renderer."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleBondRenderer.md","moduleTitle":"render/particles/ParticleBondRenderer","source":"engine/render/particles/ParticleBondRenderer.js","import":"/engine/render/particles/ParticleBondRenderer.js","sourceHash":"b291e93541019f010779b60822f481c29004e6a2bd655deed4f1cfbad7a451b7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleBondRenderer.js#0001:initBondRendererBindGroups","exportIndex":1,"name":"initBondRendererBindGroups","kind":"function","signature":"initBondRendererBindGroups(renderer, device, positionBuffer, velocityBuffer, metaBuffer, thermalBuffer)","summary":"Initialize bind groups."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleBondRenderer.md","moduleTitle":"render/particles/ParticleBondRenderer","source":"engine/render/particles/ParticleBondRenderer.js","import":"/engine/render/particles/ParticleBondRenderer.js","sourceHash":"b291e93541019f010779b60822f481c29004e6a2bd655deed4f1cfbad7a451b7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleBondRenderer.js#0002:uploadBonds","exportIndex":2,"name":"uploadBonds","kind":"function","signature":"uploadBonds(renderer, device, bondData, bondCount)","summary":"Upload bond data from CPU."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleBondRenderer.md","moduleTitle":"render/particles/ParticleBondRenderer","source":"engine/render/particles/ParticleBondRenderer.js","import":"/engine/render/particles/ParticleBondRenderer.js","sourceHash":"b291e93541019f010779b60822f481c29004e6a2bd655deed4f1cfbad7a451b7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleBondRenderer.js#0003:renderBonds","exportIndex":3,"name":"renderBonds","kind":"function","signature":"renderBonds(pass, renderer, viewProj, cameraPos, viewRight, viewUp)","summary":"Render bonds in the given render pass."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleBondRenderer.md","moduleTitle":"render/particles/ParticleBondRenderer","source":"engine/render/particles/ParticleBondRenderer.js","import":"/engine/render/particles/ParticleBondRenderer.js","sourceHash":"b291e93541019f010779b60822f481c29004e6a2bd655deed4f1cfbad7a451b7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleBondRenderer.js#0004:destroyBondRenderer","exportIndex":4,"name":"destroyBondRenderer","kind":"function","signature":"destroyBondRenderer(renderer)","summary":"Destroy."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleCollisionSDF.md","moduleTitle":"render/particles/ParticleCollisionSDF","source":"engine/render/particles/ParticleCollisionSDF.js","import":"/engine/render/particles/ParticleCollisionSDF.js","sourceHash":"f75a833456fa3eb3c1212bc0608d0f3578d1d7b0d482ca640418d7e8ada3c659","subsystem":"engine","recordType":"api-module","id":"module:engine/render/particles/ParticleCollisionSDF.js","title":"render/particles/ParticleCollisionSDF","summary":"ParticleCollisionSDF.js - Custom SDF Collision Integration Integrates custom particle effect SDFs into the collision system. The same SDF code used for visual rendering is used for collision detection. This module: 1. Generates collision compute shaders with custom SDFs 2. Manages effect-to-index mapping for GPU dispatch 3. Provides collision evaluation utilities","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleCollisionSDF.md","moduleTitle":"render/particles/ParticleCollisionSDF","source":"engine/render/particles/ParticleCollisionSDF.js","import":"/engine/render/particles/ParticleCollisionSDF.js","sourceHash":"f75a833456fa3eb3c1212bc0608d0f3578d1d7b0d482ca640418d7e8ada3c659","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleCollisionSDF.js#0000:ParticleCollisionSDFSystem","exportIndex":0,"name":"ParticleCollisionSDFSystem","kind":"class","signature":"class ParticleCollisionSDFSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleCollisionSDF.md","moduleTitle":"render/particles/ParticleCollisionSDF","source":"engine/render/particles/ParticleCollisionSDF.js","import":"/engine/render/particles/ParticleCollisionSDF.js","sourceHash":"f75a833456fa3eb3c1212bc0608d0f3578d1d7b0d482ca640418d7e8ada3c659","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleCollisionSDF.js#0001:registerEffectForCollision","exportIndex":1,"name":"registerEffectForCollision","kind":"function","signature":"registerEffectForCollision(effectId)","summary":"Register an effect for collision (assigns an index)"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleCollisionSDF.md","moduleTitle":"render/particles/ParticleCollisionSDF","source":"engine/render/particles/ParticleCollisionSDF.js","import":"/engine/render/particles/ParticleCollisionSDF.js","sourceHash":"f75a833456fa3eb3c1212bc0608d0f3578d1d7b0d482ca640418d7e8ada3c659","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleCollisionSDF.js#0002:getEffectIndex","exportIndex":2,"name":"getEffectIndex","kind":"function","signature":"getEffectIndex(effectId)","summary":"Get effect index (0 if not registered)"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleCollisionSDF.md","moduleTitle":"render/particles/ParticleCollisionSDF","source":"engine/render/particles/ParticleCollisionSDF.js","import":"/engine/render/particles/ParticleCollisionSDF.js","sourceHash":"f75a833456fa3eb3c1212bc0608d0f3578d1d7b0d482ca640418d7e8ada3c659","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleCollisionSDF.js#0003:getEffectByIndex","exportIndex":3,"name":"getEffectByIndex","kind":"function","signature":"getEffectByIndex(index)","summary":"Get effect by index"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleCollisionSDF.md","moduleTitle":"render/particles/ParticleCollisionSDF","source":"engine/render/particles/ParticleCollisionSDF.js","import":"/engine/render/particles/ParticleCollisionSDF.js","sourceHash":"f75a833456fa3eb3c1212bc0608d0f3578d1d7b0d482ca640418d7e8ada3c659","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleCollisionSDF.js#0004:generateMultiEffectCollisionShader","exportIndex":4,"name":"generateMultiEffectCollisionShader","kind":"function","signature":"generateMultiEffectCollisionShader(registeredEffects)","summary":"Generate the multi-effect collision shader This shader supports switching between different SDFs based on effectId"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleCollisionSDF.md","moduleTitle":"render/particles/ParticleCollisionSDF","source":"engine/render/particles/ParticleCollisionSDF.js","import":"/engine/render/particles/ParticleCollisionSDF.js","sourceHash":"f75a833456fa3eb3c1212bc0608d0f3578d1d7b0d482ca640418d7e8ada3c659","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleCollisionSDF.js#0005:createCollisionPipeline","exportIndex":5,"name":"createCollisionPipeline","kind":"function","signature":"createCollisionPipeline(device, options = {})","summary":"Create collision compute pipeline with custom SDFs"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleCollisionSDF.md","moduleTitle":"render/particles/ParticleCollisionSDF","source":"engine/render/particles/ParticleCollisionSDF.js","import":"/engine/render/particles/ParticleCollisionSDF.js","sourceHash":"f75a833456fa3eb3c1212bc0608d0f3578d1d7b0d482ca640418d7e8ada3c659","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleCollisionSDF.js#0006:createParticleCollisionSDFSystem","exportIndex":6,"name":"createParticleCollisionSDFSystem","kind":"function","signature":"createParticleCollisionSDFSystem(device)","summary":"Create a particle collision SDF system"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleDecalRenderer.md","moduleTitle":"render/particles/ParticleDecalRenderer","source":"engine/render/particles/ParticleDecalRenderer.js","import":"/engine/render/particles/ParticleDecalRenderer.js","sourceHash":"4b5e0f5b28037ab94357b71933213e3a091db8e16f3de1e699d6a819a19a5d7a","subsystem":"engine","recordType":"api-module","id":"module:engine/render/particles/ParticleDecalRenderer.js","title":"render/particles/ParticleDecalRenderer","summary":"ParticleDecalRenderer.js - Render projected decals from particle collisions Renders decal quads at particle impact points (scorch marks, frost patches, wet splats). Reads from ParticleDecalSpawner's CPU-side pool each frame. Pipeline: 1. ParticleDecalSpawner (sim/) creates decal descriptors from collision events 2. This renderer uploads active decals to a GPU storage buffer 3. Instanced draw: each decal = screen-aligned quad projected onto surface 4. Blends onto scene with src-alpha / one-minus-src-alpha Decal data per instance (12 floats): [posX, posY, posZ, size, normX, normY, normZ, age/lifetime, r, g, b, a]","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleDecalRenderer.md","moduleTitle":"render/particles/ParticleDecalRenderer","source":"engine/render/particles/ParticleDecalRenderer.js","import":"/engine/render/particles/ParticleDecalRenderer.js","sourceHash":"4b5e0f5b28037ab94357b71933213e3a091db8e16f3de1e699d6a819a19a5d7a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleDecalRenderer.js#0000:createDecalRenderer","exportIndex":0,"name":"createDecalRenderer","kind":"function","signature":"createDecalRenderer(device, format)","summary":"Create a decal rendering system"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleDecalRenderer.md","moduleTitle":"render/particles/ParticleDecalRenderer","source":"engine/render/particles/ParticleDecalRenderer.js","import":"/engine/render/particles/ParticleDecalRenderer.js","sourceHash":"4b5e0f5b28037ab94357b71933213e3a091db8e16f3de1e699d6a819a19a5d7a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleDecalRenderer.js#0001:uploadDecals","exportIndex":1,"name":"uploadDecals","kind":"function","signature":"uploadDecals(renderer, decals)","summary":"Upload active decals from the CPU-side spawner pool to GPU"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleDecalRenderer.md","moduleTitle":"render/particles/ParticleDecalRenderer","source":"engine/render/particles/ParticleDecalRenderer.js","import":"/engine/render/particles/ParticleDecalRenderer.js","sourceHash":"4b5e0f5b28037ab94357b71933213e3a091db8e16f3de1e699d6a819a19a5d7a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleDecalRenderer.js#0002:renderDecals","exportIndex":2,"name":"renderDecals","kind":"function","signature":"renderDecals(pass, renderer, frameData)","summary":"Render decals into the current render pass"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleDecalRenderer.md","moduleTitle":"render/particles/ParticleDecalRenderer","source":"engine/render/particles/ParticleDecalRenderer.js","import":"/engine/render/particles/ParticleDecalRenderer.js","sourceHash":"4b5e0f5b28037ab94357b71933213e3a091db8e16f3de1e699d6a819a19a5d7a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleDecalRenderer.js#0003:destroyDecalRenderer","exportIndex":3,"name":"destroyDecalRenderer","kind":"function","signature":"destroyDecalRenderer(renderer)","summary":"Destroy decal renderer resources"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleDepthRenderer.md","moduleTitle":"render/particles/ParticleDepthRenderer","source":"engine/render/particles/ParticleDepthRenderer.js","import":"/engine/render/particles/ParticleDepthRenderer.js","sourceHash":"bf78f8ccc20f2dff968ffc7f5f93d81803a8b0ecd6a7fcd5044cd4da006388a3","subsystem":"engine","recordType":"api-module","id":"module:engine/render/particles/ParticleDepthRenderer.js","title":"render/particles/ParticleDepthRenderer","summary":"Create particle depth pass renderer","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleDepthRenderer.md","moduleTitle":"render/particles/ParticleDepthRenderer","source":"engine/render/particles/ParticleDepthRenderer.js","import":"/engine/render/particles/ParticleDepthRenderer.js","sourceHash":"bf78f8ccc20f2dff968ffc7f5f93d81803a8b0ecd6a7fcd5044cd4da006388a3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleDepthRenderer.js#0000:createParticleDepthRenderer","exportIndex":0,"name":"createParticleDepthRenderer","kind":"function","signature":"async createParticleDepthRenderer(options)","summary":"Create particle depth pass renderer"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleDepthRenderer.md","moduleTitle":"render/particles/ParticleDepthRenderer","source":"engine/render/particles/ParticleDepthRenderer.js","import":"/engine/render/particles/ParticleDepthRenderer.js","sourceHash":"bf78f8ccc20f2dff968ffc7f5f93d81803a8b0ecd6a7fcd5044cd4da006388a3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleDepthRenderer.js#0001:createParticleDepthDataBindGroup","exportIndex":1,"name":"createParticleDepthDataBindGroup","kind":"function","signature":"createParticleDepthDataBindGroup(renderer, positionBuffer, metaBuffer, velocityBuffer)","summary":"Create data bind group for depth pass"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleDepthRenderer.md","moduleTitle":"render/particles/ParticleDepthRenderer","source":"engine/render/particles/ParticleDepthRenderer.js","import":"/engine/render/particles/ParticleDepthRenderer.js","sourceHash":"bf78f8ccc20f2dff968ffc7f5f93d81803a8b0ecd6a7fcd5044cd4da006388a3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleDepthRenderer.js#0002:setParticleDepthParams","exportIndex":2,"name":"setParticleDepthParams","kind":"function","signature":"setParticleDepthParams(renderer, { size = 1, quality = 1.0, lodBias = 1.0, cullThreshold = 0 })","summary":"Update depth pass parameters"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleDistortionRenderer.md","moduleTitle":"render/particles/ParticleDistortionRenderer","source":"engine/render/particles/ParticleDistortionRenderer.js","import":"/engine/render/particles/ParticleDistortionRenderer.js","sourceHash":"8a637fb3f6a3bbc3b227bf260e200dec5be12b634bce71861a80627da112f125","subsystem":"engine","recordType":"api-module","id":"module:engine/render/particles/ParticleDistortionRenderer.js","title":"render/particles/ParticleDistortionRenderer","summary":"ParticleDistortionRenderer.js - Heat haze / distortion from particles PopcornFX/Niagara parity: particles can distort the scene behind them. Hot particles, explosions, and magic effects create screen-space UV offsets. Pipeline: 1. Render distortion-emitting particles to an RG16float texture (UV offset) 2. Composite pass samples scene color with distorted UVs The distortion texture stores per-pixel UV offset (R=deltaU, G=deltaV). Particles contribute based on temperature/emissive strength.","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleDistortionRenderer.md","moduleTitle":"render/particles/ParticleDistortionRenderer","source":"engine/render/particles/ParticleDistortionRenderer.js","import":"/engine/render/particles/ParticleDistortionRenderer.js","sourceHash":"8a637fb3f6a3bbc3b227bf260e200dec5be12b634bce71861a80627da112f125","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleDistortionRenderer.js#0000:createParticleDistortionRenderer","exportIndex":0,"name":"createParticleDistortionRenderer","kind":"function","signature":"createParticleDistortionRenderer(device, sceneFormat, width, height)","summary":"Create the particle distortion rendering system"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleDistortionRenderer.md","moduleTitle":"render/particles/ParticleDistortionRenderer","source":"engine/render/particles/ParticleDistortionRenderer.js","import":"/engine/render/particles/ParticleDistortionRenderer.js","sourceHash":"8a637fb3f6a3bbc3b227bf260e200dec5be12b634bce71861a80627da112f125","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleDistortionRenderer.js#0001:initDistortionBindGroups","exportIndex":1,"name":"initDistortionBindGroups","kind":"function","signature":"initDistortionBindGroups(renderer, particleWorld, sceneColorView)","summary":"Create bind groups for the distortion pass (call once when particle buffers are ready)"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleDistortionRenderer.md","moduleTitle":"render/particles/ParticleDistortionRenderer","source":"engine/render/particles/ParticleDistortionRenderer.js","import":"/engine/render/particles/ParticleDistortionRenderer.js","sourceHash":"8a637fb3f6a3bbc3b227bf260e200dec5be12b634bce71861a80627da112f125","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleDistortionRenderer.js#0002:setDistortionParams","exportIndex":2,"name":"setDistortionParams","kind":"function","signature":"setDistortionParams(renderer, params = {})","summary":"Update distortion params"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleDistortionRenderer.md","moduleTitle":"render/particles/ParticleDistortionRenderer","source":"engine/render/particles/ParticleDistortionRenderer.js","import":"/engine/render/particles/ParticleDistortionRenderer.js","sourceHash":"8a637fb3f6a3bbc3b227bf260e200dec5be12b634bce71861a80627da112f125","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleDistortionRenderer.js#0003:renderDistortionPass","exportIndex":3,"name":"renderDistortionPass","kind":"function","signature":"renderDistortionPass(encoder, renderer, instanceCount, frameData)","summary":"Render distortion pass: accumulate UV offsets from hot particles"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleDistortionRenderer.md","moduleTitle":"render/particles/ParticleDistortionRenderer","source":"engine/render/particles/ParticleDistortionRenderer.js","import":"/engine/render/particles/ParticleDistortionRenderer.js","sourceHash":"8a637fb3f6a3bbc3b227bf260e200dec5be12b634bce71861a80627da112f125","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleDistortionRenderer.js#0004:compositeDistortion","exportIndex":4,"name":"compositeDistortion","kind":"function","signature":"compositeDistortion(pass, renderer)","summary":"Composite distortion onto scene (fullscreen triangle)"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleDistortionRenderer.md","moduleTitle":"render/particles/ParticleDistortionRenderer","source":"engine/render/particles/ParticleDistortionRenderer.js","import":"/engine/render/particles/ParticleDistortionRenderer.js","sourceHash":"8a637fb3f6a3bbc3b227bf260e200dec5be12b634bce71861a80627da112f125","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleDistortionRenderer.js#0005:resizeDistortionRenderer","exportIndex":5,"name":"resizeDistortionRenderer","kind":"function","signature":"resizeDistortionRenderer(renderer, width, height)","summary":"Resize distortion texture when viewport changes"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleDistortionRenderer.md","moduleTitle":"render/particles/ParticleDistortionRenderer","source":"engine/render/particles/ParticleDistortionRenderer.js","import":"/engine/render/particles/ParticleDistortionRenderer.js","sourceHash":"8a637fb3f6a3bbc3b227bf260e200dec5be12b634bce71861a80627da112f125","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleDistortionRenderer.js#0006:destroyDistortionRenderer","exportIndex":6,"name":"destroyDistortionRenderer","kind":"function","signature":"destroyDistortionRenderer(renderer)","summary":"Destroy distortion renderer resources"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleEffectRegistry.md","moduleTitle":"render/particles/ParticleEffectRegistry","source":"engine/render/particles/ParticleEffectRegistry.js","import":"/engine/render/particles/ParticleEffectRegistry.js","sourceHash":"cf9ac56edbe03f6cb30f7890c30def5fc063278d255ee2767963db86907536b2","subsystem":"engine","recordType":"api-module","id":"module:engine/render/particles/ParticleEffectRegistry.js","title":"render/particles/ParticleEffectRegistry","summary":"ParticleEffectRegistry.js - Custom Particle Effect Storage & Management Features: - IndexedDB persistence across sessions - Import/export as JSON files - Built-in presets always available - Version tracking for effect updates - Event-based notifications for changes","exportCount":10}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleEffectRegistry.md","moduleTitle":"render/particles/ParticleEffectRegistry","source":"engine/render/particles/ParticleEffectRegistry.js","import":"/engine/render/particles/ParticleEffectRegistry.js","sourceHash":"cf9ac56edbe03f6cb30f7890c30def5fc063278d255ee2767963db86907536b2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleEffectRegistry.js#0000:ParticleEffectRegistry","exportIndex":0,"name":"ParticleEffectRegistry","kind":"class","signature":"class ParticleEffectRegistry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleEffectRegistry.md","moduleTitle":"render/particles/ParticleEffectRegistry","source":"engine/render/particles/ParticleEffectRegistry.js","import":"/engine/render/particles/ParticleEffectRegistry.js","sourceHash":"cf9ac56edbe03f6cb30f7890c30def5fc063278d255ee2767963db86907536b2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleEffectRegistry.js#0001:particleEffectCurrentId","exportIndex":1,"name":"particleEffectCurrentId","kind":"function","signature":"particleEffectCurrentId(effectId)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleEffectRegistry.md","moduleTitle":"render/particles/ParticleEffectRegistry","source":"engine/render/particles/ParticleEffectRegistry.js","import":"/engine/render/particles/ParticleEffectRegistry.js","sourceHash":"cf9ac56edbe03f6cb30f7890c30def5fc063278d255ee2767963db86907536b2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleEffectRegistry.js#0002:prepareParticleEffectRecord","exportIndex":2,"name":"prepareParticleEffectRecord","kind":"function","signature":"prepareParticleEffectRecord(record)","summary":"Validate one exact v1/v2 record; no lossy upcasts are attempted."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleEffectRegistry.md","moduleTitle":"render/particles/ParticleEffectRegistry","source":"engine/render/particles/ParticleEffectRegistry.js","import":"/engine/render/particles/ParticleEffectRegistry.js","sourceHash":"cf9ac56edbe03f6cb30f7890c30def5fc063278d255ee2767963db86907536b2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleEffectRegistry.js#0003:getParticleEffectRegistry","exportIndex":3,"name":"getParticleEffectRegistry","kind":"function","signature":"getParticleEffectRegistry()","summary":"Get the global registry instance"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleEffectRegistry.md","moduleTitle":"render/particles/ParticleEffectRegistry","source":"engine/render/particles/ParticleEffectRegistry.js","import":"/engine/render/particles/ParticleEffectRegistry.js","sourceHash":"cf9ac56edbe03f6cb30f7890c30def5fc063278d255ee2767963db86907536b2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleEffectRegistry.js#0004:initParticleEffectRegistry","exportIndex":4,"name":"initParticleEffectRegistry","kind":"function","signature":"async initParticleEffectRegistry()","summary":"Initialize the global registry"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleEffectRegistry.md","moduleTitle":"render/particles/ParticleEffectRegistry","source":"engine/render/particles/ParticleEffectRegistry.js","import":"/engine/render/particles/ParticleEffectRegistry.js","sourceHash":"cf9ac56edbe03f6cb30f7890c30def5fc063278d255ee2767963db86907536b2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleEffectRegistry.js#0005:PARTICLE_EFFECT_DB_NAME","exportIndex":5,"name":"PARTICLE_EFFECT_DB_NAME","kind":"constant","signature":"PARTICLE_EFFECT_DB_NAME","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleEffectRegistry.md","moduleTitle":"render/particles/ParticleEffectRegistry","source":"engine/render/particles/ParticleEffectRegistry.js","import":"/engine/render/particles/ParticleEffectRegistry.js","sourceHash":"cf9ac56edbe03f6cb30f7890c30def5fc063278d255ee2767963db86907536b2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleEffectRegistry.js#0006:PARTICLE_EFFECT_STORE_NAME","exportIndex":6,"name":"PARTICLE_EFFECT_STORE_NAME","kind":"constant","signature":"PARTICLE_EFFECT_STORE_NAME","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleEffectRegistry.md","moduleTitle":"render/particles/ParticleEffectRegistry","source":"engine/render/particles/ParticleEffectRegistry.js","import":"/engine/render/particles/ParticleEffectRegistry.js","sourceHash":"cf9ac56edbe03f6cb30f7890c30def5fc063278d255ee2767963db86907536b2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleEffectRegistry.js#0007:PARTICLE_EFFECT_RECORD_SCHEMA","exportIndex":7,"name":"PARTICLE_EFFECT_RECORD_SCHEMA","kind":"constant","signature":"PARTICLE_EFFECT_RECORD_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleEffectRegistry.md","moduleTitle":"render/particles/ParticleEffectRegistry","source":"engine/render/particles/ParticleEffectRegistry.js","import":"/engine/render/particles/ParticleEffectRegistry.js","sourceHash":"cf9ac56edbe03f6cb30f7890c30def5fc063278d255ee2767963db86907536b2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleEffectRegistry.js#0008:PARTICLE_EFFECT_RECORD_VERSION","exportIndex":8,"name":"PARTICLE_EFFECT_RECORD_VERSION","kind":"constant","signature":"PARTICLE_EFFECT_RECORD_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleEffectRegistry.md","moduleTitle":"render/particles/ParticleEffectRegistry","source":"engine/render/particles/ParticleEffectRegistry.js","import":"/engine/render/particles/ParticleEffectRegistry.js","sourceHash":"cf9ac56edbe03f6cb30f7890c30def5fc063278d255ee2767963db86907536b2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleEffectRegistry.js#0009:PARTICLE_EFFECT_RECORD_LIMITS","exportIndex":9,"name":"PARTICLE_EFFECT_RECORD_LIMITS","kind":"constant","signature":"PARTICLE_EFFECT_RECORD_LIMITS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleEmissiveRenderer.md","moduleTitle":"render/particles/ParticleEmissiveRenderer","source":"engine/render/particles/ParticleEmissiveRenderer.js","import":"/engine/render/particles/ParticleEmissiveRenderer.js","sourceHash":"b8d39e89d64f5a0c37669819e5f9c40cfad239e2f10598588db043c39b6985c3","subsystem":"engine","recordType":"api-module","id":"module:engine/render/particles/ParticleEmissiveRenderer.js","title":"render/particles/ParticleEmissiveRenderer","summary":"","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleEmissiveRenderer.md","moduleTitle":"render/particles/ParticleEmissiveRenderer","source":"engine/render/particles/ParticleEmissiveRenderer.js","import":"/engine/render/particles/ParticleEmissiveRenderer.js","sourceHash":"b8d39e89d64f5a0c37669819e5f9c40cfad239e2f10598588db043c39b6985c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleEmissiveRenderer.js#0000:createParticleEmissiveRenderer","exportIndex":0,"name":"createParticleEmissiveRenderer","kind":"function","signature":"async createParticleEmissiveRenderer(options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleEmissiveRenderer.md","moduleTitle":"render/particles/ParticleEmissiveRenderer","source":"engine/render/particles/ParticleEmissiveRenderer.js","import":"/engine/render/particles/ParticleEmissiveRenderer.js","sourceHash":"b8d39e89d64f5a0c37669819e5f9c40cfad239e2f10598588db043c39b6985c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleEmissiveRenderer.js#0001:createParticleEmissiveDataBindGroup","exportIndex":1,"name":"createParticleEmissiveDataBindGroup","kind":"function","signature":"createParticleEmissiveDataBindGroup(renderer, positionBuffer, metaBuffer, velocityBuffer)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleEmissiveRenderer.md","moduleTitle":"render/particles/ParticleEmissiveRenderer","source":"engine/render/particles/ParticleEmissiveRenderer.js","import":"/engine/render/particles/ParticleEmissiveRenderer.js","sourceHash":"b8d39e89d64f5a0c37669819e5f9c40cfad239e2f10598588db043c39b6985c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleEmissiveRenderer.js#0002:setParticleEmissiveParams","exportIndex":2,"name":"setParticleEmissiveParams","kind":"function","signature":"setParticleEmissiveParams(renderer, { size = 1, quality = 1.0, lodBias = 1.0, cullThreshold = 0 })","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleFieldRenderer.md","moduleTitle":"render/particles/ParticleFieldRenderer","source":"engine/render/particles/ParticleFieldRenderer.js","import":"/engine/render/particles/ParticleFieldRenderer.js","sourceHash":"417b126cb5d892a66c00d6b174751c8753f61846ef4f1594c7f131512b99d087","subsystem":"engine","recordType":"api-module","id":"module:engine/render/particles/ParticleFieldRenderer.js","title":"render/particles/ParticleFieldRenderer","summary":"ParticleFieldRenderer.js - Electromagnetic Field Visualizer (GAP 42) Renders electric/magnetic field lines and force arrows around charged particles. Computes field probe grid on CPU from charged particle positions, uploads to GPU. Supports arrow glyphs showing force direction/magnitude. Color: red=positive/repulsion, blue=negative/attraction, intensity=magnitude. Usage: const fr = createFieldRenderer(device, format); updateFieldProbes(fr, device, chargedParticles, probeGrid); renderFieldArrows(pass, fr, viewProj, cameraPos, viewRight, viewUp);","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleFieldRenderer.md","moduleTitle":"render/particles/ParticleFieldRenderer","source":"engine/render/particles/ParticleFieldRenderer.js","import":"/engine/render/particles/ParticleFieldRenderer.js","sourceHash":"417b126cb5d892a66c00d6b174751c8753f61846ef4f1594c7f131512b99d087","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleFieldRenderer.js#0000:createFieldRenderer","exportIndex":0,"name":"createFieldRenderer","kind":"function","signature":"createFieldRenderer(device, format)","summary":"Create the field renderer."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleFieldRenderer.md","moduleTitle":"render/particles/ParticleFieldRenderer","source":"engine/render/particles/ParticleFieldRenderer.js","import":"/engine/render/particles/ParticleFieldRenderer.js","sourceHash":"417b126cb5d892a66c00d6b174751c8753f61846ef4f1594c7f131512b99d087","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleFieldRenderer.js#0001:initFieldRendererBindGroups","exportIndex":1,"name":"initFieldRendererBindGroups","kind":"function","signature":"initFieldRendererBindGroups(renderer, device)","summary":"Initialize bind groups."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleFieldRenderer.md","moduleTitle":"render/particles/ParticleFieldRenderer","source":"engine/render/particles/ParticleFieldRenderer.js","import":"/engine/render/particles/ParticleFieldRenderer.js","sourceHash":"417b126cb5d892a66c00d6b174751c8753f61846ef4f1594c7f131512b99d087","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleFieldRenderer.js#0002:updateFieldProbes","exportIndex":2,"name":"updateFieldProbes","kind":"function","signature":"updateFieldProbes(renderer, device, chargedParticles, gridConfig)","summary":"Generate field probes from charged particle positions (CPU-side). Creates a 3D grid of probe points and computes the E field at each."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleFieldRenderer.md","moduleTitle":"render/particles/ParticleFieldRenderer","source":"engine/render/particles/ParticleFieldRenderer.js","import":"/engine/render/particles/ParticleFieldRenderer.js","sourceHash":"417b126cb5d892a66c00d6b174751c8753f61846ef4f1594c7f131512b99d087","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleFieldRenderer.js#0003:renderFieldArrows","exportIndex":3,"name":"renderFieldArrows","kind":"function","signature":"renderFieldArrows(pass, renderer, viewProj, cameraPos, viewRight, viewUp)","summary":"Render field arrows in the given render pass."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleFieldRenderer.md","moduleTitle":"render/particles/ParticleFieldRenderer","source":"engine/render/particles/ParticleFieldRenderer.js","import":"/engine/render/particles/ParticleFieldRenderer.js","sourceHash":"417b126cb5d892a66c00d6b174751c8753f61846ef4f1594c7f131512b99d087","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleFieldRenderer.js#0004:destroyFieldRenderer","exportIndex":4,"name":"destroyFieldRenderer","kind":"function","signature":"destroyFieldRenderer(renderer)","summary":"Destroy."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleHalfResComposite.md","moduleTitle":"render/particles/ParticleHalfResComposite","source":"engine/render/particles/ParticleHalfResComposite.js","import":"/engine/render/particles/ParticleHalfResComposite.js","sourceHash":"82a8741c6e1284a4de66efb68b345780be1931e5b48dca60c80c0f6d95c90bac","subsystem":"engine","recordType":"api-module","id":"module:engine/render/particles/ParticleHalfResComposite.js","title":"render/particles/ParticleHalfResComposite","summary":"ParticleHalfResComposite.js - Half-resolution particle rendering + bilateral composite Renders particles to a half-res RGBA target, then composites onto the main framebuffer with alpha blending. Provides 4× fill-rate reduction for particle rendering. ==================== PIPELINE OVERVIEW (for future AI/developers) ==================== The particle color pipeline works as follows: 1. CPU writes per-particle color to metaBuffer in ParticleEmitterSystem.js: singleMeta[0..2] = emitterColor[0..2] (RGB from elementMixToEmitterConfig) → uploaded via device.queue.writeBuffer to GPU metaBuffer 2. SDF vertex shader (particles_sdf_billboard.js) reads: uMeta[ii].xyz → input.color Uses instance_index (ii) directly — NO alive list indirection in SDF path. The billboard shader (particles_billboard_vertex.js) DOES use uAliveList, but the active renderer is SDF (set in EditorParticles.js: particles.pipeline = sdfRenderer.pipeline). 3. SDF fragment shader applies volumetric lighting + thermal glow to input.color, outputs vec4<f32>(lit, finalAlpha) — NON-premultiplied. 4. SDF pipeline renders INTO this half-res texture with blend mode: color: src-alpha, one-minus-src-alpha  (standard alpha blend) This produces PRE-MULTIPLIED RGB in the texture because: result.rgb = src.rgb * src.a + cleared_black * (1 - src.a) = src.rgb * src.a 5. This composite pass reads the half-res texture and blends onto the scene. MUST use pre-multiplied blend (srcFactor='one') because step 4 already multiplied RGB by alpha. Using srcFactor='src-alpha' would DOUBLE the alpha (lit * alpha²), making low-alpha particles nearly invisible. CRITICAL: If you change the SDF pipeline blend mode, you must update this composite blend mode to match. src-alpha render → 'one' composite. premultiplied render → 'one' composite. Ref: GPU Gems 3 Ch.23 \"High-Speed Off-Screen Particles\"","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleHalfResComposite.md","moduleTitle":"render/particles/ParticleHalfResComposite","source":"engine/render/particles/ParticleHalfResComposite.js","import":"/engine/render/particles/ParticleHalfResComposite.js","sourceHash":"82a8741c6e1284a4de66efb68b345780be1931e5b48dca60c80c0f6d95c90bac","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleHalfResComposite.js#0000:createHalfResCompositeSystem","exportIndex":0,"name":"createHalfResCompositeSystem","kind":"function","signature":"createHalfResCompositeSystem(device, format, fullWidth, fullHeight)","summary":"Create the half-resolution particle rendering + composite system."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleHalfResComposite.md","moduleTitle":"render/particles/ParticleHalfResComposite","source":"engine/render/particles/ParticleHalfResComposite.js","import":"/engine/render/particles/ParticleHalfResComposite.js","sourceHash":"82a8741c6e1284a4de66efb68b345780be1931e5b48dca60c80c0f6d95c90bac","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleHalfResComposite.js#0001:resizeHalfResTargets","exportIndex":1,"name":"resizeHalfResTargets","kind":"function","signature":"resizeHalfResTargets(system, fullWidth, fullHeight)","summary":"Resize half-res render targets. Call when the window/canvas resizes."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleHalfResComposite.md","moduleTitle":"render/particles/ParticleHalfResComposite","source":"engine/render/particles/ParticleHalfResComposite.js","import":"/engine/render/particles/ParticleHalfResComposite.js","sourceHash":"82a8741c6e1284a4de66efb68b345780be1931e5b48dca60c80c0f6d95c90bac","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleHalfResComposite.js#0002:getHalfResPassDescriptor","exportIndex":2,"name":"getHalfResPassDescriptor","kind":"function","signature":"getHalfResPassDescriptor(system)","summary":"Get the render pass descriptor for the half-res particle pass. Clear to transparent black (0,0,0,0) so alpha blending composites correctly. After particles render here with src-alpha blend, the texture contains pre-multiplied color: rgb = lit * alpha, a = combined alpha."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleHalfResComposite.md","moduleTitle":"render/particles/ParticleHalfResComposite","source":"engine/render/particles/ParticleHalfResComposite.js","import":"/engine/render/particles/ParticleHalfResComposite.js","sourceHash":"82a8741c6e1284a4de66efb68b345780be1931e5b48dca60c80c0f6d95c90bac","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleHalfResComposite.js#0003:executeComposite","exportIndex":3,"name":"executeComposite","kind":"function","signature":"executeComposite(system, encoder, mainTextureView)","summary":"Execute the composite pass: upsample half-res particles onto main framebuffer."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleHalfResComposite.md","moduleTitle":"render/particles/ParticleHalfResComposite","source":"engine/render/particles/ParticleHalfResComposite.js","import":"/engine/render/particles/ParticleHalfResComposite.js","sourceHash":"82a8741c6e1284a4de66efb68b345780be1931e5b48dca60c80c0f6d95c90bac","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleHalfResComposite.js#0004:destroyHalfResCompositeSystem","exportIndex":4,"name":"destroyHalfResCompositeSystem","kind":"function","signature":"destroyHalfResCompositeSystem(system)","summary":"Destroy half-res composite system resources."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleLightingRenderer.md","moduleTitle":"render/particles/ParticleLightingRenderer","source":"engine/render/particles/ParticleLightingRenderer.js","import":"/engine/render/particles/ParticleLightingRenderer.js","sourceHash":"5775a84d833bd8caea8e02672d166ae9e444cc2934df2ed8f25e79c9bd693204","subsystem":"engine","recordType":"api-module","id":"module:engine/render/particles/ParticleLightingRenderer.js","title":"render/particles/ParticleLightingRenderer","summary":"Create particle lighting pass renderer","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleLightingRenderer.md","moduleTitle":"render/particles/ParticleLightingRenderer","source":"engine/render/particles/ParticleLightingRenderer.js","import":"/engine/render/particles/ParticleLightingRenderer.js","sourceHash":"5775a84d833bd8caea8e02672d166ae9e444cc2934df2ed8f25e79c9bd693204","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleLightingRenderer.js#0000:createParticleLightingRenderer","exportIndex":0,"name":"createParticleLightingRenderer","kind":"function","signature":"async createParticleLightingRenderer(options)","summary":"Create particle lighting pass renderer"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleLightingRenderer.md","moduleTitle":"render/particles/ParticleLightingRenderer","source":"engine/render/particles/ParticleLightingRenderer.js","import":"/engine/render/particles/ParticleLightingRenderer.js","sourceHash":"5775a84d833bd8caea8e02672d166ae9e444cc2934df2ed8f25e79c9bd693204","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleLightingRenderer.js#0001:createParticleLightingDataBindGroup","exportIndex":1,"name":"createParticleLightingDataBindGroup","kind":"function","signature":"createParticleLightingDataBindGroup(renderer, positionBuffer, metaBuffer, velocityBuffer)","summary":"Create data bind group for lighting pass"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleLightingRenderer.md","moduleTitle":"render/particles/ParticleLightingRenderer","source":"engine/render/particles/ParticleLightingRenderer.js","import":"/engine/render/particles/ParticleLightingRenderer.js","sourceHash":"5775a84d833bd8caea8e02672d166ae9e444cc2934df2ed8f25e79c9bd693204","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleLightingRenderer.js#0002:setParticleLightingParams","exportIndex":2,"name":"setParticleLightingParams","kind":"function","signature":"setParticleLightingParams(renderer, { size = 1, quality = 1.0, lodBias = 1.0, cullThreshold = 0 })","summary":"Update lighting pass parameters"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleMeshRenderer.md","moduleTitle":"render/particles/ParticleMeshRenderer","source":"engine/render/particles/ParticleMeshRenderer.js","import":"/engine/render/particles/ParticleMeshRenderer.js","sourceHash":"cf7ed0013f445f8e55046d90776ecdabf4fea1d68124d97dfec1156ed6919fd2","subsystem":"engine","recordType":"api-module","id":"module:engine/render/particles/ParticleMeshRenderer.js","title":"render/particles/ParticleMeshRenderer","summary":"ParticleMeshRenderer.js - Instanced Mesh Particle Renderer (GAP 9) Renders each particle as a 3D mesh instance instead of a billboard. Supports both regular triangle meshes AND voxel meshes (compact u32 format). Each particle's position/velocity/meta drives a mesh instance: - Position from particle positions buffer - Rotation from velocity direction (velocity-aligned) or billboard - Scale from meta.w packed size - Color tint from meta.rgb - Age-based fade from pos.w / vel.w Usage: const renderer = await createParticleMeshRenderer(device, { format, mesh }); // In render loop: renderMeshParticles(pass, renderer, world, { viewProj, instanceCount });","exportCount":12}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleMeshRenderer.md","moduleTitle":"render/particles/ParticleMeshRenderer","source":"engine/render/particles/ParticleMeshRenderer.js","import":"/engine/render/particles/ParticleMeshRenderer.js","sourceHash":"cf7ed0013f445f8e55046d90776ecdabf4fea1d68124d97dfec1156ed6919fd2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleMeshRenderer.js#0000:createParticleMeshRenderer","exportIndex":0,"name":"createParticleMeshRenderer","kind":"function","signature":"async createParticleMeshRenderer(device, options = {})","summary":"Create a particle mesh renderer."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleMeshRenderer.md","moduleTitle":"render/particles/ParticleMeshRenderer","source":"engine/render/particles/ParticleMeshRenderer.js","import":"/engine/render/particles/ParticleMeshRenderer.js","sourceHash":"cf7ed0013f445f8e55046d90776ecdabf4fea1d68124d97dfec1156ed6919fd2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleMeshRenderer.js#0001:setParticleMesh","exportIndex":1,"name":"setParticleMesh","kind":"function","signature":"setParticleMesh(renderer, mesh)","summary":"Set the mesh to render per particle."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleMeshRenderer.md","moduleTitle":"render/particles/ParticleMeshRenderer","source":"engine/render/particles/ParticleMeshRenderer.js","import":"/engine/render/particles/ParticleMeshRenderer.js","sourceHash":"cf7ed0013f445f8e55046d90776ecdabf4fea1d68124d97dfec1156ed6919fd2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleMeshRenderer.js#0002:bindParticleData","exportIndex":2,"name":"bindParticleData","kind":"function","signature":"bindParticleData(renderer, world)","summary":"Bind particle data buffers from a particle world."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleMeshRenderer.md","moduleTitle":"render/particles/ParticleMeshRenderer","source":"engine/render/particles/ParticleMeshRenderer.js","import":"/engine/render/particles/ParticleMeshRenderer.js","sourceHash":"cf7ed0013f445f8e55046d90776ecdabf4fea1d68124d97dfec1156ed6919fd2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleMeshRenderer.js#0003:renderMeshParticles","exportIndex":3,"name":"renderMeshParticles","kind":"function","signature":"renderMeshParticles(pass, renderer, options = {})","summary":"Render mesh particles into a render pass."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleMeshRenderer.md","moduleTitle":"render/particles/ParticleMeshRenderer","source":"engine/render/particles/ParticleMeshRenderer.js","import":"/engine/render/particles/ParticleMeshRenderer.js","sourceHash":"cf7ed0013f445f8e55046d90776ecdabf4fea1d68124d97dfec1156ed6919fd2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleMeshRenderer.js#0004:setMeshParticleParams","exportIndex":4,"name":"setMeshParticleParams","kind":"function","signature":"setMeshParticleParams(renderer, params = {})","summary":"Update mesh particle renderer params."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleMeshRenderer.md","moduleTitle":"render/particles/ParticleMeshRenderer","source":"engine/render/particles/ParticleMeshRenderer.js","import":"/engine/render/particles/ParticleMeshRenderer.js","sourceHash":"cf7ed0013f445f8e55046d90776ecdabf4fea1d68124d97dfec1156ed6919fd2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleMeshRenderer.js#0005:initShadowPipeline","exportIndex":5,"name":"initShadowPipeline","kind":"function","signature":"initShadowPipeline(renderer)","summary":"Lazily initialize the shadow depth pipeline for particle mesh shadow casting. Call once before the first flushShadowDepth. Requires dataBindGroup to be set."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleMeshRenderer.md","moduleTitle":"render/particles/ParticleMeshRenderer","source":"engine/render/particles/ParticleMeshRenderer.js","import":"/engine/render/particles/ParticleMeshRenderer.js","sourceHash":"cf7ed0013f445f8e55046d90776ecdabf4fea1d68124d97dfec1156ed6919fd2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleMeshRenderer.js#0006:flushShadowDepth","exportIndex":6,"name":"flushShadowDepth","kind":"function","signature":"flushShadowDepth(pass, renderer, lightViewProj, instanceCount)","summary":"Render mesh particles into a shadow depth pass (depth-only, no color). Compatible with ShadowMapPass.renderShadowDepth()."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleMeshRenderer.md","moduleTitle":"render/particles/ParticleMeshRenderer","source":"engine/render/particles/ParticleMeshRenderer.js","import":"/engine/render/particles/ParticleMeshRenderer.js","sourceHash":"cf7ed0013f445f8e55046d90776ecdabf4fea1d68124d97dfec1156ed6919fd2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleMeshRenderer.js#0007:destroyParticleMeshRenderer","exportIndex":7,"name":"destroyParticleMeshRenderer","kind":"function","signature":"destroyParticleMeshRenderer(renderer)","summary":"Destroy the renderer."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleMeshRenderer.md","moduleTitle":"render/particles/ParticleMeshRenderer","source":"engine/render/particles/ParticleMeshRenderer.js","import":"/engine/render/particles/ParticleMeshRenderer.js","sourceHash":"cf7ed0013f445f8e55046d90776ecdabf4fea1d68124d97dfec1156ed6919fd2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleMeshRenderer.js#0008:MESH_FRAME_STRUCT","exportIndex":8,"name":"MESH_FRAME_STRUCT","kind":"constant","signature":"MESH_FRAME_STRUCT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleMeshRenderer.md","moduleTitle":"render/particles/ParticleMeshRenderer","source":"engine/render/particles/ParticleMeshRenderer.js","import":"/engine/render/particles/ParticleMeshRenderer.js","sourceHash":"cf7ed0013f445f8e55046d90776ecdabf4fea1d68124d97dfec1156ed6919fd2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleMeshRenderer.js#0009:MESH_ALIGN_VELOCITY","exportIndex":9,"name":"MESH_ALIGN_VELOCITY","kind":"constant","signature":"MESH_ALIGN_VELOCITY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleMeshRenderer.md","moduleTitle":"render/particles/ParticleMeshRenderer","source":"engine/render/particles/ParticleMeshRenderer.js","import":"/engine/render/particles/ParticleMeshRenderer.js","sourceHash":"cf7ed0013f445f8e55046d90776ecdabf4fea1d68124d97dfec1156ed6919fd2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleMeshRenderer.js#0010:MESH_ALIGN_BILLBOARD","exportIndex":10,"name":"MESH_ALIGN_BILLBOARD","kind":"constant","signature":"MESH_ALIGN_BILLBOARD","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleMeshRenderer.md","moduleTitle":"render/particles/ParticleMeshRenderer","source":"engine/render/particles/ParticleMeshRenderer.js","import":"/engine/render/particles/ParticleMeshRenderer.js","sourceHash":"cf7ed0013f445f8e55046d90776ecdabf4fea1d68124d97dfec1156ed6919fd2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleMeshRenderer.js#0011:MESH_ALIGN_WORLD","exportIndex":11,"name":"MESH_ALIGN_WORLD","kind":"constant","signature":"MESH_ALIGN_WORLD","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleNormalsRenderer.md","moduleTitle":"render/particles/ParticleNormalsRenderer","source":"engine/render/particles/ParticleNormalsRenderer.js","import":"/engine/render/particles/ParticleNormalsRenderer.js","sourceHash":"33573e49191c99b2978b77f08a1eac0b29f98a573015ca443653870c379b1b5f","subsystem":"engine","recordType":"api-module","id":"module:engine/render/particles/ParticleNormalsRenderer.js","title":"render/particles/ParticleNormalsRenderer","summary":"Create particle normals pass renderer","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleNormalsRenderer.md","moduleTitle":"render/particles/ParticleNormalsRenderer","source":"engine/render/particles/ParticleNormalsRenderer.js","import":"/engine/render/particles/ParticleNormalsRenderer.js","sourceHash":"33573e49191c99b2978b77f08a1eac0b29f98a573015ca443653870c379b1b5f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleNormalsRenderer.js#0000:createParticleNormalsRenderer","exportIndex":0,"name":"createParticleNormalsRenderer","kind":"function","signature":"async createParticleNormalsRenderer(options)","summary":"Create particle normals pass renderer"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleNormalsRenderer.md","moduleTitle":"render/particles/ParticleNormalsRenderer","source":"engine/render/particles/ParticleNormalsRenderer.js","import":"/engine/render/particles/ParticleNormalsRenderer.js","sourceHash":"33573e49191c99b2978b77f08a1eac0b29f98a573015ca443653870c379b1b5f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleNormalsRenderer.js#0001:createParticleNormalsDataBindGroup","exportIndex":1,"name":"createParticleNormalsDataBindGroup","kind":"function","signature":"createParticleNormalsDataBindGroup(renderer, positionBuffer, metaBuffer, velocityBuffer)","summary":"Create data bind group for normals pass"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleNormalsRenderer.md","moduleTitle":"render/particles/ParticleNormalsRenderer","source":"engine/render/particles/ParticleNormalsRenderer.js","import":"/engine/render/particles/ParticleNormalsRenderer.js","sourceHash":"33573e49191c99b2978b77f08a1eac0b29f98a573015ca443653870c379b1b5f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleNormalsRenderer.js#0002:setParticleNormalsParams","exportIndex":2,"name":"setParticleNormalsParams","kind":"function","signature":"setParticleNormalsParams(renderer, { size = 1, quality = 1.0, lodBias = 1.0, cullThreshold = 0 })","summary":"Update normals pass parameters"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleOrbitalRenderer.md","moduleTitle":"render/particles/ParticleOrbitalRenderer","source":"engine/render/particles/ParticleOrbitalRenderer.js","import":"/engine/render/particles/ParticleOrbitalRenderer.js","sourceHash":"8456ed7dba8364604bf54daae4ac22b91ce6f7c1db18f58cc15ba52f83be1342","subsystem":"engine","recordType":"api-module","id":"module:engine/render/particles/ParticleOrbitalRenderer.js","title":"render/particles/ParticleOrbitalRenderer","summary":"ParticleOrbitalRenderer.js - Electron Cloud / Orbital Renderer (GAP 40) Renders electron probability clouds around atom-particles using raymarched spherical harmonics. Color by element (CPK convention) from element table. LOD: full orbital at close range, simple sphere at distance. Usage: const orb = createOrbitalRenderer(device, format); renderOrbitals(pass, orb, { positionBuffer, elementBuffer, colorLutBuffer, camera });","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleOrbitalRenderer.md","moduleTitle":"render/particles/ParticleOrbitalRenderer","source":"engine/render/particles/ParticleOrbitalRenderer.js","import":"/engine/render/particles/ParticleOrbitalRenderer.js","sourceHash":"8456ed7dba8364604bf54daae4ac22b91ce6f7c1db18f58cc15ba52f83be1342","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleOrbitalRenderer.js#0000:createOrbitalRenderer","exportIndex":0,"name":"createOrbitalRenderer","kind":"function","signature":"createOrbitalRenderer(device, format)","summary":"Create the orbital renderer."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleOrbitalRenderer.md","moduleTitle":"render/particles/ParticleOrbitalRenderer","source":"engine/render/particles/ParticleOrbitalRenderer.js","import":"/engine/render/particles/ParticleOrbitalRenderer.js","sourceHash":"8456ed7dba8364604bf54daae4ac22b91ce6f7c1db18f58cc15ba52f83be1342","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleOrbitalRenderer.js#0001:initOrbitalBindGroups","exportIndex":1,"name":"initOrbitalBindGroups","kind":"function","signature":"initOrbitalBindGroups(renderer, device, positionBuffer, velocityBuffer, elementBuffer, lutBuffer, colorLutBuffer)","summary":"Initialize bind groups for orbital rendering."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleOrbitalRenderer.md","moduleTitle":"render/particles/ParticleOrbitalRenderer","source":"engine/render/particles/ParticleOrbitalRenderer.js","import":"/engine/render/particles/ParticleOrbitalRenderer.js","sourceHash":"8456ed7dba8364604bf54daae4ac22b91ce6f7c1db18f58cc15ba52f83be1342","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleOrbitalRenderer.js#0002:renderOrbitals","exportIndex":2,"name":"renderOrbitals","kind":"function","signature":"renderOrbitals(pass, renderer, viewProj, cameraPos, viewRight, viewUp, instanceCount)","summary":"Render orbital clouds in the given render pass."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleOrbitalRenderer.md","moduleTitle":"render/particles/ParticleOrbitalRenderer","source":"engine/render/particles/ParticleOrbitalRenderer.js","import":"/engine/render/particles/ParticleOrbitalRenderer.js","sourceHash":"8456ed7dba8364604bf54daae4ac22b91ce6f7c1db18f58cc15ba52f83be1342","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleOrbitalRenderer.js#0003:destroyOrbitalRenderer","exportIndex":3,"name":"destroyOrbitalRenderer","kind":"function","signature":"destroyOrbitalRenderer(renderer)","summary":"Destroy."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticlePhaseVFX.md","moduleTitle":"render/particles/ParticlePhaseVFX","source":"engine/render/particles/ParticlePhaseVFX.js","import":"/engine/render/particles/ParticlePhaseVFX.js","sourceHash":"689f15494e8833f4de83b9be82bcab6c4636f114ff95c0e36db538236b3fb85f","subsystem":"engine","recordType":"api-module","id":"module:engine/render/particles/ParticlePhaseVFX.js","title":"render/particles/ParticlePhaseVFX","summary":"ParticlePhaseVFX.js - Phase Transition Visual Effects Manager (GAP 43) Manages phase-transition visual effects for particle rendering. Provides WGSL snippet injection for existing billboard/SDF fragment shaders. Controls: frost crystallization, melt sheen, boiling bubbles, ionization arcs. The actual rendering is done by injecting applyPhaseVFX() into existing particle fragment shaders. This module manages the configuration and provides the WGSL code for inclusion. Usage: import { phaseVFXWGSL } from '../shaders/modules/core/particles_phase_vfx.js'; // Include phaseVFXWGSL in particle fragment shader // Call applyPhaseVFX(baseColor, uv, time, phase, temperature, latentProgress)","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticlePhaseVFX.md","moduleTitle":"render/particles/ParticlePhaseVFX","source":"engine/render/particles/ParticlePhaseVFX.js","import":"/engine/render/particles/ParticlePhaseVFX.js","sourceHash":"689f15494e8833f4de83b9be82bcab6c4636f114ff95c0e36db538236b3fb85f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticlePhaseVFX.js#0000:createPhaseVFXConfig","exportIndex":0,"name":"createPhaseVFXConfig","kind":"function","signature":"createPhaseVFXConfig(overrides = {})","summary":"Create a phase VFX configuration object."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticlePhaseVFX.md","moduleTitle":"render/particles/ParticlePhaseVFX","source":"engine/render/particles/ParticlePhaseVFX.js","import":"/engine/render/particles/ParticlePhaseVFX.js","sourceHash":"689f15494e8833f4de83b9be82bcab6c4636f114ff95c0e36db538236b3fb85f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticlePhaseVFX.js#0001:getPhaseVFXShader","exportIndex":1,"name":"getPhaseVFXShader","kind":"function","signature":"getPhaseVFXShader()","summary":"Get the WGSL snippet for phase VFX. Include this in particle fragment shaders to enable phase transition effects."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticlePhaseVFX.md","moduleTitle":"render/particles/ParticlePhaseVFX","source":"engine/render/particles/ParticlePhaseVFX.js","import":"/engine/render/particles/ParticlePhaseVFX.js","sourceHash":"689f15494e8833f4de83b9be82bcab6c4636f114ff95c0e36db538236b3fb85f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticlePhaseVFX.js#0002:PHASE_VFX_DEFAULTS","exportIndex":2,"name":"PHASE_VFX_DEFAULTS","kind":"constant","signature":"PHASE_VFX_DEFAULTS","summary":"Phase VFX configuration. These values are passed to shaders via existing particle uniform buffers."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticlePhaseVFX.md","moduleTitle":"render/particles/ParticlePhaseVFX","source":"engine/render/particles/ParticlePhaseVFX.js","import":"/engine/render/particles/ParticlePhaseVFX.js","sourceHash":"689f15494e8833f4de83b9be82bcab6c4636f114ff95c0e36db538236b3fb85f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticlePhaseVFX.js#0003:phaseVFXWGSL","exportIndex":3,"name":"phaseVFXWGSL","kind":"re-export","signature":"phaseVFXWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleQualityManager.md","moduleTitle":"render/particles/ParticleQualityManager","source":"engine/render/particles/ParticleQualityManager.js","import":"/engine/render/particles/ParticleQualityManager.js","sourceHash":"1ce63623fe509469e9ff75f7c54850a9a99d4b16363b9ea01fca8309735bbc80","subsystem":"engine","recordType":"api-module","id":"module:engine/render/particles/ParticleQualityManager.js","title":"render/particles/ParticleQualityManager","summary":"Create a particle quality manager","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleQualityManager.md","moduleTitle":"render/particles/ParticleQualityManager","source":"engine/render/particles/ParticleQualityManager.js","import":"/engine/render/particles/ParticleQualityManager.js","sourceHash":"1ce63623fe509469e9ff75f7c54850a9a99d4b16363b9ea01fca8309735bbc80","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleQualityManager.js#0000:createParticleQualityManager","exportIndex":0,"name":"createParticleQualityManager","kind":"function","signature":"createParticleQualityManager(options = {})","summary":"Create a particle quality manager"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleQualityManager.md","moduleTitle":"render/particles/ParticleQualityManager","source":"engine/render/particles/ParticleQualityManager.js","import":"/engine/render/particles/ParticleQualityManager.js","sourceHash":"1ce63623fe509469e9ff75f7c54850a9a99d4b16363b9ea01fca8309735bbc80","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleQualityManager.js#0001:QUALITY_PRESETS","exportIndex":1,"name":"QUALITY_PRESETS","kind":"constant","signature":"QUALITY_PRESETS","summary":"Default quality presets"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleSPHSurfaceRenderer.md","moduleTitle":"render/particles/ParticleSPHSurfaceRenderer","source":"engine/render/particles/ParticleSPHSurfaceRenderer.js","import":"/engine/render/particles/ParticleSPHSurfaceRenderer.js","sourceHash":"fcd931c1a832a6ed3008c72e2619d325ac88df8e081f8b554a2ad44f92ea9753","subsystem":"engine","recordType":"api-module","id":"module:engine/render/particles/ParticleSPHSurfaceRenderer.js","title":"render/particles/ParticleSPHSurfaceRenderer","summary":"ParticleSPHSurfaceRenderer.js - SPH Fluid Surface Renderer (GAP 44) Screen-space rendering of SPH fluid particles as smooth liquid surface. Bridges SPH particle data (GAP 36) into the existing FluidWaterPass pipeline. Pipeline: 1. Render SPH particles as sphere impostors → depth texture 2. Bilateral blur → smooth surface 3. Thickness accumulation → subsurface scattering 4. Composite with refraction + reflection + Fresnel Per-element tint from element table: water=blue, lava=orange, blood=red. Usage: const ssr = createSPHSurfaceRenderer(device, format, width, height); initSPHSurfaceBindGroups(ssr, device, positionBuffer, velocityBuffer, elementBuffer, colorLutBuffer); renderSPHSurface(ssr, encoder, { sceneColor, sceneDepth, camera, particleCount });","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleSPHSurfaceRenderer.md","moduleTitle":"render/particles/ParticleSPHSurfaceRenderer","source":"engine/render/particles/ParticleSPHSurfaceRenderer.js","import":"/engine/render/particles/ParticleSPHSurfaceRenderer.js","sourceHash":"fcd931c1a832a6ed3008c72e2619d325ac88df8e081f8b554a2ad44f92ea9753","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleSPHSurfaceRenderer.js#0000:createSPHSurfaceRenderer","exportIndex":0,"name":"createSPHSurfaceRenderer","kind":"function","signature":"createSPHSurfaceRenderer(device, format, width, height)","summary":"Create the SPH surface renderer. Full SSFR pipeline: depth → bilateral blur (H+V) → thickness → normals + composite."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleSPHSurfaceRenderer.md","moduleTitle":"render/particles/ParticleSPHSurfaceRenderer","source":"engine/render/particles/ParticleSPHSurfaceRenderer.js","import":"/engine/render/particles/ParticleSPHSurfaceRenderer.js","sourceHash":"fcd931c1a832a6ed3008c72e2619d325ac88df8e081f8b554a2ad44f92ea9753","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleSPHSurfaceRenderer.js#0001:initSPHSurfaceBindGroups","exportIndex":1,"name":"initSPHSurfaceBindGroups","kind":"function","signature":"initSPHSurfaceBindGroups(renderer, device, positionBuffer, velocityBuffer, thermalBuffer)","summary":"Initialize bind groups for all SSFR passes."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleSPHSurfaceRenderer.md","moduleTitle":"render/particles/ParticleSPHSurfaceRenderer","source":"engine/render/particles/ParticleSPHSurfaceRenderer.js","import":"/engine/render/particles/ParticleSPHSurfaceRenderer.js","sourceHash":"fcd931c1a832a6ed3008c72e2619d325ac88df8e081f8b554a2ad44f92ea9753","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleSPHSurfaceRenderer.js#0002:initSPHCompositeBindGroup","exportIndex":2,"name":"initSPHCompositeBindGroup","kind":"function","signature":"initSPHCompositeBindGroup(renderer, device, sceneColorView)","summary":"Create composite bind group (needs scene color texture view). Reads smoothed depth (blurTextureB) + thickness for full SSFR composite."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleSPHSurfaceRenderer.md","moduleTitle":"render/particles/ParticleSPHSurfaceRenderer","source":"engine/render/particles/ParticleSPHSurfaceRenderer.js","import":"/engine/render/particles/ParticleSPHSurfaceRenderer.js","sourceHash":"fcd931c1a832a6ed3008c72e2619d325ac88df8e081f8b554a2ad44f92ea9753","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleSPHSurfaceRenderer.js#0003:setSPHSurfaceTint","exportIndex":3,"name":"setSPHSurfaceTint","kind":"function","signature":"setSPHSurfaceTint(renderer, r, g, b)","summary":"Set fluid tint color (e.g., from element)."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleSPHSurfaceRenderer.md","moduleTitle":"render/particles/ParticleSPHSurfaceRenderer","source":"engine/render/particles/ParticleSPHSurfaceRenderer.js","import":"/engine/render/particles/ParticleSPHSurfaceRenderer.js","sourceHash":"fcd931c1a832a6ed3008c72e2619d325ac88df8e081f8b554a2ad44f92ea9753","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleSPHSurfaceRenderer.js#0004:renderSPHSurface","exportIndex":4,"name":"renderSPHSurface","kind":"function","signature":"renderSPHSurface(renderer, encoder, options)","summary":"Render SPH fluid surface (full SSFR pipeline). Pass 1: Depth (sphere impostors) Pass 2: Bilateral blur H Pass 3: Bilateral blur V Pass 4: Thickness (additive)"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleSPHSurfaceRenderer.md","moduleTitle":"render/particles/ParticleSPHSurfaceRenderer","source":"engine/render/particles/ParticleSPHSurfaceRenderer.js","import":"/engine/render/particles/ParticleSPHSurfaceRenderer.js","sourceHash":"fcd931c1a832a6ed3008c72e2619d325ac88df8e081f8b554a2ad44f92ea9753","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleSPHSurfaceRenderer.js#0005:compositeSPHSurface","exportIndex":5,"name":"compositeSPHSurface","kind":"function","signature":"compositeSPHSurface(pass, renderer)","summary":"Composite SPH surface onto the scene in a render pass."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleSPHSurfaceRenderer.md","moduleTitle":"render/particles/ParticleSPHSurfaceRenderer","source":"engine/render/particles/ParticleSPHSurfaceRenderer.js","import":"/engine/render/particles/ParticleSPHSurfaceRenderer.js","sourceHash":"fcd931c1a832a6ed3008c72e2619d325ac88df8e081f8b554a2ad44f92ea9753","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleSPHSurfaceRenderer.js#0006:destroySPHSurfaceRenderer","exportIndex":6,"name":"destroySPHSurfaceRenderer","kind":"function","signature":"destroySPHSurfaceRenderer(renderer)","summary":"Destroy."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleSdfRenderer.md","moduleTitle":"render/particles/ParticleSdfRenderer","source":"engine/render/particles/ParticleSdfRenderer.js","import":"/engine/render/particles/ParticleSdfRenderer.js","sourceHash":"58fb728cc44affa864d1337e7c46e2cd07a9437be75da75b6639e72d007e5fca","subsystem":"engine","recordType":"api-module","id":"module:engine/render/particles/ParticleSdfRenderer.js","title":"render/particles/ParticleSdfRenderer","summary":"Create volumetric SDF particle renderer","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleSdfRenderer.md","moduleTitle":"render/particles/ParticleSdfRenderer","source":"engine/render/particles/ParticleSdfRenderer.js","import":"/engine/render/particles/ParticleSdfRenderer.js","sourceHash":"58fb728cc44affa864d1337e7c46e2cd07a9437be75da75b6639e72d007e5fca","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleSdfRenderer.js#0000:createParticleSdfRenderer","exportIndex":0,"name":"createParticleSdfRenderer","kind":"function","signature":"async createParticleSdfRenderer(options)","summary":"Create volumetric SDF particle renderer"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleSdfRenderer.md","moduleTitle":"render/particles/ParticleSdfRenderer","source":"engine/render/particles/ParticleSdfRenderer.js","import":"/engine/render/particles/ParticleSdfRenderer.js","sourceHash":"58fb728cc44affa864d1337e7c46e2cd07a9437be75da75b6639e72d007e5fca","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleSdfRenderer.js#0001:createParticleSdfDataBindGroup","exportIndex":1,"name":"createParticleSdfDataBindGroup","kind":"function","signature":"createParticleSdfDataBindGroup(renderer, positionBuffer, metaBuffer, velocityBuffer, thermalBuffer, sphDensityBuffer, classBuffer)","summary":"Create data bind group for SDF particle world. Binds the shared particle buffers (position, meta, velocity, thermal) to group 1. The metaBuffer contains per-particle color at .rgb — written by ParticleEmitterSystem.js. If thermalBuffer is missing, a fallback with room-temp defaults (293K) is created."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleSdfRenderer.md","moduleTitle":"render/particles/ParticleSdfRenderer","source":"engine/render/particles/ParticleSdfRenderer.js","import":"/engine/render/particles/ParticleSdfRenderer.js","sourceHash":"58fb728cc44affa864d1337e7c46e2cd07a9437be75da75b6639e72d007e5fca","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleSdfRenderer.js#0002:createParticleSdfDepthBindGroup","exportIndex":2,"name":"createParticleSdfDepthBindGroup","kind":"function","signature":"createParticleSdfDepthBindGroup(renderer, depthTextureView)","summary":"Create depth bind group for soft particles (scene depth texture). Must be recreated when the depth texture changes (e.g. on resize). Only binds depth texture (binding 0). Does NOT include alive list buffer — the SDF vertex shader uses instance_index directly, unlike the billboard shader which uses uAliveList for indirection."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleSdfRenderer.md","moduleTitle":"render/particles/ParticleSdfRenderer","source":"engine/render/particles/ParticleSdfRenderer.js","import":"/engine/render/particles/ParticleSdfRenderer.js","sourceHash":"58fb728cc44affa864d1337e7c46e2cd07a9437be75da75b6639e72d007e5fca","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleSdfRenderer.js#0003:createParticleSdfLutSixWayBindGroup","exportIndex":3,"name":"createParticleSdfLutSixWayBindGroup","kind":"function","signature":"createParticleSdfLutSixWayBindGroup(renderer, colorGradientView, colorGradientSampler, lifetimeCurvesView, lifetimeCurvesSampler, sixWaySystem)","summary":"Create combined LUT + six-way lighting bind group (group 3). Bindings 0-3: color gradient + lifetime curves LUT textures. Bindings 4-11: six directional lightmap textures + sampler + params. Merged into one group to stay within WebGPU maxBindGroups=4."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleSdfRenderer.md","moduleTitle":"render/particles/ParticleSdfRenderer","source":"engine/render/particles/ParticleSdfRenderer.js","import":"/engine/render/particles/ParticleSdfRenderer.js","sourceHash":"58fb728cc44affa864d1337e7c46e2cd07a9437be75da75b6639e72d007e5fca","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleSdfRenderer.js#0004:setParticleSdfParams","exportIndex":4,"name":"setParticleSdfParams","kind":"function","signature":"setParticleSdfParams(renderer, { size = 1, quality = 1.0, lodBias = 1.0, cullThreshold = 0 })","summary":"Update SDF particle rendering parameters"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleSdfRenderer.md","moduleTitle":"render/particles/ParticleSdfRenderer","source":"engine/render/particles/ParticleSdfRenderer.js","import":"/engine/render/particles/ParticleSdfRenderer.js","sourceHash":"58fb728cc44affa864d1337e7c46e2cd07a9437be75da75b6639e72d007e5fca","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleSdfRenderer.js#0005:SDF_FRAME_STRUCT","exportIndex":5,"name":"SDF_FRAME_STRUCT","kind":"constant","signature":"SDF_FRAME_STRUCT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleShadowCaster.md","moduleTitle":"render/particles/ParticleShadowCaster","source":"engine/render/particles/ParticleShadowCaster.js","import":"/engine/render/particles/ParticleShadowCaster.js","sourceHash":"2c0352c05debb9f9a66658c61237f08649553d041a9c5b6a13c9b38c2270ffdd","subsystem":"engine","recordType":"api-module","id":"module:engine/render/particles/ParticleShadowCaster.js","title":"render/particles/ParticleShadowCaster","summary":"","exportCount":8}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleShadowCaster.md","moduleTitle":"render/particles/ParticleShadowCaster","source":"engine/render/particles/ParticleShadowCaster.js","import":"/engine/render/particles/ParticleShadowCaster.js","sourceHash":"2c0352c05debb9f9a66658c61237f08649553d041a9c5b6a13c9b38c2270ffdd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleShadowCaster.js#0000:createParticleShadowCaster","exportIndex":0,"name":"createParticleShadowCaster","kind":"function","signature":"async createParticleShadowCaster(device)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleShadowCaster.md","moduleTitle":"render/particles/ParticleShadowCaster","source":"engine/render/particles/ParticleShadowCaster.js","import":"/engine/render/particles/ParticleShadowCaster.js","sourceHash":"2c0352c05debb9f9a66658c61237f08649553d041a9c5b6a13c9b38c2270ffdd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleShadowCaster.js#0001:registerCaster","exportIndex":1,"name":"registerCaster","kind":"function","signature":"registerCaster(caster, id, flushFn)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleShadowCaster.md","moduleTitle":"render/particles/ParticleShadowCaster","source":"engine/render/particles/ParticleShadowCaster.js","import":"/engine/render/particles/ParticleShadowCaster.js","sourceHash":"2c0352c05debb9f9a66658c61237f08649553d041a9c5b6a13c9b38c2270ffdd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleShadowCaster.js#0002:unregisterCaster","exportIndex":2,"name":"unregisterCaster","kind":"function","signature":"unregisterCaster(caster, id)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleShadowCaster.md","moduleTitle":"render/particles/ParticleShadowCaster","source":"engine/render/particles/ParticleShadowCaster.js","import":"/engine/render/particles/ParticleShadowCaster.js","sourceHash":"2c0352c05debb9f9a66658c61237f08649553d041a9c5b6a13c9b38c2270ffdd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleShadowCaster.js#0003:bindShadowParticleData","exportIndex":3,"name":"bindShadowParticleData","kind":"function","signature":"bindShadowParticleData(caster, world)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleShadowCaster.md","moduleTitle":"render/particles/ParticleShadowCaster","source":"engine/render/particles/ParticleShadowCaster.js","import":"/engine/render/particles/ParticleShadowCaster.js","sourceHash":"2c0352c05debb9f9a66658c61237f08649553d041a9c5b6a13c9b38c2270ffdd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleShadowCaster.js#0004:flushBillboardShadowDepth","exportIndex":4,"name":"flushBillboardShadowDepth","kind":"function","signature":"flushBillboardShadowDepth(pass, caster, lightViewProj, sunDir, instanceCount)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleShadowCaster.md","moduleTitle":"render/particles/ParticleShadowCaster","source":"engine/render/particles/ParticleShadowCaster.js","import":"/engine/render/particles/ParticleShadowCaster.js","sourceHash":"2c0352c05debb9f9a66658c61237f08649553d041a9c5b6a13c9b38c2270ffdd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleShadowCaster.js#0005:flushAllParticleShadows","exportIndex":5,"name":"flushAllParticleShadows","kind":"function","signature":"flushAllParticleShadows(pass, caster, lightViewProj, sunDir, billboardInstanceCount)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleShadowCaster.md","moduleTitle":"render/particles/ParticleShadowCaster","source":"engine/render/particles/ParticleShadowCaster.js","import":"/engine/render/particles/ParticleShadowCaster.js","sourceHash":"2c0352c05debb9f9a66658c61237f08649553d041a9c5b6a13c9b38c2270ffdd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleShadowCaster.js#0006:createRopeShadowCaster","exportIndex":6,"name":"createRopeShadowCaster","kind":"function","signature":"async createRopeShadowCaster(device, ropeRenderer)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleShadowCaster.md","moduleTitle":"render/particles/ParticleShadowCaster","source":"engine/render/particles/ParticleShadowCaster.js","import":"/engine/render/particles/ParticleShadowCaster.js","sourceHash":"2c0352c05debb9f9a66658c61237f08649553d041a9c5b6a13c9b38c2270ffdd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleShadowCaster.js#0007:destroyParticleShadowCaster","exportIndex":7,"name":"destroyParticleShadowCaster","kind":"function","signature":"destroyParticleShadowCaster(caster)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleSixWayLighting.md","moduleTitle":"render/particles/ParticleSixWayLighting","source":"engine/render/particles/ParticleSixWayLighting.js","import":"/engine/render/particles/ParticleSixWayLighting.js","sourceHash":"651dcea180d06f365727e796154ef9f1b40961f66fdfce887fbd9810dce841f2","subsystem":"engine","recordType":"api-module","id":"module:engine/render/particles/ParticleSixWayLighting.js","title":"render/particles/ParticleSixWayLighting","summary":"ParticleSixWayLighting.js - Six-Way Lightmap Particles (GAP 24) Pre-baked lighting from 6 directions (+X, -X, +Y, -Y, +Z, -Z) sampled based on dominant light direction. Creates a fake 3D volumetric look on flat billboard particles, especially useful for smoke and fog. Matches Unity VFX Graph six-way lighting feature. The system bakes a 6-channel lightmap texture (3 RGBA8 textures for 6 directions, or a single RGBA16float with packed channels). At render time, the fragment shader blends between the 6 maps based on the light direction relative to the billboard. Usage: const sixway = createSixWayLightingSystem(device); loadSixWayTextures(sixway, device, { right, left, top, bottom, front, back }); // Or generate procedural maps: generateProceduralSixWay(sixway, device, 'smoke'); // Bind to particle renderer: bindSixWayToRenderer(sixway, renderer);","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleSixWayLighting.md","moduleTitle":"render/particles/ParticleSixWayLighting","source":"engine/render/particles/ParticleSixWayLighting.js","import":"/engine/render/particles/ParticleSixWayLighting.js","sourceHash":"651dcea180d06f365727e796154ef9f1b40961f66fdfce887fbd9810dce841f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleSixWayLighting.js#0000:createSixWayLightingSystem","exportIndex":0,"name":"createSixWayLightingSystem","kind":"function","signature":"createSixWayLightingSystem(device, config = {})","summary":"Create a six-way lighting system."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleSixWayLighting.md","moduleTitle":"render/particles/ParticleSixWayLighting","source":"engine/render/particles/ParticleSixWayLighting.js","import":"/engine/render/particles/ParticleSixWayLighting.js","sourceHash":"651dcea180d06f365727e796154ef9f1b40961f66fdfce887fbd9810dce841f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleSixWayLighting.js#0001:generateProceduralSixWay","exportIndex":1,"name":"generateProceduralSixWay","kind":"function","signature":"generateProceduralSixWay(system, device, preset = 'smoke')","summary":"Generate procedural six-way lightmaps."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleSixWayLighting.md","moduleTitle":"render/particles/ParticleSixWayLighting","source":"engine/render/particles/ParticleSixWayLighting.js","import":"/engine/render/particles/ParticleSixWayLighting.js","sourceHash":"651dcea180d06f365727e796154ef9f1b40961f66fdfce887fbd9810dce841f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleSixWayLighting.js#0002:loadSixWayTextures","exportIndex":2,"name":"loadSixWayTextures","kind":"function","signature":"async loadSixWayTextures(system, device, images)","summary":"Load six-way textures from external image data."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleSixWayLighting.md","moduleTitle":"render/particles/ParticleSixWayLighting","source":"engine/render/particles/ParticleSixWayLighting.js","import":"/engine/render/particles/ParticleSixWayLighting.js","sourceHash":"651dcea180d06f365727e796154ef9f1b40961f66fdfce887fbd9810dce841f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleSixWayLighting.js#0003:setSixWayLightDirection","exportIndex":3,"name":"setSixWayLightDirection","kind":"function","signature":"setSixWayLightDirection(system, lightDir, intensity = 1.0)","summary":"Update the dominant light direction."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleSixWayLighting.md","moduleTitle":"render/particles/ParticleSixWayLighting","source":"engine/render/particles/ParticleSixWayLighting.js","import":"/engine/render/particles/ParticleSixWayLighting.js","sourceHash":"651dcea180d06f365727e796154ef9f1b40961f66fdfce887fbd9810dce841f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleSixWayLighting.js#0004:destroySixWayLightingSystem","exportIndex":4,"name":"destroySixWayLightingSystem","kind":"function","signature":"destroySixWayLightingSystem(system)","summary":"Destroy the system."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleSixWayLighting.md","moduleTitle":"render/particles/ParticleSixWayLighting","source":"engine/render/particles/ParticleSixWayLighting.js","import":"/engine/render/particles/ParticleSixWayLighting.js","sourceHash":"651dcea180d06f365727e796154ef9f1b40961f66fdfce887fbd9810dce841f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleSixWayLighting.js#0005:SIX_WAY_LIGHTING_WGSL","exportIndex":5,"name":"SIX_WAY_LIGHTING_WGSL","kind":"constant","signature":"SIX_WAY_LIGHTING_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleSizeRenderer.md","moduleTitle":"render/particles/ParticleSizeRenderer","source":"engine/render/particles/ParticleSizeRenderer.js","import":"/engine/render/particles/ParticleSizeRenderer.js","sourceHash":"0ddc7579738b43317d9334d999c0d30505f99cca087f60c2901cf9b30b135e47","subsystem":"engine","recordType":"api-module","id":"module:engine/render/particles/ParticleSizeRenderer.js","title":"render/particles/ParticleSizeRenderer","summary":"","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleSizeRenderer.md","moduleTitle":"render/particles/ParticleSizeRenderer","source":"engine/render/particles/ParticleSizeRenderer.js","import":"/engine/render/particles/ParticleSizeRenderer.js","sourceHash":"0ddc7579738b43317d9334d999c0d30505f99cca087f60c2901cf9b30b135e47","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleSizeRenderer.js#0000:createParticleSizeRenderer","exportIndex":0,"name":"createParticleSizeRenderer","kind":"function","signature":"async createParticleSizeRenderer(options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleSizeRenderer.md","moduleTitle":"render/particles/ParticleSizeRenderer","source":"engine/render/particles/ParticleSizeRenderer.js","import":"/engine/render/particles/ParticleSizeRenderer.js","sourceHash":"0ddc7579738b43317d9334d999c0d30505f99cca087f60c2901cf9b30b135e47","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleSizeRenderer.js#0001:createParticleSizeDataBindGroup","exportIndex":1,"name":"createParticleSizeDataBindGroup","kind":"function","signature":"createParticleSizeDataBindGroup(renderer, positionBuffer, metaBuffer, velocityBuffer)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleSizeRenderer.md","moduleTitle":"render/particles/ParticleSizeRenderer","source":"engine/render/particles/ParticleSizeRenderer.js","import":"/engine/render/particles/ParticleSizeRenderer.js","sourceHash":"0ddc7579738b43317d9334d999c0d30505f99cca087f60c2901cf9b30b135e47","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleSizeRenderer.js#0002:setParticleSizeParams","exportIndex":2,"name":"setParticleSizeParams","kind":"function","signature":"setParticleSizeParams(renderer, { size = 1, quality = 1.0, lodBias = 1.0, cullThreshold = 0 })","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleThermalRenderer.md","moduleTitle":"render/particles/ParticleThermalRenderer","source":"engine/render/particles/ParticleThermalRenderer.js","import":"/engine/render/particles/ParticleThermalRenderer.js","sourceHash":"fa77c55f948062bebe2dd384eb55e68b1f75dee0127a9c2e8dcaa019b6c61450","subsystem":"engine","recordType":"api-module","id":"module:engine/render/particles/ParticleThermalRenderer.js","title":"render/particles/ParticleThermalRenderer","summary":"Particle Thermal/Blackbody Debug Pass Renderer Renders particle temperature as blackbody radiation color for debug visualization. Requires thermalData buffer (binding 4) in addition to standard particle buffers.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleThermalRenderer.md","moduleTitle":"render/particles/ParticleThermalRenderer","source":"engine/render/particles/ParticleThermalRenderer.js","import":"/engine/render/particles/ParticleThermalRenderer.js","sourceHash":"fa77c55f948062bebe2dd384eb55e68b1f75dee0127a9c2e8dcaa019b6c61450","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleThermalRenderer.js#0000:createParticleThermalRenderer","exportIndex":0,"name":"createParticleThermalRenderer","kind":"function","signature":"async createParticleThermalRenderer(options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleThermalRenderer.md","moduleTitle":"render/particles/ParticleThermalRenderer","source":"engine/render/particles/ParticleThermalRenderer.js","import":"/engine/render/particles/ParticleThermalRenderer.js","sourceHash":"fa77c55f948062bebe2dd384eb55e68b1f75dee0127a9c2e8dcaa019b6c61450","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleThermalRenderer.js#0001:createParticleThermalDataBindGroup","exportIndex":1,"name":"createParticleThermalDataBindGroup","kind":"function","signature":"createParticleThermalDataBindGroup(renderer, positionBuffer, metaBuffer, velocityBuffer, thermalBuffer)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleThermalRenderer.md","moduleTitle":"render/particles/ParticleThermalRenderer","source":"engine/render/particles/ParticleThermalRenderer.js","import":"/engine/render/particles/ParticleThermalRenderer.js","sourceHash":"fa77c55f948062bebe2dd384eb55e68b1f75dee0127a9c2e8dcaa019b6c61450","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleThermalRenderer.js#0002:setParticleThermalParams","exportIndex":2,"name":"setParticleThermalParams","kind":"function","signature":"setParticleThermalParams(renderer, { size = 1, quality = 1.0, lodBias = 1.0, cullThreshold = 0 })","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleTrailHistory.md","moduleTitle":"render/particles/ParticleTrailHistory","source":"engine/render/particles/ParticleTrailHistory.js","import":"/engine/render/particles/ParticleTrailHistory.js","sourceHash":"6a412001397160fd62408f2b48bde7bcac3386057964fc6179f48668659fa0a8","subsystem":"engine","recordType":"api-module","id":"module:engine/render/particles/ParticleTrailHistory.js","title":"render/particles/ParticleTrailHistory","summary":"ParticleTrailHistory.js - Per-Particle Trail Histories (GAP 26) Individual per-particle position history trails. Unlike ribbon trails (which connect sequential particles into a strip), this stores N frames of position history PER particle and renders each as a fading afterimage. Think sparks leaving comet tails, or tracers behind projectiles. Architecture: - Ring buffer: historyBuffer[maxParticles × historyLength × vec4] stores position snapshots - GPU compute shader shifts history and writes current position each frame - Render pass draws each trail point as a small billboard, fading by age Usage: const trails = createTrailHistorySystem(device, maxParticles, { historyLength: 16 }); initTrailHistoryBindGroups(trails, device, positionBuffer, velocityBuffer); // Each frame: updateTrailHistories(trails, device, particleCount); renderTrailHistories(pass, trails, frameBindGroup);","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleTrailHistory.md","moduleTitle":"render/particles/ParticleTrailHistory","source":"engine/render/particles/ParticleTrailHistory.js","import":"/engine/render/particles/ParticleTrailHistory.js","sourceHash":"6a412001397160fd62408f2b48bde7bcac3386057964fc6179f48668659fa0a8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleTrailHistory.js#0000:createTrailHistorySystem","exportIndex":0,"name":"createTrailHistorySystem","kind":"function","signature":"createTrailHistorySystem(device, maxParticles, config = {})","summary":"Create a per-particle trail history system."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleTrailHistory.md","moduleTitle":"render/particles/ParticleTrailHistory","source":"engine/render/particles/ParticleTrailHistory.js","import":"/engine/render/particles/ParticleTrailHistory.js","sourceHash":"6a412001397160fd62408f2b48bde7bcac3386057964fc6179f48668659fa0a8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleTrailHistory.js#0001:initTrailHistoryBindGroups","exportIndex":1,"name":"initTrailHistoryBindGroups","kind":"function","signature":"initTrailHistoryBindGroups(system, device, positionBuffer, velocityBuffer, metaBuffer)","summary":"Initialize bind groups."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleTrailHistory.md","moduleTitle":"render/particles/ParticleTrailHistory","source":"engine/render/particles/ParticleTrailHistory.js","import":"/engine/render/particles/ParticleTrailHistory.js","sourceHash":"6a412001397160fd62408f2b48bde7bcac3386057964fc6179f48668659fa0a8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleTrailHistory.js#0002:updateTrailHistories","exportIndex":2,"name":"updateTrailHistories","kind":"function","signature":"updateTrailHistories(system, device, particleCount, dt = 1/60)","summary":"Update trail histories (GPU compute pass). Call once per frame before rendering trails."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleTrailHistory.md","moduleTitle":"render/particles/ParticleTrailHistory","source":"engine/render/particles/ParticleTrailHistory.js","import":"/engine/render/particles/ParticleTrailHistory.js","sourceHash":"6a412001397160fd62408f2b48bde7bcac3386057964fc6179f48668659fa0a8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleTrailHistory.js#0003:renderTrailHistories","exportIndex":3,"name":"renderTrailHistories","kind":"function","signature":"renderTrailHistories(pass, system, frameBindGroup, particleCount)","summary":"Render trail histories as additive fading billboards."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleTrailHistory.md","moduleTitle":"render/particles/ParticleTrailHistory","source":"engine/render/particles/ParticleTrailHistory.js","import":"/engine/render/particles/ParticleTrailHistory.js","sourceHash":"6a412001397160fd62408f2b48bde7bcac3386057964fc6179f48668659fa0a8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleTrailHistory.js#0004:destroyTrailHistorySystem","exportIndex":4,"name":"destroyTrailHistorySystem","kind":"function","signature":"destroyTrailHistorySystem(system)","summary":"Destroy the system."}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleVelocityRenderer.md","moduleTitle":"render/particles/ParticleVelocityRenderer","source":"engine/render/particles/ParticleVelocityRenderer.js","import":"/engine/render/particles/ParticleVelocityRenderer.js","sourceHash":"e59bcc493497639b45fad6102acef8cc87f0b0f60f276bc5813aa729494fa150","subsystem":"engine","recordType":"api-module","id":"module:engine/render/particles/ParticleVelocityRenderer.js","title":"render/particles/ParticleVelocityRenderer","summary":"","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleVelocityRenderer.md","moduleTitle":"render/particles/ParticleVelocityRenderer","source":"engine/render/particles/ParticleVelocityRenderer.js","import":"/engine/render/particles/ParticleVelocityRenderer.js","sourceHash":"e59bcc493497639b45fad6102acef8cc87f0b0f60f276bc5813aa729494fa150","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleVelocityRenderer.js#0000:createParticleVelocityRenderer","exportIndex":0,"name":"createParticleVelocityRenderer","kind":"function","signature":"async createParticleVelocityRenderer(options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleVelocityRenderer.md","moduleTitle":"render/particles/ParticleVelocityRenderer","source":"engine/render/particles/ParticleVelocityRenderer.js","import":"/engine/render/particles/ParticleVelocityRenderer.js","sourceHash":"e59bcc493497639b45fad6102acef8cc87f0b0f60f276bc5813aa729494fa150","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleVelocityRenderer.js#0001:createParticleVelocityDataBindGroup","exportIndex":1,"name":"createParticleVelocityDataBindGroup","kind":"function","signature":"createParticleVelocityDataBindGroup(renderer, positionBuffer, metaBuffer, velocityBuffer)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/ParticleVelocityRenderer.md","moduleTitle":"render/particles/ParticleVelocityRenderer","source":"engine/render/particles/ParticleVelocityRenderer.js","import":"/engine/render/particles/ParticleVelocityRenderer.js","sourceHash":"e59bcc493497639b45fad6102acef8cc87f0b0f60f276bc5813aa729494fa150","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/ParticleVelocityRenderer.js#0002:setParticleVelocityParams","exportIndex":2,"name":"setParticleVelocityParams","kind":"function","signature":"setParticleVelocityParams(renderer, { size = 1, quality = 1.0, lodBias = 1.0, cullThreshold = 0 })","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/RopeGPURenderer.md","moduleTitle":"render/particles/RopeGPURenderer","source":"engine/render/particles/RopeGPURenderer.js","import":"/engine/render/particles/RopeGPURenderer.js","sourceHash":"1589b3aad62bf54ab336eb8f0bb1a2a6214b6f0afed7b6657cbf0e85fac503c8","subsystem":"engine","recordType":"api-module","id":"module:engine/render/particles/RopeGPURenderer.js","title":"render/particles/RopeGPURenderer","summary":"RopeGPURenderer.js - GPU-driven rope/tube mesh generation Generates tube geometry from rope particle positions entirely on the GPU. Reads particle positions from the simulation buffer and outputs vertex data for rendering as a triangle mesh. Features: - Compute shader generates tube vertices from particle chain - Configurable tube radius and segment count - Automatic tangent/normal/binormal frame calculation - Twist-resistant frame propagation (parallel transport) - Indirect draw support for variable-length ropes","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/RopeGPURenderer.md","moduleTitle":"render/particles/RopeGPURenderer","source":"engine/render/particles/RopeGPURenderer.js","import":"/engine/render/particles/RopeGPURenderer.js","sourceHash":"1589b3aad62bf54ab336eb8f0bb1a2a6214b6f0afed7b6657cbf0e85fac503c8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/RopeGPURenderer.js#0000:RopeGPURenderer","exportIndex":0,"name":"RopeGPURenderer","kind":"class","signature":"class RopeGPURenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/RopeGPURenderer.md","moduleTitle":"render/particles/RopeGPURenderer","source":"engine/render/particles/RopeGPURenderer.js","import":"/engine/render/particles/RopeGPURenderer.js","sourceHash":"1589b3aad62bf54ab336eb8f0bb1a2a6214b6f0afed7b6657cbf0e85fac503c8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/RopeGPURenderer.js#0001:createRopeGPURenderer","exportIndex":1,"name":"createRopeGPURenderer","kind":"function","signature":"createRopeGPURenderer(device, options = {})","summary":"Create a rope GPU renderer instance"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/RopeRenderSystem.md","moduleTitle":"render/particles/RopeRenderSystem","source":"engine/render/particles/RopeRenderSystem.js","import":"/engine/render/particles/RopeRenderSystem.js","sourceHash":"2a27f884d2c9584986ba0d2766217bcc2a7a94ba4c69c3ee8043f521986a8643","subsystem":"engine","recordType":"api-module","id":"module:engine/render/particles/RopeRenderSystem.js","title":"render/particles/RopeRenderSystem","summary":"RopeRenderSystem.js - Integration layer for GPU rope rendering Connects the RopeGPURenderer with the particle simulation world's rope chain registry. Manages multiple ropes and batches rendering.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/RopeRenderSystem.md","moduleTitle":"render/particles/RopeRenderSystem","source":"engine/render/particles/RopeRenderSystem.js","import":"/engine/render/particles/RopeRenderSystem.js","sourceHash":"2a27f884d2c9584986ba0d2766217bcc2a7a94ba4c69c3ee8043f521986a8643","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/RopeRenderSystem.js#0000:RopeRenderSystem","exportIndex":0,"name":"RopeRenderSystem","kind":"class","signature":"class RopeRenderSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/RopeRenderSystem.md","moduleTitle":"render/particles/RopeRenderSystem","source":"engine/render/particles/RopeRenderSystem.js","import":"/engine/render/particles/RopeRenderSystem.js","sourceHash":"2a27f884d2c9584986ba0d2766217bcc2a7a94ba4c69c3ee8043f521986a8643","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/RopeRenderSystem.js#0001:createRopeRenderSystem","exportIndex":1,"name":"createRopeRenderSystem","kind":"function","signature":"createRopeRenderSystem(device, options = {})","summary":"Create a rope render system"}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/billboard/index.md","moduleTitle":"render/particles/billboard/index","source":"engine/render/particles/billboard/index.js","import":"/engine/render/particles/billboard/index.js","sourceHash":"42ead5475a75091562ee89bc78a35ea570a9296214769181bd26c90f27abd51b","subsystem":"engine","recordType":"api-module","id":"module:engine/render/particles/billboard/index.js","title":"render/particles/billboard/index","summary":"billboard/index.js — Re-exports for billboard particle rendering.","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/custom/index.md","moduleTitle":"render/particles/custom/index","source":"engine/render/particles/custom/index.js","import":"/engine/render/particles/custom/index.js","sourceHash":"63b2e5a1df963262c53a8665fd95ff838df8f7e9bc636477b32627f8c2f7151d","subsystem":"engine","recordType":"api-module","id":"module:engine/render/particles/custom/index.js","title":"render/particles/custom/index","summary":"custom/index.js — Re-exports for custom particle effects.","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/debug/index.md","moduleTitle":"render/particles/debug/index","source":"engine/render/particles/debug/index.js","import":"/engine/render/particles/debug/index.js","sourceHash":"381f505a650a3801312e7a3911513a148301dd7f82094c6c51c509c5c76e8201","subsystem":"engine","recordType":"api-module","id":"module:engine/render/particles/debug/index.js","title":"render/particles/debug/index","summary":"debug/index.js — Re-exports for debug visualization renderers.","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/distortion/index.md","moduleTitle":"render/particles/distortion/index","source":"engine/render/particles/distortion/index.js","import":"/engine/render/particles/distortion/index.js","sourceHash":"122fd9109fd3a7fc64be14fae20ccd5a182173a28cfab0509bcdb04674dd68c2","subsystem":"engine","recordType":"api-module","id":"module:engine/render/particles/distortion/index.js","title":"render/particles/distortion/index","summary":"distortion/index.js — Re-exports for distortion and phase VFX rendering.","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-module","id":"module:engine/render/particles/index.js","title":"render/particles/index","summary":"Particle System Exports Barrel file for easy importing of all particle-related modules.","exportCount":61}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0000:EFFECT_PRESETS","exportIndex":0,"name":"EFFECT_PRESETS","kind":"re-export","signature":"EFFECT_PRESETS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0001:PHASE_VFX_DEFAULTS","exportIndex":1,"name":"PHASE_VFX_DEFAULTS","kind":"re-export","signature":"PHASE_VFX_DEFAULTS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0002:ParticleCollisionSDFSystem","exportIndex":2,"name":"ParticleCollisionSDFSystem","kind":"re-export","signature":"ParticleCollisionSDFSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0003:ParticleEffectRegistry","exportIndex":3,"name":"ParticleEffectRegistry","kind":"re-export","signature":"ParticleEffectRegistry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0004:SDF_HELPERS_WGSL","exportIndex":4,"name":"SDF_HELPERS_WGSL","kind":"re-export","signature":"SDF_HELPERS_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0005:applyEffectToEmitter","exportIndex":5,"name":"applyEffectToEmitter","kind":"re-export","signature":"applyEffectToEmitter","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0006:cloneEffect","exportIndex":6,"name":"cloneEffect","kind":"re-export","signature":"cloneEffect","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0007:compileEffect","exportIndex":7,"name":"compileEffect","kind":"re-export","signature":"compileEffect","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0008:compositeSPHSurface","exportIndex":8,"name":"compositeSPHSurface","kind":"re-export","signature":"compositeSPHSurface","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0009:createBlackbodyBindGroupLayout","exportIndex":9,"name":"createBlackbodyBindGroupLayout","kind":"re-export","signature":"createBlackbodyBindGroupLayout","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0010:createBlackbodySystem","exportIndex":10,"name":"createBlackbodySystem","kind":"re-export","signature":"createBlackbodySystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0011:createBondRenderer","exportIndex":11,"name":"createBondRenderer","kind":"re-export","signature":"createBondRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0012:createCollisionPipeline","exportIndex":12,"name":"createCollisionPipeline","kind":"re-export","signature":"createCollisionPipeline","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0013:createEffect","exportIndex":13,"name":"createEffect","kind":"re-export","signature":"createEffect","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0014:createEffectParamsData","exportIndex":14,"name":"createEffectParamsData","kind":"re-export","signature":"createEffectParamsData","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0015:createFieldRenderer","exportIndex":15,"name":"createFieldRenderer","kind":"re-export","signature":"createFieldRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0016:createOrbitalRenderer","exportIndex":16,"name":"createOrbitalRenderer","kind":"re-export","signature":"createOrbitalRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0017:createParticleCollisionSDFSystem","exportIndex":17,"name":"createParticleCollisionSDFSystem","kind":"re-export","signature":"createParticleCollisionSDFSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0018:createParticleSdfDataBindGroup","exportIndex":18,"name":"createParticleSdfDataBindGroup","kind":"re-export","signature":"createParticleSdfDataBindGroup","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0019:createParticleSdfRenderer","exportIndex":19,"name":"createParticleSdfRenderer","kind":"re-export","signature":"createParticleSdfRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0020:createPhaseVFXConfig","exportIndex":20,"name":"createPhaseVFXConfig","kind":"re-export","signature":"createPhaseVFXConfig","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0021:createSPHSurfaceRenderer","exportIndex":21,"name":"createSPHSurfaceRenderer","kind":"re-export","signature":"createSPHSurfaceRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0022:destroyBlackbodySystem","exportIndex":22,"name":"destroyBlackbodySystem","kind":"re-export","signature":"destroyBlackbodySystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0023:destroyBondRenderer","exportIndex":23,"name":"destroyBondRenderer","kind":"re-export","signature":"destroyBondRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0024:destroyFieldRenderer","exportIndex":24,"name":"destroyFieldRenderer","kind":"re-export","signature":"destroyFieldRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0025:destroyOrbitalRenderer","exportIndex":25,"name":"destroyOrbitalRenderer","kind":"re-export","signature":"destroyOrbitalRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0026:destroySPHSurfaceRenderer","exportIndex":26,"name":"destroySPHSurfaceRenderer","kind":"re-export","signature":"destroySPHSurfaceRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0027:generateCollisionShader","exportIndex":27,"name":"generateCollisionShader","kind":"re-export","signature":"generateCollisionShader","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0028:generateMultiEffectCollisionShader","exportIndex":28,"name":"generateMultiEffectCollisionShader","kind":"re-export","signature":"generateMultiEffectCollisionShader","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0029:generateVisualShader","exportIndex":29,"name":"generateVisualShader","kind":"re-export","signature":"generateVisualShader","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0030:getBlackbodyBindGroup","exportIndex":30,"name":"getBlackbodyBindGroup","kind":"re-export","signature":"getBlackbodyBindGroup","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0031:getCollisionSDFSystem","exportIndex":31,"name":"getCollisionSDFSystem","kind":"re-export","signature":"getCollisionSDFSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0032:getCompiledEffect","exportIndex":32,"name":"getCompiledEffect","kind":"re-export","signature":"getCompiledEffect","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0033:getEffectByIndex","exportIndex":33,"name":"getEffectByIndex","kind":"re-export","signature":"getEffectByIndex","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0034:getEffectForRendering","exportIndex":34,"name":"getEffectForRendering","kind":"re-export","signature":"getEffectForRendering","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0035:getEffectIndex","exportIndex":35,"name":"getEffectIndex","kind":"re-export","signature":"getEffectIndex","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0036:getParticleEffectRegistry","exportIndex":36,"name":"getParticleEffectRegistry","kind":"re-export","signature":"getParticleEffectRegistry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0037:getParticleSDF","exportIndex":37,"name":"getParticleSDF","kind":"re-export","signature":"getParticleSDF","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0038:getPhaseVFXShader","exportIndex":38,"name":"getPhaseVFXShader","kind":"re-export","signature":"getPhaseVFXShader","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0039:getPreset","exportIndex":39,"name":"getPreset","kind":"re-export","signature":"getPreset","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0040:getPresets","exportIndex":40,"name":"getPresets","kind":"re-export","signature":"getPresets","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0041:initBondRendererBindGroups","exportIndex":41,"name":"initBondRendererBindGroups","kind":"re-export","signature":"initBondRendererBindGroups","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0042:initCustomParticleEffects","exportIndex":42,"name":"initCustomParticleEffects","kind":"re-export","signature":"initCustomParticleEffects","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0043:initFieldRendererBindGroups","exportIndex":43,"name":"initFieldRendererBindGroups","kind":"re-export","signature":"initFieldRendererBindGroups","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0044:initOrbitalBindGroups","exportIndex":44,"name":"initOrbitalBindGroups","kind":"re-export","signature":"initOrbitalBindGroups","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0045:initParticleEffectRegistry","exportIndex":45,"name":"initParticleEffectRegistry","kind":"re-export","signature":"initParticleEffectRegistry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0046:initSPHCompositeBindGroup","exportIndex":46,"name":"initSPHCompositeBindGroup","kind":"re-export","signature":"initSPHCompositeBindGroup","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0047:initSPHSurfaceBindGroups","exportIndex":47,"name":"initSPHSurfaceBindGroups","kind":"re-export","signature":"initSPHSurfaceBindGroups","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0048:isCustomEffectsInitialized","exportIndex":48,"name":"isCustomEffectsInitialized","kind":"re-export","signature":"isCustomEffectsInitialized","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0049:phaseVFXWGSL","exportIndex":49,"name":"phaseVFXWGSL","kind":"re-export","signature":"phaseVFXWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0050:registerEffectForCollision","exportIndex":50,"name":"registerEffectForCollision","kind":"re-export","signature":"registerEffectForCollision","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0051:renderBonds","exportIndex":51,"name":"renderBonds","kind":"re-export","signature":"renderBonds","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0052:renderFieldArrows","exportIndex":52,"name":"renderFieldArrows","kind":"re-export","signature":"renderFieldArrows","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0053:renderOrbitals","exportIndex":53,"name":"renderOrbitals","kind":"re-export","signature":"renderOrbitals","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0054:renderSPHSurface","exportIndex":54,"name":"renderSPHSurface","kind":"re-export","signature":"renderSPHSurface","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0055:setBlackbodyEmission","exportIndex":55,"name":"setBlackbodyEmission","kind":"re-export","signature":"setBlackbodyEmission","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0056:setParticleSdfParams","exportIndex":56,"name":"setParticleSdfParams","kind":"re-export","signature":"setParticleSdfParams","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0057:setSPHSurfaceTint","exportIndex":57,"name":"setSPHSurfaceTint","kind":"re-export","signature":"setSPHSurfaceTint","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0058:updateFieldProbes","exportIndex":58,"name":"updateFieldProbes","kind":"re-export","signature":"updateFieldProbes","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0059:uploadBonds","exportIndex":59,"name":"uploadBonds","kind":"re-export","signature":"uploadBonds","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/index.md","moduleTitle":"render/particles/index","source":"engine/render/particles/index.js","import":"/engine/render/particles/index.js","sourceHash":"1ddf819acb8d7b12caf57b80e2d7571bc47b6ac04799090494d87a9397060bf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/particles/index.js#0060:validateEffect","exportIndex":60,"name":"validateEffect","kind":"re-export","signature":"validateEffect","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/mesh/index.md","moduleTitle":"render/particles/mesh/index","source":"engine/render/particles/mesh/index.js","import":"/engine/render/particles/mesh/index.js","sourceHash":"a00238d9b03e517115893bc4297dfeafef6293a685e4006cab04ee443090c24a","subsystem":"engine","recordType":"api-module","id":"module:engine/render/particles/mesh/index.js","title":"render/particles/mesh/index","summary":"mesh/index.js — Re-exports for mesh particle rendering.","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/rope/index.md","moduleTitle":"render/particles/rope/index","source":"engine/render/particles/rope/index.js","import":"/engine/render/particles/rope/index.js","sourceHash":"50393f5a83eb8809569900db5f296835a7aa1119afde0eb3843f8754c089fb33","subsystem":"engine","recordType":"api-module","id":"module:engine/render/particles/rope/index.js","title":"render/particles/rope/index","summary":"rope/index.js — Re-exports for rope/wire rendering.","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/sdf/index.md","moduleTitle":"render/particles/sdf/index","source":"engine/render/particles/sdf/index.js","import":"/engine/render/particles/sdf/index.js","sourceHash":"1a81c9d4fa5068dc143dd0d637ca6a471d9bcff5ce6195aca8ba2a8c783e6f5f","subsystem":"engine","recordType":"api-module","id":"module:engine/render/particles/sdf/index.js","title":"render/particles/sdf/index","summary":"sdf/index.js — Re-exports for SDF volumetric particle rendering.","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/surface/index.md","moduleTitle":"render/particles/surface/index","source":"engine/render/particles/surface/index.js","import":"/engine/render/particles/surface/index.js","sourceHash":"3c66e3f75515adaed25a56a79d814ad5b771c2aa995c6b92204be6ad51de0f4c","subsystem":"engine","recordType":"api-module","id":"module:engine/render/particles/surface/index.js","title":"render/particles/surface/index","summary":"surface/index.js — Re-exports for SSFR surface rendering pipeline.","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/render/particles/trail/index.md","moduleTitle":"render/particles/trail/index","source":"engine/render/particles/trail/index.js","import":"/engine/render/particles/trail/index.js","sourceHash":"e4cc1e091ed3eb9f370bcb661aa0941dbcf8e7c5ab38325bc7bccaaf5551b43c","subsystem":"engine","recordType":"api-module","id":"module:engine/render/particles/trail/index.js","title":"render/particles/trail/index","summary":"trail/index.js — Re-exports for trail and beam rendering.","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/AbyssalCameraRig.md","moduleTitle":"render/passes/AbyssalCameraRig","source":"engine/render/passes/AbyssalCameraRig.js","import":"/engine/render/passes/AbyssalCameraRig.js","sourceHash":"ede5f517cddb196883b925e8c6c82cef5c81cc7f9a446980bee7602b678dc221","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/AbyssalCameraRig.js","title":"render/passes/AbyssalCameraRig","summary":"Applies a restrained floating-camera offset to isolated DOM scenery planes. WebGPU/2D canvases and document-root styles are deliberately excluded so animation cannot invalidate the page or disrupt GPU presentation textures.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/AbyssalCameraRig.md","moduleTitle":"render/passes/AbyssalCameraRig","source":"engine/render/passes/AbyssalCameraRig.js","import":"/engine/render/passes/AbyssalCameraRig.js","sourceHash":"ede5f517cddb196883b925e8c6c82cef5c81cc7f9a446980bee7602b678dc221","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/AbyssalCameraRig.js#0000:AbyssalCameraRig","exportIndex":0,"name":"AbyssalCameraRig","kind":"class","signature":"class AbyssalCameraRig","summary":"Applies a restrained floating-camera offset to isolated DOM scenery planes. WebGPU/2D canvases and document-root styles are deliberately excluded so animation cannot invalidate the page or disrupt GPU presentation textures."}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/AbyssalCameraRig.md","moduleTitle":"render/passes/AbyssalCameraRig","source":"engine/render/passes/AbyssalCameraRig.js","import":"/engine/render/passes/AbyssalCameraRig.js","sourceHash":"ede5f517cddb196883b925e8c6c82cef5c81cc7f9a446980bee7602b678dc221","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/AbyssalCameraRig.js#0001:startAbyssalCameraRig","exportIndex":1,"name":"startAbyssalCameraRig","kind":"function","signature":"startAbyssalCameraRig(options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/AbyssalDiveTeam.md","moduleTitle":"render/passes/AbyssalDiveTeam","source":"engine/render/passes/AbyssalDiveTeam.js","import":"/engine/render/passes/AbyssalDiveTeam.js","sourceHash":"5463887ff1e838b78090d3d1fc0ec01c084e592795f0cffc7636fd4c7d2c878f","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/AbyssalDiveTeam.js","title":"render/passes/AbyssalDiveTeam","summary":"Authored three-person dive team for the abyssal landing scene. The team uses a deterministic mission-state controller instead of random action switching: swim, illuminate, inspect, signal, then inspect again. Individual response, phase, depth, and kick timing keep the formation alive without compromising buddy proximity or opaque paint ordering.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/AbyssalDiveTeam.md","moduleTitle":"render/passes/AbyssalDiveTeam","source":"engine/render/passes/AbyssalDiveTeam.js","import":"/engine/render/passes/AbyssalDiveTeam.js","sourceHash":"5463887ff1e838b78090d3d1fc0ec01c084e592795f0cffc7636fd4c7d2c878f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/AbyssalDiveTeam.js#0000:AbyssalDiveTeam","exportIndex":0,"name":"AbyssalDiveTeam","kind":"class","signature":"class AbyssalDiveTeam","summary":"Authored three-person dive team for the abyssal landing scene. The team uses a deterministic mission-state controller instead of random action switching: swim, illuminate, inspect, signal, then inspect again. Individual response, phase, depth, and kick timing keep the formation alive without compromising buddy proximity or opaque paint ordering."}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/AbyssalDiveTeam.md","moduleTitle":"render/passes/AbyssalDiveTeam","source":"engine/render/passes/AbyssalDiveTeam.js","import":"/engine/render/passes/AbyssalDiveTeam.js","sourceHash":"5463887ff1e838b78090d3d1fc0ec01c084e592795f0cffc7636fd4c7d2c878f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/AbyssalDiveTeam.js#0001:startAbyssalDiveTeam","exportIndex":1,"name":"startAbyssalDiveTeam","kind":"function","signature":"startAbyssalDiveTeam(layers, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/AbyssalFaunaField.md","moduleTitle":"render/passes/AbyssalFaunaField","source":"engine/render/passes/AbyssalFaunaField.js","import":"/engine/render/passes/AbyssalFaunaField.js","sourceHash":"9ec30171f5b64a65660e1786d28900eb8f2b6a7782dfb7955bfd8548cbbbda13","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/AbyssalFaunaField.js","title":"render/passes/AbyssalFaunaField","summary":"Small DOM fauna field for the authored abyssal landing scene. Local flock rules are deliberately limited to fish on the same depth plane.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/AbyssalFaunaField.md","moduleTitle":"render/passes/AbyssalFaunaField","source":"engine/render/passes/AbyssalFaunaField.js","import":"/engine/render/passes/AbyssalFaunaField.js","sourceHash":"9ec30171f5b64a65660e1786d28900eb8f2b6a7782dfb7955bfd8548cbbbda13","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/AbyssalFaunaField.js#0000:AbyssalFaunaField","exportIndex":0,"name":"AbyssalFaunaField","kind":"class","signature":"class AbyssalFaunaField","summary":"Small DOM fauna field for the authored abyssal landing scene. Local flock rules are deliberately limited to fish on the same depth plane."}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/AbyssalFaunaField.md","moduleTitle":"render/passes/AbyssalFaunaField","source":"engine/render/passes/AbyssalFaunaField.js","import":"/engine/render/passes/AbyssalFaunaField.js","sourceHash":"9ec30171f5b64a65660e1786d28900eb8f2b6a7782dfb7955bfd8548cbbbda13","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/AbyssalFaunaField.js#0001:startAbyssalFaunaField","exportIndex":1,"name":"startAbyssalFaunaField","kind":"function","signature":"startAbyssalFaunaField(layers, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/AbyssalSmokeAnimator.md","moduleTitle":"render/passes/AbyssalSmokeAnimator","source":"engine/render/passes/AbyssalSmokeAnimator.js","import":"/engine/render/passes/AbyssalSmokeAnimator.js","sourceHash":"31b63e2426264412c11b1b563200452b7f68badd0a3fe80a14c0552bd426aeb6","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/AbyssalSmokeAnimator.js","title":"render/passes/AbyssalSmokeAnimator","summary":"Cross-faded cel animator for the authored abyssal mineral plume. Two staggered lifecycles share the registered atlas. Each lifecycle changes drawing, rises, spreads, sheds opacity, and disappears while its successor is already forming at the vent. Adjacent-frame alpha always sums to one, which prevents the bright flashes produced by transition races.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/AbyssalSmokeAnimator.md","moduleTitle":"render/passes/AbyssalSmokeAnimator","source":"engine/render/passes/AbyssalSmokeAnimator.js","import":"/engine/render/passes/AbyssalSmokeAnimator.js","sourceHash":"31b63e2426264412c11b1b563200452b7f68badd0a3fe80a14c0552bd426aeb6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/AbyssalSmokeAnimator.js#0000:AbyssalSmokeAnimator","exportIndex":0,"name":"AbyssalSmokeAnimator","kind":"class","signature":"class AbyssalSmokeAnimator","summary":"Cross-faded cel animator for the authored abyssal mineral plume. Two staggered lifecycles share the registered atlas. Each lifecycle changes drawing, rises, spreads, sheds opacity, and disappears while its successor is already forming at the vent. Adjacent-frame alpha always sums to one, which prevents the bright flashes produced by transition races."}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/AbyssalSmokeAnimator.md","moduleTitle":"render/passes/AbyssalSmokeAnimator","source":"engine/render/passes/AbyssalSmokeAnimator.js","import":"/engine/render/passes/AbyssalSmokeAnimator.js","sourceHash":"31b63e2426264412c11b1b563200452b7f68badd0a3fe80a14c0552bd426aeb6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/AbyssalSmokeAnimator.js#0001:startAbyssalSmokeAnimator","exportIndex":1,"name":"startAbyssalSmokeAnimator","kind":"function","signature":"startAbyssalSmokeAnimator(stage, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/AreaResamplePass.md","moduleTitle":"render/passes/AreaResamplePass","source":"engine/render/passes/AreaResamplePass.js","import":"/engine/render/passes/AreaResamplePass.js","sourceHash":"a8cd97fbd83e7df2e2abf1eadbdb455360818dd17839bc72ec8faedf75215b56","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/AreaResamplePass.js","title":"render/passes/AreaResamplePass","summary":"AreaResamplePass - GPU-accelerated area-weighted resampling Better quality than bilinear for arbitrary scale factors. Especially useful for upscaling low-res renders.","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/AreaResamplePass.md","moduleTitle":"render/passes/AreaResamplePass","source":"engine/render/passes/AreaResamplePass.js","import":"/engine/render/passes/AreaResamplePass.js","sourceHash":"a8cd97fbd83e7df2e2abf1eadbdb455360818dd17839bc72ec8faedf75215b56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/AreaResamplePass.js#0000:AreaResamplePass","exportIndex":0,"name":"AreaResamplePass","kind":"class","signature":"class AreaResamplePass","summary":"AreaResamplePass - GPU-accelerated area-weighted resampling Better quality than bilinear for arbitrary scale factors. Especially useful for upscaling low-res renders."}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/AreaResamplePass.md","moduleTitle":"render/passes/AreaResamplePass","source":"engine/render/passes/AreaResamplePass.js","import":"/engine/render/passes/AreaResamplePass.js","sourceHash":"a8cd97fbd83e7df2e2abf1eadbdb455360818dd17839bc72ec8faedf75215b56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/AreaResamplePass.js#0001:areaResampleCPU","exportIndex":1,"name":"areaResampleCPU","kind":"function","signature":"areaResampleCPU(input, outputWidth, outputHeight)","summary":"CPU area-weighted resample for ImageData (fallback or small images)"}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/AreaResamplePass.md","moduleTitle":"render/passes/AreaResamplePass","source":"engine/render/passes/AreaResamplePass.js","import":"/engine/render/passes/AreaResamplePass.js","sourceHash":"a8cd97fbd83e7df2e2abf1eadbdb455360818dd17839bc72ec8faedf75215b56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/AreaResamplePass.js#0002:AREA_RESAMPLE_SHADER","exportIndex":2,"name":"AREA_RESAMPLE_SHADER","kind":"re-export","signature":"AREA_RESAMPLE_SHADER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/AreaResamplePass.md","moduleTitle":"render/passes/AreaResamplePass","source":"engine/render/passes/AreaResamplePass.js","import":"/engine/render/passes/AreaResamplePass.js","sourceHash":"a8cd97fbd83e7df2e2abf1eadbdb455360818dd17839bc72ec8faedf75215b56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/AreaResamplePass.js#0003:BLIT_FRAGMENT_SHADER","exportIndex":3,"name":"BLIT_FRAGMENT_SHADER","kind":"re-export","signature":"BLIT_FRAGMENT_SHADER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/AreaResamplePass.md","moduleTitle":"render/passes/AreaResamplePass","source":"engine/render/passes/AreaResamplePass.js","import":"/engine/render/passes/AreaResamplePass.js","sourceHash":"a8cd97fbd83e7df2e2abf1eadbdb455360818dd17839bc72ec8faedf75215b56","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/AreaResamplePass.js#0004:BLIT_VERTEX_SHADER","exportIndex":4,"name":"BLIT_VERTEX_SHADER","kind":"re-export","signature":"BLIT_VERTEX_SHADER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/AutoExposurePass.md","moduleTitle":"render/passes/AutoExposurePass","source":"engine/render/passes/AutoExposurePass.js","import":"/engine/render/passes/AutoExposurePass.js","sourceHash":"289bb72a8a4f7fe605398825141be6375a86057a322e867d69adf22137e893ce","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/AutoExposurePass.js","title":"render/passes/AutoExposurePass","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/AutoExposurePass.md","moduleTitle":"render/passes/AutoExposurePass","source":"engine/render/passes/AutoExposurePass.js","import":"/engine/render/passes/AutoExposurePass.js","sourceHash":"289bb72a8a4f7fe605398825141be6375a86057a322e867d69adf22137e893ce","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/AutoExposurePass.js#0000:AutoExposurePass","exportIndex":0,"name":"AutoExposurePass","kind":"class","signature":"class AutoExposurePass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/BloomPass.md","moduleTitle":"render/passes/BloomPass","source":"engine/render/passes/BloomPass.js","import":"/engine/render/passes/BloomPass.js","sourceHash":"2ed0e4b0dc53eecbd555e7c0e7b984d0919a633d5a263e76511f5b1a4e7609b1","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/BloomPass.js","title":"render/passes/BloomPass","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/BloomPass.md","moduleTitle":"render/passes/BloomPass","source":"engine/render/passes/BloomPass.js","import":"/engine/render/passes/BloomPass.js","sourceHash":"2ed0e4b0dc53eecbd555e7c0e7b984d0919a633d5a263e76511f5b1a4e7609b1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/BloomPass.js#0000:BloomPass","exportIndex":0,"name":"BloomPass","kind":"class","signature":"class BloomPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/CascadeMetrics.md","moduleTitle":"render/passes/CascadeMetrics","source":"engine/render/passes/CascadeMetrics.js","import":"/engine/render/passes/CascadeMetrics.js","sourceHash":"9a7e80605570ddda58395922a37e9ceb4b430bd125dd2b1ce6b250f322237b62","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/CascadeMetrics.js","title":"render/passes/CascadeMetrics","summary":"CascadeMetrics - Central metrics collection for cascaded chunk system","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/CascadeMetrics.md","moduleTitle":"render/passes/CascadeMetrics","source":"engine/render/passes/CascadeMetrics.js","import":"/engine/render/passes/CascadeMetrics.js","sourceHash":"9a7e80605570ddda58395922a37e9ceb4b430bd125dd2b1ce6b250f322237b62","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/CascadeMetrics.js#0000:CascadeMetrics","exportIndex":0,"name":"CascadeMetrics","kind":"class","signature":"class CascadeMetrics","summary":"CascadeMetrics - Central metrics collection for cascaded chunk system"}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/CascadeMetrics.md","moduleTitle":"render/passes/CascadeMetrics","source":"engine/render/passes/CascadeMetrics.js","import":"/engine/render/passes/CascadeMetrics.js","sourceHash":"9a7e80605570ddda58395922a37e9ceb4b430bd125dd2b1ce6b250f322237b62","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/CascadeMetrics.js#0001:getMetrics","exportIndex":1,"name":"getMetrics","kind":"function","signature":"getMetrics()","summary":"Get global metrics instance"}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/CascadeMetrics.md","moduleTitle":"render/passes/CascadeMetrics","source":"engine/render/passes/CascadeMetrics.js","import":"/engine/render/passes/CascadeMetrics.js","sourceHash":"9a7e80605570ddda58395922a37e9ceb4b430bd125dd2b1ce6b250f322237b62","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/CascadeMetrics.js#0002:resetMetrics","exportIndex":2,"name":"resetMetrics","kind":"function","signature":"resetMetrics()","summary":"Reset global metrics"}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/CascadeMetrics.md","moduleTitle":"render/passes/CascadeMetrics","source":"engine/render/passes/CascadeMetrics.js","import":"/engine/render/passes/CascadeMetrics.js","sourceHash":"9a7e80605570ddda58395922a37e9ceb4b430bd125dd2b1ce6b250f322237b62","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/CascadeMetrics.js#0003:CATEGORY","exportIndex":3,"name":"CATEGORY","kind":"re-export","signature":"CATEGORY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/CascadeMetrics.md","moduleTitle":"render/passes/CascadeMetrics","source":"engine/render/passes/CascadeMetrics.js","import":"/engine/render/passes/CascadeMetrics.js","sourceHash":"9a7e80605570ddda58395922a37e9ceb4b430bd125dd2b1ce6b250f322237b62","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/CascadeMetrics.js#0004:Counter","exportIndex":4,"name":"Counter","kind":"re-export","signature":"Counter","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/CascadeMetrics.md","moduleTitle":"render/passes/CascadeMetrics","source":"engine/render/passes/CascadeMetrics.js","import":"/engine/render/passes/CascadeMetrics.js","sourceHash":"9a7e80605570ddda58395922a37e9ceb4b430bd125dd2b1ce6b250f322237b62","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/CascadeMetrics.js#0005:RollingStats","exportIndex":5,"name":"RollingStats","kind":"re-export","signature":"RollingStats","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/CascadedShadows.md","moduleTitle":"render/passes/CascadedShadows","source":"engine/render/passes/CascadedShadows.js","import":"/engine/render/passes/CascadedShadows.js","sourceHash":"f86d4f9679e598a56f470fed8f80e7d1e637fdf4f131687b762ab5f72d1f3f67","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/CascadedShadows.js","title":"render/passes/CascadedShadows","summary":"CascadedShadowMap - Multi-cascade shadow mapping system","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/CascadedShadows.md","moduleTitle":"render/passes/CascadedShadows","source":"engine/render/passes/CascadedShadows.js","import":"/engine/render/passes/CascadedShadows.js","sourceHash":"f86d4f9679e598a56f470fed8f80e7d1e637fdf4f131687b762ab5f72d1f3f67","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/CascadedShadows.js#0000:CascadedShadowMap","exportIndex":0,"name":"CascadedShadowMap","kind":"class","signature":"class CascadedShadowMap","summary":"CascadedShadowMap - Multi-cascade shadow mapping system"}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/ChromaticAberrationPass.md","moduleTitle":"render/passes/ChromaticAberrationPass","source":"engine/render/passes/ChromaticAberrationPass.js","import":"/engine/render/passes/ChromaticAberrationPass.js","sourceHash":"7faa00915cdb9553b9ed6a6dea1e9a31f17f7529b45f205d6fd624204387894d","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/ChromaticAberrationPass.js","title":"render/passes/ChromaticAberrationPass","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/ChromaticAberrationPass.md","moduleTitle":"render/passes/ChromaticAberrationPass","source":"engine/render/passes/ChromaticAberrationPass.js","import":"/engine/render/passes/ChromaticAberrationPass.js","sourceHash":"7faa00915cdb9553b9ed6a6dea1e9a31f17f7529b45f205d6fd624204387894d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/ChromaticAberrationPass.js#0000:ChromaticAberrationPass","exportIndex":0,"name":"ChromaticAberrationPass","kind":"class","signature":"class ChromaticAberrationPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/ClearPass.md","moduleTitle":"render/passes/ClearPass","source":"engine/render/passes/ClearPass.js","import":"/engine/render/passes/ClearPass.js","sourceHash":"da8f91ab513e5ebaa7c5217e2c5e32fc8eb35fd9c1dc8796e390349739618863","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/ClearPass.js","title":"render/passes/ClearPass","summary":"","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/ClearPass.md","moduleTitle":"render/passes/ClearPass","source":"engine/render/passes/ClearPass.js","import":"/engine/render/passes/ClearPass.js","sourceHash":"da8f91ab513e5ebaa7c5217e2c5e32fc8eb35fd9c1dc8796e390349739618863","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/ClearPass.js#0000:ensureColorAttachmentResource","exportIndex":0,"name":"ensureColorAttachmentResource","kind":"function","signature":"ensureColorAttachmentResource(frameGraph, name, descriptor)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/ClearPass.md","moduleTitle":"render/passes/ClearPass","source":"engine/render/passes/ClearPass.js","import":"/engine/render/passes/ClearPass.js","sourceHash":"da8f91ab513e5ebaa7c5217e2c5e32fc8eb35fd9c1dc8796e390349739618863","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/ClearPass.js#0001:addCanvasClearPass","exportIndex":1,"name":"addCanvasClearPass","kind":"function","signature":"addCanvasClearPass(frameGraph, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/ClearPass.md","moduleTitle":"render/passes/ClearPass","source":"engine/render/passes/ClearPass.js","import":"/engine/render/passes/ClearPass.js","sourceHash":"da8f91ab513e5ebaa7c5217e2c5e32fc8eb35fd9c1dc8796e390349739618863","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/ClearPass.js#0002:ClearPass","exportIndex":2,"name":"ClearPass","kind":"re-export","signature":"ClearPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/ClothDebugController.md","moduleTitle":"render/passes/ClothDebugController","source":"engine/render/passes/ClothDebugController.js","import":"/engine/render/passes/ClothDebugController.js","sourceHash":"7043267305dd46eeae61aa140adf69965f2a6c21658d989e05e04b3d8655623c","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/ClothDebugController.js","title":"render/passes/ClothDebugController","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/ClothDebugController.md","moduleTitle":"render/passes/ClothDebugController","source":"engine/render/passes/ClothDebugController.js","import":"/engine/render/passes/ClothDebugController.js","sourceHash":"7043267305dd46eeae61aa140adf69965f2a6c21658d989e05e04b3d8655623c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/ClothDebugController.js#0000:createClothDebugController","exportIndex":0,"name":"createClothDebugController","kind":"function","signature":"createClothDebugController(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/ClothDebugController.md","moduleTitle":"render/passes/ClothDebugController","source":"engine/render/passes/ClothDebugController.js","import":"/engine/render/passes/ClothDebugController.js","sourceHash":"7043267305dd46eeae61aa140adf69965f2a6c21658d989e05e04b3d8655623c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/ClothDebugController.js#0001:ClothDebugController","exportIndex":1,"name":"ClothDebugController","kind":"re-export","signature":"ClothDebugController","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/ClothDebugPass.md","moduleTitle":"render/passes/ClothDebugPass","source":"engine/render/passes/ClothDebugPass.js","import":"/engine/render/passes/ClothDebugPass.js","sourceHash":"61c278b9e7bacc033ef3bbb4994b1b42b600d6d287536e4fbb08fca30996b501","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/ClothDebugPass.js","title":"render/passes/ClothDebugPass","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/ClothDebugPass.md","moduleTitle":"render/passes/ClothDebugPass","source":"engine/render/passes/ClothDebugPass.js","import":"/engine/render/passes/ClothDebugPass.js","sourceHash":"61c278b9e7bacc033ef3bbb4994b1b42b600d6d287536e4fbb08fca30996b501","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/ClothDebugPass.js#0000:addClothDebugPass","exportIndex":0,"name":"addClothDebugPass","kind":"function","signature":"addClothDebugPass(frameGraph, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/ClothDebugPass.md","moduleTitle":"render/passes/ClothDebugPass","source":"engine/render/passes/ClothDebugPass.js","import":"/engine/render/passes/ClothDebugPass.js","sourceHash":"61c278b9e7bacc033ef3bbb4994b1b42b600d6d287536e4fbb08fca30996b501","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/ClothDebugPass.js#0001:ClothDebugPass","exportIndex":1,"name":"ClothDebugPass","kind":"re-export","signature":"ClothDebugPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/ColorGradingPass.md","moduleTitle":"render/passes/ColorGradingPass","source":"engine/render/passes/ColorGradingPass.js","import":"/engine/render/passes/ColorGradingPass.js","sourceHash":"30fbda12e56a0818808b266f74e7ac3bcc4c04b7d2c84aa5ce58d25764f03ebc","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/ColorGradingPass.js","title":"render/passes/ColorGradingPass","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/ColorGradingPass.md","moduleTitle":"render/passes/ColorGradingPass","source":"engine/render/passes/ColorGradingPass.js","import":"/engine/render/passes/ColorGradingPass.js","sourceHash":"30fbda12e56a0818808b266f74e7ac3bcc4c04b7d2c84aa5ce58d25764f03ebc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/ColorGradingPass.js#0000:ColorGradingPass","exportIndex":0,"name":"ColorGradingPass","kind":"class","signature":"class ColorGradingPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/ContactShadowsPass.md","moduleTitle":"render/passes/ContactShadowsPass","source":"engine/render/passes/ContactShadowsPass.js","import":"/engine/render/passes/ContactShadowsPass.js","sourceHash":"7114d9f93ca4eb815592c5f0e05d1fe02c81d85aabc8844c95f6fc0bc4b44ed4","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/ContactShadowsPass.js","title":"render/passes/ContactShadowsPass","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/ContactShadowsPass.md","moduleTitle":"render/passes/ContactShadowsPass","source":"engine/render/passes/ContactShadowsPass.js","import":"/engine/render/passes/ContactShadowsPass.js","sourceHash":"7114d9f93ca4eb815592c5f0e05d1fe02c81d85aabc8844c95f6fc0bc4b44ed4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/ContactShadowsPass.js#0000:ContactShadowsPass","exportIndex":0,"name":"ContactShadowsPass","kind":"class","signature":"class ContactShadowsPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/DepthOfFieldPass.md","moduleTitle":"render/passes/DepthOfFieldPass","source":"engine/render/passes/DepthOfFieldPass.js","import":"/engine/render/passes/DepthOfFieldPass.js","sourceHash":"f8cbe3e254df56d9bb05aa7d703bcee9597720cf687eb42826277adbe2f1459d","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/DepthOfFieldPass.js","title":"render/passes/DepthOfFieldPass","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/DepthOfFieldPass.md","moduleTitle":"render/passes/DepthOfFieldPass","source":"engine/render/passes/DepthOfFieldPass.js","import":"/engine/render/passes/DepthOfFieldPass.js","sourceHash":"f8cbe3e254df56d9bb05aa7d703bcee9597720cf687eb42826277adbe2f1459d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/DepthOfFieldPass.js#0000:DepthOfFieldPass","exportIndex":0,"name":"DepthOfFieldPass","kind":"class","signature":"class DepthOfFieldPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/DepthVisualizerPass.md","moduleTitle":"render/passes/DepthVisualizerPass","source":"engine/render/passes/DepthVisualizerPass.js","import":"/engine/render/passes/DepthVisualizerPass.js","sourceHash":"dd18538bcb26873929f5233d2b6d479b245178a6597376ee1f0ebc32e1160a6f","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/DepthVisualizerPass.js","title":"render/passes/DepthVisualizerPass","summary":"Execute depth visualizer pass","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/DepthVisualizerPass.md","moduleTitle":"render/passes/DepthVisualizerPass","source":"engine/render/passes/DepthVisualizerPass.js","import":"/engine/render/passes/DepthVisualizerPass.js","sourceHash":"dd18538bcb26873929f5233d2b6d479b245178a6597376ee1f0ebc32e1160a6f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/DepthVisualizerPass.js#0000:createDepthVisualizerPass","exportIndex":0,"name":"createDepthVisualizerPass","kind":"function","signature":"async createDepthVisualizerPass(device, outputFormat)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/DepthVisualizerPass.md","moduleTitle":"render/passes/DepthVisualizerPass","source":"engine/render/passes/DepthVisualizerPass.js","import":"/engine/render/passes/DepthVisualizerPass.js","sourceHash":"dd18538bcb26873929f5233d2b6d479b245178a6597376ee1f0ebc32e1160a6f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/DepthVisualizerPass.js#0001:executeDepthVisualizerPass","exportIndex":1,"name":"executeDepthVisualizerPass","kind":"function","signature":"executeDepthVisualizerPass(pass, visualizer, depthTexture, params = {})","summary":"Execute depth visualizer pass"}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/FSRPass.md","moduleTitle":"render/passes/FSRPass","source":"engine/render/passes/FSRPass.js","import":"/engine/render/passes/FSRPass.js","sourceHash":"3ab53526f3bc4bd4e6e8390dc97a0b77103973a2c56c98d35c1701d1df1ad4b4","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/FSRPass.js","title":"render/passes/FSRPass","summary":"FSRPass.js - FidelityFX Super Resolution 1.0 (Spatial Upscaler) Pure WebGPU/WGSL port of AMD's open-source FSR 1.0 algorithm. Two-pass spatial upscaler: EASU (Edge-Adaptive Spatial Upsampling) + RCAS (Sharpening). Use cases: - Fallback when temporal history is invalid (camera cuts, teleports) - Standalone spatial upscaling for non-temporal content - Combined with TSR as the spatial component Pipeline: Low-res input → EASU (directional upscale) → RCAS (adaptive sharpen) → Full-res output EASU: Analyzes local edge direction and applies a directionally-aware 12-tap filter. Detects edges via luminance gradients and stretches the filter kernel along the edge. This preserves edge sharpness while smoothing along edges (not across them). RCAS: Contrast-adaptive sharpening that avoids ringing artifacts. Computes local contrast from a cross-shaped sample pattern and applies sharpening proportional to inverse contrast (sharp where flat, gentle on edges).","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/FSRPass.md","moduleTitle":"render/passes/FSRPass","source":"engine/render/passes/FSRPass.js","import":"/engine/render/passes/FSRPass.js","sourceHash":"3ab53526f3bc4bd4e6e8390dc97a0b77103973a2c56c98d35c1701d1df1ad4b4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/FSRPass.js#0000:FSRPass","exportIndex":0,"name":"FSRPass","kind":"class","signature":"class FSRPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/FXAAPass.md","moduleTitle":"render/passes/FXAAPass","source":"engine/render/passes/FXAAPass.js","import":"/engine/render/passes/FXAAPass.js","sourceHash":"9f6dd69609017fd06156283221efb5b3bc07ca461c392219fa174c772f41885f","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/FXAAPass.js","title":"render/passes/FXAAPass","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/FXAAPass.md","moduleTitle":"render/passes/FXAAPass","source":"engine/render/passes/FXAAPass.js","import":"/engine/render/passes/FXAAPass.js","sourceHash":"9f6dd69609017fd06156283221efb5b3bc07ca461c392219fa174c772f41885f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/FXAAPass.js#0000:FXAAPass","exportIndex":0,"name":"FXAAPass","kind":"class","signature":"class FXAAPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/FilmGrainPass.md","moduleTitle":"render/passes/FilmGrainPass","source":"engine/render/passes/FilmGrainPass.js","import":"/engine/render/passes/FilmGrainPass.js","sourceHash":"17cddf642ff0bd5de799c3ec80e070a3bf75041b2b0ccd7d4fc64d46a713889d","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/FilmGrainPass.js","title":"render/passes/FilmGrainPass","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/FilmGrainPass.md","moduleTitle":"render/passes/FilmGrainPass","source":"engine/render/passes/FilmGrainPass.js","import":"/engine/render/passes/FilmGrainPass.js","sourceHash":"17cddf642ff0bd5de799c3ec80e070a3bf75041b2b0ccd7d4fc64d46a713889d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/FilmGrainPass.js#0000:FilmGrainPass","exportIndex":0,"name":"FilmGrainPass","kind":"class","signature":"class FilmGrainPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/FluidDebugController.md","moduleTitle":"render/passes/FluidDebugController","source":"engine/render/passes/FluidDebugController.js","import":"/engine/render/passes/FluidDebugController.js","sourceHash":"674b20d49c33ab003b9ce468117dd624543684e9370ee84efcee5021be1a2c80","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/FluidDebugController.js","title":"render/passes/FluidDebugController","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/FluidDebugController.md","moduleTitle":"render/passes/FluidDebugController","source":"engine/render/passes/FluidDebugController.js","import":"/engine/render/passes/FluidDebugController.js","sourceHash":"674b20d49c33ab003b9ce468117dd624543684e9370ee84efcee5021be1a2c80","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/FluidDebugController.js#0000:createFluidDebugController","exportIndex":0,"name":"createFluidDebugController","kind":"function","signature":"createFluidDebugController(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/FluidDebugController.md","moduleTitle":"render/passes/FluidDebugController","source":"engine/render/passes/FluidDebugController.js","import":"/engine/render/passes/FluidDebugController.js","sourceHash":"674b20d49c33ab003b9ce468117dd624543684e9370ee84efcee5021be1a2c80","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/FluidDebugController.js#0001:FluidDebugController","exportIndex":1,"name":"FluidDebugController","kind":"re-export","signature":"FluidDebugController","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/FluidDebugPass.md","moduleTitle":"render/passes/FluidDebugPass","source":"engine/render/passes/FluidDebugPass.js","import":"/engine/render/passes/FluidDebugPass.js","sourceHash":"9fe1ef0e0561181556459cec6892df421c72502f35a090e9da9b06a0880a629a","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/FluidDebugPass.js","title":"render/passes/FluidDebugPass","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/FluidDebugPass.md","moduleTitle":"render/passes/FluidDebugPass","source":"engine/render/passes/FluidDebugPass.js","import":"/engine/render/passes/FluidDebugPass.js","sourceHash":"9fe1ef0e0561181556459cec6892df421c72502f35a090e9da9b06a0880a629a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/FluidDebugPass.js#0000:addFluidDebugPass","exportIndex":0,"name":"addFluidDebugPass","kind":"function","signature":"addFluidDebugPass(frameGraph, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/FluidDebugPass.md","moduleTitle":"render/passes/FluidDebugPass","source":"engine/render/passes/FluidDebugPass.js","import":"/engine/render/passes/FluidDebugPass.js","sourceHash":"9fe1ef0e0561181556459cec6892df421c72502f35a090e9da9b06a0880a629a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/FluidDebugPass.js#0001:FluidDebugPass","exportIndex":1,"name":"FluidDebugPass","kind":"re-export","signature":"FluidDebugPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/FluidWaterPass.md","moduleTitle":"render/passes/FluidWaterPass","source":"engine/render/passes/FluidWaterPass.js","import":"/engine/render/passes/FluidWaterPass.js","sourceHash":"5165f7675b0d7af0cc873ecdf85d67bc2839ffa0e14262da70bf3e2feabe1ebf","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/FluidWaterPass.js","title":"render/passes/FluidWaterPass","summary":"Create resources for the fluid water rendering pass","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/FluidWaterPass.md","moduleTitle":"render/passes/FluidWaterPass","source":"engine/render/passes/FluidWaterPass.js","import":"/engine/render/passes/FluidWaterPass.js","sourceHash":"5165f7675b0d7af0cc873ecdf85d67bc2839ffa0e14262da70bf3e2feabe1ebf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/FluidWaterPass.js#0000:createFluidWaterPass","exportIndex":0,"name":"createFluidWaterPass","kind":"function","signature":"createFluidWaterPass(device, options = {})","summary":"Create resources for the fluid water rendering pass"}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/FluidWaterPass.md","moduleTitle":"render/passes/FluidWaterPass","source":"engine/render/passes/FluidWaterPass.js","import":"/engine/render/passes/FluidWaterPass.js","sourceHash":"5165f7675b0d7af0cc873ecdf85d67bc2839ffa0e14262da70bf3e2feabe1ebf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/FluidWaterPass.js#0001:renderFluidWater","exportIndex":1,"name":"renderFluidWater","kind":"function","signature":"renderFluidWater(pass, encoder, options = {})","summary":"Render water/metaball surfaces from particles"}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/FluidWaterPass.md","moduleTitle":"render/passes/FluidWaterPass","source":"engine/render/passes/FluidWaterPass.js","import":"/engine/render/passes/FluidWaterPass.js","sourceHash":"5165f7675b0d7af0cc873ecdf85d67bc2839ffa0e14262da70bf3e2feabe1ebf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/FluidWaterPass.js#0002:resizeFluidWaterPass","exportIndex":2,"name":"resizeFluidWaterPass","kind":"function","signature":"resizeFluidWaterPass(pass, width, height)","summary":"Resize the fluid water pass textures"}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/FluidWaterPass.md","moduleTitle":"render/passes/FluidWaterPass","source":"engine/render/passes/FluidWaterPass.js","import":"/engine/render/passes/FluidWaterPass.js","sourceHash":"5165f7675b0d7af0cc873ecdf85d67bc2839ffa0e14262da70bf3e2feabe1ebf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/FluidWaterPass.js#0003:destroyFluidWaterPass","exportIndex":3,"name":"destroyFluidWaterPass","kind":"function","signature":"destroyFluidWaterPass(pass)","summary":"Destroy the fluid water pass resources"}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/FluidWaterPass.md","moduleTitle":"render/passes/FluidWaterPass","source":"engine/render/passes/FluidWaterPass.js","import":"/engine/render/passes/FluidWaterPass.js","sourceHash":"5165f7675b0d7af0cc873ecdf85d67bc2839ffa0e14262da70bf3e2feabe1ebf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/FluidWaterPass.js#0004:FluidWaterPass","exportIndex":4,"name":"FluidWaterPass","kind":"re-export","signature":"FluidWaterPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/GeometryPass.md","moduleTitle":"render/passes/GeometryPass","source":"engine/render/passes/GeometryPass.js","import":"/engine/render/passes/GeometryPass.js","sourceHash":"fe839ea86c1ae54d96615ef7b7b930fef3d5f46cccce8e5db46c757f3042ed62","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/GeometryPass.js","title":"render/passes/GeometryPass","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/GeometryPass.md","moduleTitle":"render/passes/GeometryPass","source":"engine/render/passes/GeometryPass.js","import":"/engine/render/passes/GeometryPass.js","sourceHash":"fe839ea86c1ae54d96615ef7b7b930fef3d5f46cccce8e5db46c757f3042ed62","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/GeometryPass.js#0000:addMainGeometryPass","exportIndex":0,"name":"addMainGeometryPass","kind":"function","signature":"addMainGeometryPass(frameGraph, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/GeometryPass.md","moduleTitle":"render/passes/GeometryPass","source":"engine/render/passes/GeometryPass.js","import":"/engine/render/passes/GeometryPass.js","sourceHash":"fe839ea86c1ae54d96615ef7b7b930fef3d5f46cccce8e5db46c757f3042ed62","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/GeometryPass.js#0001:GeometryPass","exportIndex":1,"name":"GeometryPass","kind":"re-export","signature":"GeometryPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/GodRays.md","moduleTitle":"render/passes/GodRays","source":"engine/render/passes/GodRays.js","import":"/engine/render/passes/GodRays.js","sourceHash":"92bd9cc5e57ed346537faf13a82cd2016f1f9505f82c1c8235639548bbc9790b","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/GodRays.js","title":"render/passes/GodRays","summary":"GodRays - Volumetric light scattering effect WebGPU implementation with fixed 32-sample radial blur","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/GodRays.md","moduleTitle":"render/passes/GodRays","source":"engine/render/passes/GodRays.js","import":"/engine/render/passes/GodRays.js","sourceHash":"92bd9cc5e57ed346537faf13a82cd2016f1f9505f82c1c8235639548bbc9790b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/GodRays.js#0000:GodRays","exportIndex":0,"name":"GodRays","kind":"class","signature":"class GodRays","summary":"GodRays - Volumetric light scattering effect WebGPU implementation with fixed 32-sample radial blur"}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/GodRays.md","moduleTitle":"render/passes/GodRays","source":"engine/render/passes/GodRays.js","import":"/engine/render/passes/GodRays.js","sourceHash":"92bd9cc5e57ed346537faf13a82cd2016f1f9505f82c1c8235639548bbc9790b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/GodRays.js#0001:GOD_RAYS_WGSL","exportIndex":1,"name":"GOD_RAYS_WGSL","kind":"constant","signature":"GOD_RAYS_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/GroundShadowPass.md","moduleTitle":"render/passes/GroundShadowPass","source":"engine/render/passes/GroundShadowPass.js","import":"/engine/render/passes/GroundShadowPass.js","sourceHash":"35290af3e3843c8269df3623ab6440efcb28e51e35f0a9ec55f633ce3e854994","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/GroundShadowPass.js","title":"render/passes/GroundShadowPass","summary":"GroundShadowPass.js - Analytical Blob Shadows on Ground Plane Projects entity shadow casters onto the y=0 ground plane along the sun direction and renders soft circular shadows. This is the standard technique used by mobile games (Minecraft, Animal Crossing) and many 3D editors. Advantages over screen-space ray marching: - No depth buffer artifacts (banding, streaking) - Works from any camera angle - Smooth, soft shadow edges with no aliasing - Very fast (one distance check per caster per pixel) Shadow casters are passed via a storage buffer (position + radius per entity). Output: Alpha-blended darkening composited over the scene.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/GroundShadowPass.md","moduleTitle":"render/passes/GroundShadowPass","source":"engine/render/passes/GroundShadowPass.js","import":"/engine/render/passes/GroundShadowPass.js","sourceHash":"35290af3e3843c8269df3623ab6440efcb28e51e35f0a9ec55f633ce3e854994","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/GroundShadowPass.js#0000:GroundShadowPass","exportIndex":0,"name":"GroundShadowPass","kind":"class","signature":"class GroundShadowPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/HDRPipeline.md","moduleTitle":"render/passes/HDRPipeline","source":"engine/render/passes/HDRPipeline.js","import":"/engine/render/passes/HDRPipeline.js","sourceHash":"bc88b51310e741efd0b3801a480ac3c67b3893158d572060356667e0af15962f","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/HDRPipeline.js","title":"render/passes/HDRPipeline","summary":"HDRPipeline - Complete HDR rendering pipeline","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/HDRPipeline.md","moduleTitle":"render/passes/HDRPipeline","source":"engine/render/passes/HDRPipeline.js","import":"/engine/render/passes/HDRPipeline.js","sourceHash":"bc88b51310e741efd0b3801a480ac3c67b3893158d572060356667e0af15962f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/HDRPipeline.js#0000:HDRPipeline","exportIndex":0,"name":"HDRPipeline","kind":"class","signature":"class HDRPipeline","summary":"HDRPipeline - Complete HDR rendering pipeline"}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/HDRPipeline.md","moduleTitle":"render/passes/HDRPipeline","source":"engine/render/passes/HDRPipeline.js","import":"/engine/render/passes/HDRPipeline.js","sourceHash":"bc88b51310e741efd0b3801a480ac3c67b3893158d572060356667e0af15962f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/HDRPipeline.js#0001:HDR_PIPELINE_WGSL","exportIndex":1,"name":"HDR_PIPELINE_WGSL","kind":"constant","signature":"HDR_PIPELINE_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/HDRPipeline.md","moduleTitle":"render/passes/HDRPipeline","source":"engine/render/passes/HDRPipeline.js","import":"/engine/render/passes/HDRPipeline.js","sourceHash":"bc88b51310e741efd0b3801a480ac3c67b3893158d572060356667e0af15962f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/HDRPipeline.js#0002:TONEMAP_OPERATOR","exportIndex":2,"name":"TONEMAP_OPERATOR","kind":"constant","signature":"TONEMAP_OPERATOR","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/HiZPass.md","moduleTitle":"render/passes/HiZPass","source":"engine/render/passes/HiZPass.js","import":"/engine/render/passes/HiZPass.js","sourceHash":"7ffd080be7fe5af343492a5bbe3a71d35fa4d70091100aa77b43063509baaff1","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/HiZPass.js","title":"render/passes/HiZPass","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/HiZPass.md","moduleTitle":"render/passes/HiZPass","source":"engine/render/passes/HiZPass.js","import":"/engine/render/passes/HiZPass.js","sourceHash":"7ffd080be7fe5af343492a5bbe3a71d35fa4d70091100aa77b43063509baaff1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/HiZPass.js#0000:HiZPass","exportIndex":0,"name":"HiZPass","kind":"class","signature":"class HiZPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/ImageHeatHazePass.md","moduleTitle":"render/passes/ImageHeatHazePass","source":"engine/render/passes/ImageHeatHazePass.js","import":"/engine/render/passes/ImageHeatHazePass.js","sourceHash":"b860be7c106c9550d42d3dda250b17a4ef4acf61ce17c8032031ec565f3232ba","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/ImageHeatHazePass.js","title":"render/passes/ImageHeatHazePass","summary":"ImageHeatHazePass.js - Layered water optics for an authored mineral plate. This is the static-image counterpart to ParticleDistortionRenderer. The authored plate owns geology; this pass owns water refraction, attenuation, caustics, texture-broken god rays, heat haze, and color-aware lava emission.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/ImageHeatHazePass.md","moduleTitle":"render/passes/ImageHeatHazePass","source":"engine/render/passes/ImageHeatHazePass.js","import":"/engine/render/passes/ImageHeatHazePass.js","sourceHash":"b860be7c106c9550d42d3dda250b17a4ef4acf61ce17c8032031ec565f3232ba","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/ImageHeatHazePass.js#0000:ImageHeatHazePass","exportIndex":0,"name":"ImageHeatHazePass","kind":"class","signature":"class ImageHeatHazePass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/ImageHeatHazePass.md","moduleTitle":"render/passes/ImageHeatHazePass","source":"engine/render/passes/ImageHeatHazePass.js","import":"/engine/render/passes/ImageHeatHazePass.js","sourceHash":"b860be7c106c9550d42d3dda250b17a4ef4acf61ce17c8032031ec565f3232ba","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/ImageHeatHazePass.js#0001:projectImagePointToViewport","exportIndex":1,"name":"projectImagePointToViewport","kind":"function","signature":"projectImagePointToViewport(imageUV, viewportWidth = window.innerWidth, viewportHeight = window.innerHeight, imageAspect = 1.5,)","summary":"Project a point in authored-image UV space into the backdrop viewport. Keep this in sync with the landing page's background-size breakpoints."}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/ImageHeatHazePass.md","moduleTitle":"render/passes/ImageHeatHazePass","source":"engine/render/passes/ImageHeatHazePass.js","import":"/engine/render/passes/ImageHeatHazePass.js","sourceHash":"b860be7c106c9550d42d3dda250b17a4ef4acf61ce17c8032031ec565f3232ba","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/ImageHeatHazePass.js#0002:startImageHeatHaze","exportIndex":2,"name":"startImageHeatHaze","kind":"function","signature":"async startImageHeatHaze(canvas, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/LensFlarePass.md","moduleTitle":"render/passes/LensFlarePass","source":"engine/render/passes/LensFlarePass.js","import":"/engine/render/passes/LensFlarePass.js","sourceHash":"95ea2fee13682056030fdf1f8cefec96ae6c5f61b3e6c8f865cced3f2419a085","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/LensFlarePass.js","title":"render/passes/LensFlarePass","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/LensFlarePass.md","moduleTitle":"render/passes/LensFlarePass","source":"engine/render/passes/LensFlarePass.js","import":"/engine/render/passes/LensFlarePass.js","sourceHash":"95ea2fee13682056030fdf1f8cefec96ae6c5f61b3e6c8f865cced3f2419a085","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/LensFlarePass.js#0000:LensFlarePass","exportIndex":0,"name":"LensFlarePass","kind":"class","signature":"class LensFlarePass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/LightingPass.md","moduleTitle":"render/passes/LightingPass","source":"engine/render/passes/LightingPass.js","import":"/engine/render/passes/LightingPass.js","sourceHash":"5a0746bae391d440cbf5b988cef327890d084ecc8b7037903996545e5c0bc348","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/LightingPass.js","title":"render/passes/LightingPass","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/LightingPass.md","moduleTitle":"render/passes/LightingPass","source":"engine/render/passes/LightingPass.js","import":"/engine/render/passes/LightingPass.js","sourceHash":"5a0746bae391d440cbf5b988cef327890d084ecc8b7037903996545e5c0bc348","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/LightingPass.js#0000:addLightingPass","exportIndex":0,"name":"addLightingPass","kind":"function","signature":"addLightingPass(frameGraph, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/LightingPass.md","moduleTitle":"render/passes/LightingPass","source":"engine/render/passes/LightingPass.js","import":"/engine/render/passes/LightingPass.js","sourceHash":"5a0746bae391d440cbf5b988cef327890d084ecc8b7037903996545e5c0bc348","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/LightingPass.js#0001:LightingPass","exportIndex":1,"name":"LightingPass","kind":"re-export","signature":"LightingPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/MotionBlurPass.md","moduleTitle":"render/passes/MotionBlurPass","source":"engine/render/passes/MotionBlurPass.js","import":"/engine/render/passes/MotionBlurPass.js","sourceHash":"238e2eb13d42e8bd53818e67203f778e0b3ce13789e18f4a2d7da4622f5bfea3","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/MotionBlurPass.js","title":"render/passes/MotionBlurPass","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/MotionBlurPass.md","moduleTitle":"render/passes/MotionBlurPass","source":"engine/render/passes/MotionBlurPass.js","import":"/engine/render/passes/MotionBlurPass.js","sourceHash":"238e2eb13d42e8bd53818e67203f778e0b3ce13789e18f4a2d7da4622f5bfea3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/MotionBlurPass.js#0000:MotionBlurPass","exportIndex":0,"name":"MotionBlurPass","kind":"class","signature":"class MotionBlurPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/OutlinePass.md","moduleTitle":"render/passes/OutlinePass","source":"engine/render/passes/OutlinePass.js","import":"/engine/render/passes/OutlinePass.js","sourceHash":"e7038e8e729d7c198f7e1fcdd329a3e00b7f037f67a20d525f78725f5149aa95","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/OutlinePass.js","title":"render/passes/OutlinePass","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/OutlinePass.md","moduleTitle":"render/passes/OutlinePass","source":"engine/render/passes/OutlinePass.js","import":"/engine/render/passes/OutlinePass.js","sourceHash":"e7038e8e729d7c198f7e1fcdd329a3e00b7f037f67a20d525f78725f5149aa95","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/OutlinePass.js#0000:OutlinePass","exportIndex":0,"name":"OutlinePass","kind":"class","signature":"class OutlinePass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/PaniniProjectionPass.md","moduleTitle":"render/passes/PaniniProjectionPass","source":"engine/render/passes/PaniniProjectionPass.js","import":"/engine/render/passes/PaniniProjectionPass.js","sourceHash":"1776bbec07c7a30210e2252b0b113ae240646efdb251d7049ff81fa8226a0b6a","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/PaniniProjectionPass.js","title":"render/passes/PaniniProjectionPass","summary":"PaniniProjectionPass.js - Wide FOV Distortion Correction Now powered by vGPU driver Reduces the \"fish-eye\" distortion that occurs with wide field of view. Based on the Panini projection which maps perspective to a cylinder. Parameters: - strength: How much correction to apply (0 = none, 1 = full panini) - fov: Current field of view in degrees - cropToFit: Scale to avoid black edges (0 = no crop, 1 = full crop)","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/PaniniProjectionPass.md","moduleTitle":"render/passes/PaniniProjectionPass","source":"engine/render/passes/PaniniProjectionPass.js","import":"/engine/render/passes/PaniniProjectionPass.js","sourceHash":"1776bbec07c7a30210e2252b0b113ae240646efdb251d7049ff81fa8226a0b6a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/PaniniProjectionPass.js#0000:PaniniProjectionPass","exportIndex":0,"name":"PaniniProjectionPass","kind":"class","signature":"class PaniniProjectionPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/ParticlePass.md","moduleTitle":"render/passes/ParticlePass","source":"engine/render/passes/ParticlePass.js","import":"/engine/render/passes/ParticlePass.js","sourceHash":"1fc79eabf581da2aa7276d4d67782f8c4aa9b11ce2f03aa77dc058116076a5e5","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/ParticlePass.js","title":"render/passes/ParticlePass","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/ParticlePass.md","moduleTitle":"render/passes/ParticlePass","source":"engine/render/passes/ParticlePass.js","import":"/engine/render/passes/ParticlePass.js","sourceHash":"1fc79eabf581da2aa7276d4d67782f8c4aa9b11ce2f03aa77dc058116076a5e5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/ParticlePass.js#0000:addParticleBillboardPass","exportIndex":0,"name":"addParticleBillboardPass","kind":"function","signature":"addParticleBillboardPass(frameGraph, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/ParticlePass.md","moduleTitle":"render/passes/ParticlePass","source":"engine/render/passes/ParticlePass.js","import":"/engine/render/passes/ParticlePass.js","sourceHash":"1fc79eabf581da2aa7276d4d67782f8c4aa9b11ce2f03aa77dc058116076a5e5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/ParticlePass.js#0001:ParticlePass","exportIndex":1,"name":"ParticlePass","kind":"re-export","signature":"ParticlePass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/PathTracingPass.md","moduleTitle":"render/passes/PathTracingPass","source":"engine/render/passes/PathTracingPass.js","import":"/engine/render/passes/PathTracingPass.js","sourceHash":"8148a15ebabfc1cabef8d28f65b94cfaa6c62062aa824115afb55548f61e8be2","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/PathTracingPass.js","title":"render/passes/PathTracingPass","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/PathTracingPass.md","moduleTitle":"render/passes/PathTracingPass","source":"engine/render/passes/PathTracingPass.js","import":"/engine/render/passes/PathTracingPass.js","sourceHash":"8148a15ebabfc1cabef8d28f65b94cfaa6c62062aa824115afb55548f61e8be2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/PathTracingPass.js#0000:PathTracingPass","exportIndex":0,"name":"PathTracingPass","kind":"class","signature":"class PathTracingPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/PathTracingPass.md","moduleTitle":"render/passes/PathTracingPass","source":"engine/render/passes/PathTracingPass.js","import":"/engine/render/passes/PathTracingPass.js","sourceHash":"8148a15ebabfc1cabef8d28f65b94cfaa6c62062aa824115afb55548f61e8be2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/PathTracingPass.js#0001:PATH_TRACING_PCG_HASH_WGSL","exportIndex":1,"name":"PATH_TRACING_PCG_HASH_WGSL","kind":"constant","signature":"PATH_TRACING_PCG_HASH_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/PostProcessChainPass.md","moduleTitle":"render/passes/PostProcessChainPass","source":"engine/render/passes/PostProcessChainPass.js","import":"/engine/render/passes/PostProcessChainPass.js","sourceHash":"afb758cb7abaaf5da143d4dd7d213bb2ce1d09e264c41571f67fd9805f30110d","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/PostProcessChainPass.js","title":"render/passes/PostProcessChainPass","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/PostProcessChainPass.md","moduleTitle":"render/passes/PostProcessChainPass","source":"engine/render/passes/PostProcessChainPass.js","import":"/engine/render/passes/PostProcessChainPass.js","sourceHash":"afb758cb7abaaf5da143d4dd7d213bb2ce1d09e264c41571f67fd9805f30110d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/PostProcessChainPass.js#0000:addPostProcessChainPass","exportIndex":0,"name":"addPostProcessChainPass","kind":"function","signature":"addPostProcessChainPass(frameGraph, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/PostProcessChainPass.md","moduleTitle":"render/passes/PostProcessChainPass","source":"engine/render/passes/PostProcessChainPass.js","import":"/engine/render/passes/PostProcessChainPass.js","sourceHash":"afb758cb7abaaf5da143d4dd7d213bb2ce1d09e264c41571f67fd9805f30110d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/PostProcessChainPass.js#0001:PostProcessChainPass","exportIndex":1,"name":"PostProcessChainPass","kind":"re-export","signature":"PostProcessChainPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/PostProcessController.md","moduleTitle":"render/passes/PostProcessController","source":"engine/render/passes/PostProcessController.js","import":"/engine/render/passes/PostProcessController.js","sourceHash":"b670a877fa3999aad848efcc2b4a425f30e6ef3fb76ca0b79488b653697c35ac","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/PostProcessController.js","title":"render/passes/PostProcessController","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/PostProcessController.md","moduleTitle":"render/passes/PostProcessController","source":"engine/render/passes/PostProcessController.js","import":"/engine/render/passes/PostProcessController.js","sourceHash":"b670a877fa3999aad848efcc2b4a425f30e6ef3fb76ca0b79488b653697c35ac","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/PostProcessController.js#0000:createPostProcessController","exportIndex":0,"name":"createPostProcessController","kind":"function","signature":"createPostProcessController(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/PostProcessController.md","moduleTitle":"render/passes/PostProcessController","source":"engine/render/passes/PostProcessController.js","import":"/engine/render/passes/PostProcessController.js","sourceHash":"b670a877fa3999aad848efcc2b4a425f30e6ef3fb76ca0b79488b653697c35ac","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/PostProcessController.js#0001:PostProcessController","exportIndex":1,"name":"PostProcessController","kind":"re-export","signature":"PostProcessController","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/PurkinjeEffectPass.md","moduleTitle":"render/passes/PurkinjeEffectPass","source":"engine/render/passes/PurkinjeEffectPass.js","import":"/engine/render/passes/PurkinjeEffectPass.js","sourceHash":"5e1c119ed321bb0fe2e2719136c4ff16a040fd87f9182379e1051d67541456e4","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/PurkinjeEffectPass.js","title":"render/passes/PurkinjeEffectPass","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/PurkinjeEffectPass.md","moduleTitle":"render/passes/PurkinjeEffectPass","source":"engine/render/passes/PurkinjeEffectPass.js","import":"/engine/render/passes/PurkinjeEffectPass.js","sourceHash":"5e1c119ed321bb0fe2e2719136c4ff16a040fd87f9182379e1051d67541456e4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/PurkinjeEffectPass.js#0000:PurkinjeEffectPass","exportIndex":0,"name":"PurkinjeEffectPass","kind":"class","signature":"class PurkinjeEffectPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/ReSTIRGIPass.md","moduleTitle":"render/passes/ReSTIRGIPass","source":"engine/render/passes/ReSTIRGIPass.js","import":"/engine/render/passes/ReSTIRGIPass.js","sourceHash":"c2b431cd5ff98282f3e0d1c5f1e5fb8283d89f7ae9757bf9e78a4fb65c60cf49","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/ReSTIRGIPass.js","title":"render/passes/ReSTIRGIPass","summary":"","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/ReSTIRGIPass.md","moduleTitle":"render/passes/ReSTIRGIPass","source":"engine/render/passes/ReSTIRGIPass.js","import":"/engine/render/passes/ReSTIRGIPass.js","sourceHash":"c2b431cd5ff98282f3e0d1c5f1e5fb8283d89f7ae9757bf9e78a4fb65c60cf49","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/ReSTIRGIPass.js#0000:ReSTIRGIPass","exportIndex":0,"name":"ReSTIRGIPass","kind":"class","signature":"class ReSTIRGIPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/ReSTIRGIPass.md","moduleTitle":"render/passes/ReSTIRGIPass","source":"engine/render/passes/ReSTIRGIPass.js","import":"/engine/render/passes/ReSTIRGIPass.js","sourceHash":"c2b431cd5ff98282f3e0d1c5f1e5fb8283d89f7ae9757bf9e78a4fb65c60cf49","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/ReSTIRGIPass.js#0001:RESTIR_TEMPORAL_PCG_HASH_WGSL","exportIndex":1,"name":"RESTIR_TEMPORAL_PCG_HASH_WGSL","kind":"constant","signature":"RESTIR_TEMPORAL_PCG_HASH_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/ReSTIRGIPass.md","moduleTitle":"render/passes/ReSTIRGIPass","source":"engine/render/passes/ReSTIRGIPass.js","import":"/engine/render/passes/ReSTIRGIPass.js","sourceHash":"c2b431cd5ff98282f3e0d1c5f1e5fb8283d89f7ae9757bf9e78a4fb65c60cf49","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/ReSTIRGIPass.js#0002:RESTIR_SPATIAL_PCG_HASH_WGSL","exportIndex":2,"name":"RESTIR_SPATIAL_PCG_HASH_WGSL","kind":"constant","signature":"RESTIR_SPATIAL_PCG_HASH_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/ReconstructionProvider.md","moduleTitle":"render/passes/ReconstructionProvider","source":"engine/render/passes/ReconstructionProvider.js","import":"/engine/render/passes/ReconstructionProvider.js","sourceHash":"23141cb45df43984f6f6c0437a75d886626f5075a8b3d22d2004a60ac8f56aa8","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/ReconstructionProvider.js","title":"render/passes/ReconstructionProvider","summary":"ReconstructionProvider.js - Unified Upscaling & Reconstruction Interface Abstracts over multiple reconstruction backends: - TSR (Temporal Super-Resolution) - best quality, uses temporal history - FSR (FidelityFX Super Resolution) - spatial only, fallback for camera cuts - SVGF (Denoiser) - for path-traced/GI content - Native TAA - no upscaling, just anti-aliasing - None - passthrough Future-proofed for: - WebNN neural upscaling (when browser API matures) - Custom ML models via WebGPU compute Usage: const provider = new ReconstructionProvider(device); await provider.init(displayWidth, displayHeight); provider.setMode('tsr', TSRQuality.QUALITY); // In render loop: const { width, height } = provider.getRenderSize(); const jitteredProj = provider.applyJitter(projMatrix); // ... render scene at width×height ... provider.execute(encoder, colorTex, depthTex, motionTex, outputTex);","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/ReconstructionProvider.md","moduleTitle":"render/passes/ReconstructionProvider","source":"engine/render/passes/ReconstructionProvider.js","import":"/engine/render/passes/ReconstructionProvider.js","sourceHash":"23141cb45df43984f6f6c0437a75d886626f5075a8b3d22d2004a60ac8f56aa8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/ReconstructionProvider.js#0000:ReconstructionProvider","exportIndex":0,"name":"ReconstructionProvider","kind":"class","signature":"class ReconstructionProvider","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/ReconstructionProvider.md","moduleTitle":"render/passes/ReconstructionProvider","source":"engine/render/passes/ReconstructionProvider.js","import":"/engine/render/passes/ReconstructionProvider.js","sourceHash":"23141cb45df43984f6f6c0437a75d886626f5075a8b3d22d2004a60ac8f56aa8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/ReconstructionProvider.js#0001:ReconstructionMode","exportIndex":1,"name":"ReconstructionMode","kind":"constant","signature":"ReconstructionMode","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/RenderPassManager.md","moduleTitle":"render/passes/RenderPassManager","source":"engine/render/passes/RenderPassManager.js","import":"/engine/render/passes/RenderPassManager.js","sourceHash":"da251f09012e1d696aef884a4048a502bc91625ff71d419ffbda38e5ba8df90a","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/RenderPassManager.js","title":"render/passes/RenderPassManager","summary":"Render Pass Manager Manages multi-pass rendering pipeline with pass selection and visualization. Handles render target allocation, pass execution, and debug visualization.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/RenderPassManager.md","moduleTitle":"render/passes/RenderPassManager","source":"engine/render/passes/RenderPassManager.js","import":"/engine/render/passes/RenderPassManager.js","sourceHash":"da251f09012e1d696aef884a4048a502bc91625ff71d419ffbda38e5ba8df90a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/RenderPassManager.js#0000:RenderPassManager","exportIndex":0,"name":"RenderPassManager","kind":"class","signature":"class RenderPassManager","summary":"Render Pass Manager Manages multi-pass rendering pipeline with pass selection and visualization. Handles render target allocation, pass execution, and debug visualization."}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/SSAOPass.md","moduleTitle":"render/passes/SSAOPass","source":"engine/render/passes/SSAOPass.js","import":"/engine/render/passes/SSAOPass.js","sourceHash":"6f095a49e114b50c3740944411b604eb118484a04c7e126dc98f2a2ce599e922","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/SSAOPass.js","title":"render/passes/SSAOPass","summary":"SSAO Pass Manager","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/SSAOPass.md","moduleTitle":"render/passes/SSAOPass","source":"engine/render/passes/SSAOPass.js","import":"/engine/render/passes/SSAOPass.js","sourceHash":"6f095a49e114b50c3740944411b604eb118484a04c7e126dc98f2a2ce599e922","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/SSAOPass.js#0000:SSAOPass","exportIndex":0,"name":"SSAOPass","kind":"class","signature":"class SSAOPass","summary":"SSAO Pass Manager"}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/SSGIPass.md","moduleTitle":"render/passes/SSGIPass","source":"engine/render/passes/SSGIPass.js","import":"/engine/render/passes/SSGIPass.js","sourceHash":"84f8132c932cca11020b0bb7a5fcdff456aff1d419c22b547b7a9c071cc3ceb8","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/SSGIPass.js","title":"render/passes/SSGIPass","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/SSGIPass.md","moduleTitle":"render/passes/SSGIPass","source":"engine/render/passes/SSGIPass.js","import":"/engine/render/passes/SSGIPass.js","sourceHash":"84f8132c932cca11020b0bb7a5fcdff456aff1d419c22b547b7a9c071cc3ceb8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/SSGIPass.js#0000:SSGIPass","exportIndex":0,"name":"SSGIPass","kind":"class","signature":"class SSGIPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/SSRPass.md","moduleTitle":"render/passes/SSRPass","source":"engine/render/passes/SSRPass.js","import":"/engine/render/passes/SSRPass.js","sourceHash":"dc27c00ade96f1ba4107d59bad34785818ddd94e06ff40a59af8f98620d8d396","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/SSRPass.js","title":"render/passes/SSRPass","summary":"SSRPass - Screen-Space Reflections render pass","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/SSRPass.md","moduleTitle":"render/passes/SSRPass","source":"engine/render/passes/SSRPass.js","import":"/engine/render/passes/SSRPass.js","sourceHash":"dc27c00ade96f1ba4107d59bad34785818ddd94e06ff40a59af8f98620d8d396","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/SSRPass.js#0000:SSRPass","exportIndex":0,"name":"SSRPass","kind":"class","signature":"class SSRPass","summary":"SSRPass - Screen-Space Reflections render pass"}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/SSRPass.md","moduleTitle":"render/passes/SSRPass","source":"engine/render/passes/SSRPass.js","import":"/engine/render/passes/SSRPass.js","sourceHash":"dc27c00ade96f1ba4107d59bad34785818ddd94e06ff40a59af8f98620d8d396","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/SSRPass.js#0001:SSR_JITTER_PCG_HASH_WGSL","exportIndex":1,"name":"SSR_JITTER_PCG_HASH_WGSL","kind":"constant","signature":"SSR_JITTER_PCG_HASH_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/SVGFDenoise.md","moduleTitle":"render/passes/SVGFDenoise","source":"engine/render/passes/SVGFDenoise.js","import":"/engine/render/passes/SVGFDenoise.js","sourceHash":"1dc61bfe63e917256e2c4541642d9676c50298384d4ab765d0318174a5545ba8","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/SVGFDenoise.js","title":"render/passes/SVGFDenoise","summary":"SVGFDenoise.js - Spatiotemporal Variance-Guided Filtering Full SVGF denoising pipeline for compute-based path tracing / GI. Converts noisy 1-spp (or low-spp) input into clean output. Based on: - \"Spatiotemporal Variance-Guided Filtering\" (Schied et al., HPG 2017) - NVIDIA SVGF implementation techniques - À-Trous wavelet decomposition with edge-stopping functions Pipeline (per frame): 1. Temporal Accumulation: Reproject history, blend with current, track variance 2. Variance Estimation: Compute spatial variance from accumulated moments 3. À-Trous Wavelet Filter: 1-5 iterations of edge-preserving spatial blur - Edge-stopping by normal, depth, luminance, and variance - Increasing step size each iteration (1, 2, 4, 8, 16) - Firefly suppression via luminance clamping Inputs Required: - Noisy color (1-spp path trace output) - World-space normals - Linear depth - Motion vectors Outputs: - Denoised color (rgba16float) - Accumulated variance (for adaptive sampling feedback)","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/SVGFDenoise.md","moduleTitle":"render/passes/SVGFDenoise","source":"engine/render/passes/SVGFDenoise.js","import":"/engine/render/passes/SVGFDenoise.js","sourceHash":"1dc61bfe63e917256e2c4541642d9676c50298384d4ab765d0318174a5545ba8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/SVGFDenoise.js#0000:SVGFDenoise","exportIndex":0,"name":"SVGFDenoise","kind":"class","signature":"class SVGFDenoise","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/SceneDebugVisualizerPass.md","moduleTitle":"render/passes/SceneDebugVisualizerPass","source":"engine/render/passes/SceneDebugVisualizerPass.js","import":"/engine/render/passes/SceneDebugVisualizerPass.js","sourceHash":"193e24d26f750c8a5757d1eab192c48b6f0d73aadd568c5932088d04747b5081","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/SceneDebugVisualizerPass.js","title":"render/passes/SceneDebugVisualizerPass","summary":"Scene Debug Visualizer Pass Fullscreen post-process that reads the ACTUAL scene depth buffer (depth24plus) and renders industry-standard debug visualizations: - Depth: linearized grayscale (near=white, far=black) - Normals: world-space normals reconstructed from depth (RGB = XYZ) Unlike the particle-only debug renderers, this shows the FULL scene (entity meshes + particles + everything that wrote to the depth buffer).","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/SceneDebugVisualizerPass.md","moduleTitle":"render/passes/SceneDebugVisualizerPass","source":"engine/render/passes/SceneDebugVisualizerPass.js","import":"/engine/render/passes/SceneDebugVisualizerPass.js","sourceHash":"193e24d26f750c8a5757d1eab192c48b6f0d73aadd568c5932088d04747b5081","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/SceneDebugVisualizerPass.js#0000:createSceneDebugVisualizerPass","exportIndex":0,"name":"createSceneDebugVisualizerPass","kind":"function","signature":"async createSceneDebugVisualizerPass(device, outputFormat)","summary":"Create the scene debug visualizer pass"}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/SceneDebugVisualizerPass.md","moduleTitle":"render/passes/SceneDebugVisualizerPass","source":"engine/render/passes/SceneDebugVisualizerPass.js","import":"/engine/render/passes/SceneDebugVisualizerPass.js","sourceHash":"193e24d26f750c8a5757d1eab192c48b6f0d73aadd568c5932088d04747b5081","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/SceneDebugVisualizerPass.js#0001:executeSceneDebugVisualizerPass","exportIndex":1,"name":"executeSceneDebugVisualizerPass","kind":"function","signature":"executeSceneDebugVisualizerPass(encoder, outputView, depthView, visualizer, opts)","summary":"Execute the scene debug visualizer pass"}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/ShadowAtlas.md","moduleTitle":"render/passes/ShadowAtlas","source":"engine/render/passes/ShadowAtlas.js","import":"/engine/render/passes/ShadowAtlas.js","sourceHash":"5ff6c5d7fa6708d733035958d8daa25658f86b17944ec435936c7a96e9aae9e1","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/ShadowAtlas.js","title":"render/passes/ShadowAtlas","summary":"ShadowAtlas.js - Unified Shadow Depth Atlas Single shared depth texture that ALL shadow casters render into. Inspired by Wicked Engine's shadow atlas architecture (2024): - One depth texture, one clear, one uninterrupted render pass - All geometry types (voxels, entities, particles, ropes) write sequentially - All fragment shaders sample from the same atlas - Comparison sampler for hardware PCF Replaces the separate shadow systems: - VoxelRenderer.shadowMapTexture  → ShadowAtlas.texture - ShadowMapPass.shadowTexture     → ShadowAtlas.texture Usage: const atlas = createShadowAtlas(device, { size: 2048 }); atlas.beginFrame(); atlas.addCaster(x, y, z, radius);  // for frustum fitting const lightVP = atlas.computeLightMatrix(sunDir); atlas.renderDepth(encoder, casters);  // all casters in one pass atlas.composite(encoder, ...);        // fullscreen darken Caster interface: { flush(pass: GPURenderPassEncoder, lightViewProj: Float32Array): void }","exportCount":11}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/ShadowAtlas.md","moduleTitle":"render/passes/ShadowAtlas","source":"engine/render/passes/ShadowAtlas.js","import":"/engine/render/passes/ShadowAtlas.js","sourceHash":"5ff6c5d7fa6708d733035958d8daa25658f86b17944ec435936c7a96e9aae9e1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/ShadowAtlas.js#0000:createShadowAtlas","exportIndex":0,"name":"createShadowAtlas","kind":"function","signature":"createShadowAtlas(device, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/ShadowAtlas.md","moduleTitle":"render/passes/ShadowAtlas","source":"engine/render/passes/ShadowAtlas.js","import":"/engine/render/passes/ShadowAtlas.js","sourceHash":"5ff6c5d7fa6708d733035958d8daa25658f86b17944ec435936c7a96e9aae9e1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/ShadowAtlas.js#0001:beginFrame","exportIndex":1,"name":"beginFrame","kind":"function","signature":"beginFrame(atlas)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/ShadowAtlas.md","moduleTitle":"render/passes/ShadowAtlas","source":"engine/render/passes/ShadowAtlas.js","import":"/engine/render/passes/ShadowAtlas.js","sourceHash":"5ff6c5d7fa6708d733035958d8daa25658f86b17944ec435936c7a96e9aae9e1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/ShadowAtlas.js#0002:addCaster","exportIndex":2,"name":"addCaster","kind":"function","signature":"addCaster(atlas, x, y, z, radius)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/ShadowAtlas.md","moduleTitle":"render/passes/ShadowAtlas","source":"engine/render/passes/ShadowAtlas.js","import":"/engine/render/passes/ShadowAtlas.js","sourceHash":"5ff6c5d7fa6708d733035958d8daa25658f86b17944ec435936c7a96e9aae9e1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/ShadowAtlas.js#0003:computeLightMatrix","exportIndex":3,"name":"computeLightMatrix","kind":"function","signature":"computeLightMatrix(atlas, sunDir, cameraPos)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/ShadowAtlas.md","moduleTitle":"render/passes/ShadowAtlas","source":"engine/render/passes/ShadowAtlas.js","import":"/engine/render/passes/ShadowAtlas.js","sourceHash":"5ff6c5d7fa6708d733035958d8daa25658f86b17944ec435936c7a96e9aae9e1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/ShadowAtlas.js#0004:registerAtlasCaster","exportIndex":4,"name":"registerAtlasCaster","kind":"function","signature":"registerAtlasCaster(atlas, caster)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/ShadowAtlas.md","moduleTitle":"render/passes/ShadowAtlas","source":"engine/render/passes/ShadowAtlas.js","import":"/engine/render/passes/ShadowAtlas.js","sourceHash":"5ff6c5d7fa6708d733035958d8daa25658f86b17944ec435936c7a96e9aae9e1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/ShadowAtlas.js#0005:unregisterAtlasCaster","exportIndex":5,"name":"unregisterAtlasCaster","kind":"function","signature":"unregisterAtlasCaster(atlas, caster)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/ShadowAtlas.md","moduleTitle":"render/passes/ShadowAtlas","source":"engine/render/passes/ShadowAtlas.js","import":"/engine/render/passes/ShadowAtlas.js","sourceHash":"5ff6c5d7fa6708d733035958d8daa25658f86b17944ec435936c7a96e9aae9e1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/ShadowAtlas.js#0006:addCategoryCaster","exportIndex":6,"name":"addCategoryCaster","kind":"function","signature":"addCategoryCaster(atlas, categoryName, caster)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/ShadowAtlas.md","moduleTitle":"render/passes/ShadowAtlas","source":"engine/render/passes/ShadowAtlas.js","import":"/engine/render/passes/ShadowAtlas.js","sourceHash":"5ff6c5d7fa6708d733035958d8daa25658f86b17944ec435936c7a96e9aae9e1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/ShadowAtlas.js#0007:renderAndCompositeAll","exportIndex":7,"name":"renderAndCompositeAll","kind":"function","signature":"renderAndCompositeAll(atlas, encoder, outputView, sceneDepthTexture, invViewProj, screenW, screenH, cameraPos)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/ShadowAtlas.md","moduleTitle":"render/passes/ShadowAtlas","source":"engine/render/passes/ShadowAtlas.js","import":"/engine/render/passes/ShadowAtlas.js","sourceHash":"5ff6c5d7fa6708d733035958d8daa25658f86b17944ec435936c7a96e9aae9e1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/ShadowAtlas.js#0008:renderDepth","exportIndex":8,"name":"renderDepth","kind":"function","signature":"renderDepth(atlas, encoder, extraCasters)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/ShadowAtlas.md","moduleTitle":"render/passes/ShadowAtlas","source":"engine/render/passes/ShadowAtlas.js","import":"/engine/render/passes/ShadowAtlas.js","sourceHash":"5ff6c5d7fa6708d733035958d8daa25658f86b17944ec435936c7a96e9aae9e1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/ShadowAtlas.js#0009:composite","exportIndex":9,"name":"composite","kind":"function","signature":"composite(atlas, encoder, outputView, sceneDepthTexture, invViewProj, screenW, screenH, cameraPos)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/ShadowAtlas.md","moduleTitle":"render/passes/ShadowAtlas","source":"engine/render/passes/ShadowAtlas.js","import":"/engine/render/passes/ShadowAtlas.js","sourceHash":"5ff6c5d7fa6708d733035958d8daa25658f86b17944ec435936c7a96e9aae9e1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/ShadowAtlas.js#0010:destroyShadowAtlas","exportIndex":10,"name":"destroyShadowAtlas","kind":"function","signature":"destroyShadowAtlas(atlas)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/ShadowMapPass.md","moduleTitle":"render/passes/ShadowMapPass","source":"engine/render/passes/ShadowMapPass.js","import":"/engine/render/passes/ShadowMapPass.js","sourceHash":"7812c79e7c993d2f3b0eceafad716ccab8f229c79ada70be65b6db8cce93c991","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/ShadowMapPass.js","title":"render/passes/ShadowMapPass","summary":"ShadowMapPass.js - Real Geometry Shadow Maps Renders entity depth from the sun's perspective into a shadow map texture, then composites geometry-accurate shadows onto the scene as a fullscreen pass. Architecture: 1. Shadow depth pass: EntityMeshRenderer.flushShadowDepth() draws all instanced entities into a depth32float texture from the light's orthographic projection. This runs AFTER the main flush() so the GPU instance buffer already contains this frame's data. 2. Composite pass: A fullscreen triangle reads the scene depth buffer, reconstructs world positions, projects them into light space, and samples the shadow map with PCF 3×3 filtering. Output is alpha-blended darkening. The light matrix is computed per-frame from the sun direction and a bounding sphere that encompasses all shadow casters (not the camera frustum), so off-screen entities still cast shadows into the visible area.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/ShadowMapPass.md","moduleTitle":"render/passes/ShadowMapPass","source":"engine/render/passes/ShadowMapPass.js","import":"/engine/render/passes/ShadowMapPass.js","sourceHash":"7812c79e7c993d2f3b0eceafad716ccab8f229c79ada70be65b6db8cce93c991","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/ShadowMapPass.js#0000:ShadowMapPass","exportIndex":0,"name":"ShadowMapPass","kind":"class","signature":"class ShadowMapPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/ShadowPass.md","moduleTitle":"render/passes/ShadowPass","source":"engine/render/passes/ShadowPass.js","import":"/engine/render/passes/ShadowPass.js","sourceHash":"79d94087be4cc83121e59c83c6024c4b9f806c72b9b1f43f89e95ae4e3f3e1b5","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/ShadowPass.js","title":"render/passes/ShadowPass","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/ShadowPass.md","moduleTitle":"render/passes/ShadowPass","source":"engine/render/passes/ShadowPass.js","import":"/engine/render/passes/ShadowPass.js","sourceHash":"79d94087be4cc83121e59c83c6024c4b9f806c72b9b1f43f89e95ae4e3f3e1b5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/ShadowPass.js#0000:addDirectionalShadowPass","exportIndex":0,"name":"addDirectionalShadowPass","kind":"function","signature":"addDirectionalShadowPass(frameGraph, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/ShadowPass.md","moduleTitle":"render/passes/ShadowPass","source":"engine/render/passes/ShadowPass.js","import":"/engine/render/passes/ShadowPass.js","sourceHash":"79d94087be4cc83121e59c83c6024c4b9f806c72b9b1f43f89e95ae4e3f3e1b5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/ShadowPass.js#0001:ShadowPass","exportIndex":1,"name":"ShadowPass","kind":"re-export","signature":"ShadowPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/SharpeningPass.md","moduleTitle":"render/passes/SharpeningPass","source":"engine/render/passes/SharpeningPass.js","import":"/engine/render/passes/SharpeningPass.js","sourceHash":"3a25793c1714b9a578dc2bdd2adfdbebf9469028409eec0a20af40921d703813","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/SharpeningPass.js","title":"render/passes/SharpeningPass","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/SharpeningPass.md","moduleTitle":"render/passes/SharpeningPass","source":"engine/render/passes/SharpeningPass.js","import":"/engine/render/passes/SharpeningPass.js","sourceHash":"3a25793c1714b9a578dc2bdd2adfdbebf9469028409eec0a20af40921d703813","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/SharpeningPass.js#0000:SharpeningPass","exportIndex":0,"name":"SharpeningPass","kind":"class","signature":"class SharpeningPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/SpellEffectPass.md","moduleTitle":"render/passes/SpellEffectPass","source":"engine/render/passes/SpellEffectPass.js","import":"/engine/render/passes/SpellEffectPass.js","sourceHash":"68b7ee06650e5679da3d6d5385dc13dac901a6d58f0cae7b92d2bdba5d232b73","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/SpellEffectPass.js","title":"render/passes/SpellEffectPass","summary":"Create the spell effect rendering pass","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/SpellEffectPass.md","moduleTitle":"render/passes/SpellEffectPass","source":"engine/render/passes/SpellEffectPass.js","import":"/engine/render/passes/SpellEffectPass.js","sourceHash":"68b7ee06650e5679da3d6d5385dc13dac901a6d58f0cae7b92d2bdba5d232b73","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/SpellEffectPass.js#0000:createSpellEffectPass","exportIndex":0,"name":"createSpellEffectPass","kind":"function","signature":"createSpellEffectPass(device, options = {})","summary":"Create the spell effect rendering pass"}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/SpellEffectPass.md","moduleTitle":"render/passes/SpellEffectPass","source":"engine/render/passes/SpellEffectPass.js","import":"/engine/render/passes/SpellEffectPass.js","sourceHash":"68b7ee06650e5679da3d6d5385dc13dac901a6d58f0cae7b92d2bdba5d232b73","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/SpellEffectPass.js#0001:renderSpellEffects","exportIndex":1,"name":"renderSpellEffects","kind":"function","signature":"renderSpellEffects(pass, encoder, targetView, options = {})","summary":"Render active spell effects"}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/SpellEffectPass.md","moduleTitle":"render/passes/SpellEffectPass","source":"engine/render/passes/SpellEffectPass.js","import":"/engine/render/passes/SpellEffectPass.js","sourceHash":"68b7ee06650e5679da3d6d5385dc13dac901a6d58f0cae7b92d2bdba5d232b73","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/SpellEffectPass.js#0002:spellElementToEffectType","exportIndex":2,"name":"spellElementToEffectType","kind":"function","signature":"spellElementToEffectType(element)","summary":"Map spell element to effect type"}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/SpellEffectPass.md","moduleTitle":"render/passes/SpellEffectPass","source":"engine/render/passes/SpellEffectPass.js","import":"/engine/render/passes/SpellEffectPass.js","sourceHash":"68b7ee06650e5679da3d6d5385dc13dac901a6d58f0cae7b92d2bdba5d232b73","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/SpellEffectPass.js#0003:spellConfigToInstance","exportIndex":3,"name":"spellConfigToInstance","kind":"function","signature":"spellConfigToInstance(spellConfig, position, time, phase = 0.5)","summary":"Convert a spell config to a renderable spell instance"}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/SpellEffectPass.md","moduleTitle":"render/passes/SpellEffectPass","source":"engine/render/passes/SpellEffectPass.js","import":"/engine/render/passes/SpellEffectPass.js","sourceHash":"68b7ee06650e5679da3d6d5385dc13dac901a6d58f0cae7b92d2bdba5d232b73","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/SpellEffectPass.js#0004:EFFECT_TYPES","exportIndex":4,"name":"EFFECT_TYPES","kind":"constant","signature":"EFFECT_TYPES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/SpellEffectPass.md","moduleTitle":"render/passes/SpellEffectPass","source":"engine/render/passes/SpellEffectPass.js","import":"/engine/render/passes/SpellEffectPass.js","sourceHash":"68b7ee06650e5679da3d6d5385dc13dac901a6d58f0cae7b92d2bdba5d232b73","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/SpellEffectPass.js#0005:SPELL_TYPES","exportIndex":5,"name":"SPELL_TYPES","kind":"constant","signature":"SPELL_TYPES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/SpellEffectPass.md","moduleTitle":"render/passes/SpellEffectPass","source":"engine/render/passes/SpellEffectPass.js","import":"/engine/render/passes/SpellEffectPass.js","sourceHash":"68b7ee06650e5679da3d6d5385dc13dac901a6d58f0cae7b92d2bdba5d232b73","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/SpellEffectPass.js#0006:SpellEffectPass","exportIndex":6,"name":"SpellEffectPass","kind":"re-export","signature":"SpellEffectPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/TAAPass.md","moduleTitle":"render/passes/TAAPass","source":"engine/render/passes/TAAPass.js","import":"/engine/render/passes/TAAPass.js","sourceHash":"1bc47ddb20577cc83ee4d132465c9b404596e8664eedd400434960c6c841f295","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/TAAPass.js","title":"render/passes/TAAPass","summary":"TAAPass - Temporal Anti-Aliasing render pass","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/TAAPass.md","moduleTitle":"render/passes/TAAPass","source":"engine/render/passes/TAAPass.js","import":"/engine/render/passes/TAAPass.js","sourceHash":"1bc47ddb20577cc83ee4d132465c9b404596e8664eedd400434960c6c841f295","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/TAAPass.js#0000:TAAPass","exportIndex":0,"name":"TAAPass","kind":"class","signature":"class TAAPass","summary":"TAAPass - Temporal Anti-Aliasing render pass"}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/TemporalSuperResolution.md","moduleTitle":"render/passes/TemporalSuperResolution","source":"engine/render/passes/TemporalSuperResolution.js","import":"/engine/render/passes/TemporalSuperResolution.js","sourceHash":"248dd0deb0dc727f9ff8642871b4122166966f3cc3514ae2bd981ce23be4a607","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/TemporalSuperResolution.js","title":"render/passes/TemporalSuperResolution","summary":"TemporalSuperResolution.js - Temporal Upscaling System Renders at reduced internal resolution and reconstructs full-res output using temporal reprojection, motion vectors, and edge-aware upsampling. Inspired by Unreal Engine TSR, AMD FSR 2, and Intel XeSS. Pure WebGPU/WGSL compute implementation. Pipeline: Render at renderScale (e.g. 50-75%) resolution ↓ Dilate motion vectors (fill gaps from thin geometry) ↓ Reproject history to current frame ↓ Neighborhood clamp in YCoCg (anti-ghosting) ↓ Compute per-pixel confidence (depth, motion, disocclusion) ↓ Adaptive blend current + history ↓ Lanczos-weighted upscale to output resolution ↓ RCAS sharpening pass ↓ Full-resolution output Quality Modes: Ultra Performance: 33% (3x upscale) Performance:       50% (2x upscale) Balanced:          58% (~1.7x upscale) Quality:           67% (1.5x upscale) Ultra Quality:     77% (1.3x upscale) Native AA:        100% (TAA replacement, no upscale)","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/TemporalSuperResolution.md","moduleTitle":"render/passes/TemporalSuperResolution","source":"engine/render/passes/TemporalSuperResolution.js","import":"/engine/render/passes/TemporalSuperResolution.js","sourceHash":"248dd0deb0dc727f9ff8642871b4122166966f3cc3514ae2bd981ce23be4a607","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/TemporalSuperResolution.js#0000:TemporalSuperResolution","exportIndex":0,"name":"TemporalSuperResolution","kind":"class","signature":"class TemporalSuperResolution","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/TemporalSuperResolution.md","moduleTitle":"render/passes/TemporalSuperResolution","source":"engine/render/passes/TemporalSuperResolution.js","import":"/engine/render/passes/TemporalSuperResolution.js","sourceHash":"248dd0deb0dc727f9ff8642871b4122166966f3cc3514ae2bd981ce23be4a607","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/TemporalSuperResolution.js#0001:TSRQuality","exportIndex":1,"name":"TSRQuality","kind":"constant","signature":"TSRQuality","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/TonemapPass.md","moduleTitle":"render/passes/TonemapPass","source":"engine/render/passes/TonemapPass.js","import":"/engine/render/passes/TonemapPass.js","sourceHash":"a25f9d9baafc74e85bf55705e18348cc8a43a24b29a9b6f303a4e57ad359c8ba","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/TonemapPass.js","title":"render/passes/TonemapPass","summary":"TonemapPass.js - Final Post-Processing Pass Applied as the very last pass after bloom. Provides: 1. ACES filmic tonemapping (HDR → LDR, matches playground SDF demo) 2. Vignette (darkened edges for cinematic look) 3. Distance fog (blend toward sky color at far range) Uses a single fullscreen triangle — no vertex buffer, no index buffer.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/TonemapPass.md","moduleTitle":"render/passes/TonemapPass","source":"engine/render/passes/TonemapPass.js","import":"/engine/render/passes/TonemapPass.js","sourceHash":"a25f9d9baafc74e85bf55705e18348cc8a43a24b29a9b6f303a4e57ad359c8ba","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/TonemapPass.js#0000:TonemapPass","exportIndex":0,"name":"TonemapPass","kind":"class","signature":"class TonemapPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/UIHudPass.md","moduleTitle":"render/passes/UIHudPass","source":"engine/render/passes/UIHudPass.js","import":"/engine/render/passes/UIHudPass.js","sourceHash":"51c08dccdf4ae28480ca432cb31e029f48fb132921a457f723f870da30944ecb","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/UIHudPass.js","title":"render/passes/UIHudPass","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/UIHudPass.md","moduleTitle":"render/passes/UIHudPass","source":"engine/render/passes/UIHudPass.js","import":"/engine/render/passes/UIHudPass.js","sourceHash":"51c08dccdf4ae28480ca432cb31e029f48fb132921a457f723f870da30944ecb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/UIHudPass.js#0000:addUIHudPass","exportIndex":0,"name":"addUIHudPass","kind":"function","signature":"addUIHudPass(frameGraph, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/UIHudPass.md","moduleTitle":"render/passes/UIHudPass","source":"engine/render/passes/UIHudPass.js","import":"/engine/render/passes/UIHudPass.js","sourceHash":"51c08dccdf4ae28480ca432cb31e029f48fb132921a457f723f870da30944ecb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/UIHudPass.js#0001:UIHudPass","exportIndex":1,"name":"UIHudPass","kind":"re-export","signature":"UIHudPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/UnderwaterPass.md","moduleTitle":"render/passes/UnderwaterPass","source":"engine/render/passes/UnderwaterPass.js","import":"/engine/render/passes/UnderwaterPass.js","sourceHash":"61cda61d1826fc1c37d43fc7ef7ba620e737c60ccc31c99a855d6287e4f608f2","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/UnderwaterPass.js","title":"render/passes/UnderwaterPass","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/UnderwaterPass.md","moduleTitle":"render/passes/UnderwaterPass","source":"engine/render/passes/UnderwaterPass.js","import":"/engine/render/passes/UnderwaterPass.js","sourceHash":"61cda61d1826fc1c37d43fc7ef7ba620e737c60ccc31c99a855d6287e4f608f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/UnderwaterPass.js#0000:UnderwaterPass","exportIndex":0,"name":"UnderwaterPass","kind":"class","signature":"class UnderwaterPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/UnderwaterSiltField.md","moduleTitle":"render/passes/UnderwaterSiltField","source":"engine/render/passes/UnderwaterSiltField.js","import":"/engine/render/passes/UnderwaterSiltField.js","sourceHash":"774631eb5c176fea264e3c8fd6b469c2f8bb6fabdb432d4a556b9d205bf13c02","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/UnderwaterSiltField.js","title":"render/passes/UnderwaterSiltField","summary":"UnderwaterSiltField.js - Lightweight interactive particulate atmosphere. A capped Canvas2D pass draws shallow caustic traces, depth-layered volcanic ash/mineral flecks, and upper-left refracted light shafts. Particles follow a slow analytic flow field and receive a local tangential impulse when the pointer disturbs the water. The module has no runtime dependencies so release pages can ship it beside the standalone authored-image backdrop pass.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/UnderwaterSiltField.md","moduleTitle":"render/passes/UnderwaterSiltField","source":"engine/render/passes/UnderwaterSiltField.js","import":"/engine/render/passes/UnderwaterSiltField.js","sourceHash":"774631eb5c176fea264e3c8fd6b469c2f8bb6fabdb432d4a556b9d205bf13c02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/UnderwaterSiltField.js#0000:UnderwaterSiltField","exportIndex":0,"name":"UnderwaterSiltField","kind":"class","signature":"class UnderwaterSiltField","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/UnderwaterSiltField.md","moduleTitle":"render/passes/UnderwaterSiltField","source":"engine/render/passes/UnderwaterSiltField.js","import":"/engine/render/passes/UnderwaterSiltField.js","sourceHash":"774631eb5c176fea264e3c8fd6b469c2f8bb6fabdb432d4a556b9d205bf13c02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/UnderwaterSiltField.js#0001:startUnderwaterSiltField","exportIndex":1,"name":"startUnderwaterSiltField","kind":"function","signature":"startUnderwaterSiltField(canvas, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/VignettePass.md","moduleTitle":"render/passes/VignettePass","source":"engine/render/passes/VignettePass.js","import":"/engine/render/passes/VignettePass.js","sourceHash":"7db26d586c766cd46b4d540698a6dc80929cf6584a51fb0bcb5962a131188739","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/VignettePass.js","title":"render/passes/VignettePass","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/VignettePass.md","moduleTitle":"render/passes/VignettePass","source":"engine/render/passes/VignettePass.js","import":"/engine/render/passes/VignettePass.js","sourceHash":"7db26d586c766cd46b4d540698a6dc80929cf6584a51fb0bcb5962a131188739","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/VignettePass.js#0000:VignettePass","exportIndex":0,"name":"VignettePass","kind":"class","signature":"class VignettePass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/VolumetricCloudsPass.md","moduleTitle":"render/passes/VolumetricCloudsPass","source":"engine/render/passes/VolumetricCloudsPass.js","import":"/engine/render/passes/VolumetricCloudsPass.js","sourceHash":"4a36a08a7bf799679f856f352d4fb45afea400335a2b45bf32566150bd6fb39f","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/VolumetricCloudsPass.js","title":"render/passes/VolumetricCloudsPass","summary":"VolumetricCloudsPass.js - 3D Volumetric Clouds Now powered by vGPU driver Renders realistic volumetric clouds using ray marching through 3D noise-based density fields. Includes lighting and shadowing. Algorithm: 1. Ray march from camera through cloud layer 2. Sample 3D noise for cloud density 3. Accumulate light scattering and extinction 4. Apply shadow from sun direction Parameters: - coverage: Cloud coverage (0-1) - altitude: Cloud layer altitude in meters - thickness: Cloud layer thickness - density: Cloud density multiplier","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/VolumetricCloudsPass.md","moduleTitle":"render/passes/VolumetricCloudsPass","source":"engine/render/passes/VolumetricCloudsPass.js","import":"/engine/render/passes/VolumetricCloudsPass.js","sourceHash":"4a36a08a7bf799679f856f352d4fb45afea400335a2b45bf32566150bd6fb39f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/VolumetricCloudsPass.js#0000:VolumetricCloudsPass","exportIndex":0,"name":"VolumetricCloudsPass","kind":"class","signature":"class VolumetricCloudsPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/VolumetricCloudsPass.md","moduleTitle":"render/passes/VolumetricCloudsPass","source":"engine/render/passes/VolumetricCloudsPass.js","import":"/engine/render/passes/VolumetricCloudsPass.js","sourceHash":"4a36a08a7bf799679f856f352d4fb45afea400335a2b45bf32566150bd6fb39f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/VolumetricCloudsPass.js#0001:VOLUMETRIC_CLOUDS_JITTER_PCG_HASH_WGSL","exportIndex":1,"name":"VOLUMETRIC_CLOUDS_JITTER_PCG_HASH_WGSL","kind":"constant","signature":"VOLUMETRIC_CLOUDS_JITTER_PCG_HASH_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/index.js","title":"render/passes/index","summary":"","exportCount":53}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0000:AreaResamplePass","exportIndex":0,"name":"AreaResamplePass","kind":"re-export","signature":"AreaResamplePass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0001:AutoExposurePass","exportIndex":1,"name":"AutoExposurePass","kind":"re-export","signature":"AutoExposurePass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0002:BloomPass","exportIndex":2,"name":"BloomPass","kind":"re-export","signature":"BloomPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0003:CascadeMetrics","exportIndex":3,"name":"CascadeMetrics","kind":"re-export","signature":"CascadeMetrics","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0004:CascadedShadowMap","exportIndex":4,"name":"CascadedShadowMap","kind":"re-export","signature":"CascadedShadowMap","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0005:CascadedShadowMapper","exportIndex":5,"name":"CascadedShadowMapper","kind":"re-export","signature":"CascadedShadowMapper","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0006:ChromaticAberrationPass","exportIndex":6,"name":"ChromaticAberrationPass","kind":"re-export","signature":"ChromaticAberrationPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0007:ClearPass","exportIndex":7,"name":"ClearPass","kind":"re-export","signature":"ClearPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0008:ClothDebugController","exportIndex":8,"name":"ClothDebugController","kind":"re-export","signature":"ClothDebugController","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0009:ClothDebugPass","exportIndex":9,"name":"ClothDebugPass","kind":"re-export","signature":"ClothDebugPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0010:ColorGradingPass","exportIndex":10,"name":"ColorGradingPass","kind":"re-export","signature":"ColorGradingPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0011:ContactShadowsPass","exportIndex":11,"name":"ContactShadowsPass","kind":"re-export","signature":"ContactShadowsPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0012:DepthOfFieldPass","exportIndex":12,"name":"DepthOfFieldPass","kind":"re-export","signature":"DepthOfFieldPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0013:FSRPass","exportIndex":13,"name":"FSRPass","kind":"re-export","signature":"FSRPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0014:FXAAPass","exportIndex":14,"name":"FXAAPass","kind":"re-export","signature":"FXAAPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0015:FilmGrainPass","exportIndex":15,"name":"FilmGrainPass","kind":"re-export","signature":"FilmGrainPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0016:FluidDebugController","exportIndex":16,"name":"FluidDebugController","kind":"re-export","signature":"FluidDebugController","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0017:FluidDebugPass","exportIndex":17,"name":"FluidDebugPass","kind":"re-export","signature":"FluidDebugPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0018:FluidWaterPass","exportIndex":18,"name":"FluidWaterPass","kind":"re-export","signature":"FluidWaterPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0019:GOD_RAYS_WGSL","exportIndex":19,"name":"GOD_RAYS_WGSL","kind":"re-export","signature":"GOD_RAYS_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0020:GeometryPass","exportIndex":20,"name":"GeometryPass","kind":"re-export","signature":"GeometryPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0021:GodRays","exportIndex":21,"name":"GodRays","kind":"re-export","signature":"GodRays","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0022:HDRPipeline","exportIndex":22,"name":"HDRPipeline","kind":"re-export","signature":"HDRPipeline","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0023:HDR_PIPELINE_WGSL","exportIndex":23,"name":"HDR_PIPELINE_WGSL","kind":"re-export","signature":"HDR_PIPELINE_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0024:HiZPass","exportIndex":24,"name":"HiZPass","kind":"re-export","signature":"HiZPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0025:LensFlarePass","exportIndex":25,"name":"LensFlarePass","kind":"re-export","signature":"LensFlarePass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0026:LightingPass","exportIndex":26,"name":"LightingPass","kind":"re-export","signature":"LightingPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0027:MotionBlurPass","exportIndex":27,"name":"MotionBlurPass","kind":"re-export","signature":"MotionBlurPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0028:OutlinePass","exportIndex":28,"name":"OutlinePass","kind":"re-export","signature":"OutlinePass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0029:PaniniProjectionPass","exportIndex":29,"name":"PaniniProjectionPass","kind":"re-export","signature":"PaniniProjectionPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0030:ParticlePass","exportIndex":30,"name":"ParticlePass","kind":"re-export","signature":"ParticlePass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0031:PathTracingPass","exportIndex":31,"name":"PathTracingPass","kind":"re-export","signature":"PathTracingPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0032:PostProcessChainPass","exportIndex":32,"name":"PostProcessChainPass","kind":"re-export","signature":"PostProcessChainPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0033:PostProcessController","exportIndex":33,"name":"PostProcessController","kind":"re-export","signature":"PostProcessController","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0034:PurkinjeEffectPass","exportIndex":34,"name":"PurkinjeEffectPass","kind":"re-export","signature":"PurkinjeEffectPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0035:ReSTIRGIPass","exportIndex":35,"name":"ReSTIRGIPass","kind":"re-export","signature":"ReSTIRGIPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0036:ReconstructionMode","exportIndex":36,"name":"ReconstructionMode","kind":"re-export","signature":"ReconstructionMode","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0037:ReconstructionProvider","exportIndex":37,"name":"ReconstructionProvider","kind":"re-export","signature":"ReconstructionProvider","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0038:SSAOPass","exportIndex":38,"name":"SSAOPass","kind":"re-export","signature":"SSAOPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0039:SSGIPass","exportIndex":39,"name":"SSGIPass","kind":"re-export","signature":"SSGIPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0040:SSRPass","exportIndex":40,"name":"SSRPass","kind":"re-export","signature":"SSRPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0041:SVGFDenoise","exportIndex":41,"name":"SVGFDenoise","kind":"re-export","signature":"SVGFDenoise","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0042:ShadowPass","exportIndex":42,"name":"ShadowPass","kind":"re-export","signature":"ShadowPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0043:SharpeningPass","exportIndex":43,"name":"SharpeningPass","kind":"re-export","signature":"SharpeningPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0044:SpellEffectPass","exportIndex":44,"name":"SpellEffectPass","kind":"re-export","signature":"SpellEffectPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0045:TAAPass","exportIndex":45,"name":"TAAPass","kind":"re-export","signature":"TAAPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0046:TONEMAP_OPERATOR","exportIndex":46,"name":"TONEMAP_OPERATOR","kind":"re-export","signature":"TONEMAP_OPERATOR","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0047:TSRQuality","exportIndex":47,"name":"TSRQuality","kind":"re-export","signature":"TSRQuality","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0048:TemporalSuperResolution","exportIndex":48,"name":"TemporalSuperResolution","kind":"re-export","signature":"TemporalSuperResolution","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0049:UIHudPass","exportIndex":49,"name":"UIHudPass","kind":"re-export","signature":"UIHudPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0050:UnderwaterPass","exportIndex":50,"name":"UnderwaterPass","kind":"re-export","signature":"UnderwaterPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0051:VignettePass","exportIndex":51,"name":"VignettePass","kind":"re-export","signature":"VignettePass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/index.md","moduleTitle":"render/passes/index","source":"engine/render/passes/index.js","import":"/engine/render/passes/index.js","sourceHash":"a2da5c4e699d16ccebf4a4bd8ce81267cfd0ff897d19d12f0d1fc2e1cc9a6530","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/index.js#0052:VolumetricCloudsPass","exportIndex":52,"name":"VolumetricCloudsPass","kind":"re-export","signature":"VolumetricCloudsPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/spellpacks/index.md","moduleTitle":"render/passes/spellpacks/index","source":"engine/render/passes/spellpacks/index.js","import":"/engine/render/passes/spellpacks/index.js","sourceHash":"acede6b21fbdf71d5dad06484e60e585768d44830ee80440e9b867fc1836a18a","subsystem":"engine","recordType":"api-module","id":"module:engine/render/passes/spellpacks/index.js","title":"render/passes/spellpacks/index","summary":"spellpacks/index.js — placeholder for GPU spell effect manifests. The original data lived in an external sibling tree; this local stub lets SpellEffectPass compile until the spellpack manifest pipeline is merged.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/passes/spellpacks/index.md","moduleTitle":"render/passes/spellpacks/index","source":"engine/render/passes/spellpacks/index.js","import":"/engine/render/passes/spellpacks/index.js","sourceHash":"acede6b21fbdf71d5dad06484e60e585768d44830ee80440e9b867fc1836a18a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/passes/spellpacks/index.js#0000:collectGpuShaders","exportIndex":0,"name":"collectGpuShaders","kind":"function","signature":"collectGpuShaders()","summary":"spellpacks/index.js — placeholder for GPU spell effect manifests. The original data lived in an external sibling tree; this local stub lets SpellEffectPass compile until the spellpack manifest pipeline is merged."}
{"schemaVersion":1,"modulePath":"engine/reference/render/postprocess/TemporalAA.md","moduleTitle":"render/postprocess/TemporalAA","source":"engine/render/postprocess/TemporalAA.js","import":"/engine/render/postprocess/TemporalAA.js","sourceHash":"6d70a31f104a34278d390bd5d8548307f6cdc2f4a1d7c29d13c79f2c0f6f3bea","subsystem":"engine","recordType":"api-module","id":"module:engine/render/postprocess/TemporalAA.js","title":"render/postprocess/TemporalAA","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/postprocess/TemporalAA.md","moduleTitle":"render/postprocess/TemporalAA","source":"engine/render/postprocess/TemporalAA.js","import":"/engine/render/postprocess/TemporalAA.js","sourceHash":"6d70a31f104a34278d390bd5d8548307f6cdc2f4a1d7c29d13c79f2c0f6f3bea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/postprocess/TemporalAA.js#0000:TemporalAA","exportIndex":0,"name":"TemporalAA","kind":"class","signature":"class TemporalAA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/proxy/ProxyBillboardAlign.md","moduleTitle":"render/proxy/ProxyBillboardAlign","source":"engine/render/proxy/ProxyBillboardAlign.js","import":"/engine/render/proxy/ProxyBillboardAlign.js","sourceHash":"29f9d80c08076d2c3dc3d598013b82f10a6844180218642b0dd71508a2f61717","subsystem":"engine","recordType":"api-module","id":"module:engine/render/proxy/ProxyBillboardAlign.js","title":"render/proxy/ProxyBillboardAlign","summary":"ProxyBillboardAlign — GPU Compute Pass for Billboard Instance Rotation Aligns BILLBOARD-mode proxy instances to face the camera each frame. Equivalent to Blender's \"Track To\" constraint + \"Align Euler to Vector\" in Geometry Nodes. Input:  instance buffer (read-write) containing worldMat per instance Output: updated rotation portion of worldMat in-place Only processes instances where proxyMode == PROXY_MODE_BILLBOARD (1u). BOX proxies are skipped (their orientation is set by the developer).","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/proxy/ProxyBillboardAlign.md","moduleTitle":"render/proxy/ProxyBillboardAlign","source":"engine/render/proxy/ProxyBillboardAlign.js","import":"/engine/render/proxy/ProxyBillboardAlign.js","sourceHash":"29f9d80c08076d2c3dc3d598013b82f10a6844180218642b0dd71508a2f61717","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/proxy/ProxyBillboardAlign.js#0000:ProxyBillboardAlign","exportIndex":0,"name":"ProxyBillboardAlign","kind":"class","signature":"class ProxyBillboardAlign","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/proxy/ProxyGBufferPass.md","moduleTitle":"render/proxy/ProxyGBufferPass","source":"engine/render/proxy/ProxyGBufferPass.js","import":"/engine/render/proxy/ProxyGBufferPass.js","sourceHash":"939630271c0627a8a3f11bc71625d161690685f671c93499cecd5d44195f3b5b","subsystem":"engine","recordType":"api-module","id":"module:engine/render/proxy/ProxyGBufferPass.js","title":"render/proxy/ProxyGBufferPass","summary":"ProxyGBufferPass — Rasterize Proxy AABB Cubes into the GBuffer ID Texture Renders invisible proxy bounding boxes (one per instance) to stamp a 1-indexed proxy instance ID into a r32uint GBuffer attachment. The depth buffer ensures correct occlusion against scene geometry. The r32uint texture is then read by ProxyMaskPass, which fires per-pixel rays only for pixels where instanceId > 0. Pipeline: Proxy cube geometry (GPU instanced) → vertex: transform by instance worldMat → fragment: write flat instanceId to r32uint attachment → depth: standard scene depth (proxy boxes occluded correctly) The proxy cubes are invisible in the color attachment — they only tag the ID texture. ProxyShadePass writes final color to the HDR buffer.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/proxy/ProxyGBufferPass.md","moduleTitle":"render/proxy/ProxyGBufferPass","source":"engine/render/proxy/ProxyGBufferPass.js","import":"/engine/render/proxy/ProxyGBufferPass.js","sourceHash":"939630271c0627a8a3f11bc71625d161690685f671c93499cecd5d44195f3b5b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/proxy/ProxyGBufferPass.js#0000:ProxyGBufferPass","exportIndex":0,"name":"ProxyGBufferPass","kind":"class","signature":"class ProxyGBufferPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/proxy/ProxyGeometrySystem.md","moduleTitle":"render/proxy/ProxyGeometrySystem","source":"engine/render/proxy/ProxyGeometrySystem.js","import":"/engine/render/proxy/ProxyGeometrySystem.js","sourceHash":"ab1d751c033070314a39286f82e3e5e7c9ed27f8ed70fe5691e130599e73672d","subsystem":"engine","recordType":"api-module","id":"module:engine/render/proxy/ProxyGeometrySystem.js","title":"render/proxy/ProxyGeometrySystem","summary":"ProxyGeometrySystem — Main Orchestrator Decouples visual complexity from geometric complexity using the Ray Portal proxy technique adapted from Blender Cycles + 8 researched engine approaches. Architecture: 1. registerTarget(assetId, mesh, material) → Builds BLAS (BVH via BVHAccel), bakes SDF, bakes Octahedral atlas 2. addInstance(assetId, worldMatrix, mode) → Adds to instance buffer + TLAS 3. update(fps, cameraPos, encoder) → Billboard align compute, FPS-driven tier selection, TLAS refit 4. render(encoder, gbuffer, hdrTarget) → ProxyMaskPass → ProxyShadePass Quality tiers (auto-selected by FPS): ULTRA  (>55 FPS) — TLAS/BLAS per-pixel ray portal HIGH   (>40 FPS) — SDF cone march MED    (>28 FPS) — True impostor (height field billboard) LOW    (  <28  ) — Octahedral impostor atlas (baked) Public API: registerTarget(assetId, positions, indices, uvs, material) addInstance(assetId, worldMatrix, mode)        → instanceId removeInstance(instanceId) updateInstanceTransform(instanceId, worldMatrix) setQualityMode('auto' | 'ultra' | 'high' | 'med' | 'low') update(fps, cameraPos, commandEncoder) render(commandEncoder, gbufferTargets, hdrTarget) getStats() destroy()","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/render/proxy/ProxyGeometrySystem.md","moduleTitle":"render/proxy/ProxyGeometrySystem","source":"engine/render/proxy/ProxyGeometrySystem.js","import":"/engine/render/proxy/ProxyGeometrySystem.js","sourceHash":"ab1d751c033070314a39286f82e3e5e7c9ed27f8ed70fe5691e130599e73672d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/proxy/ProxyGeometrySystem.js#0000:ProxyGeometrySystem","exportIndex":0,"name":"ProxyGeometrySystem","kind":"class","signature":"class ProxyGeometrySystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/proxy/ProxyGeometrySystem.md","moduleTitle":"render/proxy/ProxyGeometrySystem","source":"engine/render/proxy/ProxyGeometrySystem.js","import":"/engine/render/proxy/ProxyGeometrySystem.js","sourceHash":"ab1d751c033070314a39286f82e3e5e7c9ed27f8ed70fe5691e130599e73672d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/proxy/ProxyGeometrySystem.js#0001:PROXY_MODE","exportIndex":1,"name":"PROXY_MODE","kind":"constant","signature":"PROXY_MODE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/proxy/ProxyGeometrySystem.md","moduleTitle":"render/proxy/ProxyGeometrySystem","source":"engine/render/proxy/ProxyGeometrySystem.js","import":"/engine/render/proxy/ProxyGeometrySystem.js","sourceHash":"ab1d751c033070314a39286f82e3e5e7c9ed27f8ed70fe5691e130599e73672d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/proxy/ProxyGeometrySystem.js#0002:PROXY_TIER","exportIndex":2,"name":"PROXY_TIER","kind":"re-export","signature":"PROXY_TIER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/proxy/ProxyMaskPass.md","moduleTitle":"render/proxy/ProxyMaskPass","source":"engine/render/proxy/ProxyMaskPass.js","import":"/engine/render/proxy/ProxyMaskPass.js","sourceHash":"c0a81ac86c61ca9140febd5c0715e66975a43c41a7242d9568205c735e713aa3","subsystem":"engine","recordType":"api-module","id":"module:engine/render/proxy/ProxyMaskPass.js","title":"render/proxy/ProxyMaskPass","summary":"ProxyMaskPass — Compute Pass: Per-Pixel Ray → Hit Mask + Hit Data This is the engine equivalent of Blender's Raycast Node. For each screen pixel tagged with a proxy instance ID (written by the GBuffer proxy rasterization pass), fires a ray into the appropriate quality tier: ULTRA (0) — TLAS/BLAS two-level BVH traversal (exact, per-pixel) HIGH  (1) — SDF cone marching (correct topology, slightly cheaper) MED   (2) — True impostor height-field ray march (billboard) LOW   (3) — Octahedral impostor atlas sample (baked, near zero cost) Outputs four textures consumed by ProxyShadePass: hitMask   — r8uint:  0 = miss (transparent), 1 = hit hitPos    — rgba32float: world-space hit position hitNormal — rgba16float: world-space hit normal hitUV     — rg16float:   UV for material sampling \"Is Hit\" = 0 causes ProxyShadePass to discard that pixel, producing the transparent cutout that hides the proxy box edges (Blender Transparent BSDF).","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/proxy/ProxyMaskPass.md","moduleTitle":"render/proxy/ProxyMaskPass","source":"engine/render/proxy/ProxyMaskPass.js","import":"/engine/render/proxy/ProxyMaskPass.js","sourceHash":"c0a81ac86c61ca9140febd5c0715e66975a43c41a7242d9568205c735e713aa3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/proxy/ProxyMaskPass.js#0000:ProxyMaskPass","exportIndex":0,"name":"ProxyMaskPass","kind":"class","signature":"class ProxyMaskPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/proxy/ProxyMaskPass.md","moduleTitle":"render/proxy/ProxyMaskPass","source":"engine/render/proxy/ProxyMaskPass.js","import":"/engine/render/proxy/ProxyMaskPass.js","sourceHash":"c0a81ac86c61ca9140febd5c0715e66975a43c41a7242d9568205c735e713aa3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/proxy/ProxyMaskPass.js#0001:PROXY_TIER","exportIndex":1,"name":"PROXY_TIER","kind":"constant","signature":"PROXY_TIER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/proxy/ProxyOctahedralCache.md","moduleTitle":"render/proxy/ProxyOctahedralCache","source":"engine/render/proxy/ProxyOctahedralCache.js","import":"/engine/render/proxy/ProxyOctahedralCache.js","sourceHash":"5dd1115914d35f880bc133f0f00a3c8c3b050605ab57260ffaf931004de615d9","subsystem":"engine","recordType":"api-module","id":"module:engine/render/proxy/ProxyOctahedralCache.js","title":"render/proxy/ProxyOctahedralCache","summary":"ProxyOctahedralCache — Baked Octahedral Impostor Atlas Pre-renders a target asset from N×N octahedral viewpoints and packs the results into a single texture atlas. At runtime, proxy billboards sample the nearest 4 frames (bilinearly blended in octahedral space). Technique from: Emil Poulsen / Unity Pixyz / UE5 Nanite fallback. Atlas layout: - atlasFrames × atlasFrames grid of FRAME_SIZE×FRAME_SIZE RGBA tiles - Each tile stores: RGB = color, A = alpha mask - An additional normal atlas stores XYZ normals (for lighting correction) Pros:  Near-zero runtime cost, excellent at distance. Cons:  Baked offline (re-bake if mesh changes); limited parallax. Fix:   Dirty flag triggers async re-bake; irradiance probe augments lighting.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/proxy/ProxyOctahedralCache.md","moduleTitle":"render/proxy/ProxyOctahedralCache","source":"engine/render/proxy/ProxyOctahedralCache.js","import":"/engine/render/proxy/ProxyOctahedralCache.js","sourceHash":"5dd1115914d35f880bc133f0f00a3c8c3b050605ab57260ffaf931004de615d9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/proxy/ProxyOctahedralCache.js#0000:ProxyOctahedralCache","exportIndex":0,"name":"ProxyOctahedralCache","kind":"class","signature":"class ProxyOctahedralCache","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/proxy/ProxyOctahedralCache.md","moduleTitle":"render/proxy/ProxyOctahedralCache","source":"engine/render/proxy/ProxyOctahedralCache.js","import":"/engine/render/proxy/ProxyOctahedralCache.js","sourceHash":"5dd1115914d35f880bc133f0f00a3c8c3b050605ab57260ffaf931004de615d9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/proxy/ProxyOctahedralCache.js#0001:OCTAHEDRAL_WGSL","exportIndex":1,"name":"OCTAHEDRAL_WGSL","kind":"constant","signature":"OCTAHEDRAL_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/proxy/ProxySDF.md","moduleTitle":"render/proxy/ProxySDF","source":"engine/render/proxy/ProxySDF.js","import":"/engine/render/proxy/ProxySDF.js","sourceHash":"d3f2d985cf41f1439435af10c4e69832bbc6b7724ab244d9b6ae820d32bbc534","subsystem":"engine","recordType":"api-module","id":"module:engine/render/proxy/ProxySDF.js","title":"render/proxy/ProxySDF","summary":"ProxySDF — SDF Proxy Baking + Runtime Cone March (HIGH tier) Wraps MeshSDFGenerator to produce 3D SDF textures for registered proxy assets. At runtime, the GPU cone marches (sphere traces) through the SDF to produce pixel-perfect silhouettes, normals, and depth from any viewing angle. Advantages over octahedral impostor: - Handles ANY topology (torus, rings, handles — not just height fields) - Normals derived from SDF gradient (analytically smooth) - SDF soft shadows / AO available for free via cone angle Known problems + solutions: Problem: O(n³) memory for 3D texture Fix:     Sparse SDF using VoxelCompression; only near-surface voxels stored Problem: UV data absent from SDF Fix:     Parallel volume storing nearest-triangle barycentric → UV lookup Problem: Thin features lose precision at low grid resolution Fix:     2-level SDF: coarse 32³ + fine 64³ near-surface refinement","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/proxy/ProxySDF.md","moduleTitle":"render/proxy/ProxySDF","source":"engine/render/proxy/ProxySDF.js","import":"/engine/render/proxy/ProxySDF.js","sourceHash":"d3f2d985cf41f1439435af10c4e69832bbc6b7724ab244d9b6ae820d32bbc534","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/proxy/ProxySDF.js#0000:ProxySDF","exportIndex":0,"name":"ProxySDF","kind":"class","signature":"class ProxySDF","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/proxy/ProxySDF.md","moduleTitle":"render/proxy/ProxySDF","source":"engine/render/proxy/ProxySDF.js","import":"/engine/render/proxy/ProxySDF.js","sourceHash":"d3f2d985cf41f1439435af10c4e69832bbc6b7724ab244d9b6ae820d32bbc534","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/proxy/ProxySDF.js#0001:SDF_PROXY_WGSL","exportIndex":1,"name":"SDF_PROXY_WGSL","kind":"constant","signature":"SDF_PROXY_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/proxy/ProxyShadePass.md","moduleTitle":"render/proxy/ProxyShadePass","source":"engine/render/proxy/ProxyShadePass.js","import":"/engine/render/proxy/ProxyShadePass.js","sourceHash":"49bfee938d567f47411159e90cfd005a3c1ce026b1b22ca9ea432c93388cb903","subsystem":"engine","recordType":"api-module","id":"module:engine/render/proxy/ProxyShadePass.js","title":"render/proxy/ProxyShadePass","summary":"ProxyShadePass — Material Evaluation + Composite to HDR Buffer Reads the hit data textures produced by ProxyMaskPass and: 1. Discards pixels where hitMask = 0 (transparent cutout — Blender Transparent BSDF) 2. Samples the target asset's material at hitUV (albedo, roughness, metallic, normal) 3. Evaluates PBR lighting using the engine's LightManager shader functions 4. Alpha-composites into the HDR color buffer before tonemapping This is the deferred equivalent of Blender's Mix Shader: Mix(factor=IsHit, A=RayPortalBSDF, B=TransparentBSDF) → HDR output","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/proxy/ProxyShadePass.md","moduleTitle":"render/proxy/ProxyShadePass","source":"engine/render/proxy/ProxyShadePass.js","import":"/engine/render/proxy/ProxyShadePass.js","sourceHash":"49bfee938d567f47411159e90cfd005a3c1ce026b1b22ca9ea432c93388cb903","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/proxy/ProxyShadePass.js#0000:ProxyShadePass","exportIndex":0,"name":"ProxyShadePass","kind":"class","signature":"class ProxyShadePass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/proxy/TLASBuilder.md","moduleTitle":"render/proxy/TLASBuilder","source":"engine/render/proxy/TLASBuilder.js","import":"/engine/render/proxy/TLASBuilder.js","sourceHash":"96b6a21a4dec44588a9247463376ecedd22a0a887e1db31e887b5aa0a809fd00","subsystem":"engine","recordType":"api-module","id":"module:engine/render/proxy/TLASBuilder.js","title":"render/proxy/TLASBuilder","summary":"TLASBuilder — Two-Level Acceleration Structure for Proxy Geometry Implements the TLAS (Top-Level Acceleration Structure) over proxy instances, each referencing a BLAS (Bottom-Level Acceleration Structure = the per-asset BVH built by BVHAccel.js / BVHBuilder). Key insight (from Jacco Bikker / Interplay of Light research): \"Given a mesh with a BVH in object space and a 4x4 matrix, we intersect its BVH in world space by applying the inverse transform to the ray.\" This means: - BLAS is built ONCE per unique asset, stored in object space - TLAS stores instance bounding boxes (world space) + inverse world matrices - Per-ray: traverse TLAS → at leaf, transform ray into object space → traverse BLAS - Adding 1000 instances of the same mesh = 1 BLAS + 1000 TLAS entries (not 1000 BVHes) GPU buffer layout designed for direct use in ray_portal.js WGSL traversal.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/proxy/TLASBuilder.md","moduleTitle":"render/proxy/TLASBuilder","source":"engine/render/proxy/TLASBuilder.js","import":"/engine/render/proxy/TLASBuilder.js","sourceHash":"96b6a21a4dec44588a9247463376ecedd22a0a887e1db31e887b5aa0a809fd00","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/proxy/TLASBuilder.js#0000:TLASBuilder","exportIndex":0,"name":"TLASBuilder","kind":"class","signature":"class TLASBuilder","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/proxy/index.md","moduleTitle":"render/proxy/index","source":"engine/render/proxy/index.js","import":"/engine/render/proxy/index.js","sourceHash":"d2319ce371dd7953dc19b2a286a4cc5acffc2b9bb00b206125ade20047dfcd60","subsystem":"engine","recordType":"api-module","id":"module:engine/render/proxy/index.js","title":"render/proxy/index","summary":"Proxy Geometry System — Public Exports Ray Portal Proxy Topology rendering system: Decouples visual complexity from geometric complexity using 5 quality tiers that switch dynamically based on FPS. Primary entry point: ProxyGeometrySystem Usage: import { ProxyGeometrySystem, PROXY_MODE, PROXY_TIER } from './proxy/index.js'; const proxy = new ProxyGeometrySystem(device, width, height); await proxy.registerTarget(0, positions, indices, uvs, material); proxy.addInstance(0, worldMatrix, PROXY_MODE.BOX); // Per frame: proxy.update(fps, cameraPos, encoder); proxy.render(encoder, gbuffer, hdrTarget, sceneData);","exportCount":13}
{"schemaVersion":1,"modulePath":"engine/reference/render/proxy/index.md","moduleTitle":"render/proxy/index","source":"engine/render/proxy/index.js","import":"/engine/render/proxy/index.js","sourceHash":"d2319ce371dd7953dc19b2a286a4cc5acffc2b9bb00b206125ade20047dfcd60","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/proxy/index.js#0000:OCTAHEDRAL_WGSL","exportIndex":0,"name":"OCTAHEDRAL_WGSL","kind":"re-export","signature":"OCTAHEDRAL_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/proxy/index.md","moduleTitle":"render/proxy/index","source":"engine/render/proxy/index.js","import":"/engine/render/proxy/index.js","sourceHash":"d2319ce371dd7953dc19b2a286a4cc5acffc2b9bb00b206125ade20047dfcd60","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/proxy/index.js#0001:PROXY_MODE","exportIndex":1,"name":"PROXY_MODE","kind":"re-export","signature":"PROXY_MODE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/proxy/index.md","moduleTitle":"render/proxy/index","source":"engine/render/proxy/index.js","import":"/engine/render/proxy/index.js","sourceHash":"d2319ce371dd7953dc19b2a286a4cc5acffc2b9bb00b206125ade20047dfcd60","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/proxy/index.js#0002:PROXY_TIER","exportIndex":2,"name":"PROXY_TIER","kind":"re-export","signature":"PROXY_TIER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/proxy/index.md","moduleTitle":"render/proxy/index","source":"engine/render/proxy/index.js","import":"/engine/render/proxy/index.js","sourceHash":"d2319ce371dd7953dc19b2a286a4cc5acffc2b9bb00b206125ade20047dfcd60","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/proxy/index.js#0003:ProxyBillboardAlign","exportIndex":3,"name":"ProxyBillboardAlign","kind":"re-export","signature":"ProxyBillboardAlign","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/proxy/index.md","moduleTitle":"render/proxy/index","source":"engine/render/proxy/index.js","import":"/engine/render/proxy/index.js","sourceHash":"d2319ce371dd7953dc19b2a286a4cc5acffc2b9bb00b206125ade20047dfcd60","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/proxy/index.js#0004:ProxyGBufferPass","exportIndex":4,"name":"ProxyGBufferPass","kind":"re-export","signature":"ProxyGBufferPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/proxy/index.md","moduleTitle":"render/proxy/index","source":"engine/render/proxy/index.js","import":"/engine/render/proxy/index.js","sourceHash":"d2319ce371dd7953dc19b2a286a4cc5acffc2b9bb00b206125ade20047dfcd60","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/proxy/index.js#0005:ProxyGeometrySystem","exportIndex":5,"name":"ProxyGeometrySystem","kind":"re-export","signature":"ProxyGeometrySystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/proxy/index.md","moduleTitle":"render/proxy/index","source":"engine/render/proxy/index.js","import":"/engine/render/proxy/index.js","sourceHash":"d2319ce371dd7953dc19b2a286a4cc5acffc2b9bb00b206125ade20047dfcd60","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/proxy/index.js#0006:ProxyMaskPass","exportIndex":6,"name":"ProxyMaskPass","kind":"re-export","signature":"ProxyMaskPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/proxy/index.md","moduleTitle":"render/proxy/index","source":"engine/render/proxy/index.js","import":"/engine/render/proxy/index.js","sourceHash":"d2319ce371dd7953dc19b2a286a4cc5acffc2b9bb00b206125ade20047dfcd60","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/proxy/index.js#0007:ProxyOctahedralCache","exportIndex":7,"name":"ProxyOctahedralCache","kind":"re-export","signature":"ProxyOctahedralCache","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/proxy/index.md","moduleTitle":"render/proxy/index","source":"engine/render/proxy/index.js","import":"/engine/render/proxy/index.js","sourceHash":"d2319ce371dd7953dc19b2a286a4cc5acffc2b9bb00b206125ade20047dfcd60","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/proxy/index.js#0008:ProxySDF","exportIndex":8,"name":"ProxySDF","kind":"re-export","signature":"ProxySDF","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/proxy/index.md","moduleTitle":"render/proxy/index","source":"engine/render/proxy/index.js","import":"/engine/render/proxy/index.js","sourceHash":"d2319ce371dd7953dc19b2a286a4cc5acffc2b9bb00b206125ade20047dfcd60","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/proxy/index.js#0009:ProxyShadePass","exportIndex":9,"name":"ProxyShadePass","kind":"re-export","signature":"ProxyShadePass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/proxy/index.md","moduleTitle":"render/proxy/index","source":"engine/render/proxy/index.js","import":"/engine/render/proxy/index.js","sourceHash":"d2319ce371dd7953dc19b2a286a4cc5acffc2b9bb00b206125ade20047dfcd60","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/proxy/index.js#0010:RAY_PORTAL_WGSL","exportIndex":10,"name":"RAY_PORTAL_WGSL","kind":"re-export","signature":"RAY_PORTAL_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/proxy/index.md","moduleTitle":"render/proxy/index","source":"engine/render/proxy/index.js","import":"/engine/render/proxy/index.js","sourceHash":"d2319ce371dd7953dc19b2a286a4cc5acffc2b9bb00b206125ade20047dfcd60","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/proxy/index.js#0011:SDF_PROXY_WGSL","exportIndex":11,"name":"SDF_PROXY_WGSL","kind":"re-export","signature":"SDF_PROXY_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/proxy/index.md","moduleTitle":"render/proxy/index","source":"engine/render/proxy/index.js","import":"/engine/render/proxy/index.js","sourceHash":"d2319ce371dd7953dc19b2a286a4cc5acffc2b9bb00b206125ade20047dfcd60","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/proxy/index.js#0012:TLASBuilder","exportIndex":12,"name":"TLASBuilder","kind":"re-export","signature":"TLASBuilder","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/scenes/StandardEntityRenderResources.md","moduleTitle":"render/scenes/StandardEntityRenderResources","source":"engine/render/scenes/StandardEntityRenderResources.js","import":"/engine/render/scenes/StandardEntityRenderResources.js","sourceHash":"3962e8deccb25f98edb867aeb5b683a89684c0125acea1b4790c7b8f7cf36b0d","subsystem":"engine","recordType":"api-module","id":"module:engine/render/scenes/StandardEntityRenderResources.js","title":"render/scenes/StandardEntityRenderResources","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/scenes/StandardEntityRenderResources.md","moduleTitle":"render/scenes/StandardEntityRenderResources","source":"engine/render/scenes/StandardEntityRenderResources.js","import":"/engine/render/scenes/StandardEntityRenderResources.js","sourceHash":"3962e8deccb25f98edb867aeb5b683a89684c0125acea1b4790c7b8f7cf36b0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/scenes/StandardEntityRenderResources.js#0000:createStandardEntityRenderResources","exportIndex":0,"name":"createStandardEntityRenderResources","kind":"function","signature":"createStandardEntityRenderResources(device, renderPipeline, lightsBuffer, entityId, uniformByteLength)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/scenes/StandardRoomRenderer.md","moduleTitle":"render/scenes/StandardRoomRenderer","source":"engine/render/scenes/StandardRoomRenderer.js","import":"/engine/render/scenes/StandardRoomRenderer.js","sourceHash":"d08e4dca29b6598f339ab014a320d491cef84d1619236a892c19f7c533082d14","subsystem":"engine","recordType":"api-module","id":"module:engine/render/scenes/StandardRoomRenderer.js","title":"render/scenes/StandardRoomRenderer","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/scenes/StandardRoomRenderer.md","moduleTitle":"render/scenes/StandardRoomRenderer","source":"engine/render/scenes/StandardRoomRenderer.js","import":"/engine/render/scenes/StandardRoomRenderer.js","sourceHash":"d08e4dca29b6598f339ab014a320d491cef84d1619236a892c19f7c533082d14","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/scenes/StandardRoomRenderer.js#0000:createStandardRoomRenderer","exportIndex":0,"name":"createStandardRoomRenderer","kind":"function","signature":"async createStandardRoomRenderer(options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/scenes/StandardUniforms.md","moduleTitle":"render/scenes/StandardUniforms","source":"engine/render/scenes/StandardUniforms.js","import":"/engine/render/scenes/StandardUniforms.js","sourceHash":"a62ec6c22a8ad363c3788ba40e405362df208db1c196b484ee07bbf9e806b174","subsystem":"engine","recordType":"api-module","id":"module:engine/render/scenes/StandardUniforms.js","title":"render/scenes/StandardUniforms","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/scenes/StandardUniforms.md","moduleTitle":"render/scenes/StandardUniforms","source":"engine/render/scenes/StandardUniforms.js","import":"/engine/render/scenes/StandardUniforms.js","sourceHash":"a62ec6c22a8ad363c3788ba40e405362df208db1c196b484ee07bbf9e806b174","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/scenes/StandardUniforms.js#0000:updateStandardLights","exportIndex":0,"name":"updateStandardLights","kind":"function","signature":"updateStandardLights(device, lightsBuffer, lightsData, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/scenes/StandardUniforms.md","moduleTitle":"render/scenes/StandardUniforms","source":"engine/render/scenes/StandardUniforms.js","import":"/engine/render/scenes/StandardUniforms.js","sourceHash":"a62ec6c22a8ad363c3788ba40e405362df208db1c196b484ee07bbf9e806b174","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/scenes/StandardUniforms.js#0001:updateStandardUniforms","exportIndex":1,"name":"updateStandardUniforms","kind":"function","signature":"updateStandardUniforms(device, targetBuffer, uniformData, uniformDataU32, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/scenes/VoxelWorldRenderer.md","moduleTitle":"render/scenes/VoxelWorldRenderer","source":"engine/render/scenes/VoxelWorldRenderer.js","import":"/engine/render/scenes/VoxelWorldRenderer.js","sourceHash":"dfd316dab1b8cfd78a0ac378275c3942dee9e355b4a6f36c9bebe28ec0c9eab1","subsystem":"engine","recordType":"api-module","id":"module:engine/render/scenes/VoxelWorldRenderer.js","title":"render/scenes/VoxelWorldRenderer","summary":"Create a voxel world renderer.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/scenes/VoxelWorldRenderer.md","moduleTitle":"render/scenes/VoxelWorldRenderer","source":"engine/render/scenes/VoxelWorldRenderer.js","import":"/engine/render/scenes/VoxelWorldRenderer.js","sourceHash":"dfd316dab1b8cfd78a0ac378275c3942dee9e355b4a6f36c9bebe28ec0c9eab1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/scenes/VoxelWorldRenderer.js#0000:createVoxelWorldRenderer","exportIndex":0,"name":"createVoxelWorldRenderer","kind":"function","signature":"async createVoxelWorldRenderer(options)","summary":"Create a voxel world renderer."}
{"schemaVersion":1,"modulePath":"engine/reference/render/scenes/VoxelWorldRenderer.md","moduleTitle":"render/scenes/VoxelWorldRenderer","source":"engine/render/scenes/VoxelWorldRenderer.js","import":"/engine/render/scenes/VoxelWorldRenderer.js","sourceHash":"dfd316dab1b8cfd78a0ac378275c3942dee9e355b4a6f36c9bebe28ec0c9eab1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/scenes/VoxelWorldRenderer.js#0001:updateVoxelWorldFrameUniforms","exportIndex":1,"name":"updateVoxelWorldFrameUniforms","kind":"function","signature":"updateVoxelWorldFrameUniforms(device, frameBuffer, viewProj, view, proj, cameraPos, time,)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/sdf/MeshSDFGenerator.md","moduleTitle":"render/sdf/MeshSDFGenerator","source":"engine/render/sdf/MeshSDFGenerator.js","import":"/engine/render/sdf/MeshSDFGenerator.js","sourceHash":"f27a66a4f93afefcea59324e4368ea97ab77a521de4f1e39fd276007b8d03b29","subsystem":"engine","recordType":"api-module","id":"module:engine/render/sdf/MeshSDFGenerator.js","title":"render/sdf/MeshSDFGenerator","summary":"Validate and repair mesh data - removes invalid vertices and degenerate triangles","exportCount":18}
{"schemaVersion":1,"modulePath":"engine/reference/render/sdf/MeshSDFGenerator.md","moduleTitle":"render/sdf/MeshSDFGenerator","source":"engine/render/sdf/MeshSDFGenerator.js","import":"/engine/render/sdf/MeshSDFGenerator.js","sourceHash":"f27a66a4f93afefcea59324e4368ea97ab77a521de4f1e39fd276007b8d03b29","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/sdf/MeshSDFGenerator.js#0000:validateMesh","exportIndex":0,"name":"validateMesh","kind":"function","signature":"validateMesh(positions, indices)","summary":"Validate and repair mesh data - removes invalid vertices and degenerate triangles"}
{"schemaVersion":1,"modulePath":"engine/reference/render/sdf/MeshSDFGenerator.md","moduleTitle":"render/sdf/MeshSDFGenerator","source":"engine/render/sdf/MeshSDFGenerator.js","import":"/engine/render/sdf/MeshSDFGenerator.js","sourceHash":"f27a66a4f93afefcea59324e4368ea97ab77a521de4f1e39fd276007b8d03b29","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/sdf/MeshSDFGenerator.js#0001:simplifyMesh","exportIndex":1,"name":"simplifyMesh","kind":"function","signature":"simplifyMesh(positions, indices, targetTriangles = 1000)","summary":"Simplify high-poly mesh for faster SDF generation"}
{"schemaVersion":1,"modulePath":"engine/reference/render/sdf/MeshSDFGenerator.md","moduleTitle":"render/sdf/MeshSDFGenerator","source":"engine/render/sdf/MeshSDFGenerator.js","import":"/engine/render/sdf/MeshSDFGenerator.js","sourceHash":"f27a66a4f93afefcea59324e4368ea97ab77a521de4f1e39fd276007b8d03b29","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/sdf/MeshSDFGenerator.js#0002:analyzeMesh","exportIndex":2,"name":"analyzeMesh","kind":"function","signature":"analyzeMesh(positions, indices)","summary":"Analyze mesh and determine best SDF approach"}
{"schemaVersion":1,"modulePath":"engine/reference/render/sdf/MeshSDFGenerator.md","moduleTitle":"render/sdf/MeshSDFGenerator","source":"engine/render/sdf/MeshSDFGenerator.js","import":"/engine/render/sdf/MeshSDFGenerator.js","sourceHash":"f27a66a4f93afefcea59324e4368ea97ab77a521de4f1e39fd276007b8d03b29","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/sdf/MeshSDFGenerator.js#0003:computeBounds","exportIndex":3,"name":"computeBounds","kind":"function","signature":"computeBounds(positions)","summary":"Compute axis-aligned bounding box"}
{"schemaVersion":1,"modulePath":"engine/reference/render/sdf/MeshSDFGenerator.md","moduleTitle":"render/sdf/MeshSDFGenerator","source":"engine/render/sdf/MeshSDFGenerator.js","import":"/engine/render/sdf/MeshSDFGenerator.js","sourceHash":"f27a66a4f93afefcea59324e4368ea97ab77a521de4f1e39fd276007b8d03b29","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/sdf/MeshSDFGenerator.js#0004:fitPrimitive","exportIndex":4,"name":"fitPrimitive","kind":"function","signature":"fitPrimitive(positions, indices)","summary":"Auto-fit best primitive shape to mesh"}
{"schemaVersion":1,"modulePath":"engine/reference/render/sdf/MeshSDFGenerator.md","moduleTitle":"render/sdf/MeshSDFGenerator","source":"engine/render/sdf/MeshSDFGenerator.js","import":"/engine/render/sdf/MeshSDFGenerator.js","sourceHash":"f27a66a4f93afefcea59324e4368ea97ab77a521de4f1e39fd276007b8d03b29","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/sdf/MeshSDFGenerator.js#0005:fitCapsules","exportIndex":5,"name":"fitCapsules","kind":"function","signature":"fitCapsules(positions, indices, maxCapsules = 8)","summary":"Fit multiple capsules to a mesh (for ragdoll bodies)"}
{"schemaVersion":1,"modulePath":"engine/reference/render/sdf/MeshSDFGenerator.md","moduleTitle":"render/sdf/MeshSDFGenerator","source":"engine/render/sdf/MeshSDFGenerator.js","import":"/engine/render/sdf/MeshSDFGenerator.js","sourceHash":"f27a66a4f93afefcea59324e4368ea97ab77a521de4f1e39fd276007b8d03b29","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/sdf/MeshSDFGenerator.js#0006:generateTriangleBuffer","exportIndex":6,"name":"generateTriangleBuffer","kind":"function","signature":"generateTriangleBuffer(positions, indices)","summary":"Generate triangle buffer data for GPU SDF sampling"}
{"schemaVersion":1,"modulePath":"engine/reference/render/sdf/MeshSDFGenerator.md","moduleTitle":"render/sdf/MeshSDFGenerator","source":"engine/render/sdf/MeshSDFGenerator.js","import":"/engine/render/sdf/MeshSDFGenerator.js","sourceHash":"f27a66a4f93afefcea59324e4368ea97ab77a521de4f1e39fd276007b8d03b29","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/sdf/MeshSDFGenerator.js#0007:bakeSDF3D","exportIndex":7,"name":"bakeSDF3D","kind":"function","signature":"bakeSDF3D(positions, indices, resolution = 32)","summary":"Bake 3D SDF texture from mesh using BVH acceleration"}
{"schemaVersion":1,"modulePath":"engine/reference/render/sdf/MeshSDFGenerator.md","moduleTitle":"render/sdf/MeshSDFGenerator","source":"engine/render/sdf/MeshSDFGenerator.js","import":"/engine/render/sdf/MeshSDFGenerator.js","sourceHash":"f27a66a4f93afefcea59324e4368ea97ab77a521de4f1e39fd276007b8d03b29","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/sdf/MeshSDFGenerator.js#0008:initGPUBaker","exportIndex":8,"name":"initGPUBaker","kind":"function","signature":"async initGPUBaker(device)","summary":"Initialize GPU SDF baker"}
{"schemaVersion":1,"modulePath":"engine/reference/render/sdf/MeshSDFGenerator.md","moduleTitle":"render/sdf/MeshSDFGenerator","source":"engine/render/sdf/MeshSDFGenerator.js","import":"/engine/render/sdf/MeshSDFGenerator.js","sourceHash":"f27a66a4f93afefcea59324e4368ea97ab77a521de4f1e39fd276007b8d03b29","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/sdf/MeshSDFGenerator.js#0009:hasGPUBaker","exportIndex":9,"name":"hasGPUBaker","kind":"function","signature":"hasGPUBaker()","summary":"Check if GPU baking is available"}
{"schemaVersion":1,"modulePath":"engine/reference/render/sdf/MeshSDFGenerator.md","moduleTitle":"render/sdf/MeshSDFGenerator","source":"engine/render/sdf/MeshSDFGenerator.js","import":"/engine/render/sdf/MeshSDFGenerator.js","sourceHash":"f27a66a4f93afefcea59324e4368ea97ab77a521de4f1e39fd276007b8d03b29","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/sdf/MeshSDFGenerator.js#0010:bakeSDF3DGPU","exportIndex":10,"name":"bakeSDF3DGPU","kind":"function","signature":"async bakeSDF3DGPU(positions, indices, resolution = 32)","summary":"Bake 3D SDF texture using GPU compute (~100x faster) Falls back to CPU if GPU not available"}
{"schemaVersion":1,"modulePath":"engine/reference/render/sdf/MeshSDFGenerator.md","moduleTitle":"render/sdf/MeshSDFGenerator","source":"engine/render/sdf/MeshSDFGenerator.js","import":"/engine/render/sdf/MeshSDFGenerator.js","sourceHash":"f27a66a4f93afefcea59324e4368ea97ab77a521de4f1e39fd276007b8d03b29","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/sdf/MeshSDFGenerator.js#0011:generateMeshSDF","exportIndex":11,"name":"generateMeshSDF","kind":"function","signature":"generateMeshSDF(positions, indices, options = {})","summary":"Generate hybrid SDF for a mesh - automatically chooses best approach Now with mesh validation, simplification, and voxel acceleration"}
{"schemaVersion":1,"modulePath":"engine/reference/render/sdf/MeshSDFGenerator.md","moduleTitle":"render/sdf/MeshSDFGenerator","source":"engine/render/sdf/MeshSDFGenerator.js","import":"/engine/render/sdf/MeshSDFGenerator.js","sourceHash":"f27a66a4f93afefcea59324e4368ea97ab77a521de4f1e39fd276007b8d03b29","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/sdf/MeshSDFGenerator.js#0012:getCachedMeshSDF","exportIndex":12,"name":"getCachedMeshSDF","kind":"function","signature":"getCachedMeshSDF(meshId, positions, indices, options = {})","summary":"Get or generate cached SDF for a mesh"}
{"schemaVersion":1,"modulePath":"engine/reference/render/sdf/MeshSDFGenerator.md","moduleTitle":"render/sdf/MeshSDFGenerator","source":"engine/render/sdf/MeshSDFGenerator.js","import":"/engine/render/sdf/MeshSDFGenerator.js","sourceHash":"f27a66a4f93afefcea59324e4368ea97ab77a521de4f1e39fd276007b8d03b29","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/sdf/MeshSDFGenerator.js#0013:clearSDFCache","exportIndex":13,"name":"clearSDFCache","kind":"function","signature":"clearSDFCache()","summary":"Clear SDF cache"}
{"schemaVersion":1,"modulePath":"engine/reference/render/sdf/MeshSDFGenerator.md","moduleTitle":"render/sdf/MeshSDFGenerator","source":"engine/render/sdf/MeshSDFGenerator.js","import":"/engine/render/sdf/MeshSDFGenerator.js","sourceHash":"f27a66a4f93afefcea59324e4368ea97ab77a521de4f1e39fd276007b8d03b29","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/sdf/MeshSDFGenerator.js#0014:generateMeshSDFAsync","exportIndex":14,"name":"generateMeshSDFAsync","kind":"function","signature":"async generateMeshSDFAsync(positions, indices, options = {})","summary":"Async version of generateMeshSDF with GPU acceleration Use this for high-resolution baking (64³+)"}
{"schemaVersion":1,"modulePath":"engine/reference/render/sdf/MeshSDFGenerator.md","moduleTitle":"render/sdf/MeshSDFGenerator","source":"engine/render/sdf/MeshSDFGenerator.js","import":"/engine/render/sdf/MeshSDFGenerator.js","sourceHash":"f27a66a4f93afefcea59324e4368ea97ab77a521de4f1e39fd276007b8d03b29","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/sdf/MeshSDFGenerator.js#0015:SDF_TYPE","exportIndex":15,"name":"SDF_TYPE","kind":"constant","signature":"SDF_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/sdf/MeshSDFGenerator.md","moduleTitle":"render/sdf/MeshSDFGenerator","source":"engine/render/sdf/MeshSDFGenerator.js","import":"/engine/render/sdf/MeshSDFGenerator.js","sourceHash":"f27a66a4f93afefcea59324e4368ea97ab77a521de4f1e39fd276007b8d03b29","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/sdf/MeshSDFGenerator.js#0016:TRIANGLE_SDF_WGSL","exportIndex":16,"name":"TRIANGLE_SDF_WGSL","kind":"constant","signature":"TRIANGLE_SDF_WGSL","summary":"WGSL shader code for triangle buffer SDF sampling"}
{"schemaVersion":1,"modulePath":"engine/reference/render/sdf/MeshSDFGenerator.md","moduleTitle":"render/sdf/MeshSDFGenerator","source":"engine/render/sdf/MeshSDFGenerator.js","import":"/engine/render/sdf/MeshSDFGenerator.js","sourceHash":"f27a66a4f93afefcea59324e4368ea97ab77a521de4f1e39fd276007b8d03b29","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/sdf/MeshSDFGenerator.js#0017:BAKED_SDF_WGSL","exportIndex":17,"name":"BAKED_SDF_WGSL","kind":"constant","signature":"BAKED_SDF_WGSL","summary":"WGSL shader code for 3D texture SDF sampling"}
{"schemaVersion":1,"modulePath":"engine/reference/render/sdf/SDFBakeCompute.md","moduleTitle":"render/sdf/SDFBakeCompute","source":"engine/render/sdf/SDFBakeCompute.js","import":"/engine/render/sdf/SDFBakeCompute.js","sourceHash":"a43917fbb2aa8f564685bc747b40113addbe6859baf2083f6f82ba2aca795fe7","subsystem":"engine","recordType":"api-module","id":"module:engine/render/sdf/SDFBakeCompute.js","title":"render/sdf/SDFBakeCompute","summary":"SDFBakeCompute.js - GPU Compute Shader for 3D SDF Baking Now powered by vGPU driver Accelerates SDF texture generation using WebGPU compute shaders. ~100x faster than CPU for high resolution (64³+) SDF textures. Pipeline: 1. Upload triangle data to GPU buffer 2. Dispatch compute shader to calculate SDF for each voxel in parallel 3. Read back SDF texture data","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/sdf/SDFBakeCompute.md","moduleTitle":"render/sdf/SDFBakeCompute","source":"engine/render/sdf/SDFBakeCompute.js","import":"/engine/render/sdf/SDFBakeCompute.js","sourceHash":"a43917fbb2aa8f564685bc747b40113addbe6859baf2083f6f82ba2aca795fe7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/sdf/SDFBakeCompute.js#0000:SDFBakeCompute","exportIndex":0,"name":"SDFBakeCompute","kind":"class","signature":"class SDFBakeCompute","summary":"GPU-accelerated SDF baker"}
{"schemaVersion":1,"modulePath":"engine/reference/render/sdf/SDFBakeCompute.md","moduleTitle":"render/sdf/SDFBakeCompute","source":"engine/render/sdf/SDFBakeCompute.js","import":"/engine/render/sdf/SDFBakeCompute.js","sourceHash":"a43917fbb2aa8f564685bc747b40113addbe6859baf2083f6f82ba2aca795fe7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/sdf/SDFBakeCompute.js#0001:createSDFBaker","exportIndex":1,"name":"createSDFBaker","kind":"function","signature":"createSDFBaker(device)","summary":"Create GPU SDF baker instance"}
{"schemaVersion":1,"modulePath":"engine/reference/render/sdf/index.md","moduleTitle":"render/sdf/index","source":"engine/render/sdf/index.js","import":"/engine/render/sdf/index.js","sourceHash":"08974cf0051060e3804fcc39c7f43cc3c37ea1bc0c8a82bd77fa21b183ea624d","subsystem":"engine","recordType":"api-module","id":"module:engine/render/sdf/index.js","title":"render/sdf/index","summary":"SDF Utilities - Signed Distance Field generation and baking","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/sdf/index.md","moduleTitle":"render/sdf/index","source":"engine/render/sdf/index.js","import":"/engine/render/sdf/index.js","sourceHash":"08974cf0051060e3804fcc39c7f43cc3c37ea1bc0c8a82bd77fa21b183ea624d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/sdf/index.js#0000:SDFBakeCompute","exportIndex":0,"name":"SDFBakeCompute","kind":"re-export","signature":"SDFBakeCompute","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderComposer.md","moduleTitle":"render/shaders/ShaderComposer","source":"engine/render/shaders/ShaderComposer.js","import":"/engine/render/shaders/ShaderComposer.js","sourceHash":"7c38366eddee924aa499963175278a1bc2f369c541c3cec37085590fddbffd96","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/ShaderComposer.js","title":"render/shaders/ShaderComposer","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderComposer.md","moduleTitle":"render/shaders/ShaderComposer","source":"engine/render/shaders/ShaderComposer.js","import":"/engine/render/shaders/ShaderComposer.js","sourceHash":"7c38366eddee924aa499963175278a1bc2f369c541c3cec37085590fddbffd96","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderComposer.js#0000:ShaderComposer","exportIndex":0,"name":"ShaderComposer","kind":"class","signature":"class ShaderComposer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderLoader.md","moduleTitle":"render/shaders/ShaderLoader","source":"engine/render/shaders/ShaderLoader.js","import":"/engine/render/shaders/ShaderLoader.js","sourceHash":"835504a8138bdca92eef601ebc19d1c0704fb68521f06905376176ab1b9813f2","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/ShaderLoader.js","title":"render/shaders/ShaderLoader","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderLoader.md","moduleTitle":"render/shaders/ShaderLoader","source":"engine/render/shaders/ShaderLoader.js","import":"/engine/render/shaders/ShaderLoader.js","sourceHash":"835504a8138bdca92eef601ebc19d1c0704fb68521f06905376176ab1b9813f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderLoader.js#0000:createShaderLoader","exportIndex":0,"name":"createShaderLoader","kind":"function","signature":"createShaderLoader(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderLoaderJS.md","moduleTitle":"render/shaders/ShaderLoaderJS","source":"engine/render/shaders/ShaderLoaderJS.js","import":"/engine/render/shaders/ShaderLoaderJS.js","sourceHash":"668ea4d73011cd661ba6d16be48ec0cc1fd1c3ca90a4a798d9a45e812ca80c53","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/ShaderLoaderJS.js","title":"render/shaders/ShaderLoaderJS","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderLoaderJS.md","moduleTitle":"render/shaders/ShaderLoaderJS","source":"engine/render/shaders/ShaderLoaderJS.js","import":"/engine/render/shaders/ShaderLoaderJS.js","sourceHash":"668ea4d73011cd661ba6d16be48ec0cc1fd1c3ca90a4a798d9a45e812ca80c53","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderLoaderJS.js#0000:getShaderSource","exportIndex":0,"name":"getShaderSource","kind":"function","signature":"getShaderSource(name)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSchema.md","moduleTitle":"render/shaders/ShaderSchema","source":"engine/render/shaders/ShaderSchema.js","import":"/engine/render/shaders/ShaderSchema.js","sourceHash":"464128c6c41d9901c241d280ec263d9b51f4270f282450e4796c976b6e375f84","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/ShaderSchema.js","title":"render/shaders/ShaderSchema","summary":"Generate WGSL struct definition from schema","exportCount":28}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSchema.md","moduleTitle":"render/shaders/ShaderSchema","source":"engine/render/shaders/ShaderSchema.js","import":"/engine/render/shaders/ShaderSchema.js","sourceHash":"464128c6c41d9901c241d280ec263d9b51f4270f282450e4796c976b6e375f84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSchema.js#0000:generateStructWGSL","exportIndex":0,"name":"generateStructWGSL","kind":"function","signature":"generateStructWGSL(schema)","summary":"Generate WGSL struct definition from schema"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSchema.md","moduleTitle":"render/shaders/ShaderSchema","source":"engine/render/shaders/ShaderSchema.js","import":"/engine/render/shaders/ShaderSchema.js","sourceHash":"464128c6c41d9901c241d280ec263d9b51f4270f282450e4796c976b6e375f84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSchema.js#0001:generateBindingsWGSL","exportIndex":1,"name":"generateBindingsWGSL","kind":"function","signature":"generateBindingsWGSL(groupSchema)","summary":"Generate WGSL binding declarations from binding group schema"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSchema.md","moduleTitle":"render/shaders/ShaderSchema","source":"engine/render/shaders/ShaderSchema.js","import":"/engine/render/shaders/ShaderSchema.js","sourceHash":"464128c6c41d9901c241d280ec263d9b51f4270f282450e4796c976b6e375f84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSchema.js#0002:generateVertexInputWGSL","exportIndex":2,"name":"generateVertexInputWGSL","kind":"function","signature":"generateVertexInputWGSL(layout)","summary":"Generate WGSL vertex input struct from vertex layout"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSchema.md","moduleTitle":"render/shaders/ShaderSchema","source":"engine/render/shaders/ShaderSchema.js","import":"/engine/render/shaders/ShaderSchema.js","sourceHash":"464128c6c41d9901c241d280ec263d9b51f4270f282450e4796c976b6e375f84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSchema.js#0003:alignOffset","exportIndex":3,"name":"alignOffset","kind":"function","signature":"alignOffset(offset, alignment)","summary":"Calculate aligned byte offset for a field"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSchema.md","moduleTitle":"render/shaders/ShaderSchema","source":"engine/render/shaders/ShaderSchema.js","import":"/engine/render/shaders/ShaderSchema.js","sourceHash":"464128c6c41d9901c241d280ec263d9b51f4270f282450e4796c976b6e375f84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSchema.js#0004:calculateBufferSize","exportIndex":4,"name":"calculateBufferSize","kind":"function","signature":"calculateBufferSize(schema)","summary":"Calculate total buffer size from schema (with alignment)"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSchema.md","moduleTitle":"render/shaders/ShaderSchema","source":"engine/render/shaders/ShaderSchema.js","import":"/engine/render/shaders/ShaderSchema.js","sourceHash":"464128c6c41d9901c241d280ec263d9b51f4270f282450e4796c976b6e375f84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSchema.js#0005:createUniformBuffer","exportIndex":5,"name":"createUniformBuffer","kind":"function","signature":"createUniformBuffer(schema)","summary":"Create a typed array buffer matching schema"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSchema.md","moduleTitle":"render/shaders/ShaderSchema","source":"engine/render/shaders/ShaderSchema.js","import":"/engine/render/shaders/ShaderSchema.js","sourceHash":"464128c6c41d9901c241d280ec263d9b51f4270f282450e4796c976b6e375f84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSchema.js#0006:writeUniformField","exportIndex":6,"name":"writeUniformField","kind":"function","signature":"writeUniformField(buffer, schema, fieldName, value)","summary":"Write a value to a uniform buffer at the field's offset"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSchema.md","moduleTitle":"render/shaders/ShaderSchema","source":"engine/render/shaders/ShaderSchema.js","import":"/engine/render/shaders/ShaderSchema.js","sourceHash":"464128c6c41d9901c241d280ec263d9b51f4270f282450e4796c976b6e375f84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSchema.js#0007:readUniformField","exportIndex":7,"name":"readUniformField","kind":"function","signature":"readUniformField(buffer, schema, fieldName)","summary":"Read a value from a uniform buffer at the field's offset"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSchema.md","moduleTitle":"render/shaders/ShaderSchema","source":"engine/render/shaders/ShaderSchema.js","import":"/engine/render/shaders/ShaderSchema.js","sourceHash":"464128c6c41d9901c241d280ec263d9b51f4270f282450e4796c976b6e375f84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSchema.js#0008:validateUniformBuffer","exportIndex":8,"name":"validateUniformBuffer","kind":"function","signature":"validateUniformBuffer(buffer, schema)","summary":"Validate a uniform buffer against schema"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSchema.md","moduleTitle":"render/shaders/ShaderSchema","source":"engine/render/shaders/ShaderSchema.js","import":"/engine/render/shaders/ShaderSchema.js","sourceHash":"464128c6c41d9901c241d280ec263d9b51f4270f282450e4796c976b6e375f84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSchema.js#0009:validateBindingGroup","exportIndex":9,"name":"validateBindingGroup","kind":"function","signature":"validateBindingGroup(entries, groupSchema)","summary":"Validate binding group layout"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSchema.md","moduleTitle":"render/shaders/ShaderSchema","source":"engine/render/shaders/ShaderSchema.js","import":"/engine/render/shaders/ShaderSchema.js","sourceHash":"464128c6c41d9901c241d280ec263d9b51f4270f282450e4796c976b6e375f84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSchema.js#0010:createFrameUniformsBuffer","exportIndex":10,"name":"createFrameUniformsBuffer","kind":"function","signature":"createFrameUniformsBuffer()","summary":"Create frame uniforms buffer with defaults"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSchema.md","moduleTitle":"render/shaders/ShaderSchema","source":"engine/render/shaders/ShaderSchema.js","import":"/engine/render/shaders/ShaderSchema.js","sourceHash":"464128c6c41d9901c241d280ec263d9b51f4270f282450e4796c976b6e375f84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSchema.js#0011:createModelUniformsBuffer","exportIndex":11,"name":"createModelUniformsBuffer","kind":"function","signature":"createModelUniformsBuffer()","summary":"Create model uniforms buffer with defaults"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSchema.md","moduleTitle":"render/shaders/ShaderSchema","source":"engine/render/shaders/ShaderSchema.js","import":"/engine/render/shaders/ShaderSchema.js","sourceHash":"464128c6c41d9901c241d280ec263d9b51f4270f282450e4796c976b6e375f84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSchema.js#0012:createMaterialUniformsBuffer","exportIndex":12,"name":"createMaterialUniformsBuffer","kind":"function","signature":"createMaterialUniformsBuffer()","summary":"Create material uniforms buffer with defaults"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSchema.md","moduleTitle":"render/shaders/ShaderSchema","source":"engine/render/shaders/ShaderSchema.js","import":"/engine/render/shaders/ShaderSchema.js","sourceHash":"464128c6c41d9901c241d280ec263d9b51f4270f282450e4796c976b6e375f84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSchema.js#0013:createParticleParamsBuffer","exportIndex":13,"name":"createParticleParamsBuffer","kind":"function","signature":"createParticleParamsBuffer()","summary":"Create particle params buffer with defaults"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSchema.md","moduleTitle":"render/shaders/ShaderSchema","source":"engine/render/shaders/ShaderSchema.js","import":"/engine/render/shaders/ShaderSchema.js","sourceHash":"464128c6c41d9901c241d280ec263d9b51f4270f282450e4796c976b6e375f84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSchema.js#0014:WGSL_TYPES","exportIndex":14,"name":"WGSL_TYPES","kind":"constant","signature":"WGSL_TYPES","summary":"WGSL type sizes in bytes (aligned to 16-byte boundaries for uniforms)"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSchema.md","moduleTitle":"render/shaders/ShaderSchema","source":"engine/render/shaders/ShaderSchema.js","import":"/engine/render/shaders/ShaderSchema.js","sourceHash":"464128c6c41d9901c241d280ec263d9b51f4270f282450e4796c976b6e375f84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSchema.js#0015:BUFFER_USAGE","exportIndex":15,"name":"BUFFER_USAGE","kind":"constant","signature":"BUFFER_USAGE","summary":"Buffer usage types"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSchema.md","moduleTitle":"render/shaders/ShaderSchema","source":"engine/render/shaders/ShaderSchema.js","import":"/engine/render/shaders/ShaderSchema.js","sourceHash":"464128c6c41d9901c241d280ec263d9b51f4270f282450e4796c976b6e375f84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSchema.js#0016:TEXTURE_TYPES","exportIndex":16,"name":"TEXTURE_TYPES","kind":"constant","signature":"TEXTURE_TYPES","summary":"Texture types"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSchema.md","moduleTitle":"render/shaders/ShaderSchema","source":"engine/render/shaders/ShaderSchema.js","import":"/engine/render/shaders/ShaderSchema.js","sourceHash":"464128c6c41d9901c241d280ec263d9b51f4270f282450e4796c976b6e375f84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSchema.js#0017:FRAME_UNIFORMS_SCHEMA","exportIndex":17,"name":"FRAME_UNIFORMS_SCHEMA","kind":"constant","signature":"FRAME_UNIFORMS_SCHEMA","summary":"Frame uniforms - camera and time data, updated every frame"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSchema.md","moduleTitle":"render/shaders/ShaderSchema","source":"engine/render/shaders/ShaderSchema.js","import":"/engine/render/shaders/ShaderSchema.js","sourceHash":"464128c6c41d9901c241d280ec263d9b51f4270f282450e4796c976b6e375f84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSchema.js#0018:MODEL_UNIFORMS_SCHEMA","exportIndex":18,"name":"MODEL_UNIFORMS_SCHEMA","kind":"constant","signature":"MODEL_UNIFORMS_SCHEMA","summary":"Model uniforms - per-object transform data"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSchema.md","moduleTitle":"render/shaders/ShaderSchema","source":"engine/render/shaders/ShaderSchema.js","import":"/engine/render/shaders/ShaderSchema.js","sourceHash":"464128c6c41d9901c241d280ec263d9b51f4270f282450e4796c976b6e375f84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSchema.js#0019:LIGHT_STRUCT_SCHEMA","exportIndex":19,"name":"LIGHT_STRUCT_SCHEMA","kind":"constant","signature":"LIGHT_STRUCT_SCHEMA","summary":"Light struct for dynamic lighting"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSchema.md","moduleTitle":"render/shaders/ShaderSchema","source":"engine/render/shaders/ShaderSchema.js","import":"/engine/render/shaders/ShaderSchema.js","sourceHash":"464128c6c41d9901c241d280ec263d9b51f4270f282450e4796c976b6e375f84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSchema.js#0020:MATERIAL_UNIFORMS_SCHEMA","exportIndex":20,"name":"MATERIAL_UNIFORMS_SCHEMA","kind":"constant","signature":"MATERIAL_UNIFORMS_SCHEMA","summary":"PBR material uniforms"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSchema.md","moduleTitle":"render/shaders/ShaderSchema","source":"engine/render/shaders/ShaderSchema.js","import":"/engine/render/shaders/ShaderSchema.js","sourceHash":"464128c6c41d9901c241d280ec263d9b51f4270f282450e4796c976b6e375f84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSchema.js#0021:PARTICLE_PARAMS_SCHEMA","exportIndex":21,"name":"PARTICLE_PARAMS_SCHEMA","kind":"constant","signature":"PARTICLE_PARAMS_SCHEMA","summary":"Particle render params"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSchema.md","moduleTitle":"render/shaders/ShaderSchema","source":"engine/render/shaders/ShaderSchema.js","import":"/engine/render/shaders/ShaderSchema.js","sourceHash":"464128c6c41d9901c241d280ec263d9b51f4270f282450e4796c976b6e375f84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSchema.js#0022:POSTFX_PARAMS_SCHEMA","exportIndex":22,"name":"POSTFX_PARAMS_SCHEMA","kind":"constant","signature":"POSTFX_PARAMS_SCHEMA","summary":"Post-process common params"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSchema.md","moduleTitle":"render/shaders/ShaderSchema","source":"engine/render/shaders/ShaderSchema.js","import":"/engine/render/shaders/ShaderSchema.js","sourceHash":"464128c6c41d9901c241d280ec263d9b51f4270f282450e4796c976b6e375f84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSchema.js#0023:BINDING_GROUPS","exportIndex":23,"name":"BINDING_GROUPS","kind":"constant","signature":"BINDING_GROUPS","summary":"Standard binding group layouts"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSchema.md","moduleTitle":"render/shaders/ShaderSchema","source":"engine/render/shaders/ShaderSchema.js","import":"/engine/render/shaders/ShaderSchema.js","sourceHash":"464128c6c41d9901c241d280ec263d9b51f4270f282450e4796c976b6e375f84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSchema.js#0024:VERTEX_LAYOUTS","exportIndex":24,"name":"VERTEX_LAYOUTS","kind":"constant","signature":"VERTEX_LAYOUTS","summary":"Standard vertex layouts"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSchema.md","moduleTitle":"render/shaders/ShaderSchema","source":"engine/render/shaders/ShaderSchema.js","import":"/engine/render/shaders/ShaderSchema.js","sourceHash":"464128c6c41d9901c241d280ec263d9b51f4270f282450e4796c976b6e375f84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSchema.js#0025:UNIFORM_SCHEMAS","exportIndex":25,"name":"UNIFORM_SCHEMAS","kind":"constant","signature":"UNIFORM_SCHEMAS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSchema.md","moduleTitle":"render/shaders/ShaderSchema","source":"engine/render/shaders/ShaderSchema.js","import":"/engine/render/shaders/ShaderSchema.js","sourceHash":"464128c6c41d9901c241d280ec263d9b51f4270f282450e4796c976b6e375f84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSchema.js#0026:COMMON_WGSL","exportIndex":26,"name":"COMMON_WGSL","kind":"constant","signature":"COMMON_WGSL","summary":"Common WGSL utility functions"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSchema.md","moduleTitle":"render/shaders/ShaderSchema","source":"engine/render/shaders/ShaderSchema.js","import":"/engine/render/shaders/ShaderSchema.js","sourceHash":"464128c6c41d9901c241d280ec263d9b51f4270f282450e4796c976b6e375f84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSchema.js#0027:FULLSCREEN_TRIANGLE_VS","exportIndex":27,"name":"FULLSCREEN_TRIANGLE_VS","kind":"constant","signature":"FULLSCREEN_TRIANGLE_VS","summary":"Full-screen triangle vertex shader"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/ShaderSources.js","title":"render/shaders/ShaderSources","summary":"","exportCount":71}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0000:ShaderSources","exportIndex":0,"name":"ShaderSources","kind":"constant","signature":"ShaderSources","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0001:BINDING_GROUPS","exportIndex":1,"name":"BINDING_GROUPS","kind":"re-export","signature":"BINDING_GROUPS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0002:COMMON_WGSL","exportIndex":2,"name":"COMMON_WGSL","kind":"re-export","signature":"COMMON_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0003:F32_TILE_64","exportIndex":3,"name":"F32_TILE_64","kind":"re-export","signature":"F32_TILE_64","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0004:FRAME_UNIFORMS_SCHEMA","exportIndex":4,"name":"FRAME_UNIFORMS_SCHEMA","kind":"re-export","signature":"FRAME_UNIFORMS_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0005:FULLSCREEN_TRIANGLE_VS","exportIndex":5,"name":"FULLSCREEN_TRIANGLE_VS","kind":"re-export","signature":"FULLSCREEN_TRIANGLE_VS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0006:GpuTile","exportIndex":6,"name":"GpuTile","kind":"re-export","signature":"GpuTile","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0007:LIGHT_STRUCT_SCHEMA","exportIndex":7,"name":"LIGHT_STRUCT_SCHEMA","kind":"re-export","signature":"LIGHT_STRUCT_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0008:MATERIAL_UNIFORMS_SCHEMA","exportIndex":8,"name":"MATERIAL_UNIFORMS_SCHEMA","kind":"re-export","signature":"MATERIAL_UNIFORMS_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0009:MODEL_UNIFORMS_SCHEMA","exportIndex":9,"name":"MODEL_UNIFORMS_SCHEMA","kind":"re-export","signature":"MODEL_UNIFORMS_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0010:PARTICLE_PARAMS_SCHEMA","exportIndex":10,"name":"PARTICLE_PARAMS_SCHEMA","kind":"re-export","signature":"PARTICLE_PARAMS_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0011:TILED_NBODY_EXAMPLE_WGSL","exportIndex":11,"name":"TILED_NBODY_EXAMPLE_WGSL","kind":"re-export","signature":"TILED_NBODY_EXAMPLE_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0012:UNIFORM_SCHEMAS","exportIndex":12,"name":"UNIFORM_SCHEMAS","kind":"re-export","signature":"UNIFORM_SCHEMAS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0013:VEC2_TILE_64","exportIndex":13,"name":"VEC2_TILE_64","kind":"re-export","signature":"VEC2_TILE_64","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0014:VEC4_TILE_128","exportIndex":14,"name":"VEC4_TILE_128","kind":"re-export","signature":"VEC4_TILE_128","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0015:VEC4_TILE_64","exportIndex":15,"name":"VEC4_TILE_64","kind":"re-export","signature":"VEC4_TILE_64","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0016:VERTEX_LAYOUTS","exportIndex":16,"name":"VERTEX_LAYOUTS","kind":"re-export","signature":"VERTEX_LAYOUTS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0017:WGSL_TYPES","exportIndex":17,"name":"WGSL_TYPES","kind":"re-export","signature":"WGSL_TYPES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0018:animeExplosionWGSL","exportIndex":18,"name":"animeExplosionWGSL","kind":"re-export","signature":"animeExplosionWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0019:animeToonWGSL","exportIndex":19,"name":"animeToonWGSL","kind":"re-export","signature":"animeToonWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0020:areaLightingWGSL","exportIndex":20,"name":"areaLightingWGSL","kind":"re-export","signature":"areaLightingWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0021:bloomBlurWGSL","exportIndex":21,"name":"bloomBlurWGSL","kind":"re-export","signature":"bloomBlurWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0022:bloomCompositeWGSL","exportIndex":22,"name":"bloomCompositeWGSL","kind":"re-export","signature":"bloomCompositeWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0023:bloomSinglePassWGSL","exportIndex":23,"name":"bloomSinglePassWGSL","kind":"re-export","signature":"bloomSinglePassWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0024:bloomThresholdWGSL","exportIndex":24,"name":"bloomThresholdWGSL","kind":"re-export","signature":"bloomThresholdWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0025:cameraStructWGSL","exportIndex":25,"name":"cameraStructWGSL","kind":"re-export","signature":"cameraStructWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0026:cameraUtilsWGSL","exportIndex":26,"name":"cameraUtilsWGSL","kind":"re-export","signature":"cameraUtilsWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0027:colorMathWGSL","exportIndex":27,"name":"colorMathWGSL","kind":"re-export","signature":"colorMathWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0028:createFrameUniformsBuffer","exportIndex":28,"name":"createFrameUniformsBuffer","kind":"re-export","signature":"createFrameUniformsBuffer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0029:createMaterialUniformsBuffer","exportIndex":29,"name":"createMaterialUniformsBuffer","kind":"re-export","signature":"createMaterialUniformsBuffer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0030:createModelUniformsBuffer","exportIndex":30,"name":"createModelUniformsBuffer","kind":"re-export","signature":"createModelUniformsBuffer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0031:createUniformBuffer","exportIndex":31,"name":"createUniformBuffer","kind":"re-export","signature":"createUniformBuffer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0032:denoiseWGSL","exportIndex":32,"name":"denoiseWGSL","kind":"re-export","signature":"denoiseWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0033:electricityWGSL","exportIndex":33,"name":"electricityWGSL","kind":"re-export","signature":"electricityWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0034:fireTurbulenceWGSL","exportIndex":34,"name":"fireTurbulenceWGSL","kind":"re-export","signature":"fireTurbulenceWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0035:fluidWaterCompositeWGSL","exportIndex":35,"name":"fluidWaterCompositeWGSL","kind":"re-export","signature":"fluidWaterCompositeWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0036:fractalEdgesWGSL","exportIndex":36,"name":"fractalEdgesWGSL","kind":"re-export","signature":"fractalEdgesWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0037:frameUniformsWGSL","exportIndex":37,"name":"frameUniformsWGSL","kind":"re-export","signature":"frameUniformsWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0038:fullscreenQuadVertexWGSL","exportIndex":38,"name":"fullscreenQuadVertexWGSL","kind":"re-export","signature":"fullscreenQuadVertexWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0039:generateBindingsWGSL","exportIndex":39,"name":"generateBindingsWGSL","kind":"re-export","signature":"generateBindingsWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0040:generateStructWGSL","exportIndex":40,"name":"generateStructWGSL","kind":"re-export","signature":"generateStructWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0041:generateVertexInputWGSL","exportIndex":41,"name":"generateVertexInputWGSL","kind":"re-export","signature":"generateVertexInputWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0042:gpuTile","exportIndex":42,"name":"gpuTile","kind":"re-export","signature":"gpuTile","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0043:lightStructWGSL","exportIndex":43,"name":"lightStructWGSL","kind":"re-export","signature":"lightStructWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0044:lightingModuleWGSL","exportIndex":44,"name":"lightingModuleWGSL","kind":"re-export","signature":"lightingModuleWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0045:magicEffectsWGSL","exportIndex":45,"name":"magicEffectsWGSL","kind":"re-export","signature":"magicEffectsWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0046:mathCommonWGSL","exportIndex":46,"name":"mathCommonWGSL","kind":"re-export","signature":"mathCommonWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0047:noise2dWGSL","exportIndex":47,"name":"noise2dWGSL","kind":"re-export","signature":"noise2dWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0048:noise3dWGSL","exportIndex":48,"name":"noise3dWGSL","kind":"re-export","signature":"noise3dWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0049:packingWGSL","exportIndex":49,"name":"packingWGSL","kind":"re-export","signature":"packingWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0050:pathtracingGIWGSL","exportIndex":50,"name":"pathtracingGIWGSL","kind":"re-export","signature":"pathtracingGIWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0051:pbrMaterialsWGSL","exportIndex":51,"name":"pbrMaterialsWGSL","kind":"re-export","signature":"pbrMaterialsWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0052:quaternionWGSL","exportIndex":52,"name":"quaternionWGSL","kind":"re-export","signature":"quaternionWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0053:rayIntersectWGSL","exportIndex":53,"name":"rayIntersectWGSL","kind":"re-export","signature":"rayIntersectWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0054:rayTerminationWGSL","exportIndex":54,"name":"rayTerminationWGSL","kind":"re-export","signature":"rayTerminationWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0055:rayTracingWGSL","exportIndex":55,"name":"rayTracingWGSL","kind":"re-export","signature":"rayTracingWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0056:raymarchingModuleWGSL","exportIndex":56,"name":"raymarchingModuleWGSL","kind":"re-export","signature":"raymarchingModuleWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0057:readUniformField","exportIndex":57,"name":"readUniformField","kind":"re-export","signature":"readUniformField","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0058:restirGuidePolicyWGSL","exportIndex":58,"name":"restirGuidePolicyWGSL","kind":"re-export","signature":"restirGuidePolicyWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0059:sdfPrimitivesWGSL","exportIndex":59,"name":"sdfPrimitivesWGSL","kind":"re-export","signature":"sdfPrimitivesWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0060:shadowsAoMacrosWGSL","exportIndex":60,"name":"shadowsAoMacrosWGSL","kind":"re-export","signature":"shadowsAoMacrosWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0061:shadowsAoWGSL","exportIndex":61,"name":"shadowsAoWGSL","kind":"re-export","signature":"shadowsAoWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0062:spellParticlesWGSL","exportIndex":62,"name":"spellParticlesWGSL","kind":"re-export","signature":"spellParticlesWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0063:temporalAAWGSL","exportIndex":63,"name":"temporalAAWGSL","kind":"re-export","signature":"temporalAAWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0064:volumetricCloudsWGSL","exportIndex":64,"name":"volumetricCloudsWGSL","kind":"re-export","signature":"volumetricCloudsWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0065:voronoiWGSL","exportIndex":65,"name":"voronoiWGSL","kind":"re-export","signature":"voronoiWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0066:wgsl","exportIndex":66,"name":"wgsl","kind":"re-export","signature":"wgsl","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0067:wgslFor","exportIndex":67,"name":"wgslFor","kind":"re-export","signature":"wgslFor","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0068:wgslIf","exportIndex":68,"name":"wgslIf","kind":"re-export","signature":"wgslIf","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0069:wgslVariant","exportIndex":69,"name":"wgslVariant","kind":"re-export","signature":"wgslVariant","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/ShaderSources.md","moduleTitle":"render/shaders/ShaderSources","source":"engine/render/shaders/ShaderSources.js","import":"/engine/render/shaders/ShaderSources.js","sourceHash":"0424b1914cbf82a77a83f03e8095c83a50310e59bba9bf1ea775a6fbe4cce683","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/ShaderSources.js#0070:writeUniformField","exportIndex":70,"name":"writeUniformField","kind":"re-export","signature":"writeUniformField","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/WgslPreprocessor.md","moduleTitle":"render/shaders/WgslPreprocessor","source":"engine/render/shaders/WgslPreprocessor.js","import":"/engine/render/shaders/WgslPreprocessor.js","sourceHash":"93946d9994191be5b25d7105b9df8b3a3524c03fae865303aed5ff24e0835ee3","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/WgslPreprocessor.js","title":"render/shaders/WgslPreprocessor","summary":"Tagged template literal for WGSL preprocessing","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/WgslPreprocessor.md","moduleTitle":"render/shaders/WgslPreprocessor","source":"engine/render/shaders/WgslPreprocessor.js","import":"/engine/render/shaders/WgslPreprocessor.js","sourceHash":"93946d9994191be5b25d7105b9df8b3a3524c03fae865303aed5ff24e0835ee3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/WgslPreprocessor.js#0000:wgsl","exportIndex":0,"name":"wgsl","kind":"function","signature":"wgsl(strings, ...values)","summary":"Tagged template literal for WGSL preprocessing"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/WgslPreprocessor.md","moduleTitle":"render/shaders/WgslPreprocessor","source":"engine/render/shaders/WgslPreprocessor.js","import":"/engine/render/shaders/WgslPreprocessor.js","sourceHash":"93946d9994191be5b25d7105b9df8b3a3524c03fae865303aed5ff24e0835ee3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/WgslPreprocessor.js#0001:wgslIf","exportIndex":1,"name":"wgslIf","kind":"function","signature":"wgslIf(condition, ifTrue, ifFalse = '')","summary":"Simple string-based conditionals without tagged template Useful for simpler cases"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/WgslPreprocessor.md","moduleTitle":"render/shaders/WgslPreprocessor","source":"engine/render/shaders/WgslPreprocessor.js","import":"/engine/render/shaders/WgslPreprocessor.js","sourceHash":"93946d9994191be5b25d7105b9df8b3a3524c03fae865303aed5ff24e0835ee3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/WgslPreprocessor.js#0002:wgslFor","exportIndex":2,"name":"wgslFor","kind":"function","signature":"wgslFor(count, template)","summary":"Repeat a string N times with index substitution ${i} in the template is replaced with the iteration index"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/WgslPreprocessor.md","moduleTitle":"render/shaders/WgslPreprocessor","source":"engine/render/shaders/WgslPreprocessor.js","import":"/engine/render/shaders/WgslPreprocessor.js","sourceHash":"93946d9994191be5b25d7105b9df8b3a3524c03fae865303aed5ff24e0835ee3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/WgslPreprocessor.js#0003:wgslVariant","exportIndex":3,"name":"wgslVariant","kind":"function","signature":"wgslVariant(features, variants)","summary":"Create a shader variant by selecting features"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/core/clear_color.md","moduleTitle":"render/shaders/core/clear_color","source":"engine/render/shaders/core/clear_color.js","import":"/engine/render/shaders/core/clear_color.js","sourceHash":"cfd9913790d25dbf2b5e686197f89f3854b0fafc21d1b71a80258d37f95cca87","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/core/clear_color.js","title":"render/shaders/core/clear_color","summary":"Clear Color Shader - Full-screen clear with uniform color","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/core/clear_color.md","moduleTitle":"render/shaders/core/clear_color","source":"engine/render/shaders/core/clear_color.js","import":"/engine/render/shaders/core/clear_color.js","sourceHash":"cfd9913790d25dbf2b5e686197f89f3854b0fafc21d1b71a80258d37f95cca87","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/core/clear_color.js#0000:clearColorWGSL","exportIndex":0,"name":"clearColorWGSL","kind":"constant","signature":"clearColorWGSL","summary":"Clear Color Shader - Full-screen clear with uniform color"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/core/global_common.md","moduleTitle":"render/shaders/core/global_common","source":"engine/render/shaders/core/global_common.js","import":"/engine/render/shaders/core/global_common.js","sourceHash":"f302c1d7fd3b7379299cbcd1b3b91720ee2b8d88a82c75889a3225a97cdc8a01","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/core/global_common.js","title":"render/shaders/core/global_common","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/core/global_common.md","moduleTitle":"render/shaders/core/global_common","source":"engine/render/shaders/core/global_common.js","import":"/engine/render/shaders/core/global_common.js","sourceHash":"f302c1d7fd3b7379299cbcd1b3b91720ee2b8d88a82c75889a3225a97cdc8a01","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/core/global_common.js#0000:minimalFrameUniformsWGSL","exportIndex":0,"name":"minimalFrameUniformsWGSL","kind":"constant","signature":"minimalFrameUniformsWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/core/global_common.md","moduleTitle":"render/shaders/core/global_common","source":"engine/render/shaders/core/global_common.js","import":"/engine/render/shaders/core/global_common.js","sourceHash":"f302c1d7fd3b7379299cbcd1b3b91720ee2b8d88a82c75889a3225a97cdc8a01","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/core/global_common.js#0001:globalCommonWGSL","exportIndex":1,"name":"globalCommonWGSL","kind":"constant","signature":"globalCommonWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/core/lighting.md","moduleTitle":"render/shaders/core/lighting","source":"engine/render/shaders/core/lighting.js","import":"/engine/render/shaders/core/lighting.js","sourceHash":"d5b5299ebf19635d4c6a52adff673a91d4c64d1fb617ef19911fda72233d9bfe","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/core/lighting.js","title":"render/shaders/core/lighting","summary":"","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/core/lighting.md","moduleTitle":"render/shaders/core/lighting","source":"engine/render/shaders/core/lighting.js","import":"/engine/render/shaders/core/lighting.js","sourceHash":"d5b5299ebf19635d4c6a52adff673a91d4c64d1fb617ef19911fda72233d9bfe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/core/lighting.js#0000:simpleLightStructWGSL","exportIndex":0,"name":"simpleLightStructWGSL","kind":"constant","signature":"simpleLightStructWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/core/lighting.md","moduleTitle":"render/shaders/core/lighting","source":"engine/render/shaders/core/lighting.js","import":"/engine/render/shaders/core/lighting.js","sourceHash":"d5b5299ebf19635d4c6a52adff673a91d4c64d1fb617ef19911fda72233d9bfe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/core/lighting.js#0001:legacyLightingWGSL","exportIndex":1,"name":"legacyLightingWGSL","kind":"constant","signature":"legacyLightingWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/core/lighting.md","moduleTitle":"render/shaders/core/lighting","source":"engine/render/shaders/core/lighting.js","import":"/engine/render/shaders/core/lighting.js","sourceHash":"d5b5299ebf19635d4c6a52adff673a91d4c64d1fb617ef19911fda72233d9bfe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/core/lighting.js#0002:lightingWGSL","exportIndex":2,"name":"lightingWGSL","kind":"constant","signature":"lightingWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/core/monitor_patterns.md","moduleTitle":"render/shaders/core/monitor_patterns","source":"engine/render/shaders/core/monitor_patterns.js","import":"/engine/render/shaders/core/monitor_patterns.js","sourceHash":"3fd99ae2861cf4d89916478b81adf7cb08fe3e7b4742cd80d7b0b200a59b6662","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/core/monitor_patterns.js","title":"render/shaders/core/monitor_patterns","summary":"Monitor Patterns - Test patterns for display calibration","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/core/monitor_patterns.md","moduleTitle":"render/shaders/core/monitor_patterns","source":"engine/render/shaders/core/monitor_patterns.js","import":"/engine/render/shaders/core/monitor_patterns.js","sourceHash":"3fd99ae2861cf4d89916478b81adf7cb08fe3e7b4742cd80d7b0b200a59b6662","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/core/monitor_patterns.js#0000:monitorPatternsWGSL","exportIndex":0,"name":"monitorPatternsWGSL","kind":"constant","signature":"monitorPatternsWGSL","summary":"Monitor Patterns - Test patterns for display calibration"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/core/particles_billboard_legacy.md","moduleTitle":"render/shaders/core/particles_billboard_legacy","source":"engine/render/shaders/core/particles_billboard_legacy.js","import":"/engine/render/shaders/core/particles_billboard_legacy.js","sourceHash":"ddb6b79ccc2048ddbf4ff4dd0cef8e3964a5481b1286fdf9ab4e56d0f28f6f4e","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/core/particles_billboard_legacy.js","title":"render/shaders/core/particles_billboard_legacy","summary":"Legacy Particles Billboard - Horizontal quad particles with cloud-like appearance Note: The main particles_billboard shader is in modules/core/particles_billboard.js","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/core/particles_billboard_legacy.md","moduleTitle":"render/shaders/core/particles_billboard_legacy","source":"engine/render/shaders/core/particles_billboard_legacy.js","import":"/engine/render/shaders/core/particles_billboard_legacy.js","sourceHash":"ddb6b79ccc2048ddbf4ff4dd0cef8e3964a5481b1286fdf9ab4e56d0f28f6f4e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/core/particles_billboard_legacy.js#0000:particlesBillboardLegacyWGSL","exportIndex":0,"name":"particlesBillboardLegacyWGSL","kind":"constant","signature":"particlesBillboardLegacyWGSL","summary":"Legacy Particles Billboard - Horizontal quad particles with cloud-like appearance Note: The main particles_billboard shader is in modules/core/particles_billboard.js"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/core/solid_color.md","moduleTitle":"render/shaders/core/solid_color","source":"engine/render/shaders/core/solid_color.js","import":"/engine/render/shaders/core/solid_color.js","sourceHash":"e406bfd56fcf0633f1870fa754d680ca3038491e939a4abd705e2168bde683ac","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/core/solid_color.js","title":"render/shaders/core/solid_color","summary":"Solid Color Shader - Simple vertex color passthrough","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/core/solid_color.md","moduleTitle":"render/shaders/core/solid_color","source":"engine/render/shaders/core/solid_color.js","import":"/engine/render/shaders/core/solid_color.js","sourceHash":"e406bfd56fcf0633f1870fa754d680ca3038491e939a4abd705e2168bde683ac","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/core/solid_color.js#0000:solidColorWGSL","exportIndex":0,"name":"solidColorWGSL","kind":"constant","signature":"solidColorWGSL","summary":"Solid Color Shader - Simple vertex color passthrough"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/core/standard.md","moduleTitle":"render/shaders/core/standard","source":"engine/render/shaders/core/standard.js","import":"/engine/render/shaders/core/standard.js","sourceHash":"028581c8f6ad4e1fc33ac1368dc28459f1de67d972306e600906f2901212dd75","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/core/standard.js","title":"render/shaders/core/standard","summary":"============================================================================ STANDARD PBR SHADER WITH MULTI-TYPE LIGHTING ============================================================================ Supports three light types: - Point (type 0): Position-based with quadratic distance falloff - Directional (type 1): Direction-based, no distance falloff (sun-like) - Spot (type 2): Position + direction + cone falloff GPU BUFFER LAYOUT: Group 0 (Uniforms): Binding 0: Uniforms - projection, view, model matrices - color, alpha - lightCount, feature flags, sunDir, sunColor Binding 1: lights array<Light, 64> - position (vec3) + lightType (u32) - color (vec3) + innerCone (f32) - direction (vec3) + outerCone (f32)","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/core/standard.md","moduleTitle":"render/shaders/core/standard","source":"engine/render/shaders/core/standard.js","import":"/engine/render/shaders/core/standard.js","sourceHash":"028581c8f6ad4e1fc33ac1368dc28459f1de67d972306e600906f2901212dd75","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/core/standard.js#0000:standardShaderWGSL","exportIndex":0,"name":"standardShaderWGSL","kind":"constant","signature":"standardShaderWGSL","summary":"============================================================================ STANDARD PBR SHADER WITH MULTI-TYPE LIGHTING ============================================================================ Supports three light types: - Point (type 0): Position-based with quadratic distance falloff - Directional (type 1): Direction-based, no distance falloff (sun-like) - Spot (type 2): Position + direction + cone falloff GPU BUFFER LAYOUT: Group 0 (Uniforms): Binding 0: Uniforms - projection, view, model matrices - color, alpha - lightCount, feature flags, sunDir, sunColor Binding 1: lights array<Light, 64> - position (vec3) + lightType (u32) - color (vec3) + innerCone (f32) - direction (vec3) + outerCone (f32)"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/core/textured_quad.md","moduleTitle":"render/shaders/core/textured_quad","source":"engine/render/shaders/core/textured_quad.js","import":"/engine/render/shaders/core/textured_quad.js","sourceHash":"1a7ef733b2d4e71564af682b5487296a9aaec452e851554b3f830321b6a24edf","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/core/textured_quad.js","title":"render/shaders/core/textured_quad","summary":"Textured Quad Shader - Simple texture sampling","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/core/textured_quad.md","moduleTitle":"render/shaders/core/textured_quad","source":"engine/render/shaders/core/textured_quad.js","import":"/engine/render/shaders/core/textured_quad.js","sourceHash":"1a7ef733b2d4e71564af682b5487296a9aaec452e851554b3f830321b6a24edf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/core/textured_quad.js#0000:texturedQuadWGSL","exportIndex":0,"name":"texturedQuadWGSL","kind":"constant","signature":"texturedQuadWGSL","summary":"Textured Quad Shader - Simple texture sampling"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/debug/cloth_debug.md","moduleTitle":"render/shaders/debug/cloth_debug","source":"engine/render/shaders/debug/cloth_debug.js","import":"/engine/render/shaders/debug/cloth_debug.js","sourceHash":"c2ebc1ea1756fd4f55e72c8a3c6f3623ec99ef652d7a6ab09c792bdfbf067a47","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/debug/cloth_debug.js","title":"render/shaders/debug/cloth_debug","summary":"Cloth Debug Shader - Visualize cloth mesh with normal-based coloring","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/debug/cloth_debug.md","moduleTitle":"render/shaders/debug/cloth_debug","source":"engine/render/shaders/debug/cloth_debug.js","import":"/engine/render/shaders/debug/cloth_debug.js","sourceHash":"c2ebc1ea1756fd4f55e72c8a3c6f3623ec99ef652d7a6ab09c792bdfbf067a47","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/debug/cloth_debug.js#0000:clothDebugWGSL","exportIndex":0,"name":"clothDebugWGSL","kind":"constant","signature":"clothDebugWGSL","summary":"Cloth Debug Shader - Visualize cloth mesh with normal-based coloring"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/debug/debug_views.md","moduleTitle":"render/shaders/debug/debug_views","source":"engine/render/shaders/debug/debug_views.js","import":"/engine/render/shaders/debug/debug_views.js","sourceHash":"c9ceefdeb6347511236eeb0a33a212b3ac1e0c10de15ca132628961b428764b4","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/debug/debug_views.js","title":"render/shaders/debug/debug_views","summary":"Debug Views Shader - Visualize different render targets (color, depth, normals, roughness/metallic)","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/debug/debug_views.md","moduleTitle":"render/shaders/debug/debug_views","source":"engine/render/shaders/debug/debug_views.js","import":"/engine/render/shaders/debug/debug_views.js","sourceHash":"c9ceefdeb6347511236eeb0a33a212b3ac1e0c10de15ca132628961b428764b4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/debug/debug_views.js#0000:debugViewsWGSL","exportIndex":0,"name":"debugViewsWGSL","kind":"constant","signature":"debugViewsWGSL","summary":"Debug Views Shader - Visualize different render targets (color, depth, normals, roughness/metallic)"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/debug/fluid_debug.md","moduleTitle":"render/shaders/debug/fluid_debug","source":"engine/render/shaders/debug/fluid_debug.js","import":"/engine/render/shaders/debug/fluid_debug.js","sourceHash":"8c98f177723f42f05768e7a9b5102174a5625510e7f240837d87aea1343ee266","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/debug/fluid_debug.js","title":"render/shaders/debug/fluid_debug","summary":"Fluid Debug Shader - Visualize fluid density grid slices or max projection","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/debug/fluid_debug.md","moduleTitle":"render/shaders/debug/fluid_debug","source":"engine/render/shaders/debug/fluid_debug.js","import":"/engine/render/shaders/debug/fluid_debug.js","sourceHash":"8c98f177723f42f05768e7a9b5102174a5625510e7f240837d87aea1343ee266","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/debug/fluid_debug.js#0000:fluidDebugWGSL","exportIndex":0,"name":"fluidDebugWGSL","kind":"constant","signature":"fluidDebugWGSL","summary":"Fluid Debug Shader - Visualize fluid density grid slices or max projection"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/effects/spell_effects.wgsl.md","moduleTitle":"render/shaders/effects/spell_effects.wgsl","source":"engine/render/shaders/effects/spell_effects.wgsl.js","import":"/engine/render/shaders/effects/spell_effects.wgsl.js","sourceHash":"d2779c42f60ff6afa20582a0f75ca27ba8a32ffb6bc08722ca9d09602caba298","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/effects/spell_effects.wgsl.js","title":"render/shaders/effects/spell_effects.wgsl","summary":"","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/effects/spell_effects.wgsl.md","moduleTitle":"render/shaders/effects/spell_effects.wgsl","source":"engine/render/shaders/effects/spell_effects.wgsl.js","import":"/engine/render/shaders/effects/spell_effects.wgsl.js","sourceHash":"d2779c42f60ff6afa20582a0f75ca27ba8a32ffb6bc08722ca9d09602caba298","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/effects/spell_effects.wgsl.js#0000:spellEffectsWGSL","exportIndex":0,"name":"spellEffectsWGSL","kind":"constant","signature":"spellEffectsWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/effects/spell_effects.wgsl.md","moduleTitle":"render/shaders/effects/spell_effects.wgsl","source":"engine/render/shaders/effects/spell_effects.wgsl.js","import":"/engine/render/shaders/effects/spell_effects.wgsl.js","sourceHash":"d2779c42f60ff6afa20582a0f75ca27ba8a32ffb6bc08722ca9d09602caba298","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/effects/spell_effects.wgsl.js#0001:SPELL_TYPE_CONSTS","exportIndex":1,"name":"SPELL_TYPE_CONSTS","kind":"re-export","signature":"SPELL_TYPE_CONSTS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/effects/spell_effects.wgsl.md","moduleTitle":"render/shaders/effects/spell_effects.wgsl","source":"engine/render/shaders/effects/spell_effects.wgsl.js","import":"/engine/render/shaders/effects/spell_effects.wgsl.js","sourceHash":"d2779c42f60ff6afa20582a0f75ca27ba8a32ffb6bc08722ca9d09602caba298","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/effects/spell_effects.wgsl.js#0002:spellEffectFragmentWGSL","exportIndex":2,"name":"spellEffectFragmentWGSL","kind":"re-export","signature":"spellEffectFragmentWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/effects/spell_effects.wgsl.md","moduleTitle":"render/shaders/effects/spell_effects.wgsl","source":"engine/render/shaders/effects/spell_effects.wgsl.js","import":"/engine/render/shaders/effects/spell_effects.wgsl.js","sourceHash":"d2779c42f60ff6afa20582a0f75ca27ba8a32ffb6bc08722ca9d09602caba298","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/effects/spell_effects.wgsl.js#0003:spellUniformsWGSL","exportIndex":3,"name":"spellUniformsWGSL","kind":"re-export","signature":"spellUniformsWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/materials/pbr_brdf.md","moduleTitle":"render/shaders/materials/pbr_brdf","source":"engine/render/shaders/materials/pbr_brdf.js","import":"/engine/render/shaders/materials/pbr_brdf.js","sourceHash":"6b4c04a1409961463f0896c46e438a31e6b57a679e55c5000d6cb9ecdf7aa4d9","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/materials/pbr_brdf.js","title":"render/shaders/materials/pbr_brdf","summary":"PBR BRDF - Physically-based rendering BRDF functions (GGX/Schlick) Dependencies: Requires mathCommonWGSL for saturate() and PI. These are provided separately to avoid duplication when composing shaders.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/materials/pbr_brdf.md","moduleTitle":"render/shaders/materials/pbr_brdf","source":"engine/render/shaders/materials/pbr_brdf.js","import":"/engine/render/shaders/materials/pbr_brdf.js","sourceHash":"6b4c04a1409961463f0896c46e438a31e6b57a679e55c5000d6cb9ecdf7aa4d9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/materials/pbr_brdf.js#0000:pbrInputsStructWGSL","exportIndex":0,"name":"pbrInputsStructWGSL","kind":"constant","signature":"pbrInputsStructWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/materials/pbr_brdf.md","moduleTitle":"render/shaders/materials/pbr_brdf","source":"engine/render/shaders/materials/pbr_brdf.js","import":"/engine/render/shaders/materials/pbr_brdf.js","sourceHash":"6b4c04a1409961463f0896c46e438a31e6b57a679e55c5000d6cb9ecdf7aa4d9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/materials/pbr_brdf.js#0001:pbrBrdfFunctionsWGSL","exportIndex":1,"name":"pbrBrdfFunctionsWGSL","kind":"constant","signature":"pbrBrdfFunctionsWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/materials/pbr_brdf.md","moduleTitle":"render/shaders/materials/pbr_brdf","source":"engine/render/shaders/materials/pbr_brdf.js","import":"/engine/render/shaders/materials/pbr_brdf.js","sourceHash":"6b4c04a1409961463f0896c46e438a31e6b57a679e55c5000d6cb9ecdf7aa4d9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/materials/pbr_brdf.js#0002:pbrBrdfWGSL","exportIndex":2,"name":"pbrBrdfWGSL","kind":"constant","signature":"pbrBrdfWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/materials/pbr_extensions.md","moduleTitle":"render/shaders/materials/pbr_extensions","source":"engine/render/shaders/materials/pbr_extensions.js","import":"/engine/render/shaders/materials/pbr_extensions.js","sourceHash":"181438d8646c3f9a4647cbfdba64e5cac2f6a4704e988e3123d7a966ac3e8ec5","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/materials/pbr_extensions.js","title":"render/shaders/materials/pbr_extensions","summary":"PBR Extensions - Placeholder hooks for subsurface scattering, fog, and post-lighting effects","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/materials/pbr_extensions.md","moduleTitle":"render/shaders/materials/pbr_extensions","source":"engine/render/shaders/materials/pbr_extensions.js","import":"/engine/render/shaders/materials/pbr_extensions.js","sourceHash":"181438d8646c3f9a4647cbfdba64e5cac2f6a4704e988e3123d7a966ac3e8ec5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/materials/pbr_extensions.js#0000:pbrExtensionsWGSL","exportIndex":0,"name":"pbrExtensionsWGSL","kind":"constant","signature":"pbrExtensionsWGSL","summary":"PBR Extensions - Placeholder hooks for subsurface scattering, fog, and post-lighting effects"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/materials/pbr_ibl.md","moduleTitle":"render/shaders/materials/pbr_ibl","source":"engine/render/shaders/materials/pbr_ibl.js","import":"/engine/render/shaders/materials/pbr_ibl.js","sourceHash":"7b095a186166d13d41151af7311c5d137d38fe0026c3b8094670036a73d94332","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/materials/pbr_ibl.js","title":"render/shaders/materials/pbr_ibl","summary":"PBR IBL - Image-based lighting for diffuse irradiance and specular reflections","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/materials/pbr_ibl.md","moduleTitle":"render/shaders/materials/pbr_ibl","source":"engine/render/shaders/materials/pbr_ibl.js","import":"/engine/render/shaders/materials/pbr_ibl.js","sourceHash":"7b095a186166d13d41151af7311c5d137d38fe0026c3b8094670036a73d94332","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/materials/pbr_ibl.js#0000:pbrIblWGSL","exportIndex":0,"name":"pbrIblWGSL","kind":"constant","signature":"pbrIblWGSL","summary":"PBR IBL - Image-based lighting for diffuse irradiance and specular reflections"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/materials/pbr_material_uniforms.md","moduleTitle":"render/shaders/materials/pbr_material_uniforms","source":"engine/render/shaders/materials/pbr_material_uniforms.js","import":"/engine/render/shaders/materials/pbr_material_uniforms.js","sourceHash":"cc82de9995330d1a22e55834d2e5b70f19e0a172ed2dc7436493954747253d2a","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/materials/pbr_material_uniforms.js","title":"render/shaders/materials/pbr_material_uniforms","summary":"PBR Material Uniforms - Standard material parameter bindings","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/materials/pbr_material_uniforms.md","moduleTitle":"render/shaders/materials/pbr_material_uniforms","source":"engine/render/shaders/materials/pbr_material_uniforms.js","import":"/engine/render/shaders/materials/pbr_material_uniforms.js","sourceHash":"cc82de9995330d1a22e55834d2e5b70f19e0a172ed2dc7436493954747253d2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/materials/pbr_material_uniforms.js#0000:pbrMaterialUniformsWGSL","exportIndex":0,"name":"pbrMaterialUniformsWGSL","kind":"constant","signature":"pbrMaterialUniformsWGSL","summary":"PBR Material Uniforms - Standard material parameter bindings"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/materials/shadow_pcf.md","moduleTitle":"render/shaders/materials/shadow_pcf","source":"engine/render/shaders/materials/shadow_pcf.js","import":"/engine/render/shaders/materials/shadow_pcf.js","sourceHash":"2ff3844dae92f0503d2eb0553a27e1402de7ab38c6fe8b0744cabfc2478a40b0","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/materials/shadow_pcf.js","title":"render/shaders/materials/shadow_pcf","summary":"Shadow PCF - Percentage-closer filtering for soft shadows","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/materials/shadow_pcf.md","moduleTitle":"render/shaders/materials/shadow_pcf","source":"engine/render/shaders/materials/shadow_pcf.js","import":"/engine/render/shaders/materials/shadow_pcf.js","sourceHash":"2ff3844dae92f0503d2eb0553a27e1402de7ab38c6fe8b0744cabfc2478a40b0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/materials/shadow_pcf.js#0000:shadowPcfWGSL","exportIndex":0,"name":"shadowPcfWGSL","kind":"constant","signature":"shadowPcfWGSL","summary":"Shadow PCF - Percentage-closer filtering for soft shadows"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/materials/unlit_world.md","moduleTitle":"render/shaders/materials/unlit_world","source":"engine/render/shaders/materials/unlit_world.js","import":"/engine/render/shaders/materials/unlit_world.js","sourceHash":"962475c5eacc6f6d64921799680c09e6454df8f9a1210ded7c6f4b0da203765a","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/materials/unlit_world.js","title":"render/shaders/materials/unlit_world","summary":"Unlit World Shader - Simple unlit rendering with checkerboard floor","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/materials/unlit_world.md","moduleTitle":"render/shaders/materials/unlit_world","source":"engine/render/shaders/materials/unlit_world.js","import":"/engine/render/shaders/materials/unlit_world.js","sourceHash":"962475c5eacc6f6d64921799680c09e6454df8f9a1210ded7c6f4b0da203765a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/materials/unlit_world.js#0000:unlitWorldWGSL","exportIndex":0,"name":"unlitWorldWGSL","kind":"constant","signature":"unlitWorldWGSL","summary":"Unlit World Shader - Simple unlit rendering with checkerboard floor"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/materials/voxel_world.md","moduleTitle":"render/shaders/materials/voxel_world","source":"engine/render/shaders/materials/voxel_world.js","import":"/engine/render/shaders/materials/voxel_world.js","sourceHash":"940f04b1e6ed0d02531b08706917ad12b910dd04c7bdaa942061a4591df7c087","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/materials/voxel_world.js","title":"render/shaders/materials/voxel_world","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/materials/voxel_world.md","moduleTitle":"render/shaders/materials/voxel_world","source":"engine/render/shaders/materials/voxel_world.js","import":"/engine/render/shaders/materials/voxel_world.js","sourceHash":"940f04b1e6ed0d02531b08706917ad12b910dd04c7bdaa942061a4591df7c087","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/materials/voxel_world.js#0000:voxelWorldWGSL","exportIndex":0,"name":"voxelWorldWGSL","kind":"constant","signature":"voxelWorldWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/anime_explosion.md","moduleTitle":"render/shaders/modules/chunks/anime_explosion","source":"engine/render/shaders/modules/chunks/anime_explosion.js","import":"/engine/render/shaders/modules/chunks/anime_explosion.js","sourceHash":"2e5c8bac538a08773c9cbb3803b897dbdbb6fd624103b2ee15229067bcd26034","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/chunks/anime_explosion.js","title":"render/shaders/modules/chunks/anime_explosion","summary":"Anime Explosion Effects Stylized explosion effects inspired by anime/manga aesthetics. Key Features: 1. Spiky burst shapes - Sharp radial spikes 2. Color banding - Discrete anime-style colors 3. Impact rays - Speed lines radiating outward 4. Shockwave rings - Expanding circular waves 5. Debris particles - Flying sparks and chunks 6. Smoke puffs - Stylized cloud shapes Functions: - explosionBurst(uv, time) - Main explosion shape - impactRays(uv, count, time) - Speed lines - shockwaveRing(uv, time, speed) - Expanding ring - animeColorBand(intensity, colors) - Discrete color steps","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/anime_explosion.md","moduleTitle":"render/shaders/modules/chunks/anime_explosion","source":"engine/render/shaders/modules/chunks/anime_explosion.js","import":"/engine/render/shaders/modules/chunks/anime_explosion.js","sourceHash":"2e5c8bac538a08773c9cbb3803b897dbdbb6fd624103b2ee15229067bcd26034","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/anime_explosion.js#0000:animeExplosionWGSL","exportIndex":0,"name":"animeExplosionWGSL","kind":"constant","signature":"animeExplosionWGSL","summary":"Anime Explosion Effects Stylized explosion effects inspired by anime/manga aesthetics. Key Features: 1. Spiky burst shapes - Sharp radial spikes 2. Color banding - Discrete anime-style colors 3. Impact rays - Speed lines radiating outward 4. Shockwave rings - Expanding circular waves 5. Debris particles - Flying sparks and chunks 6. Smoke puffs - Stylized cloud shapes Functions: - explosionBurst(uv, time) - Main explosion shape - impactRays(uv, count, time) - Speed lines - shockwaveRing(uv, time, speed) - Expanding ring - animeColorBand(intensity, colors) - Discrete color steps"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/anime_toon.md","moduleTitle":"render/shaders/modules/chunks/anime_toon","source":"engine/render/shaders/modules/chunks/anime_toon.js","import":"/engine/render/shaders/modules/chunks/anime_toon.js","sourceHash":"784061c1fed2887e860cbaeccf11b5c8d3eb029de7fb81b36699e9f5f4905f0c","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/chunks/anime_toon.js","title":"render/shaders/modules/chunks/anime_toon","summary":"Anime / Toon Shading Stylized rendering techniques for anime/manga aesthetic. Key Concepts: 1. Multi-step shading - Discrete color bands 2. Outline rendering - Edge detection 3. Specular highlights - Sharp anime-style 4. Rim lighting - Edge glow 5. Hatching/cross-hatching - Manga shadows 6. Subsurface scattering - Skin glow Eye/Face Functions: - animeEye() - Full eye with iris, highlights - animeBrow() - Eyebrow curves - animeBlush() - Cheek flush marks - animeMouth() - Lip curves","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/anime_toon.md","moduleTitle":"render/shaders/modules/chunks/anime_toon","source":"engine/render/shaders/modules/chunks/anime_toon.js","import":"/engine/render/shaders/modules/chunks/anime_toon.js","sourceHash":"784061c1fed2887e860cbaeccf11b5c8d3eb029de7fb81b36699e9f5f4905f0c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/anime_toon.js#0000:animeToonWGSL","exportIndex":0,"name":"animeToonWGSL","kind":"constant","signature":"animeToonWGSL","summary":"Anime / Toon Shading Stylized rendering techniques for anime/manga aesthetic. Key Concepts: 1. Multi-step shading - Discrete color bands 2. Outline rendering - Edge detection 3. Specular highlights - Sharp anime-style 4. Rim lighting - Edge glow 5. Hatching/cross-hatching - Manga shadows 6. Subsurface scattering - Skin glow Eye/Face Functions: - animeEye() - Full eye with iris, highlights - animeBrow() - Eyebrow curves - animeBlush() - Cheek flush marks - animeMouth() - Lip curves"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/area_lighting.md","moduleTitle":"render/shaders/modules/chunks/area_lighting","source":"engine/render/shaders/modules/chunks/area_lighting.js","import":"/engine/render/shaders/modules/chunks/area_lighting.js","sourceHash":"8c1f5cf6a403a3e39b07323a318a5fdf531f47fc0fffbc0d6366b6c5894a4d78","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/chunks/area_lighting.js","title":"render/shaders/modules/chunks/area_lighting","summary":"Area Lighting & Soft Shadows Physically-based area light calculations for soft shadows and lighting. Supports spherical lights and occluders. Key Concepts: 1. Sphere occlusion - AO contribution from nearby spheres 2. Area shadows - Soft shadows from spherical lights/occluders 3. Sphere area lights - Proper falloff for spherical emitters 4. Floor occlusion - Ground plane ambient darkening Functions: - sphOcclusion(pos, nor, sph) - AO from single sphere - sphAreaShadow(P, light, occluder) - Soft shadow - sphAreaLight(P, N, light) - Area light contribution - floorOcclusion(P, N, floorY) - Ground plane AO","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/area_lighting.md","moduleTitle":"render/shaders/modules/chunks/area_lighting","source":"engine/render/shaders/modules/chunks/area_lighting.js","import":"/engine/render/shaders/modules/chunks/area_lighting.js","sourceHash":"8c1f5cf6a403a3e39b07323a318a5fdf531f47fc0fffbc0d6366b6c5894a4d78","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/area_lighting.js#0000:areaLightingWGSL","exportIndex":0,"name":"areaLightingWGSL","kind":"constant","signature":"areaLightingWGSL","summary":"Area Lighting & Soft Shadows Physically-based area light calculations for soft shadows and lighting. Supports spherical lights and occluders. Key Concepts: 1. Sphere occlusion - AO contribution from nearby spheres 2. Area shadows - Soft shadows from spherical lights/occluders 3. Sphere area lights - Proper falloff for spherical emitters 4. Floor occlusion - Ground plane ambient darkening Functions: - sphOcclusion(pos, nor, sph) - AO from single sphere - sphAreaShadow(P, light, occluder) - Soft shadow - sphAreaLight(P, N, light) - Area light contribution - floorOcclusion(P, N, floorY) - Ground plane AO"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/blend_math.md","moduleTitle":"render/shaders/modules/chunks/blend_math","source":"engine/render/shaders/modules/chunks/blend_math.js","import":"/engine/render/shaders/modules/chunks/blend_math.js","sourceHash":"9fa67bcf2fbbc556af908b6c87947a6cc76cd85fa595198b991760f06163ad01","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/chunks/blend_math.js","title":"render/shaders/modules/chunks/blend_math","summary":"Shared alpha compositing, separable blend, coverage, and ordered-dither helpers for WGSL.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/blend_math.md","moduleTitle":"render/shaders/modules/chunks/blend_math","source":"engine/render/shaders/modules/chunks/blend_math.js","import":"/engine/render/shaders/modules/chunks/blend_math.js","sourceHash":"9fa67bcf2fbbc556af908b6c87947a6cc76cd85fa595198b991760f06163ad01","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/blend_math.js#0000:blendMathWGSL","exportIndex":0,"name":"blendMathWGSL","kind":"constant","signature":"blendMathWGSL","summary":"Shared alpha compositing, separable blend, coverage, and ordered-dither helpers for WGSL."}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/camera_utils.md","moduleTitle":"render/shaders/modules/chunks/camera_utils","source":"engine/render/shaders/modules/chunks/camera_utils.js","import":"/engine/render/shaders/modules/chunks/camera_utils.js","sourceHash":"605e7280721b7ec4e83385c29d7bb4cc306f7feba9aaad9507f2a51ac25bc378","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/chunks/camera_utils.js","title":"render/shaders/modules/chunks/camera_utils","summary":"Camera Utilities for Shaders Common camera operations for ray generation and view transforms. Used by: ray marching, ray tracing, post-processing Functions: - getCameraMatrix(ro, ta, roll) - Look-at camera matrix - getRay(uv, ro, ta) - Generate ray from UV and camera - screenToWorld(uv, invViewProj) - Unproject screen to world","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/camera_utils.md","moduleTitle":"render/shaders/modules/chunks/camera_utils","source":"engine/render/shaders/modules/chunks/camera_utils.js","import":"/engine/render/shaders/modules/chunks/camera_utils.js","sourceHash":"605e7280721b7ec4e83385c29d7bb4cc306f7feba9aaad9507f2a51ac25bc378","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/camera_utils.js#0000:cameraUtilsWGSL","exportIndex":0,"name":"cameraUtilsWGSL","kind":"constant","signature":"cameraUtilsWGSL","summary":"Camera Utilities for Shaders Common camera operations for ray generation and view transforms. Used by: ray marching, ray tracing, post-processing Functions: - getCameraMatrix(ro, ta, roll) - Look-at camera matrix - getRay(uv, ro, ta) - Generate ray from UV and camera - screenToWorld(uv, invViewProj) - Unproject screen to world"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/color_math.md","moduleTitle":"render/shaders/modules/chunks/color_math","source":"engine/render/shaders/modules/chunks/color_math.js","import":"/engine/render/shaders/modules/chunks/color_math.js","sourceHash":"d9217091d8ff8d79835336e003ba36cda05c652e17d8ec192c378aaa3878f2b2","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/chunks/color_math.js","title":"render/shaders/modules/chunks/color_math","summary":"Shared sRGB, luminance, contrast, YUV/YCbCr, and tone-map helpers for WGSL.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/color_math.md","moduleTitle":"render/shaders/modules/chunks/color_math","source":"engine/render/shaders/modules/chunks/color_math.js","import":"/engine/render/shaders/modules/chunks/color_math.js","sourceHash":"d9217091d8ff8d79835336e003ba36cda05c652e17d8ec192c378aaa3878f2b2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/color_math.js#0000:colorMathWGSL","exportIndex":0,"name":"colorMathWGSL","kind":"constant","signature":"colorMathWGSL","summary":"Shared sRGB, luminance, contrast, YUV/YCbCr, and tone-map helpers for WGSL."}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/denoise.md","moduleTitle":"render/shaders/modules/chunks/denoise","source":"engine/render/shaders/modules/chunks/denoise.js","import":"/engine/render/shaders/modules/chunks/denoise.js","sourceHash":"38c87c529bff408ff483e0ad620edf67a64779261933338706854669c5f67245","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/chunks/denoise.js","title":"render/shaders/modules/chunks/denoise","summary":"Denoising for Path Tracing Edge-aware filtering and temporal accumulation for noisy renders. Key Concepts: 1. À-Trous Wavelet Transform - Multi-scale edge-aware blur 2. Bilateral filtering - Edge-preserving smoothing 3. Temporal AA/Accumulation - Frame blending with clamping 4. YUV color space - Better for temporal clamping 5. SVGF-style weights - Color, normal, depth weighting","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/denoise.md","moduleTitle":"render/shaders/modules/chunks/denoise","source":"engine/render/shaders/modules/chunks/denoise.js","import":"/engine/render/shaders/modules/chunks/denoise.js","sourceHash":"38c87c529bff408ff483e0ad620edf67a64779261933338706854669c5f67245","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/denoise.js#0000:denoiseWGSL","exportIndex":0,"name":"denoiseWGSL","kind":"constant","signature":"denoiseWGSL","summary":"Denoising for Path Tracing Edge-aware filtering and temporal accumulation for noisy renders. Key Concepts: 1. À-Trous Wavelet Transform - Multi-scale edge-aware blur 2. Bilateral filtering - Edge-preserving smoothing 3. Temporal AA/Accumulation - Frame blending with clamping 4. YUV color space - Better for temporal clamping 5. SVGF-style weights - Color, normal, depth weighting"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/electricity.md","moduleTitle":"render/shaders/modules/chunks/electricity","source":"engine/render/shaders/modules/chunks/electricity.js","import":"/engine/render/shaders/modules/chunks/electricity.js","sourceHash":"f591713b66bd2977b5d53b24ace818c6606441a223c963913ddbaf7aa1f6527d","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/chunks/electricity.js","title":"render/shaders/modules/chunks/electricity","summary":"Electricity & Plasma Effects Patterns for lightning, plasma, energy beams, and electrical arcs. Key Concepts: 1. Simplex 3D noise - Smooth organic patterns 2. Sharp glow falloff - Electric intensity 3. Color intensification - Plasma color math 4. Animated distortion - Moving energy Functions: - simplex3d(p) - 3D simplex noise - electricNoise(p) - Multi-octave electric noise - plasmaGlow(intensity, falloff) - Sharp glow - electricArc(uv, time) - Lightning bolt pattern - plasmaColor(intensity, baseColor) - Energy coloring","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/electricity.md","moduleTitle":"render/shaders/modules/chunks/electricity","source":"engine/render/shaders/modules/chunks/electricity.js","import":"/engine/render/shaders/modules/chunks/electricity.js","sourceHash":"f591713b66bd2977b5d53b24ace818c6606441a223c963913ddbaf7aa1f6527d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/electricity.js#0000:electricityWGSL","exportIndex":0,"name":"electricityWGSL","kind":"constant","signature":"electricityWGSL","summary":"Electricity & Plasma Effects Patterns for lightning, plasma, energy beams, and electrical arcs. Key Concepts: 1. Simplex 3D noise - Smooth organic patterns 2. Sharp glow falloff - Electric intensity 3. Color intensification - Plasma color math 4. Animated distortion - Moving energy Functions: - simplex3d(p) - 3D simplex noise - electricNoise(p) - Multi-octave electric noise - plasmaGlow(intensity, falloff) - Sharp glow - electricArc(uv, time) - Lightning bolt pattern - plasmaColor(intensity, baseColor) - Energy coloring"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/fire_turbulence.md","moduleTitle":"render/shaders/modules/chunks/fire_turbulence","source":"engine/render/shaders/modules/chunks/fire_turbulence.js","import":"/engine/render/shaders/modules/chunks/fire_turbulence.js","sourceHash":"c1700e27a0c1b68f7527e50b03273c5e69de6d4195ac3c1e907d02251d545a33","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/chunks/fire_turbulence.js","title":"render/shaders/modules/chunks/fire_turbulence","summary":"Fire & Turbulence Effects Reusable patterns for fire, smoke, and turbulent effects. Based on multi-frequency wave accumulation technique. Key Concepts: 1. Turbulence: Sum of cos() waves at increasing frequencies 2. Twist: Rotate XZ based on Y for spiral motion 3. Expansion: Divide by height for spreading flames 4. Hollow cone SDF: Classic flame silhouette shape Functions: - fireTurbulence(pos, time, octaves) - Multi-octave distortion - fireColor(heat, turbulence) - Heat-based color gradient - flameShape(pos) - Hollow cone distance field - twistPosition(pos, rate) - Helical twist transform","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/fire_turbulence.md","moduleTitle":"render/shaders/modules/chunks/fire_turbulence","source":"engine/render/shaders/modules/chunks/fire_turbulence.js","import":"/engine/render/shaders/modules/chunks/fire_turbulence.js","sourceHash":"c1700e27a0c1b68f7527e50b03273c5e69de6d4195ac3c1e907d02251d545a33","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/fire_turbulence.js#0000:fireTurbulenceWGSL","exportIndex":0,"name":"fireTurbulenceWGSL","kind":"constant","signature":"fireTurbulenceWGSL","summary":"Fire & Turbulence Effects Reusable patterns for fire, smoke, and turbulent effects. Based on multi-frequency wave accumulation technique. Key Concepts: 1. Turbulence: Sum of cos() waves at increasing frequencies 2. Twist: Rotate XZ based on Y for spiral motion 3. Expansion: Divide by height for spreading flames 4. Hollow cone SDF: Classic flame silhouette shape Functions: - fireTurbulence(pos, time, octaves) - Multi-octave distortion - fireColor(heat, turbulence) - Heat-based color gradient - flameShape(pos) - Hollow cone distance field - twistPosition(pos, rate) - Helical twist transform"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/fractal_edges.md","moduleTitle":"render/shaders/modules/chunks/fractal_edges","source":"engine/render/shaders/modules/chunks/fractal_edges.js","import":"/engine/render/shaders/modules/chunks/fractal_edges.js","sourceHash":"caae5cdb1f034c19438ecb84c4b948592c6c0a044710fff45d47a4367e11c91f","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/chunks/fractal_edges.js","title":"render/shaders/modules/chunks/fractal_edges","summary":"Fractal & Edge Detection Effects Raymarching fractals with stylized edge rendering. Key Concepts: 1. Fractal distance functions - Amazing Surface, Mandelbulb, etc. 2. Edge detection via Laplacian - Dark outlines from SDF 3. Normal-based coloring - No lighting, just normal as color 4. Rainbow/color bands - Animated stripes 5. Stylized sky/sun - Radial gradient with rays 6. Camera path animation - Smooth path following","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/fractal_edges.md","moduleTitle":"render/shaders/modules/chunks/fractal_edges","source":"engine/render/shaders/modules/chunks/fractal_edges.js","import":"/engine/render/shaders/modules/chunks/fractal_edges.js","sourceHash":"caae5cdb1f034c19438ecb84c4b948592c6c0a044710fff45d47a4367e11c91f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/fractal_edges.js#0000:fractalEdgesWGSL","exportIndex":0,"name":"fractalEdgesWGSL","kind":"constant","signature":"fractalEdgesWGSL","summary":"Fractal & Edge Detection Effects Raymarching fractals with stylized edge rendering. Key Concepts: 1. Fractal distance functions - Amazing Surface, Mandelbulb, etc. 2. Edge detection via Laplacian - Dark outlines from SDF 3. Normal-based coloring - No lighting, just normal as color 4. Rainbow/color bands - Animated stripes 5. Stylized sky/sun - Radial gradient with rays 6. Camera path animation - Smooth path following"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/fullscreen_quad.md","moduleTitle":"render/shaders/modules/chunks/fullscreen_quad","source":"engine/render/shaders/modules/chunks/fullscreen_quad.js","import":"/engine/render/shaders/modules/chunks/fullscreen_quad.js","sourceHash":"6f2178e987734dbbf00b75bb4930a819c4ee8b62ad1d530ea1c7e685019cb304","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/chunks/fullscreen_quad.js","title":"render/shaders/modules/chunks/fullscreen_quad","summary":"Fullscreen Quad Vertex Shader - Reusable for post-processing effects Renders a fullscreen triangle (more efficient than quad) using vertex index. No vertex buffer needed - just draw 3 vertices. Usage: const myPostFx = `${fullscreenQuadVertexWGSL}${myFragmentShader}`;","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/fullscreen_quad.md","moduleTitle":"render/shaders/modules/chunks/fullscreen_quad","source":"engine/render/shaders/modules/chunks/fullscreen_quad.js","import":"/engine/render/shaders/modules/chunks/fullscreen_quad.js","sourceHash":"6f2178e987734dbbf00b75bb4930a819c4ee8b62ad1d530ea1c7e685019cb304","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/fullscreen_quad.js#0000:fullscreenQuadVertexWGSL","exportIndex":0,"name":"fullscreenQuadVertexWGSL","kind":"constant","signature":"fullscreenQuadVertexWGSL","summary":"Fullscreen Quad Vertex Shader - Reusable for post-processing effects Renders a fullscreen triangle (more efficient than quad) using vertex index. No vertex buffer needed - just draw 3 vertices. Usage: const myPostFx = `${fullscreenQuadVertexWGSL}${myFragmentShader}`;"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/fullscreen_quad.md","moduleTitle":"render/shaders/modules/chunks/fullscreen_quad","source":"engine/render/shaders/modules/chunks/fullscreen_quad.js","import":"/engine/render/shaders/modules/chunks/fullscreen_quad.js","sourceHash":"6f2178e987734dbbf00b75bb4930a819c4ee8b62ad1d530ea1c7e685019cb304","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/fullscreen_quad.js#0001:fullscreenQuadExplicitWGSL","exportIndex":1,"name":"fullscreenQuadExplicitWGSL","kind":"constant","signature":"fullscreenQuadExplicitWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/lighting_common.md","moduleTitle":"render/shaders/modules/chunks/lighting_common","source":"engine/render/shaders/modules/chunks/lighting_common.js","import":"/engine/render/shaders/modules/chunks/lighting_common.js","sourceHash":"3d443be2b8617ddc62f98b619f11e10767275bedaf3fd5973eb06848cf2742a2","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/chunks/lighting_common.js","title":"render/shaders/modules/chunks/lighting_common","summary":"","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/lighting_common.md","moduleTitle":"render/shaders/modules/chunks/lighting_common","source":"engine/render/shaders/modules/chunks/lighting_common.js","import":"/engine/render/shaders/modules/chunks/lighting_common.js","sourceHash":"3d443be2b8617ddc62f98b619f11e10767275bedaf3fd5973eb06848cf2742a2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/lighting_common.js#0000:lightAttenuationWGSL","exportIndex":0,"name":"lightAttenuationWGSL","kind":"constant","signature":"lightAttenuationWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/lighting_common.md","moduleTitle":"render/shaders/modules/chunks/lighting_common","source":"engine/render/shaders/modules/chunks/lighting_common.js","import":"/engine/render/shaders/modules/chunks/lighting_common.js","sourceHash":"3d443be2b8617ddc62f98b619f11e10767275bedaf3fd5973eb06848cf2742a2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/lighting_common.js#0001:diffuseLightingWGSL","exportIndex":1,"name":"diffuseLightingWGSL","kind":"constant","signature":"diffuseLightingWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/lighting_common.md","moduleTitle":"render/shaders/modules/chunks/lighting_common","source":"engine/render/shaders/modules/chunks/lighting_common.js","import":"/engine/render/shaders/modules/chunks/lighting_common.js","sourceHash":"3d443be2b8617ddc62f98b619f11e10767275bedaf3fd5973eb06848cf2742a2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/lighting_common.js#0002:specularLightingWGSL","exportIndex":2,"name":"specularLightingWGSL","kind":"constant","signature":"specularLightingWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/lighting_common.md","moduleTitle":"render/shaders/modules/chunks/lighting_common","source":"engine/render/shaders/modules/chunks/lighting_common.js","import":"/engine/render/shaders/modules/chunks/lighting_common.js","sourceHash":"3d443be2b8617ddc62f98b619f11e10767275bedaf3fd5973eb06848cf2742a2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/lighting_common.js#0003:lightCalculationWGSL","exportIndex":3,"name":"lightCalculationWGSL","kind":"constant","signature":"lightCalculationWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/lighting_common.md","moduleTitle":"render/shaders/modules/chunks/lighting_common","source":"engine/render/shaders/modules/chunks/lighting_common.js","import":"/engine/render/shaders/modules/chunks/lighting_common.js","sourceHash":"3d443be2b8617ddc62f98b619f11e10767275bedaf3fd5973eb06848cf2742a2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/lighting_common.js#0004:lightingModuleWGSL","exportIndex":4,"name":"lightingModuleWGSL","kind":"constant","signature":"lightingModuleWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/magic_effects.md","moduleTitle":"render/shaders/modules/chunks/magic_effects","source":"engine/render/shaders/modules/chunks/magic_effects.js","import":"/engine/render/shaders/modules/chunks/magic_effects.js","sourceHash":"78a655451f7e8f56bf0abed5928549b590f4eefc0c9d308dbfa90749b209d886","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/chunks/magic_effects.js","title":"render/shaders/modules/chunks/magic_effects","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/magic_effects.md","moduleTitle":"render/shaders/modules/chunks/magic_effects","source":"engine/render/shaders/modules/chunks/magic_effects.js","import":"/engine/render/shaders/modules/chunks/magic_effects.js","sourceHash":"78a655451f7e8f56bf0abed5928549b590f4eefc0c9d308dbfa90749b209d886","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/magic_effects.js#0000:magicEffectsWGSL","exportIndex":0,"name":"magicEffectsWGSL","kind":"constant","signature":"magicEffectsWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/math_common.md","moduleTitle":"render/shaders/modules/chunks/math_common","source":"engine/render/shaders/modules/chunks/math_common.js","import":"/engine/render/shaders/modules/chunks/math_common.js","sourceHash":"c76c486d61921a52d0b55b4c87fd9a552aff3dbd7db3fa4487915473db80fbfd","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/chunks/math_common.js","title":"render/shaders/modules/chunks/math_common","summary":"Shared Math Constants & Utilities for WGSL Shaders Usage: Import and concatenate at the beginning of shaders that need these. Example: `${mathCommonWGSL}` + yourShaderCode","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/math_common.md","moduleTitle":"render/shaders/modules/chunks/math_common","source":"engine/render/shaders/modules/chunks/math_common.js","import":"/engine/render/shaders/modules/chunks/math_common.js","sourceHash":"c76c486d61921a52d0b55b4c87fd9a552aff3dbd7db3fa4487915473db80fbfd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/math_common.js#0000:mathCommonWGSL","exportIndex":0,"name":"mathCommonWGSL","kind":"constant","signature":"mathCommonWGSL","summary":"Shared Math Constants & Utilities for WGSL Shaders Usage: Import and concatenate at the beginning of shaders that need these. Example: `${mathCommonWGSL}` + yourShaderCode"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/noise2d.md","moduleTitle":"render/shaders/modules/chunks/noise2d","source":"engine/render/shaders/modules/chunks/noise2d.js","import":"/engine/render/shaders/modules/chunks/noise2d.js","sourceHash":"187bff708031dd49d8b8aa50c51bd086a75c30300a548654748e182a4895658d","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/chunks/noise2d.js","title":"render/shaders/modules/chunks/noise2d","summary":"Shared 2D Noise Functions for WGSL Shaders Used by: particles_billboard, volume_smoke, future effects Functions provided: - hash2d(p) - Pseudo-random hash for 2D position - noise2d(p) - Smooth value noise - fbm2d(p) - Fractal Brownian Motion (4 octaves)","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/noise2d.md","moduleTitle":"render/shaders/modules/chunks/noise2d","source":"engine/render/shaders/modules/chunks/noise2d.js","import":"/engine/render/shaders/modules/chunks/noise2d.js","sourceHash":"187bff708031dd49d8b8aa50c51bd086a75c30300a548654748e182a4895658d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/noise2d.js#0000:noise2dWGSL","exportIndex":0,"name":"noise2dWGSL","kind":"constant","signature":"noise2dWGSL","summary":"Shared 2D Noise Functions for WGSL Shaders Used by: particles_billboard, volume_smoke, future effects Functions provided: - hash2d(p) - Pseudo-random hash for 2D position - noise2d(p) - Smooth value noise - fbm2d(p) - Fractal Brownian Motion (4 octaves)"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/noise3d.md","moduleTitle":"render/shaders/modules/chunks/noise3d","source":"engine/render/shaders/modules/chunks/noise3d.js","import":"/engine/render/shaders/modules/chunks/noise3d.js","sourceHash":"a74606f0a74c2a1cffdb0ecccabc85e4884f7ae11842e21c3a7cabdb2f9c2d4c","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/chunks/noise3d.js","title":"render/shaders/modules/chunks/noise3d","summary":"Shared 3D Noise Functions for WGSL Shaders Used by: volume_smoke, future volumetric effects Functions provided: - hash3d(p) - Pseudo-random hash for 3D position - noise3d(p) - Smooth value noise - fbm3d(p, octaves) - Fractal Brownian Motion (variable octaves) - fbm3dRotated(p, octaves) - FBM with rotation between octaves (reduces banding) - fbm3dVec(p) - Returns 3 independent noise values for domain warping - domainWarp(p, scale, intensity) - Warp position for organic turbulence","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/noise3d.md","moduleTitle":"render/shaders/modules/chunks/noise3d","source":"engine/render/shaders/modules/chunks/noise3d.js","import":"/engine/render/shaders/modules/chunks/noise3d.js","sourceHash":"a74606f0a74c2a1cffdb0ecccabc85e4884f7ae11842e21c3a7cabdb2f9c2d4c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/noise3d.js#0000:noise3dWGSL","exportIndex":0,"name":"noise3dWGSL","kind":"constant","signature":"noise3dWGSL","summary":"Shared 3D Noise Functions for WGSL Shaders Used by: volume_smoke, future volumetric effects Functions provided: - hash3d(p) - Pseudo-random hash for 3D position - noise3d(p) - Smooth value noise - fbm3d(p, octaves) - Fractal Brownian Motion (variable octaves) - fbm3dRotated(p, octaves) - FBM with rotation between octaves (reduces banding) - fbm3dVec(p) - Returns 3 independent noise values for domain warping - domainWarp(p, scale, intensity) - Warp position for organic turbulence"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/packing.md","moduleTitle":"render/shaders/modules/chunks/packing","source":"engine/render/shaders/modules/chunks/packing.js","import":"/engine/render/shaders/modules/chunks/packing.js","sourceHash":"51cd4ab99a5e4533480ffac33475adf3555036e81dd1b0a4d2e9a0240d4f622c","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/chunks/packing.js","title":"render/shaders/modules/chunks/packing","summary":"Normalized integer packing helpers mirrored from engine/core/math/MathPacking.js.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/packing.md","moduleTitle":"render/shaders/modules/chunks/packing","source":"engine/render/shaders/modules/chunks/packing.js","import":"/engine/render/shaders/modules/chunks/packing.js","sourceHash":"51cd4ab99a5e4533480ffac33475adf3555036e81dd1b0a4d2e9a0240d4f622c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/packing.js#0000:packingWGSL","exportIndex":0,"name":"packingWGSL","kind":"constant","signature":"packingWGSL","summary":"Normalized integer packing helpers mirrored from engine/core/math/MathPacking.js."}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/pathtracing_gi.md","moduleTitle":"render/shaders/modules/chunks/pathtracing_gi","source":"engine/render/shaders/modules/chunks/pathtracing_gi.js","import":"/engine/render/shaders/modules/chunks/pathtracing_gi.js","sourceHash":"43ed14dfb61a8f28d6c4f252ef95b48b6cb7e989c836c1da5654c196e9bb0942","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/chunks/pathtracing_gi.js","title":"render/shaders/modules/chunks/pathtracing_gi","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/pathtracing_gi.md","moduleTitle":"render/shaders/modules/chunks/pathtracing_gi","source":"engine/render/shaders/modules/chunks/pathtracing_gi.js","import":"/engine/render/shaders/modules/chunks/pathtracing_gi.js","sourceHash":"43ed14dfb61a8f28d6c4f252ef95b48b6cb7e989c836c1da5654c196e9bb0942","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/pathtracing_gi.js#0000:pathtracingGIWGSL","exportIndex":0,"name":"pathtracingGIWGSL","kind":"constant","signature":"pathtracingGIWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/pbr_materials.md","moduleTitle":"render/shaders/modules/chunks/pbr_materials","source":"engine/render/shaders/modules/chunks/pbr_materials.js","import":"/engine/render/shaders/modules/chunks/pbr_materials.js","sourceHash":"8c0318b5759833a31c76590f1d7097d0d83da734a886dbec3f5f9d6c20db9775","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/chunks/pbr_materials.js","title":"render/shaders/modules/chunks/pbr_materials","summary":"PBR Materials for Path Tracing Physically-based materials with roughness, metallic, and Fresnel. Key Concepts: 1. Fresnel-Schlick - Reflectance at grazing angles 2. GGX/Roughness sampling - Importance sampling for specular 3. Metallic workflow - Dielectric vs conductor 4. Glass/refraction - Transparent materials 5. Energy conservation - Diffuse + specular balance","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/pbr_materials.md","moduleTitle":"render/shaders/modules/chunks/pbr_materials","source":"engine/render/shaders/modules/chunks/pbr_materials.js","import":"/engine/render/shaders/modules/chunks/pbr_materials.js","sourceHash":"8c0318b5759833a31c76590f1d7097d0d83da734a886dbec3f5f9d6c20db9775","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/pbr_materials.js#0000:pbrMaterialsWGSL","exportIndex":0,"name":"pbrMaterialsWGSL","kind":"constant","signature":"pbrMaterialsWGSL","summary":"PBR Materials for Path Tracing Physically-based materials with roughness, metallic, and Fresnel. Key Concepts: 1. Fresnel-Schlick - Reflectance at grazing angles 2. GGX/Roughness sampling - Importance sampling for specular 3. Metallic workflow - Dielectric vs conductor 4. Glass/refraction - Transparent materials 5. Energy conservation - Diffuse + specular balance"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/quadtree.md","moduleTitle":"render/shaders/modules/chunks/quadtree","source":"engine/render/shaders/modules/chunks/quadtree.js","import":"/engine/render/shaders/modules/chunks/quadtree.js","sourceHash":"67ddbe92c5a4f22a0556762ec76e1773d58f34900cb0fafade7c617a3aec2a67","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/chunks/quadtree.js","title":"render/shaders/modules/chunks/quadtree","summary":"Quadtree / Recursive Cell Pattern Helpers (WGSL) Port of a Shadertoy-style quadtree zoom pattern into reusable WGSL. Functions: - quadtreeCellLevel(uv, time, maxLevels, baseRadius, resolutionY) Returns how deep the recursive subdivision went and a mask for the disc. - quadtreeMask(uv, time) Simple convenience wrapper returning a [0,1] mask based on level.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/quadtree.md","moduleTitle":"render/shaders/modules/chunks/quadtree","source":"engine/render/shaders/modules/chunks/quadtree.js","import":"/engine/render/shaders/modules/chunks/quadtree.js","sourceHash":"67ddbe92c5a4f22a0556762ec76e1773d58f34900cb0fafade7c617a3aec2a67","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/quadtree.js#0000:quadtreeWGSL","exportIndex":0,"name":"quadtreeWGSL","kind":"constant","signature":"quadtreeWGSL","summary":"Quadtree / Recursive Cell Pattern Helpers (WGSL) Port of a Shadertoy-style quadtree zoom pattern into reusable WGSL. Functions: - quadtreeCellLevel(uv, time, maxLevels, baseRadius, resolutionY) Returns how deep the recursive subdivision went and a mask for the disc. - quadtreeMask(uv, time) Simple convenience wrapper returning a [0,1] mask based on level."}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/quaternion.md","moduleTitle":"render/shaders/modules/chunks/quaternion","source":"engine/render/shaders/modules/chunks/quaternion.js","import":"/engine/render/shaders/modules/chunks/quaternion.js","sourceHash":"343928d6d6112ea1846c7a5af88ec8c82e818ecc4ca0de1d8b0212888fb3e7df","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/chunks/quaternion.js","title":"render/shaders/modules/chunks/quaternion","summary":"Quaternion Math for Shader Animation Full quaternion operations for skeletal animation and rotation. Key Concepts: 1. Quaternion multiplication - Compose rotations 2. Quaternion inverse/conjugate - Reverse rotation 3. Slerp interpolation - Smooth rotation blending 4. Point rotation - Apply quaternion to position 5. Matrix conversion - Quaternion to mat4 Functions: - quaternionMul(a, b) - Multiply quaternions - quaternionInverse(q) - Inverse rotation - quaternionSlerp(a, b, t) - Spherical interpolation - rotatePoint(p, center, q) - Rotate point - quaternionToMatrix(q, offset) - Convert to mat4","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/quaternion.md","moduleTitle":"render/shaders/modules/chunks/quaternion","source":"engine/render/shaders/modules/chunks/quaternion.js","import":"/engine/render/shaders/modules/chunks/quaternion.js","sourceHash":"343928d6d6112ea1846c7a5af88ec8c82e818ecc4ca0de1d8b0212888fb3e7df","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/quaternion.js#0000:quaternionWGSL","exportIndex":0,"name":"quaternionWGSL","kind":"constant","signature":"quaternionWGSL","summary":"Quaternion Math for Shader Animation Full quaternion operations for skeletal animation and rotation. Key Concepts: 1. Quaternion multiplication - Compose rotations 2. Quaternion inverse/conjugate - Reverse rotation 3. Slerp interpolation - Smooth rotation blending 4. Point rotation - Apply quaternion to position 5. Matrix conversion - Quaternion to mat4 Functions: - quaternionMul(a, b) - Multiply quaternions - quaternionInverse(q) - Inverse rotation - quaternionSlerp(a, b, t) - Spherical interpolation - rotatePoint(p, center, q) - Rotate point - quaternionToMatrix(q, offset) - Convert to mat4"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/ray_intersect.md","moduleTitle":"render/shaders/modules/chunks/ray_intersect","source":"engine/render/shaders/modules/chunks/ray_intersect.js","import":"/engine/render/shaders/modules/chunks/ray_intersect.js","sourceHash":"1837b9a4d51bad83321cfe1c5e95c61d62a97c5b36ab1d147431fed23ca283f2","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/chunks/ray_intersect.js","title":"render/shaders/modules/chunks/ray_intersect","summary":"Ray-Primitive Intersection Library Analytic ray intersection routines for various geometric primitives. Returns intersection distance and surface normal. All functions follow the pattern: fn iShape(ro, rd, ...) -> RayHit Where RayHit contains: - dist: distance along ray (MAX_RAY_DIST if no hit) - normal: surface normal at intersection Primitives: - Plane, Disk - Sphere, Ellipsoid - Box, Rounded Box - Cylinder, Capsule - Cone, Rounded Cone - Torus - Triangle, Quad","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/ray_intersect.md","moduleTitle":"render/shaders/modules/chunks/ray_intersect","source":"engine/render/shaders/modules/chunks/ray_intersect.js","import":"/engine/render/shaders/modules/chunks/ray_intersect.js","sourceHash":"1837b9a4d51bad83321cfe1c5e95c61d62a97c5b36ab1d147431fed23ca283f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/ray_intersect.js#0000:rayIntersectWGSL","exportIndex":0,"name":"rayIntersectWGSL","kind":"constant","signature":"rayIntersectWGSL","summary":"Ray-Primitive Intersection Library Analytic ray intersection routines for various geometric primitives. Returns intersection distance and surface normal. All functions follow the pattern: fn iShape(ro, rd, ...) -> RayHit Where RayHit contains: - dist: distance along ray (MAX_RAY_DIST if no hit) - normal: surface normal at intersection Primitives: - Plane, Disk - Sphere, Ellipsoid - Box, Rounded Box - Cylinder, Capsule - Cone, Rounded Cone - Torus - Triangle, Quad"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/ray_termination.md","moduleTitle":"render/shaders/modules/chunks/ray_termination","source":"engine/render/shaders/modules/chunks/ray_termination.js","import":"/engine/render/shaders/modules/chunks/ray_termination.js","sourceHash":"afa47f67300c9cc5b8a0cff8195131916c19766a445f584e69d71e2fc4f8f70e","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/chunks/ray_termination.js","title":"render/shaders/modules/chunks/ray_termination","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/ray_termination.md","moduleTitle":"render/shaders/modules/chunks/ray_termination","source":"engine/render/shaders/modules/chunks/ray_termination.js","import":"/engine/render/shaders/modules/chunks/ray_termination.js","sourceHash":"afa47f67300c9cc5b8a0cff8195131916c19766a445f584e69d71e2fc4f8f70e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/ray_termination.js#0000:rayTerminationWGSL","exportIndex":0,"name":"rayTerminationWGSL","kind":"constant","signature":"rayTerminationWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/ray_tracing.md","moduleTitle":"render/shaders/modules/chunks/ray_tracing","source":"engine/render/shaders/modules/chunks/ray_tracing.js","import":"/engine/render/shaders/modules/chunks/ray_tracing.js","sourceHash":"19060cc646c814fad8b8ca8af71a4e672fdc92335a4a9e525f17398543d8a188","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/chunks/ray_tracing.js","title":"render/shaders/modules/chunks/ray_tracing","summary":"Ray Tracing Utilities Helper functions for path tracing and ray-based rendering. Includes materials, sampling, and lighting utilities. Functions: - Material handling (Lambertian, Metal, Dielectric) - Random sampling (hemisphere, disk, importance sampling) - Fresnel and BRDF calculations - Sky/environment sampling","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/ray_tracing.md","moduleTitle":"render/shaders/modules/chunks/ray_tracing","source":"engine/render/shaders/modules/chunks/ray_tracing.js","import":"/engine/render/shaders/modules/chunks/ray_tracing.js","sourceHash":"19060cc646c814fad8b8ca8af71a4e672fdc92335a4a9e525f17398543d8a188","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/ray_tracing.js#0000:rayTracingWGSL","exportIndex":0,"name":"rayTracingWGSL","kind":"constant","signature":"rayTracingWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/raymarching.md","moduleTitle":"render/shaders/modules/chunks/raymarching","source":"engine/render/shaders/modules/chunks/raymarching.js","import":"/engine/render/shaders/modules/chunks/raymarching.js","sourceHash":"d991d037f2f953de380e26114c0b37af0361c9bc06f845f8c7bb1bd60d36d784","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/chunks/raymarching.js","title":"render/shaders/modules/chunks/raymarching","summary":"","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/raymarching.md","moduleTitle":"render/shaders/modules/chunks/raymarching","source":"engine/render/shaders/modules/chunks/raymarching.js","import":"/engine/render/shaders/modules/chunks/raymarching.js","sourceHash":"d991d037f2f953de380e26114c0b37af0361c9bc06f845f8c7bb1bd60d36d784","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/raymarching.js#0000:rayBoxIntersectWGSL","exportIndex":0,"name":"rayBoxIntersectWGSL","kind":"constant","signature":"rayBoxIntersectWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/raymarching.md","moduleTitle":"render/shaders/modules/chunks/raymarching","source":"engine/render/shaders/modules/chunks/raymarching.js","import":"/engine/render/shaders/modules/chunks/raymarching.js","sourceHash":"d991d037f2f953de380e26114c0b37af0361c9bc06f845f8c7bb1bd60d36d784","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/raymarching.js#0001:raySphereIntersectWGSL","exportIndex":1,"name":"raySphereIntersectWGSL","kind":"constant","signature":"raySphereIntersectWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/raymarching.md","moduleTitle":"render/shaders/modules/chunks/raymarching","source":"engine/render/shaders/modules/chunks/raymarching.js","import":"/engine/render/shaders/modules/chunks/raymarching.js","sourceHash":"d991d037f2f953de380e26114c0b37af0361c9bc06f845f8c7bb1bd60d36d784","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/raymarching.js#0002:depthUtilsWGSL","exportIndex":2,"name":"depthUtilsWGSL","kind":"constant","signature":"depthUtilsWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/raymarching.md","moduleTitle":"render/shaders/modules/chunks/raymarching","source":"engine/render/shaders/modules/chunks/raymarching.js","import":"/engine/render/shaders/modules/chunks/raymarching.js","sourceHash":"d991d037f2f953de380e26114c0b37af0361c9bc06f845f8c7bb1bd60d36d784","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/raymarching.js#0003:trilinearSampleWGSL","exportIndex":3,"name":"trilinearSampleWGSL","kind":"constant","signature":"trilinearSampleWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/raymarching.md","moduleTitle":"render/shaders/modules/chunks/raymarching","source":"engine/render/shaders/modules/chunks/raymarching.js","import":"/engine/render/shaders/modules/chunks/raymarching.js","sourceHash":"d991d037f2f953de380e26114c0b37af0361c9bc06f845f8c7bb1bd60d36d784","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/raymarching.js#0004:phaseFunctionsWGSL","exportIndex":4,"name":"phaseFunctionsWGSL","kind":"constant","signature":"phaseFunctionsWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/raymarching.md","moduleTitle":"render/shaders/modules/chunks/raymarching","source":"engine/render/shaders/modules/chunks/raymarching.js","import":"/engine/render/shaders/modules/chunks/raymarching.js","sourceHash":"d991d037f2f953de380e26114c0b37af0361c9bc06f845f8c7bb1bd60d36d784","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/raymarching.js#0005:beerLambertWGSL","exportIndex":5,"name":"beerLambertWGSL","kind":"constant","signature":"beerLambertWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/raymarching.md","moduleTitle":"render/shaders/modules/chunks/raymarching","source":"engine/render/shaders/modules/chunks/raymarching.js","import":"/engine/render/shaders/modules/chunks/raymarching.js","sourceHash":"d991d037f2f953de380e26114c0b37af0361c9bc06f845f8c7bb1bd60d36d784","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/raymarching.js#0006:raymarchingModuleWGSL","exportIndex":6,"name":"raymarchingModuleWGSL","kind":"constant","signature":"raymarchingModuleWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/restir_guide_policy.md","moduleTitle":"render/shaders/modules/chunks/restir_guide_policy","source":"engine/render/shaders/modules/chunks/restir_guide_policy.js","import":"/engine/render/shaders/modules/chunks/restir_guide_policy.js","sourceHash":"92c27dcbfb15f8139ad652fec9e7e9d6c3e443ccadd4ccfae0bc307a20cd0549","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/chunks/restir_guide_policy.js","title":"render/shaders/modules/chunks/restir_guide_policy","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/restir_guide_policy.md","moduleTitle":"render/shaders/modules/chunks/restir_guide_policy","source":"engine/render/shaders/modules/chunks/restir_guide_policy.js","import":"/engine/render/shaders/modules/chunks/restir_guide_policy.js","sourceHash":"92c27dcbfb15f8139ad652fec9e7e9d6c3e443ccadd4ccfae0bc307a20cd0549","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/restir_guide_policy.js#0000:restirGuidePolicyWGSL","exportIndex":0,"name":"restirGuidePolicyWGSL","kind":"constant","signature":"restirGuidePolicyWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/sdf_primitives.md","moduleTitle":"render/shaders/modules/chunks/sdf_primitives","source":"engine/render/shaders/modules/chunks/sdf_primitives.js","import":"/engine/render/shaders/modules/chunks/sdf_primitives.js","sourceHash":"5bffa7e2d55c5ebbcb705397a6997f2018ec24cfb4b2b3c835a5c7cf249a6cac","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/chunks/sdf_primitives.js","title":"render/shaders/modules/chunks/sdf_primitives","summary":"Signed Distance Field Primitives Common SDF shapes for ray marching. Used by: volume rendering, procedural geometry, collision detection Functions: - sdSphere(p, r) - Sphere SDF - sdBox(p, b) - Box SDF - sdPlane(p, n) - Plane SDF (n.xyz = normal, n.w = distance) - sdCapsule(p, a, b, r) - Capsule/cylinder SDF - sdTorus(p, t) - Torus SDF - opUnion(d1, d2) - Union of two SDFs - opSubtract(d1, d2) - Subtraction (d1 - d2) - opIntersect(d1, d2) - Intersection - opSmoothUnion(d1, d2, k) - Smooth blend union","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/sdf_primitives.md","moduleTitle":"render/shaders/modules/chunks/sdf_primitives","source":"engine/render/shaders/modules/chunks/sdf_primitives.js","import":"/engine/render/shaders/modules/chunks/sdf_primitives.js","sourceHash":"5bffa7e2d55c5ebbcb705397a6997f2018ec24cfb4b2b3c835a5c7cf249a6cac","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/sdf_primitives.js#0000:sdfPrimitivesWGSL","exportIndex":0,"name":"sdfPrimitivesWGSL","kind":"constant","signature":"sdfPrimitivesWGSL","summary":"Signed Distance Field Primitives Common SDF shapes for ray marching. Used by: volume rendering, procedural geometry, collision detection Functions: - sdSphere(p, r) - Sphere SDF - sdBox(p, b) - Box SDF - sdPlane(p, n) - Plane SDF (n.xyz = normal, n.w = distance) - sdCapsule(p, a, b, r) - Capsule/cylinder SDF - sdTorus(p, t) - Torus SDF - opUnion(d1, d2) - Union of two SDFs - opSubtract(d1, d2) - Subtraction (d1 - d2) - opIntersect(d1, d2) - Intersection - opSmoothUnion(d1, d2, k) - Smooth blend union"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/shadows_ao.md","moduleTitle":"render/shaders/modules/chunks/shadows_ao","source":"engine/render/shaders/modules/chunks/shadows_ao.js","import":"/engine/render/shaders/modules/chunks/shadows_ao.js","sourceHash":"b6f2142015d0894818ab4ed8cc43a736b36bbaa522a29391b9df7f1cd1bc3c63","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/chunks/shadows_ao.js","title":"render/shaders/modules/chunks/shadows_ao","summary":"Soft Shadows and Ambient Occlusion for Ray Marching Used by: SDF rendering, volumetric effects, global illumination Functions: - calcSoftShadow(ro, rd, sceneSDF, mint, maxt, k) - Penumbra soft shadows - calcAO(pos, nor, sceneSDF) - Ambient occlusion via ray marching - calcHardShadow(ro, rd, sceneSDF, mint, maxt) - Binary shadow test","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/shadows_ao.md","moduleTitle":"render/shaders/modules/chunks/shadows_ao","source":"engine/render/shaders/modules/chunks/shadows_ao.js","import":"/engine/render/shaders/modules/chunks/shadows_ao.js","sourceHash":"b6f2142015d0894818ab4ed8cc43a736b36bbaa522a29391b9df7f1cd1bc3c63","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/shadows_ao.js#0000:shadowsAoWGSL","exportIndex":0,"name":"shadowsAoWGSL","kind":"constant","signature":"shadowsAoWGSL","summary":"Soft Shadows and Ambient Occlusion for Ray Marching Used by: SDF rendering, volumetric effects, global illumination Functions: - calcSoftShadow(ro, rd, sceneSDF, mint, maxt, k) - Penumbra soft shadows - calcAO(pos, nor, sceneSDF) - Ambient occlusion via ray marching - calcHardShadow(ro, rd, sceneSDF, mint, maxt) - Binary shadow test"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/shadows_ao.md","moduleTitle":"render/shaders/modules/chunks/shadows_ao","source":"engine/render/shaders/modules/chunks/shadows_ao.js","import":"/engine/render/shaders/modules/chunks/shadows_ao.js","sourceHash":"b6f2142015d0894818ab4ed8cc43a736b36bbaa522a29391b9df7f1cd1bc3c63","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/shadows_ao.js#0001:shadowsAoMacrosWGSL","exportIndex":1,"name":"shadowsAoMacrosWGSL","kind":"constant","signature":"shadowsAoMacrosWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/spell_particles.md","moduleTitle":"render/shaders/modules/chunks/spell_particles","source":"engine/render/shaders/modules/chunks/spell_particles.js","import":"/engine/render/shaders/modules/chunks/spell_particles.js","sourceHash":"6708aaf17cb9e133e8189f2a8f36e106b9eb4bcdb6d05b3323bf9a5e297b7828","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/chunks/spell_particles.js","title":"render/shaders/modules/chunks/spell_particles","summary":"Spell Particle Effects - WGSL Shader Chunk Particle behaviors for spell effects including projectiles, shields, auras, and various magical effects.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/spell_particles.md","moduleTitle":"render/shaders/modules/chunks/spell_particles","source":"engine/render/shaders/modules/chunks/spell_particles.js","import":"/engine/render/shaders/modules/chunks/spell_particles.js","sourceHash":"6708aaf17cb9e133e8189f2a8f36e106b9eb4bcdb6d05b3323bf9a5e297b7828","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/spell_particles.js#0000:spellParticlesWGSL","exportIndex":0,"name":"spellParticlesWGSL","kind":"constant","signature":"spellParticlesWGSL","summary":"Spell Particle Effects - WGSL Shader Chunk Particle behaviors for spell effects including projectiles, shields, auras, and various magical effects."}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/structs_common.md","moduleTitle":"render/shaders/modules/chunks/structs_common","source":"engine/render/shaders/modules/chunks/structs_common.js","import":"/engine/render/shaders/modules/chunks/structs_common.js","sourceHash":"40d552dfa639ee82206128385d97ebcd8b72e36f3971f0a3e26da9bafe77f08d","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/chunks/structs_common.js","title":"render/shaders/modules/chunks/structs_common","summary":"","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/structs_common.md","moduleTitle":"render/shaders/modules/chunks/structs_common","source":"engine/render/shaders/modules/chunks/structs_common.js","import":"/engine/render/shaders/modules/chunks/structs_common.js","sourceHash":"40d552dfa639ee82206128385d97ebcd8b72e36f3971f0a3e26da9bafe77f08d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/structs_common.js#0000:lightStructWGSL","exportIndex":0,"name":"lightStructWGSL","kind":"constant","signature":"lightStructWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/structs_common.md","moduleTitle":"render/shaders/modules/chunks/structs_common","source":"engine/render/shaders/modules/chunks/structs_common.js","import":"/engine/render/shaders/modules/chunks/structs_common.js","sourceHash":"40d552dfa639ee82206128385d97ebcd8b72e36f3971f0a3e26da9bafe77f08d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/structs_common.js#0001:cameraStructWGSL","exportIndex":1,"name":"cameraStructWGSL","kind":"constant","signature":"cameraStructWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/structs_common.md","moduleTitle":"render/shaders/modules/chunks/structs_common","source":"engine/render/shaders/modules/chunks/structs_common.js","import":"/engine/render/shaders/modules/chunks/structs_common.js","sourceHash":"40d552dfa639ee82206128385d97ebcd8b72e36f3971f0a3e26da9bafe77f08d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/structs_common.js#0002:frameUniformsWGSL","exportIndex":2,"name":"frameUniformsWGSL","kind":"constant","signature":"frameUniformsWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/structs_common.md","moduleTitle":"render/shaders/modules/chunks/structs_common","source":"engine/render/shaders/modules/chunks/structs_common.js","import":"/engine/render/shaders/modules/chunks/structs_common.js","sourceHash":"40d552dfa639ee82206128385d97ebcd8b72e36f3971f0a3e26da9bafe77f08d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/structs_common.js#0003:pbrMaterialStructWGSL","exportIndex":3,"name":"pbrMaterialStructWGSL","kind":"constant","signature":"pbrMaterialStructWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/structs_common.md","moduleTitle":"render/shaders/modules/chunks/structs_common","source":"engine/render/shaders/modules/chunks/structs_common.js","import":"/engine/render/shaders/modules/chunks/structs_common.js","sourceHash":"40d552dfa639ee82206128385d97ebcd8b72e36f3971f0a3e26da9bafe77f08d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/structs_common.js#0004:standardVertexOutputWGSL","exportIndex":4,"name":"standardVertexOutputWGSL","kind":"constant","signature":"standardVertexOutputWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/structs_common.md","moduleTitle":"render/shaders/modules/chunks/structs_common","source":"engine/render/shaders/modules/chunks/structs_common.js","import":"/engine/render/shaders/modules/chunks/structs_common.js","sourceHash":"40d552dfa639ee82206128385d97ebcd8b72e36f3971f0a3e26da9bafe77f08d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/structs_common.js#0005:fullscreenVertexOutputWGSL","exportIndex":5,"name":"fullscreenVertexOutputWGSL","kind":"constant","signature":"fullscreenVertexOutputWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/temporal_aa.md","moduleTitle":"render/shaders/modules/chunks/temporal_aa","source":"engine/render/shaders/modules/chunks/temporal_aa.js","import":"/engine/render/shaders/modules/chunks/temporal_aa.js","sourceHash":"a6951772dd79ce5902cc1aec1099b3f4c5cccf9100868e7b5f2c6b075da8e0a3","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/chunks/temporal_aa.js","title":"render/shaders/modules/chunks/temporal_aa","summary":"Temporal Anti-Aliasing (TAA) Utilities Functions for implementing high-quality temporal anti-aliasing. Key Concepts: 1. Jittered sampling (Halton sequence) 2. History reprojection 3. Neighborhood clamping (ghosting prevention) 4. YCoCg color space (better clamping) 5. Catmull-Rom history sampling 6. Sharpening filter Functions: - halton23(index) - Halton 2,3 sequence for jitter - rgb2YCoCg / yCoCg2Rgb - Color space conversion - clipToBox - Neighborhood clamping - catmullRomSample - High quality history sampling","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/temporal_aa.md","moduleTitle":"render/shaders/modules/chunks/temporal_aa","source":"engine/render/shaders/modules/chunks/temporal_aa.js","import":"/engine/render/shaders/modules/chunks/temporal_aa.js","sourceHash":"a6951772dd79ce5902cc1aec1099b3f4c5cccf9100868e7b5f2c6b075da8e0a3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/temporal_aa.js#0000:temporalAAWGSL","exportIndex":0,"name":"temporalAAWGSL","kind":"constant","signature":"temporalAAWGSL","summary":"Temporal Anti-Aliasing (TAA) Utilities Functions for implementing high-quality temporal anti-aliasing. Key Concepts: 1. Jittered sampling (Halton sequence) 2. History reprojection 3. Neighborhood clamping (ghosting prevention) 4. YCoCg color space (better clamping) 5. Catmull-Rom history sampling 6. Sharpening filter Functions: - halton23(index) - Halton 2,3 sequence for jitter - rgb2YCoCg / yCoCg2Rgb - Color space conversion - clipToBox - Neighborhood clamping - catmullRomSample - High quality history sampling"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/texture_math.md","moduleTitle":"render/shaders/modules/chunks/texture_math","source":"engine/render/shaders/modules/chunks/texture_math.js","import":"/engine/render/shaders/modules/chunks/texture_math.js","sourceHash":"422ead92e8516de4a7572024f922f79c2a312ca1ce430330cec087fac6def077","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/chunks/texture_math.js","title":"render/shaders/modules/chunks/texture_math","summary":"Shared texture coordinate, mip, atlas, and virtual-texture helpers for WGSL.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/texture_math.md","moduleTitle":"render/shaders/modules/chunks/texture_math","source":"engine/render/shaders/modules/chunks/texture_math.js","import":"/engine/render/shaders/modules/chunks/texture_math.js","sourceHash":"422ead92e8516de4a7572024f922f79c2a312ca1ce430330cec087fac6def077","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/texture_math.js#0000:textureMathWGSL","exportIndex":0,"name":"textureMathWGSL","kind":"constant","signature":"textureMathWGSL","summary":"Shared texture coordinate, mip, atlas, and virtual-texture helpers for WGSL."}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/volumetric_clouds.md","moduleTitle":"render/shaders/modules/chunks/volumetric_clouds","source":"engine/render/shaders/modules/chunks/volumetric_clouds.js","import":"/engine/render/shaders/modules/chunks/volumetric_clouds.js","sourceHash":"08031ecd713934199694d8ad9a6d0315f2971f50cb6c09839ba88040e93f83b6","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/chunks/volumetric_clouds.js","title":"render/shaders/modules/chunks/volumetric_clouds","summary":"Volumetric Clouds & Fog Rendering Advanced volumetric rendering with dynamic step size and fog integration. Key Concepts: 1. Deformed periodic grid noise - Cheap volume noise 2. Dynamic step size - Adaptive raymarch based on density 3. Fog integral difference - Proper fog accumulation 4. Multi-octave displacement - FBM-like volume noise 5. Saturation-preserving interpolation - Better color blending","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/volumetric_clouds.md","moduleTitle":"render/shaders/modules/chunks/volumetric_clouds","source":"engine/render/shaders/modules/chunks/volumetric_clouds.js","import":"/engine/render/shaders/modules/chunks/volumetric_clouds.js","sourceHash":"08031ecd713934199694d8ad9a6d0315f2971f50cb6c09839ba88040e93f83b6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/volumetric_clouds.js#0000:volumetricCloudsWGSL","exportIndex":0,"name":"volumetricCloudsWGSL","kind":"constant","signature":"volumetricCloudsWGSL","summary":"Volumetric Clouds & Fog Rendering Advanced volumetric rendering with dynamic step size and fog integration. Key Concepts: 1. Deformed periodic grid noise - Cheap volume noise 2. Dynamic step size - Adaptive raymarch based on density 3. Fog integral difference - Proper fog accumulation 4. Multi-octave displacement - FBM-like volume noise 5. Saturation-preserving interpolation - Better color blending"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/voronoi.md","moduleTitle":"render/shaders/modules/chunks/voronoi","source":"engine/render/shaders/modules/chunks/voronoi.js","import":"/engine/render/shaders/modules/chunks/voronoi.js","sourceHash":"5721f3b1952a86fc73a50f967701e6d9edae29a107a3c34c2af97607c8e4deb9","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/chunks/voronoi.js","title":"render/shaders/modules/chunks/voronoi","summary":"Voronoi & Cellular Noise Patterns Functions for voronoi diagrams, cellular textures, and organic patterns. Key Concepts: 1. Voronoi cells - Animated cellular patterns 2. Smooth voronoi - Blended cell boundaries 3. Polar coordinates - Radial patterns 4. Ring patterns - Concentric ripples 5. FBM with rotation - Reduced axis artifacts Functions: - voronoi2d(p, time) - Basic 2D voronoi - voronoiSmooth(p, w, time) - Smoothed cell edges - toPolar(v) - Cartesian to polar - ringPattern(p, time) - Concentric rings with noise","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/voronoi.md","moduleTitle":"render/shaders/modules/chunks/voronoi","source":"engine/render/shaders/modules/chunks/voronoi.js","import":"/engine/render/shaders/modules/chunks/voronoi.js","sourceHash":"5721f3b1952a86fc73a50f967701e6d9edae29a107a3c34c2af97607c8e4deb9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/voronoi.js#0000:voronoiWGSL","exportIndex":0,"name":"voronoiWGSL","kind":"constant","signature":"voronoiWGSL","summary":"Voronoi & Cellular Noise Patterns Functions for voronoi diagrams, cellular textures, and organic patterns. Key Concepts: 1. Voronoi cells - Animated cellular patterns 2. Smooth voronoi - Blended cell boundaries 3. Polar coordinates - Radial patterns 4. Ring patterns - Concentric ripples 5. FBM with rotation - Reduced axis artifacts Functions: - voronoi2d(p, time) - Basic 2D voronoi - voronoiSmooth(p, w, time) - Smoothed cell edges - toPolar(v) - Cartesian to polar - ringPattern(p, time) - Concentric rings with noise"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/voxel_world.md","moduleTitle":"render/shaders/modules/chunks/voxel_world","source":"engine/render/shaders/modules/chunks/voxel_world.js","import":"/engine/render/shaders/modules/chunks/voxel_world.js","sourceHash":"a22a0a9eaf778bd4434bcfb2adb16a0b9b45a1df11a27a406c8cf78b006c6d50","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/chunks/voxel_world.js","title":"render/shaders/modules/chunks/voxel_world","summary":"Voxel World Module - shared terrain functions for voxel-style materials. This chunk does NOT declare entry points. It only provides reusable WGSL helpers for triplanar noise, terrain palette, and voxel edge darkening.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/chunks/voxel_world.md","moduleTitle":"render/shaders/modules/chunks/voxel_world","source":"engine/render/shaders/modules/chunks/voxel_world.js","import":"/engine/render/shaders/modules/chunks/voxel_world.js","sourceHash":"a22a0a9eaf778bd4434bcfb2adb16a0b9b45a1df11a27a406c8cf78b006c6d50","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/chunks/voxel_world.js#0000:voxelWorldModuleWGSL","exportIndex":0,"name":"voxelWorldModuleWGSL","kind":"constant","signature":"voxelWorldModuleWGSL","summary":"Voxel World Module - shared terrain functions for voxel-style materials. This chunk does NOT declare entry points. It only provides reusable WGSL helpers for triplanar noise, terrain palette, and voxel edge darkening."}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/compute/gpu_tile.md","moduleTitle":"render/shaders/modules/compute/gpu_tile","source":"engine/render/shaders/modules/compute/gpu_tile.js","import":"/engine/render/shaders/modules/compute/gpu_tile.js","sourceHash":"b3e499f3c87c68734e2b01e47cd1c119c47914af08035bd5ae7784a0a42721b4","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/compute/gpu_tile.js","title":"render/shaders/modules/compute/gpu_tile","summary":"GpuTile - WebGPU workgroup shared-memory tile (WebGPU equivalent of NVIDIA cuda-tile) Inspired by: https://github.com/NVIDIA/cuda-tile CONCEPT: Every thread in a workgroup cooperatively loads one element of a global buffer into fast workgroup-shared memory (\"the tile\"), then ALL threads process the cached tile before advancing to the next tile.  This amortises global-memory latency across the whole group — the same idea that makes tiled matrix-multiply orders of magnitude faster than naive O(N²) reads. CUDA term         WebGPU/WGSL equivalent ─────────────     ───────────────────── __shared__        var<workgroup> template<T,N>     JS class with type / tileSize parameters (build-time) __syncthreads()   workgroupBarrier() threadIdx.x       @builtin(local_invocation_id) USAGE (JavaScript side, shader build-time): import { GpuTile } from \".../modules/compute/gpu_tile.js\"; const bodyTile = new GpuTile({ name: 'bodyTile', type: 'vec4f', tileSize: 64 }); const shader = ` // --- module scope --- ${bodyTile.declareWGSL()} @compute @workgroup_size(64) fn cs(@builtin(global_invocation_id) gid: vec3u, @builtin(local_invocation_id)  lid: vec3u) { let i   = gid.x; let myPos = bodies[i].pos.xyz; var acc = vec3f(0.); ${bodyTile.tiledLoopWGSL({ bufExpr:   'bodies',        // storage buffer binding name elemExpr:  'b.pos',         // expression to extract from element countExpr: 'u.count', lidExpr:   'lid.x', bodyWGSL: ` for (var k = 0u; k < _bodyTile_len; k++) { let b = ${bodyTile.getWGSL('k')}; let d = b.xyz - myPos; acc += d / (dot(d,d) + 0.01); }` })} } `; ADVANCED — multiple simultaneous tiles: Give each a unique `name` so their var<workgroup> identifiers don't collide. const posTile = new GpuTile({ name: 'posTile', type: 'vec4f', tileSize: 64 }); const velTile = new GpuTile({ name: 'velTile', type: 'vec4f', tileSize: 64 }); // In shader: ${posTile.declareWGSL()} ${velTile.declareWGSL()}","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/compute/gpu_tile.md","moduleTitle":"render/shaders/modules/compute/gpu_tile","source":"engine/render/shaders/modules/compute/gpu_tile.js","import":"/engine/render/shaders/modules/compute/gpu_tile.js","sourceHash":"b3e499f3c87c68734e2b01e47cd1c119c47914af08035bd5ae7784a0a42721b4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/compute/gpu_tile.js#0000:GpuTile","exportIndex":0,"name":"GpuTile","kind":"class","signature":"class GpuTile","summary":"GpuTile - WebGPU workgroup shared-memory tile (WebGPU equivalent of NVIDIA cuda-tile) Inspired by: https://github.com/NVIDIA/cuda-tile CONCEPT: Every thread in a workgroup cooperatively loads one element of a global buffer into fast workgroup-shared memory (\"the tile\"), then ALL threads process the cached tile before advancing to the next tile.  This amortises global-memory latency across the whole group — the same idea that makes tiled matrix-multiply orders of magnitude faster than naive O(N²) reads. CUDA term         WebGPU/WGSL equivalent ─────────────     ───────────────────── __shared__        var<workgroup> template<T,N>     JS class with type / tileSize parameters (build-time) __syncthreads()   workgroupBarrier() threadIdx.x       @builtin(local_invocation_id) USAGE (JavaScript side, shader build-time): import { GpuTile } from \".../modules/compute/gpu_tile.js\"; const bodyTile = new GpuTile({ name: 'bodyTile', type: 'vec4f', tileSize: 64 }); const shader = ` // --- module scope --- ${bodyTile.declareWGSL()} @compute @workgroup_size(64) fn cs(@builtin(global_invocation_id) gid: vec3u, @builtin(local_invocation_id)  lid: vec3u) { let i   = gid.x; let myPos = bodies[i].pos.xyz; var acc = vec3f(0.); ${bodyTile.tiledLoopWGSL({ bufExpr:   'bodies',        // storage buffer binding name elemExpr:  'b.pos',         // expression to extract from element countExpr: 'u.count', lidExpr:   'lid.x', bodyWGSL: ` for (var k = 0u; k < _bodyTile_len; k++) { let b = ${bodyTile.getWGSL('k')}; let d = b.xyz - myPos; acc += d / (dot(d,d) + 0.01); }` })} } `; ADVANCED — multiple simultaneous tiles: Give each a unique `name` so their var<workgroup> identifiers don't collide. const posTile = new GpuTile({ name: 'posTile', type: 'vec4f', tileSize: 64 }); const velTile = new GpuTile({ name: 'velTile', type: 'vec4f', tileSize: 64 }); // In shader: ${posTile.declareWGSL()} ${velTile.declareWGSL()}"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/compute/gpu_tile.md","moduleTitle":"render/shaders/modules/compute/gpu_tile","source":"engine/render/shaders/modules/compute/gpu_tile.js","import":"/engine/render/shaders/modules/compute/gpu_tile.js","sourceHash":"b3e499f3c87c68734e2b01e47cd1c119c47914af08035bd5ae7784a0a42721b4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/compute/gpu_tile.js#0001:gpuTile","exportIndex":1,"name":"gpuTile","kind":"function","signature":"gpuTile(opts)","summary":"Convenience factory — same as `new GpuTile(opts)`."}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/compute/gpu_tile.md","moduleTitle":"render/shaders/modules/compute/gpu_tile","source":"engine/render/shaders/modules/compute/gpu_tile.js","import":"/engine/render/shaders/modules/compute/gpu_tile.js","sourceHash":"b3e499f3c87c68734e2b01e47cd1c119c47914af08035bd5ae7784a0a42721b4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/compute/gpu_tile.js#0002:TILED_NBODY_EXAMPLE_WGSL","exportIndex":2,"name":"TILED_NBODY_EXAMPLE_WGSL","kind":"function","signature":"TILED_NBODY_EXAMPLE_WGSL()","summary":"Ready-to-paste WGSL string demonstrating the 64-thread tiled N-body pattern. This is the same code used in the playground N-Body demo, expressed via GpuTile."}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/compute/gpu_tile.md","moduleTitle":"render/shaders/modules/compute/gpu_tile","source":"engine/render/shaders/modules/compute/gpu_tile.js","import":"/engine/render/shaders/modules/compute/gpu_tile.js","sourceHash":"b3e499f3c87c68734e2b01e47cd1c119c47914af08035bd5ae7784a0a42721b4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/compute/gpu_tile.js#0003:VEC4_TILE_64","exportIndex":3,"name":"VEC4_TILE_64","kind":"constant","signature":"VEC4_TILE_64","summary":"vec4f tile, 64 threads — matches the N-Body pattern exactly"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/compute/gpu_tile.md","moduleTitle":"render/shaders/modules/compute/gpu_tile","source":"engine/render/shaders/modules/compute/gpu_tile.js","import":"/engine/render/shaders/modules/compute/gpu_tile.js","sourceHash":"b3e499f3c87c68734e2b01e47cd1c119c47914af08035bd5ae7784a0a42721b4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/compute/gpu_tile.js#0004:VEC4_TILE_128","exportIndex":4,"name":"VEC4_TILE_128","kind":"constant","signature":"VEC4_TILE_128","summary":"vec4f tile, 128 threads — good for higher-throughput passes"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/compute/gpu_tile.md","moduleTitle":"render/shaders/modules/compute/gpu_tile","source":"engine/render/shaders/modules/compute/gpu_tile.js","import":"/engine/render/shaders/modules/compute/gpu_tile.js","sourceHash":"b3e499f3c87c68734e2b01e47cd1c119c47914af08035bd5ae7784a0a42721b4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/compute/gpu_tile.js#0005:F32_TILE_64","exportIndex":5,"name":"F32_TILE_64","kind":"constant","signature":"F32_TILE_64","summary":"f32 tile, 64 threads — useful for scalar reduction passes"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/compute/gpu_tile.md","moduleTitle":"render/shaders/modules/compute/gpu_tile","source":"engine/render/shaders/modules/compute/gpu_tile.js","import":"/engine/render/shaders/modules/compute/gpu_tile.js","sourceHash":"b3e499f3c87c68734e2b01e47cd1c119c47914af08035bd5ae7784a0a42721b4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/compute/gpu_tile.js#0006:VEC2_TILE_64","exportIndex":6,"name":"VEC2_TILE_64","kind":"constant","signature":"VEC2_TILE_64","summary":"vec2f tile, 64 threads — 2-D positions / UVs"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/compute/grid_splat.md","moduleTitle":"render/shaders/modules/compute/grid_splat","source":"engine/render/shaders/modules/compute/grid_splat.js","import":"/engine/render/shaders/modules/compute/grid_splat.js","sourceHash":"e635a64fe731e35264be3fe1fc9e2d2166532ee7ac19a3c5e1970cbda6c311b5","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/compute/grid_splat.js","title":"render/shaders/modules/compute/grid_splat","summary":"Grid Splat Compute Shader Splats particles/vertices to a 3D density grid for volumetric rendering Input: Particle positions, colors, velocities Output: Density grid + Color grid (for raymarching)","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/compute/grid_splat.md","moduleTitle":"render/shaders/modules/compute/grid_splat","source":"engine/render/shaders/modules/compute/grid_splat.js","import":"/engine/render/shaders/modules/compute/grid_splat.js","sourceHash":"e635a64fe731e35264be3fe1fc9e2d2166532ee7ac19a3c5e1970cbda6c311b5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/compute/grid_splat.js#0000:gridSplatComputeWGSL","exportIndex":0,"name":"gridSplatComputeWGSL","kind":"constant","signature":"gridSplatComputeWGSL","summary":"Grid Splat Compute Shader Splats particles/vertices to a 3D density grid for volumetric rendering Input: Particle positions, colors, velocities Output: Density grid + Color grid (for raymarching)"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/compute/grid_splat.md","moduleTitle":"render/shaders/modules/compute/grid_splat","source":"engine/render/shaders/modules/compute/grid_splat.js","import":"/engine/render/shaders/modules/compute/grid_splat.js","sourceHash":"e635a64fe731e35264be3fe1fc9e2d2166532ee7ac19a3c5e1970cbda6c311b5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/compute/grid_splat.js#0001:gridClearComputeWGSL","exportIndex":1,"name":"gridClearComputeWGSL","kind":"constant","signature":"gridClearComputeWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/compute/grid_splat.md","moduleTitle":"render/shaders/modules/compute/grid_splat","source":"engine/render/shaders/modules/compute/grid_splat.js","import":"/engine/render/shaders/modules/compute/grid_splat.js","sourceHash":"e635a64fe731e35264be3fe1fc9e2d2166532ee7ac19a3c5e1970cbda6c311b5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/compute/grid_splat.js#0002:gridFinalizeComputeWGSL","exportIndex":2,"name":"gridFinalizeComputeWGSL","kind":"constant","signature":"gridFinalizeComputeWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/core/particles_billboard.md","moduleTitle":"render/shaders/modules/core/particles_billboard","source":"engine/render/shaders/modules/core/particles_billboard.js","import":"/engine/render/shaders/modules/core/particles_billboard.js","sourceHash":"7253c68178f840401d3a5591f6d831bb4403179c2267508eeb12d53e5e3d140a","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/core/particles_billboard.js","title":"render/shaders/modules/core/particles_billboard","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/core/particles_billboard.md","moduleTitle":"render/shaders/modules/core/particles_billboard","source":"engine/render/shaders/modules/core/particles_billboard.js","import":"/engine/render/shaders/modules/core/particles_billboard.js","sourceHash":"7253c68178f840401d3a5591f6d831bb4403179c2267508eeb12d53e5e3d140a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/core/particles_billboard.js#0000:particlesBillboardWGSL","exportIndex":0,"name":"particlesBillboardWGSL","kind":"constant","signature":"particlesBillboardWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/core/particles_billboard_fragment.md","moduleTitle":"render/shaders/modules/core/particles_billboard_fragment","source":"engine/render/shaders/modules/core/particles_billboard_fragment.js","import":"/engine/render/shaders/modules/core/particles_billboard_fragment.js","sourceHash":"8265e2b030e6ce162ea125fc8f8f77d20cdedd90fe4324bc0cb63b839cb4dd27","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/core/particles_billboard_fragment.js","title":"render/shaders/modules/core/particles_billboard_fragment","summary":"============================================================================ PARTICLE FRAGMENT SHADER - PER-PARTICLE SHAPE RENDERING ============================================================================ This shader renders each particle according to its emitter's shape setting. The shape type is passed from the vertex shader (extracted from meta buffer). SHAPE TYPES: 0 = SPHERE - 3D shaded ball with fake diffuse lighting - Hard circle cutoff (no square corners) - Calculates fake Z depth for sphere surface - Applies directional light from upper-right - Best for: fire, water drops, magic orbs 1 = POINT - Tiny bright dot with small radius - Extra bright center for visibility - Discards most of the quad for small appearance - Best for: sparks, stars, snow, dust 2 = SOFT - Organic smoke/cloud shape with noise-distorted edges - Uses FBM noise to break circular silhouette - Wispy tendrils and irregular boundaries - Best for: smoke, fog, clouds, magic auras 3 = SPARK - Star/cross shape with 4 points - Creates X pattern with bright center - Good for emphasis and magical effects - Best for: magic sparks, highlights, flares INPUTS (from vertex shader): - localPos.xy: Normalized position within quad (-1 to 1) - color: RGBA from emitter - age: Particle age for lifetime fading - shape: Shape type (0-3) OUTPUT: - Final RGBA color with alpha for blending","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/core/particles_billboard_fragment.md","moduleTitle":"render/shaders/modules/core/particles_billboard_fragment","source":"engine/render/shaders/modules/core/particles_billboard_fragment.js","import":"/engine/render/shaders/modules/core/particles_billboard_fragment.js","sourceHash":"8265e2b030e6ce162ea125fc8f8f77d20cdedd90fe4324bc0cb63b839cb4dd27","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/core/particles_billboard_fragment.js#0000:particlesBillboardFragmentWGSL","exportIndex":0,"name":"particlesBillboardFragmentWGSL","kind":"constant","signature":"particlesBillboardFragmentWGSL","summary":"============================================================================ PARTICLE FRAGMENT SHADER - PER-PARTICLE SHAPE RENDERING ============================================================================ This shader renders each particle according to its emitter's shape setting. The shape type is passed from the vertex shader (extracted from meta buffer). SHAPE TYPES: 0 = SPHERE - 3D shaded ball with fake diffuse lighting - Hard circle cutoff (no square corners) - Calculates fake Z depth for sphere surface - Applies directional light from upper-right - Best for: fire, water drops, magic orbs 1 = POINT - Tiny bright dot with small radius - Extra bright center for visibility - Discards most of the quad for small appearance - Best for: sparks, stars, snow, dust 2 = SOFT - Organic smoke/cloud shape with noise-distorted edges - Uses FBM noise to break circular silhouette - Wispy tendrils and irregular boundaries - Best for: smoke, fog, clouds, magic auras 3 = SPARK - Star/cross shape with 4 points - Creates X pattern with bright center - Good for emphasis and magical effects - Best for: magic sparks, highlights, flares INPUTS (from vertex shader): - localPos.xy: Normalized position within quad (-1 to 1) - color: RGBA from emitter - age: Particle age for lifetime fading - shape: Shape type (0-3) OUTPUT: - Final RGBA color with alpha for blending"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/core/particles_billboard_vertex.md","moduleTitle":"render/shaders/modules/core/particles_billboard_vertex","source":"engine/render/shaders/modules/core/particles_billboard_vertex.js","import":"/engine/render/shaders/modules/core/particles_billboard_vertex.js","sourceHash":"db24e24e899b5a5465064d9d8ed821a4063ff196e1caffea11be1067e6366e16","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/core/particles_billboard_vertex.js","title":"render/shaders/modules/core/particles_billboard_vertex","summary":"============================================================================ PARTICLE BILLBOARD VERTEX SHADER ============================================================================ This shader renders particles as SCREEN-ALIGNED quads (always face camera). HOW IT WORKS: 1. Each particle is rendered as 6 vertices (2 triangles = 1 quad) 2. The particle center is transformed to CLIP SPACE first 3. Screen-space offsets are added to create a quad that always faces the camera 4. Per-particle data (color, size, shape) is read from the meta buffer INPUTS (from GPU buffers): - uPositions[ii]: vec4 containing [x, y, z, age] - uMeta[ii]: vec4 containing [r, g, b, packed_size_shape] - uVelocities[ii]: vec4 containing [vx, vy, vz, lifetime] - uParams: Default fallback values OUTPUTS (to fragment shader): - position: Clip-space position for rasterization - color: RGBA color from emitter - localPos: Normalized quad coordinates (-1 to 1) for shape rendering - age: Particle age for lifetime effects - shape: Shape type (0=sphere, 1=point, 2=soft, 3=spark) - lifetime: Per-particle lifetime from emitter SIZE/SHAPE/BEHAVIOR ENCODING: The meta.w value packs size, renderMode, shape, and behavior: meta.w = size * 1000 + renderMode * 100 + shape * 10 + behavior - size: 0-65 (floor(meta.w / 1000)) - renderMode: 0-9 (floor(meta.w / 100) % 10) - shape: 0-9 (floor(meta.w / 10) % 10) - behavior: 0-9 (meta.w % 10) Example: 4302 = size 4, renderMode 3, shape 0, behavior 2","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/core/particles_billboard_vertex.md","moduleTitle":"render/shaders/modules/core/particles_billboard_vertex","source":"engine/render/shaders/modules/core/particles_billboard_vertex.js","import":"/engine/render/shaders/modules/core/particles_billboard_vertex.js","sourceHash":"db24e24e899b5a5465064d9d8ed821a4063ff196e1caffea11be1067e6366e16","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/core/particles_billboard_vertex.js#0000:particlesBillboardVertexWGSL","exportIndex":0,"name":"particlesBillboardVertexWGSL","kind":"constant","signature":"particlesBillboardVertexWGSL","summary":"============================================================================ PARTICLE BILLBOARD VERTEX SHADER ============================================================================ This shader renders particles as SCREEN-ALIGNED quads (always face camera). HOW IT WORKS: 1. Each particle is rendered as 6 vertices (2 triangles = 1 quad) 2. The particle center is transformed to CLIP SPACE first 3. Screen-space offsets are added to create a quad that always faces the camera 4. Per-particle data (color, size, shape) is read from the meta buffer INPUTS (from GPU buffers): - uPositions[ii]: vec4 containing [x, y, z, age] - uMeta[ii]: vec4 containing [r, g, b, packed_size_shape] - uVelocities[ii]: vec4 containing [vx, vy, vz, lifetime] - uParams: Default fallback values OUTPUTS (to fragment shader): - position: Clip-space position for rasterization - color: RGBA color from emitter - localPos: Normalized quad coordinates (-1 to 1) for shape rendering - age: Particle age for lifetime effects - shape: Shape type (0=sphere, 1=point, 2=soft, 3=spark) - lifetime: Per-particle lifetime from emitter SIZE/SHAPE/BEHAVIOR ENCODING: The meta.w value packs size, renderMode, shape, and behavior: meta.w = size * 1000 + renderMode * 100 + shape * 10 + behavior - size: 0-65 (floor(meta.w / 1000)) - renderMode: 0-9 (floor(meta.w / 100) % 10) - shape: 0-9 (floor(meta.w / 10) % 10) - behavior: 0-9 (meta.w % 10) Example: 4302 = size 4, renderMode 3, shape 0, behavior 2"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/core/particles_blackbody.md","moduleTitle":"render/shaders/modules/core/particles_blackbody","source":"engine/render/shaders/modules/core/particles_blackbody.js","import":"/engine/render/shaders/modules/core/particles_blackbody.js","sourceHash":"8b5a79363cc5bef06ae3142a5af90525a7895bca70e357f8a73198265646ae19","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/core/particles_blackbody.js","title":"render/shaders/modules/core/particles_blackbody","summary":"particles_blackbody.js - Blackbody Radiation Color Shader (GAP 39) Converts particle temperature → physically-based color + emission. Uses CIE 1931 approximation of Planck's law for blackbody radiation. Stefan-Boltzmann T⁴ scaling for emissive intensity. Generates a 1D LUT texture (256 texels, 300K-30000K → sRGB). Fragment shader samples LUT based on thermalData.x temperature.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/core/particles_blackbody.md","moduleTitle":"render/shaders/modules/core/particles_blackbody","source":"engine/render/shaders/modules/core/particles_blackbody.js","import":"/engine/render/shaders/modules/core/particles_blackbody.js","sourceHash":"8b5a79363cc5bef06ae3142a5af90525a7895bca70e357f8a73198265646ae19","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/core/particles_blackbody.js#0000:generateBlackbodyLUT","exportIndex":0,"name":"generateBlackbodyLUT","kind":"function","signature":"generateBlackbodyLUT(minTemp = 300, maxTemp = 30000)","summary":"Generate blackbody LUT as Float32Array (256 × RGBA). Maps temperature range [minT, maxT] linearly across 256 texels. Alpha channel = relative emissive intensity (Stefan-Boltzmann T⁴ scaling)."}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/core/particles_blackbody.md","moduleTitle":"render/shaders/modules/core/particles_blackbody","source":"engine/render/shaders/modules/core/particles_blackbody.js","import":"/engine/render/shaders/modules/core/particles_blackbody.js","sourceHash":"8b5a79363cc5bef06ae3142a5af90525a7895bca70e357f8a73198265646ae19","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/core/particles_blackbody.js#0001:blackbodyWGSL","exportIndex":1,"name":"blackbodyWGSL","kind":"constant","signature":"blackbodyWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/core/particles_bond_line.md","moduleTitle":"render/shaders/modules/core/particles_bond_line","source":"engine/render/shaders/modules/core/particles_bond_line.js","import":"/engine/render/shaders/modules/core/particles_bond_line.js","sourceHash":"ee61a1bc2b1ad37b3d9b32c3b816ff875b87dc817fd60acc4c403740dd54bd14","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/core/particles_bond_line.js","title":"render/shaders/modules/core/particles_bond_line","summary":"particles_bond_line.js - Bond Line / Stick Shader (GAP 41) Renders molecular bonds as lines/cylinders between bonded particles. Reads constraint buffer to find bonded pairs. Supports single/double/triple bond visualization. Color by bond type: ionic=dashed, covalent=solid, metallic=thick.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/core/particles_bond_line.md","moduleTitle":"render/shaders/modules/core/particles_bond_line","source":"engine/render/shaders/modules/core/particles_bond_line.js","import":"/engine/render/shaders/modules/core/particles_bond_line.js","sourceHash":"ee61a1bc2b1ad37b3d9b32c3b816ff875b87dc817fd60acc4c403740dd54bd14","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/core/particles_bond_line.js#0000:bondLineVertexWGSL","exportIndex":0,"name":"bondLineVertexWGSL","kind":"constant","signature":"bondLineVertexWGSL","summary":"particles_bond_line.js - Bond Line / Stick Shader (GAP 41) Renders molecular bonds as lines/cylinders between bonded particles. Reads constraint buffer to find bonded pairs. Supports single/double/triple bond visualization. Color by bond type: ionic=dashed, covalent=solid, metallic=thick."}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/core/particles_bond_line.md","moduleTitle":"render/shaders/modules/core/particles_bond_line","source":"engine/render/shaders/modules/core/particles_bond_line.js","import":"/engine/render/shaders/modules/core/particles_bond_line.js","sourceHash":"ee61a1bc2b1ad37b3d9b32c3b816ff875b87dc817fd60acc4c403740dd54bd14","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/core/particles_bond_line.js#0001:bondLineFragmentWGSL","exportIndex":1,"name":"bondLineFragmentWGSL","kind":"constant","signature":"bondLineFragmentWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/core/particles_field_lines.md","moduleTitle":"render/shaders/modules/core/particles_field_lines","source":"engine/render/shaders/modules/core/particles_field_lines.js","import":"/engine/render/shaders/modules/core/particles_field_lines.js","sourceHash":"9d77cf118373351bda392b742661ef504eb42c84acb667baea1020710ef93b19","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/core/particles_field_lines.js","title":"render/shaders/modules/core/particles_field_lines","summary":"particles_field_lines.js - Electromagnetic Field Visualization Shader (GAP 42) Renders electric/magnetic field lines and force arrows around charged particles. Supports: field lines, arrow glyphs, heat map, equipotential surfaces. Color: blue=attraction, red=repulsion, intensity=magnitude.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/core/particles_field_lines.md","moduleTitle":"render/shaders/modules/core/particles_field_lines","source":"engine/render/shaders/modules/core/particles_field_lines.js","import":"/engine/render/shaders/modules/core/particles_field_lines.js","sourceHash":"9d77cf118373351bda392b742661ef504eb42c84acb667baea1020710ef93b19","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/core/particles_field_lines.js#0000:fieldLineVertexWGSL","exportIndex":0,"name":"fieldLineVertexWGSL","kind":"constant","signature":"fieldLineVertexWGSL","summary":"particles_field_lines.js - Electromagnetic Field Visualization Shader (GAP 42) Renders electric/magnetic field lines and force arrows around charged particles. Supports: field lines, arrow glyphs, heat map, equipotential surfaces. Color: blue=attraction, red=repulsion, intensity=magnitude."}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/core/particles_field_lines.md","moduleTitle":"render/shaders/modules/core/particles_field_lines","source":"engine/render/shaders/modules/core/particles_field_lines.js","import":"/engine/render/shaders/modules/core/particles_field_lines.js","sourceHash":"9d77cf118373351bda392b742661ef504eb42c84acb667baea1020710ef93b19","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/core/particles_field_lines.js#0001:fieldLineFragmentWGSL","exportIndex":1,"name":"fieldLineFragmentWGSL","kind":"constant","signature":"fieldLineFragmentWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/core/particles_orbital.md","moduleTitle":"render/shaders/modules/core/particles_orbital","source":"engine/render/shaders/modules/core/particles_orbital.js","import":"/engine/render/shaders/modules/core/particles_orbital.js","sourceHash":"0192982e2883223f4b5c5091c8d628941531956310da0e07fb9f392d689e46fb","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/core/particles_orbital.js","title":"render/shaders/modules/core/particles_orbital","summary":"particles_orbital.js - Electron Cloud / Orbital Shader (GAP 40) Raymarched spherical harmonics for visualizing electron probability clouds. Renders hydrogen-like orbital shapes (1s, 2p, 3d, etc.) around atom-particles. Color by element using CPK convention. LOD: at distance → simple sphere; close → full orbital volume.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/core/particles_orbital.md","moduleTitle":"render/shaders/modules/core/particles_orbital","source":"engine/render/shaders/modules/core/particles_orbital.js","import":"/engine/render/shaders/modules/core/particles_orbital.js","sourceHash":"0192982e2883223f4b5c5091c8d628941531956310da0e07fb9f392d689e46fb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/core/particles_orbital.js#0000:orbitalWGSL","exportIndex":0,"name":"orbitalWGSL","kind":"constant","signature":"orbitalWGSL","summary":"particles_orbital.js - Electron Cloud / Orbital Shader (GAP 40) Raymarched spherical harmonics for visualizing electron probability clouds. Renders hydrogen-like orbital shapes (1s, 2p, 3d, etc.) around atom-particles. Color by element using CPK convention. LOD: at distance → simple sphere; close → full orbital volume."}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/core/particles_phase_vfx.md","moduleTitle":"render/shaders/modules/core/particles_phase_vfx","source":"engine/render/shaders/modules/core/particles_phase_vfx.js","import":"/engine/render/shaders/modules/core/particles_phase_vfx.js","sourceHash":"85d3e87ac2e07a83049b3ee12aaa7555aedc494da113df5f83da8f2f7fe78ab0","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/core/particles_phase_vfx.js","title":"render/shaders/modules/core/particles_phase_vfx","summary":"particles_phase_vfx.js - Phase Transition Visual Effects Shader (GAP 43) Visual feedback when particles change phase: - Melt: wet/glossy sheen, drip distortion - Freeze: frost crystallization pattern, ice crackle - Boil: bubble emission pattern, steam distortion - Ionize: plasma glow + electricity arcs Per-particle phase from thermalData.y → drives material blend in fragment. Transition animation uses latentEnergy (thermalData.w) as 0→1 progress.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/core/particles_phase_vfx.md","moduleTitle":"render/shaders/modules/core/particles_phase_vfx","source":"engine/render/shaders/modules/core/particles_phase_vfx.js","import":"/engine/render/shaders/modules/core/particles_phase_vfx.js","sourceHash":"85d3e87ac2e07a83049b3ee12aaa7555aedc494da113df5f83da8f2f7fe78ab0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/core/particles_phase_vfx.js#0000:phaseVFXWGSL","exportIndex":0,"name":"phaseVFXWGSL","kind":"constant","signature":"phaseVFXWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/core/particles_point.md","moduleTitle":"render/shaders/modules/core/particles_point","source":"engine/render/shaders/modules/core/particles_point.js","import":"/engine/render/shaders/modules/core/particles_point.js","sourceHash":"71ab80fbc12f2787ea94490b6f856c2afbcce668698566154c1d16dfbac8e769","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/core/particles_point.js","title":"render/shaders/modules/core/particles_point","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/core/particles_point.md","moduleTitle":"render/shaders/modules/core/particles_point","source":"engine/render/shaders/modules/core/particles_point.js","import":"/engine/render/shaders/modules/core/particles_point.js","sourceHash":"71ab80fbc12f2787ea94490b6f856c2afbcce668698566154c1d16dfbac8e769","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/core/particles_point.js#0000:particlesPointWGSL","exportIndex":0,"name":"particlesPointWGSL","kind":"constant","signature":"particlesPointWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/core/particles_point_fragment.md","moduleTitle":"render/shaders/modules/core/particles_point_fragment","source":"engine/render/shaders/modules/core/particles_point_fragment.js","import":"/engine/render/shaders/modules/core/particles_point_fragment.js","sourceHash":"b2a6b1367b05de6a06f9b9f851c014e905d3529b093a6f8da47536f930d7aac7","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/core/particles_point_fragment.js","title":"render/shaders/modules/core/particles_point_fragment","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/core/particles_point_fragment.md","moduleTitle":"render/shaders/modules/core/particles_point_fragment","source":"engine/render/shaders/modules/core/particles_point_fragment.js","import":"/engine/render/shaders/modules/core/particles_point_fragment.js","sourceHash":"b2a6b1367b05de6a06f9b9f851c014e905d3529b093a6f8da47536f930d7aac7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/core/particles_point_fragment.js#0000:particlesPointFragmentWGSL","exportIndex":0,"name":"particlesPointFragmentWGSL","kind":"constant","signature":"particlesPointFragmentWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/core/particles_point_vertex.md","moduleTitle":"render/shaders/modules/core/particles_point_vertex","source":"engine/render/shaders/modules/core/particles_point_vertex.js","import":"/engine/render/shaders/modules/core/particles_point_vertex.js","sourceHash":"67254164a7bd60d5fc4c1722e7121f3a69cd9523343c08c4de0621cb298bd4a5","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/core/particles_point_vertex.js","title":"render/shaders/modules/core/particles_point_vertex","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/core/particles_point_vertex.md","moduleTitle":"render/shaders/modules/core/particles_point_vertex","source":"engine/render/shaders/modules/core/particles_point_vertex.js","import":"/engine/render/shaders/modules/core/particles_point_vertex.js","sourceHash":"67254164a7bd60d5fc4c1722e7121f3a69cd9523343c08c4de0621cb298bd4a5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/core/particles_point_vertex.js#0000:particlesPointVertexWGSL","exportIndex":0,"name":"particlesPointVertexWGSL","kind":"constant","signature":"particlesPointVertexWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/core/particles_sdf_billboard.md","moduleTitle":"render/shaders/modules/core/particles_sdf_billboard","source":"engine/render/shaders/modules/core/particles_sdf_billboard.js","import":"/engine/render/shaders/modules/core/particles_sdf_billboard.js","sourceHash":"93b92ed4eae17cd6fe1aff9d514df0a0950301cbc7e4ef55423da16e880c96e4","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/core/particles_sdf_billboard.js","title":"render/shaders/modules/core/particles_sdf_billboard","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/core/particles_sdf_billboard.md","moduleTitle":"render/shaders/modules/core/particles_sdf_billboard","source":"engine/render/shaders/modules/core/particles_sdf_billboard.js","import":"/engine/render/shaders/modules/core/particles_sdf_billboard.js","sourceHash":"93b92ed4eae17cd6fe1aff9d514df0a0950301cbc7e4ef55423da16e880c96e4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/core/particles_sdf_billboard.js#0000:particlesSdfBillboardShader","exportIndex":0,"name":"particlesSdfBillboardShader","kind":"constant","signature":"particlesSdfBillboardShader","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/core/particles_sdf_fragment.md","moduleTitle":"render/shaders/modules/core/particles_sdf_fragment","source":"engine/render/shaders/modules/core/particles_sdf_fragment.js","import":"/engine/render/shaders/modules/core/particles_sdf_fragment.js","sourceHash":"6cd9f0459c3758add9c5d6df469d84836264bef991e66f68609843ad8b0bcd62","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/core/particles_sdf_fragment.js","title":"render/shaders/modules/core/particles_sdf_fragment","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/core/particles_sdf_fragment.md","moduleTitle":"render/shaders/modules/core/particles_sdf_fragment","source":"engine/render/shaders/modules/core/particles_sdf_fragment.js","import":"/engine/render/shaders/modules/core/particles_sdf_fragment.js","sourceHash":"6cd9f0459c3758add9c5d6df469d84836264bef991e66f68609843ad8b0bcd62","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/core/particles_sdf_fragment.js#0000:particlesSdfFragmentShader","exportIndex":0,"name":"particlesSdfFragmentShader","kind":"constant","signature":"particlesSdfFragmentShader","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/core/particles_shared.md","moduleTitle":"render/shaders/modules/core/particles_shared","source":"engine/render/shaders/modules/core/particles_shared.js","import":"/engine/render/shaders/modules/core/particles_shared.js","sourceHash":"ad408734f9091d8f5718f65f1b54f6598ffbac09480b3b9913ddbc02666241db","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/core/particles_shared.js","title":"render/shaders/modules/core/particles_shared","summary":"============================================================================ PARTICLE SHADER SHARED DEFINITIONS ============================================================================ This file contains WGSL struct definitions and buffer bindings shared between the vertex and fragment shaders for particle rendering. Uses ShaderSchema.js for consistent buffer layouts. See BINDING_GROUPS.particles and PARTICLE_PARAMS_SCHEMA for schema definitions. GPU BUFFER LAYOUT (from ShaderSchema.js): Group 0: FrameUniforms (camera, time) Group 1: Particle buffers (positions, meta, params, velocities, uvs, texture) PACK FORMAT (from ParticleSchema.js): meta.w = mass * 1e8 + drag * 1e6 + size * 1e4 + renderMode * 1e3 + shape * 10 + behavior","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/core/particles_shared.md","moduleTitle":"render/shaders/modules/core/particles_shared","source":"engine/render/shaders/modules/core/particles_shared.js","import":"/engine/render/shaders/modules/core/particles_shared.js","sourceHash":"ad408734f9091d8f5718f65f1b54f6598ffbac09480b3b9913ddbc02666241db","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/core/particles_shared.js#0000:particleStructsWGSL","exportIndex":0,"name":"particleStructsWGSL","kind":"constant","signature":"particleStructsWGSL","summary":"============================================================================ PARTICLE SHADER SHARED DEFINITIONS ============================================================================ This file contains WGSL struct definitions and buffer bindings shared between the vertex and fragment shaders for particle rendering. Uses ShaderSchema.js for consistent buffer layouts. See BINDING_GROUPS.particles and PARTICLE_PARAMS_SCHEMA for schema definitions. GPU BUFFER LAYOUT (from ShaderSchema.js): Group 0: FrameUniforms (camera, time) Group 1: Particle buffers (positions, meta, params, velocities, uvs, texture) PACK FORMAT (from ParticleSchema.js): meta.w = mass * 1e8 + drag * 1e6 + size * 1e4 + renderMode * 1e3 + shape * 10 + behavior"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/color/blend.md","moduleTitle":"render/shaders/modules/lib/color/blend","source":"engine/render/shaders/modules/lib/color/blend.js","import":"/engine/render/shaders/modules/lib/color/blend.js","sourceHash":"43a6b3ea37443158db096435cb3d9d2ec9655a39d8b0c34a1ab51c0118b58e9d","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/lib/color/blend.js","title":"render/shaders/modules/lib/color/blend","summary":"Color Blending Functions Various blend modes for compositing colors. Photoshop-style blend modes and custom game-specific blending.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/color/blend.md","moduleTitle":"render/shaders/modules/lib/color/blend","source":"engine/render/shaders/modules/lib/color/blend.js","import":"/engine/render/shaders/modules/lib/color/blend.js","sourceHash":"43a6b3ea37443158db096435cb3d9d2ec9655a39d8b0c34a1ab51c0118b58e9d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/lib/color/blend.js#0000:colorBlendWGSL","exportIndex":0,"name":"colorBlendWGSL","kind":"constant","signature":"colorBlendWGSL","summary":"Color Blending Functions Various blend modes for compositing colors. Photoshop-style blend modes and custom game-specific blending."}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/color/index.md","moduleTitle":"render/shaders/modules/lib/color/index","source":"engine/render/shaders/modules/lib/color/index.js","import":"/engine/render/shaders/modules/lib/color/index.js","sourceHash":"9ea945c915b288c3969643b18f4b181f4325ab8397e7086d054db5d034ba3c6e","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/lib/color/index.js","title":"render/shaders/modules/lib/color/index","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/color/index.md","moduleTitle":"render/shaders/modules/lib/color/index","source":"engine/render/shaders/modules/lib/color/index.js","import":"/engine/render/shaders/modules/lib/color/index.js","sourceHash":"9ea945c915b288c3969643b18f4b181f4325ab8397e7086d054db5d034ba3c6e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/lib/color/index.js#0000:colorLibWGSL","exportIndex":0,"name":"colorLibWGSL","kind":"constant","signature":"colorLibWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/color/index.md","moduleTitle":"render/shaders/modules/lib/color/index","source":"engine/render/shaders/modules/lib/color/index.js","import":"/engine/render/shaders/modules/lib/color/index.js","sourceHash":"9ea945c915b288c3969643b18f4b181f4325ab8397e7086d054db5d034ba3c6e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/lib/color/index.js#0001:colorBlendWGSL","exportIndex":1,"name":"colorBlendWGSL","kind":"re-export","signature":"colorBlendWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/density/falloff.md","moduleTitle":"render/shaders/modules/lib/density/falloff","source":"engine/render/shaders/modules/lib/density/falloff.js","import":"/engine/render/shaders/modules/lib/density/falloff.js","sourceHash":"bcc3cff98fe784763a93bc19245b9b7e89c088ae60c4c8bb8220394bd6c60e8b","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/lib/density/falloff.js","title":"render/shaders/modules/lib/density/falloff","summary":"Density Falloff Functions Various falloff curves for volumetric density, particle opacity, etc. Controls how density/opacity decreases with distance.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/density/falloff.md","moduleTitle":"render/shaders/modules/lib/density/falloff","source":"engine/render/shaders/modules/lib/density/falloff.js","import":"/engine/render/shaders/modules/lib/density/falloff.js","sourceHash":"bcc3cff98fe784763a93bc19245b9b7e89c088ae60c4c8bb8220394bd6c60e8b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/lib/density/falloff.js#0000:densityFalloffWGSL","exportIndex":0,"name":"densityFalloffWGSL","kind":"constant","signature":"densityFalloffWGSL","summary":"Density Falloff Functions Various falloff curves for volumetric density, particle opacity, etc. Controls how density/opacity decreases with distance."}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/density/index.md","moduleTitle":"render/shaders/modules/lib/density/index","source":"engine/render/shaders/modules/lib/density/index.js","import":"/engine/render/shaders/modules/lib/density/index.js","sourceHash":"237ab7ac5f9767055f589e6c6da3c10d0cd90df21d424a7a40b44cfb95c29ba4","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/lib/density/index.js","title":"render/shaders/modules/lib/density/index","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/density/index.md","moduleTitle":"render/shaders/modules/lib/density/index","source":"engine/render/shaders/modules/lib/density/index.js","import":"/engine/render/shaders/modules/lib/density/index.js","sourceHash":"237ab7ac5f9767055f589e6c6da3c10d0cd90df21d424a7a40b44cfb95c29ba4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/lib/density/index.js#0000:densityLibWGSL","exportIndex":0,"name":"densityLibWGSL","kind":"constant","signature":"densityLibWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/density/index.md","moduleTitle":"render/shaders/modules/lib/density/index","source":"engine/render/shaders/modules/lib/density/index.js","import":"/engine/render/shaders/modules/lib/density/index.js","sourceHash":"237ab7ac5f9767055f589e6c6da3c10d0cd90df21d424a7a40b44cfb95c29ba4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/lib/density/index.js#0001:densityFalloffWGSL","exportIndex":1,"name":"densityFalloffWGSL","kind":"re-export","signature":"densityFalloffWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/depth/index.md","moduleTitle":"render/shaders/modules/lib/depth/index","source":"engine/render/shaders/modules/lib/depth/index.js","import":"/engine/render/shaders/modules/lib/depth/index.js","sourceHash":"151cb010aa691167bdcd855d9002de7836d33e7ea5075bd92ed3c54a2fee029a","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/lib/depth/index.js","title":"render/shaders/modules/lib/depth/index","summary":"","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/depth/index.md","moduleTitle":"render/shaders/modules/lib/depth/index","source":"engine/render/shaders/modules/lib/depth/index.js","import":"/engine/render/shaders/modules/lib/depth/index.js","sourceHash":"151cb010aa691167bdcd855d9002de7836d33e7ea5075bd92ed3c54a2fee029a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/lib/depth/index.js#0000:depthLibWGSL","exportIndex":0,"name":"depthLibWGSL","kind":"constant","signature":"depthLibWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/depth/index.md","moduleTitle":"render/shaders/modules/lib/depth/index","source":"engine/render/shaders/modules/lib/depth/index.js","import":"/engine/render/shaders/modules/lib/depth/index.js","sourceHash":"151cb010aa691167bdcd855d9002de7836d33e7ea5075bd92ed3c54a2fee029a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/lib/depth/index.js#0001:depthLinearizeWGSL","exportIndex":1,"name":"depthLinearizeWGSL","kind":"re-export","signature":"depthLinearizeWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/depth/index.md","moduleTitle":"render/shaders/modules/lib/depth/index","source":"engine/render/shaders/modules/lib/depth/index.js","import":"/engine/render/shaders/modules/lib/depth/index.js","sourceHash":"151cb010aa691167bdcd855d9002de7836d33e7ea5075bd92ed3c54a2fee029a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/lib/depth/index.js#0002:depthReconstructWGSL","exportIndex":2,"name":"depthReconstructWGSL","kind":"re-export","signature":"depthReconstructWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/depth/linearize.md","moduleTitle":"render/shaders/modules/lib/depth/linearize","source":"engine/render/shaders/modules/lib/depth/linearize.js","import":"/engine/render/shaders/modules/lib/depth/linearize.js","sourceHash":"5e30f18c770c4003f869b0aa7a0a271099542c4c915d6cd6a0009a9571a22c2a","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/lib/depth/linearize.js","title":"render/shaders/modules/lib/depth/linearize","summary":"Depth Buffer Utilities - Linearization Functions for linearizing depth values from perspective projection. WebGPU uses [0,1] depth range with perspective non-linearity.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/depth/linearize.md","moduleTitle":"render/shaders/modules/lib/depth/linearize","source":"engine/render/shaders/modules/lib/depth/linearize.js","import":"/engine/render/shaders/modules/lib/depth/linearize.js","sourceHash":"5e30f18c770c4003f869b0aa7a0a271099542c4c915d6cd6a0009a9571a22c2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/lib/depth/linearize.js#0000:depthLinearizeWGSL","exportIndex":0,"name":"depthLinearizeWGSL","kind":"constant","signature":"depthLinearizeWGSL","summary":"Depth Buffer Utilities - Linearization Functions for linearizing depth values from perspective projection. WebGPU uses [0,1] depth range with perspective non-linearity."}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/depth/reconstruct.md","moduleTitle":"render/shaders/modules/lib/depth/reconstruct","source":"engine/render/shaders/modules/lib/depth/reconstruct.js","import":"/engine/render/shaders/modules/lib/depth/reconstruct.js","sourceHash":"064064af63a73145df8b76fe8ab668a60580bcf5e4b3c26f3d1498cb144e3dec","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/lib/depth/reconstruct.js","title":"render/shaders/modules/lib/depth/reconstruct","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/depth/reconstruct.md","moduleTitle":"render/shaders/modules/lib/depth/reconstruct","source":"engine/render/shaders/modules/lib/depth/reconstruct.js","import":"/engine/render/shaders/modules/lib/depth/reconstruct.js","sourceHash":"064064af63a73145df8b76fe8ab668a60580bcf5e4b3c26f3d1498cb144e3dec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/lib/depth/reconstruct.js#0000:depthReconstructWGSL","exportIndex":0,"name":"depthReconstructWGSL","kind":"constant","signature":"depthReconstructWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/distortion/domain_warp.md","moduleTitle":"render/shaders/modules/lib/distortion/domain_warp","source":"engine/render/shaders/modules/lib/distortion/domain_warp.js","import":"/engine/render/shaders/modules/lib/distortion/domain_warp.js","sourceHash":"36c2520108fb94d946fe007f194cc147f49295cbf1b39de9679fa790ae38f7e7","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/lib/distortion/domain_warp.js","title":"render/shaders/modules/lib/distortion/domain_warp","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/distortion/domain_warp.md","moduleTitle":"render/shaders/modules/lib/distortion/domain_warp","source":"engine/render/shaders/modules/lib/distortion/domain_warp.js","import":"/engine/render/shaders/modules/lib/distortion/domain_warp.js","sourceHash":"36c2520108fb94d946fe007f194cc147f49295cbf1b39de9679fa790ae38f7e7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/lib/distortion/domain_warp.js#0000:domainWarpWGSL","exportIndex":0,"name":"domainWarpWGSL","kind":"constant","signature":"domainWarpWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/distortion/index.md","moduleTitle":"render/shaders/modules/lib/distortion/index","source":"engine/render/shaders/modules/lib/distortion/index.js","import":"/engine/render/shaders/modules/lib/distortion/index.js","sourceHash":"e23899c89e5f2f66e96a6fc8268c1ff14d377fa34f66cc8538b05a96929eb81f","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/lib/distortion/index.js","title":"render/shaders/modules/lib/distortion/index","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/distortion/index.md","moduleTitle":"render/shaders/modules/lib/distortion/index","source":"engine/render/shaders/modules/lib/distortion/index.js","import":"/engine/render/shaders/modules/lib/distortion/index.js","sourceHash":"e23899c89e5f2f66e96a6fc8268c1ff14d377fa34f66cc8538b05a96929eb81f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/lib/distortion/index.js#0000:distortionLibWGSL","exportIndex":0,"name":"distortionLibWGSL","kind":"constant","signature":"distortionLibWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/distortion/index.md","moduleTitle":"render/shaders/modules/lib/distortion/index","source":"engine/render/shaders/modules/lib/distortion/index.js","import":"/engine/render/shaders/modules/lib/distortion/index.js","sourceHash":"e23899c89e5f2f66e96a6fc8268c1ff14d377fa34f66cc8538b05a96929eb81f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/lib/distortion/index.js#0001:domainWarpWGSL","exportIndex":1,"name":"domainWarpWGSL","kind":"re-export","signature":"domainWarpWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/index.md","moduleTitle":"render/shaders/modules/lib/index","source":"engine/render/shaders/modules/lib/index.js","import":"/engine/render/shaders/modules/lib/index.js","sourceHash":"f7264e526d625ef3b8b9e6d7966ed5769c8955b5fc9047a271ce70dd777dbca1","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/lib/index.js","title":"render/shaders/modules/lib/index","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/index.md","moduleTitle":"render/shaders/modules/lib/index","source":"engine/render/shaders/modules/lib/index.js","import":"/engine/render/shaders/modules/lib/index.js","sourceHash":"f7264e526d625ef3b8b9e6d7966ed5769c8955b5fc9047a271ce70dd777dbca1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/lib/index.js#0000:fullShaderLibWGSL","exportIndex":0,"name":"fullShaderLibWGSL","kind":"constant","signature":"fullShaderLibWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/lighting/index.md","moduleTitle":"render/shaders/modules/lib/lighting/index","source":"engine/render/shaders/modules/lib/lighting/index.js","import":"/engine/render/shaders/modules/lib/lighting/index.js","sourceHash":"3f6400edac6e8e57fe59c2b7d9e13837ab94fcab672953470c159eb2d79c4864","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/lib/lighting/index.js","title":"render/shaders/modules/lib/lighting/index","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/lighting/index.md","moduleTitle":"render/shaders/modules/lib/lighting/index","source":"engine/render/shaders/modules/lib/lighting/index.js","import":"/engine/render/shaders/modules/lib/lighting/index.js","sourceHash":"3f6400edac6e8e57fe59c2b7d9e13837ab94fcab672953470c159eb2d79c4864","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/lib/lighting/index.js#0000:lightingLibWGSL","exportIndex":0,"name":"lightingLibWGSL","kind":"constant","signature":"lightingLibWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/lighting/index.md","moduleTitle":"render/shaders/modules/lib/lighting/index","source":"engine/render/shaders/modules/lib/lighting/index.js","import":"/engine/render/shaders/modules/lib/lighting/index.js","sourceHash":"3f6400edac6e8e57fe59c2b7d9e13837ab94fcab672953470c159eb2d79c4864","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/lib/lighting/index.js#0001:lightScatterWGSL","exportIndex":1,"name":"lightScatterWGSL","kind":"re-export","signature":"lightScatterWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/lighting/scatter.md","moduleTitle":"render/shaders/modules/lib/lighting/scatter","source":"engine/render/shaders/modules/lib/lighting/scatter.js","import":"/engine/render/shaders/modules/lib/lighting/scatter.js","sourceHash":"00870be42745dbfb3fafa10b912d9ed1ee7e33f3edd33435736f81f1a38c6c6d","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/lib/lighting/scatter.js","title":"render/shaders/modules/lib/lighting/scatter","summary":"Light Scattering Functions Physical and approximated scattering models for volumetric lighting. Includes phase functions and multiple scattering approximations.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/lighting/scatter.md","moduleTitle":"render/shaders/modules/lib/lighting/scatter","source":"engine/render/shaders/modules/lib/lighting/scatter.js","import":"/engine/render/shaders/modules/lib/lighting/scatter.js","sourceHash":"00870be42745dbfb3fafa10b912d9ed1ee7e33f3edd33435736f81f1a38c6c6d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/lib/lighting/scatter.js#0000:lightScatterWGSL","exportIndex":0,"name":"lightScatterWGSL","kind":"constant","signature":"lightScatterWGSL","summary":"Light Scattering Functions Physical and approximated scattering models for volumetric lighting. Includes phase functions and multiple scattering approximations."}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/math/index.md","moduleTitle":"render/shaders/modules/lib/math/index","source":"engine/render/shaders/modules/lib/math/index.js","import":"/engine/render/shaders/modules/lib/math/index.js","sourceHash":"065f9cda652d1bf325bd50c2615b826852d97424ae045fea8a4160d73b4b771c","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/lib/math/index.js","title":"render/shaders/modules/lib/math/index","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/math/index.md","moduleTitle":"render/shaders/modules/lib/math/index","source":"engine/render/shaders/modules/lib/math/index.js","import":"/engine/render/shaders/modules/lib/math/index.js","sourceHash":"065f9cda652d1bf325bd50c2615b826852d97424ae045fea8a4160d73b4b771c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/lib/math/index.js#0000:mathLibWGSL","exportIndex":0,"name":"mathLibWGSL","kind":"constant","signature":"mathLibWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/math/index.md","moduleTitle":"render/shaders/modules/lib/math/index","source":"engine/render/shaders/modules/lib/math/index.js","import":"/engine/render/shaders/modules/lib/math/index.js","sourceHash":"065f9cda652d1bf325bd50c2615b826852d97424ae045fea8a4160d73b4b771c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/lib/math/index.js#0001:interpolationWGSL","exportIndex":1,"name":"interpolationWGSL","kind":"re-export","signature":"interpolationWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/math/interpolation.md","moduleTitle":"render/shaders/modules/lib/math/interpolation","source":"engine/render/shaders/modules/lib/math/interpolation.js","import":"/engine/render/shaders/modules/lib/math/interpolation.js","sourceHash":"c3e5ea27b1a2c21e817b6dbd83401b365b4ecccd58d1519aa55b48d4f4bd6e3b","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/lib/math/interpolation.js","title":"render/shaders/modules/lib/math/interpolation","summary":"Interpolation Functions Various interpolation curves and easing functions.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/math/interpolation.md","moduleTitle":"render/shaders/modules/lib/math/interpolation","source":"engine/render/shaders/modules/lib/math/interpolation.js","import":"/engine/render/shaders/modules/lib/math/interpolation.js","sourceHash":"c3e5ea27b1a2c21e817b6dbd83401b365b4ecccd58d1519aa55b48d4f4bd6e3b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/lib/math/interpolation.js#0000:interpolationWGSL","exportIndex":0,"name":"interpolationWGSL","kind":"constant","signature":"interpolationWGSL","summary":"Interpolation Functions Various interpolation curves and easing functions."}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/noise/curl.md","moduleTitle":"render/shaders/modules/lib/noise/curl","source":"engine/render/shaders/modules/lib/noise/curl.js","import":"/engine/render/shaders/modules/lib/noise/curl.js","sourceHash":"55acbe63182e62a3d466ac7d06debc2221c07553fde0885f40bd88b6fe51c8ae","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/lib/noise/curl.js","title":"render/shaders/modules/lib/noise/curl","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/noise/curl.md","moduleTitle":"render/shaders/modules/lib/noise/curl","source":"engine/render/shaders/modules/lib/noise/curl.js","import":"/engine/render/shaders/modules/lib/noise/curl.js","sourceHash":"55acbe63182e62a3d466ac7d06debc2221c07553fde0885f40bd88b6fe51c8ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/lib/noise/curl.js#0000:curlNoiseWGSL","exportIndex":0,"name":"curlNoiseWGSL","kind":"constant","signature":"curlNoiseWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/noise/fbm.md","moduleTitle":"render/shaders/modules/lib/noise/fbm","source":"engine/render/shaders/modules/lib/noise/fbm.js","import":"/engine/render/shaders/modules/lib/noise/fbm.js","sourceHash":"7599404052e50196f2961fb47ac61de2c30a72b16401e308f711f9b6cf0826dc","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/lib/noise/fbm.js","title":"render/shaders/modules/lib/noise/fbm","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/noise/fbm.md","moduleTitle":"render/shaders/modules/lib/noise/fbm","source":"engine/render/shaders/modules/lib/noise/fbm.js","import":"/engine/render/shaders/modules/lib/noise/fbm.js","sourceHash":"7599404052e50196f2961fb47ac61de2c30a72b16401e308f711f9b6cf0826dc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/lib/noise/fbm.js#0000:fbmWGSL","exportIndex":0,"name":"fbmWGSL","kind":"constant","signature":"fbmWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/noise/hash.md","moduleTitle":"render/shaders/modules/lib/noise/hash","source":"engine/render/shaders/modules/lib/noise/hash.js","import":"/engine/render/shaders/modules/lib/noise/hash.js","sourceHash":"67fc13c561868b6510dfd9f4b7b6d6f7e0ddea043070c269f491cb5cf73cd41b","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/lib/noise/hash.js","title":"render/shaders/modules/lib/noise/hash","summary":"Hash Functions for Pseudo-Random Noise Generation Provides various hash functions for generating pseudo-random values from coordinate inputs. Used as basis for procedural noise.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/noise/hash.md","moduleTitle":"render/shaders/modules/lib/noise/hash","source":"engine/render/shaders/modules/lib/noise/hash.js","import":"/engine/render/shaders/modules/lib/noise/hash.js","sourceHash":"67fc13c561868b6510dfd9f4b7b6d6f7e0ddea043070c269f491cb5cf73cd41b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/lib/noise/hash.js#0000:hashWGSL","exportIndex":0,"name":"hashWGSL","kind":"constant","signature":"hashWGSL","summary":"Hash Functions for Pseudo-Random Noise Generation Provides various hash functions for generating pseudo-random values from coordinate inputs. Used as basis for procedural noise."}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/noise/index.md","moduleTitle":"render/shaders/modules/lib/noise/index","source":"engine/render/shaders/modules/lib/noise/index.js","import":"/engine/render/shaders/modules/lib/noise/index.js","sourceHash":"dbb4583c67e70c2b75f6803d75c73619d05ab21878970dca939eb3a5fc62e33f","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/lib/noise/index.js","title":"render/shaders/modules/lib/noise/index","summary":"","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/noise/index.md","moduleTitle":"render/shaders/modules/lib/noise/index","source":"engine/render/shaders/modules/lib/noise/index.js","import":"/engine/render/shaders/modules/lib/noise/index.js","sourceHash":"dbb4583c67e70c2b75f6803d75c73619d05ab21878970dca939eb3a5fc62e33f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/lib/noise/index.js#0000:noiseLibWGSL","exportIndex":0,"name":"noiseLibWGSL","kind":"constant","signature":"noiseLibWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/noise/index.md","moduleTitle":"render/shaders/modules/lib/noise/index","source":"engine/render/shaders/modules/lib/noise/index.js","import":"/engine/render/shaders/modules/lib/noise/index.js","sourceHash":"dbb4583c67e70c2b75f6803d75c73619d05ab21878970dca939eb3a5fc62e33f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/lib/noise/index.js#0001:curlNoiseWGSL","exportIndex":1,"name":"curlNoiseWGSL","kind":"re-export","signature":"curlNoiseWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/noise/index.md","moduleTitle":"render/shaders/modules/lib/noise/index","source":"engine/render/shaders/modules/lib/noise/index.js","import":"/engine/render/shaders/modules/lib/noise/index.js","sourceHash":"dbb4583c67e70c2b75f6803d75c73619d05ab21878970dca939eb3a5fc62e33f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/lib/noise/index.js#0002:fbmWGSL","exportIndex":2,"name":"fbmWGSL","kind":"re-export","signature":"fbmWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/noise/index.md","moduleTitle":"render/shaders/modules/lib/noise/index","source":"engine/render/shaders/modules/lib/noise/index.js","import":"/engine/render/shaders/modules/lib/noise/index.js","sourceHash":"dbb4583c67e70c2b75f6803d75c73619d05ab21878970dca939eb3a5fc62e33f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/lib/noise/index.js#0003:hashWGSL","exportIndex":3,"name":"hashWGSL","kind":"re-export","signature":"hashWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/noise/index.md","moduleTitle":"render/shaders/modules/lib/noise/index","source":"engine/render/shaders/modules/lib/noise/index.js","import":"/engine/render/shaders/modules/lib/noise/index.js","sourceHash":"dbb4583c67e70c2b75f6803d75c73619d05ab21878970dca939eb3a5fc62e33f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/lib/noise/index.js#0004:valueNoiseWGSL","exportIndex":4,"name":"valueNoiseWGSL","kind":"re-export","signature":"valueNoiseWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/noise/noise3d.md","moduleTitle":"render/shaders/modules/lib/noise/noise3d","source":"engine/render/shaders/modules/lib/noise/noise3d.js","import":"/engine/render/shaders/modules/lib/noise/noise3d.js","sourceHash":"c49338b29b5d1e6986bdecb06035dac255c8b0f2a8d54de106a256f4600d71e3","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/lib/noise/noise3d.js","title":"render/shaders/modules/lib/noise/noise3d","summary":"3D Noise Functions for Volumetric Effects Used for smoke turbulence, wispy distortion, and organic blending","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/noise/noise3d.md","moduleTitle":"render/shaders/modules/lib/noise/noise3d","source":"engine/render/shaders/modules/lib/noise/noise3d.js","import":"/engine/render/shaders/modules/lib/noise/noise3d.js","sourceHash":"c49338b29b5d1e6986bdecb06035dac255c8b0f2a8d54de106a256f4600d71e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/lib/noise/noise3d.js#0000:noise3dLibrary","exportIndex":0,"name":"noise3dLibrary","kind":"constant","signature":"noise3dLibrary","summary":"3D Noise Functions for Volumetric Effects Used for smoke turbulence, wispy distortion, and organic blending"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/noise/value.md","moduleTitle":"render/shaders/modules/lib/noise/value","source":"engine/render/shaders/modules/lib/noise/value.js","import":"/engine/render/shaders/modules/lib/noise/value.js","sourceHash":"607fe7ab3687ec0b3aaf22b5c8a05ee021c32d0132132638d259e9b196b9d79e","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/lib/noise/value.js","title":"render/shaders/modules/lib/noise/value","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/noise/value.md","moduleTitle":"render/shaders/modules/lib/noise/value","source":"engine/render/shaders/modules/lib/noise/value.js","import":"/engine/render/shaders/modules/lib/noise/value.js","sourceHash":"607fe7ab3687ec0b3aaf22b5c8a05ee021c32d0132132638d259e9b196b9d79e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/lib/noise/value.js#0000:valueNoiseWGSL","exportIndex":0,"name":"valueNoiseWGSL","kind":"constant","signature":"valueNoiseWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/sdf/shapes.md","moduleTitle":"render/shaders/modules/lib/sdf/shapes","source":"engine/render/shaders/modules/lib/sdf/shapes.js","import":"/engine/render/shaders/modules/lib/sdf/shapes.js","sourceHash":"ef5064305ed4666faa1a56938c5d2bcee35f7e6d0a79f9f59364951c498c9a60","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/lib/sdf/shapes.js","title":"render/shaders/modules/lib/sdf/shapes","summary":"SDF Shape Library Signed Distance Field functions for volumetric particle rendering. Based on Inigo Quilez's distance functions: https://iquilezles.org/articles/distfunctions/","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/lib/sdf/shapes.md","moduleTitle":"render/shaders/modules/lib/sdf/shapes","source":"engine/render/shaders/modules/lib/sdf/shapes.js","import":"/engine/render/shaders/modules/lib/sdf/shapes.js","sourceHash":"ef5064305ed4666faa1a56938c5d2bcee35f7e6d0a79f9f59364951c498c9a60","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/lib/sdf/shapes.js#0000:sdfShapesLibrary","exportIndex":0,"name":"sdfShapesLibrary","kind":"constant","signature":"sdfShapesLibrary","summary":"SDF Shape Library Signed Distance Field functions for volumetric particle rendering. Based on Inigo Quilez's distance functions: https://iquilezles.org/articles/distfunctions/"}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/passes/depth_visualizer.md","moduleTitle":"render/shaders/modules/passes/depth_visualizer","source":"engine/render/shaders/modules/passes/depth_visualizer.js","import":"/engine/render/shaders/modules/passes/depth_visualizer.js","sourceHash":"2d2aac899f6e0b7ef1a25d681684c3bd7bff63e0f588822cc2fc549574c87670","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/passes/depth_visualizer.js","title":"render/shaders/modules/passes/depth_visualizer","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/passes/depth_visualizer.md","moduleTitle":"render/shaders/modules/passes/depth_visualizer","source":"engine/render/shaders/modules/passes/depth_visualizer.js","import":"/engine/render/shaders/modules/passes/depth_visualizer.js","sourceHash":"2d2aac899f6e0b7ef1a25d681684c3bd7bff63e0f588822cc2fc549574c87670","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/passes/depth_visualizer.js#0000:depthVisualizerShader","exportIndex":0,"name":"depthVisualizerShader","kind":"constant","signature":"depthVisualizerShader","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/passes/particle_age.md","moduleTitle":"render/shaders/modules/passes/particle_age","source":"engine/render/shaders/modules/passes/particle_age.js","import":"/engine/render/shaders/modules/passes/particle_age.js","sourceHash":"ef0d2371b8c88e094292ed68668e542e8909e487ff521e0e1b92bf223a3e9a24","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/passes/particle_age.js","title":"render/shaders/modules/passes/particle_age","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/passes/particle_age.md","moduleTitle":"render/shaders/modules/passes/particle_age","source":"engine/render/shaders/modules/passes/particle_age.js","import":"/engine/render/shaders/modules/passes/particle_age.js","sourceHash":"ef0d2371b8c88e094292ed68668e542e8909e487ff521e0e1b92bf223a3e9a24","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/passes/particle_age.js#0000:particleAgePassShader","exportIndex":0,"name":"particleAgePassShader","kind":"constant","signature":"particleAgePassShader","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/passes/particle_albedo.md","moduleTitle":"render/shaders/modules/passes/particle_albedo","source":"engine/render/shaders/modules/passes/particle_albedo.js","import":"/engine/render/shaders/modules/passes/particle_albedo.js","sourceHash":"5a13b1bf6490da839a1fcf0261a39bc2e5181e4fd99c546fe5d94d525af95811","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/passes/particle_albedo.js","title":"render/shaders/modules/passes/particle_albedo","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/passes/particle_albedo.md","moduleTitle":"render/shaders/modules/passes/particle_albedo","source":"engine/render/shaders/modules/passes/particle_albedo.js","import":"/engine/render/shaders/modules/passes/particle_albedo.js","sourceHash":"5a13b1bf6490da839a1fcf0261a39bc2e5181e4fd99c546fe5d94d525af95811","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/passes/particle_albedo.js#0000:particleAlbedoPassShader","exportIndex":0,"name":"particleAlbedoPassShader","kind":"constant","signature":"particleAlbedoPassShader","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/passes/particle_depth.md","moduleTitle":"render/shaders/modules/passes/particle_depth","source":"engine/render/shaders/modules/passes/particle_depth.js","import":"/engine/render/shaders/modules/passes/particle_depth.js","sourceHash":"76e0905ace7f216b500841f70b4e4ee40443b2f559c8b2872f0fb29b9478cc65","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/passes/particle_depth.js","title":"render/shaders/modules/passes/particle_depth","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/passes/particle_depth.md","moduleTitle":"render/shaders/modules/passes/particle_depth","source":"engine/render/shaders/modules/passes/particle_depth.js","import":"/engine/render/shaders/modules/passes/particle_depth.js","sourceHash":"76e0905ace7f216b500841f70b4e4ee40443b2f559c8b2872f0fb29b9478cc65","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/passes/particle_depth.js#0000:particleDepthPassShader","exportIndex":0,"name":"particleDepthPassShader","kind":"constant","signature":"particleDepthPassShader","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/passes/particle_emissive.md","moduleTitle":"render/shaders/modules/passes/particle_emissive","source":"engine/render/shaders/modules/passes/particle_emissive.js","import":"/engine/render/shaders/modules/passes/particle_emissive.js","sourceHash":"0daedfcf7103d22b041209b253d009dc9e4b30702ddafcddb728ca511b08d025","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/passes/particle_emissive.js","title":"render/shaders/modules/passes/particle_emissive","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/passes/particle_emissive.md","moduleTitle":"render/shaders/modules/passes/particle_emissive","source":"engine/render/shaders/modules/passes/particle_emissive.js","import":"/engine/render/shaders/modules/passes/particle_emissive.js","sourceHash":"0daedfcf7103d22b041209b253d009dc9e4b30702ddafcddb728ca511b08d025","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/passes/particle_emissive.js#0000:particleEmissivePassShader","exportIndex":0,"name":"particleEmissivePassShader","kind":"constant","signature":"particleEmissivePassShader","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/passes/particle_lighting.md","moduleTitle":"render/shaders/modules/passes/particle_lighting","source":"engine/render/shaders/modules/passes/particle_lighting.js","import":"/engine/render/shaders/modules/passes/particle_lighting.js","sourceHash":"6ec81c6237d6c345f960013c5adf1e0e6ecb96c0fd83adafa0cfd8586cf34062","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/passes/particle_lighting.js","title":"render/shaders/modules/passes/particle_lighting","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/passes/particle_lighting.md","moduleTitle":"render/shaders/modules/passes/particle_lighting","source":"engine/render/shaders/modules/passes/particle_lighting.js","import":"/engine/render/shaders/modules/passes/particle_lighting.js","sourceHash":"6ec81c6237d6c345f960013c5adf1e0e6ecb96c0fd83adafa0cfd8586cf34062","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/passes/particle_lighting.js#0000:particleLightingPassShader","exportIndex":0,"name":"particleLightingPassShader","kind":"constant","signature":"particleLightingPassShader","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/passes/particle_normals.md","moduleTitle":"render/shaders/modules/passes/particle_normals","source":"engine/render/shaders/modules/passes/particle_normals.js","import":"/engine/render/shaders/modules/passes/particle_normals.js","sourceHash":"d782965eada8cd228dfeec79ac58e00fdc330ab6b8f7d53faf4933ce4e68fbba","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/passes/particle_normals.js","title":"render/shaders/modules/passes/particle_normals","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/passes/particle_normals.md","moduleTitle":"render/shaders/modules/passes/particle_normals","source":"engine/render/shaders/modules/passes/particle_normals.js","import":"/engine/render/shaders/modules/passes/particle_normals.js","sourceHash":"d782965eada8cd228dfeec79ac58e00fdc330ab6b8f7d53faf4933ce4e68fbba","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/passes/particle_normals.js#0000:particleNormalsPassShader","exportIndex":0,"name":"particleNormalsPassShader","kind":"constant","signature":"particleNormalsPassShader","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/passes/particle_size.md","moduleTitle":"render/shaders/modules/passes/particle_size","source":"engine/render/shaders/modules/passes/particle_size.js","import":"/engine/render/shaders/modules/passes/particle_size.js","sourceHash":"ee20ca9a432789b924a5541811af61e14df4b8b64e5c4f9173adf5812add1124","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/passes/particle_size.js","title":"render/shaders/modules/passes/particle_size","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/passes/particle_size.md","moduleTitle":"render/shaders/modules/passes/particle_size","source":"engine/render/shaders/modules/passes/particle_size.js","import":"/engine/render/shaders/modules/passes/particle_size.js","sourceHash":"ee20ca9a432789b924a5541811af61e14df4b8b64e5c4f9173adf5812add1124","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/passes/particle_size.js#0000:particleSizePassShader","exportIndex":0,"name":"particleSizePassShader","kind":"constant","signature":"particleSizePassShader","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/passes/particle_thermal.md","moduleTitle":"render/shaders/modules/passes/particle_thermal","source":"engine/render/shaders/modules/passes/particle_thermal.js","import":"/engine/render/shaders/modules/passes/particle_thermal.js","sourceHash":"41bc75788b924a3cde10eb30eb031b69cb321966eaac161a3eae7fd428351661","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/passes/particle_thermal.js","title":"render/shaders/modules/passes/particle_thermal","summary":"Particle Thermal/Blackbody Debug Pass Visualizes particle temperature as blackbody radiation color. Cold (blue) → Room temp (invisible) → Hot (red/orange/white). Requires uThermalData buffer (binding 4) for per-particle temperature.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/passes/particle_thermal.md","moduleTitle":"render/shaders/modules/passes/particle_thermal","source":"engine/render/shaders/modules/passes/particle_thermal.js","import":"/engine/render/shaders/modules/passes/particle_thermal.js","sourceHash":"41bc75788b924a3cde10eb30eb031b69cb321966eaac161a3eae7fd428351661","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/passes/particle_thermal.js#0000:particleThermalPassShader","exportIndex":0,"name":"particleThermalPassShader","kind":"constant","signature":"particleThermalPassShader","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/passes/particle_velocity.md","moduleTitle":"render/shaders/modules/passes/particle_velocity","source":"engine/render/shaders/modules/passes/particle_velocity.js","import":"/engine/render/shaders/modules/passes/particle_velocity.js","sourceHash":"4270ac6ca531de77d5aff3b5abcf96b71749e20928c73210a16755b92699f0e7","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/passes/particle_velocity.js","title":"render/shaders/modules/passes/particle_velocity","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/passes/particle_velocity.md","moduleTitle":"render/shaders/modules/passes/particle_velocity","source":"engine/render/shaders/modules/passes/particle_velocity.js","import":"/engine/render/shaders/modules/passes/particle_velocity.js","sourceHash":"4270ac6ca531de77d5aff3b5abcf96b71749e20928c73210a16755b92699f0e7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/passes/particle_velocity.js#0000:particleVelocityPassShader","exportIndex":0,"name":"particleVelocityPassShader","kind":"constant","signature":"particleVelocityPassShader","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/passes/scene_debug_visualizer.md","moduleTitle":"render/shaders/modules/passes/scene_debug_visualizer","source":"engine/render/shaders/modules/passes/scene_debug_visualizer.js","import":"/engine/render/shaders/modules/passes/scene_debug_visualizer.js","sourceHash":"ba395235e04aabc79e2f3988cd1778d3733da38360e57903bc3fc3c7007af7c4","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/passes/scene_debug_visualizer.js","title":"render/shaders/modules/passes/scene_debug_visualizer","summary":"Scene Debug Visualizer Shader Fullscreen post-process that reads the ACTUAL scene depth buffer (texture_depth_2d) containing both entity meshes and particles, and visualizes: Mode 0: Depth — linearized grayscale (near=white, far=black, industry standard) Mode 1: Normals — world-space normals reconstructed from depth (RGB = XYZ) Mode 2: Albedo — passthrough of scene color (placeholder) Mode 3: Lighting — scene luminance only Reads from texture_depth_2d (depth24plus) — NOT texture_2d<f32>.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/passes/scene_debug_visualizer.md","moduleTitle":"render/shaders/modules/passes/scene_debug_visualizer","source":"engine/render/shaders/modules/passes/scene_debug_visualizer.js","import":"/engine/render/shaders/modules/passes/scene_debug_visualizer.js","sourceHash":"ba395235e04aabc79e2f3988cd1778d3733da38360e57903bc3fc3c7007af7c4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/passes/scene_debug_visualizer.js#0000:sceneDebugVisualizerShader","exportIndex":0,"name":"sceneDebugVisualizerShader","kind":"constant","signature":"sceneDebugVisualizerShader","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/postfx/bloom.md","moduleTitle":"render/shaders/modules/postfx/bloom","source":"engine/render/shaders/modules/postfx/bloom.js","import":"/engine/render/shaders/modules/postfx/bloom.js","sourceHash":"5ddcf4c83ccf67f63e86e887082b5e115c328a74d1f617ae1a2c6d8fe17e82f2","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/postfx/bloom.js","title":"render/shaders/modules/postfx/bloom","summary":"","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/postfx/bloom.md","moduleTitle":"render/shaders/modules/postfx/bloom","source":"engine/render/shaders/modules/postfx/bloom.js","import":"/engine/render/shaders/modules/postfx/bloom.js","sourceHash":"5ddcf4c83ccf67f63e86e887082b5e115c328a74d1f617ae1a2c6d8fe17e82f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/postfx/bloom.js#0000:bloomThresholdWGSL","exportIndex":0,"name":"bloomThresholdWGSL","kind":"constant","signature":"bloomThresholdWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/postfx/bloom.md","moduleTitle":"render/shaders/modules/postfx/bloom","source":"engine/render/shaders/modules/postfx/bloom.js","import":"/engine/render/shaders/modules/postfx/bloom.js","sourceHash":"5ddcf4c83ccf67f63e86e887082b5e115c328a74d1f617ae1a2c6d8fe17e82f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/postfx/bloom.js#0001:bloomBlurWGSL","exportIndex":1,"name":"bloomBlurWGSL","kind":"constant","signature":"bloomBlurWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/postfx/bloom.md","moduleTitle":"render/shaders/modules/postfx/bloom","source":"engine/render/shaders/modules/postfx/bloom.js","import":"/engine/render/shaders/modules/postfx/bloom.js","sourceHash":"5ddcf4c83ccf67f63e86e887082b5e115c328a74d1f617ae1a2c6d8fe17e82f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/postfx/bloom.js#0002:bloomCompositeWGSL","exportIndex":2,"name":"bloomCompositeWGSL","kind":"constant","signature":"bloomCompositeWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/postfx/bloom.md","moduleTitle":"render/shaders/modules/postfx/bloom","source":"engine/render/shaders/modules/postfx/bloom.js","import":"/engine/render/shaders/modules/postfx/bloom.js","sourceHash":"5ddcf4c83ccf67f63e86e887082b5e115c328a74d1f617ae1a2c6d8fe17e82f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/postfx/bloom.js#0003:bloomSinglePassWGSL","exportIndex":3,"name":"bloomSinglePassWGSL","kind":"constant","signature":"bloomSinglePassWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/postfx/fluid_water_blur.md","moduleTitle":"render/shaders/modules/postfx/fluid_water_blur","source":"engine/render/shaders/modules/postfx/fluid_water_blur.js","import":"/engine/render/shaders/modules/postfx/fluid_water_blur.js","sourceHash":"8584e4968798b3e2b10b19cff8371c581ba5d987a1b3523cba36f425d1bedafe","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/postfx/fluid_water_blur.js","title":"render/shaders/modules/postfx/fluid_water_blur","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/postfx/fluid_water_blur.md","moduleTitle":"render/shaders/modules/postfx/fluid_water_blur","source":"engine/render/shaders/modules/postfx/fluid_water_blur.js","import":"/engine/render/shaders/modules/postfx/fluid_water_blur.js","sourceHash":"8584e4968798b3e2b10b19cff8371c581ba5d987a1b3523cba36f425d1bedafe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/postfx/fluid_water_blur.js#0000:fluidWaterBlurWGSL","exportIndex":0,"name":"fluidWaterBlurWGSL","kind":"constant","signature":"fluidWaterBlurWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/postfx/fluid_water_composite.md","moduleTitle":"render/shaders/modules/postfx/fluid_water_composite","source":"engine/render/shaders/modules/postfx/fluid_water_composite.js","import":"/engine/render/shaders/modules/postfx/fluid_water_composite.js","sourceHash":"dc53068aa9337a19060f411ea7917c1d08f6a6038ee71035da4e8f2e0eaaaf95","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/postfx/fluid_water_composite.js","title":"render/shaders/modules/postfx/fluid_water_composite","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/postfx/fluid_water_composite.md","moduleTitle":"render/shaders/modules/postfx/fluid_water_composite","source":"engine/render/shaders/modules/postfx/fluid_water_composite.js","import":"/engine/render/shaders/modules/postfx/fluid_water_composite.js","sourceHash":"dc53068aa9337a19060f411ea7917c1d08f6a6038ee71035da4e8f2e0eaaaf95","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/postfx/fluid_water_composite.js#0000:fluidWaterCompositeWGSL","exportIndex":0,"name":"fluidWaterCompositeWGSL","kind":"constant","signature":"fluidWaterCompositeWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/postfx/fluid_water_depth.md","moduleTitle":"render/shaders/modules/postfx/fluid_water_depth","source":"engine/render/shaders/modules/postfx/fluid_water_depth.js","import":"/engine/render/shaders/modules/postfx/fluid_water_depth.js","sourceHash":"798f14c19358a7379029f595b3d43407742de51c9bee104bf44eecdf53524371","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/postfx/fluid_water_depth.js","title":"render/shaders/modules/postfx/fluid_water_depth","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/postfx/fluid_water_depth.md","moduleTitle":"render/shaders/modules/postfx/fluid_water_depth","source":"engine/render/shaders/modules/postfx/fluid_water_depth.js","import":"/engine/render/shaders/modules/postfx/fluid_water_depth.js","sourceHash":"798f14c19358a7379029f595b3d43407742de51c9bee104bf44eecdf53524371","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/postfx/fluid_water_depth.js#0000:fluidWaterDepthWGSL","exportIndex":0,"name":"fluidWaterDepthWGSL","kind":"constant","signature":"fluidWaterDepthWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/postfx/fluid_water_thickness.md","moduleTitle":"render/shaders/modules/postfx/fluid_water_thickness","source":"engine/render/shaders/modules/postfx/fluid_water_thickness.js","import":"/engine/render/shaders/modules/postfx/fluid_water_thickness.js","sourceHash":"4c40d7e543d1977c2a9fdece73cd505798e4a0c700271ee98bc305f642cd0c4b","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/postfx/fluid_water_thickness.js","title":"render/shaders/modules/postfx/fluid_water_thickness","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/postfx/fluid_water_thickness.md","moduleTitle":"render/shaders/modules/postfx/fluid_water_thickness","source":"engine/render/shaders/modules/postfx/fluid_water_thickness.js","import":"/engine/render/shaders/modules/postfx/fluid_water_thickness.js","sourceHash":"4c40d7e543d1977c2a9fdece73cd505798e4a0c700271ee98bc305f642cd0c4b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/postfx/fluid_water_thickness.js#0000:fluidWaterThicknessWGSL","exportIndex":0,"name":"fluidWaterThicknessWGSL","kind":"constant","signature":"fluidWaterThicknessWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/postfx/volume_isosurface.md","moduleTitle":"render/shaders/modules/postfx/volume_isosurface","source":"engine/render/shaders/modules/postfx/volume_isosurface.js","import":"/engine/render/shaders/modules/postfx/volume_isosurface.js","sourceHash":"7438677421898ea8b9ed0e5200e46b06f057f8f1a9ec7ab44cf3d8ff6d66951e","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/postfx/volume_isosurface.js","title":"render/shaders/modules/postfx/volume_isosurface","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/postfx/volume_isosurface.md","moduleTitle":"render/shaders/modules/postfx/volume_isosurface","source":"engine/render/shaders/modules/postfx/volume_isosurface.js","import":"/engine/render/shaders/modules/postfx/volume_isosurface.js","sourceHash":"7438677421898ea8b9ed0e5200e46b06f057f8f1a9ec7ab44cf3d8ff6d66951e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/postfx/volume_isosurface.js#0000:volumeIsoSurfaceWGSL","exportIndex":0,"name":"volumeIsoSurfaceWGSL","kind":"constant","signature":"volumeIsoSurfaceWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/postfx/volume_smoke.md","moduleTitle":"render/shaders/modules/postfx/volume_smoke","source":"engine/render/shaders/modules/postfx/volume_smoke.js","import":"/engine/render/shaders/modules/postfx/volume_smoke.js","sourceHash":"dda52e4e7da6510dddcd7e3e0cc0e63e15c7774738a786f42f8957c24d48f6c3","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/postfx/volume_smoke.js","title":"render/shaders/modules/postfx/volume_smoke","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/postfx/volume_smoke.md","moduleTitle":"render/shaders/modules/postfx/volume_smoke","source":"engine/render/shaders/modules/postfx/volume_smoke.js","import":"/engine/render/shaders/modules/postfx/volume_smoke.js","sourceHash":"dda52e4e7da6510dddcd7e3e0cc0e63e15c7774738a786f42f8957c24d48f6c3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/postfx/volume_smoke.js#0000:volumeSmokeWGSL","exportIndex":0,"name":"volumeSmokeWGSL","kind":"constant","signature":"volumeSmokeWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/proxy/ray_portal.md","moduleTitle":"render/shaders/modules/proxy/ray_portal","source":"engine/render/shaders/modules/proxy/ray_portal.js","import":"/engine/render/shaders/modules/proxy/ray_portal.js","sourceHash":"f4b287454e6f487fc95167142ce28fd84a46ed415fb586621558bba10981564f","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/proxy/ray_portal.js","title":"render/shaders/modules/proxy/ray_portal","summary":"Ray Portal WGSL Shader Module Provides WGSL functions for all proxy geometry quality tiers: ULTRA  — TLAS/BLAS two-level BVH traversal with ray redirect HIGH   — SDF cone marching proxy MED    — True impostor (billboarded SDF/height-field) LOW    — Octahedral impostor atlas sampling All functions are pure WGSL and intended to be embedded via template literals into compute shader source strings.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/proxy/ray_portal.md","moduleTitle":"render/shaders/modules/proxy/ray_portal","source":"engine/render/shaders/modules/proxy/ray_portal.js","import":"/engine/render/shaders/modules/proxy/ray_portal.js","sourceHash":"f4b287454e6f487fc95167142ce28fd84a46ed415fb586621558bba10981564f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/proxy/ray_portal.js#0000:RAY_PORTAL_WGSL","exportIndex":0,"name":"RAY_PORTAL_WGSL","kind":"constant","signature":"RAY_PORTAL_WGSL","summary":"Ray Portal WGSL Shader Module Provides WGSL functions for all proxy geometry quality tiers: ULTRA  — TLAS/BLAS two-level BVH traversal with ray redirect HIGH   — SDF cone marching proxy MED    — True impostor (billboarded SDF/height-field) LOW    — Octahedral impostor atlas sampling All functions are pure WGSL and intended to be embedded via template literals into compute shader source strings."}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/proxy/tlas_refit.md","moduleTitle":"render/shaders/modules/proxy/tlas_refit","source":"engine/render/shaders/modules/proxy/tlas_refit.js","import":"/engine/render/shaders/modules/proxy/tlas_refit.js","sourceHash":"b5806d13abe9b72420f90530e1417217b94976a2ef72eab3e071b02d0ccab971","subsystem":"engine","recordType":"api-module","id":"module:engine/render/shaders/modules/proxy/tlas_refit.js","title":"render/shaders/modules/proxy/tlas_refit","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/shaders/modules/proxy/tlas_refit.md","moduleTitle":"render/shaders/modules/proxy/tlas_refit","source":"engine/render/shaders/modules/proxy/tlas_refit.js","import":"/engine/render/shaders/modules/proxy/tlas_refit.js","sourceHash":"b5806d13abe9b72420f90530e1417217b94976a2ef72eab3e071b02d0ccab971","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/shaders/modules/proxy/tlas_refit.js#0000:tlasRefitWGSL","exportIndex":0,"name":"tlasRefitWGSL","kind":"constant","signature":"tlasRefitWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/CoherentWaveOpticsPass.md","moduleTitle":"render/spectral/CoherentWaveOpticsPass","source":"engine/render/spectral/CoherentWaveOpticsPass.js","import":"/engine/render/spectral/CoherentWaveOpticsPass.js","sourceHash":"cb9b2b12022e91407b639874e6653d26172d2e0843ac939a8aa8a948dc42b6d1","subsystem":"engine","recordType":"api-module","id":"module:engine/render/spectral/CoherentWaveOpticsPass.js","title":"render/spectral/CoherentWaveOpticsPass","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/CoherentWaveOpticsPass.md","moduleTitle":"render/spectral/CoherentWaveOpticsPass","source":"engine/render/spectral/CoherentWaveOpticsPass.js","import":"/engine/render/spectral/CoherentWaveOpticsPass.js","sourceHash":"cb9b2b12022e91407b639874e6653d26172d2e0843ac939a8aa8a948dc42b6d1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/spectral/CoherentWaveOpticsPass.js#0000:CoherentWaveOpticsPass","exportIndex":0,"name":"CoherentWaveOpticsPass","kind":"class","signature":"class CoherentWaveOpticsPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/CoherentWaveOpticsPass.md","moduleTitle":"render/spectral/CoherentWaveOpticsPass","source":"engine/render/spectral/CoherentWaveOpticsPass.js","import":"/engine/render/spectral/CoherentWaveOpticsPass.js","sourceHash":"cb9b2b12022e91407b639874e6653d26172d2e0843ac939a8aa8a948dc42b6d1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/spectral/CoherentWaveOpticsPass.js#0001:createCoherentWaveOpticsPass","exportIndex":1,"name":"createCoherentWaveOpticsPass","kind":"function","signature":"createCoherentWaveOpticsPass(device, options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/SpectralPhotonMapper.md","moduleTitle":"render/spectral/SpectralPhotonMapper","source":"engine/render/spectral/SpectralPhotonMapper.js","import":"/engine/render/spectral/SpectralPhotonMapper.js","sourceHash":"8d6bbbd1b7184158cf6d15b360095fbde7b5454004c7925c0ae6a0cfbea6bae2","subsystem":"engine","recordType":"api-module","id":"module:engine/render/spectral/SpectralPhotonMapper.js","title":"render/spectral/SpectralPhotonMapper","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/SpectralPhotonMapper.md","moduleTitle":"render/spectral/SpectralPhotonMapper","source":"engine/render/spectral/SpectralPhotonMapper.js","import":"/engine/render/spectral/SpectralPhotonMapper.js","sourceHash":"8d6bbbd1b7184158cf6d15b360095fbde7b5454004c7925c0ae6a0cfbea6bae2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/spectral/SpectralPhotonMapper.js#0000:SpectralPhotonMapper","exportIndex":0,"name":"SpectralPhotonMapper","kind":"class","signature":"class SpectralPhotonMapper","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/SpectralPhotonMapper.md","moduleTitle":"render/spectral/SpectralPhotonMapper","source":"engine/render/spectral/SpectralPhotonMapper.js","import":"/engine/render/spectral/SpectralPhotonMapper.js","sourceHash":"8d6bbbd1b7184158cf6d15b360095fbde7b5454004c7925c0ae6a0cfbea6bae2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/spectral/SpectralPhotonMapper.js#0001:createSpectralPhotonMapper","exportIndex":1,"name":"createSpectralPhotonMapper","kind":"function","signature":"createSpectralPhotonMapper(options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/SpectralPhotonMappingPass.md","moduleTitle":"render/spectral/SpectralPhotonMappingPass","source":"engine/render/spectral/SpectralPhotonMappingPass.js","import":"/engine/render/spectral/SpectralPhotonMappingPass.js","sourceHash":"3cf7a2beb5286daab88fe872e106091519af9ee63774496291a62f45cb59fbba","subsystem":"engine","recordType":"api-module","id":"module:engine/render/spectral/SpectralPhotonMappingPass.js","title":"render/spectral/SpectralPhotonMappingPass","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/SpectralPhotonMappingPass.md","moduleTitle":"render/spectral/SpectralPhotonMappingPass","source":"engine/render/spectral/SpectralPhotonMappingPass.js","import":"/engine/render/spectral/SpectralPhotonMappingPass.js","sourceHash":"3cf7a2beb5286daab88fe872e106091519af9ee63774496291a62f45cb59fbba","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/spectral/SpectralPhotonMappingPass.js#0000:SpectralPhotonMappingPass","exportIndex":0,"name":"SpectralPhotonMappingPass","kind":"class","signature":"class SpectralPhotonMappingPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/SpectralPhotonMappingPass.md","moduleTitle":"render/spectral/SpectralPhotonMappingPass","source":"engine/render/spectral/SpectralPhotonMappingPass.js","import":"/engine/render/spectral/SpectralPhotonMappingPass.js","sourceHash":"3cf7a2beb5286daab88fe872e106091519af9ee63774496291a62f45cb59fbba","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/spectral/SpectralPhotonMappingPass.js#0001:createSpectralPhotonMappingPass","exportIndex":1,"name":"createSpectralPhotonMappingPass","kind":"function","signature":"createSpectralPhotonMappingPass(device, options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/SpectralPhotonStore.md","moduleTitle":"render/spectral/SpectralPhotonStore","source":"engine/render/spectral/SpectralPhotonStore.js","import":"/engine/render/spectral/SpectralPhotonStore.js","sourceHash":"f88f944c8af587697320703a7be5cb0da8d3a4404d878d51ef1498e19baf3cf0","subsystem":"engine","recordType":"api-module","id":"module:engine/render/spectral/SpectralPhotonStore.js","title":"render/spectral/SpectralPhotonStore","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/SpectralPhotonStore.md","moduleTitle":"render/spectral/SpectralPhotonStore","source":"engine/render/spectral/SpectralPhotonStore.js","import":"/engine/render/spectral/SpectralPhotonStore.js","sourceHash":"f88f944c8af587697320703a7be5cb0da8d3a4404d878d51ef1498e19baf3cf0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/spectral/SpectralPhotonStore.js#0000:SpectralPhotonStore","exportIndex":0,"name":"SpectralPhotonStore","kind":"class","signature":"class SpectralPhotonStore","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/SpectralScattering.md","moduleTitle":"render/spectral/SpectralScattering","source":"engine/render/spectral/SpectralScattering.js","import":"/engine/render/spectral/SpectralScattering.js","sourceHash":"42dc1d10f286f9dea288404ec02a68898412034f6916551a32f42ea9fb2848e7","subsystem":"engine","recordType":"api-module","id":"module:engine/render/spectral/SpectralScattering.js","title":"render/spectral/SpectralScattering","summary":"","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/SpectralScattering.md","moduleTitle":"render/spectral/SpectralScattering","source":"engine/render/spectral/SpectralScattering.js","import":"/engine/render/spectral/SpectralScattering.js","sourceHash":"42dc1d10f286f9dea288404ec02a68898412034f6916551a32f42ea9fb2848e7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/spectral/SpectralScattering.js#0000:sellmeierIor","exportIndex":0,"name":"sellmeierIor","kind":"function","signature":"sellmeierIor(lambdaNm, coefficients = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/SpectralScattering.md","moduleTitle":"render/spectral/SpectralScattering","source":"engine/render/spectral/SpectralScattering.js","import":"/engine/render/spectral/SpectralScattering.js","sourceHash":"42dc1d10f286f9dea288404ec02a68898412034f6916551a32f42ea9fb2848e7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/spectral/SpectralScattering.js#0001:fresnelDielectric","exportIndex":1,"name":"fresnelDielectric","kind":"function","signature":"fresnelDielectric(cosThetaI, etaI, etaT)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/SpectralScattering.md","moduleTitle":"render/spectral/SpectralScattering","source":"engine/render/spectral/SpectralScattering.js","import":"/engine/render/spectral/SpectralScattering.js","sourceHash":"42dc1d10f286f9dea288404ec02a68898412034f6916551a32f42ea9fb2848e7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/spectral/SpectralScattering.js#0002:beerLambert","exportIndex":2,"name":"beerLambert","kind":"function","signature":"beerLambert(sigmaT, distance)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/SpectralScattering.md","moduleTitle":"render/spectral/SpectralScattering","source":"engine/render/spectral/SpectralScattering.js","import":"/engine/render/spectral/SpectralScattering.js","sourceHash":"42dc1d10f286f9dea288404ec02a68898412034f6916551a32f42ea9fb2848e7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/spectral/SpectralScattering.js#0003:henyeyGreenstein","exportIndex":3,"name":"henyeyGreenstein","kind":"function","signature":"henyeyGreenstein(cosTheta, g = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/SpectralScattering.md","moduleTitle":"render/spectral/SpectralScattering","source":"engine/render/spectral/SpectralScattering.js","import":"/engine/render/spectral/SpectralScattering.js","sourceHash":"42dc1d10f286f9dea288404ec02a68898412034f6916551a32f42ea9fb2848e7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/spectral/SpectralScattering.js#0004:lambertBsdf","exportIndex":4,"name":"lambertBsdf","kind":"function","signature":"lambertBsdf(reflectance)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/SpectralScattering.md","moduleTitle":"render/spectral/SpectralScattering","source":"engine/render/spectral/SpectralScattering.js","import":"/engine/render/spectral/SpectralScattering.js","sourceHash":"42dc1d10f286f9dea288404ec02a68898412034f6916551a32f42ea9fb2848e7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/spectral/SpectralScattering.js#0005:prismMinimumDeviation","exportIndex":5,"name":"prismMinimumDeviation","kind":"function","signature":"prismMinimumDeviation(lambdaNm, apexRadians = Math.PI / 3, coefficients = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/SpectralSensor.md","moduleTitle":"render/spectral/SpectralSensor","source":"engine/render/spectral/SpectralSensor.js","import":"/engine/render/spectral/SpectralSensor.js","sourceHash":"e5262ea419eff57dd47b912fabae2052d725bff243b29308be37a9e113ddbed0","subsystem":"engine","recordType":"api-module","id":"module:engine/render/spectral/SpectralSensor.js","title":"render/spectral/SpectralSensor","summary":"","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/SpectralSensor.md","moduleTitle":"render/spectral/SpectralSensor","source":"engine/render/spectral/SpectralSensor.js","import":"/engine/render/spectral/SpectralSensor.js","sourceHash":"e5262ea419eff57dd47b912fabae2052d725bff243b29308be37a9e113ddbed0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/spectral/SpectralSensor.js#0000:wavelengthToXyz","exportIndex":0,"name":"wavelengthToXyz","kind":"function","signature":"wavelengthToXyz(lambdaNm, value = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/SpectralSensor.md","moduleTitle":"render/spectral/SpectralSensor","source":"engine/render/spectral/SpectralSensor.js","import":"/engine/render/spectral/SpectralSensor.js","sourceHash":"e5262ea419eff57dd47b912fabae2052d725bff243b29308be37a9e113ddbed0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/spectral/SpectralSensor.js#0001:xyzToLinearSrgb","exportIndex":1,"name":"xyzToLinearSrgb","kind":"function","signature":"xyzToLinearSrgb(xyz)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/SpectralSensor.md","moduleTitle":"render/spectral/SpectralSensor","source":"engine/render/spectral/SpectralSensor.js","import":"/engine/render/spectral/SpectralSensor.js","sourceHash":"e5262ea419eff57dd47b912fabae2052d725bff243b29308be37a9e113ddbed0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/spectral/SpectralSensor.js#0002:encodeSrgbChannel","exportIndex":2,"name":"encodeSrgbChannel","kind":"function","signature":"encodeSrgbChannel(v)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/SpectralSensor.md","moduleTitle":"render/spectral/SpectralSensor","source":"engine/render/spectral/SpectralSensor.js","import":"/engine/render/spectral/SpectralSensor.js","sourceHash":"e5262ea419eff57dd47b912fabae2052d725bff243b29308be37a9e113ddbed0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/spectral/SpectralSensor.js#0003:acesToneMap","exportIndex":3,"name":"acesToneMap","kind":"function","signature":"acesToneMap(rgb, exposure = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/SpectralSensor.md","moduleTitle":"render/spectral/SpectralSensor","source":"engine/render/spectral/SpectralSensor.js","import":"/engine/render/spectral/SpectralSensor.js","sourceHash":"e5262ea419eff57dd47b912fabae2052d725bff243b29308be37a9e113ddbed0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/spectral/SpectralSensor.js#0004:spectralSamplesToXyz","exportIndex":4,"name":"spectralSamplesToXyz","kind":"function","signature":"spectralSamplesToXyz(samples)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/SpectralSensor.md","moduleTitle":"render/spectral/SpectralSensor","source":"engine/render/spectral/SpectralSensor.js","import":"/engine/render/spectral/SpectralSensor.js","sourceHash":"e5262ea419eff57dd47b912fabae2052d725bff243b29308be37a9e113ddbed0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/spectral/SpectralSensor.js#0005:spectralSamplesToDisplayRgb","exportIndex":5,"name":"spectralSamplesToDisplayRgb","kind":"function","signature":"spectralSamplesToDisplayRgb(samples, exposure = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/SpectralSensor.md","moduleTitle":"render/spectral/SpectralSensor","source":"engine/render/spectral/SpectralSensor.js","import":"/engine/render/spectral/SpectralSensor.js","sourceHash":"e5262ea419eff57dd47b912fabae2052d725bff243b29308be37a9e113ddbed0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/spectral/SpectralSensor.js#0006:normalizeRgb","exportIndex":6,"name":"normalizeRgb","kind":"function","signature":"normalizeRgb(rgb)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/SpectralTypes.md","moduleTitle":"render/spectral/SpectralTypes","source":"engine/render/spectral/SpectralTypes.js","import":"/engine/render/spectral/SpectralTypes.js","sourceHash":"b84d01105746c6b740a8b57ba08aac7d12b6e62a1d5c8460727e037407956b24","subsystem":"engine","recordType":"api-module","id":"module:engine/render/spectral/SpectralTypes.js","title":"render/spectral/SpectralTypes","summary":"","exportCount":8}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/SpectralTypes.md","moduleTitle":"render/spectral/SpectralTypes","source":"engine/render/spectral/SpectralTypes.js","import":"/engine/render/spectral/SpectralTypes.js","sourceHash":"b84d01105746c6b740a8b57ba08aac7d12b6e62a1d5c8460727e037407956b24","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/spectral/SpectralTypes.js#0000:clamp01","exportIndex":0,"name":"clamp01","kind":"function","signature":"clamp01(value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/SpectralTypes.md","moduleTitle":"render/spectral/SpectralTypes","source":"engine/render/spectral/SpectralTypes.js","import":"/engine/render/spectral/SpectralTypes.js","sourceHash":"b84d01105746c6b740a8b57ba08aac7d12b6e62a1d5c8460727e037407956b24","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/spectral/SpectralTypes.js#0001:clampRange","exportIndex":1,"name":"clampRange","kind":"function","signature":"clampRange(value, min, max)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/SpectralTypes.md","moduleTitle":"render/spectral/SpectralTypes","source":"engine/render/spectral/SpectralTypes.js","import":"/engine/render/spectral/SpectralTypes.js","sourceHash":"b84d01105746c6b740a8b57ba08aac7d12b6e62a1d5c8460727e037407956b24","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/spectral/SpectralTypes.js#0002:createWavelengthPacket","exportIndex":2,"name":"createWavelengthPacket","kind":"function","signature":"createWavelengthPacket(lambda, pdf, activeMask = 1, hero = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/SpectralTypes.md","moduleTitle":"render/spectral/SpectralTypes","source":"engine/render/spectral/SpectralTypes.js","import":"/engine/render/spectral/SpectralTypes.js","sourceHash":"b84d01105746c6b740a8b57ba08aac7d12b6e62a1d5c8460727e037407956b24","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/spectral/SpectralTypes.js#0003:createPhotonPacket","exportIndex":3,"name":"createPhotonPacket","kind":"function","signature":"createPhotonPacket(position, direction, lambdaNm, flux, flags = 0, normal = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/SpectralTypes.md","moduleTitle":"render/spectral/SpectralTypes","source":"engine/render/spectral/SpectralTypes.js","import":"/engine/render/spectral/SpectralTypes.js","sourceHash":"b84d01105746c6b740a8b57ba08aac7d12b6e62a1d5c8460727e037407956b24","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/spectral/SpectralTypes.js#0004:createVisiblePoint","exportIndex":4,"name":"createVisiblePoint","kind":"function","signature":"createVisiblePoint(position, normal, materialId = 0, radius = SPECTRAL_DEFAULTS.photonRadius)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/SpectralTypes.md","moduleTitle":"render/spectral/SpectralTypes","source":"engine/render/spectral/SpectralTypes.js","import":"/engine/render/spectral/SpectralTypes.js","sourceHash":"b84d01105746c6b740a8b57ba08aac7d12b6e62a1d5c8460727e037407956b24","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/spectral/SpectralTypes.js#0005:SPECTRAL_RANGE","exportIndex":5,"name":"SPECTRAL_RANGE","kind":"constant","signature":"SPECTRAL_RANGE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/SpectralTypes.md","moduleTitle":"render/spectral/SpectralTypes","source":"engine/render/spectral/SpectralTypes.js","import":"/engine/render/spectral/SpectralTypes.js","sourceHash":"b84d01105746c6b740a8b57ba08aac7d12b6e62a1d5c8460727e037407956b24","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/spectral/SpectralTypes.js#0006:SPECTRAL_DEFAULTS","exportIndex":6,"name":"SPECTRAL_DEFAULTS","kind":"constant","signature":"SPECTRAL_DEFAULTS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/SpectralTypes.md","moduleTitle":"render/spectral/SpectralTypes","source":"engine/render/spectral/SpectralTypes.js","import":"/engine/render/spectral/SpectralTypes.js","sourceHash":"b84d01105746c6b740a8b57ba08aac7d12b6e62a1d5c8460727e037407956b24","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/spectral/SpectralTypes.js#0007:SPECTRUM_KIND","exportIndex":7,"name":"SPECTRUM_KIND","kind":"constant","signature":"SPECTRUM_KIND","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/SpectrumAsset.md","moduleTitle":"render/spectral/SpectrumAsset","source":"engine/render/spectral/SpectrumAsset.js","import":"/engine/render/spectral/SpectrumAsset.js","sourceHash":"0b636a83dd3f19d0330f3e221812083b9107c39d7f17e861ef70fd745ae1d12e","subsystem":"engine","recordType":"api-module","id":"module:engine/render/spectral/SpectrumAsset.js","title":"render/spectral/SpectrumAsset","summary":"","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/SpectrumAsset.md","moduleTitle":"render/spectral/SpectrumAsset","source":"engine/render/spectral/SpectrumAsset.js","import":"/engine/render/spectral/SpectrumAsset.js","sourceHash":"0b636a83dd3f19d0330f3e221812083b9107c39d7f17e861ef70fd745ae1d12e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/spectral/SpectrumAsset.js#0000:SpectrumAsset","exportIndex":0,"name":"SpectrumAsset","kind":"class","signature":"class SpectrumAsset","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/SpectrumAsset.md","moduleTitle":"render/spectral/SpectrumAsset","source":"engine/render/spectral/SpectrumAsset.js","import":"/engine/render/spectral/SpectrumAsset.js","sourceHash":"0b636a83dd3f19d0330f3e221812083b9107c39d7f17e861ef70fd745ae1d12e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/spectral/SpectrumAsset.js#0001:createConstantSpectrum","exportIndex":1,"name":"createConstantSpectrum","kind":"function","signature":"createConstantSpectrum(value = 1, scale = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/SpectrumAsset.md","moduleTitle":"render/spectral/SpectrumAsset","source":"engine/render/spectral/SpectrumAsset.js","import":"/engine/render/spectral/SpectrumAsset.js","sourceHash":"0b636a83dd3f19d0330f3e221812083b9107c39d7f17e861ef70fd745ae1d12e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/spectral/SpectrumAsset.js#0002:createTabulatedSpectrum","exportIndex":2,"name":"createTabulatedSpectrum","kind":"function","signature":"createTabulatedSpectrum(samples, scale = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/SpectrumAsset.md","moduleTitle":"render/spectral/SpectrumAsset","source":"engine/render/spectral/SpectrumAsset.js","import":"/engine/render/spectral/SpectrumAsset.js","sourceHash":"0b636a83dd3f19d0330f3e221812083b9107c39d7f17e861ef70fd745ae1d12e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/spectral/SpectrumAsset.js#0003:createBlackbodySpectrum","exportIndex":3,"name":"createBlackbodySpectrum","kind":"function","signature":"createBlackbodySpectrum(temperatureK = 6500, scale = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/SpectrumAsset.md","moduleTitle":"render/spectral/SpectrumAsset","source":"engine/render/spectral/SpectrumAsset.js","import":"/engine/render/spectral/SpectrumAsset.js","sourceHash":"0b636a83dd3f19d0330f3e221812083b9107c39d7f17e861ef70fd745ae1d12e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/spectral/SpectrumAsset.js#0004:createRgbSpectrum","exportIndex":4,"name":"createRgbSpectrum","kind":"function","signature":"createRgbSpectrum(rgb, scale = 1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/WavelengthSampling.md","moduleTitle":"render/spectral/WavelengthSampling","source":"engine/render/spectral/WavelengthSampling.js","import":"/engine/render/spectral/WavelengthSampling.js","sourceHash":"edcebe8c5f7c3c40143b19474d6530bf11a14a6f1a618bc9ce2128d555475986","subsystem":"engine","recordType":"api-module","id":"module:engine/render/spectral/WavelengthSampling.js","title":"render/spectral/WavelengthSampling","summary":"","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/WavelengthSampling.md","moduleTitle":"render/spectral/WavelengthSampling","source":"engine/render/spectral/WavelengthSampling.js","import":"/engine/render/spectral/WavelengthSampling.js","sourceHash":"edcebe8c5f7c3c40143b19474d6530bf11a14a6f1a618bc9ce2128d555475986","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/spectral/WavelengthSampling.js#0000:visibleImportance","exportIndex":0,"name":"visibleImportance","kind":"function","signature":"visibleImportance(lambdaNm)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/WavelengthSampling.md","moduleTitle":"render/spectral/WavelengthSampling","source":"engine/render/spectral/WavelengthSampling.js","import":"/engine/render/spectral/WavelengthSampling.js","sourceHash":"edcebe8c5f7c3c40143b19474d6530bf11a14a6f1a618bc9ce2128d555475986","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/spectral/WavelengthSampling.js#0001:wavelengthToBand","exportIndex":1,"name":"wavelengthToBand","kind":"function","signature":"wavelengthToBand(lambdaNm, bandCount = 18, minNm = SPECTRAL_RANGE.minNm, maxNm = SPECTRAL_RANGE.maxNm)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/WavelengthSampling.md","moduleTitle":"render/spectral/WavelengthSampling","source":"engine/render/spectral/WavelengthSampling.js","import":"/engine/render/spectral/WavelengthSampling.js","sourceHash":"edcebe8c5f7c3c40143b19474d6530bf11a14a6f1a618bc9ce2128d555475986","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/spectral/WavelengthSampling.js#0002:bandCenterWavelength","exportIndex":2,"name":"bandCenterWavelength","kind":"function","signature":"bandCenterWavelength(band, bandCount = 18, minNm = SPECTRAL_RANGE.minNm, maxNm = SPECTRAL_RANGE.maxNm)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/WavelengthSampling.md","moduleTitle":"render/spectral/WavelengthSampling","source":"engine/render/spectral/WavelengthSampling.js","import":"/engine/render/spectral/WavelengthSampling.js","sourceHash":"edcebe8c5f7c3c40143b19474d6530bf11a14a6f1a618bc9ce2128d555475986","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/spectral/WavelengthSampling.js#0003:sampleVisibleWavelength","exportIndex":3,"name":"sampleVisibleWavelength","kind":"function","signature":"sampleVisibleWavelength(u = uniformDistribution(0, 1, Math.random)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/WavelengthSampling.md","moduleTitle":"render/spectral/WavelengthSampling","source":"engine/render/spectral/WavelengthSampling.js","import":"/engine/render/spectral/WavelengthSampling.js","sourceHash":"edcebe8c5f7c3c40143b19474d6530bf11a14a6f1a618bc9ce2128d555475986","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/spectral/WavelengthSampling.js#0004:sampleStratifiedVisiblePacket","exportIndex":4,"name":"sampleStratifiedVisiblePacket","kind":"function","signature":"sampleStratifiedVisiblePacket(seed = 1, count = 4)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/WavelengthSampling.md","moduleTitle":"render/spectral/WavelengthSampling","source":"engine/render/spectral/WavelengthSampling.js","import":"/engine/render/spectral/WavelengthSampling.js","sourceHash":"edcebe8c5f7c3c40143b19474d6530bf11a14a6f1a618bc9ce2128d555475986","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/spectral/WavelengthSampling.js#0005:samplePhotonWavelength","exportIndex":5,"name":"samplePhotonWavelength","kind":"function","signature":"samplePhotonWavelength(lightSpectrum, seed = 1, bandCount = 18)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/spectral/index.md","moduleTitle":"render/spectral/index","source":"engine/render/spectral/index.js","import":"/engine/render/spectral/index.js","sourceHash":"480a78fa603f5876178ffd827f504d0268f3d00321609f7090b376327d22c2ae","subsystem":"engine","recordType":"api-module","id":"module:engine/render/spectral/index.js","title":"render/spectral/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/StateFirstEcsSourceAdapter.md","moduleTitle":"render/state/StateFirstEcsSourceAdapter","source":"engine/render/state/StateFirstEcsSourceAdapter.js","import":"/engine/render/state/StateFirstEcsSourceAdapter.js","sourceHash":"49855335aa323042296c1096fcd80110eb5edf39ebd58f8b954c04b3a31efcad","subsystem":"engine","recordType":"api-module","id":"module:engine/render/state/StateFirstEcsSourceAdapter.js","title":"render/state/StateFirstEcsSourceAdapter","summary":"Typed, read-only adapter from the authoritative ECS Transform + Renderable archetypes to the State-First presentation source protocol. ECS continues to own identity and transform/renderable state. Presentation owns mesh bounds, importance, dirty state, and the currently materialized representation through explicit resolver callbacks. The adapter retains no entity records and applies policy only through `applyPresentation`.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/StateFirstEcsSourceAdapter.md","moduleTitle":"render/state/StateFirstEcsSourceAdapter","source":"engine/render/state/StateFirstEcsSourceAdapter.js","import":"/engine/render/state/StateFirstEcsSourceAdapter.js","sourceHash":"49855335aa323042296c1096fcd80110eb5edf39ebd58f8b954c04b3a31efcad","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/StateFirstEcsSourceAdapter.js#0000:StateFirstEcsSourceAdapter","exportIndex":0,"name":"StateFirstEcsSourceAdapter","kind":"class","signature":"class StateFirstEcsSourceAdapter","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/StateFirstEcsSourceAdapter.md","moduleTitle":"render/state/StateFirstEcsSourceAdapter","source":"engine/render/state/StateFirstEcsSourceAdapter.js","import":"/engine/render/state/StateFirstEcsSourceAdapter.js","sourceHash":"49855335aa323042296c1096fcd80110eb5edf39ebd58f8b954c04b3a31efcad","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/StateFirstEcsSourceAdapter.js#0001:createStateFirstEcsSourceAdapter","exportIndex":1,"name":"createStateFirstEcsSourceAdapter","kind":"function","signature":"createStateFirstEcsSourceAdapter(world, options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/StateFirstEcsSourceAdapter.md","moduleTitle":"render/state/StateFirstEcsSourceAdapter","source":"engine/render/state/StateFirstEcsSourceAdapter.js","import":"/engine/render/state/StateFirstEcsSourceAdapter.js","sourceHash":"49855335aa323042296c1096fcd80110eb5edf39ebd58f8b954c04b3a31efcad","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/StateFirstEcsSourceAdapter.js#0002:STATE_FIRST_ECS_METADATA_VERSION","exportIndex":2,"name":"STATE_FIRST_ECS_METADATA_VERSION","kind":"constant","signature":"STATE_FIRST_ECS_METADATA_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/StateFirstExecutionBackend.md","moduleTitle":"render/state/StateFirstExecutionBackend","source":"engine/render/state/StateFirstExecutionBackend.js","import":"/engine/render/state/StateFirstExecutionBackend.js","sourceHash":"1f43b5947f2c42e296ed3d33a4952909d54f8a1bdfaca9e105e7fa9b2687b81e","subsystem":"engine","recordType":"api-module","id":"module:engine/render/state/StateFirstExecutionBackend.js","title":"render/state/StateFirstExecutionBackend","summary":"Backend-neutral execution policy for State-First simulations. This object owns selection, frame-boundary switching, and measured reports. It deliberately does not own a CPU step function or GPU shader so the same contract can be shared by every State-First simulation.","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/StateFirstExecutionBackend.md","moduleTitle":"render/state/StateFirstExecutionBackend","source":"engine/render/state/StateFirstExecutionBackend.js","import":"/engine/render/state/StateFirstExecutionBackend.js","sourceHash":"1f43b5947f2c42e296ed3d33a4952909d54f8a1bdfaca9e105e7fa9b2687b81e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/StateFirstExecutionBackend.js#0000:StateFirstExecutionBackend","exportIndex":0,"name":"StateFirstExecutionBackend","kind":"class","signature":"class StateFirstExecutionBackend","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/StateFirstExecutionBackend.md","moduleTitle":"render/state/StateFirstExecutionBackend","source":"engine/render/state/StateFirstExecutionBackend.js","import":"/engine/render/state/StateFirstExecutionBackend.js","sourceHash":"1f43b5947f2c42e296ed3d33a4952909d54f8a1bdfaca9e105e7fa9b2687b81e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/StateFirstExecutionBackend.js#0001:createStateFirstExecutionBackend","exportIndex":1,"name":"createStateFirstExecutionBackend","kind":"function","signature":"createStateFirstExecutionBackend(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/StateFirstExecutionBackend.md","moduleTitle":"render/state/StateFirstExecutionBackend","source":"engine/render/state/StateFirstExecutionBackend.js","import":"/engine/render/state/StateFirstExecutionBackend.js","sourceHash":"1f43b5947f2c42e296ed3d33a4952909d54f8a1bdfaca9e105e7fa9b2687b81e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/StateFirstExecutionBackend.js#0002:STATE_FIRST_EXECUTION_BACKEND","exportIndex":2,"name":"STATE_FIRST_EXECUTION_BACKEND","kind":"constant","signature":"STATE_FIRST_EXECUTION_BACKEND","summary":"Backend-neutral execution policy for State-First simulations. This object owns selection, frame-boundary switching, and measured reports. It deliberately does not own a CPU step function or GPU shader so the same contract can be shared by every State-First simulation."}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/StateFirstExecutionBackend.md","moduleTitle":"render/state/StateFirstExecutionBackend","source":"engine/render/state/StateFirstExecutionBackend.js","import":"/engine/render/state/StateFirstExecutionBackend.js","sourceHash":"1f43b5947f2c42e296ed3d33a4952909d54f8a1bdfaca9e105e7fa9b2687b81e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/StateFirstExecutionBackend.js#0003:STATE_FIRST_PARITY_STATUS","exportIndex":3,"name":"STATE_FIRST_PARITY_STATUS","kind":"constant","signature":"STATE_FIRST_PARITY_STATUS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/StateFirstGpuCuller.md","moduleTitle":"render/state/StateFirstGpuCuller","source":"engine/render/state/StateFirstGpuCuller.js","import":"/engine/render/state/StateFirstGpuCuller.js","sourceHash":"0bbf7d509cc367e70c49f553fa2f638770744ce32da984bff4f90fe5ddf2dbdf","subsystem":"engine","recordType":"api-module","id":"module:engine/render/state/StateFirstGpuCuller.js","title":"render/state/StateFirstGpuCuller","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/StateFirstGpuCuller.md","moduleTitle":"render/state/StateFirstGpuCuller","source":"engine/render/state/StateFirstGpuCuller.js","import":"/engine/render/state/StateFirstGpuCuller.js","sourceHash":"0bbf7d509cc367e70c49f553fa2f638770744ce32da984bff4f90fe5ddf2dbdf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/StateFirstGpuCuller.js#0000:StateFirstGpuCuller","exportIndex":0,"name":"StateFirstGpuCuller","kind":"class","signature":"class StateFirstGpuCuller","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/StateFirstGpuCuller.md","moduleTitle":"render/state/StateFirstGpuCuller","source":"engine/render/state/StateFirstGpuCuller.js","import":"/engine/render/state/StateFirstGpuCuller.js","sourceHash":"0bbf7d509cc367e70c49f553fa2f638770744ce32da984bff4f90fe5ddf2dbdf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/StateFirstGpuCuller.js#0001:createStateFirstGpuCuller","exportIndex":1,"name":"createStateFirstGpuCuller","kind":"function","signature":"createStateFirstGpuCuller(device, options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/StateFirstRasterizer.md","moduleTitle":"render/state/StateFirstRasterizer","source":"engine/render/state/StateFirstRasterizer.js","import":"/engine/render/state/StateFirstRasterizer.js","sourceHash":"e858ad2cd4ef7dd69802d80c8b9cea705e7e857417ef5d0d916bc631b538f247","subsystem":"engine","recordType":"api-module","id":"module:engine/render/state/StateFirstRasterizer.js","title":"render/state/StateFirstRasterizer","summary":"","exportCount":9}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/StateFirstRasterizer.md","moduleTitle":"render/state/StateFirstRasterizer","source":"engine/render/state/StateFirstRasterizer.js","import":"/engine/render/state/StateFirstRasterizer.js","sourceHash":"e858ad2cd4ef7dd69802d80c8b9cea705e7e857417ef5d0d916bc631b538f247","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/StateFirstRasterizer.js#0000:StateFirstRasterizer","exportIndex":0,"name":"StateFirstRasterizer","kind":"class","signature":"class StateFirstRasterizer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/StateFirstRasterizer.md","moduleTitle":"render/state/StateFirstRasterizer","source":"engine/render/state/StateFirstRasterizer.js","import":"/engine/render/state/StateFirstRasterizer.js","sourceHash":"e858ad2cd4ef7dd69802d80c8b9cea705e7e857417ef5d0d916bc631b538f247","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/StateFirstRasterizer.js#0001:stateFirstModeLabel","exportIndex":1,"name":"stateFirstModeLabel","kind":"function","signature":"stateFirstModeLabel(mode)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/StateFirstRasterizer.md","moduleTitle":"render/state/StateFirstRasterizer","source":"engine/render/state/StateFirstRasterizer.js","import":"/engine/render/state/StateFirstRasterizer.js","sourceHash":"e858ad2cd4ef7dd69802d80c8b9cea705e7e857417ef5d0d916bc631b538f247","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/StateFirstRasterizer.js#0002:chooseStateFirstRepresentation","exportIndex":2,"name":"chooseStateFirstRepresentation","kind":"function","signature":"chooseStateFirstRepresentation(pixelRadius, importance = 0, current = STATE_FIRST_REPRESENTATION.POINT, holdFrames = 0, thresholds = DEFAULT_THRESHOLDS, policy = null, lodRank = 0.5)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/StateFirstRasterizer.md","moduleTitle":"render/state/StateFirstRasterizer","source":"engine/render/state/StateFirstRasterizer.js","import":"/engine/render/state/StateFirstRasterizer.js","sourceHash":"e858ad2cd4ef7dd69802d80c8b9cea705e7e857417ef5d0d916bc631b538f247","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/StateFirstRasterizer.js#0003:createStateFirstRasterizer","exportIndex":3,"name":"createStateFirstRasterizer","kind":"function","signature":"createStateFirstRasterizer(options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/StateFirstRasterizer.md","moduleTitle":"render/state/StateFirstRasterizer","source":"engine/render/state/StateFirstRasterizer.js","import":"/engine/render/state/StateFirstRasterizer.js","sourceHash":"e858ad2cd4ef7dd69802d80c8b9cea705e7e857417ef5d0d916bc631b538f247","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/StateFirstRasterizer.js#0004:RASTERIZER_MODE","exportIndex":4,"name":"RASTERIZER_MODE","kind":"constant","signature":"RASTERIZER_MODE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/StateFirstRasterizer.md","moduleTitle":"render/state/StateFirstRasterizer","source":"engine/render/state/StateFirstRasterizer.js","import":"/engine/render/state/StateFirstRasterizer.js","sourceHash":"e858ad2cd4ef7dd69802d80c8b9cea705e7e857417ef5d0d916bc631b538f247","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/StateFirstRasterizer.js#0005:STATE_FIRST_REPRESENTATION","exportIndex":5,"name":"STATE_FIRST_REPRESENTATION","kind":"constant","signature":"STATE_FIRST_REPRESENTATION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/StateFirstRasterizer.md","moduleTitle":"render/state/StateFirstRasterizer","source":"engine/render/state/StateFirstRasterizer.js","import":"/engine/render/state/StateFirstRasterizer.js","sourceHash":"e858ad2cd4ef7dd69802d80c8b9cea705e7e857417ef5d0d916bc631b538f247","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/StateFirstRasterizer.js#0006:STATE_FIRST_DIRTY","exportIndex":6,"name":"STATE_FIRST_DIRTY","kind":"constant","signature":"STATE_FIRST_DIRTY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/StateFirstRasterizer.md","moduleTitle":"render/state/StateFirstRasterizer","source":"engine/render/state/StateFirstRasterizer.js","import":"/engine/render/state/StateFirstRasterizer.js","sourceHash":"e858ad2cd4ef7dd69802d80c8b9cea705e7e857417ef5d0d916bc631b538f247","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/StateFirstRasterizer.js#0007:STATE_FIRST_REPRESENTATION_NAMES","exportIndex":7,"name":"STATE_FIRST_REPRESENTATION_NAMES","kind":"constant","signature":"STATE_FIRST_REPRESENTATION_NAMES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/StateFirstRasterizer.md","moduleTitle":"render/state/StateFirstRasterizer","source":"engine/render/state/StateFirstRasterizer.js","import":"/engine/render/state/StateFirstRasterizer.js","sourceHash":"e858ad2cd4ef7dd69802d80c8b9cea705e7e857417ef5d0d916bc631b538f247","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/StateFirstRasterizer.js#0008:STATE_FIRST_QUALITY_PROFILE","exportIndex":8,"name":"STATE_FIRST_QUALITY_PROFILE","kind":"constant","signature":"STATE_FIRST_QUALITY_PROFILE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/StateFirstRetainedStorage.md","moduleTitle":"render/state/StateFirstRetainedStorage","source":"engine/render/state/StateFirstRetainedStorage.js","import":"/engine/render/state/StateFirstRetainedStorage.js","sourceHash":"bc0e7fde8fd1632c852cfe04173f6f90d39dbcfba7247404fdc01d674afc7853","subsystem":"engine","recordType":"api-module","id":"module:engine/render/state/StateFirstRetainedStorage.js","title":"render/state/StateFirstRetainedStorage","summary":"Retained state backing for state-first renderers. Entity state lives at a stable entity-id-derived offset while each visual representation owns a dense u32 indirection bucket.  Representation changes therefore never move authoritative state, and an entity may participate in two buckets while an LOD cross-fade is in progress.","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/StateFirstRetainedStorage.md","moduleTitle":"render/state/StateFirstRetainedStorage","source":"engine/render/state/StateFirstRetainedStorage.js","import":"/engine/render/state/StateFirstRetainedStorage.js","sourceHash":"bc0e7fde8fd1632c852cfe04173f6f90d39dbcfba7247404fdc01d674afc7853","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/StateFirstRetainedStorage.js#0000:StateFirstRetainedStorage","exportIndex":0,"name":"StateFirstRetainedStorage","kind":"class","signature":"class StateFirstRetainedStorage","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/StateFirstRetainedStorage.md","moduleTitle":"render/state/StateFirstRetainedStorage","source":"engine/render/state/StateFirstRetainedStorage.js","import":"/engine/render/state/StateFirstRetainedStorage.js","sourceHash":"bc0e7fde8fd1632c852cfe04173f6f90d39dbcfba7247404fdc01d674afc7853","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/StateFirstRetainedStorage.js#0001:createStateFirstRetainedStorage","exportIndex":1,"name":"createStateFirstRetainedStorage","kind":"function","signature":"createStateFirstRetainedStorage(device, options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/StateFirstRetainedStorage.md","moduleTitle":"render/state/StateFirstRetainedStorage","source":"engine/render/state/StateFirstRetainedStorage.js","import":"/engine/render/state/StateFirstRetainedStorage.js","sourceHash":"bc0e7fde8fd1632c852cfe04173f6f90d39dbcfba7247404fdc01d674afc7853","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/StateFirstRetainedStorage.js#0002:STATE_FIRST_RETAINED_RECORD_FLOATS","exportIndex":2,"name":"STATE_FIRST_RETAINED_RECORD_FLOATS","kind":"constant","signature":"STATE_FIRST_RETAINED_RECORD_FLOATS","summary":"Retained state backing for state-first renderers. Entity state lives at a stable entity-id-derived offset while each visual representation owns a dense u32 indirection bucket.  Representation changes therefore never move authoritative state, and an entity may participate in two buckets while an LOD cross-fade is in progress."}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/StateFirstRetainedStorage.md","moduleTitle":"render/state/StateFirstRetainedStorage","source":"engine/render/state/StateFirstRetainedStorage.js","import":"/engine/render/state/StateFirstRetainedStorage.js","sourceHash":"bc0e7fde8fd1632c852cfe04173f6f90d39dbcfba7247404fdc01d674afc7853","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/StateFirstRetainedStorage.js#0003:STATE_FIRST_RETAINED_RECORD_BYTES","exportIndex":3,"name":"STATE_FIRST_RETAINED_RECORD_BYTES","kind":"constant","signature":"STATE_FIRST_RETAINED_RECORD_BYTES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/StateFirstRetainedStorage.md","moduleTitle":"render/state/StateFirstRetainedStorage","source":"engine/render/state/StateFirstRetainedStorage.js","import":"/engine/render/state/StateFirstRetainedStorage.js","sourceHash":"bc0e7fde8fd1632c852cfe04173f6f90d39dbcfba7247404fdc01d674afc7853","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/StateFirstRetainedStorage.js#0004:STATE_FIRST_RETAINED_INDEX_BYTES","exportIndex":4,"name":"STATE_FIRST_RETAINED_INDEX_BYTES","kind":"constant","signature":"STATE_FIRST_RETAINED_INDEX_BYTES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/StateFirstSourceBridge.md","moduleTitle":"render/state/StateFirstSourceBridge","source":"engine/render/state/StateFirstSourceBridge.js","import":"/engine/render/state/StateFirstSourceBridge.js","sourceHash":"7fdf9016f5e51df92d649d8bf3768d7d65d807f603d6d068cb31737448ce5193","subsystem":"engine","recordType":"api-module","id":"module:engine/render/state/StateFirstSourceBridge.js","title":"render/state/StateFirstSourceBridge","summary":"Explicit runtime bridge between authoritative simulation state and the State-First presentation policy. The bridge deliberately does not guess GPU layouts or invent renderable entities from arbitrary objects. A source must publish the V1 protocol, provide semantic presentation entities, and consume the resulting plan. GPU sources additionally prove that their active byte range fits in the authoritative GPUBuffer on every update, which makes ping-pong buffers and capacity growth safe to expose without readback.","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/StateFirstSourceBridge.md","moduleTitle":"render/state/StateFirstSourceBridge","source":"engine/render/state/StateFirstSourceBridge.js","import":"/engine/render/state/StateFirstSourceBridge.js","sourceHash":"7fdf9016f5e51df92d649d8bf3768d7d65d807f603d6d068cb31737448ce5193","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/StateFirstSourceBridge.js#0000:StateFirstSourceBridge","exportIndex":0,"name":"StateFirstSourceBridge","kind":"class","signature":"class StateFirstSourceBridge","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/StateFirstSourceBridge.md","moduleTitle":"render/state/StateFirstSourceBridge","source":"engine/render/state/StateFirstSourceBridge.js","import":"/engine/render/state/StateFirstSourceBridge.js","sourceHash":"7fdf9016f5e51df92d649d8bf3768d7d65d807f603d6d068cb31737448ce5193","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/StateFirstSourceBridge.js#0001:discoverStateFirstSource","exportIndex":1,"name":"discoverStateFirstSource","kind":"function","signature":"discoverStateFirstSource(candidate)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/StateFirstSourceBridge.md","moduleTitle":"render/state/StateFirstSourceBridge","source":"engine/render/state/StateFirstSourceBridge.js","import":"/engine/render/state/StateFirstSourceBridge.js","sourceHash":"7fdf9016f5e51df92d649d8bf3768d7d65d807f603d6d068cb31737448ce5193","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/StateFirstSourceBridge.js#0002:createStateFirstSourceBridge","exportIndex":2,"name":"createStateFirstSourceBridge","kind":"function","signature":"createStateFirstSourceBridge(rasterizer, options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/StateFirstSourceBridge.md","moduleTitle":"render/state/StateFirstSourceBridge","source":"engine/render/state/StateFirstSourceBridge.js","import":"/engine/render/state/StateFirstSourceBridge.js","sourceHash":"7fdf9016f5e51df92d649d8bf3768d7d65d807f603d6d068cb31737448ce5193","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/StateFirstSourceBridge.js#0003:STATE_FIRST_SOURCE","exportIndex":3,"name":"STATE_FIRST_SOURCE","kind":"constant","signature":"STATE_FIRST_SOURCE","summary":"Explicit runtime bridge between authoritative simulation state and the State-First presentation policy. The bridge deliberately does not guess GPU layouts or invent renderable entities from arbitrary objects. A source must publish the V1 protocol, provide semantic presentation entities, and consume the resulting plan. GPU sources additionally prove that their active byte range fits in the authoritative GPUBuffer on every update, which makes ping-pong buffers and capacity growth safe to expose without readback."}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/StateFirstSourceBridge.md","moduleTitle":"render/state/StateFirstSourceBridge","source":"engine/render/state/StateFirstSourceBridge.js","import":"/engine/render/state/StateFirstSourceBridge.js","sourceHash":"7fdf9016f5e51df92d649d8bf3768d7d65d807f603d6d068cb31737448ce5193","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/StateFirstSourceBridge.js#0004:STATE_FIRST_SOURCE_VERSION","exportIndex":4,"name":"STATE_FIRST_SOURCE_VERSION","kind":"constant","signature":"STATE_FIRST_SOURCE_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/StateFirstSourceBridge.md","moduleTitle":"render/state/StateFirstSourceBridge","source":"engine/render/state/StateFirstSourceBridge.js","import":"/engine/render/state/StateFirstSourceBridge.js","sourceHash":"7fdf9016f5e51df92d649d8bf3768d7d65d807f603d6d068cb31737448ce5193","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/StateFirstSourceBridge.js#0005:STATE_FIRST_SOURCE_KIND","exportIndex":5,"name":"STATE_FIRST_SOURCE_KIND","kind":"constant","signature":"STATE_FIRST_SOURCE_KIND","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/index.md","moduleTitle":"render/state/index","source":"engine/render/state/index.js","import":"/engine/render/state/index.js","sourceHash":"9df865d83ab650e3a287f9fb5527bcd16eddd143861868307a919dfb709dcfe7","subsystem":"engine","recordType":"api-module","id":"module:engine/render/state/index.js","title":"render/state/index","summary":"","exportCount":29}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/index.md","moduleTitle":"render/state/index","source":"engine/render/state/index.js","import":"/engine/render/state/index.js","sourceHash":"9df865d83ab650e3a287f9fb5527bcd16eddd143861868307a919dfb709dcfe7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/index.js#0000:RASTERIZER_MODE","exportIndex":0,"name":"RASTERIZER_MODE","kind":"re-export","signature":"RASTERIZER_MODE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/index.md","moduleTitle":"render/state/index","source":"engine/render/state/index.js","import":"/engine/render/state/index.js","sourceHash":"9df865d83ab650e3a287f9fb5527bcd16eddd143861868307a919dfb709dcfe7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/index.js#0001:STATE_FIRST_DIRTY","exportIndex":1,"name":"STATE_FIRST_DIRTY","kind":"re-export","signature":"STATE_FIRST_DIRTY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/index.md","moduleTitle":"render/state/index","source":"engine/render/state/index.js","import":"/engine/render/state/index.js","sourceHash":"9df865d83ab650e3a287f9fb5527bcd16eddd143861868307a919dfb709dcfe7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/index.js#0002:STATE_FIRST_ECS_METADATA_VERSION","exportIndex":2,"name":"STATE_FIRST_ECS_METADATA_VERSION","kind":"re-export","signature":"STATE_FIRST_ECS_METADATA_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/index.md","moduleTitle":"render/state/index","source":"engine/render/state/index.js","import":"/engine/render/state/index.js","sourceHash":"9df865d83ab650e3a287f9fb5527bcd16eddd143861868307a919dfb709dcfe7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/index.js#0003:STATE_FIRST_EXECUTION_BACKEND","exportIndex":3,"name":"STATE_FIRST_EXECUTION_BACKEND","kind":"re-export","signature":"STATE_FIRST_EXECUTION_BACKEND","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/index.md","moduleTitle":"render/state/index","source":"engine/render/state/index.js","import":"/engine/render/state/index.js","sourceHash":"9df865d83ab650e3a287f9fb5527bcd16eddd143861868307a919dfb709dcfe7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/index.js#0004:STATE_FIRST_PARITY_STATUS","exportIndex":4,"name":"STATE_FIRST_PARITY_STATUS","kind":"re-export","signature":"STATE_FIRST_PARITY_STATUS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/index.md","moduleTitle":"render/state/index","source":"engine/render/state/index.js","import":"/engine/render/state/index.js","sourceHash":"9df865d83ab650e3a287f9fb5527bcd16eddd143861868307a919dfb709dcfe7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/index.js#0005:STATE_FIRST_QUALITY_PROFILE","exportIndex":5,"name":"STATE_FIRST_QUALITY_PROFILE","kind":"re-export","signature":"STATE_FIRST_QUALITY_PROFILE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/index.md","moduleTitle":"render/state/index","source":"engine/render/state/index.js","import":"/engine/render/state/index.js","sourceHash":"9df865d83ab650e3a287f9fb5527bcd16eddd143861868307a919dfb709dcfe7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/index.js#0006:STATE_FIRST_REPRESENTATION","exportIndex":6,"name":"STATE_FIRST_REPRESENTATION","kind":"re-export","signature":"STATE_FIRST_REPRESENTATION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/index.md","moduleTitle":"render/state/index","source":"engine/render/state/index.js","import":"/engine/render/state/index.js","sourceHash":"9df865d83ab650e3a287f9fb5527bcd16eddd143861868307a919dfb709dcfe7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/index.js#0007:STATE_FIRST_REPRESENTATION_NAMES","exportIndex":7,"name":"STATE_FIRST_REPRESENTATION_NAMES","kind":"re-export","signature":"STATE_FIRST_REPRESENTATION_NAMES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/index.md","moduleTitle":"render/state/index","source":"engine/render/state/index.js","import":"/engine/render/state/index.js","sourceHash":"9df865d83ab650e3a287f9fb5527bcd16eddd143861868307a919dfb709dcfe7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/index.js#0008:STATE_FIRST_RETAINED_INDEX_BYTES","exportIndex":8,"name":"STATE_FIRST_RETAINED_INDEX_BYTES","kind":"re-export","signature":"STATE_FIRST_RETAINED_INDEX_BYTES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/index.md","moduleTitle":"render/state/index","source":"engine/render/state/index.js","import":"/engine/render/state/index.js","sourceHash":"9df865d83ab650e3a287f9fb5527bcd16eddd143861868307a919dfb709dcfe7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/index.js#0009:STATE_FIRST_RETAINED_RECORD_BYTES","exportIndex":9,"name":"STATE_FIRST_RETAINED_RECORD_BYTES","kind":"re-export","signature":"STATE_FIRST_RETAINED_RECORD_BYTES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/index.md","moduleTitle":"render/state/index","source":"engine/render/state/index.js","import":"/engine/render/state/index.js","sourceHash":"9df865d83ab650e3a287f9fb5527bcd16eddd143861868307a919dfb709dcfe7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/index.js#0010:STATE_FIRST_RETAINED_RECORD_FLOATS","exportIndex":10,"name":"STATE_FIRST_RETAINED_RECORD_FLOATS","kind":"re-export","signature":"STATE_FIRST_RETAINED_RECORD_FLOATS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/index.md","moduleTitle":"render/state/index","source":"engine/render/state/index.js","import":"/engine/render/state/index.js","sourceHash":"9df865d83ab650e3a287f9fb5527bcd16eddd143861868307a919dfb709dcfe7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/index.js#0011:STATE_FIRST_SOURCE","exportIndex":11,"name":"STATE_FIRST_SOURCE","kind":"re-export","signature":"STATE_FIRST_SOURCE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/index.md","moduleTitle":"render/state/index","source":"engine/render/state/index.js","import":"/engine/render/state/index.js","sourceHash":"9df865d83ab650e3a287f9fb5527bcd16eddd143861868307a919dfb709dcfe7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/index.js#0012:STATE_FIRST_SOURCE_KIND","exportIndex":12,"name":"STATE_FIRST_SOURCE_KIND","kind":"re-export","signature":"STATE_FIRST_SOURCE_KIND","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/index.md","moduleTitle":"render/state/index","source":"engine/render/state/index.js","import":"/engine/render/state/index.js","sourceHash":"9df865d83ab650e3a287f9fb5527bcd16eddd143861868307a919dfb709dcfe7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/index.js#0013:STATE_FIRST_SOURCE_VERSION","exportIndex":13,"name":"STATE_FIRST_SOURCE_VERSION","kind":"re-export","signature":"STATE_FIRST_SOURCE_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/index.md","moduleTitle":"render/state/index","source":"engine/render/state/index.js","import":"/engine/render/state/index.js","sourceHash":"9df865d83ab650e3a287f9fb5527bcd16eddd143861868307a919dfb709dcfe7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/index.js#0014:StateFirstEcsSourceAdapter","exportIndex":14,"name":"StateFirstEcsSourceAdapter","kind":"re-export","signature":"StateFirstEcsSourceAdapter","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/index.md","moduleTitle":"render/state/index","source":"engine/render/state/index.js","import":"/engine/render/state/index.js","sourceHash":"9df865d83ab650e3a287f9fb5527bcd16eddd143861868307a919dfb709dcfe7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/index.js#0015:StateFirstExecutionBackend","exportIndex":15,"name":"StateFirstExecutionBackend","kind":"re-export","signature":"StateFirstExecutionBackend","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/index.md","moduleTitle":"render/state/index","source":"engine/render/state/index.js","import":"/engine/render/state/index.js","sourceHash":"9df865d83ab650e3a287f9fb5527bcd16eddd143861868307a919dfb709dcfe7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/index.js#0016:StateFirstGpuCuller","exportIndex":16,"name":"StateFirstGpuCuller","kind":"re-export","signature":"StateFirstGpuCuller","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/index.md","moduleTitle":"render/state/index","source":"engine/render/state/index.js","import":"/engine/render/state/index.js","sourceHash":"9df865d83ab650e3a287f9fb5527bcd16eddd143861868307a919dfb709dcfe7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/index.js#0017:StateFirstRasterizer","exportIndex":17,"name":"StateFirstRasterizer","kind":"re-export","signature":"StateFirstRasterizer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/index.md","moduleTitle":"render/state/index","source":"engine/render/state/index.js","import":"/engine/render/state/index.js","sourceHash":"9df865d83ab650e3a287f9fb5527bcd16eddd143861868307a919dfb709dcfe7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/index.js#0018:StateFirstRetainedStorage","exportIndex":18,"name":"StateFirstRetainedStorage","kind":"re-export","signature":"StateFirstRetainedStorage","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/index.md","moduleTitle":"render/state/index","source":"engine/render/state/index.js","import":"/engine/render/state/index.js","sourceHash":"9df865d83ab650e3a287f9fb5527bcd16eddd143861868307a919dfb709dcfe7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/index.js#0019:StateFirstSourceBridge","exportIndex":19,"name":"StateFirstSourceBridge","kind":"re-export","signature":"StateFirstSourceBridge","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/index.md","moduleTitle":"render/state/index","source":"engine/render/state/index.js","import":"/engine/render/state/index.js","sourceHash":"9df865d83ab650e3a287f9fb5527bcd16eddd143861868307a919dfb709dcfe7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/index.js#0020:chooseStateFirstRepresentation","exportIndex":20,"name":"chooseStateFirstRepresentation","kind":"re-export","signature":"chooseStateFirstRepresentation","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/index.md","moduleTitle":"render/state/index","source":"engine/render/state/index.js","import":"/engine/render/state/index.js","sourceHash":"9df865d83ab650e3a287f9fb5527bcd16eddd143861868307a919dfb709dcfe7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/index.js#0021:createStateFirstEcsSourceAdapter","exportIndex":21,"name":"createStateFirstEcsSourceAdapter","kind":"re-export","signature":"createStateFirstEcsSourceAdapter","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/index.md","moduleTitle":"render/state/index","source":"engine/render/state/index.js","import":"/engine/render/state/index.js","sourceHash":"9df865d83ab650e3a287f9fb5527bcd16eddd143861868307a919dfb709dcfe7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/index.js#0022:createStateFirstExecutionBackend","exportIndex":22,"name":"createStateFirstExecutionBackend","kind":"re-export","signature":"createStateFirstExecutionBackend","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/index.md","moduleTitle":"render/state/index","source":"engine/render/state/index.js","import":"/engine/render/state/index.js","sourceHash":"9df865d83ab650e3a287f9fb5527bcd16eddd143861868307a919dfb709dcfe7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/index.js#0023:createStateFirstGpuCuller","exportIndex":23,"name":"createStateFirstGpuCuller","kind":"re-export","signature":"createStateFirstGpuCuller","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/index.md","moduleTitle":"render/state/index","source":"engine/render/state/index.js","import":"/engine/render/state/index.js","sourceHash":"9df865d83ab650e3a287f9fb5527bcd16eddd143861868307a919dfb709dcfe7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/index.js#0024:createStateFirstRasterizer","exportIndex":24,"name":"createStateFirstRasterizer","kind":"re-export","signature":"createStateFirstRasterizer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/index.md","moduleTitle":"render/state/index","source":"engine/render/state/index.js","import":"/engine/render/state/index.js","sourceHash":"9df865d83ab650e3a287f9fb5527bcd16eddd143861868307a919dfb709dcfe7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/index.js#0025:createStateFirstRetainedStorage","exportIndex":25,"name":"createStateFirstRetainedStorage","kind":"re-export","signature":"createStateFirstRetainedStorage","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/index.md","moduleTitle":"render/state/index","source":"engine/render/state/index.js","import":"/engine/render/state/index.js","sourceHash":"9df865d83ab650e3a287f9fb5527bcd16eddd143861868307a919dfb709dcfe7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/index.js#0026:createStateFirstSourceBridge","exportIndex":26,"name":"createStateFirstSourceBridge","kind":"re-export","signature":"createStateFirstSourceBridge","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/index.md","moduleTitle":"render/state/index","source":"engine/render/state/index.js","import":"/engine/render/state/index.js","sourceHash":"9df865d83ab650e3a287f9fb5527bcd16eddd143861868307a919dfb709dcfe7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/index.js#0027:discoverStateFirstSource","exportIndex":27,"name":"discoverStateFirstSource","kind":"re-export","signature":"discoverStateFirstSource","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/state/index.md","moduleTitle":"render/state/index","source":"engine/render/state/index.js","import":"/engine/render/state/index.js","sourceHash":"9df865d83ab650e3a287f9fb5527bcd16eddd143861868307a919dfb709dcfe7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/state/index.js#0028:stateFirstModeLabel","exportIndex":28,"name":"stateFirstModeLabel","kind":"re-export","signature":"stateFirstModeLabel","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/streaming/VirtualTexturingSystem.md","moduleTitle":"render/streaming/VirtualTexturingSystem","source":"engine/render/streaming/VirtualTexturingSystem.js","import":"/engine/render/streaming/VirtualTexturingSystem.js","sourceHash":"26b4abb484e5e4568b2f0586f877eea0c4e82173c41c9291f9009a8a7a02fd7f","subsystem":"engine","recordType":"api-module","id":"module:engine/render/streaming/VirtualTexturingSystem.js","title":"render/streaming/VirtualTexturingSystem","summary":"Virtual Texturing System - On-demand texture streaming Megatexture/Sparse Virtual Texture implementation Used for massive open worlds with unlimited texture detail Now powered by vGPU driver","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/streaming/VirtualTexturingSystem.md","moduleTitle":"render/streaming/VirtualTexturingSystem","source":"engine/render/streaming/VirtualTexturingSystem.js","import":"/engine/render/streaming/VirtualTexturingSystem.js","sourceHash":"26b4abb484e5e4568b2f0586f877eea0c4e82173c41c9291f9009a8a7a02fd7f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/streaming/VirtualTexturingSystem.js#0000:VirtualTexturingSystem","exportIndex":0,"name":"VirtualTexturingSystem","kind":"class","signature":"class VirtualTexturingSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/volumes/HybridVolumeSystem.md","moduleTitle":"render/volumes/HybridVolumeSystem","source":"engine/render/volumes/HybridVolumeSystem.js","import":"/engine/render/volumes/HybridVolumeSystem.js","sourceHash":"c5655791c77cc0fed1e2164317c3ad2d2a2bed681bea069ae388c2f0fa1a9782","subsystem":"engine","recordType":"api-module","id":"module:engine/render/volumes/HybridVolumeSystem.js","title":"render/volumes/HybridVolumeSystem","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/volumes/HybridVolumeSystem.md","moduleTitle":"render/volumes/HybridVolumeSystem","source":"engine/render/volumes/HybridVolumeSystem.js","import":"/engine/render/volumes/HybridVolumeSystem.js","sourceHash":"c5655791c77cc0fed1e2164317c3ad2d2a2bed681bea069ae388c2f0fa1a9782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/volumes/HybridVolumeSystem.js#0000:HybridVolumeSystem","exportIndex":0,"name":"HybridVolumeSystem","kind":"class","signature":"class HybridVolumeSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/volumes/HybridVolumeSystem.md","moduleTitle":"render/volumes/HybridVolumeSystem","source":"engine/render/volumes/HybridVolumeSystem.js","import":"/engine/render/volumes/HybridVolumeSystem.js","sourceHash":"c5655791c77cc0fed1e2164317c3ad2d2a2bed681bea069ae388c2f0fa1a9782","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/volumes/HybridVolumeSystem.js#0001:VolumeRenderMode","exportIndex":1,"name":"VolumeRenderMode","kind":"constant","signature":"VolumeRenderMode","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/volumes/IsoSurfaceVolumeRenderer.md","moduleTitle":"render/volumes/IsoSurfaceVolumeRenderer","source":"engine/render/volumes/IsoSurfaceVolumeRenderer.js","import":"/engine/render/volumes/IsoSurfaceVolumeRenderer.js","sourceHash":"e8b1918be7a702d7ae2cef2150180fbd5eaaf340ca2503415924dcb00a90e23b","subsystem":"engine","recordType":"api-module","id":"module:engine/render/volumes/IsoSurfaceVolumeRenderer.js","title":"render/volumes/IsoSurfaceVolumeRenderer","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/volumes/IsoSurfaceVolumeRenderer.md","moduleTitle":"render/volumes/IsoSurfaceVolumeRenderer","source":"engine/render/volumes/IsoSurfaceVolumeRenderer.js","import":"/engine/render/volumes/IsoSurfaceVolumeRenderer.js","sourceHash":"e8b1918be7a702d7ae2cef2150180fbd5eaaf340ca2503415924dcb00a90e23b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/volumes/IsoSurfaceVolumeRenderer.js#0000:createIsoSurfaceVolumeRenderer","exportIndex":0,"name":"createIsoSurfaceVolumeRenderer","kind":"function","signature":"async createIsoSurfaceVolumeRenderer(options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/volumes/ParticleVolumeConnector.md","moduleTitle":"render/volumes/ParticleVolumeConnector","source":"engine/render/volumes/ParticleVolumeConnector.js","import":"/engine/render/volumes/ParticleVolumeConnector.js","sourceHash":"c5dcbd1f76d8076c620dd82bef349cb6e8a4e4165760285329a813c1321d1a20","subsystem":"engine","recordType":"api-module","id":"module:engine/render/volumes/ParticleVolumeConnector.js","title":"render/volumes/ParticleVolumeConnector","summary":"Quick factory to create a connector and initialize it","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/render/volumes/ParticleVolumeConnector.md","moduleTitle":"render/volumes/ParticleVolumeConnector","source":"engine/render/volumes/ParticleVolumeConnector.js","import":"/engine/render/volumes/ParticleVolumeConnector.js","sourceHash":"c5dcbd1f76d8076c620dd82bef349cb6e8a4e4165760285329a813c1321d1a20","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/volumes/ParticleVolumeConnector.js#0000:ParticleVolumeConnector","exportIndex":0,"name":"ParticleVolumeConnector","kind":"class","signature":"class ParticleVolumeConnector","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/volumes/ParticleVolumeConnector.md","moduleTitle":"render/volumes/ParticleVolumeConnector","source":"engine/render/volumes/ParticleVolumeConnector.js","import":"/engine/render/volumes/ParticleVolumeConnector.js","sourceHash":"c5dcbd1f76d8076c620dd82bef349cb6e8a4e4165760285329a813c1321d1a20","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/volumes/ParticleVolumeConnector.js#0001:createParticleVolumeConnector","exportIndex":1,"name":"createParticleVolumeConnector","kind":"function","signature":"async createParticleVolumeConnector(device, options = {})","summary":"Quick factory to create a connector and initialize it"}
{"schemaVersion":1,"modulePath":"engine/reference/render/volumes/SmokeVolumeRenderer.md","moduleTitle":"render/volumes/SmokeVolumeRenderer","source":"engine/render/volumes/SmokeVolumeRenderer.js","import":"/engine/render/volumes/SmokeVolumeRenderer.js","sourceHash":"72d31c71d7e7c80be91fb5ac3931c2aec51fff485d368411d4af01a032dd8a2d","subsystem":"engine","recordType":"api-module","id":"module:engine/render/volumes/SmokeVolumeRenderer.js","title":"render/volumes/SmokeVolumeRenderer","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/volumes/SmokeVolumeRenderer.md","moduleTitle":"render/volumes/SmokeVolumeRenderer","source":"engine/render/volumes/SmokeVolumeRenderer.js","import":"/engine/render/volumes/SmokeVolumeRenderer.js","sourceHash":"72d31c71d7e7c80be91fb5ac3931c2aec51fff485d368411d4af01a032dd8a2d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/volumes/SmokeVolumeRenderer.js#0000:createSmokeVolumeRenderer","exportIndex":0,"name":"createSmokeVolumeRenderer","kind":"function","signature":"async createSmokeVolumeRenderer(options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/volumes/UnifiedVolumeRenderer.md","moduleTitle":"render/volumes/UnifiedVolumeRenderer","source":"engine/render/volumes/UnifiedVolumeRenderer.js","import":"/engine/render/volumes/UnifiedVolumeRenderer.js","sourceHash":"1868f2c598c7512c0d6a73dd865d98bb648ae00a1346f1b5c83f292a7b6b92c8","subsystem":"engine","recordType":"api-module","id":"module:engine/render/volumes/UnifiedVolumeRenderer.js","title":"render/volumes/UnifiedVolumeRenderer","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/render/volumes/UnifiedVolumeRenderer.md","moduleTitle":"render/volumes/UnifiedVolumeRenderer","source":"engine/render/volumes/UnifiedVolumeRenderer.js","import":"/engine/render/volumes/UnifiedVolumeRenderer.js","sourceHash":"1868f2c598c7512c0d6a73dd865d98bb648ae00a1346f1b5c83f292a7b6b92c8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/volumes/UnifiedVolumeRenderer.js#0000:UnifiedVolumeRenderer","exportIndex":0,"name":"UnifiedVolumeRenderer","kind":"class","signature":"class UnifiedVolumeRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/volumes/VolumeIntegration.md","moduleTitle":"render/volumes/VolumeIntegration","source":"engine/render/volumes/VolumeIntegration.js","import":"/engine/render/volumes/VolumeIntegration.js","sourceHash":"4130ec95268343649274f700d0ea1666250f0ad548c4d935bf729b32a8873bfc","subsystem":"engine","recordType":"api-module","id":"module:engine/render/volumes/VolumeIntegration.js","title":"render/volumes/VolumeIntegration","summary":"","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/render/volumes/VolumeIntegration.md","moduleTitle":"render/volumes/VolumeIntegration","source":"engine/render/volumes/VolumeIntegration.js","import":"/engine/render/volumes/VolumeIntegration.js","sourceHash":"4130ec95268343649274f700d0ea1666250f0ad548c4d935bf729b32a8873bfc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/volumes/VolumeIntegration.js#0000:VolumeIntegration","exportIndex":0,"name":"VolumeIntegration","kind":"class","signature":"class VolumeIntegration","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/volumes/VolumeIntegration.md","moduleTitle":"render/volumes/VolumeIntegration","source":"engine/render/volumes/VolumeIntegration.js","import":"/engine/render/volumes/VolumeIntegration.js","sourceHash":"4130ec95268343649274f700d0ea1666250f0ad548c4d935bf729b32a8873bfc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/volumes/VolumeIntegration.js#0001:createVolumeIntegration","exportIndex":1,"name":"createVolumeIntegration","kind":"function","signature":"createVolumeIntegration(device, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/volumes/VolumeIntegration.md","moduleTitle":"render/volumes/VolumeIntegration","source":"engine/render/volumes/VolumeIntegration.js","import":"/engine/render/volumes/VolumeIntegration.js","sourceHash":"4130ec95268343649274f700d0ea1666250f0ad548c4d935bf729b32a8873bfc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/volumes/VolumeIntegration.js#0002:VolumeRenderMode","exportIndex":2,"name":"VolumeRenderMode","kind":"re-export","signature":"VolumeRenderMode","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/volumes/index.md","moduleTitle":"render/volumes/index","source":"engine/render/volumes/index.js","import":"/engine/render/volumes/index.js","sourceHash":"f87e26cf6c6ea2d429d0f7508e2bb5db702bacf4d021cb0ff1b7440a3f15f798","subsystem":"engine","recordType":"api-module","id":"module:engine/render/volumes/index.js","title":"render/volumes/index","summary":"Quick factory to create a complete volumetric setup","exportCount":16}
{"schemaVersion":1,"modulePath":"engine/reference/render/volumes/index.md","moduleTitle":"render/volumes/index","source":"engine/render/volumes/index.js","import":"/engine/render/volumes/index.js","sourceHash":"f87e26cf6c6ea2d429d0f7508e2bb5db702bacf4d021cb0ff1b7440a3f15f798","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/volumes/index.js#0000:createVolumetricSystem","exportIndex":0,"name":"createVolumetricSystem","kind":"function","signature":"async createVolumetricSystem(device, options = {})","summary":"Quick factory to create a complete volumetric setup"}
{"schemaVersion":1,"modulePath":"engine/reference/render/volumes/index.md","moduleTitle":"render/volumes/index","source":"engine/render/volumes/index.js","import":"/engine/render/volumes/index.js","sourceHash":"f87e26cf6c6ea2d429d0f7508e2bb5db702bacf4d021cb0ff1b7440a3f15f798","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/volumes/index.js#0001:DEFAULT_PARAMS","exportIndex":1,"name":"DEFAULT_PARAMS","kind":"re-export","signature":"DEFAULT_PARAMS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/volumes/index.md","moduleTitle":"render/volumes/index","source":"engine/render/volumes/index.js","import":"/engine/render/volumes/index.js","sourceHash":"f87e26cf6c6ea2d429d0f7508e2bb5db702bacf4d021cb0ff1b7440a3f15f798","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/volumes/index.js#0002:DualModeRenderer","exportIndex":2,"name":"DualModeRenderer","kind":"re-export","signature":"DualModeRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/volumes/index.md","moduleTitle":"render/volumes/index","source":"engine/render/volumes/index.js","import":"/engine/render/volumes/index.js","sourceHash":"f87e26cf6c6ea2d429d0f7508e2bb5db702bacf4d021cb0ff1b7440a3f15f798","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/volumes/index.js#0003:HybridVolumeSystem","exportIndex":3,"name":"HybridVolumeSystem","kind":"re-export","signature":"HybridVolumeSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/volumes/index.md","moduleTitle":"render/volumes/index","source":"engine/render/volumes/index.js","import":"/engine/render/volumes/index.js","sourceHash":"f87e26cf6c6ea2d429d0f7508e2bb5db702bacf4d021cb0ff1b7440a3f15f798","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/volumes/index.js#0004:LOD_THRESHOLDS","exportIndex":4,"name":"LOD_THRESHOLDS","kind":"re-export","signature":"LOD_THRESHOLDS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/volumes/index.md","moduleTitle":"render/volumes/index","source":"engine/render/volumes/index.js","import":"/engine/render/volumes/index.js","sourceHash":"f87e26cf6c6ea2d429d0f7508e2bb5db702bacf4d021cb0ff1b7440a3f15f798","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/volumes/index.js#0005:ParticleVolumeConnector","exportIndex":5,"name":"ParticleVolumeConnector","kind":"re-export","signature":"ParticleVolumeConnector","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/volumes/index.md","moduleTitle":"render/volumes/index","source":"engine/render/volumes/index.js","import":"/engine/render/volumes/index.js","sourceHash":"f87e26cf6c6ea2d429d0f7508e2bb5db702bacf4d021cb0ff1b7440a3f15f798","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/volumes/index.js#0006:RenderMode","exportIndex":6,"name":"RenderMode","kind":"re-export","signature":"RenderMode","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/volumes/index.md","moduleTitle":"render/volumes/index","source":"engine/render/volumes/index.js","import":"/engine/render/volumes/index.js","sourceHash":"f87e26cf6c6ea2d429d0f7508e2bb5db702bacf4d021cb0ff1b7440a3f15f798","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/volumes/index.js#0007:UnifiedVolumeRenderer","exportIndex":7,"name":"UnifiedVolumeRenderer","kind":"re-export","signature":"UnifiedVolumeRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/volumes/index.md","moduleTitle":"render/volumes/index","source":"engine/render/volumes/index.js","import":"/engine/render/volumes/index.js","sourceHash":"f87e26cf6c6ea2d429d0f7508e2bb5db702bacf4d021cb0ff1b7440a3f15f798","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/volumes/index.js#0008:ViewMode","exportIndex":8,"name":"ViewMode","kind":"re-export","signature":"ViewMode","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/volumes/index.md","moduleTitle":"render/volumes/index","source":"engine/render/volumes/index.js","import":"/engine/render/volumes/index.js","sourceHash":"f87e26cf6c6ea2d429d0f7508e2bb5db702bacf4d021cb0ff1b7440a3f15f798","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/volumes/index.js#0009:VolumeIntegration","exportIndex":9,"name":"VolumeIntegration","kind":"re-export","signature":"VolumeIntegration","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/volumes/index.md","moduleTitle":"render/volumes/index","source":"engine/render/volumes/index.js","import":"/engine/render/volumes/index.js","sourceHash":"f87e26cf6c6ea2d429d0f7508e2bb5db702bacf4d021cb0ff1b7440a3f15f798","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/volumes/index.js#0010:VolumeRenderMode","exportIndex":10,"name":"VolumeRenderMode","kind":"re-export","signature":"VolumeRenderMode","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/volumes/index.md","moduleTitle":"render/volumes/index","source":"engine/render/volumes/index.js","import":"/engine/render/volumes/index.js","sourceHash":"f87e26cf6c6ea2d429d0f7508e2bb5db702bacf4d021cb0ff1b7440a3f15f798","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/volumes/index.js#0011:VolumetricRaymarcher","exportIndex":11,"name":"VolumetricRaymarcher","kind":"re-export","signature":"VolumetricRaymarcher","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/volumes/index.md","moduleTitle":"render/volumes/index","source":"engine/render/volumes/index.js","import":"/engine/render/volumes/index.js","sourceHash":"f87e26cf6c6ea2d429d0f7508e2bb5db702bacf4d021cb0ff1b7440a3f15f798","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/volumes/index.js#0012:createIsoSurfaceVolumeRenderer","exportIndex":12,"name":"createIsoSurfaceVolumeRenderer","kind":"re-export","signature":"createIsoSurfaceVolumeRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/volumes/index.md","moduleTitle":"render/volumes/index","source":"engine/render/volumes/index.js","import":"/engine/render/volumes/index.js","sourceHash":"f87e26cf6c6ea2d429d0f7508e2bb5db702bacf4d021cb0ff1b7440a3f15f798","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/volumes/index.js#0013:createParticleVolumeConnector","exportIndex":13,"name":"createParticleVolumeConnector","kind":"re-export","signature":"createParticleVolumeConnector","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/volumes/index.md","moduleTitle":"render/volumes/index","source":"engine/render/volumes/index.js","import":"/engine/render/volumes/index.js","sourceHash":"f87e26cf6c6ea2d429d0f7508e2bb5db702bacf4d021cb0ff1b7440a3f15f798","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/volumes/index.js#0014:createSmokeVolumeRenderer","exportIndex":14,"name":"createSmokeVolumeRenderer","kind":"re-export","signature":"createSmokeVolumeRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/render/volumes/index.md","moduleTitle":"render/volumes/index","source":"engine/render/volumes/index.js","import":"/engine/render/volumes/index.js","sourceHash":"f87e26cf6c6ea2d429d0f7508e2bb5db702bacf4d021cb0ff1b7440a3f15f798","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/render/volumes/index.js#0015:createVolumeIntegration","exportIndex":15,"name":"createVolumeIntegration","kind":"re-export","signature":"createVolumeIntegration","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/scenes/PhysicsSandboxScene.md","moduleTitle":"scenes/PhysicsSandboxScene","source":"engine/scenes/PhysicsSandboxScene.js","import":"/engine/scenes/PhysicsSandboxScene.js","sourceHash":"b585dad400a5ea82c23e0befef84a55f0b5b7bf4c3466e36adf7af370bc8f481","subsystem":"engine","recordType":"api-module","id":"module:engine/scenes/PhysicsSandboxScene.js","title":"scenes/PhysicsSandboxScene","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/scenes/PhysicsSandboxScene.md","moduleTitle":"scenes/PhysicsSandboxScene","source":"engine/scenes/PhysicsSandboxScene.js","import":"/engine/scenes/PhysicsSandboxScene.js","sourceHash":"b585dad400a5ea82c23e0befef84a55f0b5b7bf4c3466e36adf7af370bc8f481","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/scenes/PhysicsSandboxScene.js#0000:configurePhysicsSandboxScene","exportIndex":0,"name":"configurePhysicsSandboxScene","kind":"function","signature":"configurePhysicsSandboxScene(world, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/SimulationUpdate.md","moduleTitle":"sim/SimulationUpdate","source":"engine/sim/SimulationUpdate.js","import":"/engine/sim/SimulationUpdate.js","sourceHash":"3649bffd9c68f739a609cc69f902a35797b3c6b3f4ada484a986d235dd55c508","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/SimulationUpdate.js","title":"sim/SimulationUpdate","summary":"Step the particle simulation (emission, colliders, physics).","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/sim/SimulationUpdate.md","moduleTitle":"sim/SimulationUpdate","source":"engine/sim/SimulationUpdate.js","import":"/engine/sim/SimulationUpdate.js","sourceHash":"3649bffd9c68f739a609cc69f902a35797b3c6b3f4ada484a986d235dd55c508","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/SimulationUpdate.js#0000:stepParticles","exportIndex":0,"name":"stepParticles","kind":"function","signature":"stepParticles(particles, options)","summary":"Step the particle simulation (emission, colliders, physics)."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/SimulationUpdate.md","moduleTitle":"sim/SimulationUpdate","source":"engine/sim/SimulationUpdate.js","import":"/engine/sim/SimulationUpdate.js","sourceHash":"3649bffd9c68f739a609cc69f902a35797b3c6b3f4ada484a986d235dd55c508","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/SimulationUpdate.js#0001:stepFluid","exportIndex":1,"name":"stepFluid","kind":"function","signature":"stepFluid(smoke, particles, gpuDevice, delta, options = {})","summary":"Step the fluid simulation (density splatting, advection)."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/SimulationUpdate.md","moduleTitle":"sim/SimulationUpdate","source":"engine/sim/SimulationUpdate.js","import":"/engine/sim/SimulationUpdate.js","sourceHash":"3649bffd9c68f739a609cc69f902a35797b3c6b3f4ada484a986d235dd55c508","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/SimulationUpdate.js#0002:stepAllSimulations","exportIndex":2,"name":"stepAllSimulations","kind":"function","signature":"stepAllSimulations(state, delta, entities, options = {})","summary":"Step all simulations in one call."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAiming.md","moduleTitle":"sim/ai/AIAiming","source":"engine/sim/ai/AIAiming.js","import":"/engine/sim/ai/AIAiming.js","sourceHash":"634491d239c2b7d114d0694e802f5848723eca77ffd94099bfed37663c4b9456","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/ai/AIAiming.js","title":"sim/ai/AIAiming","summary":"Create a ray with pre-computed inverse direction for fast intersection tests","exportCount":25}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAiming.md","moduleTitle":"sim/ai/AIAiming","source":"engine/sim/ai/AIAiming.js","import":"/engine/sim/ai/AIAiming.js","sourceHash":"634491d239c2b7d114d0694e802f5848723eca77ffd94099bfed37663c4b9456","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAiming.js#0000:createRay","exportIndex":0,"name":"createRay","kind":"function","signature":"createRay(origin, direction)","summary":"Create a ray with pre-computed inverse direction for fast intersection tests"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAiming.md","moduleTitle":"sim/ai/AIAiming","source":"engine/sim/ai/AIAiming.js","import":"/engine/sim/ai/AIAiming.js","sourceHash":"634491d239c2b7d114d0694e802f5848723eca77ffd94099bfed37663c4b9456","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAiming.js#0001:rayAABBIntersect","exportIndex":1,"name":"rayAABBIntersect","kind":"function","signature":"rayAABBIntersect(ray, aabbMin, aabbMax)","summary":"Ray-AABB intersection using the slab method Used by NVIDIA OptiX and other professional engines"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAiming.md","moduleTitle":"sim/ai/AIAiming","source":"engine/sim/ai/AIAiming.js","import":"/engine/sim/ai/AIAiming.js","sourceHash":"634491d239c2b7d114d0694e802f5848723eca77ffd94099bfed37663c4b9456","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAiming.js#0002:raySphereIntersect","exportIndex":2,"name":"raySphereIntersect","kind":"function","signature":"raySphereIntersect(rayOrigin, rayDir, sphereCenter, radius)","summary":"Ray-sphere intersection using quadratic formula Good for character hitboxes and bounding spheres"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAiming.md","moduleTitle":"sim/ai/AIAiming","source":"engine/sim/ai/AIAiming.js","import":"/engine/sim/ai/AIAiming.js","sourceHash":"634491d239c2b7d114d0694e802f5848723eca77ffd94099bfed37663c4b9456","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAiming.js#0003:hasLineOfSight","exportIndex":3,"name":"hasLineOfSight","kind":"function","signature":"hasLineOfSight(from, to, obstacles, options = {})","summary":"Check line of sight between two points against obstacle list"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAiming.md","moduleTitle":"sim/ai/AIAiming","source":"engine/sim/ai/AIAiming.js","import":"/engine/sim/ai/AIAiming.js","sourceHash":"634491d239c2b7d114d0694e802f5848723eca77ffd94099bfed37663c4b9456","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAiming.js#0004:hasLineOfSightSpheres","exportIndex":4,"name":"hasLineOfSightSpheres","kind":"function","signature":"hasLineOfSightSpheres(from, to, spheres, ignoreIds = [])","summary":"Check line of sight with sphere obstacles (characters)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAiming.md","moduleTitle":"sim/ai/AIAiming","source":"engine/sim/ai/AIAiming.js","import":"/engine/sim/ai/AIAiming.js","sourceHash":"634491d239c2b7d114d0694e802f5848723eca77ffd94099bfed37663c4b9456","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAiming.js#0005:predictiveAim","exportIndex":5,"name":"predictiveAim","kind":"function","signature":"predictiveAim(shooterPos, projectileSpeed, targetPos, targetVel)","summary":"Calculate aim point to intercept a moving target Solves: |P + V×t|² = (S×t)² (quadratic intercept equation)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAiming.md","moduleTitle":"sim/ai/AIAiming","source":"engine/sim/ai/AIAiming.js","import":"/engine/sim/ai/AIAiming.js","sourceHash":"634491d239c2b7d114d0694e802f5848723eca77ffd94099bfed37663c4b9456","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAiming.js#0006:predictiveAimWithAcceleration","exportIndex":6,"name":"predictiveAimWithAcceleration","kind":"function","signature":"predictiveAimWithAcceleration(shooterPos, projectileSpeed, targetPos, targetVel, targetAccel, iterations = 4)","summary":"Iterative predictive aim for accelerating targets"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAiming.md","moduleTitle":"sim/ai/AIAiming","source":"engine/sim/ai/AIAiming.js","import":"/engine/sim/ai/AIAiming.js","sourceHash":"634491d239c2b7d114d0694e802f5848723eca77ffd94099bfed37663c4b9456","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAiming.js#0007:gaussianRandom","exportIndex":7,"name":"gaussianRandom","kind":"function","signature":"gaussianRandom(mean = 0, stdDev = 1, rng = null)","summary":"Generate Gaussian-distributed random number using Box-Muller transform"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAiming.md","moduleTitle":"sim/ai/AIAiming","source":"engine/sim/ai/AIAiming.js","import":"/engine/sim/ai/AIAiming.js","sourceHash":"634491d239c2b7d114d0694e802f5848723eca77ffd94099bfed37663c4b9456","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAiming.js#0008:applyAccuracySpread2D","exportIndex":8,"name":"applyAccuracySpread2D","kind":"function","signature":"applyAccuracySpread2D(aimDirection, spreadAngleRad)","summary":"Apply accuracy spread to aim direction (2D version)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAiming.md","moduleTitle":"sim/ai/AIAiming","source":"engine/sim/ai/AIAiming.js","import":"/engine/sim/ai/AIAiming.js","sourceHash":"634491d239c2b7d114d0694e802f5848723eca77ffd94099bfed37663c4b9456","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAiming.js#0009:applyAccuracySpread3D","exportIndex":9,"name":"applyAccuracySpread3D","kind":"function","signature":"applyAccuracySpread3D(aimDirection, spreadAngleRad)","summary":"Apply accuracy spread to aim direction (3D version) Generates a cone of spread around the aim direction"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAiming.md","moduleTitle":"sim/ai/AIAiming","source":"engine/sim/ai/AIAiming.js","import":"/engine/sim/ai/AIAiming.js","sourceHash":"634491d239c2b7d114d0694e802f5848723eca77ffd94099bfed37663c4b9456","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAiming.js#0010:calculateThreatScore","exportIndex":10,"name":"calculateThreatScore","kind":"function","signature":"calculateThreatScore(npc, target, options = {})","summary":"Calculate threat score for a potential target"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAiming.md","moduleTitle":"sim/ai/AIAiming","source":"engine/sim/ai/AIAiming.js","import":"/engine/sim/ai/AIAiming.js","sourceHash":"634491d239c2b7d114d0694e802f5848723eca77ffd94099bfed37663c4b9456","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAiming.js#0011:selectTarget","exportIndex":11,"name":"selectTarget","kind":"function","signature":"selectTarget(npc, candidates, options = {})","summary":"Select best target from candidates with hysteresis"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAiming.md","moduleTitle":"sim/ai/AIAiming","source":"engine/sim/ai/AIAiming.js","import":"/engine/sim/ai/AIAiming.js","sourceHash":"634491d239c2b7d114d0694e802f5848723eca77ffd94099bfed37663c4b9456","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAiming.js#0012:createTargetMemory","exportIndex":12,"name":"createTargetMemory","kind":"function","signature":"createTargetMemory()","summary":"Create a target memory tracker for an NPC Remembers lost targets for a duration"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAiming.md","moduleTitle":"sim/ai/AIAiming","source":"engine/sim/ai/AIAiming.js","import":"/engine/sim/ai/AIAiming.js","sourceHash":"634491d239c2b7d114d0694e802f5848723eca77ffd94099bfed37663c4b9456","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAiming.js#0013:updateTargetMemory","exportIndex":13,"name":"updateTargetMemory","kind":"function","signature":"updateTargetMemory(memory, visibleTarget, now)","summary":"Update target memory with current perception"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAiming.md","moduleTitle":"sim/ai/AIAiming","source":"engine/sim/ai/AIAiming.js","import":"/engine/sim/ai/AIAiming.js","sourceHash":"634491d239c2b7d114d0694e802f5848723eca77ffd94099bfed37663c4b9456","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAiming.js#0014:getAimPointFromMemory","exportIndex":14,"name":"getAimPointFromMemory","kind":"function","signature":"getAimPointFromMemory(memory, visibleTarget, now)","summary":"Get aim point considering target memory"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAiming.md","moduleTitle":"sim/ai/AIAiming","source":"engine/sim/ai/AIAiming.js","import":"/engine/sim/ai/AIAiming.js","sourceHash":"634491d239c2b7d114d0694e802f5848723eca77ffd94099bfed37663c4b9456","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAiming.js#0015:calculateAccuracyModifier","exportIndex":15,"name":"calculateAccuracyModifier","kind":"function","signature":"calculateAccuracyModifier(params)","summary":"Calculate accuracy modifier based on combat conditions"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAiming.md","moduleTitle":"sim/ai/AIAiming","source":"engine/sim/ai/AIAiming.js","import":"/engine/sim/ai/AIAiming.js","sourceHash":"634491d239c2b7d114d0694e802f5848723eca77ffd94099bfed37663c4b9456","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAiming.js#0016:degToRad","exportIndex":16,"name":"degToRad","kind":"function","signature":"degToRad(deg)","summary":"Convert degrees to radians"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAiming.md","moduleTitle":"sim/ai/AIAiming","source":"engine/sim/ai/AIAiming.js","import":"/engine/sim/ai/AIAiming.js","sourceHash":"634491d239c2b7d114d0694e802f5848723eca77ffd94099bfed37663c4b9456","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAiming.js#0017:radToDeg","exportIndex":17,"name":"radToDeg","kind":"function","signature":"radToDeg(rad)","summary":"Convert radians to degrees"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAiming.md","moduleTitle":"sim/ai/AIAiming","source":"engine/sim/ai/AIAiming.js","import":"/engine/sim/ai/AIAiming.js","sourceHash":"634491d239c2b7d114d0694e802f5848723eca77ffd94099bfed37663c4b9456","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAiming.js#0018:distanceSquared","exportIndex":18,"name":"distanceSquared","kind":"function","signature":"distanceSquared(a, b)","summary":"Squared distance between two points (faster than actual distance)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAiming.md","moduleTitle":"sim/ai/AIAiming","source":"engine/sim/ai/AIAiming.js","import":"/engine/sim/ai/AIAiming.js","sourceHash":"634491d239c2b7d114d0694e802f5848723eca77ffd94099bfed37663c4b9456","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAiming.js#0019:distance","exportIndex":19,"name":"distance","kind":"function","signature":"distance(a, b)","summary":"Actual distance between two points"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAiming.md","moduleTitle":"sim/ai/AIAiming","source":"engine/sim/ai/AIAiming.js","import":"/engine/sim/ai/AIAiming.js","sourceHash":"634491d239c2b7d114d0694e802f5848723eca77ffd94099bfed37663c4b9456","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAiming.js#0020:isWithinRange","exportIndex":20,"name":"isWithinRange","kind":"function","signature":"isWithinRange(a, b, range)","summary":"Check if distance is within range (uses squared comparison)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAiming.md","moduleTitle":"sim/ai/AIAiming","source":"engine/sim/ai/AIAiming.js","import":"/engine/sim/ai/AIAiming.js","sourceHash":"634491d239c2b7d114d0694e802f5848723eca77ffd94099bfed37663c4b9456","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAiming.js#0021:SKILL_LEVELS","exportIndex":21,"name":"SKILL_LEVELS","kind":"constant","signature":"SKILL_LEVELS","summary":"Skill level presets for accuracy parameters"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAiming.md","moduleTitle":"sim/ai/AIAiming","source":"engine/sim/ai/AIAiming.js","import":"/engine/sim/ai/AIAiming.js","sourceHash":"634491d239c2b7d114d0694e802f5848723eca77ffd94099bfed37663c4b9456","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAiming.js#0022:DEFAULT_THREAT_WEIGHTS","exportIndex":22,"name":"DEFAULT_THREAT_WEIGHTS","kind":"constant","signature":"DEFAULT_THREAT_WEIGHTS","summary":"Default threat weight factors"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAiming.md","moduleTitle":"sim/ai/AIAiming","source":"engine/sim/ai/AIAiming.js","import":"/engine/sim/ai/AIAiming.js","sourceHash":"634491d239c2b7d114d0694e802f5848723eca77ffd94099bfed37663c4b9456","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAiming.js#0023:TARGET_SWITCH_THRESHOLD","exportIndex":23,"name":"TARGET_SWITCH_THRESHOLD","kind":"constant","signature":"TARGET_SWITCH_THRESHOLD","summary":"Hysteresis threshold - only switch targets if new threat exceeds by this factor"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAiming.md","moduleTitle":"sim/ai/AIAiming","source":"engine/sim/ai/AIAiming.js","import":"/engine/sim/ai/AIAiming.js","sourceHash":"634491d239c2b7d114d0694e802f5848723eca77ffd94099bfed37663c4b9456","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAiming.js#0024:TARGET_MEMORY_DURATION_MS","exportIndex":24,"name":"TARGET_MEMORY_DURATION_MS","kind":"constant","signature":"TARGET_MEMORY_DURATION_MS","summary":"Time to remember lost targets (ms)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAimingSystem.md","moduleTitle":"sim/ai/AIAimingSystem","source":"engine/sim/ai/AIAimingSystem.js","import":"/engine/sim/ai/AIAimingSystem.js","sourceHash":"ae557fac8b8f7d926adc886061fa9fb4f5759b5ce9520480834159ad0319ad36","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/ai/AIAimingSystem.js","title":"sim/ai/AIAimingSystem","summary":"Create an NPC combat controller","exportCount":47}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAimingSystem.md","moduleTitle":"sim/ai/AIAimingSystem","source":"engine/sim/ai/AIAimingSystem.js","import":"/engine/sim/ai/AIAimingSystem.js","sourceHash":"ae557fac8b8f7d926adc886061fa9fb4f5759b5ce9520480834159ad0319ad36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAimingSystem.js#0000:createNPCCombatController","exportIndex":0,"name":"createNPCCombatController","kind":"function","signature":"createNPCCombatController(config = {})","summary":"Create an NPC combat controller"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAimingSystem.md","moduleTitle":"sim/ai/AIAimingSystem","source":"engine/sim/ai/AIAimingSystem.js","import":"/engine/sim/ai/AIAimingSystem.js","sourceHash":"ae557fac8b8f7d926adc886061fa9fb4f5759b5ce9520480834159ad0319ad36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAimingSystem.js#0001:initNPCWeapons","exportIndex":1,"name":"initNPCWeapons","kind":"function","signature":"initNPCWeapons(npc, weaponList)","summary":"Initialize weapons for an NPC"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAimingSystem.md","moduleTitle":"sim/ai/AIAimingSystem","source":"engine/sim/ai/AIAimingSystem.js","import":"/engine/sim/ai/AIAimingSystem.js","sourceHash":"ae557fac8b8f7d926adc886061fa9fb4f5759b5ce9520480834159ad0319ad36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAimingSystem.js#0002:initNPCMelee","exportIndex":2,"name":"initNPCMelee","kind":"function","signature":"initNPCMelee(npc, config = {})","summary":"Initialize melee for an NPC"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAimingSystem.md","moduleTitle":"sim/ai/AIAimingSystem","source":"engine/sim/ai/AIAimingSystem.js","import":"/engine/sim/ai/AIAimingSystem.js","sourceHash":"ae557fac8b8f7d926adc886061fa9fb4f5759b5ce9520480834159ad0319ad36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAimingSystem.js#0003:createAIAimingSystem","exportIndex":3,"name":"createAIAimingSystem","kind":"function","signature":"createAIAimingSystem(config = {})","summary":"Create the main AI aiming system"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAimingSystem.md","moduleTitle":"sim/ai/AIAimingSystem","source":"engine/sim/ai/AIAimingSystem.js","import":"/engine/sim/ai/AIAimingSystem.js","sourceHash":"ae557fac8b8f7d926adc886061fa9fb4f5759b5ce9520480834159ad0319ad36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAimingSystem.js#0004:registerNPC","exportIndex":4,"name":"registerNPC","kind":"function","signature":"registerNPC(system, npc)","summary":"Register an NPC with the aiming system"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAimingSystem.md","moduleTitle":"sim/ai/AIAimingSystem","source":"engine/sim/ai/AIAimingSystem.js","import":"/engine/sim/ai/AIAimingSystem.js","sourceHash":"ae557fac8b8f7d926adc886061fa9fb4f5759b5ce9520480834159ad0319ad36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAimingSystem.js#0005:unregisterNPC","exportIndex":5,"name":"unregisterNPC","kind":"function","signature":"unregisterNPC(system, npcId)","summary":"Unregister an NPC from the aiming system"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAimingSystem.md","moduleTitle":"sim/ai/AIAimingSystem","source":"engine/sim/ai/AIAimingSystem.js","import":"/engine/sim/ai/AIAimingSystem.js","sourceHash":"ae557fac8b8f7d926adc886061fa9fb4f5759b5ce9520480834159ad0319ad36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAimingSystem.js#0006:updatePlayerPosition","exportIndex":6,"name":"updatePlayerPosition","kind":"function","signature":"updatePlayerPosition(system, position)","summary":"Update player position for LOD calculations"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAimingSystem.md","moduleTitle":"sim/ai/AIAimingSystem","source":"engine/sim/ai/AIAimingSystem.js","import":"/engine/sim/ai/AIAimingSystem.js","sourceHash":"ae557fac8b8f7d926adc886061fa9fb4f5759b5ce9520480834159ad0319ad36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAimingSystem.js#0007:updateAIAimingSystem","exportIndex":7,"name":"updateAIAimingSystem","kind":"function","signature":"updateAIAimingSystem(system, deltaTimeMs, potentialTargets, obstacles)","summary":"Main update function for the AI aiming system"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAimingSystem.md","moduleTitle":"sim/ai/AIAimingSystem","source":"engine/sim/ai/AIAimingSystem.js","import":"/engine/sim/ai/AIAimingSystem.js","sourceHash":"ae557fac8b8f7d926adc886061fa9fb4f5759b5ce9520480834159ad0319ad36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAimingSystem.js#0008:npcFireWeapon","exportIndex":8,"name":"npcFireWeapon","kind":"function","signature":"npcFireWeapon(system, npc, targets, obstacles)","summary":"Command NPC to fire current weapon"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAimingSystem.md","moduleTitle":"sim/ai/AIAimingSystem","source":"engine/sim/ai/AIAimingSystem.js","import":"/engine/sim/ai/AIAimingSystem.js","sourceHash":"ae557fac8b8f7d926adc886061fa9fb4f5759b5ce9520480834159ad0319ad36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAimingSystem.js#0009:npcMeleeAttack","exportIndex":9,"name":"npcMeleeAttack","kind":"function","signature":"npcMeleeAttack(npc, targets)","summary":"Command NPC to perform melee attack"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAimingSystem.md","moduleTitle":"sim/ai/AIAimingSystem","source":"engine/sim/ai/AIAimingSystem.js","import":"/engine/sim/ai/AIAimingSystem.js","sourceHash":"ae557fac8b8f7d926adc886061fa9fb4f5759b5ce9520480834159ad0319ad36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAimingSystem.js#0010:applyDamageToNPC","exportIndex":10,"name":"applyDamageToNPC","kind":"function","signature":"applyDamageToNPC(npc, damage, attackerId)","summary":"Apply damage to NPC"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAimingSystem.md","moduleTitle":"sim/ai/AIAimingSystem","source":"engine/sim/ai/AIAimingSystem.js","import":"/engine/sim/ai/AIAimingSystem.js","sourceHash":"ae557fac8b8f7d926adc886061fa9fb4f5759b5ce9520480834159ad0319ad36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAimingSystem.js#0011:decayDamageMemory","exportIndex":11,"name":"decayDamageMemory","kind":"function","signature":"decayDamageMemory(npc, deltaTimeMs, decayRate = 10)","summary":"Decay recent damage memory over time"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAimingSystem.md","moduleTitle":"sim/ai/AIAimingSystem","source":"engine/sim/ai/AIAimingSystem.js","import":"/engine/sim/ai/AIAimingSystem.js","sourceHash":"ae557fac8b8f7d926adc886061fa9fb4f5759b5ce9520480834159ad0319ad36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAimingSystem.js#0012:getBatchRays","exportIndex":12,"name":"getBatchRays","kind":"function","signature":"getBatchRays(system)","summary":"Get all rays for GPU batch processing"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAimingSystem.md","moduleTitle":"sim/ai/AIAimingSystem","source":"engine/sim/ai/AIAimingSystem.js","import":"/engine/sim/ai/AIAimingSystem.js","sourceHash":"ae557fac8b8f7d926adc886061fa9fb4f5759b5ce9520480834159ad0319ad36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAimingSystem.js#0013:applyBatchRayResults","exportIndex":13,"name":"applyBatchRayResults","kind":"function","signature":"applyBatchRayResults(system, results)","summary":"Apply batch ray results from GPU"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAimingSystem.md","moduleTitle":"sim/ai/AIAimingSystem","source":"engine/sim/ai/AIAimingSystem.js","import":"/engine/sim/ai/AIAimingSystem.js","sourceHash":"ae557fac8b8f7d926adc886061fa9fb4f5759b5ce9520480834159ad0319ad36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAimingSystem.js#0014:COMBAT_STATE","exportIndex":14,"name":"COMBAT_STATE","kind":"constant","signature":"COMBAT_STATE","summary":"NPC combat states"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAimingSystem.md","moduleTitle":"sim/ai/AIAimingSystem","source":"engine/sim/ai/AIAimingSystem.js","import":"/engine/sim/ai/AIAimingSystem.js","sourceHash":"ae557fac8b8f7d926adc886061fa9fb4f5759b5ce9520480834159ad0319ad36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAimingSystem.js#0015:LOD_UPDATE_INTERVALS","exportIndex":15,"name":"LOD_UPDATE_INTERVALS","kind":"constant","signature":"LOD_UPDATE_INTERVALS","summary":"LOD update frequencies (frame intervals)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAimingSystem.md","moduleTitle":"sim/ai/AIAimingSystem","source":"engine/sim/ai/AIAimingSystem.js","import":"/engine/sim/ai/AIAimingSystem.js","sourceHash":"ae557fac8b8f7d926adc886061fa9fb4f5759b5ce9520480834159ad0319ad36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAimingSystem.js#0016:ATTACK_PHASE","exportIndex":16,"name":"ATTACK_PHASE","kind":"re-export","signature":"ATTACK_PHASE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAimingSystem.md","moduleTitle":"sim/ai/AIAimingSystem","source":"engine/sim/ai/AIAimingSystem.js","import":"/engine/sim/ai/AIAimingSystem.js","sourceHash":"ae557fac8b8f7d926adc886061fa9fb4f5759b5ce9520480834159ad0319ad36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAimingSystem.js#0017:SKILL_LEVELS","exportIndex":17,"name":"SKILL_LEVELS","kind":"re-export","signature":"SKILL_LEVELS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAimingSystem.md","moduleTitle":"sim/ai/AIAimingSystem","source":"engine/sim/ai/AIAimingSystem.js","import":"/engine/sim/ai/AIAimingSystem.js","sourceHash":"ae557fac8b8f7d926adc886061fa9fb4f5759b5ce9520480834159ad0319ad36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAimingSystem.js#0018:WEAPON_PRESETS","exportIndex":18,"name":"WEAPON_PRESETS","kind":"re-export","signature":"WEAPON_PRESETS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAimingSystem.md","moduleTitle":"sim/ai/AIAimingSystem","source":"engine/sim/ai/AIAimingSystem.js","import":"/engine/sim/ai/AIAimingSystem.js","sourceHash":"ae557fac8b8f7d926adc886061fa9fb4f5759b5ce9520480834159ad0319ad36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAimingSystem.js#0019:WEAPON_TYPE","exportIndex":19,"name":"WEAPON_TYPE","kind":"re-export","signature":"WEAPON_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAimingSystem.md","moduleTitle":"sim/ai/AIAimingSystem","source":"engine/sim/ai/AIAimingSystem.js","import":"/engine/sim/ai/AIAimingSystem.js","sourceHash":"ae557fac8b8f7d926adc886061fa9fb4f5759b5ce9520480834159ad0319ad36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAimingSystem.js#0020:applyAccuracySpread3D","exportIndex":20,"name":"applyAccuracySpread3D","kind":"re-export","signature":"applyAccuracySpread3D","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAimingSystem.md","moduleTitle":"sim/ai/AIAimingSystem","source":"engine/sim/ai/AIAimingSystem.js","import":"/engine/sim/ai/AIAimingSystem.js","sourceHash":"ae557fac8b8f7d926adc886061fa9fb4f5759b5ce9520480834159ad0319ad36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAimingSystem.js#0021:calculateThreatScore","exportIndex":21,"name":"calculateThreatScore","kind":"re-export","signature":"calculateThreatScore","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAimingSystem.md","moduleTitle":"sim/ai/AIAimingSystem","source":"engine/sim/ai/AIAimingSystem.js","import":"/engine/sim/ai/AIAimingSystem.js","sourceHash":"ae557fac8b8f7d926adc886061fa9fb4f5759b5ce9520480834159ad0319ad36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAimingSystem.js#0022:createGrenade","exportIndex":22,"name":"createGrenade","kind":"re-export","signature":"createGrenade","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAimingSystem.md","moduleTitle":"sim/ai/AIAimingSystem","source":"engine/sim/ai/AIAimingSystem.js","import":"/engine/sim/ai/AIAimingSystem.js","sourceHash":"ae557fac8b8f7d926adc886061fa9fb4f5759b5ce9520480834159ad0319ad36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAimingSystem.js#0023:createMeleeArc","exportIndex":23,"name":"createMeleeArc","kind":"re-export","signature":"createMeleeArc","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAimingSystem.md","moduleTitle":"sim/ai/AIAimingSystem","source":"engine/sim/ai/AIAimingSystem.js","import":"/engine/sim/ai/AIAimingSystem.js","sourceHash":"ae557fac8b8f7d926adc886061fa9fb4f5759b5ce9520480834159ad0319ad36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAimingSystem.js#0024:createMeleeAttackState","exportIndex":24,"name":"createMeleeAttackState","kind":"re-export","signature":"createMeleeAttackState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAimingSystem.md","moduleTitle":"sim/ai/AIAimingSystem","source":"engine/sim/ai/AIAimingSystem.js","import":"/engine/sim/ai/AIAimingSystem.js","sourceHash":"ae557fac8b8f7d926adc886061fa9fb4f5759b5ce9520480834159ad0319ad36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAimingSystem.js#0025:createObjectPool","exportIndex":25,"name":"createObjectPool","kind":"re-export","signature":"createObjectPool","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAimingSystem.md","moduleTitle":"sim/ai/AIAimingSystem","source":"engine/sim/ai/AIAimingSystem.js","import":"/engine/sim/ai/AIAimingSystem.js","sourceHash":"ae557fac8b8f7d926adc886061fa9fb4f5759b5ce9520480834159ad0319ad36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAimingSystem.js#0026:createProjectile","exportIndex":26,"name":"createProjectile","kind":"re-export","signature":"createProjectile","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAimingSystem.md","moduleTitle":"sim/ai/AIAimingSystem","source":"engine/sim/ai/AIAimingSystem.js","import":"/engine/sim/ai/AIAimingSystem.js","sourceHash":"ae557fac8b8f7d926adc886061fa9fb4f5759b5ce9520480834159ad0319ad36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAimingSystem.js#0027:createRay","exportIndex":27,"name":"createRay","kind":"re-export","signature":"createRay","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAimingSystem.md","moduleTitle":"sim/ai/AIAimingSystem","source":"engine/sim/ai/AIAimingSystem.js","import":"/engine/sim/ai/AIAimingSystem.js","sourceHash":"ae557fac8b8f7d926adc886061fa9fb4f5759b5ce9520480834159ad0319ad36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAimingSystem.js#0028:createSpatialHash","exportIndex":28,"name":"createSpatialHash","kind":"re-export","signature":"createSpatialHash","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAimingSystem.md","moduleTitle":"sim/ai/AIAimingSystem","source":"engine/sim/ai/AIAimingSystem.js","import":"/engine/sim/ai/AIAimingSystem.js","sourceHash":"ae557fac8b8f7d926adc886061fa9fb4f5759b5ce9520480834159ad0319ad36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAimingSystem.js#0029:fireHitscan","exportIndex":29,"name":"fireHitscan","kind":"re-export","signature":"fireHitscan","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAimingSystem.md","moduleTitle":"sim/ai/AIAimingSystem","source":"engine/sim/ai/AIAimingSystem.js","import":"/engine/sim/ai/AIAimingSystem.js","sourceHash":"ae557fac8b8f7d926adc886061fa9fb4f5759b5ce9520480834159ad0319ad36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAimingSystem.js#0030:fireShotgun","exportIndex":30,"name":"fireShotgun","kind":"re-export","signature":"fireShotgun","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAimingSystem.md","moduleTitle":"sim/ai/AIAimingSystem","source":"engine/sim/ai/AIAimingSystem.js","import":"/engine/sim/ai/AIAimingSystem.js","sourceHash":"ae557fac8b8f7d926adc886061fa9fb4f5759b5ce9520480834159ad0319ad36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAimingSystem.js#0031:gaussianRandom","exportIndex":31,"name":"gaussianRandom","kind":"re-export","signature":"gaussianRandom","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAimingSystem.md","moduleTitle":"sim/ai/AIAimingSystem","source":"engine/sim/ai/AIAimingSystem.js","import":"/engine/sim/ai/AIAimingSystem.js","sourceHash":"ae557fac8b8f7d926adc886061fa9fb4f5759b5ce9520480834159ad0319ad36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAimingSystem.js#0032:isInCircularAoE","exportIndex":32,"name":"isInCircularAoE","kind":"re-export","signature":"isInCircularAoE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAimingSystem.md","moduleTitle":"sim/ai/AIAimingSystem","source":"engine/sim/ai/AIAimingSystem.js","import":"/engine/sim/ai/AIAimingSystem.js","sourceHash":"ae557fac8b8f7d926adc886061fa9fb4f5759b5ce9520480834159ad0319ad36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAimingSystem.js#0033:isInConeAoE","exportIndex":33,"name":"isInConeAoE","kind":"re-export","signature":"isInConeAoE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAimingSystem.md","moduleTitle":"sim/ai/AIAimingSystem","source":"engine/sim/ai/AIAimingSystem.js","import":"/engine/sim/ai/AIAimingSystem.js","sourceHash":"ae557fac8b8f7d926adc886061fa9fb4f5759b5ce9520480834159ad0319ad36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAimingSystem.js#0034:isInMeleeArc","exportIndex":34,"name":"isInMeleeArc","kind":"re-export","signature":"isInMeleeArc","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAimingSystem.md","moduleTitle":"sim/ai/AIAimingSystem","source":"engine/sim/ai/AIAimingSystem.js","import":"/engine/sim/ai/AIAimingSystem.js","sourceHash":"ae557fac8b8f7d926adc886061fa9fb4f5759b5ce9520480834159ad0319ad36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAimingSystem.js#0035:poolAcquire","exportIndex":35,"name":"poolAcquire","kind":"re-export","signature":"poolAcquire","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAimingSystem.md","moduleTitle":"sim/ai/AIAimingSystem","source":"engine/sim/ai/AIAimingSystem.js","import":"/engine/sim/ai/AIAimingSystem.js","sourceHash":"ae557fac8b8f7d926adc886061fa9fb4f5759b5ce9520480834159ad0319ad36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAimingSystem.js#0036:poolRelease","exportIndex":36,"name":"poolRelease","kind":"re-export","signature":"poolRelease","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAimingSystem.md","moduleTitle":"sim/ai/AIAimingSystem","source":"engine/sim/ai/AIAimingSystem.js","import":"/engine/sim/ai/AIAimingSystem.js","sourceHash":"ae557fac8b8f7d926adc886061fa9fb4f5759b5ce9520480834159ad0319ad36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAimingSystem.js#0037:predictiveAim","exportIndex":37,"name":"predictiveAim","kind":"re-export","signature":"predictiveAim","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAimingSystem.md","moduleTitle":"sim/ai/AIAimingSystem","source":"engine/sim/ai/AIAimingSystem.js","import":"/engine/sim/ai/AIAimingSystem.js","sourceHash":"ae557fac8b8f7d926adc886061fa9fb4f5759b5ce9520480834159ad0319ad36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAimingSystem.js#0038:predictiveAimWithAcceleration","exportIndex":38,"name":"predictiveAimWithAcceleration","kind":"re-export","signature":"predictiveAimWithAcceleration","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAimingSystem.md","moduleTitle":"sim/ai/AIAimingSystem","source":"engine/sim/ai/AIAimingSystem.js","import":"/engine/sim/ai/AIAimingSystem.js","sourceHash":"ae557fac8b8f7d926adc886061fa9fb4f5759b5ce9520480834159ad0319ad36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAimingSystem.js#0039:rayAABBIntersect","exportIndex":39,"name":"rayAABBIntersect","kind":"re-export","signature":"rayAABBIntersect","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAimingSystem.md","moduleTitle":"sim/ai/AIAimingSystem","source":"engine/sim/ai/AIAimingSystem.js","import":"/engine/sim/ai/AIAimingSystem.js","sourceHash":"ae557fac8b8f7d926adc886061fa9fb4f5759b5ce9520480834159ad0319ad36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAimingSystem.js#0040:raySphereIntersect","exportIndex":40,"name":"raySphereIntersect","kind":"re-export","signature":"raySphereIntersect","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAimingSystem.md","moduleTitle":"sim/ai/AIAimingSystem","source":"engine/sim/ai/AIAimingSystem.js","import":"/engine/sim/ai/AIAimingSystem.js","sourceHash":"ae557fac8b8f7d926adc886061fa9fb4f5759b5ce9520480834159ad0319ad36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAimingSystem.js#0041:spatialHashInsert","exportIndex":41,"name":"spatialHashInsert","kind":"re-export","signature":"spatialHashInsert","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAimingSystem.md","moduleTitle":"sim/ai/AIAimingSystem","source":"engine/sim/ai/AIAimingSystem.js","import":"/engine/sim/ai/AIAimingSystem.js","sourceHash":"ae557fac8b8f7d926adc886061fa9fb4f5759b5ce9520480834159ad0319ad36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAimingSystem.js#0042:spatialHashQueryRadius","exportIndex":42,"name":"spatialHashQueryRadius","kind":"re-export","signature":"spatialHashQueryRadius","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAimingSystem.md","moduleTitle":"sim/ai/AIAimingSystem","source":"engine/sim/ai/AIAimingSystem.js","import":"/engine/sim/ai/AIAimingSystem.js","sourceHash":"ae557fac8b8f7d926adc886061fa9fb4f5759b5ce9520480834159ad0319ad36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAimingSystem.js#0043:spatialHashRemove","exportIndex":43,"name":"spatialHashRemove","kind":"re-export","signature":"spatialHashRemove","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAimingSystem.md","moduleTitle":"sim/ai/AIAimingSystem","source":"engine/sim/ai/AIAimingSystem.js","import":"/engine/sim/ai/AIAimingSystem.js","sourceHash":"ae557fac8b8f7d926adc886061fa9fb4f5759b5ce9520480834159ad0319ad36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAimingSystem.js#0044:spatialHashUpdate","exportIndex":44,"name":"spatialHashUpdate","kind":"re-export","signature":"spatialHashUpdate","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAimingSystem.md","moduleTitle":"sim/ai/AIAimingSystem","source":"engine/sim/ai/AIAimingSystem.js","import":"/engine/sim/ai/AIAimingSystem.js","sourceHash":"ae557fac8b8f7d926adc886061fa9fb4f5759b5ce9520480834159ad0319ad36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAimingSystem.js#0045:updateGrenade","exportIndex":45,"name":"updateGrenade","kind":"re-export","signature":"updateGrenade","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIAimingSystem.md","moduleTitle":"sim/ai/AIAimingSystem","source":"engine/sim/ai/AIAimingSystem.js","import":"/engine/sim/ai/AIAimingSystem.js","sourceHash":"ae557fac8b8f7d926adc886061fa9fb4f5759b5ce9520480834159ad0319ad36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIAimingSystem.js#0046:updateProjectile","exportIndex":46,"name":"updateProjectile","kind":"re-export","signature":"updateProjectile","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIBehaviorTree.md","moduleTitle":"sim/ai/AIBehaviorTree","source":"engine/sim/ai/AIBehaviorTree.js","import":"/engine/sim/ai/AIBehaviorTree.js","sourceHash":"eb167158a8bab1a5c5cdb82b1bf9652c120e667117ea7e9190d22f5bacfc6b3b","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/ai/AIBehaviorTree.js","title":"sim/ai/AIBehaviorTree","summary":"Create a Selector node (OR logic) Runs children left-to-right, succeeds if ANY child succeeds","exportCount":24}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIBehaviorTree.md","moduleTitle":"sim/ai/AIBehaviorTree","source":"engine/sim/ai/AIBehaviorTree.js","import":"/engine/sim/ai/AIBehaviorTree.js","sourceHash":"eb167158a8bab1a5c5cdb82b1bf9652c120e667117ea7e9190d22f5bacfc6b3b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIBehaviorTree.js#0000:createSelector","exportIndex":0,"name":"createSelector","kind":"function","signature":"createSelector(name, children = [])","summary":"Create a Selector node (OR logic) Runs children left-to-right, succeeds if ANY child succeeds"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIBehaviorTree.md","moduleTitle":"sim/ai/AIBehaviorTree","source":"engine/sim/ai/AIBehaviorTree.js","import":"/engine/sim/ai/AIBehaviorTree.js","sourceHash":"eb167158a8bab1a5c5cdb82b1bf9652c120e667117ea7e9190d22f5bacfc6b3b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIBehaviorTree.js#0001:createSequence","exportIndex":1,"name":"createSequence","kind":"function","signature":"createSequence(name, children = [])","summary":"Create a Sequence node (AND logic) Runs children left-to-right, fails if ANY child fails"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIBehaviorTree.md","moduleTitle":"sim/ai/AIBehaviorTree","source":"engine/sim/ai/AIBehaviorTree.js","import":"/engine/sim/ai/AIBehaviorTree.js","sourceHash":"eb167158a8bab1a5c5cdb82b1bf9652c120e667117ea7e9190d22f5bacfc6b3b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIBehaviorTree.js#0002:createParallel","exportIndex":2,"name":"createParallel","kind":"function","signature":"createParallel(name, children = [], successThreshold = -1, failureThreshold = 1)","summary":"Create a Parallel node Runs all children simultaneously"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIBehaviorTree.md","moduleTitle":"sim/ai/AIBehaviorTree","source":"engine/sim/ai/AIBehaviorTree.js","import":"/engine/sim/ai/AIBehaviorTree.js","sourceHash":"eb167158a8bab1a5c5cdb82b1bf9652c120e667117ea7e9190d22f5bacfc6b3b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIBehaviorTree.js#0003:createRandomSelector","exportIndex":3,"name":"createRandomSelector","kind":"function","signature":"createRandomSelector(name, children = [])","summary":"Create a Random Selector (picks random child)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIBehaviorTree.md","moduleTitle":"sim/ai/AIBehaviorTree","source":"engine/sim/ai/AIBehaviorTree.js","import":"/engine/sim/ai/AIBehaviorTree.js","sourceHash":"eb167158a8bab1a5c5cdb82b1bf9652c120e667117ea7e9190d22f5bacfc6b3b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIBehaviorTree.js#0004:createInverter","exportIndex":4,"name":"createInverter","kind":"function","signature":"createInverter(name, child)","summary":"Create an Inverter decorator Inverts child result: SUCCESS ↔ FAILURE"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIBehaviorTree.md","moduleTitle":"sim/ai/AIBehaviorTree","source":"engine/sim/ai/AIBehaviorTree.js","import":"/engine/sim/ai/AIBehaviorTree.js","sourceHash":"eb167158a8bab1a5c5cdb82b1bf9652c120e667117ea7e9190d22f5bacfc6b3b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIBehaviorTree.js#0005:createRepeater","exportIndex":5,"name":"createRepeater","kind":"function","signature":"createRepeater(name, child, times = -1)","summary":"Create a Repeater decorator Repeats child N times or until failure"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIBehaviorTree.md","moduleTitle":"sim/ai/AIBehaviorTree","source":"engine/sim/ai/AIBehaviorTree.js","import":"/engine/sim/ai/AIBehaviorTree.js","sourceHash":"eb167158a8bab1a5c5cdb82b1bf9652c120e667117ea7e9190d22f5bacfc6b3b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIBehaviorTree.js#0006:createUntilFail","exportIndex":6,"name":"createUntilFail","kind":"function","signature":"createUntilFail(name, child)","summary":"Create an UntilFail decorator Repeats child until it fails"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIBehaviorTree.md","moduleTitle":"sim/ai/AIBehaviorTree","source":"engine/sim/ai/AIBehaviorTree.js","import":"/engine/sim/ai/AIBehaviorTree.js","sourceHash":"eb167158a8bab1a5c5cdb82b1bf9652c120e667117ea7e9190d22f5bacfc6b3b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIBehaviorTree.js#0007:createUntilSuccess","exportIndex":7,"name":"createUntilSuccess","kind":"function","signature":"createUntilSuccess(name, child)","summary":"Create an UntilSuccess decorator Repeats child until it succeeds"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIBehaviorTree.md","moduleTitle":"sim/ai/AIBehaviorTree","source":"engine/sim/ai/AIBehaviorTree.js","import":"/engine/sim/ai/AIBehaviorTree.js","sourceHash":"eb167158a8bab1a5c5cdb82b1bf9652c120e667117ea7e9190d22f5bacfc6b3b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIBehaviorTree.js#0008:createSucceeder","exportIndex":8,"name":"createSucceeder","kind":"function","signature":"createSucceeder(name, child)","summary":"Create a Succeeder decorator Always returns SUCCESS"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIBehaviorTree.md","moduleTitle":"sim/ai/AIBehaviorTree","source":"engine/sim/ai/AIBehaviorTree.js","import":"/engine/sim/ai/AIBehaviorTree.js","sourceHash":"eb167158a8bab1a5c5cdb82b1bf9652c120e667117ea7e9190d22f5bacfc6b3b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIBehaviorTree.js#0009:createFailer","exportIndex":9,"name":"createFailer","kind":"function","signature":"createFailer(name, child)","summary":"Create a Failer decorator Always returns FAILURE"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIBehaviorTree.md","moduleTitle":"sim/ai/AIBehaviorTree","source":"engine/sim/ai/AIBehaviorTree.js","import":"/engine/sim/ai/AIBehaviorTree.js","sourceHash":"eb167158a8bab1a5c5cdb82b1bf9652c120e667117ea7e9190d22f5bacfc6b3b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIBehaviorTree.js#0010:createCooldown","exportIndex":10,"name":"createCooldown","kind":"function","signature":"createCooldown(name, child, cooldownMs)","summary":"Create a Cooldown decorator Prevents child from running until cooldown expires"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIBehaviorTree.md","moduleTitle":"sim/ai/AIBehaviorTree","source":"engine/sim/ai/AIBehaviorTree.js","import":"/engine/sim/ai/AIBehaviorTree.js","sourceHash":"eb167158a8bab1a5c5cdb82b1bf9652c120e667117ea7e9190d22f5bacfc6b3b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIBehaviorTree.js#0011:createConditionGuard","exportIndex":11,"name":"createConditionGuard","kind":"function","signature":"createConditionGuard(name, child, condition)","summary":"Create a Condition Guard decorator Only runs child if condition is met"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIBehaviorTree.md","moduleTitle":"sim/ai/AIBehaviorTree","source":"engine/sim/ai/AIBehaviorTree.js","import":"/engine/sim/ai/AIBehaviorTree.js","sourceHash":"eb167158a8bab1a5c5cdb82b1bf9652c120e667117ea7e9190d22f5bacfc6b3b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIBehaviorTree.js#0012:createAction","exportIndex":12,"name":"createAction","kind":"function","signature":"createAction(name, action)","summary":"Create an Action leaf node"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIBehaviorTree.md","moduleTitle":"sim/ai/AIBehaviorTree","source":"engine/sim/ai/AIBehaviorTree.js","import":"/engine/sim/ai/AIBehaviorTree.js","sourceHash":"eb167158a8bab1a5c5cdb82b1bf9652c120e667117ea7e9190d22f5bacfc6b3b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIBehaviorTree.js#0013:createCondition","exportIndex":13,"name":"createCondition","kind":"function","signature":"createCondition(name, condition)","summary":"Create a Condition leaf node"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIBehaviorTree.md","moduleTitle":"sim/ai/AIBehaviorTree","source":"engine/sim/ai/AIBehaviorTree.js","import":"/engine/sim/ai/AIBehaviorTree.js","sourceHash":"eb167158a8bab1a5c5cdb82b1bf9652c120e667117ea7e9190d22f5bacfc6b3b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIBehaviorTree.js#0014:createWait","exportIndex":14,"name":"createWait","kind":"function","signature":"createWait(name, durationMs)","summary":"Create a Wait leaf node"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIBehaviorTree.md","moduleTitle":"sim/ai/AIBehaviorTree","source":"engine/sim/ai/AIBehaviorTree.js","import":"/engine/sim/ai/AIBehaviorTree.js","sourceHash":"eb167158a8bab1a5c5cdb82b1bf9652c120e667117ea7e9190d22f5bacfc6b3b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIBehaviorTree.js#0015:createLog","exportIndex":15,"name":"createLog","kind":"function","signature":"createLog(name, message)","summary":"Create a Log leaf node (for debugging)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIBehaviorTree.md","moduleTitle":"sim/ai/AIBehaviorTree","source":"engine/sim/ai/AIBehaviorTree.js","import":"/engine/sim/ai/AIBehaviorTree.js","sourceHash":"eb167158a8bab1a5c5cdb82b1bf9652c120e667117ea7e9190d22f5bacfc6b3b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIBehaviorTree.js#0016:tickNode","exportIndex":16,"name":"tickNode","kind":"function","signature":"tickNode(node, blackboard, deltaTime)","summary":"Tick a behavior tree node"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIBehaviorTree.md","moduleTitle":"sim/ai/AIBehaviorTree","source":"engine/sim/ai/AIBehaviorTree.js","import":"/engine/sim/ai/AIBehaviorTree.js","sourceHash":"eb167158a8bab1a5c5cdb82b1bf9652c120e667117ea7e9190d22f5bacfc6b3b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIBehaviorTree.js#0017:resetNode","exportIndex":17,"name":"resetNode","kind":"function","signature":"resetNode(node)","summary":"Reset a behavior tree node and all children"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIBehaviorTree.md","moduleTitle":"sim/ai/AIBehaviorTree","source":"engine/sim/ai/AIBehaviorTree.js","import":"/engine/sim/ai/AIBehaviorTree.js","sourceHash":"eb167158a8bab1a5c5cdb82b1bf9652c120e667117ea7e9190d22f5bacfc6b3b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIBehaviorTree.js#0018:createTreeRunner","exportIndex":18,"name":"createTreeRunner","kind":"function","signature":"createTreeRunner(rootNode, blackboard)","summary":"Create a behavior tree runner"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIBehaviorTree.md","moduleTitle":"sim/ai/AIBehaviorTree","source":"engine/sim/ai/AIBehaviorTree.js","import":"/engine/sim/ai/AIBehaviorTree.js","sourceHash":"eb167158a8bab1a5c5cdb82b1bf9652c120e667117ea7e9190d22f5bacfc6b3b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIBehaviorTree.js#0019:tickTree","exportIndex":19,"name":"tickTree","kind":"function","signature":"tickTree(runner, deltaTime)","summary":"Tick the behavior tree"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIBehaviorTree.md","moduleTitle":"sim/ai/AIBehaviorTree","source":"engine/sim/ai/AIBehaviorTree.js","import":"/engine/sim/ai/AIBehaviorTree.js","sourceHash":"eb167158a8bab1a5c5cdb82b1bf9652c120e667117ea7e9190d22f5bacfc6b3b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIBehaviorTree.js#0020:createCombatTree","exportIndex":20,"name":"createCombatTree","kind":"function","signature":"createCombatTree(actions)","summary":"Create a common combat behavior tree"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIBehaviorTree.md","moduleTitle":"sim/ai/AIBehaviorTree","source":"engine/sim/ai/AIBehaviorTree.js","import":"/engine/sim/ai/AIBehaviorTree.js","sourceHash":"eb167158a8bab1a5c5cdb82b1bf9652c120e667117ea7e9190d22f5bacfc6b3b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIBehaviorTree.js#0021:NODE_STATUS","exportIndex":21,"name":"NODE_STATUS","kind":"constant","signature":"NODE_STATUS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIBehaviorTree.md","moduleTitle":"sim/ai/AIBehaviorTree","source":"engine/sim/ai/AIBehaviorTree.js","import":"/engine/sim/ai/AIBehaviorTree.js","sourceHash":"eb167158a8bab1a5c5cdb82b1bf9652c120e667117ea7e9190d22f5bacfc6b3b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIBehaviorTree.js#0022:NODE_TYPES","exportIndex":22,"name":"NODE_TYPES","kind":"re-export","signature":"NODE_TYPES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIBehaviorTree.md","moduleTitle":"sim/ai/AIBehaviorTree","source":"engine/sim/ai/AIBehaviorTree.js","import":"/engine/sim/ai/AIBehaviorTree.js","sourceHash":"eb167158a8bab1a5c5cdb82b1bf9652c120e667117ea7e9190d22f5bacfc6b3b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIBehaviorTree.js#0023:getNodeTypeId","exportIndex":23,"name":"getNodeTypeId","kind":"re-export","signature":"getNodeTypeId","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AICover.md","moduleTitle":"sim/ai/AICover","source":"engine/sim/ai/AICover.js","import":"/engine/sim/ai/AICover.js","sourceHash":"1060f329acd8c23cc1ad1addc08216d0145838fa1a379abe293c8320b8c11207","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/ai/AICover.js","title":"sim/ai/AICover","summary":"Create a cover point definition","exportCount":19}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AICover.md","moduleTitle":"sim/ai/AICover","source":"engine/sim/ai/AICover.js","import":"/engine/sim/ai/AICover.js","sourceHash":"1060f329acd8c23cc1ad1addc08216d0145838fa1a379abe293c8320b8c11207","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AICover.js#0000:createCoverPoint","exportIndex":0,"name":"createCoverPoint","kind":"function","signature":"createCoverPoint(position, normal, options = {})","summary":"Create a cover point definition"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AICover.md","moduleTitle":"sim/ai/AICover","source":"engine/sim/ai/AICover.js","import":"/engine/sim/ai/AICover.js","sourceHash":"1060f329acd8c23cc1ad1addc08216d0145838fa1a379abe293c8320b8c11207","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AICover.js#0001:computePeekPositions","exportIndex":1,"name":"computePeekPositions","kind":"function","signature":"computePeekPositions(cover)","summary":"Pre-compute peek positions for a cover point"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AICover.md","moduleTitle":"sim/ai/AICover","source":"engine/sim/ai/AICover.js","import":"/engine/sim/ai/AICover.js","sourceHash":"1060f329acd8c23cc1ad1addc08216d0145838fa1a379abe293c8320b8c11207","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AICover.js#0002:detectCoverPoints","exportIndex":2,"name":"detectCoverPoints","kind":"function","signature":"detectCoverPoints(obstacles, sampleSpacing = 2)","summary":"Find cover points from obstacle geometry"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AICover.md","moduleTitle":"sim/ai/AICover","source":"engine/sim/ai/AICover.js","import":"/engine/sim/ai/AICover.js","sourceHash":"1060f329acd8c23cc1ad1addc08216d0145838fa1a379abe293c8320b8c11207","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AICover.js#0003:scoreCoverPoint","exportIndex":3,"name":"scoreCoverPoint","kind":"function","signature":"scoreCoverPoint(cover, npcPos, threatPos, obstacles, options = {})","summary":"Score a cover point for a given tactical situation"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AICover.md","moduleTitle":"sim/ai/AICover","source":"engine/sim/ai/AICover.js","import":"/engine/sim/ai/AICover.js","sourceHash":"1060f329acd8c23cc1ad1addc08216d0145838fa1a379abe293c8320b8c11207","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AICover.js#0004:findBestCover","exportIndex":4,"name":"findBestCover","kind":"function","signature":"findBestCover(coverPoints, npcPos, threatPos, obstacles, options = {})","summary":"Find best cover point from available options"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AICover.md","moduleTitle":"sim/ai/AICover","source":"engine/sim/ai/AICover.js","import":"/engine/sim/ai/AICover.js","sourceHash":"1060f329acd8c23cc1ad1addc08216d0145838fa1a379abe293c8320b8c11207","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AICover.js#0005:createCoverState","exportIndex":5,"name":"createCoverState","kind":"function","signature":"createCoverState()","summary":"Create NPC cover state tracker"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AICover.md","moduleTitle":"sim/ai/AICover","source":"engine/sim/ai/AICover.js","import":"/engine/sim/ai/AICover.js","sourceHash":"1060f329acd8c23cc1ad1addc08216d0145838fa1a379abe293c8320b8c11207","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AICover.js#0006:enterCover","exportIndex":6,"name":"enterCover","kind":"function","signature":"enterCover(state, cover, npcId)","summary":"Enter cover at a cover point"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AICover.md","moduleTitle":"sim/ai/AICover","source":"engine/sim/ai/AICover.js","import":"/engine/sim/ai/AICover.js","sourceHash":"1060f329acd8c23cc1ad1addc08216d0145838fa1a379abe293c8320b8c11207","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AICover.js#0007:exitCover","exportIndex":7,"name":"exitCover","kind":"function","signature":"exitCover(state)","summary":"Exit current cover"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AICover.md","moduleTitle":"sim/ai/AICover","source":"engine/sim/ai/AICover.js","import":"/engine/sim/ai/AICover.js","sourceHash":"1060f329acd8c23cc1ad1addc08216d0145838fa1a379abe293c8320b8c11207","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AICover.js#0008:startPeek","exportIndex":8,"name":"startPeek","kind":"function","signature":"startPeek(state, action, now)","summary":"Start peek action from cover"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AICover.md","moduleTitle":"sim/ai/AICover","source":"engine/sim/ai/AICover.js","import":"/engine/sim/ai/AICover.js","sourceHash":"1060f329acd8c23cc1ad1addc08216d0145838fa1a379abe293c8320b8c11207","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AICover.js#0009:updateCoverState","exportIndex":9,"name":"updateCoverState","kind":"function","signature":"updateCoverState(state, now)","summary":"Update cover state"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AICover.md","moduleTitle":"sim/ai/AICover","source":"engine/sim/ai/AICover.js","import":"/engine/sim/ai/AICover.js","sourceHash":"1060f329acd8c23cc1ad1addc08216d0145838fa1a379abe293c8320b8c11207","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AICover.js#0010:getCoverShootPosition","exportIndex":10,"name":"getCoverShootPosition","kind":"function","signature":"getCoverShootPosition(state, basePos)","summary":"Get current shoot position based on cover action"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AICover.md","moduleTitle":"sim/ai/AICover","source":"engine/sim/ai/AICover.js","import":"/engine/sim/ai/AICover.js","sourceHash":"1060f329acd8c23cc1ad1addc08216d0145838fa1a379abe293c8320b8c11207","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AICover.js#0011:canShootFromCover","exportIndex":11,"name":"canShootFromCover","kind":"function","signature":"canShootFromCover(state)","summary":"Check if NPC can shoot from current cover state"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AICover.md","moduleTitle":"sim/ai/AICover","source":"engine/sim/ai/AICover.js","import":"/engine/sim/ai/AICover.js","sourceHash":"1060f329acd8c23cc1ad1addc08216d0145838fa1a379abe293c8320b8c11207","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AICover.js#0012:applySuppression","exportIndex":12,"name":"applySuppression","kind":"function","signature":"applySuppression(state, duration, now)","summary":"Apply suppression to an NPC"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AICover.md","moduleTitle":"sim/ai/AICover","source":"engine/sim/ai/AICover.js","import":"/engine/sim/ai/AICover.js","sourceHash":"1060f329acd8c23cc1ad1addc08216d0145838fa1a379abe293c8320b8c11207","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AICover.js#0013:isSuppressed","exportIndex":13,"name":"isSuppressed","kind":"function","signature":"isSuppressed(state, now)","summary":"Check if NPC is suppressed"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AICover.md","moduleTitle":"sim/ai/AICover","source":"engine/sim/ai/AICover.js","import":"/engine/sim/ai/AICover.js","sourceHash":"1060f329acd8c23cc1ad1addc08216d0145838fa1a379abe293c8320b8c11207","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AICover.js#0014:damageCover","exportIndex":14,"name":"damageCover","kind":"function","signature":"damageCover(cover, damage)","summary":"Apply damage to cover point"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AICover.md","moduleTitle":"sim/ai/AICover","source":"engine/sim/ai/AICover.js","import":"/engine/sim/ai/AICover.js","sourceHash":"1060f329acd8c23cc1ad1addc08216d0145838fa1a379abe293c8320b8c11207","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AICover.js#0015:findFlankingPositions","exportIndex":15,"name":"findFlankingPositions","kind":"function","signature":"findFlankingPositions(targetPos, targetFacing, flankDistance, coverPoints, obstacles)","summary":"Find flanking positions around a target"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AICover.md","moduleTitle":"sim/ai/AICover","source":"engine/sim/ai/AICover.js","import":"/engine/sim/ai/AICover.js","sourceHash":"1060f329acd8c23cc1ad1addc08216d0145838fa1a379abe293c8320b8c11207","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AICover.js#0016:findRetreatCover","exportIndex":16,"name":"findRetreatCover","kind":"function","signature":"findRetreatCover(npcPos, threatPos, coverPoints, obstacles, minRetreatDist = 10)","summary":"Find retreat positions away from threat"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AICover.md","moduleTitle":"sim/ai/AICover","source":"engine/sim/ai/AICover.js","import":"/engine/sim/ai/AICover.js","sourceHash":"1060f329acd8c23cc1ad1addc08216d0145838fa1a379abe293c8320b8c11207","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AICover.js#0017:COVER_QUALITY","exportIndex":17,"name":"COVER_QUALITY","kind":"constant","signature":"COVER_QUALITY","summary":"Cover quality thresholds"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AICover.md","moduleTitle":"sim/ai/AICover","source":"engine/sim/ai/AICover.js","import":"/engine/sim/ai/AICover.js","sourceHash":"1060f329acd8c23cc1ad1addc08216d0145838fa1a379abe293c8320b8c11207","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AICover.js#0018:COVER_ACTION","exportIndex":18,"name":"COVER_ACTION","kind":"constant","signature":"COVER_ACTION","summary":"Cover action types"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AICrowd.md","moduleTitle":"sim/ai/AICrowd","source":"engine/sim/ai/AICrowd.js","import":"/engine/sim/ai/AICrowd.js","sourceHash":"1bd559a5b547aedc624190346c5750064e16706e1d26817245aae2ee6f192a36","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/ai/AICrowd.js","title":"sim/ai/AICrowd","summary":"Calculate social force (Helbing model)","exportCount":13}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AICrowd.md","moduleTitle":"sim/ai/AICrowd","source":"engine/sim/ai/AICrowd.js","import":"/engine/sim/ai/AICrowd.js","sourceHash":"1bd559a5b547aedc624190346c5750064e16706e1d26817245aae2ee6f192a36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AICrowd.js#0000:calculateSocialForce","exportIndex":0,"name":"calculateSocialForce","kind":"function","signature":"calculateSocialForce(agent, neighbors, walls, goal)","summary":"Calculate social force (Helbing model)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AICrowd.md","moduleTitle":"sim/ai/AICrowd","source":"engine/sim/ai/AICrowd.js","import":"/engine/sim/ai/AICrowd.js","sourceHash":"1bd559a5b547aedc624190346c5750064e16706e1d26817245aae2ee6f192a36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AICrowd.js#0001:createCrowdAgent","exportIndex":1,"name":"createCrowdAgent","kind":"function","signature":"createCrowdAgent(position, config = {})","summary":"Create crowd agent"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AICrowd.md","moduleTitle":"sim/ai/AICrowd","source":"engine/sim/ai/AICrowd.js","import":"/engine/sim/ai/AICrowd.js","sourceHash":"1bd559a5b547aedc624190346c5750064e16706e1d26817245aae2ee6f192a36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AICrowd.js#0002:createCrowdSystem","exportIndex":2,"name":"createCrowdSystem","kind":"function","signature":"createCrowdSystem(config = {})","summary":"Create crowd system"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AICrowd.md","moduleTitle":"sim/ai/AICrowd","source":"engine/sim/ai/AICrowd.js","import":"/engine/sim/ai/AICrowd.js","sourceHash":"1bd559a5b547aedc624190346c5750064e16706e1d26817245aae2ee6f192a36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AICrowd.js#0003:addCrowdAgent","exportIndex":3,"name":"addCrowdAgent","kind":"function","signature":"addCrowdAgent(crowd, agent)","summary":"Add agent to crowd"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AICrowd.md","moduleTitle":"sim/ai/AICrowd","source":"engine/sim/ai/AICrowd.js","import":"/engine/sim/ai/AICrowd.js","sourceHash":"1bd559a5b547aedc624190346c5750064e16706e1d26817245aae2ee6f192a36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AICrowd.js#0004:removeCrowdAgent","exportIndex":4,"name":"removeCrowdAgent","kind":"function","signature":"removeCrowdAgent(crowd, agentId)","summary":"Remove agent from crowd"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AICrowd.md","moduleTitle":"sim/ai/AICrowd","source":"engine/sim/ai/AICrowd.js","import":"/engine/sim/ai/AICrowd.js","sourceHash":"1bd559a5b547aedc624190346c5750064e16706e1d26817245aae2ee6f192a36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AICrowd.js#0005:addCrowdWall","exportIndex":5,"name":"addCrowdWall","kind":"function","signature":"addCrowdWall(crowd, start, end)","summary":"Add wall to crowd system"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AICrowd.md","moduleTitle":"sim/ai/AICrowd","source":"engine/sim/ai/AICrowd.js","import":"/engine/sim/ai/AICrowd.js","sourceHash":"1bd559a5b547aedc624190346c5750064e16706e1d26817245aae2ee6f192a36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AICrowd.js#0006:addAttractor","exportIndex":6,"name":"addAttractor","kind":"function","signature":"addAttractor(crowd, position, strength, radius)","summary":"Add attractor (draws crowd)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AICrowd.md","moduleTitle":"sim/ai/AICrowd","source":"engine/sim/ai/AICrowd.js","import":"/engine/sim/ai/AICrowd.js","sourceHash":"1bd559a5b547aedc624190346c5750064e16706e1d26817245aae2ee6f192a36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AICrowd.js#0007:triggerPanic","exportIndex":7,"name":"triggerPanic","kind":"function","signature":"triggerPanic(crowd, source, radius, intensity = 1)","summary":"Trigger panic"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AICrowd.md","moduleTitle":"sim/ai/AICrowd","source":"engine/sim/ai/AICrowd.js","import":"/engine/sim/ai/AICrowd.js","sourceHash":"1bd559a5b547aedc624190346c5750064e16706e1d26817245aae2ee6f192a36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AICrowd.js#0008:triggerEvacuation","exportIndex":8,"name":"triggerEvacuation","kind":"function","signature":"triggerEvacuation(crowd)","summary":"Set evacuation mode"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AICrowd.md","moduleTitle":"sim/ai/AICrowd","source":"engine/sim/ai/AICrowd.js","import":"/engine/sim/ai/AICrowd.js","sourceHash":"1bd559a5b547aedc624190346c5750064e16706e1d26817245aae2ee6f192a36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AICrowd.js#0009:updateCrowd","exportIndex":9,"name":"updateCrowd","kind":"function","signature":"updateCrowd(crowd, deltaTime)","summary":"Update crowd simulation"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AICrowd.md","moduleTitle":"sim/ai/AICrowd","source":"engine/sim/ai/AICrowd.js","import":"/engine/sim/ai/AICrowd.js","sourceHash":"1bd559a5b547aedc624190346c5750064e16706e1d26817245aae2ee6f192a36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AICrowd.js#0010:getCrowdStats","exportIndex":10,"name":"getCrowdStats","kind":"function","signature":"getCrowdStats(crowd)","summary":"Get crowd statistics"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AICrowd.md","moduleTitle":"sim/ai/AICrowd","source":"engine/sim/ai/AICrowd.js","import":"/engine/sim/ai/AICrowd.js","sourceHash":"1bd559a5b547aedc624190346c5750064e16706e1d26817245aae2ee6f192a36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AICrowd.js#0011:CROWD_BEHAVIOR","exportIndex":11,"name":"CROWD_BEHAVIOR","kind":"constant","signature":"CROWD_BEHAVIOR","summary":"Crowd behavior modes"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AICrowd.md","moduleTitle":"sim/ai/AICrowd","source":"engine/sim/ai/AICrowd.js","import":"/engine/sim/ai/AICrowd.js","sourceHash":"1bd559a5b547aedc624190346c5750064e16706e1d26817245aae2ee6f192a36","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AICrowd.js#0012:AGENT_STATE","exportIndex":12,"name":"AGENT_STATE","kind":"constant","signature":"AGENT_STATE","summary":"Individual agent states"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIDialogue.md","moduleTitle":"sim/ai/AIDialogue","source":"engine/sim/ai/AIDialogue.js","import":"/engine/sim/ai/AIDialogue.js","sourceHash":"e60add376dceaf9aead5f23e8be9a8d74628b816071d70ad57d02d520703e55e","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/ai/AIDialogue.js","title":"sim/ai/AIDialogue","summary":"Create a dialogue tree","exportCount":13}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIDialogue.md","moduleTitle":"sim/ai/AIDialogue","source":"engine/sim/ai/AIDialogue.js","import":"/engine/sim/ai/AIDialogue.js","sourceHash":"e60add376dceaf9aead5f23e8be9a8d74628b816071d70ad57d02d520703e55e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIDialogue.js#0000:createDialogueTree","exportIndex":0,"name":"createDialogueTree","kind":"function","signature":"createDialogueTree(id, config = {})","summary":"Create a dialogue tree"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIDialogue.md","moduleTitle":"sim/ai/AIDialogue","source":"engine/sim/ai/AIDialogue.js","import":"/engine/sim/ai/AIDialogue.js","sourceHash":"e60add376dceaf9aead5f23e8be9a8d74628b816071d70ad57d02d520703e55e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIDialogue.js#0001:createDialogueNode","exportIndex":1,"name":"createDialogueNode","kind":"function","signature":"createDialogueNode(config)","summary":"Create a dialogue node"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIDialogue.md","moduleTitle":"sim/ai/AIDialogue","source":"engine/sim/ai/AIDialogue.js","import":"/engine/sim/ai/AIDialogue.js","sourceHash":"e60add376dceaf9aead5f23e8be9a8d74628b816071d70ad57d02d520703e55e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIDialogue.js#0002:addDialogueNode","exportIndex":2,"name":"addDialogueNode","kind":"function","signature":"addDialogueNode(tree, node)","summary":"Add node to dialogue tree"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIDialogue.md","moduleTitle":"sim/ai/AIDialogue","source":"engine/sim/ai/AIDialogue.js","import":"/engine/sim/ai/AIDialogue.js","sourceHash":"e60add376dceaf9aead5f23e8be9a8d74628b816071d70ad57d02d520703e55e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIDialogue.js#0003:createDialogueState","exportIndex":3,"name":"createDialogueState","kind":"function","signature":"createDialogueState()","summary":"Create dialogue state for an NPC"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIDialogue.md","moduleTitle":"sim/ai/AIDialogue","source":"engine/sim/ai/AIDialogue.js","import":"/engine/sim/ai/AIDialogue.js","sourceHash":"e60add376dceaf9aead5f23e8be9a8d74628b816071d70ad57d02d520703e55e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIDialogue.js#0004:addDialogueTree","exportIndex":4,"name":"addDialogueTree","kind":"function","signature":"addDialogueTree(state, tree)","summary":"Add dialogue tree to NPC"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIDialogue.md","moduleTitle":"sim/ai/AIDialogue","source":"engine/sim/ai/AIDialogue.js","import":"/engine/sim/ai/AIDialogue.js","sourceHash":"e60add376dceaf9aead5f23e8be9a8d74628b816071d70ad57d02d520703e55e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIDialogue.js#0005:setDialogueFlag","exportIndex":5,"name":"setDialogueFlag","kind":"function","signature":"setDialogueFlag(state, flag, value)","summary":"Set dialogue flag"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIDialogue.md","moduleTitle":"sim/ai/AIDialogue","source":"engine/sim/ai/AIDialogue.js","import":"/engine/sim/ai/AIDialogue.js","sourceHash":"e60add376dceaf9aead5f23e8be9a8d74628b816071d70ad57d02d520703e55e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIDialogue.js#0006:getDialogueFlag","exportIndex":6,"name":"getDialogueFlag","kind":"function","signature":"getDialogueFlag(state, flag, defaultValue = null)","summary":"Get dialogue flag"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIDialogue.md","moduleTitle":"sim/ai/AIDialogue","source":"engine/sim/ai/AIDialogue.js","import":"/engine/sim/ai/AIDialogue.js","sourceHash":"e60add376dceaf9aead5f23e8be9a8d74628b816071d70ad57d02d520703e55e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIDialogue.js#0007:startConversation","exportIndex":7,"name":"startConversation","kind":"function","signature":"startConversation(state, context = {})","summary":"Start conversation with NPC"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIDialogue.md","moduleTitle":"sim/ai/AIDialogue","source":"engine/sim/ai/AIDialogue.js","import":"/engine/sim/ai/AIDialogue.js","sourceHash":"e60add376dceaf9aead5f23e8be9a8d74628b816071d70ad57d02d520703e55e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIDialogue.js#0008:processCurrentNode","exportIndex":8,"name":"processCurrentNode","kind":"function","signature":"processCurrentNode(state, context = {})","summary":"Process current dialogue node"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIDialogue.md","moduleTitle":"sim/ai/AIDialogue","source":"engine/sim/ai/AIDialogue.js","import":"/engine/sim/ai/AIDialogue.js","sourceHash":"e60add376dceaf9aead5f23e8be9a8d74628b816071d70ad57d02d520703e55e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIDialogue.js#0009:selectChoice","exportIndex":9,"name":"selectChoice","kind":"function","signature":"selectChoice(state, choiceIndex, context = {})","summary":"Select player choice"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIDialogue.md","moduleTitle":"sim/ai/AIDialogue","source":"engine/sim/ai/AIDialogue.js","import":"/engine/sim/ai/AIDialogue.js","sourceHash":"e60add376dceaf9aead5f23e8be9a8d74628b816071d70ad57d02d520703e55e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIDialogue.js#0010:continueDialogue","exportIndex":10,"name":"continueDialogue","kind":"function","signature":"continueDialogue(state, context = {})","summary":"Continue to next dialogue (for NPC lines)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIDialogue.md","moduleTitle":"sim/ai/AIDialogue","source":"engine/sim/ai/AIDialogue.js","import":"/engine/sim/ai/AIDialogue.js","sourceHash":"e60add376dceaf9aead5f23e8be9a8d74628b816071d70ad57d02d520703e55e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIDialogue.js#0011:dialogueBuilder","exportIndex":11,"name":"dialogueBuilder","kind":"function","signature":"dialogueBuilder(id)","summary":"Fluent dialogue tree builder"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIDialogue.md","moduleTitle":"sim/ai/AIDialogue","source":"engine/sim/ai/AIDialogue.js","import":"/engine/sim/ai/AIDialogue.js","sourceHash":"e60add376dceaf9aead5f23e8be9a8d74628b816071d70ad57d02d520703e55e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIDialogue.js#0012:NODE_TYPE","exportIndex":12,"name":"NODE_TYPE","kind":"constant","signature":"NODE_TYPE","summary":"Node types"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIDirector.md","moduleTitle":"sim/ai/AIDirector","source":"engine/sim/ai/AIDirector.js","import":"/engine/sim/ai/AIDirector.js","sourceHash":"b10ac27dd06d407530f1d370ffd4856103d7ce037e6eed5b5c5aac55e51d7505","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/ai/AIDirector.js","title":"sim/ai/AIDirector","summary":"Create player state tracker","exportCount":15}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIDirector.md","moduleTitle":"sim/ai/AIDirector","source":"engine/sim/ai/AIDirector.js","import":"/engine/sim/ai/AIDirector.js","sourceHash":"b10ac27dd06d407530f1d370ffd4856103d7ce037e6eed5b5c5aac55e51d7505","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIDirector.js#0000:createPlayerState","exportIndex":0,"name":"createPlayerState","kind":"function","signature":"createPlayerState()","summary":"Create player state tracker"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIDirector.md","moduleTitle":"sim/ai/AIDirector","source":"engine/sim/ai/AIDirector.js","import":"/engine/sim/ai/AIDirector.js","sourceHash":"b10ac27dd06d407530f1d370ffd4856103d7ce037e6eed5b5c5aac55e51d7505","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIDirector.js#0001:updatePlayerState","exportIndex":1,"name":"updatePlayerState","kind":"function","signature":"updatePlayerState(state, data, deltaTime)","summary":"Update player state metrics"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIDirector.md","moduleTitle":"sim/ai/AIDirector","source":"engine/sim/ai/AIDirector.js","import":"/engine/sim/ai/AIDirector.js","sourceHash":"b10ac27dd06d407530f1d370ffd4856103d7ce037e6eed5b5c5aac55e51d7505","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIDirector.js#0002:createPacingController","exportIndex":2,"name":"createPacingController","kind":"function","signature":"createPacingController(config = {})","summary":"Create pacing controller"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIDirector.md","moduleTitle":"sim/ai/AIDirector","source":"engine/sim/ai/AIDirector.js","import":"/engine/sim/ai/AIDirector.js","sourceHash":"b10ac27dd06d407530f1d370ffd4856103d7ce037e6eed5b5c5aac55e51d7505","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIDirector.js#0003:updatePacing","exportIndex":3,"name":"updatePacing","kind":"function","signature":"updatePacing(pacing, playerState, deltaTime)","summary":"Update pacing state"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIDirector.md","moduleTitle":"sim/ai/AIDirector","source":"engine/sim/ai/AIDirector.js","import":"/engine/sim/ai/AIDirector.js","sourceHash":"b10ac27dd06d407530f1d370ffd4856103d7ce037e6eed5b5c5aac55e51d7505","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIDirector.js#0004:createSpawnDirector","exportIndex":4,"name":"createSpawnDirector","kind":"function","signature":"createSpawnDirector(config = {})","summary":"Create spawn director"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIDirector.md","moduleTitle":"sim/ai/AIDirector","source":"engine/sim/ai/AIDirector.js","import":"/engine/sim/ai/AIDirector.js","sourceHash":"b10ac27dd06d407530f1d370ffd4856103d7ce037e6eed5b5c5aac55e51d7505","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIDirector.js#0005:registerSpawnType","exportIndex":5,"name":"registerSpawnType","kind":"function","signature":"registerSpawnType(director, intensity, spawnType)","summary":"Register spawn type"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIDirector.md","moduleTitle":"sim/ai/AIDirector","source":"engine/sim/ai/AIDirector.js","import":"/engine/sim/ai/AIDirector.js","sourceHash":"b10ac27dd06d407530f1d370ffd4856103d7ce037e6eed5b5c5aac55e51d7505","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIDirector.js#0006:addSpawnPoint","exportIndex":6,"name":"addSpawnPoint","kind":"function","signature":"addSpawnPoint(director, point)","summary":"Add spawn point"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIDirector.md","moduleTitle":"sim/ai/AIDirector","source":"engine/sim/ai/AIDirector.js","import":"/engine/sim/ai/AIDirector.js","sourceHash":"b10ac27dd06d407530f1d370ffd4856103d7ce037e6eed5b5c5aac55e51d7505","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIDirector.js#0007:updateSpawnDirector","exportIndex":7,"name":"updateSpawnDirector","kind":"function","signature":"updateSpawnDirector(director, pacing, playerPosition, deltaTime)","summary":"Update spawn director"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIDirector.md","moduleTitle":"sim/ai/AIDirector","source":"engine/sim/ai/AIDirector.js","import":"/engine/sim/ai/AIDirector.js","sourceHash":"b10ac27dd06d407530f1d370ffd4856103d7ce037e6eed5b5c5aac55e51d7505","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIDirector.js#0008:reportSpawnKilled","exportIndex":8,"name":"reportSpawnKilled","kind":"function","signature":"reportSpawnKilled(director, spawnId)","summary":"Report spawn killed"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIDirector.md","moduleTitle":"sim/ai/AIDirector","source":"engine/sim/ai/AIDirector.js","import":"/engine/sim/ai/AIDirector.js","sourceHash":"b10ac27dd06d407530f1d370ffd4856103d7ce037e6eed5b5c5aac55e51d7505","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIDirector.js#0009:createDifficultyScaler","exportIndex":9,"name":"createDifficultyScaler","kind":"function","signature":"createDifficultyScaler(config = {})","summary":"Create difficulty scaler"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIDirector.md","moduleTitle":"sim/ai/AIDirector","source":"engine/sim/ai/AIDirector.js","import":"/engine/sim/ai/AIDirector.js","sourceHash":"b10ac27dd06d407530f1d370ffd4856103d7ce037e6eed5b5c5aac55e51d7505","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIDirector.js#0010:updateDifficulty","exportIndex":10,"name":"updateDifficulty","kind":"function","signature":"updateDifficulty(scaler, playerState, deltaTime)","summary":"Update difficulty based on player performance"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIDirector.md","moduleTitle":"sim/ai/AIDirector","source":"engine/sim/ai/AIDirector.js","import":"/engine/sim/ai/AIDirector.js","sourceHash":"b10ac27dd06d407530f1d370ffd4856103d7ce037e6eed5b5c5aac55e51d7505","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIDirector.js#0011:createAIDirector","exportIndex":11,"name":"createAIDirector","kind":"function","signature":"createAIDirector(config = {})","summary":"Create complete AI Director"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIDirector.md","moduleTitle":"sim/ai/AIDirector","source":"engine/sim/ai/AIDirector.js","import":"/engine/sim/ai/AIDirector.js","sourceHash":"b10ac27dd06d407530f1d370ffd4856103d7ce037e6eed5b5c5aac55e51d7505","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIDirector.js#0012:updateAIDirector","exportIndex":12,"name":"updateAIDirector","kind":"function","signature":"updateAIDirector(director, gameData, deltaTime)","summary":"Update AI Director"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIDirector.md","moduleTitle":"sim/ai/AIDirector","source":"engine/sim/ai/AIDirector.js","import":"/engine/sim/ai/AIDirector.js","sourceHash":"b10ac27dd06d407530f1d370ffd4856103d7ce037e6eed5b5c5aac55e51d7505","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIDirector.js#0013:PACING_STATE","exportIndex":13,"name":"PACING_STATE","kind":"constant","signature":"PACING_STATE","summary":"Pacing states"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIDirector.md","moduleTitle":"sim/ai/AIDirector","source":"engine/sim/ai/AIDirector.js","import":"/engine/sim/ai/AIDirector.js","sourceHash":"b10ac27dd06d407530f1d370ffd4856103d7ce037e6eed5b5c5aac55e51d7505","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIDirector.js#0014:INTENSITY_LEVEL","exportIndex":14,"name":"INTENSITY_LEVEL","kind":"constant","signature":"INTENSITY_LEVEL","summary":"Intensity levels"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEcology.md","moduleTitle":"sim/ai/AIEcology","source":"engine/sim/ai/AIEcology.js","import":"/engine/sim/ai/AIEcology.js","sourceHash":"69bd4af8e6f80748e89bb42d7c08882e3ec9ef0a0072124b04782c1466db257e","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/ai/AIEcology.js","title":"sim/ai/AIEcology","summary":"Create species definition","exportCount":15}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEcology.md","moduleTitle":"sim/ai/AIEcology","source":"engine/sim/ai/AIEcology.js","import":"/engine/sim/ai/AIEcology.js","sourceHash":"69bd4af8e6f80748e89bb42d7c08882e3ec9ef0a0072124b04782c1466db257e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEcology.js#0000:createSpecies","exportIndex":0,"name":"createSpecies","kind":"function","signature":"createSpecies(config)","summary":"Create species definition"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEcology.md","moduleTitle":"sim/ai/AIEcology","source":"engine/sim/ai/AIEcology.js","import":"/engine/sim/ai/AIEcology.js","sourceHash":"69bd4af8e6f80748e89bb42d7c08882e3ec9ef0a0072124b04782c1466db257e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEcology.js#0001:createCreature","exportIndex":1,"name":"createCreature","kind":"function","signature":"createCreature(species, position)","summary":"Create creature instance"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEcology.md","moduleTitle":"sim/ai/AIEcology","source":"engine/sim/ai/AIEcology.js","import":"/engine/sim/ai/AIEcology.js","sourceHash":"69bd4af8e6f80748e89bb42d7c08882e3ec9ef0a0072124b04782c1466db257e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEcology.js#0002:createEcosystem","exportIndex":2,"name":"createEcosystem","kind":"function","signature":"createEcosystem(config = {})","summary":"Create ecosystem manager"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEcology.md","moduleTitle":"sim/ai/AIEcology","source":"engine/sim/ai/AIEcology.js","import":"/engine/sim/ai/AIEcology.js","sourceHash":"69bd4af8e6f80748e89bb42d7c08882e3ec9ef0a0072124b04782c1466db257e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEcology.js#0003:registerSpecies","exportIndex":3,"name":"registerSpecies","kind":"function","signature":"registerSpecies(eco, species)","summary":"Register species in ecosystem"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEcology.md","moduleTitle":"sim/ai/AIEcology","source":"engine/sim/ai/AIEcology.js","import":"/engine/sim/ai/AIEcology.js","sourceHash":"69bd4af8e6f80748e89bb42d7c08882e3ec9ef0a0072124b04782c1466db257e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEcology.js#0004:spawnCreature","exportIndex":4,"name":"spawnCreature","kind":"function","signature":"spawnCreature(eco, speciesId, position)","summary":"Spawn creature in ecosystem"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEcology.md","moduleTitle":"sim/ai/AIEcology","source":"engine/sim/ai/AIEcology.js","import":"/engine/sim/ai/AIEcology.js","sourceHash":"69bd4af8e6f80748e89bb42d7c08882e3ec9ef0a0072124b04782c1466db257e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEcology.js#0005:removeCreature","exportIndex":5,"name":"removeCreature","kind":"function","signature":"removeCreature(eco, creatureId, cause = \"natural\")","summary":"Remove creature from ecosystem"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEcology.md","moduleTitle":"sim/ai/AIEcology","source":"engine/sim/ai/AIEcology.js","import":"/engine/sim/ai/AIEcology.js","sourceHash":"69bd4af8e6f80748e89bb42d7c08882e3ec9ef0a0072124b04782c1466db257e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEcology.js#0006:createFoodSource","exportIndex":6,"name":"createFoodSource","kind":"function","signature":"createFoodSource(eco, position, type, nutrition)","summary":"Create food source"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEcology.md","moduleTitle":"sim/ai/AIEcology","source":"engine/sim/ai/AIEcology.js","import":"/engine/sim/ai/AIEcology.js","sourceHash":"69bd4af8e6f80748e89bb42d7c08882e3ec9ef0a0072124b04782c1466db257e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEcology.js#0007:consumeFood","exportIndex":7,"name":"consumeFood","kind":"function","signature":"consumeFood(eco, foodId, amount)","summary":"Consume food source"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEcology.md","moduleTitle":"sim/ai/AIEcology","source":"engine/sim/ai/AIEcology.js","import":"/engine/sim/ai/AIEcology.js","sourceHash":"69bd4af8e6f80748e89bb42d7c08882e3ec9ef0a0072124b04782c1466db257e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEcology.js#0008:createPack","exportIndex":8,"name":"createPack","kind":"function","signature":"createPack(eco, speciesId, leaderId)","summary":"Create pack/herd"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEcology.md","moduleTitle":"sim/ai/AIEcology","source":"engine/sim/ai/AIEcology.js","import":"/engine/sim/ai/AIEcology.js","sourceHash":"69bd4af8e6f80748e89bb42d7c08882e3ec9ef0a0072124b04782c1466db257e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEcology.js#0009:addToPack","exportIndex":9,"name":"addToPack","kind":"function","signature":"addToPack(eco, packId, creatureId)","summary":"Add creature to pack"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEcology.md","moduleTitle":"sim/ai/AIEcology","source":"engine/sim/ai/AIEcology.js","import":"/engine/sim/ai/AIEcology.js","sourceHash":"69bd4af8e6f80748e89bb42d7c08882e3ec9ef0a0072124b04782c1466db257e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEcology.js#0010:updateCreature","exportIndex":10,"name":"updateCreature","kind":"function","signature":"updateCreature(eco, creature, deltaHours)","summary":"Update creature behavior"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEcology.md","moduleTitle":"sim/ai/AIEcology","source":"engine/sim/ai/AIEcology.js","import":"/engine/sim/ai/AIEcology.js","sourceHash":"69bd4af8e6f80748e89bb42d7c08882e3ec9ef0a0072124b04782c1466db257e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEcology.js#0011:updateEcosystem","exportIndex":11,"name":"updateEcosystem","kind":"function","signature":"updateEcosystem(eco, deltaHours)","summary":"Update entire ecosystem"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEcology.md","moduleTitle":"sim/ai/AIEcology","source":"engine/sim/ai/AIEcology.js","import":"/engine/sim/ai/AIEcology.js","sourceHash":"69bd4af8e6f80748e89bb42d7c08882e3ec9ef0a0072124b04782c1466db257e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEcology.js#0012:getEcosystemStats","exportIndex":12,"name":"getEcosystemStats","kind":"function","signature":"getEcosystemStats(eco)","summary":"Get ecosystem statistics"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEcology.md","moduleTitle":"sim/ai/AIEcology","source":"engine/sim/ai/AIEcology.js","import":"/engine/sim/ai/AIEcology.js","sourceHash":"69bd4af8e6f80748e89bb42d7c08882e3ec9ef0a0072124b04782c1466db257e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEcology.js#0013:SPECIES_ROLE","exportIndex":13,"name":"SPECIES_ROLE","kind":"constant","signature":"SPECIES_ROLE","summary":"Species roles in ecosystem"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEcology.md","moduleTitle":"sim/ai/AIEcology","source":"engine/sim/ai/AIEcology.js","import":"/engine/sim/ai/AIEcology.js","sourceHash":"69bd4af8e6f80748e89bb42d7c08882e3ec9ef0a0072124b04782c1466db257e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEcology.js#0014:CREATURE_STATE","exportIndex":14,"name":"CREATURE_STATE","kind":"constant","signature":"CREATURE_STATE","summary":"Activity states"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEconomy.md","moduleTitle":"sim/ai/AIEconomy","source":"engine/sim/ai/AIEconomy.js","import":"/engine/sim/ai/AIEconomy.js","sourceHash":"b8f0adf00b470a6d0b1bb7d4179819db63d609eb3ceceb2a01e24b7e8ad78089","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/ai/AIEconomy.js","title":"sim/ai/AIEconomy","summary":"Create resource definition","exportCount":22}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEconomy.md","moduleTitle":"sim/ai/AIEconomy","source":"engine/sim/ai/AIEconomy.js","import":"/engine/sim/ai/AIEconomy.js","sourceHash":"b8f0adf00b470a6d0b1bb7d4179819db63d609eb3ceceb2a01e24b7e8ad78089","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEconomy.js#0000:createResource","exportIndex":0,"name":"createResource","kind":"function","signature":"createResource(config)","summary":"Create resource definition"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEconomy.md","moduleTitle":"sim/ai/AIEconomy","source":"engine/sim/ai/AIEconomy.js","import":"/engine/sim/ai/AIEconomy.js","sourceHash":"b8f0adf00b470a6d0b1bb7d4179819db63d609eb3ceceb2a01e24b7e8ad78089","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEconomy.js#0001:createMarket","exportIndex":1,"name":"createMarket","kind":"function","signature":"createMarket(config = {})","summary":"Create a market (trading location)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEconomy.md","moduleTitle":"sim/ai/AIEconomy","source":"engine/sim/ai/AIEconomy.js","import":"/engine/sim/ai/AIEconomy.js","sourceHash":"b8f0adf00b470a6d0b1bb7d4179819db63d609eb3ceceb2a01e24b7e8ad78089","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEconomy.js#0002:initMarketResource","exportIndex":2,"name":"initMarketResource","kind":"function","signature":"initMarketResource(market, resource, initialSupply = 100, baseDemand = 10)","summary":"Initialize resource in market"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEconomy.md","moduleTitle":"sim/ai/AIEconomy","source":"engine/sim/ai/AIEconomy.js","import":"/engine/sim/ai/AIEconomy.js","sourceHash":"b8f0adf00b470a6d0b1bb7d4179819db63d609eb3ceceb2a01e24b7e8ad78089","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEconomy.js#0003:calculatePrice","exportIndex":3,"name":"calculatePrice","kind":"function","signature":"calculatePrice(market, resourceId)","summary":"Calculate current price based on supply/demand"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEconomy.md","moduleTitle":"sim/ai/AIEconomy","source":"engine/sim/ai/AIEconomy.js","import":"/engine/sim/ai/AIEconomy.js","sourceHash":"b8f0adf00b470a6d0b1bb7d4179819db63d609eb3ceceb2a01e24b7e8ad78089","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEconomy.js#0004:updateMarketPrices","exportIndex":4,"name":"updateMarketPrices","kind":"function","signature":"updateMarketPrices(market, deltaHours)","summary":"Update market prices"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEconomy.md","moduleTitle":"sim/ai/AIEconomy","source":"engine/sim/ai/AIEconomy.js","import":"/engine/sim/ai/AIEconomy.js","sourceHash":"b8f0adf00b470a6d0b1bb7d4179819db63d609eb3ceceb2a01e24b7e8ad78089","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEconomy.js#0005:buyFromMarket","exportIndex":5,"name":"buyFromMarket","kind":"function","signature":"buyFromMarket(market, resourceId, quantity, buyer)","summary":"Execute a buy transaction"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEconomy.md","moduleTitle":"sim/ai/AIEconomy","source":"engine/sim/ai/AIEconomy.js","import":"/engine/sim/ai/AIEconomy.js","sourceHash":"b8f0adf00b470a6d0b1bb7d4179819db63d609eb3ceceb2a01e24b7e8ad78089","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEconomy.js#0006:sellToMarket","exportIndex":6,"name":"sellToMarket","kind":"function","signature":"sellToMarket(market, resourceId, quantity, seller)","summary":"Execute a sell transaction"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEconomy.md","moduleTitle":"sim/ai/AIEconomy","source":"engine/sim/ai/AIEconomy.js","import":"/engine/sim/ai/AIEconomy.js","sourceHash":"b8f0adf00b470a6d0b1bb7d4179819db63d609eb3ceceb2a01e24b7e8ad78089","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEconomy.js#0007:createInventory","exportIndex":7,"name":"createInventory","kind":"function","signature":"createInventory(capacity = 100)","summary":"Create inventory"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEconomy.md","moduleTitle":"sim/ai/AIEconomy","source":"engine/sim/ai/AIEconomy.js","import":"/engine/sim/ai/AIEconomy.js","sourceHash":"b8f0adf00b470a6d0b1bb7d4179819db63d609eb3ceceb2a01e24b7e8ad78089","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEconomy.js#0008:addToInventory","exportIndex":8,"name":"addToInventory","kind":"function","signature":"addToInventory(inventory, resourceId, quantity, resourceDef)","summary":"Add items to inventory"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEconomy.md","moduleTitle":"sim/ai/AIEconomy","source":"engine/sim/ai/AIEconomy.js","import":"/engine/sim/ai/AIEconomy.js","sourceHash":"b8f0adf00b470a6d0b1bb7d4179819db63d609eb3ceceb2a01e24b7e8ad78089","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEconomy.js#0009:removeFromInventory","exportIndex":9,"name":"removeFromInventory","kind":"function","signature":"removeFromInventory(inventory, resourceId, quantity, resourceDef)","summary":"Remove items from inventory"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEconomy.md","moduleTitle":"sim/ai/AIEconomy","source":"engine/sim/ai/AIEconomy.js","import":"/engine/sim/ai/AIEconomy.js","sourceHash":"b8f0adf00b470a6d0b1bb7d4179819db63d609eb3ceceb2a01e24b7e8ad78089","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEconomy.js#0010:createRecipe","exportIndex":10,"name":"createRecipe","kind":"function","signature":"createRecipe(config)","summary":"Create crafting recipe"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEconomy.md","moduleTitle":"sim/ai/AIEconomy","source":"engine/sim/ai/AIEconomy.js","import":"/engine/sim/ai/AIEconomy.js","sourceHash":"b8f0adf00b470a6d0b1bb7d4179819db63d609eb3ceceb2a01e24b7e8ad78089","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEconomy.js#0011:canCraft","exportIndex":11,"name":"canCraft","kind":"function","signature":"canCraft(recipe, inventory, skills = {})","summary":"Check if can craft recipe"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEconomy.md","moduleTitle":"sim/ai/AIEconomy","source":"engine/sim/ai/AIEconomy.js","import":"/engine/sim/ai/AIEconomy.js","sourceHash":"b8f0adf00b470a6d0b1bb7d4179819db63d609eb3ceceb2a01e24b7e8ad78089","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEconomy.js#0012:craft","exportIndex":12,"name":"craft","kind":"function","signature":"craft(recipe, inventory, resourceDefs, skills = {})","summary":"Execute crafting"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEconomy.md","moduleTitle":"sim/ai/AIEconomy","source":"engine/sim/ai/AIEconomy.js","import":"/engine/sim/ai/AIEconomy.js","sourceHash":"b8f0adf00b470a6d0b1bb7d4179819db63d609eb3ceceb2a01e24b7e8ad78089","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEconomy.js#0013:createProductionBuilding","exportIndex":13,"name":"createProductionBuilding","kind":"function","signature":"createProductionBuilding(config)","summary":"Create production building"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEconomy.md","moduleTitle":"sim/ai/AIEconomy","source":"engine/sim/ai/AIEconomy.js","import":"/engine/sim/ai/AIEconomy.js","sourceHash":"b8f0adf00b470a6d0b1bb7d4179819db63d609eb3ceceb2a01e24b7e8ad78089","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEconomy.js#0014:updateProductionBuilding","exportIndex":14,"name":"updateProductionBuilding","kind":"function","signature":"updateProductionBuilding(building, recipes, resourceDefs, deltaHours)","summary":"Update production building"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEconomy.md","moduleTitle":"sim/ai/AIEconomy","source":"engine/sim/ai/AIEconomy.js","import":"/engine/sim/ai/AIEconomy.js","sourceHash":"b8f0adf00b470a6d0b1bb7d4179819db63d609eb3ceceb2a01e24b7e8ad78089","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEconomy.js#0015:createEconomyManager","exportIndex":15,"name":"createEconomyManager","kind":"function","signature":"createEconomyManager()","summary":"Create economy manager"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEconomy.md","moduleTitle":"sim/ai/AIEconomy","source":"engine/sim/ai/AIEconomy.js","import":"/engine/sim/ai/AIEconomy.js","sourceHash":"b8f0adf00b470a6d0b1bb7d4179819db63d609eb3ceceb2a01e24b7e8ad78089","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEconomy.js#0016:registerResource","exportIndex":16,"name":"registerResource","kind":"function","signature":"registerResource(manager, resource)","summary":"Register resource"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEconomy.md","moduleTitle":"sim/ai/AIEconomy","source":"engine/sim/ai/AIEconomy.js","import":"/engine/sim/ai/AIEconomy.js","sourceHash":"b8f0adf00b470a6d0b1bb7d4179819db63d609eb3ceceb2a01e24b7e8ad78089","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEconomy.js#0017:registerRecipe","exportIndex":17,"name":"registerRecipe","kind":"function","signature":"registerRecipe(manager, recipe)","summary":"Register recipe"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEconomy.md","moduleTitle":"sim/ai/AIEconomy","source":"engine/sim/ai/AIEconomy.js","import":"/engine/sim/ai/AIEconomy.js","sourceHash":"b8f0adf00b470a6d0b1bb7d4179819db63d609eb3ceceb2a01e24b7e8ad78089","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEconomy.js#0018:updateEconomy","exportIndex":18,"name":"updateEconomy","kind":"function","signature":"updateEconomy(manager, deltaHours)","summary":"Update entire economy"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEconomy.md","moduleTitle":"sim/ai/AIEconomy","source":"engine/sim/ai/AIEconomy.js","import":"/engine/sim/ai/AIEconomy.js","sourceHash":"b8f0adf00b470a6d0b1bb7d4179819db63d609eb3ceceb2a01e24b7e8ad78089","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEconomy.js#0019:RESOURCE_CATEGORY","exportIndex":19,"name":"RESOURCE_CATEGORY","kind":"constant","signature":"RESOURCE_CATEGORY","summary":"Resource categories"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEconomy.md","moduleTitle":"sim/ai/AIEconomy","source":"engine/sim/ai/AIEconomy.js","import":"/engine/sim/ai/AIEconomy.js","sourceHash":"b8f0adf00b470a6d0b1bb7d4179819db63d609eb3ceceb2a01e24b7e8ad78089","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEconomy.js#0020:MARKET_TREND","exportIndex":20,"name":"MARKET_TREND","kind":"constant","signature":"MARKET_TREND","summary":"Market trend directions"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEconomy.md","moduleTitle":"sim/ai/AIEconomy","source":"engine/sim/ai/AIEconomy.js","import":"/engine/sim/ai/AIEconomy.js","sourceHash":"b8f0adf00b470a6d0b1bb7d4179819db63d609eb3ceceb2a01e24b7e8ad78089","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEconomy.js#0021:PRESET_RESOURCES","exportIndex":21,"name":"PRESET_RESOURCES","kind":"constant","signature":"PRESET_RESOURCES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEvasion.md","moduleTitle":"sim/ai/AIEvasion","source":"engine/sim/ai/AIEvasion.js","import":"/engine/sim/ai/AIEvasion.js","sourceHash":"7c4c3237b4789b534aab9867498323f5592f7d7c79cfb6fb9a4e17c855c19186","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/ai/AIEvasion.js","title":"sim/ai/AIEvasion","summary":"Create evasion state for an NPC","exportCount":15}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEvasion.md","moduleTitle":"sim/ai/AIEvasion","source":"engine/sim/ai/AIEvasion.js","import":"/engine/sim/ai/AIEvasion.js","sourceHash":"7c4c3237b4789b534aab9867498323f5592f7d7c79cfb6fb9a4e17c855c19186","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEvasion.js#0000:createEvasionState","exportIndex":0,"name":"createEvasionState","kind":"function","signature":"createEvasionState(params = {})","summary":"Create evasion state for an NPC"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEvasion.md","moduleTitle":"sim/ai/AIEvasion","source":"engine/sim/ai/AIEvasion.js","import":"/engine/sim/ai/AIEvasion.js","sourceHash":"7c4c3237b4789b534aab9867498323f5592f7d7c79cfb6fb9a4e17c855c19186","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEvasion.js#0001:startDodge","exportIndex":1,"name":"startDodge","kind":"function","signature":"startDodge(state, dodgeType, npcPos, npcFacing, now)","summary":"Attempt to dodge in a direction"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEvasion.md","moduleTitle":"sim/ai/AIEvasion","source":"engine/sim/ai/AIEvasion.js","import":"/engine/sim/ai/AIEvasion.js","sourceHash":"7c4c3237b4789b534aab9867498323f5592f7d7c79cfb6fb9a4e17c855c19186","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEvasion.js#0002:updateEvasion","exportIndex":2,"name":"updateEvasion","kind":"function","signature":"updateEvasion(state, now)","summary":"Update evasion state"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEvasion.md","moduleTitle":"sim/ai/AIEvasion","source":"engine/sim/ai/AIEvasion.js","import":"/engine/sim/ai/AIEvasion.js","sourceHash":"7c4c3237b4789b534aab9867498323f5592f7d7c79cfb6fb9a4e17c855c19186","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEvasion.js#0003:isEvading","exportIndex":3,"name":"isEvading","kind":"function","signature":"isEvading(state)","summary":"Check if NPC is currently evading"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEvasion.md","moduleTitle":"sim/ai/AIEvasion","source":"engine/sim/ai/AIEvasion.js","import":"/engine/sim/ai/AIEvasion.js","sourceHash":"7c4c3237b4789b534aab9867498323f5592f7d7c79cfb6fb9a4e17c855c19186","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEvasion.js#0004:canDodge","exportIndex":4,"name":"canDodge","kind":"function","signature":"canDodge(state, now)","summary":"Check if NPC can dodge"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEvasion.md","moduleTitle":"sim/ai/AIEvasion","source":"engine/sim/ai/AIEvasion.js","import":"/engine/sim/ai/AIEvasion.js","sourceHash":"7c4c3237b4789b534aab9867498323f5592f7d7c79cfb6fb9a4e17c855c19186","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEvasion.js#0005:updateStrafe","exportIndex":5,"name":"updateStrafe","kind":"function","signature":"updateStrafe(state, npcFacing, deltaTime)","summary":"Update strafe behavior"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEvasion.md","moduleTitle":"sim/ai/AIEvasion","source":"engine/sim/ai/AIEvasion.js","import":"/engine/sim/ai/AIEvasion.js","sourceHash":"7c4c3237b4789b534aab9867498323f5592f7d7c79cfb6fb9a4e17c855c19186","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEvasion.js#0006:setStrafeDirection","exportIndex":6,"name":"setStrafeDirection","kind":"function","signature":"setStrafeDirection(state, direction)","summary":"Set explicit strafe direction"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEvasion.md","moduleTitle":"sim/ai/AIEvasion","source":"engine/sim/ai/AIEvasion.js","import":"/engine/sim/ai/AIEvasion.js","sourceHash":"7c4c3237b4789b534aab9867498323f5592f7d7c79cfb6fb9a4e17c855c19186","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEvasion.js#0007:reactToThreat","exportIndex":7,"name":"reactToThreat","kind":"function","signature":"reactToThreat(state, npcPos, npcFacing, threatDir, now, options = {})","summary":"React to incoming threat (projectile, attack)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEvasion.md","moduleTitle":"sim/ai/AIEvasion","source":"engine/sim/ai/AIEvasion.js","import":"/engine/sim/ai/AIEvasion.js","sourceHash":"7c4c3237b4789b534aab9867498323f5592f7d7c79cfb6fb9a4e17c855c19186","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEvasion.js#0008:checkProjectileThreats","exportIndex":8,"name":"checkProjectileThreats","kind":"function","signature":"checkProjectileThreats(state, npcPos, npcFacing, projectiles, now)","summary":"Check for incoming projectiles and react"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEvasion.md","moduleTitle":"sim/ai/AIEvasion","source":"engine/sim/ai/AIEvasion.js","import":"/engine/sim/ai/AIEvasion.js","sourceHash":"7c4c3237b4789b534aab9867498323f5592f7d7c79cfb6fb9a4e17c855c19186","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEvasion.js#0009:checkGrenadeThreats","exportIndex":9,"name":"checkGrenadeThreats","kind":"function","signature":"checkGrenadeThreats(state, npcPos, npcFacing, grenades, now)","summary":"Check for grenades and react"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEvasion.md","moduleTitle":"sim/ai/AIEvasion","source":"engine/sim/ai/AIEvasion.js","import":"/engine/sim/ai/AIEvasion.js","sourceHash":"7c4c3237b4789b534aab9867498323f5592f7d7c79cfb6fb9a4e17c855c19186","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEvasion.js#0010:generateCombatMovement","exportIndex":10,"name":"generateCombatMovement","kind":"function","signature":"generateCombatMovement(state, npcPos, targetPos, deltaTimeMs)","summary":"Generate unpredictable movement pattern"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEvasion.md","moduleTitle":"sim/ai/AIEvasion","source":"engine/sim/ai/AIEvasion.js","import":"/engine/sim/ai/AIEvasion.js","sourceHash":"7c4c3237b4789b534aab9867498323f5592f7d7c79cfb6fb9a4e17c855c19186","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEvasion.js#0011:circleStrafe","exportIndex":11,"name":"circleStrafe","kind":"function","signature":"circleStrafe(npcPos, targetPos, direction, speed)","summary":"Calculate circle-strafe velocity around target"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEvasion.md","moduleTitle":"sim/ai/AIEvasion","source":"engine/sim/ai/AIEvasion.js","import":"/engine/sim/ai/AIEvasion.js","sourceHash":"7c4c3237b4789b534aab9867498323f5592f7d7c79cfb6fb9a4e17c855c19186","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEvasion.js#0012:getEvasionParamsForSkill","exportIndex":12,"name":"getEvasionParamsForSkill","kind":"function","signature":"getEvasionParamsForSkill(skill)","summary":"Get evasion parameters for skill level"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEvasion.md","moduleTitle":"sim/ai/AIEvasion","source":"engine/sim/ai/AIEvasion.js","import":"/engine/sim/ai/AIEvasion.js","sourceHash":"7c4c3237b4789b534aab9867498323f5592f7d7c79cfb6fb9a4e17c855c19186","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEvasion.js#0013:EVASION_TYPE","exportIndex":13,"name":"EVASION_TYPE","kind":"constant","signature":"EVASION_TYPE","summary":"Evasion action types"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIEvasion.md","moduleTitle":"sim/ai/AIEvasion","source":"engine/sim/ai/AIEvasion.js","import":"/engine/sim/ai/AIEvasion.js","sourceHash":"7c4c3237b4789b534aab9867498323f5592f7d7c79cfb6fb9a4e17c855c19186","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIEvasion.js#0014:DEFAULT_EVASION_PARAMS","exportIndex":14,"name":"DEFAULT_EVASION_PARAMS","kind":"constant","signature":"DEFAULT_EVASION_PARAMS","summary":"Default evasion parameters"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIFaction.md","moduleTitle":"sim/ai/AIFaction","source":"engine/sim/ai/AIFaction.js","import":"/engine/sim/ai/AIFaction.js","sourceHash":"75f7eae497b4e4f998467e7745f9ac65bfc7deccd0f826ebf2d820b62712697f","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/ai/AIFaction.js","title":"sim/ai/AIFaction","summary":"Create a faction","exportCount":23}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIFaction.md","moduleTitle":"sim/ai/AIFaction","source":"engine/sim/ai/AIFaction.js","import":"/engine/sim/ai/AIFaction.js","sourceHash":"75f7eae497b4e4f998467e7745f9ac65bfc7deccd0f826ebf2d820b62712697f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIFaction.js#0000:createFaction","exportIndex":0,"name":"createFaction","kind":"function","signature":"createFaction(config)","summary":"Create a faction"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIFaction.md","moduleTitle":"sim/ai/AIFaction","source":"engine/sim/ai/AIFaction.js","import":"/engine/sim/ai/AIFaction.js","sourceHash":"75f7eae497b4e4f998467e7745f9ac65bfc7deccd0f826ebf2d820b62712697f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIFaction.js#0001:createFactionManager","exportIndex":1,"name":"createFactionManager","kind":"function","signature":"createFactionManager()","summary":"Create faction manager"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIFaction.md","moduleTitle":"sim/ai/AIFaction","source":"engine/sim/ai/AIFaction.js","import":"/engine/sim/ai/AIFaction.js","sourceHash":"75f7eae497b4e4f998467e7745f9ac65bfc7deccd0f826ebf2d820b62712697f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIFaction.js#0002:registerFaction","exportIndex":2,"name":"registerFaction","kind":"function","signature":"registerFaction(manager, faction)","summary":"Register a faction"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIFaction.md","moduleTitle":"sim/ai/AIFaction","source":"engine/sim/ai/AIFaction.js","import":"/engine/sim/ai/AIFaction.js","sourceHash":"75f7eae497b4e4f998467e7745f9ac65bfc7deccd0f826ebf2d820b62712697f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIFaction.js#0003:getEntityFaction","exportIndex":3,"name":"getEntityFaction","kind":"function","signature":"getEntityFaction(manager, entityId)","summary":"Get entity's faction"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIFaction.md","moduleTitle":"sim/ai/AIFaction","source":"engine/sim/ai/AIFaction.js","import":"/engine/sim/ai/AIFaction.js","sourceHash":"75f7eae497b4e4f998467e7745f9ac65bfc7deccd0f826ebf2d820b62712697f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIFaction.js#0004:addToFaction","exportIndex":4,"name":"addToFaction","kind":"function","signature":"addToFaction(manager, entityId, factionId)","summary":"Add entity to faction"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIFaction.md","moduleTitle":"sim/ai/AIFaction","source":"engine/sim/ai/AIFaction.js","import":"/engine/sim/ai/AIFaction.js","sourceHash":"75f7eae497b4e4f998467e7745f9ac65bfc7deccd0f826ebf2d820b62712697f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIFaction.js#0005:setDiplomaticStance","exportIndex":5,"name":"setDiplomaticStance","kind":"function","signature":"setDiplomaticStance(manager, factionA, factionB, stance)","summary":"Set diplomatic stance between factions"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIFaction.md","moduleTitle":"sim/ai/AIFaction","source":"engine/sim/ai/AIFaction.js","import":"/engine/sim/ai/AIFaction.js","sourceHash":"75f7eae497b4e4f998467e7745f9ac65bfc7deccd0f826ebf2d820b62712697f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIFaction.js#0006:getDiplomaticStance","exportIndex":6,"name":"getDiplomaticStance","kind":"function","signature":"getDiplomaticStance(manager, factionA, factionB)","summary":"Get diplomatic stance between factions"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIFaction.md","moduleTitle":"sim/ai/AIFaction","source":"engine/sim/ai/AIFaction.js","import":"/engine/sim/ai/AIFaction.js","sourceHash":"75f7eae497b4e4f998467e7745f9ac65bfc7deccd0f826ebf2d820b62712697f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIFaction.js#0007:areFactionsHostile","exportIndex":7,"name":"areFactionsHostile","kind":"function","signature":"areFactionsHostile(manager, factionA, factionB)","summary":"Check if factions are hostile"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIFaction.md","moduleTitle":"sim/ai/AIFaction","source":"engine/sim/ai/AIFaction.js","import":"/engine/sim/ai/AIFaction.js","sourceHash":"75f7eae497b4e4f998467e7745f9ac65bfc7deccd0f826ebf2d820b62712697f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIFaction.js#0008:areFactionsAllied","exportIndex":8,"name":"areFactionsAllied","kind":"function","signature":"areFactionsAllied(manager, factionA, factionB)","summary":"Check if factions are allied"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIFaction.md","moduleTitle":"sim/ai/AIFaction","source":"engine/sim/ai/AIFaction.js","import":"/engine/sim/ai/AIFaction.js","sourceHash":"75f7eae497b4e4f998467e7745f9ac65bfc7deccd0f826ebf2d820b62712697f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIFaction.js#0009:areEntitiesHostile","exportIndex":9,"name":"areEntitiesHostile","kind":"function","signature":"areEntitiesHostile(manager, entityA, entityB)","summary":"Check if two entities are hostile to each other"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIFaction.md","moduleTitle":"sim/ai/AIFaction","source":"engine/sim/ai/AIFaction.js","import":"/engine/sim/ai/AIFaction.js","sourceHash":"75f7eae497b4e4f998467e7745f9ac65bfc7deccd0f826ebf2d820b62712697f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIFaction.js#0010:modifyPlayerReputation","exportIndex":10,"name":"modifyPlayerReputation","kind":"function","signature":"modifyPlayerReputation(manager, factionId, delta)","summary":"Modify player reputation with faction"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIFaction.md","moduleTitle":"sim/ai/AIFaction","source":"engine/sim/ai/AIFaction.js","import":"/engine/sim/ai/AIFaction.js","sourceHash":"75f7eae497b4e4f998467e7745f9ac65bfc7deccd0f826ebf2d820b62712697f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIFaction.js#0011:getPlayerReputationLevel","exportIndex":11,"name":"getPlayerReputationLevel","kind":"function","signature":"getPlayerReputationLevel(manager, factionId)","summary":"Get player reputation level with faction"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIFaction.md","moduleTitle":"sim/ai/AIFaction","source":"engine/sim/ai/AIFaction.js","import":"/engine/sim/ai/AIFaction.js","sourceHash":"75f7eae497b4e4f998467e7745f9ac65bfc7deccd0f826ebf2d820b62712697f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIFaction.js#0012:canAccessFactionService","exportIndex":12,"name":"canAccessFactionService","kind":"function","signature":"canAccessFactionService(manager, factionId, service)","summary":"Check if player can access faction services"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIFaction.md","moduleTitle":"sim/ai/AIFaction","source":"engine/sim/ai/AIFaction.js","import":"/engine/sim/ai/AIFaction.js","sourceHash":"75f7eae497b4e4f998467e7745f9ac65bfc7deccd0f826ebf2d820b62712697f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIFaction.js#0013:createTreaty","exportIndex":13,"name":"createTreaty","kind":"function","signature":"createTreaty(config)","summary":"Create a treaty"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIFaction.md","moduleTitle":"sim/ai/AIFaction","source":"engine/sim/ai/AIFaction.js","import":"/engine/sim/ai/AIFaction.js","sourceHash":"75f7eae497b4e4f998467e7745f9ac65bfc7deccd0f826ebf2d820b62712697f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIFaction.js#0014:proposeTreaty","exportIndex":14,"name":"proposeTreaty","kind":"function","signature":"proposeTreaty(manager, treaty)","summary":"Propose treaty"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIFaction.md","moduleTitle":"sim/ai/AIFaction","source":"engine/sim/ai/AIFaction.js","import":"/engine/sim/ai/AIFaction.js","sourceHash":"75f7eae497b4e4f998467e7745f9ac65bfc7deccd0f826ebf2d820b62712697f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIFaction.js#0015:declareWar","exportIndex":15,"name":"declareWar","kind":"function","signature":"declareWar(manager, aggressor, target)","summary":"Declare war"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIFaction.md","moduleTitle":"sim/ai/AIFaction","source":"engine/sim/ai/AIFaction.js","import":"/engine/sim/ai/AIFaction.js","sourceHash":"75f7eae497b4e4f998467e7745f9ac65bfc7deccd0f826ebf2d820b62712697f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIFaction.js#0016:claimTerritory","exportIndex":16,"name":"claimTerritory","kind":"function","signature":"claimTerritory(manager, factionId, territoryId)","summary":"Claim territory for faction"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIFaction.md","moduleTitle":"sim/ai/AIFaction","source":"engine/sim/ai/AIFaction.js","import":"/engine/sim/ai/AIFaction.js","sourceHash":"75f7eae497b4e4f998467e7745f9ac65bfc7deccd0f826ebf2d820b62712697f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIFaction.js#0017:getTerritoryOwner","exportIndex":17,"name":"getTerritoryOwner","kind":"function","signature":"getTerritoryOwner(manager, territoryId)","summary":"Get territory owner"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIFaction.md","moduleTitle":"sim/ai/AIFaction","source":"engine/sim/ai/AIFaction.js","import":"/engine/sim/ai/AIFaction.js","sourceHash":"75f7eae497b4e4f998467e7745f9ac65bfc7deccd0f826ebf2d820b62712697f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIFaction.js#0018:calculateFactionPower","exportIndex":18,"name":"calculateFactionPower","kind":"function","signature":"calculateFactionPower(manager, factionId)","summary":"Calculate faction power"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIFaction.md","moduleTitle":"sim/ai/AIFaction","source":"engine/sim/ai/AIFaction.js","import":"/engine/sim/ai/AIFaction.js","sourceHash":"75f7eae497b4e4f998467e7745f9ac65bfc7deccd0f826ebf2d820b62712697f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIFaction.js#0019:DIPLOMATIC_STANCE","exportIndex":19,"name":"DIPLOMATIC_STANCE","kind":"constant","signature":"DIPLOMATIC_STANCE","summary":"Diplomatic stance"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIFaction.md","moduleTitle":"sim/ai/AIFaction","source":"engine/sim/ai/AIFaction.js","import":"/engine/sim/ai/AIFaction.js","sourceHash":"75f7eae497b4e4f998467e7745f9ac65bfc7deccd0f826ebf2d820b62712697f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIFaction.js#0020:REPUTATION_LEVEL","exportIndex":20,"name":"REPUTATION_LEVEL","kind":"constant","signature":"REPUTATION_LEVEL","summary":"Reputation thresholds - from AISchema"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIFaction.md","moduleTitle":"sim/ai/AIFaction","source":"engine/sim/ai/AIFaction.js","import":"/engine/sim/ai/AIFaction.js","sourceHash":"75f7eae497b4e4f998467e7745f9ac65bfc7deccd0f826ebf2d820b62712697f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIFaction.js#0021:TREATY_TYPE","exportIndex":21,"name":"TREATY_TYPE","kind":"constant","signature":"TREATY_TYPE","summary":"Treaty types"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIFaction.md","moduleTitle":"sim/ai/AIFaction","source":"engine/sim/ai/AIFaction.js","import":"/engine/sim/ai/AIFaction.js","sourceHash":"75f7eae497b4e4f998467e7745f9ac65bfc7deccd0f826ebf2d820b62712697f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIFaction.js#0022:getReputationLevel","exportIndex":22,"name":"getReputationLevel","kind":"re-export","signature":"getReputationLevel","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIFormation.md","moduleTitle":"sim/ai/AIFormation","source":"engine/sim/ai/AIFormation.js","import":"/engine/sim/ai/AIFormation.js","sourceHash":"a83d400bb417fc0e2e26ff4d7efa21ea855c379f336a6b523076077b90b4a6f0","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/ai/AIFormation.js","title":"sim/ai/AIFormation","summary":"Create formation definition","exportCount":13}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIFormation.md","moduleTitle":"sim/ai/AIFormation","source":"engine/sim/ai/AIFormation.js","import":"/engine/sim/ai/AIFormation.js","sourceHash":"a83d400bb417fc0e2e26ff4d7efa21ea855c379f336a6b523076077b90b4a6f0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIFormation.js#0000:createFormation","exportIndex":0,"name":"createFormation","kind":"function","signature":"createFormation(type, options = {})","summary":"Create formation definition"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIFormation.md","moduleTitle":"sim/ai/AIFormation","source":"engine/sim/ai/AIFormation.js","import":"/engine/sim/ai/AIFormation.js","sourceHash":"a83d400bb417fc0e2e26ff4d7efa21ea855c379f336a6b523076077b90b4a6f0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIFormation.js#0001:generateFormationSlots","exportIndex":1,"name":"generateFormationSlots","kind":"function","signature":"generateFormationSlots(formation, unitCount)","summary":"Generate formation slot positions"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIFormation.md","moduleTitle":"sim/ai/AIFormation","source":"engine/sim/ai/AIFormation.js","import":"/engine/sim/ai/AIFormation.js","sourceHash":"a83d400bb417fc0e2e26ff4d7efa21ea855c379f336a6b523076077b90b4a6f0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIFormation.js#0002:createFormationManager","exportIndex":2,"name":"createFormationManager","kind":"function","signature":"createFormationManager(formation)","summary":"Create formation manager for a group"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIFormation.md","moduleTitle":"sim/ai/AIFormation","source":"engine/sim/ai/AIFormation.js","import":"/engine/sim/ai/AIFormation.js","sourceHash":"a83d400bb417fc0e2e26ff4d7efa21ea855c379f336a6b523076077b90b4a6f0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIFormation.js#0003:assignToFormation","exportIndex":3,"name":"assignToFormation","kind":"function","signature":"assignToFormation(manager, unitId, isLeader = false)","summary":"Assign unit to formation slot"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIFormation.md","moduleTitle":"sim/ai/AIFormation","source":"engine/sim/ai/AIFormation.js","import":"/engine/sim/ai/AIFormation.js","sourceHash":"a83d400bb417fc0e2e26ff4d7efa21ea855c379f336a6b523076077b90b4a6f0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIFormation.js#0004:removeFromFormation","exportIndex":4,"name":"removeFromFormation","kind":"function","signature":"removeFromFormation(manager, unitId)","summary":"Remove unit from formation"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIFormation.md","moduleTitle":"sim/ai/AIFormation","source":"engine/sim/ai/AIFormation.js","import":"/engine/sim/ai/AIFormation.js","sourceHash":"a83d400bb417fc0e2e26ff4d7efa21ea855c379f336a6b523076077b90b4a6f0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIFormation.js#0005:getFormationPosition","exportIndex":5,"name":"getFormationPosition","kind":"function","signature":"getFormationPosition(manager, unitId)","summary":"Get unit's target position in formation"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIFormation.md","moduleTitle":"sim/ai/AIFormation","source":"engine/sim/ai/AIFormation.js","import":"/engine/sim/ai/AIFormation.js","sourceHash":"a83d400bb417fc0e2e26ff4d7efa21ea855c379f336a6b523076077b90b4a6f0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIFormation.js#0006:moveFormation","exportIndex":6,"name":"moveFormation","kind":"function","signature":"moveFormation(manager, targetCenter, targetFacing = null)","summary":"Move formation to target"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIFormation.md","moduleTitle":"sim/ai/AIFormation","source":"engine/sim/ai/AIFormation.js","import":"/engine/sim/ai/AIFormation.js","sourceHash":"a83d400bb417fc0e2e26ff4d7efa21ea855c379f336a6b523076077b90b4a6f0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIFormation.js#0007:updateFormationMovement","exportIndex":7,"name":"updateFormationMovement","kind":"function","signature":"updateFormationMovement(manager, deltaTime)","summary":"Update formation movement"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIFormation.md","moduleTitle":"sim/ai/AIFormation","source":"engine/sim/ai/AIFormation.js","import":"/engine/sim/ai/AIFormation.js","sourceHash":"a83d400bb417fc0e2e26ff4d7efa21ea855c379f336a6b523076077b90b4a6f0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIFormation.js#0008:changeFormation","exportIndex":8,"name":"changeFormation","kind":"function","signature":"changeFormation(manager, newType, options = {})","summary":"Change formation type"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIFormation.md","moduleTitle":"sim/ai/AIFormation","source":"engine/sim/ai/AIFormation.js","import":"/engine/sim/ai/AIFormation.js","sourceHash":"a83d400bb417fc0e2e26ff4d7efa21ea855c379f336a6b523076077b90b4a6f0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIFormation.js#0009:getAllFormationPositions","exportIndex":9,"name":"getAllFormationPositions","kind":"function","signature":"getAllFormationPositions(manager)","summary":"Get all unit target positions"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIFormation.md","moduleTitle":"sim/ai/AIFormation","source":"engine/sim/ai/AIFormation.js","import":"/engine/sim/ai/AIFormation.js","sourceHash":"a83d400bb417fc0e2e26ff4d7efa21ea855c379f336a6b523076077b90b4a6f0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIFormation.js#0010:isFormationComplete","exportIndex":10,"name":"isFormationComplete","kind":"function","signature":"isFormationComplete(manager, currentPositions, threshold = 1)","summary":"Check if formation is formed up"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIFormation.md","moduleTitle":"sim/ai/AIFormation","source":"engine/sim/ai/AIFormation.js","import":"/engine/sim/ai/AIFormation.js","sourceHash":"a83d400bb417fc0e2e26ff4d7efa21ea855c379f336a6b523076077b90b4a6f0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIFormation.js#0011:FORMATION_TYPE","exportIndex":11,"name":"FORMATION_TYPE","kind":"constant","signature":"FORMATION_TYPE","summary":"Formation patterns"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIFormation.md","moduleTitle":"sim/ai/AIFormation","source":"engine/sim/ai/AIFormation.js","import":"/engine/sim/ai/AIFormation.js","sourceHash":"a83d400bb417fc0e2e26ff4d7efa21ea855c379f336a6b523076077b90b4a6f0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIFormation.js#0012:PRESET_FORMATIONS","exportIndex":12,"name":"PRESET_FORMATIONS","kind":"constant","signature":"PRESET_FORMATIONS","summary":"Create preset formations for common scenarios"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIHitDetection.md","moduleTitle":"sim/ai/AIHitDetection","source":"engine/sim/ai/AIHitDetection.js","import":"/engine/sim/ai/AIHitDetection.js","sourceHash":"da03ef9c7c457e989acd8ef5ebb8d0aaaf40886d98802999e85c78b6a1957ac4","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/ai/AIHitDetection.js","title":"sim/ai/AIHitDetection","summary":"Spatial hash for efficient broad-phase collision detection","exportCount":11}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIHitDetection.md","moduleTitle":"sim/ai/AIHitDetection","source":"engine/sim/ai/AIHitDetection.js","import":"/engine/sim/ai/AIHitDetection.js","sourceHash":"da03ef9c7c457e989acd8ef5ebb8d0aaaf40886d98802999e85c78b6a1957ac4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIHitDetection.js#0000:SpatialHash","exportIndex":0,"name":"SpatialHash","kind":"class","signature":"class SpatialHash","summary":"Spatial hash for efficient broad-phase collision detection"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIHitDetection.md","moduleTitle":"sim/ai/AIHitDetection","source":"engine/sim/ai/AIHitDetection.js","import":"/engine/sim/ai/AIHitDetection.js","sourceHash":"da03ef9c7c457e989acd8ef5ebb8d0aaaf40886d98802999e85c78b6a1957ac4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIHitDetection.js#0001:sweptSphereSphere","exportIndex":1,"name":"sweptSphereSphere","kind":"function","signature":"sweptSphereSphere(sphereStart, sphereEnd, sphereRadius, targetCenter, targetRadius)","summary":"Swept sphere vs static sphere intersection Finds time t in [0,1] when moving sphere first touches static sphere"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIHitDetection.md","moduleTitle":"sim/ai/AIHitDetection","source":"engine/sim/ai/AIHitDetection.js","import":"/engine/sim/ai/AIHitDetection.js","sourceHash":"da03ef9c7c457e989acd8ef5ebb8d0aaaf40886d98802999e85c78b6a1957ac4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIHitDetection.js#0002:sweptSphereSphereMoving","exportIndex":2,"name":"sweptSphereSphereMoving","kind":"function","signature":"sweptSphereSphereMoving(sphereA, sphereB)","summary":"Swept sphere vs moving sphere intersection Handles both objects moving (relative velocity approach)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIHitDetection.md","moduleTitle":"sim/ai/AIHitDetection","source":"engine/sim/ai/AIHitDetection.js","import":"/engine/sim/ai/AIHitDetection.js","sourceHash":"da03ef9c7c457e989acd8ef5ebb8d0aaaf40886d98802999e85c78b6a1957ac4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIHitDetection.js#0003:capsuleSphereIntersect","exportIndex":3,"name":"capsuleSphereIntersect","kind":"function","signature":"capsuleSphereIntersect(capsuleStart, capsuleEnd, capsuleRadius, targetCenter, targetRadius)","summary":"Swept capsule collision (projectile path as line segment) Creates a capsule from start to end position with given radius"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIHitDetection.md","moduleTitle":"sim/ai/AIHitDetection","source":"engine/sim/ai/AIHitDetection.js","import":"/engine/sim/ai/AIHitDetection.js","sourceHash":"da03ef9c7c457e989acd8ef5ebb8d0aaaf40886d98802999e85c78b6a1957ac4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIHitDetection.js#0004:calculateDamageFalloff","exportIndex":4,"name":"calculateDamageFalloff","kind":"function","signature":"calculateDamageFalloff(baseDamage, distance, radius, falloffType = FALLOFF_TYPE.LINEAR, options = {})","summary":"Calculate damage with distance falloff"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIHitDetection.md","moduleTitle":"sim/ai/AIHitDetection","source":"engine/sim/ai/AIHitDetection.js","import":"/engine/sim/ai/AIHitDetection.js","sourceHash":"da03ef9c7c457e989acd8ef5ebb8d0aaaf40886d98802999e85c78b6a1957ac4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIHitDetection.js#0005:getAoETargets","exportIndex":5,"name":"getAoETargets","kind":"function","signature":"getAoETargets(center, radius, targets, options = {})","summary":"Find all targets within an Area of Effect"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIHitDetection.md","moduleTitle":"sim/ai/AIHitDetection","source":"engine/sim/ai/AIHitDetection.js","import":"/engine/sim/ai/AIHitDetection.js","sourceHash":"da03ef9c7c457e989acd8ef5ebb8d0aaaf40886d98802999e85c78b6a1957ac4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIHitDetection.js#0006:getConeTargets","exportIndex":6,"name":"getConeTargets","kind":"function","signature":"getConeTargets(origin, direction, halfAngle, range, targets, options = {})","summary":"Cone-shaped AoE (dragon breath, flamethrower)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIHitDetection.md","moduleTitle":"sim/ai/AIHitDetection","source":"engine/sim/ai/AIHitDetection.js","import":"/engine/sim/ai/AIHitDetection.js","sourceHash":"da03ef9c7c457e989acd8ef5ebb8d0aaaf40886d98802999e85c78b6a1957ac4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIHitDetection.js#0007:checkProjectileHit","exportIndex":7,"name":"checkProjectileHit","kind":"function","signature":"checkProjectileHit(projectile, targets, options = {})","summary":"Check projectile hit with swept collision and spatial optimization"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIHitDetection.md","moduleTitle":"sim/ai/AIHitDetection","source":"engine/sim/ai/AIHitDetection.js","import":"/engine/sim/ai/AIHitDetection.js","sourceHash":"da03ef9c7c457e989acd8ef5ebb8d0aaaf40886d98802999e85c78b6a1957ac4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIHitDetection.js#0008:checkBeamHit","exportIndex":8,"name":"checkBeamHit","kind":"function","signature":"checkBeamHit(origin, direction, maxRange, targets, options = {})","summary":"Check beam/ray hit against multiple targets"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIHitDetection.md","moduleTitle":"sim/ai/AIHitDetection","source":"engine/sim/ai/AIHitDetection.js","import":"/engine/sim/ai/AIHitDetection.js","sourceHash":"da03ef9c7c457e989acd8ef5ebb8d0aaaf40886d98802999e85c78b6a1957ac4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIHitDetection.js#0009:FALLOFF_TYPE","exportIndex":9,"name":"FALLOFF_TYPE","kind":"constant","signature":"FALLOFF_TYPE","summary":"Damage falloff types"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIHitDetection.md","moduleTitle":"sim/ai/AIHitDetection","source":"engine/sim/ai/AIHitDetection.js","import":"/engine/sim/ai/AIHitDetection.js","sourceHash":"da03ef9c7c457e989acd8ef5ebb8d0aaaf40886d98802999e85c78b6a1957ac4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIHitDetection.js#0010:HITBOX_TYPE","exportIndex":10,"name":"HITBOX_TYPE","kind":"constant","signature":"HITBOX_TYPE","summary":"Hitbox types"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIInfluenceMap.md","moduleTitle":"sim/ai/AIInfluenceMap","source":"engine/sim/ai/AIInfluenceMap.js","import":"/engine/sim/ai/AIInfluenceMap.js","sourceHash":"ffe3ffa6cce26808f4bb8a795256cbb9e4487940e5911f58a483546c567fee86","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/ai/AIInfluenceMap.js","title":"sim/ai/AIInfluenceMap","summary":"Create an influence map layer","exportCount":19}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIInfluenceMap.md","moduleTitle":"sim/ai/AIInfluenceMap","source":"engine/sim/ai/AIInfluenceMap.js","import":"/engine/sim/ai/AIInfluenceMap.js","sourceHash":"ffe3ffa6cce26808f4bb8a795256cbb9e4487940e5911f58a483546c567fee86","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIInfluenceMap.js#0000:createInfluenceLayer","exportIndex":0,"name":"createInfluenceLayer","kind":"function","signature":"createInfluenceLayer(width, height, cellSize, origin = [0, 0])","summary":"Create an influence map layer"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIInfluenceMap.md","moduleTitle":"sim/ai/AIInfluenceMap","source":"engine/sim/ai/AIInfluenceMap.js","import":"/engine/sim/ai/AIInfluenceMap.js","sourceHash":"ffe3ffa6cce26808f4bb8a795256cbb9e4487940e5911f58a483546c567fee86","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIInfluenceMap.js#0001:createInfluenceMap","exportIndex":1,"name":"createInfluenceMap","kind":"function","signature":"createInfluenceMap(width, height, cellSize, origin = [0, 0])","summary":"Create a multi-layer influence map"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIInfluenceMap.md","moduleTitle":"sim/ai/AIInfluenceMap","source":"engine/sim/ai/AIInfluenceMap.js","import":"/engine/sim/ai/AIInfluenceMap.js","sourceHash":"ffe3ffa6cce26808f4bb8a795256cbb9e4487940e5911f58a483546c567fee86","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIInfluenceMap.js#0002:worldToInfluenceCell","exportIndex":2,"name":"worldToInfluenceCell","kind":"function","signature":"worldToInfluenceCell(map, worldX, worldZ)","summary":"World position to grid cell"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIInfluenceMap.md","moduleTitle":"sim/ai/AIInfluenceMap","source":"engine/sim/ai/AIInfluenceMap.js","import":"/engine/sim/ai/AIInfluenceMap.js","sourceHash":"ffe3ffa6cce26808f4bb8a795256cbb9e4487940e5911f58a483546c567fee86","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIInfluenceMap.js#0003:influenceCellToWorld","exportIndex":3,"name":"influenceCellToWorld","kind":"function","signature":"influenceCellToWorld(map, cellX, cellY)","summary":"Grid cell to world position (center of cell)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIInfluenceMap.md","moduleTitle":"sim/ai/AIInfluenceMap","source":"engine/sim/ai/AIInfluenceMap.js","import":"/engine/sim/ai/AIInfluenceMap.js","sourceHash":"ffe3ffa6cce26808f4bb8a795256cbb9e4487940e5911f58a483546c567fee86","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIInfluenceMap.js#0004:getInfluenceAt","exportIndex":4,"name":"getInfluenceAt","kind":"function","signature":"getInfluenceAt(layer, worldX, worldZ)","summary":"Get influence value at world position"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIInfluenceMap.md","moduleTitle":"sim/ai/AIInfluenceMap","source":"engine/sim/ai/AIInfluenceMap.js","import":"/engine/sim/ai/AIInfluenceMap.js","sourceHash":"ffe3ffa6cce26808f4bb8a795256cbb9e4487940e5911f58a483546c567fee86","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIInfluenceMap.js#0005:setInfluenceAt","exportIndex":5,"name":"setInfluenceAt","kind":"function","signature":"setInfluenceAt(layer, worldX, worldZ, value)","summary":"Set influence value at world position"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIInfluenceMap.md","moduleTitle":"sim/ai/AIInfluenceMap","source":"engine/sim/ai/AIInfluenceMap.js","import":"/engine/sim/ai/AIInfluenceMap.js","sourceHash":"ffe3ffa6cce26808f4bb8a795256cbb9e4487940e5911f58a483546c567fee86","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIInfluenceMap.js#0006:addInfluenceAt","exportIndex":6,"name":"addInfluenceAt","kind":"function","signature":"addInfluenceAt(layer, worldX, worldZ, value)","summary":"Add influence at world position"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIInfluenceMap.md","moduleTitle":"sim/ai/AIInfluenceMap","source":"engine/sim/ai/AIInfluenceMap.js","import":"/engine/sim/ai/AIInfluenceMap.js","sourceHash":"ffe3ffa6cce26808f4bb8a795256cbb9e4487940e5911f58a483546c567fee86","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIInfluenceMap.js#0007:stampInfluence","exportIndex":7,"name":"stampInfluence","kind":"function","signature":"stampInfluence(layer, worldX, worldZ, radius, value, falloff = \"linear\")","summary":"Stamp circular influence at position"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIInfluenceMap.md","moduleTitle":"sim/ai/AIInfluenceMap","source":"engine/sim/ai/AIInfluenceMap.js","import":"/engine/sim/ai/AIInfluenceMap.js","sourceHash":"ffe3ffa6cce26808f4bb8a795256cbb9e4487940e5911f58a483546c567fee86","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIInfluenceMap.js#0008:propagateInfluence","exportIndex":8,"name":"propagateInfluence","kind":"function","signature":"propagateInfluence(layer, decayFactor = 0.9)","summary":"Propagate influence to neighboring cells (blur/spread)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIInfluenceMap.md","moduleTitle":"sim/ai/AIInfluenceMap","source":"engine/sim/ai/AIInfluenceMap.js","import":"/engine/sim/ai/AIInfluenceMap.js","sourceHash":"ffe3ffa6cce26808f4bb8a795256cbb9e4487940e5911f58a483546c567fee86","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIInfluenceMap.js#0009:decayInfluence","exportIndex":9,"name":"decayInfluence","kind":"function","signature":"decayInfluence(layer, decayRate = 0.1)","summary":"Decay all influence values"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIInfluenceMap.md","moduleTitle":"sim/ai/AIInfluenceMap","source":"engine/sim/ai/AIInfluenceMap.js","import":"/engine/sim/ai/AIInfluenceMap.js","sourceHash":"ffe3ffa6cce26808f4bb8a795256cbb9e4487940e5911f58a483546c567fee86","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIInfluenceMap.js#0010:clearInfluence","exportIndex":10,"name":"clearInfluence","kind":"function","signature":"clearInfluence(layer)","summary":"Clear all influence"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIInfluenceMap.md","moduleTitle":"sim/ai/AIInfluenceMap","source":"engine/sim/ai/AIInfluenceMap.js","import":"/engine/sim/ai/AIInfluenceMap.js","sourceHash":"ffe3ffa6cce26808f4bb8a795256cbb9e4487940e5911f58a483546c567fee86","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIInfluenceMap.js#0011:findLowestInfluence","exportIndex":11,"name":"findLowestInfluence","kind":"function","signature":"findLowestInfluence(layer, worldX, worldZ, searchRadius)","summary":"Find position with lowest influence in radius"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIInfluenceMap.md","moduleTitle":"sim/ai/AIInfluenceMap","source":"engine/sim/ai/AIInfluenceMap.js","import":"/engine/sim/ai/AIInfluenceMap.js","sourceHash":"ffe3ffa6cce26808f4bb8a795256cbb9e4487940e5911f58a483546c567fee86","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIInfluenceMap.js#0012:findHighestInfluence","exportIndex":12,"name":"findHighestInfluence","kind":"function","signature":"findHighestInfluence(layer, worldX, worldZ, searchRadius)","summary":"Find position with highest influence in radius"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIInfluenceMap.md","moduleTitle":"sim/ai/AIInfluenceMap","source":"engine/sim/ai/AIInfluenceMap.js","import":"/engine/sim/ai/AIInfluenceMap.js","sourceHash":"ffe3ffa6cce26808f4bb8a795256cbb9e4487940e5911f58a483546c567fee86","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIInfluenceMap.js#0013:sampleCombinedInfluence","exportIndex":13,"name":"sampleCombinedInfluence","kind":"function","signature":"sampleCombinedInfluence(map, worldX, worldZ, weights)","summary":"Sample combined influence from multiple layers"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIInfluenceMap.md","moduleTitle":"sim/ai/AIInfluenceMap","source":"engine/sim/ai/AIInfluenceMap.js","import":"/engine/sim/ai/AIInfluenceMap.js","sourceHash":"ffe3ffa6cce26808f4bb8a795256cbb9e4487940e5911f58a483546c567fee86","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIInfluenceMap.js#0014:findChokePoints","exportIndex":14,"name":"findChokePoints","kind":"function","signature":"findChokePoints(walkabilityGrid, influenceMap)","summary":"Analyze terrain for choke points"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIInfluenceMap.md","moduleTitle":"sim/ai/AIInfluenceMap","source":"engine/sim/ai/AIInfluenceMap.js","import":"/engine/sim/ai/AIInfluenceMap.js","sourceHash":"ffe3ffa6cce26808f4bb8a795256cbb9e4487940e5911f58a483546c567fee86","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIInfluenceMap.js#0015:updateThreatInfluence","exportIndex":15,"name":"updateThreatInfluence","kind":"function","signature":"updateThreatInfluence(map, enemies)","summary":"Update threat layer from enemy positions"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIInfluenceMap.md","moduleTitle":"sim/ai/AIInfluenceMap","source":"engine/sim/ai/AIInfluenceMap.js","import":"/engine/sim/ai/AIInfluenceMap.js","sourceHash":"ffe3ffa6cce26808f4bb8a795256cbb9e4487940e5911f58a483546c567fee86","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIInfluenceMap.js#0016:updateAllyInfluence","exportIndex":16,"name":"updateAllyInfluence","kind":"function","signature":"updateAllyInfluence(map, allies)","summary":"Update ally layer from friendly positions"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIInfluenceMap.md","moduleTitle":"sim/ai/AIInfluenceMap","source":"engine/sim/ai/AIInfluenceMap.js","import":"/engine/sim/ai/AIInfluenceMap.js","sourceHash":"ffe3ffa6cce26808f4bb8a795256cbb9e4487940e5911f58a483546c567fee86","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIInfluenceMap.js#0017:reservePath","exportIndex":17,"name":"reservePath","kind":"function","signature":"reservePath(map, path, reserveValue = 1.0)","summary":"Reserve a path on the influence map"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIInfluenceMap.md","moduleTitle":"sim/ai/AIInfluenceMap","source":"engine/sim/ai/AIInfluenceMap.js","import":"/engine/sim/ai/AIInfluenceMap.js","sourceHash":"ffe3ffa6cce26808f4bb8a795256cbb9e4487940e5911f58a483546c567fee86","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIInfluenceMap.js#0018:clearPathReservations","exportIndex":18,"name":"clearPathReservations","kind":"function","signature":"clearPathReservations(map)","summary":"Clear path reservation"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIKnowledge.md","moduleTitle":"sim/ai/AIKnowledge","source":"engine/sim/ai/AIKnowledge.js","import":"/engine/sim/ai/AIKnowledge.js","sourceHash":"5aac2f6d25a4f5a66cd883b9d24f70267ae590acc8cfbaddd097efb9b399f322","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/ai/AIKnowledge.js","title":"sim/ai/AIKnowledge","summary":"Create knowledge item","exportCount":15}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIKnowledge.md","moduleTitle":"sim/ai/AIKnowledge","source":"engine/sim/ai/AIKnowledge.js","import":"/engine/sim/ai/AIKnowledge.js","sourceHash":"5aac2f6d25a4f5a66cd883b9d24f70267ae590acc8cfbaddd097efb9b399f322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIKnowledge.js#0000:createKnowledge","exportIndex":0,"name":"createKnowledge","kind":"function","signature":"createKnowledge(config)","summary":"Create knowledge item"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIKnowledge.md","moduleTitle":"sim/ai/AIKnowledge","source":"engine/sim/ai/AIKnowledge.js","import":"/engine/sim/ai/AIKnowledge.js","sourceHash":"5aac2f6d25a4f5a66cd883b9d24f70267ae590acc8cfbaddd097efb9b399f322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIKnowledge.js#0001:distortKnowledge","exportIndex":1,"name":"distortKnowledge","kind":"function","signature":"distortKnowledge(knowledge, distortion = 0.1)","summary":"Create a distorted copy (for rumor spreading)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIKnowledge.md","moduleTitle":"sim/ai/AIKnowledge","source":"engine/sim/ai/AIKnowledge.js","import":"/engine/sim/ai/AIKnowledge.js","sourceHash":"5aac2f6d25a4f5a66cd883b9d24f70267ae590acc8cfbaddd097efb9b399f322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIKnowledge.js#0002:createKnowledgeBase","exportIndex":2,"name":"createKnowledgeBase","kind":"function","signature":"createKnowledgeBase()","summary":"Create NPC knowledge base"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIKnowledge.md","moduleTitle":"sim/ai/AIKnowledge","source":"engine/sim/ai/AIKnowledge.js","import":"/engine/sim/ai/AIKnowledge.js","sourceHash":"5aac2f6d25a4f5a66cd883b9d24f70267ae590acc8cfbaddd097efb9b399f322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIKnowledge.js#0003:addKnowledge","exportIndex":3,"name":"addKnowledge","kind":"function","signature":"addKnowledge(kb, knowledge)","summary":"Add knowledge to NPC's knowledge base"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIKnowledge.md","moduleTitle":"sim/ai/AIKnowledge","source":"engine/sim/ai/AIKnowledge.js","import":"/engine/sim/ai/AIKnowledge.js","sourceHash":"5aac2f6d25a4f5a66cd883b9d24f70267ae590acc8cfbaddd097efb9b399f322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIKnowledge.js#0004:queryKnowledge","exportIndex":4,"name":"queryKnowledge","kind":"function","signature":"queryKnowledge(kb, query)","summary":"Query knowledge base"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIKnowledge.md","moduleTitle":"sim/ai/AIKnowledge","source":"engine/sim/ai/AIKnowledge.js","import":"/engine/sim/ai/AIKnowledge.js","sourceHash":"5aac2f6d25a4f5a66cd883b9d24f70267ae590acc8cfbaddd097efb9b399f322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIKnowledge.js#0005:hasKnowledgeOf","exportIndex":5,"name":"hasKnowledgeOf","kind":"function","signature":"hasKnowledgeOf(kb, subject)","summary":"Check if NPC knows about something"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIKnowledge.md","moduleTitle":"sim/ai/AIKnowledge","source":"engine/sim/ai/AIKnowledge.js","import":"/engine/sim/ai/AIKnowledge.js","sourceHash":"5aac2f6d25a4f5a66cd883b9d24f70267ae590acc8cfbaddd097efb9b399f322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIKnowledge.js#0006:shareKnowledge","exportIndex":6,"name":"shareKnowledge","kind":"function","signature":"shareKnowledge(giver, receiver, knowledge, giverNpcId)","summary":"Share knowledge between NPCs"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIKnowledge.md","moduleTitle":"sim/ai/AIKnowledge","source":"engine/sim/ai/AIKnowledge.js","import":"/engine/sim/ai/AIKnowledge.js","sourceHash":"5aac2f6d25a4f5a66cd883b9d24f70267ae590acc8cfbaddd097efb9b399f322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIKnowledge.js#0007:spreadKnowledge","exportIndex":7,"name":"spreadKnowledge","kind":"function","signature":"spreadKnowledge(network, knowledge, originNpcId, maxHops = 3)","summary":"Spread knowledge through social network"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIKnowledge.md","moduleTitle":"sim/ai/AIKnowledge","source":"engine/sim/ai/AIKnowledge.js","import":"/engine/sim/ai/AIKnowledge.js","sourceHash":"5aac2f6d25a4f5a66cd883b9d24f70267ae590acc8cfbaddd097efb9b399f322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIKnowledge.js#0008:createWorldKnowledgeManager","exportIndex":8,"name":"createWorldKnowledgeManager","kind":"function","signature":"createWorldKnowledgeManager()","summary":"Create world knowledge manager"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIKnowledge.md","moduleTitle":"sim/ai/AIKnowledge","source":"engine/sim/ai/AIKnowledge.js","import":"/engine/sim/ai/AIKnowledge.js","sourceHash":"5aac2f6d25a4f5a66cd883b9d24f70267ae590acc8cfbaddd097efb9b399f322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIKnowledge.js#0009:registerNPCKnowledge","exportIndex":9,"name":"registerNPCKnowledge","kind":"function","signature":"registerNPCKnowledge(manager, npcId, config = {})","summary":"Register NPC with knowledge system"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIKnowledge.md","moduleTitle":"sim/ai/AIKnowledge","source":"engine/sim/ai/AIKnowledge.js","import":"/engine/sim/ai/AIKnowledge.js","sourceHash":"5aac2f6d25a4f5a66cd883b9d24f70267ae590acc8cfbaddd097efb9b399f322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIKnowledge.js#0010:connectNPCs","exportIndex":10,"name":"connectNPCs","kind":"function","signature":"connectNPCs(manager, npc1, npc2)","summary":"Connect two NPCs in social network"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIKnowledge.md","moduleTitle":"sim/ai/AIKnowledge","source":"engine/sim/ai/AIKnowledge.js","import":"/engine/sim/ai/AIKnowledge.js","sourceHash":"5aac2f6d25a4f5a66cd883b9d24f70267ae590acc8cfbaddd097efb9b399f322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIKnowledge.js#0011:announcePublicKnowledge","exportIndex":11,"name":"announcePublicKnowledge","kind":"function","signature":"announcePublicKnowledge(manager, knowledge)","summary":"Announce public knowledge"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIKnowledge.md","moduleTitle":"sim/ai/AIKnowledge","source":"engine/sim/ai/AIKnowledge.js","import":"/engine/sim/ai/AIKnowledge.js","sourceHash":"5aac2f6d25a4f5a66cd883b9d24f70267ae590acc8cfbaddd097efb9b399f322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIKnowledge.js#0012:updateKnowledgePropagation","exportIndex":12,"name":"updateKnowledgePropagation","kind":"function","signature":"updateKnowledgePropagation(manager, gameTime)","summary":"Update knowledge propagation"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIKnowledge.md","moduleTitle":"sim/ai/AIKnowledge","source":"engine/sim/ai/AIKnowledge.js","import":"/engine/sim/ai/AIKnowledge.js","sourceHash":"5aac2f6d25a4f5a66cd883b9d24f70267ae590acc8cfbaddd097efb9b399f322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIKnowledge.js#0013:INFO_TYPE","exportIndex":13,"name":"INFO_TYPE","kind":"constant","signature":"INFO_TYPE","summary":"Information types"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIKnowledge.md","moduleTitle":"sim/ai/AIKnowledge","source":"engine/sim/ai/AIKnowledge.js","import":"/engine/sim/ai/AIKnowledge.js","sourceHash":"5aac2f6d25a4f5a66cd883b9d24f70267ae590acc8cfbaddd097efb9b399f322","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIKnowledge.js#0014:RELIABILITY","exportIndex":14,"name":"RELIABILITY","kind":"constant","signature":"RELIABILITY","summary":"Information reliability"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AILoot.md","moduleTitle":"sim/ai/AILoot","source":"engine/sim/ai/AILoot.js","import":"/engine/sim/ai/AILoot.js","sourceHash":"6f0a484d5039293dce33182e229f0f16dd975f061510ae1692aaa36fedf123c4","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/ai/AILoot.js","title":"sim/ai/AILoot","summary":"Create item definition","exportCount":18}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AILoot.md","moduleTitle":"sim/ai/AILoot","source":"engine/sim/ai/AILoot.js","import":"/engine/sim/ai/AILoot.js","sourceHash":"6f0a484d5039293dce33182e229f0f16dd975f061510ae1692aaa36fedf123c4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AILoot.js#0000:createItemDef","exportIndex":0,"name":"createItemDef","kind":"function","signature":"createItemDef(config)","summary":"Create item definition"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AILoot.md","moduleTitle":"sim/ai/AILoot","source":"engine/sim/ai/AILoot.js","import":"/engine/sim/ai/AILoot.js","sourceHash":"6f0a484d5039293dce33182e229f0f16dd975f061510ae1692aaa36fedf123c4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AILoot.js#0001:createItemInstance","exportIndex":1,"name":"createItemInstance","kind":"function","signature":"createItemInstance(itemDef, options = {})","summary":"Create item instance from definition"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AILoot.md","moduleTitle":"sim/ai/AILoot","source":"engine/sim/ai/AILoot.js","import":"/engine/sim/ai/AILoot.js","sourceHash":"6f0a484d5039293dce33182e229f0f16dd975f061510ae1692aaa36fedf123c4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AILoot.js#0002:createAffix","exportIndex":2,"name":"createAffix","kind":"function","signature":"createAffix(config)","summary":"Create affix definition"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AILoot.md","moduleTitle":"sim/ai/AILoot","source":"engine/sim/ai/AILoot.js","import":"/engine/sim/ai/AILoot.js","sourceHash":"6f0a484d5039293dce33182e229f0f16dd975f061510ae1692aaa36fedf123c4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AILoot.js#0003:applyAffix","exportIndex":3,"name":"applyAffix","kind":"function","signature":"applyAffix(item, affix)","summary":"Apply affix to item"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AILoot.md","moduleTitle":"sim/ai/AILoot","source":"engine/sim/ai/AILoot.js","import":"/engine/sim/ai/AILoot.js","sourceHash":"6f0a484d5039293dce33182e229f0f16dd975f061510ae1692aaa36fedf123c4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AILoot.js#0004:generateItemName","exportIndex":4,"name":"generateItemName","kind":"function","signature":"generateItemName(item)","summary":"Generate item name from affixes"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AILoot.md","moduleTitle":"sim/ai/AILoot","source":"engine/sim/ai/AILoot.js","import":"/engine/sim/ai/AILoot.js","sourceHash":"6f0a484d5039293dce33182e229f0f16dd975f061510ae1692aaa36fedf123c4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AILoot.js#0005:createLootEntry","exportIndex":5,"name":"createLootEntry","kind":"function","signature":"createLootEntry(config)","summary":"Create loot table entry"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AILoot.md","moduleTitle":"sim/ai/AILoot","source":"engine/sim/ai/AILoot.js","import":"/engine/sim/ai/AILoot.js","sourceHash":"6f0a484d5039293dce33182e229f0f16dd975f061510ae1692aaa36fedf123c4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AILoot.js#0006:createLootTable","exportIndex":6,"name":"createLootTable","kind":"function","signature":"createLootTable(config)","summary":"Create loot table"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AILoot.md","moduleTitle":"sim/ai/AILoot","source":"engine/sim/ai/AILoot.js","import":"/engine/sim/ai/AILoot.js","sourceHash":"6f0a484d5039293dce33182e229f0f16dd975f061510ae1692aaa36fedf123c4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AILoot.js#0007:rollLootTable","exportIndex":7,"name":"rollLootTable","kind":"function","signature":"rollLootTable(table, itemDefs, context = {})","summary":"Roll loot from table"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AILoot.md","moduleTitle":"sim/ai/AILoot","source":"engine/sim/ai/AILoot.js","import":"/engine/sim/ai/AILoot.js","sourceHash":"6f0a484d5039293dce33182e229f0f16dd975f061510ae1692aaa36fedf123c4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AILoot.js#0008:rollRarity","exportIndex":8,"name":"rollRarity","kind":"function","signature":"rollRarity(luckBonus = 0)","summary":"Roll rarity based on luck"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AILoot.md","moduleTitle":"sim/ai/AILoot","source":"engine/sim/ai/AILoot.js","import":"/engine/sim/ai/AILoot.js","sourceHash":"6f0a484d5039293dce33182e229f0f16dd975f061510ae1692aaa36fedf123c4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AILoot.js#0009:createLootManager","exportIndex":9,"name":"createLootManager","kind":"function","signature":"createLootManager()","summary":"Create loot manager"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AILoot.md","moduleTitle":"sim/ai/AILoot","source":"engine/sim/ai/AILoot.js","import":"/engine/sim/ai/AILoot.js","sourceHash":"6f0a484d5039293dce33182e229f0f16dd975f061510ae1692aaa36fedf123c4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AILoot.js#0010:registerItemDef","exportIndex":10,"name":"registerItemDef","kind":"function","signature":"registerItemDef(manager, itemDef)","summary":"Register item definition"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AILoot.md","moduleTitle":"sim/ai/AILoot","source":"engine/sim/ai/AILoot.js","import":"/engine/sim/ai/AILoot.js","sourceHash":"6f0a484d5039293dce33182e229f0f16dd975f061510ae1692aaa36fedf123c4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AILoot.js#0011:registerAffix","exportIndex":11,"name":"registerAffix","kind":"function","signature":"registerAffix(manager, affix)","summary":"Register affix"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AILoot.md","moduleTitle":"sim/ai/AILoot","source":"engine/sim/ai/AILoot.js","import":"/engine/sim/ai/AILoot.js","sourceHash":"6f0a484d5039293dce33182e229f0f16dd975f061510ae1692aaa36fedf123c4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AILoot.js#0012:registerLootTable","exportIndex":12,"name":"registerLootTable","kind":"function","signature":"registerLootTable(manager, table)","summary":"Register loot table"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AILoot.md","moduleTitle":"sim/ai/AILoot","source":"engine/sim/ai/AILoot.js","import":"/engine/sim/ai/AILoot.js","sourceHash":"6f0a484d5039293dce33182e229f0f16dd975f061510ae1692aaa36fedf123c4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AILoot.js#0013:dropLoot","exportIndex":13,"name":"dropLoot","kind":"function","signature":"dropLoot(manager, tableId, position, context = {})","summary":"Drop loot at position"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AILoot.md","moduleTitle":"sim/ai/AILoot","source":"engine/sim/ai/AILoot.js","import":"/engine/sim/ai/AILoot.js","sourceHash":"6f0a484d5039293dce33182e229f0f16dd975f061510ae1692aaa36fedf123c4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AILoot.js#0014:cleanupDrops","exportIndex":14,"name":"cleanupDrops","kind":"function","signature":"cleanupDrops(manager)","summary":"Clean up expired drops"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AILoot.md","moduleTitle":"sim/ai/AILoot","source":"engine/sim/ai/AILoot.js","import":"/engine/sim/ai/AILoot.js","sourceHash":"6f0a484d5039293dce33182e229f0f16dd975f061510ae1692aaa36fedf123c4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AILoot.js#0015:RARITY","exportIndex":15,"name":"RARITY","kind":"constant","signature":"RARITY","summary":"Rarity tiers"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AILoot.md","moduleTitle":"sim/ai/AILoot","source":"engine/sim/ai/AILoot.js","import":"/engine/sim/ai/AILoot.js","sourceHash":"6f0a484d5039293dce33182e229f0f16dd975f061510ae1692aaa36fedf123c4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AILoot.js#0016:RARITY_COLORS","exportIndex":16,"name":"RARITY_COLORS","kind":"constant","signature":"RARITY_COLORS","summary":"Rarity color codes"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AILoot.md","moduleTitle":"sim/ai/AILoot","source":"engine/sim/ai/AILoot.js","import":"/engine/sim/ai/AILoot.js","sourceHash":"6f0a484d5039293dce33182e229f0f16dd975f061510ae1692aaa36fedf123c4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AILoot.js#0017:ITEM_CATEGORY","exportIndex":17,"name":"ITEM_CATEGORY","kind":"constant","signature":"ITEM_CATEGORY","summary":"Item categories"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMelee.md","moduleTitle":"sim/ai/AIMelee","source":"engine/sim/ai/AIMelee.js","import":"/engine/sim/ai/AIMelee.js","sourceHash":"f74eedf064ca3e2a234e231c10d851861b3fe119a657cad2a8c3ae94a0b745cb","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/ai/AIMelee.js","title":"sim/ai/AIMelee","summary":"Create a melee attack arc (pie-slice shaped hitbox)","exportCount":15}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMelee.md","moduleTitle":"sim/ai/AIMelee","source":"engine/sim/ai/AIMelee.js","import":"/engine/sim/ai/AIMelee.js","sourceHash":"f74eedf064ca3e2a234e231c10d851861b3fe119a657cad2a8c3ae94a0b745cb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMelee.js#0000:createMeleeArc","exportIndex":0,"name":"createMeleeArc","kind":"function","signature":"createMeleeArc(origin, direction, range, arcAngleDeg)","summary":"Create a melee attack arc (pie-slice shaped hitbox)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMelee.md","moduleTitle":"sim/ai/AIMelee","source":"engine/sim/ai/AIMelee.js","import":"/engine/sim/ai/AIMelee.js","sourceHash":"f74eedf064ca3e2a234e231c10d851861b3fe119a657cad2a8c3ae94a0b745cb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMelee.js#0001:isInMeleeArc","exportIndex":1,"name":"isInMeleeArc","kind":"function","signature":"isInMeleeArc(arc, targetPos, targetRadius = 0)","summary":"Check if a point is within the melee arc (2D horizontal check) Uses cosine comparison for efficiency (avoids atan2)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMelee.md","moduleTitle":"sim/ai/AIMelee","source":"engine/sim/ai/AIMelee.js","import":"/engine/sim/ai/AIMelee.js","sourceHash":"f74eedf064ca3e2a234e231c10d851861b3fe119a657cad2a8c3ae94a0b745cb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMelee.js#0002:isInMeleeArc3D","exportIndex":2,"name":"isInMeleeArc3D","kind":"function","signature":"isInMeleeArc3D(arc, targetPos, targetRadius = 0, verticalToleranceRad = Math.PI / 4)","summary":"Check if target is in 3D melee arc (includes vertical angle)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMelee.md","moduleTitle":"sim/ai/AIMelee","source":"engine/sim/ai/AIMelee.js","import":"/engine/sim/ai/AIMelee.js","sourceHash":"f74eedf064ca3e2a234e231c10d851861b3fe119a657cad2a8c3ae94a0b745cb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMelee.js#0003:createMeleeAttackState","exportIndex":3,"name":"createMeleeAttackState","kind":"function","signature":"createMeleeAttackState(config)","summary":"Create a melee attack state tracker"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMelee.md","moduleTitle":"sim/ai/AIMelee","source":"engine/sim/ai/AIMelee.js","import":"/engine/sim/ai/AIMelee.js","sourceHash":"f74eedf064ca3e2a234e231c10d851861b3fe119a657cad2a8c3ae94a0b745cb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMelee.js#0004:startMeleeAttack","exportIndex":4,"name":"startMeleeAttack","kind":"function","signature":"startMeleeAttack(state, now)","summary":"Start a melee attack"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMelee.md","moduleTitle":"sim/ai/AIMelee","source":"engine/sim/ai/AIMelee.js","import":"/engine/sim/ai/AIMelee.js","sourceHash":"f74eedf064ca3e2a234e231c10d851861b3fe119a657cad2a8c3ae94a0b745cb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMelee.js#0005:updateMeleeAttack","exportIndex":5,"name":"updateMeleeAttack","kind":"function","signature":"updateMeleeAttack(state, now)","summary":"Update melee attack state and check phase transitions"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMelee.md","moduleTitle":"sim/ai/AIMelee","source":"engine/sim/ai/AIMelee.js","import":"/engine/sim/ai/AIMelee.js","sourceHash":"f74eedf064ca3e2a234e231c10d851861b3fe119a657cad2a8c3ae94a0b745cb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMelee.js#0006:interruptMeleeAttack","exportIndex":6,"name":"interruptMeleeAttack","kind":"function","signature":"interruptMeleeAttack(state)","summary":"Try to interrupt a melee attack (e.g., from stagger)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMelee.md","moduleTitle":"sim/ai/AIMelee","source":"engine/sim/ai/AIMelee.js","import":"/engine/sim/ai/AIMelee.js","sourceHash":"f74eedf064ca3e2a234e231c10d851861b3fe119a657cad2a8c3ae94a0b745cb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMelee.js#0007:checkMeleeHits","exportIndex":7,"name":"checkMeleeHits","kind":"function","signature":"checkMeleeHits(state, attackerPos, attackerDir, targets)","summary":"Check for hits during active phase"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMelee.md","moduleTitle":"sim/ai/AIMelee","source":"engine/sim/ai/AIMelee.js","import":"/engine/sim/ai/AIMelee.js","sourceHash":"f74eedf064ca3e2a234e231c10d851861b3fe119a657cad2a8c3ae94a0b745cb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMelee.js#0008:chainComboAttack","exportIndex":8,"name":"chainComboAttack","kind":"function","signature":"chainComboAttack(state, now)","summary":"Chain to next combo attack"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMelee.md","moduleTitle":"sim/ai/AIMelee","source":"engine/sim/ai/AIMelee.js","import":"/engine/sim/ai/AIMelee.js","sourceHash":"f74eedf064ca3e2a234e231c10d851861b3fe119a657cad2a8c3ae94a0b745cb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMelee.js#0009:getComboMultiplier","exportIndex":9,"name":"getComboMultiplier","kind":"function","signature":"getComboMultiplier(comboStep)","summary":"Get combo multiplier for current step"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMelee.md","moduleTitle":"sim/ai/AIMelee","source":"engine/sim/ai/AIMelee.js","import":"/engine/sim/ai/AIMelee.js","sourceHash":"f74eedf064ca3e2a234e231c10d851861b3fe119a657cad2a8c3ae94a0b745cb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMelee.js#0010:sweepMeleeArc","exportIndex":10,"name":"sweepMeleeArc","kind":"function","signature":"sweepMeleeArc(origin, startDir, endDir, range, targets, sweepSamples = 5)","summary":"Perform a sweeping melee attack across multiple positions Useful for wide slash attacks"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMelee.md","moduleTitle":"sim/ai/AIMelee","source":"engine/sim/ai/AIMelee.js","import":"/engine/sim/ai/AIMelee.js","sourceHash":"f74eedf064ca3e2a234e231c10d851861b3fe119a657cad2a8c3ae94a0b745cb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMelee.js#0011:getPhaseTimeRemaining","exportIndex":11,"name":"getPhaseTimeRemaining","kind":"function","signature":"getPhaseTimeRemaining(state, now)","summary":"Get remaining time in current phase"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMelee.md","moduleTitle":"sim/ai/AIMelee","source":"engine/sim/ai/AIMelee.js","import":"/engine/sim/ai/AIMelee.js","sourceHash":"f74eedf064ca3e2a234e231c10d851861b3fe119a657cad2a8c3ae94a0b745cb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMelee.js#0012:getPhaseProgress","exportIndex":12,"name":"getPhaseProgress","kind":"function","signature":"getPhaseProgress(state, now)","summary":"Get phase progress (0-1)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMelee.md","moduleTitle":"sim/ai/AIMelee","source":"engine/sim/ai/AIMelee.js","import":"/engine/sim/ai/AIMelee.js","sourceHash":"f74eedf064ca3e2a234e231c10d851861b3fe119a657cad2a8c3ae94a0b745cb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMelee.js#0013:ATTACK_PHASE","exportIndex":13,"name":"ATTACK_PHASE","kind":"constant","signature":"ATTACK_PHASE","summary":"Attack phase types"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMelee.md","moduleTitle":"sim/ai/AIMelee","source":"engine/sim/ai/AIMelee.js","import":"/engine/sim/ai/AIMelee.js","sourceHash":"f74eedf064ca3e2a234e231c10d851861b3fe119a657cad2a8c3ae94a0b745cb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMelee.js#0014:DEFAULT_PHASE_DURATIONS","exportIndex":14,"name":"DEFAULT_PHASE_DURATIONS","kind":"constant","signature":"DEFAULT_PHASE_DURATIONS","summary":"Default phase durations in milliseconds"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMemory.md","moduleTitle":"sim/ai/AIMemory","source":"engine/sim/ai/AIMemory.js","import":"/engine/sim/ai/AIMemory.js","sourceHash":"b5320a23dd2762b858f505b68d4e3e0102eba6a46493c1ad8673cbd3ef90b7c9","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/ai/AIMemory.js","title":"sim/ai/AIMemory","summary":"Create working memory (limited capacity short-term)","exportCount":29}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMemory.md","moduleTitle":"sim/ai/AIMemory","source":"engine/sim/ai/AIMemory.js","import":"/engine/sim/ai/AIMemory.js","sourceHash":"b5320a23dd2762b858f505b68d4e3e0102eba6a46493c1ad8673cbd3ef90b7c9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMemory.js#0000:createWorkingMemory","exportIndex":0,"name":"createWorkingMemory","kind":"function","signature":"createWorkingMemory(capacity = 7)","summary":"Create working memory (limited capacity short-term)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMemory.md","moduleTitle":"sim/ai/AIMemory","source":"engine/sim/ai/AIMemory.js","import":"/engine/sim/ai/AIMemory.js","sourceHash":"b5320a23dd2762b858f505b68d4e3e0102eba6a46493c1ad8673cbd3ef90b7c9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMemory.js#0001:workingMemoryPush","exportIndex":1,"name":"workingMemoryPush","kind":"function","signature":"workingMemoryPush(memory, item)","summary":"Add item to working memory (displaces oldest if full)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMemory.md","moduleTitle":"sim/ai/AIMemory","source":"engine/sim/ai/AIMemory.js","import":"/engine/sim/ai/AIMemory.js","sourceHash":"b5320a23dd2762b858f505b68d4e3e0102eba6a46493c1ad8673cbd3ef90b7c9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMemory.js#0002:setFocus","exportIndex":2,"name":"setFocus","kind":"function","signature":"setFocus(memory, type, data)","summary":"Set focus of attention"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMemory.md","moduleTitle":"sim/ai/AIMemory","source":"engine/sim/ai/AIMemory.js","import":"/engine/sim/ai/AIMemory.js","sourceHash":"b5320a23dd2762b858f505b68d4e3e0102eba6a46493c1ad8673cbd3ef90b7c9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMemory.js#0003:getWorkingMemoryByType","exportIndex":3,"name":"getWorkingMemoryByType","kind":"function","signature":"getWorkingMemoryByType(memory, type)","summary":"Get items from working memory by type"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMemory.md","moduleTitle":"sim/ai/AIMemory","source":"engine/sim/ai/AIMemory.js","import":"/engine/sim/ai/AIMemory.js","sourceHash":"b5320a23dd2762b858f505b68d4e3e0102eba6a46493c1ad8673cbd3ef90b7c9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMemory.js#0004:clearWorkingMemory","exportIndex":4,"name":"clearWorkingMemory","kind":"function","signature":"clearWorkingMemory(memory)","summary":"Clear working memory"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMemory.md","moduleTitle":"sim/ai/AIMemory","source":"engine/sim/ai/AIMemory.js","import":"/engine/sim/ai/AIMemory.js","sourceHash":"b5320a23dd2762b858f505b68d4e3e0102eba6a46493c1ad8673cbd3ef90b7c9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMemory.js#0005:createEpisodicMemory","exportIndex":5,"name":"createEpisodicMemory","kind":"function","signature":"createEpisodicMemory(maxEpisodes = 1000)","summary":"Create episodic memory (personal experiences)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMemory.md","moduleTitle":"sim/ai/AIMemory","source":"engine/sim/ai/AIMemory.js","import":"/engine/sim/ai/AIMemory.js","sourceHash":"b5320a23dd2762b858f505b68d4e3e0102eba6a46493c1ad8673cbd3ef90b7c9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMemory.js#0006:createEpisode","exportIndex":6,"name":"createEpisode","kind":"function","signature":"createEpisode(data)","summary":"Create an episode (memory of an event)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMemory.md","moduleTitle":"sim/ai/AIMemory","source":"engine/sim/ai/AIMemory.js","import":"/engine/sim/ai/AIMemory.js","sourceHash":"b5320a23dd2762b858f505b68d4e3e0102eba6a46493c1ad8673cbd3ef90b7c9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMemory.js#0007:storeEpisode","exportIndex":7,"name":"storeEpisode","kind":"function","signature":"storeEpisode(memory, episode)","summary":"Store an episode"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMemory.md","moduleTitle":"sim/ai/AIMemory","source":"engine/sim/ai/AIMemory.js","import":"/engine/sim/ai/AIMemory.js","sourceHash":"b5320a23dd2762b858f505b68d4e3e0102eba6a46493c1ad8673cbd3ef90b7c9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMemory.js#0008:recallEpisodesWithEntity","exportIndex":8,"name":"recallEpisodesWithEntity","kind":"function","signature":"recallEpisodesWithEntity(memory, entityId, limit = 10)","summary":"Recall episodes involving an entity"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMemory.md","moduleTitle":"sim/ai/AIMemory","source":"engine/sim/ai/AIMemory.js","import":"/engine/sim/ai/AIMemory.js","sourceHash":"b5320a23dd2762b858f505b68d4e3e0102eba6a46493c1ad8673cbd3ef90b7c9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMemory.js#0009:recallEpisodesWithEmotion","exportIndex":9,"name":"recallEpisodesWithEmotion","kind":"function","signature":"recallEpisodesWithEmotion(memory, emotion, limit = 10)","summary":"Recall episodes by emotion"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMemory.md","moduleTitle":"sim/ai/AIMemory","source":"engine/sim/ai/AIMemory.js","import":"/engine/sim/ai/AIMemory.js","sourceHash":"b5320a23dd2762b858f505b68d4e3e0102eba6a46493c1ad8673cbd3ef90b7c9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMemory.js#0010:recallRecentEpisodes","exportIndex":10,"name":"recallRecentEpisodes","kind":"function","signature":"recallRecentEpisodes(memory, count = 5)","summary":"Recall recent episodes"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMemory.md","moduleTitle":"sim/ai/AIMemory","source":"engine/sim/ai/AIMemory.js","import":"/engine/sim/ai/AIMemory.js","sourceHash":"b5320a23dd2762b858f505b68d4e3e0102eba6a46493c1ad8673cbd3ef90b7c9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMemory.js#0011:searchEpisodes","exportIndex":11,"name":"searchEpisodes","kind":"function","signature":"searchEpisodes(memory, criteria)","summary":"Search episodes by criteria"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMemory.md","moduleTitle":"sim/ai/AIMemory","source":"engine/sim/ai/AIMemory.js","import":"/engine/sim/ai/AIMemory.js","sourceHash":"b5320a23dd2762b858f505b68d4e3e0102eba6a46493c1ad8673cbd3ef90b7c9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMemory.js#0012:createSemanticMemory","exportIndex":12,"name":"createSemanticMemory","kind":"function","signature":"createSemanticMemory()","summary":"Create semantic memory (facts and knowledge)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMemory.md","moduleTitle":"sim/ai/AIMemory","source":"engine/sim/ai/AIMemory.js","import":"/engine/sim/ai/AIMemory.js","sourceHash":"b5320a23dd2762b858f505b68d4e3e0102eba6a46493c1ad8673cbd3ef90b7c9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMemory.js#0013:storeFact","exportIndex":13,"name":"storeFact","kind":"function","signature":"storeFact(memory, key, value, meta = {})","summary":"Store a fact"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMemory.md","moduleTitle":"sim/ai/AIMemory","source":"engine/sim/ai/AIMemory.js","import":"/engine/sim/ai/AIMemory.js","sourceHash":"b5320a23dd2762b858f505b68d4e3e0102eba6a46493c1ad8673cbd3ef90b7c9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMemory.js#0014:getFact","exportIndex":14,"name":"getFact","kind":"function","signature":"getFact(memory, key)","summary":"Retrieve a fact"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMemory.md","moduleTitle":"sim/ai/AIMemory","source":"engine/sim/ai/AIMemory.js","import":"/engine/sim/ai/AIMemory.js","sourceHash":"b5320a23dd2762b858f505b68d4e3e0102eba6a46493c1ad8673cbd3ef90b7c9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMemory.js#0015:storeRelationship","exportIndex":15,"name":"storeRelationship","kind":"function","signature":"storeRelationship(memory, subject, predicate, object, confidence = 1.0)","summary":"Store a relationship between entities"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMemory.md","moduleTitle":"sim/ai/AIMemory","source":"engine/sim/ai/AIMemory.js","import":"/engine/sim/ai/AIMemory.js","sourceHash":"b5320a23dd2762b858f505b68d4e3e0102eba6a46493c1ad8673cbd3ef90b7c9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMemory.js#0016:queryRelationships","exportIndex":16,"name":"queryRelationships","kind":"function","signature":"queryRelationships(memory, query)","summary":"Query relationships"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMemory.md","moduleTitle":"sim/ai/AIMemory","source":"engine/sim/ai/AIMemory.js","import":"/engine/sim/ai/AIMemory.js","sourceHash":"b5320a23dd2762b858f505b68d4e3e0102eba6a46493c1ad8673cbd3ef90b7c9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMemory.js#0017:storeBelief","exportIndex":17,"name":"storeBelief","kind":"function","signature":"storeBelief(memory, topic, belief, confidence = 0.5)","summary":"Store a belief"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMemory.md","moduleTitle":"sim/ai/AIMemory","source":"engine/sim/ai/AIMemory.js","import":"/engine/sim/ai/AIMemory.js","sourceHash":"b5320a23dd2762b858f505b68d4e3e0102eba6a46493c1ad8673cbd3ef90b7c9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMemory.js#0018:challengeBelief","exportIndex":18,"name":"challengeBelief","kind":"function","signature":"challengeBelief(memory, topic, evidenceStrength = 0.1)","summary":"Challenge a belief (potentially weakens it)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMemory.md","moduleTitle":"sim/ai/AIMemory","source":"engine/sim/ai/AIMemory.js","import":"/engine/sim/ai/AIMemory.js","sourceHash":"b5320a23dd2762b858f505b68d4e3e0102eba6a46493c1ad8673cbd3ef90b7c9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMemory.js#0019:createProceduralMemory","exportIndex":19,"name":"createProceduralMemory","kind":"function","signature":"createProceduralMemory()","summary":"Create procedural memory (skills and habits)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMemory.md","moduleTitle":"sim/ai/AIMemory","source":"engine/sim/ai/AIMemory.js","import":"/engine/sim/ai/AIMemory.js","sourceHash":"b5320a23dd2762b858f505b68d4e3e0102eba6a46493c1ad8673cbd3ef90b7c9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMemory.js#0020:practiceSkill","exportIndex":20,"name":"practiceSkill","kind":"function","signature":"practiceSkill(memory, skill, success = true)","summary":"Record skill practice"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMemory.md","moduleTitle":"sim/ai/AIMemory","source":"engine/sim/ai/AIMemory.js","import":"/engine/sim/ai/AIMemory.js","sourceHash":"b5320a23dd2762b858f505b68d4e3e0102eba6a46493c1ad8673cbd3ef90b7c9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMemory.js#0021:getSkillProficiency","exportIndex":21,"name":"getSkillProficiency","kind":"function","signature":"getSkillProficiency(memory, skill)","summary":"Get skill proficiency"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMemory.md","moduleTitle":"sim/ai/AIMemory","source":"engine/sim/ai/AIMemory.js","import":"/engine/sim/ai/AIMemory.js","sourceHash":"b5320a23dd2762b858f505b68d4e3e0102eba6a46493c1ad8673cbd3ef90b7c9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMemory.js#0022:formHabit","exportIndex":22,"name":"formHabit","kind":"function","signature":"formHabit(memory, trigger, action, initialStrength = 0.3)","summary":"Form a habit"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMemory.md","moduleTitle":"sim/ai/AIMemory","source":"engine/sim/ai/AIMemory.js","import":"/engine/sim/ai/AIMemory.js","sourceHash":"b5320a23dd2762b858f505b68d4e3e0102eba6a46493c1ad8673cbd3ef90b7c9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMemory.js#0023:getHabitualResponse","exportIndex":23,"name":"getHabitualResponse","kind":"function","signature":"getHabitualResponse(memory, trigger)","summary":"Get habitual response to trigger"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMemory.md","moduleTitle":"sim/ai/AIMemory","source":"engine/sim/ai/AIMemory.js","import":"/engine/sim/ai/AIMemory.js","sourceHash":"b5320a23dd2762b858f505b68d4e3e0102eba6a46493c1ad8673cbd3ef90b7c9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMemory.js#0024:createMemorySystem","exportIndex":24,"name":"createMemorySystem","kind":"function","signature":"createMemorySystem(config = {})","summary":"Create complete NPC memory system"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMemory.md","moduleTitle":"sim/ai/AIMemory","source":"engine/sim/ai/AIMemory.js","import":"/engine/sim/ai/AIMemory.js","sourceHash":"b5320a23dd2762b858f505b68d4e3e0102eba6a46493c1ad8673cbd3ef90b7c9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMemory.js#0025:consolidateMemories","exportIndex":25,"name":"consolidateMemories","kind":"function","signature":"consolidateMemories(memSystem)","summary":"Consolidate memories (transfer from working to long-term)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMemory.md","moduleTitle":"sim/ai/AIMemory","source":"engine/sim/ai/AIMemory.js","import":"/engine/sim/ai/AIMemory.js","sourceHash":"b5320a23dd2762b858f505b68d4e3e0102eba6a46493c1ad8673cbd3ef90b7c9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMemory.js#0026:getEntityImpression","exportIndex":26,"name":"getEntityImpression","kind":"function","signature":"getEntityImpression(memSystem, entityId)","summary":"Get overall impression of an entity"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMemory.md","moduleTitle":"sim/ai/AIMemory","source":"engine/sim/ai/AIMemory.js","import":"/engine/sim/ai/AIMemory.js","sourceHash":"b5320a23dd2762b858f505b68d4e3e0102eba6a46493c1ad8673cbd3ef90b7c9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMemory.js#0027:MEMORY_TYPE","exportIndex":27,"name":"MEMORY_TYPE","kind":"constant","signature":"MEMORY_TYPE","summary":"Memory types"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMemory.md","moduleTitle":"sim/ai/AIMemory","source":"engine/sim/ai/AIMemory.js","import":"/engine/sim/ai/AIMemory.js","sourceHash":"b5320a23dd2762b858f505b68d4e3e0102eba6a46493c1ad8673cbd3ef90b7c9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMemory.js#0028:IMPORTANCE","exportIndex":28,"name":"IMPORTANCE","kind":"constant","signature":"IMPORTANCE","summary":"Event importance levels"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMorale.md","moduleTitle":"sim/ai/AIMorale","source":"engine/sim/ai/AIMorale.js","import":"/engine/sim/ai/AIMorale.js","sourceHash":"ea3637bd2d5be51886b0b34bf95a71eee11c54fbf5d70c465a2b2790772c643c","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/ai/AIMorale.js","title":"sim/ai/AIMorale","summary":"Create morale state for an NPC","exportCount":22}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMorale.md","moduleTitle":"sim/ai/AIMorale","source":"engine/sim/ai/AIMorale.js","import":"/engine/sim/ai/AIMorale.js","sourceHash":"ea3637bd2d5be51886b0b34bf95a71eee11c54fbf5d70c465a2b2790772c643c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMorale.js#0000:createMoraleState","exportIndex":0,"name":"createMoraleState","kind":"function","signature":"createMoraleState(params = {})","summary":"Create morale state for an NPC"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMorale.md","moduleTitle":"sim/ai/AIMorale","source":"engine/sim/ai/AIMorale.js","import":"/engine/sim/ai/AIMorale.js","sourceHash":"ea3637bd2d5be51886b0b34bf95a71eee11c54fbf5d70c465a2b2790772c643c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMorale.js#0001:changeMorale","exportIndex":1,"name":"changeMorale","kind":"function","signature":"changeMorale(state, delta)","summary":"Apply morale change"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMorale.md","moduleTitle":"sim/ai/AIMorale","source":"engine/sim/ai/AIMorale.js","import":"/engine/sim/ai/AIMorale.js","sourceHash":"ea3637bd2d5be51886b0b34bf95a71eee11c54fbf5d70c465a2b2790772c643c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMorale.js#0002:applySuppression","exportIndex":2,"name":"applySuppression","kind":"function","signature":"applySuppression(state, amount)","summary":"Apply suppression"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMorale.md","moduleTitle":"sim/ai/AIMorale","source":"engine/sim/ai/AIMorale.js","import":"/engine/sim/ai/AIMorale.js","sourceHash":"ea3637bd2d5be51886b0b34bf95a71eee11c54fbf5d70c465a2b2790772c643c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMorale.js#0003:processDamageMorale","exportIndex":3,"name":"processDamageMorale","kind":"function","signature":"processDamageMorale(state, damage, fromBehind = false)","summary":"Process taking damage"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMorale.md","moduleTitle":"sim/ai/AIMorale","source":"engine/sim/ai/AIMorale.js","import":"/engine/sim/ai/AIMorale.js","sourceHash":"ea3637bd2d5be51886b0b34bf95a71eee11c54fbf5d70c465a2b2790772c643c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMorale.js#0004:processAllyDeath","exportIndex":4,"name":"processAllyDeath","kind":"function","signature":"processAllyDeath(state, wasLeader = false)","summary":"Process ally death"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMorale.md","moduleTitle":"sim/ai/AIMorale","source":"engine/sim/ai/AIMorale.js","import":"/engine/sim/ai/AIMorale.js","sourceHash":"ea3637bd2d5be51886b0b34bf95a71eee11c54fbf5d70c465a2b2790772c643c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMorale.js#0005:processEnemyDeath","exportIndex":5,"name":"processEnemyDeath","kind":"function","signature":"processEnemyDeath(state, wasLeader = false)","summary":"Process enemy death"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMorale.md","moduleTitle":"sim/ai/AIMorale","source":"engine/sim/ai/AIMorale.js","import":"/engine/sim/ai/AIMorale.js","sourceHash":"ea3637bd2d5be51886b0b34bf95a71eee11c54fbf5d70c465a2b2790772c643c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMorale.js#0006:rally","exportIndex":6,"name":"rally","kind":"function","signature":"rally(state)","summary":"Rally (leader ability)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMorale.md","moduleTitle":"sim/ai/AIMorale","source":"engine/sim/ai/AIMorale.js","import":"/engine/sim/ai/AIMorale.js","sourceHash":"ea3637bd2d5be51886b0b34bf95a71eee11c54fbf5d70c465a2b2790772c643c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMorale.js#0007:updateMorale","exportIndex":7,"name":"updateMorale","kind":"function","signature":"updateMorale(state, deltaTimeSec, inCombat, inCover)","summary":"Update morale over time (recovery, suppression decay)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMorale.md","moduleTitle":"sim/ai/AIMorale","source":"engine/sim/ai/AIMorale.js","import":"/engine/sim/ai/AIMorale.js","sourceHash":"ea3637bd2d5be51886b0b34bf95a71eee11c54fbf5d70c465a2b2790772c643c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMorale.js#0008:updateMoraleContext","exportIndex":8,"name":"updateMoraleContext","kind":"function","signature":"updateMoraleContext(state, alliesNearby, enemiesVisible, leaderNearby)","summary":"Update context (allies, enemies, leader)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMorale.md","moduleTitle":"sim/ai/AIMorale","source":"engine/sim/ai/AIMorale.js","import":"/engine/sim/ai/AIMorale.js","sourceHash":"ea3637bd2d5be51886b0b34bf95a71eee11c54fbf5d70c465a2b2790772c643c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMorale.js#0009:getMoraleAccuracyMod","exportIndex":9,"name":"getMoraleAccuracyMod","kind":"function","signature":"getMoraleAccuracyMod(state)","summary":"Get accuracy modifier based on morale"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMorale.md","moduleTitle":"sim/ai/AIMorale","source":"engine/sim/ai/AIMorale.js","import":"/engine/sim/ai/AIMorale.js","sourceHash":"ea3637bd2d5be51886b0b34bf95a71eee11c54fbf5d70c465a2b2790772c643c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMorale.js#0010:getMoraleSpeedMod","exportIndex":10,"name":"getMoraleSpeedMod","kind":"function","signature":"getMoraleSpeedMod(state)","summary":"Get movement speed modifier based on morale"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMorale.md","moduleTitle":"sim/ai/AIMorale","source":"engine/sim/ai/AIMorale.js","import":"/engine/sim/ai/AIMorale.js","sourceHash":"ea3637bd2d5be51886b0b34bf95a71eee11c54fbf5d70c465a2b2790772c643c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMorale.js#0011:getMoraleReactionMod","exportIndex":11,"name":"getMoraleReactionMod","kind":"function","signature":"getMoraleReactionMod(state)","summary":"Get reaction time modifier based on morale"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMorale.md","moduleTitle":"sim/ai/AIMorale","source":"engine/sim/ai/AIMorale.js","import":"/engine/sim/ai/AIMorale.js","sourceHash":"ea3637bd2d5be51886b0b34bf95a71eee11c54fbf5d70c465a2b2790772c643c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMorale.js#0012:shouldFlee","exportIndex":12,"name":"shouldFlee","kind":"function","signature":"shouldFlee(state)","summary":"Check if NPC should flee"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMorale.md","moduleTitle":"sim/ai/AIMorale","source":"engine/sim/ai/AIMorale.js","import":"/engine/sim/ai/AIMorale.js","sourceHash":"ea3637bd2d5be51886b0b34bf95a71eee11c54fbf5d70c465a2b2790772c643c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMorale.js#0013:shouldSurrender","exportIndex":13,"name":"shouldSurrender","kind":"function","signature":"shouldSurrender(state, canEscape = true)","summary":"Check if NPC should surrender"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMorale.md","moduleTitle":"sim/ai/AIMorale","source":"engine/sim/ai/AIMorale.js","import":"/engine/sim/ai/AIMorale.js","sourceHash":"ea3637bd2d5be51886b0b34bf95a71eee11c54fbf5d70c465a2b2790772c643c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMorale.js#0014:shouldSeekCover","exportIndex":14,"name":"shouldSeekCover","kind":"function","signature":"shouldSeekCover(state, currentlyInCover)","summary":"Check if NPC should take cover"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMorale.md","moduleTitle":"sim/ai/AIMorale","source":"engine/sim/ai/AIMorale.js","import":"/engine/sim/ai/AIMorale.js","sourceHash":"ea3637bd2d5be51886b0b34bf95a71eee11c54fbf5d70c465a2b2790772c643c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMorale.js#0015:shouldBeAggressive","exportIndex":15,"name":"shouldBeAggressive","kind":"function","signature":"shouldBeAggressive(state)","summary":"Check if NPC should be aggressive (charge, flank)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMorale.md","moduleTitle":"sim/ai/AIMorale","source":"engine/sim/ai/AIMorale.js","import":"/engine/sim/ai/AIMorale.js","sourceHash":"ea3637bd2d5be51886b0b34bf95a71eee11c54fbf5d70c465a2b2790772c643c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMorale.js#0016:moraleCheck","exportIndex":16,"name":"moraleCheck","kind":"function","signature":"moraleCheck(state, difficulty)","summary":"Roll morale check for risky action"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMorale.md","moduleTitle":"sim/ai/AIMorale","source":"engine/sim/ai/AIMorale.js","import":"/engine/sim/ai/AIMorale.js","sourceHash":"ea3637bd2d5be51886b0b34bf95a71eee11c54fbf5d70c465a2b2790772c643c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMorale.js#0017:getGroupMorale","exportIndex":17,"name":"getGroupMorale","kind":"function","signature":"getGroupMorale(moraleStates)","summary":"Calculate group morale average"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMorale.md","moduleTitle":"sim/ai/AIMorale","source":"engine/sim/ai/AIMorale.js","import":"/engine/sim/ai/AIMorale.js","sourceHash":"ea3637bd2d5be51886b0b34bf95a71eee11c54fbf5d70c465a2b2790772c643c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMorale.js#0018:isGroupRouting","exportIndex":18,"name":"isGroupRouting","kind":"function","signature":"isGroupRouting(moraleStates)","summary":"Check if group is routing (majority broken)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMorale.md","moduleTitle":"sim/ai/AIMorale","source":"engine/sim/ai/AIMorale.js","import":"/engine/sim/ai/AIMorale.js","sourceHash":"ea3637bd2d5be51886b0b34bf95a71eee11c54fbf5d70c465a2b2790772c643c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMorale.js#0019:groupRally","exportIndex":19,"name":"groupRally","kind":"function","signature":"groupRally(moraleStates)","summary":"Apply group rally (leader ability affecting all nearby)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMorale.md","moduleTitle":"sim/ai/AIMorale","source":"engine/sim/ai/AIMorale.js","import":"/engine/sim/ai/AIMorale.js","sourceHash":"ea3637bd2d5be51886b0b34bf95a71eee11c54fbf5d70c465a2b2790772c643c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMorale.js#0020:MORALE_STATE","exportIndex":20,"name":"MORALE_STATE","kind":"constant","signature":"MORALE_STATE","summary":"Morale states"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIMorale.md","moduleTitle":"sim/ai/AIMorale","source":"engine/sim/ai/AIMorale.js","import":"/engine/sim/ai/AIMorale.js","sourceHash":"ea3637bd2d5be51886b0b34bf95a71eee11c54fbf5d70c465a2b2790772c643c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIMorale.js#0021:DEFAULT_MORALE_PARAMS","exportIndex":21,"name":"DEFAULT_MORALE_PARAMS","kind":"constant","signature":"DEFAULT_MORALE_PARAMS","summary":"Default morale parameters"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIPerception.md","moduleTitle":"sim/ai/AIPerception","source":"engine/sim/ai/AIPerception.js","import":"/engine/sim/ai/AIPerception.js","sourceHash":"13537f469d28780d89e5c29c2e8021e0e56236b163a72e7c58b8196e6709ea68","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/ai/AIPerception.js","title":"sim/ai/AIPerception","summary":"Create perception state for an NPC","exportCount":17}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIPerception.md","moduleTitle":"sim/ai/AIPerception","source":"engine/sim/ai/AIPerception.js","import":"/engine/sim/ai/AIPerception.js","sourceHash":"13537f469d28780d89e5c29c2e8021e0e56236b163a72e7c58b8196e6709ea68","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIPerception.js#0000:createPerceptionState","exportIndex":0,"name":"createPerceptionState","kind":"function","signature":"createPerceptionState(params = {})","summary":"Create perception state for an NPC"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIPerception.md","moduleTitle":"sim/ai/AIPerception","source":"engine/sim/ai/AIPerception.js","import":"/engine/sim/ai/AIPerception.js","sourceHash":"13537f469d28780d89e5c29c2e8021e0e56236b163a72e7c58b8196e6709ea68","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIPerception.js#0001:checkVision","exportIndex":1,"name":"checkVision","kind":"function","signature":"checkVision(perception, npcPos, npcFacing, targetPos, obstacles)","summary":"Check if target is in vision cone"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIPerception.md","moduleTitle":"sim/ai/AIPerception","source":"engine/sim/ai/AIPerception.js","import":"/engine/sim/ai/AIPerception.js","sourceHash":"13537f469d28780d89e5c29c2e8021e0e56236b163a72e7c58b8196e6709ea68","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIPerception.js#0002:calculateDetectionRate","exportIndex":2,"name":"calculateDetectionRate","kind":"function","signature":"calculateDetectionRate(visionResult, perception, options = {})","summary":"Calculate detection rate based on visibility conditions"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIPerception.md","moduleTitle":"sim/ai/AIPerception","source":"engine/sim/ai/AIPerception.js","import":"/engine/sim/ai/AIPerception.js","sourceHash":"13537f469d28780d89e5c29c2e8021e0e56236b163a72e7c58b8196e6709ea68","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIPerception.js#0003:createNoiseEvent","exportIndex":3,"name":"createNoiseEvent","kind":"function","signature":"createNoiseEvent(position, loudness, type, sourceId = null)","summary":"Create a noise event"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIPerception.md","moduleTitle":"sim/ai/AIPerception","source":"engine/sim/ai/AIPerception.js","import":"/engine/sim/ai/AIPerception.js","sourceHash":"13537f469d28780d89e5c29c2e8021e0e56236b163a72e7c58b8196e6709ea68","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIPerception.js#0004:checkHearing","exportIndex":4,"name":"checkHearing","kind":"function","signature":"checkHearing(perception, npcPos, noise)","summary":"Check if NPC can hear a noise event"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIPerception.md","moduleTitle":"sim/ai/AIPerception","source":"engine/sim/ai/AIPerception.js","import":"/engine/sim/ai/AIPerception.js","sourceHash":"13537f469d28780d89e5c29c2e8021e0e56236b163a72e7c58b8196e6709ea68","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIPerception.js#0005:processVisualDetection","exportIndex":5,"name":"processVisualDetection","kind":"function","signature":"processVisualDetection(perception, npcPos, npcFacing, target, obstacles, deltaTimeSec, options = {})","summary":"Process visual detection of a target"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIPerception.md","moduleTitle":"sim/ai/AIPerception","source":"engine/sim/ai/AIPerception.js","import":"/engine/sim/ai/AIPerception.js","sourceHash":"13537f469d28780d89e5c29c2e8021e0e56236b163a72e7c58b8196e6709ea68","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIPerception.js#0006:processNoiseEvent","exportIndex":6,"name":"processNoiseEvent","kind":"function","signature":"processNoiseEvent(perception, npcPos, noise)","summary":"Process a noise event"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIPerception.md","moduleTitle":"sim/ai/AIPerception","source":"engine/sim/ai/AIPerception.js","import":"/engine/sim/ai/AIPerception.js","sourceHash":"13537f469d28780d89e5c29c2e8021e0e56236b163a72e7c58b8196e6709ea68","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIPerception.js#0007:processDamage","exportIndex":7,"name":"processDamage","kind":"function","signature":"processDamage(perception, damageDirection = null, attackerId = null)","summary":"Process taking damage"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIPerception.md","moduleTitle":"sim/ai/AIPerception","source":"engine/sim/ai/AIPerception.js","import":"/engine/sim/ai/AIPerception.js","sourceHash":"13537f469d28780d89e5c29c2e8021e0e56236b163a72e7c58b8196e6709ea68","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIPerception.js#0008:shareTeamInfo","exportIndex":8,"name":"shareTeamInfo","kind":"function","signature":"shareTeamInfo(perception, targetId, targetPos)","summary":"Share threat info from teammate"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIPerception.md","moduleTitle":"sim/ai/AIPerception","source":"engine/sim/ai/AIPerception.js","import":"/engine/sim/ai/AIPerception.js","sourceHash":"13537f469d28780d89e5c29c2e8021e0e56236b163a72e7c58b8196e6709ea68","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIPerception.js#0009:getLastKnownPosition","exportIndex":9,"name":"getLastKnownPosition","kind":"function","signature":"getLastKnownPosition(perception, entityId)","summary":"Get last known position of an entity"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIPerception.md","moduleTitle":"sim/ai/AIPerception","source":"engine/sim/ai/AIPerception.js","import":"/engine/sim/ai/AIPerception.js","sourceHash":"13537f469d28780d89e5c29c2e8021e0e56236b163a72e7c58b8196e6709ea68","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIPerception.js#0010:getMostThreateningEntity","exportIndex":10,"name":"getMostThreateningEntity","kind":"function","signature":"getMostThreateningEntity(perception)","summary":"Get the most threatening known entity"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIPerception.md","moduleTitle":"sim/ai/AIPerception","source":"engine/sim/ai/AIPerception.js","import":"/engine/sim/ai/AIPerception.js","sourceHash":"13537f469d28780d89e5c29c2e8021e0e56236b163a72e7c58b8196e6709ea68","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIPerception.js#0011:decayAwareness","exportIndex":11,"name":"decayAwareness","kind":"function","signature":"decayAwareness(perception, deltaTimeSec, canSeeThreats)","summary":"Decay awareness over time"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIPerception.md","moduleTitle":"sim/ai/AIPerception","source":"engine/sim/ai/AIPerception.js","import":"/engine/sim/ai/AIPerception.js","sourceHash":"13537f469d28780d89e5c29c2e8021e0e56236b163a72e7c58b8196e6709ea68","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIPerception.js#0012:checkInvestigationComplete","exportIndex":12,"name":"checkInvestigationComplete","kind":"function","signature":"checkInvestigationComplete(perception, npcPos, arrivalRadius = 2)","summary":"Check if investigation is complete"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIPerception.md","moduleTitle":"sim/ai/AIPerception","source":"engine/sim/ai/AIPerception.js","import":"/engine/sim/ai/AIPerception.js","sourceHash":"13537f469d28780d89e5c29c2e8021e0e56236b163a72e7c58b8196e6709ea68","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIPerception.js#0013:updatePerception","exportIndex":13,"name":"updatePerception","kind":"function","signature":"updatePerception(perception, npcPos, npcFacing, targets, noiseEvents, obstacles, deltaTimeSec)","summary":"Full perception update tick"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIPerception.md","moduleTitle":"sim/ai/AIPerception","source":"engine/sim/ai/AIPerception.js","import":"/engine/sim/ai/AIPerception.js","sourceHash":"13537f469d28780d89e5c29c2e8021e0e56236b163a72e7c58b8196e6709ea68","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIPerception.js#0014:AWARENESS_STATE","exportIndex":14,"name":"AWARENESS_STATE","kind":"constant","signature":"AWARENESS_STATE","summary":"Awareness states"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIPerception.md","moduleTitle":"sim/ai/AIPerception","source":"engine/sim/ai/AIPerception.js","import":"/engine/sim/ai/AIPerception.js","sourceHash":"13537f469d28780d89e5c29c2e8021e0e56236b163a72e7c58b8196e6709ea68","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIPerception.js#0015:SENSE_TYPE","exportIndex":15,"name":"SENSE_TYPE","kind":"constant","signature":"SENSE_TYPE","summary":"Sense types"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIPerception.md","moduleTitle":"sim/ai/AIPerception","source":"engine/sim/ai/AIPerception.js","import":"/engine/sim/ai/AIPerception.js","sourceHash":"13537f469d28780d89e5c29c2e8021e0e56236b163a72e7c58b8196e6709ea68","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIPerception.js#0016:DEFAULT_PERCEPTION_PARAMS","exportIndex":16,"name":"DEFAULT_PERCEPTION_PARAMS","kind":"constant","signature":"DEFAULT_PERCEPTION_PARAMS","summary":"Default perception parameters - from AISchema"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIPersonality.md","moduleTitle":"sim/ai/AIPersonality","source":"engine/sim/ai/AIPersonality.js","import":"/engine/sim/ai/AIPersonality.js","sourceHash":"088c67d33c1d0f8e048fe25277fdae93b552dbdd7370085ddd4e411e2dc9f2f2","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/ai/AIPersonality.js","title":"sim/ai/AIPersonality","summary":"Create personality profile","exportCount":18}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIPersonality.md","moduleTitle":"sim/ai/AIPersonality","source":"engine/sim/ai/AIPersonality.js","import":"/engine/sim/ai/AIPersonality.js","sourceHash":"088c67d33c1d0f8e048fe25277fdae93b552dbdd7370085ddd4e411e2dc9f2f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIPersonality.js#0000:createPersonality","exportIndex":0,"name":"createPersonality","kind":"function","signature":"createPersonality(traits = {})","summary":"Create personality profile"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIPersonality.md","moduleTitle":"sim/ai/AIPersonality","source":"engine/sim/ai/AIPersonality.js","import":"/engine/sim/ai/AIPersonality.js","sourceHash":"088c67d33c1d0f8e048fe25277fdae93b552dbdd7370085ddd4e411e2dc9f2f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIPersonality.js#0001:createPersonalityFromArchetype","exportIndex":1,"name":"createPersonalityFromArchetype","kind":"function","signature":"createPersonalityFromArchetype(archetype)","summary":"Create personality from archetype"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIPersonality.md","moduleTitle":"sim/ai/AIPersonality","source":"engine/sim/ai/AIPersonality.js","import":"/engine/sim/ai/AIPersonality.js","sourceHash":"088c67d33c1d0f8e048fe25277fdae93b552dbdd7370085ddd4e411e2dc9f2f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIPersonality.js#0002:getPersonalityBehaviorMod","exportIndex":2,"name":"getPersonalityBehaviorMod","kind":"function","signature":"getPersonalityBehaviorMod(personality, behavior)","summary":"Get personality-based behavior modifier"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIPersonality.md","moduleTitle":"sim/ai/AIPersonality","source":"engine/sim/ai/AIPersonality.js","import":"/engine/sim/ai/AIPersonality.js","sourceHash":"088c67d33c1d0f8e048fe25277fdae93b552dbdd7370085ddd4e411e2dc9f2f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIPersonality.js#0003:createEmotionalState","exportIndex":3,"name":"createEmotionalState","kind":"function","signature":"createEmotionalState()","summary":"Create emotional state"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIPersonality.md","moduleTitle":"sim/ai/AIPersonality","source":"engine/sim/ai/AIPersonality.js","import":"/engine/sim/ai/AIPersonality.js","sourceHash":"088c67d33c1d0f8e048fe25277fdae93b552dbdd7370085ddd4e411e2dc9f2f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIPersonality.js#0004:applyEmotionalStimulus","exportIndex":4,"name":"applyEmotionalStimulus","kind":"function","signature":"applyEmotionalStimulus(state, emotion, intensity, personality = null)","summary":"Apply emotional stimulus"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIPersonality.md","moduleTitle":"sim/ai/AIPersonality","source":"engine/sim/ai/AIPersonality.js","import":"/engine/sim/ai/AIPersonality.js","sourceHash":"088c67d33c1d0f8e048fe25277fdae93b552dbdd7370085ddd4e411e2dc9f2f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIPersonality.js#0005:decayEmotions","exportIndex":5,"name":"decayEmotions","kind":"function","signature":"decayEmotions(state, deltaTimeSec, decayRate = 0.1)","summary":"Decay emotions over time"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIPersonality.md","moduleTitle":"sim/ai/AIPersonality","source":"engine/sim/ai/AIPersonality.js","import":"/engine/sim/ai/AIPersonality.js","sourceHash":"088c67d33c1d0f8e048fe25277fdae93b552dbdd7370085ddd4e411e2dc9f2f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIPersonality.js#0006:hasComplexEmotion","exportIndex":6,"name":"hasComplexEmotion","kind":"function","signature":"hasComplexEmotion(state, complexEmotion, threshold = 0.3)","summary":"Check for complex emotion"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIPersonality.md","moduleTitle":"sim/ai/AIPersonality","source":"engine/sim/ai/AIPersonality.js","import":"/engine/sim/ai/AIPersonality.js","sourceHash":"088c67d33c1d0f8e048fe25277fdae93b552dbdd7370085ddd4e411e2dc9f2f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIPersonality.js#0007:createRelationshipTracker","exportIndex":7,"name":"createRelationshipTracker","kind":"function","signature":"createRelationshipTracker()","summary":"Create relationship tracker"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIPersonality.md","moduleTitle":"sim/ai/AIPersonality","source":"engine/sim/ai/AIPersonality.js","import":"/engine/sim/ai/AIPersonality.js","sourceHash":"088c67d33c1d0f8e048fe25277fdae93b552dbdd7370085ddd4e411e2dc9f2f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIPersonality.js#0008:getRelationship","exportIndex":8,"name":"getRelationship","kind":"function","signature":"getRelationship(tracker, entityId)","summary":"Create or get relationship with entity"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIPersonality.md","moduleTitle":"sim/ai/AIPersonality","source":"engine/sim/ai/AIPersonality.js","import":"/engine/sim/ai/AIPersonality.js","sourceHash":"088c67d33c1d0f8e048fe25277fdae93b552dbdd7370085ddd4e411e2dc9f2f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIPersonality.js#0009:recordInteraction","exportIndex":9,"name":"recordInteraction","kind":"function","signature":"recordInteraction(tracker, entityId, interactionType, valence, intensity = 0.5)","summary":"Record interaction with entity"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIPersonality.md","moduleTitle":"sim/ai/AIPersonality","source":"engine/sim/ai/AIPersonality.js","import":"/engine/sim/ai/AIPersonality.js","sourceHash":"088c67d33c1d0f8e048fe25277fdae93b552dbdd7370085ddd4e411e2dc9f2f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIPersonality.js#0010:getDisposition","exportIndex":10,"name":"getDisposition","kind":"function","signature":"getDisposition(tracker, entityId)","summary":"Get disposition toward entity"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIPersonality.md","moduleTitle":"sim/ai/AIPersonality","source":"engine/sim/ai/AIPersonality.js","import":"/engine/sim/ai/AIPersonality.js","sourceHash":"088c67d33c1d0f8e048fe25277fdae93b552dbdd7370085ddd4e411e2dc9f2f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIPersonality.js#0011:willHelp","exportIndex":11,"name":"willHelp","kind":"function","signature":"willHelp(tracker, entityId, personality = null)","summary":"Will entity help another"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIPersonality.md","moduleTitle":"sim/ai/AIPersonality","source":"engine/sim/ai/AIPersonality.js","import":"/engine/sim/ai/AIPersonality.js","sourceHash":"088c67d33c1d0f8e048fe25277fdae93b552dbdd7370085ddd4e411e2dc9f2f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIPersonality.js#0012:createCharacterState","exportIndex":12,"name":"createCharacterState","kind":"function","signature":"createCharacterState(config = {})","summary":"Create complete character psychological state"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIPersonality.md","moduleTitle":"sim/ai/AIPersonality","source":"engine/sim/ai/AIPersonality.js","import":"/engine/sim/ai/AIPersonality.js","sourceHash":"088c67d33c1d0f8e048fe25277fdae93b552dbdd7370085ddd4e411e2dc9f2f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIPersonality.js#0013:updateCharacterState","exportIndex":13,"name":"updateCharacterState","kind":"function","signature":"updateCharacterState(state, deltaTimeSec)","summary":"Update character state"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIPersonality.md","moduleTitle":"sim/ai/AIPersonality","source":"engine/sim/ai/AIPersonality.js","import":"/engine/sim/ai/AIPersonality.js","sourceHash":"088c67d33c1d0f8e048fe25277fdae93b552dbdd7370085ddd4e411e2dc9f2f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIPersonality.js#0014:TRAIT","exportIndex":14,"name":"TRAIT","kind":"constant","signature":"TRAIT","summary":"Personality trait ranges: -1 to 1"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIPersonality.md","moduleTitle":"sim/ai/AIPersonality","source":"engine/sim/ai/AIPersonality.js","import":"/engine/sim/ai/AIPersonality.js","sourceHash":"088c67d33c1d0f8e048fe25277fdae93b552dbdd7370085ddd4e411e2dc9f2f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIPersonality.js#0015:EMOTION","exportIndex":15,"name":"EMOTION","kind":"constant","signature":"EMOTION","summary":"Primary emotions"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIPersonality.md","moduleTitle":"sim/ai/AIPersonality","source":"engine/sim/ai/AIPersonality.js","import":"/engine/sim/ai/AIPersonality.js","sourceHash":"088c67d33c1d0f8e048fe25277fdae93b552dbdd7370085ddd4e411e2dc9f2f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIPersonality.js#0016:COMPLEX_EMOTION","exportIndex":16,"name":"COMPLEX_EMOTION","kind":"constant","signature":"COMPLEX_EMOTION","summary":"Emotion combinations"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIPersonality.md","moduleTitle":"sim/ai/AIPersonality","source":"engine/sim/ai/AIPersonality.js","import":"/engine/sim/ai/AIPersonality.js","sourceHash":"088c67d33c1d0f8e048fe25277fdae93b552dbdd7370085ddd4e411e2dc9f2f2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIPersonality.js#0017:RELATIONSHIP_TYPE","exportIndex":17,"name":"RELATIONSHIP_TYPE","kind":"constant","signature":"RELATIONSHIP_TYPE","summary":"Relationship types"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIQuest.md","moduleTitle":"sim/ai/AIQuest","source":"engine/sim/ai/AIQuest.js","import":"/engine/sim/ai/AIQuest.js","sourceHash":"edd2f332c3f46f7a4513205cac34fd055939861340e9b24581f7593fdf73bfb8","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/ai/AIQuest.js","title":"sim/ai/AIQuest","summary":"Create quest objective","exportCount":17}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIQuest.md","moduleTitle":"sim/ai/AIQuest","source":"engine/sim/ai/AIQuest.js","import":"/engine/sim/ai/AIQuest.js","sourceHash":"edd2f332c3f46f7a4513205cac34fd055939861340e9b24581f7593fdf73bfb8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIQuest.js#0000:createObjective","exportIndex":0,"name":"createObjective","kind":"function","signature":"createObjective(config)","summary":"Create quest objective"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIQuest.md","moduleTitle":"sim/ai/AIQuest","source":"engine/sim/ai/AIQuest.js","import":"/engine/sim/ai/AIQuest.js","sourceHash":"edd2f332c3f46f7a4513205cac34fd055939861340e9b24581f7593fdf73bfb8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIQuest.js#0001:updateObjectiveProgress","exportIndex":1,"name":"updateObjectiveProgress","kind":"function","signature":"updateObjectiveProgress(objective, amount = 1)","summary":"Update objective progress"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIQuest.md","moduleTitle":"sim/ai/AIQuest","source":"engine/sim/ai/AIQuest.js","import":"/engine/sim/ai/AIQuest.js","sourceHash":"edd2f332c3f46f7a4513205cac34fd055939861340e9b24581f7593fdf73bfb8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIQuest.js#0002:createQuest","exportIndex":2,"name":"createQuest","kind":"function","signature":"createQuest(config)","summary":"Create quest"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIQuest.md","moduleTitle":"sim/ai/AIQuest","source":"engine/sim/ai/AIQuest.js","import":"/engine/sim/ai/AIQuest.js","sourceHash":"edd2f332c3f46f7a4513205cac34fd055939861340e9b24581f7593fdf73bfb8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIQuest.js#0003:canAcceptQuest","exportIndex":3,"name":"canAcceptQuest","kind":"function","signature":"canAcceptQuest(quest, playerState)","summary":"Check if quest can be accepted"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIQuest.md","moduleTitle":"sim/ai/AIQuest","source":"engine/sim/ai/AIQuest.js","import":"/engine/sim/ai/AIQuest.js","sourceHash":"edd2f332c3f46f7a4513205cac34fd055939861340e9b24581f7593fdf73bfb8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIQuest.js#0004:acceptQuest","exportIndex":4,"name":"acceptQuest","kind":"function","signature":"acceptQuest(quest)","summary":"Accept quest"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIQuest.md","moduleTitle":"sim/ai/AIQuest","source":"engine/sim/ai/AIQuest.js","import":"/engine/sim/ai/AIQuest.js","sourceHash":"edd2f332c3f46f7a4513205cac34fd055939861340e9b24581f7593fdf73bfb8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIQuest.js#0005:checkQuestComplete","exportIndex":5,"name":"checkQuestComplete","kind":"function","signature":"checkQuestComplete(quest)","summary":"Check quest completion"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIQuest.md","moduleTitle":"sim/ai/AIQuest","source":"engine/sim/ai/AIQuest.js","import":"/engine/sim/ai/AIQuest.js","sourceHash":"edd2f332c3f46f7a4513205cac34fd055939861340e9b24581f7593fdf73bfb8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIQuest.js#0006:turnInQuest","exportIndex":6,"name":"turnInQuest","kind":"function","signature":"turnInQuest(quest)","summary":"Turn in quest and get rewards"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIQuest.md","moduleTitle":"sim/ai/AIQuest","source":"engine/sim/ai/AIQuest.js","import":"/engine/sim/ai/AIQuest.js","sourceHash":"edd2f332c3f46f7a4513205cac34fd055939861340e9b24581f7593fdf73bfb8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIQuest.js#0007:failQuest","exportIndex":7,"name":"failQuest","kind":"function","signature":"failQuest(quest, reason = \"unknown\")","summary":"Fail quest"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIQuest.md","moduleTitle":"sim/ai/AIQuest","source":"engine/sim/ai/AIQuest.js","import":"/engine/sim/ai/AIQuest.js","sourceHash":"edd2f332c3f46f7a4513205cac34fd055939861340e9b24581f7593fdf73bfb8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIQuest.js#0008:createQuestManager","exportIndex":8,"name":"createQuestManager","kind":"function","signature":"createQuestManager()","summary":"Create quest manager"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIQuest.md","moduleTitle":"sim/ai/AIQuest","source":"engine/sim/ai/AIQuest.js","import":"/engine/sim/ai/AIQuest.js","sourceHash":"edd2f332c3f46f7a4513205cac34fd055939861340e9b24581f7593fdf73bfb8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIQuest.js#0009:registerQuest","exportIndex":9,"name":"registerQuest","kind":"function","signature":"registerQuest(manager, quest)","summary":"Register quest"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIQuest.md","moduleTitle":"sim/ai/AIQuest","source":"engine/sim/ai/AIQuest.js","import":"/engine/sim/ai/AIQuest.js","sourceHash":"edd2f332c3f46f7a4513205cac34fd055939861340e9b24581f7593fdf73bfb8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIQuest.js#0010:updateAvailableQuests","exportIndex":10,"name":"updateAvailableQuests","kind":"function","signature":"updateAvailableQuests(manager, playerState)","summary":"Update available quests based on player state"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIQuest.md","moduleTitle":"sim/ai/AIQuest","source":"engine/sim/ai/AIQuest.js","import":"/engine/sim/ai/AIQuest.js","sourceHash":"edd2f332c3f46f7a4513205cac34fd055939861340e9b24581f7593fdf73bfb8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIQuest.js#0011:reportQuestEvent","exportIndex":11,"name":"reportQuestEvent","kind":"function","signature":"reportQuestEvent(manager, eventType, eventData)","summary":"Report event for quest objectives"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIQuest.md","moduleTitle":"sim/ai/AIQuest","source":"engine/sim/ai/AIQuest.js","import":"/engine/sim/ai/AIQuest.js","sourceHash":"edd2f332c3f46f7a4513205cac34fd055939861340e9b24581f7593fdf73bfb8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIQuest.js#0012:generateQuest","exportIndex":12,"name":"generateQuest","kind":"function","signature":"generateQuest(templateId, params, context = {})","summary":"Generate procedural quest"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIQuest.md","moduleTitle":"sim/ai/AIQuest","source":"engine/sim/ai/AIQuest.js","import":"/engine/sim/ai/AIQuest.js","sourceHash":"edd2f332c3f46f7a4513205cac34fd055939861340e9b24581f7593fdf73bfb8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIQuest.js#0013:generateDailyQuests","exportIndex":13,"name":"generateDailyQuests","kind":"function","signature":"generateDailyQuests(context, count = 3)","summary":"Generate daily quests"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIQuest.md","moduleTitle":"sim/ai/AIQuest","source":"engine/sim/ai/AIQuest.js","import":"/engine/sim/ai/AIQuest.js","sourceHash":"edd2f332c3f46f7a4513205cac34fd055939861340e9b24581f7593fdf73bfb8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIQuest.js#0014:QUEST_TYPE","exportIndex":14,"name":"QUEST_TYPE","kind":"constant","signature":"QUEST_TYPE","summary":"Quest types"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIQuest.md","moduleTitle":"sim/ai/AIQuest","source":"engine/sim/ai/AIQuest.js","import":"/engine/sim/ai/AIQuest.js","sourceHash":"edd2f332c3f46f7a4513205cac34fd055939861340e9b24581f7593fdf73bfb8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIQuest.js#0015:QUEST_STATUS","exportIndex":15,"name":"QUEST_STATUS","kind":"constant","signature":"QUEST_STATUS","summary":"Quest status"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIQuest.md","moduleTitle":"sim/ai/AIQuest","source":"engine/sim/ai/AIQuest.js","import":"/engine/sim/ai/AIQuest.js","sourceHash":"edd2f332c3f46f7a4513205cac34fd055939861340e9b24581f7593fdf73bfb8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIQuest.js#0016:QUEST_PRIORITY","exportIndex":16,"name":"QUEST_PRIORITY","kind":"constant","signature":"QUEST_PRIORITY","summary":"Quest priority"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIRandom.md","moduleTitle":"sim/ai/AIRandom","source":"engine/sim/ai/AIRandom.js","import":"/engine/sim/ai/AIRandom.js","sourceHash":"2050852dd1e9ce7da989d3d3a11adaf85031e1c084030beb7d577b142b092772","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/ai/AIRandom.js","title":"sim/ai/AIRandom","summary":"Set the global AI RNG context. Call this at the start of each game tick.","exportCount":8}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIRandom.md","moduleTitle":"sim/ai/AIRandom","source":"engine/sim/ai/AIRandom.js","import":"/engine/sim/ai/AIRandom.js","sourceHash":"2050852dd1e9ce7da989d3d3a11adaf85031e1c084030beb7d577b142b092772","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIRandom.js#0000:setAIRngContext","exportIndex":0,"name":"setAIRngContext","kind":"function","signature":"setAIRngContext(worldSeed, tick)","summary":"Set the global AI RNG context. Call this at the start of each game tick."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIRandom.md","moduleTitle":"sim/ai/AIRandom","source":"engine/sim/ai/AIRandom.js","import":"/engine/sim/ai/AIRandom.js","sourceHash":"2050852dd1e9ce7da989d3d3a11adaf85031e1c084030beb7d577b142b092772","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIRandom.js#0001:getEntityRngState","exportIndex":1,"name":"getEntityRngState","kind":"function","signature":"getEntityRngState(entityId)","summary":"Get RNG state for a specific entity (deterministic per entity+tick)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIRandom.md","moduleTitle":"sim/ai/AIRandom","source":"engine/sim/ai/AIRandom.js","import":"/engine/sim/ai/AIRandom.js","sourceHash":"2050852dd1e9ce7da989d3d3a11adaf85031e1c084030beb7d577b142b092772","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIRandom.js#0002:getPositionRngState","exportIndex":2,"name":"getPositionRngState","kind":"function","signature":"getPositionRngState(x, y, z)","summary":"Get RNG state for a position (terrain, spawns, etc.)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIRandom.md","moduleTitle":"sim/ai/AIRandom","source":"engine/sim/ai/AIRandom.js","import":"/engine/sim/ai/AIRandom.js","sourceHash":"2050852dd1e9ce7da989d3d3a11adaf85031e1c084030beb7d577b142b092772","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIRandom.js#0003:getInteractionRngState","exportIndex":3,"name":"getInteractionRngState","kind":"function","signature":"getInteractionRngState(entityA, entityB)","summary":"Get RNG state for interaction between two entities"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIRandom.md","moduleTitle":"sim/ai/AIRandom","source":"engine/sim/ai/AIRandom.js","import":"/engine/sim/ai/AIRandom.js","sourceHash":"2050852dd1e9ce7da989d3d3a11adaf85031e1c084030beb7d577b142b092772","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIRandom.js#0004:createEntityRng","exportIndex":4,"name":"createEntityRng","kind":"function","signature":"createEntityRng(entityId)","summary":"Create RNG stream for a specific entity Use when you need multiple random values for one entity in the same tick"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIRandom.md","moduleTitle":"sim/ai/AIRandom","source":"engine/sim/ai/AIRandom.js","import":"/engine/sim/ai/AIRandom.js","sourceHash":"2050852dd1e9ce7da989d3d3a11adaf85031e1c084030beb7d577b142b092772","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIRandom.js#0005:createPositionRng","exportIndex":5,"name":"createPositionRng","kind":"function","signature":"createPositionRng(x, y, z)","summary":"Create RNG stream for a world position"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIRandom.md","moduleTitle":"sim/ai/AIRandom","source":"engine/sim/ai/AIRandom.js","import":"/engine/sim/ai/AIRandom.js","sourceHash":"2050852dd1e9ce7da989d3d3a11adaf85031e1c084030beb7d577b142b092772","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIRandom.js#0006:aiRng","exportIndex":6,"name":"aiRng","kind":"constant","signature":"aiRng","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIRandom.md","moduleTitle":"sim/ai/AIRandom","source":"engine/sim/ai/AIRandom.js","import":"/engine/sim/ai/AIRandom.js","sourceHash":"2050852dd1e9ce7da989d3d3a11adaf85031e1c084030beb7d577b142b092772","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIRandom.js#0007:pcgHash","exportIndex":7,"name":"pcgHash","kind":"re-export","signature":"pcgHash","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIRaycastGPU.md","moduleTitle":"sim/ai/AIRaycastGPU","source":"engine/sim/ai/AIRaycastGPU.js","import":"/engine/sim/ai/AIRaycastGPU.js","sourceHash":"134499f4372845b82940ab0dceab4c3f4b003caf04dcfb2610b2a9452c1a27da","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/ai/AIRaycastGPU.js","title":"sim/ai/AIRaycastGPU","summary":"Create a GPU raycast system","exportCount":12}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIRaycastGPU.md","moduleTitle":"sim/ai/AIRaycastGPU","source":"engine/sim/ai/AIRaycastGPU.js","import":"/engine/sim/ai/AIRaycastGPU.js","sourceHash":"134499f4372845b82940ab0dceab4c3f4b003caf04dcfb2610b2a9452c1a27da","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIRaycastGPU.js#0000:createGPURaycastSystem","exportIndex":0,"name":"createGPURaycastSystem","kind":"function","signature":"async createGPURaycastSystem(device, options = {})","summary":"Create a GPU raycast system"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIRaycastGPU.md","moduleTitle":"sim/ai/AIRaycastGPU","source":"engine/sim/ai/AIRaycastGPU.js","import":"/engine/sim/ai/AIRaycastGPU.js","sourceHash":"134499f4372845b82940ab0dceab4c3f4b003caf04dcfb2610b2a9452c1a27da","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIRaycastGPU.js#0001:uploadRays","exportIndex":1,"name":"uploadRays","kind":"function","signature":"uploadRays(system, rays)","summary":"Upload ray data to GPU"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIRaycastGPU.md","moduleTitle":"sim/ai/AIRaycastGPU","source":"engine/sim/ai/AIRaycastGPU.js","import":"/engine/sim/ai/AIRaycastGPU.js","sourceHash":"134499f4372845b82940ab0dceab4c3f4b003caf04dcfb2610b2a9452c1a27da","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIRaycastGPU.js#0002:uploadAABBTargets","exportIndex":2,"name":"uploadAABBTargets","kind":"function","signature":"uploadAABBTargets(system, targets)","summary":"Upload AABB targets to GPU"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIRaycastGPU.md","moduleTitle":"sim/ai/AIRaycastGPU","source":"engine/sim/ai/AIRaycastGPU.js","import":"/engine/sim/ai/AIRaycastGPU.js","sourceHash":"134499f4372845b82940ab0dceab4c3f4b003caf04dcfb2610b2a9452c1a27da","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIRaycastGPU.js#0003:uploadSphereTargets","exportIndex":3,"name":"uploadSphereTargets","kind":"function","signature":"uploadSphereTargets(system, targets)","summary":"Upload sphere targets to GPU"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIRaycastGPU.md","moduleTitle":"sim/ai/AIRaycastGPU","source":"engine/sim/ai/AIRaycastGPU.js","import":"/engine/sim/ai/AIRaycastGPU.js","sourceHash":"134499f4372845b82940ab0dceab4c3f4b003caf04dcfb2610b2a9452c1a27da","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIRaycastGPU.js#0004:dispatchAABBRaycast","exportIndex":4,"name":"dispatchAABBRaycast","kind":"function","signature":"dispatchAABBRaycast(system, encoder)","summary":"Dispatch GPU raycast against AABBs"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIRaycastGPU.md","moduleTitle":"sim/ai/AIRaycastGPU","source":"engine/sim/ai/AIRaycastGPU.js","import":"/engine/sim/ai/AIRaycastGPU.js","sourceHash":"134499f4372845b82940ab0dceab4c3f4b003caf04dcfb2610b2a9452c1a27da","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIRaycastGPU.js#0005:dispatchSphereRaycast","exportIndex":5,"name":"dispatchSphereRaycast","kind":"function","signature":"dispatchSphereRaycast(system, encoder)","summary":"Dispatch GPU raycast against spheres"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIRaycastGPU.md","moduleTitle":"sim/ai/AIRaycastGPU","source":"engine/sim/ai/AIRaycastGPU.js","import":"/engine/sim/ai/AIRaycastGPU.js","sourceHash":"134499f4372845b82940ab0dceab4c3f4b003caf04dcfb2610b2a9452c1a27da","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIRaycastGPU.js#0006:copyResultsToReadback","exportIndex":6,"name":"copyResultsToReadback","kind":"function","signature":"copyResultsToReadback(system, encoder)","summary":"Copy results to readback buffer"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIRaycastGPU.md","moduleTitle":"sim/ai/AIRaycastGPU","source":"engine/sim/ai/AIRaycastGPU.js","import":"/engine/sim/ai/AIRaycastGPU.js","sourceHash":"134499f4372845b82940ab0dceab4c3f4b003caf04dcfb2610b2a9452c1a27da","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIRaycastGPU.js#0007:readbackResults","exportIndex":7,"name":"readbackResults","kind":"function","signature":"async readbackResults(system)","summary":"Read back results from GPU (async)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIRaycastGPU.md","moduleTitle":"sim/ai/AIRaycastGPU","source":"engine/sim/ai/AIRaycastGPU.js","import":"/engine/sim/ai/AIRaycastGPU.js","sourceHash":"134499f4372845b82940ab0dceab4c3f4b003caf04dcfb2610b2a9452c1a27da","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIRaycastGPU.js#0008:batchRaycast","exportIndex":8,"name":"batchRaycast","kind":"function","signature":"async batchRaycast(system, rays, targets, targetType = \"sphere\")","summary":"Full batch raycast operation"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIRaycastGPU.md","moduleTitle":"sim/ai/AIRaycastGPU","source":"engine/sim/ai/AIRaycastGPU.js","import":"/engine/sim/ai/AIRaycastGPU.js","sourceHash":"134499f4372845b82940ab0dceab4c3f4b003caf04dcfb2610b2a9452c1a27da","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIRaycastGPU.js#0009:destroyGPURaycastSystem","exportIndex":9,"name":"destroyGPURaycastSystem","kind":"function","signature":"destroyGPURaycastSystem(system)","summary":"Destroy GPU raycast system and free resources"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIRaycastGPU.md","moduleTitle":"sim/ai/AIRaycastGPU","source":"engine/sim/ai/AIRaycastGPU.js","import":"/engine/sim/ai/AIRaycastGPU.js","sourceHash":"134499f4372845b82940ab0dceab4c3f4b003caf04dcfb2610b2a9452c1a27da","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIRaycastGPU.js#0010:shouldUseGPURaycast","exportIndex":10,"name":"shouldUseGPURaycast","kind":"function","signature":"shouldUseGPURaycast(rayCount, threshold = 500)","summary":"Determine if GPU raycast should be used based on ray count"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIRaycastGPU.md","moduleTitle":"sim/ai/AIRaycastGPU","source":"engine/sim/ai/AIRaycastGPU.js","import":"/engine/sim/ai/AIRaycastGPU.js","sourceHash":"134499f4372845b82940ab0dceab4c3f4b003caf04dcfb2610b2a9452c1a27da","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIRaycastGPU.js#0011:benchmarkRaycast","exportIndex":11,"name":"benchmarkRaycast","kind":"function","signature":"async benchmarkRaycast(system, rayCount = 1000, targetCount = 100)","summary":"Benchmark CPU vs GPU raycast for calibration"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIScheduler.md","moduleTitle":"sim/ai/AIScheduler","source":"engine/sim/ai/AIScheduler.js","import":"/engine/sim/ai/AIScheduler.js","sourceHash":"3b6ffe38bc7cf95c623fc68517773e0db1be1fa9201df3346e31097cd58e9eeb","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/ai/AIScheduler.js","title":"sim/ai/AIScheduler","summary":"Create needs state","exportCount":20}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIScheduler.md","moduleTitle":"sim/ai/AIScheduler","source":"engine/sim/ai/AIScheduler.js","import":"/engine/sim/ai/AIScheduler.js","sourceHash":"3b6ffe38bc7cf95c623fc68517773e0db1be1fa9201df3346e31097cd58e9eeb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIScheduler.js#0000:createNeedsState","exportIndex":0,"name":"createNeedsState","kind":"function","signature":"createNeedsState(initial = {})","summary":"Create needs state"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIScheduler.md","moduleTitle":"sim/ai/AIScheduler","source":"engine/sim/ai/AIScheduler.js","import":"/engine/sim/ai/AIScheduler.js","sourceHash":"3b6ffe38bc7cf95c623fc68517773e0db1be1fa9201df3346e31097cd58e9eeb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIScheduler.js#0001:updateNeeds","exportIndex":1,"name":"updateNeeds","kind":"function","signature":"updateNeeds(needs, gameHours)","summary":"Update needs over time"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIScheduler.md","moduleTitle":"sim/ai/AIScheduler","source":"engine/sim/ai/AIScheduler.js","import":"/engine/sim/ai/AIScheduler.js","sourceHash":"3b6ffe38bc7cf95c623fc68517773e0db1be1fa9201df3346e31097cd58e9eeb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIScheduler.js#0002:satisfyNeed","exportIndex":2,"name":"satisfyNeed","kind":"function","signature":"satisfyNeed(needs, need, amount)","summary":"Satisfy a need"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIScheduler.md","moduleTitle":"sim/ai/AIScheduler","source":"engine/sim/ai/AIScheduler.js","import":"/engine/sim/ai/AIScheduler.js","sourceHash":"3b6ffe38bc7cf95c623fc68517773e0db1be1fa9201df3346e31097cd58e9eeb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIScheduler.js#0003:getMostUrgentNeed","exportIndex":3,"name":"getMostUrgentNeed","kind":"function","signature":"getMostUrgentNeed(needs)","summary":"Get most urgent need"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIScheduler.md","moduleTitle":"sim/ai/AIScheduler","source":"engine/sim/ai/AIScheduler.js","import":"/engine/sim/ai/AIScheduler.js","sourceHash":"3b6ffe38bc7cf95c623fc68517773e0db1be1fa9201df3346e31097cd58e9eeb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIScheduler.js#0004:getCriticalNeeds","exportIndex":4,"name":"getCriticalNeeds","kind":"function","signature":"getCriticalNeeds(needs)","summary":"Get all critical needs"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIScheduler.md","moduleTitle":"sim/ai/AIScheduler","source":"engine/sim/ai/AIScheduler.js","import":"/engine/sim/ai/AIScheduler.js","sourceHash":"3b6ffe38bc7cf95c623fc68517773e0db1be1fa9201df3346e31097cd58e9eeb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIScheduler.js#0005:calculateWellbeing","exportIndex":5,"name":"calculateWellbeing","kind":"function","signature":"calculateWellbeing(needs)","summary":"Calculate overall wellbeing"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIScheduler.md","moduleTitle":"sim/ai/AIScheduler","source":"engine/sim/ai/AIScheduler.js","import":"/engine/sim/ai/AIScheduler.js","sourceHash":"3b6ffe38bc7cf95c623fc68517773e0db1be1fa9201df3346e31097cd58e9eeb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIScheduler.js#0006:createActivity","exportIndex":6,"name":"createActivity","kind":"function","signature":"createActivity(config)","summary":"Create an activity definition"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIScheduler.md","moduleTitle":"sim/ai/AIScheduler","source":"engine/sim/ai/AIScheduler.js","import":"/engine/sim/ai/AIScheduler.js","sourceHash":"3b6ffe38bc7cf95c623fc68517773e0db1be1fa9201df3346e31097cd58e9eeb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIScheduler.js#0007:scoreActivity","exportIndex":7,"name":"scoreActivity","kind":"function","signature":"scoreActivity(activity, needs, gameHour = 12)","summary":"Score an activity based on needs"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIScheduler.md","moduleTitle":"sim/ai/AIScheduler","source":"engine/sim/ai/AIScheduler.js","import":"/engine/sim/ai/AIScheduler.js","sourceHash":"3b6ffe38bc7cf95c623fc68517773e0db1be1fa9201df3346e31097cd58e9eeb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIScheduler.js#0008:selectActivity","exportIndex":8,"name":"selectActivity","kind":"function","signature":"selectActivity(activities, needs, gameHour = 12)","summary":"Select best activity from options"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIScheduler.md","moduleTitle":"sim/ai/AIScheduler","source":"engine/sim/ai/AIScheduler.js","import":"/engine/sim/ai/AIScheduler.js","sourceHash":"3b6ffe38bc7cf95c623fc68517773e0db1be1fa9201df3346e31097cd58e9eeb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIScheduler.js#0009:createSchedule","exportIndex":9,"name":"createSchedule","kind":"function","signature":"createSchedule()","summary":"Create a daily schedule"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIScheduler.md","moduleTitle":"sim/ai/AIScheduler","source":"engine/sim/ai/AIScheduler.js","import":"/engine/sim/ai/AIScheduler.js","sourceHash":"3b6ffe38bc7cf95c623fc68517773e0db1be1fa9201df3346e31097cd58e9eeb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIScheduler.js#0010:addScheduleEntry","exportIndex":10,"name":"addScheduleEntry","kind":"function","signature":"addScheduleEntry(schedule, hour, activityId, priority = 1, days = null)","summary":"Add scheduled entry"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIScheduler.md","moduleTitle":"sim/ai/AIScheduler","source":"engine/sim/ai/AIScheduler.js","import":"/engine/sim/ai/AIScheduler.js","sourceHash":"3b6ffe38bc7cf95c623fc68517773e0db1be1fa9201df3346e31097cd58e9eeb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIScheduler.js#0011:getScheduledActivity","exportIndex":11,"name":"getScheduledActivity","kind":"function","signature":"getScheduledActivity(schedule, gameHour, dayOfWeek = 0)","summary":"Get scheduled activity for time"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIScheduler.md","moduleTitle":"sim/ai/AIScheduler","source":"engine/sim/ai/AIScheduler.js","import":"/engine/sim/ai/AIScheduler.js","sourceHash":"3b6ffe38bc7cf95c623fc68517773e0db1be1fa9201df3346e31097cd58e9eeb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIScheduler.js#0012:createJob","exportIndex":12,"name":"createJob","kind":"function","signature":"createJob(config)","summary":"Create job definition"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIScheduler.md","moduleTitle":"sim/ai/AIScheduler","source":"engine/sim/ai/AIScheduler.js","import":"/engine/sim/ai/AIScheduler.js","sourceHash":"3b6ffe38bc7cf95c623fc68517773e0db1be1fa9201df3346e31097cd58e9eeb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIScheduler.js#0013:isWorkTime","exportIndex":13,"name":"isWorkTime","kind":"function","signature":"isWorkTime(job, gameHour, dayOfWeek)","summary":"Check if currently work hours"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIScheduler.md","moduleTitle":"sim/ai/AIScheduler","source":"engine/sim/ai/AIScheduler.js","import":"/engine/sim/ai/AIScheduler.js","sourceHash":"3b6ffe38bc7cf95c623fc68517773e0db1be1fa9201df3346e31097cd58e9eeb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIScheduler.js#0014:createNPCScheduler","exportIndex":14,"name":"createNPCScheduler","kind":"function","signature":"createNPCScheduler(config = {})","summary":"Create NPC scheduler"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIScheduler.md","moduleTitle":"sim/ai/AIScheduler","source":"engine/sim/ai/AIScheduler.js","import":"/engine/sim/ai/AIScheduler.js","sourceHash":"3b6ffe38bc7cf95c623fc68517773e0db1be1fa9201df3346e31097cd58e9eeb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIScheduler.js#0015:updateScheduler","exportIndex":15,"name":"updateScheduler","kind":"function","signature":"updateScheduler(scheduler, gameHour, dayOfWeek, deltaGameHours)","summary":"Update NPC scheduler"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIScheduler.md","moduleTitle":"sim/ai/AIScheduler","source":"engine/sim/ai/AIScheduler.js","import":"/engine/sim/ai/AIScheduler.js","sourceHash":"3b6ffe38bc7cf95c623fc68517773e0db1be1fa9201df3346e31097cd58e9eeb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIScheduler.js#0016:NEED","exportIndex":16,"name":"NEED","kind":"constant","signature":"NEED","summary":"Basic need types"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIScheduler.md","moduleTitle":"sim/ai/AIScheduler","source":"engine/sim/ai/AIScheduler.js","import":"/engine/sim/ai/AIScheduler.js","sourceHash":"3b6ffe38bc7cf95c623fc68517773e0db1be1fa9201df3346e31097cd58e9eeb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIScheduler.js#0017:URGENCY","exportIndex":17,"name":"URGENCY","kind":"constant","signature":"URGENCY","summary":"Need urgency thresholds"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIScheduler.md","moduleTitle":"sim/ai/AIScheduler","source":"engine/sim/ai/AIScheduler.js","import":"/engine/sim/ai/AIScheduler.js","sourceHash":"3b6ffe38bc7cf95c623fc68517773e0db1be1fa9201df3346e31097cd58e9eeb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIScheduler.js#0018:JOB_TYPE","exportIndex":18,"name":"JOB_TYPE","kind":"constant","signature":"JOB_TYPE","summary":"Job types"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIScheduler.md","moduleTitle":"sim/ai/AIScheduler","source":"engine/sim/ai/AIScheduler.js","import":"/engine/sim/ai/AIScheduler.js","sourceHash":"3b6ffe38bc7cf95c623fc68517773e0db1be1fa9201df3346e31097cd58e9eeb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIScheduler.js#0019:PRESET_ACTIVITIES","exportIndex":19,"name":"PRESET_ACTIVITIES","kind":"constant","signature":"PRESET_ACTIVITIES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISchema.md","moduleTitle":"sim/ai/AISchema","source":"engine/sim/ai/AISchema.js","import":"/engine/sim/ai/AISchema.js","sourceHash":"07535f43fb70f2be387bf96fa343e3418cdf50be9ea51b2eba78f0f8e2b2ddaa","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/ai/AISchema.js","title":"sim/ai/AISchema","summary":"Get node type ID from name","exportCount":25}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISchema.md","moduleTitle":"sim/ai/AISchema","source":"engine/sim/ai/AISchema.js","import":"/engine/sim/ai/AISchema.js","sourceHash":"07535f43fb70f2be387bf96fa343e3418cdf50be9ea51b2eba78f0f8e2b2ddaa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISchema.js#0000:getNodeTypeId","exportIndex":0,"name":"getNodeTypeId","kind":"function","signature":"getNodeTypeId(typeName)","summary":"Get node type ID from name"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISchema.md","moduleTitle":"sim/ai/AISchema","source":"engine/sim/ai/AISchema.js","import":"/engine/sim/ai/AISchema.js","sourceHash":"07535f43fb70f2be387bf96fa343e3418cdf50be9ea51b2eba78f0f8e2b2ddaa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISchema.js#0001:getAwarenessStateId","exportIndex":1,"name":"getAwarenessStateId","kind":"function","signature":"getAwarenessStateId(stateName)","summary":"Get awareness state ID from name"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISchema.md","moduleTitle":"sim/ai/AISchema","source":"engine/sim/ai/AISchema.js","import":"/engine/sim/ai/AISchema.js","sourceHash":"07535f43fb70f2be387bf96fa343e3418cdf50be9ea51b2eba78f0f8e2b2ddaa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISchema.js#0002:getAwarenessStateName","exportIndex":2,"name":"getAwarenessStateName","kind":"function","signature":"getAwarenessStateName(stateId)","summary":"Get awareness state name from ID"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISchema.md","moduleTitle":"sim/ai/AISchema","source":"engine/sim/ai/AISchema.js","import":"/engine/sim/ai/AISchema.js","sourceHash":"07535f43fb70f2be387bf96fa343e3418cdf50be9ea51b2eba78f0f8e2b2ddaa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISchema.js#0003:getReputationLevel","exportIndex":3,"name":"getReputationLevel","kind":"function","signature":"getReputationLevel(value)","summary":"Get reputation level from value"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISchema.md","moduleTitle":"sim/ai/AISchema","source":"engine/sim/ai/AISchema.js","import":"/engine/sim/ai/AISchema.js","sourceHash":"07535f43fb70f2be387bf96fa343e3418cdf50be9ea51b2eba78f0f8e2b2ddaa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISchema.js#0004:validatePerception","exportIndex":4,"name":"validatePerception","kind":"function","signature":"validatePerception(config)","summary":"Validate perception parameters"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISchema.md","moduleTitle":"sim/ai/AISchema","source":"engine/sim/ai/AISchema.js","import":"/engine/sim/ai/AISchema.js","sourceHash":"07535f43fb70f2be387bf96fa343e3418cdf50be9ea51b2eba78f0f8e2b2ddaa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISchema.js#0005:validateSteeringAgent","exportIndex":5,"name":"validateSteeringAgent","kind":"function","signature":"validateSteeringAgent(config)","summary":"Validate steering agent config"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISchema.md","moduleTitle":"sim/ai/AISchema","source":"engine/sim/ai/AISchema.js","import":"/engine/sim/ai/AISchema.js","sourceHash":"07535f43fb70f2be387bf96fa343e3418cdf50be9ea51b2eba78f0f8e2b2ddaa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISchema.js#0006:validatePersonality","exportIndex":6,"name":"validatePersonality","kind":"function","signature":"validatePersonality(config)","summary":"Validate personality"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISchema.md","moduleTitle":"sim/ai/AISchema","source":"engine/sim/ai/AISchema.js","import":"/engine/sim/ai/AISchema.js","sourceHash":"07535f43fb70f2be387bf96fa343e3418cdf50be9ea51b2eba78f0f8e2b2ddaa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISchema.js#0007:createDefaultPerception","exportIndex":7,"name":"createDefaultPerception","kind":"function","signature":"createDefaultPerception()","summary":"Create default perception config"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISchema.md","moduleTitle":"sim/ai/AISchema","source":"engine/sim/ai/AISchema.js","import":"/engine/sim/ai/AISchema.js","sourceHash":"07535f43fb70f2be387bf96fa343e3418cdf50be9ea51b2eba78f0f8e2b2ddaa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISchema.js#0008:createDefaultSteeringAgent","exportIndex":8,"name":"createDefaultSteeringAgent","kind":"function","signature":"createDefaultSteeringAgent()","summary":"Create default steering agent"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISchema.md","moduleTitle":"sim/ai/AISchema","source":"engine/sim/ai/AISchema.js","import":"/engine/sim/ai/AISchema.js","sourceHash":"07535f43fb70f2be387bf96fa343e3418cdf50be9ea51b2eba78f0f8e2b2ddaa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISchema.js#0009:createDefaultPersonality","exportIndex":9,"name":"createDefaultPersonality","kind":"function","signature":"createDefaultPersonality()","summary":"Create default personality"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISchema.md","moduleTitle":"sim/ai/AISchema","source":"engine/sim/ai/AISchema.js","import":"/engine/sim/ai/AISchema.js","sourceHash":"07535f43fb70f2be387bf96fa343e3418cdf50be9ea51b2eba78f0f8e2b2ddaa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISchema.js#0010:createDefaultFaction","exportIndex":10,"name":"createDefaultFaction","kind":"function","signature":"createDefaultFaction(id, name)","summary":"Create default faction"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISchema.md","moduleTitle":"sim/ai/AISchema","source":"engine/sim/ai/AISchema.js","import":"/engine/sim/ai/AISchema.js","sourceHash":"07535f43fb70f2be387bf96fa343e3418cdf50be9ea51b2eba78f0f8e2b2ddaa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISchema.js#0011:NODE_STATUS","exportIndex":11,"name":"NODE_STATUS","kind":"constant","signature":"NODE_STATUS","summary":"Behavior tree node status"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISchema.md","moduleTitle":"sim/ai/AISchema","source":"engine/sim/ai/AISchema.js","import":"/engine/sim/ai/AISchema.js","sourceHash":"07535f43fb70f2be387bf96fa343e3418cdf50be9ea51b2eba78f0f8e2b2ddaa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISchema.js#0012:NODE_TYPES","exportIndex":12,"name":"NODE_TYPES","kind":"constant","signature":"NODE_TYPES","summary":"Behavior tree node types"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISchema.md","moduleTitle":"sim/ai/AISchema","source":"engine/sim/ai/AISchema.js","import":"/engine/sim/ai/AISchema.js","sourceHash":"07535f43fb70f2be387bf96fa343e3418cdf50be9ea51b2eba78f0f8e2b2ddaa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISchema.js#0013:AWARENESS_STATES","exportIndex":13,"name":"AWARENESS_STATES","kind":"constant","signature":"AWARENESS_STATES","summary":"NPC awareness states"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISchema.md","moduleTitle":"sim/ai/AISchema","source":"engine/sim/ai/AISchema.js","import":"/engine/sim/ai/AISchema.js","sourceHash":"07535f43fb70f2be387bf96fa343e3418cdf50be9ea51b2eba78f0f8e2b2ddaa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISchema.js#0014:SENSE_TYPES","exportIndex":14,"name":"SENSE_TYPES","kind":"constant","signature":"SENSE_TYPES","summary":"Sense types for perception"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISchema.md","moduleTitle":"sim/ai/AISchema","source":"engine/sim/ai/AISchema.js","import":"/engine/sim/ai/AISchema.js","sourceHash":"07535f43fb70f2be387bf96fa343e3418cdf50be9ea51b2eba78f0f8e2b2ddaa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISchema.js#0015:PERCEPTION_SCHEMA","exportIndex":15,"name":"PERCEPTION_SCHEMA","kind":"constant","signature":"PERCEPTION_SCHEMA","summary":"Perception parameters schema"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISchema.md","moduleTitle":"sim/ai/AISchema","source":"engine/sim/ai/AISchema.js","import":"/engine/sim/ai/AISchema.js","sourceHash":"07535f43fb70f2be387bf96fa343e3418cdf50be9ea51b2eba78f0f8e2b2ddaa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISchema.js#0016:STEERING_BEHAVIORS","exportIndex":16,"name":"STEERING_BEHAVIORS","kind":"constant","signature":"STEERING_BEHAVIORS","summary":"Steering behavior types"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISchema.md","moduleTitle":"sim/ai/AISchema","source":"engine/sim/ai/AISchema.js","import":"/engine/sim/ai/AISchema.js","sourceHash":"07535f43fb70f2be387bf96fa343e3418cdf50be9ea51b2eba78f0f8e2b2ddaa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISchema.js#0017:STEERING_AGENT_SCHEMA","exportIndex":17,"name":"STEERING_AGENT_SCHEMA","kind":"constant","signature":"STEERING_AGENT_SCHEMA","summary":"Steering agent schema"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISchema.md","moduleTitle":"sim/ai/AISchema","source":"engine/sim/ai/AISchema.js","import":"/engine/sim/ai/AISchema.js","sourceHash":"07535f43fb70f2be387bf96fa343e3418cdf50be9ea51b2eba78f0f8e2b2ddaa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISchema.js#0018:DIPLOMATIC_STANCES","exportIndex":18,"name":"DIPLOMATIC_STANCES","kind":"constant","signature":"DIPLOMATIC_STANCES","summary":"Diplomatic stances"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISchema.md","moduleTitle":"sim/ai/AISchema","source":"engine/sim/ai/AISchema.js","import":"/engine/sim/ai/AISchema.js","sourceHash":"07535f43fb70f2be387bf96fa343e3418cdf50be9ea51b2eba78f0f8e2b2ddaa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISchema.js#0019:REPUTATION_LEVELS","exportIndex":19,"name":"REPUTATION_LEVELS","kind":"constant","signature":"REPUTATION_LEVELS","summary":"Reputation levels"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISchema.md","moduleTitle":"sim/ai/AISchema","source":"engine/sim/ai/AISchema.js","import":"/engine/sim/ai/AISchema.js","sourceHash":"07535f43fb70f2be387bf96fa343e3418cdf50be9ea51b2eba78f0f8e2b2ddaa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISchema.js#0020:FACTION_SCHEMA","exportIndex":20,"name":"FACTION_SCHEMA","kind":"constant","signature":"FACTION_SCHEMA","summary":"Faction schema"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISchema.md","moduleTitle":"sim/ai/AISchema","source":"engine/sim/ai/AISchema.js","import":"/engine/sim/ai/AISchema.js","sourceHash":"07535f43fb70f2be387bf96fa343e3418cdf50be9ea51b2eba78f0f8e2b2ddaa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISchema.js#0021:PERSONALITY_TRAITS","exportIndex":21,"name":"PERSONALITY_TRAITS","kind":"constant","signature":"PERSONALITY_TRAITS","summary":"Personality traits (Big Five + custom)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISchema.md","moduleTitle":"sim/ai/AISchema","source":"engine/sim/ai/AISchema.js","import":"/engine/sim/ai/AISchema.js","sourceHash":"07535f43fb70f2be387bf96fa343e3418cdf50be9ea51b2eba78f0f8e2b2ddaa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISchema.js#0022:PERSONALITY_SCHEMA","exportIndex":22,"name":"PERSONALITY_SCHEMA","kind":"constant","signature":"PERSONALITY_SCHEMA","summary":"Personality schema"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISchema.md","moduleTitle":"sim/ai/AISchema","source":"engine/sim/ai/AISchema.js","import":"/engine/sim/ai/AISchema.js","sourceHash":"07535f43fb70f2be387bf96fa343e3418cdf50be9ea51b2eba78f0f8e2b2ddaa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISchema.js#0023:NPC_AI_SCHEMA","exportIndex":23,"name":"NPC_AI_SCHEMA","kind":"constant","signature":"NPC_AI_SCHEMA","summary":"Complete NPC AI schema"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISchema.md","moduleTitle":"sim/ai/AISchema","source":"engine/sim/ai/AISchema.js","import":"/engine/sim/ai/AISchema.js","sourceHash":"07535f43fb70f2be387bf96fa343e3418cdf50be9ea51b2eba78f0f8e2b2ddaa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISchema.js#0024:PERSONALITY_PRESETS","exportIndex":24,"name":"PERSONALITY_PRESETS","kind":"constant","signature":"PERSONALITY_PRESETS","summary":"Create preset personality"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISenses.md","moduleTitle":"sim/ai/AISenses","source":"engine/sim/ai/AISenses.js","import":"/engine/sim/ai/AISenses.js","sourceHash":"b81abdf74771cb9ee370b7bd178850baa44c91703e637eda33bacb157f676edb","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/ai/AISenses.js","title":"sim/ai/AISenses","summary":"Create scent particle","exportCount":20}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISenses.md","moduleTitle":"sim/ai/AISenses","source":"engine/sim/ai/AISenses.js","import":"/engine/sim/ai/AISenses.js","sourceHash":"b81abdf74771cb9ee370b7bd178850baa44c91703e637eda33bacb157f676edb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISenses.js#0000:createScentParticle","exportIndex":0,"name":"createScentParticle","kind":"function","signature":"createScentParticle(config)","summary":"Create scent particle"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISenses.md","moduleTitle":"sim/ai/AISenses","source":"engine/sim/ai/AISenses.js","import":"/engine/sim/ai/AISenses.js","sourceHash":"b81abdf74771cb9ee370b7bd178850baa44c91703e637eda33bacb157f676edb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISenses.js#0001:createScentTrail","exportIndex":1,"name":"createScentTrail","kind":"function","signature":"createScentTrail(sourceId, type)","summary":"Create scent trail (series of particles)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISenses.md","moduleTitle":"sim/ai/AISenses","source":"engine/sim/ai/AISenses.js","import":"/engine/sim/ai/AISenses.js","sourceHash":"b81abdf74771cb9ee370b7bd178850baa44c91703e637eda33bacb157f676edb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISenses.js#0002:addTrailParticle","exportIndex":2,"name":"addTrailParticle","kind":"function","signature":"addTrailParticle(trail, position, intensity = 1.0)","summary":"Add particle to trail"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISenses.md","moduleTitle":"sim/ai/AISenses","source":"engine/sim/ai/AISenses.js","import":"/engine/sim/ai/AISenses.js","sourceHash":"b81abdf74771cb9ee370b7bd178850baa44c91703e637eda33bacb157f676edb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISenses.js#0003:createScentSystem","exportIndex":3,"name":"createScentSystem","kind":"function","signature":"createScentSystem()","summary":"Create scent system"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISenses.md","moduleTitle":"sim/ai/AISenses","source":"engine/sim/ai/AISenses.js","import":"/engine/sim/ai/AISenses.js","sourceHash":"b81abdf74771cb9ee370b7bd178850baa44c91703e637eda33bacb157f676edb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISenses.js#0004:updateScentSystem","exportIndex":4,"name":"updateScentSystem","kind":"function","signature":"updateScentSystem(system, deltaTime)","summary":"Update scent system"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISenses.md","moduleTitle":"sim/ai/AISenses","source":"engine/sim/ai/AISenses.js","import":"/engine/sim/ai/AISenses.js","sourceHash":"b81abdf74771cb9ee370b7bd178850baa44c91703e637eda33bacb157f676edb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISenses.js#0005:smellAt","exportIndex":5,"name":"smellAt","kind":"function","signature":"smellAt(system, position, range, sensitivity = 1.0)","summary":"Smell at position"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISenses.md","moduleTitle":"sim/ai/AISenses","source":"engine/sim/ai/AISenses.js","import":"/engine/sim/ai/AISenses.js","sourceHash":"b81abdf74771cb9ee370b7bd178850baa44c91703e637eda33bacb157f676edb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISenses.js#0006:followScentTrail","exportIndex":6,"name":"followScentTrail","kind":"function","signature":"followScentTrail(system, position, targetSourceId, range)","summary":"Follow scent trail"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISenses.md","moduleTitle":"sim/ai/AISenses","source":"engine/sim/ai/AISenses.js","import":"/engine/sim/ai/AISenses.js","sourceHash":"b81abdf74771cb9ee370b7bd178850baa44c91703e637eda33bacb157f676edb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISenses.js#0007:createVibration","exportIndex":7,"name":"createVibration","kind":"function","signature":"createVibration(config)","summary":"Create vibration event"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISenses.md","moduleTitle":"sim/ai/AISenses","source":"engine/sim/ai/AISenses.js","import":"/engine/sim/ai/AISenses.js","sourceHash":"b81abdf74771cb9ee370b7bd178850baa44c91703e637eda33bacb157f676edb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISenses.js#0008:createTremorSense","exportIndex":8,"name":"createTremorSense","kind":"function","signature":"createTremorSense()","summary":"Create tremor sense system"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISenses.md","moduleTitle":"sim/ai/AISenses","source":"engine/sim/ai/AISenses.js","import":"/engine/sim/ai/AISenses.js","sourceHash":"b81abdf74771cb9ee370b7bd178850baa44c91703e637eda33bacb157f676edb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISenses.js#0009:emitVibration","exportIndex":9,"name":"emitVibration","kind":"function","signature":"emitVibration(system, vibration)","summary":"Emit vibration"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISenses.md","moduleTitle":"sim/ai/AISenses","source":"engine/sim/ai/AISenses.js","import":"/engine/sim/ai/AISenses.js","sourceHash":"b81abdf74771cb9ee370b7bd178850baa44c91703e637eda33bacb157f676edb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISenses.js#0010:senseVibrations","exportIndex":10,"name":"senseVibrations","kind":"function","signature":"senseVibrations(system, position, sensitivity = 1.0)","summary":"Sense vibrations at position"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISenses.md","moduleTitle":"sim/ai/AISenses","source":"engine/sim/ai/AISenses.js","import":"/engine/sim/ai/AISenses.js","sourceHash":"b81abdf74771cb9ee370b7bd178850baa44c91703e637eda33bacb157f676edb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISenses.js#0011:createDangerSense","exportIndex":11,"name":"createDangerSense","kind":"function","signature":"createDangerSense()","summary":"Create danger sense system"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISenses.md","moduleTitle":"sim/ai/AISenses","source":"engine/sim/ai/AISenses.js","import":"/engine/sim/ai/AISenses.js","sourceHash":"b81abdf74771cb9ee370b7bd178850baa44c91703e637eda33bacb157f676edb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISenses.js#0012:registerThreat","exportIndex":12,"name":"registerThreat","kind":"function","signature":"registerThreat(system, threatId, position, dangerLevel, type = \"unknown\")","summary":"Register threat"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISenses.md","moduleTitle":"sim/ai/AISenses","source":"engine/sim/ai/AISenses.js","import":"/engine/sim/ai/AISenses.js","sourceHash":"b81abdf74771cb9ee370b7bd178850baa44c91703e637eda33bacb157f676edb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISenses.js#0013:removeThreat","exportIndex":13,"name":"removeThreat","kind":"function","signature":"removeThreat(system, threatId)","summary":"Remove threat"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISenses.md","moduleTitle":"sim/ai/AISenses","source":"engine/sim/ai/AISenses.js","import":"/engine/sim/ai/AISenses.js","sourceHash":"b81abdf74771cb9ee370b7bd178850baa44c91703e637eda33bacb157f676edb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISenses.js#0014:senseDanger","exportIndex":14,"name":"senseDanger","kind":"function","signature":"senseDanger(system, position, range, sensitivity = 1.0)","summary":"Sense danger level at position"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISenses.md","moduleTitle":"sim/ai/AISenses","source":"engine/sim/ai/AISenses.js","import":"/engine/sim/ai/AISenses.js","sourceHash":"b81abdf74771cb9ee370b7bd178850baa44c91703e637eda33bacb157f676edb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISenses.js#0015:createEnvironmentSensor","exportIndex":15,"name":"createEnvironmentSensor","kind":"function","signature":"createEnvironmentSensor()","summary":"Create environmental sensor"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISenses.md","moduleTitle":"sim/ai/AISenses","source":"engine/sim/ai/AISenses.js","import":"/engine/sim/ai/AISenses.js","sourceHash":"b81abdf74771cb9ee370b7bd178850baa44c91703e637eda33bacb157f676edb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISenses.js#0016:updateEnvironmentReadings","exportIndex":16,"name":"updateEnvironmentReadings","kind":"function","signature":"updateEnvironmentReadings(sensor, readings)","summary":"Update environment readings"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISenses.md","moduleTitle":"sim/ai/AISenses","source":"engine/sim/ai/AISenses.js","import":"/engine/sim/ai/AISenses.js","sourceHash":"b81abdf74771cb9ee370b7bd178850baa44c91703e637eda33bacb157f676edb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISenses.js#0017:getEnvironmentalComfort","exportIndex":17,"name":"getEnvironmentalComfort","kind":"function","signature":"getEnvironmentalComfort(sensor)","summary":"Get environmental comfort level"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISenses.md","moduleTitle":"sim/ai/AISenses","source":"engine/sim/ai/AISenses.js","import":"/engine/sim/ai/AISenses.js","sourceHash":"b81abdf74771cb9ee370b7bd178850baa44c91703e637eda33bacb157f676edb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISenses.js#0018:detectEnvironmentTrend","exportIndex":18,"name":"detectEnvironmentTrend","kind":"function","signature":"detectEnvironmentTrend(sensor, property)","summary":"Detect environmental trend"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISenses.md","moduleTitle":"sim/ai/AISenses","source":"engine/sim/ai/AISenses.js","import":"/engine/sim/ai/AISenses.js","sourceHash":"b81abdf74771cb9ee370b7bd178850baa44c91703e637eda33bacb157f676edb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISenses.js#0019:SCENT_TYPE","exportIndex":19,"name":"SCENT_TYPE","kind":"constant","signature":"SCENT_TYPE","summary":"Scent types"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISmartObjects.md","moduleTitle":"sim/ai/AISmartObjects","source":"engine/sim/ai/AISmartObjects.js","import":"/engine/sim/ai/AISmartObjects.js","sourceHash":"bc96fadae73232ba60b86b85e1e8cc8c5b6820a4356b29934bea016039eb914b","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/ai/AISmartObjects.js","title":"sim/ai/AISmartObjects","summary":"Create a smart object","exportCount":19}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISmartObjects.md","moduleTitle":"sim/ai/AISmartObjects","source":"engine/sim/ai/AISmartObjects.js","import":"/engine/sim/ai/AISmartObjects.js","sourceHash":"bc96fadae73232ba60b86b85e1e8cc8c5b6820a4356b29934bea016039eb914b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISmartObjects.js#0000:createSmartObject","exportIndex":0,"name":"createSmartObject","kind":"function","signature":"createSmartObject(config)","summary":"Create a smart object"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISmartObjects.md","moduleTitle":"sim/ai/AISmartObjects","source":"engine/sim/ai/AISmartObjects.js","import":"/engine/sim/ai/AISmartObjects.js","sourceHash":"bc96fadae73232ba60b86b85e1e8cc8c5b6820a4356b29934bea016039eb914b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISmartObjects.js#0001:getSlotWorldPosition","exportIndex":1,"name":"getSlotWorldPosition","kind":"function","signature":"getSlotWorldPosition(smartObject, slotIndex = 0)","summary":"Get world position of an interaction slot"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISmartObjects.md","moduleTitle":"sim/ai/AISmartObjects","source":"engine/sim/ai/AISmartObjects.js","import":"/engine/sim/ai/AISmartObjects.js","sourceHash":"bc96fadae73232ba60b86b85e1e8cc8c5b6820a4356b29934bea016039eb914b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISmartObjects.js#0002:findAvailableSlot","exportIndex":2,"name":"findAvailableSlot","kind":"function","signature":"findAvailableSlot(smartObject)","summary":"Find available slot for interaction"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISmartObjects.md","moduleTitle":"sim/ai/AISmartObjects","source":"engine/sim/ai/AISmartObjects.js","import":"/engine/sim/ai/AISmartObjects.js","sourceHash":"bc96fadae73232ba60b86b85e1e8cc8c5b6820a4356b29934bea016039eb914b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISmartObjects.js#0003:reserveSlot","exportIndex":3,"name":"reserveSlot","kind":"function","signature":"reserveSlot(smartObject, slotIndex, npcId)","summary":"Reserve a slot for an NPC"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISmartObjects.md","moduleTitle":"sim/ai/AISmartObjects","source":"engine/sim/ai/AISmartObjects.js","import":"/engine/sim/ai/AISmartObjects.js","sourceHash":"bc96fadae73232ba60b86b85e1e8cc8c5b6820a4356b29934bea016039eb914b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISmartObjects.js#0004:releaseSlot","exportIndex":4,"name":"releaseSlot","kind":"function","signature":"releaseSlot(smartObject, slotIndex)","summary":"Release a slot"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISmartObjects.md","moduleTitle":"sim/ai/AISmartObjects","source":"engine/sim/ai/AISmartObjects.js","import":"/engine/sim/ai/AISmartObjects.js","sourceHash":"bc96fadae73232ba60b86b85e1e8cc8c5b6820a4356b29934bea016039eb914b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISmartObjects.js#0005:checkPrerequisites","exportIndex":5,"name":"checkPrerequisites","kind":"function","signature":"checkPrerequisites(smartObject, npcState)","summary":"Check if NPC meets prerequisites for interaction"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISmartObjects.md","moduleTitle":"sim/ai/AISmartObjects","source":"engine/sim/ai/AISmartObjects.js","import":"/engine/sim/ai/AISmartObjects.js","sourceHash":"bc96fadae73232ba60b86b85e1e8cc8c5b6820a4356b29934bea016039eb914b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISmartObjects.js#0006:createInteraction","exportIndex":6,"name":"createInteraction","kind":"function","signature":"createInteraction(smartObject, npcId, slotIndex)","summary":"Create an interaction session"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISmartObjects.md","moduleTitle":"sim/ai/AISmartObjects","source":"engine/sim/ai/AISmartObjects.js","import":"/engine/sim/ai/AISmartObjects.js","sourceHash":"bc96fadae73232ba60b86b85e1e8cc8c5b6820a4356b29934bea016039eb914b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISmartObjects.js#0007:updateInteraction","exportIndex":7,"name":"updateInteraction","kind":"function","signature":"updateInteraction(interaction, npcPos, npcFacing, now)","summary":"Update interaction state"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISmartObjects.md","moduleTitle":"sim/ai/AISmartObjects","source":"engine/sim/ai/AISmartObjects.js","import":"/engine/sim/ai/AISmartObjects.js","sourceHash":"bc96fadae73232ba60b86b85e1e8cc8c5b6820a4356b29934bea016039eb914b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISmartObjects.js#0008:completeInteraction","exportIndex":8,"name":"completeInteraction","kind":"function","signature":"completeInteraction(smartObject, interaction, npcState)","summary":"Complete interaction and apply effects"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISmartObjects.md","moduleTitle":"sim/ai/AISmartObjects","source":"engine/sim/ai/AISmartObjects.js","import":"/engine/sim/ai/AISmartObjects.js","sourceHash":"bc96fadae73232ba60b86b85e1e8cc8c5b6820a4356b29934bea016039eb914b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISmartObjects.js#0009:createSmartObjectRegistry","exportIndex":9,"name":"createSmartObjectRegistry","kind":"function","signature":"createSmartObjectRegistry()","summary":"Create a smart object registry"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISmartObjects.md","moduleTitle":"sim/ai/AISmartObjects","source":"engine/sim/ai/AISmartObjects.js","import":"/engine/sim/ai/AISmartObjects.js","sourceHash":"bc96fadae73232ba60b86b85e1e8cc8c5b6820a4356b29934bea016039eb914b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISmartObjects.js#0010:registerSmartObject","exportIndex":10,"name":"registerSmartObject","kind":"function","signature":"registerSmartObject(registry, smartObject)","summary":"Register a smart object"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISmartObjects.md","moduleTitle":"sim/ai/AISmartObjects","source":"engine/sim/ai/AISmartObjects.js","import":"/engine/sim/ai/AISmartObjects.js","sourceHash":"bc96fadae73232ba60b86b85e1e8cc8c5b6820a4356b29934bea016039eb914b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISmartObjects.js#0011:findByCategory","exportIndex":11,"name":"findByCategory","kind":"function","signature":"findByCategory(registry, category)","summary":"Find smart objects by category"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISmartObjects.md","moduleTitle":"sim/ai/AISmartObjects","source":"engine/sim/ai/AISmartObjects.js","import":"/engine/sim/ai/AISmartObjects.js","sourceHash":"bc96fadae73232ba60b86b85e1e8cc8c5b6820a4356b29934bea016039eb914b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISmartObjects.js#0012:findByTag","exportIndex":12,"name":"findByTag","kind":"function","signature":"findByTag(registry, tag)","summary":"Find smart objects by tag"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISmartObjects.md","moduleTitle":"sim/ai/AISmartObjects","source":"engine/sim/ai/AISmartObjects.js","import":"/engine/sim/ai/AISmartObjects.js","sourceHash":"bc96fadae73232ba60b86b85e1e8cc8c5b6820a4356b29934bea016039eb914b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISmartObjects.js#0013:findNearestUsable","exportIndex":13,"name":"findNearestUsable","kind":"function","signature":"findNearestUsable(registry, position, npcState, filters = {})","summary":"Find nearest usable smart object"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISmartObjects.md","moduleTitle":"sim/ai/AISmartObjects","source":"engine/sim/ai/AISmartObjects.js","import":"/engine/sim/ai/AISmartObjects.js","sourceHash":"bc96fadae73232ba60b86b85e1e8cc8c5b6820a4356b29934bea016039eb914b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISmartObjects.js#0014:createHealthStation","exportIndex":14,"name":"createHealthStation","kind":"function","signature":"createHealthStation(id, position, healAmount = 50)","summary":"Create a health station smart object"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISmartObjects.md","moduleTitle":"sim/ai/AISmartObjects","source":"engine/sim/ai/AISmartObjects.js","import":"/engine/sim/ai/AISmartObjects.js","sourceHash":"bc96fadae73232ba60b86b85e1e8cc8c5b6820a4356b29934bea016039eb914b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISmartObjects.js#0015:createAmmoCrate","exportIndex":15,"name":"createAmmoCrate","kind":"function","signature":"createAmmoCrate(id, position, ammoAmount = 30)","summary":"Create an ammo crate smart object"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISmartObjects.md","moduleTitle":"sim/ai/AISmartObjects","source":"engine/sim/ai/AISmartObjects.js","import":"/engine/sim/ai/AISmartObjects.js","sourceHash":"bc96fadae73232ba60b86b85e1e8cc8c5b6820a4356b29934bea016039eb914b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISmartObjects.js#0016:createDoor","exportIndex":16,"name":"createDoor","kind":"function","signature":"createDoor(id, position, rotation = 0)","summary":"Create a door smart object"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISmartObjects.md","moduleTitle":"sim/ai/AISmartObjects","source":"engine/sim/ai/AISmartObjects.js","import":"/engine/sim/ai/AISmartObjects.js","sourceHash":"bc96fadae73232ba60b86b85e1e8cc8c5b6820a4356b29934bea016039eb914b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISmartObjects.js#0017:OBJECT_CATEGORY","exportIndex":17,"name":"OBJECT_CATEGORY","kind":"constant","signature":"OBJECT_CATEGORY","summary":"Smart object categories"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISmartObjects.md","moduleTitle":"sim/ai/AISmartObjects","source":"engine/sim/ai/AISmartObjects.js","import":"/engine/sim/ai/AISmartObjects.js","sourceHash":"bc96fadae73232ba60b86b85e1e8cc8c5b6820a4356b29934bea016039eb914b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISmartObjects.js#0018:INTERACTION_STATE","exportIndex":18,"name":"INTERACTION_STATE","kind":"constant","signature":"INTERACTION_STATE","summary":"Interaction states"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISound.md","moduleTitle":"sim/ai/AISound","source":"engine/sim/ai/AISound.js","import":"/engine/sim/ai/AISound.js","sourceHash":"d39b20cacac1289018b899f8f9c3e7f463eac7a8ec0898cc8950598873d47ad6","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/ai/AISound.js","title":"sim/ai/AISound","summary":"Create a sound event","exportCount":16}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISound.md","moduleTitle":"sim/ai/AISound","source":"engine/sim/ai/AISound.js","import":"/engine/sim/ai/AISound.js","sourceHash":"d39b20cacac1289018b899f8f9c3e7f463eac7a8ec0898cc8950598873d47ad6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISound.js#0000:createSoundEvent","exportIndex":0,"name":"createSoundEvent","kind":"function","signature":"createSoundEvent(config)","summary":"Create a sound event"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISound.md","moduleTitle":"sim/ai/AISound","source":"engine/sim/ai/AISound.js","import":"/engine/sim/ai/AISound.js","sourceHash":"d39b20cacac1289018b899f8f9c3e7f463eac7a8ec0898cc8950598873d47ad6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISound.js#0001:createSoundSystem","exportIndex":1,"name":"createSoundSystem","kind":"function","signature":"createSoundSystem(config = {})","summary":"Create sound propagation system"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISound.md","moduleTitle":"sim/ai/AISound","source":"engine/sim/ai/AISound.js","import":"/engine/sim/ai/AISound.js","sourceHash":"d39b20cacac1289018b899f8f9c3e7f463eac7a8ec0898cc8950598873d47ad6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISound.js#0002:registerListener","exportIndex":2,"name":"registerListener","kind":"function","signature":"registerListener(system, entityId, config = {})","summary":"Register listener (AI agent that can hear)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISound.md","moduleTitle":"sim/ai/AISound","source":"engine/sim/ai/AISound.js","import":"/engine/sim/ai/AISound.js","sourceHash":"d39b20cacac1289018b899f8f9c3e7f463eac7a8ec0898cc8950598873d47ad6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISound.js#0003:updateListenerPosition","exportIndex":3,"name":"updateListenerPosition","kind":"function","signature":"updateListenerPosition(system, entityId, position)","summary":"Update listener position"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISound.md","moduleTitle":"sim/ai/AISound","source":"engine/sim/ai/AISound.js","import":"/engine/sim/ai/AISound.js","sourceHash":"d39b20cacac1289018b899f8f9c3e7f463eac7a8ec0898cc8950598873d47ad6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISound.js#0004:addSoundOccluder","exportIndex":4,"name":"addSoundOccluder","kind":"function","signature":"addSoundOccluder(system, wall)","summary":"Add wall/occluder"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISound.md","moduleTitle":"sim/ai/AISound","source":"engine/sim/ai/AISound.js","import":"/engine/sim/ai/AISound.js","sourceHash":"d39b20cacac1289018b899f8f9c3e7f463eac7a8ec0898cc8950598873d47ad6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISound.js#0005:emitSound","exportIndex":5,"name":"emitSound","kind":"function","signature":"emitSound(system, soundConfig)","summary":"Emit sound"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISound.md","moduleTitle":"sim/ai/AISound","source":"engine/sim/ai/AISound.js","import":"/engine/sim/ai/AISound.js","sourceHash":"d39b20cacac1289018b899f8f9c3e7f463eac7a8ec0898cc8950598873d47ad6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISound.js#0006:calculateSoundIntensity","exportIndex":6,"name":"calculateSoundIntensity","kind":"function","signature":"calculateSoundIntensity(sound, position, walls)","summary":"Calculate sound intensity at position"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISound.md","moduleTitle":"sim/ai/AISound","source":"engine/sim/ai/AISound.js","import":"/engine/sim/ai/AISound.js","sourceHash":"d39b20cacac1289018b899f8f9c3e7f463eac7a8ec0898cc8950598873d47ad6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISound.js#0007:updateSoundSystem","exportIndex":7,"name":"updateSoundSystem","kind":"function","signature":"updateSoundSystem(system, deltaTime)","summary":"Update sound propagation and detection"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISound.md","moduleTitle":"sim/ai/AISound","source":"engine/sim/ai/AISound.js","import":"/engine/sim/ai/AISound.js","sourceHash":"d39b20cacac1289018b899f8f9c3e7f463eac7a8ec0898cc8950598873d47ad6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISound.js#0008:getRecentDetections","exportIndex":8,"name":"getRecentDetections","kind":"function","signature":"getRecentDetections(system, entityId, maxAge = 5000)","summary":"Get recent detections for entity"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISound.md","moduleTitle":"sim/ai/AISound","source":"engine/sim/ai/AISound.js","import":"/engine/sim/ai/AISound.js","sourceHash":"d39b20cacac1289018b899f8f9c3e7f463eac7a8ec0898cc8950598873d47ad6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISound.js#0009:getHighestPriorityDetection","exportIndex":9,"name":"getHighestPriorityDetection","kind":"function","signature":"getHighestPriorityDetection(system, entityId)","summary":"Get highest priority unhandled detection"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISound.md","moduleTitle":"sim/ai/AISound","source":"engine/sim/ai/AISound.js","import":"/engine/sim/ai/AISound.js","sourceHash":"d39b20cacac1289018b899f8f9c3e7f463eac7a8ec0898cc8950598873d47ad6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISound.js#0010:emitFootstep","exportIndex":10,"name":"emitFootstep","kind":"function","signature":"emitFootstep(system, position, surface = SURFACE_TYPE.CONCRETE, running = false)","summary":"Emit footstep sound"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISound.md","moduleTitle":"sim/ai/AISound","source":"engine/sim/ai/AISound.js","import":"/engine/sim/ai/AISound.js","sourceHash":"d39b20cacac1289018b899f8f9c3e7f463eac7a8ec0898cc8950598873d47ad6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISound.js#0011:emitGunshot","exportIndex":11,"name":"emitGunshot","kind":"function","signature":"emitGunshot(system, position, weaponType = \"pistol\")","summary":"Emit gunshot sound"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISound.md","moduleTitle":"sim/ai/AISound","source":"engine/sim/ai/AISound.js","import":"/engine/sim/ai/AISound.js","sourceHash":"d39b20cacac1289018b899f8f9c3e7f463eac7a8ec0898cc8950598873d47ad6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISound.js#0012:emitExplosion","exportIndex":12,"name":"emitExplosion","kind":"function","signature":"emitExplosion(system, position, size = 1.0)","summary":"Emit explosion sound"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISound.md","moduleTitle":"sim/ai/AISound","source":"engine/sim/ai/AISound.js","import":"/engine/sim/ai/AISound.js","sourceHash":"d39b20cacac1289018b899f8f9c3e7f463eac7a8ec0898cc8950598873d47ad6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISound.js#0013:SOUND_CATEGORY","exportIndex":13,"name":"SOUND_CATEGORY","kind":"constant","signature":"SOUND_CATEGORY","summary":"Sound categories"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISound.md","moduleTitle":"sim/ai/AISound","source":"engine/sim/ai/AISound.js","import":"/engine/sim/ai/AISound.js","sourceHash":"d39b20cacac1289018b899f8f9c3e7f463eac7a8ec0898cc8950598873d47ad6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISound.js#0014:SURFACE_TYPE","exportIndex":14,"name":"SURFACE_TYPE","kind":"constant","signature":"SURFACE_TYPE","summary":"Surface types for acoustic properties"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISound.md","moduleTitle":"sim/ai/AISound","source":"engine/sim/ai/AISound.js","import":"/engine/sim/ai/AISound.js","sourceHash":"d39b20cacac1289018b899f8f9c3e7f463eac7a8ec0898cc8950598873d47ad6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISound.js#0015:SOUND_PRIORITY","exportIndex":15,"name":"SOUND_PRIORITY","kind":"constant","signature":"SOUND_PRIORITY","summary":"Sound priority for AI attention"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISquad.md","moduleTitle":"sim/ai/AISquad","source":"engine/sim/ai/AISquad.js","import":"/engine/sim/ai/AISquad.js","sourceHash":"97b073e58e921f839113ddd74f680ca4a418aa5f0e867f782d3251f8a13e8af8","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/ai/AISquad.js","title":"sim/ai/AISquad","summary":"Create a squad manager","exportCount":17}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISquad.md","moduleTitle":"sim/ai/AISquad","source":"engine/sim/ai/AISquad.js","import":"/engine/sim/ai/AISquad.js","sourceHash":"97b073e58e921f839113ddd74f680ca4a418aa5f0e867f782d3251f8a13e8af8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISquad.js#0000:createSquadManager","exportIndex":0,"name":"createSquadManager","kind":"function","signature":"createSquadManager()","summary":"Create a squad manager"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISquad.md","moduleTitle":"sim/ai/AISquad","source":"engine/sim/ai/AISquad.js","import":"/engine/sim/ai/AISquad.js","sourceHash":"97b073e58e921f839113ddd74f680ca4a418aa5f0e867f782d3251f8a13e8af8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISquad.js#0001:createSquad","exportIndex":1,"name":"createSquad","kind":"function","signature":"createSquad(manager, leader)","summary":"Create a new squad"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISquad.md","moduleTitle":"sim/ai/AISquad","source":"engine/sim/ai/AISquad.js","import":"/engine/sim/ai/AISquad.js","sourceHash":"97b073e58e921f839113ddd74f680ca4a418aa5f0e867f782d3251f8a13e8af8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISquad.js#0002:addToSquad","exportIndex":2,"name":"addToSquad","kind":"function","signature":"addToSquad(manager, squad, npc, role = SQUAD_ROLE.NONE)","summary":"Add NPC to squad"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISquad.md","moduleTitle":"sim/ai/AISquad","source":"engine/sim/ai/AISquad.js","import":"/engine/sim/ai/AISquad.js","sourceHash":"97b073e58e921f839113ddd74f680ca4a418aa5f0e867f782d3251f8a13e8af8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISquad.js#0003:removeFromSquad","exportIndex":3,"name":"removeFromSquad","kind":"function","signature":"removeFromSquad(manager, npcId)","summary":"Remove NPC from their squad"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISquad.md","moduleTitle":"sim/ai/AISquad","source":"engine/sim/ai/AISquad.js","import":"/engine/sim/ai/AISquad.js","sourceHash":"97b073e58e921f839113ddd74f680ca4a418aa5f0e867f782d3251f8a13e8af8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISquad.js#0004:disbandSquad","exportIndex":4,"name":"disbandSquad","kind":"function","signature":"disbandSquad(manager, squad)","summary":"Disband a squad"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISquad.md","moduleTitle":"sim/ai/AISquad","source":"engine/sim/ai/AISquad.js","import":"/engine/sim/ai/AISquad.js","sourceHash":"97b073e58e921f839113ddd74f680ca4a418aa5f0e867f782d3251f8a13e8af8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISquad.js#0005:updateSquadFormations","exportIndex":5,"name":"updateSquadFormations","kind":"function","signature":"updateSquadFormations(manager, npcs)","summary":"Update squad formations based on proximity NPCs within range form impromptu squads"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISquad.md","moduleTitle":"sim/ai/AISquad","source":"engine/sim/ai/AISquad.js","import":"/engine/sim/ai/AISquad.js","sourceHash":"97b073e58e921f839113ddd74f680ca4a418aa5f0e867f782d3251f8a13e8af8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISquad.js#0006:assignSquadRoles","exportIndex":6,"name":"assignSquadRoles","kind":"function","signature":"assignSquadRoles(squad, threatPos)","summary":"Assign tactical roles to squad members"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISquad.md","moduleTitle":"sim/ai/AISquad","source":"engine/sim/ai/AISquad.js","import":"/engine/sim/ai/AISquad.js","sourceHash":"97b073e58e921f839113ddd74f680ca4a418aa5f0e867f782d3251f8a13e8af8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISquad.js#0007:calculateAttackPositions","exportIndex":7,"name":"calculateAttackPositions","kind":"function","signature":"calculateAttackPositions(squad, targetPos, coverPoints)","summary":"Calculate attack positions for coordinated assault"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISquad.md","moduleTitle":"sim/ai/AISquad","source":"engine/sim/ai/AISquad.js","import":"/engine/sim/ai/AISquad.js","sourceHash":"97b073e58e921f839113ddd74f680ca4a418aa5f0e867f782d3251f8a13e8af8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISquad.js#0008:planSuppressionManeuver","exportIndex":8,"name":"planSuppressionManeuver","kind":"function","signature":"planSuppressionManeuver(squad, targetPos)","summary":"Check if squad should coordinate suppression fire"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISquad.md","moduleTitle":"sim/ai/AISquad","source":"engine/sim/ai/AISquad.js","import":"/engine/sim/ai/AISquad.js","sourceHash":"97b073e58e921f839113ddd74f680ca4a418aa5f0e867f782d3251f8a13e8af8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISquad.js#0009:queueBark","exportIndex":9,"name":"queueBark","kind":"function","signature":"queueBark(squad, npcId, barkType, data = {})","summary":"Queue a bark for the squad"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISquad.md","moduleTitle":"sim/ai/AISquad","source":"engine/sim/ai/AISquad.js","import":"/engine/sim/ai/AISquad.js","sourceHash":"97b073e58e921f839113ddd74f680ca4a418aa5f0e867f782d3251f8a13e8af8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISquad.js#0010:processBarkQueue","exportIndex":10,"name":"processBarkQueue","kind":"function","signature":"processBarkQueue(squad)","summary":"Process pending barks"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISquad.md","moduleTitle":"sim/ai/AISquad","source":"engine/sim/ai/AISquad.js","import":"/engine/sim/ai/AISquad.js","sourceHash":"97b073e58e921f839113ddd74f680ca4a418aa5f0e867f782d3251f8a13e8af8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISquad.js#0011:getBarkText","exportIndex":11,"name":"getBarkText","kind":"function","signature":"getBarkText(barkType)","summary":"Get bark text for a bark type"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISquad.md","moduleTitle":"sim/ai/AISquad","source":"engine/sim/ai/AISquad.js","import":"/engine/sim/ai/AISquad.js","sourceHash":"97b073e58e921f839113ddd74f680ca4a418aa5f0e867f782d3251f8a13e8af8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISquad.js#0012:updateSquadTactics","exportIndex":12,"name":"updateSquadTactics","kind":"function","signature":"updateSquadTactics(manager, squad, threatPos, options = {})","summary":"Update squad tactical state"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISquad.md","moduleTitle":"sim/ai/AISquad","source":"engine/sim/ai/AISquad.js","import":"/engine/sim/ai/AISquad.js","sourceHash":"97b073e58e921f839113ddd74f680ca4a418aa5f0e867f782d3251f8a13e8af8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISquad.js#0013:getSquadForNPC","exportIndex":13,"name":"getSquadForNPC","kind":"function","signature":"getSquadForNPC(manager, npcId)","summary":"Get squad for an NPC"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISquad.md","moduleTitle":"sim/ai/AISquad","source":"engine/sim/ai/AISquad.js","import":"/engine/sim/ai/AISquad.js","sourceHash":"97b073e58e921f839113ddd74f680ca4a418aa5f0e867f782d3251f8a13e8af8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISquad.js#0014:getTeammates","exportIndex":14,"name":"getTeammates","kind":"function","signature":"getTeammates(manager, npcId)","summary":"Get teammates for an NPC (excluding self)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISquad.md","moduleTitle":"sim/ai/AISquad","source":"engine/sim/ai/AISquad.js","import":"/engine/sim/ai/AISquad.js","sourceHash":"97b073e58e921f839113ddd74f680ca4a418aa5f0e867f782d3251f8a13e8af8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISquad.js#0015:SQUAD_ROLE","exportIndex":15,"name":"SQUAD_ROLE","kind":"constant","signature":"SQUAD_ROLE","summary":"Squad roles"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISquad.md","moduleTitle":"sim/ai/AISquad","source":"engine/sim/ai/AISquad.js","import":"/engine/sim/ai/AISquad.js","sourceHash":"97b073e58e921f839113ddd74f680ca4a418aa5f0e867f782d3251f8a13e8af8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISquad.js#0016:BARK_TYPE","exportIndex":16,"name":"BARK_TYPE","kind":"constant","signature":"BARK_TYPE","summary":"Communication bark types"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISteering.md","moduleTitle":"sim/ai/AISteering","source":"engine/sim/ai/AISteering.js","import":"/engine/sim/ai/AISteering.js","sourceHash":"4ec77443410e33f7679cf24c863ac23be78602277ced9201e5551b317947cb71","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/ai/AISteering.js","title":"sim/ai/AISteering","summary":"Create a steering agent Uses AISchema defaults for consistent configuration","exportCount":22}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISteering.md","moduleTitle":"sim/ai/AISteering","source":"engine/sim/ai/AISteering.js","import":"/engine/sim/ai/AISteering.js","sourceHash":"4ec77443410e33f7679cf24c863ac23be78602277ced9201e5551b317947cb71","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISteering.js#0000:createSteeringAgent","exportIndex":0,"name":"createSteeringAgent","kind":"function","signature":"createSteeringAgent(config = {})","summary":"Create a steering agent Uses AISchema defaults for consistent configuration"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISteering.md","moduleTitle":"sim/ai/AISteering","source":"engine/sim/ai/AISteering.js","import":"/engine/sim/ai/AISteering.js","sourceHash":"4ec77443410e33f7679cf24c863ac23be78602277ced9201e5551b317947cb71","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISteering.js#0001:applyForce","exportIndex":1,"name":"applyForce","kind":"function","signature":"applyForce(agent, force)","summary":"Apply steering force to agent"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISteering.md","moduleTitle":"sim/ai/AISteering","source":"engine/sim/ai/AISteering.js","import":"/engine/sim/ai/AISteering.js","sourceHash":"4ec77443410e33f7679cf24c863ac23be78602277ced9201e5551b317947cb71","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISteering.js#0002:updateSteering","exportIndex":2,"name":"updateSteering","kind":"function","signature":"updateSteering(agent, deltaTime)","summary":"Update agent physics"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISteering.md","moduleTitle":"sim/ai/AISteering","source":"engine/sim/ai/AISteering.js","import":"/engine/sim/ai/AISteering.js","sourceHash":"4ec77443410e33f7679cf24c863ac23be78602277ced9201e5551b317947cb71","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISteering.js#0003:seek","exportIndex":3,"name":"seek","kind":"function","signature":"seek(agent, target)","summary":"Seek: steer toward target"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISteering.md","moduleTitle":"sim/ai/AISteering","source":"engine/sim/ai/AISteering.js","import":"/engine/sim/ai/AISteering.js","sourceHash":"4ec77443410e33f7679cf24c863ac23be78602277ced9201e5551b317947cb71","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISteering.js#0004:flee","exportIndex":4,"name":"flee","kind":"function","signature":"flee(agent, target)","summary":"Flee: steer away from target"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISteering.md","moduleTitle":"sim/ai/AISteering","source":"engine/sim/ai/AISteering.js","import":"/engine/sim/ai/AISteering.js","sourceHash":"4ec77443410e33f7679cf24c863ac23be78602277ced9201e5551b317947cb71","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISteering.js#0005:arrive","exportIndex":5,"name":"arrive","kind":"function","signature":"arrive(agent, target, slowingRadius = 5)","summary":"Arrive: seek with slowing near target"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISteering.md","moduleTitle":"sim/ai/AISteering","source":"engine/sim/ai/AISteering.js","import":"/engine/sim/ai/AISteering.js","sourceHash":"4ec77443410e33f7679cf24c863ac23be78602277ced9201e5551b317947cb71","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISteering.js#0006:pursue","exportIndex":6,"name":"pursue","kind":"function","signature":"pursue(agent, targetPos, targetVel)","summary":"Pursue: seek predicted future position of moving target"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISteering.md","moduleTitle":"sim/ai/AISteering","source":"engine/sim/ai/AISteering.js","import":"/engine/sim/ai/AISteering.js","sourceHash":"4ec77443410e33f7679cf24c863ac23be78602277ced9201e5551b317947cb71","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISteering.js#0007:evade","exportIndex":7,"name":"evade","kind":"function","signature":"evade(agent, targetPos, targetVel)","summary":"Evade: flee from predicted future position"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISteering.md","moduleTitle":"sim/ai/AISteering","source":"engine/sim/ai/AISteering.js","import":"/engine/sim/ai/AISteering.js","sourceHash":"4ec77443410e33f7679cf24c863ac23be78602277ced9201e5551b317947cb71","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISteering.js#0008:wander","exportIndex":8,"name":"wander","kind":"function","signature":"wander(agent)","summary":"Wander: random steering"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISteering.md","moduleTitle":"sim/ai/AISteering","source":"engine/sim/ai/AISteering.js","import":"/engine/sim/ai/AISteering.js","sourceHash":"4ec77443410e33f7679cf24c863ac23be78602277ced9201e5551b317947cb71","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISteering.js#0009:avoidObstacles","exportIndex":9,"name":"avoidObstacles","kind":"function","signature":"avoidObstacles(agent, obstacles)","summary":"Avoid obstacles using ray casting"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISteering.md","moduleTitle":"sim/ai/AISteering","source":"engine/sim/ai/AISteering.js","import":"/engine/sim/ai/AISteering.js","sourceHash":"4ec77443410e33f7679cf24c863ac23be78602277ced9201e5551b317947cb71","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISteering.js#0010:avoidWalls","exportIndex":10,"name":"avoidWalls","kind":"function","signature":"avoidWalls(agent, walls)","summary":"Avoid walls using feeler rays"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISteering.md","moduleTitle":"sim/ai/AISteering","source":"engine/sim/ai/AISteering.js","import":"/engine/sim/ai/AISteering.js","sourceHash":"4ec77443410e33f7679cf24c863ac23be78602277ced9201e5551b317947cb71","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISteering.js#0011:separation","exportIndex":11,"name":"separation","kind":"function","signature":"separation(agent, neighbors, separationRadius = 3)","summary":"Separation: steer away from nearby agents"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISteering.md","moduleTitle":"sim/ai/AISteering","source":"engine/sim/ai/AISteering.js","import":"/engine/sim/ai/AISteering.js","sourceHash":"4ec77443410e33f7679cf24c863ac23be78602277ced9201e5551b317947cb71","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISteering.js#0012:alignment","exportIndex":12,"name":"alignment","kind":"function","signature":"alignment(agent, neighbors, alignmentRadius = 5)","summary":"Alignment: steer toward average heading of neighbors"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISteering.md","moduleTitle":"sim/ai/AISteering","source":"engine/sim/ai/AISteering.js","import":"/engine/sim/ai/AISteering.js","sourceHash":"4ec77443410e33f7679cf24c863ac23be78602277ced9201e5551b317947cb71","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISteering.js#0013:cohesion","exportIndex":13,"name":"cohesion","kind":"function","signature":"cohesion(agent, neighbors, cohesionRadius = 8)","summary":"Cohesion: steer toward center of neighbors"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISteering.md","moduleTitle":"sim/ai/AISteering","source":"engine/sim/ai/AISteering.js","import":"/engine/sim/ai/AISteering.js","sourceHash":"4ec77443410e33f7679cf24c863ac23be78602277ced9201e5551b317947cb71","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISteering.js#0014:flock","exportIndex":14,"name":"flock","kind":"function","signature":"flock(agent, neighbors, weights = {})","summary":"Combined flocking behavior"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISteering.md","moduleTitle":"sim/ai/AISteering","source":"engine/sim/ai/AISteering.js","import":"/engine/sim/ai/AISteering.js","sourceHash":"4ec77443410e33f7679cf24c863ac23be78602277ced9201e5551b317947cb71","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISteering.js#0015:followPath","exportIndex":15,"name":"followPath","kind":"function","signature":"followPath(agent, path, pathRadius = 2)","summary":"Follow a path"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISteering.md","moduleTitle":"sim/ai/AISteering","source":"engine/sim/ai/AISteering.js","import":"/engine/sim/ai/AISteering.js","sourceHash":"4ec77443410e33f7679cf24c863ac23be78602277ced9201e5551b317947cb71","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISteering.js#0016:createFlowField","exportIndex":16,"name":"createFlowField","kind":"function","signature":"createFlowField(width, height, cellSize)","summary":"Create a flow field"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISteering.md","moduleTitle":"sim/ai/AISteering","source":"engine/sim/ai/AISteering.js","import":"/engine/sim/ai/AISteering.js","sourceHash":"4ec77443410e33f7679cf24c863ac23be78602277ced9201e5551b317947cb71","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISteering.js#0017:setFlowDirection","exportIndex":17,"name":"setFlowDirection","kind":"function","signature":"setFlowDirection(field, x, y, dirX, dirZ)","summary":"Set flow field cell direction"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISteering.md","moduleTitle":"sim/ai/AISteering","source":"engine/sim/ai/AISteering.js","import":"/engine/sim/ai/AISteering.js","sourceHash":"4ec77443410e33f7679cf24c863ac23be78602277ced9201e5551b317947cb71","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISteering.js#0018:getFlowDirection","exportIndex":18,"name":"getFlowDirection","kind":"function","signature":"getFlowDirection(field, worldX, worldZ)","summary":"Get flow direction at world position"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISteering.md","moduleTitle":"sim/ai/AISteering","source":"engine/sim/ai/AISteering.js","import":"/engine/sim/ai/AISteering.js","sourceHash":"4ec77443410e33f7679cf24c863ac23be78602277ced9201e5551b317947cb71","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISteering.js#0019:followFlowField","exportIndex":19,"name":"followFlowField","kind":"function","signature":"followFlowField(agent, field)","summary":"Follow flow field"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISteering.md","moduleTitle":"sim/ai/AISteering","source":"engine/sim/ai/AISteering.js","import":"/engine/sim/ai/AISteering.js","sourceHash":"4ec77443410e33f7679cf24c863ac23be78602277ced9201e5551b317947cb71","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISteering.js#0020:generateFlowFieldToTarget","exportIndex":20,"name":"generateFlowFieldToTarget","kind":"function","signature":"generateFlowFieldToTarget(field, targetX, targetZ)","summary":"Generate flow field toward target"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AISteering.md","moduleTitle":"sim/ai/AISteering","source":"engine/sim/ai/AISteering.js","import":"/engine/sim/ai/AISteering.js","sourceHash":"4ec77443410e33f7679cf24c863ac23be78602277ced9201e5551b317947cb71","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AISteering.js#0021:STEERING_BEHAVIORS","exportIndex":21,"name":"STEERING_BEHAVIORS","kind":"re-export","signature":"STEERING_BEHAVIORS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AITerrain.md","moduleTitle":"sim/ai/AITerrain","source":"engine/sim/ai/AITerrain.js","import":"/engine/sim/ai/AITerrain.js","sourceHash":"73bd38d9411cd01706032100e5eff15b8912740b7db70c9fa4c5898292ef0e8e","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/ai/AITerrain.js","title":"sim/ai/AITerrain","summary":"Create terrain grid","exportCount":17}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AITerrain.md","moduleTitle":"sim/ai/AITerrain","source":"engine/sim/ai/AITerrain.js","import":"/engine/sim/ai/AITerrain.js","sourceHash":"73bd38d9411cd01706032100e5eff15b8912740b7db70c9fa4c5898292ef0e8e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AITerrain.js#0000:createTerrainGrid","exportIndex":0,"name":"createTerrainGrid","kind":"function","signature":"createTerrainGrid(width, height, cellSize)","summary":"Create terrain grid"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AITerrain.md","moduleTitle":"sim/ai/AITerrain","source":"engine/sim/ai/AITerrain.js","import":"/engine/sim/ai/AITerrain.js","sourceHash":"73bd38d9411cd01706032100e5eff15b8912740b7db70c9fa4c5898292ef0e8e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AITerrain.js#0001:setTerrainType","exportIndex":1,"name":"setTerrainType","kind":"function","signature":"setTerrainType(grid, x, y, type)","summary":"Set terrain type at cell"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AITerrain.md","moduleTitle":"sim/ai/AITerrain","source":"engine/sim/ai/AITerrain.js","import":"/engine/sim/ai/AITerrain.js","sourceHash":"73bd38d9411cd01706032100e5eff15b8912740b7db70c9fa4c5898292ef0e8e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AITerrain.js#0002:getTerrainType","exportIndex":2,"name":"getTerrainType","kind":"function","signature":"getTerrainType(grid, x, y)","summary":"Get terrain type at cell"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AITerrain.md","moduleTitle":"sim/ai/AITerrain","source":"engine/sim/ai/AITerrain.js","import":"/engine/sim/ai/AITerrain.js","sourceHash":"73bd38d9411cd01706032100e5eff15b8912740b7db70c9fa4c5898292ef0e8e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AITerrain.js#0003:setTerrainHeight","exportIndex":3,"name":"setTerrainHeight","kind":"function","signature":"setTerrainHeight(grid, x, y, height)","summary":"Set height at cell"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AITerrain.md","moduleTitle":"sim/ai/AITerrain","source":"engine/sim/ai/AITerrain.js","import":"/engine/sim/ai/AITerrain.js","sourceHash":"73bd38d9411cd01706032100e5eff15b8912740b7db70c9fa4c5898292ef0e8e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AITerrain.js#0004:getTerrainHeight","exportIndex":4,"name":"getTerrainHeight","kind":"function","signature":"getTerrainHeight(grid, x, y)","summary":"Get height at cell"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AITerrain.md","moduleTitle":"sim/ai/AITerrain","source":"engine/sim/ai/AITerrain.js","import":"/engine/sim/ai/AITerrain.js","sourceHash":"73bd38d9411cd01706032100e5eff15b8912740b7db70c9fa4c5898292ef0e8e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AITerrain.js#0005:worldToTerrainCell","exportIndex":5,"name":"worldToTerrainCell","kind":"function","signature":"worldToTerrainCell(grid, worldX, worldZ)","summary":"World to grid coordinates"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AITerrain.md","moduleTitle":"sim/ai/AITerrain","source":"engine/sim/ai/AITerrain.js","import":"/engine/sim/ai/AITerrain.js","sourceHash":"73bd38d9411cd01706032100e5eff15b8912740b7db70c9fa4c5898292ef0e8e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AITerrain.js#0006:terrainCellToWorld","exportIndex":6,"name":"terrainCellToWorld","kind":"function","signature":"terrainCellToWorld(grid, cellX, cellY)","summary":"Grid to world coordinates (cell center)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AITerrain.md","moduleTitle":"sim/ai/AITerrain","source":"engine/sim/ai/AITerrain.js","import":"/engine/sim/ai/AITerrain.js","sourceHash":"73bd38d9411cd01706032100e5eff15b8912740b7db70c9fa4c5898292ef0e8e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AITerrain.js#0007:getTerrainPropertiesAt","exportIndex":7,"name":"getTerrainPropertiesAt","kind":"function","signature":"getTerrainPropertiesAt(grid, worldX, worldZ)","summary":"Get terrain properties at world position"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AITerrain.md","moduleTitle":"sim/ai/AITerrain","source":"engine/sim/ai/AITerrain.js","import":"/engine/sim/ai/AITerrain.js","sourceHash":"73bd38d9411cd01706032100e5eff15b8912740b7db70c9fa4c5898292ef0e8e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AITerrain.js#0008:calculateMovementCost","exportIndex":8,"name":"calculateMovementCost","kind":"function","signature":"calculateMovementCost(grid, fromX, fromZ, toX, toZ)","summary":"Calculate movement cost between two points"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AITerrain.md","moduleTitle":"sim/ai/AITerrain","source":"engine/sim/ai/AITerrain.js","import":"/engine/sim/ai/AITerrain.js","sourceHash":"73bd38d9411cd01706032100e5eff15b8912740b7db70c9fa4c5898292ef0e8e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AITerrain.js#0009:getStealthModifier","exportIndex":9,"name":"getStealthModifier","kind":"function","signature":"getStealthModifier(grid, worldX, worldZ)","summary":"Get stealth modifier at position"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AITerrain.md","moduleTitle":"sim/ai/AITerrain","source":"engine/sim/ai/AITerrain.js","import":"/engine/sim/ai/AITerrain.js","sourceHash":"73bd38d9411cd01706032100e5eff15b8912740b7db70c9fa4c5898292ef0e8e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AITerrain.js#0010:getNoiseModifier","exportIndex":10,"name":"getNoiseModifier","kind":"function","signature":"getNoiseModifier(grid, worldX, worldZ)","summary":"Get noise modifier at position"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AITerrain.md","moduleTitle":"sim/ai/AITerrain","source":"engine/sim/ai/AITerrain.js","import":"/engine/sim/ai/AITerrain.js","sourceHash":"73bd38d9411cd01706032100e5eff15b8912740b7db70c9fa4c5898292ef0e8e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AITerrain.js#0011:calculateHeightAdvantage","exportIndex":11,"name":"calculateHeightAdvantage","kind":"function","signature":"calculateHeightAdvantage(grid, attackerX, attackerZ, defenderX, defenderZ)","summary":"Calculate height advantage"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AITerrain.md","moduleTitle":"sim/ai/AITerrain","source":"engine/sim/ai/AITerrain.js","import":"/engine/sim/ai/AITerrain.js","sourceHash":"73bd38d9411cd01706032100e5eff15b8912740b7db70c9fa4c5898292ef0e8e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AITerrain.js#0012:findHighGround","exportIndex":12,"name":"findHighGround","kind":"function","signature":"findHighGround(grid, centerX, centerZ, radius, count = 5)","summary":"Find high ground positions in area"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AITerrain.md","moduleTitle":"sim/ai/AITerrain","source":"engine/sim/ai/AITerrain.js","import":"/engine/sim/ai/AITerrain.js","sourceHash":"73bd38d9411cd01706032100e5eff15b8912740b7db70c9fa4c5898292ef0e8e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AITerrain.js#0013:findConcealment","exportIndex":13,"name":"findConcealment","kind":"function","signature":"findConcealment(grid, centerX, centerZ, radius, count = 5)","summary":"Find concealment positions"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AITerrain.md","moduleTitle":"sim/ai/AITerrain","source":"engine/sim/ai/AITerrain.js","import":"/engine/sim/ai/AITerrain.js","sourceHash":"73bd38d9411cd01706032100e5eff15b8912740b7db70c9fa4c5898292ef0e8e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AITerrain.js#0014:detectChokepoints","exportIndex":14,"name":"detectChokepoints","kind":"function","signature":"detectChokepoints(grid, minX, minZ, maxX, maxZ)","summary":"Detect chokepoints in area"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AITerrain.md","moduleTitle":"sim/ai/AITerrain","source":"engine/sim/ai/AITerrain.js","import":"/engine/sim/ai/AITerrain.js","sourceHash":"73bd38d9411cd01706032100e5eff15b8912740b7db70c9fa4c5898292ef0e8e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AITerrain.js#0015:evaluateTacticalPosition","exportIndex":15,"name":"evaluateTacticalPosition","kind":"function","signature":"evaluateTacticalPosition(grid, worldX, worldZ, threatDirection = null)","summary":"Evaluate tactical position value"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AITerrain.md","moduleTitle":"sim/ai/AITerrain","source":"engine/sim/ai/AITerrain.js","import":"/engine/sim/ai/AITerrain.js","sourceHash":"73bd38d9411cd01706032100e5eff15b8912740b7db70c9fa4c5898292ef0e8e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AITerrain.js#0016:TERRAIN_TYPE","exportIndex":16,"name":"TERRAIN_TYPE","kind":"constant","signature":"TERRAIN_TYPE","summary":"Terrain types"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIUtility.md","moduleTitle":"sim/ai/AIUtility","source":"engine/sim/ai/AIUtility.js","import":"/engine/sim/ai/AIUtility.js","sourceHash":"fa5b52b61032ead15125bcc841d7c0f7ed9f2e23b827def2921209d04ff25fa3","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/ai/AIUtility.js","title":"sim/ai/AIUtility","summary":"Linear curve: y = mx + b","exportCount":26}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIUtility.md","moduleTitle":"sim/ai/AIUtility","source":"engine/sim/ai/AIUtility.js","import":"/engine/sim/ai/AIUtility.js","sourceHash":"fa5b52b61032ead15125bcc841d7c0f7ed9f2e23b827def2921209d04ff25fa3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIUtility.js#0000:linearCurve","exportIndex":0,"name":"linearCurve","kind":"function","signature":"linearCurve(slope = 1, intercept = 0)","summary":"Linear curve: y = mx + b"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIUtility.md","moduleTitle":"sim/ai/AIUtility","source":"engine/sim/ai/AIUtility.js","import":"/engine/sim/ai/AIUtility.js","sourceHash":"fa5b52b61032ead15125bcc841d7c0f7ed9f2e23b827def2921209d04ff25fa3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIUtility.js#0001:inverseLinearCurve","exportIndex":1,"name":"inverseLinearCurve","kind":"function","signature":"inverseLinearCurve()","summary":"Inverse linear curve: y = 1 - x"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIUtility.md","moduleTitle":"sim/ai/AIUtility","source":"engine/sim/ai/AIUtility.js","import":"/engine/sim/ai/AIUtility.js","sourceHash":"fa5b52b61032ead15125bcc841d7c0f7ed9f2e23b827def2921209d04ff25fa3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIUtility.js#0002:quadraticCurve","exportIndex":2,"name":"quadraticCurve","kind":"function","signature":"quadraticCurve(scale = 1, offset = 0)","summary":"Quadratic curve: y = (x - offset)^2 * scale"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIUtility.md","moduleTitle":"sim/ai/AIUtility","source":"engine/sim/ai/AIUtility.js","import":"/engine/sim/ai/AIUtility.js","sourceHash":"fa5b52b61032ead15125bcc841d7c0f7ed9f2e23b827def2921209d04ff25fa3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIUtility.js#0003:exponentialCurve","exportIndex":3,"name":"exponentialCurve","kind":"function","signature":"exponentialCurve(k = 2)","summary":"Exponential curve: y = e^(kx) normalized"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIUtility.md","moduleTitle":"sim/ai/AIUtility","source":"engine/sim/ai/AIUtility.js","import":"/engine/sim/ai/AIUtility.js","sourceHash":"fa5b52b61032ead15125bcc841d7c0f7ed9f2e23b827def2921209d04ff25fa3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIUtility.js#0004:logisticCurve","exportIndex":4,"name":"logisticCurve","kind":"function","signature":"logisticCurve(k = 10, midpoint = 0.5)","summary":"Logistic (S-curve): y = 1 / (1 + e^(-k(x - midpoint)))"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIUtility.md","moduleTitle":"sim/ai/AIUtility","source":"engine/sim/ai/AIUtility.js","import":"/engine/sim/ai/AIUtility.js","sourceHash":"fa5b52b61032ead15125bcc841d7c0f7ed9f2e23b827def2921209d04ff25fa3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIUtility.js#0005:smoothstepCurve","exportIndex":5,"name":"smoothstepCurve","kind":"function","signature":"smoothstepCurve()","summary":"Smoothstep curve: 3x^2 - 2x^3"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIUtility.md","moduleTitle":"sim/ai/AIUtility","source":"engine/sim/ai/AIUtility.js","import":"/engine/sim/ai/AIUtility.js","sourceHash":"fa5b52b61032ead15125bcc841d7c0f7ed9f2e23b827def2921209d04ff25fa3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIUtility.js#0006:stepCurve","exportIndex":6,"name":"stepCurve","kind":"function","signature":"stepCurve(threshold = 0.5)","summary":"Step curve: returns 0 below threshold, 1 above"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIUtility.md","moduleTitle":"sim/ai/AIUtility","source":"engine/sim/ai/AIUtility.js","import":"/engine/sim/ai/AIUtility.js","sourceHash":"fa5b52b61032ead15125bcc841d7c0f7ed9f2e23b827def2921209d04ff25fa3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIUtility.js#0007:bellCurve","exportIndex":7,"name":"bellCurve","kind":"function","signature":"bellCurve(center = 0.5, width = 0.3)","summary":"Bell curve (Gaussian-like): peaks at center"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIUtility.md","moduleTitle":"sim/ai/AIUtility","source":"engine/sim/ai/AIUtility.js","import":"/engine/sim/ai/AIUtility.js","sourceHash":"fa5b52b61032ead15125bcc841d7c0f7ed9f2e23b827def2921209d04ff25fa3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIUtility.js#0008:customCurve","exportIndex":8,"name":"customCurve","kind":"function","signature":"customCurve(points)","summary":"Custom curve from control points (piecewise linear)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIUtility.md","moduleTitle":"sim/ai/AIUtility","source":"engine/sim/ai/AIUtility.js","import":"/engine/sim/ai/AIUtility.js","sourceHash":"fa5b52b61032ead15125bcc841d7c0f7ed9f2e23b827def2921209d04ff25fa3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIUtility.js#0009:createConsideration","exportIndex":9,"name":"createConsideration","kind":"function","signature":"createConsideration(name, inputFn, curve, weight = 1)","summary":"Create a consideration (single scoring factor)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIUtility.md","moduleTitle":"sim/ai/AIUtility","source":"engine/sim/ai/AIUtility.js","import":"/engine/sim/ai/AIUtility.js","sourceHash":"fa5b52b61032ead15125bcc841d7c0f7ed9f2e23b827def2921209d04ff25fa3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIUtility.js#0010:evaluateConsideration","exportIndex":10,"name":"evaluateConsideration","kind":"function","signature":"evaluateConsideration(consideration, context)","summary":"Evaluate a consideration"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIUtility.md","moduleTitle":"sim/ai/AIUtility","source":"engine/sim/ai/AIUtility.js","import":"/engine/sim/ai/AIUtility.js","sourceHash":"fa5b52b61032ead15125bcc841d7c0f7ed9f2e23b827def2921209d04ff25fa3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIUtility.js#0011:createUtilityAction","exportIndex":11,"name":"createUtilityAction","kind":"function","signature":"createUtilityAction(name, considerations, execute, options = {})","summary":"Create a utility action"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIUtility.md","moduleTitle":"sim/ai/AIUtility","source":"engine/sim/ai/AIUtility.js","import":"/engine/sim/ai/AIUtility.js","sourceHash":"fa5b52b61032ead15125bcc841d7c0f7ed9f2e23b827def2921209d04ff25fa3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIUtility.js#0012:scoreAction","exportIndex":12,"name":"scoreAction","kind":"function","signature":"scoreAction(action, context)","summary":"Score an action"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIUtility.md","moduleTitle":"sim/ai/AIUtility","source":"engine/sim/ai/AIUtility.js","import":"/engine/sim/ai/AIUtility.js","sourceHash":"fa5b52b61032ead15125bcc841d7c0f7ed9f2e23b827def2921209d04ff25fa3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIUtility.js#0013:selectBestAction","exportIndex":13,"name":"selectBestAction","kind":"function","signature":"selectBestAction(actions, context)","summary":"Select best action from candidates"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIUtility.md","moduleTitle":"sim/ai/AIUtility","source":"engine/sim/ai/AIUtility.js","import":"/engine/sim/ai/AIUtility.js","sourceHash":"fa5b52b61032ead15125bcc841d7c0f7ed9f2e23b827def2921209d04ff25fa3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIUtility.js#0014:selectActionWeighted","exportIndex":14,"name":"selectActionWeighted","kind":"function","signature":"selectActionWeighted(actions, context, randomFactor = 0.2)","summary":"Select action with weighted randomization Higher scores = higher chance, but not guaranteed"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIUtility.md","moduleTitle":"sim/ai/AIUtility","source":"engine/sim/ai/AIUtility.js","import":"/engine/sim/ai/AIUtility.js","sourceHash":"fa5b52b61032ead15125bcc841d7c0f7ed9f2e23b827def2921209d04ff25fa3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIUtility.js#0015:selectActionBucketed","exportIndex":15,"name":"selectActionBucketed","kind":"function","signature":"selectActionBucketed(actions, context, bucketSize = 3)","summary":"Select from top N actions (bucketing)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIUtility.md","moduleTitle":"sim/ai/AIUtility","source":"engine/sim/ai/AIUtility.js","import":"/engine/sim/ai/AIUtility.js","sourceHash":"fa5b52b61032ead15125bcc841d7c0f7ed9f2e23b827def2921209d04ff25fa3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIUtility.js#0016:createUtilityBrain","exportIndex":16,"name":"createUtilityBrain","kind":"function","signature":"createUtilityBrain(actions, options = {})","summary":"Create a utility AI brain"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIUtility.md","moduleTitle":"sim/ai/AIUtility","source":"engine/sim/ai/AIUtility.js","import":"/engine/sim/ai/AIUtility.js","sourceHash":"fa5b52b61032ead15125bcc841d7c0f7ed9f2e23b827def2921209d04ff25fa3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIUtility.js#0017:updateUtilityBrain","exportIndex":17,"name":"updateUtilityBrain","kind":"function","signature":"updateUtilityBrain(brain, context, now = performance.now()","summary":"Update utility brain and select action"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIUtility.md","moduleTitle":"sim/ai/AIUtility","source":"engine/sim/ai/AIUtility.js","import":"/engine/sim/ai/AIUtility.js","sourceHash":"fa5b52b61032ead15125bcc841d7c0f7ed9f2e23b827def2921209d04ff25fa3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIUtility.js#0018:executeCurrentAction","exportIndex":18,"name":"executeCurrentAction","kind":"function","signature":"executeCurrentAction(brain, context)","summary":"Execute the current action"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIUtility.md","moduleTitle":"sim/ai/AIUtility","source":"engine/sim/ai/AIUtility.js","import":"/engine/sim/ai/AIUtility.js","sourceHash":"fa5b52b61032ead15125bcc841d7c0f7ed9f2e23b827def2921209d04ff25fa3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIUtility.js#0019:createHealthConsideration","exportIndex":19,"name":"createHealthConsideration","kind":"function","signature":"createHealthConsideration(criticalThreshold = 0.3)","summary":"Create health consideration"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIUtility.md","moduleTitle":"sim/ai/AIUtility","source":"engine/sim/ai/AIUtility.js","import":"/engine/sim/ai/AIUtility.js","sourceHash":"fa5b52b61032ead15125bcc841d7c0f7ed9f2e23b827def2921209d04ff25fa3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIUtility.js#0020:createDistanceConsideration","exportIndex":20,"name":"createDistanceConsideration","kind":"function","signature":"createDistanceConsideration(idealDistance, maxDistance)","summary":"Create distance consideration"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIUtility.md","moduleTitle":"sim/ai/AIUtility","source":"engine/sim/ai/AIUtility.js","import":"/engine/sim/ai/AIUtility.js","sourceHash":"fa5b52b61032ead15125bcc841d7c0f7ed9f2e23b827def2921209d04ff25fa3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIUtility.js#0021:createAmmoConsideration","exportIndex":21,"name":"createAmmoConsideration","kind":"function","signature":"createAmmoConsideration()","summary":"Create ammo consideration"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIUtility.md","moduleTitle":"sim/ai/AIUtility","source":"engine/sim/ai/AIUtility.js","import":"/engine/sim/ai/AIUtility.js","sourceHash":"fa5b52b61032ead15125bcc841d7c0f7ed9f2e23b827def2921209d04ff25fa3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIUtility.js#0022:createThreatConsideration","exportIndex":22,"name":"createThreatConsideration","kind":"function","signature":"createThreatConsideration()","summary":"Create threat consideration"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIUtility.md","moduleTitle":"sim/ai/AIUtility","source":"engine/sim/ai/AIUtility.js","import":"/engine/sim/ai/AIUtility.js","sourceHash":"fa5b52b61032ead15125bcc841d7c0f7ed9f2e23b827def2921209d04ff25fa3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIUtility.js#0023:createCoverConsideration","exportIndex":23,"name":"createCoverConsideration","kind":"function","signature":"createCoverConsideration()","summary":"Create cover consideration"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIUtility.md","moduleTitle":"sim/ai/AIUtility","source":"engine/sim/ai/AIUtility.js","import":"/engine/sim/ai/AIUtility.js","sourceHash":"fa5b52b61032ead15125bcc841d7c0f7ed9f2e23b827def2921209d04ff25fa3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIUtility.js#0024:createLOSConsideration","exportIndex":24,"name":"createLOSConsideration","kind":"function","signature":"createLOSConsideration()","summary":"Create line of sight consideration"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIUtility.md","moduleTitle":"sim/ai/AIUtility","source":"engine/sim/ai/AIUtility.js","import":"/engine/sim/ai/AIUtility.js","sourceHash":"fa5b52b61032ead15125bcc841d7c0f7ed9f2e23b827def2921209d04ff25fa3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIUtility.js#0025:createCombatActions","exportIndex":25,"name":"createCombatActions","kind":"function","signature":"createCombatActions(handlers)","summary":"Create basic combat action set"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIValues.md","moduleTitle":"sim/ai/AIValues","source":"engine/sim/ai/AIValues.js","import":"/engine/sim/ai/AIValues.js","sourceHash":"3cd1cfed5cc159d3b2d8adcb366ee2bd4fb61ff77c007dbc806aa0e2b69a3863","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/ai/AIValues.js","title":"sim/ai/AIValues","summary":"Create NPC values system","exportCount":26}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIValues.md","moduleTitle":"sim/ai/AIValues","source":"engine/sim/ai/AIValues.js","import":"/engine/sim/ai/AIValues.js","sourceHash":"3cd1cfed5cc159d3b2d8adcb366ee2bd4fb61ff77c007dbc806aa0e2b69a3863","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIValues.js#0000:createValueSystem","exportIndex":0,"name":"createValueSystem","kind":"function","signature":"createValueSystem(config = {})","summary":"Create NPC values system"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIValues.md","moduleTitle":"sim/ai/AIValues","source":"engine/sim/ai/AIValues.js","import":"/engine/sim/ai/AIValues.js","sourceHash":"3cd1cfed5cc159d3b2d8adcb366ee2bd4fb61ff77c007dbc806aa0e2b69a3863","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIValues.js#0001:createLifeGoal","exportIndex":1,"name":"createLifeGoal","kind":"function","signature":"createLifeGoal(config)","summary":"Create a life goal"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIValues.md","moduleTitle":"sim/ai/AIValues","source":"engine/sim/ai/AIValues.js","import":"/engine/sim/ai/AIValues.js","sourceHash":"3cd1cfed5cc159d3b2d8adcb366ee2bd4fb61ff77c007dbc806aa0e2b69a3863","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIValues.js#0002:getValue","exportIndex":2,"name":"getValue","kind":"function","signature":"getValue(system, value)","summary":"Get value strength"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIValues.md","moduleTitle":"sim/ai/AIValues","source":"engine/sim/ai/AIValues.js","import":"/engine/sim/ai/AIValues.js","sourceHash":"3cd1cfed5cc159d3b2d8adcb366ee2bd4fb61ff77c007dbc806aa0e2b69a3863","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIValues.js#0003:setValue","exportIndex":3,"name":"setValue","kind":"function","signature":"setValue(system, value, level)","summary":"Set value strength"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIValues.md","moduleTitle":"sim/ai/AIValues","source":"engine/sim/ai/AIValues.js","import":"/engine/sim/ai/AIValues.js","sourceHash":"3cd1cfed5cc159d3b2d8adcb366ee2bd4fb61ff77c007dbc806aa0e2b69a3863","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIValues.js#0004:modifyValue","exportIndex":4,"name":"modifyValue","kind":"function","signature":"modifyValue(system, value, delta)","summary":"Modify value (shift toward a direction)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIValues.md","moduleTitle":"sim/ai/AIValues","source":"engine/sim/ai/AIValues.js","import":"/engine/sim/ai/AIValues.js","sourceHash":"3cd1cfed5cc159d3b2d8adcb366ee2bd4fb61ff77c007dbc806aa0e2b69a3863","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIValues.js#0005:valuesPositively","exportIndex":5,"name":"valuesPositively","kind":"function","signature":"valuesPositively(system, value)","summary":"Check if NPC values something"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIValues.md","moduleTitle":"sim/ai/AIValues","source":"engine/sim/ai/AIValues.js","import":"/engine/sim/ai/AIValues.js","sourceHash":"3cd1cfed5cc159d3b2d8adcb366ee2bd4fb61ff77c007dbc806aa0e2b69a3863","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIValues.js#0006:getTopValues","exportIndex":6,"name":"getTopValues","kind":"function","signature":"getTopValues(system, count = 5)","summary":"Get top values (what they care about most)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIValues.md","moduleTitle":"sim/ai/AIValues","source":"engine/sim/ai/AIValues.js","import":"/engine/sim/ai/AIValues.js","sourceHash":"3cd1cfed5cc159d3b2d8adcb366ee2bd4fb61ff77c007dbc806aa0e2b69a3863","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIValues.js#0007:satisfyPsychNeed","exportIndex":7,"name":"satisfyPsychNeed","kind":"function","signature":"satisfyPsychNeed(system, need, delta)","summary":"Update psychological need"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIValues.md","moduleTitle":"sim/ai/AIValues","source":"engine/sim/ai/AIValues.js","import":"/engine/sim/ai/AIValues.js","sourceHash":"3cd1cfed5cc159d3b2d8adcb366ee2bd4fb61ff77c007dbc806aa0e2b69a3863","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIValues.js#0008:decayPsychNeeds","exportIndex":8,"name":"decayPsychNeeds","kind":"function","signature":"decayPsychNeeds(system, deltaTime)","summary":"Decay psychological needs over time"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIValues.md","moduleTitle":"sim/ai/AIValues","source":"engine/sim/ai/AIValues.js","import":"/engine/sim/ai/AIValues.js","sourceHash":"3cd1cfed5cc159d3b2d8adcb366ee2bd4fb61ff77c007dbc806aa0e2b69a3863","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIValues.js#0009:getMostDeprivedNeed","exportIndex":9,"name":"getMostDeprivedNeed","kind":"function","signature":"getMostDeprivedNeed(system)","summary":"Get most deprived psychological need"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIValues.md","moduleTitle":"sim/ai/AIValues","source":"engine/sim/ai/AIValues.js","import":"/engine/sim/ai/AIValues.js","sourceHash":"3cd1cfed5cc159d3b2d8adcb366ee2bd4fb61ff77c007dbc806aa0e2b69a3863","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIValues.js#0010:calculateWellbeing","exportIndex":10,"name":"calculateWellbeing","kind":"function","signature":"calculateWellbeing(system)","summary":"Calculate overall psychological wellbeing"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIValues.md","moduleTitle":"sim/ai/AIValues","source":"engine/sim/ai/AIValues.js","import":"/engine/sim/ai/AIValues.js","sourceHash":"3cd1cfed5cc159d3b2d8adcb366ee2bd4fb61ff77c007dbc806aa0e2b69a3863","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIValues.js#0011:addLifeGoal","exportIndex":11,"name":"addLifeGoal","kind":"function","signature":"addLifeGoal(system, goal)","summary":"Add life goal"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIValues.md","moduleTitle":"sim/ai/AIValues","source":"engine/sim/ai/AIValues.js","import":"/engine/sim/ai/AIValues.js","sourceHash":"3cd1cfed5cc159d3b2d8adcb366ee2bd4fb61ff77c007dbc806aa0e2b69a3863","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIValues.js#0012:updateGoalProgress","exportIndex":12,"name":"updateGoalProgress","kind":"function","signature":"updateGoalProgress(system, goalId, progress)","summary":"Update goal progress"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIValues.md","moduleTitle":"sim/ai/AIValues","source":"engine/sim/ai/AIValues.js","import":"/engine/sim/ai/AIValues.js","sourceHash":"3cd1cfed5cc159d3b2d8adcb366ee2bd4fb61ff77c007dbc806aa0e2b69a3863","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIValues.js#0013:pursueGoal","exportIndex":13,"name":"pursueGoal","kind":"function","signature":"pursueGoal(system, goalId)","summary":"Start pursuing a goal"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIValues.md","moduleTitle":"sim/ai/AIValues","source":"engine/sim/ai/AIValues.js","import":"/engine/sim/ai/AIValues.js","sourceHash":"3cd1cfed5cc159d3b2d8adcb366ee2bd4fb61ff77c007dbc806aa0e2b69a3863","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIValues.js#0014:getActiveGoals","exportIndex":14,"name":"getActiveGoals","kind":"function","signature":"getActiveGoals(system)","summary":"Get active goals being pursued"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIValues.md","moduleTitle":"sim/ai/AIValues","source":"engine/sim/ai/AIValues.js","import":"/engine/sim/ai/AIValues.js","sourceHash":"3cd1cfed5cc159d3b2d8adcb366ee2bd4fb61ff77c007dbc806aa0e2b69a3863","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIValues.js#0015:getUnfulfilledDreams","exportIndex":15,"name":"getUnfulfilledDreams","kind":"function","signature":"getUnfulfilledDreams(system)","summary":"Get unfulfilled dreams"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIValues.md","moduleTitle":"sim/ai/AIValues","source":"engine/sim/ai/AIValues.js","import":"/engine/sim/ai/AIValues.js","sourceHash":"3cd1cfed5cc159d3b2d8adcb366ee2bd4fb61ff77c007dbc806aa0e2b69a3863","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIValues.js#0016:scoreActionByValues","exportIndex":16,"name":"scoreActionByValues","kind":"function","signature":"scoreActionByValues(system, action)","summary":"Score an action based on values"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIValues.md","moduleTitle":"sim/ai/AIValues","source":"engine/sim/ai/AIValues.js","import":"/engine/sim/ai/AIValues.js","sourceHash":"3cd1cfed5cc159d3b2d8adcb366ee2bd4fb61ff77c007dbc806aa0e2b69a3863","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIValues.js#0017:wouldDoAction","exportIndex":17,"name":"wouldDoAction","kind":"function","signature":"wouldDoAction(system, action, threshold = 0)","summary":"Would NPC do this action based on values?"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIValues.md","moduleTitle":"sim/ai/AIValues","source":"engine/sim/ai/AIValues.js","import":"/engine/sim/ai/AIValues.js","sourceHash":"3cd1cfed5cc159d3b2d8adcb366ee2bd4fb61ff77c007dbc806aa0e2b69a3863","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIValues.js#0018:createFromPreset","exportIndex":18,"name":"createFromPreset","kind":"function","signature":"createFromPreset(preset)","summary":"Create value system from preset"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIValues.md","moduleTitle":"sim/ai/AIValues","source":"engine/sim/ai/AIValues.js","import":"/engine/sim/ai/AIValues.js","sourceHash":"3cd1cfed5cc159d3b2d8adcb366ee2bd4fb61ff77c007dbc806aa0e2b69a3863","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIValues.js#0019:VALUE","exportIndex":19,"name":"VALUE","kind":"constant","signature":"VALUE","summary":"Value types - things an NPC can care about"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIValues.md","moduleTitle":"sim/ai/AIValues","source":"engine/sim/ai/AIValues.js","import":"/engine/sim/ai/AIValues.js","sourceHash":"3cd1cfed5cc159d3b2d8adcb366ee2bd4fb61ff77c007dbc806aa0e2b69a3863","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIValues.js#0020:VALUE_LEVEL","exportIndex":20,"name":"VALUE_LEVEL","kind":"constant","signature":"VALUE_LEVEL","summary":"Value strength levels"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIValues.md","moduleTitle":"sim/ai/AIValues","source":"engine/sim/ai/AIValues.js","import":"/engine/sim/ai/AIValues.js","sourceHash":"3cd1cfed5cc159d3b2d8adcb366ee2bd4fb61ff77c007dbc806aa0e2b69a3863","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIValues.js#0021:GOAL_TYPE","exportIndex":21,"name":"GOAL_TYPE","kind":"constant","signature":"GOAL_TYPE","summary":"Types of life goals"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIValues.md","moduleTitle":"sim/ai/AIValues","source":"engine/sim/ai/AIValues.js","import":"/engine/sim/ai/AIValues.js","sourceHash":"3cd1cfed5cc159d3b2d8adcb366ee2bd4fb61ff77c007dbc806aa0e2b69a3863","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIValues.js#0022:GOAL_STATUS","exportIndex":22,"name":"GOAL_STATUS","kind":"constant","signature":"GOAL_STATUS","summary":"Goal status"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIValues.md","moduleTitle":"sim/ai/AIValues","source":"engine/sim/ai/AIValues.js","import":"/engine/sim/ai/AIValues.js","sourceHash":"3cd1cfed5cc159d3b2d8adcb366ee2bd4fb61ff77c007dbc806aa0e2b69a3863","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIValues.js#0023:PSYCH_NEED","exportIndex":23,"name":"PSYCH_NEED","kind":"constant","signature":"PSYCH_NEED","summary":"Higher-order psychological needs"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIValues.md","moduleTitle":"sim/ai/AIValues","source":"engine/sim/ai/AIValues.js","import":"/engine/sim/ai/AIValues.js","sourceHash":"3cd1cfed5cc159d3b2d8adcb366ee2bd4fb61ff77c007dbc806aa0e2b69a3863","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIValues.js#0024:PREF_CATEGORY","exportIndex":24,"name":"PREF_CATEGORY","kind":"constant","signature":"PREF_CATEGORY","summary":"Preference categories"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIValues.md","moduleTitle":"sim/ai/AIValues","source":"engine/sim/ai/AIValues.js","import":"/engine/sim/ai/AIValues.js","sourceHash":"3cd1cfed5cc159d3b2d8adcb366ee2bd4fb61ff77c007dbc806aa0e2b69a3863","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIValues.js#0025:VALUE_PRESETS","exportIndex":25,"name":"VALUE_PRESETS","kind":"constant","signature":"VALUE_PRESETS","summary":"Value presets for quick character creation"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIVehicle.md","moduleTitle":"sim/ai/AIVehicle","source":"engine/sim/ai/AIVehicle.js","import":"/engine/sim/ai/AIVehicle.js","sourceHash":"93a2ff7c8c0b951778f395a8be3c9356c96bf27cde4cf4aacf2cd2cd0e5913d3","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/ai/AIVehicle.js","title":"sim/ai/AIVehicle","summary":"AIVehicle.js ⚠️ MULTIPLAYER: Uses deterministic RNG from AIRandom.js","exportCount":10}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIVehicle.md","moduleTitle":"sim/ai/AIVehicle","source":"engine/sim/ai/AIVehicle.js","import":"/engine/sim/ai/AIVehicle.js","sourceHash":"93a2ff7c8c0b951778f395a8be3c9356c96bf27cde4cf4aacf2cd2cd0e5913d3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIVehicle.js#0000:createVehicleType","exportIndex":0,"name":"createVehicleType","kind":"function","signature":"createVehicleType(config)","summary":"Create vehicle definition"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIVehicle.md","moduleTitle":"sim/ai/AIVehicle","source":"engine/sim/ai/AIVehicle.js","import":"/engine/sim/ai/AIVehicle.js","sourceHash":"93a2ff7c8c0b951778f395a8be3c9356c96bf27cde4cf4aacf2cd2cd0e5913d3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIVehicle.js#0001:createVehicle","exportIndex":1,"name":"createVehicle","kind":"function","signature":"createVehicle(vehicleType, position, heading = 0)","summary":"Create vehicle instance"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIVehicle.md","moduleTitle":"sim/ai/AIVehicle","source":"engine/sim/ai/AIVehicle.js","import":"/engine/sim/ai/AIVehicle.js","sourceHash":"93a2ff7c8c0b951778f395a8be3c9356c96bf27cde4cf4aacf2cd2cd0e5913d3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIVehicle.js#0002:updateVehiclePhysics","exportIndex":2,"name":"updateVehiclePhysics","kind":"function","signature":"updateVehiclePhysics(vehicle, deltaTime)","summary":"Update vehicle physics"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIVehicle.md","moduleTitle":"sim/ai/AIVehicle","source":"engine/sim/ai/AIVehicle.js","import":"/engine/sim/ai/AIVehicle.js","sourceHash":"93a2ff7c8c0b951778f395a8be3c9356c96bf27cde4cf4aacf2cd2cd0e5913d3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIVehicle.js#0003:updateVehicleAI","exportIndex":3,"name":"updateVehicleAI","kind":"function","signature":"updateVehicleAI(vehicle, world, deltaTime)","summary":"Update vehicle AI"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIVehicle.md","moduleTitle":"sim/ai/AIVehicle","source":"engine/sim/ai/AIVehicle.js","import":"/engine/sim/ai/AIVehicle.js","sourceHash":"93a2ff7c8c0b951778f395a8be3c9356c96bf27cde4cf4aacf2cd2cd0e5913d3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIVehicle.js#0004:setVehiclePath","exportIndex":4,"name":"setVehiclePath","kind":"function","signature":"setVehiclePath(vehicle, path)","summary":"Set vehicle path"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIVehicle.md","moduleTitle":"sim/ai/AIVehicle","source":"engine/sim/ai/AIVehicle.js","import":"/engine/sim/ai/AIVehicle.js","sourceHash":"93a2ff7c8c0b951778f395a8be3c9356c96bf27cde4cf4aacf2cd2cd0e5913d3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIVehicle.js#0005:createTrafficSystem","exportIndex":5,"name":"createTrafficSystem","kind":"function","signature":"createTrafficSystem(config = {})","summary":"Create traffic system"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIVehicle.md","moduleTitle":"sim/ai/AIVehicle","source":"engine/sim/ai/AIVehicle.js","import":"/engine/sim/ai/AIVehicle.js","sourceHash":"93a2ff7c8c0b951778f395a8be3c9356c96bf27cde4cf4aacf2cd2cd0e5913d3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIVehicle.js#0006:updateTrafficSystem","exportIndex":6,"name":"updateTrafficSystem","kind":"function","signature":"updateTrafficSystem(traffic, deltaTime)","summary":"Update traffic system"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIVehicle.md","moduleTitle":"sim/ai/AIVehicle","source":"engine/sim/ai/AIVehicle.js","import":"/engine/sim/ai/AIVehicle.js","sourceHash":"93a2ff7c8c0b951778f395a8be3c9356c96bf27cde4cf4aacf2cd2cd0e5913d3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIVehicle.js#0007:DRIVE_MODE","exportIndex":7,"name":"DRIVE_MODE","kind":"constant","signature":"DRIVE_MODE","summary":"Vehicle behavior modes"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIVehicle.md","moduleTitle":"sim/ai/AIVehicle","source":"engine/sim/ai/AIVehicle.js","import":"/engine/sim/ai/AIVehicle.js","sourceHash":"93a2ff7c8c0b951778f395a8be3c9356c96bf27cde4cf4aacf2cd2cd0e5913d3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIVehicle.js#0008:TRAFFIC_LIGHT","exportIndex":8,"name":"TRAFFIC_LIGHT","kind":"constant","signature":"TRAFFIC_LIGHT","summary":"Traffic light states"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIVehicle.md","moduleTitle":"sim/ai/AIVehicle","source":"engine/sim/ai/AIVehicle.js","import":"/engine/sim/ai/AIVehicle.js","sourceHash":"93a2ff7c8c0b951778f395a8be3c9356c96bf27cde4cf4aacf2cd2cd0e5913d3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIVehicle.js#0009:PRESET_VEHICLES","exportIndex":9,"name":"PRESET_VEHICLES","kind":"constant","signature":"PRESET_VEHICLES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIWeapons.md","moduleTitle":"sim/ai/AIWeapons","source":"engine/sim/ai/AIWeapons.js","import":"/engine/sim/ai/AIWeapons.js","sourceHash":"0062a523463a6ab8eac286154facd6ea6891767ebbcc7dde4e2f119c4d6b366e","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/ai/AIWeapons.js","title":"sim/ai/AIWeapons","summary":"Fire a hitscan weapon (instant ray hit)","exportCount":25}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIWeapons.md","moduleTitle":"sim/ai/AIWeapons","source":"engine/sim/ai/AIWeapons.js","import":"/engine/sim/ai/AIWeapons.js","sourceHash":"0062a523463a6ab8eac286154facd6ea6891767ebbcc7dde4e2f119c4d6b366e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIWeapons.js#0000:fireHitscan","exportIndex":0,"name":"fireHitscan","kind":"function","signature":"fireHitscan(origin, direction, weapon, targets, obstacles = [])","summary":"Fire a hitscan weapon (instant ray hit)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIWeapons.md","moduleTitle":"sim/ai/AIWeapons","source":"engine/sim/ai/AIWeapons.js","import":"/engine/sim/ai/AIWeapons.js","sourceHash":"0062a523463a6ab8eac286154facd6ea6891767ebbcc7dde4e2f119c4d6b366e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIWeapons.js#0001:fireShotgun","exportIndex":1,"name":"fireShotgun","kind":"function","signature":"fireShotgun(origin, direction, weapon, targets, obstacles = [])","summary":"Fire a shotgun (multiple pellets in ring pattern)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIWeapons.md","moduleTitle":"sim/ai/AIWeapons","source":"engine/sim/ai/AIWeapons.js","import":"/engine/sim/ai/AIWeapons.js","sourceHash":"0062a523463a6ab8eac286154facd6ea6891767ebbcc7dde4e2f119c4d6b366e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIWeapons.js#0002:calculateDamageFalloff","exportIndex":2,"name":"calculateDamageFalloff","kind":"function","signature":"calculateDamageFalloff(baseDamage, distance, rangeModifier = 0.98)","summary":"Calculate damage falloff (CS:GO style exponential)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIWeapons.md","moduleTitle":"sim/ai/AIWeapons","source":"engine/sim/ai/AIWeapons.js","import":"/engine/sim/ai/AIWeapons.js","sourceHash":"0062a523463a6ab8eac286154facd6ea6891767ebbcc7dde4e2f119c4d6b366e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIWeapons.js#0003:createProjectile","exportIndex":3,"name":"createProjectile","kind":"function","signature":"createProjectile(position, velocity, config = {})","summary":"Create a projectile entity"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIWeapons.md","moduleTitle":"sim/ai/AIWeapons","source":"engine/sim/ai/AIWeapons.js","import":"/engine/sim/ai/AIWeapons.js","sourceHash":"0062a523463a6ab8eac286154facd6ea6891767ebbcc7dde4e2f119c4d6b366e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIWeapons.js#0004:updateProjectile","exportIndex":4,"name":"updateProjectile","kind":"function","signature":"updateProjectile(projectile, deltaTimeSec)","summary":"Update projectile position (kinematic motion)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIWeapons.md","moduleTitle":"sim/ai/AIWeapons","source":"engine/sim/ai/AIWeapons.js","import":"/engine/sim/ai/AIWeapons.js","sourceHash":"0062a523463a6ab8eac286154facd6ea6891767ebbcc7dde4e2f119c4d6b366e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIWeapons.js#0005:getProjectilePositionAtTime","exportIndex":5,"name":"getProjectilePositionAtTime","kind":"function","signature":"getProjectilePositionAtTime(projectile, timeSec)","summary":"Get projectile position at future time (prediction) P(t) = P₀ + V₀×t + ½×g×t²"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIWeapons.md","moduleTitle":"sim/ai/AIWeapons","source":"engine/sim/ai/AIWeapons.js","import":"/engine/sim/ai/AIWeapons.js","sourceHash":"0062a523463a6ab8eac286154facd6ea6891767ebbcc7dde4e2f119c4d6b366e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIWeapons.js#0006:checkProjectileCollision","exportIndex":6,"name":"checkProjectileCollision","kind":"function","signature":"checkProjectileCollision(projectile, targets, projectileRadius = 0.5)","summary":"Check projectile collision with targets"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIWeapons.md","moduleTitle":"sim/ai/AIWeapons","source":"engine/sim/ai/AIWeapons.js","import":"/engine/sim/ai/AIWeapons.js","sourceHash":"0062a523463a6ab8eac286154facd6ea6891767ebbcc7dde4e2f119c4d6b366e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIWeapons.js#0007:isInCircularAoE","exportIndex":7,"name":"isInCircularAoE","kind":"function","signature":"isInCircularAoE(targetPos, center, radius)","summary":"Check if target is in circular AoE"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIWeapons.md","moduleTitle":"sim/ai/AIWeapons","source":"engine/sim/ai/AIWeapons.js","import":"/engine/sim/ai/AIWeapons.js","sourceHash":"0062a523463a6ab8eac286154facd6ea6891767ebbcc7dde4e2f119c4d6b366e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIWeapons.js#0008:calculateAoEDamage","exportIndex":8,"name":"calculateAoEDamage","kind":"function","signature":"calculateAoEDamage(baseDamage, dist, radius)","summary":"Calculate AoE damage with quadratic falloff"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIWeapons.md","moduleTitle":"sim/ai/AIWeapons","source":"engine/sim/ai/AIWeapons.js","import":"/engine/sim/ai/AIWeapons.js","sourceHash":"0062a523463a6ab8eac286154facd6ea6891767ebbcc7dde4e2f119c4d6b366e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIWeapons.js#0009:resolveCircularAoE","exportIndex":9,"name":"resolveCircularAoE","kind":"function","signature":"resolveCircularAoE(center, radius, baseDamage, targets)","summary":"Get all targets in circular AoE with damage"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIWeapons.md","moduleTitle":"sim/ai/AIWeapons","source":"engine/sim/ai/AIWeapons.js","import":"/engine/sim/ai/AIWeapons.js","sourceHash":"0062a523463a6ab8eac286154facd6ea6891767ebbcc7dde4e2f119c4d6b366e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIWeapons.js#0010:isInConeAoE","exportIndex":10,"name":"isInConeAoE","kind":"function","signature":"isInConeAoE(targetPos, origin, direction, halfAngleRad, range)","summary":"Check if target is in cone AoE"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIWeapons.md","moduleTitle":"sim/ai/AIWeapons","source":"engine/sim/ai/AIWeapons.js","import":"/engine/sim/ai/AIWeapons.js","sourceHash":"0062a523463a6ab8eac286154facd6ea6891767ebbcc7dde4e2f119c4d6b366e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIWeapons.js#0011:resolveConeAoE","exportIndex":11,"name":"resolveConeAoE","kind":"function","signature":"resolveConeAoE(origin, direction, coneAngleDeg, range, baseDamage, targets)","summary":"Get all targets in cone AoE"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIWeapons.md","moduleTitle":"sim/ai/AIWeapons","source":"engine/sim/ai/AIWeapons.js","import":"/engine/sim/ai/AIWeapons.js","sourceHash":"0062a523463a6ab8eac286154facd6ea6891767ebbcc7dde4e2f119c4d6b366e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIWeapons.js#0012:createBeamWeapon","exportIndex":12,"name":"createBeamWeapon","kind":"function","signature":"createBeamWeapon(config = {})","summary":"Create a beam weapon state"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIWeapons.md","moduleTitle":"sim/ai/AIWeapons","source":"engine/sim/ai/AIWeapons.js","import":"/engine/sim/ai/AIWeapons.js","sourceHash":"0062a523463a6ab8eac286154facd6ea6891767ebbcc7dde4e2f119c4d6b366e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIWeapons.js#0013:updateBeamTracking","exportIndex":13,"name":"updateBeamTracking","kind":"function","signature":"updateBeamTracking(beam, origin, targetPos, deltaTimeSec)","summary":"Update beam weapon direction toward target"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIWeapons.md","moduleTitle":"sim/ai/AIWeapons","source":"engine/sim/ai/AIWeapons.js","import":"/engine/sim/ai/AIWeapons.js","sourceHash":"0062a523463a6ab8eac286154facd6ea6891767ebbcc7dde4e2f119c4d6b366e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIWeapons.js#0014:fireBeam","exportIndex":14,"name":"fireBeam","kind":"function","signature":"fireBeam(beam, origin, targets, obstacles, deltaTimeSec)","summary":"Fire beam weapon (continuous damage)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIWeapons.md","moduleTitle":"sim/ai/AIWeapons","source":"engine/sim/ai/AIWeapons.js","import":"/engine/sim/ai/AIWeapons.js","sourceHash":"0062a523463a6ab8eac286154facd6ea6891767ebbcc7dde4e2f119c4d6b366e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIWeapons.js#0015:createGrenade","exportIndex":15,"name":"createGrenade","kind":"function","signature":"createGrenade(position, velocity, config = {})","summary":"Create a grenade projectile"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIWeapons.md","moduleTitle":"sim/ai/AIWeapons","source":"engine/sim/ai/AIWeapons.js","import":"/engine/sim/ai/AIWeapons.js","sourceHash":"0062a523463a6ab8eac286154facd6ea6891767ebbcc7dde4e2f119c4d6b366e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIWeapons.js#0016:updateGrenade","exportIndex":16,"name":"updateGrenade","kind":"function","signature":"updateGrenade(grenade, deltaTimeSec, surfaces = [])","summary":"Update grenade physics"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIWeapons.md","moduleTitle":"sim/ai/AIWeapons","source":"engine/sim/ai/AIWeapons.js","import":"/engine/sim/ai/AIWeapons.js","sourceHash":"0062a523463a6ab8eac286154facd6ea6891767ebbcc7dde4e2f119c4d6b366e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIWeapons.js#0017:calculateGrenadeLaunchVelocity","exportIndex":17,"name":"calculateGrenadeLaunchVelocity","kind":"function","signature":"calculateGrenadeLaunchVelocity(start, target, gravity, launchAngleDeg)","summary":"Calculate grenade launch velocity to hit target"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIWeapons.md","moduleTitle":"sim/ai/AIWeapons","source":"engine/sim/ai/AIWeapons.js","import":"/engine/sim/ai/AIWeapons.js","sourceHash":"0062a523463a6ab8eac286154facd6ea6891767ebbcc7dde4e2f119c4d6b366e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIWeapons.js#0018:createWeaponController","exportIndex":18,"name":"createWeaponController","kind":"function","signature":"createWeaponController()","summary":"Create an NPC weapon controller for multi-weapon management"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIWeapons.md","moduleTitle":"sim/ai/AIWeapons","source":"engine/sim/ai/AIWeapons.js","import":"/engine/sim/ai/AIWeapons.js","sourceHash":"0062a523463a6ab8eac286154facd6ea6891767ebbcc7dde4e2f119c4d6b366e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIWeapons.js#0019:addWeapon","exportIndex":19,"name":"addWeapon","kind":"function","signature":"addWeapon(controller, name, config)","summary":"Add weapon to controller"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIWeapons.md","moduleTitle":"sim/ai/AIWeapons","source":"engine/sim/ai/AIWeapons.js","import":"/engine/sim/ai/AIWeapons.js","sourceHash":"0062a523463a6ab8eac286154facd6ea6891767ebbcc7dde4e2f119c4d6b366e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIWeapons.js#0020:selectBestWeapon","exportIndex":20,"name":"selectBestWeapon","kind":"function","signature":"selectBestWeapon(controller, params)","summary":"Select best weapon for situation"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIWeapons.md","moduleTitle":"sim/ai/AIWeapons","source":"engine/sim/ai/AIWeapons.js","import":"/engine/sim/ai/AIWeapons.js","sourceHash":"0062a523463a6ab8eac286154facd6ea6891767ebbcc7dde4e2f119c4d6b366e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIWeapons.js#0021:canFireWeapon","exportIndex":21,"name":"canFireWeapon","kind":"function","signature":"canFireWeapon(controller, weaponName, now)","summary":"Check if weapon can fire (fire rate cooldown)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIWeapons.md","moduleTitle":"sim/ai/AIWeapons","source":"engine/sim/ai/AIWeapons.js","import":"/engine/sim/ai/AIWeapons.js","sourceHash":"0062a523463a6ab8eac286154facd6ea6891767ebbcc7dde4e2f119c4d6b366e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIWeapons.js#0022:recordWeaponFire","exportIndex":22,"name":"recordWeaponFire","kind":"function","signature":"recordWeaponFire(controller, weaponName, now)","summary":"Record weapon fire"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIWeapons.md","moduleTitle":"sim/ai/AIWeapons","source":"engine/sim/ai/AIWeapons.js","import":"/engine/sim/ai/AIWeapons.js","sourceHash":"0062a523463a6ab8eac286154facd6ea6891767ebbcc7dde4e2f119c4d6b366e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIWeapons.js#0023:WEAPON_TYPE","exportIndex":23,"name":"WEAPON_TYPE","kind":"constant","signature":"WEAPON_TYPE","summary":"Weapon type constants"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIWeapons.md","moduleTitle":"sim/ai/AIWeapons","source":"engine/sim/ai/AIWeapons.js","import":"/engine/sim/ai/AIWeapons.js","sourceHash":"0062a523463a6ab8eac286154facd6ea6891767ebbcc7dde4e2f119c4d6b366e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIWeapons.js#0024:WEAPON_PRESETS","exportIndex":24,"name":"WEAPON_PRESETS","kind":"constant","signature":"WEAPON_PRESETS","summary":"Default weapon configurations"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIWorld.md","moduleTitle":"sim/ai/AIWorld","source":"engine/sim/ai/AIWorld.js","import":"/engine/sim/ai/AIWorld.js","sourceHash":"b86f138f93aacb26abc23ae04e944070daa653b7808527141ad4fcd00ce58711","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/ai/AIWorld.js","title":"sim/ai/AIWorld","summary":"Create world time system","exportCount":20}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIWorld.md","moduleTitle":"sim/ai/AIWorld","source":"engine/sim/ai/AIWorld.js","import":"/engine/sim/ai/AIWorld.js","sourceHash":"b86f138f93aacb26abc23ae04e944070daa653b7808527141ad4fcd00ce58711","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIWorld.js#0000:createWorldTime","exportIndex":0,"name":"createWorldTime","kind":"function","signature":"createWorldTime(config = {})","summary":"Create world time system"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIWorld.md","moduleTitle":"sim/ai/AIWorld","source":"engine/sim/ai/AIWorld.js","import":"/engine/sim/ai/AIWorld.js","sourceHash":"b86f138f93aacb26abc23ae04e944070daa653b7808527141ad4fcd00ce58711","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIWorld.js#0001:advanceTime","exportIndex":1,"name":"advanceTime","kind":"function","signature":"advanceTime(time, realDeltaSeconds)","summary":"Advance world time"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIWorld.md","moduleTitle":"sim/ai/AIWorld","source":"engine/sim/ai/AIWorld.js","import":"/engine/sim/ai/AIWorld.js","sourceHash":"b86f138f93aacb26abc23ae04e944070daa653b7808527141ad4fcd00ce58711","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIWorld.js#0002:getSeason","exportIndex":2,"name":"getSeason","kind":"function","signature":"getSeason(time)","summary":"Get current season"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIWorld.md","moduleTitle":"sim/ai/AIWorld","source":"engine/sim/ai/AIWorld.js","import":"/engine/sim/ai/AIWorld.js","sourceHash":"b86f138f93aacb26abc23ae04e944070daa653b7808527141ad4fcd00ce58711","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIWorld.js#0003:getDayPhase","exportIndex":3,"name":"getDayPhase","kind":"function","signature":"getDayPhase(time)","summary":"Get day/night phase"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIWorld.md","moduleTitle":"sim/ai/AIWorld","source":"engine/sim/ai/AIWorld.js","import":"/engine/sim/ai/AIWorld.js","sourceHash":"b86f138f93aacb26abc23ae04e944070daa653b7808527141ad4fcd00ce58711","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIWorld.js#0004:formatTime","exportIndex":4,"name":"formatTime","kind":"function","signature":"formatTime(time)","summary":"Get formatted time string"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIWorld.md","moduleTitle":"sim/ai/AIWorld","source":"engine/sim/ai/AIWorld.js","import":"/engine/sim/ai/AIWorld.js","sourceHash":"b86f138f93aacb26abc23ae04e944070daa653b7808527141ad4fcd00ce58711","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIWorld.js#0005:formatDate","exportIndex":5,"name":"formatDate","kind":"function","signature":"formatDate(time)","summary":"Get formatted date string"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIWorld.md","moduleTitle":"sim/ai/AIWorld","source":"engine/sim/ai/AIWorld.js","import":"/engine/sim/ai/AIWorld.js","sourceHash":"b86f138f93aacb26abc23ae04e944070daa653b7808527141ad4fcd00ce58711","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIWorld.js#0006:createWeatherSystem","exportIndex":6,"name":"createWeatherSystem","kind":"function","signature":"createWeatherSystem(config = {})","summary":"Create weather system"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIWorld.md","moduleTitle":"sim/ai/AIWorld","source":"engine/sim/ai/AIWorld.js","import":"/engine/sim/ai/AIWorld.js","sourceHash":"b86f138f93aacb26abc23ae04e944070daa653b7808527141ad4fcd00ce58711","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIWorld.js#0007:updateWeather","exportIndex":7,"name":"updateWeather","kind":"function","signature":"updateWeather(weather, time, deltaHours)","summary":"Update weather"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIWorld.md","moduleTitle":"sim/ai/AIWorld","source":"engine/sim/ai/AIWorld.js","import":"/engine/sim/ai/AIWorld.js","sourceHash":"b86f138f93aacb26abc23ae04e944070daa653b7808527141ad4fcd00ce58711","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIWorld.js#0008:getWeatherEffects","exportIndex":8,"name":"getWeatherEffects","kind":"function","signature":"getWeatherEffects(weather)","summary":"Get weather effects on gameplay"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIWorld.md","moduleTitle":"sim/ai/AIWorld","source":"engine/sim/ai/AIWorld.js","import":"/engine/sim/ai/AIWorld.js","sourceHash":"b86f138f93aacb26abc23ae04e944070daa653b7808527141ad4fcd00ce58711","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIWorld.js#0009:createWorldEvent","exportIndex":9,"name":"createWorldEvent","kind":"function","signature":"createWorldEvent(config)","summary":"Create world event"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIWorld.md","moduleTitle":"sim/ai/AIWorld","source":"engine/sim/ai/AIWorld.js","import":"/engine/sim/ai/AIWorld.js","sourceHash":"b86f138f93aacb26abc23ae04e944070daa653b7808527141ad4fcd00ce58711","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIWorld.js#0010:createEventManager","exportIndex":10,"name":"createEventManager","kind":"function","signature":"createEventManager()","summary":"Create world event manager"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIWorld.md","moduleTitle":"sim/ai/AIWorld","source":"engine/sim/ai/AIWorld.js","import":"/engine/sim/ai/AIWorld.js","sourceHash":"b86f138f93aacb26abc23ae04e944070daa653b7808527141ad4fcd00ce58711","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIWorld.js#0011:scheduleEvent","exportIndex":11,"name":"scheduleEvent","kind":"function","signature":"scheduleEvent(manager, event)","summary":"Schedule world event"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIWorld.md","moduleTitle":"sim/ai/AIWorld","source":"engine/sim/ai/AIWorld.js","import":"/engine/sim/ai/AIWorld.js","sourceHash":"b86f138f93aacb26abc23ae04e944070daa653b7808527141ad4fcd00ce58711","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIWorld.js#0012:updateEvents","exportIndex":12,"name":"updateEvents","kind":"function","signature":"updateEvents(manager, currentTime, deltaHours)","summary":"Update world events"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIWorld.md","moduleTitle":"sim/ai/AIWorld","source":"engine/sim/ai/AIWorld.js","import":"/engine/sim/ai/AIWorld.js","sourceHash":"b86f138f93aacb26abc23ae04e944070daa653b7808527141ad4fcd00ce58711","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIWorld.js#0013:createWorldState","exportIndex":13,"name":"createWorldState","kind":"function","signature":"createWorldState(config = {})","summary":"Create complete world state"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIWorld.md","moduleTitle":"sim/ai/AIWorld","source":"engine/sim/ai/AIWorld.js","import":"/engine/sim/ai/AIWorld.js","sourceHash":"b86f138f93aacb26abc23ae04e944070daa653b7808527141ad4fcd00ce58711","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIWorld.js#0014:updateWorldState","exportIndex":14,"name":"updateWorldState","kind":"function","signature":"updateWorldState(world, realDeltaSeconds)","summary":"Update world state"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIWorld.md","moduleTitle":"sim/ai/AIWorld","source":"engine/sim/ai/AIWorld.js","import":"/engine/sim/ai/AIWorld.js","sourceHash":"b86f138f93aacb26abc23ae04e944070daa653b7808527141ad4fcd00ce58711","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIWorld.js#0015:SEASON","exportIndex":15,"name":"SEASON","kind":"constant","signature":"SEASON","summary":"Seasons"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIWorld.md","moduleTitle":"sim/ai/AIWorld","source":"engine/sim/ai/AIWorld.js","import":"/engine/sim/ai/AIWorld.js","sourceHash":"b86f138f93aacb26abc23ae04e944070daa653b7808527141ad4fcd00ce58711","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIWorld.js#0016:DAY_OF_WEEK","exportIndex":16,"name":"DAY_OF_WEEK","kind":"constant","signature":"DAY_OF_WEEK","summary":"Days of week"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIWorld.md","moduleTitle":"sim/ai/AIWorld","source":"engine/sim/ai/AIWorld.js","import":"/engine/sim/ai/AIWorld.js","sourceHash":"b86f138f93aacb26abc23ae04e944070daa653b7808527141ad4fcd00ce58711","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIWorld.js#0017:MONTH","exportIndex":17,"name":"MONTH","kind":"constant","signature":"MONTH","summary":"Months"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIWorld.md","moduleTitle":"sim/ai/AIWorld","source":"engine/sim/ai/AIWorld.js","import":"/engine/sim/ai/AIWorld.js","sourceHash":"b86f138f93aacb26abc23ae04e944070daa653b7808527141ad4fcd00ce58711","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIWorld.js#0018:WEATHER_TYPE","exportIndex":18,"name":"WEATHER_TYPE","kind":"constant","signature":"WEATHER_TYPE","summary":"Weather types"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/AIWorld.md","moduleTitle":"sim/ai/AIWorld","source":"engine/sim/ai/AIWorld.js","import":"/engine/sim/ai/AIWorld.js","sourceHash":"b86f138f93aacb26abc23ae04e944070daa653b7808527141ad4fcd00ce58711","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/AIWorld.js#0019:EVENT_TYPE","exportIndex":19,"name":"EVENT_TYPE","kind":"constant","signature":"EVENT_TYPE","summary":"Event types"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/Blackboard.md","moduleTitle":"sim/ai/Blackboard","source":"engine/sim/ai/Blackboard.js","import":"/engine/sim/ai/Blackboard.js","sourceHash":"94de8c90d1d268e9f238b4257883c497177e5bde0af9db2f713e1673c0d04d83","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/ai/Blackboard.js","title":"sim/ai/Blackboard","summary":"","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/Blackboard.md","moduleTitle":"sim/ai/Blackboard","source":"engine/sim/ai/Blackboard.js","import":"/engine/sim/ai/Blackboard.js","sourceHash":"94de8c90d1d268e9f238b4257883c497177e5bde0af9db2f713e1673c0d04d83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/Blackboard.js#0000:createBlackboard","exportIndex":0,"name":"createBlackboard","kind":"function","signature":"createBlackboard(initial = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/Blackboard.md","moduleTitle":"sim/ai/Blackboard","source":"engine/sim/ai/Blackboard.js","import":"/engine/sim/ai/Blackboard.js","sourceHash":"94de8c90d1d268e9f238b4257883c497177e5bde0af9db2f713e1673c0d04d83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/Blackboard.js#0001:getBlackboardValue","exportIndex":1,"name":"getBlackboardValue","kind":"function","signature":"getBlackboardValue(blackboard, key, defaultValue)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/Blackboard.md","moduleTitle":"sim/ai/Blackboard","source":"engine/sim/ai/Blackboard.js","import":"/engine/sim/ai/Blackboard.js","sourceHash":"94de8c90d1d268e9f238b4257883c497177e5bde0af9db2f713e1673c0d04d83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/Blackboard.js#0002:setBlackboardValue","exportIndex":2,"name":"setBlackboardValue","kind":"function","signature":"setBlackboardValue(blackboard, key, value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/Blackboard.md","moduleTitle":"sim/ai/Blackboard","source":"engine/sim/ai/Blackboard.js","import":"/engine/sim/ai/Blackboard.js","sourceHash":"94de8c90d1d268e9f238b4257883c497177e5bde0af9db2f713e1673c0d04d83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/Blackboard.js#0003:removeBlackboardValue","exportIndex":3,"name":"removeBlackboardValue","kind":"function","signature":"removeBlackboardValue(blackboard, key)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/Blackboard.md","moduleTitle":"sim/ai/Blackboard","source":"engine/sim/ai/Blackboard.js","import":"/engine/sim/ai/Blackboard.js","sourceHash":"94de8c90d1d268e9f238b4257883c497177e5bde0af9db2f713e1673c0d04d83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/Blackboard.js#0004:clearBlackboard","exportIndex":4,"name":"clearBlackboard","kind":"function","signature":"clearBlackboard(blackboard)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/Blackboard.md","moduleTitle":"sim/ai/Blackboard","source":"engine/sim/ai/Blackboard.js","import":"/engine/sim/ai/Blackboard.js","sourceHash":"94de8c90d1d268e9f238b4257883c497177e5bde0af9db2f713e1673c0d04d83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/Blackboard.js#0005:exportBlackboard","exportIndex":5,"name":"exportBlackboard","kind":"function","signature":"exportBlackboard(blackboard)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/Blackboard.md","moduleTitle":"sim/ai/Blackboard","source":"engine/sim/ai/Blackboard.js","import":"/engine/sim/ai/Blackboard.js","sourceHash":"94de8c90d1d268e9f238b4257883c497177e5bde0af9db2f713e1673c0d04d83","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/Blackboard.js#0006:createBlackboardRegistry","exportIndex":6,"name":"createBlackboardRegistry","kind":"function","signature":"createBlackboardRegistry()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/NavGrid.md","moduleTitle":"sim/ai/NavGrid","source":"engine/sim/ai/NavGrid.js","import":"/engine/sim/ai/NavGrid.js","sourceHash":"6b2bace3fff5a5dcf805deb1c03f7869ecf5540f1adb94e44c66efae8554fc3a","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/ai/NavGrid.js","title":"sim/ai/NavGrid","summary":"Convert axial (q, r) to cube (q, r, s) coordinates","exportCount":18}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/NavGrid.md","moduleTitle":"sim/ai/NavGrid","source":"engine/sim/ai/NavGrid.js","import":"/engine/sim/ai/NavGrid.js","sourceHash":"6b2bace3fff5a5dcf805deb1c03f7869ecf5540f1adb94e44c66efae8554fc3a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/NavGrid.js#0000:createNavGrid","exportIndex":0,"name":"createNavGrid","kind":"function","signature":"createNavGrid(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/NavGrid.md","moduleTitle":"sim/ai/NavGrid","source":"engine/sim/ai/NavGrid.js","import":"/engine/sim/ai/NavGrid.js","sourceHash":"6b2bace3fff5a5dcf805deb1c03f7869ecf5540f1adb94e44c66efae8554fc3a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/NavGrid.js#0001:destroyNavGrid","exportIndex":1,"name":"destroyNavGrid","kind":"function","signature":"destroyNavGrid(grid)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/NavGrid.md","moduleTitle":"sim/ai/NavGrid","source":"engine/sim/ai/NavGrid.js","import":"/engine/sim/ai/NavGrid.js","sourceHash":"6b2bace3fff5a5dcf805deb1c03f7869ecf5540f1adb94e44c66efae8554fc3a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/NavGrid.js#0002:worldToGrid","exportIndex":2,"name":"worldToGrid","kind":"function","signature":"worldToGrid(grid, worldX, worldZ)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/NavGrid.md","moduleTitle":"sim/ai/NavGrid","source":"engine/sim/ai/NavGrid.js","import":"/engine/sim/ai/NavGrid.js","sourceHash":"6b2bace3fff5a5dcf805deb1c03f7869ecf5540f1adb94e44c66efae8554fc3a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/NavGrid.js#0003:gridToWorld","exportIndex":3,"name":"gridToWorld","kind":"function","signature":"gridToWorld(grid, gx, gz)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/NavGrid.md","moduleTitle":"sim/ai/NavGrid","source":"engine/sim/ai/NavGrid.js","import":"/engine/sim/ai/NavGrid.js","sourceHash":"6b2bace3fff5a5dcf805deb1c03f7869ecf5540f1adb94e44c66efae8554fc3a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/NavGrid.js#0004:isCellWalkable","exportIndex":4,"name":"isCellWalkable","kind":"function","signature":"isCellWalkable(grid, gx, gz)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/NavGrid.md","moduleTitle":"sim/ai/NavGrid","source":"engine/sim/ai/NavGrid.js","import":"/engine/sim/ai/NavGrid.js","sourceHash":"6b2bace3fff5a5dcf805deb1c03f7869ecf5540f1adb94e44c66efae8554fc3a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/NavGrid.js#0005:setCellWalkable","exportIndex":5,"name":"setCellWalkable","kind":"function","signature":"setCellWalkable(grid, gx, gz, value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/NavGrid.md","moduleTitle":"sim/ai/NavGrid","source":"engine/sim/ai/NavGrid.js","import":"/engine/sim/ai/NavGrid.js","sourceHash":"6b2bace3fff5a5dcf805deb1c03f7869ecf5540f1adb94e44c66efae8554fc3a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/NavGrid.js#0006:bakeNavGridFromWorldSim","exportIndex":6,"name":"bakeNavGridFromWorldSim","kind":"function","signature":"bakeNavGridFromWorldSim(grid, worldSim, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/NavGrid.md","moduleTitle":"sim/ai/NavGrid","source":"engine/sim/ai/NavGrid.js","import":"/engine/sim/ai/NavGrid.js","sourceHash":"6b2bace3fff5a5dcf805deb1c03f7869ecf5540f1adb94e44c66efae8554fc3a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/NavGrid.js#0007:axialToCube","exportIndex":7,"name":"axialToCube","kind":"function","signature":"axialToCube(q, r)","summary":"Convert axial (q, r) to cube (q, r, s) coordinates"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/NavGrid.md","moduleTitle":"sim/ai/NavGrid","source":"engine/sim/ai/NavGrid.js","import":"/engine/sim/ai/NavGrid.js","sourceHash":"6b2bace3fff5a5dcf805deb1c03f7869ecf5540f1adb94e44c66efae8554fc3a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/NavGrid.js#0008:cubeToAxial","exportIndex":8,"name":"cubeToAxial","kind":"function","signature":"cubeToAxial(q, r, s)","summary":"Convert cube to axial coordinates"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/NavGrid.md","moduleTitle":"sim/ai/NavGrid","source":"engine/sim/ai/NavGrid.js","import":"/engine/sim/ai/NavGrid.js","sourceHash":"6b2bace3fff5a5dcf805deb1c03f7869ecf5540f1adb94e44c66efae8554fc3a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/NavGrid.js#0009:hexToWorld","exportIndex":9,"name":"hexToWorld","kind":"function","signature":"hexToWorld(q, r, size = 1)","summary":"Convert cube coordinates to world position (pointy-top hexes)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/NavGrid.md","moduleTitle":"sim/ai/NavGrid","source":"engine/sim/ai/NavGrid.js","import":"/engine/sim/ai/NavGrid.js","sourceHash":"6b2bace3fff5a5dcf805deb1c03f7869ecf5540f1adb94e44c66efae8554fc3a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/NavGrid.js#0010:worldToHex","exportIndex":10,"name":"worldToHex","kind":"function","signature":"worldToHex(x, z, size = 1)","summary":"Convert world position to cube hex coordinates"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/NavGrid.md","moduleTitle":"sim/ai/NavGrid","source":"engine/sim/ai/NavGrid.js","import":"/engine/sim/ai/NavGrid.js","sourceHash":"6b2bace3fff5a5dcf805deb1c03f7869ecf5540f1adb94e44c66efae8554fc3a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/NavGrid.js#0011:cubeRound","exportIndex":11,"name":"cubeRound","kind":"function","signature":"cubeRound(q, r, s)","summary":"Round fractional cube coordinates to nearest hex"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/NavGrid.md","moduleTitle":"sim/ai/NavGrid","source":"engine/sim/ai/NavGrid.js","import":"/engine/sim/ai/NavGrid.js","sourceHash":"6b2bace3fff5a5dcf805deb1c03f7869ecf5540f1adb94e44c66efae8554fc3a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/NavGrid.js#0012:hexNeighbors","exportIndex":12,"name":"hexNeighbors","kind":"function","signature":"hexNeighbors(q, r, s)","summary":"Get 6 hex neighbors in cube coordinates"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/NavGrid.md","moduleTitle":"sim/ai/NavGrid","source":"engine/sim/ai/NavGrid.js","import":"/engine/sim/ai/NavGrid.js","sourceHash":"6b2bace3fff5a5dcf805deb1c03f7869ecf5540f1adb94e44c66efae8554fc3a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/NavGrid.js#0013:hexDistance","exportIndex":13,"name":"hexDistance","kind":"function","signature":"hexDistance(q1, r1, s1, q2, r2, s2)","summary":"Calculate hex distance in cube coordinates"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/NavGrid.md","moduleTitle":"sim/ai/NavGrid","source":"engine/sim/ai/NavGrid.js","import":"/engine/sim/ai/NavGrid.js","sourceHash":"6b2bace3fff5a5dcf805deb1c03f7869ecf5540f1adb94e44c66efae8554fc3a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/NavGrid.js#0014:hexRange","exportIndex":14,"name":"hexRange","kind":"function","signature":"hexRange(q, r, range)","summary":"Get all hexes within range of center"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/NavGrid.md","moduleTitle":"sim/ai/NavGrid","source":"engine/sim/ai/NavGrid.js","import":"/engine/sim/ai/NavGrid.js","sourceHash":"6b2bace3fff5a5dcf805deb1c03f7869ecf5540f1adb94e44c66efae8554fc3a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/NavGrid.js#0015:hexRing","exportIndex":15,"name":"hexRing","kind":"function","signature":"hexRing(q, r, radius)","summary":"Get hex ring at exact distance from center"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/NavGrid.md","moduleTitle":"sim/ai/NavGrid","source":"engine/sim/ai/NavGrid.js","import":"/engine/sim/ai/NavGrid.js","sourceHash":"6b2bace3fff5a5dcf805deb1c03f7869ecf5540f1adb94e44c66efae8554fc3a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/NavGrid.js#0016:hexLine","exportIndex":16,"name":"hexLine","kind":"function","signature":"hexLine(q1, r1, q2, r2)","summary":"Linear interpolation between two hexes (for line drawing)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/NavGrid.md","moduleTitle":"sim/ai/NavGrid","source":"engine/sim/ai/NavGrid.js","import":"/engine/sim/ai/NavGrid.js","sourceHash":"6b2bace3fff5a5dcf805deb1c03f7869ecf5540f1adb94e44c66efae8554fc3a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/NavGrid.js#0017:createHexGrid","exportIndex":17,"name":"createHexGrid","kind":"function","signature":"createHexGrid(radius, hexSize = 1)","summary":"Create hex grid for strategy layer"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/NavWorld.md","moduleTitle":"sim/ai/NavWorld","source":"engine/sim/ai/NavWorld.js","import":"/engine/sim/ai/NavWorld.js","sourceHash":"86bc6bb218f82f4fb91b064358c82a657e9f4227ea81e4005922f199bec30460","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/ai/NavWorld.js","title":"sim/ai/NavWorld","summary":"","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/NavWorld.md","moduleTitle":"sim/ai/NavWorld","source":"engine/sim/ai/NavWorld.js","import":"/engine/sim/ai/NavWorld.js","sourceHash":"86bc6bb218f82f4fb91b064358c82a657e9f4227ea81e4005922f199bec30460","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/NavWorld.js#0000:createNavWorld","exportIndex":0,"name":"createNavWorld","kind":"function","signature":"createNavWorld(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/NavWorld.md","moduleTitle":"sim/ai/NavWorld","source":"engine/sim/ai/NavWorld.js","import":"/engine/sim/ai/NavWorld.js","sourceHash":"86bc6bb218f82f4fb91b064358c82a657e9f4227ea81e4005922f199bec30460","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/NavWorld.js#0001:destroyNavWorld","exportIndex":1,"name":"destroyNavWorld","kind":"function","signature":"destroyNavWorld(navWorld)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/NavWorld.md","moduleTitle":"sim/ai/NavWorld","source":"engine/sim/ai/NavWorld.js","import":"/engine/sim/ai/NavWorld.js","sourceHash":"86bc6bb218f82f4fb91b064358c82a657e9f4227ea81e4005922f199bec30460","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/NavWorld.js#0002:addGridLayer","exportIndex":2,"name":"addGridLayer","kind":"function","signature":"addGridLayer(navWorld, name, grid)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/NavWorld.md","moduleTitle":"sim/ai/NavWorld","source":"engine/sim/ai/NavWorld.js","import":"/engine/sim/ai/NavWorld.js","sourceHash":"86bc6bb218f82f4fb91b064358c82a657e9f4227ea81e4005922f199bec30460","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/NavWorld.js#0003:getGridLayer","exportIndex":3,"name":"getGridLayer","kind":"function","signature":"getGridLayer(navWorld, name)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/NavWorld.md","moduleTitle":"sim/ai/NavWorld","source":"engine/sim/ai/NavWorld.js","import":"/engine/sim/ai/NavWorld.js","sourceHash":"86bc6bb218f82f4fb91b064358c82a657e9f4227ea81e4005922f199bec30460","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/NavWorld.js#0004:removeGridLayer","exportIndex":4,"name":"removeGridLayer","kind":"function","signature":"removeGridLayer(navWorld, name)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/Pathfinder.md","moduleTitle":"sim/ai/Pathfinder","source":"engine/sim/ai/Pathfinder.js","import":"/engine/sim/ai/Pathfinder.js","sourceHash":"9cc03cfaae2e5e431fb55784883b03e8bc3dadec7d25ed63bb134f3e806cffb8","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/ai/Pathfinder.js","title":"sim/ai/Pathfinder","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/Pathfinder.md","moduleTitle":"sim/ai/Pathfinder","source":"engine/sim/ai/Pathfinder.js","import":"/engine/sim/ai/Pathfinder.js","sourceHash":"9cc03cfaae2e5e431fb55784883b03e8bc3dadec7d25ed63bb134f3e806cffb8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/Pathfinder.js#0000:findPathOnGrid","exportIndex":0,"name":"findPathOnGrid","kind":"function","signature":"findPathOnGrid(grid, start, goal, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/Pathfinder.md","moduleTitle":"sim/ai/Pathfinder","source":"engine/sim/ai/Pathfinder.js","import":"/engine/sim/ai/Pathfinder.js","sourceHash":"9cc03cfaae2e5e431fb55784883b03e8bc3dadec7d25ed63bb134f3e806cffb8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/Pathfinder.js#0001:findPathInNavWorld","exportIndex":1,"name":"findPathInNavWorld","kind":"function","signature":"findPathInNavWorld(navWorld, layerName, start, goal, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/SpatialHash.md","moduleTitle":"sim/ai/SpatialHash","source":"engine/sim/ai/SpatialHash.js","import":"/engine/sim/ai/SpatialHash.js","sourceHash":"74e7cb3ccb26a7f01b6104dd97639d2b8b91465b59acc65784b1e8b89c321fb5","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/ai/SpatialHash.js","title":"sim/ai/SpatialHash","summary":"Create a 3D spatial hash grid","exportCount":16}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/SpatialHash.md","moduleTitle":"sim/ai/SpatialHash","source":"engine/sim/ai/SpatialHash.js","import":"/engine/sim/ai/SpatialHash.js","sourceHash":"74e7cb3ccb26a7f01b6104dd97639d2b8b91465b59acc65784b1e8b89c321fb5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/SpatialHash.js#0000:createSpatialHash","exportIndex":0,"name":"createSpatialHash","kind":"function","signature":"createSpatialHash(cellSize = 10)","summary":"Create a 3D spatial hash grid"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/SpatialHash.md","moduleTitle":"sim/ai/SpatialHash","source":"engine/sim/ai/SpatialHash.js","import":"/engine/sim/ai/SpatialHash.js","sourceHash":"74e7cb3ccb26a7f01b6104dd97639d2b8b91465b59acc65784b1e8b89c321fb5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/SpatialHash.js#0001:spatialHashInsert","exportIndex":1,"name":"spatialHashInsert","kind":"function","signature":"spatialHashInsert(hash, entity)","summary":"Insert an entity into the spatial hash"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/SpatialHash.md","moduleTitle":"sim/ai/SpatialHash","source":"engine/sim/ai/SpatialHash.js","import":"/engine/sim/ai/SpatialHash.js","sourceHash":"74e7cb3ccb26a7f01b6104dd97639d2b8b91465b59acc65784b1e8b89c321fb5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/SpatialHash.js#0002:spatialHashRemove","exportIndex":2,"name":"spatialHashRemove","kind":"function","signature":"spatialHashRemove(hash, entityId)","summary":"Remove an entity from the spatial hash"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/SpatialHash.md","moduleTitle":"sim/ai/SpatialHash","source":"engine/sim/ai/SpatialHash.js","import":"/engine/sim/ai/SpatialHash.js","sourceHash":"74e7cb3ccb26a7f01b6104dd97639d2b8b91465b59acc65784b1e8b89c321fb5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/SpatialHash.js#0003:spatialHashUpdate","exportIndex":3,"name":"spatialHashUpdate","kind":"function","signature":"spatialHashUpdate(hash, entity)","summary":"Update an entity's position in the spatial hash"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/SpatialHash.md","moduleTitle":"sim/ai/SpatialHash","source":"engine/sim/ai/SpatialHash.js","import":"/engine/sim/ai/SpatialHash.js","sourceHash":"74e7cb3ccb26a7f01b6104dd97639d2b8b91465b59acc65784b1e8b89c321fb5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/SpatialHash.js#0004:spatialHashQueryRadius","exportIndex":4,"name":"spatialHashQueryRadius","kind":"function","signature":"spatialHashQueryRadius(hash, x, y, z, radius)","summary":"Query all entities within radius of a point"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/SpatialHash.md","moduleTitle":"sim/ai/SpatialHash","source":"engine/sim/ai/SpatialHash.js","import":"/engine/sim/ai/SpatialHash.js","sourceHash":"74e7cb3ccb26a7f01b6104dd97639d2b8b91465b59acc65784b1e8b89c321fb5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/SpatialHash.js#0005:spatialHashQueryRadius2D","exportIndex":5,"name":"spatialHashQueryRadius2D","kind":"function","signature":"spatialHashQueryRadius2D(hash, x, z, radius)","summary":"Query all entities within radius (2D, ignores Y)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/SpatialHash.md","moduleTitle":"sim/ai/SpatialHash","source":"engine/sim/ai/SpatialHash.js","import":"/engine/sim/ai/SpatialHash.js","sourceHash":"74e7cb3ccb26a7f01b6104dd97639d2b8b91465b59acc65784b1e8b89c321fb5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/SpatialHash.js#0006:spatialHashQueryAABB","exportIndex":6,"name":"spatialHashQueryAABB","kind":"function","signature":"spatialHashQueryAABB(hash, min, max)","summary":"Query entities in an AABB"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/SpatialHash.md","moduleTitle":"sim/ai/SpatialHash","source":"engine/sim/ai/SpatialHash.js","import":"/engine/sim/ai/SpatialHash.js","sourceHash":"74e7cb3ccb26a7f01b6104dd97639d2b8b91465b59acc65784b1e8b89c321fb5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/SpatialHash.js#0007:spatialHashKNearest","exportIndex":7,"name":"spatialHashKNearest","kind":"function","signature":"spatialHashKNearest(hash, x, y, z, k, maxRadius = 100)","summary":"Get K nearest neighbors to a point"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/SpatialHash.md","moduleTitle":"sim/ai/SpatialHash","source":"engine/sim/ai/SpatialHash.js","import":"/engine/sim/ai/SpatialHash.js","sourceHash":"74e7cb3ccb26a7f01b6104dd97639d2b8b91465b59acc65784b1e8b89c321fb5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/SpatialHash.js#0008:spatialHashClear","exportIndex":8,"name":"spatialHashClear","kind":"function","signature":"spatialHashClear(hash)","summary":"Clear all entities from the spatial hash"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/SpatialHash.md","moduleTitle":"sim/ai/SpatialHash","source":"engine/sim/ai/SpatialHash.js","import":"/engine/sim/ai/SpatialHash.js","sourceHash":"74e7cb3ccb26a7f01b6104dd97639d2b8b91465b59acc65784b1e8b89c321fb5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/SpatialHash.js#0009:spatialHashCount","exportIndex":9,"name":"spatialHashCount","kind":"function","signature":"spatialHashCount(hash)","summary":"Get total entity count"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/SpatialHash.md","moduleTitle":"sim/ai/SpatialHash","source":"engine/sim/ai/SpatialHash.js","import":"/engine/sim/ai/SpatialHash.js","sourceHash":"74e7cb3ccb26a7f01b6104dd97639d2b8b91465b59acc65784b1e8b89c321fb5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/SpatialHash.js#0010:spatialHashRebuild","exportIndex":10,"name":"spatialHashRebuild","kind":"function","signature":"spatialHashRebuild(hash, entities)","summary":"Rebuild the spatial hash from an entity array"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/SpatialHash.md","moduleTitle":"sim/ai/SpatialHash","source":"engine/sim/ai/SpatialHash.js","import":"/engine/sim/ai/SpatialHash.js","sourceHash":"74e7cb3ccb26a7f01b6104dd97639d2b8b91465b59acc65784b1e8b89c321fb5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/SpatialHash.js#0011:createObjectPool","exportIndex":11,"name":"createObjectPool","kind":"function","signature":"createObjectPool(factory, reset = null, initialSize = 100)","summary":"Create an object pool for reducing GC pressure"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/SpatialHash.md","moduleTitle":"sim/ai/SpatialHash","source":"engine/sim/ai/SpatialHash.js","import":"/engine/sim/ai/SpatialHash.js","sourceHash":"74e7cb3ccb26a7f01b6104dd97639d2b8b91465b59acc65784b1e8b89c321fb5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/SpatialHash.js#0012:poolAcquire","exportIndex":12,"name":"poolAcquire","kind":"function","signature":"poolAcquire(pool)","summary":"Acquire an object from the pool"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/SpatialHash.md","moduleTitle":"sim/ai/SpatialHash","source":"engine/sim/ai/SpatialHash.js","import":"/engine/sim/ai/SpatialHash.js","sourceHash":"74e7cb3ccb26a7f01b6104dd97639d2b8b91465b59acc65784b1e8b89c321fb5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/SpatialHash.js#0013:poolRelease","exportIndex":13,"name":"poolRelease","kind":"function","signature":"poolRelease(pool, obj)","summary":"Release an object back to the pool"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/SpatialHash.md","moduleTitle":"sim/ai/SpatialHash","source":"engine/sim/ai/SpatialHash.js","import":"/engine/sim/ai/SpatialHash.js","sourceHash":"74e7cb3ccb26a7f01b6104dd97639d2b8b91465b59acc65784b1e8b89c321fb5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/SpatialHash.js#0014:poolReleaseAll","exportIndex":14,"name":"poolReleaseAll","kind":"function","signature":"poolReleaseAll(pool)","summary":"Release all active objects back to pool"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/SpatialHash.md","moduleTitle":"sim/ai/SpatialHash","source":"engine/sim/ai/SpatialHash.js","import":"/engine/sim/ai/SpatialHash.js","sourceHash":"74e7cb3ccb26a7f01b6104dd97639d2b8b91465b59acc65784b1e8b89c321fb5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/SpatialHash.js#0015:poolStats","exportIndex":15,"name":"poolStats","kind":"function","signature":"poolStats(pool)","summary":"Get pool statistics"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/ai/index.js","title":"sim/ai/index","summary":"","exportCount":710}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0000:AGENT_STATE","exportIndex":0,"name":"AGENT_STATE","kind":"re-export","signature":"AGENT_STATE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0001:ATTACK_PHASE","exportIndex":1,"name":"ATTACK_PHASE","kind":"re-export","signature":"ATTACK_PHASE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0002:AWARENESS_STATE","exportIndex":2,"name":"AWARENESS_STATE","kind":"re-export","signature":"AWARENESS_STATE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0003:AWARENESS_STATES","exportIndex":3,"name":"AWARENESS_STATES","kind":"re-export","signature":"AWARENESS_STATES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0004:BARK_TYPE","exportIndex":4,"name":"BARK_TYPE","kind":"re-export","signature":"BARK_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0005:COMBAT_STATE","exportIndex":5,"name":"COMBAT_STATE","kind":"re-export","signature":"COMBAT_STATE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0006:COMPLEX_EMOTION","exportIndex":6,"name":"COMPLEX_EMOTION","kind":"re-export","signature":"COMPLEX_EMOTION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0007:COVER_ACTION","exportIndex":7,"name":"COVER_ACTION","kind":"re-export","signature":"COVER_ACTION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0008:COVER_QUALITY","exportIndex":8,"name":"COVER_QUALITY","kind":"re-export","signature":"COVER_QUALITY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0009:CREATURE_STATE","exportIndex":9,"name":"CREATURE_STATE","kind":"re-export","signature":"CREATURE_STATE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0010:CROWD_BEHAVIOR","exportIndex":10,"name":"CROWD_BEHAVIOR","kind":"re-export","signature":"CROWD_BEHAVIOR","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0011:DAY_OF_WEEK","exportIndex":11,"name":"DAY_OF_WEEK","kind":"re-export","signature":"DAY_OF_WEEK","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0012:DEFAULT_EVASION_PARAMS","exportIndex":12,"name":"DEFAULT_EVASION_PARAMS","kind":"re-export","signature":"DEFAULT_EVASION_PARAMS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0013:DEFAULT_MORALE_PARAMS","exportIndex":13,"name":"DEFAULT_MORALE_PARAMS","kind":"re-export","signature":"DEFAULT_MORALE_PARAMS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0014:DEFAULT_PERCEPTION_PARAMS","exportIndex":14,"name":"DEFAULT_PERCEPTION_PARAMS","kind":"re-export","signature":"DEFAULT_PERCEPTION_PARAMS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0015:DEFAULT_PHASE_DURATIONS","exportIndex":15,"name":"DEFAULT_PHASE_DURATIONS","kind":"re-export","signature":"DEFAULT_PHASE_DURATIONS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0016:DEFAULT_THREAT_WEIGHTS","exportIndex":16,"name":"DEFAULT_THREAT_WEIGHTS","kind":"re-export","signature":"DEFAULT_THREAT_WEIGHTS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0017:DIPLOMATIC_STANCE","exportIndex":17,"name":"DIPLOMATIC_STANCE","kind":"re-export","signature":"DIPLOMATIC_STANCE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0018:DIPLOMATIC_STANCES","exportIndex":18,"name":"DIPLOMATIC_STANCES","kind":"re-export","signature":"DIPLOMATIC_STANCES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0019:DRIVE_MODE","exportIndex":19,"name":"DRIVE_MODE","kind":"re-export","signature":"DRIVE_MODE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0020:EMOTION","exportIndex":20,"name":"EMOTION","kind":"re-export","signature":"EMOTION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0021:EVASION_TYPE","exportIndex":21,"name":"EVASION_TYPE","kind":"re-export","signature":"EVASION_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0022:EVENT_TYPE","exportIndex":22,"name":"EVENT_TYPE","kind":"re-export","signature":"EVENT_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0023:FACTION_SCHEMA","exportIndex":23,"name":"FACTION_SCHEMA","kind":"re-export","signature":"FACTION_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0024:FALLOFF_TYPE","exportIndex":24,"name":"FALLOFF_TYPE","kind":"re-export","signature":"FALLOFF_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0025:FORMATION_TYPE","exportIndex":25,"name":"FORMATION_TYPE","kind":"re-export","signature":"FORMATION_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0026:GOAL_STATUS","exportIndex":26,"name":"GOAL_STATUS","kind":"re-export","signature":"GOAL_STATUS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0027:GOAL_TYPE","exportIndex":27,"name":"GOAL_TYPE","kind":"re-export","signature":"GOAL_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0028:HITBOX_TYPE","exportIndex":28,"name":"HITBOX_TYPE","kind":"re-export","signature":"HITBOX_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0029:IMPORTANCE","exportIndex":29,"name":"IMPORTANCE","kind":"re-export","signature":"IMPORTANCE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0030:INFO_TYPE","exportIndex":30,"name":"INFO_TYPE","kind":"re-export","signature":"INFO_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0031:INTENSITY_LEVEL","exportIndex":31,"name":"INTENSITY_LEVEL","kind":"re-export","signature":"INTENSITY_LEVEL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0032:INTERACTION_STATE","exportIndex":32,"name":"INTERACTION_STATE","kind":"re-export","signature":"INTERACTION_STATE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0033:ITEM_CATEGORY","exportIndex":33,"name":"ITEM_CATEGORY","kind":"re-export","signature":"ITEM_CATEGORY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0034:JOB_TYPE","exportIndex":34,"name":"JOB_TYPE","kind":"re-export","signature":"JOB_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0035:LOD_UPDATE_INTERVALS","exportIndex":35,"name":"LOD_UPDATE_INTERVALS","kind":"re-export","signature":"LOD_UPDATE_INTERVALS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0036:MARKET_TREND","exportIndex":36,"name":"MARKET_TREND","kind":"re-export","signature":"MARKET_TREND","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0037:MEMORY_TYPE","exportIndex":37,"name":"MEMORY_TYPE","kind":"re-export","signature":"MEMORY_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0038:MONTH","exportIndex":38,"name":"MONTH","kind":"re-export","signature":"MONTH","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0039:MORALE_STATE","exportIndex":39,"name":"MORALE_STATE","kind":"re-export","signature":"MORALE_STATE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0040:NEED","exportIndex":40,"name":"NEED","kind":"re-export","signature":"NEED","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0041:NODE_STATUS","exportIndex":41,"name":"NODE_STATUS","kind":"re-export","signature":"NODE_STATUS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0042:NODE_TYPE","exportIndex":42,"name":"NODE_TYPE","kind":"re-export","signature":"NODE_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0043:NODE_TYPES","exportIndex":43,"name":"NODE_TYPES","kind":"re-export","signature":"NODE_TYPES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0044:NPC_AI_SCHEMA","exportIndex":44,"name":"NPC_AI_SCHEMA","kind":"re-export","signature":"NPC_AI_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0045:OBJECT_CATEGORY","exportIndex":45,"name":"OBJECT_CATEGORY","kind":"re-export","signature":"OBJECT_CATEGORY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0046:PACING_STATE","exportIndex":46,"name":"PACING_STATE","kind":"re-export","signature":"PACING_STATE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0047:PERCEPTION_SCHEMA","exportIndex":47,"name":"PERCEPTION_SCHEMA","kind":"re-export","signature":"PERCEPTION_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0048:PERSONALITY_PRESETS","exportIndex":48,"name":"PERSONALITY_PRESETS","kind":"re-export","signature":"PERSONALITY_PRESETS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0049:PERSONALITY_SCHEMA","exportIndex":49,"name":"PERSONALITY_SCHEMA","kind":"re-export","signature":"PERSONALITY_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0050:PERSONALITY_TRAITS","exportIndex":50,"name":"PERSONALITY_TRAITS","kind":"re-export","signature":"PERSONALITY_TRAITS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0051:PREF_CATEGORY","exportIndex":51,"name":"PREF_CATEGORY","kind":"re-export","signature":"PREF_CATEGORY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0052:PRESET_ACTIVITIES","exportIndex":52,"name":"PRESET_ACTIVITIES","kind":"re-export","signature":"PRESET_ACTIVITIES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0053:PRESET_FORMATIONS","exportIndex":53,"name":"PRESET_FORMATIONS","kind":"re-export","signature":"PRESET_FORMATIONS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0054:PRESET_RESOURCES","exportIndex":54,"name":"PRESET_RESOURCES","kind":"re-export","signature":"PRESET_RESOURCES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0055:PRESET_VEHICLES","exportIndex":55,"name":"PRESET_VEHICLES","kind":"re-export","signature":"PRESET_VEHICLES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0056:PSYCH_NEED","exportIndex":56,"name":"PSYCH_NEED","kind":"re-export","signature":"PSYCH_NEED","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0057:QUEST_PRIORITY","exportIndex":57,"name":"QUEST_PRIORITY","kind":"re-export","signature":"QUEST_PRIORITY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0058:QUEST_STATUS","exportIndex":58,"name":"QUEST_STATUS","kind":"re-export","signature":"QUEST_STATUS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0059:QUEST_TYPE","exportIndex":59,"name":"QUEST_TYPE","kind":"re-export","signature":"QUEST_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0060:RARITY","exportIndex":60,"name":"RARITY","kind":"re-export","signature":"RARITY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0061:RARITY_COLORS","exportIndex":61,"name":"RARITY_COLORS","kind":"re-export","signature":"RARITY_COLORS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0062:RELATIONSHIP_TYPE","exportIndex":62,"name":"RELATIONSHIP_TYPE","kind":"re-export","signature":"RELATIONSHIP_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0063:RELIABILITY","exportIndex":63,"name":"RELIABILITY","kind":"re-export","signature":"RELIABILITY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0064:REPUTATION_LEVEL","exportIndex":64,"name":"REPUTATION_LEVEL","kind":"re-export","signature":"REPUTATION_LEVEL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0065:REPUTATION_LEVELS","exportIndex":65,"name":"REPUTATION_LEVELS","kind":"re-export","signature":"REPUTATION_LEVELS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0066:RESOURCE_CATEGORY","exportIndex":66,"name":"RESOURCE_CATEGORY","kind":"re-export","signature":"RESOURCE_CATEGORY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0067:SCENT_TYPE","exportIndex":67,"name":"SCENT_TYPE","kind":"re-export","signature":"SCENT_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0068:SCHEMA_NODE_STATUS","exportIndex":68,"name":"SCHEMA_NODE_STATUS","kind":"re-export","signature":"SCHEMA_NODE_STATUS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0069:SEASON","exportIndex":69,"name":"SEASON","kind":"re-export","signature":"SEASON","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0070:SENSE_TYPE","exportIndex":70,"name":"SENSE_TYPE","kind":"re-export","signature":"SENSE_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0071:SENSE_TYPES","exportIndex":71,"name":"SENSE_TYPES","kind":"re-export","signature":"SENSE_TYPES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0072:SKILL_LEVELS","exportIndex":72,"name":"SKILL_LEVELS","kind":"re-export","signature":"SKILL_LEVELS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0073:SOUND_CATEGORY","exportIndex":73,"name":"SOUND_CATEGORY","kind":"re-export","signature":"SOUND_CATEGORY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0074:SOUND_PRIORITY","exportIndex":74,"name":"SOUND_PRIORITY","kind":"re-export","signature":"SOUND_PRIORITY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0075:SPECIES_ROLE","exportIndex":75,"name":"SPECIES_ROLE","kind":"re-export","signature":"SPECIES_ROLE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0076:SQUAD_ROLE","exportIndex":76,"name":"SQUAD_ROLE","kind":"re-export","signature":"SQUAD_ROLE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0077:STEERING_AGENT_SCHEMA","exportIndex":77,"name":"STEERING_AGENT_SCHEMA","kind":"re-export","signature":"STEERING_AGENT_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0078:STEERING_BEHAVIORS","exportIndex":78,"name":"STEERING_BEHAVIORS","kind":"re-export","signature":"STEERING_BEHAVIORS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0079:SURFACE_TYPE","exportIndex":79,"name":"SURFACE_TYPE","kind":"re-export","signature":"SURFACE_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0080:SpatialHash","exportIndex":80,"name":"SpatialHash","kind":"re-export","signature":"SpatialHash","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0081:TARGET_MEMORY_DURATION_MS","exportIndex":81,"name":"TARGET_MEMORY_DURATION_MS","kind":"re-export","signature":"TARGET_MEMORY_DURATION_MS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0082:TARGET_SWITCH_THRESHOLD","exportIndex":82,"name":"TARGET_SWITCH_THRESHOLD","kind":"re-export","signature":"TARGET_SWITCH_THRESHOLD","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0083:TERRAIN_TYPE","exportIndex":83,"name":"TERRAIN_TYPE","kind":"re-export","signature":"TERRAIN_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0084:TRAFFIC_LIGHT","exportIndex":84,"name":"TRAFFIC_LIGHT","kind":"re-export","signature":"TRAFFIC_LIGHT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0085:TRAIT","exportIndex":85,"name":"TRAIT","kind":"re-export","signature":"TRAIT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0086:TREATY_TYPE","exportIndex":86,"name":"TREATY_TYPE","kind":"re-export","signature":"TREATY_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0087:URGENCY","exportIndex":87,"name":"URGENCY","kind":"re-export","signature":"URGENCY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0088:VALUE","exportIndex":88,"name":"VALUE","kind":"re-export","signature":"VALUE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0089:VALUE_LEVEL","exportIndex":89,"name":"VALUE_LEVEL","kind":"re-export","signature":"VALUE_LEVEL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0090:VALUE_PRESETS","exportIndex":90,"name":"VALUE_PRESETS","kind":"re-export","signature":"VALUE_PRESETS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0091:WEAPON_PRESETS","exportIndex":91,"name":"WEAPON_PRESETS","kind":"re-export","signature":"WEAPON_PRESETS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0092:WEAPON_TYPE","exportIndex":92,"name":"WEAPON_TYPE","kind":"re-export","signature":"WEAPON_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0093:WEATHER_TYPE","exportIndex":93,"name":"WEATHER_TYPE","kind":"re-export","signature":"WEATHER_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0094:acceptQuest","exportIndex":94,"name":"acceptQuest","kind":"re-export","signature":"acceptQuest","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0095:addAttractor","exportIndex":95,"name":"addAttractor","kind":"re-export","signature":"addAttractor","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0096:addCrowdAgent","exportIndex":96,"name":"addCrowdAgent","kind":"re-export","signature":"addCrowdAgent","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0097:addCrowdWall","exportIndex":97,"name":"addCrowdWall","kind":"re-export","signature":"addCrowdWall","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0098:addDialogueNode","exportIndex":98,"name":"addDialogueNode","kind":"re-export","signature":"addDialogueNode","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0099:addDialogueTree","exportIndex":99,"name":"addDialogueTree","kind":"re-export","signature":"addDialogueTree","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0100:addGridLayer","exportIndex":100,"name":"addGridLayer","kind":"re-export","signature":"addGridLayer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0101:addInfluenceAt","exportIndex":101,"name":"addInfluenceAt","kind":"re-export","signature":"addInfluenceAt","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0102:addKnowledge","exportIndex":102,"name":"addKnowledge","kind":"re-export","signature":"addKnowledge","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0103:addLifeGoal","exportIndex":103,"name":"addLifeGoal","kind":"re-export","signature":"addLifeGoal","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0104:addScheduleEntry","exportIndex":104,"name":"addScheduleEntry","kind":"re-export","signature":"addScheduleEntry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0105:addSoundOccluder","exportIndex":105,"name":"addSoundOccluder","kind":"re-export","signature":"addSoundOccluder","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0106:addSpawnPoint","exportIndex":106,"name":"addSpawnPoint","kind":"re-export","signature":"addSpawnPoint","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0107:addToFaction","exportIndex":107,"name":"addToFaction","kind":"re-export","signature":"addToFaction","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0108:addToInventory","exportIndex":108,"name":"addToInventory","kind":"re-export","signature":"addToInventory","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0109:addToPack","exportIndex":109,"name":"addToPack","kind":"re-export","signature":"addToPack","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0110:addToSquad","exportIndex":110,"name":"addToSquad","kind":"re-export","signature":"addToSquad","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0111:addTrailParticle","exportIndex":111,"name":"addTrailParticle","kind":"re-export","signature":"addTrailParticle","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0112:addWeapon","exportIndex":112,"name":"addWeapon","kind":"re-export","signature":"addWeapon","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0113:advanceTime","exportIndex":113,"name":"advanceTime","kind":"re-export","signature":"advanceTime","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0114:aiRng","exportIndex":114,"name":"aiRng","kind":"re-export","signature":"aiRng","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0115:alignment","exportIndex":115,"name":"alignment","kind":"re-export","signature":"alignment","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0116:announcePublicKnowledge","exportIndex":116,"name":"announcePublicKnowledge","kind":"re-export","signature":"announcePublicKnowledge","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0117:applyAccuracySpread2D","exportIndex":117,"name":"applyAccuracySpread2D","kind":"re-export","signature":"applyAccuracySpread2D","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0118:applyAccuracySpread3D","exportIndex":118,"name":"applyAccuracySpread3D","kind":"re-export","signature":"applyAccuracySpread3D","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0119:applyAffix","exportIndex":119,"name":"applyAffix","kind":"re-export","signature":"applyAffix","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0120:applyBatchRayResults","exportIndex":120,"name":"applyBatchRayResults","kind":"re-export","signature":"applyBatchRayResults","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0121:applyDamageToNPC","exportIndex":121,"name":"applyDamageToNPC","kind":"re-export","signature":"applyDamageToNPC","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0122:applyEmotionalStimulus","exportIndex":122,"name":"applyEmotionalStimulus","kind":"re-export","signature":"applyEmotionalStimulus","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0123:applyForce","exportIndex":123,"name":"applyForce","kind":"re-export","signature":"applyForce","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0124:applyMoraleSuppression","exportIndex":124,"name":"applyMoraleSuppression","kind":"re-export","signature":"applyMoraleSuppression","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0125:applySuppression","exportIndex":125,"name":"applySuppression","kind":"re-export","signature":"applySuppression","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0126:areEntitiesHostile","exportIndex":126,"name":"areEntitiesHostile","kind":"re-export","signature":"areEntitiesHostile","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0127:areFactionsAllied","exportIndex":127,"name":"areFactionsAllied","kind":"re-export","signature":"areFactionsAllied","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0128:areFactionsHostile","exportIndex":128,"name":"areFactionsHostile","kind":"re-export","signature":"areFactionsHostile","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0129:arrive","exportIndex":129,"name":"arrive","kind":"re-export","signature":"arrive","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0130:assignSquadRoles","exportIndex":130,"name":"assignSquadRoles","kind":"re-export","signature":"assignSquadRoles","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0131:assignToFormation","exportIndex":131,"name":"assignToFormation","kind":"re-export","signature":"assignToFormation","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0132:avoidObstacles","exportIndex":132,"name":"avoidObstacles","kind":"re-export","signature":"avoidObstacles","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0133:avoidWalls","exportIndex":133,"name":"avoidWalls","kind":"re-export","signature":"avoidWalls","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0134:bakeNavGridFromWorldSim","exportIndex":134,"name":"bakeNavGridFromWorldSim","kind":"re-export","signature":"bakeNavGridFromWorldSim","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0135:batchRaycast","exportIndex":135,"name":"batchRaycast","kind":"re-export","signature":"batchRaycast","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0136:bellCurve","exportIndex":136,"name":"bellCurve","kind":"re-export","signature":"bellCurve","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0137:benchmarkRaycast","exportIndex":137,"name":"benchmarkRaycast","kind":"re-export","signature":"benchmarkRaycast","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0138:buyFromMarket","exportIndex":138,"name":"buyFromMarket","kind":"re-export","signature":"buyFromMarket","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0139:calculateAccuracyModifier","exportIndex":139,"name":"calculateAccuracyModifier","kind":"re-export","signature":"calculateAccuracyModifier","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0140:calculateAoEDamage","exportIndex":140,"name":"calculateAoEDamage","kind":"re-export","signature":"calculateAoEDamage","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0141:calculateAttackPositions","exportIndex":141,"name":"calculateAttackPositions","kind":"re-export","signature":"calculateAttackPositions","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0142:calculateDamageFalloff","exportIndex":142,"name":"calculateDamageFalloff","kind":"re-export","signature":"calculateDamageFalloff","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0143:calculateDetectionRate","exportIndex":143,"name":"calculateDetectionRate","kind":"re-export","signature":"calculateDetectionRate","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0144:calculateFactionPower","exportIndex":144,"name":"calculateFactionPower","kind":"re-export","signature":"calculateFactionPower","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0145:calculateGrenadeLaunchVelocity","exportIndex":145,"name":"calculateGrenadeLaunchVelocity","kind":"re-export","signature":"calculateGrenadeLaunchVelocity","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0146:calculateHeightAdvantage","exportIndex":146,"name":"calculateHeightAdvantage","kind":"re-export","signature":"calculateHeightAdvantage","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0147:calculateHitDamageFalloff","exportIndex":147,"name":"calculateHitDamageFalloff","kind":"re-export","signature":"calculateHitDamageFalloff","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0148:calculateMovementCost","exportIndex":148,"name":"calculateMovementCost","kind":"re-export","signature":"calculateMovementCost","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0149:calculateNeedsWellbeing","exportIndex":149,"name":"calculateNeedsWellbeing","kind":"re-export","signature":"calculateNeedsWellbeing","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0150:calculatePrice","exportIndex":150,"name":"calculatePrice","kind":"re-export","signature":"calculatePrice","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0151:calculateSocialForce","exportIndex":151,"name":"calculateSocialForce","kind":"re-export","signature":"calculateSocialForce","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0152:calculateSoundIntensity","exportIndex":152,"name":"calculateSoundIntensity","kind":"re-export","signature":"calculateSoundIntensity","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0153:calculateThreatScore","exportIndex":153,"name":"calculateThreatScore","kind":"re-export","signature":"calculateThreatScore","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0154:calculateValuesWellbeing","exportIndex":154,"name":"calculateValuesWellbeing","kind":"re-export","signature":"calculateValuesWellbeing","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0155:calculateWellbeing","exportIndex":155,"name":"calculateWellbeing","kind":"re-export","signature":"calculateWellbeing","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0156:canAcceptQuest","exportIndex":156,"name":"canAcceptQuest","kind":"re-export","signature":"canAcceptQuest","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0157:canAccessFactionService","exportIndex":157,"name":"canAccessFactionService","kind":"re-export","signature":"canAccessFactionService","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0158:canCraft","exportIndex":158,"name":"canCraft","kind":"re-export","signature":"canCraft","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0159:canDodge","exportIndex":159,"name":"canDodge","kind":"re-export","signature":"canDodge","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0160:canFireWeapon","exportIndex":160,"name":"canFireWeapon","kind":"re-export","signature":"canFireWeapon","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0161:canShootFromCover","exportIndex":161,"name":"canShootFromCover","kind":"re-export","signature":"canShootFromCover","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0162:capsuleSphereIntersect","exportIndex":162,"name":"capsuleSphereIntersect","kind":"re-export","signature":"capsuleSphereIntersect","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0163:chainComboAttack","exportIndex":163,"name":"chainComboAttack","kind":"re-export","signature":"chainComboAttack","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0164:challengeBelief","exportIndex":164,"name":"challengeBelief","kind":"re-export","signature":"challengeBelief","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0165:changeFormation","exportIndex":165,"name":"changeFormation","kind":"re-export","signature":"changeFormation","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0166:changeMorale","exportIndex":166,"name":"changeMorale","kind":"re-export","signature":"changeMorale","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0167:checkBeamHit","exportIndex":167,"name":"checkBeamHit","kind":"re-export","signature":"checkBeamHit","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0168:checkGrenadeThreats","exportIndex":168,"name":"checkGrenadeThreats","kind":"re-export","signature":"checkGrenadeThreats","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0169:checkHearing","exportIndex":169,"name":"checkHearing","kind":"re-export","signature":"checkHearing","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0170:checkInvestigationComplete","exportIndex":170,"name":"checkInvestigationComplete","kind":"re-export","signature":"checkInvestigationComplete","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0171:checkMeleeHits","exportIndex":171,"name":"checkMeleeHits","kind":"re-export","signature":"checkMeleeHits","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0172:checkPrerequisites","exportIndex":172,"name":"checkPrerequisites","kind":"re-export","signature":"checkPrerequisites","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0173:checkProjectileCollision","exportIndex":173,"name":"checkProjectileCollision","kind":"re-export","signature":"checkProjectileCollision","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0174:checkProjectileHit","exportIndex":174,"name":"checkProjectileHit","kind":"re-export","signature":"checkProjectileHit","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0175:checkProjectileThreats","exportIndex":175,"name":"checkProjectileThreats","kind":"re-export","signature":"checkProjectileThreats","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0176:checkQuestComplete","exportIndex":176,"name":"checkQuestComplete","kind":"re-export","signature":"checkQuestComplete","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0177:checkVision","exportIndex":177,"name":"checkVision","kind":"re-export","signature":"checkVision","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0178:circleStrafe","exportIndex":178,"name":"circleStrafe","kind":"re-export","signature":"circleStrafe","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0179:claimTerritory","exportIndex":179,"name":"claimTerritory","kind":"re-export","signature":"claimTerritory","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0180:cleanupDrops","exportIndex":180,"name":"cleanupDrops","kind":"re-export","signature":"cleanupDrops","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0181:clearBlackboard","exportIndex":181,"name":"clearBlackboard","kind":"re-export","signature":"clearBlackboard","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0182:clearInfluence","exportIndex":182,"name":"clearInfluence","kind":"re-export","signature":"clearInfluence","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0183:clearPathReservations","exportIndex":183,"name":"clearPathReservations","kind":"re-export","signature":"clearPathReservations","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0184:clearWorkingMemory","exportIndex":184,"name":"clearWorkingMemory","kind":"re-export","signature":"clearWorkingMemory","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0185:cohesion","exportIndex":185,"name":"cohesion","kind":"re-export","signature":"cohesion","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0186:completeInteraction","exportIndex":186,"name":"completeInteraction","kind":"re-export","signature":"completeInteraction","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0187:computePeekPositions","exportIndex":187,"name":"computePeekPositions","kind":"re-export","signature":"computePeekPositions","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0188:connectNPCs","exportIndex":188,"name":"connectNPCs","kind":"re-export","signature":"connectNPCs","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0189:consolidateMemories","exportIndex":189,"name":"consolidateMemories","kind":"re-export","signature":"consolidateMemories","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0190:consumeFood","exportIndex":190,"name":"consumeFood","kind":"re-export","signature":"consumeFood","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0191:continueDialogue","exportIndex":191,"name":"continueDialogue","kind":"re-export","signature":"continueDialogue","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0192:copyResultsToReadback","exportIndex":192,"name":"copyResultsToReadback","kind":"re-export","signature":"copyResultsToReadback","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0193:craft","exportIndex":193,"name":"craft","kind":"re-export","signature":"craft","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0194:createAIAimingSystem","exportIndex":194,"name":"createAIAimingSystem","kind":"re-export","signature":"createAIAimingSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0195:createAIDirector","exportIndex":195,"name":"createAIDirector","kind":"re-export","signature":"createAIDirector","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0196:createAction","exportIndex":196,"name":"createAction","kind":"re-export","signature":"createAction","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0197:createActivity","exportIndex":197,"name":"createActivity","kind":"re-export","signature":"createActivity","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0198:createAffix","exportIndex":198,"name":"createAffix","kind":"re-export","signature":"createAffix","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0199:createAmmoConsideration","exportIndex":199,"name":"createAmmoConsideration","kind":"re-export","signature":"createAmmoConsideration","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0200:createAmmoCrate","exportIndex":200,"name":"createAmmoCrate","kind":"re-export","signature":"createAmmoCrate","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0201:createBeamWeapon","exportIndex":201,"name":"createBeamWeapon","kind":"re-export","signature":"createBeamWeapon","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0202:createBlackboard","exportIndex":202,"name":"createBlackboard","kind":"re-export","signature":"createBlackboard","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0203:createBlackboardRegistry","exportIndex":203,"name":"createBlackboardRegistry","kind":"re-export","signature":"createBlackboardRegistry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0204:createCharacterState","exportIndex":204,"name":"createCharacterState","kind":"re-export","signature":"createCharacterState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0205:createCombatActions","exportIndex":205,"name":"createCombatActions","kind":"re-export","signature":"createCombatActions","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0206:createCombatTree","exportIndex":206,"name":"createCombatTree","kind":"re-export","signature":"createCombatTree","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0207:createCondition","exportIndex":207,"name":"createCondition","kind":"re-export","signature":"createCondition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0208:createConditionGuard","exportIndex":208,"name":"createConditionGuard","kind":"re-export","signature":"createConditionGuard","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0209:createConsideration","exportIndex":209,"name":"createConsideration","kind":"re-export","signature":"createConsideration","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0210:createCooldown","exportIndex":210,"name":"createCooldown","kind":"re-export","signature":"createCooldown","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0211:createCoverConsideration","exportIndex":211,"name":"createCoverConsideration","kind":"re-export","signature":"createCoverConsideration","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0212:createCoverPoint","exportIndex":212,"name":"createCoverPoint","kind":"re-export","signature":"createCoverPoint","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0213:createCoverState","exportIndex":213,"name":"createCoverState","kind":"re-export","signature":"createCoverState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0214:createCreature","exportIndex":214,"name":"createCreature","kind":"re-export","signature":"createCreature","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0215:createCrowdAgent","exportIndex":215,"name":"createCrowdAgent","kind":"re-export","signature":"createCrowdAgent","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0216:createCrowdSystem","exportIndex":216,"name":"createCrowdSystem","kind":"re-export","signature":"createCrowdSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0217:createDangerSense","exportIndex":217,"name":"createDangerSense","kind":"re-export","signature":"createDangerSense","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0218:createDefaultFaction","exportIndex":218,"name":"createDefaultFaction","kind":"re-export","signature":"createDefaultFaction","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0219:createDefaultPerception","exportIndex":219,"name":"createDefaultPerception","kind":"re-export","signature":"createDefaultPerception","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0220:createDefaultPersonality","exportIndex":220,"name":"createDefaultPersonality","kind":"re-export","signature":"createDefaultPersonality","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0221:createDefaultSteeringAgent","exportIndex":221,"name":"createDefaultSteeringAgent","kind":"re-export","signature":"createDefaultSteeringAgent","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0222:createDialogueNode","exportIndex":222,"name":"createDialogueNode","kind":"re-export","signature":"createDialogueNode","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0223:createDialogueState","exportIndex":223,"name":"createDialogueState","kind":"re-export","signature":"createDialogueState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0224:createDialogueTree","exportIndex":224,"name":"createDialogueTree","kind":"re-export","signature":"createDialogueTree","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0225:createDifficultyScaler","exportIndex":225,"name":"createDifficultyScaler","kind":"re-export","signature":"createDifficultyScaler","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0226:createDistanceConsideration","exportIndex":226,"name":"createDistanceConsideration","kind":"re-export","signature":"createDistanceConsideration","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0227:createDoor","exportIndex":227,"name":"createDoor","kind":"re-export","signature":"createDoor","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0228:createEconomyManager","exportIndex":228,"name":"createEconomyManager","kind":"re-export","signature":"createEconomyManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0229:createEcosystem","exportIndex":229,"name":"createEcosystem","kind":"re-export","signature":"createEcosystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0230:createEmotionalState","exportIndex":230,"name":"createEmotionalState","kind":"re-export","signature":"createEmotionalState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0231:createEntityRng","exportIndex":231,"name":"createEntityRng","kind":"re-export","signature":"createEntityRng","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0232:createEnvironmentSensor","exportIndex":232,"name":"createEnvironmentSensor","kind":"re-export","signature":"createEnvironmentSensor","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0233:createEpisode","exportIndex":233,"name":"createEpisode","kind":"re-export","signature":"createEpisode","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0234:createEpisodicMemory","exportIndex":234,"name":"createEpisodicMemory","kind":"re-export","signature":"createEpisodicMemory","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0235:createEvasionState","exportIndex":235,"name":"createEvasionState","kind":"re-export","signature":"createEvasionState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0236:createEventManager","exportIndex":236,"name":"createEventManager","kind":"re-export","signature":"createEventManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0237:createFaction","exportIndex":237,"name":"createFaction","kind":"re-export","signature":"createFaction","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0238:createFactionManager","exportIndex":238,"name":"createFactionManager","kind":"re-export","signature":"createFactionManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0239:createFailer","exportIndex":239,"name":"createFailer","kind":"re-export","signature":"createFailer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0240:createFlowField","exportIndex":240,"name":"createFlowField","kind":"re-export","signature":"createFlowField","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0241:createFoodSource","exportIndex":241,"name":"createFoodSource","kind":"re-export","signature":"createFoodSource","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0242:createFormation","exportIndex":242,"name":"createFormation","kind":"re-export","signature":"createFormation","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0243:createFormationManager","exportIndex":243,"name":"createFormationManager","kind":"re-export","signature":"createFormationManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0244:createFromPreset","exportIndex":244,"name":"createFromPreset","kind":"re-export","signature":"createFromPreset","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0245:createGPURaycastSystem","exportIndex":245,"name":"createGPURaycastSystem","kind":"re-export","signature":"createGPURaycastSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0246:createGrenade","exportIndex":246,"name":"createGrenade","kind":"re-export","signature":"createGrenade","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0247:createHealthConsideration","exportIndex":247,"name":"createHealthConsideration","kind":"re-export","signature":"createHealthConsideration","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0248:createHealthStation","exportIndex":248,"name":"createHealthStation","kind":"re-export","signature":"createHealthStation","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0249:createInfluenceLayer","exportIndex":249,"name":"createInfluenceLayer","kind":"re-export","signature":"createInfluenceLayer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0250:createInfluenceMap","exportIndex":250,"name":"createInfluenceMap","kind":"re-export","signature":"createInfluenceMap","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0251:createInteraction","exportIndex":251,"name":"createInteraction","kind":"re-export","signature":"createInteraction","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0252:createInventory","exportIndex":252,"name":"createInventory","kind":"re-export","signature":"createInventory","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0253:createInverter","exportIndex":253,"name":"createInverter","kind":"re-export","signature":"createInverter","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0254:createItemDef","exportIndex":254,"name":"createItemDef","kind":"re-export","signature":"createItemDef","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0255:createItemInstance","exportIndex":255,"name":"createItemInstance","kind":"re-export","signature":"createItemInstance","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0256:createJob","exportIndex":256,"name":"createJob","kind":"re-export","signature":"createJob","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0257:createKnowledge","exportIndex":257,"name":"createKnowledge","kind":"re-export","signature":"createKnowledge","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0258:createKnowledgeBase","exportIndex":258,"name":"createKnowledgeBase","kind":"re-export","signature":"createKnowledgeBase","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0259:createLOSConsideration","exportIndex":259,"name":"createLOSConsideration","kind":"re-export","signature":"createLOSConsideration","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0260:createLifeGoal","exportIndex":260,"name":"createLifeGoal","kind":"re-export","signature":"createLifeGoal","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0261:createLog","exportIndex":261,"name":"createLog","kind":"re-export","signature":"createLog","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0262:createLootEntry","exportIndex":262,"name":"createLootEntry","kind":"re-export","signature":"createLootEntry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0263:createLootManager","exportIndex":263,"name":"createLootManager","kind":"re-export","signature":"createLootManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0264:createLootTable","exportIndex":264,"name":"createLootTable","kind":"re-export","signature":"createLootTable","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0265:createMarket","exportIndex":265,"name":"createMarket","kind":"re-export","signature":"createMarket","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0266:createMeleeArc","exportIndex":266,"name":"createMeleeArc","kind":"re-export","signature":"createMeleeArc","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0267:createMeleeAttackState","exportIndex":267,"name":"createMeleeAttackState","kind":"re-export","signature":"createMeleeAttackState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0268:createMemorySystem","exportIndex":268,"name":"createMemorySystem","kind":"re-export","signature":"createMemorySystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0269:createMoraleState","exportIndex":269,"name":"createMoraleState","kind":"re-export","signature":"createMoraleState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0270:createNPCCombatController","exportIndex":270,"name":"createNPCCombatController","kind":"re-export","signature":"createNPCCombatController","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0271:createNPCScheduler","exportIndex":271,"name":"createNPCScheduler","kind":"re-export","signature":"createNPCScheduler","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0272:createNavGrid","exportIndex":272,"name":"createNavGrid","kind":"re-export","signature":"createNavGrid","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0273:createNavWorld","exportIndex":273,"name":"createNavWorld","kind":"re-export","signature":"createNavWorld","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0274:createNeedsState","exportIndex":274,"name":"createNeedsState","kind":"re-export","signature":"createNeedsState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0275:createNoiseEvent","exportIndex":275,"name":"createNoiseEvent","kind":"re-export","signature":"createNoiseEvent","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0276:createObjectPool","exportIndex":276,"name":"createObjectPool","kind":"re-export","signature":"createObjectPool","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0277:createObjective","exportIndex":277,"name":"createObjective","kind":"re-export","signature":"createObjective","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0278:createPacingController","exportIndex":278,"name":"createPacingController","kind":"re-export","signature":"createPacingController","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0279:createPack","exportIndex":279,"name":"createPack","kind":"re-export","signature":"createPack","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0280:createParallel","exportIndex":280,"name":"createParallel","kind":"re-export","signature":"createParallel","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0281:createPerceptionState","exportIndex":281,"name":"createPerceptionState","kind":"re-export","signature":"createPerceptionState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0282:createPersonality","exportIndex":282,"name":"createPersonality","kind":"re-export","signature":"createPersonality","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0283:createPersonalityFromArchetype","exportIndex":283,"name":"createPersonalityFromArchetype","kind":"re-export","signature":"createPersonalityFromArchetype","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0284:createPlayerState","exportIndex":284,"name":"createPlayerState","kind":"re-export","signature":"createPlayerState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0285:createPositionRng","exportIndex":285,"name":"createPositionRng","kind":"re-export","signature":"createPositionRng","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0286:createProceduralMemory","exportIndex":286,"name":"createProceduralMemory","kind":"re-export","signature":"createProceduralMemory","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0287:createProductionBuilding","exportIndex":287,"name":"createProductionBuilding","kind":"re-export","signature":"createProductionBuilding","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0288:createProjectile","exportIndex":288,"name":"createProjectile","kind":"re-export","signature":"createProjectile","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0289:createQuest","exportIndex":289,"name":"createQuest","kind":"re-export","signature":"createQuest","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0290:createQuestManager","exportIndex":290,"name":"createQuestManager","kind":"re-export","signature":"createQuestManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0291:createRandomSelector","exportIndex":291,"name":"createRandomSelector","kind":"re-export","signature":"createRandomSelector","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0292:createRay","exportIndex":292,"name":"createRay","kind":"re-export","signature":"createRay","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0293:createRecipe","exportIndex":293,"name":"createRecipe","kind":"re-export","signature":"createRecipe","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0294:createRelationshipTracker","exportIndex":294,"name":"createRelationshipTracker","kind":"re-export","signature":"createRelationshipTracker","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0295:createRepeater","exportIndex":295,"name":"createRepeater","kind":"re-export","signature":"createRepeater","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0296:createResource","exportIndex":296,"name":"createResource","kind":"re-export","signature":"createResource","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0297:createScentParticle","exportIndex":297,"name":"createScentParticle","kind":"re-export","signature":"createScentParticle","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0298:createScentSystem","exportIndex":298,"name":"createScentSystem","kind":"re-export","signature":"createScentSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0299:createScentTrail","exportIndex":299,"name":"createScentTrail","kind":"re-export","signature":"createScentTrail","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0300:createSchedule","exportIndex":300,"name":"createSchedule","kind":"re-export","signature":"createSchedule","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0301:createSelector","exportIndex":301,"name":"createSelector","kind":"re-export","signature":"createSelector","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0302:createSemanticMemory","exportIndex":302,"name":"createSemanticMemory","kind":"re-export","signature":"createSemanticMemory","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0303:createSequence","exportIndex":303,"name":"createSequence","kind":"re-export","signature":"createSequence","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0304:createSmartObject","exportIndex":304,"name":"createSmartObject","kind":"re-export","signature":"createSmartObject","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0305:createSmartObjectRegistry","exportIndex":305,"name":"createSmartObjectRegistry","kind":"re-export","signature":"createSmartObjectRegistry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0306:createSoundEvent","exportIndex":306,"name":"createSoundEvent","kind":"re-export","signature":"createSoundEvent","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0307:createSoundSystem","exportIndex":307,"name":"createSoundSystem","kind":"re-export","signature":"createSoundSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0308:createSpatialHash","exportIndex":308,"name":"createSpatialHash","kind":"re-export","signature":"createSpatialHash","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0309:createSpawnDirector","exportIndex":309,"name":"createSpawnDirector","kind":"re-export","signature":"createSpawnDirector","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0310:createSpecies","exportIndex":310,"name":"createSpecies","kind":"re-export","signature":"createSpecies","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0311:createSquad","exportIndex":311,"name":"createSquad","kind":"re-export","signature":"createSquad","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0312:createSquadManager","exportIndex":312,"name":"createSquadManager","kind":"re-export","signature":"createSquadManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0313:createSteeringAgent","exportIndex":313,"name":"createSteeringAgent","kind":"re-export","signature":"createSteeringAgent","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0314:createSucceeder","exportIndex":314,"name":"createSucceeder","kind":"re-export","signature":"createSucceeder","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0315:createTargetMemory","exportIndex":315,"name":"createTargetMemory","kind":"re-export","signature":"createTargetMemory","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0316:createTerrainGrid","exportIndex":316,"name":"createTerrainGrid","kind":"re-export","signature":"createTerrainGrid","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0317:createThreatConsideration","exportIndex":317,"name":"createThreatConsideration","kind":"re-export","signature":"createThreatConsideration","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0318:createTrafficSystem","exportIndex":318,"name":"createTrafficSystem","kind":"re-export","signature":"createTrafficSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0319:createTreaty","exportIndex":319,"name":"createTreaty","kind":"re-export","signature":"createTreaty","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0320:createTreeRunner","exportIndex":320,"name":"createTreeRunner","kind":"re-export","signature":"createTreeRunner","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0321:createTremorSense","exportIndex":321,"name":"createTremorSense","kind":"re-export","signature":"createTremorSense","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0322:createUntilFail","exportIndex":322,"name":"createUntilFail","kind":"re-export","signature":"createUntilFail","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0323:createUntilSuccess","exportIndex":323,"name":"createUntilSuccess","kind":"re-export","signature":"createUntilSuccess","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0324:createUtilityAction","exportIndex":324,"name":"createUtilityAction","kind":"re-export","signature":"createUtilityAction","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0325:createUtilityBrain","exportIndex":325,"name":"createUtilityBrain","kind":"re-export","signature":"createUtilityBrain","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0326:createValueSystem","exportIndex":326,"name":"createValueSystem","kind":"re-export","signature":"createValueSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0327:createVehicle","exportIndex":327,"name":"createVehicle","kind":"re-export","signature":"createVehicle","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0328:createVehicleType","exportIndex":328,"name":"createVehicleType","kind":"re-export","signature":"createVehicleType","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0329:createVibration","exportIndex":329,"name":"createVibration","kind":"re-export","signature":"createVibration","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0330:createWait","exportIndex":330,"name":"createWait","kind":"re-export","signature":"createWait","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0331:createWeaponController","exportIndex":331,"name":"createWeaponController","kind":"re-export","signature":"createWeaponController","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0332:createWeatherSystem","exportIndex":332,"name":"createWeatherSystem","kind":"re-export","signature":"createWeatherSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0333:createWorkingMemory","exportIndex":333,"name":"createWorkingMemory","kind":"re-export","signature":"createWorkingMemory","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0334:createWorldEvent","exportIndex":334,"name":"createWorldEvent","kind":"re-export","signature":"createWorldEvent","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0335:createWorldKnowledgeManager","exportIndex":335,"name":"createWorldKnowledgeManager","kind":"re-export","signature":"createWorldKnowledgeManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0336:createWorldState","exportIndex":336,"name":"createWorldState","kind":"re-export","signature":"createWorldState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0337:createWorldTime","exportIndex":337,"name":"createWorldTime","kind":"re-export","signature":"createWorldTime","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0338:customCurve","exportIndex":338,"name":"customCurve","kind":"re-export","signature":"customCurve","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0339:damageCover","exportIndex":339,"name":"damageCover","kind":"re-export","signature":"damageCover","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0340:decayAwareness","exportIndex":340,"name":"decayAwareness","kind":"re-export","signature":"decayAwareness","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0341:decayDamageMemory","exportIndex":341,"name":"decayDamageMemory","kind":"re-export","signature":"decayDamageMemory","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0342:decayEmotions","exportIndex":342,"name":"decayEmotions","kind":"re-export","signature":"decayEmotions","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0343:decayInfluence","exportIndex":343,"name":"decayInfluence","kind":"re-export","signature":"decayInfluence","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0344:decayPsychNeeds","exportIndex":344,"name":"decayPsychNeeds","kind":"re-export","signature":"decayPsychNeeds","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0345:declareWar","exportIndex":345,"name":"declareWar","kind":"re-export","signature":"declareWar","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0346:degToRad","exportIndex":346,"name":"degToRad","kind":"re-export","signature":"degToRad","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0347:destroyGPURaycastSystem","exportIndex":347,"name":"destroyGPURaycastSystem","kind":"re-export","signature":"destroyGPURaycastSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0348:destroyNavGrid","exportIndex":348,"name":"destroyNavGrid","kind":"re-export","signature":"destroyNavGrid","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0349:destroyNavWorld","exportIndex":349,"name":"destroyNavWorld","kind":"re-export","signature":"destroyNavWorld","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0350:detectChokepoints","exportIndex":350,"name":"detectChokepoints","kind":"re-export","signature":"detectChokepoints","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0351:detectCoverPoints","exportIndex":351,"name":"detectCoverPoints","kind":"re-export","signature":"detectCoverPoints","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0352:detectEnvironmentTrend","exportIndex":352,"name":"detectEnvironmentTrend","kind":"re-export","signature":"detectEnvironmentTrend","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0353:dialogueBuilder","exportIndex":353,"name":"dialogueBuilder","kind":"re-export","signature":"dialogueBuilder","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0354:disbandSquad","exportIndex":354,"name":"disbandSquad","kind":"re-export","signature":"disbandSquad","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0355:dispatchAABBRaycast","exportIndex":355,"name":"dispatchAABBRaycast","kind":"re-export","signature":"dispatchAABBRaycast","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0356:dispatchSphereRaycast","exportIndex":356,"name":"dispatchSphereRaycast","kind":"re-export","signature":"dispatchSphereRaycast","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0357:distance","exportIndex":357,"name":"distance","kind":"re-export","signature":"distance","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0358:distanceSquared","exportIndex":358,"name":"distanceSquared","kind":"re-export","signature":"distanceSquared","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0359:distortKnowledge","exportIndex":359,"name":"distortKnowledge","kind":"re-export","signature":"distortKnowledge","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0360:dropLoot","exportIndex":360,"name":"dropLoot","kind":"re-export","signature":"dropLoot","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0361:emitExplosion","exportIndex":361,"name":"emitExplosion","kind":"re-export","signature":"emitExplosion","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0362:emitFootstep","exportIndex":362,"name":"emitFootstep","kind":"re-export","signature":"emitFootstep","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0363:emitGunshot","exportIndex":363,"name":"emitGunshot","kind":"re-export","signature":"emitGunshot","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0364:emitSound","exportIndex":364,"name":"emitSound","kind":"re-export","signature":"emitSound","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0365:emitVibration","exportIndex":365,"name":"emitVibration","kind":"re-export","signature":"emitVibration","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0366:enterCover","exportIndex":366,"name":"enterCover","kind":"re-export","signature":"enterCover","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0367:evade","exportIndex":367,"name":"evade","kind":"re-export","signature":"evade","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0368:evaluateConsideration","exportIndex":368,"name":"evaluateConsideration","kind":"re-export","signature":"evaluateConsideration","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0369:evaluateTacticalPosition","exportIndex":369,"name":"evaluateTacticalPosition","kind":"re-export","signature":"evaluateTacticalPosition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0370:executeCurrentAction","exportIndex":370,"name":"executeCurrentAction","kind":"re-export","signature":"executeCurrentAction","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0371:exitCover","exportIndex":371,"name":"exitCover","kind":"re-export","signature":"exitCover","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0372:exponentialCurve","exportIndex":372,"name":"exponentialCurve","kind":"re-export","signature":"exponentialCurve","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0373:exportBlackboard","exportIndex":373,"name":"exportBlackboard","kind":"re-export","signature":"exportBlackboard","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0374:failQuest","exportIndex":374,"name":"failQuest","kind":"re-export","signature":"failQuest","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0375:findAvailableSlot","exportIndex":375,"name":"findAvailableSlot","kind":"re-export","signature":"findAvailableSlot","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0376:findBestCover","exportIndex":376,"name":"findBestCover","kind":"re-export","signature":"findBestCover","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0377:findByCategory","exportIndex":377,"name":"findByCategory","kind":"re-export","signature":"findByCategory","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0378:findByTag","exportIndex":378,"name":"findByTag","kind":"re-export","signature":"findByTag","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0379:findChokePoints","exportIndex":379,"name":"findChokePoints","kind":"re-export","signature":"findChokePoints","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0380:findConcealment","exportIndex":380,"name":"findConcealment","kind":"re-export","signature":"findConcealment","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0381:findFlankingPositions","exportIndex":381,"name":"findFlankingPositions","kind":"re-export","signature":"findFlankingPositions","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0382:findHighGround","exportIndex":382,"name":"findHighGround","kind":"re-export","signature":"findHighGround","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0383:findHighestInfluence","exportIndex":383,"name":"findHighestInfluence","kind":"re-export","signature":"findHighestInfluence","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0384:findLowestInfluence","exportIndex":384,"name":"findLowestInfluence","kind":"re-export","signature":"findLowestInfluence","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0385:findNearestUsable","exportIndex":385,"name":"findNearestUsable","kind":"re-export","signature":"findNearestUsable","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0386:findPathInNavWorld","exportIndex":386,"name":"findPathInNavWorld","kind":"re-export","signature":"findPathInNavWorld","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0387:findPathOnGrid","exportIndex":387,"name":"findPathOnGrid","kind":"re-export","signature":"findPathOnGrid","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0388:findRetreatCover","exportIndex":388,"name":"findRetreatCover","kind":"re-export","signature":"findRetreatCover","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0389:fireBeam","exportIndex":389,"name":"fireBeam","kind":"re-export","signature":"fireBeam","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0390:fireHitscan","exportIndex":390,"name":"fireHitscan","kind":"re-export","signature":"fireHitscan","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0391:fireShotgun","exportIndex":391,"name":"fireShotgun","kind":"re-export","signature":"fireShotgun","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0392:flee","exportIndex":392,"name":"flee","kind":"re-export","signature":"flee","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0393:flock","exportIndex":393,"name":"flock","kind":"re-export","signature":"flock","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0394:followFlowField","exportIndex":394,"name":"followFlowField","kind":"re-export","signature":"followFlowField","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0395:followPath","exportIndex":395,"name":"followPath","kind":"re-export","signature":"followPath","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0396:followScentTrail","exportIndex":396,"name":"followScentTrail","kind":"re-export","signature":"followScentTrail","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0397:formHabit","exportIndex":397,"name":"formHabit","kind":"re-export","signature":"formHabit","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0398:formatDate","exportIndex":398,"name":"formatDate","kind":"re-export","signature":"formatDate","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0399:formatTime","exportIndex":399,"name":"formatTime","kind":"re-export","signature":"formatTime","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0400:gaussianRandom","exportIndex":400,"name":"gaussianRandom","kind":"re-export","signature":"gaussianRandom","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0401:generateCombatMovement","exportIndex":401,"name":"generateCombatMovement","kind":"re-export","signature":"generateCombatMovement","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0402:generateDailyQuests","exportIndex":402,"name":"generateDailyQuests","kind":"re-export","signature":"generateDailyQuests","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0403:generateFlowFieldToTarget","exportIndex":403,"name":"generateFlowFieldToTarget","kind":"re-export","signature":"generateFlowFieldToTarget","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0404:generateFormationSlots","exportIndex":404,"name":"generateFormationSlots","kind":"re-export","signature":"generateFormationSlots","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0405:generateItemName","exportIndex":405,"name":"generateItemName","kind":"re-export","signature":"generateItemName","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0406:generateQuest","exportIndex":406,"name":"generateQuest","kind":"re-export","signature":"generateQuest","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0407:getActiveGoals","exportIndex":407,"name":"getActiveGoals","kind":"re-export","signature":"getActiveGoals","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0408:getAimPointFromMemory","exportIndex":408,"name":"getAimPointFromMemory","kind":"re-export","signature":"getAimPointFromMemory","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0409:getAllFormationPositions","exportIndex":409,"name":"getAllFormationPositions","kind":"re-export","signature":"getAllFormationPositions","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0410:getAoETargets","exportIndex":410,"name":"getAoETargets","kind":"re-export","signature":"getAoETargets","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0411:getAwarenessStateId","exportIndex":411,"name":"getAwarenessStateId","kind":"re-export","signature":"getAwarenessStateId","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0412:getAwarenessStateName","exportIndex":412,"name":"getAwarenessStateName","kind":"re-export","signature":"getAwarenessStateName","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0413:getBarkText","exportIndex":413,"name":"getBarkText","kind":"re-export","signature":"getBarkText","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0414:getBatchRays","exportIndex":414,"name":"getBatchRays","kind":"re-export","signature":"getBatchRays","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0415:getBlackboardValue","exportIndex":415,"name":"getBlackboardValue","kind":"re-export","signature":"getBlackboardValue","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0416:getComboMultiplier","exportIndex":416,"name":"getComboMultiplier","kind":"re-export","signature":"getComboMultiplier","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0417:getConeTargets","exportIndex":417,"name":"getConeTargets","kind":"re-export","signature":"getConeTargets","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0418:getCoverShootPosition","exportIndex":418,"name":"getCoverShootPosition","kind":"re-export","signature":"getCoverShootPosition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0419:getCriticalNeeds","exportIndex":419,"name":"getCriticalNeeds","kind":"re-export","signature":"getCriticalNeeds","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0420:getCrowdStats","exportIndex":420,"name":"getCrowdStats","kind":"re-export","signature":"getCrowdStats","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0421:getDayPhase","exportIndex":421,"name":"getDayPhase","kind":"re-export","signature":"getDayPhase","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0422:getDialogueFlag","exportIndex":422,"name":"getDialogueFlag","kind":"re-export","signature":"getDialogueFlag","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0423:getDiplomaticStance","exportIndex":423,"name":"getDiplomaticStance","kind":"re-export","signature":"getDiplomaticStance","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0424:getDisposition","exportIndex":424,"name":"getDisposition","kind":"re-export","signature":"getDisposition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0425:getEcosystemStats","exportIndex":425,"name":"getEcosystemStats","kind":"re-export","signature":"getEcosystemStats","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0426:getEntityFaction","exportIndex":426,"name":"getEntityFaction","kind":"re-export","signature":"getEntityFaction","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0427:getEntityImpression","exportIndex":427,"name":"getEntityImpression","kind":"re-export","signature":"getEntityImpression","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0428:getEntityRngState","exportIndex":428,"name":"getEntityRngState","kind":"re-export","signature":"getEntityRngState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0429:getEnvironmentalComfort","exportIndex":429,"name":"getEnvironmentalComfort","kind":"re-export","signature":"getEnvironmentalComfort","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0430:getEvasionParamsForSkill","exportIndex":430,"name":"getEvasionParamsForSkill","kind":"re-export","signature":"getEvasionParamsForSkill","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0431:getFact","exportIndex":431,"name":"getFact","kind":"re-export","signature":"getFact","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0432:getFlowDirection","exportIndex":432,"name":"getFlowDirection","kind":"re-export","signature":"getFlowDirection","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0433:getFormationPosition","exportIndex":433,"name":"getFormationPosition","kind":"re-export","signature":"getFormationPosition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0434:getGridLayer","exportIndex":434,"name":"getGridLayer","kind":"re-export","signature":"getGridLayer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0435:getGroupMorale","exportIndex":435,"name":"getGroupMorale","kind":"re-export","signature":"getGroupMorale","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0436:getHabitualResponse","exportIndex":436,"name":"getHabitualResponse","kind":"re-export","signature":"getHabitualResponse","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0437:getHighestPriorityDetection","exportIndex":437,"name":"getHighestPriorityDetection","kind":"re-export","signature":"getHighestPriorityDetection","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0438:getInfluenceAt","exportIndex":438,"name":"getInfluenceAt","kind":"re-export","signature":"getInfluenceAt","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0439:getInteractionRngState","exportIndex":439,"name":"getInteractionRngState","kind":"re-export","signature":"getInteractionRngState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0440:getLastKnownPosition","exportIndex":440,"name":"getLastKnownPosition","kind":"re-export","signature":"getLastKnownPosition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0441:getMoraleAccuracyMod","exportIndex":441,"name":"getMoraleAccuracyMod","kind":"re-export","signature":"getMoraleAccuracyMod","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0442:getMoraleReactionMod","exportIndex":442,"name":"getMoraleReactionMod","kind":"re-export","signature":"getMoraleReactionMod","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0443:getMoraleSpeedMod","exportIndex":443,"name":"getMoraleSpeedMod","kind":"re-export","signature":"getMoraleSpeedMod","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0444:getMostDeprivedNeed","exportIndex":444,"name":"getMostDeprivedNeed","kind":"re-export","signature":"getMostDeprivedNeed","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0445:getMostThreateningEntity","exportIndex":445,"name":"getMostThreateningEntity","kind":"re-export","signature":"getMostThreateningEntity","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0446:getMostUrgentNeed","exportIndex":446,"name":"getMostUrgentNeed","kind":"re-export","signature":"getMostUrgentNeed","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0447:getNodeTypeId","exportIndex":447,"name":"getNodeTypeId","kind":"re-export","signature":"getNodeTypeId","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0448:getNoiseModifier","exportIndex":448,"name":"getNoiseModifier","kind":"re-export","signature":"getNoiseModifier","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0449:getPersonalityBehaviorMod","exportIndex":449,"name":"getPersonalityBehaviorMod","kind":"re-export","signature":"getPersonalityBehaviorMod","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0450:getPhaseProgress","exportIndex":450,"name":"getPhaseProgress","kind":"re-export","signature":"getPhaseProgress","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0451:getPhaseTimeRemaining","exportIndex":451,"name":"getPhaseTimeRemaining","kind":"re-export","signature":"getPhaseTimeRemaining","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0452:getPlayerReputationLevel","exportIndex":452,"name":"getPlayerReputationLevel","kind":"re-export","signature":"getPlayerReputationLevel","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0453:getPositionRngState","exportIndex":453,"name":"getPositionRngState","kind":"re-export","signature":"getPositionRngState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0454:getProjectilePositionAtTime","exportIndex":454,"name":"getProjectilePositionAtTime","kind":"re-export","signature":"getProjectilePositionAtTime","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0455:getRecentDetections","exportIndex":455,"name":"getRecentDetections","kind":"re-export","signature":"getRecentDetections","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0456:getRelationship","exportIndex":456,"name":"getRelationship","kind":"re-export","signature":"getRelationship","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0457:getReputationLevel","exportIndex":457,"name":"getReputationLevel","kind":"re-export","signature":"getReputationLevel","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0458:getScheduledActivity","exportIndex":458,"name":"getScheduledActivity","kind":"re-export","signature":"getScheduledActivity","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0459:getSeason","exportIndex":459,"name":"getSeason","kind":"re-export","signature":"getSeason","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0460:getSkillProficiency","exportIndex":460,"name":"getSkillProficiency","kind":"re-export","signature":"getSkillProficiency","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0461:getSlotWorldPosition","exportIndex":461,"name":"getSlotWorldPosition","kind":"re-export","signature":"getSlotWorldPosition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0462:getSquadForNPC","exportIndex":462,"name":"getSquadForNPC","kind":"re-export","signature":"getSquadForNPC","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0463:getStealthModifier","exportIndex":463,"name":"getStealthModifier","kind":"re-export","signature":"getStealthModifier","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0464:getTeammates","exportIndex":464,"name":"getTeammates","kind":"re-export","signature":"getTeammates","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0465:getTerrainHeight","exportIndex":465,"name":"getTerrainHeight","kind":"re-export","signature":"getTerrainHeight","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0466:getTerrainPropertiesAt","exportIndex":466,"name":"getTerrainPropertiesAt","kind":"re-export","signature":"getTerrainPropertiesAt","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0467:getTerrainType","exportIndex":467,"name":"getTerrainType","kind":"re-export","signature":"getTerrainType","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0468:getTerritoryOwner","exportIndex":468,"name":"getTerritoryOwner","kind":"re-export","signature":"getTerritoryOwner","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0469:getTopValues","exportIndex":469,"name":"getTopValues","kind":"re-export","signature":"getTopValues","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0470:getUnfulfilledDreams","exportIndex":470,"name":"getUnfulfilledDreams","kind":"re-export","signature":"getUnfulfilledDreams","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0471:getValue","exportIndex":471,"name":"getValue","kind":"re-export","signature":"getValue","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0472:getWeatherEffects","exportIndex":472,"name":"getWeatherEffects","kind":"re-export","signature":"getWeatherEffects","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0473:getWorkingMemoryByType","exportIndex":473,"name":"getWorkingMemoryByType","kind":"re-export","signature":"getWorkingMemoryByType","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0474:gridToWorld","exportIndex":474,"name":"gridToWorld","kind":"re-export","signature":"gridToWorld","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0475:groupRally","exportIndex":475,"name":"groupRally","kind":"re-export","signature":"groupRally","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0476:hasComplexEmotion","exportIndex":476,"name":"hasComplexEmotion","kind":"re-export","signature":"hasComplexEmotion","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0477:hasKnowledgeOf","exportIndex":477,"name":"hasKnowledgeOf","kind":"re-export","signature":"hasKnowledgeOf","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0478:hasLineOfSight","exportIndex":478,"name":"hasLineOfSight","kind":"re-export","signature":"hasLineOfSight","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0479:hasLineOfSightSpheres","exportIndex":479,"name":"hasLineOfSightSpheres","kind":"re-export","signature":"hasLineOfSightSpheres","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0480:influenceCellToWorld","exportIndex":480,"name":"influenceCellToWorld","kind":"re-export","signature":"influenceCellToWorld","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0481:initMarketResource","exportIndex":481,"name":"initMarketResource","kind":"re-export","signature":"initMarketResource","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0482:initNPCMelee","exportIndex":482,"name":"initNPCMelee","kind":"re-export","signature":"initNPCMelee","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0483:initNPCWeapons","exportIndex":483,"name":"initNPCWeapons","kind":"re-export","signature":"initNPCWeapons","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0484:interruptMeleeAttack","exportIndex":484,"name":"interruptMeleeAttack","kind":"re-export","signature":"interruptMeleeAttack","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0485:inverseLinearCurve","exportIndex":485,"name":"inverseLinearCurve","kind":"re-export","signature":"inverseLinearCurve","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0486:isCellWalkable","exportIndex":486,"name":"isCellWalkable","kind":"re-export","signature":"isCellWalkable","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0487:isEvading","exportIndex":487,"name":"isEvading","kind":"re-export","signature":"isEvading","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0488:isFormationComplete","exportIndex":488,"name":"isFormationComplete","kind":"re-export","signature":"isFormationComplete","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0489:isGroupRouting","exportIndex":489,"name":"isGroupRouting","kind":"re-export","signature":"isGroupRouting","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0490:isInCircularAoE","exportIndex":490,"name":"isInCircularAoE","kind":"re-export","signature":"isInCircularAoE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0491:isInConeAoE","exportIndex":491,"name":"isInConeAoE","kind":"re-export","signature":"isInConeAoE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0492:isInMeleeArc","exportIndex":492,"name":"isInMeleeArc","kind":"re-export","signature":"isInMeleeArc","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0493:isInMeleeArc3D","exportIndex":493,"name":"isInMeleeArc3D","kind":"re-export","signature":"isInMeleeArc3D","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0494:isSuppressed","exportIndex":494,"name":"isSuppressed","kind":"re-export","signature":"isSuppressed","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0495:isWithinRange","exportIndex":495,"name":"isWithinRange","kind":"re-export","signature":"isWithinRange","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0496:isWorkTime","exportIndex":496,"name":"isWorkTime","kind":"re-export","signature":"isWorkTime","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0497:linearCurve","exportIndex":497,"name":"linearCurve","kind":"re-export","signature":"linearCurve","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0498:logisticCurve","exportIndex":498,"name":"logisticCurve","kind":"re-export","signature":"logisticCurve","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0499:modifyPlayerReputation","exportIndex":499,"name":"modifyPlayerReputation","kind":"re-export","signature":"modifyPlayerReputation","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0500:modifyValue","exportIndex":500,"name":"modifyValue","kind":"re-export","signature":"modifyValue","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0501:moraleCheck","exportIndex":501,"name":"moraleCheck","kind":"re-export","signature":"moraleCheck","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0502:moveFormation","exportIndex":502,"name":"moveFormation","kind":"re-export","signature":"moveFormation","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0503:npcFireWeapon","exportIndex":503,"name":"npcFireWeapon","kind":"re-export","signature":"npcFireWeapon","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0504:npcMeleeAttack","exportIndex":504,"name":"npcMeleeAttack","kind":"re-export","signature":"npcMeleeAttack","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0505:pcgHash","exportIndex":505,"name":"pcgHash","kind":"re-export","signature":"pcgHash","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0506:planSuppressionManeuver","exportIndex":506,"name":"planSuppressionManeuver","kind":"re-export","signature":"planSuppressionManeuver","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0507:poolAcquire","exportIndex":507,"name":"poolAcquire","kind":"re-export","signature":"poolAcquire","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0508:poolRelease","exportIndex":508,"name":"poolRelease","kind":"re-export","signature":"poolRelease","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0509:poolReleaseAll","exportIndex":509,"name":"poolReleaseAll","kind":"re-export","signature":"poolReleaseAll","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0510:poolStats","exportIndex":510,"name":"poolStats","kind":"re-export","signature":"poolStats","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0511:practiceSkill","exportIndex":511,"name":"practiceSkill","kind":"re-export","signature":"practiceSkill","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0512:predictiveAim","exportIndex":512,"name":"predictiveAim","kind":"re-export","signature":"predictiveAim","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0513:predictiveAimWithAcceleration","exportIndex":513,"name":"predictiveAimWithAcceleration","kind":"re-export","signature":"predictiveAimWithAcceleration","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0514:processAllyDeath","exportIndex":514,"name":"processAllyDeath","kind":"re-export","signature":"processAllyDeath","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0515:processBarkQueue","exportIndex":515,"name":"processBarkQueue","kind":"re-export","signature":"processBarkQueue","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0516:processDamage","exportIndex":516,"name":"processDamage","kind":"re-export","signature":"processDamage","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0517:processDamageMorale","exportIndex":517,"name":"processDamageMorale","kind":"re-export","signature":"processDamageMorale","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0518:processEnemyDeath","exportIndex":518,"name":"processEnemyDeath","kind":"re-export","signature":"processEnemyDeath","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0519:processNoiseEvent","exportIndex":519,"name":"processNoiseEvent","kind":"re-export","signature":"processNoiseEvent","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0520:processVisualDetection","exportIndex":520,"name":"processVisualDetection","kind":"re-export","signature":"processVisualDetection","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0521:propagateInfluence","exportIndex":521,"name":"propagateInfluence","kind":"re-export","signature":"propagateInfluence","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0522:proposeTreaty","exportIndex":522,"name":"proposeTreaty","kind":"re-export","signature":"proposeTreaty","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0523:pursue","exportIndex":523,"name":"pursue","kind":"re-export","signature":"pursue","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0524:pursueGoal","exportIndex":524,"name":"pursueGoal","kind":"re-export","signature":"pursueGoal","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0525:quadraticCurve","exportIndex":525,"name":"quadraticCurve","kind":"re-export","signature":"quadraticCurve","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0526:queryKnowledge","exportIndex":526,"name":"queryKnowledge","kind":"re-export","signature":"queryKnowledge","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0527:queryRelationships","exportIndex":527,"name":"queryRelationships","kind":"re-export","signature":"queryRelationships","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0528:queueBark","exportIndex":528,"name":"queueBark","kind":"re-export","signature":"queueBark","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0529:radToDeg","exportIndex":529,"name":"radToDeg","kind":"re-export","signature":"radToDeg","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0530:rally","exportIndex":530,"name":"rally","kind":"re-export","signature":"rally","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0531:rayAABBIntersect","exportIndex":531,"name":"rayAABBIntersect","kind":"re-export","signature":"rayAABBIntersect","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0532:raySphereIntersect","exportIndex":532,"name":"raySphereIntersect","kind":"re-export","signature":"raySphereIntersect","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0533:reactToThreat","exportIndex":533,"name":"reactToThreat","kind":"re-export","signature":"reactToThreat","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0534:readbackResults","exportIndex":534,"name":"readbackResults","kind":"re-export","signature":"readbackResults","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0535:recallEpisodesWithEmotion","exportIndex":535,"name":"recallEpisodesWithEmotion","kind":"re-export","signature":"recallEpisodesWithEmotion","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0536:recallEpisodesWithEntity","exportIndex":536,"name":"recallEpisodesWithEntity","kind":"re-export","signature":"recallEpisodesWithEntity","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0537:recallRecentEpisodes","exportIndex":537,"name":"recallRecentEpisodes","kind":"re-export","signature":"recallRecentEpisodes","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0538:recordInteraction","exportIndex":538,"name":"recordInteraction","kind":"re-export","signature":"recordInteraction","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0539:recordWeaponFire","exportIndex":539,"name":"recordWeaponFire","kind":"re-export","signature":"recordWeaponFire","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0540:registerAffix","exportIndex":540,"name":"registerAffix","kind":"re-export","signature":"registerAffix","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0541:registerFaction","exportIndex":541,"name":"registerFaction","kind":"re-export","signature":"registerFaction","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0542:registerItemDef","exportIndex":542,"name":"registerItemDef","kind":"re-export","signature":"registerItemDef","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0543:registerListener","exportIndex":543,"name":"registerListener","kind":"re-export","signature":"registerListener","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0544:registerLootTable","exportIndex":544,"name":"registerLootTable","kind":"re-export","signature":"registerLootTable","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0545:registerNPC","exportIndex":545,"name":"registerNPC","kind":"re-export","signature":"registerNPC","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0546:registerNPCKnowledge","exportIndex":546,"name":"registerNPCKnowledge","kind":"re-export","signature":"registerNPCKnowledge","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0547:registerQuest","exportIndex":547,"name":"registerQuest","kind":"re-export","signature":"registerQuest","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0548:registerRecipe","exportIndex":548,"name":"registerRecipe","kind":"re-export","signature":"registerRecipe","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0549:registerResource","exportIndex":549,"name":"registerResource","kind":"re-export","signature":"registerResource","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0550:registerSmartObject","exportIndex":550,"name":"registerSmartObject","kind":"re-export","signature":"registerSmartObject","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0551:registerSpawnType","exportIndex":551,"name":"registerSpawnType","kind":"re-export","signature":"registerSpawnType","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0552:registerSpecies","exportIndex":552,"name":"registerSpecies","kind":"re-export","signature":"registerSpecies","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0553:registerThreat","exportIndex":553,"name":"registerThreat","kind":"re-export","signature":"registerThreat","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0554:releaseSlot","exportIndex":554,"name":"releaseSlot","kind":"re-export","signature":"releaseSlot","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0555:removeBlackboardValue","exportIndex":555,"name":"removeBlackboardValue","kind":"re-export","signature":"removeBlackboardValue","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0556:removeCreature","exportIndex":556,"name":"removeCreature","kind":"re-export","signature":"removeCreature","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0557:removeCrowdAgent","exportIndex":557,"name":"removeCrowdAgent","kind":"re-export","signature":"removeCrowdAgent","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0558:removeFromFormation","exportIndex":558,"name":"removeFromFormation","kind":"re-export","signature":"removeFromFormation","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0559:removeFromInventory","exportIndex":559,"name":"removeFromInventory","kind":"re-export","signature":"removeFromInventory","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0560:removeFromSquad","exportIndex":560,"name":"removeFromSquad","kind":"re-export","signature":"removeFromSquad","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0561:removeGridLayer","exportIndex":561,"name":"removeGridLayer","kind":"re-export","signature":"removeGridLayer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0562:removeThreat","exportIndex":562,"name":"removeThreat","kind":"re-export","signature":"removeThreat","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0563:reportQuestEvent","exportIndex":563,"name":"reportQuestEvent","kind":"re-export","signature":"reportQuestEvent","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0564:reportSpawnKilled","exportIndex":564,"name":"reportSpawnKilled","kind":"re-export","signature":"reportSpawnKilled","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0565:reservePath","exportIndex":565,"name":"reservePath","kind":"re-export","signature":"reservePath","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0566:reserveSlot","exportIndex":566,"name":"reserveSlot","kind":"re-export","signature":"reserveSlot","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0567:resetNode","exportIndex":567,"name":"resetNode","kind":"re-export","signature":"resetNode","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0568:resolveCircularAoE","exportIndex":568,"name":"resolveCircularAoE","kind":"re-export","signature":"resolveCircularAoE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0569:resolveConeAoE","exportIndex":569,"name":"resolveConeAoE","kind":"re-export","signature":"resolveConeAoE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0570:rollLootTable","exportIndex":570,"name":"rollLootTable","kind":"re-export","signature":"rollLootTable","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0571:rollRarity","exportIndex":571,"name":"rollRarity","kind":"re-export","signature":"rollRarity","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0572:sampleCombinedInfluence","exportIndex":572,"name":"sampleCombinedInfluence","kind":"re-export","signature":"sampleCombinedInfluence","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0573:satisfyNeed","exportIndex":573,"name":"satisfyNeed","kind":"re-export","signature":"satisfyNeed","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0574:satisfyPsychNeed","exportIndex":574,"name":"satisfyPsychNeed","kind":"re-export","signature":"satisfyPsychNeed","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0575:scheduleEvent","exportIndex":575,"name":"scheduleEvent","kind":"re-export","signature":"scheduleEvent","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0576:scoreAction","exportIndex":576,"name":"scoreAction","kind":"re-export","signature":"scoreAction","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0577:scoreActionByValues","exportIndex":577,"name":"scoreActionByValues","kind":"re-export","signature":"scoreActionByValues","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0578:scoreActivity","exportIndex":578,"name":"scoreActivity","kind":"re-export","signature":"scoreActivity","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0579:scoreCoverPoint","exportIndex":579,"name":"scoreCoverPoint","kind":"re-export","signature":"scoreCoverPoint","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0580:searchEpisodes","exportIndex":580,"name":"searchEpisodes","kind":"re-export","signature":"searchEpisodes","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0581:seek","exportIndex":581,"name":"seek","kind":"re-export","signature":"seek","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0582:selectActionBucketed","exportIndex":582,"name":"selectActionBucketed","kind":"re-export","signature":"selectActionBucketed","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0583:selectActionWeighted","exportIndex":583,"name":"selectActionWeighted","kind":"re-export","signature":"selectActionWeighted","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0584:selectActivity","exportIndex":584,"name":"selectActivity","kind":"re-export","signature":"selectActivity","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0585:selectBestAction","exportIndex":585,"name":"selectBestAction","kind":"re-export","signature":"selectBestAction","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0586:selectBestWeapon","exportIndex":586,"name":"selectBestWeapon","kind":"re-export","signature":"selectBestWeapon","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0587:selectChoice","exportIndex":587,"name":"selectChoice","kind":"re-export","signature":"selectChoice","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0588:selectTarget","exportIndex":588,"name":"selectTarget","kind":"re-export","signature":"selectTarget","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0589:sellToMarket","exportIndex":589,"name":"sellToMarket","kind":"re-export","signature":"sellToMarket","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0590:senseDanger","exportIndex":590,"name":"senseDanger","kind":"re-export","signature":"senseDanger","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0591:senseVibrations","exportIndex":591,"name":"senseVibrations","kind":"re-export","signature":"senseVibrations","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0592:separation","exportIndex":592,"name":"separation","kind":"re-export","signature":"separation","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0593:setAIRngContext","exportIndex":593,"name":"setAIRngContext","kind":"re-export","signature":"setAIRngContext","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0594:setBlackboardValue","exportIndex":594,"name":"setBlackboardValue","kind":"re-export","signature":"setBlackboardValue","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0595:setCellWalkable","exportIndex":595,"name":"setCellWalkable","kind":"re-export","signature":"setCellWalkable","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0596:setDialogueFlag","exportIndex":596,"name":"setDialogueFlag","kind":"re-export","signature":"setDialogueFlag","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0597:setDiplomaticStance","exportIndex":597,"name":"setDiplomaticStance","kind":"re-export","signature":"setDiplomaticStance","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0598:setFlowDirection","exportIndex":598,"name":"setFlowDirection","kind":"re-export","signature":"setFlowDirection","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0599:setFocus","exportIndex":599,"name":"setFocus","kind":"re-export","signature":"setFocus","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0600:setInfluenceAt","exportIndex":600,"name":"setInfluenceAt","kind":"re-export","signature":"setInfluenceAt","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0601:setStrafeDirection","exportIndex":601,"name":"setStrafeDirection","kind":"re-export","signature":"setStrafeDirection","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0602:setTerrainHeight","exportIndex":602,"name":"setTerrainHeight","kind":"re-export","signature":"setTerrainHeight","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0603:setTerrainType","exportIndex":603,"name":"setTerrainType","kind":"re-export","signature":"setTerrainType","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0604:setValue","exportIndex":604,"name":"setValue","kind":"re-export","signature":"setValue","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0605:setVehiclePath","exportIndex":605,"name":"setVehiclePath","kind":"re-export","signature":"setVehiclePath","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0606:shareKnowledge","exportIndex":606,"name":"shareKnowledge","kind":"re-export","signature":"shareKnowledge","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0607:shareTeamInfo","exportIndex":607,"name":"shareTeamInfo","kind":"re-export","signature":"shareTeamInfo","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0608:shouldBeAggressive","exportIndex":608,"name":"shouldBeAggressive","kind":"re-export","signature":"shouldBeAggressive","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0609:shouldFlee","exportIndex":609,"name":"shouldFlee","kind":"re-export","signature":"shouldFlee","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0610:shouldSeekCover","exportIndex":610,"name":"shouldSeekCover","kind":"re-export","signature":"shouldSeekCover","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0611:shouldSurrender","exportIndex":611,"name":"shouldSurrender","kind":"re-export","signature":"shouldSurrender","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0612:shouldUseGPURaycast","exportIndex":612,"name":"shouldUseGPURaycast","kind":"re-export","signature":"shouldUseGPURaycast","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0613:smellAt","exportIndex":613,"name":"smellAt","kind":"re-export","signature":"smellAt","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0614:smoothstepCurve","exportIndex":614,"name":"smoothstepCurve","kind":"re-export","signature":"smoothstepCurve","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0615:spatialHashClear","exportIndex":615,"name":"spatialHashClear","kind":"re-export","signature":"spatialHashClear","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0616:spatialHashCount","exportIndex":616,"name":"spatialHashCount","kind":"re-export","signature":"spatialHashCount","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0617:spatialHashInsert","exportIndex":617,"name":"spatialHashInsert","kind":"re-export","signature":"spatialHashInsert","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0618:spatialHashKNearest","exportIndex":618,"name":"spatialHashKNearest","kind":"re-export","signature":"spatialHashKNearest","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0619:spatialHashQueryAABB","exportIndex":619,"name":"spatialHashQueryAABB","kind":"re-export","signature":"spatialHashQueryAABB","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0620:spatialHashQueryRadius","exportIndex":620,"name":"spatialHashQueryRadius","kind":"re-export","signature":"spatialHashQueryRadius","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0621:spatialHashQueryRadius2D","exportIndex":621,"name":"spatialHashQueryRadius2D","kind":"re-export","signature":"spatialHashQueryRadius2D","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0622:spatialHashRebuild","exportIndex":622,"name":"spatialHashRebuild","kind":"re-export","signature":"spatialHashRebuild","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0623:spatialHashRemove","exportIndex":623,"name":"spatialHashRemove","kind":"re-export","signature":"spatialHashRemove","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0624:spatialHashUpdate","exportIndex":624,"name":"spatialHashUpdate","kind":"re-export","signature":"spatialHashUpdate","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0625:spawnCreature","exportIndex":625,"name":"spawnCreature","kind":"re-export","signature":"spawnCreature","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0626:spreadKnowledge","exportIndex":626,"name":"spreadKnowledge","kind":"re-export","signature":"spreadKnowledge","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0627:stampInfluence","exportIndex":627,"name":"stampInfluence","kind":"re-export","signature":"stampInfluence","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0628:startConversation","exportIndex":628,"name":"startConversation","kind":"re-export","signature":"startConversation","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0629:startDodge","exportIndex":629,"name":"startDodge","kind":"re-export","signature":"startDodge","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0630:startMeleeAttack","exportIndex":630,"name":"startMeleeAttack","kind":"re-export","signature":"startMeleeAttack","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0631:startPeek","exportIndex":631,"name":"startPeek","kind":"re-export","signature":"startPeek","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0632:stepCurve","exportIndex":632,"name":"stepCurve","kind":"re-export","signature":"stepCurve","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0633:storeBelief","exportIndex":633,"name":"storeBelief","kind":"re-export","signature":"storeBelief","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0634:storeEpisode","exportIndex":634,"name":"storeEpisode","kind":"re-export","signature":"storeEpisode","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0635:storeFact","exportIndex":635,"name":"storeFact","kind":"re-export","signature":"storeFact","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0636:storeRelationship","exportIndex":636,"name":"storeRelationship","kind":"re-export","signature":"storeRelationship","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0637:sweepMeleeArc","exportIndex":637,"name":"sweepMeleeArc","kind":"re-export","signature":"sweepMeleeArc","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0638:sweptSphereSphere","exportIndex":638,"name":"sweptSphereSphere","kind":"re-export","signature":"sweptSphereSphere","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0639:sweptSphereSphereMoving","exportIndex":639,"name":"sweptSphereSphereMoving","kind":"re-export","signature":"sweptSphereSphereMoving","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0640:terrainCellToWorld","exportIndex":640,"name":"terrainCellToWorld","kind":"re-export","signature":"terrainCellToWorld","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0641:tickNode","exportIndex":641,"name":"tickNode","kind":"re-export","signature":"tickNode","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0642:tickTree","exportIndex":642,"name":"tickTree","kind":"re-export","signature":"tickTree","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0643:triggerEvacuation","exportIndex":643,"name":"triggerEvacuation","kind":"re-export","signature":"triggerEvacuation","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0644:triggerPanic","exportIndex":644,"name":"triggerPanic","kind":"re-export","signature":"triggerPanic","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0645:turnInQuest","exportIndex":645,"name":"turnInQuest","kind":"re-export","signature":"turnInQuest","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0646:unregisterNPC","exportIndex":646,"name":"unregisterNPC","kind":"re-export","signature":"unregisterNPC","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0647:updateAIAimingSystem","exportIndex":647,"name":"updateAIAimingSystem","kind":"re-export","signature":"updateAIAimingSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0648:updateAIDirector","exportIndex":648,"name":"updateAIDirector","kind":"re-export","signature":"updateAIDirector","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0649:updateAllyInfluence","exportIndex":649,"name":"updateAllyInfluence","kind":"re-export","signature":"updateAllyInfluence","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0650:updateAvailableQuests","exportIndex":650,"name":"updateAvailableQuests","kind":"re-export","signature":"updateAvailableQuests","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0651:updateBeamTracking","exportIndex":651,"name":"updateBeamTracking","kind":"re-export","signature":"updateBeamTracking","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0652:updateCharacterState","exportIndex":652,"name":"updateCharacterState","kind":"re-export","signature":"updateCharacterState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0653:updateCoverState","exportIndex":653,"name":"updateCoverState","kind":"re-export","signature":"updateCoverState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0654:updateCreature","exportIndex":654,"name":"updateCreature","kind":"re-export","signature":"updateCreature","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0655:updateCrowd","exportIndex":655,"name":"updateCrowd","kind":"re-export","signature":"updateCrowd","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0656:updateDifficulty","exportIndex":656,"name":"updateDifficulty","kind":"re-export","signature":"updateDifficulty","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0657:updateEconomy","exportIndex":657,"name":"updateEconomy","kind":"re-export","signature":"updateEconomy","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0658:updateEcosystem","exportIndex":658,"name":"updateEcosystem","kind":"re-export","signature":"updateEcosystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0659:updateEnvironmentReadings","exportIndex":659,"name":"updateEnvironmentReadings","kind":"re-export","signature":"updateEnvironmentReadings","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0660:updateEvasion","exportIndex":660,"name":"updateEvasion","kind":"re-export","signature":"updateEvasion","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0661:updateEvents","exportIndex":661,"name":"updateEvents","kind":"re-export","signature":"updateEvents","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0662:updateFormationMovement","exportIndex":662,"name":"updateFormationMovement","kind":"re-export","signature":"updateFormationMovement","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0663:updateGoalProgress","exportIndex":663,"name":"updateGoalProgress","kind":"re-export","signature":"updateGoalProgress","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0664:updateGrenade","exportIndex":664,"name":"updateGrenade","kind":"re-export","signature":"updateGrenade","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0665:updateInteraction","exportIndex":665,"name":"updateInteraction","kind":"re-export","signature":"updateInteraction","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0666:updateKnowledgePropagation","exportIndex":666,"name":"updateKnowledgePropagation","kind":"re-export","signature":"updateKnowledgePropagation","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0667:updateListenerPosition","exportIndex":667,"name":"updateListenerPosition","kind":"re-export","signature":"updateListenerPosition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0668:updateMarketPrices","exportIndex":668,"name":"updateMarketPrices","kind":"re-export","signature":"updateMarketPrices","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0669:updateMeleeAttack","exportIndex":669,"name":"updateMeleeAttack","kind":"re-export","signature":"updateMeleeAttack","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0670:updateMorale","exportIndex":670,"name":"updateMorale","kind":"re-export","signature":"updateMorale","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0671:updateMoraleContext","exportIndex":671,"name":"updateMoraleContext","kind":"re-export","signature":"updateMoraleContext","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0672:updateNeeds","exportIndex":672,"name":"updateNeeds","kind":"re-export","signature":"updateNeeds","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0673:updateObjectiveProgress","exportIndex":673,"name":"updateObjectiveProgress","kind":"re-export","signature":"updateObjectiveProgress","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0674:updatePacing","exportIndex":674,"name":"updatePacing","kind":"re-export","signature":"updatePacing","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0675:updatePerception","exportIndex":675,"name":"updatePerception","kind":"re-export","signature":"updatePerception","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0676:updatePlayerPosition","exportIndex":676,"name":"updatePlayerPosition","kind":"re-export","signature":"updatePlayerPosition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0677:updatePlayerState","exportIndex":677,"name":"updatePlayerState","kind":"re-export","signature":"updatePlayerState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0678:updateProductionBuilding","exportIndex":678,"name":"updateProductionBuilding","kind":"re-export","signature":"updateProductionBuilding","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0679:updateProjectile","exportIndex":679,"name":"updateProjectile","kind":"re-export","signature":"updateProjectile","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0680:updateScentSystem","exportIndex":680,"name":"updateScentSystem","kind":"re-export","signature":"updateScentSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0681:updateScheduler","exportIndex":681,"name":"updateScheduler","kind":"re-export","signature":"updateScheduler","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0682:updateSoundSystem","exportIndex":682,"name":"updateSoundSystem","kind":"re-export","signature":"updateSoundSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0683:updateSpawnDirector","exportIndex":683,"name":"updateSpawnDirector","kind":"re-export","signature":"updateSpawnDirector","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0684:updateSquadFormations","exportIndex":684,"name":"updateSquadFormations","kind":"re-export","signature":"updateSquadFormations","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0685:updateSquadTactics","exportIndex":685,"name":"updateSquadTactics","kind":"re-export","signature":"updateSquadTactics","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0686:updateSteering","exportIndex":686,"name":"updateSteering","kind":"re-export","signature":"updateSteering","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0687:updateStrafe","exportIndex":687,"name":"updateStrafe","kind":"re-export","signature":"updateStrafe","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0688:updateTargetMemory","exportIndex":688,"name":"updateTargetMemory","kind":"re-export","signature":"updateTargetMemory","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0689:updateThreatInfluence","exportIndex":689,"name":"updateThreatInfluence","kind":"re-export","signature":"updateThreatInfluence","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0690:updateTrafficSystem","exportIndex":690,"name":"updateTrafficSystem","kind":"re-export","signature":"updateTrafficSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0691:updateUtilityBrain","exportIndex":691,"name":"updateUtilityBrain","kind":"re-export","signature":"updateUtilityBrain","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0692:updateVehicleAI","exportIndex":692,"name":"updateVehicleAI","kind":"re-export","signature":"updateVehicleAI","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0693:updateVehiclePhysics","exportIndex":693,"name":"updateVehiclePhysics","kind":"re-export","signature":"updateVehiclePhysics","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0694:updateWeather","exportIndex":694,"name":"updateWeather","kind":"re-export","signature":"updateWeather","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0695:updateWorldState","exportIndex":695,"name":"updateWorldState","kind":"re-export","signature":"updateWorldState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0696:uploadAABBTargets","exportIndex":696,"name":"uploadAABBTargets","kind":"re-export","signature":"uploadAABBTargets","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0697:uploadRays","exportIndex":697,"name":"uploadRays","kind":"re-export","signature":"uploadRays","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0698:uploadSphereTargets","exportIndex":698,"name":"uploadSphereTargets","kind":"re-export","signature":"uploadSphereTargets","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0699:validatePerception","exportIndex":699,"name":"validatePerception","kind":"re-export","signature":"validatePerception","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0700:validatePersonality","exportIndex":700,"name":"validatePersonality","kind":"re-export","signature":"validatePersonality","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0701:validateSteeringAgent","exportIndex":701,"name":"validateSteeringAgent","kind":"re-export","signature":"validateSteeringAgent","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0702:valuesPositively","exportIndex":702,"name":"valuesPositively","kind":"re-export","signature":"valuesPositively","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0703:wander","exportIndex":703,"name":"wander","kind":"re-export","signature":"wander","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0704:willHelp","exportIndex":704,"name":"willHelp","kind":"re-export","signature":"willHelp","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0705:workingMemoryPush","exportIndex":705,"name":"workingMemoryPush","kind":"re-export","signature":"workingMemoryPush","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0706:worldToGrid","exportIndex":706,"name":"worldToGrid","kind":"re-export","signature":"worldToGrid","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0707:worldToInfluenceCell","exportIndex":707,"name":"worldToInfluenceCell","kind":"re-export","signature":"worldToInfluenceCell","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0708:worldToTerrainCell","exportIndex":708,"name":"worldToTerrainCell","kind":"re-export","signature":"worldToTerrainCell","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/ai/index.md","moduleTitle":"sim/ai/index","source":"engine/sim/ai/index.js","import":"/engine/sim/ai/index.js","sourceHash":"607ef48d8b7e58bf87dd4162a2fbfca5f56b666eb834b30695e65862c7031f11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/ai/index.js#0709:wouldDoAction","exportIndex":709,"name":"wouldDoAction","kind":"re-export","signature":"wouldDoAction","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/cloth/ClothSimWorld.md","moduleTitle":"sim/cloth/ClothSimWorld","source":"engine/sim/cloth/ClothSimWorld.js","import":"/engine/sim/cloth/ClothSimWorld.js","sourceHash":"6d164b298bf0832b0451a7aafb33e8c3d98de0d3e19b1423bd5ec6743d47577d","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/cloth/ClothSimWorld.js","title":"sim/cloth/ClothSimWorld","summary":"","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/sim/cloth/ClothSimWorld.md","moduleTitle":"sim/cloth/ClothSimWorld","source":"engine/sim/cloth/ClothSimWorld.js","import":"/engine/sim/cloth/ClothSimWorld.js","sourceHash":"6d164b298bf0832b0451a7aafb33e8c3d98de0d3e19b1423bd5ec6743d47577d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/cloth/ClothSimWorld.js#0000:createClothSimWorld","exportIndex":0,"name":"createClothSimWorld","kind":"function","signature":"createClothSimWorld(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/cloth/ClothSimWorld.md","moduleTitle":"sim/cloth/ClothSimWorld","source":"engine/sim/cloth/ClothSimWorld.js","import":"/engine/sim/cloth/ClothSimWorld.js","sourceHash":"6d164b298bf0832b0451a7aafb33e8c3d98de0d3e19b1423bd5ec6743d47577d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/cloth/ClothSimWorld.js#0001:destroyClothSimWorld","exportIndex":1,"name":"destroyClothSimWorld","kind":"function","signature":"destroyClothSimWorld(world)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/cloth/ClothSimWorld.md","moduleTitle":"sim/cloth/ClothSimWorld","source":"engine/sim/cloth/ClothSimWorld.js","import":"/engine/sim/cloth/ClothSimWorld.js","sourceHash":"6d164b298bf0832b0451a7aafb33e8c3d98de0d3e19b1423bd5ec6743d47577d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/cloth/ClothSimWorld.js#0002:addClothInstance","exportIndex":2,"name":"addClothInstance","kind":"function","signature":"addClothInstance(world, descriptor)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/cloth/ClothSimWorld.md","moduleTitle":"sim/cloth/ClothSimWorld","source":"engine/sim/cloth/ClothSimWorld.js","import":"/engine/sim/cloth/ClothSimWorld.js","sourceHash":"6d164b298bf0832b0451a7aafb33e8c3d98de0d3e19b1423bd5ec6743d47577d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/cloth/ClothSimWorld.js#0003:removeClothInstance","exportIndex":3,"name":"removeClothInstance","kind":"function","signature":"removeClothInstance(world, instanceId)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/cloth/ClothSimWorld.md","moduleTitle":"sim/cloth/ClothSimWorld","source":"engine/sim/cloth/ClothSimWorld.js","import":"/engine/sim/cloth/ClothSimWorld.js","sourceHash":"6d164b298bf0832b0451a7aafb33e8c3d98de0d3e19b1423bd5ec6743d47577d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/cloth/ClothSimWorld.js#0004:stepClothSimWorld","exportIndex":4,"name":"stepClothSimWorld","kind":"function","signature":"stepClothSimWorld(world, deltaSeconds, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/cloth/ClothSimWorld.md","moduleTitle":"sim/cloth/ClothSimWorld","source":"engine/sim/cloth/ClothSimWorld.js","import":"/engine/sim/cloth/ClothSimWorld.js","sourceHash":"6d164b298bf0832b0451a7aafb33e8c3d98de0d3e19b1423bd5ec6743d47577d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/cloth/ClothSimWorld.js#0005:getClothInstanceRenderData","exportIndex":5,"name":"getClothInstanceRenderData","kind":"function","signature":"getClothInstanceRenderData(world, instanceId)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FDTDSolver.md","moduleTitle":"sim/fluids/FDTDSolver","source":"engine/sim/fluids/FDTDSolver.js","import":"/engine/sim/fluids/FDTDSolver.js","sourceHash":"01adf43e7c4d726151478071d8074a86ece5883450f2723d34a6022ec08be1e3","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/fluids/FDTDSolver.js","title":"sim/fluids/FDTDSolver","summary":"Yee cell field components Staggered grid: E at integers, H at half-integers","exportCount":8}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FDTDSolver.md","moduleTitle":"sim/fluids/FDTDSolver","source":"engine/sim/fluids/FDTDSolver.js","import":"/engine/sim/fluids/FDTDSolver.js","sourceHash":"01adf43e7c4d726151478071d8074a86ece5883450f2723d34a6022ec08be1e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FDTDSolver.js#0000:YeeCell","exportIndex":0,"name":"YeeCell","kind":"class","signature":"class YeeCell","summary":"Yee cell field components Staggered grid: E at integers, H at half-integers"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FDTDSolver.md","moduleTitle":"sim/fluids/FDTDSolver","source":"engine/sim/fluids/FDTDSolver.js","import":"/engine/sim/fluids/FDTDSolver.js","sourceHash":"01adf43e7c4d726151478071d8074a86ece5883450f2723d34a6022ec08be1e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FDTDSolver.js#0001:TimeVaryingMaterial","exportIndex":1,"name":"TimeVaryingMaterial","kind":"class","signature":"class TimeVaryingMaterial","summary":"Time-varying material properties"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FDTDSolver.md","moduleTitle":"sim/fluids/FDTDSolver","source":"engine/sim/fluids/FDTDSolver.js","import":"/engine/sim/fluids/FDTDSolver.js","sourceHash":"01adf43e7c4d726151478071d8074a86ece5883450f2723d34a6022ec08be1e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FDTDSolver.js#0002:FDTDSource","exportIndex":2,"name":"FDTDSource","kind":"class","signature":"class FDTDSource","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FDTDSolver.md","moduleTitle":"sim/fluids/FDTDSolver","source":"engine/sim/fluids/FDTDSolver.js","import":"/engine/sim/fluids/FDTDSolver.js","sourceHash":"01adf43e7c4d726151478071d8074a86ece5883450f2723d34a6022ec08be1e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FDTDSolver.js#0003:FDTDSolver","exportIndex":3,"name":"FDTDSolver","kind":"class","signature":"class FDTDSolver","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FDTDSolver.md","moduleTitle":"sim/fluids/FDTDSolver","source":"engine/sim/fluids/FDTDSolver.js","import":"/engine/sim/fluids/FDTDSolver.js","sourceHash":"01adf43e7c4d726151478071d8074a86ece5883450f2723d34a6022ec08be1e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FDTDSolver.js#0004:PHYSICS","exportIndex":4,"name":"PHYSICS","kind":"constant","signature":"PHYSICS","summary":"Physical constants"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FDTDSolver.md","moduleTitle":"sim/fluids/FDTDSolver","source":"engine/sim/fluids/FDTDSolver.js","import":"/engine/sim/fluids/FDTDSolver.js","sourceHash":"01adf43e7c4d726151478071d8074a86ece5883450f2723d34a6022ec08be1e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FDTDSolver.js#0005:MaterialType","exportIndex":5,"name":"MaterialType","kind":"constant","signature":"MaterialType","summary":"Material types"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FDTDSolver.md","moduleTitle":"sim/fluids/FDTDSolver","source":"engine/sim/fluids/FDTDSolver.js","import":"/engine/sim/fluids/FDTDSolver.js","sourceHash":"01adf43e7c4d726151478071d8074a86ece5883450f2723d34a6022ec08be1e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FDTDSolver.js#0006:BoundaryCondition","exportIndex":6,"name":"BoundaryCondition","kind":"constant","signature":"BoundaryCondition","summary":"Boundary conditions"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FDTDSolver.md","moduleTitle":"sim/fluids/FDTDSolver","source":"engine/sim/fluids/FDTDSolver.js","import":"/engine/sim/fluids/FDTDSolver.js","sourceHash":"01adf43e7c4d726151478071d8074a86ece5883450f2723d34a6022ec08be1e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FDTDSolver.js#0007:SourceType","exportIndex":7,"name":"SourceType","kind":"constant","signature":"SourceType","summary":"Source types"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidBoundary.md","moduleTitle":"sim/fluids/FluidBoundary","source":"engine/sim/fluids/FluidBoundary.js","import":"/engine/sim/fluids/FluidBoundary.js","sourceHash":"b26f5abe060c42247dec6134be23f2bdeb0207c22dc9bc350d68c577bb55e6fe","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/fluids/FluidBoundary.js","title":"sim/fluids/FluidBoundary","summary":"Generate WGSL shader for applying solid boundaries to velocity This should run after the pressure projection step","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidBoundary.md","moduleTitle":"sim/fluids/FluidBoundary","source":"engine/sim/fluids/FluidBoundary.js","import":"/engine/sim/fluids/FluidBoundary.js","sourceHash":"b26f5abe060c42247dec6134be23f2bdeb0207c22dc9bc350d68c577bb55e6fe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidBoundary.js#0000:createBoundaryShader","exportIndex":0,"name":"createBoundaryShader","kind":"function","signature":"createBoundaryShader(workgroupSize = 256)","summary":"Generate WGSL shader for applying solid boundaries to velocity This should run after the pressure projection step"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidBoundary.md","moduleTitle":"sim/fluids/FluidBoundary","source":"engine/sim/fluids/FluidBoundary.js","import":"/engine/sim/fluids/FluidBoundary.js","sourceHash":"b26f5abe060c42247dec6134be23f2bdeb0207c22dc9bc350d68c577bb55e6fe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidBoundary.js#0001:createPressureSolveWithBoundaryShader","exportIndex":1,"name":"createPressureSolveWithBoundaryShader","kind":"function","signature":"createPressureSolveWithBoundaryShader(workgroupSize = 256)","summary":"Generate WGSL shader for pressure solve with solid boundaries Modifies the Jacobi iteration to handle solid cells"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidBoundary.md","moduleTitle":"sim/fluids/FluidBoundary","source":"engine/sim/fluids/FluidBoundary.js","import":"/engine/sim/fluids/FluidBoundary.js","sourceHash":"b26f5abe060c42247dec6134be23f2bdeb0207c22dc9bc350d68c577bb55e6fe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidBoundary.js#0002:createBoundaryPipeline","exportIndex":2,"name":"createBoundaryPipeline","kind":"function","signature":"createBoundaryPipeline(device, options = {})","summary":"Create boundary enforcement pipeline"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidBoundary.md","moduleTitle":"sim/fluids/FluidBoundary","source":"engine/sim/fluids/FluidBoundary.js","import":"/engine/sim/fluids/FluidBoundary.js","sourceHash":"b26f5abe060c42247dec6134be23f2bdeb0207c22dc9bc350d68c577bb55e6fe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidBoundary.js#0003:applyBoundaries","exportIndex":3,"name":"applyBoundaries","kind":"function","signature":"applyBoundaries(encoder, config)","summary":"Apply solid boundaries to velocity field"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidConfig.md","moduleTitle":"sim/fluids/FluidConfig","source":"engine/sim/fluids/FluidConfig.js","import":"/engine/sim/fluids/FluidConfig.js","sourceHash":"31bce74b2726dd1c8e25465dbcb6b588f98c95e9130192517ed24ba9946397b5","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/fluids/FluidConfig.js","title":"sim/fluids/FluidConfig","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidConfig.md","moduleTitle":"sim/fluids/FluidConfig","source":"engine/sim/fluids/FluidConfig.js","import":"/engine/sim/fluids/FluidConfig.js","sourceHash":"31bce74b2726dd1c8e25465dbcb6b588f98c95e9130192517ed24ba9946397b5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidConfig.js#0000:normalizeFluidGridSize","exportIndex":0,"name":"normalizeFluidGridSize","kind":"function","signature":"normalizeFluidGridSize(input)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidConfig.md","moduleTitle":"sim/fluids/FluidConfig","source":"engine/sim/fluids/FluidConfig.js","import":"/engine/sim/fluids/FluidConfig.js","sourceHash":"31bce74b2726dd1c8e25465dbcb6b588f98c95e9130192517ed24ba9946397b5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidConfig.js#0001:DEFAULT_FLUID_GRID_SIZE","exportIndex":1,"name":"DEFAULT_FLUID_GRID_SIZE","kind":"constant","signature":"DEFAULT_FLUID_GRID_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidCpuWorld.md","moduleTitle":"sim/fluids/FluidCpuWorld","source":"engine/sim/fluids/FluidCpuWorld.js","import":"/engine/sim/fluids/FluidCpuWorld.js","sourceHash":"10ab03c7926992cfce74e481fbe7bed3a2b8255108a5a0ea9d285766fae6c136","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/fluids/FluidCpuWorld.js","title":"sim/fluids/FluidCpuWorld","summary":"","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidCpuWorld.md","moduleTitle":"sim/fluids/FluidCpuWorld","source":"engine/sim/fluids/FluidCpuWorld.js","import":"/engine/sim/fluids/FluidCpuWorld.js","sourceHash":"10ab03c7926992cfce74e481fbe7bed3a2b8255108a5a0ea9d285766fae6c136","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidCpuWorld.js#0000:createFluidCpuWorld","exportIndex":0,"name":"createFluidCpuWorld","kind":"function","signature":"createFluidCpuWorld(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidCpuWorld.md","moduleTitle":"sim/fluids/FluidCpuWorld","source":"engine/sim/fluids/FluidCpuWorld.js","import":"/engine/sim/fluids/FluidCpuWorld.js","sourceHash":"10ab03c7926992cfce74e481fbe7bed3a2b8255108a5a0ea9d285766fae6c136","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidCpuWorld.js#0001:destroyFluidCpuWorld","exportIndex":1,"name":"destroyFluidCpuWorld","kind":"function","signature":"destroyFluidCpuWorld(world)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidCpuWorld.md","moduleTitle":"sim/fluids/FluidCpuWorld","source":"engine/sim/fluids/FluidCpuWorld.js","import":"/engine/sim/fluids/FluidCpuWorld.js","sourceHash":"10ab03c7926992cfce74e481fbe7bed3a2b8255108a5a0ea9d285766fae6c136","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidCpuWorld.js#0002:stepFluidCpuWorld","exportIndex":2,"name":"stepFluidCpuWorld","kind":"function","signature":"stepFluidCpuWorld(world, deltaSeconds)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidCpuWorld.md","moduleTitle":"sim/fluids/FluidCpuWorld","source":"engine/sim/fluids/FluidCpuWorld.js","import":"/engine/sim/fluids/FluidCpuWorld.js","sourceHash":"10ab03c7926992cfce74e481fbe7bed3a2b8255108a5a0ea9d285766fae6c136","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidCpuWorld.js#0003:applyFluidSourcesCpu","exportIndex":3,"name":"applyFluidSourcesCpu","kind":"function","signature":"applyFluidSourcesCpu(world, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidMPM.md","moduleTitle":"sim/fluids/FluidMPM","source":"engine/sim/fluids/FluidMPM.js","import":"/engine/sim/fluids/FluidMPM.js","sourceHash":"2ff1934cce0b34f40834e21d8aeeb26bb46a1c0614486838dc7bb7d1642421a8","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/fluids/FluidMPM.js","title":"sim/fluids/FluidMPM","summary":"Create MPM-specific buffers for the fluid simulation","exportCount":10}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidMPM.md","moduleTitle":"sim/fluids/FluidMPM","source":"engine/sim/fluids/FluidMPM.js","import":"/engine/sim/fluids/FluidMPM.js","sourceHash":"2ff1934cce0b34f40834e21d8aeeb26bb46a1c0614486838dc7bb7d1642421a8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidMPM.js#0000:createMPMBuffers","exportIndex":0,"name":"createMPMBuffers","kind":"function","signature":"createMPMBuffers(device, gridSize, maxParticles)","summary":"Create MPM-specific buffers for the fluid simulation"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidMPM.md","moduleTitle":"sim/fluids/FluidMPM","source":"engine/sim/fluids/FluidMPM.js","import":"/engine/sim/fluids/FluidMPM.js","sourceHash":"2ff1934cce0b34f40834e21d8aeeb26bb46a1c0614486838dc7bb7d1642421a8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidMPM.js#0001:destroyMPMBuffers","exportIndex":1,"name":"destroyMPMBuffers","kind":"function","signature":"destroyMPMBuffers(mpm)","summary":"Destroy MPM buffers"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidMPM.md","moduleTitle":"sim/fluids/FluidMPM","source":"engine/sim/fluids/FluidMPM.js","import":"/engine/sim/fluids/FluidMPM.js","sourceHash":"2ff1934cce0b34f40834e21d8aeeb26bb46a1c0614486838dc7bb7d1642421a8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidMPM.js#0002:createP2GShader","exportIndex":2,"name":"createP2GShader","kind":"function","signature":"createP2GShader(workgroupSize = 256)","summary":"Generate the P2G (Particle to Grid) compute shader Uses linear kernel (tent function) for simplicity"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidMPM.md","moduleTitle":"sim/fluids/FluidMPM","source":"engine/sim/fluids/FluidMPM.js","import":"/engine/sim/fluids/FluidMPM.js","sourceHash":"2ff1934cce0b34f40834e21d8aeeb26bb46a1c0614486838dc7bb7d1642421a8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidMPM.js#0003:createGridUpdateShader","exportIndex":3,"name":"createGridUpdateShader","kind":"function","signature":"createGridUpdateShader(workgroupSize = 256)","summary":"Generate the Grid Update compute shader Converts accumulated momentum to velocity, applies forces and boundaries"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidMPM.md","moduleTitle":"sim/fluids/FluidMPM","source":"engine/sim/fluids/FluidMPM.js","import":"/engine/sim/fluids/FluidMPM.js","sourceHash":"2ff1934cce0b34f40834e21d8aeeb26bb46a1c0614486838dc7bb7d1642421a8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidMPM.js#0004:createG2PShader","exportIndex":4,"name":"createG2PShader","kind":"function","signature":"createG2PShader(workgroupSize = 256)","summary":"Generate the G2P (Grid to Particle) compute shader"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidMPM.md","moduleTitle":"sim/fluids/FluidMPM","source":"engine/sim/fluids/FluidMPM.js","import":"/engine/sim/fluids/FluidMPM.js","sourceHash":"2ff1934cce0b34f40834e21d8aeeb26bb46a1c0614486838dc7bb7d1642421a8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidMPM.js#0005:createMPMPipelines","exportIndex":5,"name":"createMPMPipelines","kind":"function","signature":"createMPMPipelines(device, options = {})","summary":"Create MPM compute pipelines"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidMPM.md","moduleTitle":"sim/fluids/FluidMPM","source":"engine/sim/fluids/FluidMPM.js","import":"/engine/sim/fluids/FluidMPM.js","sourceHash":"2ff1934cce0b34f40834e21d8aeeb26bb46a1c0614486838dc7bb7d1642421a8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidMPM.js#0006:createMPMWorld","exportIndex":6,"name":"createMPMWorld","kind":"function","signature":"createMPMWorld(device, options = {})","summary":"Create a complete MPM simulation world"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidMPM.md","moduleTitle":"sim/fluids/FluidMPM","source":"engine/sim/fluids/FluidMPM.js","import":"/engine/sim/fluids/FluidMPM.js","sourceHash":"2ff1934cce0b34f40834e21d8aeeb26bb46a1c0614486838dc7bb7d1642421a8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidMPM.js#0007:destroyMPMWorld","exportIndex":7,"name":"destroyMPMWorld","kind":"function","signature":"destroyMPMWorld(world)","summary":"Destroy MPM world"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidMPM.md","moduleTitle":"sim/fluids/FluidMPM","source":"engine/sim/fluids/FluidMPM.js","import":"/engine/sim/fluids/FluidMPM.js","sourceHash":"2ff1934cce0b34f40834e21d8aeeb26bb46a1c0614486838dc7bb7d1642421a8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidMPM.js#0008:stepMPMWorld","exportIndex":8,"name":"stepMPMWorld","kind":"function","signature":"stepMPMWorld(world, particles, dt, options = {})","summary":"Step the MPM simulation"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidMPM.md","moduleTitle":"sim/fluids/FluidMPM","source":"engine/sim/fluids/FluidMPM.js","import":"/engine/sim/fluids/FluidMPM.js","sourceHash":"2ff1934cce0b34f40834e21d8aeeb26bb46a1c0614486838dc7bb7d1642421a8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidMPM.js#0009:setMPMWorldBounds","exportIndex":9,"name":"setMPMWorldBounds","kind":"function","signature":"setMPMWorldBounds(world, worldMin, worldMax)","summary":"Update MPM world bounds"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidPhaseChange.md","moduleTitle":"sim/fluids/FluidPhaseChange","source":"engine/sim/fluids/FluidPhaseChange.js","import":"/engine/sim/fluids/FluidPhaseChange.js","sourceHash":"2b94f59f3bf52fa9582c3d5f39114a21d9ba4bade7d41504742d6f8defd8299a","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/fluids/FluidPhaseChange.js","title":"sim/fluids/FluidPhaseChange","summary":"Create phase change data structures","exportCount":37}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidPhaseChange.md","moduleTitle":"sim/fluids/FluidPhaseChange","source":"engine/sim/fluids/FluidPhaseChange.js","import":"/engine/sim/fluids/FluidPhaseChange.js","sourceHash":"2b94f59f3bf52fa9582c3d5f39114a21d9ba4bade7d41504742d6f8defd8299a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidPhaseChange.js#0000:createPhaseChangeBuffers","exportIndex":0,"name":"createPhaseChangeBuffers","kind":"function","signature":"createPhaseChangeBuffers(device, gridSize, maxParticles)","summary":"Create phase change data structures"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidPhaseChange.md","moduleTitle":"sim/fluids/FluidPhaseChange","source":"engine/sim/fluids/FluidPhaseChange.js","import":"/engine/sim/fluids/FluidPhaseChange.js","sourceHash":"2b94f59f3bf52fa9582c3d5f39114a21d9ba4bade7d41504742d6f8defd8299a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidPhaseChange.js#0001:createSpellForce","exportIndex":1,"name":"createSpellForce","kind":"function","signature":"createSpellForce(position, direction, power, element)","summary":"Spell force injection point"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidPhaseChange.md","moduleTitle":"sim/fluids/FluidPhaseChange","source":"engine/sim/fluids/FluidPhaseChange.js","import":"/engine/sim/fluids/FluidPhaseChange.js","sourceHash":"2b94f59f3bf52fa9582c3d5f39114a21d9ba4bade7d41504742d6f8defd8299a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidPhaseChange.js#0002:createSpellForceShader","exportIndex":2,"name":"createSpellForceShader","kind":"function","signature":"createSpellForceShader(workgroupSize = 256)","summary":"Generate shader for applying spell forces to fluid"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidPhaseChange.md","moduleTitle":"sim/fluids/FluidPhaseChange","source":"engine/sim/fluids/FluidPhaseChange.js","import":"/engine/sim/fluids/FluidPhaseChange.js","sourceHash":"2b94f59f3bf52fa9582c3d5f39114a21d9ba4bade7d41504742d6f8defd8299a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidPhaseChange.js#0003:createFreezeShader","exportIndex":3,"name":"createFreezeShader","kind":"function","signature":"createFreezeShader(workgroupSize = 256)","summary":"Generate shader for freeze effect (temperature-based phase transition)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidPhaseChange.md","moduleTitle":"sim/fluids/FluidPhaseChange","source":"engine/sim/fluids/FluidPhaseChange.js","import":"/engine/sim/fluids/FluidPhaseChange.js","sourceHash":"2b94f59f3bf52fa9582c3d5f39114a21d9ba4bade7d41504742d6f8defd8299a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidPhaseChange.js#0004:createCrystallizationShader","exportIndex":4,"name":"createCrystallizationShader","kind":"function","signature":"createCrystallizationShader(workgroupSize = 256)","summary":"Generate shader for particle-based crystallization chain reaction Physics-based with latent heat buffer, hysteresis, and asymmetric rates Key concepts from real physics: - Latent heat: Energy absorbed/released during phase change while temp stays constant - Hysteresis: Different thresholds for freezing vs melting (prevents flickering) - Supercooling: Fluid can stay liquid below freezing until nucleation occurs"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidPhaseChange.md","moduleTitle":"sim/fluids/FluidPhaseChange","source":"engine/sim/fluids/FluidPhaseChange.js","import":"/engine/sim/fluids/FluidPhaseChange.js","sourceHash":"2b94f59f3bf52fa9582c3d5f39114a21d9ba4bade7d41504742d6f8defd8299a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidPhaseChange.js#0005:createSolidCollisionShader","exportIndex":5,"name":"createSolidCollisionShader","kind":"function","signature":"createSolidCollisionShader(workgroupSize = 256)","summary":"Generate shader for solid particle collision Frozen particles get rigid collision with world, entities, AND other particles Also handles temperature transfer on contact"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidPhaseChange.md","moduleTitle":"sim/fluids/FluidPhaseChange","source":"engine/sim/fluids/FluidPhaseChange.js","import":"/engine/sim/fluids/FluidPhaseChange.js","sourceHash":"2b94f59f3bf52fa9582c3d5f39114a21d9ba4bade7d41504742d6f8defd8299a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidPhaseChange.js#0006:createCrystalBondShader","exportIndex":6,"name":"createCrystalBondShader","kind":"function","signature":"createCrystalBondShader(workgroupSize = 256)","summary":"Generate shader for crystal bond formation Finds nearby frozen particles and creates rigid bonds between them"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidPhaseChange.md","moduleTitle":"sim/fluids/FluidPhaseChange","source":"engine/sim/fluids/FluidPhaseChange.js","import":"/engine/sim/fluids/FluidPhaseChange.js","sourceHash":"2b94f59f3bf52fa9582c3d5f39114a21d9ba4bade7d41504742d6f8defd8299a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidPhaseChange.js#0007:createBondConstraintShader","exportIndex":7,"name":"createBondConstraintShader","kind":"function","signature":"createBondConstraintShader(workgroupSize = 256)","summary":"Generate shader for bond constraint solving (Position-Based Dynamics) Maintains rigid crystal structure by keeping bonded particles at fixed distances"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidPhaseChange.md","moduleTitle":"sim/fluids/FluidPhaseChange","source":"engine/sim/fluids/FluidPhaseChange.js","import":"/engine/sim/fluids/FluidPhaseChange.js","sourceHash":"2b94f59f3bf52fa9582c3d5f39114a21d9ba4bade7d41504742d6f8defd8299a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidPhaseChange.js#0008:createSolidCollisionPipeline","exportIndex":8,"name":"createSolidCollisionPipeline","kind":"function","signature":"createSolidCollisionPipeline(device, workgroupSize = 256)","summary":"Create compute pipeline for solid particle collision"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidPhaseChange.md","moduleTitle":"sim/fluids/FluidPhaseChange","source":"engine/sim/fluids/FluidPhaseChange.js","import":"/engine/sim/fluids/FluidPhaseChange.js","sourceHash":"2b94f59f3bf52fa9582c3d5f39114a21d9ba4bade7d41504742d6f8defd8299a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidPhaseChange.js#0009:createCrystalBondPipeline","exportIndex":9,"name":"createCrystalBondPipeline","kind":"function","signature":"createCrystalBondPipeline(device, workgroupSize = 256)","summary":"Create compute pipeline for crystal bond formation"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidPhaseChange.md","moduleTitle":"sim/fluids/FluidPhaseChange","source":"engine/sim/fluids/FluidPhaseChange.js","import":"/engine/sim/fluids/FluidPhaseChange.js","sourceHash":"2b94f59f3bf52fa9582c3d5f39114a21d9ba4bade7d41504742d6f8defd8299a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidPhaseChange.js#0010:createBondConstraintPipeline","exportIndex":10,"name":"createBondConstraintPipeline","kind":"function","signature":"createBondConstraintPipeline(device, workgroupSize = 256)","summary":"Create compute pipeline for bond constraint solving"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidPhaseChange.md","moduleTitle":"sim/fluids/FluidPhaseChange","source":"engine/sim/fluids/FluidPhaseChange.js","import":"/engine/sim/fluids/FluidPhaseChange.js","sourceHash":"2b94f59f3bf52fa9582c3d5f39114a21d9ba4bade7d41504742d6f8defd8299a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidPhaseChange.js#0011:stepSolidCollision","exportIndex":11,"name":"stepSolidCollision","kind":"function","signature":"stepSolidCollision(device, collisionPipeline, phaseBuffers, particleWorld, colliderData, roomBounds, dt, options = {})","summary":"Step the solid collision system"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidPhaseChange.md","moduleTitle":"sim/fluids/FluidPhaseChange","source":"engine/sim/fluids/FluidPhaseChange.js","import":"/engine/sim/fluids/FluidPhaseChange.js","sourceHash":"2b94f59f3bf52fa9582c3d5f39114a21d9ba4bade7d41504742d6f8defd8299a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidPhaseChange.js#0012:stepCrystalBonds","exportIndex":12,"name":"stepCrystalBonds","kind":"function","signature":"stepCrystalBonds(device, bondPipeline, phaseBuffers, particleWorld, options = {})","summary":"Step the crystal bond formation system"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidPhaseChange.md","moduleTitle":"sim/fluids/FluidPhaseChange","source":"engine/sim/fluids/FluidPhaseChange.js","import":"/engine/sim/fluids/FluidPhaseChange.js","sourceHash":"2b94f59f3bf52fa9582c3d5f39114a21d9ba4bade7d41504742d6f8defd8299a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidPhaseChange.js#0013:stepBondConstraints","exportIndex":13,"name":"stepBondConstraints","kind":"function","signature":"stepBondConstraints(device, constraintPipeline, phaseBuffers, particleWorld, bondCount, options = {})","summary":"Step the bond constraint solver (PBD) Run multiple iterations for stability"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidPhaseChange.md","moduleTitle":"sim/fluids/FluidPhaseChange","source":"engine/sim/fluids/FluidPhaseChange.js","import":"/engine/sim/fluids/FluidPhaseChange.js","sourceHash":"2b94f59f3bf52fa9582c3d5f39114a21d9ba4bade7d41504742d6f8defd8299a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidPhaseChange.js#0014:readBondCount","exportIndex":14,"name":"readBondCount","kind":"function","signature":"async readBondCount(device, phaseBuffers)","summary":"Read bond count from GPU (async)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidPhaseChange.md","moduleTitle":"sim/fluids/FluidPhaseChange","source":"engine/sim/fluids/FluidPhaseChange.js","import":"/engine/sim/fluids/FluidPhaseChange.js","sourceHash":"2b94f59f3bf52fa9582c3d5f39114a21d9ba4bade7d41504742d6f8defd8299a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidPhaseChange.js#0015:clearBonds","exportIndex":15,"name":"clearBonds","kind":"function","signature":"clearBonds(device, phaseBuffers)","summary":"Clear all bonds (for reset or when spawning rigid body)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidPhaseChange.md","moduleTitle":"sim/fluids/FluidPhaseChange","source":"engine/sim/fluids/FluidPhaseChange.js","import":"/engine/sim/fluids/FluidPhaseChange.js","sourceHash":"2b94f59f3bf52fa9582c3d5f39114a21d9ba4bade7d41504742d6f8defd8299a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidPhaseChange.js#0016:stepCrystalSystem","exportIndex":16,"name":"stepCrystalSystem","kind":"function","signature":"stepCrystalSystem(device, systems, phaseBuffers, particleWorld, colliderData, roomBounds, dt, options = {})","summary":"Full crystal system - combines all steps Call this each frame to handle solidification, collision, bonding, and constraints"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidPhaseChange.md","moduleTitle":"sim/fluids/FluidPhaseChange","source":"engine/sim/fluids/FluidPhaseChange.js","import":"/engine/sim/fluids/FluidPhaseChange.js","sourceHash":"2b94f59f3bf52fa9582c3d5f39114a21d9ba4bade7d41504742d6f8defd8299a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidPhaseChange.js#0017:createCrystalSystemPipelines","exportIndex":17,"name":"createCrystalSystemPipelines","kind":"function","signature":"createCrystalSystemPipelines(device, workgroupSize = 256)","summary":"Create all crystal system pipelines at once"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidPhaseChange.md","moduleTitle":"sim/fluids/FluidPhaseChange","source":"engine/sim/fluids/FluidPhaseChange.js","import":"/engine/sim/fluids/FluidPhaseChange.js","sourceHash":"2b94f59f3bf52fa9582c3d5f39114a21d9ba4bade7d41504742d6f8defd8299a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidPhaseChange.js#0018:extractCrystalClusters","exportIndex":18,"name":"extractCrystalClusters","kind":"function","signature":"async extractCrystalClusters(device, phaseBuffers, particleWorld, minClusterSize = 5)","summary":"Extract connected crystal clusters from bonds for rigid body spawning Uses Union-Find algorithm to identify connected components"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidPhaseChange.md","moduleTitle":"sim/fluids/FluidPhaseChange","source":"engine/sim/fluids/FluidPhaseChange.js","import":"/engine/sim/fluids/FluidPhaseChange.js","sourceHash":"2b94f59f3bf52fa9582c3d5f39114a21d9ba4bade7d41504742d6f8defd8299a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidPhaseChange.js#0019:createSeedInjectionParams","exportIndex":19,"name":"createSeedInjectionParams","kind":"function","signature":"createSeedInjectionParams(position, radius, seedStrength, temperature, magicSaturation)","summary":"Inject seed particles at a position (ice spell impact, magic anchor, etc.)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidPhaseChange.md","moduleTitle":"sim/fluids/FluidPhaseChange","source":"engine/sim/fluids/FluidPhaseChange.js","import":"/engine/sim/fluids/FluidPhaseChange.js","sourceHash":"2b94f59f3bf52fa9582c3d5f39114a21d9ba4bade7d41504742d6f8defd8299a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidPhaseChange.js#0020:createCrystallizationPipeline","exportIndex":20,"name":"createCrystallizationPipeline","kind":"function","signature":"createCrystallizationPipeline(device, workgroupSize = 256)","summary":"Create compute pipeline for crystallization chain reaction"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidPhaseChange.md","moduleTitle":"sim/fluids/FluidPhaseChange","source":"engine/sim/fluids/FluidPhaseChange.js","import":"/engine/sim/fluids/FluidPhaseChange.js","sourceHash":"2b94f59f3bf52fa9582c3d5f39114a21d9ba4bade7d41504742d6f8defd8299a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidPhaseChange.js#0021:stepCrystallization","exportIndex":21,"name":"stepCrystallization","kind":"function","signature":"stepCrystallization(device, crystallization, phaseBuffers, particleWorld, dt, options = {})","summary":"Step the crystallization system - run compute pass to propagate freezing"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidPhaseChange.md","moduleTitle":"sim/fluids/FluidPhaseChange","source":"engine/sim/fluids/FluidPhaseChange.js","import":"/engine/sim/fluids/FluidPhaseChange.js","sourceHash":"2b94f59f3bf52fa9582c3d5f39114a21d9ba4bade7d41504742d6f8defd8299a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidPhaseChange.js#0022:injectFreezeSeeds","exportIndex":22,"name":"injectFreezeSeeds","kind":"function","signature":"injectFreezeSeeds(device, phaseBuffers, particleWorld, seedParams)","summary":"Inject freeze seeds at a world position (for ice spell impact) Affects particles within radius - sets their temp/magic/seed values"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidPhaseChange.md","moduleTitle":"sim/fluids/FluidPhaseChange","source":"engine/sim/fluids/FluidPhaseChange.js","import":"/engine/sim/fluids/FluidPhaseChange.js","sourceHash":"2b94f59f3bf52fa9582c3d5f39114a21d9ba4bade7d41504742d6f8defd8299a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidPhaseChange.js#0023:injectHeatSeeds","exportIndex":23,"name":"injectHeatSeeds","kind":"function","signature":"injectHeatSeeds(device, phaseBuffers, particleWorld, seedParams)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidPhaseChange.md","moduleTitle":"sim/fluids/FluidPhaseChange","source":"engine/sim/fluids/FluidPhaseChange.js","import":"/engine/sim/fluids/FluidPhaseChange.js","sourceHash":"2b94f59f3bf52fa9582c3d5f39114a21d9ba4bade7d41504742d6f8defd8299a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidPhaseChange.js#0024:applyPhaseVisuals","exportIndex":24,"name":"applyPhaseVisuals","kind":"function","signature":"applyPhaseVisuals(device, phaseBuffers, particleWorld, options = {})","summary":"Apply visual effects based on phase state (color frozen particles blue/white) Call this after stepCrystallization to update particle rendering"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidPhaseChange.md","moduleTitle":"sim/fluids/FluidPhaseChange","source":"engine/sim/fluids/FluidPhaseChange.js","import":"/engine/sim/fluids/FluidPhaseChange.js","sourceHash":"2b94f59f3bf52fa9582c3d5f39114a21d9ba4bade7d41504742d6f8defd8299a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidPhaseChange.js#0025:extractFrozenShape","exportIndex":25,"name":"extractFrozenShape","kind":"function","signature":"async extractFrozenShape(device, phaseChangeBuffers, gridSize, worldMin, cellSize)","summary":"Extract frozen region as convex hull for rigid body creation This runs on CPU after GPU freeze pass"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidPhaseChange.md","moduleTitle":"sim/fluids/FluidPhaseChange","source":"engine/sim/fluids/FluidPhaseChange.js","import":"/engine/sim/fluids/FluidPhaseChange.js","sourceHash":"2b94f59f3bf52fa9582c3d5f39114a21d9ba4bade7d41504742d6f8defd8299a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidPhaseChange.js#0026:clearFreezeRegion","exportIndex":26,"name":"clearFreezeRegion","kind":"function","signature":"clearFreezeRegion(device, phaseChangeBuffers)","summary":"Clear freeze region after rigid body is spawned"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidPhaseChange.md","moduleTitle":"sim/fluids/FluidPhaseChange","source":"engine/sim/fluids/FluidPhaseChange.js","import":"/engine/sim/fluids/FluidPhaseChange.js","sourceHash":"2b94f59f3bf52fa9582c3d5f39114a21d9ba4bade7d41504742d6f8defd8299a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidPhaseChange.js#0027:injectMeltedFluid","exportIndex":27,"name":"injectMeltedFluid","kind":"function","signature":"injectMeltedFluid(device, fluidWorld, position, velocity, mass, radius)","summary":"Inject mass/momentum when melting a rigid body"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidPhaseChange.md","moduleTitle":"sim/fluids/FluidPhaseChange","source":"engine/sim/fluids/FluidPhaseChange.js","import":"/engine/sim/fluids/FluidPhaseChange.js","sourceHash":"2b94f59f3bf52fa9582c3d5f39114a21d9ba4bade7d41504742d6f8defd8299a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidPhaseChange.js#0028:destroyPhaseChangeBuffers","exportIndex":28,"name":"destroyPhaseChangeBuffers","kind":"function","signature":"destroyPhaseChangeBuffers(buffers)","summary":"Destroy phase change buffers"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidPhaseChange.md","moduleTitle":"sim/fluids/FluidPhaseChange","source":"engine/sim/fluids/FluidPhaseChange.js","import":"/engine/sim/fluids/FluidPhaseChange.js","sourceHash":"2b94f59f3bf52fa9582c3d5f39114a21d9ba4bade7d41504742d6f8defd8299a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidPhaseChange.js#0029:destroyCrystalSystemPipelines","exportIndex":29,"name":"destroyCrystalSystemPipelines","kind":"function","signature":"destroyCrystalSystemPipelines(systems)","summary":"Destroy crystal system pipelines"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidPhaseChange.md","moduleTitle":"sim/fluids/FluidPhaseChange","source":"engine/sim/fluids/FluidPhaseChange.js","import":"/engine/sim/fluids/FluidPhaseChange.js","sourceHash":"2b94f59f3bf52fa9582c3d5f39114a21d9ba4bade7d41504742d6f8defd8299a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidPhaseChange.js#0030:extractFrozenParticles","exportIndex":30,"name":"extractFrozenParticles","kind":"function","signature":"async extractFrozenParticles(device, phaseBuffer, positionBuffer, particleCount, minClusterSize = 5)","summary":"Extract frozen particle cluster for rigid body spawning Returns particles that are FROZEN phase and form a connected cluster"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidPhaseChange.md","moduleTitle":"sim/fluids/FluidPhaseChange","source":"engine/sim/fluids/FluidPhaseChange.js","import":"/engine/sim/fluids/FluidPhaseChange.js","sourceHash":"2b94f59f3bf52fa9582c3d5f39114a21d9ba4bade7d41504742d6f8defd8299a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidPhaseChange.js#0031:FluidPhase","exportIndex":31,"name":"FluidPhase","kind":"constant","signature":"FluidPhase","summary":"Phase states for fluid cells/particles"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidPhaseChange.md","moduleTitle":"sim/fluids/FluidPhaseChange","source":"engine/sim/fluids/FluidPhaseChange.js","import":"/engine/sim/fluids/FluidPhaseChange.js","sourceHash":"2b94f59f3bf52fa9582c3d5f39114a21d9ba4bade7d41504742d6f8defd8299a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidPhaseChange.js#0032:PARTICLE_PHASE_STRIDE","exportIndex":32,"name":"PARTICLE_PHASE_STRIDE","kind":"constant","signature":"PARTICLE_PHASE_STRIDE","summary":"Particle solidification attributes (per-particle) - temperature: Current temp (ambient ~20, freezing < 0) - magicSaturation: 0-1, how much \"freeze magic\" has accumulated - solidPhase: 0=fluid, 1=freezing, 2=frozen - seedStrength: If > 0, this particle spreads solidification"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidPhaseChange.md","moduleTitle":"sim/fluids/FluidPhaseChange","source":"engine/sim/fluids/FluidPhaseChange.js","import":"/engine/sim/fluids/FluidPhaseChange.js","sourceHash":"2b94f59f3bf52fa9582c3d5f39114a21d9ba4bade7d41504742d6f8defd8299a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidPhaseChange.js#0033:BOND_STRIDE","exportIndex":33,"name":"BOND_STRIDE","kind":"constant","signature":"BOND_STRIDE","summary":"Crystal bond attributes (per-bond) Stores connections between frozen particles forming crystal lattice - particleA: index of first particle - particleB: index of second particle - restDistance: original distance when bond formed (constraint target) - stiffness: bond strength (0-1, higher = more rigid)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidPhaseChange.md","moduleTitle":"sim/fluids/FluidPhaseChange","source":"engine/sim/fluids/FluidPhaseChange.js","import":"/engine/sim/fluids/FluidPhaseChange.js","sourceHash":"2b94f59f3bf52fa9582c3d5f39114a21d9ba4bade7d41504742d6f8defd8299a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidPhaseChange.js#0034:MAX_BONDS_PER_PARTICLE","exportIndex":34,"name":"MAX_BONDS_PER_PARTICLE","kind":"constant","signature":"MAX_BONDS_PER_PARTICLE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidPhaseChange.md","moduleTitle":"sim/fluids/FluidPhaseChange","source":"engine/sim/fluids/FluidPhaseChange.js","import":"/engine/sim/fluids/FluidPhaseChange.js","sourceHash":"2b94f59f3bf52fa9582c3d5f39114a21d9ba4bade7d41504742d6f8defd8299a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidPhaseChange.js#0035:DEFAULT_CRYSTAL_PARAMS","exportIndex":35,"name":"DEFAULT_CRYSTAL_PARAMS","kind":"constant","signature":"DEFAULT_CRYSTAL_PARAMS","summary":"Default crystallization parameters - tuned for fast freeze, slow melt"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidPhaseChange.md","moduleTitle":"sim/fluids/FluidPhaseChange","source":"engine/sim/fluids/FluidPhaseChange.js","import":"/engine/sim/fluids/FluidPhaseChange.js","sourceHash":"2b94f59f3bf52fa9582c3d5f39114a21d9ba4bade7d41504742d6f8defd8299a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidPhaseChange.js#0036:DEFAULT_SOLID_COLLISION_PARAMS","exportIndex":36,"name":"DEFAULT_SOLID_COLLISION_PARAMS","kind":"constant","signature":"DEFAULT_SOLID_COLLISION_PARAMS","summary":"Default solid collision parameters"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidSimWorld.md","moduleTitle":"sim/fluids/FluidSimWorld","source":"engine/sim/fluids/FluidSimWorld.js","import":"/engine/sim/fluids/FluidSimWorld.js","sourceHash":"037697cc4da869262c5332059293f8ff3aa319482908f1b5dc6f9c32daf8251e","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/fluids/FluidSimWorld.js","title":"sim/fluids/FluidSimWorld","summary":"Clear/reset the density and velocity buffers to zero. Use this when bounds change significantly to prevent stale data from appearing at wrong world-space locations.","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidSimWorld.md","moduleTitle":"sim/fluids/FluidSimWorld","source":"engine/sim/fluids/FluidSimWorld.js","import":"/engine/sim/fluids/FluidSimWorld.js","sourceHash":"037697cc4da869262c5332059293f8ff3aa319482908f1b5dc6f9c32daf8251e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidSimWorld.js#0000:createFluidSimWorld","exportIndex":0,"name":"createFluidSimWorld","kind":"function","signature":"async createFluidSimWorld(gpuDevice, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidSimWorld.md","moduleTitle":"sim/fluids/FluidSimWorld","source":"engine/sim/fluids/FluidSimWorld.js","import":"/engine/sim/fluids/FluidSimWorld.js","sourceHash":"037697cc4da869262c5332059293f8ff3aa319482908f1b5dc6f9c32daf8251e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidSimWorld.js#0001:destroyFluidSimWorld","exportIndex":1,"name":"destroyFluidSimWorld","kind":"function","signature":"destroyFluidSimWorld(world)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidSimWorld.md","moduleTitle":"sim/fluids/FluidSimWorld","source":"engine/sim/fluids/FluidSimWorld.js","import":"/engine/sim/fluids/FluidSimWorld.js","sourceHash":"037697cc4da869262c5332059293f8ff3aa319482908f1b5dc6f9c32daf8251e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidSimWorld.js#0002:clearFluidSimWorld","exportIndex":2,"name":"clearFluidSimWorld","kind":"function","signature":"clearFluidSimWorld(world)","summary":"Clear/reset the density and velocity buffers to zero. Use this when bounds change significantly to prevent stale data from appearing at wrong world-space locations."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidSimWorld.md","moduleTitle":"sim/fluids/FluidSimWorld","source":"engine/sim/fluids/FluidSimWorld.js","import":"/engine/sim/fluids/FluidSimWorld.js","sourceHash":"037697cc4da869262c5332059293f8ff3aa319482908f1b5dc6f9c32daf8251e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidSimWorld.js#0003:stepFluidSimWorld","exportIndex":3,"name":"stepFluidSimWorld","kind":"function","signature":"stepFluidSimWorld(world, deltaSeconds, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidSimWorld.md","moduleTitle":"sim/fluids/FluidSimWorld","source":"engine/sim/fluids/FluidSimWorld.js","import":"/engine/sim/fluids/FluidSimWorld.js","sourceHash":"037697cc4da869262c5332059293f8ff3aa319482908f1b5dc6f9c32daf8251e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidSimWorld.js#0004:clearFluidDensity","exportIndex":4,"name":"clearFluidDensity","kind":"function","signature":"clearFluidDensity(world, options = {})","summary":"Clear the density and color buffers to zero. Used in particle-as-smoke mode to reset before splatting particle positions/colors."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidSimWorld.md","moduleTitle":"sim/fluids/FluidSimWorld","source":"engine/sim/fluids/FluidSimWorld.js","import":"/engine/sim/fluids/FluidSimWorld.js","sourceHash":"037697cc4da869262c5332059293f8ff3aa319482908f1b5dc6f9c32daf8251e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidSimWorld.js#0005:initFluidSimWorldLazy","exportIndex":5,"name":"initFluidSimWorldLazy","kind":"function","signature":"async initFluidSimWorldLazy(options)","summary":"Initialize fluid sim world lazily with bind group creation for smoke rendering. This is a convenience function that handles the full setup sequence."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidSimulation.md","moduleTitle":"sim/fluids/FluidSimulation","source":"engine/sim/fluids/FluidSimulation.js","import":"/engine/sim/fluids/FluidSimulation.js","sourceHash":"1fd8b00464f1eb30af8ef2addb07c01849fc41e9fb9528075aa45fbe414dfe34","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/fluids/FluidSimulation.js","title":"sim/fluids/FluidSimulation","summary":"Per-voxel simulation metadata Stored separately from material ID to avoid expanding chunks","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidSimulation.md","moduleTitle":"sim/fluids/FluidSimulation","source":"engine/sim/fluids/FluidSimulation.js","import":"/engine/sim/fluids/FluidSimulation.js","sourceHash":"1fd8b00464f1eb30af8ef2addb07c01849fc41e9fb9528075aa45fbe414dfe34","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidSimulation.js#0000:FluidMetadata","exportIndex":0,"name":"FluidMetadata","kind":"class","signature":"class FluidMetadata","summary":"Per-voxel simulation metadata Stored separately from material ID to avoid expanding chunks"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidSimulation.md","moduleTitle":"sim/fluids/FluidSimulation","source":"engine/sim/fluids/FluidSimulation.js","import":"/engine/sim/fluids/FluidSimulation.js","sourceHash":"1fd8b00464f1eb30af8ef2addb07c01849fc41e9fb9528075aa45fbe414dfe34","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidSimulation.js#0001:FluidSimulator","exportIndex":1,"name":"FluidSimulator","kind":"class","signature":"class FluidSimulator","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidSimulation.md","moduleTitle":"sim/fluids/FluidSimulation","source":"engine/sim/fluids/FluidSimulation.js","import":"/engine/sim/fluids/FluidSimulation.js","sourceHash":"1fd8b00464f1eb30af8ef2addb07c01849fc41e9fb9528075aa45fbe414dfe34","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidSimulation.js#0002:MATERIAL_PROPERTIES","exportIndex":2,"name":"MATERIAL_PROPERTIES","kind":"constant","signature":"MATERIAL_PROPERTIES","summary":"Physical properties for each material type Properties: - type: 'solid' | 'powder' | 'liquid' | 'gas' | 'fire' - density: Higher density sinks below lower density (0-100) - viscosity: How slowly liquid spreads (0=instant, 1=very slow) - flammable: Can catch fire - burnTime: Ticks until destroyed by fire - spreadRate: How many cells to check for spreading (liquids/gases)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidSourceSplat.md","moduleTitle":"sim/fluids/FluidSourceSplat","source":"engine/sim/fluids/FluidSourceSplat.js","import":"/engine/sim/fluids/FluidSourceSplat.js","sourceHash":"fd6cea4442f86c5b9dfd46318e1ea95bfdd2f073323e025390bd694efba0f9bd","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/fluids/FluidSourceSplat.js","title":"sim/fluids/FluidSourceSplat","summary":"PARTICLES AS SMOKE - splat density at each particle position. Each particle IS the smoke - not a separate effect. Inherits from particle: - Position → where density is splatted - Size (from meta.a) → splat radius - Color (from meta.rgb) → smoke color (sampled by smoke shader) - Age/Lifetime → fade behavior When raymarched, overlapping particles merge into smooth fluid blobs.","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidSourceSplat.md","moduleTitle":"sim/fluids/FluidSourceSplat","source":"engine/sim/fluids/FluidSourceSplat.js","import":"/engine/sim/fluids/FluidSourceSplat.js","sourceHash":"fd6cea4442f86c5b9dfd46318e1ea95bfdd2f073323e025390bd694efba0f9bd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidSourceSplat.js#0000:splatFluidSources","exportIndex":0,"name":"splatFluidSources","kind":"function","signature":"async splatFluidSources(fluidWorld, gpuDevice, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidSourceSplat.md","moduleTitle":"sim/fluids/FluidSourceSplat","source":"engine/sim/fluids/FluidSourceSplat.js","import":"/engine/sim/fluids/FluidSourceSplat.js","sourceHash":"fd6cea4442f86c5b9dfd46318e1ea95bfdd2f073323e025390bd694efba0f9bd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidSourceSplat.js#0001:disposeFluidSourceSplat","exportIndex":1,"name":"disposeFluidSourceSplat","kind":"function","signature":"disposeFluidSourceSplat(device)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidSourceSplat.md","moduleTitle":"sim/fluids/FluidSourceSplat","source":"engine/sim/fluids/FluidSourceSplat.js","import":"/engine/sim/fluids/FluidSourceSplat.js","sourceHash":"fd6cea4442f86c5b9dfd46318e1ea95bfdd2f073323e025390bd694efba0f9bd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidSourceSplat.js#0002:splatParticleDensity","exportIndex":2,"name":"splatParticleDensity","kind":"function","signature":"splatParticleDensity(fluidWorld, particleWorld, options = {})","summary":"PARTICLES AS SMOKE - splat density at each particle position. Each particle IS the smoke - not a separate effect. Inherits from particle: - Position → where density is splatted - Size (from meta.a) → splat radius - Color (from meta.rgb) → smoke color (sampled by smoke shader) - Age/Lifetime → fade behavior When raymarched, overlapping particles merge into smooth fluid blobs."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidSourceSplat.md","moduleTitle":"sim/fluids/FluidSourceSplat","source":"engine/sim/fluids/FluidSourceSplat.js","import":"/engine/sim/fluids/FluidSourceSplat.js","sourceHash":"fd6cea4442f86c5b9dfd46318e1ea95bfdd2f073323e025390bd694efba0f9bd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidSourceSplat.js#0003:disposeParticleSplat","exportIndex":3,"name":"disposeParticleSplat","kind":"function","signature":"disposeParticleSplat(device)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidWorldDomain.md","moduleTitle":"sim/fluids/FluidWorldDomain","source":"engine/sim/fluids/FluidWorldDomain.js","import":"/engine/sim/fluids/FluidWorldDomain.js","sourceHash":"3e16ef46377dc6b75d6173e42655faaf92b0a68e12521e15e1393abdea78aed2","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/fluids/FluidWorldDomain.js","title":"sim/fluids/FluidWorldDomain","summary":"Build fluid domain from ECS world colliders","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidWorldDomain.md","moduleTitle":"sim/fluids/FluidWorldDomain","source":"engine/sim/fluids/FluidWorldDomain.js","import":"/engine/sim/fluids/FluidWorldDomain.js","sourceHash":"3e16ef46377dc6b75d6173e42655faaf92b0a68e12521e15e1393abdea78aed2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidWorldDomain.js#0000:buildFluidDomainFromColliders","exportIndex":0,"name":"buildFluidDomainFromColliders","kind":"function","signature":"buildFluidDomainFromColliders(ecsWorld, options = {})","summary":"Build fluid domain from ECS world colliders"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidWorldDomain.md","moduleTitle":"sim/fluids/FluidWorldDomain","source":"engine/sim/fluids/FluidWorldDomain.js","import":"/engine/sim/fluids/FluidWorldDomain.js","sourceHash":"3e16ef46377dc6b75d6173e42655faaf92b0a68e12521e15e1393abdea78aed2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidWorldDomain.js#0001:createSolidMaskTexture","exportIndex":1,"name":"createSolidMaskTexture","kind":"function","signature":"createSolidMaskTexture(device, domain, gridSize)","summary":"Create a 3D solid mask texture from colliders Each cell is 0 (fluid) or 1 (solid)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidWorldDomain.md","moduleTitle":"sim/fluids/FluidWorldDomain","source":"engine/sim/fluids/FluidWorldDomain.js","import":"/engine/sim/fluids/FluidWorldDomain.js","sourceHash":"3e16ef46377dc6b75d6173e42655faaf92b0a68e12521e15e1393abdea78aed2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidWorldDomain.js#0002:createWorldFluidDomain","exportIndex":2,"name":"createWorldFluidDomain","kind":"function","signature":"createWorldFluidDomain(device, ecsWorld, options = {})","summary":"Create a world fluid domain with solid mask"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidWorldDomain.md","moduleTitle":"sim/fluids/FluidWorldDomain","source":"engine/sim/fluids/FluidWorldDomain.js","import":"/engine/sim/fluids/FluidWorldDomain.js","sourceHash":"3e16ef46377dc6b75d6173e42655faaf92b0a68e12521e15e1393abdea78aed2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidWorldDomain.js#0003:updateWorldFluidDomainParams","exportIndex":3,"name":"updateWorldFluidDomainParams","kind":"function","signature":"updateWorldFluidDomainParams(worldDomain)","summary":"Update world fluid domain params buffer"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidWorldDomain.md","moduleTitle":"sim/fluids/FluidWorldDomain","source":"engine/sim/fluids/FluidWorldDomain.js","import":"/engine/sim/fluids/FluidWorldDomain.js","sourceHash":"3e16ef46377dc6b75d6173e42655faaf92b0a68e12521e15e1393abdea78aed2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidWorldDomain.js#0004:destroyWorldFluidDomain","exportIndex":4,"name":"destroyWorldFluidDomain","kind":"function","signature":"destroyWorldFluidDomain(worldDomain)","summary":"Destroy world fluid domain"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/FluidWorldDomain.md","moduleTitle":"sim/fluids/FluidWorldDomain","source":"engine/sim/fluids/FluidWorldDomain.js","import":"/engine/sim/fluids/FluidWorldDomain.js","sourceHash":"3e16ef46377dc6b75d6173e42655faaf92b0a68e12521e15e1393abdea78aed2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/FluidWorldDomain.js#0005:rebuildSolidMask","exportIndex":5,"name":"rebuildSolidMask","kind":"function","signature":"rebuildSolidMask(worldDomain, ecsWorld)","summary":"Rebuild solid mask when scene changes"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/PhasorRays.md","moduleTitle":"sim/fluids/PhasorRays","source":"engine/sim/fluids/PhasorRays.js","import":"/engine/sim/fluids/PhasorRays.js","sourceHash":"fa1b6e4da19bb9a35598468b023b7f28c65a87b483f5f93e09497a533bdb67c9","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/fluids/PhasorRays.js","title":"sim/fluids/PhasorRays","summary":"Ray with wave properties (phasor representation)","exportCount":11}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/PhasorRays.md","moduleTitle":"sim/fluids/PhasorRays","source":"engine/sim/fluids/PhasorRays.js","import":"/engine/sim/fluids/PhasorRays.js","sourceHash":"fa1b6e4da19bb9a35598468b023b7f28c65a87b483f5f93e09497a533bdb67c9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/PhasorRays.js#0000:PhasorRay","exportIndex":0,"name":"PhasorRay","kind":"class","signature":"class PhasorRay","summary":"Ray with wave properties (phasor representation)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/PhasorRays.md","moduleTitle":"sim/fluids/PhasorRays","source":"engine/sim/fluids/PhasorRays.js","import":"/engine/sim/fluids/PhasorRays.js","sourceHash":"fa1b6e4da19bb9a35598468b023b7f28c65a87b483f5f93e09497a533bdb67c9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/PhasorRays.js#0001:RayMaterialInteraction","exportIndex":1,"name":"RayMaterialInteraction","kind":"class","signature":"class RayMaterialInteraction","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/PhasorRays.md","moduleTitle":"sim/fluids/PhasorRays","source":"engine/sim/fluids/PhasorRays.js","import":"/engine/sim/fluids/PhasorRays.js","sourceHash":"fa1b6e4da19bb9a35598468b023b7f28c65a87b483f5f93e09497a533bdb67c9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/PhasorRays.js#0002:PhasorRayTracer","exportIndex":2,"name":"PhasorRayTracer","kind":"class","signature":"class PhasorRayTracer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/PhasorRays.md","moduleTitle":"sim/fluids/PhasorRays","source":"engine/sim/fluids/PhasorRays.js","import":"/engine/sim/fluids/PhasorRays.js","sourceHash":"fa1b6e4da19bb9a35598468b023b7f28c65a87b483f5f93e09497a533bdb67c9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/PhasorRays.js#0003:frequencyToColor","exportIndex":3,"name":"frequencyToColor","kind":"function","signature":"frequencyToColor(frequency)","summary":"Convert frequency to visible color (RGB)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/PhasorRays.md","moduleTitle":"sim/fluids/PhasorRays","source":"engine/sim/fluids/PhasorRays.js","import":"/engine/sim/fluids/PhasorRays.js","sourceHash":"fa1b6e4da19bb9a35598468b023b7f28c65a87b483f5f93e09497a533bdb67c9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/PhasorRays.js#0004:wavelengthToColor","exportIndex":4,"name":"wavelengthToColor","kind":"function","signature":"wavelengthToColor(wavelength)","summary":"Convert wavelength to color"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/PhasorRays.md","moduleTitle":"sim/fluids/PhasorRays","source":"engine/sim/fluids/PhasorRays.js","import":"/engine/sim/fluids/PhasorRays.js","sourceHash":"fa1b6e4da19bb9a35598468b023b7f28c65a87b483f5f93e09497a533bdb67c9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/PhasorRays.js#0005:dopplerColor","exportIndex":5,"name":"dopplerColor","kind":"function","signature":"dopplerColor(baseFrequency, observedFrequency)","summary":"Apply Doppler shift color"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/PhasorRays.md","moduleTitle":"sim/fluids/PhasorRays","source":"engine/sim/fluids/PhasorRays.js","import":"/engine/sim/fluids/PhasorRays.js","sourceHash":"fa1b6e4da19bb9a35598468b023b7f28c65a87b483f5f93e09497a533bdb67c9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/PhasorRays.js#0006:generateRayVisualization","exportIndex":6,"name":"generateRayVisualization","kind":"function","signature":"generateRayVisualization(rays, time)","summary":"Generate visualization data for rays"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/PhasorRays.md","moduleTitle":"sim/fluids/PhasorRays","source":"engine/sim/fluids/PhasorRays.js","import":"/engine/sim/fluids/PhasorRays.js","sourceHash":"fa1b6e4da19bb9a35598468b023b7f28c65a87b483f5f93e09497a533bdb67c9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/PhasorRays.js#0007:VISIBLE_SPECTRUM","exportIndex":7,"name":"VISIBLE_SPECTRUM","kind":"constant","signature":"VISIBLE_SPECTRUM","summary":"Base visible light frequencies"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/PhasorRays.md","moduleTitle":"sim/fluids/PhasorRays","source":"engine/sim/fluids/PhasorRays.js","import":"/engine/sim/fluids/PhasorRays.js","sourceHash":"fa1b6e4da19bb9a35598468b023b7f28c65a87b483f5f93e09497a533bdb67c9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/PhasorRays.js#0008:RayInteraction","exportIndex":8,"name":"RayInteraction","kind":"constant","signature":"RayInteraction","summary":"Ray interaction types"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/PhasorRays.md","moduleTitle":"sim/fluids/PhasorRays","source":"engine/sim/fluids/PhasorRays.js","import":"/engine/sim/fluids/PhasorRays.js","sourceHash":"fa1b6e4da19bb9a35598468b023b7f28c65a87b483f5f93e09497a533bdb67c9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/PhasorRays.js#0009:RayState","exportIndex":9,"name":"RayState","kind":"constant","signature":"RayState","summary":"Ray state"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/PhasorRays.md","moduleTitle":"sim/fluids/PhasorRays","source":"engine/sim/fluids/PhasorRays.js","import":"/engine/sim/fluids/PhasorRays.js","sourceHash":"fa1b6e4da19bb9a35598468b023b7f28c65a87b483f5f93e09497a533bdb67c9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/PhasorRays.js#0010:PhasorRays","exportIndex":10,"name":"PhasorRays","kind":"re-export","signature":"PhasorRays","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/PhotonicCrystal.md","moduleTitle":"sim/fluids/PhotonicCrystal","source":"engine/sim/fluids/PhotonicCrystal.js","import":"/engine/sim/fluids/PhotonicCrystal.js","sourceHash":"2eb897f52efbf7a1769ded056427914cf561c0315a346807b9446d3c3d8367ec","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/fluids/PhotonicCrystal.js","title":"sim/fluids/PhotonicCrystal","summary":"Computes dispersion relation for time-varying medium For photonic time crystal: ω(k) has gaps in k-space (momentum gaps)","exportCount":9}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/PhotonicCrystal.md","moduleTitle":"sim/fluids/PhotonicCrystal","source":"engine/sim/fluids/PhotonicCrystal.js","import":"/engine/sim/fluids/PhotonicCrystal.js","sourceHash":"2eb897f52efbf7a1769ded056427914cf561c0315a346807b9446d3c3d8367ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/PhotonicCrystal.js#0000:DispersionCalculator","exportIndex":0,"name":"DispersionCalculator","kind":"class","signature":"class DispersionCalculator","summary":"Computes dispersion relation for time-varying medium For photonic time crystal: ω(k) has gaps in k-space (momentum gaps)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/PhotonicCrystal.md","moduleTitle":"sim/fluids/PhotonicCrystal","source":"engine/sim/fluids/PhotonicCrystal.js","import":"/engine/sim/fluids/PhotonicCrystal.js","sourceHash":"2eb897f52efbf7a1769ded056427914cf561c0315a346807b9446d3c3d8367ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/PhotonicCrystal.js#0001:PhotonicTimeCrystal","exportIndex":1,"name":"PhotonicTimeCrystal","kind":"class","signature":"class PhotonicTimeCrystal","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/PhotonicCrystal.md","moduleTitle":"sim/fluids/PhotonicCrystal","source":"engine/sim/fluids/PhotonicCrystal.js","import":"/engine/sim/fluids/PhotonicCrystal.js","sourceHash":"2eb897f52efbf7a1769ded056427914cf561c0315a346807b9446d3c3d8367ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/PhotonicCrystal.js#0002:TimeReflectionEvent","exportIndex":2,"name":"TimeReflectionEvent","kind":"class","signature":"class TimeReflectionEvent","summary":"Represents a sudden change in ε that creates time reflection"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/PhotonicCrystal.md","moduleTitle":"sim/fluids/PhotonicCrystal","source":"engine/sim/fluids/PhotonicCrystal.js","import":"/engine/sim/fluids/PhotonicCrystal.js","sourceHash":"2eb897f52efbf7a1769ded056427914cf561c0315a346807b9446d3c3d8367ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/PhotonicCrystal.js#0003:TemporalCloak","exportIndex":3,"name":"TemporalCloak","kind":"class","signature":"class TemporalCloak","summary":"Temporal cloaking using time lens approach Opens and closes a gap in the time domain"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/PhotonicCrystal.md","moduleTitle":"sim/fluids/PhotonicCrystal","source":"engine/sim/fluids/PhotonicCrystal.js","import":"/engine/sim/fluids/PhotonicCrystal.js","sourceHash":"2eb897f52efbf7a1769ded056427914cf561c0315a346807b9446d3c3d8367ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/PhotonicCrystal.js#0004:PhotonicCrystalManager","exportIndex":4,"name":"PhotonicCrystalManager","kind":"class","signature":"class PhotonicCrystalManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/PhotonicCrystal.md","moduleTitle":"sim/fluids/PhotonicCrystal","source":"engine/sim/fluids/PhotonicCrystal.js","import":"/engine/sim/fluids/PhotonicCrystal.js","sourceHash":"2eb897f52efbf7a1769ded056427914cf561c0315a346807b9446d3c3d8367ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/PhotonicCrystal.js#0005:CrystalType","exportIndex":5,"name":"CrystalType","kind":"constant","signature":"CrystalType","summary":"Photonic crystal types"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/PhotonicCrystal.md","moduleTitle":"sim/fluids/PhotonicCrystal","source":"engine/sim/fluids/PhotonicCrystal.js","import":"/engine/sim/fluids/PhotonicCrystal.js","sourceHash":"2eb897f52efbf7a1769ded056427914cf561c0315a346807b9446d3c3d8367ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/PhotonicCrystal.js#0006:ModulationWaveform","exportIndex":6,"name":"ModulationWaveform","kind":"constant","signature":"ModulationWaveform","summary":"Modulation waveforms"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/PhotonicCrystal.md","moduleTitle":"sim/fluids/PhotonicCrystal","source":"engine/sim/fluids/PhotonicCrystal.js","import":"/engine/sim/fluids/PhotonicCrystal.js","sourceHash":"2eb897f52efbf7a1769ded056427914cf561c0315a346807b9446d3c3d8367ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/PhotonicCrystal.js#0007:TemporalEffect","exportIndex":7,"name":"TemporalEffect","kind":"constant","signature":"TemporalEffect","summary":"Time crystal effects"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/PhotonicCrystal.md","moduleTitle":"sim/fluids/PhotonicCrystal","source":"engine/sim/fluids/PhotonicCrystal.js","import":"/engine/sim/fluids/PhotonicCrystal.js","sourceHash":"2eb897f52efbf7a1769ded056427914cf561c0315a346807b9446d3c3d8367ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/PhotonicCrystal.js#0008:PhotonicCrystal","exportIndex":8,"name":"PhotonicCrystal","kind":"re-export","signature":"PhotonicCrystal","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/VolumeFieldSmooth.md","moduleTitle":"sim/fluids/VolumeFieldSmooth","source":"engine/sim/fluids/VolumeFieldSmooth.js","import":"/engine/sim/fluids/VolumeFieldSmooth.js","sourceHash":"b973442f5509944ba41964e148a63159767e24b17b19b1d8f07394c74cac7b5b","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/fluids/VolumeFieldSmooth.js","title":"sim/fluids/VolumeFieldSmooth","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/VolumeFieldSmooth.md","moduleTitle":"sim/fluids/VolumeFieldSmooth","source":"engine/sim/fluids/VolumeFieldSmooth.js","import":"/engine/sim/fluids/VolumeFieldSmooth.js","sourceHash":"b973442f5509944ba41964e148a63159767e24b17b19b1d8f07394c74cac7b5b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/VolumeFieldSmooth.js#0000:smoothVolumeField","exportIndex":0,"name":"smoothVolumeField","kind":"function","signature":"smoothVolumeField(world, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/VolumeFieldSmooth.md","moduleTitle":"sim/fluids/VolumeFieldSmooth","source":"engine/sim/fluids/VolumeFieldSmooth.js","import":"/engine/sim/fluids/VolumeFieldSmooth.js","sourceHash":"b973442f5509944ba41964e148a63159767e24b17b19b1d8f07394c74cac7b5b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/VolumeFieldSmooth.js#0001:disposeVolumeFieldSmooth","exportIndex":1,"name":"disposeVolumeFieldSmooth","kind":"function","signature":"disposeVolumeFieldSmooth(device)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/VolumeFieldWorld.md","moduleTitle":"sim/fluids/VolumeFieldWorld","source":"engine/sim/fluids/VolumeFieldWorld.js","import":"/engine/sim/fluids/VolumeFieldWorld.js","sourceHash":"8c7ae593147280829745b4d221dc7889ac63a67a709e9b7ee180cea1c8d8a901","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/fluids/VolumeFieldWorld.js","title":"sim/fluids/VolumeFieldWorld","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/VolumeFieldWorld.md","moduleTitle":"sim/fluids/VolumeFieldWorld","source":"engine/sim/fluids/VolumeFieldWorld.js","import":"/engine/sim/fluids/VolumeFieldWorld.js","sourceHash":"8c7ae593147280829745b4d221dc7889ac63a67a709e9b7ee180cea1c8d8a901","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/VolumeFieldWorld.js#0000:createVolumeFieldWorld","exportIndex":0,"name":"createVolumeFieldWorld","kind":"function","signature":"async createVolumeFieldWorld(gpuDevice, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/VolumeFieldWorld.md","moduleTitle":"sim/fluids/VolumeFieldWorld","source":"engine/sim/fluids/VolumeFieldWorld.js","import":"/engine/sim/fluids/VolumeFieldWorld.js","sourceHash":"8c7ae593147280829745b4d221dc7889ac63a67a709e9b7ee180cea1c8d8a901","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/VolumeFieldWorld.js#0001:destroyVolumeFieldWorld","exportIndex":1,"name":"destroyVolumeFieldWorld","kind":"function","signature":"destroyVolumeFieldWorld(world)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/index.md","moduleTitle":"sim/fluids/index","source":"engine/sim/fluids/index.js","import":"/engine/sim/fluids/index.js","sourceHash":"1f1b7fd7938f032c46549bc767dca52171091c432a2087ee00c743f798f2ac50","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/fluids/index.js","title":"sim/fluids/index","summary":"","exportCount":12}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/index.md","moduleTitle":"sim/fluids/index","source":"engine/sim/fluids/index.js","import":"/engine/sim/fluids/index.js","sourceHash":"1f1b7fd7938f032c46549bc767dca52171091c432a2087ee00c743f798f2ac50","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/index.js#0000:FDTDSolver","exportIndex":0,"name":"FDTDSolver","kind":"re-export","signature":"FDTDSolver","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/index.md","moduleTitle":"sim/fluids/index","source":"engine/sim/fluids/index.js","import":"/engine/sim/fluids/index.js","sourceHash":"1f1b7fd7938f032c46549bc767dca52171091c432a2087ee00c743f798f2ac50","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/index.js#0001:FluidBoundary","exportIndex":1,"name":"FluidBoundary","kind":"re-export","signature":"FluidBoundary","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/index.md","moduleTitle":"sim/fluids/index","source":"engine/sim/fluids/index.js","import":"/engine/sim/fluids/index.js","sourceHash":"1f1b7fd7938f032c46549bc767dca52171091c432a2087ee00c743f798f2ac50","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/index.js#0002:FluidConfig","exportIndex":2,"name":"FluidConfig","kind":"re-export","signature":"FluidConfig","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/index.md","moduleTitle":"sim/fluids/index","source":"engine/sim/fluids/index.js","import":"/engine/sim/fluids/index.js","sourceHash":"1f1b7fd7938f032c46549bc767dca52171091c432a2087ee00c743f798f2ac50","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/index.js#0003:FluidCpuWorld","exportIndex":3,"name":"FluidCpuWorld","kind":"re-export","signature":"FluidCpuWorld","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/index.md","moduleTitle":"sim/fluids/index","source":"engine/sim/fluids/index.js","import":"/engine/sim/fluids/index.js","sourceHash":"1f1b7fd7938f032c46549bc767dca52171091c432a2087ee00c743f798f2ac50","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/index.js#0004:FluidMPM","exportIndex":4,"name":"FluidMPM","kind":"re-export","signature":"FluidMPM","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/index.md","moduleTitle":"sim/fluids/index","source":"engine/sim/fluids/index.js","import":"/engine/sim/fluids/index.js","sourceHash":"1f1b7fd7938f032c46549bc767dca52171091c432a2087ee00c743f798f2ac50","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/index.js#0005:FluidPhaseChange","exportIndex":5,"name":"FluidPhaseChange","kind":"re-export","signature":"FluidPhaseChange","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/index.md","moduleTitle":"sim/fluids/index","source":"engine/sim/fluids/index.js","import":"/engine/sim/fluids/index.js","sourceHash":"1f1b7fd7938f032c46549bc767dca52171091c432a2087ee00c743f798f2ac50","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/index.js#0006:FluidSimWorld","exportIndex":6,"name":"FluidSimWorld","kind":"re-export","signature":"FluidSimWorld","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/index.md","moduleTitle":"sim/fluids/index","source":"engine/sim/fluids/index.js","import":"/engine/sim/fluids/index.js","sourceHash":"1f1b7fd7938f032c46549bc767dca52171091c432a2087ee00c743f798f2ac50","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/index.js#0007:FluidSimulator","exportIndex":7,"name":"FluidSimulator","kind":"re-export","signature":"FluidSimulator","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/index.md","moduleTitle":"sim/fluids/index","source":"engine/sim/fluids/index.js","import":"/engine/sim/fluids/index.js","sourceHash":"1f1b7fd7938f032c46549bc767dca52171091c432a2087ee00c743f798f2ac50","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/index.js#0008:FluidSourceSplat","exportIndex":8,"name":"FluidSourceSplat","kind":"re-export","signature":"FluidSourceSplat","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/index.md","moduleTitle":"sim/fluids/index","source":"engine/sim/fluids/index.js","import":"/engine/sim/fluids/index.js","sourceHash":"1f1b7fd7938f032c46549bc767dca52171091c432a2087ee00c743f798f2ac50","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/index.js#0009:FluidWorldDomain","exportIndex":9,"name":"FluidWorldDomain","kind":"re-export","signature":"FluidWorldDomain","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/index.md","moduleTitle":"sim/fluids/index","source":"engine/sim/fluids/index.js","import":"/engine/sim/fluids/index.js","sourceHash":"1f1b7fd7938f032c46549bc767dca52171091c432a2087ee00c743f798f2ac50","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/index.js#0010:PhasorRays","exportIndex":10,"name":"PhasorRays","kind":"re-export","signature":"PhasorRays","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/fluids/index.md","moduleTitle":"sim/fluids/index","source":"engine/sim/fluids/index.js","import":"/engine/sim/fluids/index.js","sourceHash":"1f1b7fd7938f032c46549bc767dca52171091c432a2087ee00c743f798f2ac50","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/fluids/index.js#0011:PhotonicCrystal","exportIndex":11,"name":"PhotonicCrystal","kind":"re-export","signature":"PhotonicCrystal","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/AsyncSnapshotManager.md","moduleTitle":"sim/particles/AsyncSnapshotManager","source":"engine/sim/particles/AsyncSnapshotManager.js","import":"/engine/sim/particles/AsyncSnapshotManager.js","sourceHash":"b8cf0c38beceec7ce27cb0b782dd74e4258e963b318d0f2fc539e9d4288b83ff","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/AsyncSnapshotManager.js","title":"sim/particles/AsyncSnapshotManager","summary":"AsyncSnapshotManager.js - Async wrapper for worker-based snapshot capture Coordinates between main thread (GPU readback) and worker (compression). Uses TRIPLE buffering for completely non-blocking capture: Buffer A: Being filled from GPU readback Buffer B: Being processed by worker Buffer C: Completed and ready for use This ensures the render loop NEVER waits for GPU or worker.","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/AsyncSnapshotManager.md","moduleTitle":"sim/particles/AsyncSnapshotManager","source":"engine/sim/particles/AsyncSnapshotManager.js","import":"/engine/sim/particles/AsyncSnapshotManager.js","sourceHash":"b8cf0c38beceec7ce27cb0b782dd74e4258e963b318d0f2fc539e9d4288b83ff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/AsyncSnapshotManager.js#0000:initAsyncSnapshotSystem","exportIndex":0,"name":"initAsyncSnapshotSystem","kind":"function","signature":"initAsyncSnapshotSystem(options = {})","summary":"Initialize the async snapshot system"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/AsyncSnapshotManager.md","moduleTitle":"sim/particles/AsyncSnapshotManager","source":"engine/sim/particles/AsyncSnapshotManager.js","import":"/engine/sim/particles/AsyncSnapshotManager.js","sourceHash":"b8cf0c38beceec7ce27cb0b782dd74e4258e963b318d0f2fc539e9d4288b83ff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/AsyncSnapshotManager.js#0001:captureFrameAsync","exportIndex":1,"name":"captureFrameAsync","kind":"function","signature":"async captureFrameAsync(snapshot, particleState, emitters, currentTimeMs)","summary":"Capture a frame asynchronously GPU readback happens on main thread, compression in worker"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/AsyncSnapshotManager.md","moduleTitle":"sim/particles/AsyncSnapshotManager","source":"engine/sim/particles/AsyncSnapshotManager.js","import":"/engine/sim/particles/AsyncSnapshotManager.js","sourceHash":"b8cf0c38beceec7ce27cb0b782dd74e4258e963b318d0f2fc539e9d4288b83ff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/AsyncSnapshotManager.js#0002:captureFrameTripleBuffered","exportIndex":2,"name":"captureFrameTripleBuffered","kind":"function","signature":"captureFrameTripleBuffered(snapshot, particleState, emitters, currentTimeMs)","summary":"Triple-buffered capture - completely non-blocking Returns immediately, GPU readback and worker processing happen in background"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/AsyncSnapshotManager.md","moduleTitle":"sim/particles/AsyncSnapshotManager","source":"engine/sim/particles/AsyncSnapshotManager.js","import":"/engine/sim/particles/AsyncSnapshotManager.js","sourceHash":"b8cf0c38beceec7ce27cb0b782dd74e4258e963b318d0f2fc539e9d4288b83ff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/AsyncSnapshotManager.js#0003:destroyAsyncSnapshot","exportIndex":3,"name":"destroyAsyncSnapshot","kind":"function","signature":"destroyAsyncSnapshot()","summary":"Clean up"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/AsyncSnapshotManager.md","moduleTitle":"sim/particles/AsyncSnapshotManager","source":"engine/sim/particles/AsyncSnapshotManager.js","import":"/engine/sim/particles/AsyncSnapshotManager.js","sourceHash":"b8cf0c38beceec7ce27cb0b782dd74e4258e963b318d0f2fc539e9d4288b83ff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/AsyncSnapshotManager.js#0004:setSnapshotCaptureInterval","exportIndex":4,"name":"setSnapshotCaptureInterval","kind":"function","signature":"setSnapshotCaptureInterval(intervalMs)","summary":"Set capture interval (for quality/performance tradeoff)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/AttachedParticlesCompute.md","moduleTitle":"sim/particles/AttachedParticlesCompute","source":"engine/sim/particles/AttachedParticlesCompute.js","import":"/engine/sim/particles/AttachedParticlesCompute.js","sourceHash":"be3341f5135f54995a29790807e00e8da1f453bd3884fdc54523b6200ee7fae1","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/AttachedParticlesCompute.js","title":"sim/particles/AttachedParticlesCompute","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/AttachedParticlesCompute.md","moduleTitle":"sim/particles/AttachedParticlesCompute","source":"engine/sim/particles/AttachedParticlesCompute.js","import":"/engine/sim/particles/AttachedParticlesCompute.js","sourceHash":"be3341f5135f54995a29790807e00e8da1f453bd3884fdc54523b6200ee7fae1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/AttachedParticlesCompute.js#0000:updateAttachedParticlesIntoWorld","exportIndex":0,"name":"updateAttachedParticlesIntoWorld","kind":"function","signature":"async updateAttachedParticlesIntoWorld(gpuDevice, meshBuffers, particleWorld, attachmentBuffer, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/AttachedParticlesCompute.md","moduleTitle":"sim/particles/AttachedParticlesCompute","source":"engine/sim/particles/AttachedParticlesCompute.js","import":"/engine/sim/particles/AttachedParticlesCompute.js","sourceHash":"be3341f5135f54995a29790807e00e8da1f453bd3884fdc54523b6200ee7fae1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/AttachedParticlesCompute.js#0001:updateAttachedParticlesIntoParticlesState","exportIndex":1,"name":"updateAttachedParticlesIntoParticlesState","kind":"function","signature":"async updateAttachedParticlesIntoParticlesState(particles, meshBuffers, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/BoneAttachedParticlesCompute.md","moduleTitle":"sim/particles/BoneAttachedParticlesCompute","source":"engine/sim/particles/BoneAttachedParticlesCompute.js","import":"/engine/sim/particles/BoneAttachedParticlesCompute.js","sourceHash":"e10ce4bd99d1972dde5a2694bc15651ff89df781bf40e7332ca70d94d31e3a11","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/BoneAttachedParticlesCompute.js","title":"sim/particles/BoneAttachedParticlesCompute","summary":"","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/BoneAttachedParticlesCompute.md","moduleTitle":"sim/particles/BoneAttachedParticlesCompute","source":"engine/sim/particles/BoneAttachedParticlesCompute.js","import":"/engine/sim/particles/BoneAttachedParticlesCompute.js","sourceHash":"e10ce4bd99d1972dde5a2694bc15651ff89df781bf40e7332ca70d94d31e3a11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/BoneAttachedParticlesCompute.js#0000:assignParticlesToBonesIntoWorld","exportIndex":0,"name":"assignParticlesToBonesIntoWorld","kind":"function","signature":"async assignParticlesToBonesIntoWorld(gpuDevice, boneBuffer, particleWorld, attachmentBuffer, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/BoneAttachedParticlesCompute.md","moduleTitle":"sim/particles/BoneAttachedParticlesCompute","source":"engine/sim/particles/BoneAttachedParticlesCompute.js","import":"/engine/sim/particles/BoneAttachedParticlesCompute.js","sourceHash":"e10ce4bd99d1972dde5a2694bc15651ff89df781bf40e7332ca70d94d31e3a11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/BoneAttachedParticlesCompute.js#0001:updateBoneAttachedParticlesIntoWorld","exportIndex":1,"name":"updateBoneAttachedParticlesIntoWorld","kind":"function","signature":"async updateBoneAttachedParticlesIntoWorld(gpuDevice, boneBuffer, particleWorld, attachmentBuffer, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/BoneAttachedParticlesCompute.md","moduleTitle":"sim/particles/BoneAttachedParticlesCompute","source":"engine/sim/particles/BoneAttachedParticlesCompute.js","import":"/engine/sim/particles/BoneAttachedParticlesCompute.js","sourceHash":"e10ce4bd99d1972dde5a2694bc15651ff89df781bf40e7332ca70d94d31e3a11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/BoneAttachedParticlesCompute.js#0002:assignParticlesToBonesIntoParticlesState","exportIndex":2,"name":"assignParticlesToBonesIntoParticlesState","kind":"function","signature":"async assignParticlesToBonesIntoParticlesState(particles, boneBuffer, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/BoneAttachedParticlesCompute.md","moduleTitle":"sim/particles/BoneAttachedParticlesCompute","source":"engine/sim/particles/BoneAttachedParticlesCompute.js","import":"/engine/sim/particles/BoneAttachedParticlesCompute.js","sourceHash":"e10ce4bd99d1972dde5a2694bc15651ff89df781bf40e7332ca70d94d31e3a11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/BoneAttachedParticlesCompute.js#0003:updateBoneAttachedParticlesIntoParticlesState","exportIndex":3,"name":"updateBoneAttachedParticlesIntoParticlesState","kind":"function","signature":"async updateBoneAttachedParticlesIntoParticlesState(particles, boneBuffer, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/CustomSDFCollisionBridge.md","moduleTitle":"sim/particles/CustomSDFCollisionBridge","source":"engine/sim/particles/CustomSDFCollisionBridge.js","import":"/engine/sim/particles/CustomSDFCollisionBridge.js","sourceHash":"c853d547647cfc76c04faa083b133f888d114694a04ed9fcde31b765c8a61250","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/CustomSDFCollisionBridge.js","title":"sim/particles/CustomSDFCollisionBridge","summary":"CustomSDFCollisionBridge.js - Bridge Custom Particle Effects to Physics Collision Ensures visual SDF and collision SDF are IDENTICAL by: 1. Generating collision shaders from the same SDF code as visual effects 2. Providing a unified API for registering custom effects with physics 3. Syncing effect parameters between render and simulation This ensures \"what you see is what collides\" - particles collide exactly with the shape that's being rendered.","exportCount":9}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/CustomSDFCollisionBridge.md","moduleTitle":"sim/particles/CustomSDFCollisionBridge","source":"engine/sim/particles/CustomSDFCollisionBridge.js","import":"/engine/sim/particles/CustomSDFCollisionBridge.js","sourceHash":"c853d547647cfc76c04faa083b133f888d114694a04ed9fcde31b765c8a61250","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/CustomSDFCollisionBridge.js#0000:generateCustomEffectCollisionShader","exportIndex":0,"name":"generateCustomEffectCollisionShader","kind":"function","signature":"generateCustomEffectCollisionShader(registeredEffects)","summary":"Generate collision shader that uses the SAME SDF code as visual rendering This is the key to ensuring physics matches visuals exactly"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/CustomSDFCollisionBridge.md","moduleTitle":"sim/particles/CustomSDFCollisionBridge","source":"engine/sim/particles/CustomSDFCollisionBridge.js","import":"/engine/sim/particles/CustomSDFCollisionBridge.js","sourceHash":"c853d547647cfc76c04faa083b133f888d114694a04ed9fcde31b765c8a61250","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/CustomSDFCollisionBridge.js#0001:createCustomEffectCollisionSystem","exportIndex":1,"name":"createCustomEffectCollisionSystem","kind":"function","signature":"createCustomEffectCollisionSystem(device, registeredEffects = [])","summary":"Create custom effect collision system Uses the same SDF code as visual rendering for exact physics/visual match"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/CustomSDFCollisionBridge.md","moduleTitle":"sim/particles/CustomSDFCollisionBridge","source":"engine/sim/particles/CustomSDFCollisionBridge.js","import":"/engine/sim/particles/CustomSDFCollisionBridge.js","sourceHash":"c853d547647cfc76c04faa083b133f888d114694a04ed9fcde31b765c8a61250","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/CustomSDFCollisionBridge.js#0002:addCustomEffectCollider","exportIndex":2,"name":"addCustomEffectCollider","kind":"function","signature":"addCustomEffectCollider(system, device, effectId, center, radius, effectParams = [0, 0, 0, 0])","summary":"Add a custom effect collider Uses the same effect ID as visual rendering for exact match"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/CustomSDFCollisionBridge.md","moduleTitle":"sim/particles/CustomSDFCollisionBridge","source":"engine/sim/particles/CustomSDFCollisionBridge.js","import":"/engine/sim/particles/CustomSDFCollisionBridge.js","sourceHash":"c853d547647cfc76c04faa083b133f888d114694a04ed9fcde31b765c8a61250","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/CustomSDFCollisionBridge.js#0003:updateCustomEffectCollider","exportIndex":3,"name":"updateCustomEffectCollider","kind":"function","signature":"updateCustomEffectCollider(system, device, index, center, radius, effectParams)","summary":"Update collider transform (for moving effects)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/CustomSDFCollisionBridge.md","moduleTitle":"sim/particles/CustomSDFCollisionBridge","source":"engine/sim/particles/CustomSDFCollisionBridge.js","import":"/engine/sim/particles/CustomSDFCollisionBridge.js","sourceHash":"c853d547647cfc76c04faa083b133f888d114694a04ed9fcde31b765c8a61250","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/CustomSDFCollisionBridge.js#0004:initCustomEffectCollisionBindGroup","exportIndex":4,"name":"initCustomEffectCollisionBindGroup","kind":"function","signature":"initCustomEffectCollisionBindGroup(system, device, positionsBuffer, velocitiesBuffer, metaBuffer = null)","summary":"Initialize bind group with particle buffers"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/CustomSDFCollisionBridge.md","moduleTitle":"sim/particles/CustomSDFCollisionBridge","source":"engine/sim/particles/CustomSDFCollisionBridge.js","import":"/engine/sim/particles/CustomSDFCollisionBridge.js","sourceHash":"c853d547647cfc76c04faa083b133f888d114694a04ed9fcde31b765c8a61250","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/CustomSDFCollisionBridge.js#0005:executeCustomEffectCollision","exportIndex":5,"name":"executeCustomEffectCollision","kind":"function","signature":"executeCustomEffectCollision(system, device, queue, particleCount, time, dt, bounciness = 0.3, friction = 0.1, fallbackRadius = 0.1)","summary":"Execute custom effect collision pass"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/CustomSDFCollisionBridge.md","moduleTitle":"sim/particles/CustomSDFCollisionBridge","source":"engine/sim/particles/CustomSDFCollisionBridge.js","import":"/engine/sim/particles/CustomSDFCollisionBridge.js","sourceHash":"c853d547647cfc76c04faa083b133f888d114694a04ed9fcde31b765c8a61250","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/CustomSDFCollisionBridge.js#0006:rebuildCustomEffectCollisionSystem","exportIndex":6,"name":"rebuildCustomEffectCollisionSystem","kind":"function","signature":"rebuildCustomEffectCollisionSystem(device, existingSystem)","summary":"Rebuild collision system when effects change Call this after registering new custom effects"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/CustomSDFCollisionBridge.md","moduleTitle":"sim/particles/CustomSDFCollisionBridge","source":"engine/sim/particles/CustomSDFCollisionBridge.js","import":"/engine/sim/particles/CustomSDFCollisionBridge.js","sourceHash":"c853d547647cfc76c04faa083b133f888d114694a04ed9fcde31b765c8a61250","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/CustomSDFCollisionBridge.js#0007:clearCustomEffectColliders","exportIndex":7,"name":"clearCustomEffectColliders","kind":"function","signature":"clearCustomEffectColliders(system)","summary":"Clear all colliders"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/CustomSDFCollisionBridge.md","moduleTitle":"sim/particles/CustomSDFCollisionBridge","source":"engine/sim/particles/CustomSDFCollisionBridge.js","import":"/engine/sim/particles/CustomSDFCollisionBridge.js","sourceHash":"c853d547647cfc76c04faa083b133f888d114694a04ed9fcde31b765c8a61250","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/CustomSDFCollisionBridge.js#0008:destroyCustomEffectCollisionSystem","exportIndex":8,"name":"destroyCustomEffectCollisionSystem","kind":"function","signature":"destroyCustomEffectCollisionSystem(system)","summary":"Destroy system and release GPU resources"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/GPUParticleSorter.md","moduleTitle":"sim/particles/GPUParticleSorter","source":"engine/sim/particles/GPUParticleSorter.js","import":"/engine/sim/particles/GPUParticleSorter.js","sourceHash":"d8fb6ceaa89ad7a96bc44aa4e4ba77dca78d964a5d3bea049afdcdc483af3c48","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/GPUParticleSorter.js","title":"sim/particles/GPUParticleSorter","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/GPUParticleSorter.md","moduleTitle":"sim/particles/GPUParticleSorter","source":"engine/sim/particles/GPUParticleSorter.js","import":"/engine/sim/particles/GPUParticleSorter.js","sourceHash":"d8fb6ceaa89ad7a96bc44aa4e4ba77dca78d964a5d3bea049afdcdc483af3c48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/GPUParticleSorter.js#0000:GPUParticleSorter","exportIndex":0,"name":"GPUParticleSorter","kind":"class","signature":"class GPUParticleSorter","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/MeshToParticlesCompute.md","moduleTitle":"sim/particles/MeshToParticlesCompute","source":"engine/sim/particles/MeshToParticlesCompute.js","import":"/engine/sim/particles/MeshToParticlesCompute.js","sourceHash":"7e7fa691cf94bf23012d8c9caeeb7f1bb25612ce442cd8b3de851151b8e58ef1","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/MeshToParticlesCompute.js","title":"sim/particles/MeshToParticlesCompute","summary":"","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/MeshToParticlesCompute.md","moduleTitle":"sim/particles/MeshToParticlesCompute","source":"engine/sim/particles/MeshToParticlesCompute.js","import":"/engine/sim/particles/MeshToParticlesCompute.js","sourceHash":"7e7fa691cf94bf23012d8c9caeeb7f1bb25612ce442cd8b3de851151b8e58ef1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/MeshToParticlesCompute.js#0000:createMeshParticleBuffers","exportIndex":0,"name":"createMeshParticleBuffers","kind":"function","signature":"createMeshParticleBuffers(device, mesh)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/MeshToParticlesCompute.md","moduleTitle":"sim/particles/MeshToParticlesCompute","source":"engine/sim/particles/MeshToParticlesCompute.js","import":"/engine/sim/particles/MeshToParticlesCompute.js","sourceHash":"7e7fa691cf94bf23012d8c9caeeb7f1bb25612ce442cd8b3de851151b8e58ef1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/MeshToParticlesCompute.js#0001:getAttrOffsetFloats","exportIndex":1,"name":"getAttrOffsetFloats","kind":"function","signature":"getAttrOffsetFloats(attributes, key)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/MeshToParticlesCompute.md","moduleTitle":"sim/particles/MeshToParticlesCompute","source":"engine/sim/particles/MeshToParticlesCompute.js","import":"/engine/sim/particles/MeshToParticlesCompute.js","sourceHash":"7e7fa691cf94bf23012d8c9caeeb7f1bb25612ce442cd8b3de851151b8e58ef1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/MeshToParticlesCompute.js#0002:generateMeshParticlesIntoWorld","exportIndex":2,"name":"generateMeshParticlesIntoWorld","kind":"function","signature":"async generateMeshParticlesIntoWorld(gpuDevice, meshBuffers, particleWorld, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/MeshToParticlesCompute.md","moduleTitle":"sim/particles/MeshToParticlesCompute","source":"engine/sim/particles/MeshToParticlesCompute.js","import":"/engine/sim/particles/MeshToParticlesCompute.js","sourceHash":"7e7fa691cf94bf23012d8c9caeeb7f1bb25612ce442cd8b3de851151b8e58ef1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/MeshToParticlesCompute.js#0003:generateMeshParticlesIntoParticlesState","exportIndex":3,"name":"generateMeshParticlesIntoParticlesState","kind":"function","signature":"async generateMeshParticlesIntoParticlesState(particles, meshBuffers, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/MeshToParticlesPipelineCache.md","moduleTitle":"sim/particles/MeshToParticlesPipelineCache","source":"engine/sim/particles/MeshToParticlesPipelineCache.js","import":"/engine/sim/particles/MeshToParticlesPipelineCache.js","sourceHash":"68f12bfafe67f2ca4c9eaf80287b463515f9b81eaae60aa7c0b3e0ad5d0af7eb","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/MeshToParticlesPipelineCache.js","title":"sim/particles/MeshToParticlesPipelineCache","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/MeshToParticlesPipelineCache.md","moduleTitle":"sim/particles/MeshToParticlesPipelineCache","source":"engine/sim/particles/MeshToParticlesPipelineCache.js","import":"/engine/sim/particles/MeshToParticlesPipelineCache.js","sourceHash":"68f12bfafe67f2ca4c9eaf80287b463515f9b81eaae60aa7c0b3e0ad5d0af7eb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/MeshToParticlesPipelineCache.js#0000:prewarmMeshToParticlesPipeline","exportIndex":0,"name":"prewarmMeshToParticlesPipeline","kind":"function","signature":"async prewarmMeshToParticlesPipeline(gpuDevice)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAdaptiveSubstep.md","moduleTitle":"sim/particles/ParticleAdaptiveSubstep","source":"engine/sim/particles/ParticleAdaptiveSubstep.js","import":"/engine/sim/particles/ParticleAdaptiveSubstep.js","sourceHash":"a567cdddbd2ee784ffd32c5bd2f83fd34d738e94eb12a5d0487902a4e6de6046","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleAdaptiveSubstep.js","title":"sim/particles/ParticleAdaptiveSubstep","summary":"ParticleAdaptiveSubstep.js - Adaptive Substeps with CFL Condition (GAP 20) Automatically determines the number of simulation substeps per frame based on the maximum particle velocity (CFL condition), preventing tunneling for fast particles without wasting substeps on slow ones. CFL: dt_sub = cellSize * cflFactor / maxSpeed Substeps = ceil(dt_frame / dt_sub), clamped to [minSubsteps, maxSubsteps] Uses GPU readback of max velocity (from indirect dispatch counters or a separate reduction pass) when available, falls back to CPU-side estimate. Ref: Houdini POP Solver CFL, PhysX particle substeps","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAdaptiveSubstep.md","moduleTitle":"sim/particles/ParticleAdaptiveSubstep","source":"engine/sim/particles/ParticleAdaptiveSubstep.js","import":"/engine/sim/particles/ParticleAdaptiveSubstep.js","sourceHash":"a567cdddbd2ee784ffd32c5bd2f83fd34d738e94eb12a5d0487902a4e6de6046","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAdaptiveSubstep.js#0000:createAdaptiveSubstepController","exportIndex":0,"name":"createAdaptiveSubstepController","kind":"function","signature":"createAdaptiveSubstepController(config = {})","summary":"Create an adaptive substep controller."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAdaptiveSubstep.md","moduleTitle":"sim/particles/ParticleAdaptiveSubstep","source":"engine/sim/particles/ParticleAdaptiveSubstep.js","import":"/engine/sim/particles/ParticleAdaptiveSubstep.js","sourceHash":"a567cdddbd2ee784ffd32c5bd2f83fd34d738e94eb12a5d0487902a4e6de6046","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAdaptiveSubstep.js#0001:computeAdaptiveSubsteps","exportIndex":1,"name":"computeAdaptiveSubsteps","kind":"function","signature":"computeAdaptiveSubsteps(controller, frameDt, maxSpeed)","summary":"Compute the number of substeps needed for this frame."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAdaptiveSubstep.md","moduleTitle":"sim/particles/ParticleAdaptiveSubstep","source":"engine/sim/particles/ParticleAdaptiveSubstep.js","import":"/engine/sim/particles/ParticleAdaptiveSubstep.js","sourceHash":"a567cdddbd2ee784ffd32c5bd2f83fd34d738e94eb12a5d0487902a4e6de6046","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAdaptiveSubstep.js#0002:estimateMaxSpeedCPU","exportIndex":2,"name":"estimateMaxSpeedCPU","kind":"function","signature":"estimateMaxSpeedCPU(velocityData, particleCount, sampleCount = 256)","summary":"Estimate max particle speed from CPU-side velocity data. Use this as fallback when GPU readback is not available."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAdaptiveSubstep.md","moduleTitle":"sim/particles/ParticleAdaptiveSubstep","source":"engine/sim/particles/ParticleAdaptiveSubstep.js","import":"/engine/sim/particles/ParticleAdaptiveSubstep.js","sourceHash":"a567cdddbd2ee784ffd32c5bd2f83fd34d738e94eb12a5d0487902a4e6de6046","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAdaptiveSubstep.js#0003:resetAdaptiveSubsteps","exportIndex":3,"name":"resetAdaptiveSubsteps","kind":"function","signature":"resetAdaptiveSubsteps(controller)","summary":"Reset the controller state."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAdvanced.md","moduleTitle":"sim/particles/ParticleAdvanced","source":"engine/sim/particles/ParticleAdvanced.js","import":"/engine/sim/particles/ParticleAdvanced.js","sourceHash":"f8b5e46d39b950fd58d722f2139738525e4b4408b70ab514601d46dde14c5211","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleAdvanced.js","title":"sim/particles/ParticleAdvanced","summary":"ParticleAdvanced.js - GPU Sorting, Chunked Buffers, Wire Constraints, SDF Collision Advanced particle system features: - Bitonic GPU sorting for transparency - Chunked buffer management for 100M+ particles - Wire/spring constraints between particles - SDF mesh collision - GPU particle seeding - Volumetric lighting integration","exportCount":26}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAdvanced.md","moduleTitle":"sim/particles/ParticleAdvanced","source":"engine/sim/particles/ParticleAdvanced.js","import":"/engine/sim/particles/ParticleAdvanced.js","sourceHash":"f8b5e46d39b950fd58d722f2139738525e4b4408b70ab514601d46dde14c5211","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAdvanced.js#0000:createGPUSortSystem","exportIndex":0,"name":"createGPUSortSystem","kind":"function","signature":"createGPUSortSystem(device, maxParticles)","summary":"Create GPU sorting system for transparent particle rendering"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAdvanced.md","moduleTitle":"sim/particles/ParticleAdvanced","source":"engine/sim/particles/ParticleAdvanced.js","import":"/engine/sim/particles/ParticleAdvanced.js","sourceHash":"f8b5e46d39b950fd58d722f2139738525e4b4408b70ab514601d46dde14c5211","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAdvanced.js#0001:initSortBindGroup","exportIndex":1,"name":"initSortBindGroup","kind":"function","signature":"initSortBindGroup(sortSystem, device, positionsBuffer)","summary":"Initialize sort bind group with position buffer"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAdvanced.md","moduleTitle":"sim/particles/ParticleAdvanced","source":"engine/sim/particles/ParticleAdvanced.js","import":"/engine/sim/particles/ParticleAdvanced.js","sourceHash":"f8b5e46d39b950fd58d722f2139738525e4b4408b70ab514601d46dde14c5211","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAdvanced.js#0002:executeGPUSort","exportIndex":2,"name":"executeGPUSort","kind":"function","signature":"executeGPUSort(sortSystem, device, particleCount, cameraPos)","summary":"Execute GPU sort pass"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAdvanced.md","moduleTitle":"sim/particles/ParticleAdvanced","source":"engine/sim/particles/ParticleAdvanced.js","import":"/engine/sim/particles/ParticleAdvanced.js","sourceHash":"f8b5e46d39b950fd58d722f2139738525e4b4408b70ab514601d46dde14c5211","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAdvanced.js#0003:createChunkedBufferSystem","exportIndex":3,"name":"createChunkedBufferSystem","kind":"function","signature":"createChunkedBufferSystem(device, maxParticles, bytesPerParticle = 16)","summary":"Create chunked particle buffer system for 100M+ particles"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAdvanced.md","moduleTitle":"sim/particles/ParticleAdvanced","source":"engine/sim/particles/ParticleAdvanced.js","import":"/engine/sim/particles/ParticleAdvanced.js","sourceHash":"f8b5e46d39b950fd58d722f2139738525e4b4408b70ab514601d46dde14c5211","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAdvanced.js#0004:getChunkForParticle","exportIndex":4,"name":"getChunkForParticle","kind":"function","signature":"getChunkForParticle(chunkedSystem, particleIndex)","summary":"Get chunk index for a particle index"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAdvanced.md","moduleTitle":"sim/particles/ParticleAdvanced","source":"engine/sim/particles/ParticleAdvanced.js","import":"/engine/sim/particles/ParticleAdvanced.js","sourceHash":"f8b5e46d39b950fd58d722f2139738525e4b4408b70ab514601d46dde14c5211","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAdvanced.js#0005:getLocalIndex","exportIndex":5,"name":"getLocalIndex","kind":"function","signature":"getLocalIndex(chunkedSystem, particleIndex)","summary":"Get local index within a chunk"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAdvanced.md","moduleTitle":"sim/particles/ParticleAdvanced","source":"engine/sim/particles/ParticleAdvanced.js","import":"/engine/sim/particles/ParticleAdvanced.js","sourceHash":"f8b5e46d39b950fd58d722f2139738525e4b4408b70ab514601d46dde14c5211","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAdvanced.js#0006:destroyChunkedBufferSystem","exportIndex":6,"name":"destroyChunkedBufferSystem","kind":"function","signature":"destroyChunkedBufferSystem(chunkedSystem)","summary":"Destroy chunked buffer system"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAdvanced.md","moduleTitle":"sim/particles/ParticleAdvanced","source":"engine/sim/particles/ParticleAdvanced.js","import":"/engine/sim/particles/ParticleAdvanced.js","sourceHash":"f8b5e46d39b950fd58d722f2139738525e4b4408b70ab514601d46dde14c5211","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAdvanced.js#0007:createWireConstraintSystem","exportIndex":7,"name":"createWireConstraintSystem","kind":"function","signature":"createWireConstraintSystem(device, maxWires = 10000)","summary":"Create wire constraint system"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAdvanced.md","moduleTitle":"sim/particles/ParticleAdvanced","source":"engine/sim/particles/ParticleAdvanced.js","import":"/engine/sim/particles/ParticleAdvanced.js","sourceHash":"f8b5e46d39b950fd58d722f2139738525e4b4408b70ab514601d46dde14c5211","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAdvanced.js#0008:addWireConstraint","exportIndex":8,"name":"addWireConstraint","kind":"function","signature":"addWireConstraint(wireSystem, device, particleA, particleB, restLength, stiffness = 0.5)","summary":"Add a wire constraint between two particles"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAdvanced.md","moduleTitle":"sim/particles/ParticleAdvanced","source":"engine/sim/particles/ParticleAdvanced.js","import":"/engine/sim/particles/ParticleAdvanced.js","sourceHash":"f8b5e46d39b950fd58d722f2139738525e4b4408b70ab514601d46dde14c5211","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAdvanced.js#0009:initWireBindGroup","exportIndex":9,"name":"initWireBindGroup","kind":"function","signature":"initWireBindGroup(wireSystem, device, positionsBuffer, velocitiesBuffer)","summary":"Initialize wire constraint bind group"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAdvanced.md","moduleTitle":"sim/particles/ParticleAdvanced","source":"engine/sim/particles/ParticleAdvanced.js","import":"/engine/sim/particles/ParticleAdvanced.js","sourceHash":"f8b5e46d39b950fd58d722f2139738525e4b4408b70ab514601d46dde14c5211","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAdvanced.js#0010:solveWireConstraints","exportIndex":10,"name":"solveWireConstraints","kind":"function","signature":"solveWireConstraints(wireSystem, device, iterations = 4)","summary":"Solve wire constraints"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAdvanced.md","moduleTitle":"sim/particles/ParticleAdvanced","source":"engine/sim/particles/ParticleAdvanced.js","import":"/engine/sim/particles/ParticleAdvanced.js","sourceHash":"f8b5e46d39b950fd58d722f2139738525e4b4408b70ab514601d46dde14c5211","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAdvanced.js#0011:createSDFCollisionSystem","exportIndex":11,"name":"createSDFCollisionSystem","kind":"function","signature":"createSDFCollisionSystem(device, initialCapacity = 64)","summary":"Create SDF collision system"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAdvanced.md","moduleTitle":"sim/particles/ParticleAdvanced","source":"engine/sim/particles/ParticleAdvanced.js","import":"/engine/sim/particles/ParticleAdvanced.js","sourceHash":"f8b5e46d39b950fd58d722f2139738525e4b4408b70ab514601d46dde14c5211","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAdvanced.js#0012:addSDFCollider","exportIndex":12,"name":"addSDFCollider","kind":"function","signature":"addSDFCollider(sdfSystem, device, type, center, radius, halfExtents = [1, 1, 1])","summary":"Add an SDF collider"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAdvanced.md","moduleTitle":"sim/particles/ParticleAdvanced","source":"engine/sim/particles/ParticleAdvanced.js","import":"/engine/sim/particles/ParticleAdvanced.js","sourceHash":"f8b5e46d39b950fd58d722f2139738525e4b4408b70ab514601d46dde14c5211","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAdvanced.js#0013:clearSDFColliders","exportIndex":13,"name":"clearSDFColliders","kind":"function","signature":"clearSDFColliders(sdfSystem)","summary":"Clear all SDF colliders (for per-frame rebuild from entity shapes)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAdvanced.md","moduleTitle":"sim/particles/ParticleAdvanced","source":"engine/sim/particles/ParticleAdvanced.js","import":"/engine/sim/particles/ParticleAdvanced.js","sourceHash":"f8b5e46d39b950fd58d722f2139738525e4b4408b70ab514601d46dde14c5211","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAdvanced.js#0014:rebuildSDFColliders","exportIndex":14,"name":"rebuildSDFColliders","kind":"function","signature":"rebuildSDFColliders(sdfSystem, device, colliders)","summary":"Batch-write SDF colliders from an array of collider descriptors. Much more efficient than calling addSDFCollider() in a loop."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAdvanced.md","moduleTitle":"sim/particles/ParticleAdvanced","source":"engine/sim/particles/ParticleAdvanced.js","import":"/engine/sim/particles/ParticleAdvanced.js","sourceHash":"f8b5e46d39b950fd58d722f2139738525e4b4408b70ab514601d46dde14c5211","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAdvanced.js#0015:initSDFBindGroup","exportIndex":15,"name":"initSDFBindGroup","kind":"function","signature":"initSDFBindGroup(sdfSystem, device, positionsBuffer, velocitiesBuffer, metaBuffer = null)","summary":"Initialize SDF collision bind group"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAdvanced.md","moduleTitle":"sim/particles/ParticleAdvanced","source":"engine/sim/particles/ParticleAdvanced.js","import":"/engine/sim/particles/ParticleAdvanced.js","sourceHash":"f8b5e46d39b950fd58d722f2139738525e4b4408b70ab514601d46dde14c5211","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAdvanced.js#0016:executeSDFCollision","exportIndex":16,"name":"executeSDFCollision","kind":"function","signature":"executeSDFCollision(sdfSystem, device, particleCount, bounciness = 0.3, friction = 0.1, options = {})","summary":"Execute SDF collision pass"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAdvanced.md","moduleTitle":"sim/particles/ParticleAdvanced","source":"engine/sim/particles/ParticleAdvanced.js","import":"/engine/sim/particles/ParticleAdvanced.js","sourceHash":"f8b5e46d39b950fd58d722f2139738525e4b4408b70ab514601d46dde14c5211","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAdvanced.js#0017:createSeedingSystem","exportIndex":17,"name":"createSeedingSystem","kind":"function","signature":"createSeedingSystem(device)","summary":"Create GPU particle seeding system"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAdvanced.md","moduleTitle":"sim/particles/ParticleAdvanced","source":"engine/sim/particles/ParticleAdvanced.js","import":"/engine/sim/particles/ParticleAdvanced.js","sourceHash":"f8b5e46d39b950fd58d722f2139738525e4b4408b70ab514601d46dde14c5211","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAdvanced.js#0018:initSeedingBindGroup","exportIndex":18,"name":"initSeedingBindGroup","kind":"function","signature":"initSeedingBindGroup(seedSystem, device, positionsBuffer, velocitiesBuffer)","summary":"Initialize seeding bind group"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAdvanced.md","moduleTitle":"sim/particles/ParticleAdvanced","source":"engine/sim/particles/ParticleAdvanced.js","import":"/engine/sim/particles/ParticleAdvanced.js","sourceHash":"f8b5e46d39b950fd58d722f2139738525e4b4408b70ab514601d46dde14c5211","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAdvanced.js#0019:seedParticlesGPU","exportIndex":19,"name":"seedParticlesGPU","kind":"function","signature":"seedParticlesGPU(seedSystem, device, particleCount, options = {})","summary":"Seed particles on GPU"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAdvanced.md","moduleTitle":"sim/particles/ParticleAdvanced","source":"engine/sim/particles/ParticleAdvanced.js","import":"/engine/sim/particles/ParticleAdvanced.js","sourceHash":"f8b5e46d39b950fd58d722f2139738525e4b4408b70ab514601d46dde14c5211","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAdvanced.js#0020:createVolumetricLightingSystem","exportIndex":20,"name":"createVolumetricLightingSystem","kind":"function","signature":"createVolumetricLightingSystem(device, maxParticles)","summary":"Create volumetric lighting system for particles"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAdvanced.md","moduleTitle":"sim/particles/ParticleAdvanced","source":"engine/sim/particles/ParticleAdvanced.js","import":"/engine/sim/particles/ParticleAdvanced.js","sourceHash":"f8b5e46d39b950fd58d722f2139738525e4b4408b70ab514601d46dde14c5211","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAdvanced.js#0021:initVolumetricBindGroup","exportIndex":21,"name":"initVolumetricBindGroup","kind":"function","signature":"initVolumetricBindGroup(volSystem, device, positionsBuffer, thermalBuffer, velocitiesBuffer)","summary":"Initialize volumetric lighting bind group"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAdvanced.md","moduleTitle":"sim/particles/ParticleAdvanced","source":"engine/sim/particles/ParticleAdvanced.js","import":"/engine/sim/particles/ParticleAdvanced.js","sourceHash":"f8b5e46d39b950fd58d722f2139738525e4b4408b70ab514601d46dde14c5211","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAdvanced.js#0022:computeVolumetricLighting","exportIndex":22,"name":"computeVolumetricLighting","kind":"function","signature":"computeVolumetricLighting(volSystem, device, particleCount, lightPos, lightColor, options = {})","summary":"Compute volumetric lighting for particles"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAdvanced.md","moduleTitle":"sim/particles/ParticleAdvanced","source":"engine/sim/particles/ParticleAdvanced.js","import":"/engine/sim/particles/ParticleAdvanced.js","sourceHash":"f8b5e46d39b950fd58d722f2139738525e4b4408b70ab514601d46dde14c5211","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAdvanced.js#0023:createDepthCollisionSystem","exportIndex":23,"name":"createDepthCollisionSystem","kind":"function","signature":"createDepthCollisionSystem(device, maxParticles)","summary":"Create depth buffer collision system. Bind group is created separately via initDepthCollisionBindGroup (recreate on depth texture resize)."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAdvanced.md","moduleTitle":"sim/particles/ParticleAdvanced","source":"engine/sim/particles/ParticleAdvanced.js","import":"/engine/sim/particles/ParticleAdvanced.js","sourceHash":"f8b5e46d39b950fd58d722f2139738525e4b4408b70ab514601d46dde14c5211","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAdvanced.js#0024:initDepthCollisionBindGroup","exportIndex":24,"name":"initDepthCollisionBindGroup","kind":"function","signature":"initDepthCollisionBindGroup(system, device, positionsBuffer, velocitiesBuffer, depthTextureView)","summary":"Initialize or recreate the depth collision bind group. Must be called whenever the depth texture changes (e.g., on window resize)."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAdvanced.md","moduleTitle":"sim/particles/ParticleAdvanced","source":"engine/sim/particles/ParticleAdvanced.js","import":"/engine/sim/particles/ParticleAdvanced.js","sourceHash":"f8b5e46d39b950fd58d722f2139738525e4b4408b70ab514601d46dde14c5211","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAdvanced.js#0025:executeDepthCollision","exportIndex":25,"name":"executeDepthCollision","kind":"function","signature":"executeDepthCollision(system, device, particleCount, viewProj, invViewProj, options = {})","summary":"Execute depth buffer collision compute pass."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAttributeReader.md","moduleTitle":"sim/particles/ParticleAttributeReader","source":"engine/sim/particles/ParticleAttributeReader.js","import":"/engine/sim/particles/ParticleAttributeReader.js","sourceHash":"489ec800ab3d1e0e1ec3e0bea254ec1eaee32cc71304cb81412696b92d8bc2cf","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleAttributeReader.js","title":"sim/particles/ParticleAttributeReader","summary":"ParticleAttributeReader.js - Cross-Emitter Attribute Reader (GAP 21) Allows one emitter to read particle data from another emitter's buffers. Enables leader-follower, flocking, synchronized multi-layer effects. Matches Niagara's Particle Attribute Reader data interface. Two modes: 1. Direct index: read specific particle by index (leader-follower) 2. Nearest query: find closest particle to a given position (via spatial grid) Usage: const reader = createAttributeReader(sourceWorld); // In consumer emitter logic: const pos = readParticlePosition(reader, particleIndex); const vel = readParticleVelocity(reader, particleIndex); const nearest = findNearestParticle(reader, queryPos);","exportCount":8}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAttributeReader.md","moduleTitle":"sim/particles/ParticleAttributeReader","source":"engine/sim/particles/ParticleAttributeReader.js","import":"/engine/sim/particles/ParticleAttributeReader.js","sourceHash":"489ec800ab3d1e0e1ec3e0bea254ec1eaee32cc71304cb81412696b92d8bc2cf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAttributeReader.js#0000:createAttributeReader","exportIndex":0,"name":"createAttributeReader","kind":"function","signature":"createAttributeReader(sourceWorld, options = {})","summary":"Create an attribute reader bound to a source particle world."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAttributeReader.md","moduleTitle":"sim/particles/ParticleAttributeReader","source":"engine/sim/particles/ParticleAttributeReader.js","import":"/engine/sim/particles/ParticleAttributeReader.js","sourceHash":"489ec800ab3d1e0e1ec3e0bea254ec1eaee32cc71304cb81412696b92d8bc2cf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAttributeReader.js#0001:refreshAttributeCache","exportIndex":1,"name":"refreshAttributeCache","kind":"function","signature":"async refreshAttributeCache(reader, frameIndex)","summary":"Refresh CPU-side cache from GPU buffers (async). Call once per frame before reading attributes."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAttributeReader.md","moduleTitle":"sim/particles/ParticleAttributeReader","source":"engine/sim/particles/ParticleAttributeReader.js","import":"/engine/sim/particles/ParticleAttributeReader.js","sourceHash":"489ec800ab3d1e0e1ec3e0bea254ec1eaee32cc71304cb81412696b92d8bc2cf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAttributeReader.js#0002:readParticlePosition","exportIndex":2,"name":"readParticlePosition","kind":"function","signature":"readParticlePosition(reader, index)","summary":"Read a particle's position and age."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAttributeReader.md","moduleTitle":"sim/particles/ParticleAttributeReader","source":"engine/sim/particles/ParticleAttributeReader.js","import":"/engine/sim/particles/ParticleAttributeReader.js","sourceHash":"489ec800ab3d1e0e1ec3e0bea254ec1eaee32cc71304cb81412696b92d8bc2cf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAttributeReader.js#0003:readParticleVelocity","exportIndex":3,"name":"readParticleVelocity","kind":"function","signature":"readParticleVelocity(reader, index)","summary":"Read a particle's velocity and lifetime."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAttributeReader.md","moduleTitle":"sim/particles/ParticleAttributeReader","source":"engine/sim/particles/ParticleAttributeReader.js","import":"/engine/sim/particles/ParticleAttributeReader.js","sourceHash":"489ec800ab3d1e0e1ec3e0bea254ec1eaee32cc71304cb81412696b92d8bc2cf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAttributeReader.js#0004:readParticleMeta","exportIndex":4,"name":"readParticleMeta","kind":"function","signature":"readParticleMeta(reader, index)","summary":"Read a particle's color and packed meta."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAttributeReader.md","moduleTitle":"sim/particles/ParticleAttributeReader","source":"engine/sim/particles/ParticleAttributeReader.js","import":"/engine/sim/particles/ParticleAttributeReader.js","sourceHash":"489ec800ab3d1e0e1ec3e0bea254ec1eaee32cc71304cb81412696b92d8bc2cf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAttributeReader.js#0005:findNearestParticle","exportIndex":5,"name":"findNearestParticle","kind":"function","signature":"findNearestParticle(reader, queryPos, maxParticles)","summary":"Find the nearest alive particle to a query position (brute force). For large counts, use the spatial grid instead."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAttributeReader.md","moduleTitle":"sim/particles/ParticleAttributeReader","source":"engine/sim/particles/ParticleAttributeReader.js","import":"/engine/sim/particles/ParticleAttributeReader.js","sourceHash":"489ec800ab3d1e0e1ec3e0bea254ec1eaee32cc71304cb81412696b92d8bc2cf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAttributeReader.js#0006:findParticlesInRadius","exportIndex":6,"name":"findParticlesInRadius","kind":"function","signature":"findParticlesInRadius(reader, queryPos, radius, maxResults = 32)","summary":"Find all particles within a radius of a query position."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAttributeReader.md","moduleTitle":"sim/particles/ParticleAttributeReader","source":"engine/sim/particles/ParticleAttributeReader.js","import":"/engine/sim/particles/ParticleAttributeReader.js","sourceHash":"489ec800ab3d1e0e1ec3e0bea254ec1eaee32cc71304cb81412696b92d8bc2cf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAttributeReader.js#0007:destroyAttributeReader","exportIndex":7,"name":"destroyAttributeReader","kind":"function","signature":"destroyAttributeReader(reader)","summary":"Destroy the reader."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAudioBridge.md","moduleTitle":"sim/particles/ParticleAudioBridge","source":"engine/sim/particles/ParticleAudioBridge.js","import":"/engine/sim/particles/ParticleAudioBridge.js","sourceHash":"c900b09bddf0e4c9b178db0075f54a6f3f8902655fdab24567e994cb63a1214b","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleAudioBridge.js","title":"sim/particles/ParticleAudioBridge","summary":"ParticleAudioBridge.js - Real-Time Procedural Spatial Audio for Particle Systems Zero-latency audio driven by GPU particle events via onParticleEvent callbacks. Every collision triggers sound immediately — no polling, no timers. Architecture informed by FMOD, PopcornFX, and Web Audio API perf research: - HRTF panning — binaural left/right ear simulation with elevation + front/back cues - Spatial clustering — nearby same-material impacts merge into single louder sound - Priority classes — critical/high/normal/low tiers (FMOD-style, not just volume) - Fade-out on voice steal — 5ms gain ramp prevents audible clicks - Separate ambient bus — continuous loops bypass transient compressor (no pumping) - Listener orientation — correct panning from camera forward/up vectors - Shared AudioContext — accepts external context to avoid browser resource limits - Per-material spatial cooldown — dedupes only within a radius, not globally - Dynamic compressor on impact bus — tames peak transients without affecting ambients Usage: const bridge = createAudioBridge({ maxVoices: 32, maxDistance: 100 }); wireEventCallbacks(bridge, world.eventSystem, getMaterialForEvent); // Per-frame (for ambient loops + listener tracking): updateListenerFromCamera(bridge, camera); updateEmitterAmbients(bridge, emitters); // Cleanup: destroyAudioBridge(bridge);","exportCount":37}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAudioBridge.md","moduleTitle":"sim/particles/ParticleAudioBridge","source":"engine/sim/particles/ParticleAudioBridge.js","import":"/engine/sim/particles/ParticleAudioBridge.js","sourceHash":"c900b09bddf0e4c9b178db0075f54a6f3f8902655fdab24567e994cb63a1214b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAudioBridge.js#0000:createAudioBridge","exportIndex":0,"name":"createAudioBridge","kind":"function","signature":"createAudioBridge(config = {})","summary":"Create an audio bridge with full voice management."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAudioBridge.md","moduleTitle":"sim/particles/ParticleAudioBridge","source":"engine/sim/particles/ParticleAudioBridge.js","import":"/engine/sim/particles/ParticleAudioBridge.js","sourceHash":"c900b09bddf0e4c9b178db0075f54a6f3f8902655fdab24567e994cb63a1214b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAudioBridge.js#0001:destroyAudioBridge","exportIndex":1,"name":"destroyAudioBridge","kind":"function","signature":"destroyAudioBridge(bridge)","summary":"Destroy the bridge and release all audio resources."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAudioBridge.md","moduleTitle":"sim/particles/ParticleAudioBridge","source":"engine/sim/particles/ParticleAudioBridge.js","import":"/engine/sim/particles/ParticleAudioBridge.js","sourceHash":"c900b09bddf0e4c9b178db0075f54a6f3f8902655fdab24567e994cb63a1214b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAudioBridge.js#0002:setAudioListenerPos","exportIndex":2,"name":"setAudioListenerPos","kind":"function","signature":"setAudioListenerPos(bridge, x, y, z)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAudioBridge.md","moduleTitle":"sim/particles/ParticleAudioBridge","source":"engine/sim/particles/ParticleAudioBridge.js","import":"/engine/sim/particles/ParticleAudioBridge.js","sourceHash":"c900b09bddf0e4c9b178db0075f54a6f3f8902655fdab24567e994cb63a1214b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAudioBridge.js#0003:updateListenerFromCamera","exportIndex":3,"name":"updateListenerFromCamera","kind":"function","signature":"updateListenerFromCamera(bridge, camera)","summary":"Update listener from a camera object. Sets both position AND orientation for correct spatial panning (research: without orientation, all panning is wrong)."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAudioBridge.md","moduleTitle":"sim/particles/ParticleAudioBridge","source":"engine/sim/particles/ParticleAudioBridge.js","import":"/engine/sim/particles/ParticleAudioBridge.js","sourceHash":"c900b09bddf0e4c9b178db0075f54a6f3f8902655fdab24567e994cb63a1214b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAudioBridge.js#0004:flushImpactBatches","exportIndex":4,"name":"flushImpactBatches","kind":"function","signature":"flushImpactBatches(bridge)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAudioBridge.md","moduleTitle":"sim/particles/ParticleAudioBridge","source":"engine/sim/particles/ParticleAudioBridge.js","import":"/engine/sim/particles/ParticleAudioBridge.js","sourceHash":"c900b09bddf0e4c9b178db0075f54a6f3f8902655fdab24567e994cb63a1214b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAudioBridge.js#0005:triggerImpact","exportIndex":5,"name":"triggerImpact","kind":"function","signature":"triggerImpact(bridge, material, position, speed = 2, temperature = 300, priorityClass = PRIORITY_NORMAL, velocity = null)","summary":"Trigger an impact sound immediately. Used for reaction events and manual triggers. For collision/death events, use the batched system (flushImpactBatches) instead."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAudioBridge.md","moduleTitle":"sim/particles/ParticleAudioBridge","source":"engine/sim/particles/ParticleAudioBridge.js","import":"/engine/sim/particles/ParticleAudioBridge.js","sourceHash":"c900b09bddf0e4c9b178db0075f54a6f3f8902655fdab24567e994cb63a1214b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAudioBridge.js#0006:wireEventCallbacks","exportIndex":6,"name":"wireEventCallbacks","kind":"function","signature":"wireEventCallbacks(bridge, eventSystem, getMaterial)","summary":"Wire the bridge into the ParticleEventSystem via onParticleEvent callbacks. Fires immediately when readbackEvents completes — zero polling, zero timers. Registers for collision events (type 2, 3) and death events (type 1)."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAudioBridge.md","moduleTitle":"sim/particles/ParticleAudioBridge","source":"engine/sim/particles/ParticleAudioBridge.js","import":"/engine/sim/particles/ParticleAudioBridge.js","sourceHash":"c900b09bddf0e4c9b178db0075f54a6f3f8902655fdab24567e994cb63a1214b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAudioBridge.js#0007:unwireEventCallbacks","exportIndex":7,"name":"unwireEventCallbacks","kind":"function","signature":"unwireEventCallbacks(bridge)","summary":"Unwire event callbacks (for cleanup). Actually removes the callback functions from the event system's callback arrays."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAudioBridge.md","moduleTitle":"sim/particles/ParticleAudioBridge","source":"engine/sim/particles/ParticleAudioBridge.js","import":"/engine/sim/particles/ParticleAudioBridge.js","sourceHash":"c900b09bddf0e4c9b178db0075f54a6f3f8902655fdab24567e994cb63a1214b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAudioBridge.js#0008:updateAmbientLoop","exportIndex":8,"name":"updateAmbientLoop","kind":"function","signature":"updateAmbientLoop(bridge, emitterId, material, position, params = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAudioBridge.md","moduleTitle":"sim/particles/ParticleAudioBridge","source":"engine/sim/particles/ParticleAudioBridge.js","import":"/engine/sim/particles/ParticleAudioBridge.js","sourceHash":"c900b09bddf0e4c9b178db0075f54a6f3f8902655fdab24567e994cb63a1214b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAudioBridge.js#0009:stopAmbientLoop","exportIndex":9,"name":"stopAmbientLoop","kind":"function","signature":"stopAmbientLoop(bridge, emitterId)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAudioBridge.md","moduleTitle":"sim/particles/ParticleAudioBridge","source":"engine/sim/particles/ParticleAudioBridge.js","import":"/engine/sim/particles/ParticleAudioBridge.js","sourceHash":"c900b09bddf0e4c9b178db0075f54a6f3f8902655fdab24567e994cb63a1214b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAudioBridge.js#0010:stopAllAmbientLoops","exportIndex":10,"name":"stopAllAmbientLoops","kind":"function","signature":"stopAllAmbientLoops(bridge)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAudioBridge.md","moduleTitle":"sim/particles/ParticleAudioBridge","source":"engine/sim/particles/ParticleAudioBridge.js","import":"/engine/sim/particles/ParticleAudioBridge.js","sourceHash":"c900b09bddf0e4c9b178db0075f54a6f3f8902655fdab24567e994cb63a1214b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAudioBridge.js#0011:stopAllSounds","exportIndex":11,"name":"stopAllSounds","kind":"function","signature":"stopAllSounds(bridge)","summary":"Immediately silence ALL particle audio — impacts + ambients. Called when the editor exits play mode (Stop button)."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAudioBridge.md","moduleTitle":"sim/particles/ParticleAudioBridge","source":"engine/sim/particles/ParticleAudioBridge.js","import":"/engine/sim/particles/ParticleAudioBridge.js","sourceHash":"c900b09bddf0e4c9b178db0075f54a6f3f8902655fdab24567e994cb63a1214b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAudioBridge.js#0012:updateEmitterAmbients","exportIndex":12,"name":"updateEmitterAmbients","kind":"function","signature":"updateEmitterAmbients(bridge, emitters)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAudioBridge.md","moduleTitle":"sim/particles/ParticleAudioBridge","source":"engine/sim/particles/ParticleAudioBridge.js","import":"/engine/sim/particles/ParticleAudioBridge.js","sourceHash":"c900b09bddf0e4c9b178db0075f54a6f3f8902655fdab24567e994cb63a1214b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAudioBridge.js#0013:setParticleAudioVolume","exportIndex":13,"name":"setParticleAudioVolume","kind":"function","signature":"setParticleAudioVolume(bridge, volume)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAudioBridge.md","moduleTitle":"sim/particles/ParticleAudioBridge","source":"engine/sim/particles/ParticleAudioBridge.js","import":"/engine/sim/particles/ParticleAudioBridge.js","sourceHash":"c900b09bddf0e4c9b178db0075f54a6f3f8902655fdab24567e994cb63a1214b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAudioBridge.js#0014:setReverbParams","exportIndex":14,"name":"setReverbParams","kind":"function","signature":"setReverbParams(bridge, params = {})","summary":"Update reverb parameters at runtime (e.g., when entering a cave or outdoor area)."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAudioBridge.md","moduleTitle":"sim/particles/ParticleAudioBridge","source":"engine/sim/particles/ParticleAudioBridge.js","import":"/engine/sim/particles/ParticleAudioBridge.js","sourceHash":"c900b09bddf0e4c9b178db0075f54a6f3f8902655fdab24567e994cb63a1214b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAudioBridge.js#0015:setImpactVolume","exportIndex":15,"name":"setImpactVolume","kind":"function","signature":"setImpactVolume(bridge, volume)","summary":"Set impact bus volume independently (0-1). Smoothed to avoid zipper noise."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAudioBridge.md","moduleTitle":"sim/particles/ParticleAudioBridge","source":"engine/sim/particles/ParticleAudioBridge.js","import":"/engine/sim/particles/ParticleAudioBridge.js","sourceHash":"c900b09bddf0e4c9b178db0075f54a6f3f8902655fdab24567e994cb63a1214b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAudioBridge.js#0016:setAmbientVolume","exportIndex":16,"name":"setAmbientVolume","kind":"function","signature":"setAmbientVolume(bridge, volume)","summary":"Set ambient bus volume independently (0-1). Smoothed to avoid zipper noise."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAudioBridge.md","moduleTitle":"sim/particles/ParticleAudioBridge","source":"engine/sim/particles/ParticleAudioBridge.js","import":"/engine/sim/particles/ParticleAudioBridge.js","sourceHash":"c900b09bddf0e4c9b178db0075f54a6f3f8902655fdab24567e994cb63a1214b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAudioBridge.js#0017:resumeAudioContext","exportIndex":17,"name":"resumeAudioContext","kind":"function","signature":"resumeAudioContext(bridge)","summary":"Resume AudioContext after browser autoplay policy suspension. Research (Chrome/Safari): Context starts 'suspended' until user gesture. Call this from your first click/keydown handler."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAudioBridge.md","moduleTitle":"sim/particles/ParticleAudioBridge","source":"engine/sim/particles/ParticleAudioBridge.js","import":"/engine/sim/particles/ParticleAudioBridge.js","sourceHash":"c900b09bddf0e4c9b178db0075f54a6f3f8902655fdab24567e994cb63a1214b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAudioBridge.js#0018:autoUnlockAudioContext","exportIndex":18,"name":"autoUnlockAudioContext","kind":"function","signature":"autoUnlockAudioContext(bridge)","summary":"Auto-unlock AudioContext on first user interaction (Safari/iOS workaround). Research (Matt Montag): Safari requires resume() from touch/click handler. Registers one-shot listeners that self-remove after first successful resume."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAudioBridge.md","moduleTitle":"sim/particles/ParticleAudioBridge","source":"engine/sim/particles/ParticleAudioBridge.js","import":"/engine/sim/particles/ParticleAudioBridge.js","sourceHash":"c900b09bddf0e4c9b178db0075f54a6f3f8902655fdab24567e994cb63a1214b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAudioBridge.js#0019:pauseAllAudio","exportIndex":19,"name":"pauseAllAudio","kind":"function","signature":"pauseAllAudio(bridge)","summary":"Pause all audio (suspend context). Use when tab hidden or game paused. Research (web.dev Fieldrunners): every game should pause audio on tab hide to prevent wasted CPU and audio buildup."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAudioBridge.md","moduleTitle":"sim/particles/ParticleAudioBridge","source":"engine/sim/particles/ParticleAudioBridge.js","import":"/engine/sim/particles/ParticleAudioBridge.js","sourceHash":"c900b09bddf0e4c9b178db0075f54a6f3f8902655fdab24567e994cb63a1214b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAudioBridge.js#0020:resumeAllAudio","exportIndex":20,"name":"resumeAllAudio","kind":"function","signature":"resumeAllAudio(bridge)","summary":"Resume all audio after pause."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAudioBridge.md","moduleTitle":"sim/particles/ParticleAudioBridge","source":"engine/sim/particles/ParticleAudioBridge.js","import":"/engine/sim/particles/ParticleAudioBridge.js","sourceHash":"c900b09bddf0e4c9b178db0075f54a6f3f8902655fdab24567e994cb63a1214b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAudioBridge.js#0021:hookVisibilityAutoPause","exportIndex":21,"name":"hookVisibilityAutoPause","kind":"function","signature":"hookVisibilityAutoPause(bridge)","summary":"Hook into Page Visibility API to auto-pause/resume audio. Call once after createAudioBridge."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAudioBridge.md","moduleTitle":"sim/particles/ParticleAudioBridge","source":"engine/sim/particles/ParticleAudioBridge.js","import":"/engine/sim/particles/ParticleAudioBridge.js","sourceHash":"c900b09bddf0e4c9b178db0075f54a6f3f8902655fdab24567e994cb63a1214b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAudioBridge.js#0022:getAudioBridgeStats","exportIndex":22,"name":"getAudioBridgeStats","kind":"function","signature":"getAudioBridgeStats(bridge)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAudioBridge.md","moduleTitle":"sim/particles/ParticleAudioBridge","source":"engine/sim/particles/ParticleAudioBridge.js","import":"/engine/sim/particles/ParticleAudioBridge.js","sourceHash":"c900b09bddf0e4c9b178db0075f54a6f3f8902655fdab24567e994cb63a1214b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAudioBridge.js#0023:setOcclusionCallback","exportIndex":23,"name":"setOcclusionCallback","kind":"function","signature":"setOcclusionCallback(bridge, fn)","summary":"Set an occlusion callback. The function receives (sourcePos, listenerPos) and returns 0-1 (0=fully occluded, 1=clear). Used to modulate LPF cutoff for obstruction. Game code provides the raycast logic; audio system just applies the result."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAudioBridge.md","moduleTitle":"sim/particles/ParticleAudioBridge","source":"engine/sim/particles/ParticleAudioBridge.js","import":"/engine/sim/particles/ParticleAudioBridge.js","sourceHash":"c900b09bddf0e4c9b178db0075f54a6f3f8902655fdab24567e994cb63a1214b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAudioBridge.js#0024:soloMaterial","exportIndex":24,"name":"soloMaterial","kind":"function","signature":"soloMaterial(bridge, patchKey)","summary":"Debug: solo a specific material (only that material plays). Pass null to clear."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAudioBridge.md","moduleTitle":"sim/particles/ParticleAudioBridge","source":"engine/sim/particles/ParticleAudioBridge.js","import":"/engine/sim/particles/ParticleAudioBridge.js","sourceHash":"c900b09bddf0e4c9b178db0075f54a6f3f8902655fdab24567e994cb63a1214b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAudioBridge.js#0025:muteMaterial","exportIndex":25,"name":"muteMaterial","kind":"function","signature":"muteMaterial(bridge, patchKey)","summary":"Debug: mute a specific material. Pass null to unmute all."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAudioBridge.md","moduleTitle":"sim/particles/ParticleAudioBridge","source":"engine/sim/particles/ParticleAudioBridge.js","import":"/engine/sim/particles/ParticleAudioBridge.js","sourceHash":"c900b09bddf0e4c9b178db0075f54a6f3f8902655fdab24567e994cb63a1214b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAudioBridge.js#0026:resetAudioBridgeStats","exportIndex":26,"name":"resetAudioBridgeStats","kind":"function","signature":"resetAudioBridgeStats(bridge)","summary":"Reset per-frame stats counters for delta profiling. Call after getAudioBridgeStats each frame."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAudioBridge.md","moduleTitle":"sim/particles/ParticleAudioBridge","source":"engine/sim/particles/ParticleAudioBridge.js","import":"/engine/sim/particles/ParticleAudioBridge.js","sourceHash":"c900b09bddf0e4c9b178db0075f54a6f3f8902655fdab24567e994cb63a1214b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAudioBridge.js#0027:registerAudioCue","exportIndex":27,"name":"registerAudioCue","kind":"function","signature":"registerAudioCue()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAudioBridge.md","moduleTitle":"sim/particles/ParticleAudioBridge","source":"engine/sim/particles/ParticleAudioBridge.js","import":"/engine/sim/particles/ParticleAudioBridge.js","sourceHash":"c900b09bddf0e4c9b178db0075f54a6f3f8902655fdab24567e994cb63a1214b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAudioBridge.js#0028:processAudioEvents","exportIndex":28,"name":"processAudioEvents","kind":"function","signature":"processAudioEvents()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAudioBridge.md","moduleTitle":"sim/particles/ParticleAudioBridge","source":"engine/sim/particles/ParticleAudioBridge.js","import":"/engine/sim/particles/ParticleAudioBridge.js","sourceHash":"c900b09bddf0e4c9b178db0075f54a6f3f8902655fdab24567e994cb63a1214b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAudioBridge.js#0029:flushPendingAudio","exportIndex":29,"name":"flushPendingAudio","kind":"function","signature":"flushPendingAudio()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAudioBridge.md","moduleTitle":"sim/particles/ParticleAudioBridge","source":"engine/sim/particles/ParticleAudioBridge.js","import":"/engine/sim/particles/ParticleAudioBridge.js","sourceHash":"c900b09bddf0e4c9b178db0075f54a6f3f8902655fdab24567e994cb63a1214b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAudioBridge.js#0030:unregisterAudioCue","exportIndex":30,"name":"unregisterAudioCue","kind":"function","signature":"unregisterAudioCue()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAudioBridge.md","moduleTitle":"sim/particles/ParticleAudioBridge","source":"engine/sim/particles/ParticleAudioBridge.js","import":"/engine/sim/particles/ParticleAudioBridge.js","sourceHash":"c900b09bddf0e4c9b178db0075f54a6f3f8902655fdab24567e994cb63a1214b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAudioBridge.js#0031:processParticleEvents","exportIndex":31,"name":"processParticleEvents","kind":"function","signature":"processParticleEvents()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAudioBridge.md","moduleTitle":"sim/particles/ParticleAudioBridge","source":"engine/sim/particles/ParticleAudioBridge.js","import":"/engine/sim/particles/ParticleAudioBridge.js","sourceHash":"c900b09bddf0e4c9b178db0075f54a6f3f8902655fdab24567e994cb63a1214b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAudioBridge.js#0032:PRIORITY_CRITICAL","exportIndex":32,"name":"PRIORITY_CRITICAL","kind":"constant","signature":"PRIORITY_CRITICAL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAudioBridge.md","moduleTitle":"sim/particles/ParticleAudioBridge","source":"engine/sim/particles/ParticleAudioBridge.js","import":"/engine/sim/particles/ParticleAudioBridge.js","sourceHash":"c900b09bddf0e4c9b178db0075f54a6f3f8902655fdab24567e994cb63a1214b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAudioBridge.js#0033:PRIORITY_HIGH","exportIndex":33,"name":"PRIORITY_HIGH","kind":"constant","signature":"PRIORITY_HIGH","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAudioBridge.md","moduleTitle":"sim/particles/ParticleAudioBridge","source":"engine/sim/particles/ParticleAudioBridge.js","import":"/engine/sim/particles/ParticleAudioBridge.js","sourceHash":"c900b09bddf0e4c9b178db0075f54a6f3f8902655fdab24567e994cb63a1214b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAudioBridge.js#0034:PRIORITY_NORMAL","exportIndex":34,"name":"PRIORITY_NORMAL","kind":"constant","signature":"PRIORITY_NORMAL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAudioBridge.md","moduleTitle":"sim/particles/ParticleAudioBridge","source":"engine/sim/particles/ParticleAudioBridge.js","import":"/engine/sim/particles/ParticleAudioBridge.js","sourceHash":"c900b09bddf0e4c9b178db0075f54a6f3f8902655fdab24567e994cb63a1214b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAudioBridge.js#0035:PRIORITY_LOW","exportIndex":35,"name":"PRIORITY_LOW","kind":"constant","signature":"PRIORITY_LOW","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleAudioBridge.md","moduleTitle":"sim/particles/ParticleAudioBridge","source":"engine/sim/particles/ParticleAudioBridge.js","import":"/engine/sim/particles/ParticleAudioBridge.js","sourceHash":"c900b09bddf0e4c9b178db0075f54a6f3f8902655fdab24567e994cb63a1214b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleAudioBridge.js#0036:PRIORITY_AMBIENT","exportIndex":36,"name":"PRIORITY_AMBIENT","kind":"constant","signature":"PRIORITY_AMBIENT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleBonds.md","moduleTitle":"sim/particles/ParticleBonds","source":"engine/sim/particles/ParticleBonds.js","import":"/engine/sim/particles/ParticleBonds.js","sourceHash":"6dadff8e5d6710eaf288c3775f6cb08e74d1b59b7451e232abf33d6956c091fc","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleBonds.js","title":"sim/particles/ParticleBonds","summary":"ParticleBonds.js - Dynamic Bond Formation & Breaking System Manages runtime creation and destruction of particle bonds (WELD, STICKY constraints) driven by proximity, temperature, and particle flags. Features: - Bond formation: WELDABLE particles within threshold + temperature conditions → WELD constraint - Bond breaking: Constraints with FLAG_BROKEN get cleaned up + optional break effects - Temperature-driven dynamics: Freezing forms bonds, melting breaks them - Rate limiting: Max bonds per frame to prevent GPU stalls","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleBonds.md","moduleTitle":"sim/particles/ParticleBonds","source":"engine/sim/particles/ParticleBonds.js","import":"/engine/sim/particles/ParticleBonds.js","sourceHash":"6dadff8e5d6710eaf288c3775f6cb08e74d1b59b7451e232abf33d6956c091fc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleBonds.js#0000:createBondSystem","exportIndex":0,"name":"createBondSystem","kind":"function","signature":"createBondSystem(world)","summary":"Create a bond management system."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleBonds.md","moduleTitle":"sim/particles/ParticleBonds","source":"engine/sim/particles/ParticleBonds.js","import":"/engine/sim/particles/ParticleBonds.js","sourceHash":"6dadff8e5d6710eaf288c3775f6cb08e74d1b59b7451e232abf33d6956c091fc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleBonds.js#0001:stepBondFormation","exportIndex":1,"name":"stepBondFormation","kind":"function","signature":"stepBondFormation(world, bondSystem, options = {})","summary":"Attempt to form bonds between nearby particles. Called each frame from the simulation loop."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleBonds.md","moduleTitle":"sim/particles/ParticleBonds","source":"engine/sim/particles/ParticleBonds.js","import":"/engine/sim/particles/ParticleBonds.js","sourceHash":"6dadff8e5d6710eaf288c3775f6cb08e74d1b59b7451e232abf33d6956c091fc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleBonds.js#0002:stepBondBreaking","exportIndex":2,"name":"stepBondBreaking","kind":"function","signature":"stepBondBreaking(world, bondSystem, options = {})","summary":"Process broken bonds and clean them up. Call after constraint solver has run."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleBonds.md","moduleTitle":"sim/particles/ParticleBonds","source":"engine/sim/particles/ParticleBonds.js","import":"/engine/sim/particles/ParticleBonds.js","sourceHash":"6dadff8e5d6710eaf288c3775f6cb08e74d1b59b7451e232abf33d6956c091fc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleBonds.js#0003:stepBondSystem","exportIndex":3,"name":"stepBondSystem","kind":"function","signature":"stepBondSystem(world, bondSystem, options = {})","summary":"Step the full bond system (formation + breaking)."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleBonds.md","moduleTitle":"sim/particles/ParticleBonds","source":"engine/sim/particles/ParticleBonds.js","import":"/engine/sim/particles/ParticleBonds.js","sourceHash":"6dadff8e5d6710eaf288c3775f6cb08e74d1b59b7451e232abf33d6956c091fc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleBonds.js#0004:getBondStats","exportIndex":4,"name":"getBondStats","kind":"function","signature":"getBondStats(bondSystem)","summary":"Get bond system stats."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleBonds.md","moduleTitle":"sim/particles/ParticleBonds","source":"engine/sim/particles/ParticleBonds.js","import":"/engine/sim/particles/ParticleBonds.js","sourceHash":"6dadff8e5d6710eaf288c3775f6cb08e74d1b59b7451e232abf33d6956c091fc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleBonds.js#0005:destroyBondSystem","exportIndex":5,"name":"destroyBondSystem","kind":"function","signature":"destroyBondSystem(bondSystem)","summary":"Destroy bond system and clear all bonds."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleChemistry.md","moduleTitle":"sim/particles/ParticleChemistry","source":"engine/sim/particles/ParticleChemistry.js","import":"/engine/sim/particles/ParticleChemistry.js","sourceHash":"01d855dd87f332decf685bac74ff66d2bd9aee35ca4ad2c48a960635693b0407","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleChemistry.js","title":"sim/particles/ParticleChemistry","summary":"ParticleChemistry.js - Chemical Reaction System (GAP 38) GPU compute: valence-electron driven bond formation/breaking. Bonds form when electronegativity difference permits, release/absorb energy that feeds directly into the thermal system. Features: - Valence electron tracking per particle (from element table) - Bond formation: electronegativity difference → ionic vs covalent - Reaction energy ΔH → feeds thermal buffer - Temperature-dependent reaction rate (Arrhenius: k = A·e^(-Ea/RT)) - Bond dissociation at high temperature - Uses neighbor grid (GAP 25) for spatial queries - Outputs bond pairs to CPU for constraint creation (GAP existing) Two-pass approach: Pass 1 (GPU): scan neighbors, compute bond eligibility, write bond candidates Pass 2 (CPU): read back candidates, create constraints, update valence Usage: const chem = createChemistrySystem(device, maxParticles); initChemistryBindGroups(chem, device, posBuffer, velBuffer, gridBuffers, elementTable); executeChemistry(chem, device, particleCount, dt);","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleChemistry.md","moduleTitle":"sim/particles/ParticleChemistry","source":"engine/sim/particles/ParticleChemistry.js","import":"/engine/sim/particles/ParticleChemistry.js","sourceHash":"01d855dd87f332decf685bac74ff66d2bd9aee35ca4ad2c48a960635693b0407","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleChemistry.js#0000:createChemistrySystem","exportIndex":0,"name":"createChemistrySystem","kind":"function","signature":"createChemistrySystem(device, maxParticles)","summary":"Create the chemistry system."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleChemistry.md","moduleTitle":"sim/particles/ParticleChemistry","source":"engine/sim/particles/ParticleChemistry.js","import":"/engine/sim/particles/ParticleChemistry.js","sourceHash":"01d855dd87f332decf685bac74ff66d2bd9aee35ca4ad2c48a960635693b0407","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleChemistry.js#0001:initChemistryBindGroups","exportIndex":1,"name":"initChemistryBindGroups","kind":"function","signature":"initChemistryBindGroups(system, device, positionBuffer, velocityBuffer, gridBuffers, elementTable, thermalBuffer)","summary":"Initialize bind groups."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleChemistry.md","moduleTitle":"sim/particles/ParticleChemistry","source":"engine/sim/particles/ParticleChemistry.js","import":"/engine/sim/particles/ParticleChemistry.js","sourceHash":"01d855dd87f332decf685bac74ff66d2bd9aee35ca4ad2c48a960635693b0407","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleChemistry.js#0002:initParticleValence","exportIndex":2,"name":"initParticleValence","kind":"function","signature":"initParticleValence(system, device, elementData, startIndex, count)","summary":"Initialize valence electrons for a range of particles based on their element."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleChemistry.md","moduleTitle":"sim/particles/ParticleChemistry","source":"engine/sim/particles/ParticleChemistry.js","import":"/engine/sim/particles/ParticleChemistry.js","sourceHash":"01d855dd87f332decf685bac74ff66d2bd9aee35ca4ad2c48a960635693b0407","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleChemistry.js#0003:executeChemistry","exportIndex":3,"name":"executeChemistry","kind":"function","signature":"executeChemistry(system, device, particleCount, dt)","summary":"Execute chemistry compute (bond formation + dissociation)."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleChemistry.md","moduleTitle":"sim/particles/ParticleChemistry","source":"engine/sim/particles/ParticleChemistry.js","import":"/engine/sim/particles/ParticleChemistry.js","sourceHash":"01d855dd87f332decf685bac74ff66d2bd9aee35ca4ad2c48a960635693b0407","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleChemistry.js#0004:getValenceBuffer","exportIndex":4,"name":"getValenceBuffer","kind":"function","signature":"getValenceBuffer(system)","summary":"Get the valence buffer for external use."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleChemistry.md","moduleTitle":"sim/particles/ParticleChemistry","source":"engine/sim/particles/ParticleChemistry.js","import":"/engine/sim/particles/ParticleChemistry.js","sourceHash":"01d855dd87f332decf685bac74ff66d2bd9aee35ca4ad2c48a960635693b0407","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleChemistry.js#0005:destroyChemistrySystem","exportIndex":5,"name":"destroyChemistrySystem","kind":"function","signature":"destroyChemistrySystem(system)","summary":"Destroy."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleClassifier.md","moduleTitle":"sim/particles/ParticleClassifier","source":"engine/sim/particles/ParticleClassifier.js","import":"/engine/sim/particles/ParticleClassifier.js","sourceHash":"2f3955f4ed42318faa3a9867f2dc7200af0abd4113df2c29d5b07caf3202e855","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleClassifier.js","title":"sim/particles/ParticleClassifier","summary":"ParticleClassifier.js - GPU Particle Classification for Fluid Rendering Classifies each liquid particle into categories based on SPH density and velocity. Used by renderers to route particles to different visual styles: - Bulk fluid → SSFR surface rendering (smooth continuous surface) - Surface → SSFR + edge highlight - Spray → Small SDF billboard with fading alpha - Foam → White-tinted SDF billboard on surface - Bubble → Tiny transparent rising sphere Output: per-particle u32 classification buffer (binding for vertex shaders). Classification IDs: 0 = unclassified / non-liquid 1 = bulk (dense interior) 2 = surface (boundary) 3 = spray (isolated, fast) 4 = foam (isolated, slow, near surface) 5 = bubble (isolated, rising) Usage: const cls = createClassifierSystem(device, maxParticles); initClassifierBindGroups(cls, device, posBuffer, velBuffer, thermalBuffer, sphDensityBuffer); executeClassifier(cls, device, particleCount); // cls.classBuffer is a storage buffer readable by vertex shaders","exportCount":12}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleClassifier.md","moduleTitle":"sim/particles/ParticleClassifier","source":"engine/sim/particles/ParticleClassifier.js","import":"/engine/sim/particles/ParticleClassifier.js","sourceHash":"2f3955f4ed42318faa3a9867f2dc7200af0abd4113df2c29d5b07caf3202e855","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleClassifier.js#0000:createClassifierSystem","exportIndex":0,"name":"createClassifierSystem","kind":"function","signature":"createClassifierSystem(device, maxParticles)","summary":"Create the classifier system."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleClassifier.md","moduleTitle":"sim/particles/ParticleClassifier","source":"engine/sim/particles/ParticleClassifier.js","import":"/engine/sim/particles/ParticleClassifier.js","sourceHash":"2f3955f4ed42318faa3a9867f2dc7200af0abd4113df2c29d5b07caf3202e855","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleClassifier.js#0001:initClassifierBindGroups","exportIndex":1,"name":"initClassifierBindGroups","kind":"function","signature":"initClassifierBindGroups(system, device, positionBuffer, velocityBuffer, thermalBuffer, sphDensityBuffer)","summary":"Initialize bind groups."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleClassifier.md","moduleTitle":"sim/particles/ParticleClassifier","source":"engine/sim/particles/ParticleClassifier.js","import":"/engine/sim/particles/ParticleClassifier.js","sourceHash":"2f3955f4ed42318faa3a9867f2dc7200af0abd4113df2c29d5b07caf3202e855","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleClassifier.js#0002:executeClassifier","exportIndex":2,"name":"executeClassifier","kind":"function","signature":"executeClassifier(system, device, particleCount)","summary":"Execute the classification compute pass."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleClassifier.md","moduleTitle":"sim/particles/ParticleClassifier","source":"engine/sim/particles/ParticleClassifier.js","import":"/engine/sim/particles/ParticleClassifier.js","sourceHash":"2f3955f4ed42318faa3a9867f2dc7200af0abd4113df2c29d5b07caf3202e855","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleClassifier.js#0003:getClassificationBuffer","exportIndex":3,"name":"getClassificationBuffer","kind":"function","signature":"getClassificationBuffer(system)","summary":"Get the classification buffer for use by renderers."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleClassifier.md","moduleTitle":"sim/particles/ParticleClassifier","source":"engine/sim/particles/ParticleClassifier.js","import":"/engine/sim/particles/ParticleClassifier.js","sourceHash":"2f3955f4ed42318faa3a9867f2dc7200af0abd4113df2c29d5b07caf3202e855","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleClassifier.js#0004:setClassifierParams","exportIndex":4,"name":"setClassifierParams","kind":"function","signature":"setClassifierParams(system, config)","summary":"Update classifier thresholds at runtime."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleClassifier.md","moduleTitle":"sim/particles/ParticleClassifier","source":"engine/sim/particles/ParticleClassifier.js","import":"/engine/sim/particles/ParticleClassifier.js","sourceHash":"2f3955f4ed42318faa3a9867f2dc7200af0abd4113df2c29d5b07caf3202e855","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleClassifier.js#0005:destroyClassifierSystem","exportIndex":5,"name":"destroyClassifierSystem","kind":"function","signature":"destroyClassifierSystem(system)","summary":"Destroy classifier system."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleClassifier.md","moduleTitle":"sim/particles/ParticleClassifier","source":"engine/sim/particles/ParticleClassifier.js","import":"/engine/sim/particles/ParticleClassifier.js","sourceHash":"2f3955f4ed42318faa3a9867f2dc7200af0abd4113df2c29d5b07caf3202e855","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleClassifier.js#0006:CLASS_NONE","exportIndex":6,"name":"CLASS_NONE","kind":"constant","signature":"CLASS_NONE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleClassifier.md","moduleTitle":"sim/particles/ParticleClassifier","source":"engine/sim/particles/ParticleClassifier.js","import":"/engine/sim/particles/ParticleClassifier.js","sourceHash":"2f3955f4ed42318faa3a9867f2dc7200af0abd4113df2c29d5b07caf3202e855","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleClassifier.js#0007:CLASS_BULK","exportIndex":7,"name":"CLASS_BULK","kind":"constant","signature":"CLASS_BULK","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleClassifier.md","moduleTitle":"sim/particles/ParticleClassifier","source":"engine/sim/particles/ParticleClassifier.js","import":"/engine/sim/particles/ParticleClassifier.js","sourceHash":"2f3955f4ed42318faa3a9867f2dc7200af0abd4113df2c29d5b07caf3202e855","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleClassifier.js#0008:CLASS_SURFACE","exportIndex":8,"name":"CLASS_SURFACE","kind":"constant","signature":"CLASS_SURFACE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleClassifier.md","moduleTitle":"sim/particles/ParticleClassifier","source":"engine/sim/particles/ParticleClassifier.js","import":"/engine/sim/particles/ParticleClassifier.js","sourceHash":"2f3955f4ed42318faa3a9867f2dc7200af0abd4113df2c29d5b07caf3202e855","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleClassifier.js#0009:CLASS_SPRAY","exportIndex":9,"name":"CLASS_SPRAY","kind":"constant","signature":"CLASS_SPRAY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleClassifier.md","moduleTitle":"sim/particles/ParticleClassifier","source":"engine/sim/particles/ParticleClassifier.js","import":"/engine/sim/particles/ParticleClassifier.js","sourceHash":"2f3955f4ed42318faa3a9867f2dc7200af0abd4113df2c29d5b07caf3202e855","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleClassifier.js#0010:CLASS_FOAM","exportIndex":10,"name":"CLASS_FOAM","kind":"constant","signature":"CLASS_FOAM","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleClassifier.md","moduleTitle":"sim/particles/ParticleClassifier","source":"engine/sim/particles/ParticleClassifier.js","import":"/engine/sim/particles/ParticleClassifier.js","sourceHash":"2f3955f4ed42318faa3a9867f2dc7200af0abd4113df2c29d5b07caf3202e855","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleClassifier.js#0011:CLASS_BUBBLE","exportIndex":11,"name":"CLASS_BUBBLE","kind":"constant","signature":"CLASS_BUBBLE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleColorGradient.md","moduleTitle":"sim/particles/ParticleColorGradient","source":"engine/sim/particles/ParticleColorGradient.js","import":"/engine/sim/particles/ParticleColorGradient.js","sourceHash":"d4c21a3e1d17794ce0947485cc381194801a0ac7a8d8a0dc3b68b834330fc82e","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleColorGradient.js","title":"sim/particles/ParticleColorGradient","summary":"ParticleColorGradient.js - N-point color gradient for particles Niagara/PopcornFX parity: arbitrary color ramps over particle lifetime. Replaces the 2-point linear (color → colorEnd) with full gradient control. CPU builds a 1D RGBA LUT texture, GPU samples with t = age/lifetime. Usage: const grad = createColorGradient([ { t: 0.0, color: [1, 0.6, 0.1, 0.0] },  // orange, transparent { t: 0.2, color: [1, 0.8, 0.2, 1.0] },  // bright yellow, full { t: 0.7, color: [0.8, 0.2, 0.0, 0.8] }, // red { t: 1.0, color: [0.3, 0.3, 0.3, 0.0] }, // grey smoke, fade out ]); const texture = uploadGradientTexture(device, grad);","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleColorGradient.md","moduleTitle":"sim/particles/ParticleColorGradient","source":"engine/sim/particles/ParticleColorGradient.js","import":"/engine/sim/particles/ParticleColorGradient.js","sourceHash":"d4c21a3e1d17794ce0947485cc381194801a0ac7a8d8a0dc3b68b834330fc82e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleColorGradient.js#0000:createColorGradient","exportIndex":0,"name":"createColorGradient","kind":"function","signature":"createColorGradient(stops, resolution = 64)","summary":"Create a color gradient from an array of color stops Each color is [r, g, b] or [r, g, b, a] with values 0-1"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleColorGradient.md","moduleTitle":"sim/particles/ParticleColorGradient","source":"engine/sim/particles/ParticleColorGradient.js","import":"/engine/sim/particles/ParticleColorGradient.js","sourceHash":"d4c21a3e1d17794ce0947485cc381194801a0ac7a8d8a0dc3b68b834330fc82e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleColorGradient.js#0001:sampleGradient","exportIndex":1,"name":"sampleGradient","kind":"function","signature":"sampleGradient(stops, t)","summary":"Sample a color gradient at a given t value"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleColorGradient.md","moduleTitle":"sim/particles/ParticleColorGradient","source":"engine/sim/particles/ParticleColorGradient.js","import":"/engine/sim/particles/ParticleColorGradient.js","sourceHash":"d4c21a3e1d17794ce0947485cc381194801a0ac7a8d8a0dc3b68b834330fc82e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleColorGradient.js#0002:uploadGradientTexture","exportIndex":2,"name":"uploadGradientTexture","kind":"function","signature":"uploadGradientTexture(device, gradient)","summary":"Upload a color gradient as a 1D GPU texture for shader sampling"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleColorGradient.md","moduleTitle":"sim/particles/ParticleColorGradient","source":"engine/sim/particles/ParticleColorGradient.js","import":"/engine/sim/particles/ParticleColorGradient.js","sourceHash":"d4c21a3e1d17794ce0947485cc381194801a0ac7a8d8a0dc3b68b834330fc82e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleColorGradient.js#0003:destroyGradientTexture","exportIndex":3,"name":"destroyGradientTexture","kind":"function","signature":"destroyGradientTexture(gradientTexture)","summary":"Destroy a gradient texture"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleColorGradient.md","moduleTitle":"sim/particles/ParticleColorGradient","source":"engine/sim/particles/ParticleColorGradient.js","import":"/engine/sim/particles/ParticleColorGradient.js","sourceHash":"d4c21a3e1d17794ce0947485cc381194801a0ac7a8d8a0dc3b68b834330fc82e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleColorGradient.js#0004:gradientFromLegacy","exportIndex":4,"name":"gradientFromLegacy","kind":"function","signature":"gradientFromLegacy(color, colorEnd, alphaOverLife = [1, 1, 1])","summary":"Convert a legacy color/colorEnd pair to a gradient"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleColorGradient.md","moduleTitle":"sim/particles/ParticleColorGradient","source":"engine/sim/particles/ParticleColorGradient.js","import":"/engine/sim/particles/ParticleColorGradient.js","sourceHash":"d4c21a3e1d17794ce0947485cc381194801a0ac7a8d8a0dc3b68b834330fc82e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleColorGradient.js#0005:GRADIENT_PRESETS","exportIndex":5,"name":"GRADIENT_PRESETS","kind":"constant","signature":"GRADIENT_PRESETS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleCompression.md","moduleTitle":"sim/particles/ParticleCompression","source":"engine/sim/particles/ParticleCompression.js","import":"/engine/sim/particles/ParticleCompression.js","sourceHash":"95ff42d96eaaff126c69e17a74133b3d39cfe6676c1e34ed6fd84126986e0a9a","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleCompression.js","title":"sim/particles/ParticleCompression","summary":"ParticleCompression.js - Compression utilities for particle snapshots Extracted from ParticleSnapshotDelta.js for modularity Includes: - Run-length encoding - Variable-length integer packing - PCA + DCT compression - Position/velocity quantization - Interpolation algorithms","exportCount":23}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleCompression.md","moduleTitle":"sim/particles/ParticleCompression","source":"engine/sim/particles/ParticleCompression.js","import":"/engine/sim/particles/ParticleCompression.js","sourceHash":"95ff42d96eaaff126c69e17a74133b3d39cfe6676c1e34ed6fd84126986e0a9a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleCompression.js#0000:runLengthEncode","exportIndex":0,"name":"runLengthEncode","kind":"function","signature":"runLengthEncode(indices)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleCompression.md","moduleTitle":"sim/particles/ParticleCompression","source":"engine/sim/particles/ParticleCompression.js","import":"/engine/sim/particles/ParticleCompression.js","sourceHash":"95ff42d96eaaff126c69e17a74133b3d39cfe6676c1e34ed6fd84126986e0a9a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleCompression.js#0001:runLengthDecode","exportIndex":1,"name":"runLengthDecode","kind":"function","signature":"runLengthDecode(encoded)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleCompression.md","moduleTitle":"sim/particles/ParticleCompression","source":"engine/sim/particles/ParticleCompression.js","import":"/engine/sim/particles/ParticleCompression.js","sourceHash":"95ff42d96eaaff126c69e17a74133b3d39cfe6676c1e34ed6fd84126986e0a9a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleCompression.js#0002:packSmallIntegers","exportIndex":2,"name":"packSmallIntegers","kind":"function","signature":"packSmallIntegers(values)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleCompression.md","moduleTitle":"sim/particles/ParticleCompression","source":"engine/sim/particles/ParticleCompression.js","import":"/engine/sim/particles/ParticleCompression.js","sourceHash":"95ff42d96eaaff126c69e17a74133b3d39cfe6676c1e34ed6fd84126986e0a9a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleCompression.js#0003:unpackSmallIntegers","exportIndex":3,"name":"unpackSmallIntegers","kind":"function","signature":"unpackSmallIntegers(packed)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleCompression.md","moduleTitle":"sim/particles/ParticleCompression","source":"engine/sim/particles/ParticleCompression.js","import":"/engine/sim/particles/ParticleCompression.js","sourceHash":"95ff42d96eaaff126c69e17a74133b3d39cfe6676c1e34ed6fd84126986e0a9a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleCompression.js#0004:computeCovarianceMatrix","exportIndex":4,"name":"computeCovarianceMatrix","kind":"function","signature":"computeCovarianceMatrix(trajectories)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleCompression.md","moduleTitle":"sim/particles/ParticleCompression","source":"engine/sim/particles/ParticleCompression.js","import":"/engine/sim/particles/ParticleCompression.js","sourceHash":"95ff42d96eaaff126c69e17a74133b3d39cfe6676c1e34ed6fd84126986e0a9a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleCompression.js#0005:powerIteration","exportIndex":5,"name":"powerIteration","kind":"function","signature":"powerIteration(matrix, iterations = 20)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleCompression.md","moduleTitle":"sim/particles/ParticleCompression","source":"engine/sim/particles/ParticleCompression.js","import":"/engine/sim/particles/ParticleCompression.js","sourceHash":"95ff42d96eaaff126c69e17a74133b3d39cfe6676c1e34ed6fd84126986e0a9a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleCompression.js#0006:dct1d","exportIndex":6,"name":"dct1d","kind":"function","signature":"dct1d(signal)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleCompression.md","moduleTitle":"sim/particles/ParticleCompression","source":"engine/sim/particles/ParticleCompression.js","import":"/engine/sim/particles/ParticleCompression.js","sourceHash":"95ff42d96eaaff126c69e17a74133b3d39cfe6676c1e34ed6fd84126986e0a9a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleCompression.js#0007:idct1d","exportIndex":7,"name":"idct1d","kind":"function","signature":"idct1d(coeffs)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleCompression.md","moduleTitle":"sim/particles/ParticleCompression","source":"engine/sim/particles/ParticleCompression.js","import":"/engine/sim/particles/ParticleCompression.js","sourceHash":"95ff42d96eaaff126c69e17a74133b3d39cfe6676c1e34ed6fd84126986e0a9a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleCompression.js#0008:quantizeDCT","exportIndex":8,"name":"quantizeDCT","kind":"function","signature":"quantizeDCT(coeffs, retention = 0.7)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleCompression.md","moduleTitle":"sim/particles/ParticleCompression","source":"engine/sim/particles/ParticleCompression.js","import":"/engine/sim/particles/ParticleCompression.js","sourceHash":"95ff42d96eaaff126c69e17a74133b3d39cfe6676c1e34ed6fd84126986e0a9a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleCompression.js#0009:quantizeFloat","exportIndex":9,"name":"quantizeFloat","kind":"function","signature":"quantizeFloat(value, range)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleCompression.md","moduleTitle":"sim/particles/ParticleCompression","source":"engine/sim/particles/ParticleCompression.js","import":"/engine/sim/particles/ParticleCompression.js","sourceHash":"95ff42d96eaaff126c69e17a74133b3d39cfe6676c1e34ed6fd84126986e0a9a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleCompression.js#0010:dequantizeFloat","exportIndex":10,"name":"dequantizeFloat","kind":"function","signature":"dequantizeFloat(quantized, range)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleCompression.md","moduleTitle":"sim/particles/ParticleCompression","source":"engine/sim/particles/ParticleCompression.js","import":"/engine/sim/particles/ParticleCompression.js","sourceHash":"95ff42d96eaaff126c69e17a74133b3d39cfe6676c1e34ed6fd84126986e0a9a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleCompression.js#0011:quantizePosition","exportIndex":11,"name":"quantizePosition","kind":"function","signature":"quantizePosition(x, y, z, age)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleCompression.md","moduleTitle":"sim/particles/ParticleCompression","source":"engine/sim/particles/ParticleCompression.js","import":"/engine/sim/particles/ParticleCompression.js","sourceHash":"95ff42d96eaaff126c69e17a74133b3d39cfe6676c1e34ed6fd84126986e0a9a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleCompression.js#0012:quantizeVelocity","exportIndex":12,"name":"quantizeVelocity","kind":"function","signature":"quantizeVelocity(vx, vy, vz, lifetime)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleCompression.md","moduleTitle":"sim/particles/ParticleCompression","source":"engine/sim/particles/ParticleCompression.js","import":"/engine/sim/particles/ParticleCompression.js","sourceHash":"95ff42d96eaaff126c69e17a74133b3d39cfe6676c1e34ed6fd84126986e0a9a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleCompression.js#0013:dequantizePosition","exportIndex":13,"name":"dequantizePosition","kind":"function","signature":"dequantizePosition(quantized)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleCompression.md","moduleTitle":"sim/particles/ParticleCompression","source":"engine/sim/particles/ParticleCompression.js","import":"/engine/sim/particles/ParticleCompression.js","sourceHash":"95ff42d96eaaff126c69e17a74133b3d39cfe6676c1e34ed6fd84126986e0a9a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleCompression.js#0014:dequantizeVelocity","exportIndex":14,"name":"dequantizeVelocity","kind":"function","signature":"dequantizeVelocity(quantized)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleCompression.md","moduleTitle":"sim/particles/ParticleCompression","source":"engine/sim/particles/ParticleCompression.js","import":"/engine/sim/particles/ParticleCompression.js","sourceHash":"95ff42d96eaaff126c69e17a74133b3d39cfe6676c1e34ed6fd84126986e0a9a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleCompression.js#0015:quantizePositionArray","exportIndex":15,"name":"quantizePositionArray","kind":"function","signature":"quantizePositionArray(positions)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleCompression.md","moduleTitle":"sim/particles/ParticleCompression","source":"engine/sim/particles/ParticleCompression.js","import":"/engine/sim/particles/ParticleCompression.js","sourceHash":"95ff42d96eaaff126c69e17a74133b3d39cfe6676c1e34ed6fd84126986e0a9a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleCompression.js#0016:quantizeVelocityArray","exportIndex":16,"name":"quantizeVelocityArray","kind":"function","signature":"quantizeVelocityArray(velocities)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleCompression.md","moduleTitle":"sim/particles/ParticleCompression","source":"engine/sim/particles/ParticleCompression.js","import":"/engine/sim/particles/ParticleCompression.js","sourceHash":"95ff42d96eaaff126c69e17a74133b3d39cfe6676c1e34ed6fd84126986e0a9a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleCompression.js#0017:dequantizePositionArray","exportIndex":17,"name":"dequantizePositionArray","kind":"function","signature":"dequantizePositionArray(quantized)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleCompression.md","moduleTitle":"sim/particles/ParticleCompression","source":"engine/sim/particles/ParticleCompression.js","import":"/engine/sim/particles/ParticleCompression.js","sourceHash":"95ff42d96eaaff126c69e17a74133b3d39cfe6676c1e34ed6fd84126986e0a9a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleCompression.js#0018:dequantizeVelocityArray","exportIndex":18,"name":"dequantizeVelocityArray","kind":"function","signature":"dequantizeVelocityArray(quantized)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleCompression.md","moduleTitle":"sim/particles/ParticleCompression","source":"engine/sim/particles/ParticleCompression.js","import":"/engine/sim/particles/ParticleCompression.js","sourceHash":"95ff42d96eaaff126c69e17a74133b3d39cfe6676c1e34ed6fd84126986e0a9a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleCompression.js#0019:catmullRomInterpolate","exportIndex":19,"name":"catmullRomInterpolate","kind":"function","signature":"catmullRomInterpolate(p0, p1, p2, p3, t, tension = 0.5)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleCompression.md","moduleTitle":"sim/particles/ParticleCompression","source":"engine/sim/particles/ParticleCompression.js","import":"/engine/sim/particles/ParticleCompression.js","sourceHash":"95ff42d96eaaff126c69e17a74133b3d39cfe6676c1e34ed6fd84126986e0a9a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleCompression.js#0020:hermiteInterpolate","exportIndex":20,"name":"hermiteInterpolate","kind":"function","signature":"hermiteInterpolate(p0, p1, v0, v1, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleCompression.md","moduleTitle":"sim/particles/ParticleCompression","source":"engine/sim/particles/ParticleCompression.js","import":"/engine/sim/particles/ParticleCompression.js","sourceHash":"95ff42d96eaaff126c69e17a74133b3d39cfe6676c1e34ed6fd84126986e0a9a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleCompression.js#0021:entropyEncodeResiduals","exportIndex":21,"name":"entropyEncodeResiduals","kind":"function","signature":"entropyEncodeResiduals(residuals)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleCompression.md","moduleTitle":"sim/particles/ParticleCompression","source":"engine/sim/particles/ParticleCompression.js","import":"/engine/sim/particles/ParticleCompression.js","sourceHash":"95ff42d96eaaff126c69e17a74133b3d39cfe6676c1e34ed6fd84126986e0a9a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleCompression.js#0022:entropyDecodeResiduals","exportIndex":22,"name":"entropyDecodeResiduals","kind":"function","signature":"entropyDecodeResiduals(encoded, length)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleConfig.md","moduleTitle":"sim/particles/ParticleConfig","source":"engine/sim/particles/ParticleConfig.js","import":"/engine/sim/particles/ParticleConfig.js","sourceHash":"ca35999d7de429af97a3250bd3842a22a33bbbafbce0e4750165099c2e8b12df","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleConfig.js","title":"sim/particles/ParticleConfig","summary":"","exportCount":17}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleConfig.md","moduleTitle":"sim/particles/ParticleConfig","source":"engine/sim/particles/ParticleConfig.js","import":"/engine/sim/particles/ParticleConfig.js","sourceHash":"ca35999d7de429af97a3250bd3842a22a33bbbafbce0e4750165099c2e8b12df","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleConfig.js#0000:DEFAULT_MAX_PARTICLES","exportIndex":0,"name":"DEFAULT_MAX_PARTICLES","kind":"constant","signature":"DEFAULT_MAX_PARTICLES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleConfig.md","moduleTitle":"sim/particles/ParticleConfig","source":"engine/sim/particles/ParticleConfig.js","import":"/engine/sim/particles/ParticleConfig.js","sourceHash":"ca35999d7de429af97a3250bd3842a22a33bbbafbce0e4750165099c2e8b12df","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleConfig.js#0001:PARTICLE_CONFIG","exportIndex":1,"name":"PARTICLE_CONFIG","kind":"constant","signature":"PARTICLE_CONFIG","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleConfig.md","moduleTitle":"sim/particles/ParticleConfig","source":"engine/sim/particles/ParticleConfig.js","import":"/engine/sim/particles/ParticleConfig.js","sourceHash":"ca35999d7de429af97a3250bd3842a22a33bbbafbce0e4750165099c2e8b12df","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleConfig.js#0002:WORKGROUP_SIZES","exportIndex":2,"name":"WORKGROUP_SIZES","kind":"constant","signature":"WORKGROUP_SIZES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleConfig.md","moduleTitle":"sim/particles/ParticleConfig","source":"engine/sim/particles/ParticleConfig.js","import":"/engine/sim/particles/ParticleConfig.js","sourceHash":"ca35999d7de429af97a3250bd3842a22a33bbbafbce0e4750165099c2e8b12df","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleConfig.js#0003:EMITTER_CONFIG_SCHEMA","exportIndex":3,"name":"EMITTER_CONFIG_SCHEMA","kind":"re-export","signature":"EMITTER_CONFIG_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleConfig.md","moduleTitle":"sim/particles/ParticleConfig","source":"engine/sim/particles/ParticleConfig.js","import":"/engine/sim/particles/ParticleConfig.js","sourceHash":"ca35999d7de429af97a3250bd3842a22a33bbbafbce0e4750165099c2e8b12df","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleConfig.js#0004:PARTICLE_BEHAVIORS","exportIndex":4,"name":"PARTICLE_BEHAVIORS","kind":"re-export","signature":"PARTICLE_BEHAVIORS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleConfig.md","moduleTitle":"sim/particles/ParticleConfig","source":"engine/sim/particles/ParticleConfig.js","import":"/engine/sim/particles/ParticleConfig.js","sourceHash":"ca35999d7de429af97a3250bd3842a22a33bbbafbce0e4750165099c2e8b12df","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleConfig.js#0005:PARTICLE_BUFFER_SCHEMA","exportIndex":5,"name":"PARTICLE_BUFFER_SCHEMA","kind":"re-export","signature":"PARTICLE_BUFFER_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleConfig.md","moduleTitle":"sim/particles/ParticleConfig","source":"engine/sim/particles/ParticleConfig.js","import":"/engine/sim/particles/ParticleConfig.js","sourceHash":"ca35999d7de429af97a3250bd3842a22a33bbbafbce0e4750165099c2e8b12df","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleConfig.js#0006:PARTICLE_PARAMS_SCHEMA","exportIndex":6,"name":"PARTICLE_PARAMS_SCHEMA","kind":"re-export","signature":"PARTICLE_PARAMS_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleConfig.md","moduleTitle":"sim/particles/ParticleConfig","source":"engine/sim/particles/ParticleConfig.js","import":"/engine/sim/particles/ParticleConfig.js","sourceHash":"ca35999d7de429af97a3250bd3842a22a33bbbafbce0e4750165099c2e8b12df","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleConfig.js#0007:PARTICLE_SHAPES","exportIndex":7,"name":"PARTICLE_SHAPES","kind":"re-export","signature":"PARTICLE_SHAPES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleConfig.md","moduleTitle":"sim/particles/ParticleConfig","source":"engine/sim/particles/ParticleConfig.js","import":"/engine/sim/particles/ParticleConfig.js","sourceHash":"ca35999d7de429af97a3250bd3842a22a33bbbafbce0e4750165099c2e8b12df","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleConfig.js#0008:RENDER_MODES","exportIndex":8,"name":"RENDER_MODES","kind":"re-export","signature":"RENDER_MODES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleConfig.md","moduleTitle":"sim/particles/ParticleConfig","source":"engine/sim/particles/ParticleConfig.js","import":"/engine/sim/particles/ParticleConfig.js","sourceHash":"ca35999d7de429af97a3250bd3842a22a33bbbafbce0e4750165099c2e8b12df","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleConfig.js#0009:createDefaultEmitterConfig","exportIndex":9,"name":"createDefaultEmitterConfig","kind":"re-export","signature":"createDefaultEmitterConfig","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleConfig.md","moduleTitle":"sim/particles/ParticleConfig","source":"engine/sim/particles/ParticleConfig.js","import":"/engine/sim/particles/ParticleConfig.js","sourceHash":"ca35999d7de429af97a3250bd3842a22a33bbbafbce0e4750165099c2e8b12df","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleConfig.js#0010:createDefaultParticleParams","exportIndex":10,"name":"createDefaultParticleParams","kind":"re-export","signature":"createDefaultParticleParams","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleConfig.md","moduleTitle":"sim/particles/ParticleConfig","source":"engine/sim/particles/ParticleConfig.js","import":"/engine/sim/particles/ParticleConfig.js","sourceHash":"ca35999d7de429af97a3250bd3842a22a33bbbafbce0e4750165099c2e8b12df","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleConfig.js#0011:getBehaviorId","exportIndex":11,"name":"getBehaviorId","kind":"re-export","signature":"getBehaviorId","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleConfig.md","moduleTitle":"sim/particles/ParticleConfig","source":"engine/sim/particles/ParticleConfig.js","import":"/engine/sim/particles/ParticleConfig.js","sourceHash":"ca35999d7de429af97a3250bd3842a22a33bbbafbce0e4750165099c2e8b12df","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleConfig.js#0012:getRenderModeId","exportIndex":12,"name":"getRenderModeId","kind":"re-export","signature":"getRenderModeId","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleConfig.md","moduleTitle":"sim/particles/ParticleConfig","source":"engine/sim/particles/ParticleConfig.js","import":"/engine/sim/particles/ParticleConfig.js","sourceHash":"ca35999d7de429af97a3250bd3842a22a33bbbafbce0e4750165099c2e8b12df","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleConfig.js#0013:getShapeId","exportIndex":13,"name":"getShapeId","kind":"re-export","signature":"getShapeId","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleConfig.md","moduleTitle":"sim/particles/ParticleConfig","source":"engine/sim/particles/ParticleConfig.js","import":"/engine/sim/particles/ParticleConfig.js","sourceHash":"ca35999d7de429af97a3250bd3842a22a33bbbafbce0e4750165099c2e8b12df","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleConfig.js#0014:packParticleMeta","exportIndex":14,"name":"packParticleMeta","kind":"re-export","signature":"packParticleMeta","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleConfig.md","moduleTitle":"sim/particles/ParticleConfig","source":"engine/sim/particles/ParticleConfig.js","import":"/engine/sim/particles/ParticleConfig.js","sourceHash":"ca35999d7de429af97a3250bd3842a22a33bbbafbce0e4750165099c2e8b12df","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleConfig.js#0015:unpackParticleMeta","exportIndex":15,"name":"unpackParticleMeta","kind":"re-export","signature":"unpackParticleMeta","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleConfig.md","moduleTitle":"sim/particles/ParticleConfig","source":"engine/sim/particles/ParticleConfig.js","import":"/engine/sim/particles/ParticleConfig.js","sourceHash":"ca35999d7de429af97a3250bd3842a22a33bbbafbce0e4750165099c2e8b12df","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleConfig.js#0016:validateEmitterConfig","exportIndex":16,"name":"validateEmitterConfig","kind":"re-export","signature":"validateEmitterConfig","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleConstraints.md","moduleTitle":"sim/particles/ParticleConstraints","source":"engine/sim/particles/ParticleConstraints.js","import":"/engine/sim/particles/ParticleConstraints.js","sourceHash":"94bb33c6ed35815e5fa87c36c77dd5fa49c5de6ac489301dadb21841fb5176f0","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleConstraints.js","title":"sim/particles/ParticleConstraints","summary":"ParticleConstraints.js - GPU Constraint Solver for Rope/Wire/Cloth Unified constraint system for particle-based physics: - Distance constraints (maintain rest length between particles) - Attachment constraints (pin particle to world position) - Angle constraints (maintain angle between 3 particles) [future] - Bending constraints (maintain curvature) [future] Part of the Unified Rope-Particle System (Phase 2)","exportCount":28}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleConstraints.md","moduleTitle":"sim/particles/ParticleConstraints","source":"engine/sim/particles/ParticleConstraints.js","import":"/engine/sim/particles/ParticleConstraints.js","sourceHash":"94bb33c6ed35815e5fa87c36c77dd5fa49c5de6ac489301dadb21841fb5176f0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleConstraints.js#0000:createRopeConstraintSystem","exportIndex":0,"name":"createRopeConstraintSystem","kind":"function","signature":"createRopeConstraintSystem(device, maxConstraints = 100000)","summary":"Create rope/constraint solver system"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleConstraints.md","moduleTitle":"sim/particles/ParticleConstraints","source":"engine/sim/particles/ParticleConstraints.js","import":"/engine/sim/particles/ParticleConstraints.js","sourceHash":"94bb33c6ed35815e5fa87c36c77dd5fa49c5de6ac489301dadb21841fb5176f0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleConstraints.js#0001:initRopeConstraintBindGroup","exportIndex":1,"name":"initRopeConstraintBindGroup","kind":"function","signature":"initRopeConstraintBindGroup(system, device, positionsBuffer, velocitiesBuffer, thermalBuffer)","summary":"Initialize constraint system bind group"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleConstraints.md","moduleTitle":"sim/particles/ParticleConstraints","source":"engine/sim/particles/ParticleConstraints.js","import":"/engine/sim/particles/ParticleConstraints.js","sourceHash":"94bb33c6ed35815e5fa87c36c77dd5fa49c5de6ac489301dadb21841fb5176f0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleConstraints.js#0002:addDistanceConstraint","exportIndex":2,"name":"addDistanceConstraint","kind":"function","signature":"addDistanceConstraint(system, device, particleA, particleB, restLength, stiffness = 0.9)","summary":"Add a distance constraint between two particles"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleConstraints.md","moduleTitle":"sim/particles/ParticleConstraints","source":"engine/sim/particles/ParticleConstraints.js","import":"/engine/sim/particles/ParticleConstraints.js","sourceHash":"94bb33c6ed35815e5fa87c36c77dd5fa49c5de6ac489301dadb21841fb5176f0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleConstraints.js#0003:addAttachmentConstraint","exportIndex":3,"name":"addAttachmentConstraint","kind":"function","signature":"addAttachmentConstraint(system, device, particleIndex, worldPos, stiffness = 1.0)","summary":"Add an attachment constraint (pin to world position)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleConstraints.md","moduleTitle":"sim/particles/ParticleConstraints","source":"engine/sim/particles/ParticleConstraints.js","import":"/engine/sim/particles/ParticleConstraints.js","sourceHash":"94bb33c6ed35815e5fa87c36c77dd5fa49c5de6ac489301dadb21841fb5176f0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleConstraints.js#0004:addRopeInextensibleConstraint","exportIndex":4,"name":"addRopeInextensibleConstraint","kind":"function","signature":"addRopeInextensibleConstraint(system, device, particleA, particleB, restLength, opts = {})","summary":"Add a rope inextensible constraint (mass-aware, with breaking support)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleConstraints.md","moduleTitle":"sim/particles/ParticleConstraints","source":"engine/sim/particles/ParticleConstraints.js","import":"/engine/sim/particles/ParticleConstraints.js","sourceHash":"94bb33c6ed35815e5fa87c36c77dd5fa49c5de6ac489301dadb21841fb5176f0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleConstraints.js#0005:updateAttachmentTarget","exportIndex":5,"name":"updateAttachmentTarget","kind":"function","signature":"updateAttachmentTarget(system, device, constraintIndex, worldPos)","summary":"Update an attachment constraint's target position"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleConstraints.md","moduleTitle":"sim/particles/ParticleConstraints","source":"engine/sim/particles/ParticleConstraints.js","import":"/engine/sim/particles/ParticleConstraints.js","sourceHash":"94bb33c6ed35815e5fa87c36c77dd5fa49c5de6ac489301dadb21841fb5176f0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleConstraints.js#0006:updateRopeConstraintPhysics","exportIndex":6,"name":"updateRopeConstraintPhysics","kind":"function","signature":"updateRopeConstraintPhysics(system, device, constraintIndex, opts)","summary":"Update rope constraint physics properties"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleConstraints.md","moduleTitle":"sim/particles/ParticleConstraints","source":"engine/sim/particles/ParticleConstraints.js","import":"/engine/sim/particles/ParticleConstraints.js","sourceHash":"94bb33c6ed35815e5fa87c36c77dd5fa49c5de6ac489301dadb21841fb5176f0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleConstraints.js#0007:addBendingConstraint","exportIndex":7,"name":"addBendingConstraint","kind":"function","signature":"addBendingConstraint(system, device, particleA, particleB, particleC, restAngle = Math.PI, opts = {})","summary":"Add a bending/angle constraint between 3 particles - UNTESTED Maintains angle at center particle (particleB)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleConstraints.md","moduleTitle":"sim/particles/ParticleConstraints","source":"engine/sim/particles/ParticleConstraints.js","import":"/engine/sim/particles/ParticleConstraints.js","sourceHash":"94bb33c6ed35815e5fa87c36c77dd5fa49c5de6ac489301dadb21841fb5176f0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleConstraints.js#0008:addSpringConstraint","exportIndex":8,"name":"addSpringConstraint","kind":"function","signature":"addSpringConstraint(system, device, particleA, particleB, restLength, opts = {})","summary":"Add a spring constraint - UNTESTED Unlike distance, springs can compress AND extend (Hooke's law)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleConstraints.md","moduleTitle":"sim/particles/ParticleConstraints","source":"engine/sim/particles/ParticleConstraints.js","import":"/engine/sim/particles/ParticleConstraints.js","sourceHash":"94bb33c6ed35815e5fa87c36c77dd5fa49c5de6ac489301dadb21841fb5176f0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleConstraints.js#0009:addStickyConstraint","exportIndex":9,"name":"addStickyConstraint","kind":"function","signature":"addStickyConstraint(system, device, particleA, target, opts = {})","summary":"Add a sticky/adhesion constraint - UNTESTED Particle sticks to a world position or another particle"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleConstraints.md","moduleTitle":"sim/particles/ParticleConstraints","source":"engine/sim/particles/ParticleConstraints.js","import":"/engine/sim/particles/ParticleConstraints.js","sourceHash":"94bb33c6ed35815e5fa87c36c77dd5fa49c5de6ac489301dadb21841fb5176f0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleConstraints.js#0010:addCohesionConstraint","exportIndex":10,"name":"addCohesionConstraint","kind":"function","signature":"addCohesionConstraint(system, device, particleA, particleB, opts = {})","summary":"Add a cohesion constraint - UNTESTED Particles attract each other within a radius (like water droplets)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleConstraints.md","moduleTitle":"sim/particles/ParticleConstraints","source":"engine/sim/particles/ParticleConstraints.js","import":"/engine/sim/particles/ParticleConstraints.js","sourceHash":"94bb33c6ed35815e5fa87c36c77dd5fa49c5de6ac489301dadb21841fb5176f0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleConstraints.js#0011:addCollisionConstraint","exportIndex":11,"name":"addCollisionConstraint","kind":"function","signature":"addCollisionConstraint(system, device, particleA, particleB, opts = {})","summary":"Add a collision constraint - UNTESTED Particle-particle collision with friction and restitution (bounce)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleConstraints.md","moduleTitle":"sim/particles/ParticleConstraints","source":"engine/sim/particles/ParticleConstraints.js","import":"/engine/sim/particles/ParticleConstraints.js","sourceHash":"94bb33c6ed35815e5fa87c36c77dd5fa49c5de6ac489301dadb21841fb5176f0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleConstraints.js#0012:addWeldConstraint","exportIndex":12,"name":"addWeldConstraint","kind":"function","signature":"addWeldConstraint(system, device, particleA, particleB, restDistance = 0)","summary":"Add a weld constraint - UNTESTED Permanently joins two particles (rigid connection)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleConstraints.md","moduleTitle":"sim/particles/ParticleConstraints","source":"engine/sim/particles/ParticleConstraints.js","import":"/engine/sim/particles/ParticleConstraints.js","sourceHash":"94bb33c6ed35815e5fa87c36c77dd5fa49c5de6ac489301dadb21841fb5176f0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleConstraints.js#0013:applyMaterialPreset","exportIndex":13,"name":"applyMaterialPreset","kind":"function","signature":"applyMaterialPreset(system, device, presetName, constraintIndices)","summary":"Apply a material preset to particle constraints - UNTESTED"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleConstraints.md","moduleTitle":"sim/particles/ParticleConstraints","source":"engine/sim/particles/ParticleConstraints.js","import":"/engine/sim/particles/ParticleConstraints.js","sourceHash":"94bb33c6ed35815e5fa87c36c77dd5fa49c5de6ac489301dadb21841fb5176f0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleConstraints.js#0014:createRopeConstraints","exportIndex":14,"name":"createRopeConstraints","kind":"function","signature":"createRopeConstraints(system, device, particleStart, particleCount, opts = {})","summary":"Create all constraints for a rope"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleConstraints.md","moduleTitle":"sim/particles/ParticleConstraints","source":"engine/sim/particles/ParticleConstraints.js","import":"/engine/sim/particles/ParticleConstraints.js","sourceHash":"94bb33c6ed35815e5fa87c36c77dd5fa49c5de6ac489301dadb21841fb5176f0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleConstraints.js#0015:solveRopeConstraints","exportIndex":15,"name":"solveRopeConstraints","kind":"function","signature":"solveRopeConstraints(system, device, iterations = 8, dt = 1/60, opts = {})","summary":"Solve all constraints with rope physics options"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleConstraints.md","moduleTitle":"sim/particles/ParticleConstraints","source":"engine/sim/particles/ParticleConstraints.js","import":"/engine/sim/particles/ParticleConstraints.js","sourceHash":"94bb33c6ed35815e5fa87c36c77dd5fa49c5de6ac489301dadb21841fb5176f0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleConstraints.js#0016:clearRopeConstraints","exportIndex":16,"name":"clearRopeConstraints","kind":"function","signature":"clearRopeConstraints(system, entityId)","summary":"Clear all constraints for a rope"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleConstraints.md","moduleTitle":"sim/particles/ParticleConstraints","source":"engine/sim/particles/ParticleConstraints.js","import":"/engine/sim/particles/ParticleConstraints.js","sourceHash":"94bb33c6ed35815e5fa87c36c77dd5fa49c5de6ac489301dadb21841fb5176f0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleConstraints.js#0017:destroyRopeConstraintSystem","exportIndex":17,"name":"destroyRopeConstraintSystem","kind":"function","signature":"destroyRopeConstraintSystem(system)","summary":"Destroy constraint system"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleConstraints.md","moduleTitle":"sim/particles/ParticleConstraints","source":"engine/sim/particles/ParticleConstraints.js","import":"/engine/sim/particles/ParticleConstraints.js","sourceHash":"94bb33c6ed35815e5fa87c36c77dd5fa49c5de6ac489301dadb21841fb5176f0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleConstraints.js#0018:CONSTRAINT_TYPE","exportIndex":18,"name":"CONSTRAINT_TYPE","kind":"constant","signature":"CONSTRAINT_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleConstraints.md","moduleTitle":"sim/particles/ParticleConstraints","source":"engine/sim/particles/ParticleConstraints.js","import":"/engine/sim/particles/ParticleConstraints.js","sourceHash":"94bb33c6ed35815e5fa87c36c77dd5fa49c5de6ac489301dadb21841fb5176f0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleConstraints.js#0019:PARTICLE_FLAGS","exportIndex":19,"name":"PARTICLE_FLAGS","kind":"constant","signature":"PARTICLE_FLAGS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleConstraints.md","moduleTitle":"sim/particles/ParticleConstraints","source":"engine/sim/particles/ParticleConstraints.js","import":"/engine/sim/particles/ParticleConstraints.js","sourceHash":"94bb33c6ed35815e5fa87c36c77dd5fa49c5de6ac489301dadb21841fb5176f0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleConstraints.js#0020:CHAIN_PHYSICS_DEFAULTS","exportIndex":20,"name":"CHAIN_PHYSICS_DEFAULTS","kind":"constant","signature":"CHAIN_PHYSICS_DEFAULTS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleConstraints.md","moduleTitle":"sim/particles/ParticleConstraints","source":"engine/sim/particles/ParticleConstraints.js","import":"/engine/sim/particles/ParticleConstraints.js","sourceHash":"94bb33c6ed35815e5fa87c36c77dd5fa49c5de6ac489301dadb21841fb5176f0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleConstraints.js#0021:ROPE_PHYSICS_DEFAULTS","exportIndex":21,"name":"ROPE_PHYSICS_DEFAULTS","kind":"constant","signature":"ROPE_PHYSICS_DEFAULTS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleConstraints.md","moduleTitle":"sim/particles/ParticleConstraints","source":"engine/sim/particles/ParticleConstraints.js","import":"/engine/sim/particles/ParticleConstraints.js","sourceHash":"94bb33c6ed35815e5fa87c36c77dd5fa49c5de6ac489301dadb21841fb5176f0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleConstraints.js#0022:PARTICLE_MATERIAL_PRESETS","exportIndex":22,"name":"PARTICLE_MATERIAL_PRESETS","kind":"constant","signature":"PARTICLE_MATERIAL_PRESETS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleConstraints.md","moduleTitle":"sim/particles/ParticleConstraints","source":"engine/sim/particles/ParticleConstraints.js","import":"/engine/sim/particles/ParticleConstraints.js","sourceHash":"94bb33c6ed35815e5fa87c36c77dd5fa49c5de6ac489301dadb21841fb5176f0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleConstraints.js#0023:PHASE_SOLID","exportIndex":23,"name":"PHASE_SOLID","kind":"constant","signature":"PHASE_SOLID","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleConstraints.md","moduleTitle":"sim/particles/ParticleConstraints","source":"engine/sim/particles/ParticleConstraints.js","import":"/engine/sim/particles/ParticleConstraints.js","sourceHash":"94bb33c6ed35815e5fa87c36c77dd5fa49c5de6ac489301dadb21841fb5176f0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleConstraints.js#0024:PHASE_LIQUID","exportIndex":24,"name":"PHASE_LIQUID","kind":"constant","signature":"PHASE_LIQUID","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleConstraints.md","moduleTitle":"sim/particles/ParticleConstraints","source":"engine/sim/particles/ParticleConstraints.js","import":"/engine/sim/particles/ParticleConstraints.js","sourceHash":"94bb33c6ed35815e5fa87c36c77dd5fa49c5de6ac489301dadb21841fb5176f0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleConstraints.js#0025:PHASE_GAS","exportIndex":25,"name":"PHASE_GAS","kind":"constant","signature":"PHASE_GAS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleConstraints.md","moduleTitle":"sim/particles/ParticleConstraints","source":"engine/sim/particles/ParticleConstraints.js","import":"/engine/sim/particles/ParticleConstraints.js","sourceHash":"94bb33c6ed35815e5fa87c36c77dd5fa49c5de6ac489301dadb21841fb5176f0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleConstraints.js#0026:PHASE_PLASMA","exportIndex":26,"name":"PHASE_PLASMA","kind":"constant","signature":"PHASE_PLASMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleConstraints.md","moduleTitle":"sim/particles/ParticleConstraints","source":"engine/sim/particles/ParticleConstraints.js","import":"/engine/sim/particles/ParticleConstraints.js","sourceHash":"94bb33c6ed35815e5fa87c36c77dd5fa49c5de6ac489301dadb21841fb5176f0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleConstraints.js#0027:THERMAL_MATERIAL_PRESETS","exportIndex":27,"name":"THERMAL_MATERIAL_PRESETS","kind":"constant","signature":"THERMAL_MATERIAL_PRESETS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleDecalSpawner.md","moduleTitle":"sim/particles/ParticleDecalSpawner","source":"engine/sim/particles/ParticleDecalSpawner.js","import":"/engine/sim/particles/ParticleDecalSpawner.js","sourceHash":"f5fae34903db83f2089be5c1b5d4b53d8f10011fc08eb23eddb5f67cb6b96869","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleDecalSpawner.js","title":"sim/particles/ParticleDecalSpawner","summary":"ParticleDecalSpawner.js - Spawn Decals from Particle Collisions (GAP 22) Consumes GPU event readback data (collision events) to spawn projected texture decals at impact points. Integrates with the GPU event system (GAP 6) via CPU readback callbacks. Each collision event provides: position, velocity (impact direction), and event type. The spawner creates decal descriptors that the game's decal system can render (projected quads aligned to surface normal). Usage: const spawner = createDecalSpawner({ maxDecals: 200 }); // Register with event system: onParticleEvent(world.eventSystem, (events) => { feedCollisionEvents(spawner, events); }); // Each frame: const decals = getActiveDecals(spawner); // Render decals with your decal system","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleDecalSpawner.md","moduleTitle":"sim/particles/ParticleDecalSpawner","source":"engine/sim/particles/ParticleDecalSpawner.js","import":"/engine/sim/particles/ParticleDecalSpawner.js","sourceHash":"f5fae34903db83f2089be5c1b5d4b53d8f10011fc08eb23eddb5f67cb6b96869","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleDecalSpawner.js#0000:createDecalSpawner","exportIndex":0,"name":"createDecalSpawner","kind":"function","signature":"createDecalSpawner(config = {})","summary":"Create a decal spawner with a fixed-size ring buffer pool."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleDecalSpawner.md","moduleTitle":"sim/particles/ParticleDecalSpawner","source":"engine/sim/particles/ParticleDecalSpawner.js","import":"/engine/sim/particles/ParticleDecalSpawner.js","sourceHash":"f5fae34903db83f2089be5c1b5d4b53d8f10011fc08eb23eddb5f67cb6b96869","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleDecalSpawner.js#0001:feedCollisionEvents","exportIndex":1,"name":"feedCollisionEvents","kind":"function","signature":"feedCollisionEvents(spawner, eventData, eventCount, options = {})","summary":"Feed collision events from GPU event readback into the decal spawner. Events are expected to be Float32Array with 8 floats per event: [posX, posY, posZ, velX, velY, velZ, eventType, particleIndex]"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleDecalSpawner.md","moduleTitle":"sim/particles/ParticleDecalSpawner","source":"engine/sim/particles/ParticleDecalSpawner.js","import":"/engine/sim/particles/ParticleDecalSpawner.js","sourceHash":"f5fae34903db83f2089be5c1b5d4b53d8f10011fc08eb23eddb5f67cb6b96869","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleDecalSpawner.js#0002:updateDecals","exportIndex":2,"name":"updateDecals","kind":"function","signature":"updateDecals(spawner, dt)","summary":"Update decal ages, fade, and expire old decals."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleDecalSpawner.md","moduleTitle":"sim/particles/ParticleDecalSpawner","source":"engine/sim/particles/ParticleDecalSpawner.js","import":"/engine/sim/particles/ParticleDecalSpawner.js","sourceHash":"f5fae34903db83f2089be5c1b5d4b53d8f10011fc08eb23eddb5f67cb6b96869","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleDecalSpawner.js#0003:getActiveDecals","exportIndex":3,"name":"getActiveDecals","kind":"function","signature":"getActiveDecals(spawner)","summary":"Get all active decals as an array of descriptors."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleDecalSpawner.md","moduleTitle":"sim/particles/ParticleDecalSpawner","source":"engine/sim/particles/ParticleDecalSpawner.js","import":"/engine/sim/particles/ParticleDecalSpawner.js","sourceHash":"f5fae34903db83f2089be5c1b5d4b53d8f10011fc08eb23eddb5f67cb6b96869","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleDecalSpawner.js#0004:getDecalCount","exportIndex":4,"name":"getDecalCount","kind":"function","signature":"getDecalCount(spawner)","summary":"Get active decal count."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleDecalSpawner.md","moduleTitle":"sim/particles/ParticleDecalSpawner","source":"engine/sim/particles/ParticleDecalSpawner.js","import":"/engine/sim/particles/ParticleDecalSpawner.js","sourceHash":"f5fae34903db83f2089be5c1b5d4b53d8f10011fc08eb23eddb5f67cb6b96869","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleDecalSpawner.js#0005:clearDecals","exportIndex":5,"name":"clearDecals","kind":"function","signature":"clearDecals(spawner)","summary":"Clear all decals."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleDecalSpawner.md","moduleTitle":"sim/particles/ParticleDecalSpawner","source":"engine/sim/particles/ParticleDecalSpawner.js","import":"/engine/sim/particles/ParticleDecalSpawner.js","sourceHash":"f5fae34903db83f2089be5c1b5d4b53d8f10011fc08eb23eddb5f67cb6b96869","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleDecalSpawner.js#0006:destroyDecalSpawner","exportIndex":6,"name":"destroyDecalSpawner","kind":"function","signature":"destroyDecalSpawner(spawner)","summary":"Destroy the spawner."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEffects.md","moduleTitle":"sim/particles/ParticleEffects","source":"engine/sim/particles/ParticleEffects.js","import":"/engine/sim/particles/ParticleEffects.js","sourceHash":"fdc0158736d07c5cab9c3a9be97e8fdd48085932ff0b70a78c6d3a9406ba75a5","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleEffects.js","title":"sim/particles/ParticleEffects","summary":"Create force point buffer for attractors/repellers Each force point: [x, y, z, strength] where negative = repel","exportCount":17}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEffects.md","moduleTitle":"sim/particles/ParticleEffects","source":"engine/sim/particles/ParticleEffects.js","import":"/engine/sim/particles/ParticleEffects.js","sourceHash":"fdc0158736d07c5cab9c3a9be97e8fdd48085932ff0b70a78c6d3a9406ba75a5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEffects.js#0000:createForcePointBuffer","exportIndex":0,"name":"createForcePointBuffer","kind":"function","signature":"createForcePointBuffer(device, maxPoints = MAX_FORCE_POINTS)","summary":"Create force point buffer for attractors/repellers Each force point: [x, y, z, strength] where negative = repel"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEffects.md","moduleTitle":"sim/particles/ParticleEffects","source":"engine/sim/particles/ParticleEffects.js","import":"/engine/sim/particles/ParticleEffects.js","sourceHash":"fdc0158736d07c5cab9c3a9be97e8fdd48085932ff0b70a78c6d3a9406ba75a5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEffects.js#0001:updateForcePoints","exportIndex":1,"name":"updateForcePoints","kind":"function","signature":"updateForcePoints(device, buffer, forcePoints)","summary":"Update force points in the buffer"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEffects.md","moduleTitle":"sim/particles/ParticleEffects","source":"engine/sim/particles/ParticleEffects.js","import":"/engine/sim/particles/ParticleEffects.js","sourceHash":"fdc0158736d07c5cab9c3a9be97e8fdd48085932ff0b70a78c6d3a9406ba75a5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEffects.js#0002:calculateDissolve","exportIndex":2,"name":"calculateDissolve","kind":"function","signature":"calculateDissolve(startTime, duration, direction = 'in')","summary":"Calculate dissolve factor for fade in/out"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEffects.md","moduleTitle":"sim/particles/ParticleEffects","source":"engine/sim/particles/ParticleEffects.js","import":"/engine/sim/particles/ParticleEffects.js","sourceHash":"fdc0158736d07c5cab9c3a9be97e8fdd48085932ff0b70a78c6d3a9406ba75a5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEffects.js#0003:processSubEmitters","exportIndex":3,"name":"processSubEmitters","kind":"function","signature":"processSubEmitters(particles, subEmitterConfig, currentTime)","summary":"Process sub-emitter spawning from dead particles This CPU fallback scans all slots and has 1-2 frame latency from GPU readback."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEffects.md","moduleTitle":"sim/particles/ParticleEffects","source":"engine/sim/particles/ParticleEffects.js","import":"/engine/sim/particles/ParticleEffects.js","sourceHash":"fdc0158736d07c5cab9c3a9be97e8fdd48085932ff0b70a78c6d3a9406ba75a5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEffects.js#0004:createTrailBuffer","exportIndex":4,"name":"createTrailBuffer","kind":"function","signature":"createTrailBuffer(device, maxParticles, historyLength = 8)","summary":"Create trail history buffer Stores N previous positions per particle for trail rendering"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEffects.md","moduleTitle":"sim/particles/ParticleEffects","source":"engine/sim/particles/ParticleEffects.js","import":"/engine/sim/particles/ParticleEffects.js","sourceHash":"fdc0158736d07c5cab9c3a9be97e8fdd48085932ff0b70a78c6d3a9406ba75a5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEffects.js#0005:generateParticleAtlas","exportIndex":5,"name":"generateParticleAtlas","kind":"function","signature":"generateParticleAtlas(device, size = 512, tilesPerRow = 4)","summary":"Generate a procedural particle texture atlas"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEffects.md","moduleTitle":"sim/particles/ParticleEffects","source":"engine/sim/particles/ParticleEffects.js","import":"/engine/sim/particles/ParticleEffects.js","sourceHash":"fdc0158736d07c5cab9c3a9be97e8fdd48085932ff0b70a78c6d3a9406ba75a5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEffects.js#0006:SUB_EMITTER_EVENTS","exportIndex":6,"name":"SUB_EMITTER_EVENTS","kind":"constant","signature":"SUB_EMITTER_EVENTS","summary":"Sub-emitter configuration"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEffects.md","moduleTitle":"sim/particles/ParticleEffects","source":"engine/sim/particles/ParticleEffects.js","import":"/engine/sim/particles/ParticleEffects.js","sourceHash":"fdc0158736d07c5cab9c3a9be97e8fdd48085932ff0b70a78c6d3a9406ba75a5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEffects.js#0007:PARTICLE_TEXTURES","exportIndex":7,"name":"PARTICLE_TEXTURES","kind":"constant","signature":"PARTICLE_TEXTURES","summary":"Particle texture atlas configuration"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEffects.md","moduleTitle":"sim/particles/ParticleEffects","source":"engine/sim/particles/ParticleEffects.js","import":"/engine/sim/particles/ParticleEffects.js","sourceHash":"fdc0158736d07c5cab9c3a9be97e8fdd48085932ff0b70a78c6d3a9406ba75a5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEffects.js#0008:BITONIC_SORT_SHADER","exportIndex":8,"name":"BITONIC_SORT_SHADER","kind":"re-export","signature":"BITONIC_SORT_SHADER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEffects.md","moduleTitle":"sim/particles/ParticleEffects","source":"engine/sim/particles/ParticleEffects.js","import":"/engine/sim/particles/ParticleEffects.js","sourceHash":"fdc0158736d07c5cab9c3a9be97e8fdd48085932ff0b70a78c6d3a9406ba75a5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEffects.js#0009:CURL_NOISE_SNIPPET","exportIndex":9,"name":"CURL_NOISE_SNIPPET","kind":"re-export","signature":"CURL_NOISE_SNIPPET","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEffects.md","moduleTitle":"sim/particles/ParticleEffects","source":"engine/sim/particles/ParticleEffects.js","import":"/engine/sim/particles/ParticleEffects.js","sourceHash":"fdc0158736d07c5cab9c3a9be97e8fdd48085932ff0b70a78c6d3a9406ba75a5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEffects.js#0010:FORCE_POINTS_SNIPPET","exportIndex":10,"name":"FORCE_POINTS_SNIPPET","kind":"re-export","signature":"FORCE_POINTS_SNIPPET","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEffects.md","moduleTitle":"sim/particles/ParticleEffects","source":"engine/sim/particles/ParticleEffects.js","import":"/engine/sim/particles/ParticleEffects.js","sourceHash":"fdc0158736d07c5cab9c3a9be97e8fdd48085932ff0b70a78c6d3a9406ba75a5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEffects.js#0011:LINE_COMPUTE_SHADER","exportIndex":11,"name":"LINE_COMPUTE_SHADER","kind":"re-export","signature":"LINE_COMPUTE_SHADER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEffects.md","moduleTitle":"sim/particles/ParticleEffects","source":"engine/sim/particles/ParticleEffects.js","import":"/engine/sim/particles/ParticleEffects.js","sourceHash":"fdc0158736d07c5cab9c3a9be97e8fdd48085932ff0b70a78c6d3a9406ba75a5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEffects.js#0012:LINE_RENDER_SHADER","exportIndex":12,"name":"LINE_RENDER_SHADER","kind":"re-export","signature":"LINE_RENDER_SHADER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEffects.md","moduleTitle":"sim/particles/ParticleEffects","source":"engine/sim/particles/ParticleEffects.js","import":"/engine/sim/particles/ParticleEffects.js","sourceHash":"fdc0158736d07c5cab9c3a9be97e8fdd48085932ff0b70a78c6d3a9406ba75a5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEffects.js#0013:MAX_FORCE_POINTS","exportIndex":13,"name":"MAX_FORCE_POINTS","kind":"re-export","signature":"MAX_FORCE_POINTS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEffects.md","moduleTitle":"sim/particles/ParticleEffects","source":"engine/sim/particles/ParticleEffects.js","import":"/engine/sim/particles/ParticleEffects.js","sourceHash":"fdc0158736d07c5cab9c3a9be97e8fdd48085932ff0b70a78c6d3a9406ba75a5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEffects.js#0014:MOUSE_INTERACTION_SNIPPET","exportIndex":14,"name":"MOUSE_INTERACTION_SNIPPET","kind":"re-export","signature":"MOUSE_INTERACTION_SNIPPET","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEffects.md","moduleTitle":"sim/particles/ParticleEffects","source":"engine/sim/particles/ParticleEffects.js","import":"/engine/sim/particles/ParticleEffects.js","sourceHash":"fdc0158736d07c5cab9c3a9be97e8fdd48085932ff0b70a78c6d3a9406ba75a5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEffects.js#0015:TRAIL_UPDATE_SNIPPET","exportIndex":15,"name":"TRAIL_UPDATE_SNIPPET","kind":"re-export","signature":"TRAIL_UPDATE_SNIPPET","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEffects.md","moduleTitle":"sim/particles/ParticleEffects","source":"engine/sim/particles/ParticleEffects.js","import":"/engine/sim/particles/ParticleEffects.js","sourceHash":"fdc0158736d07c5cab9c3a9be97e8fdd48085932ff0b70a78c6d3a9406ba75a5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEffects.js#0016:VOLUMETRIC_LIGHTING_SNIPPET","exportIndex":16,"name":"VOLUMETRIC_LIGHTING_SNIPPET","kind":"re-export","signature":"VOLUMETRIC_LIGHTING_SNIPPET","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleElectromagnetic.md","moduleTitle":"sim/particles/ParticleElectromagnetic","source":"engine/sim/particles/ParticleElectromagnetic.js","import":"/engine/sim/particles/ParticleElectromagnetic.js","sourceHash":"0845b909409efb75663fe99711b052e45ca94ef2fe97ef5319c0e8e0846773b7","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleElectromagnetic.js","title":"sim/particles/ParticleElectromagnetic","summary":"ParticleElectromagnetic.js - Electromagnetic Forces (GAP 35) GPU compute: Coulomb electrostatic + Lorentz magnetic force. F_coulomb = k · q₁·q₂ / r²  (along r) F_lorentz = q · (v × B)       (perpendicular to v and B) Per-particle charge from element table (GAP 33) charge buffer. Optional: sample E/H fields from FDTDSolver.js if attached. Uses neighbor grid (GAP 25) for O(N) spatial queries. Debye shielding at high density to prevent runaway forces. Usage: const em = createElectromagneticSystem(device, maxParticles); initEMBindGroups(em, device, positionBuffer, velocityBuffer, gridBuffers, chargeBuffer); setExternalField(em, { Ex, Ey, Ez, Bx, By, Bz }); executeElectromagnetic(em, device, particleCount, dt);","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleElectromagnetic.md","moduleTitle":"sim/particles/ParticleElectromagnetic","source":"engine/sim/particles/ParticleElectromagnetic.js","import":"/engine/sim/particles/ParticleElectromagnetic.js","sourceHash":"0845b909409efb75663fe99711b052e45ca94ef2fe97ef5319c0e8e0846773b7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleElectromagnetic.js#0000:createElectromagneticSystem","exportIndex":0,"name":"createElectromagneticSystem","kind":"function","signature":"createElectromagneticSystem(device, maxParticles)","summary":"Create the electromagnetic system."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleElectromagnetic.md","moduleTitle":"sim/particles/ParticleElectromagnetic","source":"engine/sim/particles/ParticleElectromagnetic.js","import":"/engine/sim/particles/ParticleElectromagnetic.js","sourceHash":"0845b909409efb75663fe99711b052e45ca94ef2fe97ef5319c0e8e0846773b7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleElectromagnetic.js#0001:initEMBindGroups","exportIndex":1,"name":"initEMBindGroups","kind":"function","signature":"initEMBindGroups(system, device, positionBuffer, velocityBuffer, gridBuffers, chargeBuffer, thermalBuffer)","summary":"Initialize bind groups."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleElectromagnetic.md","moduleTitle":"sim/particles/ParticleElectromagnetic","source":"engine/sim/particles/ParticleElectromagnetic.js","import":"/engine/sim/particles/ParticleElectromagnetic.js","sourceHash":"0845b909409efb75663fe99711b052e45ca94ef2fe97ef5319c0e8e0846773b7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleElectromagnetic.js#0002:setExternalField","exportIndex":2,"name":"setExternalField","kind":"function","signature":"setExternalField(system, fields)","summary":"Set external E and B fields."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleElectromagnetic.md","moduleTitle":"sim/particles/ParticleElectromagnetic","source":"engine/sim/particles/ParticleElectromagnetic.js","import":"/engine/sim/particles/ParticleElectromagnetic.js","sourceHash":"0845b909409efb75663fe99711b052e45ca94ef2fe97ef5319c0e8e0846773b7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleElectromagnetic.js#0003:executeElectromagnetic","exportIndex":3,"name":"executeElectromagnetic","kind":"function","signature":"executeElectromagnetic(system, device, particleCount, dt)","summary":"Execute the electromagnetic compute pass."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleElectromagnetic.md","moduleTitle":"sim/particles/ParticleElectromagnetic","source":"engine/sim/particles/ParticleElectromagnetic.js","import":"/engine/sim/particles/ParticleElectromagnetic.js","sourceHash":"0845b909409efb75663fe99711b052e45ca94ef2fe97ef5319c0e8e0846773b7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleElectromagnetic.js#0004:destroyElectromagneticSystem","exportIndex":4,"name":"destroyElectromagneticSystem","kind":"function","signature":"destroyElectromagneticSystem(system)","summary":"Destroy."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleElementRegistry.md","moduleTitle":"sim/particles/ParticleElementRegistry","source":"engine/sim/particles/ParticleElementRegistry.js","import":"/engine/sim/particles/ParticleElementRegistry.js","sourceHash":"2d10dd544d2720d8578380d870de3ff85819f1e2c946d8ac813ce2b9f7e6fe27","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleElementRegistry.js","title":"sim/particles/ParticleElementRegistry","summary":"ParticleElementRegistry.js - Unified Element Registry Bridges the two previously disconnected element systems: - Particle ELEMENTS (fire, water, magic, smoke) from ParticleEmitterSystem.js - Spell SPELL_ELEMENTS (fire, ice, lightning, arcane, nature, dark, holy) from SpellGenerator.js Each unified element defines particle properties (color, materialIndex, temperature, physics modifiers), spell properties (spellColors, effects, damageType), and combination rules (from SpellElementMixer). Also provides bridge functions: - elementMixToEmitterConfig(elements[]) → full emitter config derived from mix - getElementCombination(a, b) → combination result","exportCount":16}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleElementRegistry.md","moduleTitle":"sim/particles/ParticleElementRegistry","source":"engine/sim/particles/ParticleElementRegistry.js","import":"/engine/sim/particles/ParticleElementRegistry.js","sourceHash":"2d10dd544d2720d8578380d870de3ff85819f1e2c946d8ac813ce2b9f7e6fe27","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleElementRegistry.js#0000:setRegistryTrace","exportIndex":0,"name":"setRegistryTrace","kind":"function","signature":"setRegistryTrace(enabled, throttleMs = 500)","summary":"Enable or disable element registry trace logging. When enabled, logs every element mix derivation with full pipeline details."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleElementRegistry.md","moduleTitle":"sim/particles/ParticleElementRegistry","source":"engine/sim/particles/ParticleElementRegistry.js","import":"/engine/sim/particles/ParticleElementRegistry.js","sourceHash":"2d10dd544d2720d8578380d870de3ff85819f1e2c946d8ac813ce2b9f7e6fe27","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleElementRegistry.js#0001:getRegistryElement","exportIndex":1,"name":"getRegistryElement","kind":"function","signature":"getRegistryElement(id)","summary":"Get a registry element by ID. Handles backward-compat aliases (e.g., \"magic\" → \"arcane\"). Falls back to REACTION_PRODUCTS for byproduct IDs (e.g., \"smoke\")."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleElementRegistry.md","moduleTitle":"sim/particles/ParticleElementRegistry","source":"engine/sim/particles/ParticleElementRegistry.js","import":"/engine/sim/particles/ParticleElementRegistry.js","sourceHash":"2d10dd544d2720d8578380d870de3ff85819f1e2c946d8ac813ce2b9f7e6fe27","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleElementRegistry.js#0002:isPrimaryElement","exportIndex":2,"name":"isPrimaryElement","kind":"function","signature":"isPrimaryElement(id)","summary":"Check if an element ID is a primary element (user-selectable) vs reaction product."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleElementRegistry.md","moduleTitle":"sim/particles/ParticleElementRegistry","source":"engine/sim/particles/ParticleElementRegistry.js","import":"/engine/sim/particles/ParticleElementRegistry.js","sourceHash":"2d10dd544d2720d8578380d870de3ff85819f1e2c946d8ac813ce2b9f7e6fe27","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleElementRegistry.js#0003:getAllRegistryElements","exportIndex":3,"name":"getAllRegistryElements","kind":"function","signature":"getAllRegistryElements()","summary":"Get all registry elements as an array."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleElementRegistry.md","moduleTitle":"sim/particles/ParticleElementRegistry","source":"engine/sim/particles/ParticleElementRegistry.js","import":"/engine/sim/particles/ParticleElementRegistry.js","sourceHash":"2d10dd544d2720d8578380d870de3ff85819f1e2c946d8ac813ce2b9f7e6fe27","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleElementRegistry.js#0004:getRegistryElementsByCategory","exportIndex":4,"name":"getRegistryElementsByCategory","kind":"function","signature":"getRegistryElementsByCategory()","summary":"Get element IDs grouped by category."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleElementRegistry.md","moduleTitle":"sim/particles/ParticleElementRegistry","source":"engine/sim/particles/ParticleElementRegistry.js","import":"/engine/sim/particles/ParticleElementRegistry.js","sourceHash":"2d10dd544d2720d8578380d870de3ff85819f1e2c946d8ac813ce2b9f7e6fe27","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleElementRegistry.js#0005:getElementCombination","exportIndex":5,"name":"getElementCombination","kind":"function","signature":"getElementCombination(elementA, elementB)","summary":"Look up the combination result for two elements."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleElementRegistry.md","moduleTitle":"sim/particles/ParticleElementRegistry","source":"engine/sim/particles/ParticleElementRegistry.js","import":"/engine/sim/particles/ParticleElementRegistry.js","sourceHash":"2d10dd544d2720d8578380d870de3ff85819f1e2c946d8ac813ce2b9f7e6fe27","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleElementRegistry.js#0006:getCombinationsFor","exportIndex":6,"name":"getCombinationsFor","kind":"function","signature":"getCombinationsFor(elementId)","summary":"Get all combinations involving a specific element."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleElementRegistry.md","moduleTitle":"sim/particles/ParticleElementRegistry","source":"engine/sim/particles/ParticleElementRegistry.js","import":"/engine/sim/particles/ParticleElementRegistry.js","sourceHash":"2d10dd544d2720d8578380d870de3ff85819f1e2c946d8ac813ce2b9f7e6fe27","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleElementRegistry.js#0007:elementMixToEmitterConfig","exportIndex":7,"name":"elementMixToEmitterConfig","kind":"function","signature":"elementMixToEmitterConfig(elements)","summary":"Given an array of active element layers [{id, power, enabled}], derive a complete emitter property set: color, colorEnd, temperature, materialIndex, gravityMod, and combination info. This replaces the separate deriveColorFromElements + deriveTemperatureFromElements + deriveMaterialIndexFromElements calls with one unified function."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleElementRegistry.md","moduleTitle":"sim/particles/ParticleElementRegistry","source":"engine/sim/particles/ParticleElementRegistry.js","import":"/engine/sim/particles/ParticleElementRegistry.js","sourceHash":"2d10dd544d2720d8578380d870de3ff85819f1e2c946d8ac813ce2b9f7e6fe27","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleElementRegistry.js#0008:metaSlidersToPhysics","exportIndex":8,"name":"metaSlidersToPhysics","kind":"function","signature":"metaSlidersToPhysics(meta)","summary":"Convert meta-slider values (Intensity 0-1, Spread 0-1, Lifetime 0-1) into concrete emitter physics parameters. Used by Simple Mode to provide easy controls."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleElementRegistry.md","moduleTitle":"sim/particles/ParticleElementRegistry","source":"engine/sim/particles/ParticleElementRegistry.js","import":"/engine/sim/particles/ParticleElementRegistry.js","sourceHash":"2d10dd544d2720d8578380d870de3ff85819f1e2c946d8ac813ce2b9f7e6fe27","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleElementRegistry.js#0009:elementMixToSpellParams","exportIndex":9,"name":"elementMixToSpellParams","kind":"function","signature":"elementMixToSpellParams(elements)","summary":"Convert an active element mix into spell generator parameters. Used by the \"Create Spell From This\" button."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleElementRegistry.md","moduleTitle":"sim/particles/ParticleElementRegistry","source":"engine/sim/particles/ParticleElementRegistry.js","import":"/engine/sim/particles/ParticleElementRegistry.js","sourceHash":"2d10dd544d2720d8578380d870de3ff85819f1e2c946d8ac813ce2b9f7e6fe27","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleElementRegistry.js#0010:REGISTRY_ELEMENTS","exportIndex":10,"name":"REGISTRY_ELEMENTS","kind":"constant","signature":"REGISTRY_ELEMENTS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleElementRegistry.md","moduleTitle":"sim/particles/ParticleElementRegistry","source":"engine/sim/particles/ParticleElementRegistry.js","import":"/engine/sim/particles/ParticleElementRegistry.js","sourceHash":"2d10dd544d2720d8578380d870de3ff85819f1e2c946d8ac813ce2b9f7e6fe27","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleElementRegistry.js#0011:REACTION_PRODUCTS","exportIndex":11,"name":"REACTION_PRODUCTS","kind":"constant","signature":"REACTION_PRODUCTS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleElementRegistry.md","moduleTitle":"sim/particles/ParticleElementRegistry","source":"engine/sim/particles/ParticleElementRegistry.js","import":"/engine/sim/particles/ParticleElementRegistry.js","sourceHash":"2d10dd544d2720d8578380d870de3ff85819f1e2c946d8ac813ce2b9f7e6fe27","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleElementRegistry.js#0012:AUTO_BYPRODUCTS","exportIndex":12,"name":"AUTO_BYPRODUCTS","kind":"constant","signature":"AUTO_BYPRODUCTS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleElementRegistry.md","moduleTitle":"sim/particles/ParticleElementRegistry","source":"engine/sim/particles/ParticleElementRegistry.js","import":"/engine/sim/particles/ParticleElementRegistry.js","sourceHash":"2d10dd544d2720d8578380d870de3ff85819f1e2c946d8ac813ce2b9f7e6fe27","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleElementRegistry.js#0013:COMBINATION_BYPRODUCTS","exportIndex":13,"name":"COMBINATION_BYPRODUCTS","kind":"constant","signature":"COMBINATION_BYPRODUCTS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleElementRegistry.md","moduleTitle":"sim/particles/ParticleElementRegistry","source":"engine/sim/particles/ParticleElementRegistry.js","import":"/engine/sim/particles/ParticleElementRegistry.js","sourceHash":"2d10dd544d2720d8578380d870de3ff85819f1e2c946d8ac813ce2b9f7e6fe27","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleElementRegistry.js#0014:ELEMENT_ALIASES","exportIndex":14,"name":"ELEMENT_ALIASES","kind":"constant","signature":"ELEMENT_ALIASES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleElementRegistry.md","moduleTitle":"sim/particles/ParticleElementRegistry","source":"engine/sim/particles/ParticleElementRegistry.js","import":"/engine/sim/particles/ParticleElementRegistry.js","sourceHash":"2d10dd544d2720d8578380d870de3ff85819f1e2c946d8ac813ce2b9f7e6fe27","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleElementRegistry.js#0015:ELEMENT_COMBINATIONS","exportIndex":15,"name":"ELEMENT_COMBINATIONS","kind":"constant","signature":"ELEMENT_COMBINATIONS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleElementTable.md","moduleTitle":"sim/particles/ParticleElementTable","source":"engine/sim/particles/ParticleElementTable.js","import":"/engine/sim/particles/ParticleElementTable.js","sourceHash":"90c1935622e7ef7859d64c104df6aab1a6f3b67d535bdd049292f502151c2f97","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleElementTable.js","title":"sim/particles/ParticleElementTable","summary":"ParticleElementTable.js - Element Property System / Periodic Table (GAP 33) Data foundation for universal matter simulation. Every other physics system (Lennard-Jones, Coulomb, SPH, Chemistry) reads element properties from here. Provides: - Full periodic table data for 118 elements - Per-particle element buffer (GPU storage, u32 per particle) - Element lookup by atomic number or symbol - Common molecule/compound presets - LJ parameters (epsilon, sigma) per element - Integration with existing thermal material system Usage: const table = createElementTable(device, maxParticles); setParticleElement(table, device, particleIndex, ELEMENTS.Fe); const iron = getElement(26); // by atomic number const gold = getElementBySymbol('Au');","exportCount":11}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleElementTable.md","moduleTitle":"sim/particles/ParticleElementTable","source":"engine/sim/particles/ParticleElementTable.js","import":"/engine/sim/particles/ParticleElementTable.js","sourceHash":"90c1935622e7ef7859d64c104df6aab1a6f3b67d535bdd049292f502151c2f97","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleElementTable.js#0000:getElement","exportIndex":0,"name":"getElement","kind":"function","signature":"getElement(atomicNumber)","summary":"Get element by atomic number (1-118)."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleElementTable.md","moduleTitle":"sim/particles/ParticleElementTable","source":"engine/sim/particles/ParticleElementTable.js","import":"/engine/sim/particles/ParticleElementTable.js","sourceHash":"90c1935622e7ef7859d64c104df6aab1a6f3b67d535bdd049292f502151c2f97","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleElementTable.js#0001:getElementBySymbol","exportIndex":1,"name":"getElementBySymbol","kind":"function","signature":"getElementBySymbol(symbol)","summary":"Get element by symbol ('H', 'Fe', 'Au', etc.)."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleElementTable.md","moduleTitle":"sim/particles/ParticleElementTable","source":"engine/sim/particles/ParticleElementTable.js","import":"/engine/sim/particles/ParticleElementTable.js","sourceHash":"90c1935622e7ef7859d64c104df6aab1a6f3b67d535bdd049292f502151c2f97","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleElementTable.js#0002:getAllElements","exportIndex":2,"name":"getAllElements","kind":"function","signature":"getAllElements()","summary":"Get all elements."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleElementTable.md","moduleTitle":"sim/particles/ParticleElementTable","source":"engine/sim/particles/ParticleElementTable.js","import":"/engine/sim/particles/ParticleElementTable.js","sourceHash":"90c1935622e7ef7859d64c104df6aab1a6f3b67d535bdd049292f502151c2f97","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleElementTable.js#0003:ljMixingRule","exportIndex":3,"name":"ljMixingRule","kind":"function","signature":"ljMixingRule(z1, z2)","summary":"Compute Lennard-Jones cross-interaction parameters using Lorentz-Berthelot rules."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleElementTable.md","moduleTitle":"sim/particles/ParticleElementTable","source":"engine/sim/particles/ParticleElementTable.js","import":"/engine/sim/particles/ParticleElementTable.js","sourceHash":"90c1935622e7ef7859d64c104df6aab1a6f3b67d535bdd049292f502151c2f97","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleElementTable.js#0004:createElementTable","exportIndex":4,"name":"createElementTable","kind":"function","signature":"createElementTable(device, maxParticles)","summary":"Create the element table system with per-particle element buffer."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleElementTable.md","moduleTitle":"sim/particles/ParticleElementTable","source":"engine/sim/particles/ParticleElementTable.js","import":"/engine/sim/particles/ParticleElementTable.js","sourceHash":"90c1935622e7ef7859d64c104df6aab1a6f3b67d535bdd049292f502151c2f97","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleElementTable.js#0005:setParticleElements","exportIndex":5,"name":"setParticleElements","kind":"function","signature":"setParticleElements(system, device, startIndex, count, atomicNumber)","summary":"Set element type for a range of particles."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleElementTable.md","moduleTitle":"sim/particles/ParticleElementTable","source":"engine/sim/particles/ParticleElementTable.js","import":"/engine/sim/particles/ParticleElementTable.js","sourceHash":"90c1935622e7ef7859d64c104df6aab1a6f3b67d535bdd049292f502151c2f97","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleElementTable.js#0006:setParticleCharges","exportIndex":6,"name":"setParticleCharges","kind":"function","signature":"setParticleCharges(system, device, startIndex, count, charge)","summary":"Set charge for a range of particles (overrides element default)."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleElementTable.md","moduleTitle":"sim/particles/ParticleElementTable","source":"engine/sim/particles/ParticleElementTable.js","import":"/engine/sim/particles/ParticleElementTable.js","sourceHash":"90c1935622e7ef7859d64c104df6aab1a6f3b67d535bdd049292f502151c2f97","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleElementTable.js#0007:destroyElementTable","exportIndex":7,"name":"destroyElementTable","kind":"function","signature":"destroyElementTable(system)","summary":"Destroy the element table system."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleElementTable.md","moduleTitle":"sim/particles/ParticleElementTable","source":"engine/sim/particles/ParticleElementTable.js","import":"/engine/sim/particles/ParticleElementTable.js","sourceHash":"90c1935622e7ef7859d64c104df6aab1a6f3b67d535bdd049292f502151c2f97","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleElementTable.js#0008:ELEMENTS","exportIndex":8,"name":"ELEMENTS","kind":"constant","signature":"ELEMENTS","summary":"Quick access: ELEMENTS.H = 1, ELEMENTS.Fe = 26, etc."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleElementTable.md","moduleTitle":"sim/particles/ParticleElementTable","source":"engine/sim/particles/ParticleElementTable.js","import":"/engine/sim/particles/ParticleElementTable.js","sourceHash":"90c1935622e7ef7859d64c104df6aab1a6f3b67d535bdd049292f502151c2f97","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleElementTable.js#0009:MOLECULE_PRESETS","exportIndex":9,"name":"MOLECULE_PRESETS","kind":"constant","signature":"MOLECULE_PRESETS","summary":"Common molecule presets — arrays of { element, count, charge }."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleElementTable.md","moduleTitle":"sim/particles/ParticleElementTable","source":"engine/sim/particles/ParticleElementTable.js","import":"/engine/sim/particles/ParticleElementTable.js","sourceHash":"90c1935622e7ef7859d64c104df6aab1a6f3b67d535bdd049292f502151c2f97","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleElementTable.js#0010:ELEMENT_LUT_WGSL","exportIndex":10,"name":"ELEMENT_LUT_WGSL","kind":"constant","signature":"ELEMENT_LUT_WGSL","summary":"WGSL struct and accessor for element LUT. Bind elementLUT as storage buffer, elementTypes and charges as storage buffers."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEmitterLOD.md","moduleTitle":"sim/particles/ParticleEmitterLOD","source":"engine/sim/particles/ParticleEmitterLOD.js","import":"/engine/sim/particles/ParticleEmitterLOD.js","sourceHash":"6178a093a2da8c2aba13a3e3ff0919844f24c28e93050270d96e13e26b2db91d","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleEmitterLOD.js","title":"sim/particles/ParticleEmitterLOD","summary":"ParticleEmitterLOD.js - Emitter-Level LOD System (GAP 19) Distance/screen-size based LOD for particle emitters. Unlike per-particle quality fade, this operates at the EMITTER level: - Reduce spawn rate by LOD tier - Disable expensive features (collision, turbulence) at distance - Switch renderer (billboard → point → cull) by distance - Scale particle lifetime to reduce total particle count Matches Niagara scalability / PopcornFX LOD layers. Usage: const lod = createEmitterLOD({ tiers: [...] }); // Each frame: const tier = evaluateEmitterLOD(lod, cameraPos, emitterPos); // Use tier.spawnRateScale, tier.features, etc. to drive emitter config","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEmitterLOD.md","moduleTitle":"sim/particles/ParticleEmitterLOD","source":"engine/sim/particles/ParticleEmitterLOD.js","import":"/engine/sim/particles/ParticleEmitterLOD.js","sourceHash":"6178a093a2da8c2aba13a3e3ff0919844f24c28e93050270d96e13e26b2db91d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEmitterLOD.js#0000:createEmitterLOD","exportIndex":0,"name":"createEmitterLOD","kind":"function","signature":"createEmitterLOD(config = {})","summary":"Create an emitter LOD controller."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEmitterLOD.md","moduleTitle":"sim/particles/ParticleEmitterLOD","source":"engine/sim/particles/ParticleEmitterLOD.js","import":"/engine/sim/particles/ParticleEmitterLOD.js","sourceHash":"6178a093a2da8c2aba13a3e3ff0919844f24c28e93050270d96e13e26b2db91d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEmitterLOD.js#0001:evaluateEmitterLOD","exportIndex":1,"name":"evaluateEmitterLOD","kind":"function","signature":"evaluateEmitterLOD(lod, cameraPos, emitterPos, dt = 1/60)","summary":"Evaluate LOD tier for an emitter based on camera distance. Returns the active tier config with interpolated values."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEmitterLOD.md","moduleTitle":"sim/particles/ParticleEmitterLOD","source":"engine/sim/particles/ParticleEmitterLOD.js","import":"/engine/sim/particles/ParticleEmitterLOD.js","sourceHash":"6178a093a2da8c2aba13a3e3ff0919844f24c28e93050270d96e13e26b2db91d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEmitterLOD.js#0002:evaluateEmitterLODByScreenSize","exportIndex":2,"name":"evaluateEmitterLODByScreenSize","kind":"function","signature":"evaluateEmitterLODByScreenSize(lod, screenSize, screenThresholds)","summary":"Evaluate LOD by screen-space size instead of distance. Useful for effects that vary in world scale."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEmitterLOD.md","moduleTitle":"sim/particles/ParticleEmitterLOD","source":"engine/sim/particles/ParticleEmitterLOD.js","import":"/engine/sim/particles/ParticleEmitterLOD.js","sourceHash":"6178a093a2da8c2aba13a3e3ff0919844f24c28e93050270d96e13e26b2db91d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEmitterLOD.js#0003:getCurrentLODTier","exportIndex":3,"name":"getCurrentLODTier","kind":"function","signature":"getCurrentLODTier(lod)","summary":"Get the current LOD tier without re-evaluation."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEmitterLOD.md","moduleTitle":"sim/particles/ParticleEmitterLOD","source":"engine/sim/particles/ParticleEmitterLOD.js","import":"/engine/sim/particles/ParticleEmitterLOD.js","sourceHash":"6178a093a2da8c2aba13a3e3ff0919844f24c28e93050270d96e13e26b2db91d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEmitterLOD.js#0004:setForcedLODTier","exportIndex":4,"name":"setForcedLODTier","kind":"function","signature":"setForcedLODTier(lod, tierIndex)","summary":"Force a specific LOD tier."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEmitterLOD.md","moduleTitle":"sim/particles/ParticleEmitterLOD","source":"engine/sim/particles/ParticleEmitterLOD.js","import":"/engine/sim/particles/ParticleEmitterLOD.js","sourceHash":"6178a093a2da8c2aba13a3e3ff0919844f24c28e93050270d96e13e26b2db91d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEmitterLOD.js#0005:DEFAULT_LOD_TIERS","exportIndex":5,"name":"DEFAULT_LOD_TIERS","kind":"constant","signature":"DEFAULT_LOD_TIERS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEmitterSystem.md","moduleTitle":"sim/particles/ParticleEmitterSystem","source":"engine/sim/particles/ParticleEmitterSystem.js","import":"/engine/sim/particles/ParticleEmitterSystem.js","sourceHash":"a630d7934bb38580c11c734eb5f0efff8f9ea9b8a178534f9c87c3b9a1effd84","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleEmitterSystem.js","title":"sim/particles/ParticleEmitterSystem","summary":"Resolve a substance string to { atomicNumber, temperature, charge, element }. Accepts element symbols (\"Fe\"), compound keys (\"H2O\"), preset names (\"fire\"), or null.","exportCount":29}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEmitterSystem.md","moduleTitle":"sim/particles/ParticleEmitterSystem","source":"engine/sim/particles/ParticleEmitterSystem.js","import":"/engine/sim/particles/ParticleEmitterSystem.js","sourceHash":"a630d7934bb38580c11c734eb5f0efff8f9ea9b8a178534f9c87c3b9a1effd84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEmitterSystem.js#0000:resolveSubstance","exportIndex":0,"name":"resolveSubstance","kind":"function","signature":"resolveSubstance(substance)","summary":"Resolve a substance string to { atomicNumber, temperature, charge, element }. Accepts element symbols (\"Fe\"), compound keys (\"H2O\"), preset names (\"fire\"), or null."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEmitterSystem.md","moduleTitle":"sim/particles/ParticleEmitterSystem","source":"engine/sim/particles/ParticleEmitterSystem.js","import":"/engine/sim/particles/ParticleEmitterSystem.js","sourceHash":"a630d7934bb38580c11c734eb5f0efff8f9ea9b8a178534f9c87c3b9a1effd84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEmitterSystem.js#0001:deriveState","exportIndex":1,"name":"deriveState","kind":"function","signature":"deriveState(temperature, element)","summary":"Derive the state of matter from temperature and element melt/boil points."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEmitterSystem.md","moduleTitle":"sim/particles/ParticleEmitterSystem","source":"engine/sim/particles/ParticleEmitterSystem.js","import":"/engine/sim/particles/ParticleEmitterSystem.js","sourceHash":"a630d7934bb38580c11c734eb5f0efff8f9ea9b8a178534f9c87c3b9a1effd84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEmitterSystem.js#0002:derivePhysicsProfile","exportIndex":2,"name":"derivePhysicsProfile","kind":"function","signature":"derivePhysicsProfile(substance, temperatureOverride)","summary":"Derive which physics systems an emitter needs based on substance + temperature. Returns a physics profile object."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEmitterSystem.md","moduleTitle":"sim/particles/ParticleEmitterSystem","source":"engine/sim/particles/ParticleEmitterSystem.js","import":"/engine/sim/particles/ParticleEmitterSystem.js","sourceHash":"a630d7934bb38580c11c734eb5f0efff8f9ea9b8a178534f9c87c3b9a1effd84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEmitterSystem.js#0003:deriveColorFromElements","exportIndex":3,"name":"deriveColorFromElements","kind":"function","signature":"deriveColorFromElements(elements)","summary":"Derive color from element layers (weighted blend)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEmitterSystem.md","moduleTitle":"sim/particles/ParticleEmitterSystem","source":"engine/sim/particles/ParticleEmitterSystem.js","import":"/engine/sim/particles/ParticleEmitterSystem.js","sourceHash":"a630d7934bb38580c11c734eb5f0efff8f9ea9b8a178534f9c87c3b9a1effd84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEmitterSystem.js#0004:deriveTemperatureFromElements","exportIndex":4,"name":"deriveTemperatureFromElements","kind":"function","signature":"deriveTemperatureFromElements(elements)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEmitterSystem.md","moduleTitle":"sim/particles/ParticleEmitterSystem","source":"engine/sim/particles/ParticleEmitterSystem.js","import":"/engine/sim/particles/ParticleEmitterSystem.js","sourceHash":"a630d7934bb38580c11c734eb5f0efff8f9ea9b8a178534f9c87c3b9a1effd84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEmitterSystem.js#0005:deriveMaterialIndexFromElements","exportIndex":5,"name":"deriveMaterialIndexFromElements","kind":"function","signature":"deriveMaterialIndexFromElements(elements)","summary":"Derive materialIndex from element layers (picks highest-power element's material)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEmitterSystem.md","moduleTitle":"sim/particles/ParticleEmitterSystem","source":"engine/sim/particles/ParticleEmitterSystem.js","import":"/engine/sim/particles/ParticleEmitterSystem.js","sourceHash":"a630d7934bb38580c11c734eb5f0efff8f9ea9b8a178534f9c87c3b9a1effd84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEmitterSystem.js#0006:getStates","exportIndex":6,"name":"getStates","kind":"function","signature":"getStates()","summary":"Get available states of matter"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEmitterSystem.md","moduleTitle":"sim/particles/ParticleEmitterSystem","source":"engine/sim/particles/ParticleEmitterSystem.js","import":"/engine/sim/particles/ParticleEmitterSystem.js","sourceHash":"a630d7934bb38580c11c734eb5f0efff8f9ea9b8a178534f9c87c3b9a1effd84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEmitterSystem.js#0007:getElements","exportIndex":7,"name":"getElements","kind":"function","signature":"getElements()","summary":"Get available elements"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEmitterSystem.md","moduleTitle":"sim/particles/ParticleEmitterSystem","source":"engine/sim/particles/ParticleEmitterSystem.js","import":"/engine/sim/particles/ParticleEmitterSystem.js","sourceHash":"a630d7934bb38580c11c734eb5f0efff8f9ea9b8a178534f9c87c3b9a1effd84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEmitterSystem.js#0008:getPresetList","exportIndex":8,"name":"getPresetList","kind":"function","signature":"getPresetList()","summary":"Get all presets grouped by category for UI consumption."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEmitterSystem.md","moduleTitle":"sim/particles/ParticleEmitterSystem","source":"engine/sim/particles/ParticleEmitterSystem.js","import":"/engine/sim/particles/ParticleEmitterSystem.js","sourceHash":"a630d7934bb38580c11c734eb5f0efff8f9ea9b8a178534f9c87c3b9a1effd84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEmitterSystem.js#0009:applyPreset","exportIndex":9,"name":"applyPreset","kind":"function","signature":"applyPreset(emitterCfg, presetKey)","summary":"Apply a preset to an emitter config object, mutating it in place. Sets substance, temperature, charge, emitter type, elements, and physics."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEmitterSystem.md","moduleTitle":"sim/particles/ParticleEmitterSystem","source":"engine/sim/particles/ParticleEmitterSystem.js","import":"/engine/sim/particles/ParticleEmitterSystem.js","sourceHash":"a630d7934bb38580c11c734eb5f0efff8f9ea9b8a178534f9c87c3b9a1effd84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEmitterSystem.js#0010:getEmitterTypes","exportIndex":10,"name":"getEmitterTypes","kind":"function","signature":"getEmitterTypes()","summary":"Get available emitter type IDs."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEmitterSystem.md","moduleTitle":"sim/particles/ParticleEmitterSystem","source":"engine/sim/particles/ParticleEmitterSystem.js","import":"/engine/sim/particles/ParticleEmitterSystem.js","sourceHash":"a630d7934bb38580c11c734eb5f0efff8f9ea9b8a178534f9c87c3b9a1effd84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEmitterSystem.js#0011:getEmitterPreset","exportIndex":11,"name":"getEmitterPreset","kind":"function","signature":"getEmitterPreset(typeId)","summary":"Get emitter type preset by ID."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEmitterSystem.md","moduleTitle":"sim/particles/ParticleEmitterSystem","source":"engine/sim/particles/ParticleEmitterSystem.js","import":"/engine/sim/particles/ParticleEmitterSystem.js","sourceHash":"a630d7934bb38580c11c734eb5f0efff8f9ea9b8a178534f9c87c3b9a1effd84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEmitterSystem.js#0012:normalizeElementPower","exportIndex":12,"name":"normalizeElementPower","kind":"function","signature":"normalizeElementPower(elementPower)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEmitterSystem.md","moduleTitle":"sim/particles/ParticleEmitterSystem","source":"engine/sim/particles/ParticleEmitterSystem.js","import":"/engine/sim/particles/ParticleEmitterSystem.js","sourceHash":"a630d7934bb38580c11c734eb5f0efff8f9ea9b8a178534f9c87c3b9a1effd84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEmitterSystem.js#0013:mixElementPower","exportIndex":13,"name":"mixElementPower","kind":"function","signature":"mixElementPower(a, b, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEmitterSystem.md","moduleTitle":"sim/particles/ParticleEmitterSystem","source":"engine/sim/particles/ParticleEmitterSystem.js","import":"/engine/sim/particles/ParticleEmitterSystem.js","sourceHash":"a630d7934bb38580c11c734eb5f0efff8f9ea9b8a178534f9c87c3b9a1effd84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEmitterSystem.js#0014:buildEffectKeyFromElements","exportIndex":14,"name":"buildEffectKeyFromElements","kind":"function","signature":"buildEffectKeyFromElements(elementPower, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEmitterSystem.md","moduleTitle":"sim/particles/ParticleEmitterSystem","source":"engine/sim/particles/ParticleEmitterSystem.js","import":"/engine/sim/particles/ParticleEmitterSystem.js","sourceHash":"a630d7934bb38580c11c734eb5f0efff8f9ea9b8a178534f9c87c3b9a1effd84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEmitterSystem.js#0015:computeVisualPower","exportIndex":15,"name":"computeVisualPower","kind":"function","signature":"computeVisualPower(elementPower, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEmitterSystem.md","moduleTitle":"sim/particles/ParticleEmitterSystem","source":"engine/sim/particles/ParticleEmitterSystem.js","import":"/engine/sim/particles/ParticleEmitterSystem.js","sourceHash":"a630d7934bb38580c11c734eb5f0efff8f9ea9b8a178534f9c87c3b9a1effd84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEmitterSystem.js#0016:createEmittersForEffect","exportIndex":16,"name":"createEmittersForEffect","kind":"function","signature":"createEmittersForEffect(effectId, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEmitterSystem.md","moduleTitle":"sim/particles/ParticleEmitterSystem","source":"engine/sim/particles/ParticleEmitterSystem.js","import":"/engine/sim/particles/ParticleEmitterSystem.js","sourceHash":"a630d7934bb38580c11c734eb5f0efff8f9ea9b8a178534f9c87c3b9a1effd84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEmitterSystem.js#0017:createEmitter","exportIndex":17,"name":"createEmitter","kind":"function","signature":"createEmitter(options = {})","summary":"============================================================================ CREATE PARTICLE EMITTER ============================================================================ Creates an emitter instance from a preset type. The emitter controls all aspects of its particles: visual appearance, physics, and timing."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEmitterSystem.md","moduleTitle":"sim/particles/ParticleEmitterSystem","source":"engine/sim/particles/ParticleEmitterSystem.js","import":"/engine/sim/particles/ParticleEmitterSystem.js","sourceHash":"a630d7934bb38580c11c734eb5f0efff8f9ea9b8a178534f9c87c3b9a1effd84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEmitterSystem.js#0018:stepEmitters","exportIndex":18,"name":"stepEmitters","kind":"function","signature":"stepEmitters(emitters, particleWorld, dt, options = {})","summary":"Step all emitters and emit particles into the particle world. Returns the number of new particles emitted."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEmitterSystem.md","moduleTitle":"sim/particles/ParticleEmitterSystem","source":"engine/sim/particles/ParticleEmitterSystem.js","import":"/engine/sim/particles/ParticleEmitterSystem.js","sourceHash":"a630d7934bb38580c11c734eb5f0efff8f9ea9b8a178534f9c87c3b9a1effd84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEmitterSystem.js#0019:updateParticleCounts","exportIndex":19,"name":"updateParticleCounts","kind":"function","signature":"updateParticleCounts(particles, currentTime)","summary":"Update particle counts by scanning for dead particles. Adds dead slots to freeSlots array and updates live/dead counts. Call this periodically (e.g., every 0.5s) to refresh counts."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEmitterSystem.md","moduleTitle":"sim/particles/ParticleEmitterSystem","source":"engine/sim/particles/ParticleEmitterSystem.js","import":"/engine/sim/particles/ParticleEmitterSystem.js","sourceHash":"a630d7934bb38580c11c734eb5f0efff8f9ea9b8a178534f9c87c3b9a1effd84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEmitterSystem.js#0020:ageAndCullParticles","exportIndex":20,"name":"ageAndCullParticles","kind":"function","signature":"ageAndCullParticles(particles, hiddenDuration, options = {})","summary":"Age all particles by a given duration and cull those that died. Call this when resuming from hidden/minimized to skip dead particles."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEmitterSystem.md","moduleTitle":"sim/particles/ParticleEmitterSystem","source":"engine/sim/particles/ParticleEmitterSystem.js","import":"/engine/sim/particles/ParticleEmitterSystem.js","sourceHash":"a630d7934bb38580c11c734eb5f0efff8f9ea9b8a178534f9c87c3b9a1effd84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEmitterSystem.js#0021:initSlotTracking","exportIndex":21,"name":"initSlotTracking","kind":"function","signature":"initSlotTracking(particles, maxCount)","summary":"Initialize slot tracking for a particle system. Call once after creating particles state."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEmitterSystem.md","moduleTitle":"sim/particles/ParticleEmitterSystem","source":"engine/sim/particles/ParticleEmitterSystem.js","import":"/engine/sim/particles/ParticleEmitterSystem.js","sourceHash":"a630d7934bb38580c11c734eb5f0efff8f9ea9b8a178534f9c87c3b9a1effd84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEmitterSystem.js#0022:buildColliderBuffer","exportIndex":22,"name":"buildColliderBuffer","kind":"function","signature":"buildColliderBuffer(particleWorld, entities, options = {})","summary":"Build AABB collider buffer from ECS entities for particle collisions. Returns the number of colliders written."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEmitterSystem.md","moduleTitle":"sim/particles/ParticleEmitterSystem","source":"engine/sim/particles/ParticleEmitterSystem.js","import":"/engine/sim/particles/ParticleEmitterSystem.js","sourceHash":"a630d7934bb38580c11c734eb5f0efff8f9ea9b8a178534f9c87c3b9a1effd84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEmitterSystem.js#0023:buildFluidSources","exportIndex":23,"name":"buildFluidSources","kind":"function","signature":"buildFluidSources(emitters, options = {})","summary":"Build fluid sources from emitters for density splatting."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEmitterSystem.md","moduleTitle":"sim/particles/ParticleEmitterSystem","source":"engine/sim/particles/ParticleEmitterSystem.js","import":"/engine/sim/particles/ParticleEmitterSystem.js","sourceHash":"a630d7934bb38580c11c734eb5f0efff8f9ea9b8a178534f9c87c3b9a1effd84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEmitterSystem.js#0024:SUBSTANCE_PRESETS","exportIndex":24,"name":"SUBSTANCE_PRESETS","kind":"constant","signature":"SUBSTANCE_PRESETS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEmitterSystem.md","moduleTitle":"sim/particles/ParticleEmitterSystem","source":"engine/sim/particles/ParticleEmitterSystem.js","import":"/engine/sim/particles/ParticleEmitterSystem.js","sourceHash":"a630d7934bb38580c11c734eb5f0efff8f9ea9b8a178534f9c87c3b9a1effd84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEmitterSystem.js#0025:ELEMENTS","exportIndex":25,"name":"ELEMENTS","kind":"constant","signature":"ELEMENTS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEmitterSystem.md","moduleTitle":"sim/particles/ParticleEmitterSystem","source":"engine/sim/particles/ParticleEmitterSystem.js","import":"/engine/sim/particles/ParticleEmitterSystem.js","sourceHash":"a630d7934bb38580c11c734eb5f0efff8f9ea9b8a178534f9c87c3b9a1effd84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEmitterSystem.js#0026:STATES","exportIndex":26,"name":"STATES","kind":"constant","signature":"STATES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEmitterSystem.md","moduleTitle":"sim/particles/ParticleEmitterSystem","source":"engine/sim/particles/ParticleEmitterSystem.js","import":"/engine/sim/particles/ParticleEmitterSystem.js","sourceHash":"a630d7934bb38580c11c734eb5f0efff8f9ea9b8a178534f9c87c3b9a1effd84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEmitterSystem.js#0027:EMITTER_TYPES","exportIndex":27,"name":"EMITTER_TYPES","kind":"constant","signature":"EMITTER_TYPES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEmitterSystem.md","moduleTitle":"sim/particles/ParticleEmitterSystem","source":"engine/sim/particles/ParticleEmitterSystem.js","import":"/engine/sim/particles/ParticleEmitterSystem.js","sourceHash":"a630d7934bb38580c11c734eb5f0efff8f9ea9b8a178534f9c87c3b9a1effd84","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEmitterSystem.js#0028:EMITTER_PRESETS","exportIndex":28,"name":"EMITTER_PRESETS","kind":"constant","signature":"EMITTER_PRESETS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEulerianFluid.md","moduleTitle":"sim/particles/ParticleEulerianFluid","source":"engine/sim/particles/ParticleEulerianFluid.js","import":"/engine/sim/particles/ParticleEulerianFluid.js","sourceHash":"60141cf590a4049dca8aea9fac4785881a208d5707529c23ed1f25a8df1f03a8","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleEulerianFluid.js","title":"sim/particles/ParticleEulerianFluid","summary":"ParticleEulerianFluid.js - Self-Contained Eulerian Fluid Solver (GAP 32) GPU grid-based 3D fluid simulation using the Stable Fluids algorithm: 1. Advect velocity field (semi-Lagrangian) 2. Apply external forces (buoyancy, source injection) 3. Compute divergence 4. Pressure solve (Jacobi iteration) 5. Subtract pressure gradient (make divergence-free) 6. Advect density/temperature fields Particles can sample this velocity field via the existing fluidVelocity binding in ParticleSimWorld (attachFluidWorld). Matches Niagara Fluids Grid3D Gas simulation. Usage: const fluid = createEulerianFluidSolver(device, { gridSize: [32, 32, 32] }); addFluidSource(fluid, { position: [0, 0, 0], density: 1, temperature: 500 }); // Each frame: stepEulerianFluid(fluid, device, dt); // Connect to particles: attachFluidWorld(particleWorld, fluid, worldMin, worldMax);","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEulerianFluid.md","moduleTitle":"sim/particles/ParticleEulerianFluid","source":"engine/sim/particles/ParticleEulerianFluid.js","import":"/engine/sim/particles/ParticleEulerianFluid.js","sourceHash":"60141cf590a4049dca8aea9fac4785881a208d5707529c23ed1f25a8df1f03a8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEulerianFluid.js#0000:createEulerianFluidSolver","exportIndex":0,"name":"createEulerianFluidSolver","kind":"function","signature":"createEulerianFluidSolver(device, config = {})","summary":"Create a self-contained Eulerian fluid solver."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEulerianFluid.md","moduleTitle":"sim/particles/ParticleEulerianFluid","source":"engine/sim/particles/ParticleEulerianFluid.js","import":"/engine/sim/particles/ParticleEulerianFluid.js","sourceHash":"60141cf590a4049dca8aea9fac4785881a208d5707529c23ed1f25a8df1f03a8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEulerianFluid.js#0001:initFluidBindGroups","exportIndex":1,"name":"initFluidBindGroups","kind":"function","signature":"initFluidBindGroups(solver)","summary":"Build bind groups (call once after creation)."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEulerianFluid.md","moduleTitle":"sim/particles/ParticleEulerianFluid","source":"engine/sim/particles/ParticleEulerianFluid.js","import":"/engine/sim/particles/ParticleEulerianFluid.js","sourceHash":"60141cf590a4049dca8aea9fac4785881a208d5707529c23ed1f25a8df1f03a8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEulerianFluid.js#0002:addFluidSource","exportIndex":2,"name":"addFluidSource","kind":"function","signature":"addFluidSource(solver, source)","summary":"Add a fluid source (emitter of density/temperature/velocity)."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEulerianFluid.md","moduleTitle":"sim/particles/ParticleEulerianFluid","source":"engine/sim/particles/ParticleEulerianFluid.js","import":"/engine/sim/particles/ParticleEulerianFluid.js","sourceHash":"60141cf590a4049dca8aea9fac4785881a208d5707529c23ed1f25a8df1f03a8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEulerianFluid.js#0003:stepEulerianFluid","exportIndex":3,"name":"stepEulerianFluid","kind":"function","signature":"stepEulerianFluid(solver, device, dt)","summary":"Step the fluid simulation."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEulerianFluid.md","moduleTitle":"sim/particles/ParticleEulerianFluid","source":"engine/sim/particles/ParticleEulerianFluid.js","import":"/engine/sim/particles/ParticleEulerianFluid.js","sourceHash":"60141cf590a4049dca8aea9fac4785881a208d5707529c23ed1f25a8df1f03a8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEulerianFluid.js#0004:destroyEulerianFluidSolver","exportIndex":4,"name":"destroyEulerianFluidSolver","kind":"function","signature":"destroyEulerianFluidSolver(solver)","summary":"Destroy the solver."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEventSpawn.md","moduleTitle":"sim/particles/ParticleEventSpawn","source":"engine/sim/particles/ParticleEventSpawn.js","import":"/engine/sim/particles/ParticleEventSpawn.js","sourceHash":"3999d8b2ff2d2e4376b5153f7919253b04fc4e39a98f370ee7617b7abeb9b67b","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleEventSpawn.js","title":"sim/particles/ParticleEventSpawn","summary":"ParticleEventSpawn.js - GPU-driven sub-emitter spawning from particle events Exceeds Niagara parity: Niagara events are CPU-only, this is fully GPU. Zero-frame latency — sub-particles appear the same frame as the trigger event. Pipeline: 1. Main sim shader appends events to eventBuffer (death, collision, kill zone) 2. IndirectDispatch builds freeList of dead particle slot indices 3. THIS SHADER reads events + consumes free slots + writes new particles Each workgroup handles one event. Threads within the workgroup spawn sub-particles. Free slots are consumed atomically from the free list (no CPU involvement).","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEventSpawn.md","moduleTitle":"sim/particles/ParticleEventSpawn","source":"engine/sim/particles/ParticleEventSpawn.js","import":"/engine/sim/particles/ParticleEventSpawn.js","sourceHash":"3999d8b2ff2d2e4376b5153f7919253b04fc4e39a98f370ee7617b7abeb9b67b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEventSpawn.js#0000:createEventSpawnSystem","exportIndex":0,"name":"createEventSpawnSystem","kind":"function","signature":"createEventSpawnSystem(device, options = {})","summary":"Create the GPU event spawn system"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEventSpawn.md","moduleTitle":"sim/particles/ParticleEventSpawn","source":"engine/sim/particles/ParticleEventSpawn.js","import":"/engine/sim/particles/ParticleEventSpawn.js","sourceHash":"3999d8b2ff2d2e4376b5153f7919253b04fc4e39a98f370ee7617b7abeb9b67b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEventSpawn.js#0001:initEventSpawnBindGroups","exportIndex":1,"name":"initEventSpawnBindGroups","kind":"function","signature":"initEventSpawnBindGroups(system, world)","summary":"Initialize bind groups for the event spawn system"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEventSpawn.md","moduleTitle":"sim/particles/ParticleEventSpawn","source":"engine/sim/particles/ParticleEventSpawn.js","import":"/engine/sim/particles/ParticleEventSpawn.js","sourceHash":"3999d8b2ff2d2e4376b5153f7919253b04fc4e39a98f370ee7617b7abeb9b67b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEventSpawn.js#0002:setEventSpawnConfig","exportIndex":2,"name":"setEventSpawnConfig","kind":"function","signature":"setEventSpawnConfig(system, config = {})","summary":"Update sub-emitter spawn configuration"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEventSpawn.md","moduleTitle":"sim/particles/ParticleEventSpawn","source":"engine/sim/particles/ParticleEventSpawn.js","import":"/engine/sim/particles/ParticleEventSpawn.js","sourceHash":"3999d8b2ff2d2e4376b5153f7919253b04fc4e39a98f370ee7617b7abeb9b67b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEventSpawn.js#0003:executeEventSpawn","exportIndex":3,"name":"executeEventSpawn","kind":"function","signature":"executeEventSpawn(encoder, system, world)","summary":"Execute the event spawn compute pass Call AFTER stepParticleSimWorld (events generated) and AFTER executeIndirectScan (free list built)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEventSpawn.md","moduleTitle":"sim/particles/ParticleEventSpawn","source":"engine/sim/particles/ParticleEventSpawn.js","import":"/engine/sim/particles/ParticleEventSpawn.js","sourceHash":"3999d8b2ff2d2e4376b5153f7919253b04fc4e39a98f370ee7617b7abeb9b67b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEventSpawn.js#0004:destroyEventSpawnSystem","exportIndex":4,"name":"destroyEventSpawnSystem","kind":"function","signature":"destroyEventSpawnSystem(system)","summary":"Destroy event spawn system"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEventSystem.md","moduleTitle":"sim/particles/ParticleEventSystem","source":"engine/sim/particles/ParticleEventSystem.js","import":"/engine/sim/particles/ParticleEventSystem.js","sourceHash":"0359af12a5f05e92acd2b8acd0728114023eac573c38ca4ba1078573826db3ae","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleEventSystem.js","title":"sim/particles/ParticleEventSystem","summary":"ParticleEventSystem.js - GPU Particle Event System (exceeds Niagara parity) Niagara events are CPU-only. This system is fully GPU-driven with zero-frame latency. Architecture: 1. Main sim shader appends events to eventBuffer (death, collision, kill zone) 2. IndirectDispatch builds freeList of dead particle slot indices 3. EventSpawn compute shader reads events + consumes free slots + writes new particles 4. (Optional) CPU readback for gameplay callbacks (sound, damage, etc.) Usage: const evtSys = initParticleEventSystem(world); registerEventHandler(evtSys, { event: 'death', subCount: 4, speed: 2 }); // In render loop (after stepParticleSimWorld + executeIndirectScan): stepEventSystem(evtSys, world); // Optional async readback for gameplay: const events = await readbackEvents(evtSys);","exportCount":21}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEventSystem.md","moduleTitle":"sim/particles/ParticleEventSystem","source":"engine/sim/particles/ParticleEventSystem.js","import":"/engine/sim/particles/ParticleEventSystem.js","sourceHash":"0359af12a5f05e92acd2b8acd0728114023eac573c38ca4ba1078573826db3ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEventSystem.js#0000:initParticleEventSystem","exportIndex":0,"name":"initParticleEventSystem","kind":"function","signature":"initParticleEventSystem(world, options = {})","summary":"Initialize the GPU particle event system on a particle world. Call after createParticleSimWorld + initAllAdvancedSystems (needs indirectSystem.freeList)."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEventSystem.md","moduleTitle":"sim/particles/ParticleEventSystem","source":"engine/sim/particles/ParticleEventSystem.js","import":"/engine/sim/particles/ParticleEventSystem.js","sourceHash":"0359af12a5f05e92acd2b8acd0728114023eac573c38ca4ba1078573826db3ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEventSystem.js#0001:registerEventHandler","exportIndex":1,"name":"registerEventHandler","kind":"function","signature":"registerEventHandler(system, config = {})","summary":"Register/update the sub-emitter event handler configuration."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEventSystem.md","moduleTitle":"sim/particles/ParticleEventSystem","source":"engine/sim/particles/ParticleEventSystem.js","import":"/engine/sim/particles/ParticleEventSystem.js","sourceHash":"0359af12a5f05e92acd2b8acd0728114023eac573c38ca4ba1078573826db3ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEventSystem.js#0002:onParticleEvent","exportIndex":2,"name":"onParticleEvent","kind":"function","signature":"onParticleEvent(system, eventType, callback)","summary":"Register a CPU callback for a specific event type (called after readback)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEventSystem.md","moduleTitle":"sim/particles/ParticleEventSystem","source":"engine/sim/particles/ParticleEventSystem.js","import":"/engine/sim/particles/ParticleEventSystem.js","sourceHash":"0359af12a5f05e92acd2b8acd0728114023eac573c38ca4ba1078573826db3ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEventSystem.js#0003:offParticleEvent","exportIndex":3,"name":"offParticleEvent","kind":"function","signature":"offParticleEvent(system, eventType)","summary":"Remove all callbacks for an event type"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEventSystem.md","moduleTitle":"sim/particles/ParticleEventSystem","source":"engine/sim/particles/ParticleEventSystem.js","import":"/engine/sim/particles/ParticleEventSystem.js","sourceHash":"0359af12a5f05e92acd2b8acd0728114023eac573c38ca4ba1078573826db3ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEventSystem.js#0004:stepEventSystem","exportIndex":4,"name":"stepEventSystem","kind":"function","signature":"stepEventSystem(system)","summary":"Step the event system: execute GPU event spawn. Call AFTER stepParticleSimWorld + executeIndirectScan."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEventSystem.md","moduleTitle":"sim/particles/ParticleEventSystem","source":"engine/sim/particles/ParticleEventSystem.js","import":"/engine/sim/particles/ParticleEventSystem.js","sourceHash":"0359af12a5f05e92acd2b8acd0728114023eac573c38ca4ba1078573826db3ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEventSystem.js#0005:readbackEvents","exportIndex":5,"name":"readbackEvents","kind":"function","signature":"async readbackEvents(system)","summary":"Async readback of particle events from GPU for gameplay callbacks. Returns array of events. Tolerates 1-2 frame latency."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEventSystem.md","moduleTitle":"sim/particles/ParticleEventSystem","source":"engine/sim/particles/ParticleEventSystem.js","import":"/engine/sim/particles/ParticleEventSystem.js","sourceHash":"0359af12a5f05e92acd2b8acd0728114023eac573c38ca4ba1078573826db3ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEventSystem.js#0006:getLastEvents","exportIndex":6,"name":"getLastEvents","kind":"function","signature":"getLastEvents(system)","summary":"Get the last readback events (non-async, returns cached result)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEventSystem.md","moduleTitle":"sim/particles/ParticleEventSystem","source":"engine/sim/particles/ParticleEventSystem.js","import":"/engine/sim/particles/ParticleEventSystem.js","sourceHash":"0359af12a5f05e92acd2b8acd0728114023eac573c38ca4ba1078573826db3ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEventSystem.js#0007:enableEventSystem","exportIndex":7,"name":"enableEventSystem","kind":"function","signature":"enableEventSystem(system)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEventSystem.md","moduleTitle":"sim/particles/ParticleEventSystem","source":"engine/sim/particles/ParticleEventSystem.js","import":"/engine/sim/particles/ParticleEventSystem.js","sourceHash":"0359af12a5f05e92acd2b8acd0728114023eac573c38ca4ba1078573826db3ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEventSystem.js#0008:disableEventSystem","exportIndex":8,"name":"disableEventSystem","kind":"function","signature":"disableEventSystem(system)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEventSystem.md","moduleTitle":"sim/particles/ParticleEventSystem","source":"engine/sim/particles/ParticleEventSystem.js","import":"/engine/sim/particles/ParticleEventSystem.js","sourceHash":"0359af12a5f05e92acd2b8acd0728114023eac573c38ca4ba1078573826db3ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEventSystem.js#0009:destroyParticleEventSystem","exportIndex":9,"name":"destroyParticleEventSystem","kind":"function","signature":"destroyParticleEventSystem(system)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEventSystem.md","moduleTitle":"sim/particles/ParticleEventSystem","source":"engine/sim/particles/ParticleEventSystem.js","import":"/engine/sim/particles/ParticleEventSystem.js","sourceHash":"0359af12a5f05e92acd2b8acd0728114023eac573c38ca4ba1078573826db3ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEventSystem.js#0010:EVENT_DEATH","exportIndex":10,"name":"EVENT_DEATH","kind":"constant","signature":"EVENT_DEATH","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEventSystem.md","moduleTitle":"sim/particles/ParticleEventSystem","source":"engine/sim/particles/ParticleEventSystem.js","import":"/engine/sim/particles/ParticleEventSystem.js","sourceHash":"0359af12a5f05e92acd2b8acd0728114023eac573c38ca4ba1078573826db3ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEventSystem.js#0011:EVENT_GROUND_COLLISION","exportIndex":11,"name":"EVENT_GROUND_COLLISION","kind":"constant","signature":"EVENT_GROUND_COLLISION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEventSystem.md","moduleTitle":"sim/particles/ParticleEventSystem","source":"engine/sim/particles/ParticleEventSystem.js","import":"/engine/sim/particles/ParticleEventSystem.js","sourceHash":"0359af12a5f05e92acd2b8acd0728114023eac573c38ca4ba1078573826db3ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEventSystem.js#0012:EVENT_ENTITY_COLLISION","exportIndex":12,"name":"EVENT_ENTITY_COLLISION","kind":"constant","signature":"EVENT_ENTITY_COLLISION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEventSystem.md","moduleTitle":"sim/particles/ParticleEventSystem","source":"engine/sim/particles/ParticleEventSystem.js","import":"/engine/sim/particles/ParticleEventSystem.js","sourceHash":"0359af12a5f05e92acd2b8acd0728114023eac573c38ca4ba1078573826db3ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEventSystem.js#0013:EVENT_KILL_ZONE","exportIndex":13,"name":"EVENT_KILL_ZONE","kind":"constant","signature":"EVENT_KILL_ZONE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEventSystem.md","moduleTitle":"sim/particles/ParticleEventSystem","source":"engine/sim/particles/ParticleEventSystem.js","import":"/engine/sim/particles/ParticleEventSystem.js","sourceHash":"0359af12a5f05e92acd2b8acd0728114023eac573c38ca4ba1078573826db3ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEventSystem.js#0014:EVENT_REACTION","exportIndex":14,"name":"EVENT_REACTION","kind":"constant","signature":"EVENT_REACTION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEventSystem.md","moduleTitle":"sim/particles/ParticleEventSystem","source":"engine/sim/particles/ParticleEventSystem.js","import":"/engine/sim/particles/ParticleEventSystem.js","sourceHash":"0359af12a5f05e92acd2b8acd0728114023eac573c38ca4ba1078573826db3ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEventSystem.js#0015:EVENT_MASK_DEATH","exportIndex":15,"name":"EVENT_MASK_DEATH","kind":"constant","signature":"EVENT_MASK_DEATH","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEventSystem.md","moduleTitle":"sim/particles/ParticleEventSystem","source":"engine/sim/particles/ParticleEventSystem.js","import":"/engine/sim/particles/ParticleEventSystem.js","sourceHash":"0359af12a5f05e92acd2b8acd0728114023eac573c38ca4ba1078573826db3ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEventSystem.js#0016:EVENT_MASK_GROUND_COLLISION","exportIndex":16,"name":"EVENT_MASK_GROUND_COLLISION","kind":"constant","signature":"EVENT_MASK_GROUND_COLLISION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEventSystem.md","moduleTitle":"sim/particles/ParticleEventSystem","source":"engine/sim/particles/ParticleEventSystem.js","import":"/engine/sim/particles/ParticleEventSystem.js","sourceHash":"0359af12a5f05e92acd2b8acd0728114023eac573c38ca4ba1078573826db3ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEventSystem.js#0017:EVENT_MASK_ENTITY_COLLISION","exportIndex":17,"name":"EVENT_MASK_ENTITY_COLLISION","kind":"constant","signature":"EVENT_MASK_ENTITY_COLLISION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEventSystem.md","moduleTitle":"sim/particles/ParticleEventSystem","source":"engine/sim/particles/ParticleEventSystem.js","import":"/engine/sim/particles/ParticleEventSystem.js","sourceHash":"0359af12a5f05e92acd2b8acd0728114023eac573c38ca4ba1078573826db3ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEventSystem.js#0018:EVENT_MASK_KILL_ZONE","exportIndex":18,"name":"EVENT_MASK_KILL_ZONE","kind":"constant","signature":"EVENT_MASK_KILL_ZONE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEventSystem.md","moduleTitle":"sim/particles/ParticleEventSystem","source":"engine/sim/particles/ParticleEventSystem.js","import":"/engine/sim/particles/ParticleEventSystem.js","sourceHash":"0359af12a5f05e92acd2b8acd0728114023eac573c38ca4ba1078573826db3ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEventSystem.js#0019:EVENT_MASK_REACTION","exportIndex":19,"name":"EVENT_MASK_REACTION","kind":"constant","signature":"EVENT_MASK_REACTION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleEventSystem.md","moduleTitle":"sim/particles/ParticleEventSystem","source":"engine/sim/particles/ParticleEventSystem.js","import":"/engine/sim/particles/ParticleEventSystem.js","sourceHash":"0359af12a5f05e92acd2b8acd0728114023eac573c38ca4ba1078573826db3ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleEventSystem.js#0020:EVENT_MASK_ALL","exportIndex":20,"name":"EVENT_MASK_ALL","kind":"constant","signature":"EVENT_MASK_ALL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleFMM.md","moduleTitle":"sim/particles/ParticleFMM","source":"engine/sim/particles/ParticleFMM.js","import":"/engine/sim/particles/ParticleFMM.js","sourceHash":"9e09e95d78ab7fcc4fbf36891c3c96497067d3ab7297aea73cfcb5c18ef7fc78","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleFMM.js","title":"sim/particles/ParticleFMM","summary":"Uniform-octree Fast Multipole Method for open-boundary gravitational forces. The GPU path is deliberately self-contained and opt-in. It performs the full FMM sequence P2M -> M2M -> M2L -> L2L -> L2P + P2P. The first implementation uses monopole source expansions and first-order Cartesian local expansions; the direct solver remains the accuracy oracle and small-N fallback.","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleFMM.md","moduleTitle":"sim/particles/ParticleFMM","source":"engine/sim/particles/ParticleFMM.js","import":"/engine/sim/particles/ParticleFMM.js","sourceHash":"9e09e95d78ab7fcc4fbf36891c3c96497067d3ab7297aea73cfcb5c18ef7fc78","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleFMM.js#0000:createFmmSystem","exportIndex":0,"name":"createFmmSystem","kind":"function","signature":"createFmmSystem(device, maxParticles, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleFMM.md","moduleTitle":"sim/particles/ParticleFMM","source":"engine/sim/particles/ParticleFMM.js","import":"/engine/sim/particles/ParticleFMM.js","sourceHash":"9e09e95d78ab7fcc4fbf36891c3c96497067d3ab7297aea73cfcb5c18ef7fc78","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleFMM.js#0001:initFmmBindGroups","exportIndex":1,"name":"initFmmBindGroups","kind":"function","signature":"initFmmBindGroups(system, device, positionBuffer, velocityBuffer, metaBuffer, thermalBuffer,)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleFMM.md","moduleTitle":"sim/particles/ParticleFMM","source":"engine/sim/particles/ParticleFMM.js","import":"/engine/sim/particles/ParticleFMM.js","sourceHash":"9e09e95d78ab7fcc4fbf36891c3c96497067d3ab7297aea73cfcb5c18ef7fc78","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleFMM.js#0002:setFmmParams","exportIndex":2,"name":"setFmmParams","kind":"function","signature":"setFmmParams(system, config = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleFMM.md","moduleTitle":"sim/particles/ParticleFMM","source":"engine/sim/particles/ParticleFMM.js","import":"/engine/sim/particles/ParticleFMM.js","sourceHash":"9e09e95d78ab7fcc4fbf36891c3c96497067d3ab7297aea73cfcb5c18ef7fc78","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleFMM.js#0003:executeFmm","exportIndex":3,"name":"executeFmm","kind":"function","signature":"executeFmm(system, device, particleCount, dt, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleFMM.md","moduleTitle":"sim/particles/ParticleFMM","source":"engine/sim/particles/ParticleFMM.js","import":"/engine/sim/particles/ParticleFMM.js","sourceHash":"9e09e95d78ab7fcc4fbf36891c3c96497067d3ab7297aea73cfcb5c18ef7fc78","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleFMM.js#0004:readFmmDiagnostics","exportIndex":4,"name":"readFmmDiagnostics","kind":"function","signature":"async readFmmDiagnostics(system)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleFMM.md","moduleTitle":"sim/particles/ParticleFMM","source":"engine/sim/particles/ParticleFMM.js","import":"/engine/sim/particles/ParticleFMM.js","sourceHash":"9e09e95d78ab7fcc4fbf36891c3c96497067d3ab7297aea73cfcb5c18ef7fc78","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleFMM.js#0005:destroyFmmSystem","exportIndex":5,"name":"destroyFmmSystem","kind":"function","signature":"destroyFmmSystem(system)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleFlocking.md","moduleTitle":"sim/particles/ParticleFlocking","source":"engine/sim/particles/ParticleFlocking.js","import":"/engine/sim/particles/ParticleFlocking.js","sourceHash":"5efaa7ef75a27406266315f017d26aa36b0e1da1983cf0a4de5f38902a7afa5e","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleFlocking.js","title":"sim/particles/ParticleFlocking","summary":"ParticleFlocking.js - GPU Flocking / Boids System (GAP 27) Dedicated GPU compute shader implementing classic boid rules: 1. Separation — steer away from nearby neighbors 2. Alignment — match velocity direction of nearby neighbors 3. Cohesion — steer toward center of mass of nearby neighbors 4. Goal seeking — steer toward target position(s) 5. Obstacle avoidance — steer away from repulsion points 6. Speed regulation — maintain target speed range Uses the NeighborGrid (GAP 25) for O(N) spatial queries instead of O(N²). Each force has independent radius + weight for fine-tuned behavior. Matches PopcornFX CParticleEvolver_Flocking. Usage: const flock = createFlockingSystem(device, maxParticles); initFlockingBindGroups(flock, device, positionBuffer, velocityBuffer, gridBuffers); setFlockingParams(flock, { separationWeight: 1.5, alignmentWeight: 1.0, ... }); // Each frame (after neighbor grid is built): executeFlocking(flock, device, particleCount, dt);","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleFlocking.md","moduleTitle":"sim/particles/ParticleFlocking","source":"engine/sim/particles/ParticleFlocking.js","import":"/engine/sim/particles/ParticleFlocking.js","sourceHash":"5efaa7ef75a27406266315f017d26aa36b0e1da1983cf0a4de5f38902a7afa5e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleFlocking.js#0000:createFlockingSystem","exportIndex":0,"name":"createFlockingSystem","kind":"function","signature":"createFlockingSystem(device, maxParticles)","summary":"Create the flocking system."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleFlocking.md","moduleTitle":"sim/particles/ParticleFlocking","source":"engine/sim/particles/ParticleFlocking.js","import":"/engine/sim/particles/ParticleFlocking.js","sourceHash":"5efaa7ef75a27406266315f017d26aa36b0e1da1983cf0a4de5f38902a7afa5e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleFlocking.js#0001:initFlockingBindGroups","exportIndex":1,"name":"initFlockingBindGroups","kind":"function","signature":"initFlockingBindGroups(system, device, positionBuffer, velocityBuffer, gridBuffers)","summary":"Initialize bind groups. Requires neighbor grid buffers."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleFlocking.md","moduleTitle":"sim/particles/ParticleFlocking","source":"engine/sim/particles/ParticleFlocking.js","import":"/engine/sim/particles/ParticleFlocking.js","sourceHash":"5efaa7ef75a27406266315f017d26aa36b0e1da1983cf0a4de5f38902a7afa5e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleFlocking.js#0002:setFlockingParams","exportIndex":2,"name":"setFlockingParams","kind":"function","signature":"setFlockingParams(system, params)","summary":"Update flocking parameters."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleFlocking.md","moduleTitle":"sim/particles/ParticleFlocking","source":"engine/sim/particles/ParticleFlocking.js","import":"/engine/sim/particles/ParticleFlocking.js","sourceHash":"5efaa7ef75a27406266315f017d26aa36b0e1da1983cf0a4de5f38902a7afa5e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleFlocking.js#0003:executeFlocking","exportIndex":3,"name":"executeFlocking","kind":"function","signature":"executeFlocking(system, device, particleCount, dt)","summary":"Execute the flocking compute pass."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleFlocking.md","moduleTitle":"sim/particles/ParticleFlocking","source":"engine/sim/particles/ParticleFlocking.js","import":"/engine/sim/particles/ParticleFlocking.js","sourceHash":"5efaa7ef75a27406266315f017d26aa36b0e1da1983cf0a4de5f38902a7afa5e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleFlocking.js#0004:destroyFlockingSystem","exportIndex":4,"name":"destroyFlockingSystem","kind":"function","signature":"destroyFlockingSystem(system)","summary":"Destroy the system."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleFxApi.md","moduleTitle":"sim/particles/ParticleFxApi","source":"engine/sim/particles/ParticleFxApi.js","import":"/engine/sim/particles/ParticleFxApi.js","sourceHash":"742dad7247d928357d7977aa7f88f822a75bf0f243a14a29bf4116d070d07376","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleFxApi.js","title":"sim/particles/ParticleFxApi","summary":"","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleFxApi.md","moduleTitle":"sim/particles/ParticleFxApi","source":"engine/sim/particles/ParticleFxApi.js","import":"/engine/sim/particles/ParticleFxApi.js","sourceHash":"742dad7247d928357d7977aa7f88f822a75bf0f243a14a29bf4116d070d07376","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleFxApi.js#0000:spawnParticleEmitterEntity","exportIndex":0,"name":"spawnParticleEmitterEntity","kind":"function","signature":"spawnParticleEmitterEntity(world, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleFxApi.md","moduleTitle":"sim/particles/ParticleFxApi","source":"engine/sim/particles/ParticleFxApi.js","import":"/engine/sim/particles/ParticleFxApi.js","sourceHash":"742dad7247d928357d7977aa7f88f822a75bf0f243a14a29bf4116d070d07376","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleFxApi.js#0001:attachParticleEmitter","exportIndex":1,"name":"attachParticleEmitter","kind":"function","signature":"attachParticleEmitter(world, entityId, emitterDesc)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleFxApi.md","moduleTitle":"sim/particles/ParticleFxApi","source":"engine/sim/particles/ParticleFxApi.js","import":"/engine/sim/particles/ParticleFxApi.js","sourceHash":"742dad7247d928357d7977aa7f88f822a75bf0f243a14a29bf4116d070d07376","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleFxApi.js#0002:updateParticleEmitter","exportIndex":2,"name":"updateParticleEmitter","kind":"function","signature":"updateParticleEmitter(world, entityId, changes)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleFxApi.md","moduleTitle":"sim/particles/ParticleFxApi","source":"engine/sim/particles/ParticleFxApi.js","import":"/engine/sim/particles/ParticleFxApi.js","sourceHash":"742dad7247d928357d7977aa7f88f822a75bf0f243a14a29bf4116d070d07376","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleFxApi.js#0003:disableParticleEmitter","exportIndex":3,"name":"disableParticleEmitter","kind":"function","signature":"disableParticleEmitter(world, entityId)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleFxApi.md","moduleTitle":"sim/particles/ParticleFxApi","source":"engine/sim/particles/ParticleFxApi.js","import":"/engine/sim/particles/ParticleFxApi.js","sourceHash":"742dad7247d928357d7977aa7f88f822a75bf0f243a14a29bf4116d070d07376","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleFxApi.js#0004:removeParticleEmitter","exportIndex":4,"name":"removeParticleEmitter","kind":"function","signature":"removeParticleEmitter(world, entityId)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleIndirectDispatch.md","moduleTitle":"sim/particles/ParticleIndirectDispatch","source":"engine/sim/particles/ParticleIndirectDispatch.js","import":"/engine/sim/particles/ParticleIndirectDispatch.js","sourceHash":"a57ed42ce62f909c2a49cde72f7038d53cbe11c0075f681a292616adb33df43c","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleIndirectDispatch.js","title":"sim/particles/ParticleIndirectDispatch","summary":"ParticleIndirectDispatch.js - GPU-driven indirect draw + dispatch Replaces CPU-side particle count tracking for rendering and compute dispatch. A small \"scan alive\" compute pass runs once per frame, atomically counting alive particles and finding the highest alive slot. A \"finalize\" micro-pass writes the results into draw indirect and dispatch indirect buffers. Benefits: - Eliminates CPU→GPU sync for particle counts - drawIndirect uses GPU-computed instance count - dispatchWorkgroupsIndirect uses GPU-computed workgroup count - Prepares infrastructure for full alive list compaction (Phase 3) Ref: Wicked Engine GPU particle architecture, UE5 Niagara indirect dispatch","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleIndirectDispatch.md","moduleTitle":"sim/particles/ParticleIndirectDispatch","source":"engine/sim/particles/ParticleIndirectDispatch.js","import":"/engine/sim/particles/ParticleIndirectDispatch.js","sourceHash":"a57ed42ce62f909c2a49cde72f7038d53cbe11c0075f681a292616adb33df43c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleIndirectDispatch.js#0000:createIndirectDispatchSystem","exportIndex":0,"name":"createIndirectDispatchSystem","kind":"function","signature":"createIndirectDispatchSystem(device, maxParticles, workgroupSize = 256)","summary":"Create the indirect dispatch system."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleIndirectDispatch.md","moduleTitle":"sim/particles/ParticleIndirectDispatch","source":"engine/sim/particles/ParticleIndirectDispatch.js","import":"/engine/sim/particles/ParticleIndirectDispatch.js","sourceHash":"a57ed42ce62f909c2a49cde72f7038d53cbe11c0075f681a292616adb33df43c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleIndirectDispatch.js#0001:initIndirectDispatchBindGroups","exportIndex":1,"name":"initIndirectDispatchBindGroups","kind":"function","signature":"initIndirectDispatchBindGroups(system, device, positionsBuffer, velocitiesBuffer)","summary":"Initialize bind groups. Call after position/velocity buffers are available."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleIndirectDispatch.md","moduleTitle":"sim/particles/ParticleIndirectDispatch","source":"engine/sim/particles/ParticleIndirectDispatch.js","import":"/engine/sim/particles/ParticleIndirectDispatch.js","sourceHash":"a57ed42ce62f909c2a49cde72f7038d53cbe11c0075f681a292616adb33df43c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleIndirectDispatch.js#0002:executeIndirectScan","exportIndex":2,"name":"executeIndirectScan","kind":"function","signature":"executeIndirectScan(system, device, options = {})","summary":"Execute the scan + finalize passes. Run ONCE per frame, before any other particle work. After this call, drawIndirectBuffer and dispatchIndirectBuffer contain GPU-computed values."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleIndirectDispatch.md","moduleTitle":"sim/particles/ParticleIndirectDispatch","source":"engine/sim/particles/ParticleIndirectDispatch.js","import":"/engine/sim/particles/ParticleIndirectDispatch.js","sourceHash":"a57ed42ce62f909c2a49cde72f7038d53cbe11c0075f681a292616adb33df43c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleIndirectDispatch.js#0003:updateIndirectMaxSlots","exportIndex":3,"name":"updateIndirectMaxSlots","kind":"function","signature":"updateIndirectMaxSlots(system, device, maxSlots)","summary":"Update maxSlots (e.g., when particle capacity changes)."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleIndirectDispatch.md","moduleTitle":"sim/particles/ParticleIndirectDispatch","source":"engine/sim/particles/ParticleIndirectDispatch.js","import":"/engine/sim/particles/ParticleIndirectDispatch.js","sourceHash":"a57ed42ce62f909c2a49cde72f7038d53cbe11c0075f681a292616adb33df43c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleIndirectDispatch.js#0004:destroyIndirectDispatchSystem","exportIndex":4,"name":"destroyIndirectDispatchSystem","kind":"function","signature":"destroyIndirectDispatchSystem(system)","summary":"Destroy indirect dispatch system resources."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLennardJones.md","moduleTitle":"sim/particles/ParticleLennardJones","source":"engine/sim/particles/ParticleLennardJones.js","import":"/engine/sim/particles/ParticleLennardJones.js","sourceHash":"36c81178e32972c1c31c32240ef47306f489beda6d11e4626baa2c28796a36b5","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleLennardJones.js","title":"sim/particles/ParticleLennardJones","summary":"ParticleLennardJones.js - Lennard-Jones Intermolecular Potential (GAP 34) GPU compute shader implementing the Lennard-Jones 12-6 potential: V(r) = 4ε[(σ/r)¹² - (σ/r)⁶] F(r) = 24ε/r [2(σ/r)¹² - (σ/r)⁶] This single equation creates realistic solid/liquid/gas behavior: - r < σ: strong repulsion (Pauli exclusion) - r = σ·2^(1/6): equilibrium (minimum energy) - r > σ·2^(1/6): weak attraction (van der Waals) - r > 2.5σ: effectively zero (cutoff) Per-element ε and σ from element table (GAP 33). Cross-element interactions use Lorentz-Berthelot mixing rules. Uses neighbor grid (GAP 25) for O(N) spatial queries. Usage: const lj = createLennardJonesSystem(device, maxParticles); initLJBindGroups(lj, device, positionBuffer, velocityBuffer, gridBuffers, elementTable); executeLennardJones(lj, device, particleCount, dt);","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLennardJones.md","moduleTitle":"sim/particles/ParticleLennardJones","source":"engine/sim/particles/ParticleLennardJones.js","import":"/engine/sim/particles/ParticleLennardJones.js","sourceHash":"36c81178e32972c1c31c32240ef47306f489beda6d11e4626baa2c28796a36b5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLennardJones.js#0000:createLennardJonesSystem","exportIndex":0,"name":"createLennardJonesSystem","kind":"function","signature":"createLennardJonesSystem(device, maxParticles)","summary":"Create the Lennard-Jones system."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLennardJones.md","moduleTitle":"sim/particles/ParticleLennardJones","source":"engine/sim/particles/ParticleLennardJones.js","import":"/engine/sim/particles/ParticleLennardJones.js","sourceHash":"36c81178e32972c1c31c32240ef47306f489beda6d11e4626baa2c28796a36b5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLennardJones.js#0001:initLJBindGroups","exportIndex":1,"name":"initLJBindGroups","kind":"function","signature":"initLJBindGroups(system, device, positionBuffer, velocityBuffer, gridBuffers, elementTable, thermalBuffer)","summary":"Initialize bind groups. Requires neighbor grid + element table buffers."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLennardJones.md","moduleTitle":"sim/particles/ParticleLennardJones","source":"engine/sim/particles/ParticleLennardJones.js","import":"/engine/sim/particles/ParticleLennardJones.js","sourceHash":"36c81178e32972c1c31c32240ef47306f489beda6d11e4626baa2c28796a36b5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLennardJones.js#0002:executeLennardJones","exportIndex":2,"name":"executeLennardJones","kind":"function","signature":"executeLennardJones(system, device, particleCount, dt)","summary":"Execute the Lennard-Jones compute pass."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLennardJones.md","moduleTitle":"sim/particles/ParticleLennardJones","source":"engine/sim/particles/ParticleLennardJones.js","import":"/engine/sim/particles/ParticleLennardJones.js","sourceHash":"36c81178e32972c1c31c32240ef47306f489beda6d11e4626baa2c28796a36b5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLennardJones.js#0003:destroyLennardJonesSystem","exportIndex":3,"name":"destroyLennardJonesSystem","kind":"function","signature":"destroyLennardJonesSystem(system)","summary":"Destroy the system."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLifetimeCurves.md","moduleTitle":"sim/particles/ParticleLifetimeCurves","source":"engine/sim/particles/ParticleLifetimeCurves.js","import":"/engine/sim/particles/ParticleLifetimeCurves.js","sourceHash":"d3c1a7bf7059f6262d22dec1419b234fa03867faa07d1f7b906c3e6c33b9f674","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleLifetimeCurves.js","title":"sim/particles/ParticleLifetimeCurves","summary":"ParticleLifetimeCurves.js - GPU N-point Bezier curves for particle properties over lifetime Extends the color gradient LUT pattern to size, alpha, and velocity. Generates a 1D RGBA16float texture (256 texels): R = size multiplier G = alpha multiplier B = velocity multiplier A = reserved (1.0) Sampled in vertex shader (size), fragment shader (alpha), and optionally sim shader (velocity). Supports N-point curves with Catmull-Rom interpolation for smooth results.","exportCount":8}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLifetimeCurves.md","moduleTitle":"sim/particles/ParticleLifetimeCurves","source":"engine/sim/particles/ParticleLifetimeCurves.js","import":"/engine/sim/particles/ParticleLifetimeCurves.js","sourceHash":"d3c1a7bf7059f6262d22dec1419b234fa03867faa07d1f7b906c3e6c33b9f674","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLifetimeCurves.js#0000:curveFromLegacy3","exportIndex":0,"name":"curveFromLegacy3","kind":"function","signature":"curveFromLegacy3(arr)","summary":"Convert a legacy 3-point array [start, mid, end] to a curve."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLifetimeCurves.md","moduleTitle":"sim/particles/ParticleLifetimeCurves","source":"engine/sim/particles/ParticleLifetimeCurves.js","import":"/engine/sim/particles/ParticleLifetimeCurves.js","sourceHash":"d3c1a7bf7059f6262d22dec1419b234fa03867faa07d1f7b906c3e6c33b9f674","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLifetimeCurves.js#0001:generateCurveLUT","exportIndex":1,"name":"generateCurveLUT","kind":"function","signature":"generateCurveLUT(config = {})","summary":"Generate the RGBA LUT data (Float16 or Float32 depending on use)."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLifetimeCurves.md","moduleTitle":"sim/particles/ParticleLifetimeCurves","source":"engine/sim/particles/ParticleLifetimeCurves.js","import":"/engine/sim/particles/ParticleLifetimeCurves.js","sourceHash":"d3c1a7bf7059f6262d22dec1419b234fa03867faa07d1f7b906c3e6c33b9f674","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLifetimeCurves.js#0002:createCurveLUTTexture","exportIndex":2,"name":"createCurveLUTTexture","kind":"function","signature":"createCurveLUTTexture(device, config = {})","summary":"Create a GPU 1D LUT texture for lifetime curves."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLifetimeCurves.md","moduleTitle":"sim/particles/ParticleLifetimeCurves","source":"engine/sim/particles/ParticleLifetimeCurves.js","import":"/engine/sim/particles/ParticleLifetimeCurves.js","sourceHash":"d3c1a7bf7059f6262d22dec1419b234fa03867faa07d1f7b906c3e6c33b9f674","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLifetimeCurves.js#0003:updateCurveLUTTexture","exportIndex":3,"name":"updateCurveLUTTexture","kind":"function","signature":"updateCurveLUTTexture(device, texture, config = {})","summary":"Update an existing LUT texture with new curve data."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLifetimeCurves.md","moduleTitle":"sim/particles/ParticleLifetimeCurves","source":"engine/sim/particles/ParticleLifetimeCurves.js","import":"/engine/sim/particles/ParticleLifetimeCurves.js","sourceHash":"d3c1a7bf7059f6262d22dec1419b234fa03867faa07d1f7b906c3e6c33b9f674","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLifetimeCurves.js#0004:createLifetimeCurvesSystem","exportIndex":4,"name":"createLifetimeCurvesSystem","kind":"function","signature":"createLifetimeCurvesSystem(device, config = {})","summary":"Create a lifetime curves system for a particle world."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLifetimeCurves.md","moduleTitle":"sim/particles/ParticleLifetimeCurves","source":"engine/sim/particles/ParticleLifetimeCurves.js","import":"/engine/sim/particles/ParticleLifetimeCurves.js","sourceHash":"d3c1a7bf7059f6262d22dec1419b234fa03867faa07d1f7b906c3e6c33b9f674","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLifetimeCurves.js#0005:setLifetimeCurves","exportIndex":5,"name":"setLifetimeCurves","kind":"function","signature":"setLifetimeCurves(system, config)","summary":"Update curves at runtime."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLifetimeCurves.md","moduleTitle":"sim/particles/ParticleLifetimeCurves","source":"engine/sim/particles/ParticleLifetimeCurves.js","import":"/engine/sim/particles/ParticleLifetimeCurves.js","sourceHash":"d3c1a7bf7059f6262d22dec1419b234fa03867faa07d1f7b906c3e6c33b9f674","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLifetimeCurves.js#0006:destroyLifetimeCurvesSystem","exportIndex":6,"name":"destroyLifetimeCurvesSystem","kind":"function","signature":"destroyLifetimeCurvesSystem(system)","summary":"Destroy the system."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLifetimeCurves.md","moduleTitle":"sim/particles/ParticleLifetimeCurves","source":"engine/sim/particles/ParticleLifetimeCurves.js","import":"/engine/sim/particles/ParticleLifetimeCurves.js","sourceHash":"d3c1a7bf7059f6262d22dec1419b234fa03867faa07d1f7b906c3e6c33b9f674","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLifetimeCurves.js#0007:CURVE_PRESETS","exportIndex":7,"name":"CURVE_PRESETS","kind":"constant","signature":"CURVE_PRESETS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLightEmission.md","moduleTitle":"sim/particles/ParticleLightEmission","source":"engine/sim/particles/ParticleLightEmission.js","import":"/engine/sim/particles/ParticleLightEmission.js","sourceHash":"f4b8b7c63c9ca48505922860397d104f4a11ba2d7b26ee509adf3118e5ba1959","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleLightEmission.js","title":"sim/particles/ParticleLightEmission","summary":"ParticleLightEmission.js - Particles as dynamic point lights Niagara/PopcornFX parity: emissive particles contribute point lights to the scene. Pipeline: 1. GPU compute shader finds the top-N brightest/hottest particles 2. Results are read back to CPU as an array of point light descriptors 3. Any lighting system can consume these as dynamic lights This avoids tight coupling to a specific lighting implementation. The consumer (LightingPass, voxel lighting, etc.) reads the light array each frame.","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLightEmission.md","moduleTitle":"sim/particles/ParticleLightEmission","source":"engine/sim/particles/ParticleLightEmission.js","import":"/engine/sim/particles/ParticleLightEmission.js","sourceHash":"f4b8b7c63c9ca48505922860397d104f4a11ba2d7b26ee509adf3118e5ba1959","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLightEmission.js#0000:createParticleLightSystem","exportIndex":0,"name":"createParticleLightSystem","kind":"function","signature":"createParticleLightSystem(device, options = {})","summary":"Create particle light emission system"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLightEmission.md","moduleTitle":"sim/particles/ParticleLightEmission","source":"engine/sim/particles/ParticleLightEmission.js","import":"/engine/sim/particles/ParticleLightEmission.js","sourceHash":"f4b8b7c63c9ca48505922860397d104f4a11ba2d7b26ee509adf3118e5ba1959","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLightEmission.js#0001:initParticleLightBindGroup","exportIndex":1,"name":"initParticleLightBindGroup","kind":"function","signature":"initParticleLightBindGroup(system, particleWorld)","summary":"Initialize bind group (call once when particle buffers are ready)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLightEmission.md","moduleTitle":"sim/particles/ParticleLightEmission","source":"engine/sim/particles/ParticleLightEmission.js","import":"/engine/sim/particles/ParticleLightEmission.js","sourceHash":"f4b8b7c63c9ca48505922860397d104f4a11ba2d7b26ee509adf3118e5ba1959","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLightEmission.js#0002:extractParticleLights","exportIndex":2,"name":"extractParticleLights","kind":"function","signature":"extractParticleLights(encoder, system, particleCount)","summary":"Execute the light extraction compute pass"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLightEmission.md","moduleTitle":"sim/particles/ParticleLightEmission","source":"engine/sim/particles/ParticleLightEmission.js","import":"/engine/sim/particles/ParticleLightEmission.js","sourceHash":"f4b8b7c63c9ca48505922860397d104f4a11ba2d7b26ee509adf3118e5ba1959","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLightEmission.js#0003:readbackParticleLights","exportIndex":3,"name":"readbackParticleLights","kind":"function","signature":"async readbackParticleLights(system)","summary":"Read back extracted lights from GPU (async, call after command buffer submit) Returns array of { position: [x,y,z], radius, color: [r,g,b], intensity }"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLightEmission.md","moduleTitle":"sim/particles/ParticleLightEmission","source":"engine/sim/particles/ParticleLightEmission.js","import":"/engine/sim/particles/ParticleLightEmission.js","sourceHash":"f4b8b7c63c9ca48505922860397d104f4a11ba2d7b26ee509adf3118e5ba1959","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLightEmission.js#0004:getParticleLights","exportIndex":4,"name":"getParticleLights","kind":"function","signature":"getParticleLights(system)","summary":"Get the current particle lights (non-async, returns last readback result)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLightEmission.md","moduleTitle":"sim/particles/ParticleLightEmission","source":"engine/sim/particles/ParticleLightEmission.js","import":"/engine/sim/particles/ParticleLightEmission.js","sourceHash":"f4b8b7c63c9ca48505922860397d104f4a11ba2d7b26ee509adf3118e5ba1959","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLightEmission.js#0005:destroyParticleLightSystem","exportIndex":5,"name":"destroyParticleLightSystem","kind":"function","signature":"destroyParticleLightSystem(system)","summary":"Destroy particle light system"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLocalSpace.md","moduleTitle":"sim/particles/ParticleLocalSpace","source":"engine/sim/particles/ParticleLocalSpace.js","import":"/engine/sim/particles/ParticleLocalSpace.js","sourceHash":"034a3b5e00160a190753c720afca89e1a8cc7fd0359af7252e2888a409589ab1","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleLocalSpace.js","title":"sim/particles/ParticleLocalSpace","summary":"ParticleLocalSpace.js - Local/World Space Toggle (GAP 30) Per-emitter transform for local-space simulation. When enabled, particles are simulated in the emitter's local coordinate frame and transformed to world space only for rendering. Moving the emitter moves all its particles. When disabled (default), particles are emitted in world space and the emitter can move without affecting existing particles. GPU compute shader transforms between local and world space using the emitter's model matrix each frame. Matches PopcornFX CParticleEvolver_Localspace. Usage: const ls = createLocalSpaceSystem(device, maxParticles); initLocalSpaceBindGroups(ls, device, positionBuffer, velocityBuffer); setEmitterTransform(ls, modelMatrix); // Before sim step: transform world→local executeWorldToLocal(ls, device, particleCount); // ... run simulation in local space ... // After sim step: transform local→world executeLocalToWorld(ls, device, particleCount);","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLocalSpace.md","moduleTitle":"sim/particles/ParticleLocalSpace","source":"engine/sim/particles/ParticleLocalSpace.js","import":"/engine/sim/particles/ParticleLocalSpace.js","sourceHash":"034a3b5e00160a190753c720afca89e1a8cc7fd0359af7252e2888a409589ab1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLocalSpace.js#0000:createLocalSpaceSystem","exportIndex":0,"name":"createLocalSpaceSystem","kind":"function","signature":"createLocalSpaceSystem(device, maxParticles)","summary":"Create local space transform system."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLocalSpace.md","moduleTitle":"sim/particles/ParticleLocalSpace","source":"engine/sim/particles/ParticleLocalSpace.js","import":"/engine/sim/particles/ParticleLocalSpace.js","sourceHash":"034a3b5e00160a190753c720afca89e1a8cc7fd0359af7252e2888a409589ab1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLocalSpace.js#0001:initLocalSpaceBindGroups","exportIndex":1,"name":"initLocalSpaceBindGroups","kind":"function","signature":"initLocalSpaceBindGroups(system, device, positionBuffer, velocityBuffer)","summary":"Initialize bind groups."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLocalSpace.md","moduleTitle":"sim/particles/ParticleLocalSpace","source":"engine/sim/particles/ParticleLocalSpace.js","import":"/engine/sim/particles/ParticleLocalSpace.js","sourceHash":"034a3b5e00160a190753c720afca89e1a8cc7fd0359af7252e2888a409589ab1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLocalSpace.js#0002:setEmitterTransform","exportIndex":2,"name":"setEmitterTransform","kind":"function","signature":"setEmitterTransform(system, matrix)","summary":"Set the emitter transform (4x4 column-major matrix). Automatically computes the inverse."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLocalSpace.md","moduleTitle":"sim/particles/ParticleLocalSpace","source":"engine/sim/particles/ParticleLocalSpace.js","import":"/engine/sim/particles/ParticleLocalSpace.js","sourceHash":"034a3b5e00160a190753c720afca89e1a8cc7fd0359af7252e2888a409589ab1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLocalSpace.js#0003:setEmitterTransformFromPosRot","exportIndex":3,"name":"setEmitterTransformFromPosRot","kind":"function","signature":"setEmitterTransformFromPosRot(system, pos, rotation)","summary":"Set emitter transform from position + rotation (Euler angles in radians)."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLocalSpace.md","moduleTitle":"sim/particles/ParticleLocalSpace","source":"engine/sim/particles/ParticleLocalSpace.js","import":"/engine/sim/particles/ParticleLocalSpace.js","sourceHash":"034a3b5e00160a190753c720afca89e1a8cc7fd0359af7252e2888a409589ab1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLocalSpace.js#0004:executeWorldToLocal","exportIndex":4,"name":"executeWorldToLocal","kind":"function","signature":"executeWorldToLocal(system, device, particleCount)","summary":"Transform particles from world space to local space (run before sim step)."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLocalSpace.md","moduleTitle":"sim/particles/ParticleLocalSpace","source":"engine/sim/particles/ParticleLocalSpace.js","import":"/engine/sim/particles/ParticleLocalSpace.js","sourceHash":"034a3b5e00160a190753c720afca89e1a8cc7fd0359af7252e2888a409589ab1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLocalSpace.js#0005:executeLocalToWorld","exportIndex":5,"name":"executeLocalToWorld","kind":"function","signature":"executeLocalToWorld(system, device, particleCount)","summary":"Transform particles from local space to world space (run after sim step)."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLocalSpace.md","moduleTitle":"sim/particles/ParticleLocalSpace","source":"engine/sim/particles/ParticleLocalSpace.js","import":"/engine/sim/particles/ParticleLocalSpace.js","sourceHash":"034a3b5e00160a190753c720afca89e1a8cc7fd0359af7252e2888a409589ab1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLocalSpace.js#0006:destroyLocalSpaceSystem","exportIndex":6,"name":"destroyLocalSpaceSystem","kind":"function","signature":"destroyLocalSpaceSystem(system)","summary":"Destroy the system."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLongRangeMath.md","moduleTitle":"sim/particles/ParticleLongRangeMath","source":"engine/sim/particles/ParticleLongRangeMath.js","import":"/engine/sim/particles/ParticleLongRangeMath.js","sourceHash":"be43617b49172533f8fde165074bbe161fe2cb181842b4264c95cecfb104dba0","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleLongRangeMath.js","title":"sim/particles/ParticleLongRangeMath","summary":"Pure configuration, layout, and validation math shared by long-range particle solvers.","exportCount":26}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLongRangeMath.md","moduleTitle":"sim/particles/ParticleLongRangeMath","source":"engine/sim/particles/ParticleLongRangeMath.js","import":"/engine/sim/particles/ParticleLongRangeMath.js","sourceHash":"be43617b49172533f8fde165074bbe161fe2cb181842b4264c95cecfb104dba0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLongRangeMath.js#0000:fmmLevelCellCount","exportIndex":0,"name":"fmmLevelCellCount","kind":"function","signature":"fmmLevelCellCount(level)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLongRangeMath.md","moduleTitle":"sim/particles/ParticleLongRangeMath","source":"engine/sim/particles/ParticleLongRangeMath.js","import":"/engine/sim/particles/ParticleLongRangeMath.js","sourceHash":"be43617b49172533f8fde165074bbe161fe2cb181842b4264c95cecfb104dba0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLongRangeMath.js#0001:fmmLevelOffset","exportIndex":1,"name":"fmmLevelOffset","kind":"function","signature":"fmmLevelOffset(level)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLongRangeMath.md","moduleTitle":"sim/particles/ParticleLongRangeMath","source":"engine/sim/particles/ParticleLongRangeMath.js","import":"/engine/sim/particles/ParticleLongRangeMath.js","sourceHash":"be43617b49172533f8fde165074bbe161fe2cb181842b4264c95cecfb104dba0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLongRangeMath.js#0002:fmmTotalCellCount","exportIndex":2,"name":"fmmTotalCellCount","kind":"function","signature":"fmmTotalCellCount(depth)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLongRangeMath.md","moduleTitle":"sim/particles/ParticleLongRangeMath","source":"engine/sim/particles/ParticleLongRangeMath.js","import":"/engine/sim/particles/ParticleLongRangeMath.js","sourceHash":"be43617b49172533f8fde165074bbe161fe2cb181842b4264c95cecfb104dba0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLongRangeMath.js#0003:fmmSelectDepth","exportIndex":3,"name":"fmmSelectDepth","kind":"function","signature":"fmmSelectDepth(particleCount, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLongRangeMath.md","moduleTitle":"sim/particles/ParticleLongRangeMath","source":"engine/sim/particles/ParticleLongRangeMath.js","import":"/engine/sim/particles/ParticleLongRangeMath.js","sourceHash":"be43617b49172533f8fde165074bbe161fe2cb181842b4264c95cecfb104dba0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLongRangeMath.js#0004:normalizeFmmConfig","exportIndex":4,"name":"normalizeFmmConfig","kind":"function","signature":"normalizeFmmConfig(config = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLongRangeMath.md","moduleTitle":"sim/particles/ParticleLongRangeMath","source":"engine/sim/particles/ParticleLongRangeMath.js","import":"/engine/sim/particles/ParticleLongRangeMath.js","sourceHash":"be43617b49172533f8fde165074bbe161fe2cb181842b4264c95cecfb104dba0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLongRangeMath.js#0005:estimateFmmMemory","exportIndex":5,"name":"estimateFmmMemory","kind":"function","signature":"estimateFmmMemory(config = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLongRangeMath.md","moduleTitle":"sim/particles/ParticleLongRangeMath","source":"engine/sim/particles/ParticleLongRangeMath.js","import":"/engine/sim/particles/ParticleLongRangeMath.js","sourceHash":"be43617b49172533f8fde165074bbe161fe2cb181842b4264c95cecfb104dba0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLongRangeMath.js#0006:normalizeParticleMeshConfig","exportIndex":6,"name":"normalizeParticleMeshConfig","kind":"function","signature":"normalizeParticleMeshConfig(config = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLongRangeMath.md","moduleTitle":"sim/particles/ParticleLongRangeMath","source":"engine/sim/particles/ParticleLongRangeMath.js","import":"/engine/sim/particles/ParticleLongRangeMath.js","sourceHash":"be43617b49172533f8fde165074bbe161fe2cb181842b4264c95cecfb104dba0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLongRangeMath.js#0007:estimateParticleMeshMemory","exportIndex":7,"name":"estimateParticleMeshMemory","kind":"function","signature":"estimateParticleMeshMemory(config = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLongRangeMath.md","moduleTitle":"sim/particles/ParticleLongRangeMath","source":"engine/sim/particles/ParticleLongRangeMath.js","import":"/engine/sim/particles/ParticleLongRangeMath.js","sourceHash":"be43617b49172533f8fde165074bbe161fe2cb181842b4264c95cecfb104dba0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLongRangeMath.js#0008:generateProlateWindowTable","exportIndex":8,"name":"generateProlateWindowTable","kind":"function","signature":"generateProlateWindowTable(options = {})","summary":"Samples the positive, even, order-zero PSWF. Inverse iteration solves the spheroidal Sturm-Liouville operator in an orthonormal even-Legendre basis; the GPU linearly interpolates the resulting half-window."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLongRangeMath.md","moduleTitle":"sim/particles/ParticleLongRangeMath","source":"engine/sim/particles/ParticleLongRangeMath.js","import":"/engine/sim/particles/ParticleLongRangeMath.js","sourceHash":"be43617b49172533f8fde165074bbe161fe2cb181842b4264c95cecfb104dba0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLongRangeMath.js#0009:generateProlateSplitTable","exportIndex":9,"name":"generateProlateSplitTable","kind":"function","signature":"generateProlateSplitTable(windowTable)","summary":"Builds the normalized radial density and complementary local kernel used by the PSWF Ewald split. The density integrates to one on [0, 1], while the complement falls from one to zero at the real-space cutoff."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLongRangeMath.md","moduleTitle":"sim/particles/ParticleLongRangeMath","source":"engine/sim/particles/ParticleLongRangeMath.js","import":"/engine/sim/particles/ParticleLongRangeMath.js","sourceHash":"be43617b49172533f8fde165074bbe161fe2cb181842b4264c95cecfb104dba0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLongRangeMath.js#0010:prolateSplitFourierResponse","exportIndex":10,"name":"prolateSplitFourierResponse","kind":"function","signature":"prolateSplitFourierResponse(splitDensity, angularFrequency)","summary":"Cosine transform of the normalized even PSWF splitting kernel."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLongRangeMath.md","moduleTitle":"sim/particles/ParticleLongRangeMath","source":"engine/sim/particles/ParticleLongRangeMath.js","import":"/engine/sim/particles/ParticleLongRangeMath.js","sourceHash":"be43617b49172533f8fde165074bbe161fe2cb181842b4264c95cecfb104dba0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLongRangeMath.js#0011:fmmCellCoordinate","exportIndex":11,"name":"fmmCellCoordinate","kind":"function","signature":"fmmCellCoordinate(index, level)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLongRangeMath.md","moduleTitle":"sim/particles/ParticleLongRangeMath","source":"engine/sim/particles/ParticleLongRangeMath.js","import":"/engine/sim/particles/ParticleLongRangeMath.js","sourceHash":"be43617b49172533f8fde165074bbe161fe2cb181842b4264c95cecfb104dba0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLongRangeMath.js#0012:fmmMortonCellIndex","exportIndex":12,"name":"fmmMortonCellIndex","kind":"function","signature":"fmmMortonCellIndex(x, y, z, level)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLongRangeMath.md","moduleTitle":"sim/particles/ParticleLongRangeMath","source":"engine/sim/particles/ParticleLongRangeMath.js","import":"/engine/sim/particles/ParticleLongRangeMath.js","sourceHash":"be43617b49172533f8fde165074bbe161fe2cb181842b4264c95cecfb104dba0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLongRangeMath.js#0013:fmmInteractionCells","exportIndex":13,"name":"fmmInteractionCells","kind":"function","signature":"fmmInteractionCells(targetIndex, level)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLongRangeMath.md","moduleTitle":"sim/particles/ParticleLongRangeMath","source":"engine/sim/particles/ParticleLongRangeMath.js","import":"/engine/sim/particles/ParticleLongRangeMath.js","sourceHash":"be43617b49172533f8fde165074bbe161fe2cb181842b4264c95cecfb104dba0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLongRangeMath.js#0014:directLongRangeAccelerations","exportIndex":14,"name":"directLongRangeAccelerations","kind":"function","signature":"directLongRangeAccelerations(positions, sources, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLongRangeMath.md","moduleTitle":"sim/particles/ParticleLongRangeMath","source":"engine/sim/particles/ParticleLongRangeMath.js","import":"/engine/sim/particles/ParticleLongRangeMath.js","sourceHash":"be43617b49172533f8fde165074bbe161fe2cb181842b4264c95cecfb104dba0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLongRangeMath.js#0015:compareLongRangeVectors","exportIndex":15,"name":"compareLongRangeVectors","kind":"function","signature":"compareLongRangeVectors(reference, approximate)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLongRangeMath.md","moduleTitle":"sim/particles/ParticleLongRangeMath","source":"engine/sim/particles/ParticleLongRangeMath.js","import":"/engine/sim/particles/ParticleLongRangeMath.js","sourceHash":"be43617b49172533f8fde165074bbe161fe2cb181842b4264c95cecfb104dba0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLongRangeMath.js#0016:PARTICLE_LONG_RANGE_BACKENDS","exportIndex":16,"name":"PARTICLE_LONG_RANGE_BACKENDS","kind":"constant","signature":"PARTICLE_LONG_RANGE_BACKENDS","summary":"Pure configuration, layout, and validation math shared by long-range particle solvers."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLongRangeMath.md","moduleTitle":"sim/particles/ParticleLongRangeMath","source":"engine/sim/particles/ParticleLongRangeMath.js","import":"/engine/sim/particles/ParticleLongRangeMath.js","sourceHash":"be43617b49172533f8fde165074bbe161fe2cb181842b4264c95cecfb104dba0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLongRangeMath.js#0017:PARTICLE_LONG_RANGE_BOUNDARIES","exportIndex":17,"name":"PARTICLE_LONG_RANGE_BOUNDARIES","kind":"constant","signature":"PARTICLE_LONG_RANGE_BOUNDARIES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLongRangeMath.md","moduleTitle":"sim/particles/ParticleLongRangeMath","source":"engine/sim/particles/ParticleLongRangeMath.js","import":"/engine/sim/particles/ParticleLongRangeMath.js","sourceHash":"be43617b49172533f8fde165074bbe161fe2cb181842b4264c95cecfb104dba0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLongRangeMath.js#0018:FMM_MIN_DEPTH","exportIndex":18,"name":"FMM_MIN_DEPTH","kind":"constant","signature":"FMM_MIN_DEPTH","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLongRangeMath.md","moduleTitle":"sim/particles/ParticleLongRangeMath","source":"engine/sim/particles/ParticleLongRangeMath.js","import":"/engine/sim/particles/ParticleLongRangeMath.js","sourceHash":"be43617b49172533f8fde165074bbe161fe2cb181842b4264c95cecfb104dba0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLongRangeMath.js#0019:FMM_MAX_DEPTH","exportIndex":19,"name":"FMM_MAX_DEPTH","kind":"constant","signature":"FMM_MAX_DEPTH","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLongRangeMath.md","moduleTitle":"sim/particles/ParticleLongRangeMath","source":"engine/sim/particles/ParticleLongRangeMath.js","import":"/engine/sim/particles/ParticleLongRangeMath.js","sourceHash":"be43617b49172533f8fde165074bbe161fe2cb181842b4264c95cecfb104dba0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLongRangeMath.js#0020:FMM_DEFAULT_LEAF_OCCUPANCY","exportIndex":20,"name":"FMM_DEFAULT_LEAF_OCCUPANCY","kind":"constant","signature":"FMM_DEFAULT_LEAF_OCCUPANCY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLongRangeMath.md","moduleTitle":"sim/particles/ParticleLongRangeMath","source":"engine/sim/particles/ParticleLongRangeMath.js","import":"/engine/sim/particles/ParticleLongRangeMath.js","sourceHash":"be43617b49172533f8fde165074bbe161fe2cb181842b4264c95cecfb104dba0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLongRangeMath.js#0021:FMM_CELL_MOMENT_BYTES","exportIndex":21,"name":"FMM_CELL_MOMENT_BYTES","kind":"constant","signature":"FMM_CELL_MOMENT_BYTES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLongRangeMath.md","moduleTitle":"sim/particles/ParticleLongRangeMath","source":"engine/sim/particles/ParticleLongRangeMath.js","import":"/engine/sim/particles/ParticleLongRangeMath.js","sourceHash":"be43617b49172533f8fde165074bbe161fe2cb181842b4264c95cecfb104dba0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLongRangeMath.js#0022:FMM_CELL_LOCAL_BYTES","exportIndex":22,"name":"FMM_CELL_LOCAL_BYTES","kind":"constant","signature":"FMM_CELL_LOCAL_BYTES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLongRangeMath.md","moduleTitle":"sim/particles/ParticleLongRangeMath","source":"engine/sim/particles/ParticleLongRangeMath.js","import":"/engine/sim/particles/ParticleLongRangeMath.js","sourceHash":"be43617b49172533f8fde165074bbe161fe2cb181842b4264c95cecfb104dba0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLongRangeMath.js#0023:PARTICLE_MESH_MIN_GRID_SIZE","exportIndex":23,"name":"PARTICLE_MESH_MIN_GRID_SIZE","kind":"constant","signature":"PARTICLE_MESH_MIN_GRID_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLongRangeMath.md","moduleTitle":"sim/particles/ParticleLongRangeMath","source":"engine/sim/particles/ParticleLongRangeMath.js","import":"/engine/sim/particles/ParticleLongRangeMath.js","sourceHash":"be43617b49172533f8fde165074bbe161fe2cb181842b4264c95cecfb104dba0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLongRangeMath.js#0024:PARTICLE_MESH_MAX_GRID_SIZE","exportIndex":24,"name":"PARTICLE_MESH_MAX_GRID_SIZE","kind":"constant","signature":"PARTICLE_MESH_MAX_GRID_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleLongRangeMath.md","moduleTitle":"sim/particles/ParticleLongRangeMath","source":"engine/sim/particles/ParticleLongRangeMath.js","import":"/engine/sim/particles/ParticleLongRangeMath.js","sourceHash":"be43617b49172533f8fde165074bbe161fe2cb181842b4264c95cecfb104dba0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleLongRangeMath.js#0025:PARTICLE_MESH_WINDOW_SAMPLES","exportIndex":25,"name":"PARTICLE_MESH_WINDOW_SAMPLES","kind":"constant","signature":"PARTICLE_MESH_WINDOW_SAMPLES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleMeshEwald.md","moduleTitle":"sim/particles/ParticleMeshEwald","source":"engine/sim/particles/ParticleMeshEwald.js","import":"/engine/sim/particles/ParticleMeshEwald.js","sourceHash":"1583f6d568b0412f2f2051f44c70ef83fb0af90e113df67598b075910e8160a1","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleMeshEwald.js","title":"sim/particles/ParticleMeshEwald","summary":"Periodic particle-mesh Ewald solver with cubic B-spline PME and an experimental numerically sampled prolate-spheroidal (ESP) split and window. The solver uses exact integer cell counting/scatter, a separable 3D complex FFT, reciprocal-space screened Poisson solve, interpolated mesh gradients, and the complementary short-range Ewald force.","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleMeshEwald.md","moduleTitle":"sim/particles/ParticleMeshEwald","source":"engine/sim/particles/ParticleMeshEwald.js","import":"/engine/sim/particles/ParticleMeshEwald.js","sourceHash":"1583f6d568b0412f2f2051f44c70ef83fb0af90e113df67598b075910e8160a1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleMeshEwald.js#0000:createParticleMeshEwaldSystem","exportIndex":0,"name":"createParticleMeshEwaldSystem","kind":"function","signature":"createParticleMeshEwaldSystem(device, maxParticles, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleMeshEwald.md","moduleTitle":"sim/particles/ParticleMeshEwald","source":"engine/sim/particles/ParticleMeshEwald.js","import":"/engine/sim/particles/ParticleMeshEwald.js","sourceHash":"1583f6d568b0412f2f2051f44c70ef83fb0af90e113df67598b075910e8160a1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleMeshEwald.js#0001:initParticleMeshEwaldBindGroups","exportIndex":1,"name":"initParticleMeshEwaldBindGroups","kind":"function","signature":"initParticleMeshEwaldBindGroups(system, device, positionBuffer, velocityBuffer, metaBuffer, thermalBuffer,)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleMeshEwald.md","moduleTitle":"sim/particles/ParticleMeshEwald","source":"engine/sim/particles/ParticleMeshEwald.js","import":"/engine/sim/particles/ParticleMeshEwald.js","sourceHash":"1583f6d568b0412f2f2051f44c70ef83fb0af90e113df67598b075910e8160a1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleMeshEwald.js#0002:setParticleMeshEwaldParams","exportIndex":2,"name":"setParticleMeshEwaldParams","kind":"function","signature":"setParticleMeshEwaldParams(system, config = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleMeshEwald.md","moduleTitle":"sim/particles/ParticleMeshEwald","source":"engine/sim/particles/ParticleMeshEwald.js","import":"/engine/sim/particles/ParticleMeshEwald.js","sourceHash":"1583f6d568b0412f2f2051f44c70ef83fb0af90e113df67598b075910e8160a1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleMeshEwald.js#0003:executeParticleMeshEwald","exportIndex":3,"name":"executeParticleMeshEwald","kind":"function","signature":"executeParticleMeshEwald(system, device, particleCount, dt, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleMeshEwald.md","moduleTitle":"sim/particles/ParticleMeshEwald","source":"engine/sim/particles/ParticleMeshEwald.js","import":"/engine/sim/particles/ParticleMeshEwald.js","sourceHash":"1583f6d568b0412f2f2051f44c70ef83fb0af90e113df67598b075910e8160a1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleMeshEwald.js#0004:readParticleMeshEwaldDiagnostics","exportIndex":4,"name":"readParticleMeshEwaldDiagnostics","kind":"function","signature":"async readParticleMeshEwaldDiagnostics(system)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleMeshEwald.md","moduleTitle":"sim/particles/ParticleMeshEwald","source":"engine/sim/particles/ParticleMeshEwald.js","import":"/engine/sim/particles/ParticleMeshEwald.js","sourceHash":"1583f6d568b0412f2f2051f44c70ef83fb0af90e113df67598b075910e8160a1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleMeshEwald.js#0005:destroyParticleMeshEwaldSystem","exportIndex":5,"name":"destroyParticleMeshEwaldSystem","kind":"function","signature":"destroyParticleMeshEwaldSystem(system)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleNBody.md","moduleTitle":"sim/particles/ParticleNBody","source":"engine/sim/particles/ParticleNBody.js","import":"/engine/sim/particles/ParticleNBody.js","sourceHash":"dea7f42546235777a0261ff298bf41ed4105242b9fdd814181c0cfa668f12f8f","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleNBody.js","title":"sim/particles/ParticleNBody","summary":"ParticleNBody.js - N-Body Gravitational Dynamics (GAP 37) GPU compute: every particle attracts every other via gravity. F = G · m₁·m₂ / (r² + ε²)^(3/2) Direct summation O(N²) — suitable for up to ~100K particles on modern GPUs. Softening parameter ε prevents singularities at close range. Configurable G for different scales (molecular, macro, celestial). Uses tiled shared-memory approach: each workgroup loads a tile of particles into shared memory, computes interactions, then loads next tile. Usage: const nb = createNBodySystem(device, maxParticles); initNBodyBindGroups(nb, device, positionBuffer, velocityBuffer, metaBuffer); executeNBody(nb, device, particleCount, dt);","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleNBody.md","moduleTitle":"sim/particles/ParticleNBody","source":"engine/sim/particles/ParticleNBody.js","import":"/engine/sim/particles/ParticleNBody.js","sourceHash":"dea7f42546235777a0261ff298bf41ed4105242b9fdd814181c0cfa668f12f8f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleNBody.js#0000:createNBodySystem","exportIndex":0,"name":"createNBodySystem","kind":"function","signature":"createNBodySystem(device, maxParticles)","summary":"Create the N-body gravity system."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleNBody.md","moduleTitle":"sim/particles/ParticleNBody","source":"engine/sim/particles/ParticleNBody.js","import":"/engine/sim/particles/ParticleNBody.js","sourceHash":"dea7f42546235777a0261ff298bf41ed4105242b9fdd814181c0cfa668f12f8f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleNBody.js#0001:initNBodyBindGroups","exportIndex":1,"name":"initNBodyBindGroups","kind":"function","signature":"initNBodyBindGroups(system, device, positionBuffer, velocityBuffer, metaBuffer, thermalBuffer)","summary":"Initialize bind groups."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleNBody.md","moduleTitle":"sim/particles/ParticleNBody","source":"engine/sim/particles/ParticleNBody.js","import":"/engine/sim/particles/ParticleNBody.js","sourceHash":"dea7f42546235777a0261ff298bf41ed4105242b9fdd814181c0cfa668f12f8f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleNBody.js#0002:setNBodyParams","exportIndex":2,"name":"setNBodyParams","kind":"function","signature":"setNBodyParams(system, config)","summary":"Set N-body parameters at runtime."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleNBody.md","moduleTitle":"sim/particles/ParticleNBody","source":"engine/sim/particles/ParticleNBody.js","import":"/engine/sim/particles/ParticleNBody.js","sourceHash":"dea7f42546235777a0261ff298bf41ed4105242b9fdd814181c0cfa668f12f8f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleNBody.js#0003:executeNBody","exportIndex":3,"name":"executeNBody","kind":"function","signature":"executeNBody(system, device, particleCount, dt, options = {})","summary":"Execute the N-body compute pass."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleNBody.md","moduleTitle":"sim/particles/ParticleNBody","source":"engine/sim/particles/ParticleNBody.js","import":"/engine/sim/particles/ParticleNBody.js","sourceHash":"dea7f42546235777a0261ff298bf41ed4105242b9fdd814181c0cfa668f12f8f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleNBody.js#0004:destroyNBodySystem","exportIndex":4,"name":"destroyNBodySystem","kind":"function","signature":"destroyNBodySystem(system)","summary":"Destroy."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleNeighborGrid.md","moduleTitle":"sim/particles/ParticleNeighborGrid","source":"engine/sim/particles/ParticleNeighborGrid.js","import":"/engine/sim/particles/ParticleNeighborGrid.js","sourceHash":"3f7aa96213f7e299541b20d4e89fdd0c1df01f9a3a4f436f6d880c2ab66f62e3","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleNeighborGrid.js","title":"sim/particles/ParticleNeighborGrid","summary":"ParticleNeighborGrid.js - General-Purpose Neighbor Grid (GAP 25) GPU spatial query structure for arbitrary particle-to-particle interactions. Unlike the collision-specific spatial grid, this is a general-purpose 3D grid that any system can query: flocking, color transfer, interaction, etc. Matches Niagara Neighbor Grid 3D and PopcornFX Spatial Layers. Architecture (hash-modulo bucket approach — inspired by NVIDIA CUDA Particles): 1. Clear cell counts via encoder.clearBuffer (GPU memset, no dispatch limit) 2. Insert particles into hash buckets (compute pass, atomic append) 3. Query neighbors from any other compute pass via grid lookup Instead of allocating one bucket per 3D cell (can exceed millions), we use numBuckets = min(totalCells, maxParticles). The flat cell index is modulo'd into this smaller range. Hash collisions are harmless — consumer shaders already do distance checks that filter false positives. Grid stores up to maxNeighborsPerCell particle indices per bucket. Query returns indices of particles in same + adjacent cells (27-cell neighborhood).","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleNeighborGrid.md","moduleTitle":"sim/particles/ParticleNeighborGrid","source":"engine/sim/particles/ParticleNeighborGrid.js","import":"/engine/sim/particles/ParticleNeighborGrid.js","sourceHash":"3f7aa96213f7e299541b20d4e89fdd0c1df01f9a3a4f436f6d880c2ab66f62e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleNeighborGrid.js#0000:createNeighborGridSystem","exportIndex":0,"name":"createNeighborGridSystem","kind":"function","signature":"createNeighborGridSystem(device, config = {})","summary":"Create a general-purpose neighbor grid."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleNeighborGrid.md","moduleTitle":"sim/particles/ParticleNeighborGrid","source":"engine/sim/particles/ParticleNeighborGrid.js","import":"/engine/sim/particles/ParticleNeighborGrid.js","sourceHash":"3f7aa96213f7e299541b20d4e89fdd0c1df01f9a3a4f436f6d880c2ab66f62e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleNeighborGrid.js#0001:initNeighborGridBindGroups","exportIndex":1,"name":"initNeighborGridBindGroups","kind":"function","signature":"initNeighborGridBindGroups(system, device, positionBuffer, velocityBuffer)","summary":"Initialize bind groups (call after particle buffers are created)."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleNeighborGrid.md","moduleTitle":"sim/particles/ParticleNeighborGrid","source":"engine/sim/particles/ParticleNeighborGrid.js","import":"/engine/sim/particles/ParticleNeighborGrid.js","sourceHash":"3f7aa96213f7e299541b20d4e89fdd0c1df01f9a3a4f436f6d880c2ab66f62e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleNeighborGrid.js#0002:setNeighborGridParticleCount","exportIndex":2,"name":"setNeighborGridParticleCount","kind":"function","signature":"setNeighborGridParticleCount(system, particleCount)","summary":"Update the particle count in params (call each frame if count changes)."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleNeighborGrid.md","moduleTitle":"sim/particles/ParticleNeighborGrid","source":"engine/sim/particles/ParticleNeighborGrid.js","import":"/engine/sim/particles/ParticleNeighborGrid.js","sourceHash":"3f7aa96213f7e299541b20d4e89fdd0c1df01f9a3a4f436f6d880c2ab66f62e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleNeighborGrid.js#0003:buildNeighborGrid","exportIndex":3,"name":"buildNeighborGrid","kind":"function","signature":"buildNeighborGrid(system, device, particleCount)","summary":"Execute clear + insert passes. Call once per frame before any queries."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleNeighborGrid.md","moduleTitle":"sim/particles/ParticleNeighborGrid","source":"engine/sim/particles/ParticleNeighborGrid.js","import":"/engine/sim/particles/ParticleNeighborGrid.js","sourceHash":"3f7aa96213f7e299541b20d4e89fdd0c1df01f9a3a4f436f6d880c2ab66f62e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleNeighborGrid.js#0004:getNeighborGridBuffers","exportIndex":4,"name":"getNeighborGridBuffers","kind":"function","signature":"getNeighborGridBuffers(system)","summary":"Get the grid buffers for use in consumer compute shaders. Consumer shaders should bind cellCountsBuffer and cellEntriesBuffer as read-only storage."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleNeighborGrid.md","moduleTitle":"sim/particles/ParticleNeighborGrid","source":"engine/sim/particles/ParticleNeighborGrid.js","import":"/engine/sim/particles/ParticleNeighborGrid.js","sourceHash":"3f7aa96213f7e299541b20d4e89fdd0c1df01f9a3a4f436f6d880c2ab66f62e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleNeighborGrid.js#0005:destroyNeighborGridSystem","exportIndex":5,"name":"destroyNeighborGridSystem","kind":"function","signature":"destroyNeighborGridSystem(system)","summary":"Destroy the system."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleNeighborGrid.md","moduleTitle":"sim/particles/ParticleNeighborGrid","source":"engine/sim/particles/ParticleNeighborGrid.js","import":"/engine/sim/particles/ParticleNeighborGrid.js","sourceHash":"3f7aa96213f7e299541b20d4e89fdd0c1df01f9a3a4f436f6d880c2ab66f62e3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleNeighborGrid.js#0006:NEIGHBOR_QUERY_WGSL","exportIndex":6,"name":"NEIGHBOR_QUERY_WGSL","kind":"constant","signature":"NEIGHBOR_QUERY_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleNoiseTexture.md","moduleTitle":"sim/particles/ParticleNoiseTexture","source":"engine/sim/particles/ParticleNoiseTexture.js","import":"/engine/sim/particles/ParticleNoiseTexture.js","sourceHash":"764823344fbde5b66b9100b61d5e6d4a687357568855fabdeacdd65e212c0c15","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleNoiseTexture.js","title":"sim/particles/ParticleNoiseTexture","summary":"ParticleNoiseTexture.js - Pre-baked 3D curl noise volume texture Replaces expensive per-particle gradientNoise calls with one filtered sample from a two-pass vector-potential -> discrete-curl 3D texture bake. 6-24× cheaper turbulence depending on octave count. The noise is tileable: baked with periodic boundary conditions and sampled with repeat addressing mode for seamless spatial tiling. Ref: GPU Gems 3 Ch.1 \"Generating Complex Procedural Terrains Using the GPU\"","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleNoiseTexture.md","moduleTitle":"sim/particles/ParticleNoiseTexture","source":"engine/sim/particles/ParticleNoiseTexture.js","import":"/engine/sim/particles/ParticleNoiseTexture.js","sourceHash":"764823344fbde5b66b9100b61d5e6d4a687357568855fabdeacdd65e212c0c15","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleNoiseTexture.js#0000:createNoiseTextureSystem","exportIndex":0,"name":"createNoiseTextureSystem","kind":"function","signature":"async createNoiseTextureSystem(device, resolution = 64, period = DEFAULT_NOISE_PERIOD)","summary":"Create the 3D noise texture system."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleNoiseTexture.md","moduleTitle":"sim/particles/ParticleNoiseTexture","source":"engine/sim/particles/ParticleNoiseTexture.js","import":"/engine/sim/particles/ParticleNoiseTexture.js","sourceHash":"764823344fbde5b66b9100b61d5e6d4a687357568855fabdeacdd65e212c0c15","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleNoiseTexture.js#0001:bakeNoiseTexture","exportIndex":1,"name":"bakeNoiseTexture","kind":"function","signature":"bakeNoiseTexture(system, device)","summary":"Bake the noise volume texture. Call once after creation. This is a one-time GPU operation (~1ms for 64³, ~8ms for 128³)."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleNoiseTexture.md","moduleTitle":"sim/particles/ParticleNoiseTexture","source":"engine/sim/particles/ParticleNoiseTexture.js","import":"/engine/sim/particles/ParticleNoiseTexture.js","sourceHash":"764823344fbde5b66b9100b61d5e6d4a687357568855fabdeacdd65e212c0c15","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleNoiseTexture.js#0002:createDummyNoiseTexture","exportIndex":2,"name":"createDummyNoiseTexture","kind":"function","signature":"createDummyNoiseTexture(device)","summary":"Create a 1×1×1 dummy noise texture for use when the real texture isn't ready. Returns { textureView, sampler, paramsBuffer } suitable for bind group creation."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleNoiseTexture.md","moduleTitle":"sim/particles/ParticleNoiseTexture","source":"engine/sim/particles/ParticleNoiseTexture.js","import":"/engine/sim/particles/ParticleNoiseTexture.js","sourceHash":"764823344fbde5b66b9100b61d5e6d4a687357568855fabdeacdd65e212c0c15","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleNoiseTexture.js#0003:destroyNoiseTextureSystem","exportIndex":3,"name":"destroyNoiseTextureSystem","kind":"function","signature":"destroyNoiseTextureSystem(system)","summary":"Destroy noise texture system resources."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleNoiseTexture.md","moduleTitle":"sim/particles/ParticleNoiseTexture","source":"engine/sim/particles/ParticleNoiseTexture.js","import":"/engine/sim/particles/ParticleNoiseTexture.js","sourceHash":"764823344fbde5b66b9100b61d5e6d4a687357568855fabdeacdd65e212c0c15","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleNoiseTexture.js#0004:NOISE_TEXTURE_BINDINGS_SNIPPET","exportIndex":4,"name":"NOISE_TEXTURE_BINDINGS_SNIPPET","kind":"constant","signature":"NOISE_TEXTURE_BINDINGS_SNIPPET","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleRadixSort.md","moduleTitle":"sim/particles/ParticleRadixSort","source":"engine/sim/particles/ParticleRadixSort.js","import":"/engine/sim/particles/ParticleRadixSort.js","sourceHash":"826d4aec433706085a923b997ab16c1f443cca09902906c297b9ad5797a00f6c","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleRadixSort.js","title":"sim/particles/ParticleRadixSort","summary":"ParticleRadixSort.js - GPU 4-way radix sort for particle distance sorting Replaces bitonic sort (O(n log²n) dispatches) with radix sort (O(n), fixed 8 passes). For 100K particles: bitonic = ~289 dispatches, radix = ~24 dispatches (12× fewer). Architecture: - 4-bit radix: 16 buckets per pass, 8 passes for 32-bit keys - Float-to-sortable-uint conversion for correct float ordering - Per-pass: histogram → prefix sum → scatter (3 dispatches) - Double-buffered keys+values for ping-pong between passes - \"Order check\" optimization: skip sort when data is already sorted Ref: \"Fast 4-way parallel radix sorting on GPUs\" (Ha et al.) kishimisu/WebGPU-Radix-Sort","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleRadixSort.md","moduleTitle":"sim/particles/ParticleRadixSort","source":"engine/sim/particles/ParticleRadixSort.js","import":"/engine/sim/particles/ParticleRadixSort.js","sourceHash":"826d4aec433706085a923b997ab16c1f443cca09902906c297b9ad5797a00f6c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleRadixSort.js#0000:createRadixSortSystem","exportIndex":0,"name":"createRadixSortSystem","kind":"function","signature":"createRadixSortSystem(device, maxParticles)","summary":"Create GPU radix sort system for transparent particle rendering. Drop-in replacement for the bitonic sort system."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleRadixSort.md","moduleTitle":"sim/particles/ParticleRadixSort","source":"engine/sim/particles/ParticleRadixSort.js","import":"/engine/sim/particles/ParticleRadixSort.js","sourceHash":"826d4aec433706085a923b997ab16c1f443cca09902906c297b9ad5797a00f6c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleRadixSort.js#0001:initRadixSortBindGroups","exportIndex":1,"name":"initRadixSortBindGroups","kind":"function","signature":"initRadixSortBindGroups(system, device, positionsBuffer)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleRadixSort.md","moduleTitle":"sim/particles/ParticleRadixSort","source":"engine/sim/particles/ParticleRadixSort.js","import":"/engine/sim/particles/ParticleRadixSort.js","sourceHash":"826d4aec433706085a923b997ab16c1f443cca09902906c297b9ad5797a00f6c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleRadixSort.js#0002:executeRadixSort","exportIndex":2,"name":"executeRadixSort","kind":"function","signature":"executeRadixSort(system, device, particleCount, cameraPos)","summary":"Execute GPU radix sort. Drop-in replacement for executeGPUSort."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleRadixSort.md","moduleTitle":"sim/particles/ParticleRadixSort","source":"engine/sim/particles/ParticleRadixSort.js","import":"/engine/sim/particles/ParticleRadixSort.js","sourceHash":"826d4aec433706085a923b997ab16c1f443cca09902906c297b9ad5797a00f6c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleRadixSort.js#0003:destroyRadixSortSystem","exportIndex":3,"name":"destroyRadixSortSystem","kind":"function","signature":"destroyRadixSortSystem(system)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleReactionTable.md","moduleTitle":"sim/particles/ParticleReactionTable","source":"engine/sim/particles/ParticleReactionTable.js","import":"/engine/sim/particles/ParticleReactionTable.js","sourceHash":"ad3c963517ea10ed4f1d95e1d6bb94245bc2f446b37b41236b9ceda0f46eed73","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleReactionTable.js","title":"sim/particles/ParticleReactionTable","summary":"ParticleReactionTable.js - Cross-Emitter Particle Reaction System GPU-driven reaction table: when particles with different materialIdx collide, the collision shader scans this table for a matching (matA, matB) rule. If found: apply energy, optionally kill reactants, emit reaction event (type 5). EventSpawn reads the rule index to spawn product particles with correct properties. Exceeds Niagara/PopcornFX/Unity VFX Graph — none support particle-particle reactions. Usage: const table = createReactionTable(device); addReaction(table, MATERIAL.FIRE, MATERIAL.WATER, { ... }); registerDefaultReactions(table); // Bind table.buffer to sim shader group","exportCount":16}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleReactionTable.md","moduleTitle":"sim/particles/ParticleReactionTable","source":"engine/sim/particles/ParticleReactionTable.js","import":"/engine/sim/particles/ParticleReactionTable.js","sourceHash":"ad3c963517ea10ed4f1d95e1d6bb94245bc2f446b37b41236b9ceda0f46eed73","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleReactionTable.js#0000:createReactionTable","exportIndex":0,"name":"createReactionTable","kind":"function","signature":"createReactionTable(device)","summary":"Create a reaction table with GPU uniform buffer."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleReactionTable.md","moduleTitle":"sim/particles/ParticleReactionTable","source":"engine/sim/particles/ParticleReactionTable.js","import":"/engine/sim/particles/ParticleReactionTable.js","sourceHash":"ad3c963517ea10ed4f1d95e1d6bb94245bc2f446b37b41236b9ceda0f46eed73","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleReactionTable.js#0001:destroyReactionTable","exportIndex":1,"name":"destroyReactionTable","kind":"function","signature":"destroyReactionTable(table)","summary":"Destroy the reaction table and release GPU resources."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleReactionTable.md","moduleTitle":"sim/particles/ParticleReactionTable","source":"engine/sim/particles/ParticleReactionTable.js","import":"/engine/sim/particles/ParticleReactionTable.js","sourceHash":"ad3c963517ea10ed4f1d95e1d6bb94245bc2f446b37b41236b9ceda0f46eed73","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleReactionTable.js#0002:addReaction","exportIndex":2,"name":"addReaction","kind":"function","signature":"addReaction(table, matA, matB, config = {})","summary":"Add a reaction rule to the table."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleReactionTable.md","moduleTitle":"sim/particles/ParticleReactionTable","source":"engine/sim/particles/ParticleReactionTable.js","import":"/engine/sim/particles/ParticleReactionTable.js","sourceHash":"ad3c963517ea10ed4f1d95e1d6bb94245bc2f446b37b41236b9ceda0f46eed73","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleReactionTable.js#0003:removeReaction","exportIndex":3,"name":"removeReaction","kind":"function","signature":"removeReaction(table, index)","summary":"Remove a reaction rule by index."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleReactionTable.md","moduleTitle":"sim/particles/ParticleReactionTable","source":"engine/sim/particles/ParticleReactionTable.js","import":"/engine/sim/particles/ParticleReactionTable.js","sourceHash":"ad3c963517ea10ed4f1d95e1d6bb94245bc2f446b37b41236b9ceda0f46eed73","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleReactionTable.js#0004:clearReactions","exportIndex":4,"name":"clearReactions","kind":"function","signature":"clearReactions(table)","summary":"Remove all reaction rules."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleReactionTable.md","moduleTitle":"sim/particles/ParticleReactionTable","source":"engine/sim/particles/ParticleReactionTable.js","import":"/engine/sim/particles/ParticleReactionTable.js","sourceHash":"ad3c963517ea10ed4f1d95e1d6bb94245bc2f446b37b41236b9ceda0f46eed73","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleReactionTable.js#0005:uploadReactionTable","exportIndex":5,"name":"uploadReactionTable","kind":"function","signature":"uploadReactionTable(table)","summary":"Upload the reaction table to the GPU uniform buffer. Call once after adding/removing reactions (not every frame)."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleReactionTable.md","moduleTitle":"sim/particles/ParticleReactionTable","source":"engine/sim/particles/ParticleReactionTable.js","import":"/engine/sim/particles/ParticleReactionTable.js","sourceHash":"ad3c963517ea10ed4f1d95e1d6bb94245bc2f446b37b41236b9ceda0f46eed73","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleReactionTable.js#0006:registerDefaultReactions","exportIndex":6,"name":"registerDefaultReactions","kind":"function","signature":"registerDefaultReactions(table)","summary":"Register built-in reaction presets."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleReactionTable.md","moduleTitle":"sim/particles/ParticleReactionTable","source":"engine/sim/particles/ParticleReactionTable.js","import":"/engine/sim/particles/ParticleReactionTable.js","sourceHash":"ad3c963517ea10ed4f1d95e1d6bb94245bc2f446b37b41236b9ceda0f46eed73","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleReactionTable.js#0007:getReactions","exportIndex":7,"name":"getReactions","kind":"function","signature":"getReactions(table)","summary":"Get the current reaction rules."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleReactionTable.md","moduleTitle":"sim/particles/ParticleReactionTable","source":"engine/sim/particles/ParticleReactionTable.js","import":"/engine/sim/particles/ParticleReactionTable.js","sourceHash":"ad3c963517ea10ed4f1d95e1d6bb94245bc2f446b37b41236b9ceda0f46eed73","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleReactionTable.js#0008:getMaterialName","exportIndex":8,"name":"getMaterialName","kind":"function","signature":"getMaterialName(matId)","summary":"Get a material name from its ID."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleReactionTable.md","moduleTitle":"sim/particles/ParticleReactionTable","source":"engine/sim/particles/ParticleReactionTable.js","import":"/engine/sim/particles/ParticleReactionTable.js","sourceHash":"ad3c963517ea10ed4f1d95e1d6bb94245bc2f446b37b41236b9ceda0f46eed73","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleReactionTable.js#0009:getMaterialForSubstance","exportIndex":9,"name":"getMaterialForSubstance","kind":"function","signature":"getMaterialForSubstance(substanceKey)","summary":"Look up the material ID for a substance preset key."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleReactionTable.md","moduleTitle":"sim/particles/ParticleReactionTable","source":"engine/sim/particles/ParticleReactionTable.js","import":"/engine/sim/particles/ParticleReactionTable.js","sourceHash":"ad3c963517ea10ed4f1d95e1d6bb94245bc2f446b37b41236b9ceda0f46eed73","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleReactionTable.js#0010:MATERIAL","exportIndex":10,"name":"MATERIAL","kind":"constant","signature":"MATERIAL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleReactionTable.md","moduleTitle":"sim/particles/ParticleReactionTable","source":"engine/sim/particles/ParticleReactionTable.js","import":"/engine/sim/particles/ParticleReactionTable.js","sourceHash":"ad3c963517ea10ed4f1d95e1d6bb94245bc2f446b37b41236b9ceda0f46eed73","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleReactionTable.js#0011:SUBSTANCE_TO_MATERIAL","exportIndex":11,"name":"SUBSTANCE_TO_MATERIAL","kind":"constant","signature":"SUBSTANCE_TO_MATERIAL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleReactionTable.md","moduleTitle":"sim/particles/ParticleReactionTable","source":"engine/sim/particles/ParticleReactionTable.js","import":"/engine/sim/particles/ParticleReactionTable.js","sourceHash":"ad3c963517ea10ed4f1d95e1d6bb94245bc2f446b37b41236b9ceda0f46eed73","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleReactionTable.js#0012:REACTION_KILL_A","exportIndex":12,"name":"REACTION_KILL_A","kind":"constant","signature":"REACTION_KILL_A","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleReactionTable.md","moduleTitle":"sim/particles/ParticleReactionTable","source":"engine/sim/particles/ParticleReactionTable.js","import":"/engine/sim/particles/ParticleReactionTable.js","sourceHash":"ad3c963517ea10ed4f1d95e1d6bb94245bc2f446b37b41236b9ceda0f46eed73","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleReactionTable.js#0013:REACTION_KILL_B","exportIndex":13,"name":"REACTION_KILL_B","kind":"constant","signature":"REACTION_KILL_B","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleReactionTable.md","moduleTitle":"sim/particles/ParticleReactionTable","source":"engine/sim/particles/ParticleReactionTable.js","import":"/engine/sim/particles/ParticleReactionTable.js","sourceHash":"ad3c963517ea10ed4f1d95e1d6bb94245bc2f446b37b41236b9ceda0f46eed73","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleReactionTable.js#0014:REACTION_SPAWN_PRODUCT","exportIndex":14,"name":"REACTION_SPAWN_PRODUCT","kind":"constant","signature":"REACTION_SPAWN_PRODUCT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleReactionTable.md","moduleTitle":"sim/particles/ParticleReactionTable","source":"engine/sim/particles/ParticleReactionTable.js","import":"/engine/sim/particles/ParticleReactionTable.js","sourceHash":"ad3c963517ea10ed4f1d95e1d6bb94245bc2f446b37b41236b9ceda0f46eed73","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleReactionTable.js#0015:REACTION_KILL_BOTH","exportIndex":15,"name":"REACTION_KILL_BOTH","kind":"constant","signature":"REACTION_KILL_BOTH","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleRibbonTrail.md","moduleTitle":"sim/particles/ParticleRibbonTrail","source":"engine/sim/particles/ParticleRibbonTrail.js","import":"/engine/sim/particles/ParticleRibbonTrail.js","sourceHash":"10ca8d9603093690de50cfffdafa723179772dbff06c03840b8101c77e7271e2","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleRibbonTrail.js","title":"sim/particles/ParticleRibbonTrail","summary":"ParticleRibbonTrail.js - GPU ribbon/trail rendering for particles Connects particle position history into continuous camera-facing triangle strips for smoke trails, magic effects, and motion streaks. Architecture: 1. Trail Update (compute): shifts history ring buffer back, inserts current position 2. Ribbon Render (vertex+fragment): reads trail history, generates camera-facing triangle strip with width tapering and alpha fade Each particle trail is rendered as one triangle strip instance. Vertex count per instance = historyLength × 2. No intermediate vertex buffer needed — the vertex shader reads history directly. Ref: GPU Gems 3 Ch.23, UE5 Niagara ribbon renderer","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleRibbonTrail.md","moduleTitle":"sim/particles/ParticleRibbonTrail","source":"engine/sim/particles/ParticleRibbonTrail.js","import":"/engine/sim/particles/ParticleRibbonTrail.js","sourceHash":"10ca8d9603093690de50cfffdafa723179772dbff06c03840b8101c77e7271e2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleRibbonTrail.js#0000:createRibbonTrailSystem","exportIndex":0,"name":"createRibbonTrailSystem","kind":"function","signature":"createRibbonTrailSystem(device, maxParticles, historyLength = 8, targetFormat = 'bgra8unorm', options = {})","summary":"Create ribbon trail system."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleRibbonTrail.md","moduleTitle":"sim/particles/ParticleRibbonTrail","source":"engine/sim/particles/ParticleRibbonTrail.js","import":"/engine/sim/particles/ParticleRibbonTrail.js","sourceHash":"10ca8d9603093690de50cfffdafa723179772dbff06c03840b8101c77e7271e2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleRibbonTrail.js#0001:initRibbonTrailBindGroups","exportIndex":1,"name":"initRibbonTrailBindGroups","kind":"function","signature":"initRibbonTrailBindGroups(system, device, positionsBuffer, velocitiesBuffer)","summary":"Initialize bind groups for the trail system. Call after the position buffer is available."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleRibbonTrail.md","moduleTitle":"sim/particles/ParticleRibbonTrail","source":"engine/sim/particles/ParticleRibbonTrail.js","import":"/engine/sim/particles/ParticleRibbonTrail.js","sourceHash":"10ca8d9603093690de50cfffdafa723179772dbff06c03840b8101c77e7271e2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleRibbonTrail.js#0002:updateTrailHistory","exportIndex":2,"name":"updateTrailHistory","kind":"function","signature":"updateTrailHistory(system, device)","summary":"Update trail history for all particles (compute pass). Call once per frame AFTER the main sim step."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleRibbonTrail.md","moduleTitle":"sim/particles/ParticleRibbonTrail","source":"engine/sim/particles/ParticleRibbonTrail.js","import":"/engine/sim/particles/ParticleRibbonTrail.js","sourceHash":"10ca8d9603093690de50cfffdafa723179772dbff06c03840b8101c77e7271e2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleRibbonTrail.js#0003:renderRibbonTrails","exportIndex":3,"name":"renderRibbonTrails","kind":"function","signature":"renderRibbonTrails(pass, system, viewProjMatrix, cameraPos, instanceCount)","summary":"Render ribbon trails into the current render pass."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleRibbonTrail.md","moduleTitle":"sim/particles/ParticleRibbonTrail","source":"engine/sim/particles/ParticleRibbonTrail.js","import":"/engine/sim/particles/ParticleRibbonTrail.js","sourceHash":"10ca8d9603093690de50cfffdafa723179772dbff06c03840b8101c77e7271e2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleRibbonTrail.js#0004:destroyRibbonTrailSystem","exportIndex":4,"name":"destroyRibbonTrailSystem","kind":"function","signature":"destroyRibbonTrailSystem(system)","summary":"Destroy ribbon trail system resources."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSDFAttraction.md","moduleTitle":"sim/particles/ParticleSDFAttraction","source":"engine/sim/particles/ParticleSDFAttraction.js","import":"/engine/sim/particles/ParticleSDFAttraction.js","sourceHash":"41566f192a61f37b548eabcd712779e5441e37e14ca156b86b6daf8d7b49971c","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleSDFAttraction.js","title":"sim/particles/ParticleSDFAttraction","summary":"ParticleSDFAttraction.js - SDF Attraction/Repulsion Force (GAP 15) Attract or repel particles toward/from SDF surfaces. Unlike SDF collision (hard boundary), this applies a smooth force field based on signed distance, so particles orbit, hover near, or flee from surfaces. Force = -gradient(SDF) × strength / (|SDF| + softness) Modes: - attract: particles pulled toward surface (strength > 0) - repel: particles pushed away from surface (strength < 0) - orbit: attract + tangential velocity (strength > 0, orbitalFactor > 0) - surface-lock: very strong attraction with damping (particles stick to surface) Uses a GPU compute shader that evaluates SDF primitives and applies forces.","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSDFAttraction.md","moduleTitle":"sim/particles/ParticleSDFAttraction","source":"engine/sim/particles/ParticleSDFAttraction.js","import":"/engine/sim/particles/ParticleSDFAttraction.js","sourceHash":"41566f192a61f37b548eabcd712779e5441e37e14ca156b86b6daf8d7b49971c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSDFAttraction.js#0000:createSDFAttractionSystem","exportIndex":0,"name":"createSDFAttractionSystem","kind":"function","signature":"createSDFAttractionSystem(device)","summary":"Create an SDF attraction system."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSDFAttraction.md","moduleTitle":"sim/particles/ParticleSDFAttraction","source":"engine/sim/particles/ParticleSDFAttraction.js","import":"/engine/sim/particles/ParticleSDFAttraction.js","sourceHash":"41566f192a61f37b548eabcd712779e5441e37e14ca156b86b6daf8d7b49971c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSDFAttraction.js#0001:addSDFAttractor","exportIndex":1,"name":"addSDFAttractor","kind":"function","signature":"addSDFAttractor(system, config = {})","summary":"Add an SDF attractor."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSDFAttraction.md","moduleTitle":"sim/particles/ParticleSDFAttraction","source":"engine/sim/particles/ParticleSDFAttraction.js","import":"/engine/sim/particles/ParticleSDFAttraction.js","sourceHash":"41566f192a61f37b548eabcd712779e5441e37e14ca156b86b6daf8d7b49971c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSDFAttraction.js#0002:updateSDFAttractor","exportIndex":2,"name":"updateSDFAttractor","kind":"function","signature":"updateSDFAttractor(system, index, config)","summary":"Update an existing attractor."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSDFAttraction.md","moduleTitle":"sim/particles/ParticleSDFAttraction","source":"engine/sim/particles/ParticleSDFAttraction.js","import":"/engine/sim/particles/ParticleSDFAttraction.js","sourceHash":"41566f192a61f37b548eabcd712779e5441e37e14ca156b86b6daf8d7b49971c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSDFAttraction.js#0003:initSDFAttractionBindGroup","exportIndex":3,"name":"initSDFAttractionBindGroup","kind":"function","signature":"initSDFAttractionBindGroup(system, device, positionBuffer, velocityBuffer)","summary":"Initialize bind group (call after particle buffers are created)."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSDFAttraction.md","moduleTitle":"sim/particles/ParticleSDFAttraction","source":"engine/sim/particles/ParticleSDFAttraction.js","import":"/engine/sim/particles/ParticleSDFAttraction.js","sourceHash":"41566f192a61f37b548eabcd712779e5441e37e14ca156b86b6daf8d7b49971c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSDFAttraction.js#0004:executeSDFAttraction","exportIndex":4,"name":"executeSDFAttraction","kind":"function","signature":"executeSDFAttraction(system, device, particleCount, dt = 1/60, time = 0)","summary":"Execute SDF attraction compute pass."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSDFAttraction.md","moduleTitle":"sim/particles/ParticleSDFAttraction","source":"engine/sim/particles/ParticleSDFAttraction.js","import":"/engine/sim/particles/ParticleSDFAttraction.js","sourceHash":"41566f192a61f37b548eabcd712779e5441e37e14ca156b86b6daf8d7b49971c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSDFAttraction.js#0005:clearSDFAttractors","exportIndex":5,"name":"clearSDFAttractors","kind":"function","signature":"clearSDFAttractors(system)","summary":"Clear all attractors."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSDFAttraction.md","moduleTitle":"sim/particles/ParticleSDFAttraction","source":"engine/sim/particles/ParticleSDFAttraction.js","import":"/engine/sim/particles/ParticleSDFAttraction.js","sourceHash":"41566f192a61f37b548eabcd712779e5441e37e14ca156b86b6daf8d7b49971c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSDFAttraction.js#0006:destroySDFAttractionSystem","exportIndex":6,"name":"destroySDFAttractionSystem","kind":"function","signature":"destroySDFAttractionSystem(system)","summary":"Destroy the system."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSPH.md","moduleTitle":"sim/particles/ParticleSPH","source":"engine/sim/particles/ParticleSPH.js","import":"/engine/sim/particles/ParticleSPH.js","sourceHash":"f76044e081e6826fbfab2405ccc8050600582d21941e54c7662b035058143f7a","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleSPH.js","title":"sim/particles/ParticleSPH","summary":"ParticleSPH.js - Smoothed Particle Hydrodynamics (GAP 36) True Lagrangian particle-based fluid simulation where particles ARE the fluid. Complements Eulerian grid solver (GAP 32) for free-surface liquids. Two-pass GPU compute: Pass 1 (density): estimate density at each particle via Poly6 kernel Pass 2 (forces):  pressure (Spiky), viscosity, surface tension, XSPH correction Navier-Stokes in SPH form: ρᵢ = Σⱼ mⱼ W(rᵢ-rⱼ, h)           (density) aᵢ = -Σⱼ mⱼ(Pᵢ/ρᵢ² + Pⱼ/ρⱼ²)∇W  (pressure) aᵢ += μ Σⱼ mⱼ(vⱼ-vᵢ)/ρⱼ ∇²W      (viscosity) Per-element rest density and viscosity from element table (GAP 33). Uses neighbor grid (GAP 25) for O(N) spatial queries. Usage: const sph = createSPHSystem(device, maxParticles); initSPHBindGroups(sph, device, posBuffer, velBuffer, gridBuffers); executeSPH(sph, device, particleCount, dt);","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSPH.md","moduleTitle":"sim/particles/ParticleSPH","source":"engine/sim/particles/ParticleSPH.js","import":"/engine/sim/particles/ParticleSPH.js","sourceHash":"f76044e081e6826fbfab2405ccc8050600582d21941e54c7662b035058143f7a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSPH.js#0000:createSPHSystem","exportIndex":0,"name":"createSPHSystem","kind":"function","signature":"createSPHSystem(device, maxParticles)","summary":"Create the SPH fluid system."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSPH.md","moduleTitle":"sim/particles/ParticleSPH","source":"engine/sim/particles/ParticleSPH.js","import":"/engine/sim/particles/ParticleSPH.js","sourceHash":"f76044e081e6826fbfab2405ccc8050600582d21941e54c7662b035058143f7a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSPH.js#0001:initSPHBindGroups","exportIndex":1,"name":"initSPHBindGroups","kind":"function","signature":"initSPHBindGroups(system, device, positionBuffer, velocityBuffer, gridBuffers, thermalBuffer)","summary":"Initialize bind groups. Requires neighbor grid buffers."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSPH.md","moduleTitle":"sim/particles/ParticleSPH","source":"engine/sim/particles/ParticleSPH.js","import":"/engine/sim/particles/ParticleSPH.js","sourceHash":"f76044e081e6826fbfab2405ccc8050600582d21941e54c7662b035058143f7a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSPH.js#0002:setSPHParams","exportIndex":2,"name":"setSPHParams","kind":"function","signature":"setSPHParams(system, config)","summary":"Set SPH parameters at runtime."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSPH.md","moduleTitle":"sim/particles/ParticleSPH","source":"engine/sim/particles/ParticleSPH.js","import":"/engine/sim/particles/ParticleSPH.js","sourceHash":"f76044e081e6826fbfab2405ccc8050600582d21941e54c7662b035058143f7a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSPH.js#0003:executeSPH","exportIndex":3,"name":"executeSPH","kind":"function","signature":"executeSPH(system, device, particleCount, dt)","summary":"Execute the two-pass SPH compute."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSPH.md","moduleTitle":"sim/particles/ParticleSPH","source":"engine/sim/particles/ParticleSPH.js","import":"/engine/sim/particles/ParticleSPH.js","sourceHash":"f76044e081e6826fbfab2405ccc8050600582d21941e54c7662b035058143f7a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSPH.js#0004:getSPHDensityBuffer","exportIndex":4,"name":"getSPHDensityBuffer","kind":"function","signature":"getSPHDensityBuffer(system)","summary":"Get the density/pressure buffer for use by surface renderers."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSPH.md","moduleTitle":"sim/particles/ParticleSPH","source":"engine/sim/particles/ParticleSPH.js","import":"/engine/sim/particles/ParticleSPH.js","sourceHash":"f76044e081e6826fbfab2405ccc8050600582d21941e54c7662b035058143f7a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSPH.js#0005:destroySPHSystem","exportIndex":5,"name":"destroySPHSystem","kind":"function","signature":"destroySPHSystem(system)","summary":"Destroy."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSchema.md","moduleTitle":"sim/particles/ParticleSchema","source":"engine/sim/particles/ParticleSchema.js","import":"/engine/sim/particles/ParticleSchema.js","sourceHash":"37b23558db7206e04ca88e0460b24f39af3e6e40667523a1641e43085c26aaf9","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleSchema.js","title":"sim/particles/ParticleSchema","summary":"Pack meta.w value from individual components (full format with physics) Format: mass * 1e8 + drag * 1e6 + size * 1e4 + renderMode * 1e3 + shape * 10 + behavior","exportCount":29}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSchema.md","moduleTitle":"sim/particles/ParticleSchema","source":"engine/sim/particles/ParticleSchema.js","import":"/engine/sim/particles/ParticleSchema.js","sourceHash":"37b23558db7206e04ca88e0460b24f39af3e6e40667523a1641e43085c26aaf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSchema.js#0000:packParticleMeta","exportIndex":0,"name":"packParticleMeta","kind":"function","signature":"packParticleMeta(size, renderMode, shape, behavior = 0, mass = 1.0, drag = 0.02)","summary":"Pack meta.w value from individual components (full format with physics) Format: mass * 1e8 + drag * 1e6 + size * 1e4 + renderMode * 1e3 + shape * 10 + behavior"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSchema.md","moduleTitle":"sim/particles/ParticleSchema","source":"engine/sim/particles/ParticleSchema.js","import":"/engine/sim/particles/ParticleSchema.js","sourceHash":"37b23558db7206e04ca88e0460b24f39af3e6e40667523a1641e43085c26aaf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSchema.js#0001:unpackParticleMeta","exportIndex":1,"name":"unpackParticleMeta","kind":"function","signature":"unpackParticleMeta(packed)","summary":"Unpack meta.w value to individual components"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSchema.md","moduleTitle":"sim/particles/ParticleSchema","source":"engine/sim/particles/ParticleSchema.js","import":"/engine/sim/particles/ParticleSchema.js","sourceHash":"37b23558db7206e04ca88e0460b24f39af3e6e40667523a1641e43085c26aaf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSchema.js#0002:getBehaviorId","exportIndex":2,"name":"getBehaviorId","kind":"function","signature":"getBehaviorId(behaviorName)","summary":"Get behavior ID from behavior name"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSchema.md","moduleTitle":"sim/particles/ParticleSchema","source":"engine/sim/particles/ParticleSchema.js","import":"/engine/sim/particles/ParticleSchema.js","sourceHash":"37b23558db7206e04ca88e0460b24f39af3e6e40667523a1641e43085c26aaf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSchema.js#0003:validateField","exportIndex":3,"name":"validateField","kind":"function","signature":"validateField(value, fieldSchema)","summary":"Validate a value against a schema field"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSchema.md","moduleTitle":"sim/particles/ParticleSchema","source":"engine/sim/particles/ParticleSchema.js","import":"/engine/sim/particles/ParticleSchema.js","sourceHash":"37b23558db7206e04ca88e0460b24f39af3e6e40667523a1641e43085c26aaf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSchema.js#0004:validateEmitterConfig","exportIndex":4,"name":"validateEmitterConfig","kind":"function","signature":"validateEmitterConfig(config)","summary":"Validate an emitter config against schema"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSchema.md","moduleTitle":"sim/particles/ParticleSchema","source":"engine/sim/particles/ParticleSchema.js","import":"/engine/sim/particles/ParticleSchema.js","sourceHash":"37b23558db7206e04ca88e0460b24f39af3e6e40667523a1641e43085c26aaf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSchema.js#0005:createDefaultEmitterConfig","exportIndex":5,"name":"createDefaultEmitterConfig","kind":"function","signature":"createDefaultEmitterConfig(overrides = {})","summary":"Create a default emitter config"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSchema.md","moduleTitle":"sim/particles/ParticleSchema","source":"engine/sim/particles/ParticleSchema.js","import":"/engine/sim/particles/ParticleSchema.js","sourceHash":"37b23558db7206e04ca88e0460b24f39af3e6e40667523a1641e43085c26aaf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSchema.js#0006:createDefaultParticleParams","exportIndex":6,"name":"createDefaultParticleParams","kind":"function","signature":"createDefaultParticleParams(overrides = {})","summary":"Create a default particle params uniform buffer data"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSchema.md","moduleTitle":"sim/particles/ParticleSchema","source":"engine/sim/particles/ParticleSchema.js","import":"/engine/sim/particles/ParticleSchema.js","sourceHash":"37b23558db7206e04ca88e0460b24f39af3e6e40667523a1641e43085c26aaf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSchema.js#0007:createEmptySnapshot","exportIndex":7,"name":"createEmptySnapshot","kind":"function","signature":"createEmptySnapshot(time, frameIndex)","summary":"Create an empty particle snapshot"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSchema.md","moduleTitle":"sim/particles/ParticleSchema","source":"engine/sim/particles/ParticleSchema.js","import":"/engine/sim/particles/ParticleSchema.js","sourceHash":"37b23558db7206e04ca88e0460b24f39af3e6e40667523a1641e43085c26aaf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSchema.js#0008:createEmitterSnapshot","exportIndex":8,"name":"createEmitterSnapshot","kind":"function","signature":"createEmitterSnapshot(emitter)","summary":"Create an emitter snapshot from live emitter state"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSchema.md","moduleTitle":"sim/particles/ParticleSchema","source":"engine/sim/particles/ParticleSchema.js","import":"/engine/sim/particles/ParticleSchema.js","sourceHash":"37b23558db7206e04ca88e0460b24f39af3e6e40667523a1641e43085c26aaf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSchema.js#0009:getShapeId","exportIndex":9,"name":"getShapeId","kind":"function","signature":"getShapeId(shapeName)","summary":"Get shape ID from shape name"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSchema.md","moduleTitle":"sim/particles/ParticleSchema","source":"engine/sim/particles/ParticleSchema.js","import":"/engine/sim/particles/ParticleSchema.js","sourceHash":"37b23558db7206e04ca88e0460b24f39af3e6e40667523a1641e43085c26aaf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSchema.js#0010:getRenderModeId","exportIndex":10,"name":"getRenderModeId","kind":"function","signature":"getRenderModeId(modeName)","summary":"Get render mode ID from mode name"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSchema.md","moduleTitle":"sim/particles/ParticleSchema","source":"engine/sim/particles/ParticleSchema.js","import":"/engine/sim/particles/ParticleSchema.js","sourceHash":"37b23558db7206e04ca88e0460b24f39af3e6e40667523a1641e43085c26aaf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSchema.js#0011:getShapeName","exportIndex":11,"name":"getShapeName","kind":"function","signature":"getShapeName(shapeId)","summary":"Get shape name from ID"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSchema.md","moduleTitle":"sim/particles/ParticleSchema","source":"engine/sim/particles/ParticleSchema.js","import":"/engine/sim/particles/ParticleSchema.js","sourceHash":"37b23558db7206e04ca88e0460b24f39af3e6e40667523a1641e43085c26aaf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSchema.js#0012:getRenderModeName","exportIndex":12,"name":"getRenderModeName","kind":"function","signature":"getRenderModeName(modeId)","summary":"Get render mode name from ID"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSchema.md","moduleTitle":"sim/particles/ParticleSchema","source":"engine/sim/particles/ParticleSchema.js","import":"/engine/sim/particles/ParticleSchema.js","sourceHash":"37b23558db7206e04ca88e0460b24f39af3e6e40667523a1641e43085c26aaf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSchema.js#0013:serializeEmitterConfig","exportIndex":13,"name":"serializeEmitterConfig","kind":"function","signature":"serializeEmitterConfig(config)","summary":"Serialize emitter config to JSON-safe object"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSchema.md","moduleTitle":"sim/particles/ParticleSchema","source":"engine/sim/particles/ParticleSchema.js","import":"/engine/sim/particles/ParticleSchema.js","sourceHash":"37b23558db7206e04ca88e0460b24f39af3e6e40667523a1641e43085c26aaf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSchema.js#0014:deserializeEmitterConfig","exportIndex":14,"name":"deserializeEmitterConfig","kind":"function","signature":"deserializeEmitterConfig(json)","summary":"Deserialize emitter config from JSON"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSchema.md","moduleTitle":"sim/particles/ParticleSchema","source":"engine/sim/particles/ParticleSchema.js","import":"/engine/sim/particles/ParticleSchema.js","sourceHash":"37b23558db7206e04ca88e0460b24f39af3e6e40667523a1641e43085c26aaf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSchema.js#0015:serializeSnapshot","exportIndex":15,"name":"serializeSnapshot","kind":"function","signature":"serializeSnapshot(snapshot)","summary":"Serialize particle snapshot to JSON-safe object"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSchema.md","moduleTitle":"sim/particles/ParticleSchema","source":"engine/sim/particles/ParticleSchema.js","import":"/engine/sim/particles/ParticleSchema.js","sourceHash":"37b23558db7206e04ca88e0460b24f39af3e6e40667523a1641e43085c26aaf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSchema.js#0016:deserializeSnapshot","exportIndex":16,"name":"deserializeSnapshot","kind":"function","signature":"deserializeSnapshot(json)","summary":"Deserialize particle snapshot from JSON"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSchema.md","moduleTitle":"sim/particles/ParticleSchema","source":"engine/sim/particles/ParticleSchema.js","import":"/engine/sim/particles/ParticleSchema.js","sourceHash":"37b23558db7206e04ca88e0460b24f39af3e6e40667523a1641e43085c26aaf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSchema.js#0017:PARTICLE_BUFFER_SCHEMA","exportIndex":17,"name":"PARTICLE_BUFFER_SCHEMA","kind":"constant","signature":"PARTICLE_BUFFER_SCHEMA","summary":"Per-particle data layout in GPU buffers. Each particle uses 3 vec4s (48 bytes total)."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSchema.md","moduleTitle":"sim/particles/ParticleSchema","source":"engine/sim/particles/ParticleSchema.js","import":"/engine/sim/particles/ParticleSchema.js","sourceHash":"37b23558db7206e04ca88e0460b24f39af3e6e40667523a1641e43085c26aaf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSchema.js#0018:FRAME_UNIFORMS_SCHEMA","exportIndex":18,"name":"FRAME_UNIFORMS_SCHEMA","kind":"constant","signature":"FRAME_UNIFORMS_SCHEMA","summary":"Frame uniforms passed to all particle shaders"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSchema.md","moduleTitle":"sim/particles/ParticleSchema","source":"engine/sim/particles/ParticleSchema.js","import":"/engine/sim/particles/ParticleSchema.js","sourceHash":"37b23558db7206e04ca88e0460b24f39af3e6e40667523a1641e43085c26aaf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSchema.js#0019:PARTICLE_PARAMS_SCHEMA","exportIndex":19,"name":"PARTICLE_PARAMS_SCHEMA","kind":"constant","signature":"PARTICLE_PARAMS_SCHEMA","summary":"Per-draw particle parameters"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSchema.md","moduleTitle":"sim/particles/ParticleSchema","source":"engine/sim/particles/ParticleSchema.js","import":"/engine/sim/particles/ParticleSchema.js","sourceHash":"37b23558db7206e04ca88e0460b24f39af3e6e40667523a1641e43085c26aaf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSchema.js#0020:FORCE_PARAMS_SCHEMA","exportIndex":20,"name":"FORCE_PARAMS_SCHEMA","kind":"constant","signature":"FORCE_PARAMS_SCHEMA","summary":"Force parameters uniform (group 2 binding 0 in main particle compute shader) Controls global wind, turbulence, force points, vortex, and velocity clamping."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSchema.md","moduleTitle":"sim/particles/ParticleSchema","source":"engine/sim/particles/ParticleSchema.js","import":"/engine/sim/particles/ParticleSchema.js","sourceHash":"37b23558db7206e04ca88e0460b24f39af3e6e40667523a1641e43085c26aaf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSchema.js#0021:PARTICLE_SHAPES","exportIndex":21,"name":"PARTICLE_SHAPES","kind":"constant","signature":"PARTICLE_SHAPES","summary":"Shape types for particle rendering"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSchema.md","moduleTitle":"sim/particles/ParticleSchema","source":"engine/sim/particles/ParticleSchema.js","import":"/engine/sim/particles/ParticleSchema.js","sourceHash":"37b23558db7206e04ca88e0460b24f39af3e6e40667523a1641e43085c26aaf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSchema.js#0022:RENDER_MODES","exportIndex":22,"name":"RENDER_MODES","kind":"constant","signature":"RENDER_MODES","summary":"Render modes for particle blending"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSchema.md","moduleTitle":"sim/particles/ParticleSchema","source":"engine/sim/particles/ParticleSchema.js","import":"/engine/sim/particles/ParticleSchema.js","sourceHash":"37b23558db7206e04ca88e0460b24f39af3e6e40667523a1641e43085c26aaf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSchema.js#0023:PARTICLE_BEHAVIORS","exportIndex":23,"name":"PARTICLE_BEHAVIORS","kind":"constant","signature":"PARTICLE_BEHAVIORS","summary":"Behavior types for particle movement patterns"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSchema.md","moduleTitle":"sim/particles/ParticleSchema","source":"engine/sim/particles/ParticleSchema.js","import":"/engine/sim/particles/ParticleSchema.js","sourceHash":"37b23558db7206e04ca88e0460b24f39af3e6e40667523a1641e43085c26aaf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSchema.js#0024:EMITTER_CONFIG_SCHEMA","exportIndex":24,"name":"EMITTER_CONFIG_SCHEMA","kind":"constant","signature":"EMITTER_CONFIG_SCHEMA","summary":"Complete emitter configuration schema"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSchema.md","moduleTitle":"sim/particles/ParticleSchema","source":"engine/sim/particles/ParticleSchema.js","import":"/engine/sim/particles/ParticleSchema.js","sourceHash":"37b23558db7206e04ca88e0460b24f39af3e6e40667523a1641e43085c26aaf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSchema.js#0025:ELEMENT_LAYER_SCHEMA","exportIndex":25,"name":"ELEMENT_LAYER_SCHEMA","kind":"constant","signature":"ELEMENT_LAYER_SCHEMA","summary":"Element layer for emitter mixing"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSchema.md","moduleTitle":"sim/particles/ParticleSchema","source":"engine/sim/particles/ParticleSchema.js","import":"/engine/sim/particles/ParticleSchema.js","sourceHash":"37b23558db7206e04ca88e0460b24f39af3e6e40667523a1641e43085c26aaf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSchema.js#0026:PARTICLE_SNAPSHOT_ENTRY_SCHEMA","exportIndex":26,"name":"PARTICLE_SNAPSHOT_ENTRY_SCHEMA","kind":"constant","signature":"PARTICLE_SNAPSHOT_ENTRY_SCHEMA","summary":"Single particle snapshot entry"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSchema.md","moduleTitle":"sim/particles/ParticleSchema","source":"engine/sim/particles/ParticleSchema.js","import":"/engine/sim/particles/ParticleSchema.js","sourceHash":"37b23558db7206e04ca88e0460b24f39af3e6e40667523a1641e43085c26aaf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSchema.js#0027:EMITTER_SNAPSHOT_SCHEMA","exportIndex":27,"name":"EMITTER_SNAPSHOT_SCHEMA","kind":"constant","signature":"EMITTER_SNAPSHOT_SCHEMA","summary":"Emitter state snapshot"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSchema.md","moduleTitle":"sim/particles/ParticleSchema","source":"engine/sim/particles/ParticleSchema.js","import":"/engine/sim/particles/ParticleSchema.js","sourceHash":"37b23558db7206e04ca88e0460b24f39af3e6e40667523a1641e43085c26aaf9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSchema.js#0028:PARTICLE_SYSTEM_SNAPSHOT_SCHEMA","exportIndex":28,"name":"PARTICLE_SYSTEM_SNAPSHOT_SCHEMA","kind":"constant","signature":"PARTICLE_SYSTEM_SNAPSHOT_SCHEMA","summary":"Complete particle system snapshot"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSharedMemCollision.md","moduleTitle":"sim/particles/ParticleSharedMemCollision","source":"engine/sim/particles/ParticleSharedMemCollision.js","import":"/engine/sim/particles/ParticleSharedMemCollision.js","sourceHash":"89b5425fdec31d8e93ee866995c90e3749373a28cf5117b07915c2d8ce96f17d","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleSharedMemCollision.js","title":"sim/particles/ParticleSharedMemCollision","summary":"ParticleSharedMemCollision.js - Workgroup shared memory particle collision Drop-in replacement for the grid collision `collide` pass that uses workgroup shared memory to eliminate random global memory reads. Architecture: - Uses the same grid infrastructure (clearGrid + binParticles are unchanged) - Dispatches one workgroup PER grid cell (cell-centric) - All threads in a workgroup share the same cell → same neighbor cells - Neighbor particles loaded into shared memory in tiles of TILE_SIZE - Each thread checks its particle against shared memory (fast L1/register access) Memory access improvement: - Old: Each thread reads random global positions/velocities for neighbors - New: Workgroup cooperatively loads sequential global reads → shared memory Then all threads read from shared memory (100× faster than global) Uses the SAME bind group layout as the existing grid collision system, so the existing bind group can be reused directly. Ref: GPU Gems 3 Ch.31 \"Fast N-Body Simulation with CUDA\"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSharedMemCollision.md","moduleTitle":"sim/particles/ParticleSharedMemCollision","source":"engine/sim/particles/ParticleSharedMemCollision.js","import":"/engine/sim/particles/ParticleSharedMemCollision.js","sourceHash":"89b5425fdec31d8e93ee866995c90e3749373a28cf5117b07915c2d8ce96f17d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSharedMemCollision.js#0000:createSharedMemCollidePipeline","exportIndex":0,"name":"createSharedMemCollidePipeline","kind":"function","signature":"createSharedMemCollidePipeline(device, bindGroupLayout, tileSize = 256)","summary":"Create the shared-memory collide pipeline. This pipeline uses the SAME bind group layout as the existing grid collision system."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSharedMemCollision.md","moduleTitle":"sim/particles/ParticleSharedMemCollision","source":"engine/sim/particles/ParticleSharedMemCollision.js","import":"/engine/sim/particles/ParticleSharedMemCollision.js","sourceHash":"89b5425fdec31d8e93ee866995c90e3749373a28cf5117b07915c2d8ce96f17d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSharedMemCollision.js#0001:dispatchSharedMemCollide","exportIndex":1,"name":"dispatchSharedMemCollide","kind":"function","signature":"dispatchSharedMemCollide(pipeline, bindGroup, pass, gridDims)","summary":"Execute the shared-memory collide pass. Dispatches one workgroup per grid cell. Uses the existing grid bind group."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleSimWorld.js","title":"sim/particles/ParticleSimWorld","summary":"Initialize spatial grid and line buffers for advanced particle features. Call this after createParticleSimWorld to enable line connections and neighbor lookups.","exportCount":247}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0000:createParticleSimWorld","exportIndex":0,"name":"createParticleSimWorld","kind":"function","signature":"async createParticleSimWorld(gpuDevice, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0001:destroyParticleSimWorld","exportIndex":1,"name":"destroyParticleSimWorld","kind":"function","signature":"destroyParticleSimWorld(world)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0002:initAdvancedParticleBuffers","exportIndex":2,"name":"initAdvancedParticleBuffers","kind":"function","signature":"initAdvancedParticleBuffers(world, options = {})","summary":"Initialize spatial grid and line buffers for advanced particle features. Call this after createParticleSimWorld to enable line connections and neighbor lookups."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0003:initAllAdvancedSystems","exportIndex":3,"name":"initAllAdvancedSystems","kind":"function","signature":"async initAllAdvancedSystems(world, options = {})","summary":"Initialize all advanced particle systems (sorting, wire constraints, SDF collision, etc.) Call after createParticleSimWorld and initAdvancedParticleBuffers."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0004:createHeatConductionSystem","exportIndex":4,"name":"createHeatConductionSystem","kind":"function","signature":"createHeatConductionSystem(world)","summary":"Create heat conduction + phase transition compute system. Requires spatial grid to be initialized (gridCountsBuffer, gridIndicesBuffer)."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0005:stepHeatConduction","exportIndex":5,"name":"stepHeatConduction","kind":"function","signature":"stepHeatConduction(world, dt)","summary":"Execute heat conduction compute pass."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0006:stepAdvancedSystems","exportIndex":6,"name":"stepAdvancedSystems","kind":"function","signature":"stepAdvancedSystems(world, dt, options = {})","summary":"Execute all active advanced particle systems in the simulation step."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0007:renderWorldRibbonTrails","exportIndex":7,"name":"renderWorldRibbonTrails","kind":"function","signature":"renderWorldRibbonTrails(pass, world, viewProjMatrix, cameraPos, instanceCount)","summary":"Render ribbon trails into the given render pass. Call during the render loop AFTER particle rendering."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0008:sortParticlesForRendering","exportIndex":8,"name":"sortParticlesForRendering","kind":"function","signature":"sortParticlesForRendering(world, cameraPos)","summary":"Execute GPU sorting for transparent particle rendering. Call before rendering particles back-to-front. Respects world.sortFrameInterval to skip sorting on intermediate frames (e.g. interval=2 sorts every other frame, reducing GPU cost for large counts)."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0009:addParticleWire","exportIndex":9,"name":"addParticleWire","kind":"function","signature":"addParticleWire(world, particleA, particleB, restLength, stiffness = 0.5)","summary":"Add a wire constraint between two particles."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0010:createGPURope","exportIndex":10,"name":"createGPURope","kind":"function","signature":"createGPURope(world, startPos, endPos, segments, opts = {})","summary":"Create a GPU-simulated rope with particles and constraints"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0011:uploadParticleVelocities","exportIndex":11,"name":"uploadParticleVelocities","kind":"function","signature":"uploadParticleVelocities(world, particleOffset, velocities)","summary":"Upload particle velocities to GPU buffer"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0012:updateRopeAttachment","exportIndex":12,"name":"updateRopeAttachment","kind":"function","signature":"updateRopeAttachment(world, entityId, which, worldPos)","summary":"Update attachment constraint target position"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0013:destroyGPURope","exportIndex":13,"name":"destroyGPURope","kind":"function","signature":"destroyGPURope(world, entityId)","summary":"Destroy a GPU rope and release its resources"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0014:addParticleCollider","exportIndex":14,"name":"addParticleCollider","kind":"function","signature":"addParticleCollider(world, type, center, radius, halfExtents)","summary":"Add an SDF collider to the particle system."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0015:clearParticleColliders","exportIndex":15,"name":"clearParticleColliders","kind":"function","signature":"clearParticleColliders(world)","summary":"Clear all SDF colliders (call before per-frame rebuild)."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0016:rebuildParticleColliders","exportIndex":16,"name":"rebuildParticleColliders","kind":"function","signature":"rebuildParticleColliders(world, colliders)","summary":"Batch-rebuild SDF colliders from an array of descriptors. Call each frame with entity SDF shapes for proper mesh collision."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0017:seedParticles","exportIndex":17,"name":"seedParticles","kind":"function","signature":"seedParticles(world, count, options = {})","summary":"Seed particles on GPU with random positions/velocities."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0018:setParticleAtlasMode","exportIndex":18,"name":"setParticleAtlasMode","kind":"function","signature":"setParticleAtlasMode(world, mode)","summary":"Set texture atlas sprite assignment mode."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0019:initSnapshotSystem","exportIndex":19,"name":"initSnapshotSystem","kind":"function","signature":"initSnapshotSystem(world, options = {})","summary":"Initialize snapshot system for time rewind."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0020:updateSnapshots","exportIndex":20,"name":"updateSnapshots","kind":"function","signature":"updateSnapshots(world, emitters, currentTimeMs)","summary":"Auto-capture snapshots during simulation (call each frame)."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0021:captureSnapshot","exportIndex":21,"name":"captureSnapshot","kind":"function","signature":"captureSnapshot(world, emitters, currentTimeMs)","summary":"Manually take a snapshot."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0022:beginRewind","exportIndex":22,"name":"beginRewind","kind":"function","signature":"beginRewind(world)","summary":"Start time rewind mode."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0023:endRewind","exportIndex":23,"name":"endRewind","kind":"function","signature":"endRewind(world)","summary":"Stop time rewind and resume simulation."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0024:updateRewind","exportIndex":24,"name":"updateRewind","kind":"function","signature":"updateRewind(world, emitters, dt)","summary":"Step rewind playback (call each frame while rewinding)."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0025:rewindToTime","exportIndex":25,"name":"rewindToTime","kind":"function","signature":"rewindToTime(world, emitters, targetTimeMs)","summary":"Seek to a specific time in history."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0026:rewindToFrame","exportIndex":26,"name":"rewindToFrame","kind":"function","signature":"rewindToFrame(world, emitters, frameIndex)","summary":"Restore a specific frame from history."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0027:setRewindSpeed","exportIndex":27,"name":"setRewindSpeed","kind":"function","signature":"setRewindSpeed(world, speed)","summary":"Set rewind playback speed (-1 = reverse, 1 = forward, 0.5 = slow, etc.)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0028:getRewindInfo","exportIndex":28,"name":"getRewindInfo","kind":"function","signature":"getRewindInfo(world)","summary":"Get snapshot/rewind status info."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0029:isRewinding","exportIndex":29,"name":"isRewinding","kind":"function","signature":"isRewinding(world)","summary":"Check if currently in rewind mode."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0030:clearSnapshots","exportIndex":30,"name":"clearSnapshots","kind":"function","signature":"clearSnapshots(world)","summary":"Clear all snapshot history."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0031:updateAdaptiveQuality","exportIndex":31,"name":"updateAdaptiveQuality","kind":"function","signature":"updateAdaptiveQuality(world, frameTimeMs)","summary":"Update adaptive quality based on frame time. Automatically adjusts activeParticleCount to maintain target FPS. TECHNIQUES FROM AAA GAME INDUSTRY (DRS Best Practices): 1. Frame-rate independent exponential smoothing 2. Spike filtering - only reduce after sustained poor performance 3. Panic mode - aggressive drop when critically over budget 4. Fast recovery - don't be over-cautious when headroom exists 5. Proportional response - bigger adjustments when further from target 6. Target slightly under budget for safety margin"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0032:getParticleStats","exportIndex":32,"name":"getParticleStats","kind":"function","signature":"getParticleStats(world)","summary":"Get particle system stats for performance overlay."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0033:readbackPositionsFromGPU","exportIndex":33,"name":"readbackPositionsFromGPU","kind":"function","signature":"async readbackPositionsFromGPU(world, targetPositions, particleCount)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0034:readbackVelocitiesFromGPU","exportIndex":34,"name":"readbackVelocitiesFromGPU","kind":"function","signature":"async readbackVelocitiesFromGPU(world, targetVelocities, particleCount)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0035:readbackThermalFromGPU","exportIndex":35,"name":"readbackThermalFromGPU","kind":"function","signature":"async readbackThermalFromGPU(world, targetThermal, particleCount)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0036:attachFluidWorld","exportIndex":36,"name":"attachFluidWorld","kind":"function","signature":"attachFluidWorld(particleWorld, fluidWorld, worldMin, worldMax)","summary":"Attach a fluid world to the particle simulation. Particles will sample and follow the fluid velocity field."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0037:stepParticleSimWorld","exportIndex":37,"name":"stepParticleSimWorld","kind":"function","signature":"stepParticleSimWorld(world, deltaSeconds, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0038:createLineRenderPipeline","exportIndex":38,"name":"createLineRenderPipeline","kind":"function","signature":"createLineRenderPipeline(device, format)","summary":"Create line rendering pipeline for particle connections"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0039:createLineComputePipelines","exportIndex":39,"name":"createLineComputePipelines","kind":"function","signature":"createLineComputePipelines(device)","summary":"Create line compute pipelines for spatial grid and line generation"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0040:createLineUniformBuffer","exportIndex":40,"name":"createLineUniformBuffer","kind":"function","signature":"createLineUniformBuffer(device)","summary":"Create line uniform buffer for compute and render"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0041:initLineRenderingSystem","exportIndex":41,"name":"initLineRenderingSystem","kind":"function","signature":"initLineRenderingSystem(world, format)","summary":"Initialize complete line rendering system"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0042:stepLineGeneration","exportIndex":42,"name":"stepLineGeneration","kind":"function","signature":"stepLineGeneration(world, options = {})","summary":"Execute line generation compute passes"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0043:renderParticleLines","exportIndex":43,"name":"renderParticleLines","kind":"function","signature":"renderParticleLines(world, pass, viewProj)","summary":"Render particle connection lines"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0044:updateMouseInteraction","exportIndex":44,"name":"updateMouseInteraction","kind":"function","signature":"updateMouseInteraction(ndcX, ndcY, active = true)","summary":"Update mouse state for particle interaction"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0045:getMouseState","exportIndex":45,"name":"getMouseState","kind":"function","signature":"getMouseState()","summary":"Get current mouse state"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0046:addForcePoint","exportIndex":46,"name":"addForcePoint","kind":"function","signature":"addForcePoint(point)","summary":"Add an attractor or repeller force point"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0047:removeForcePoint","exportIndex":47,"name":"removeForcePoint","kind":"function","signature":"removeForcePoint(index)","summary":"Remove a force point by index"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0048:clearForcePoints","exportIndex":48,"name":"clearForcePoints","kind":"function","signature":"clearForcePoints()","summary":"Clear all force points"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0049:getForcePoints","exportIndex":49,"name":"getForcePoints","kind":"function","signature":"getForcePoints()","summary":"Get all force points"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0050:updateForcePoint","exportIndex":50,"name":"updateForcePoint","kind":"function","signature":"updateForcePoint(index, x, y, z, strength)","summary":"Update force point position"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0051:attachWindSystem","exportIndex":51,"name":"attachWindSystem","kind":"function","signature":"attachWindSystem(world, windSystem)","summary":"Attach a WindSystem instance to the particle world. Once attached, stepParticleSimWorld will automatically read wind params each frame."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0052:detachWindSystem","exportIndex":52,"name":"detachWindSystem","kind":"function","signature":"detachWindSystem(world)","summary":"Detach wind system from particle world"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0053:updateKillZones","exportIndex":53,"name":"updateKillZones","kind":"function","signature":"updateKillZones(world, zones)","summary":"Update kill zones for a particle world. Particles inside kill zones are killed."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0054:clearKillZones","exportIndex":54,"name":"clearKillZones","kind":"function","signature":"clearKillZones(world)","summary":"Clear all kill zones"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0055:startDissolve","exportIndex":55,"name":"startDissolve","kind":"function","signature":"startDissolve(groupId, duration = 1.0, direction = 'out')","summary":"Start a dissolve effect for a particle group"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0056:getDissolve","exportIndex":56,"name":"getDissolve","kind":"function","signature":"getDissolve(groupId)","summary":"Get dissolve factor for a group (0 = invisible, 1 = fully visible)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0057:sampleCurlNoise","exportIndex":57,"name":"sampleCurlNoise","kind":"function","signature":"sampleCurlNoise(x, y, z, scale = 1, time = 0)","summary":"Sample curl noise at a position (CPU version for debugging)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0058:initTrailSystem","exportIndex":58,"name":"initTrailSystem","kind":"function","signature":"initTrailSystem(world, historyLength = 8)","summary":"Initialize trail history buffer for particles"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0059:registerSubEmitter","exportIndex":59,"name":"registerSubEmitter","kind":"function","signature":"registerSubEmitter(parentType, config)","summary":"Register a sub-emitter configuration"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0060:getSubEmitterConfig","exportIndex":60,"name":"getSubEmitterConfig","kind":"function","signature":"getSubEmitterConfig(parentType)","summary":"Get sub-emitter config for a particle type"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0061:clearSubEmitters","exportIndex":61,"name":"clearSubEmitters","kind":"function","signature":"clearSubEmitters()","summary":"Clear all sub-emitter configs"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0062:configureParticleLongRange","exportIndex":62,"name":"configureParticleLongRange","kind":"function","signature":"configureParticleLongRange(world, config = {})","summary":"Select exactly one long-range force backend without changing the legacy default."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0063:getParticleLongRangeState","exportIndex":63,"name":"getParticleLongRangeState","kind":"function","signature":"getParticleLongRangeState(world)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0064:ensureSystemEnabled","exportIndex":64,"name":"ensureSystemEnabled","kind":"function","signature":"ensureSystemEnabled(world, systemName, config)","summary":"Lazily enable a particle system on an existing world if not already initialized. Call from editor/runtime when an emitter's physics profile requires a system that wasn't enabled at init time."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0065:warmUpParticleWorld","exportIndex":65,"name":"warmUpParticleWorld","kind":"function","signature":"warmUpParticleWorld(world, warmUpSeconds = 2.0, options = {})","summary":"Pre-simulate a particle world for N seconds before the first visible frame. Runs stepParticleSimWorld repeatedly with fixed timestep so effects look \"established\" immediately (e.g. fire already burning, smoke already rising)."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0066:reserveParticles","exportIndex":66,"name":"reserveParticles","kind":"function","signature":"reserveParticles(particleWorld, count, backend = 'free')","summary":"Reserve a range of particles for a specific backend"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0067:releaseParticles","exportIndex":67,"name":"releaseParticles","kind":"function","signature":"releaseParticles(particleWorld, count, backend)","summary":"Release reserved particles (e.g., when rope is destroyed)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0068:uploadParticles","exportIndex":68,"name":"uploadParticles","kind":"function","signature":"uploadParticles(particleWorld, particleOffset, positions)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0069:registerRopeChain","exportIndex":69,"name":"registerRopeChain","kind":"function","signature":"registerRopeChain(particleWorld, ropeMetadata)","summary":"Register a rope chain in the particle system"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0070:unregisterRopeChain","exportIndex":70,"name":"unregisterRopeChain","kind":"function","signature":"unregisterRopeChain(particleWorld, entityId)","summary":"Unregister a rope chain from the particle system"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0071:getTotalReservedParticles","exportIndex":71,"name":"getTotalReservedParticles","kind":"function","signature":"getTotalReservedParticles(particleWorld)","summary":"Get total particle count across all backends"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0072:CLASS_BUBBLE","exportIndex":72,"name":"CLASS_BUBBLE","kind":"re-export","signature":"CLASS_BUBBLE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0073:CLASS_BULK","exportIndex":73,"name":"CLASS_BULK","kind":"re-export","signature":"CLASS_BULK","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0074:CLASS_FOAM","exportIndex":74,"name":"CLASS_FOAM","kind":"re-export","signature":"CLASS_FOAM","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0075:CLASS_NONE","exportIndex":75,"name":"CLASS_NONE","kind":"re-export","signature":"CLASS_NONE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0076:CLASS_SPRAY","exportIndex":76,"name":"CLASS_SPRAY","kind":"re-export","signature":"CLASS_SPRAY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0077:CLASS_SURFACE","exportIndex":77,"name":"CLASS_SURFACE","kind":"re-export","signature":"CLASS_SURFACE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0078:CURVE_PRESETS","exportIndex":78,"name":"CURVE_PRESETS","kind":"re-export","signature":"CURVE_PRESETS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0079:DEFAULT_LOD_TIERS","exportIndex":79,"name":"DEFAULT_LOD_TIERS","kind":"re-export","signature":"DEFAULT_LOD_TIERS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0080:ELEMENTS","exportIndex":80,"name":"ELEMENTS","kind":"re-export","signature":"ELEMENTS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0081:ELEMENT_LUT_WGSL","exportIndex":81,"name":"ELEMENT_LUT_WGSL","kind":"re-export","signature":"ELEMENT_LUT_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0082:EVENT_DEATH","exportIndex":82,"name":"EVENT_DEATH","kind":"re-export","signature":"EVENT_DEATH","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0083:EVENT_ENTITY_COLLISION","exportIndex":83,"name":"EVENT_ENTITY_COLLISION","kind":"re-export","signature":"EVENT_ENTITY_COLLISION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0084:EVENT_GROUND_COLLISION","exportIndex":84,"name":"EVENT_GROUND_COLLISION","kind":"re-export","signature":"EVENT_GROUND_COLLISION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0085:EVENT_KILL_ZONE","exportIndex":85,"name":"EVENT_KILL_ZONE","kind":"re-export","signature":"EVENT_KILL_ZONE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0086:EVENT_MASK_ALL","exportIndex":86,"name":"EVENT_MASK_ALL","kind":"re-export","signature":"EVENT_MASK_ALL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0087:INTERACTION_COOL","exportIndex":87,"name":"INTERACTION_COOL","kind":"re-export","signature":"INTERACTION_COOL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0088:INTERACTION_CORRODE","exportIndex":88,"name":"INTERACTION_CORRODE","kind":"re-export","signature":"INTERACTION_CORRODE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0089:INTERACTION_HEAT","exportIndex":89,"name":"INTERACTION_HEAT","kind":"re-export","signature":"INTERACTION_HEAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0090:INTERACTION_MOISTURE","exportIndex":90,"name":"INTERACTION_MOISTURE","kind":"re-export","signature":"INTERACTION_MOISTURE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0091:MOLECULE_PRESETS","exportIndex":91,"name":"MOLECULE_PRESETS","kind":"re-export","signature":"MOLECULE_PRESETS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0092:ROPE_INTERACTION_MATERIALS","exportIndex":92,"name":"ROPE_INTERACTION_MATERIALS","kind":"re-export","signature":"ROPE_INTERACTION_MATERIALS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0093:addContainmentVolume","exportIndex":93,"name":"addContainmentVolume","kind":"re-export","signature":"addContainmentVolume","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0094:addFluidSource","exportIndex":94,"name":"addFluidSource","kind":"re-export","signature":"addFluidSource","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0095:addProjectionSurface","exportIndex":95,"name":"addProjectionSurface","kind":"re-export","signature":"addProjectionSurface","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0096:addSDFAttractor","exportIndex":96,"name":"addSDFAttractor","kind":"re-export","signature":"addSDFAttractor","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0097:buildNeighborGrid","exportIndex":97,"name":"buildNeighborGrid","kind":"re-export","signature":"buildNeighborGrid","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0098:clearContainmentVolumes","exportIndex":98,"name":"clearContainmentVolumes","kind":"re-export","signature":"clearContainmentVolumes","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0099:clearDecals","exportIndex":99,"name":"clearDecals","kind":"re-export","signature":"clearDecals","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0100:clearProjectionSurfaces","exportIndex":100,"name":"clearProjectionSurfaces","kind":"re-export","signature":"clearProjectionSurfaces","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0101:clearSDFAttractors","exportIndex":101,"name":"clearSDFAttractors","kind":"re-export","signature":"clearSDFAttractors","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0102:computeAdaptiveSubsteps","exportIndex":102,"name":"computeAdaptiveSubsteps","kind":"re-export","signature":"computeAdaptiveSubsteps","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0103:createAdaptiveSubstepController","exportIndex":103,"name":"createAdaptiveSubstepController","kind":"re-export","signature":"createAdaptiveSubstepController","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0104:createAttributeReader","exportIndex":104,"name":"createAttributeReader","kind":"re-export","signature":"createAttributeReader","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0105:createAudioBridge","exportIndex":105,"name":"createAudioBridge","kind":"re-export","signature":"createAudioBridge","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0106:createChemistrySystem","exportIndex":106,"name":"createChemistrySystem","kind":"re-export","signature":"createChemistrySystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0107:createClassifierSystem","exportIndex":107,"name":"createClassifierSystem","kind":"re-export","signature":"createClassifierSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0108:createDecalSpawner","exportIndex":108,"name":"createDecalSpawner","kind":"re-export","signature":"createDecalSpawner","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0109:createElectromagneticSystem","exportIndex":109,"name":"createElectromagneticSystem","kind":"re-export","signature":"createElectromagneticSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0110:createElementTable","exportIndex":110,"name":"createElementTable","kind":"re-export","signature":"createElementTable","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0111:createEmitterLOD","exportIndex":111,"name":"createEmitterLOD","kind":"re-export","signature":"createEmitterLOD","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0112:createEulerianFluidSolver","exportIndex":112,"name":"createEulerianFluidSolver","kind":"re-export","signature":"createEulerianFluidSolver","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0113:createFlockingSystem","exportIndex":113,"name":"createFlockingSystem","kind":"re-export","signature":"createFlockingSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0114:createFmmSystem","exportIndex":114,"name":"createFmmSystem","kind":"re-export","signature":"createFmmSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0115:createLennardJonesSystem","exportIndex":115,"name":"createLennardJonesSystem","kind":"re-export","signature":"createLennardJonesSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0116:createLifetimeCurvesSystem","exportIndex":116,"name":"createLifetimeCurvesSystem","kind":"re-export","signature":"createLifetimeCurvesSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0117:createLocalSpaceSystem","exportIndex":117,"name":"createLocalSpaceSystem","kind":"re-export","signature":"createLocalSpaceSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0118:createNBodySystem","exportIndex":118,"name":"createNBodySystem","kind":"re-export","signature":"createNBodySystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0119:createNeighborGridSystem","exportIndex":119,"name":"createNeighborGridSystem","kind":"re-export","signature":"createNeighborGridSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0120:createParticleMeshEwaldSystem","exportIndex":120,"name":"createParticleMeshEwaldSystem","kind":"re-export","signature":"createParticleMeshEwaldSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0121:createRopeInteractionSystem","exportIndex":121,"name":"createRopeInteractionSystem","kind":"re-export","signature":"createRopeInteractionSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0122:createRopeNodeState","exportIndex":122,"name":"createRopeNodeState","kind":"re-export","signature":"createRopeNodeState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0123:createSDFAttractionSystem","exportIndex":123,"name":"createSDFAttractionSystem","kind":"re-export","signature":"createSDFAttractionSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0124:createSPHSystem","exportIndex":124,"name":"createSPHSystem","kind":"re-export","signature":"createSPHSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0125:createSoftContainmentSystem","exportIndex":125,"name":"createSoftContainmentSystem","kind":"re-export","signature":"createSoftContainmentSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0126:createSplineFollowSystem","exportIndex":126,"name":"createSplineFollowSystem","kind":"re-export","signature":"createSplineFollowSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0127:createSurfaceProjectionSystem","exportIndex":127,"name":"createSurfaceProjectionSystem","kind":"re-export","signature":"createSurfaceProjectionSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0128:createVectorFieldSystem","exportIndex":128,"name":"createVectorFieldSystem","kind":"re-export","signature":"createVectorFieldSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0129:curveFromLegacy3","exportIndex":129,"name":"curveFromLegacy3","kind":"re-export","signature":"curveFromLegacy3","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0130:destroyAttributeReader","exportIndex":130,"name":"destroyAttributeReader","kind":"re-export","signature":"destroyAttributeReader","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0131:destroyAudioBridge","exportIndex":131,"name":"destroyAudioBridge","kind":"re-export","signature":"destroyAudioBridge","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0132:destroyChemistrySystem","exportIndex":132,"name":"destroyChemistrySystem","kind":"re-export","signature":"destroyChemistrySystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0133:destroyClassifierSystem","exportIndex":133,"name":"destroyClassifierSystem","kind":"re-export","signature":"destroyClassifierSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0134:destroyDecalSpawner","exportIndex":134,"name":"destroyDecalSpawner","kind":"re-export","signature":"destroyDecalSpawner","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0135:destroyElectromagneticSystem","exportIndex":135,"name":"destroyElectromagneticSystem","kind":"re-export","signature":"destroyElectromagneticSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0136:destroyElementTable","exportIndex":136,"name":"destroyElementTable","kind":"re-export","signature":"destroyElementTable","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0137:destroyEulerianFluidSolver","exportIndex":137,"name":"destroyEulerianFluidSolver","kind":"re-export","signature":"destroyEulerianFluidSolver","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0138:destroyFlockingSystem","exportIndex":138,"name":"destroyFlockingSystem","kind":"re-export","signature":"destroyFlockingSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0139:destroyFmmSystem","exportIndex":139,"name":"destroyFmmSystem","kind":"re-export","signature":"destroyFmmSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0140:destroyLennardJonesSystem","exportIndex":140,"name":"destroyLennardJonesSystem","kind":"re-export","signature":"destroyLennardJonesSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0141:destroyLifetimeCurvesSystem","exportIndex":141,"name":"destroyLifetimeCurvesSystem","kind":"re-export","signature":"destroyLifetimeCurvesSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0142:destroyLocalSpaceSystem","exportIndex":142,"name":"destroyLocalSpaceSystem","kind":"re-export","signature":"destroyLocalSpaceSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0143:destroyNBodySystem","exportIndex":143,"name":"destroyNBodySystem","kind":"re-export","signature":"destroyNBodySystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0144:destroyNeighborGridSystem","exportIndex":144,"name":"destroyNeighborGridSystem","kind":"re-export","signature":"destroyNeighborGridSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0145:destroyParticleMeshEwaldSystem","exportIndex":145,"name":"destroyParticleMeshEwaldSystem","kind":"re-export","signature":"destroyParticleMeshEwaldSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0146:destroyRopeInteractionSystem","exportIndex":146,"name":"destroyRopeInteractionSystem","kind":"re-export","signature":"destroyRopeInteractionSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0147:destroySDFAttractionSystem","exportIndex":147,"name":"destroySDFAttractionSystem","kind":"re-export","signature":"destroySDFAttractionSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0148:destroySPHSystem","exportIndex":148,"name":"destroySPHSystem","kind":"re-export","signature":"destroySPHSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0149:destroySoftContainmentSystem","exportIndex":149,"name":"destroySoftContainmentSystem","kind":"re-export","signature":"destroySoftContainmentSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0150:destroySplineFollowSystem","exportIndex":150,"name":"destroySplineFollowSystem","kind":"re-export","signature":"destroySplineFollowSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0151:destroySurfaceProjectionSystem","exportIndex":151,"name":"destroySurfaceProjectionSystem","kind":"re-export","signature":"destroySurfaceProjectionSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0152:destroyVectorFieldSystem","exportIndex":152,"name":"destroyVectorFieldSystem","kind":"re-export","signature":"destroyVectorFieldSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0153:disableEventSystem","exportIndex":153,"name":"disableEventSystem","kind":"re-export","signature":"disableEventSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0154:enableEventSystem","exportIndex":154,"name":"enableEventSystem","kind":"re-export","signature":"enableEventSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0155:estimateMaxSpeedCPU","exportIndex":155,"name":"estimateMaxSpeedCPU","kind":"re-export","signature":"estimateMaxSpeedCPU","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0156:evaluateEmitterLOD","exportIndex":156,"name":"evaluateEmitterLOD","kind":"re-export","signature":"evaluateEmitterLOD","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0157:evaluateEmitterLODByScreenSize","exportIndex":157,"name":"evaluateEmitterLODByScreenSize","kind":"re-export","signature":"evaluateEmitterLODByScreenSize","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0158:executeChemistry","exportIndex":158,"name":"executeChemistry","kind":"re-export","signature":"executeChemistry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0159:executeClassifier","exportIndex":159,"name":"executeClassifier","kind":"re-export","signature":"executeClassifier","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0160:executeElectromagnetic","exportIndex":160,"name":"executeElectromagnetic","kind":"re-export","signature":"executeElectromagnetic","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0161:executeFlocking","exportIndex":161,"name":"executeFlocking","kind":"re-export","signature":"executeFlocking","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0162:executeFmm","exportIndex":162,"name":"executeFmm","kind":"re-export","signature":"executeFmm","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0163:executeLennardJones","exportIndex":163,"name":"executeLennardJones","kind":"re-export","signature":"executeLennardJones","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0164:executeLocalToWorld","exportIndex":164,"name":"executeLocalToWorld","kind":"re-export","signature":"executeLocalToWorld","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0165:executeNBody","exportIndex":165,"name":"executeNBody","kind":"re-export","signature":"executeNBody","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0166:executeParticleMeshEwald","exportIndex":166,"name":"executeParticleMeshEwald","kind":"re-export","signature":"executeParticleMeshEwald","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0167:executeSDFAttraction","exportIndex":167,"name":"executeSDFAttraction","kind":"re-export","signature":"executeSDFAttraction","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0168:executeSPH","exportIndex":168,"name":"executeSPH","kind":"re-export","signature":"executeSPH","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0169:executeSoftContainment","exportIndex":169,"name":"executeSoftContainment","kind":"re-export","signature":"executeSoftContainment","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0170:executeSplineFollow","exportIndex":170,"name":"executeSplineFollow","kind":"re-export","signature":"executeSplineFollow","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0171:executeSurfaceProjection","exportIndex":171,"name":"executeSurfaceProjection","kind":"re-export","signature":"executeSurfaceProjection","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0172:executeWorldToLocal","exportIndex":172,"name":"executeWorldToLocal","kind":"re-export","signature":"executeWorldToLocal","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0173:feedCollisionEvents","exportIndex":173,"name":"feedCollisionEvents","kind":"re-export","signature":"feedCollisionEvents","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0174:findNearestParticle","exportIndex":174,"name":"findNearestParticle","kind":"re-export","signature":"findNearestParticle","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0175:findParticlesInRadius","exportIndex":175,"name":"findParticlesInRadius","kind":"re-export","signature":"findParticlesInRadius","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0176:flushPendingAudio","exportIndex":176,"name":"flushPendingAudio","kind":"re-export","signature":"flushPendingAudio","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0177:generateProceduralVectorField","exportIndex":177,"name":"generateProceduralVectorField","kind":"re-export","signature":"generateProceduralVectorField","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0178:getActiveDecals","exportIndex":178,"name":"getActiveDecals","kind":"re-export","signature":"getActiveDecals","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0179:getClassificationBuffer","exportIndex":179,"name":"getClassificationBuffer","kind":"re-export","signature":"getClassificationBuffer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0180:getCurrentLODTier","exportIndex":180,"name":"getCurrentLODTier","kind":"re-export","signature":"getCurrentLODTier","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0181:getDecalCount","exportIndex":181,"name":"getDecalCount","kind":"re-export","signature":"getDecalCount","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0182:getElement","exportIndex":182,"name":"getElement","kind":"re-export","signature":"getElement","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0183:getElementBySymbol","exportIndex":183,"name":"getElementBySymbol","kind":"re-export","signature":"getElementBySymbol","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0184:getLastEvents","exportIndex":184,"name":"getLastEvents","kind":"re-export","signature":"getLastEvents","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0185:getNeighborGridBuffers","exportIndex":185,"name":"getNeighborGridBuffers","kind":"re-export","signature":"getNeighborGridBuffers","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0186:getRopeInteractionMaterial","exportIndex":186,"name":"getRopeInteractionMaterial","kind":"re-export","signature":"getRopeInteractionMaterial","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0187:getRopeInteractionState","exportIndex":187,"name":"getRopeInteractionState","kind":"re-export","signature":"getRopeInteractionState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0188:getSPHDensityBuffer","exportIndex":188,"name":"getSPHDensityBuffer","kind":"re-export","signature":"getSPHDensityBuffer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0189:getSubstanceInteraction","exportIndex":189,"name":"getSubstanceInteraction","kind":"re-export","signature":"getSubstanceInteraction","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0190:getValenceBuffer","exportIndex":190,"name":"getValenceBuffer","kind":"re-export","signature":"getValenceBuffer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0191:initChemistryBindGroups","exportIndex":191,"name":"initChemistryBindGroups","kind":"re-export","signature":"initChemistryBindGroups","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0192:initClassifierBindGroups","exportIndex":192,"name":"initClassifierBindGroups","kind":"re-export","signature":"initClassifierBindGroups","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0193:initContainmentBindGroups","exportIndex":193,"name":"initContainmentBindGroups","kind":"re-export","signature":"initContainmentBindGroups","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0194:initEMBindGroups","exportIndex":194,"name":"initEMBindGroups","kind":"re-export","signature":"initEMBindGroups","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0195:initFlockingBindGroups","exportIndex":195,"name":"initFlockingBindGroups","kind":"re-export","signature":"initFlockingBindGroups","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0196:initFluidBindGroups","exportIndex":196,"name":"initFluidBindGroups","kind":"re-export","signature":"initFluidBindGroups","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0197:initFmmBindGroups","exportIndex":197,"name":"initFmmBindGroups","kind":"re-export","signature":"initFmmBindGroups","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0198:initLJBindGroups","exportIndex":198,"name":"initLJBindGroups","kind":"re-export","signature":"initLJBindGroups","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0199:initLocalSpaceBindGroups","exportIndex":199,"name":"initLocalSpaceBindGroups","kind":"re-export","signature":"initLocalSpaceBindGroups","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0200:initNBodyBindGroups","exportIndex":200,"name":"initNBodyBindGroups","kind":"re-export","signature":"initNBodyBindGroups","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0201:initNeighborGridBindGroups","exportIndex":201,"name":"initNeighborGridBindGroups","kind":"re-export","signature":"initNeighborGridBindGroups","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0202:initParticleMeshEwaldBindGroups","exportIndex":202,"name":"initParticleMeshEwaldBindGroups","kind":"re-export","signature":"initParticleMeshEwaldBindGroups","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0203:initParticleValence","exportIndex":203,"name":"initParticleValence","kind":"re-export","signature":"initParticleValence","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0204:initProjectionBindGroups","exportIndex":204,"name":"initProjectionBindGroups","kind":"re-export","signature":"initProjectionBindGroups","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0205:initSDFAttractionBindGroup","exportIndex":205,"name":"initSDFAttractionBindGroup","kind":"re-export","signature":"initSDFAttractionBindGroup","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0206:initSPHBindGroups","exportIndex":206,"name":"initSPHBindGroups","kind":"re-export","signature":"initSPHBindGroups","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0207:initSplineFollowBindGroups","exportIndex":207,"name":"initSplineFollowBindGroups","kind":"re-export","signature":"initSplineFollowBindGroups","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0208:ljMixingRule","exportIndex":208,"name":"ljMixingRule","kind":"re-export","signature":"ljMixingRule","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0209:loadVectorFieldFromData","exportIndex":209,"name":"loadVectorFieldFromData","kind":"re-export","signature":"loadVectorFieldFromData","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0210:offParticleEvent","exportIndex":210,"name":"offParticleEvent","kind":"re-export","signature":"offParticleEvent","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0211:onParticleEvent","exportIndex":211,"name":"onParticleEvent","kind":"re-export","signature":"onParticleEvent","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0212:parseFGA","exportIndex":212,"name":"parseFGA","kind":"re-export","signature":"parseFGA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0213:processAudioEvents","exportIndex":213,"name":"processAudioEvents","kind":"re-export","signature":"processAudioEvents","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0214:readFmmDiagnostics","exportIndex":214,"name":"readFmmDiagnostics","kind":"re-export","signature":"readFmmDiagnostics","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0215:readParticleMeshEwaldDiagnostics","exportIndex":215,"name":"readParticleMeshEwaldDiagnostics","kind":"re-export","signature":"readParticleMeshEwaldDiagnostics","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0216:readParticleMeta","exportIndex":216,"name":"readParticleMeta","kind":"re-export","signature":"readParticleMeta","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0217:readParticlePosition","exportIndex":217,"name":"readParticlePosition","kind":"re-export","signature":"readParticlePosition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0218:readParticleVelocity","exportIndex":218,"name":"readParticleVelocity","kind":"re-export","signature":"readParticleVelocity","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0219:readbackEvents","exportIndex":219,"name":"readbackEvents","kind":"re-export","signature":"readbackEvents","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0220:refreshAttributeCache","exportIndex":220,"name":"refreshAttributeCache","kind":"re-export","signature":"refreshAttributeCache","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0221:registerAudioCue","exportIndex":221,"name":"registerAudioCue","kind":"re-export","signature":"registerAudioCue","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0222:registerEventHandler","exportIndex":222,"name":"registerEventHandler","kind":"re-export","signature":"registerEventHandler","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0223:registerRopeForInteraction","exportIndex":223,"name":"registerRopeForInteraction","kind":"re-export","signature":"registerRopeForInteraction","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0224:resetAdaptiveSubsteps","exportIndex":224,"name":"resetAdaptiveSubsteps","kind":"re-export","signature":"resetAdaptiveSubsteps","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0225:setAudioListenerPos","exportIndex":225,"name":"setAudioListenerPos","kind":"re-export","signature":"setAudioListenerPos","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0226:setClassifierParams","exportIndex":226,"name":"setClassifierParams","kind":"re-export","signature":"setClassifierParams","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0227:setEmitterTransform","exportIndex":227,"name":"setEmitterTransform","kind":"re-export","signature":"setEmitterTransform","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0228:setEmitterTransformFromPosRot","exportIndex":228,"name":"setEmitterTransformFromPosRot","kind":"re-export","signature":"setEmitterTransformFromPosRot","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0229:setExternalField","exportIndex":229,"name":"setExternalField","kind":"re-export","signature":"setExternalField","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0230:setFlockingParams","exportIndex":230,"name":"setFlockingParams","kind":"re-export","signature":"setFlockingParams","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0231:setFmmParams","exportIndex":231,"name":"setFmmParams","kind":"re-export","signature":"setFmmParams","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0232:setForcedLODTier","exportIndex":232,"name":"setForcedLODTier","kind":"re-export","signature":"setForcedLODTier","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0233:setLifetimeCurves","exportIndex":233,"name":"setLifetimeCurves","kind":"re-export","signature":"setLifetimeCurves","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0234:setNBodyParams","exportIndex":234,"name":"setNBodyParams","kind":"re-export","signature":"setNBodyParams","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0235:setParticleCharges","exportIndex":235,"name":"setParticleCharges","kind":"re-export","signature":"setParticleCharges","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0236:setParticleElements","exportIndex":236,"name":"setParticleElements","kind":"re-export","signature":"setParticleElements","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0237:setParticleMeshEwaldParams","exportIndex":237,"name":"setParticleMeshEwaldParams","kind":"re-export","signature":"setParticleMeshEwaldParams","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0238:setSPHParams","exportIndex":238,"name":"setSPHParams","kind":"re-export","signature":"setSPHParams","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0239:setSplineControlPoints","exportIndex":239,"name":"setSplineControlPoints","kind":"re-export","signature":"setSplineControlPoints","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0240:setSplineFollowParams","exportIndex":240,"name":"setSplineFollowParams","kind":"re-export","signature":"setSplineFollowParams","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0241:setVectorFieldParams","exportIndex":241,"name":"setVectorFieldParams","kind":"re-export","signature":"setVectorFieldParams","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0242:stepEulerianFluid","exportIndex":242,"name":"stepEulerianFluid","kind":"re-export","signature":"stepEulerianFluid","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0243:stepRopeInteraction","exportIndex":243,"name":"stepRopeInteraction","kind":"re-export","signature":"stepRopeInteraction","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0244:unregisterRopeInteraction","exportIndex":244,"name":"unregisterRopeInteraction","kind":"re-export","signature":"unregisterRopeInteraction","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0245:updateDecals","exportIndex":245,"name":"updateDecals","kind":"re-export","signature":"updateDecals","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSimWorld.md","moduleTitle":"sim/particles/ParticleSimWorld","source":"engine/sim/particles/ParticleSimWorld.js","import":"/engine/sim/particles/ParticleSimWorld.js","sourceHash":"52d6382d8cf822e0e756f6eb2e9694eeed32863524b7b8b324937a0eb1809e0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSimWorld.js#0246:updateSDFAttractor","exportIndex":246,"name":"updateSDFAttractor","kind":"re-export","signature":"updateSDFAttractor","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSnapshot.md","moduleTitle":"sim/particles/ParticleSnapshot","source":"engine/sim/particles/ParticleSnapshot.js","import":"/engine/sim/particles/ParticleSnapshot.js","sourceHash":"3e2abf3b5bd98569c6dfd6d48b19659cba32d18167bed862002c7f6e1f5ddc18","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleSnapshot.js","title":"sim/particles/ParticleSnapshot","summary":"Create particle snapshot system for time rewind","exportCount":14}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSnapshot.md","moduleTitle":"sim/particles/ParticleSnapshot","source":"engine/sim/particles/ParticleSnapshot.js","import":"/engine/sim/particles/ParticleSnapshot.js","sourceHash":"3e2abf3b5bd98569c6dfd6d48b19659cba32d18167bed862002c7f6e1f5ddc18","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSnapshot.js#0000:createSnapshotSystem","exportIndex":0,"name":"createSnapshotSystem","kind":"function","signature":"createSnapshotSystem(device, maxParticles, options = {})","summary":"Create particle snapshot system for time rewind"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSnapshot.md","moduleTitle":"sim/particles/ParticleSnapshot","source":"engine/sim/particles/ParticleSnapshot.js","import":"/engine/sim/particles/ParticleSnapshot.js","sourceHash":"3e2abf3b5bd98569c6dfd6d48b19659cba32d18167bed862002c7f6e1f5ddc18","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSnapshot.js#0001:initSnapshotBindGroups","exportIndex":1,"name":"initSnapshotBindGroups","kind":"function","signature":"initSnapshotBindGroups(snapshot, positionBuffer, velocityBuffer, metaBuffer, thermalBuffer)","summary":"Initialize bind groups with particle buffers"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSnapshot.md","moduleTitle":"sim/particles/ParticleSnapshot","source":"engine/sim/particles/ParticleSnapshot.js","import":"/engine/sim/particles/ParticleSnapshot.js","sourceHash":"3e2abf3b5bd98569c6dfd6d48b19659cba32d18167bed862002c7f6e1f5ddc18","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSnapshot.js#0002:takeSnapshot","exportIndex":2,"name":"takeSnapshot","kind":"function","signature":"takeSnapshot(snapshot, emitters, currentTimeMs)","summary":"Take a snapshot of current state"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSnapshot.md","moduleTitle":"sim/particles/ParticleSnapshot","source":"engine/sim/particles/ParticleSnapshot.js","import":"/engine/sim/particles/ParticleSnapshot.js","sourceHash":"3e2abf3b5bd98569c6dfd6d48b19659cba32d18167bed862002c7f6e1f5ddc18","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSnapshot.js#0003:autoSnapshot","exportIndex":3,"name":"autoSnapshot","kind":"function","signature":"autoSnapshot(snapshot, emitters, currentTimeMs)","summary":"Auto-snapshot based on interval (call every frame)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSnapshot.md","moduleTitle":"sim/particles/ParticleSnapshot","source":"engine/sim/particles/ParticleSnapshot.js","import":"/engine/sim/particles/ParticleSnapshot.js","sourceHash":"3e2abf3b5bd98569c6dfd6d48b19659cba32d18167bed862002c7f6e1f5ddc18","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSnapshot.js#0004:restoreFrame","exportIndex":4,"name":"restoreFrame","kind":"function","signature":"restoreFrame(snapshot, emitters, frameIndex)","summary":"Restore exact frame from history"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSnapshot.md","moduleTitle":"sim/particles/ParticleSnapshot","source":"engine/sim/particles/ParticleSnapshot.js","import":"/engine/sim/particles/ParticleSnapshot.js","sourceHash":"3e2abf3b5bd98569c6dfd6d48b19659cba32d18167bed862002c7f6e1f5ddc18","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSnapshot.js#0005:restoreInterpolated","exportIndex":5,"name":"restoreInterpolated","kind":"function","signature":"restoreInterpolated(snapshot, emitters, frameA, frameB, t)","summary":"Restore with interpolation between two frames"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSnapshot.md","moduleTitle":"sim/particles/ParticleSnapshot","source":"engine/sim/particles/ParticleSnapshot.js","import":"/engine/sim/particles/ParticleSnapshot.js","sourceHash":"3e2abf3b5bd98569c6dfd6d48b19659cba32d18167bed862002c7f6e1f5ddc18","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSnapshot.js#0006:seekToTime","exportIndex":6,"name":"seekToTime","kind":"function","signature":"seekToTime(snapshot, emitters, targetTimeMs)","summary":"Seek to a specific time in history"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSnapshot.md","moduleTitle":"sim/particles/ParticleSnapshot","source":"engine/sim/particles/ParticleSnapshot.js","import":"/engine/sim/particles/ParticleSnapshot.js","sourceHash":"3e2abf3b5bd98569c6dfd6d48b19659cba32d18167bed862002c7f6e1f5ddc18","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSnapshot.js#0007:startRewind","exportIndex":7,"name":"startRewind","kind":"function","signature":"startRewind(snapshot)","summary":"Start rewind mode"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSnapshot.md","moduleTitle":"sim/particles/ParticleSnapshot","source":"engine/sim/particles/ParticleSnapshot.js","import":"/engine/sim/particles/ParticleSnapshot.js","sourceHash":"3e2abf3b5bd98569c6dfd6d48b19659cba32d18167bed862002c7f6e1f5ddc18","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSnapshot.js#0008:stopRewind","exportIndex":8,"name":"stopRewind","kind":"function","signature":"stopRewind(snapshot)","summary":"Stop rewind and resume simulation"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSnapshot.md","moduleTitle":"sim/particles/ParticleSnapshot","source":"engine/sim/particles/ParticleSnapshot.js","import":"/engine/sim/particles/ParticleSnapshot.js","sourceHash":"3e2abf3b5bd98569c6dfd6d48b19659cba32d18167bed862002c7f6e1f5ddc18","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSnapshot.js#0009:stepRewind","exportIndex":9,"name":"stepRewind","kind":"function","signature":"stepRewind(snapshot, emitters, dt)","summary":"Step rewind playback (call each frame while rewinding)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSnapshot.md","moduleTitle":"sim/particles/ParticleSnapshot","source":"engine/sim/particles/ParticleSnapshot.js","import":"/engine/sim/particles/ParticleSnapshot.js","sourceHash":"3e2abf3b5bd98569c6dfd6d48b19659cba32d18167bed862002c7f6e1f5ddc18","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSnapshot.js#0010:setPlaybackSpeed","exportIndex":10,"name":"setPlaybackSpeed","kind":"function","signature":"setPlaybackSpeed(snapshot, speed)","summary":"Set playback speed (-1 = reverse, 1 = forward, 0.5 = slow forward, etc.)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSnapshot.md","moduleTitle":"sim/particles/ParticleSnapshot","source":"engine/sim/particles/ParticleSnapshot.js","import":"/engine/sim/particles/ParticleSnapshot.js","sourceHash":"3e2abf3b5bd98569c6dfd6d48b19659cba32d18167bed862002c7f6e1f5ddc18","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSnapshot.js#0011:getSnapshotInfo","exportIndex":11,"name":"getSnapshotInfo","kind":"function","signature":"getSnapshotInfo(snapshot)","summary":"Get current playback info"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSnapshot.md","moduleTitle":"sim/particles/ParticleSnapshot","source":"engine/sim/particles/ParticleSnapshot.js","import":"/engine/sim/particles/ParticleSnapshot.js","sourceHash":"3e2abf3b5bd98569c6dfd6d48b19659cba32d18167bed862002c7f6e1f5ddc18","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSnapshot.js#0012:clearHistory","exportIndex":12,"name":"clearHistory","kind":"function","signature":"clearHistory(snapshot)","summary":"Clear all history"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSnapshot.md","moduleTitle":"sim/particles/ParticleSnapshot","source":"engine/sim/particles/ParticleSnapshot.js","import":"/engine/sim/particles/ParticleSnapshot.js","sourceHash":"3e2abf3b5bd98569c6dfd6d48b19659cba32d18167bed862002c7f6e1f5ddc18","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSnapshot.js#0013:destroySnapshotSystem","exportIndex":13,"name":"destroySnapshotSystem","kind":"function","signature":"destroySnapshotSystem(snapshot)","summary":"Destroy snapshot system"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSnapshotDelta.md","moduleTitle":"sim/particles/ParticleSnapshotDelta","source":"engine/sim/particles/ParticleSnapshotDelta.js","import":"/engine/sim/particles/ParticleSnapshotDelta.js","sourceHash":"39a100183e2fffbf0923c93f67f1d733c8e6873e0cca7ad082a6d0e59719947c","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleSnapshotDelta.js","title":"sim/particles/ParticleSnapshotDelta","summary":"ParticleSnapshotDelta.js - Delta-Compressed Particle State History Like the WorldTimeline system, uses delta compression to store only changes: - Keyframes: Full state snapshots at intervals - Delta frames: Only particles that moved significantly - No max frame limit - unlimited history with efficient storage Compression approach: - Track which particles changed since last frame - Store only changed particle indices + their new state - Periodic keyframes for random access","exportCount":18}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSnapshotDelta.md","moduleTitle":"sim/particles/ParticleSnapshotDelta","source":"engine/sim/particles/ParticleSnapshotDelta.js","import":"/engine/sim/particles/ParticleSnapshotDelta.js","sourceHash":"39a100183e2fffbf0923c93f67f1d733c8e6873e0cca7ad082a6d0e59719947c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSnapshotDelta.js#0000:hashParticleKeyframe","exportIndex":0,"name":"hashParticleKeyframe","kind":"function","signature":"hashParticleKeyframe(frame)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSnapshotDelta.md","moduleTitle":"sim/particles/ParticleSnapshotDelta","source":"engine/sim/particles/ParticleSnapshotDelta.js","import":"/engine/sim/particles/ParticleSnapshotDelta.js","sourceHash":"39a100183e2fffbf0923c93f67f1d733c8e6873e0cca7ad082a6d0e59719947c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSnapshotDelta.js#0001:hashParticleKeyframeSemantic","exportIndex":1,"name":"hashParticleKeyframeSemantic","kind":"function","signature":"hashParticleKeyframeSemantic(frame, sampleVec4Count = 1024)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSnapshotDelta.md","moduleTitle":"sim/particles/ParticleSnapshotDelta","source":"engine/sim/particles/ParticleSnapshotDelta.js","import":"/engine/sim/particles/ParticleSnapshotDelta.js","sourceHash":"39a100183e2fffbf0923c93f67f1d733c8e6873e0cca7ad082a6d0e59719947c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSnapshotDelta.js#0002:createDeltaSnapshotSystem","exportIndex":2,"name":"createDeltaSnapshotSystem","kind":"function","signature":"createDeltaSnapshotSystem(options = {})","summary":"Create delta-compressed particle snapshot system"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSnapshotDelta.md","moduleTitle":"sim/particles/ParticleSnapshotDelta","source":"engine/sim/particles/ParticleSnapshotDelta.js","import":"/engine/sim/particles/ParticleSnapshotDelta.js","sourceHash":"39a100183e2fffbf0923c93f67f1d733c8e6873e0cca7ad082a6d0e59719947c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSnapshotDelta.js#0003:captureFrame","exportIndex":3,"name":"captureFrame","kind":"function","signature":"async captureFrame(snapshot, particleState, emitters, currentTimeMs)","summary":"Capture a snapshot (keyframe or delta based on interval) Captures EVERYTHING: positions, velocities, meta, slotInfo, liveCount, freeSlots"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSnapshotDelta.md","moduleTitle":"sim/particles/ParticleSnapshotDelta","source":"engine/sim/particles/ParticleSnapshotDelta.js","import":"/engine/sim/particles/ParticleSnapshotDelta.js","sourceHash":"39a100183e2fffbf0923c93f67f1d733c8e6873e0cca7ad082a6d0e59719947c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSnapshotDelta.js#0004:autoCapture","exportIndex":4,"name":"autoCapture","kind":"function","signature":"async autoCapture(snapshot, particleState, emitters, currentTimeMs)","summary":"Auto-capture based on interval - NON-BLOCKING version Uses double-buffered GPU readback to avoid blocking the main thread"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSnapshotDelta.md","moduleTitle":"sim/particles/ParticleSnapshotDelta","source":"engine/sim/particles/ParticleSnapshotDelta.js","import":"/engine/sim/particles/ParticleSnapshotDelta.js","sourceHash":"39a100183e2fffbf0923c93f67f1d733c8e6873e0cca7ad082a6d0e59719947c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSnapshotDelta.js#0005:reconstructState","exportIndex":5,"name":"reconstructState","kind":"function","signature":"reconstructState(snapshot, frameIndex)","summary":"Reconstruct FULL particle state at a specific frame by applying deltas from keyframe Includes positions, velocities, meta, slotInfo, liveCount, freeSlots - everything needed for complete rewind Handles both quantized (Int16) and unquantized (Float32) data formats"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSnapshotDelta.md","moduleTitle":"sim/particles/ParticleSnapshotDelta","source":"engine/sim/particles/ParticleSnapshotDelta.js","import":"/engine/sim/particles/ParticleSnapshotDelta.js","sourceHash":"39a100183e2fffbf0923c93f67f1d733c8e6873e0cca7ad082a6d0e59719947c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSnapshotDelta.js#0006:restoreToFrame","exportIndex":6,"name":"restoreToFrame","kind":"function","signature":"restoreToFrame(snapshot, particleState, emitters, frameIndex)","summary":"Restore FULL particle state to a specific frame"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSnapshotDelta.md","moduleTitle":"sim/particles/ParticleSnapshotDelta","source":"engine/sim/particles/ParticleSnapshotDelta.js","import":"/engine/sim/particles/ParticleSnapshotDelta.js","sourceHash":"39a100183e2fffbf0923c93f67f1d733c8e6873e0cca7ad082a6d0e59719947c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSnapshotDelta.js#0007:restoreInterpolated","exportIndex":7,"name":"restoreInterpolated","kind":"function","signature":"restoreInterpolated(snapshot, particleState, emitters, frameA, frameB, t)","summary":"Restore with interpolation between two frames"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSnapshotDelta.md","moduleTitle":"sim/particles/ParticleSnapshotDelta","source":"engine/sim/particles/ParticleSnapshotDelta.js","import":"/engine/sim/particles/ParticleSnapshotDelta.js","sourceHash":"39a100183e2fffbf0923c93f67f1d733c8e6873e0cca7ad082a6d0e59719947c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSnapshotDelta.js#0008:seekToTime","exportIndex":8,"name":"seekToTime","kind":"function","signature":"seekToTime(snapshot, particleState, emitters, targetTimeMs)","summary":"Seek to specific time"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSnapshotDelta.md","moduleTitle":"sim/particles/ParticleSnapshotDelta","source":"engine/sim/particles/ParticleSnapshotDelta.js","import":"/engine/sim/particles/ParticleSnapshotDelta.js","sourceHash":"39a100183e2fffbf0923c93f67f1d733c8e6873e0cca7ad082a6d0e59719947c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSnapshotDelta.js#0009:startRewind","exportIndex":9,"name":"startRewind","kind":"function","signature":"startRewind(snapshot)","summary":"Start rewind mode"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSnapshotDelta.md","moduleTitle":"sim/particles/ParticleSnapshotDelta","source":"engine/sim/particles/ParticleSnapshotDelta.js","import":"/engine/sim/particles/ParticleSnapshotDelta.js","sourceHash":"39a100183e2fffbf0923c93f67f1d733c8e6873e0cca7ad082a6d0e59719947c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSnapshotDelta.js#0010:stopRewind","exportIndex":10,"name":"stopRewind","kind":"function","signature":"stopRewind(snapshot)","summary":"Stop rewind"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSnapshotDelta.md","moduleTitle":"sim/particles/ParticleSnapshotDelta","source":"engine/sim/particles/ParticleSnapshotDelta.js","import":"/engine/sim/particles/ParticleSnapshotDelta.js","sourceHash":"39a100183e2fffbf0923c93f67f1d733c8e6873e0cca7ad082a6d0e59719947c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSnapshotDelta.js#0011:stepRewind","exportIndex":11,"name":"stepRewind","kind":"function","signature":"stepRewind(snapshot, particleState, emitters, dtMs)","summary":"Step rewind playback - restores FULL particle state including spawn/death"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSnapshotDelta.md","moduleTitle":"sim/particles/ParticleSnapshotDelta","source":"engine/sim/particles/ParticleSnapshotDelta.js","import":"/engine/sim/particles/ParticleSnapshotDelta.js","sourceHash":"39a100183e2fffbf0923c93f67f1d733c8e6873e0cca7ad082a6d0e59719947c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSnapshotDelta.js#0012:setPlaybackSpeed","exportIndex":12,"name":"setPlaybackSpeed","kind":"function","signature":"setPlaybackSpeed(snapshot, speed)","summary":"Set playback speed"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSnapshotDelta.md","moduleTitle":"sim/particles/ParticleSnapshotDelta","source":"engine/sim/particles/ParticleSnapshotDelta.js","import":"/engine/sim/particles/ParticleSnapshotDelta.js","sourceHash":"39a100183e2fffbf0923c93f67f1d733c8e6873e0cca7ad082a6d0e59719947c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSnapshotDelta.js#0013:setEasingType","exportIndex":13,"name":"setEasingType","kind":"function","signature":"setEasingType(snapshot, easingType)","summary":"Set easing type for interpolation"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSnapshotDelta.md","moduleTitle":"sim/particles/ParticleSnapshotDelta","source":"engine/sim/particles/ParticleSnapshotDelta.js","import":"/engine/sim/particles/ParticleSnapshotDelta.js","sourceHash":"39a100183e2fffbf0923c93f67f1d733c8e6873e0cca7ad082a6d0e59719947c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSnapshotDelta.js#0014:getEasingTypes","exportIndex":14,"name":"getEasingTypes","kind":"function","signature":"getEasingTypes()","summary":"Get available easing types"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSnapshotDelta.md","moduleTitle":"sim/particles/ParticleSnapshotDelta","source":"engine/sim/particles/ParticleSnapshotDelta.js","import":"/engine/sim/particles/ParticleSnapshotDelta.js","sourceHash":"39a100183e2fffbf0923c93f67f1d733c8e6873e0cca7ad082a6d0e59719947c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSnapshotDelta.js#0015:getSnapshotInfo","exportIndex":15,"name":"getSnapshotInfo","kind":"function","signature":"getSnapshotInfo(snapshot)","summary":"Get snapshot info"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSnapshotDelta.md","moduleTitle":"sim/particles/ParticleSnapshotDelta","source":"engine/sim/particles/ParticleSnapshotDelta.js","import":"/engine/sim/particles/ParticleSnapshotDelta.js","sourceHash":"39a100183e2fffbf0923c93f67f1d733c8e6873e0cca7ad082a6d0e59719947c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSnapshotDelta.js#0016:truncateHistoryAfterTime","exportIndex":16,"name":"truncateHistoryAfterTime","kind":"function","signature":"truncateHistoryAfterTime(snapshot, timeMs)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSnapshotDelta.md","moduleTitle":"sim/particles/ParticleSnapshotDelta","source":"engine/sim/particles/ParticleSnapshotDelta.js","import":"/engine/sim/particles/ParticleSnapshotDelta.js","sourceHash":"39a100183e2fffbf0923c93f67f1d733c8e6873e0cca7ad082a6d0e59719947c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSnapshotDelta.js#0017:clearHistory","exportIndex":17,"name":"clearHistory","kind":"function","signature":"clearHistory(snapshot)","summary":"Clear all history"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSoftContainment.md","moduleTitle":"sim/particles/ParticleSoftContainment","source":"engine/sim/particles/ParticleSoftContainment.js","import":"/engine/sim/particles/ParticleSoftContainment.js","sourceHash":"346761529124fa5ced66d2943c96aa19b0914cf86a502f3eb62232c1be561248","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleSoftContainment.js","title":"sim/particles/ParticleSoftContainment","summary":"ParticleSoftContainment.js - Soft Containment Volumes (GAP 31) GPU compute shader that keeps particles inside shape volumes using soft bounce forces instead of hard kill zones. Particles approaching the boundary receive a proportional repulsion force pushing them back inside. Supports: sphere, box, cylinder containment volumes. Unlike kill zones (hard removal), soft containment preserves particles and creates natural-looking bounded effects. Matches PopcornFX CParticleEvolver_Containment. Usage: const cont = createSoftContainmentSystem(device, maxParticles); addContainmentVolume(cont, { type: 'sphere', center: [0,5,0], radius: 10 }); initContainmentBindGroups(cont, device, positionBuffer, velocityBuffer); executeSoftContainment(cont, device, particleCount, dt);","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSoftContainment.md","moduleTitle":"sim/particles/ParticleSoftContainment","source":"engine/sim/particles/ParticleSoftContainment.js","import":"/engine/sim/particles/ParticleSoftContainment.js","sourceHash":"346761529124fa5ced66d2943c96aa19b0914cf86a502f3eb62232c1be561248","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSoftContainment.js#0000:createSoftContainmentSystem","exportIndex":0,"name":"createSoftContainmentSystem","kind":"function","signature":"createSoftContainmentSystem(device, maxParticles)","summary":"Create the soft containment system."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSoftContainment.md","moduleTitle":"sim/particles/ParticleSoftContainment","source":"engine/sim/particles/ParticleSoftContainment.js","import":"/engine/sim/particles/ParticleSoftContainment.js","sourceHash":"346761529124fa5ced66d2943c96aa19b0914cf86a502f3eb62232c1be561248","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSoftContainment.js#0001:addContainmentVolume","exportIndex":1,"name":"addContainmentVolume","kind":"function","signature":"addContainmentVolume(system, volume)","summary":"Add a containment volume."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSoftContainment.md","moduleTitle":"sim/particles/ParticleSoftContainment","source":"engine/sim/particles/ParticleSoftContainment.js","import":"/engine/sim/particles/ParticleSoftContainment.js","sourceHash":"346761529124fa5ced66d2943c96aa19b0914cf86a502f3eb62232c1be561248","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSoftContainment.js#0002:initContainmentBindGroups","exportIndex":2,"name":"initContainmentBindGroups","kind":"function","signature":"initContainmentBindGroups(system, device, positionBuffer, velocityBuffer)","summary":"Initialize bind groups."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSoftContainment.md","moduleTitle":"sim/particles/ParticleSoftContainment","source":"engine/sim/particles/ParticleSoftContainment.js","import":"/engine/sim/particles/ParticleSoftContainment.js","sourceHash":"346761529124fa5ced66d2943c96aa19b0914cf86a502f3eb62232c1be561248","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSoftContainment.js#0003:executeSoftContainment","exportIndex":3,"name":"executeSoftContainment","kind":"function","signature":"executeSoftContainment(system, device, particleCount, dt)","summary":"Execute the soft containment compute pass."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSoftContainment.md","moduleTitle":"sim/particles/ParticleSoftContainment","source":"engine/sim/particles/ParticleSoftContainment.js","import":"/engine/sim/particles/ParticleSoftContainment.js","sourceHash":"346761529124fa5ced66d2943c96aa19b0914cf86a502f3eb62232c1be561248","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSoftContainment.js#0004:clearContainmentVolumes","exportIndex":4,"name":"clearContainmentVolumes","kind":"function","signature":"clearContainmentVolumes(system)","summary":"Clear all volumes."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSoftContainment.md","moduleTitle":"sim/particles/ParticleSoftContainment","source":"engine/sim/particles/ParticleSoftContainment.js","import":"/engine/sim/particles/ParticleSoftContainment.js","sourceHash":"346761529124fa5ced66d2943c96aa19b0914cf86a502f3eb62232c1be561248","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSoftContainment.js#0005:destroySoftContainmentSystem","exportIndex":5,"name":"destroySoftContainmentSystem","kind":"function","signature":"destroySoftContainmentSystem(system)","summary":"Destroy the system."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSpawnShapes.md","moduleTitle":"sim/particles/ParticleSpawnShapes","source":"engine/sim/particles/ParticleSpawnShapes.js","import":"/engine/sim/particles/ParticleSpawnShapes.js","sourceHash":"48638ee6686e3bc43005b9b2758418d7ce0e7647143c67fe16da463bceda8501","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleSpawnShapes.js","title":"sim/particles/ParticleSpawnShapes","summary":"ParticleSpawnShapes.js - Spawn shape primitives for particle emission Niagara/PopcornFX/Houdini parity: spawn particles in structured shapes instead of just point + random spread. Each function returns { position: [x,y,z], normal: [nx,ny,nz] } Normal points outward from the shape surface — useful for initial velocity direction. ⚠️ MULTIPLAYER: Uses deterministic RNG from AIRandom.js","exportCount":13}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSpawnShapes.md","moduleTitle":"sim/particles/ParticleSpawnShapes","source":"engine/sim/particles/ParticleSpawnShapes.js","import":"/engine/sim/particles/ParticleSpawnShapes.js","sourceHash":"48638ee6686e3bc43005b9b2758418d7ce0e7647143c67fe16da463bceda8501","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSpawnShapes.js#0000:spawnSphere","exportIndex":0,"name":"spawnSphere","kind":"function","signature":"spawnSphere(center, radius, surfaceOnly = false)","summary":"Spawn inside or on a sphere"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSpawnShapes.md","moduleTitle":"sim/particles/ParticleSpawnShapes","source":"engine/sim/particles/ParticleSpawnShapes.js","import":"/engine/sim/particles/ParticleSpawnShapes.js","sourceHash":"48638ee6686e3bc43005b9b2758418d7ce0e7647143c67fe16da463bceda8501","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSpawnShapes.js#0001:spawnHemisphere","exportIndex":1,"name":"spawnHemisphere","kind":"function","signature":"spawnHemisphere(center, radius, axis = [0, 1, 0], surfaceOnly = false)","summary":"Spawn on a hemisphere (oriented along axis)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSpawnShapes.md","moduleTitle":"sim/particles/ParticleSpawnShapes","source":"engine/sim/particles/ParticleSpawnShapes.js","import":"/engine/sim/particles/ParticleSpawnShapes.js","sourceHash":"48638ee6686e3bc43005b9b2758418d7ce0e7647143c67fe16da463bceda8501","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSpawnShapes.js#0002:spawnBox","exportIndex":2,"name":"spawnBox","kind":"function","signature":"spawnBox(min, max, surfaceOnly = false)","summary":"Spawn inside or on a box (AABB)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSpawnShapes.md","moduleTitle":"sim/particles/ParticleSpawnShapes","source":"engine/sim/particles/ParticleSpawnShapes.js","import":"/engine/sim/particles/ParticleSpawnShapes.js","sourceHash":"48638ee6686e3bc43005b9b2758418d7ce0e7647143c67fe16da463bceda8501","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSpawnShapes.js#0003:spawnBoxCenter","exportIndex":3,"name":"spawnBoxCenter","kind":"function","signature":"spawnBoxCenter(center, halfExtents, surfaceOnly = false)","summary":"Spawn inside or on a box defined by center + half-extents"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSpawnShapes.md","moduleTitle":"sim/particles/ParticleSpawnShapes","source":"engine/sim/particles/ParticleSpawnShapes.js","import":"/engine/sim/particles/ParticleSpawnShapes.js","sourceHash":"48638ee6686e3bc43005b9b2758418d7ce0e7647143c67fe16da463bceda8501","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSpawnShapes.js#0004:spawnCylinder","exportIndex":4,"name":"spawnCylinder","kind":"function","signature":"spawnCylinder(center, axis, radius, height, surfaceOnly = false)","summary":"Spawn inside or on a cylinder"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSpawnShapes.md","moduleTitle":"sim/particles/ParticleSpawnShapes","source":"engine/sim/particles/ParticleSpawnShapes.js","import":"/engine/sim/particles/ParticleSpawnShapes.js","sourceHash":"48638ee6686e3bc43005b9b2758418d7ce0e7647143c67fe16da463bceda8501","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSpawnShapes.js#0005:spawnCone","exportIndex":5,"name":"spawnCone","kind":"function","signature":"spawnCone(apex, axis, angle, height, surfaceOnly = false)","summary":"Spawn inside or on a cone"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSpawnShapes.md","moduleTitle":"sim/particles/ParticleSpawnShapes","source":"engine/sim/particles/ParticleSpawnShapes.js","import":"/engine/sim/particles/ParticleSpawnShapes.js","sourceHash":"48638ee6686e3bc43005b9b2758418d7ce0e7647143c67fe16da463bceda8501","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSpawnShapes.js#0006:spawnRing","exportIndex":6,"name":"spawnRing","kind":"function","signature":"spawnRing(center, axis, radius, thickness = 0)","summary":"Spawn on a ring (circle in 3D space)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSpawnShapes.md","moduleTitle":"sim/particles/ParticleSpawnShapes","source":"engine/sim/particles/ParticleSpawnShapes.js","import":"/engine/sim/particles/ParticleSpawnShapes.js","sourceHash":"48638ee6686e3bc43005b9b2758418d7ce0e7647143c67fe16da463bceda8501","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSpawnShapes.js#0007:spawnTorus","exportIndex":7,"name":"spawnTorus","kind":"function","signature":"spawnTorus(center, axis, majorRadius, minorRadius, surfaceOnly = false)","summary":"Spawn inside or on a torus"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSpawnShapes.md","moduleTitle":"sim/particles/ParticleSpawnShapes","source":"engine/sim/particles/ParticleSpawnShapes.js","import":"/engine/sim/particles/ParticleSpawnShapes.js","sourceHash":"48638ee6686e3bc43005b9b2758418d7ce0e7647143c67fe16da463bceda8501","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSpawnShapes.js#0008:spawnLine","exportIndex":8,"name":"spawnLine","kind":"function","signature":"spawnLine(a, b, thickness = 0)","summary":"Spawn along a line segment"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSpawnShapes.md","moduleTitle":"sim/particles/ParticleSpawnShapes","source":"engine/sim/particles/ParticleSpawnShapes.js","import":"/engine/sim/particles/ParticleSpawnShapes.js","sourceHash":"48638ee6686e3bc43005b9b2758418d7ce0e7647143c67fe16da463bceda8501","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSpawnShapes.js#0009:spawnDisc","exportIndex":9,"name":"spawnDisc","kind":"function","signature":"spawnDisc(center, normal, radius, innerRadius = 0)","summary":"Spawn on a disc (filled circle in 3D space)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSpawnShapes.md","moduleTitle":"sim/particles/ParticleSpawnShapes","source":"engine/sim/particles/ParticleSpawnShapes.js","import":"/engine/sim/particles/ParticleSpawnShapes.js","sourceHash":"48638ee6686e3bc43005b9b2758418d7ce0e7647143c67fe16da463bceda8501","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSpawnShapes.js#0010:spawnGrid","exportIndex":10,"name":"spawnGrid","kind":"function","signature":"spawnGrid(origin, axisU, axisV, countU, countV, index, jitter = 0)","summary":"Spawn at grid positions (deterministic placement, good for walls/floors of particles)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSpawnShapes.md","moduleTitle":"sim/particles/ParticleSpawnShapes","source":"engine/sim/particles/ParticleSpawnShapes.js","import":"/engine/sim/particles/ParticleSpawnShapes.js","sourceHash":"48638ee6686e3bc43005b9b2758418d7ce0e7647143c67fe16da463bceda8501","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSpawnShapes.js#0011:spawnFromShape","exportIndex":11,"name":"spawnFromShape","kind":"function","signature":"spawnFromShape(shape, emitterPos, index = 0)","summary":"Spawn a particle using a shape configuration object"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSpawnShapes.md","moduleTitle":"sim/particles/ParticleSpawnShapes","source":"engine/sim/particles/ParticleSpawnShapes.js","import":"/engine/sim/particles/ParticleSpawnShapes.js","sourceHash":"48638ee6686e3bc43005b9b2758418d7ce0e7647143c67fe16da463bceda8501","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSpawnShapes.js#0012:velocityFromNormal","exportIndex":12,"name":"velocityFromNormal","kind":"function","signature":"velocityFromNormal(normal, speed, spread = 0.2)","summary":"Generate initial velocity from spawn shape result"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSplineFollow.md","moduleTitle":"sim/particles/ParticleSplineFollow","source":"engine/sim/particles/ParticleSplineFollow.js","import":"/engine/sim/particles/ParticleSplineFollow.js","sourceHash":"355820138465f1bfbe55001c16910f385d08a088ce7f37356b43181a0b93c6f3","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleSplineFollow.js","title":"sim/particles/ParticleSplineFollow","summary":"ParticleSplineFollow.js - Spline/Path Following (GAP 28) GPU compute shader that steers particles along bezier or catmull-rom spline paths. Each particle tracks its progress (t parameter) along the curve and applies a steering force toward the next point on the path. Supports: - Cubic Bezier paths (4 control points per segment) - Catmull-Rom splines (N control points, smooth interpolation) - Per-particle speed along path - Spread: particles can deviate from path center by a configurable radius - Looping and ping-pong modes Control points are uploaded as a storage buffer (max 64 points). Each particle stores its path progress in thermalData.w (repurposed when not using thermal system) or a dedicated progress buffer. Usage: const spline = createSplineFollowSystem(device, maxParticles); setSplineControlPoints(spline, device, points); initSplineFollowBindGroups(spline, device, positionBuffer, velocityBuffer); executeSplineFollow(spline, device, particleCount, dt);","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSplineFollow.md","moduleTitle":"sim/particles/ParticleSplineFollow","source":"engine/sim/particles/ParticleSplineFollow.js","import":"/engine/sim/particles/ParticleSplineFollow.js","sourceHash":"355820138465f1bfbe55001c16910f385d08a088ce7f37356b43181a0b93c6f3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSplineFollow.js#0000:createSplineFollowSystem","exportIndex":0,"name":"createSplineFollowSystem","kind":"function","signature":"createSplineFollowSystem(device, maxParticles)","summary":"Create the spline follow system."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSplineFollow.md","moduleTitle":"sim/particles/ParticleSplineFollow","source":"engine/sim/particles/ParticleSplineFollow.js","import":"/engine/sim/particles/ParticleSplineFollow.js","sourceHash":"355820138465f1bfbe55001c16910f385d08a088ce7f37356b43181a0b93c6f3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSplineFollow.js#0001:setSplineControlPoints","exportIndex":1,"name":"setSplineControlPoints","kind":"function","signature":"setSplineControlPoints(system, device, points)","summary":"Upload control points (array of [x, y, z])."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSplineFollow.md","moduleTitle":"sim/particles/ParticleSplineFollow","source":"engine/sim/particles/ParticleSplineFollow.js","import":"/engine/sim/particles/ParticleSplineFollow.js","sourceHash":"355820138465f1bfbe55001c16910f385d08a088ce7f37356b43181a0b93c6f3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSplineFollow.js#0002:initSplineFollowBindGroups","exportIndex":2,"name":"initSplineFollowBindGroups","kind":"function","signature":"initSplineFollowBindGroups(system, device, positionBuffer, velocityBuffer)","summary":"Initialize bind groups."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSplineFollow.md","moduleTitle":"sim/particles/ParticleSplineFollow","source":"engine/sim/particles/ParticleSplineFollow.js","import":"/engine/sim/particles/ParticleSplineFollow.js","sourceHash":"355820138465f1bfbe55001c16910f385d08a088ce7f37356b43181a0b93c6f3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSplineFollow.js#0003:setSplineFollowParams","exportIndex":3,"name":"setSplineFollowParams","kind":"function","signature":"setSplineFollowParams(system, params)","summary":"Update spline follow parameters."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSplineFollow.md","moduleTitle":"sim/particles/ParticleSplineFollow","source":"engine/sim/particles/ParticleSplineFollow.js","import":"/engine/sim/particles/ParticleSplineFollow.js","sourceHash":"355820138465f1bfbe55001c16910f385d08a088ce7f37356b43181a0b93c6f3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSplineFollow.js#0004:executeSplineFollow","exportIndex":4,"name":"executeSplineFollow","kind":"function","signature":"executeSplineFollow(system, device, particleCount, dt)","summary":"Execute the spline follow compute pass."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSplineFollow.md","moduleTitle":"sim/particles/ParticleSplineFollow","source":"engine/sim/particles/ParticleSplineFollow.js","import":"/engine/sim/particles/ParticleSplineFollow.js","sourceHash":"355820138465f1bfbe55001c16910f385d08a088ce7f37356b43181a0b93c6f3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSplineFollow.js#0005:destroySplineFollowSystem","exportIndex":5,"name":"destroySplineFollowSystem","kind":"function","signature":"destroySplineFollowSystem(system)","summary":"Destroy the system."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSplitting.md","moduleTitle":"sim/particles/ParticleSplitting","source":"engine/sim/particles/ParticleSplitting.js","import":"/engine/sim/particles/ParticleSplitting.js","sourceHash":"14404283683d59eff768665af3ad1f1c11fdbb56521d6919971c8a84cde96918","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleSplitting.js","title":"sim/particles/ParticleSplitting","summary":"ParticleSplitting.js - Adaptive Particle Refinement for Fluid When water stretches thin (low SPH density, high velocity, few neighbors), particles split into smaller child particles. When many small particles cluster in a dense area, they merge back. This is how water naturally breaks apart into spray/droplets and reforms. GPU compute shader scans liquid particles, identifies split candidates, and uses atomic counters to claim dead particle slots for children. Split trigger: density < threshold AND speed > threshold Merge trigger: two particles within close range, both small, low relative velocity Mass conservation: Split: parent shrinks to 0.7× size, child spawns at 0.7× size (2 × 0.7³ ≈ 0.686 volume — slight loss acceptable for stability) Merge: surviving particle grows by merged particle's volume^(1/3) Usage: const split = createSplittingSystem(device, maxParticles); initSplittingBindGroups(split, device, posBuffer, velBuffer, thermalBuffer, metaBuffer, sphDensityBuffer); executeSplitting(split, device, particleCount, dt);","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSplitting.md","moduleTitle":"sim/particles/ParticleSplitting","source":"engine/sim/particles/ParticleSplitting.js","import":"/engine/sim/particles/ParticleSplitting.js","sourceHash":"14404283683d59eff768665af3ad1f1c11fdbb56521d6919971c8a84cde96918","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSplitting.js#0000:createSplittingSystem","exportIndex":0,"name":"createSplittingSystem","kind":"function","signature":"createSplittingSystem(device, maxParticles)","summary":"Create the splitting system."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSplitting.md","moduleTitle":"sim/particles/ParticleSplitting","source":"engine/sim/particles/ParticleSplitting.js","import":"/engine/sim/particles/ParticleSplitting.js","sourceHash":"14404283683d59eff768665af3ad1f1c11fdbb56521d6919971c8a84cde96918","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSplitting.js#0001:initSplittingBindGroups","exportIndex":1,"name":"initSplittingBindGroups","kind":"function","signature":"initSplittingBindGroups(system, device, positionBuffer, velocityBuffer, thermalBuffer, metaBuffer, sphDensityBuffer)","summary":"Initialize bind groups."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSplitting.md","moduleTitle":"sim/particles/ParticleSplitting","source":"engine/sim/particles/ParticleSplitting.js","import":"/engine/sim/particles/ParticleSplitting.js","sourceHash":"14404283683d59eff768665af3ad1f1c11fdbb56521d6919971c8a84cde96918","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSplitting.js#0002:executeSplitting","exportIndex":2,"name":"executeSplitting","kind":"function","signature":"executeSplitting(system, device, particleCount, dt)","summary":"Execute the splitting compute pass."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSplitting.md","moduleTitle":"sim/particles/ParticleSplitting","source":"engine/sim/particles/ParticleSplitting.js","import":"/engine/sim/particles/ParticleSplitting.js","sourceHash":"14404283683d59eff768665af3ad1f1c11fdbb56521d6919971c8a84cde96918","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSplitting.js#0003:setSplittingParams","exportIndex":3,"name":"setSplittingParams","kind":"function","signature":"setSplittingParams(system, config)","summary":"Update splitting parameters at runtime."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSplitting.md","moduleTitle":"sim/particles/ParticleSplitting","source":"engine/sim/particles/ParticleSplitting.js","import":"/engine/sim/particles/ParticleSplitting.js","sourceHash":"14404283683d59eff768665af3ad1f1c11fdbb56521d6919971c8a84cde96918","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSplitting.js#0004:destroySplittingSystem","exportIndex":4,"name":"destroySplittingSystem","kind":"function","signature":"destroySplittingSystem(system)","summary":"Destroy splitting system."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSurfaceProjection.md","moduleTitle":"sim/particles/ParticleSurfaceProjection","source":"engine/sim/particles/ParticleSurfaceProjection.js","import":"/engine/sim/particles/ParticleSurfaceProjection.js","sourceHash":"02b2a2e45688347809af333f95a35273c63b9203699426bd18ad9736994d6b2a","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleSurfaceProjection.js","title":"sim/particles/ParticleSurfaceProjection","summary":"ParticleSurfaceProjection.js - Surface Projection / Conform (GAP 29) GPU compute shader that projects particles onto shape surfaces. Particles are snapped or attracted to the nearest point on a surface, enabling effects like particles crawling along walls, flowing over terrain, or conforming to mesh silhouettes. Supports analytical shapes (sphere, box, plane, cylinder) on GPU. For arbitrary meshes, uses a signed distance field (SDF) with gradient descent to find the nearest surface point. Matches PopcornFX CParticleEvolver_Projection. Usage: const proj = createSurfaceProjectionSystem(device, maxParticles); addProjectionSurface(proj, { type: 'sphere', center: [0,0,0], radius: 5 }); initProjectionBindGroups(proj, device, positionBuffer, velocityBuffer); executeSurfaceProjection(proj, device, particleCount, dt);","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSurfaceProjection.md","moduleTitle":"sim/particles/ParticleSurfaceProjection","source":"engine/sim/particles/ParticleSurfaceProjection.js","import":"/engine/sim/particles/ParticleSurfaceProjection.js","sourceHash":"02b2a2e45688347809af333f95a35273c63b9203699426bd18ad9736994d6b2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSurfaceProjection.js#0000:createSurfaceProjectionSystem","exportIndex":0,"name":"createSurfaceProjectionSystem","kind":"function","signature":"createSurfaceProjectionSystem(device, maxParticles)","summary":"Create the surface projection system."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSurfaceProjection.md","moduleTitle":"sim/particles/ParticleSurfaceProjection","source":"engine/sim/particles/ParticleSurfaceProjection.js","import":"/engine/sim/particles/ParticleSurfaceProjection.js","sourceHash":"02b2a2e45688347809af333f95a35273c63b9203699426bd18ad9736994d6b2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSurfaceProjection.js#0001:addProjectionSurface","exportIndex":1,"name":"addProjectionSurface","kind":"function","signature":"addProjectionSurface(system, surface)","summary":"Add a projection surface."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSurfaceProjection.md","moduleTitle":"sim/particles/ParticleSurfaceProjection","source":"engine/sim/particles/ParticleSurfaceProjection.js","import":"/engine/sim/particles/ParticleSurfaceProjection.js","sourceHash":"02b2a2e45688347809af333f95a35273c63b9203699426bd18ad9736994d6b2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSurfaceProjection.js#0002:initProjectionBindGroups","exportIndex":2,"name":"initProjectionBindGroups","kind":"function","signature":"initProjectionBindGroups(system, device, positionBuffer, velocityBuffer)","summary":"Initialize bind groups."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSurfaceProjection.md","moduleTitle":"sim/particles/ParticleSurfaceProjection","source":"engine/sim/particles/ParticleSurfaceProjection.js","import":"/engine/sim/particles/ParticleSurfaceProjection.js","sourceHash":"02b2a2e45688347809af333f95a35273c63b9203699426bd18ad9736994d6b2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSurfaceProjection.js#0003:executeSurfaceProjection","exportIndex":3,"name":"executeSurfaceProjection","kind":"function","signature":"executeSurfaceProjection(system, device, particleCount, dt)","summary":"Execute the surface projection compute pass."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSurfaceProjection.md","moduleTitle":"sim/particles/ParticleSurfaceProjection","source":"engine/sim/particles/ParticleSurfaceProjection.js","import":"/engine/sim/particles/ParticleSurfaceProjection.js","sourceHash":"02b2a2e45688347809af333f95a35273c63b9203699426bd18ad9736994d6b2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSurfaceProjection.js#0004:clearProjectionSurfaces","exportIndex":4,"name":"clearProjectionSurfaces","kind":"function","signature":"clearProjectionSurfaces(system)","summary":"Clear all surfaces."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleSurfaceProjection.md","moduleTitle":"sim/particles/ParticleSurfaceProjection","source":"engine/sim/particles/ParticleSurfaceProjection.js","import":"/engine/sim/particles/ParticleSurfaceProjection.js","sourceHash":"02b2a2e45688347809af333f95a35273c63b9203699426bd18ad9736994d6b2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleSurfaceProjection.js#0005:destroySurfaceProjectionSystem","exportIndex":5,"name":"destroySurfaceProjectionSystem","kind":"function","signature":"destroySurfaceProjectionSystem(system)","summary":"Destroy the system."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleTextureAtlas.md","moduleTitle":"sim/particles/ParticleTextureAtlas","source":"engine/sim/particles/ParticleTextureAtlas.js","import":"/engine/sim/particles/ParticleTextureAtlas.js","sourceHash":"2bdef5a5390df8ee67baefd4d4dd35169c3cb549ba238a41497d10ee0ff210ee","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleTextureAtlas.js","title":"sim/particles/ParticleTextureAtlas","summary":"Create texture atlas configuration","exportCount":11}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleTextureAtlas.md","moduleTitle":"sim/particles/ParticleTextureAtlas","source":"engine/sim/particles/ParticleTextureAtlas.js","import":"/engine/sim/particles/ParticleTextureAtlas.js","sourceHash":"2bdef5a5390df8ee67baefd4d4dd35169c3cb549ba238a41497d10ee0ff210ee","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleTextureAtlas.js#0000:createAtlasConfig","exportIndex":0,"name":"createAtlasConfig","kind":"function","signature":"createAtlasConfig(options = {})","summary":"Create texture atlas configuration"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleTextureAtlas.md","moduleTitle":"sim/particles/ParticleTextureAtlas","source":"engine/sim/particles/ParticleTextureAtlas.js","import":"/engine/sim/particles/ParticleTextureAtlas.js","sourceHash":"2bdef5a5390df8ee67baefd4d4dd35169c3cb549ba238a41497d10ee0ff210ee","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleTextureAtlas.js#0001:createTextureAtlasSystem","exportIndex":1,"name":"createTextureAtlasSystem","kind":"function","signature":"createTextureAtlasSystem(device, maxParticles, config = {})","summary":"Create texture atlas system"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleTextureAtlas.md","moduleTitle":"sim/particles/ParticleTextureAtlas","source":"engine/sim/particles/ParticleTextureAtlas.js","import":"/engine/sim/particles/ParticleTextureAtlas.js","sourceHash":"2bdef5a5390df8ee67baefd4d4dd35169c3cb549ba238a41497d10ee0ff210ee","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleTextureAtlas.js#0002:loadAtlasTexture","exportIndex":2,"name":"loadAtlasTexture","kind":"function","signature":"async loadAtlasTexture(atlasSystem, device, imageUrl)","summary":"Load texture atlas from image"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleTextureAtlas.md","moduleTitle":"sim/particles/ParticleTextureAtlas","source":"engine/sim/particles/ParticleTextureAtlas.js","import":"/engine/sim/particles/ParticleTextureAtlas.js","sourceHash":"2bdef5a5390df8ee67baefd4d4dd35169c3cb549ba238a41497d10ee0ff210ee","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleTextureAtlas.js#0003:createProceduralAtlas","exportIndex":3,"name":"createProceduralAtlas","kind":"function","signature":"createProceduralAtlas(atlasSystem, device, options = {})","summary":"Create procedural atlas texture (for testing)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleTextureAtlas.md","moduleTitle":"sim/particles/ParticleTextureAtlas","source":"engine/sim/particles/ParticleTextureAtlas.js","import":"/engine/sim/particles/ParticleTextureAtlas.js","sourceHash":"2bdef5a5390df8ee67baefd4d4dd35169c3cb549ba238a41497d10ee0ff210ee","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleTextureAtlas.js#0004:initAtlasBindGroup","exportIndex":4,"name":"initAtlasBindGroup","kind":"function","signature":"initAtlasBindGroup(atlasSystem, device, positionsBuffer, velocitiesBuffer)","summary":"Initialize sprite assignment bind group"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleTextureAtlas.md","moduleTitle":"sim/particles/ParticleTextureAtlas","source":"engine/sim/particles/ParticleTextureAtlas.js","import":"/engine/sim/particles/ParticleTextureAtlas.js","sourceHash":"2bdef5a5390df8ee67baefd4d4dd35169c3cb549ba238a41497d10ee0ff210ee","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleTextureAtlas.js#0005:assignSpritesGPU","exportIndex":5,"name":"assignSpritesGPU","kind":"function","signature":"assignSpritesGPU(atlasSystem, device, particleCount, time)","summary":"Assign sprites to particles via GPU"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleTextureAtlas.md","moduleTitle":"sim/particles/ParticleTextureAtlas","source":"engine/sim/particles/ParticleTextureAtlas.js","import":"/engine/sim/particles/ParticleTextureAtlas.js","sourceHash":"2bdef5a5390df8ee67baefd4d4dd35169c3cb549ba238a41497d10ee0ff210ee","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleTextureAtlas.js#0006:getAtlasUniforms","exportIndex":6,"name":"getAtlasUniforms","kind":"function","signature":"getAtlasUniforms(atlasSystem, time)","summary":"Get atlas uniforms for rendering"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleTextureAtlas.md","moduleTitle":"sim/particles/ParticleTextureAtlas","source":"engine/sim/particles/ParticleTextureAtlas.js","import":"/engine/sim/particles/ParticleTextureAtlas.js","sourceHash":"2bdef5a5390df8ee67baefd4d4dd35169c3cb549ba238a41497d10ee0ff210ee","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleTextureAtlas.js#0007:setAssignmentMode","exportIndex":7,"name":"setAssignmentMode","kind":"function","signature":"setAssignmentMode(atlasSystem, mode)","summary":"Set sprite assignment mode"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleTextureAtlas.md","moduleTitle":"sim/particles/ParticleTextureAtlas","source":"engine/sim/particles/ParticleTextureAtlas.js","import":"/engine/sim/particles/ParticleTextureAtlas.js","sourceHash":"2bdef5a5390df8ee67baefd4d4dd35169c3cb549ba238a41497d10ee0ff210ee","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleTextureAtlas.js#0008:destroyTextureAtlasSystem","exportIndex":8,"name":"destroyTextureAtlasSystem","kind":"function","signature":"destroyTextureAtlasSystem(atlasSystem)","summary":"Destroy texture atlas system"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleTextureAtlas.md","moduleTitle":"sim/particles/ParticleTextureAtlas","source":"engine/sim/particles/ParticleTextureAtlas.js","import":"/engine/sim/particles/ParticleTextureAtlas.js","sourceHash":"2bdef5a5390df8ee67baefd4d4dd35169c3cb549ba238a41497d10ee0ff210ee","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleTextureAtlas.js#0009:TEXTURE_ATLAS_TYPES","exportIndex":9,"name":"TEXTURE_ATLAS_TYPES","kind":"constant","signature":"TEXTURE_ATLAS_TYPES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleTextureAtlas.md","moduleTitle":"sim/particles/ParticleTextureAtlas","source":"engine/sim/particles/ParticleTextureAtlas.js","import":"/engine/sim/particles/ParticleTextureAtlas.js","sourceHash":"2bdef5a5390df8ee67baefd4d4dd35169c3cb549ba238a41497d10ee0ff210ee","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleTextureAtlas.js#0010:TEXTURE_ATLAS_FUNCTIONS","exportIndex":10,"name":"TEXTURE_ATLAS_FUNCTIONS","kind":"constant","signature":"TEXTURE_ATLAS_FUNCTIONS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleVectorField.md","moduleTitle":"sim/particles/ParticleVectorField","source":"engine/sim/particles/ParticleVectorField.js","import":"/engine/sim/particles/ParticleVectorField.js","sourceHash":"724488039996cad3d586630fc26f6f56840492979eac51f0c94454b302b77673","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticleVectorField.js","title":"sim/particles/ParticleVectorField","summary":"Create a filterable 3D vector-field texture compatible with linear sampling.","exportCount":8}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleVectorField.md","moduleTitle":"sim/particles/ParticleVectorField","source":"engine/sim/particles/ParticleVectorField.js","import":"/engine/sim/particles/ParticleVectorField.js","sourceHash":"724488039996cad3d586630fc26f6f56840492979eac51f0c94454b302b77673","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleVectorField.js#0000:createVectorFieldTexture","exportIndex":0,"name":"createVectorFieldTexture","kind":"function","signature":"createVectorFieldTexture(device, resolution, label = 'VectorField.texture')","summary":"Create a filterable 3D vector-field texture compatible with linear sampling."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleVectorField.md","moduleTitle":"sim/particles/ParticleVectorField","source":"engine/sim/particles/ParticleVectorField.js","import":"/engine/sim/particles/ParticleVectorField.js","sourceHash":"724488039996cad3d586630fc26f6f56840492979eac51f0c94454b302b77673","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleVectorField.js#0001:createVectorFieldSystem","exportIndex":1,"name":"createVectorFieldSystem","kind":"function","signature":"createVectorFieldSystem(device, options = {})","summary":"Create a vector field system."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleVectorField.md","moduleTitle":"sim/particles/ParticleVectorField","source":"engine/sim/particles/ParticleVectorField.js","import":"/engine/sim/particles/ParticleVectorField.js","sourceHash":"724488039996cad3d586630fc26f6f56840492979eac51f0c94454b302b77673","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleVectorField.js#0002:loadVectorFieldFromData","exportIndex":2,"name":"loadVectorFieldFromData","kind":"function","signature":"loadVectorFieldFromData(system, data, size)","summary":"Load raw velocity data into the vector field."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleVectorField.md","moduleTitle":"sim/particles/ParticleVectorField","source":"engine/sim/particles/ParticleVectorField.js","import":"/engine/sim/particles/ParticleVectorField.js","sourceHash":"724488039996cad3d586630fc26f6f56840492979eac51f0c94454b302b77673","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleVectorField.js#0003:generateProceduralVectorField","exportIndex":3,"name":"generateProceduralVectorField","kind":"function","signature":"generateProceduralVectorField(system, type = 'tornado')","summary":"Generate a procedural vector field."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleVectorField.md","moduleTitle":"sim/particles/ParticleVectorField","source":"engine/sim/particles/ParticleVectorField.js","import":"/engine/sim/particles/ParticleVectorField.js","sourceHash":"724488039996cad3d586630fc26f6f56840492979eac51f0c94454b302b77673","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleVectorField.js#0004:setVectorFieldParams","exportIndex":4,"name":"setVectorFieldParams","kind":"function","signature":"setVectorFieldParams(system, params = {})","summary":"Update vector field parameters."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleVectorField.md","moduleTitle":"sim/particles/ParticleVectorField","source":"engine/sim/particles/ParticleVectorField.js","import":"/engine/sim/particles/ParticleVectorField.js","sourceHash":"724488039996cad3d586630fc26f6f56840492979eac51f0c94454b302b77673","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleVectorField.js#0005:parseFGA","exportIndex":5,"name":"parseFGA","kind":"function","signature":"parseFGA(fgaText)","summary":"Parse FGA format (FluidNinja/Houdini vector field export). FGA is a simple text format: header lines then XYZ velocity per voxel."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleVectorField.md","moduleTitle":"sim/particles/ParticleVectorField","source":"engine/sim/particles/ParticleVectorField.js","import":"/engine/sim/particles/ParticleVectorField.js","sourceHash":"724488039996cad3d586630fc26f6f56840492979eac51f0c94454b302b77673","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleVectorField.js#0006:destroyVectorFieldSystem","exportIndex":6,"name":"destroyVectorFieldSystem","kind":"function","signature":"destroyVectorFieldSystem(system)","summary":"Destroy the vector field system."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticleVectorField.md","moduleTitle":"sim/particles/ParticleVectorField","source":"engine/sim/particles/ParticleVectorField.js","import":"/engine/sim/particles/ParticleVectorField.js","sourceHash":"724488039996cad3d586630fc26f6f56840492979eac51f0c94454b302b77673","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticleVectorField.js#0007:PARTICLE_VECTOR_FIELD_TEXTURE_FORMAT","exportIndex":7,"name":"PARTICLE_VECTOR_FIELD_TEXTURE_FORMAT","kind":"constant","signature":"PARTICLE_VECTOR_FIELD_TEXTURE_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticlesStateRegistry.md","moduleTitle":"sim/particles/ParticlesStateRegistry","source":"engine/sim/particles/ParticlesStateRegistry.js","import":"/engine/sim/particles/ParticlesStateRegistry.js","sourceHash":"046469a146ada821d18d120ff7b67265352ac702d04b34a0a4ba78731c7ca0ac","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/ParticlesStateRegistry.js","title":"sim/particles/ParticlesStateRegistry","summary":"","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticlesStateRegistry.md","moduleTitle":"sim/particles/ParticlesStateRegistry","source":"engine/sim/particles/ParticlesStateRegistry.js","import":"/engine/sim/particles/ParticlesStateRegistry.js","sourceHash":"046469a146ada821d18d120ff7b67265352ac702d04b34a0a4ba78731c7ca0ac","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticlesStateRegistry.js#0000:setActiveParticlesState","exportIndex":0,"name":"setActiveParticlesState","kind":"function","signature":"setActiveParticlesState(particlesState)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticlesStateRegistry.md","moduleTitle":"sim/particles/ParticlesStateRegistry","source":"engine/sim/particles/ParticlesStateRegistry.js","import":"/engine/sim/particles/ParticlesStateRegistry.js","sourceHash":"046469a146ada821d18d120ff7b67265352ac702d04b34a0a4ba78731c7ca0ac","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticlesStateRegistry.js#0001:getActiveParticlesState","exportIndex":1,"name":"getActiveParticlesState","kind":"function","signature":"getActiveParticlesState()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/ParticlesStateRegistry.md","moduleTitle":"sim/particles/ParticlesStateRegistry","source":"engine/sim/particles/ParticlesStateRegistry.js","import":"/engine/sim/particles/ParticlesStateRegistry.js","sourceHash":"046469a146ada821d18d120ff7b67265352ac702d04b34a0a4ba78731c7ca0ac","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/ParticlesStateRegistry.js#0002:clearActiveParticlesState","exportIndex":2,"name":"clearActiveParticlesState","kind":"function","signature":"clearActiveParticlesState()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/RopeMaterial.md","moduleTitle":"sim/particles/RopeMaterial","source":"engine/sim/particles/RopeMaterial.js","import":"/engine/sim/particles/RopeMaterial.js","sourceHash":"e4a7f9dce6243ee6d6d31186469fa11301c4646e11dcbb6a14a5764d18f76713","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/RopeMaterial.js","title":"sim/particles/RopeMaterial","summary":"RopeMaterial.js — Thermal & interaction properties for rope/chain fiber materials. Extends the visual-only FIBER_MATERIALS from RopeSchema with physics properties needed for particle↔rope interaction: flammability, moisture absorption, thermal conductivity, burn/break temperatures, mass modifiers. EVERY material (including steel and chain) participates in interactions — metal softens and breaks at high enough temperatures, organic materials burn, all materials conduct heat along the chain. Thresholds differ per material. Interaction types by substance: - Fire/lava/plasma → heat transfer → softening → burning/melting → chain split - Water/blood/honey → moisture absorption → heavier → sag → wet stiffness change - Ice/snow → cooling → stiffening → freeze-brittle - Acid → corrosion → integrity loss → chain split - Sparks/debris → minor heat transfer","exportCount":8}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/RopeMaterial.md","moduleTitle":"sim/particles/RopeMaterial","source":"engine/sim/particles/RopeMaterial.js","import":"/engine/sim/particles/RopeMaterial.js","sourceHash":"e4a7f9dce6243ee6d6d31186469fa11301c4646e11dcbb6a14a5764d18f76713","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/RopeMaterial.js#0000:getSubstanceInteraction","exportIndex":0,"name":"getSubstanceInteraction","kind":"function","signature":"getSubstanceInteraction(substance)","summary":"Map particle substance to interaction type and intensity. Returns null if the substance doesn't interact with rope."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/RopeMaterial.md","moduleTitle":"sim/particles/RopeMaterial","source":"engine/sim/particles/RopeMaterial.js","import":"/engine/sim/particles/RopeMaterial.js","sourceHash":"e4a7f9dce6243ee6d6d31186469fa11301c4646e11dcbb6a14a5764d18f76713","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/RopeMaterial.js#0001:createRopeNodeState","exportIndex":1,"name":"createRopeNodeState","kind":"function","signature":"createRopeNodeState(nodeCount, ambientTemp = 293)","summary":"Create per-node interaction state for a rope."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/RopeMaterial.md","moduleTitle":"sim/particles/RopeMaterial","source":"engine/sim/particles/RopeMaterial.js","import":"/engine/sim/particles/RopeMaterial.js","sourceHash":"e4a7f9dce6243ee6d6d31186469fa11301c4646e11dcbb6a14a5764d18f76713","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/RopeMaterial.js#0002:getRopeInteractionMaterial","exportIndex":2,"name":"getRopeInteractionMaterial","kind":"function","signature":"getRopeInteractionMaterial(fiberMaterial)","summary":"Get the interaction material for a fiber material name. Falls back to hemp if unknown."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/RopeMaterial.md","moduleTitle":"sim/particles/RopeMaterial","source":"engine/sim/particles/RopeMaterial.js","import":"/engine/sim/particles/RopeMaterial.js","sourceHash":"e4a7f9dce6243ee6d6d31186469fa11301c4646e11dcbb6a14a5764d18f76713","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/RopeMaterial.js#0003:ROPE_INTERACTION_MATERIALS","exportIndex":3,"name":"ROPE_INTERACTION_MATERIALS","kind":"constant","signature":"ROPE_INTERACTION_MATERIALS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/RopeMaterial.md","moduleTitle":"sim/particles/RopeMaterial","source":"engine/sim/particles/RopeMaterial.js","import":"/engine/sim/particles/RopeMaterial.js","sourceHash":"e4a7f9dce6243ee6d6d31186469fa11301c4646e11dcbb6a14a5764d18f76713","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/RopeMaterial.js#0004:INTERACTION_HEAT","exportIndex":4,"name":"INTERACTION_HEAT","kind":"constant","signature":"INTERACTION_HEAT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/RopeMaterial.md","moduleTitle":"sim/particles/RopeMaterial","source":"engine/sim/particles/RopeMaterial.js","import":"/engine/sim/particles/RopeMaterial.js","sourceHash":"e4a7f9dce6243ee6d6d31186469fa11301c4646e11dcbb6a14a5764d18f76713","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/RopeMaterial.js#0005:INTERACTION_MOISTURE","exportIndex":5,"name":"INTERACTION_MOISTURE","kind":"constant","signature":"INTERACTION_MOISTURE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/RopeMaterial.md","moduleTitle":"sim/particles/RopeMaterial","source":"engine/sim/particles/RopeMaterial.js","import":"/engine/sim/particles/RopeMaterial.js","sourceHash":"e4a7f9dce6243ee6d6d31186469fa11301c4646e11dcbb6a14a5764d18f76713","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/RopeMaterial.js#0006:INTERACTION_COOL","exportIndex":6,"name":"INTERACTION_COOL","kind":"constant","signature":"INTERACTION_COOL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/RopeMaterial.md","moduleTitle":"sim/particles/RopeMaterial","source":"engine/sim/particles/RopeMaterial.js","import":"/engine/sim/particles/RopeMaterial.js","sourceHash":"e4a7f9dce6243ee6d6d31186469fa11301c4646e11dcbb6a14a5764d18f76713","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/RopeMaterial.js#0007:INTERACTION_CORRODE","exportIndex":7,"name":"INTERACTION_CORRODE","kind":"constant","signature":"INTERACTION_CORRODE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/RopeParticleInteraction.md","moduleTitle":"sim/particles/RopeParticleInteraction","source":"engine/sim/particles/RopeParticleInteraction.js","import":"/engine/sim/particles/RopeParticleInteraction.js","sourceHash":"5bc3ecd4a0717be3c499261d61c1cec26b34ad7b5c10e9a11407a8a3781d9818","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/RopeParticleInteraction.js","title":"sim/particles/RopeParticleInteraction","summary":"RopeParticleInteraction.js — CPU-side per-tick bridge between free particles and ropes. Runs each simulation frame and performs: 1. Spatial proximity query: find free particles near each rope node 2. Heat transfer: fire/lava/plasma → rope heats up; ice/snow → rope cools 3. Moisture absorption: water/blood/honey near rope → rope gets heavier, sags 4. Corrosion: acid particles eat away rope integrity 5. Thermal conduction: heat spreads along the rope between adjacent nodes 6. Burning: when node temperature exceeds burn threshold → ignite, char, break 7. Chain splitting: when integrity reaches 0 → break constraint → 2 separate chains Works with ALL materials including steel/chain — metal softens and eventually breaks at high enough temperatures (lava, plasma). Thresholds differ per material. This is a CPU-side system because it needs to: - Make topology decisions (break constraints, split chains) - Spawn new emitters (fire/smoke on burning rope) - Modify per-constraint mass values (moisture → heavier)","exportCount":8}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/RopeParticleInteraction.md","moduleTitle":"sim/particles/RopeParticleInteraction","source":"engine/sim/particles/RopeParticleInteraction.js","import":"/engine/sim/particles/RopeParticleInteraction.js","sourceHash":"5bc3ecd4a0717be3c499261d61c1cec26b34ad7b5c10e9a11407a8a3781d9818","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/RopeParticleInteraction.js#0000:createRopeInteractionSystem","exportIndex":0,"name":"createRopeInteractionSystem","kind":"function","signature":"createRopeInteractionSystem()","summary":"Create the rope↔particle interaction system. Attach to the particle world and call stepRopeInteraction() each tick."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/RopeParticleInteraction.md","moduleTitle":"sim/particles/RopeParticleInteraction","source":"engine/sim/particles/RopeParticleInteraction.js","import":"/engine/sim/particles/RopeParticleInteraction.js","sourceHash":"5bc3ecd4a0717be3c499261d61c1cec26b34ad7b5c10e9a11407a8a3781d9818","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/RopeParticleInteraction.js#0001:registerRopeForInteraction","exportIndex":1,"name":"registerRopeForInteraction","kind":"function","signature":"registerRopeForInteraction(system, entityId, ropeMetadata, fiberMaterial, ambientTemp = 293)","summary":"Register a rope for interaction tracking. Call this after createGPURope."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/RopeParticleInteraction.md","moduleTitle":"sim/particles/RopeParticleInteraction","source":"engine/sim/particles/RopeParticleInteraction.js","import":"/engine/sim/particles/RopeParticleInteraction.js","sourceHash":"5bc3ecd4a0717be3c499261d61c1cec26b34ad7b5c10e9a11407a8a3781d9818","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/RopeParticleInteraction.js#0002:unregisterRopeInteraction","exportIndex":2,"name":"unregisterRopeInteraction","kind":"function","signature":"unregisterRopeInteraction(system, entityId)","summary":"Unregister a rope (cleanup)."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/RopeParticleInteraction.md","moduleTitle":"sim/particles/RopeParticleInteraction","source":"engine/sim/particles/RopeParticleInteraction.js","import":"/engine/sim/particles/RopeParticleInteraction.js","sourceHash":"5bc3ecd4a0717be3c499261d61c1cec26b34ad7b5c10e9a11407a8a3781d9818","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/RopeParticleInteraction.js#0003:stepRopeInteraction","exportIndex":3,"name":"stepRopeInteraction","kind":"function","signature":"stepRopeInteraction(system, world, positionsCPU, thermalCPU, metaCPU, dt, callbacks = {})","summary":"Step the rope↔particle interaction system."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/RopeParticleInteraction.md","moduleTitle":"sim/particles/RopeParticleInteraction","source":"engine/sim/particles/RopeParticleInteraction.js","import":"/engine/sim/particles/RopeParticleInteraction.js","sourceHash":"5bc3ecd4a0717be3c499261d61c1cec26b34ad7b5c10e9a11407a8a3781d9818","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/RopeParticleInteraction.js#0004:getRopeInteractionState","exportIndex":4,"name":"getRopeInteractionState","kind":"function","signature":"getRopeInteractionState(system, entityId)","summary":"Get the current interaction state for a rope."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/RopeParticleInteraction.md","moduleTitle":"sim/particles/RopeParticleInteraction","source":"engine/sim/particles/RopeParticleInteraction.js","import":"/engine/sim/particles/RopeParticleInteraction.js","sourceHash":"5bc3ecd4a0717be3c499261d61c1cec26b34ad7b5c10e9a11407a8a3781d9818","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/RopeParticleInteraction.js#0005:getRopeAverageTemperature","exportIndex":5,"name":"getRopeAverageTemperature","kind":"function","signature":"getRopeAverageTemperature(system, entityId)","summary":"Get average temperature of a rope."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/RopeParticleInteraction.md","moduleTitle":"sim/particles/RopeParticleInteraction","source":"engine/sim/particles/RopeParticleInteraction.js","import":"/engine/sim/particles/RopeParticleInteraction.js","sourceHash":"5bc3ecd4a0717be3c499261d61c1cec26b34ad7b5c10e9a11407a8a3781d9818","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/RopeParticleInteraction.js#0006:getRopeAverageMoisture","exportIndex":6,"name":"getRopeAverageMoisture","kind":"function","signature":"getRopeAverageMoisture(system, entityId)","summary":"Get average moisture saturation of a rope."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/RopeParticleInteraction.md","moduleTitle":"sim/particles/RopeParticleInteraction","source":"engine/sim/particles/RopeParticleInteraction.js","import":"/engine/sim/particles/RopeParticleInteraction.js","sourceHash":"5bc3ecd4a0717be3c499261d61c1cec26b34ad7b5c10e9a11407a8a3781d9818","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/RopeParticleInteraction.js#0007:destroyRopeInteractionSystem","exportIndex":7,"name":"destroyRopeInteractionSystem","kind":"function","signature":"destroyRopeInteractionSystem(system)","summary":"Destroy the interaction system and release all state."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/RopePhysics.md","moduleTitle":"sim/particles/RopePhysics","source":"engine/sim/particles/RopePhysics.js","import":"/engine/sim/particles/RopePhysics.js","sourceHash":"02dccea675fe37457f09c27cefdfe669f186a4b9b5070e8319430bb3e23c5908","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/RopePhysics.js","title":"sim/particles/RopePhysics","summary":"RopePhysics.js - Advanced Rope Physics System GPU-accelerated rope physics with: - Tension/slack simulation - Attachment constraints (fixed points, entity attachments) - Rope cutting and rejoining - Stretching/compression limits - Wind/external force response","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/RopePhysics.md","moduleTitle":"sim/particles/RopePhysics","source":"engine/sim/particles/RopePhysics.js","import":"/engine/sim/particles/RopePhysics.js","sourceHash":"02dccea675fe37457f09c27cefdfe669f186a4b9b5070e8319430bb3e23c5908","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/RopePhysics.js#0000:RopePhysicsSystem","exportIndex":0,"name":"RopePhysicsSystem","kind":"class","signature":"class RopePhysicsSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/RopePhysics.md","moduleTitle":"sim/particles/RopePhysics","source":"engine/sim/particles/RopePhysics.js","import":"/engine/sim/particles/RopePhysics.js","sourceHash":"02dccea675fe37457f09c27cefdfe669f186a4b9b5070e8319430bb3e23c5908","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/RopePhysics.js#0001:createRopePhysicsSystem","exportIndex":1,"name":"createRopePhysicsSystem","kind":"function","signature":"createRopePhysicsSystem(device, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/SnapshotWorker.md","moduleTitle":"sim/particles/SnapshotWorker","source":"engine/sim/particles/SnapshotWorker.js","import":"/engine/sim/particles/SnapshotWorker.js","sourceHash":"a22d8fc06e9de8a48bb7db99411b558c76de1533145805cd5908cbf651b5488d","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/SnapshotWorker.js","title":"sim/particles/SnapshotWorker","summary":"SnapshotWorker.js - Offload heavy snapshot compression to a separate thread This worker handles: - Delta calculation between frames - Quantization of position/velocity data - Compression of frame data - Memory management for snapshot history The main thread only does GPU readback (can't be done in workers) and sends the raw data here for processing.","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/SpellEffectComposer.md","moduleTitle":"sim/particles/SpellEffectComposer","source":"engine/sim/particles/SpellEffectComposer.js","import":"/engine/sim/particles/SpellEffectComposer.js","sourceHash":"d23e8bf23c22aabb8b6b0273c1b3cb25be54e0814e7d2ce7eec7060f2276674b","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/SpellEffectComposer.js","title":"sim/particles/SpellEffectComposer","summary":"SpellEffectComposer.js — Auto-blending multi-layer VFX composition ==================== ARCHITECTURE (for future AI/developers) ==================== Industry VFX standard (Niagara, Unity VFX Graph, PopcornFX, Houdini POP): A spell/effect is composed of MULTIPLE visual layers, each serving a distinct role: 1. CORE    — Main volumetric body (SDF particles, standard blend) 2. GLOW    — Larger, softer aura around core (bright color, low alpha, additive feel) 3. ACCENT  — Small bright particles: embers, snowflakes, sparkles, droplets 4. WISPS   — Secondary volumetric layer: smoke tendrils, mist, steam 5. RING    — Expanding shockwave/halo (burst spawn, grows outward) 6. TRAILS  — Ribbon trails following particles 7. LIGHT   — Dynamic point light matching effect color This system auto-generates these layers from an element mix. Given elements like [fire(0.8), ice(0.6)], it produces an array of emitter configs — one per visual layer. Each config is a complete Emitter component that can be passed to editor.createEntity(). USAGE: import { composeSpellEffect } from './SpellEffectComposer.js'; const layers = composeSpellEffect(activeElements, baseEmitterConfig); // layers = [{ name, layerType, emitterConfig }, ...] // Each layer.emitterConfig is a full Emitter component for createEntity The \"Create Spell From This\" button in EmitterInspectorCard.js calls this, then EditorParticles.createComposedSpellEffect() creates child emitter entities.","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/SpellEffectComposer.md","moduleTitle":"sim/particles/SpellEffectComposer","source":"engine/sim/particles/SpellEffectComposer.js","import":"/engine/sim/particles/SpellEffectComposer.js","sourceHash":"d23e8bf23c22aabb8b6b0273c1b3cb25be54e0814e7d2ce7eec7060f2276674b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/SpellEffectComposer.js#0000:composeSpellEffect","exportIndex":0,"name":"composeSpellEffect","kind":"function","signature":"composeSpellEffect(elements, baseConfig = {}, options = {})","summary":"Compose a multi-layer spell effect from an element mix."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/SpellEffectComposer.md","moduleTitle":"sim/particles/SpellEffectComposer","source":"engine/sim/particles/SpellEffectComposer.js","import":"/engine/sim/particles/SpellEffectComposer.js","sourceHash":"d23e8bf23c22aabb8b6b0273c1b3cb25be54e0814e7d2ce7eec7060f2276674b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/SpellEffectComposer.js#0001:getAvailableRecipes","exportIndex":1,"name":"getAvailableRecipes","kind":"function","signature":"getAvailableRecipes()","summary":"Get available element recipe IDs."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/SpellEffectComposer.md","moduleTitle":"sim/particles/SpellEffectComposer","source":"engine/sim/particles/SpellEffectComposer.js","import":"/engine/sim/particles/SpellEffectComposer.js","sourceHash":"d23e8bf23c22aabb8b6b0273c1b3cb25be54e0814e7d2ce7eec7060f2276674b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/SpellEffectComposer.js#0002:COMBINATION_RECIPES","exportIndex":2,"name":"COMBINATION_RECIPES","kind":"re-export","signature":"COMBINATION_RECIPES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/SpellEffectComposer.md","moduleTitle":"sim/particles/SpellEffectComposer","source":"engine/sim/particles/SpellEffectComposer.js","import":"/engine/sim/particles/SpellEffectComposer.js","sourceHash":"d23e8bf23c22aabb8b6b0273c1b3cb25be54e0814e7d2ce7eec7060f2276674b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/SpellEffectComposer.js#0003:ELEMENT_RECIPES","exportIndex":3,"name":"ELEMENT_RECIPES","kind":"re-export","signature":"ELEMENT_RECIPES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/SpellEffectComposer.md","moduleTitle":"sim/particles/SpellEffectComposer","source":"engine/sim/particles/SpellEffectComposer.js","import":"/engine/sim/particles/SpellEffectComposer.js","sourceHash":"d23e8bf23c22aabb8b6b0273c1b3cb25be54e0814e7d2ce7eec7060f2276674b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/SpellEffectComposer.js#0004:LAYER_TEMPLATES","exportIndex":4,"name":"LAYER_TEMPLATES","kind":"re-export","signature":"LAYER_TEMPLATES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/data/index.md","moduleTitle":"sim/particles/data/index","source":"engine/sim/particles/data/index.js","import":"/engine/sim/particles/data/index.js","sourceHash":"dac103de92c71848adee777df4c465b162d10b1b067064cffd9e1e827265e07d","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/data/index.js","title":"sim/particles/data/index","summary":"data/index.js — Re-exports for schema, config, attributes, and compression.","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/effects/index.md","moduleTitle":"sim/particles/effects/index","source":"engine/sim/particles/effects/index.js","import":"/engine/sim/particles/effects/index.js","sourceHash":"686751b9865818e092dbc5af4f0de8fbb0c9750f418972d5000418ad67737c6e","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/effects/index.js","title":"sim/particles/effects/index","summary":"effects/index.js — Re-exports for visual effects, trails, and lines.","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/emitters/index.md","moduleTitle":"sim/particles/emitters/index","source":"engine/sim/particles/emitters/index.js","import":"/engine/sim/particles/emitters/index.js","sourceHash":"f9d56b0c0ccee18b4869368025467e90aec01bd2dec826218c56b5b29e84ef7a","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/emitters/index.js","title":"sim/particles/emitters/index","summary":"emitters/index.js — Organized re-exports for emitter creation, presets, and lifecycle. New code should import from here. Original files remain in parent directory.","exportCount":16}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/emitters/index.md","moduleTitle":"sim/particles/emitters/index","source":"engine/sim/particles/emitters/index.js","import":"/engine/sim/particles/emitters/index.js","sourceHash":"f9d56b0c0ccee18b4869368025467e90aec01bd2dec826218c56b5b29e84ef7a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/emitters/index.js#0000:EMITTER_PRESETS","exportIndex":0,"name":"EMITTER_PRESETS","kind":"re-export","signature":"EMITTER_PRESETS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/emitters/index.md","moduleTitle":"sim/particles/emitters/index","source":"engine/sim/particles/emitters/index.js","import":"/engine/sim/particles/emitters/index.js","sourceHash":"f9d56b0c0ccee18b4869368025467e90aec01bd2dec826218c56b5b29e84ef7a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/emitters/index.js#0001:EMITTER_TYPES","exportIndex":1,"name":"EMITTER_TYPES","kind":"re-export","signature":"EMITTER_TYPES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/emitters/index.md","moduleTitle":"sim/particles/emitters/index","source":"engine/sim/particles/emitters/index.js","import":"/engine/sim/particles/emitters/index.js","sourceHash":"f9d56b0c0ccee18b4869368025467e90aec01bd2dec826218c56b5b29e84ef7a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/emitters/index.js#0002:EmitterLOD","exportIndex":2,"name":"EmitterLOD","kind":"re-export","signature":"EmitterLOD","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/emitters/index.md","moduleTitle":"sim/particles/emitters/index","source":"engine/sim/particles/emitters/index.js","import":"/engine/sim/particles/emitters/index.js","sourceHash":"f9d56b0c0ccee18b4869368025467e90aec01bd2dec826218c56b5b29e84ef7a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/emitters/index.js#0003:STATES","exportIndex":3,"name":"STATES","kind":"re-export","signature":"STATES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/emitters/index.md","moduleTitle":"sim/particles/emitters/index","source":"engine/sim/particles/emitters/index.js","import":"/engine/sim/particles/emitters/index.js","sourceHash":"f9d56b0c0ccee18b4869368025467e90aec01bd2dec826218c56b5b29e84ef7a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/emitters/index.js#0004:SUBSTANCE_PRESETS","exportIndex":4,"name":"SUBSTANCE_PRESETS","kind":"re-export","signature":"SUBSTANCE_PRESETS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/emitters/index.md","moduleTitle":"sim/particles/emitters/index","source":"engine/sim/particles/emitters/index.js","import":"/engine/sim/particles/emitters/index.js","sourceHash":"f9d56b0c0ccee18b4869368025467e90aec01bd2dec826218c56b5b29e84ef7a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/emitters/index.js#0005:applyPreset","exportIndex":5,"name":"applyPreset","kind":"re-export","signature":"applyPreset","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/emitters/index.md","moduleTitle":"sim/particles/emitters/index","source":"engine/sim/particles/emitters/index.js","import":"/engine/sim/particles/emitters/index.js","sourceHash":"f9d56b0c0ccee18b4869368025467e90aec01bd2dec826218c56b5b29e84ef7a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/emitters/index.js#0006:createEmitter","exportIndex":6,"name":"createEmitter","kind":"re-export","signature":"createEmitter","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/emitters/index.md","moduleTitle":"sim/particles/emitters/index","source":"engine/sim/particles/emitters/index.js","import":"/engine/sim/particles/emitters/index.js","sourceHash":"f9d56b0c0ccee18b4869368025467e90aec01bd2dec826218c56b5b29e84ef7a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/emitters/index.js#0007:derivePhysicsProfile","exportIndex":7,"name":"derivePhysicsProfile","kind":"re-export","signature":"derivePhysicsProfile","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/emitters/index.md","moduleTitle":"sim/particles/emitters/index","source":"engine/sim/particles/emitters/index.js","import":"/engine/sim/particles/emitters/index.js","sourceHash":"f9d56b0c0ccee18b4869368025467e90aec01bd2dec826218c56b5b29e84ef7a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/emitters/index.js#0008:deriveState","exportIndex":8,"name":"deriveState","kind":"re-export","signature":"deriveState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/emitters/index.md","moduleTitle":"sim/particles/emitters/index","source":"engine/sim/particles/emitters/index.js","import":"/engine/sim/particles/emitters/index.js","sourceHash":"f9d56b0c0ccee18b4869368025467e90aec01bd2dec826218c56b5b29e84ef7a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/emitters/index.js#0009:destroyEmitter","exportIndex":9,"name":"destroyEmitter","kind":"re-export","signature":"destroyEmitter","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/emitters/index.md","moduleTitle":"sim/particles/emitters/index","source":"engine/sim/particles/emitters/index.js","import":"/engine/sim/particles/emitters/index.js","sourceHash":"f9d56b0c0ccee18b4869368025467e90aec01bd2dec826218c56b5b29e84ef7a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/emitters/index.js#0010:getEmitterPreset","exportIndex":10,"name":"getEmitterPreset","kind":"re-export","signature":"getEmitterPreset","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/emitters/index.md","moduleTitle":"sim/particles/emitters/index","source":"engine/sim/particles/emitters/index.js","import":"/engine/sim/particles/emitters/index.js","sourceHash":"f9d56b0c0ccee18b4869368025467e90aec01bd2dec826218c56b5b29e84ef7a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/emitters/index.js#0011:getEmitterTypes","exportIndex":11,"name":"getEmitterTypes","kind":"re-export","signature":"getEmitterTypes","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/emitters/index.md","moduleTitle":"sim/particles/emitters/index","source":"engine/sim/particles/emitters/index.js","import":"/engine/sim/particles/emitters/index.js","sourceHash":"f9d56b0c0ccee18b4869368025467e90aec01bd2dec826218c56b5b29e84ef7a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/emitters/index.js#0012:getStates","exportIndex":12,"name":"getStates","kind":"re-export","signature":"getStates","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/emitters/index.md","moduleTitle":"sim/particles/emitters/index","source":"engine/sim/particles/emitters/index.js","import":"/engine/sim/particles/emitters/index.js","sourceHash":"f9d56b0c0ccee18b4869368025467e90aec01bd2dec826218c56b5b29e84ef7a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/emitters/index.js#0013:hasLiquidEmitters","exportIndex":13,"name":"hasLiquidEmitters","kind":"re-export","signature":"hasLiquidEmitters","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/emitters/index.md","moduleTitle":"sim/particles/emitters/index","source":"engine/sim/particles/emitters/index.js","import":"/engine/sim/particles/emitters/index.js","sourceHash":"f9d56b0c0ccee18b4869368025467e90aec01bd2dec826218c56b5b29e84ef7a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/emitters/index.js#0014:resolveSubstance","exportIndex":14,"name":"resolveSubstance","kind":"re-export","signature":"resolveSubstance","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/emitters/index.md","moduleTitle":"sim/particles/emitters/index","source":"engine/sim/particles/emitters/index.js","import":"/engine/sim/particles/emitters/index.js","sourceHash":"f9d56b0c0ccee18b4869368025467e90aec01bd2dec826218c56b5b29e84ef7a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/emitters/index.js#0015:syncWorldSystemsToEmitters","exportIndex":15,"name":"syncWorldSystemsToEmitters","kind":"re-export","signature":"syncWorldSystemsToEmitters","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/events/index.md","moduleTitle":"sim/particles/events/index","source":"engine/sim/particles/events/index.js","import":"/engine/sim/particles/events/index.js","sourceHash":"8facf82059b09aa134c80f224ba011f04433b2dbe7b1525d6a10c721c509c68c","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/events/index.js","title":"sim/particles/events/index","summary":"events/index.js — Re-exports for event system, audio, and decals.","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/mesh/index.md","moduleTitle":"sim/particles/mesh/index","source":"engine/sim/particles/mesh/index.js","import":"/engine/sim/particles/mesh/index.js","sourceHash":"35fc111566ebe0dcde93231c2072894f921cd99f6fc6ed0d4f265b7a29f523e2","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/mesh/index.js","title":"sim/particles/mesh/index","summary":"mesh/index.js — Re-exports for mesh-to-particle conversion and instancing.","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/physics/collision/index.md","moduleTitle":"sim/particles/physics/collision/index","source":"engine/sim/particles/physics/collision/index.js","import":"/engine/sim/particles/physics/collision/index.js","sourceHash":"9334650ad747542a8db65b1d5ccc9db49ba00a093558eab1168a4fff74e65e6b","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/physics/collision/index.js","title":"sim/particles/physics/collision/index","summary":"physics/collision/index.js — Re-exports for collision systems.","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/physics/compute/index.md","moduleTitle":"sim/particles/physics/compute/index","source":"engine/sim/particles/physics/compute/index.js","import":"/engine/sim/particles/physics/compute/index.js","sourceHash":"f84a923a38fa8fa233f39c935423fad0dc00ae2ecccc3c53b199e6633384bc6a","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/physics/compute/index.js","title":"sim/particles/physics/compute/index","summary":"physics/compute/index.js — Re-exports for compute utilities.","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/physics/constraints/index.md","moduleTitle":"sim/particles/physics/constraints/index","source":"engine/sim/particles/physics/constraints/index.js","import":"/engine/sim/particles/physics/constraints/index.js","sourceHash":"22e1a4f97e6727e5819276182973552a917afe5659606f0eb4a833e58975f14c","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/physics/constraints/index.js","title":"sim/particles/physics/constraints/index","summary":"physics/constraints/index.js — Re-exports for constraint solvers.","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/physics/fluids/index.md","moduleTitle":"sim/particles/physics/fluids/index","source":"engine/sim/particles/physics/fluids/index.js","import":"/engine/sim/particles/physics/fluids/index.js","sourceHash":"851ac9784314f532cfb7abf44c9bc0ef81ee53933b4130742fec555cb7c78259","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/physics/fluids/index.js","title":"sim/particles/physics/fluids/index","summary":"physics/fluids/index.js — Re-exports for fluid solvers.","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/physics/forces/index.md","moduleTitle":"sim/particles/physics/forces/index","source":"engine/sim/particles/physics/forces/index.js","import":"/engine/sim/particles/physics/forces/index.js","sourceHash":"b2f552296d0a004b55d3487f1df06e482590a5f4b092f2368e90bb634a83f67c","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/physics/forces/index.js","title":"sim/particles/physics/forces/index","summary":"physics/forces/index.js — Re-exports for force systems.","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/physics/index.md","moduleTitle":"sim/particles/physics/index","source":"engine/sim/particles/physics/index.js","import":"/engine/sim/particles/physics/index.js","sourceHash":"8baccd3837667c1d09ad0a25015f85bc98ff53ee3a8b1fd42033ea6d9deb1ffd","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/physics/index.js","title":"sim/particles/physics/index","summary":"physics/index.js — Organized re-exports for GPU physics compute solvers. New code should import from here. Original files remain in parent directory.","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/rope/index.md","moduleTitle":"sim/particles/rope/index","source":"engine/sim/particles/rope/index.js","import":"/engine/sim/particles/rope/index.js","sourceHash":"3192d3bbab47767d8605680d1b06377d7c55d8c7ac6dadaba6aab8291a20cc82","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/rope/index.js","title":"sim/particles/rope/index","summary":"rope/index.js — Re-exports for rope/wire constraint systems.","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/snapshots/index.md","moduleTitle":"sim/particles/snapshots/index","source":"engine/sim/particles/snapshots/index.js","import":"/engine/sim/particles/snapshots/index.js","sourceHash":"5a2fda2c36842026aa0fa6b2c7097f6de3a3c5ca99ac8f4e1169c2ba56730545","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/snapshots/index.js","title":"sim/particles/snapshots/index","summary":"snapshots/index.js — Re-exports for snapshot, playback, and async management.","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SandboxMaterialCatalog.md","moduleTitle":"sim/particles/substances/SandboxMaterialCatalog","source":"engine/sim/particles/substances/SandboxMaterialCatalog.js","import":"/engine/sim/particles/substances/SandboxMaterialCatalog.js","sourceHash":"a16e62bbbe549969258b2edaff3a636c28abe87b73484c30a693fe9c53e98c5a","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/SandboxMaterialCatalog.js","title":"sim/particles/substances/SandboxMaterialCatalog","summary":"Engine-owned material facade for dense cellular sandboxes. Atomic numbers, particle material IDs, and sandbox cell codes are separate identities.  A sandbox code is only a compact runtime index.  The catalog keeps the canonical references beside it so the Editor, demos, and future authoring tools can share labels and properties without conflating those identity spaces. The generated behaviour is qualitative and mesoscale.  It does not claim that a grid cell is an atom or that periodic-table properties alone predict chemistry.  Only explicitly flagged reaction classes react in a solver.","exportCount":21}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SandboxMaterialCatalog.md","moduleTitle":"sim/particles/substances/SandboxMaterialCatalog","source":"engine/sim/particles/substances/SandboxMaterialCatalog.js","import":"/engine/sim/particles/substances/SandboxMaterialCatalog.js","sourceHash":"a16e62bbbe549969258b2edaff3a636c28abe87b73484c30a693fe9c53e98c5a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SandboxMaterialCatalog.js#0000:createSandboxMaterialCatalog","exportIndex":0,"name":"createSandboxMaterialCatalog","kind":"function","signature":"createSandboxMaterialCatalog()","summary":"Build an immutable shared element/substance/object view for dense sandboxes."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SandboxMaterialCatalog.md","moduleTitle":"sim/particles/substances/SandboxMaterialCatalog","source":"engine/sim/particles/substances/SandboxMaterialCatalog.js","import":"/engine/sim/particles/substances/SandboxMaterialCatalog.js","sourceHash":"a16e62bbbe549969258b2edaff3a636c28abe87b73484c30a693fe9c53e98c5a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SandboxMaterialCatalog.js#0001:createSandboxSpeciesLut","exportIndex":1,"name":"createSandboxSpeciesLut","kind":"function","signature":"createSandboxSpeciesLut(catalog = createSandboxMaterialCatalog()","summary":"Compile the shared catalog into one vec4<u32> record per cell code."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SandboxMaterialCatalog.md","moduleTitle":"sim/particles/substances/SandboxMaterialCatalog","source":"engine/sim/particles/substances/SandboxMaterialCatalog.js","import":"/engine/sim/particles/substances/SandboxMaterialCatalog.js","sourceHash":"a16e62bbbe549969258b2edaff3a636c28abe87b73484c30a693fe9c53e98c5a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SandboxMaterialCatalog.js#0002:temperatureToSandboxBucket","exportIndex":2,"name":"temperatureToSandboxBucket","kind":"function","signature":"temperatureToSandboxBucket(temperatureK)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SandboxMaterialCatalog.md","moduleTitle":"sim/particles/substances/SandboxMaterialCatalog","source":"engine/sim/particles/substances/SandboxMaterialCatalog.js","import":"/engine/sim/particles/substances/SandboxMaterialCatalog.js","sourceHash":"a16e62bbbe549969258b2edaff3a636c28abe87b73484c30a693fe9c53e98c5a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SandboxMaterialCatalog.js#0003:sandboxBucketToTemperature","exportIndex":3,"name":"sandboxBucketToTemperature","kind":"function","signature":"sandboxBucketToTemperature(bucket)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SandboxMaterialCatalog.md","moduleTitle":"sim/particles/substances/SandboxMaterialCatalog","source":"engine/sim/particles/substances/SandboxMaterialCatalog.js","import":"/engine/sim/particles/substances/SandboxMaterialCatalog.js","sourceHash":"a16e62bbbe549969258b2edaff3a636c28abe87b73484c30a693fe9c53e98c5a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SandboxMaterialCatalog.js#0004:packSandboxCell","exportIndex":4,"name":"packSandboxCell","kind":"function","signature":"packSandboxCell(speciesCode, temperatureK = SANDBOX_REFERENCE_TEMPERATURE_K, life = 255, variant = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SandboxMaterialCatalog.md","moduleTitle":"sim/particles/substances/SandboxMaterialCatalog","source":"engine/sim/particles/substances/SandboxMaterialCatalog.js","import":"/engine/sim/particles/substances/SandboxMaterialCatalog.js","sourceHash":"a16e62bbbe549969258b2edaff3a636c28abe87b73484c30a693fe9c53e98c5a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SandboxMaterialCatalog.js#0005:unpackSandboxCell","exportIndex":5,"name":"unpackSandboxCell","kind":"function","signature":"unpackSandboxCell(cell)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SandboxMaterialCatalog.md","moduleTitle":"sim/particles/substances/SandboxMaterialCatalog","source":"engine/sim/particles/substances/SandboxMaterialCatalog.js","import":"/engine/sim/particles/substances/SandboxMaterialCatalog.js","sourceHash":"a16e62bbbe549969258b2edaff3a636c28abe87b73484c30a693fe9c53e98c5a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SandboxMaterialCatalog.js#0006:packSandboxObject","exportIndex":6,"name":"packSandboxObject","kind":"function","signature":"packSandboxObject(objectId, sourceSpeciesCode = 0, strength = 255, direction = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SandboxMaterialCatalog.md","moduleTitle":"sim/particles/substances/SandboxMaterialCatalog","source":"engine/sim/particles/substances/SandboxMaterialCatalog.js","import":"/engine/sim/particles/substances/SandboxMaterialCatalog.js","sourceHash":"a16e62bbbe549969258b2edaff3a636c28abe87b73484c30a693fe9c53e98c5a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SandboxMaterialCatalog.js#0007:unpackSandboxObject","exportIndex":7,"name":"unpackSandboxObject","kind":"function","signature":"unpackSandboxObject(objectWord)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SandboxMaterialCatalog.md","moduleTitle":"sim/particles/substances/SandboxMaterialCatalog","source":"engine/sim/particles/substances/SandboxMaterialCatalog.js","import":"/engine/sim/particles/substances/SandboxMaterialCatalog.js","sourceHash":"a16e62bbbe549969258b2edaff3a636c28abe87b73484c30a693fe9c53e98c5a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SandboxMaterialCatalog.js#0008:sandboxSpeciesIdForSubstance","exportIndex":8,"name":"sandboxSpeciesIdForSubstance","kind":"function","signature":"sandboxSpeciesIdForSubstance(materialId)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SandboxMaterialCatalog.md","moduleTitle":"sim/particles/substances/SandboxMaterialCatalog","source":"engine/sim/particles/substances/SandboxMaterialCatalog.js","import":"/engine/sim/particles/substances/SandboxMaterialCatalog.js","sourceHash":"a16e62bbbe549969258b2edaff3a636c28abe87b73484c30a693fe9c53e98c5a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SandboxMaterialCatalog.js#0009:validateSandboxMaterialCatalog","exportIndex":9,"name":"validateSandboxMaterialCatalog","kind":"function","signature":"validateSandboxMaterialCatalog(catalog)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SandboxMaterialCatalog.md","moduleTitle":"sim/particles/substances/SandboxMaterialCatalog","source":"engine/sim/particles/substances/SandboxMaterialCatalog.js","import":"/engine/sim/particles/substances/SandboxMaterialCatalog.js","sourceHash":"a16e62bbbe549969258b2edaff3a636c28abe87b73484c30a693fe9c53e98c5a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SandboxMaterialCatalog.js#0010:SANDBOX_REFERENCE_TEMPERATURE_K","exportIndex":10,"name":"SANDBOX_REFERENCE_TEMPERATURE_K","kind":"constant","signature":"SANDBOX_REFERENCE_TEMPERATURE_K","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SandboxMaterialCatalog.md","moduleTitle":"sim/particles/substances/SandboxMaterialCatalog","source":"engine/sim/particles/substances/SandboxMaterialCatalog.js","import":"/engine/sim/particles/substances/SandboxMaterialCatalog.js","sourceHash":"a16e62bbbe549969258b2edaff3a636c28abe87b73484c30a693fe9c53e98c5a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SandboxMaterialCatalog.js#0011:SANDBOX_TEMPERATURE_STEP_K","exportIndex":11,"name":"SANDBOX_TEMPERATURE_STEP_K","kind":"constant","signature":"SANDBOX_TEMPERATURE_STEP_K","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SandboxMaterialCatalog.md","moduleTitle":"sim/particles/substances/SandboxMaterialCatalog","source":"engine/sim/particles/substances/SandboxMaterialCatalog.js","import":"/engine/sim/particles/substances/SandboxMaterialCatalog.js","sourceHash":"a16e62bbbe549969258b2edaff3a636c28abe87b73484c30a693fe9c53e98c5a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SandboxMaterialCatalog.js#0012:SANDBOX_SPECIES_CAPACITY","exportIndex":12,"name":"SANDBOX_SPECIES_CAPACITY","kind":"constant","signature":"SANDBOX_SPECIES_CAPACITY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SandboxMaterialCatalog.md","moduleTitle":"sim/particles/substances/SandboxMaterialCatalog","source":"engine/sim/particles/substances/SandboxMaterialCatalog.js","import":"/engine/sim/particles/substances/SandboxMaterialCatalog.js","sourceHash":"a16e62bbbe549969258b2edaff3a636c28abe87b73484c30a693fe9c53e98c5a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SandboxMaterialCatalog.js#0013:SANDBOX_SUBSTANCE_CODE_BASE","exportIndex":13,"name":"SANDBOX_SUBSTANCE_CODE_BASE","kind":"constant","signature":"SANDBOX_SUBSTANCE_CODE_BASE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SandboxMaterialCatalog.md","moduleTitle":"sim/particles/substances/SandboxMaterialCatalog","source":"engine/sim/particles/substances/SandboxMaterialCatalog.js","import":"/engine/sim/particles/substances/SandboxMaterialCatalog.js","sourceHash":"a16e62bbbe549969258b2edaff3a636c28abe87b73484c30a693fe9c53e98c5a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SandboxMaterialCatalog.js#0014:SANDBOX_BEHAVIOR","exportIndex":14,"name":"SANDBOX_BEHAVIOR","kind":"constant","signature":"SANDBOX_BEHAVIOR","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SandboxMaterialCatalog.md","moduleTitle":"sim/particles/substances/SandboxMaterialCatalog","source":"engine/sim/particles/substances/SandboxMaterialCatalog.js","import":"/engine/sim/particles/substances/SandboxMaterialCatalog.js","sourceHash":"a16e62bbbe549969258b2edaff3a636c28abe87b73484c30a693fe9c53e98c5a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SandboxMaterialCatalog.js#0015:SANDBOX_PHASE","exportIndex":15,"name":"SANDBOX_PHASE","kind":"constant","signature":"SANDBOX_PHASE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SandboxMaterialCatalog.md","moduleTitle":"sim/particles/substances/SandboxMaterialCatalog","source":"engine/sim/particles/substances/SandboxMaterialCatalog.js","import":"/engine/sim/particles/substances/SandboxMaterialCatalog.js","sourceHash":"a16e62bbbe549969258b2edaff3a636c28abe87b73484c30a693fe9c53e98c5a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SandboxMaterialCatalog.js#0016:SANDBOX_FLAGS","exportIndex":16,"name":"SANDBOX_FLAGS","kind":"constant","signature":"SANDBOX_FLAGS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SandboxMaterialCatalog.md","moduleTitle":"sim/particles/substances/SandboxMaterialCatalog","source":"engine/sim/particles/substances/SandboxMaterialCatalog.js","import":"/engine/sim/particles/substances/SandboxMaterialCatalog.js","sourceHash":"a16e62bbbe549969258b2edaff3a636c28abe87b73484c30a693fe9c53e98c5a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SandboxMaterialCatalog.js#0017:SANDBOX_REACTION","exportIndex":17,"name":"SANDBOX_REACTION","kind":"constant","signature":"SANDBOX_REACTION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SandboxMaterialCatalog.md","moduleTitle":"sim/particles/substances/SandboxMaterialCatalog","source":"engine/sim/particles/substances/SandboxMaterialCatalog.js","import":"/engine/sim/particles/substances/SandboxMaterialCatalog.js","sourceHash":"a16e62bbbe549969258b2edaff3a636c28abe87b73484c30a693fe9c53e98c5a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SandboxMaterialCatalog.js#0018:SANDBOX_INTERACTION","exportIndex":18,"name":"SANDBOX_INTERACTION","kind":"constant","signature":"SANDBOX_INTERACTION","summary":"Pairwise interaction traits compiled into the high byte of LUT word 3."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SandboxMaterialCatalog.md","moduleTitle":"sim/particles/substances/SandboxMaterialCatalog","source":"engine/sim/particles/substances/SandboxMaterialCatalog.js","import":"/engine/sim/particles/substances/SandboxMaterialCatalog.js","sourceHash":"a16e62bbbe549969258b2edaff3a636c28abe87b73484c30a693fe9c53e98c5a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SandboxMaterialCatalog.js#0019:SANDBOX_OBJECT","exportIndex":19,"name":"SANDBOX_OBJECT","kind":"constant","signature":"SANDBOX_OBJECT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SandboxMaterialCatalog.md","moduleTitle":"sim/particles/substances/SandboxMaterialCatalog","source":"engine/sim/particles/substances/SandboxMaterialCatalog.js","import":"/engine/sim/particles/substances/SandboxMaterialCatalog.js","sourceHash":"a16e62bbbe549969258b2edaff3a636c28abe87b73484c30a693fe9c53e98c5a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SandboxMaterialCatalog.js#0020:SANDBOX_OBJECTS","exportIndex":20,"name":"SANDBOX_OBJECTS","kind":"constant","signature":"SANDBOX_OBJECTS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SubstanceMixer.md","moduleTitle":"sim/particles/substances/SubstanceMixer","source":"engine/sim/particles/substances/SubstanceMixer.js","import":"/engine/sim/particles/substances/SubstanceMixer.js","sourceHash":"335e479d1a54781412ebe1b944c0defc05afba93198fd8f287bc25518159b6a5","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/SubstanceMixer.js","title":"sim/particles/substances/SubstanceMixer","summary":"SubstanceMixer.js — Multi-substance blending for mixed emitters. When an emitter uses multiple elements (e.g. fire 0.8 + smoke 0.3), this module blends their substance properties into a single effective definition. Replaces scattered mixing logic in ParticleEmitterSystem.js (deriveTemperatureFromElements, deriveMaterialIndexFromElements, elementMixToEmitterConfig).","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SubstanceMixer.md","moduleTitle":"sim/particles/substances/SubstanceMixer","source":"engine/sim/particles/substances/SubstanceMixer.js","import":"/engine/sim/particles/substances/SubstanceMixer.js","sourceHash":"335e479d1a54781412ebe1b944c0defc05afba93198fd8f287bc25518159b6a5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SubstanceMixer.js#0000:mixSubstances","exportIndex":0,"name":"mixSubstances","kind":"function","signature":"mixSubstances(layers)","summary":"Mix multiple substances into a blended definition."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SubstanceMixer.md","moduleTitle":"sim/particles/substances/SubstanceMixer","source":"engine/sim/particles/substances/SubstanceMixer.js","import":"/engine/sim/particles/substances/SubstanceMixer.js","sourceHash":"335e479d1a54781412ebe1b944c0defc05afba93198fd8f287bc25518159b6a5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SubstanceMixer.js#0001:deriveFromElements","exportIndex":1,"name":"deriveFromElements","kind":"function","signature":"deriveFromElements(elementLayers)","summary":"Derive a substance approximation from element layers (used by emitter system). Maps element IDs to substance IDs and mixes them."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SubstanceRegistry.md","moduleTitle":"sim/particles/substances/SubstanceRegistry","source":"engine/sim/particles/substances/SubstanceRegistry.js","import":"/engine/sim/particles/substances/SubstanceRegistry.js","sourceHash":"b59f63f78599cb75cbfccbcafc18ad8cf15748051cf5c32791056356548ef23e","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/SubstanceRegistry.js","title":"sim/particles/substances/SubstanceRegistry","summary":"SubstanceRegistry.js — Central registry for all substance definitions. Provides a unified API to: - Register/unregister substance definitions - Look up substances by id, materialId, category, or tag - Derive physics profiles, phase state, thermal presets, SSFR tint, etc. Each substance is a plain object assembled from per-substance sub-files: { id, materialId, label, icon, category, tags, chemistry, thermal, physics, sph, visual, emitter, audio, decals, reactions, spell } Replaces scattered lookups across ParticleEmitterSystem, ParticleConstraints, ParticleReactionTable, EditorParticles, and ParticleElementRegistry.","exportCount":21}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SubstanceRegistry.md","moduleTitle":"sim/particles/substances/SubstanceRegistry","source":"engine/sim/particles/substances/SubstanceRegistry.js","import":"/engine/sim/particles/substances/SubstanceRegistry.js","sourceHash":"b59f63f78599cb75cbfccbcafc18ad8cf15748051cf5c32791056356548ef23e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SubstanceRegistry.js#0000:registerSubstance","exportIndex":0,"name":"registerSubstance","kind":"function","signature":"registerSubstance(def)","summary":"Register a substance definition. Overwrites if id already exists."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SubstanceRegistry.md","moduleTitle":"sim/particles/substances/SubstanceRegistry","source":"engine/sim/particles/substances/SubstanceRegistry.js","import":"/engine/sim/particles/substances/SubstanceRegistry.js","sourceHash":"b59f63f78599cb75cbfccbcafc18ad8cf15748051cf5c32791056356548ef23e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SubstanceRegistry.js#0001:unregisterSubstance","exportIndex":1,"name":"unregisterSubstance","kind":"function","signature":"unregisterSubstance(id)","summary":"Unregister a substance by id."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SubstanceRegistry.md","moduleTitle":"sim/particles/substances/SubstanceRegistry","source":"engine/sim/particles/substances/SubstanceRegistry.js","import":"/engine/sim/particles/substances/SubstanceRegistry.js","sourceHash":"b59f63f78599cb75cbfccbcafc18ad8cf15748051cf5c32791056356548ef23e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SubstanceRegistry.js#0002:getSubstance","exportIndex":2,"name":"getSubstance","kind":"function","signature":"getSubstance(id)","summary":"Get substance by id (e.g. 'water', 'lava', 'fire')."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SubstanceRegistry.md","moduleTitle":"sim/particles/substances/SubstanceRegistry","source":"engine/sim/particles/substances/SubstanceRegistry.js","import":"/engine/sim/particles/substances/SubstanceRegistry.js","sourceHash":"b59f63f78599cb75cbfccbcafc18ad8cf15748051cf5c32791056356548ef23e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SubstanceRegistry.js#0003:getSubstanceByMaterialId","exportIndex":3,"name":"getSubstanceByMaterialId","kind":"function","signature":"getSubstanceByMaterialId(matId)","summary":"Get substance by material ID number."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SubstanceRegistry.md","moduleTitle":"sim/particles/substances/SubstanceRegistry","source":"engine/sim/particles/substances/SubstanceRegistry.js","import":"/engine/sim/particles/substances/SubstanceRegistry.js","sourceHash":"b59f63f78599cb75cbfccbcafc18ad8cf15748051cf5c32791056356548ef23e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SubstanceRegistry.js#0004:getAllSubstances","exportIndex":4,"name":"getAllSubstances","kind":"function","signature":"getAllSubstances()","summary":"Get all registered substances."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SubstanceRegistry.md","moduleTitle":"sim/particles/substances/SubstanceRegistry","source":"engine/sim/particles/substances/SubstanceRegistry.js","import":"/engine/sim/particles/substances/SubstanceRegistry.js","sourceHash":"b59f63f78599cb75cbfccbcafc18ad8cf15748051cf5c32791056356548ef23e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SubstanceRegistry.js#0005:getSubstancesByCategory","exportIndex":5,"name":"getSubstancesByCategory","kind":"function","signature":"getSubstancesByCategory(category)","summary":"Get substances filtered by category."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SubstanceRegistry.md","moduleTitle":"sim/particles/substances/SubstanceRegistry","source":"engine/sim/particles/substances/SubstanceRegistry.js","import":"/engine/sim/particles/substances/SubstanceRegistry.js","sourceHash":"b59f63f78599cb75cbfccbcafc18ad8cf15748051cf5c32791056356548ef23e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SubstanceRegistry.js#0006:getSubstancesByTag","exportIndex":6,"name":"getSubstancesByTag","kind":"function","signature":"getSubstancesByTag(tag)","summary":"Get substances filtered by tag."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SubstanceRegistry.md","moduleTitle":"sim/particles/substances/SubstanceRegistry","source":"engine/sim/particles/substances/SubstanceRegistry.js","import":"/engine/sim/particles/substances/SubstanceRegistry.js","sourceHash":"b59f63f78599cb75cbfccbcafc18ad8cf15748051cf5c32791056356548ef23e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SubstanceRegistry.js#0007:getSubstanceIds","exportIndex":7,"name":"getSubstanceIds","kind":"function","signature":"getSubstanceIds()","summary":"Get substance IDs as an array."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SubstanceRegistry.md","moduleTitle":"sim/particles/substances/SubstanceRegistry","source":"engine/sim/particles/substances/SubstanceRegistry.js","import":"/engine/sim/particles/substances/SubstanceRegistry.js","sourceHash":"b59f63f78599cb75cbfccbcafc18ad8cf15748051cf5c32791056356548ef23e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SubstanceRegistry.js#0008:resolveSubstance","exportIndex":8,"name":"resolveSubstance","kind":"function","signature":"resolveSubstance(key)","summary":"Resolve a substance key (preset name, element symbol, compound) to a substance definition. Falls back to partial matching."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SubstanceRegistry.md","moduleTitle":"sim/particles/substances/SubstanceRegistry","source":"engine/sim/particles/substances/SubstanceRegistry.js","import":"/engine/sim/particles/substances/SubstanceRegistry.js","sourceHash":"b59f63f78599cb75cbfccbcafc18ad8cf15748051cf5c32791056356548ef23e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SubstanceRegistry.js#0009:deriveState","exportIndex":9,"name":"deriveState","kind":"function","signature":"deriveState(substanceId, temperature)","summary":"Derive the phase of matter for a substance at a given temperature."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SubstanceRegistry.md","moduleTitle":"sim/particles/substances/SubstanceRegistry","source":"engine/sim/particles/substances/SubstanceRegistry.js","import":"/engine/sim/particles/substances/SubstanceRegistry.js","sourceHash":"b59f63f78599cb75cbfccbcafc18ad8cf15748051cf5c32791056356548ef23e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SubstanceRegistry.js#0010:derivePhysicsProfile","exportIndex":10,"name":"derivePhysicsProfile","kind":"function","signature":"derivePhysicsProfile(substanceId, temperature)","summary":"Derive which physics systems to enable for a substance at a given temperature."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SubstanceRegistry.md","moduleTitle":"sim/particles/substances/SubstanceRegistry","source":"engine/sim/particles/substances/SubstanceRegistry.js","import":"/engine/sim/particles/substances/SubstanceRegistry.js","sourceHash":"b59f63f78599cb75cbfccbcafc18ad8cf15748051cf5c32791056356548ef23e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SubstanceRegistry.js#0011:getSSFRTint","exportIndex":11,"name":"getSSFRTint","kind":"function","signature":"getSSFRTint(substanceId)","summary":"Get SSFR tint for a substance."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SubstanceRegistry.md","moduleTitle":"sim/particles/substances/SubstanceRegistry","source":"engine/sim/particles/substances/SubstanceRegistry.js","import":"/engine/sim/particles/substances/SubstanceRegistry.js","sourceHash":"b59f63f78599cb75cbfccbcafc18ad8cf15748051cf5c32791056356548ef23e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SubstanceRegistry.js#0012:getThermalPreset","exportIndex":12,"name":"getThermalPreset","kind":"function","signature":"getThermalPreset(substanceId)","summary":"Get thermal preset for a substance."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SubstanceRegistry.md","moduleTitle":"sim/particles/substances/SubstanceRegistry","source":"engine/sim/particles/substances/SubstanceRegistry.js","import":"/engine/sim/particles/substances/SubstanceRegistry.js","sourceHash":"b59f63f78599cb75cbfccbcafc18ad8cf15748051cf5c32791056356548ef23e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SubstanceRegistry.js#0013:getSPHParams","exportIndex":13,"name":"getSPHParams","kind":"function","signature":"getSPHParams(substanceId)","summary":"Get SPH fluid parameters for a substance."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SubstanceRegistry.md","moduleTitle":"sim/particles/substances/SubstanceRegistry","source":"engine/sim/particles/substances/SubstanceRegistry.js","import":"/engine/sim/particles/substances/SubstanceRegistry.js","sourceHash":"b59f63f78599cb75cbfccbcafc18ad8cf15748051cf5c32791056356548ef23e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SubstanceRegistry.js#0014:getEmitterDefaults","exportIndex":14,"name":"getEmitterDefaults","kind":"function","signature":"getEmitterDefaults(substanceId)","summary":"Get emitter defaults for a substance."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SubstanceRegistry.md","moduleTitle":"sim/particles/substances/SubstanceRegistry","source":"engine/sim/particles/substances/SubstanceRegistry.js","import":"/engine/sim/particles/substances/SubstanceRegistry.js","sourceHash":"b59f63f78599cb75cbfccbcafc18ad8cf15748051cf5c32791056356548ef23e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SubstanceRegistry.js#0015:getAudioCues","exportIndex":15,"name":"getAudioCues","kind":"function","signature":"getAudioCues(substanceId)","summary":"Get audio cues for a substance."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SubstanceRegistry.md","moduleTitle":"sim/particles/substances/SubstanceRegistry","source":"engine/sim/particles/substances/SubstanceRegistry.js","import":"/engine/sim/particles/substances/SubstanceRegistry.js","sourceHash":"b59f63f78599cb75cbfccbcafc18ad8cf15748051cf5c32791056356548ef23e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SubstanceRegistry.js#0016:getReactions","exportIndex":16,"name":"getReactions","kind":"function","signature":"getReactions(substanceId)","summary":"Get reactions for a substance."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SubstanceRegistry.md","moduleTitle":"sim/particles/substances/SubstanceRegistry","source":"engine/sim/particles/substances/SubstanceRegistry.js","import":"/engine/sim/particles/substances/SubstanceRegistry.js","sourceHash":"b59f63f78599cb75cbfccbcafc18ad8cf15748051cf5c32791056356548ef23e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SubstanceRegistry.js#0017:getMaterialForSubstance","exportIndex":17,"name":"getMaterialForSubstance","kind":"function","signature":"getMaterialForSubstance(key)","summary":"Get material ID for a substance key (replaces SUBSTANCE_TO_MATERIAL lookup)."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SubstanceRegistry.md","moduleTitle":"sim/particles/substances/SubstanceRegistry","source":"engine/sim/particles/substances/SubstanceRegistry.js","import":"/engine/sim/particles/substances/SubstanceRegistry.js","sourceHash":"b59f63f78599cb75cbfccbcafc18ad8cf15748051cf5c32791056356548ef23e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SubstanceRegistry.js#0018:buildThermalPresets","exportIndex":18,"name":"buildThermalPresets","kind":"function","signature":"buildThermalPresets()","summary":"Build THERMAL_MATERIAL_PRESETS-compatible object from all registered substances. For backward compatibility with ParticleConstraints.js consumers."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SubstanceRegistry.md","moduleTitle":"sim/particles/substances/SubstanceRegistry","source":"engine/sim/particles/substances/SubstanceRegistry.js","import":"/engine/sim/particles/substances/SubstanceRegistry.js","sourceHash":"b59f63f78599cb75cbfccbcafc18ad8cf15748051cf5c32791056356548ef23e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SubstanceRegistry.js#0019:buildSubstanceToMaterial","exportIndex":19,"name":"buildSubstanceToMaterial","kind":"function","signature":"buildSubstanceToMaterial()","summary":"Build SUBSTANCE_TO_MATERIAL-compatible object from all registered substances. For backward compatibility with ParticleReactionTable.js consumers."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SubstanceRegistry.md","moduleTitle":"sim/particles/substances/SubstanceRegistry","source":"engine/sim/particles/substances/SubstanceRegistry.js","import":"/engine/sim/particles/substances/SubstanceRegistry.js","sourceHash":"b59f63f78599cb75cbfccbcafc18ad8cf15748051cf5c32791056356548ef23e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SubstanceRegistry.js#0020:getSubstanceCount","exportIndex":20,"name":"getSubstanceCount","kind":"function","signature":"getSubstanceCount()","summary":"Total number of registered substances."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SubstanceSchema.md","moduleTitle":"sim/particles/substances/SubstanceSchema","source":"engine/sim/particles/substances/SubstanceSchema.js","import":"/engine/sim/particles/substances/SubstanceSchema.js","sourceHash":"70a2bbf79772e3fdcca4f6220cb93a1699c1695c367881cbbaf721b8d707d626","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/SubstanceSchema.js","title":"sim/particles/substances/SubstanceSchema","summary":"SubstanceSchema.js — Shared constants and type definitions for the substance system. Single source of truth for: - Phase constants (PHASE_SOLID, PHASE_LIQUID, PHASE_GAS, PHASE_PLASMA) - Material ID enum (MATERIAL) - Reverse lookup helpers Replaces scattered definitions in ParticleConstraints.js and ParticleReactionTable.js. Those files re-export from here for backward compatibility.","exportCount":10}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SubstanceSchema.md","moduleTitle":"sim/particles/substances/SubstanceSchema","source":"engine/sim/particles/substances/SubstanceSchema.js","import":"/engine/sim/particles/substances/SubstanceSchema.js","sourceHash":"70a2bbf79772e3fdcca4f6220cb93a1699c1695c367881cbbaf721b8d707d626","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SubstanceSchema.js#0000:getPhaseName","exportIndex":0,"name":"getPhaseName","kind":"function","signature":"getPhaseName(phase)","summary":"Get phase name string from phase constant."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SubstanceSchema.md","moduleTitle":"sim/particles/substances/SubstanceSchema","source":"engine/sim/particles/substances/SubstanceSchema.js","import":"/engine/sim/particles/substances/SubstanceSchema.js","sourceHash":"70a2bbf79772e3fdcca4f6220cb93a1699c1695c367881cbbaf721b8d707d626","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SubstanceSchema.js#0001:getPhaseFromName","exportIndex":1,"name":"getPhaseFromName","kind":"function","signature":"getPhaseFromName(name)","summary":"Get phase constant from name string."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SubstanceSchema.md","moduleTitle":"sim/particles/substances/SubstanceSchema","source":"engine/sim/particles/substances/SubstanceSchema.js","import":"/engine/sim/particles/substances/SubstanceSchema.js","sourceHash":"70a2bbf79772e3fdcca4f6220cb93a1699c1695c367881cbbaf721b8d707d626","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SubstanceSchema.js#0002:getMaterialName","exportIndex":2,"name":"getMaterialName","kind":"function","signature":"getMaterialName(materialId)","summary":"Get material name from material ID."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SubstanceSchema.md","moduleTitle":"sim/particles/substances/SubstanceSchema","source":"engine/sim/particles/substances/SubstanceSchema.js","import":"/engine/sim/particles/substances/SubstanceSchema.js","sourceHash":"70a2bbf79772e3fdcca4f6220cb93a1699c1695c367881cbbaf721b8d707d626","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SubstanceSchema.js#0003:getMaterialId","exportIndex":3,"name":"getMaterialId","kind":"function","signature":"getMaterialId(name)","summary":"Get material ID from name string."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SubstanceSchema.md","moduleTitle":"sim/particles/substances/SubstanceSchema","source":"engine/sim/particles/substances/SubstanceSchema.js","import":"/engine/sim/particles/substances/SubstanceSchema.js","sourceHash":"70a2bbf79772e3fdcca4f6220cb93a1699c1695c367881cbbaf721b8d707d626","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SubstanceSchema.js#0004:PHASE_SOLID","exportIndex":4,"name":"PHASE_SOLID","kind":"constant","signature":"PHASE_SOLID","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SubstanceSchema.md","moduleTitle":"sim/particles/substances/SubstanceSchema","source":"engine/sim/particles/substances/SubstanceSchema.js","import":"/engine/sim/particles/substances/SubstanceSchema.js","sourceHash":"70a2bbf79772e3fdcca4f6220cb93a1699c1695c367881cbbaf721b8d707d626","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SubstanceSchema.js#0005:PHASE_LIQUID","exportIndex":5,"name":"PHASE_LIQUID","kind":"constant","signature":"PHASE_LIQUID","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SubstanceSchema.md","moduleTitle":"sim/particles/substances/SubstanceSchema","source":"engine/sim/particles/substances/SubstanceSchema.js","import":"/engine/sim/particles/substances/SubstanceSchema.js","sourceHash":"70a2bbf79772e3fdcca4f6220cb93a1699c1695c367881cbbaf721b8d707d626","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SubstanceSchema.js#0006:PHASE_GAS","exportIndex":6,"name":"PHASE_GAS","kind":"constant","signature":"PHASE_GAS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SubstanceSchema.md","moduleTitle":"sim/particles/substances/SubstanceSchema","source":"engine/sim/particles/substances/SubstanceSchema.js","import":"/engine/sim/particles/substances/SubstanceSchema.js","sourceHash":"70a2bbf79772e3fdcca4f6220cb93a1699c1695c367881cbbaf721b8d707d626","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SubstanceSchema.js#0007:PHASE_PLASMA","exportIndex":7,"name":"PHASE_PLASMA","kind":"constant","signature":"PHASE_PLASMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SubstanceSchema.md","moduleTitle":"sim/particles/substances/SubstanceSchema","source":"engine/sim/particles/substances/SubstanceSchema.js","import":"/engine/sim/particles/substances/SubstanceSchema.js","sourceHash":"70a2bbf79772e3fdcca4f6220cb93a1699c1695c367881cbbaf721b8d707d626","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SubstanceSchema.js#0008:PHASE_NAMES","exportIndex":8,"name":"PHASE_NAMES","kind":"constant","signature":"PHASE_NAMES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/SubstanceSchema.md","moduleTitle":"sim/particles/substances/SubstanceSchema","source":"engine/sim/particles/substances/SubstanceSchema.js","import":"/engine/sim/particles/substances/SubstanceSchema.js","sourceHash":"70a2bbf79772e3fdcca4f6220cb93a1699c1695c367881cbbaf721b8d707d626","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/SubstanceSchema.js#0009:MATERIAL","exportIndex":9,"name":"MATERIAL","kind":"constant","signature":"MATERIAL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/elements/MoleculePresets.md","moduleTitle":"sim/particles/substances/elements/MoleculePresets","source":"engine/sim/particles/substances/elements/MoleculePresets.js","import":"/engine/sim/particles/substances/elements/MoleculePresets.js","sourceHash":"c469d81acee690af74e73fd2b4b451e5a756170cf32cf97ce541514c7ffebd45","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/elements/MoleculePresets.js","title":"sim/particles/substances/elements/MoleculePresets","summary":"MoleculePresets.js — Common molecule/compound definitions. Re-export of MOLECULE_PRESETS from ParticleElementTable.js. Lives in substances/elements/ for organizational clarity.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/elements/MoleculePresets.md","moduleTitle":"sim/particles/substances/elements/MoleculePresets","source":"engine/sim/particles/substances/elements/MoleculePresets.js","import":"/engine/sim/particles/substances/elements/MoleculePresets.js","sourceHash":"c469d81acee690af74e73fd2b4b451e5a756170cf32cf97ce541514c7ffebd45","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/elements/MoleculePresets.js#0000:MOLECULE_PRESETS","exportIndex":0,"name":"MOLECULE_PRESETS","kind":"re-export","signature":"MOLECULE_PRESETS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/elements/PeriodicTable.md","moduleTitle":"sim/particles/substances/elements/PeriodicTable","source":"engine/sim/particles/substances/elements/PeriodicTable.js","import":"/engine/sim/particles/substances/elements/PeriodicTable.js","sourceHash":"bce1185029723e3d520d770d61bc8e58ec642383940f74c5beeccd3295022ba1","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/elements/PeriodicTable.js","title":"sim/particles/substances/elements/PeriodicTable","summary":"PeriodicTable.js — Full periodic table data for 118 elements. Re-export of the core element data from ParticleElementTable.js. This file lives in the new substances/elements/ folder for organizational clarity. The original ParticleElementTable.js remains functional and re-exports from here for backward compatibility. Provides: - ELEMENT_DATA raw array - ELEMENTS_BY_Z / ELEMENTS_BY_SYMBOL parsed lookups - getElement, getElementBySymbol, getAllElements - ELEMENTS shorthand constants - ljMixingRule for LJ cross-interactions - GPU buffer creation (createElementTable, etc.)","exportCount":10}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/elements/PeriodicTable.md","moduleTitle":"sim/particles/substances/elements/PeriodicTable","source":"engine/sim/particles/substances/elements/PeriodicTable.js","import":"/engine/sim/particles/substances/elements/PeriodicTable.js","sourceHash":"bce1185029723e3d520d770d61bc8e58ec642383940f74c5beeccd3295022ba1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/elements/PeriodicTable.js#0000:ELEMENTS","exportIndex":0,"name":"ELEMENTS","kind":"re-export","signature":"ELEMENTS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/elements/PeriodicTable.md","moduleTitle":"sim/particles/substances/elements/PeriodicTable","source":"engine/sim/particles/substances/elements/PeriodicTable.js","import":"/engine/sim/particles/substances/elements/PeriodicTable.js","sourceHash":"bce1185029723e3d520d770d61bc8e58ec642383940f74c5beeccd3295022ba1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/elements/PeriodicTable.js#0001:ELEMENT_LUT_WGSL","exportIndex":1,"name":"ELEMENT_LUT_WGSL","kind":"re-export","signature":"ELEMENT_LUT_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/elements/PeriodicTable.md","moduleTitle":"sim/particles/substances/elements/PeriodicTable","source":"engine/sim/particles/substances/elements/PeriodicTable.js","import":"/engine/sim/particles/substances/elements/PeriodicTable.js","sourceHash":"bce1185029723e3d520d770d61bc8e58ec642383940f74c5beeccd3295022ba1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/elements/PeriodicTable.js#0002:createElementTable","exportIndex":2,"name":"createElementTable","kind":"re-export","signature":"createElementTable","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/elements/PeriodicTable.md","moduleTitle":"sim/particles/substances/elements/PeriodicTable","source":"engine/sim/particles/substances/elements/PeriodicTable.js","import":"/engine/sim/particles/substances/elements/PeriodicTable.js","sourceHash":"bce1185029723e3d520d770d61bc8e58ec642383940f74c5beeccd3295022ba1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/elements/PeriodicTable.js#0003:destroyElementTable","exportIndex":3,"name":"destroyElementTable","kind":"re-export","signature":"destroyElementTable","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/elements/PeriodicTable.md","moduleTitle":"sim/particles/substances/elements/PeriodicTable","source":"engine/sim/particles/substances/elements/PeriodicTable.js","import":"/engine/sim/particles/substances/elements/PeriodicTable.js","sourceHash":"bce1185029723e3d520d770d61bc8e58ec642383940f74c5beeccd3295022ba1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/elements/PeriodicTable.js#0004:getAllElements","exportIndex":4,"name":"getAllElements","kind":"re-export","signature":"getAllElements","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/elements/PeriodicTable.md","moduleTitle":"sim/particles/substances/elements/PeriodicTable","source":"engine/sim/particles/substances/elements/PeriodicTable.js","import":"/engine/sim/particles/substances/elements/PeriodicTable.js","sourceHash":"bce1185029723e3d520d770d61bc8e58ec642383940f74c5beeccd3295022ba1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/elements/PeriodicTable.js#0005:getElement","exportIndex":5,"name":"getElement","kind":"re-export","signature":"getElement","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/elements/PeriodicTable.md","moduleTitle":"sim/particles/substances/elements/PeriodicTable","source":"engine/sim/particles/substances/elements/PeriodicTable.js","import":"/engine/sim/particles/substances/elements/PeriodicTable.js","sourceHash":"bce1185029723e3d520d770d61bc8e58ec642383940f74c5beeccd3295022ba1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/elements/PeriodicTable.js#0006:getElementBySymbol","exportIndex":6,"name":"getElementBySymbol","kind":"re-export","signature":"getElementBySymbol","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/elements/PeriodicTable.md","moduleTitle":"sim/particles/substances/elements/PeriodicTable","source":"engine/sim/particles/substances/elements/PeriodicTable.js","import":"/engine/sim/particles/substances/elements/PeriodicTable.js","sourceHash":"bce1185029723e3d520d770d61bc8e58ec642383940f74c5beeccd3295022ba1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/elements/PeriodicTable.js#0007:ljMixingRule","exportIndex":7,"name":"ljMixingRule","kind":"re-export","signature":"ljMixingRule","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/elements/PeriodicTable.md","moduleTitle":"sim/particles/substances/elements/PeriodicTable","source":"engine/sim/particles/substances/elements/PeriodicTable.js","import":"/engine/sim/particles/substances/elements/PeriodicTable.js","sourceHash":"bce1185029723e3d520d770d61bc8e58ec642383940f74c5beeccd3295022ba1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/elements/PeriodicTable.js#0008:setParticleCharges","exportIndex":8,"name":"setParticleCharges","kind":"re-export","signature":"setParticleCharges","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/elements/PeriodicTable.md","moduleTitle":"sim/particles/substances/elements/PeriodicTable","source":"engine/sim/particles/substances/elements/PeriodicTable.js","import":"/engine/sim/particles/substances/elements/PeriodicTable.js","sourceHash":"bce1185029723e3d520d770d61bc8e58ec642383940f74c5beeccd3295022ba1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/elements/PeriodicTable.js#0009:setParticleElements","exportIndex":9,"name":"setParticleElements","kind":"re-export","signature":"setParticleElements","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/index.js","title":"sim/particles/substances/index","summary":"substances/index.js — Barrel export for the substance system. Single import point: import { getSubstance, MATERIAL, PHASE_LIQUID, ... } from './substances/index.js';","exportCount":65}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0000:ELEMENTS","exportIndex":0,"name":"ELEMENTS","kind":"re-export","signature":"ELEMENTS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0001:ELEMENT_LUT_WGSL","exportIndex":1,"name":"ELEMENT_LUT_WGSL","kind":"re-export","signature":"ELEMENT_LUT_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0002:MATERIAL","exportIndex":2,"name":"MATERIAL","kind":"re-export","signature":"MATERIAL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0003:MOLECULE_PRESETS","exportIndex":3,"name":"MOLECULE_PRESETS","kind":"re-export","signature":"MOLECULE_PRESETS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0004:PHASE_GAS","exportIndex":4,"name":"PHASE_GAS","kind":"re-export","signature":"PHASE_GAS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0005:PHASE_LIQUID","exportIndex":5,"name":"PHASE_LIQUID","kind":"re-export","signature":"PHASE_LIQUID","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0006:PHASE_NAMES","exportIndex":6,"name":"PHASE_NAMES","kind":"re-export","signature":"PHASE_NAMES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0007:PHASE_PLASMA","exportIndex":7,"name":"PHASE_PLASMA","kind":"re-export","signature":"PHASE_PLASMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0008:PHASE_SOLID","exportIndex":8,"name":"PHASE_SOLID","kind":"re-export","signature":"PHASE_SOLID","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0009:SANDBOX_BEHAVIOR","exportIndex":9,"name":"SANDBOX_BEHAVIOR","kind":"re-export","signature":"SANDBOX_BEHAVIOR","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0010:SANDBOX_FLAGS","exportIndex":10,"name":"SANDBOX_FLAGS","kind":"re-export","signature":"SANDBOX_FLAGS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0011:SANDBOX_INTERACTION","exportIndex":11,"name":"SANDBOX_INTERACTION","kind":"re-export","signature":"SANDBOX_INTERACTION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0012:SANDBOX_OBJECT","exportIndex":12,"name":"SANDBOX_OBJECT","kind":"re-export","signature":"SANDBOX_OBJECT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0013:SANDBOX_OBJECTS","exportIndex":13,"name":"SANDBOX_OBJECTS","kind":"re-export","signature":"SANDBOX_OBJECTS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0014:SANDBOX_PHASE","exportIndex":14,"name":"SANDBOX_PHASE","kind":"re-export","signature":"SANDBOX_PHASE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0015:SANDBOX_REACTION","exportIndex":15,"name":"SANDBOX_REACTION","kind":"re-export","signature":"SANDBOX_REACTION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0016:SANDBOX_REFERENCE_TEMPERATURE_K","exportIndex":16,"name":"SANDBOX_REFERENCE_TEMPERATURE_K","kind":"re-export","signature":"SANDBOX_REFERENCE_TEMPERATURE_K","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0017:SANDBOX_SPECIES_CAPACITY","exportIndex":17,"name":"SANDBOX_SPECIES_CAPACITY","kind":"re-export","signature":"SANDBOX_SPECIES_CAPACITY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0018:SANDBOX_SUBSTANCE_CODE_BASE","exportIndex":18,"name":"SANDBOX_SUBSTANCE_CODE_BASE","kind":"re-export","signature":"SANDBOX_SUBSTANCE_CODE_BASE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0019:SANDBOX_TEMPERATURE_STEP_K","exportIndex":19,"name":"SANDBOX_TEMPERATURE_STEP_K","kind":"re-export","signature":"SANDBOX_TEMPERATURE_STEP_K","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0020:buildSubstanceToMaterial","exportIndex":20,"name":"buildSubstanceToMaterial","kind":"re-export","signature":"buildSubstanceToMaterial","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0021:buildThermalPresets","exportIndex":21,"name":"buildThermalPresets","kind":"re-export","signature":"buildThermalPresets","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0022:createElementTable","exportIndex":22,"name":"createElementTable","kind":"re-export","signature":"createElementTable","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0023:createSandboxMaterialCatalog","exportIndex":23,"name":"createSandboxMaterialCatalog","kind":"re-export","signature":"createSandboxMaterialCatalog","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0024:createSandboxSpeciesLut","exportIndex":24,"name":"createSandboxSpeciesLut","kind":"re-export","signature":"createSandboxSpeciesLut","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0025:deriveFromElements","exportIndex":25,"name":"deriveFromElements","kind":"re-export","signature":"deriveFromElements","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0026:derivePhysicsProfile","exportIndex":26,"name":"derivePhysicsProfile","kind":"re-export","signature":"derivePhysicsProfile","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0027:deriveState","exportIndex":27,"name":"deriveState","kind":"re-export","signature":"deriveState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0028:destroyElementTable","exportIndex":28,"name":"destroyElementTable","kind":"re-export","signature":"destroyElementTable","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0029:getAllElements","exportIndex":29,"name":"getAllElements","kind":"re-export","signature":"getAllElements","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0030:getAllSubstances","exportIndex":30,"name":"getAllSubstances","kind":"re-export","signature":"getAllSubstances","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0031:getAudioCues","exportIndex":31,"name":"getAudioCues","kind":"re-export","signature":"getAudioCues","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0032:getElement","exportIndex":32,"name":"getElement","kind":"re-export","signature":"getElement","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0033:getElementBySymbol","exportIndex":33,"name":"getElementBySymbol","kind":"re-export","signature":"getElementBySymbol","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0034:getEmitterDefaults","exportIndex":34,"name":"getEmitterDefaults","kind":"re-export","signature":"getEmitterDefaults","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0035:getMaterialForSubstance","exportIndex":35,"name":"getMaterialForSubstance","kind":"re-export","signature":"getMaterialForSubstance","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0036:getMaterialId","exportIndex":36,"name":"getMaterialId","kind":"re-export","signature":"getMaterialId","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0037:getMaterialName","exportIndex":37,"name":"getMaterialName","kind":"re-export","signature":"getMaterialName","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0038:getPhaseFromName","exportIndex":38,"name":"getPhaseFromName","kind":"re-export","signature":"getPhaseFromName","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0039:getPhaseName","exportIndex":39,"name":"getPhaseName","kind":"re-export","signature":"getPhaseName","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0040:getReactions","exportIndex":40,"name":"getReactions","kind":"re-export","signature":"getReactions","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0041:getSPHParams","exportIndex":41,"name":"getSPHParams","kind":"re-export","signature":"getSPHParams","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0042:getSSFRTint","exportIndex":42,"name":"getSSFRTint","kind":"re-export","signature":"getSSFRTint","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0043:getSubstance","exportIndex":43,"name":"getSubstance","kind":"re-export","signature":"getSubstance","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0044:getSubstanceByMaterialId","exportIndex":44,"name":"getSubstanceByMaterialId","kind":"re-export","signature":"getSubstanceByMaterialId","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0045:getSubstanceCount","exportIndex":45,"name":"getSubstanceCount","kind":"re-export","signature":"getSubstanceCount","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0046:getSubstanceIds","exportIndex":46,"name":"getSubstanceIds","kind":"re-export","signature":"getSubstanceIds","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0047:getSubstancesByCategory","exportIndex":47,"name":"getSubstancesByCategory","kind":"re-export","signature":"getSubstancesByCategory","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0048:getSubstancesByTag","exportIndex":48,"name":"getSubstancesByTag","kind":"re-export","signature":"getSubstancesByTag","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0049:getThermalPreset","exportIndex":49,"name":"getThermalPreset","kind":"re-export","signature":"getThermalPreset","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0050:ljMixingRule","exportIndex":50,"name":"ljMixingRule","kind":"re-export","signature":"ljMixingRule","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0051:mixSubstances","exportIndex":51,"name":"mixSubstances","kind":"re-export","signature":"mixSubstances","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0052:packSandboxCell","exportIndex":52,"name":"packSandboxCell","kind":"re-export","signature":"packSandboxCell","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0053:packSandboxObject","exportIndex":53,"name":"packSandboxObject","kind":"re-export","signature":"packSandboxObject","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0054:registerSubstance","exportIndex":54,"name":"registerSubstance","kind":"re-export","signature":"registerSubstance","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0055:resolveSubstance","exportIndex":55,"name":"resolveSubstance","kind":"re-export","signature":"resolveSubstance","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0056:sandboxBucketToTemperature","exportIndex":56,"name":"sandboxBucketToTemperature","kind":"re-export","signature":"sandboxBucketToTemperature","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0057:sandboxSpeciesIdForSubstance","exportIndex":57,"name":"sandboxSpeciesIdForSubstance","kind":"re-export","signature":"sandboxSpeciesIdForSubstance","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0058:setParticleCharges","exportIndex":58,"name":"setParticleCharges","kind":"re-export","signature":"setParticleCharges","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0059:setParticleElements","exportIndex":59,"name":"setParticleElements","kind":"re-export","signature":"setParticleElements","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0060:temperatureToSandboxBucket","exportIndex":60,"name":"temperatureToSandboxBucket","kind":"re-export","signature":"temperatureToSandboxBucket","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0061:unpackSandboxCell","exportIndex":61,"name":"unpackSandboxCell","kind":"re-export","signature":"unpackSandboxCell","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0062:unpackSandboxObject","exportIndex":62,"name":"unpackSandboxObject","kind":"re-export","signature":"unpackSandboxObject","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0063:unregisterSubstance","exportIndex":63,"name":"unregisterSubstance","kind":"re-export","signature":"unregisterSubstance","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/index.md","moduleTitle":"sim/particles/substances/index","source":"engine/sim/particles/substances/index.js","import":"/engine/sim/particles/substances/index.js","sourceHash":"295f04b9fe4d1c81dd6c1c695649c8cd44620a4df77248f392c3c53f3f2e87b9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/index.js#0064:validateSandboxMaterialCatalog","exportIndex":64,"name":"validateSandboxMaterialCatalog","kind":"re-export","signature":"validateSandboxMaterialCatalog","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/acid/audio.md","moduleTitle":"sim/particles/substances/materials/acid/audio","source":"engine/sim/particles/substances/materials/acid/audio.js","import":"/engine/sim/particles/substances/materials/acid/audio.js","sourceHash":"5258e9f441432004e44a974df49617d7bc744f555fb571d1688da8972e1effdb","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/acid/audio.js","title":"sim/particles/substances/materials/acid/audio","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/acid/chemistry.md","moduleTitle":"sim/particles/substances/materials/acid/chemistry","source":"engine/sim/particles/substances/materials/acid/chemistry.js","import":"/engine/sim/particles/substances/materials/acid/chemistry.js","sourceHash":"920a7aa460d9df9eaac8d98c5fb86545ab992864d4110fe77de8cc939b234c92","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/acid/chemistry.js","title":"sim/particles/substances/materials/acid/chemistry","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/acid/decals.md","moduleTitle":"sim/particles/substances/materials/acid/decals","source":"engine/sim/particles/substances/materials/acid/decals.js","import":"/engine/sim/particles/substances/materials/acid/decals.js","sourceHash":"3071f517192cca2e0b6129567f491e95306a37dc0ccbc1779c2d90ed3cedf9d7","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/acid/decals.js","title":"sim/particles/substances/materials/acid/decals","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/acid/emitter.md","moduleTitle":"sim/particles/substances/materials/acid/emitter","source":"engine/sim/particles/substances/materials/acid/emitter.js","import":"/engine/sim/particles/substances/materials/acid/emitter.js","sourceHash":"e1900cb022b846851af92a988ffda16f0e00c07f4a790db82904cdfac819d094","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/acid/emitter.js","title":"sim/particles/substances/materials/acid/emitter","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/acid/identity.md","moduleTitle":"sim/particles/substances/materials/acid/identity","source":"engine/sim/particles/substances/materials/acid/identity.js","import":"/engine/sim/particles/substances/materials/acid/identity.js","sourceHash":"ef3652cce39be3dff6752e75dc09c84a01c2427515d3ea971ad6b9ddce6431cb","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/acid/identity.js","title":"sim/particles/substances/materials/acid/identity","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/acid/index.md","moduleTitle":"sim/particles/substances/materials/acid/index","source":"engine/sim/particles/substances/materials/acid/index.js","import":"/engine/sim/particles/substances/materials/acid/index.js","sourceHash":"11f7e1b13b541a1b143f598b4f5b2022bce4624c4128dd292354a7ae5ab9735e","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/acid/index.js","title":"sim/particles/substances/materials/acid/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/acid/physics.md","moduleTitle":"sim/particles/substances/materials/acid/physics","source":"engine/sim/particles/substances/materials/acid/physics.js","import":"/engine/sim/particles/substances/materials/acid/physics.js","sourceHash":"6f890935b2370c1ca48026922cedd4a61fa215efe6af7be69140fa53e87d8b9d","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/acid/physics.js","title":"sim/particles/substances/materials/acid/physics","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/acid/reactions.md","moduleTitle":"sim/particles/substances/materials/acid/reactions","source":"engine/sim/particles/substances/materials/acid/reactions.js","import":"/engine/sim/particles/substances/materials/acid/reactions.js","sourceHash":"17d70664fbd5bfc0105508bcda2b4071c30d47afe3439408c30a8eda17d2e887","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/acid/reactions.js","title":"sim/particles/substances/materials/acid/reactions","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/acid/spell.md","moduleTitle":"sim/particles/substances/materials/acid/spell","source":"engine/sim/particles/substances/materials/acid/spell.js","import":"/engine/sim/particles/substances/materials/acid/spell.js","sourceHash":"8cf69cdf401acf6e52467e904080c51996d0930adff55b833346a87442754490","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/acid/spell.js","title":"sim/particles/substances/materials/acid/spell","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/acid/sph.md","moduleTitle":"sim/particles/substances/materials/acid/sph","source":"engine/sim/particles/substances/materials/acid/sph.js","import":"/engine/sim/particles/substances/materials/acid/sph.js","sourceHash":"eadfcab225b62ee6d4a1a1367da2303c5045da9e162477eee4b2bf30cbf60645","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/acid/sph.js","title":"sim/particles/substances/materials/acid/sph","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/acid/thermal.md","moduleTitle":"sim/particles/substances/materials/acid/thermal","source":"engine/sim/particles/substances/materials/acid/thermal.js","import":"/engine/sim/particles/substances/materials/acid/thermal.js","sourceHash":"1cacc1a4dac76fabf744f310ae000b9e8c03c32301d4a071336c9e706e501e8f","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/acid/thermal.js","title":"sim/particles/substances/materials/acid/thermal","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/acid/visual.md","moduleTitle":"sim/particles/substances/materials/acid/visual","source":"engine/sim/particles/substances/materials/acid/visual.js","import":"/engine/sim/particles/substances/materials/acid/visual.js","sourceHash":"18f428279e8c728f67b82f7e2302315fcc42df5b8ec90aef49b3066424c5bdcc","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/acid/visual.js","title":"sim/particles/substances/materials/acid/visual","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/blood/audio.md","moduleTitle":"sim/particles/substances/materials/blood/audio","source":"engine/sim/particles/substances/materials/blood/audio.js","import":"/engine/sim/particles/substances/materials/blood/audio.js","sourceHash":"706ff0bb072a682222dd3294384986a3f8f8f73afffb9e95a889b478f6a7a632","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/blood/audio.js","title":"sim/particles/substances/materials/blood/audio","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/blood/chemistry.md","moduleTitle":"sim/particles/substances/materials/blood/chemistry","source":"engine/sim/particles/substances/materials/blood/chemistry.js","import":"/engine/sim/particles/substances/materials/blood/chemistry.js","sourceHash":"47df2e1b97ad02549a4366cb290ec210ff3691baed8d46722cbe4c4936d4a09d","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/blood/chemistry.js","title":"sim/particles/substances/materials/blood/chemistry","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/blood/decals.md","moduleTitle":"sim/particles/substances/materials/blood/decals","source":"engine/sim/particles/substances/materials/blood/decals.js","import":"/engine/sim/particles/substances/materials/blood/decals.js","sourceHash":"39bc77895069fcc46d523d333a12030d637a425bdeddb4dc2b08ae64b598e9d5","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/blood/decals.js","title":"sim/particles/substances/materials/blood/decals","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/blood/emitter.md","moduleTitle":"sim/particles/substances/materials/blood/emitter","source":"engine/sim/particles/substances/materials/blood/emitter.js","import":"/engine/sim/particles/substances/materials/blood/emitter.js","sourceHash":"69453d5007c7cfab7204746605db7e3d04a307fd1a0460d1af29df7e54924b1d","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/blood/emitter.js","title":"sim/particles/substances/materials/blood/emitter","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/blood/identity.md","moduleTitle":"sim/particles/substances/materials/blood/identity","source":"engine/sim/particles/substances/materials/blood/identity.js","import":"/engine/sim/particles/substances/materials/blood/identity.js","sourceHash":"02dbfa50af18b549006af3c66463827b5c9e44842588b89310f32f827678bad1","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/blood/identity.js","title":"sim/particles/substances/materials/blood/identity","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/blood/index.md","moduleTitle":"sim/particles/substances/materials/blood/index","source":"engine/sim/particles/substances/materials/blood/index.js","import":"/engine/sim/particles/substances/materials/blood/index.js","sourceHash":"11f7e1b13b541a1b143f598b4f5b2022bce4624c4128dd292354a7ae5ab9735e","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/blood/index.js","title":"sim/particles/substances/materials/blood/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/blood/physics.md","moduleTitle":"sim/particles/substances/materials/blood/physics","source":"engine/sim/particles/substances/materials/blood/physics.js","import":"/engine/sim/particles/substances/materials/blood/physics.js","sourceHash":"67f6fab40c39ec56a3334527216969d9b7603296458d42c77958fcb5b1ee1e73","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/blood/physics.js","title":"sim/particles/substances/materials/blood/physics","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/blood/reactions.md","moduleTitle":"sim/particles/substances/materials/blood/reactions","source":"engine/sim/particles/substances/materials/blood/reactions.js","import":"/engine/sim/particles/substances/materials/blood/reactions.js","sourceHash":"e2c4282a5f58bd615466e0ed52df2f86e3ca759c36f3b35cbf78b678bc7df0d0","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/blood/reactions.js","title":"sim/particles/substances/materials/blood/reactions","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/blood/spell.md","moduleTitle":"sim/particles/substances/materials/blood/spell","source":"engine/sim/particles/substances/materials/blood/spell.js","import":"/engine/sim/particles/substances/materials/blood/spell.js","sourceHash":"8817dc527300274071eadbf21f7fb709851a9149f68c0df991b426d3443bfc4e","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/blood/spell.js","title":"sim/particles/substances/materials/blood/spell","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/blood/sph.md","moduleTitle":"sim/particles/substances/materials/blood/sph","source":"engine/sim/particles/substances/materials/blood/sph.js","import":"/engine/sim/particles/substances/materials/blood/sph.js","sourceHash":"869e209d8ed8097a34b9af823e146febe153843c44c5d9ec16df4ef2cf230d41","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/blood/sph.js","title":"sim/particles/substances/materials/blood/sph","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/blood/thermal.md","moduleTitle":"sim/particles/substances/materials/blood/thermal","source":"engine/sim/particles/substances/materials/blood/thermal.js","import":"/engine/sim/particles/substances/materials/blood/thermal.js","sourceHash":"cdeb8de1e91f071dfb052ff45323284fa20f276bc135ed0c85ca3c7d886a517b","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/blood/thermal.js","title":"sim/particles/substances/materials/blood/thermal","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/blood/visual.md","moduleTitle":"sim/particles/substances/materials/blood/visual","source":"engine/sim/particles/substances/materials/blood/visual.js","import":"/engine/sim/particles/substances/materials/blood/visual.js","sourceHash":"e690c3109fa7c0e7168de2159b20f854422b81886b96813342ba0126b06b3608","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/blood/visual.js","title":"sim/particles/substances/materials/blood/visual","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/debris/audio.md","moduleTitle":"sim/particles/substances/materials/debris/audio","source":"engine/sim/particles/substances/materials/debris/audio.js","import":"/engine/sim/particles/substances/materials/debris/audio.js","sourceHash":"bb2d29b61e155ec27f99295c6d4a20c67a22c3d86f98402be1efb0a22dde71fe","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/debris/audio.js","title":"sim/particles/substances/materials/debris/audio","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/debris/chemistry.md","moduleTitle":"sim/particles/substances/materials/debris/chemistry","source":"engine/sim/particles/substances/materials/debris/chemistry.js","import":"/engine/sim/particles/substances/materials/debris/chemistry.js","sourceHash":"9ec1ec2e724dfb0a3449d160b55c828451f29d4376ce349050e4cc88ce7c6b54","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/debris/chemistry.js","title":"sim/particles/substances/materials/debris/chemistry","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/debris/decals.md","moduleTitle":"sim/particles/substances/materials/debris/decals","source":"engine/sim/particles/substances/materials/debris/decals.js","import":"/engine/sim/particles/substances/materials/debris/decals.js","sourceHash":"df5cf13e94544a74d456f651213e9798ea23a7018a8476e927d6419227afe9de","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/debris/decals.js","title":"sim/particles/substances/materials/debris/decals","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/debris/emitter.md","moduleTitle":"sim/particles/substances/materials/debris/emitter","source":"engine/sim/particles/substances/materials/debris/emitter.js","import":"/engine/sim/particles/substances/materials/debris/emitter.js","sourceHash":"571e63af88b196c8ca0ddf3f79c2e1d46bca550714a26c7fd031e80b5ea38d3b","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/debris/emitter.js","title":"sim/particles/substances/materials/debris/emitter","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/debris/identity.md","moduleTitle":"sim/particles/substances/materials/debris/identity","source":"engine/sim/particles/substances/materials/debris/identity.js","import":"/engine/sim/particles/substances/materials/debris/identity.js","sourceHash":"f210d991c17b06930500f14b62328a4563fcde2831d6828c11ed43b6b5b30afd","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/debris/identity.js","title":"sim/particles/substances/materials/debris/identity","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/debris/index.md","moduleTitle":"sim/particles/substances/materials/debris/index","source":"engine/sim/particles/substances/materials/debris/index.js","import":"/engine/sim/particles/substances/materials/debris/index.js","sourceHash":"11f7e1b13b541a1b143f598b4f5b2022bce4624c4128dd292354a7ae5ab9735e","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/debris/index.js","title":"sim/particles/substances/materials/debris/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/debris/physics.md","moduleTitle":"sim/particles/substances/materials/debris/physics","source":"engine/sim/particles/substances/materials/debris/physics.js","import":"/engine/sim/particles/substances/materials/debris/physics.js","sourceHash":"dca9e13732eecfb0e254373746bd4788e6c725c3ae4891cb8b4e33f73194c8dd","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/debris/physics.js","title":"sim/particles/substances/materials/debris/physics","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/debris/reactions.md","moduleTitle":"sim/particles/substances/materials/debris/reactions","source":"engine/sim/particles/substances/materials/debris/reactions.js","import":"/engine/sim/particles/substances/materials/debris/reactions.js","sourceHash":"b79fb6f98f498b8ca9149efd302a8287c33174c4b7a36a141d4c17b88f16de02","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/debris/reactions.js","title":"sim/particles/substances/materials/debris/reactions","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/debris/spell.md","moduleTitle":"sim/particles/substances/materials/debris/spell","source":"engine/sim/particles/substances/materials/debris/spell.js","import":"/engine/sim/particles/substances/materials/debris/spell.js","sourceHash":"729eaa612122348131c89241073b4a841e7bde5b4bf4f47dc99ccf83c5acb1aa","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/debris/spell.js","title":"sim/particles/substances/materials/debris/spell","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/debris/sph.md","moduleTitle":"sim/particles/substances/materials/debris/sph","source":"engine/sim/particles/substances/materials/debris/sph.js","import":"/engine/sim/particles/substances/materials/debris/sph.js","sourceHash":"d01e0b897d6eea9d7191bd12b836303394fee3ec5b2bdd1c8fed01613e2cc56d","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/debris/sph.js","title":"sim/particles/substances/materials/debris/sph","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/debris/thermal.md","moduleTitle":"sim/particles/substances/materials/debris/thermal","source":"engine/sim/particles/substances/materials/debris/thermal.js","import":"/engine/sim/particles/substances/materials/debris/thermal.js","sourceHash":"022e312eba5c7730439ede04e7901d22fa77b0ac26879c0c0e6ce2011dbf8fed","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/debris/thermal.js","title":"sim/particles/substances/materials/debris/thermal","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/debris/visual.md","moduleTitle":"sim/particles/substances/materials/debris/visual","source":"engine/sim/particles/substances/materials/debris/visual.js","import":"/engine/sim/particles/substances/materials/debris/visual.js","sourceHash":"6f69d464d8273cac5dbee5a99788bf4a47d7293e2eccc017384bdc14d090d695","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/debris/visual.js","title":"sim/particles/substances/materials/debris/visual","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/fire/audio.md","moduleTitle":"sim/particles/substances/materials/fire/audio","source":"engine/sim/particles/substances/materials/fire/audio.js","import":"/engine/sim/particles/substances/materials/fire/audio.js","sourceHash":"91ecbaeb8967905af99c41e1c3765fbdd24e3c4378c06178222e309153136324","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/fire/audio.js","title":"sim/particles/substances/materials/fire/audio","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/fire/chemistry.md","moduleTitle":"sim/particles/substances/materials/fire/chemistry","source":"engine/sim/particles/substances/materials/fire/chemistry.js","import":"/engine/sim/particles/substances/materials/fire/chemistry.js","sourceHash":"413ba9c326c5b632af5c70408bac1bd5ac91071d9469f6121b77caebdbd282b4","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/fire/chemistry.js","title":"sim/particles/substances/materials/fire/chemistry","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/fire/decals.md","moduleTitle":"sim/particles/substances/materials/fire/decals","source":"engine/sim/particles/substances/materials/fire/decals.js","import":"/engine/sim/particles/substances/materials/fire/decals.js","sourceHash":"a188e60f905ea8c856aa666f57eac0016ad9130b2f07e0ff3a259c69f0d3b58f","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/fire/decals.js","title":"sim/particles/substances/materials/fire/decals","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/fire/emitter.md","moduleTitle":"sim/particles/substances/materials/fire/emitter","source":"engine/sim/particles/substances/materials/fire/emitter.js","import":"/engine/sim/particles/substances/materials/fire/emitter.js","sourceHash":"8ae745503a085c8d9da74f25214f24038e7a678253105704ff8875bbbb448bc9","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/fire/emitter.js","title":"sim/particles/substances/materials/fire/emitter","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/fire/identity.md","moduleTitle":"sim/particles/substances/materials/fire/identity","source":"engine/sim/particles/substances/materials/fire/identity.js","import":"/engine/sim/particles/substances/materials/fire/identity.js","sourceHash":"37c2d004d91775c3298254978a0a1ef0c4efc98888dc2930e7d54979a40ee196","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/fire/identity.js","title":"sim/particles/substances/materials/fire/identity","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/fire/index.md","moduleTitle":"sim/particles/substances/materials/fire/index","source":"engine/sim/particles/substances/materials/fire/index.js","import":"/engine/sim/particles/substances/materials/fire/index.js","sourceHash":"11f7e1b13b541a1b143f598b4f5b2022bce4624c4128dd292354a7ae5ab9735e","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/fire/index.js","title":"sim/particles/substances/materials/fire/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/fire/physics.md","moduleTitle":"sim/particles/substances/materials/fire/physics","source":"engine/sim/particles/substances/materials/fire/physics.js","import":"/engine/sim/particles/substances/materials/fire/physics.js","sourceHash":"507d0026a7af34250c93b812e5cc3f5d2674d48930644ef9d613468de28331a1","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/fire/physics.js","title":"sim/particles/substances/materials/fire/physics","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/fire/reactions.md","moduleTitle":"sim/particles/substances/materials/fire/reactions","source":"engine/sim/particles/substances/materials/fire/reactions.js","import":"/engine/sim/particles/substances/materials/fire/reactions.js","sourceHash":"5d766fd447cd5f2b5b9aafd61311bdfb7821a8c7a08270239d354ff22dc19bb7","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/fire/reactions.js","title":"sim/particles/substances/materials/fire/reactions","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/fire/spell.md","moduleTitle":"sim/particles/substances/materials/fire/spell","source":"engine/sim/particles/substances/materials/fire/spell.js","import":"/engine/sim/particles/substances/materials/fire/spell.js","sourceHash":"89064877da5d7ff5b32b2fcd34bd4507533f66381596293496d7089cc0f72ffe","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/fire/spell.js","title":"sim/particles/substances/materials/fire/spell","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/fire/sph.md","moduleTitle":"sim/particles/substances/materials/fire/sph","source":"engine/sim/particles/substances/materials/fire/sph.js","import":"/engine/sim/particles/substances/materials/fire/sph.js","sourceHash":"d01e0b897d6eea9d7191bd12b836303394fee3ec5b2bdd1c8fed01613e2cc56d","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/fire/sph.js","title":"sim/particles/substances/materials/fire/sph","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/fire/thermal.md","moduleTitle":"sim/particles/substances/materials/fire/thermal","source":"engine/sim/particles/substances/materials/fire/thermal.js","import":"/engine/sim/particles/substances/materials/fire/thermal.js","sourceHash":"739c1e84cdb9d592022cd476522ead95cb11e2fa8851a31ea98622f3d9940899","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/fire/thermal.js","title":"sim/particles/substances/materials/fire/thermal","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/fire/visual.md","moduleTitle":"sim/particles/substances/materials/fire/visual","source":"engine/sim/particles/substances/materials/fire/visual.js","import":"/engine/sim/particles/substances/materials/fire/visual.js","sourceHash":"2cd05a8def3d10da4dcb5e86200c1e322c7f0a995aadfc0beff197d3d2e60590","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/fire/visual.js","title":"sim/particles/substances/materials/fire/visual","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/glass/audio.md","moduleTitle":"sim/particles/substances/materials/glass/audio","source":"engine/sim/particles/substances/materials/glass/audio.js","import":"/engine/sim/particles/substances/materials/glass/audio.js","sourceHash":"5d6052bd553721b74aa93ac30cc1bfa02520adc7e88c3e1359c409ab02ae66ce","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/glass/audio.js","title":"sim/particles/substances/materials/glass/audio","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/glass/chemistry.md","moduleTitle":"sim/particles/substances/materials/glass/chemistry","source":"engine/sim/particles/substances/materials/glass/chemistry.js","import":"/engine/sim/particles/substances/materials/glass/chemistry.js","sourceHash":"9ec1ec2e724dfb0a3449d160b55c828451f29d4376ce349050e4cc88ce7c6b54","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/glass/chemistry.js","title":"sim/particles/substances/materials/glass/chemistry","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/glass/decals.md","moduleTitle":"sim/particles/substances/materials/glass/decals","source":"engine/sim/particles/substances/materials/glass/decals.js","import":"/engine/sim/particles/substances/materials/glass/decals.js","sourceHash":"10520a3b2c78f7fb1d6585a01b78fc304dbd6712558a67050d00d0ce173cf937","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/glass/decals.js","title":"sim/particles/substances/materials/glass/decals","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/glass/emitter.md","moduleTitle":"sim/particles/substances/materials/glass/emitter","source":"engine/sim/particles/substances/materials/glass/emitter.js","import":"/engine/sim/particles/substances/materials/glass/emitter.js","sourceHash":"bef3d7f9d27c14fd6ca8662d751a2fae5492b52d20da4c10d9fe55357effc7c4","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/glass/emitter.js","title":"sim/particles/substances/materials/glass/emitter","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/glass/identity.md","moduleTitle":"sim/particles/substances/materials/glass/identity","source":"engine/sim/particles/substances/materials/glass/identity.js","import":"/engine/sim/particles/substances/materials/glass/identity.js","sourceHash":"594dffd6d5a4bc96cc2ccd2490a3a5b0758614ea1b79e816f27dfa15f04035a9","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/glass/identity.js","title":"sim/particles/substances/materials/glass/identity","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/glass/index.md","moduleTitle":"sim/particles/substances/materials/glass/index","source":"engine/sim/particles/substances/materials/glass/index.js","import":"/engine/sim/particles/substances/materials/glass/index.js","sourceHash":"11f7e1b13b541a1b143f598b4f5b2022bce4624c4128dd292354a7ae5ab9735e","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/glass/index.js","title":"sim/particles/substances/materials/glass/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/glass/physics.md","moduleTitle":"sim/particles/substances/materials/glass/physics","source":"engine/sim/particles/substances/materials/glass/physics.js","import":"/engine/sim/particles/substances/materials/glass/physics.js","sourceHash":"2c9200731900cbe6377be7c5fa38e0245911673efbd2b9b91cdbb877ce7b4db3","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/glass/physics.js","title":"sim/particles/substances/materials/glass/physics","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/glass/reactions.md","moduleTitle":"sim/particles/substances/materials/glass/reactions","source":"engine/sim/particles/substances/materials/glass/reactions.js","import":"/engine/sim/particles/substances/materials/glass/reactions.js","sourceHash":"ee4587bd89ec979cbe9371dca91f76fe57a502b4b499d18785b0fe5541d504a3","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/glass/reactions.js","title":"sim/particles/substances/materials/glass/reactions","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/glass/spell.md","moduleTitle":"sim/particles/substances/materials/glass/spell","source":"engine/sim/particles/substances/materials/glass/spell.js","import":"/engine/sim/particles/substances/materials/glass/spell.js","sourceHash":"5747be8b3c8f98df70819eec6bd146e5d6648d9b41cbbcfe66742667192837bd","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/glass/spell.js","title":"sim/particles/substances/materials/glass/spell","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/glass/sph.md","moduleTitle":"sim/particles/substances/materials/glass/sph","source":"engine/sim/particles/substances/materials/glass/sph.js","import":"/engine/sim/particles/substances/materials/glass/sph.js","sourceHash":"d8c2378cbdc829a8b3d6d2f82ae5b1e6b92d5730e3cf2b1fa799cbafa5743a43","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/glass/sph.js","title":"sim/particles/substances/materials/glass/sph","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/glass/thermal.md","moduleTitle":"sim/particles/substances/materials/glass/thermal","source":"engine/sim/particles/substances/materials/glass/thermal.js","import":"/engine/sim/particles/substances/materials/glass/thermal.js","sourceHash":"937811c18f48724390bb1dbf10271977620d0635c76ef45fbf8b900d9b906093","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/glass/thermal.js","title":"sim/particles/substances/materials/glass/thermal","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/glass/visual.md","moduleTitle":"sim/particles/substances/materials/glass/visual","source":"engine/sim/particles/substances/materials/glass/visual.js","import":"/engine/sim/particles/substances/materials/glass/visual.js","sourceHash":"e5b5e3ddcf373401b5229dbdac28c6665680f755b585fda3b4e65d1ddd4e9e98","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/glass/visual.js","title":"sim/particles/substances/materials/glass/visual","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/honey/audio.md","moduleTitle":"sim/particles/substances/materials/honey/audio","source":"engine/sim/particles/substances/materials/honey/audio.js","import":"/engine/sim/particles/substances/materials/honey/audio.js","sourceHash":"ede9caedec32ead0100fc2e30c4a662f026a3ed772a647d08f272695bc4e5f1e","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/honey/audio.js","title":"sim/particles/substances/materials/honey/audio","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/honey/chemistry.md","moduleTitle":"sim/particles/substances/materials/honey/chemistry","source":"engine/sim/particles/substances/materials/honey/chemistry.js","import":"/engine/sim/particles/substances/materials/honey/chemistry.js","sourceHash":"413ba9c326c5b632af5c70408bac1bd5ac91071d9469f6121b77caebdbd282b4","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/honey/chemistry.js","title":"sim/particles/substances/materials/honey/chemistry","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/honey/decals.md","moduleTitle":"sim/particles/substances/materials/honey/decals","source":"engine/sim/particles/substances/materials/honey/decals.js","import":"/engine/sim/particles/substances/materials/honey/decals.js","sourceHash":"eb626c2a34ea41e20abc14041203c5e3845b58c293d33c4f50f3852c24702de2","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/honey/decals.js","title":"sim/particles/substances/materials/honey/decals","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/honey/emitter.md","moduleTitle":"sim/particles/substances/materials/honey/emitter","source":"engine/sim/particles/substances/materials/honey/emitter.js","import":"/engine/sim/particles/substances/materials/honey/emitter.js","sourceHash":"c1639d760c0a0395ad840cad769677b7797773eacd36ef2aef174fabf7f899da","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/honey/emitter.js","title":"sim/particles/substances/materials/honey/emitter","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/honey/identity.md","moduleTitle":"sim/particles/substances/materials/honey/identity","source":"engine/sim/particles/substances/materials/honey/identity.js","import":"/engine/sim/particles/substances/materials/honey/identity.js","sourceHash":"48990e68e89e69033c8e39e89d366f8ed141255fd8127384d122b8d81e57b72e","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/honey/identity.js","title":"sim/particles/substances/materials/honey/identity","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/honey/index.md","moduleTitle":"sim/particles/substances/materials/honey/index","source":"engine/sim/particles/substances/materials/honey/index.js","import":"/engine/sim/particles/substances/materials/honey/index.js","sourceHash":"11f7e1b13b541a1b143f598b4f5b2022bce4624c4128dd292354a7ae5ab9735e","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/honey/index.js","title":"sim/particles/substances/materials/honey/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/honey/physics.md","moduleTitle":"sim/particles/substances/materials/honey/physics","source":"engine/sim/particles/substances/materials/honey/physics.js","import":"/engine/sim/particles/substances/materials/honey/physics.js","sourceHash":"d8e064e2ccc04a2a193d723a8ec1bca55d2e6ef884a8e3494b255d0293ac39dc","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/honey/physics.js","title":"sim/particles/substances/materials/honey/physics","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/honey/reactions.md","moduleTitle":"sim/particles/substances/materials/honey/reactions","source":"engine/sim/particles/substances/materials/honey/reactions.js","import":"/engine/sim/particles/substances/materials/honey/reactions.js","sourceHash":"7cc4f9179db01278834fcbcf465ce73f5dff1d58a71117b0d3be966860e9fd6f","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/honey/reactions.js","title":"sim/particles/substances/materials/honey/reactions","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/honey/spell.md","moduleTitle":"sim/particles/substances/materials/honey/spell","source":"engine/sim/particles/substances/materials/honey/spell.js","import":"/engine/sim/particles/substances/materials/honey/spell.js","sourceHash":"aa3a9d993457201e5c1a79af220ad39d303d186b8cb0a06b78af73bdb0da2f6a","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/honey/spell.js","title":"sim/particles/substances/materials/honey/spell","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/honey/sph.md","moduleTitle":"sim/particles/substances/materials/honey/sph","source":"engine/sim/particles/substances/materials/honey/sph.js","import":"/engine/sim/particles/substances/materials/honey/sph.js","sourceHash":"59d6475928cf04e167a197a0e801afab6d9cdf6d48d61b29d75eaff24f73634a","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/honey/sph.js","title":"sim/particles/substances/materials/honey/sph","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/honey/thermal.md","moduleTitle":"sim/particles/substances/materials/honey/thermal","source":"engine/sim/particles/substances/materials/honey/thermal.js","import":"/engine/sim/particles/substances/materials/honey/thermal.js","sourceHash":"676db215c1fa538393f41cd97c6a242793c3ce0a06af008736254241fbc63bcb","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/honey/thermal.js","title":"sim/particles/substances/materials/honey/thermal","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/honey/visual.md","moduleTitle":"sim/particles/substances/materials/honey/visual","source":"engine/sim/particles/substances/materials/honey/visual.js","import":"/engine/sim/particles/substances/materials/honey/visual.js","sourceHash":"c8b4b978bcb6b252788f225118b4a63dd309930f6cf426645b634a44ec6e8da4","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/honey/visual.js","title":"sim/particles/substances/materials/honey/visual","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/ice/audio.md","moduleTitle":"sim/particles/substances/materials/ice/audio","source":"engine/sim/particles/substances/materials/ice/audio.js","import":"/engine/sim/particles/substances/materials/ice/audio.js","sourceHash":"645146b988520275f9421befdf6598066f32c53e840d035e2b8f0d9f45d019b1","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/ice/audio.js","title":"sim/particles/substances/materials/ice/audio","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/ice/chemistry.md","moduleTitle":"sim/particles/substances/materials/ice/chemistry","source":"engine/sim/particles/substances/materials/ice/chemistry.js","import":"/engine/sim/particles/substances/materials/ice/chemistry.js","sourceHash":"cc0bdc2d1d97712c71c31f40f48ff372d257f3ec5053f7b8333992d492773890","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/ice/chemistry.js","title":"sim/particles/substances/materials/ice/chemistry","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/ice/decals.md","moduleTitle":"sim/particles/substances/materials/ice/decals","source":"engine/sim/particles/substances/materials/ice/decals.js","import":"/engine/sim/particles/substances/materials/ice/decals.js","sourceHash":"6e2b95ab3abf003f0ef03c90c0e4621a20d659a3056c09798c100a074e7c20bc","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/ice/decals.js","title":"sim/particles/substances/materials/ice/decals","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/ice/emitter.md","moduleTitle":"sim/particles/substances/materials/ice/emitter","source":"engine/sim/particles/substances/materials/ice/emitter.js","import":"/engine/sim/particles/substances/materials/ice/emitter.js","sourceHash":"643654627bce4e4152e5668848273dad5e71b20e268df48aeb6b50c7873e19dc","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/ice/emitter.js","title":"sim/particles/substances/materials/ice/emitter","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/ice/identity.md","moduleTitle":"sim/particles/substances/materials/ice/identity","source":"engine/sim/particles/substances/materials/ice/identity.js","import":"/engine/sim/particles/substances/materials/ice/identity.js","sourceHash":"4ad0e85aff3002b522acca08484d68c2d9243382ff3a5845a6c2e451a262f7b4","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/ice/identity.js","title":"sim/particles/substances/materials/ice/identity","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/ice/index.md","moduleTitle":"sim/particles/substances/materials/ice/index","source":"engine/sim/particles/substances/materials/ice/index.js","import":"/engine/sim/particles/substances/materials/ice/index.js","sourceHash":"11f7e1b13b541a1b143f598b4f5b2022bce4624c4128dd292354a7ae5ab9735e","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/ice/index.js","title":"sim/particles/substances/materials/ice/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/ice/physics.md","moduleTitle":"sim/particles/substances/materials/ice/physics","source":"engine/sim/particles/substances/materials/ice/physics.js","import":"/engine/sim/particles/substances/materials/ice/physics.js","sourceHash":"5200b0d75881fa35f3d85bdf9f8424368833cbc542515b6650f2c9f318af4681","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/ice/physics.js","title":"sim/particles/substances/materials/ice/physics","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/ice/reactions.md","moduleTitle":"sim/particles/substances/materials/ice/reactions","source":"engine/sim/particles/substances/materials/ice/reactions.js","import":"/engine/sim/particles/substances/materials/ice/reactions.js","sourceHash":"1ce97456f0376ba71a966467c068bc4c4111d7918b5868521311b498475f0fea","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/ice/reactions.js","title":"sim/particles/substances/materials/ice/reactions","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/ice/spell.md","moduleTitle":"sim/particles/substances/materials/ice/spell","source":"engine/sim/particles/substances/materials/ice/spell.js","import":"/engine/sim/particles/substances/materials/ice/spell.js","sourceHash":"f5a19de8dd6dad62020e1515ff63b5b70e2cdc7ba72dfc06c95192fa8163ed65","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/ice/spell.js","title":"sim/particles/substances/materials/ice/spell","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/ice/sph.md","moduleTitle":"sim/particles/substances/materials/ice/sph","source":"engine/sim/particles/substances/materials/ice/sph.js","import":"/engine/sim/particles/substances/materials/ice/sph.js","sourceHash":"420fd4e2984de17f6e1c96eda767d734342383e48607274f8a9b137a7352e9d4","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/ice/sph.js","title":"sim/particles/substances/materials/ice/sph","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/ice/thermal.md","moduleTitle":"sim/particles/substances/materials/ice/thermal","source":"engine/sim/particles/substances/materials/ice/thermal.js","import":"/engine/sim/particles/substances/materials/ice/thermal.js","sourceHash":"7c34cf70f06ba337632932ce4d687a8fa0802ef35cf94ca542498de3d5ba333d","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/ice/thermal.js","title":"sim/particles/substances/materials/ice/thermal","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/ice/visual.md","moduleTitle":"sim/particles/substances/materials/ice/visual","source":"engine/sim/particles/substances/materials/ice/visual.js","import":"/engine/sim/particles/substances/materials/ice/visual.js","sourceHash":"904b95cb709257f06695a1e4f3c00e047b1c9c1e61616fd08eca52ea50eec884","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/ice/visual.js","title":"sim/particles/substances/materials/ice/visual","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/index.md","moduleTitle":"sim/particles/substances/materials/index","source":"engine/sim/particles/substances/materials/index.js","import":"/engine/sim/particles/substances/materials/index.js","sourceHash":"3b05954e9f732b2b426dd2c1a846b5759dbb0f5ca035b01ba0250af26ae9f588","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/index.js","title":"sim/particles/substances/materials/index","summary":"materials/index.js — Auto-registers all substance definitions with SubstanceRegistry. Import this file to ensure all built-in substances are registered. Each substance folder exports a default object assembled from its sub-files.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/index.md","moduleTitle":"sim/particles/substances/materials/index","source":"engine/sim/particles/substances/materials/index.js","import":"/engine/sim/particles/substances/materials/index.js","sourceHash":"3b05954e9f732b2b426dd2c1a846b5759dbb0f5ca035b01ba0250af26ae9f588","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/particles/substances/materials/index.js#0000:ALL_SUBSTANCES","exportIndex":0,"name":"ALL_SUBSTANCES","kind":"re-export","signature":"ALL_SUBSTANCES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/lava/audio.md","moduleTitle":"sim/particles/substances/materials/lava/audio","source":"engine/sim/particles/substances/materials/lava/audio.js","import":"/engine/sim/particles/substances/materials/lava/audio.js","sourceHash":"99cbe55b5684de7916d12d2062f4ff7c9af5fd1d9013c7b268188f4f84460d6b","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/lava/audio.js","title":"sim/particles/substances/materials/lava/audio","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/lava/chemistry.md","moduleTitle":"sim/particles/substances/materials/lava/chemistry","source":"engine/sim/particles/substances/materials/lava/chemistry.js","import":"/engine/sim/particles/substances/materials/lava/chemistry.js","sourceHash":"9ec1ec2e724dfb0a3449d160b55c828451f29d4376ce349050e4cc88ce7c6b54","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/lava/chemistry.js","title":"sim/particles/substances/materials/lava/chemistry","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/lava/decals.md","moduleTitle":"sim/particles/substances/materials/lava/decals","source":"engine/sim/particles/substances/materials/lava/decals.js","import":"/engine/sim/particles/substances/materials/lava/decals.js","sourceHash":"a755beedb92ab9dd0056130bd2d473a91ae2e733b17a44fbe637d3a545c8d8df","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/lava/decals.js","title":"sim/particles/substances/materials/lava/decals","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/lava/emitter.md","moduleTitle":"sim/particles/substances/materials/lava/emitter","source":"engine/sim/particles/substances/materials/lava/emitter.js","import":"/engine/sim/particles/substances/materials/lava/emitter.js","sourceHash":"7a38043ab22c5194d6ba9e2efddbd2c23c8f183910dd8a4363ec2ae75a9976ab","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/lava/emitter.js","title":"sim/particles/substances/materials/lava/emitter","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/lava/identity.md","moduleTitle":"sim/particles/substances/materials/lava/identity","source":"engine/sim/particles/substances/materials/lava/identity.js","import":"/engine/sim/particles/substances/materials/lava/identity.js","sourceHash":"b198ba7417e2fbc3a2501844df17995e314a7c6ad92819f481367b0db19026a9","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/lava/identity.js","title":"sim/particles/substances/materials/lava/identity","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/lava/index.md","moduleTitle":"sim/particles/substances/materials/lava/index","source":"engine/sim/particles/substances/materials/lava/index.js","import":"/engine/sim/particles/substances/materials/lava/index.js","sourceHash":"11f7e1b13b541a1b143f598b4f5b2022bce4624c4128dd292354a7ae5ab9735e","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/lava/index.js","title":"sim/particles/substances/materials/lava/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/lava/physics.md","moduleTitle":"sim/particles/substances/materials/lava/physics","source":"engine/sim/particles/substances/materials/lava/physics.js","import":"/engine/sim/particles/substances/materials/lava/physics.js","sourceHash":"adc5712a98872908d513c2a9ce9ee1a8222dfef4435fec47b18b5c91e21c26a9","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/lava/physics.js","title":"sim/particles/substances/materials/lava/physics","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/lava/reactions.md","moduleTitle":"sim/particles/substances/materials/lava/reactions","source":"engine/sim/particles/substances/materials/lava/reactions.js","import":"/engine/sim/particles/substances/materials/lava/reactions.js","sourceHash":"2fbf22a36a90702730b4543e6544fb2bbb971b74200d13570fc74e1ae8acca21","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/lava/reactions.js","title":"sim/particles/substances/materials/lava/reactions","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/lava/spell.md","moduleTitle":"sim/particles/substances/materials/lava/spell","source":"engine/sim/particles/substances/materials/lava/spell.js","import":"/engine/sim/particles/substances/materials/lava/spell.js","sourceHash":"e2842d9795437574d16ff048f4662780a3c4504027f5ac089194c9f60bc312e3","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/lava/spell.js","title":"sim/particles/substances/materials/lava/spell","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/lava/sph.md","moduleTitle":"sim/particles/substances/materials/lava/sph","source":"engine/sim/particles/substances/materials/lava/sph.js","import":"/engine/sim/particles/substances/materials/lava/sph.js","sourceHash":"bbd15a58eb3a346900c3b0274bea19e90edf917d20225bcc22bccf595833f602","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/lava/sph.js","title":"sim/particles/substances/materials/lava/sph","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/lava/thermal.md","moduleTitle":"sim/particles/substances/materials/lava/thermal","source":"engine/sim/particles/substances/materials/lava/thermal.js","import":"/engine/sim/particles/substances/materials/lava/thermal.js","sourceHash":"4e7b0d917a9f9998454620177d1aeb8b11db9ed81802948f9b8a3d5894d0173c","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/lava/thermal.js","title":"sim/particles/substances/materials/lava/thermal","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/lava/visual.md","moduleTitle":"sim/particles/substances/materials/lava/visual","source":"engine/sim/particles/substances/materials/lava/visual.js","import":"/engine/sim/particles/substances/materials/lava/visual.js","sourceHash":"f37fa763968ab1f3617971a6f276eac7e40fa07d6bcd79218b85b6a74655d698","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/lava/visual.js","title":"sim/particles/substances/materials/lava/visual","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/mercury/audio.md","moduleTitle":"sim/particles/substances/materials/mercury/audio","source":"engine/sim/particles/substances/materials/mercury/audio.js","import":"/engine/sim/particles/substances/materials/mercury/audio.js","sourceHash":"5c9e76e038e5d34387f1fed104e06277320d8f74db6237e05fd247a4284b300a","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/mercury/audio.js","title":"sim/particles/substances/materials/mercury/audio","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/mercury/chemistry.md","moduleTitle":"sim/particles/substances/materials/mercury/chemistry","source":"engine/sim/particles/substances/materials/mercury/chemistry.js","import":"/engine/sim/particles/substances/materials/mercury/chemistry.js","sourceHash":"902ed78183358567b4fb8cca8277a0045e26d89724e9b4f307e41595ca4db337","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/mercury/chemistry.js","title":"sim/particles/substances/materials/mercury/chemistry","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/mercury/decals.md","moduleTitle":"sim/particles/substances/materials/mercury/decals","source":"engine/sim/particles/substances/materials/mercury/decals.js","import":"/engine/sim/particles/substances/materials/mercury/decals.js","sourceHash":"547b9c0add00abee6ae43cf157bba92854dc14a746aee7820e742df0a8b0ff66","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/mercury/decals.js","title":"sim/particles/substances/materials/mercury/decals","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/mercury/emitter.md","moduleTitle":"sim/particles/substances/materials/mercury/emitter","source":"engine/sim/particles/substances/materials/mercury/emitter.js","import":"/engine/sim/particles/substances/materials/mercury/emitter.js","sourceHash":"faa15094eddf0d5d2490b9bf2408f94e2787d3a8361a9d1262bde2c0bdef7548","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/mercury/emitter.js","title":"sim/particles/substances/materials/mercury/emitter","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/mercury/identity.md","moduleTitle":"sim/particles/substances/materials/mercury/identity","source":"engine/sim/particles/substances/materials/mercury/identity.js","import":"/engine/sim/particles/substances/materials/mercury/identity.js","sourceHash":"5eb6b68f5e18906c0ea170d6992953f2115e477f5890fd7460a2bbaf31fd0867","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/mercury/identity.js","title":"sim/particles/substances/materials/mercury/identity","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/mercury/index.md","moduleTitle":"sim/particles/substances/materials/mercury/index","source":"engine/sim/particles/substances/materials/mercury/index.js","import":"/engine/sim/particles/substances/materials/mercury/index.js","sourceHash":"11f7e1b13b541a1b143f598b4f5b2022bce4624c4128dd292354a7ae5ab9735e","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/mercury/index.js","title":"sim/particles/substances/materials/mercury/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/mercury/physics.md","moduleTitle":"sim/particles/substances/materials/mercury/physics","source":"engine/sim/particles/substances/materials/mercury/physics.js","import":"/engine/sim/particles/substances/materials/mercury/physics.js","sourceHash":"bb07616b3913572e3c5d3c51057966d055e890ab30ade08fe1b1bea4779043ee","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/mercury/physics.js","title":"sim/particles/substances/materials/mercury/physics","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/mercury/reactions.md","moduleTitle":"sim/particles/substances/materials/mercury/reactions","source":"engine/sim/particles/substances/materials/mercury/reactions.js","import":"/engine/sim/particles/substances/materials/mercury/reactions.js","sourceHash":"8f00a6f210cfdbd5b2a2811370cebdd98321c9a196ed058574d6a3d30dd4b7da","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/mercury/reactions.js","title":"sim/particles/substances/materials/mercury/reactions","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/mercury/spell.md","moduleTitle":"sim/particles/substances/materials/mercury/spell","source":"engine/sim/particles/substances/materials/mercury/spell.js","import":"/engine/sim/particles/substances/materials/mercury/spell.js","sourceHash":"e7b7c25a24784b9a4721080f15293327a0df9c7bbfc18a0863be2125cbcd80e7","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/mercury/spell.js","title":"sim/particles/substances/materials/mercury/spell","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/mercury/sph.md","moduleTitle":"sim/particles/substances/materials/mercury/sph","source":"engine/sim/particles/substances/materials/mercury/sph.js","import":"/engine/sim/particles/substances/materials/mercury/sph.js","sourceHash":"8e89471cdb62d146a7e20ef3602a4aebbb86d6baa6677433e9d16122cd1bfc55","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/mercury/sph.js","title":"sim/particles/substances/materials/mercury/sph","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/mercury/thermal.md","moduleTitle":"sim/particles/substances/materials/mercury/thermal","source":"engine/sim/particles/substances/materials/mercury/thermal.js","import":"/engine/sim/particles/substances/materials/mercury/thermal.js","sourceHash":"3a01364146eb996efed0e4d432de55a6115bec6c8a021d7724644bc79889371a","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/mercury/thermal.js","title":"sim/particles/substances/materials/mercury/thermal","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/mercury/visual.md","moduleTitle":"sim/particles/substances/materials/mercury/visual","source":"engine/sim/particles/substances/materials/mercury/visual.js","import":"/engine/sim/particles/substances/materials/mercury/visual.js","sourceHash":"59768504b264f858fc4716b8c59fa792468ca53e0e4e2ed0077935734dbb9395","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/mercury/visual.js","title":"sim/particles/substances/materials/mercury/visual","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/metal/audio.md","moduleTitle":"sim/particles/substances/materials/metal/audio","source":"engine/sim/particles/substances/materials/metal/audio.js","import":"/engine/sim/particles/substances/materials/metal/audio.js","sourceHash":"67c751c7edc17919ed8cf672c4fd82baeeedc0296e16d1d5820f0458f257c0cb","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/metal/audio.js","title":"sim/particles/substances/materials/metal/audio","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/metal/chemistry.md","moduleTitle":"sim/particles/substances/materials/metal/chemistry","source":"engine/sim/particles/substances/materials/metal/chemistry.js","import":"/engine/sim/particles/substances/materials/metal/chemistry.js","sourceHash":"433010aa32c0f92d51d6424faa294ed93fc31c04b17655dbc52f082b09bebb08","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/metal/chemistry.js","title":"sim/particles/substances/materials/metal/chemistry","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/metal/decals.md","moduleTitle":"sim/particles/substances/materials/metal/decals","source":"engine/sim/particles/substances/materials/metal/decals.js","import":"/engine/sim/particles/substances/materials/metal/decals.js","sourceHash":"85afda68fcffdeab379d7a973657bd029d769afd7912031c947823203ed90a44","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/metal/decals.js","title":"sim/particles/substances/materials/metal/decals","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/metal/emitter.md","moduleTitle":"sim/particles/substances/materials/metal/emitter","source":"engine/sim/particles/substances/materials/metal/emitter.js","import":"/engine/sim/particles/substances/materials/metal/emitter.js","sourceHash":"c6ba9ea31dec38cb6e4409c4a1570ee3f5b957d8fd8e8f795c255d1101dd1d85","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/metal/emitter.js","title":"sim/particles/substances/materials/metal/emitter","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/metal/identity.md","moduleTitle":"sim/particles/substances/materials/metal/identity","source":"engine/sim/particles/substances/materials/metal/identity.js","import":"/engine/sim/particles/substances/materials/metal/identity.js","sourceHash":"89dc2d315be796ea26bfbd2a19b527dfc474d7788c8107ce3f6c6353bb15632a","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/metal/identity.js","title":"sim/particles/substances/materials/metal/identity","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/metal/index.md","moduleTitle":"sim/particles/substances/materials/metal/index","source":"engine/sim/particles/substances/materials/metal/index.js","import":"/engine/sim/particles/substances/materials/metal/index.js","sourceHash":"11f7e1b13b541a1b143f598b4f5b2022bce4624c4128dd292354a7ae5ab9735e","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/metal/index.js","title":"sim/particles/substances/materials/metal/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/metal/physics.md","moduleTitle":"sim/particles/substances/materials/metal/physics","source":"engine/sim/particles/substances/materials/metal/physics.js","import":"/engine/sim/particles/substances/materials/metal/physics.js","sourceHash":"d866d975dc82f405e0fd3dfaabdbf44c4061cb1c07f289e0fc51910a1f927f65","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/metal/physics.js","title":"sim/particles/substances/materials/metal/physics","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/metal/reactions.md","moduleTitle":"sim/particles/substances/materials/metal/reactions","source":"engine/sim/particles/substances/materials/metal/reactions.js","import":"/engine/sim/particles/substances/materials/metal/reactions.js","sourceHash":"3b4847a8e2857d4b45f0d023852f7ef7107f74f189c2de3a77c6281b6513abc5","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/metal/reactions.js","title":"sim/particles/substances/materials/metal/reactions","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/metal/spell.md","moduleTitle":"sim/particles/substances/materials/metal/spell","source":"engine/sim/particles/substances/materials/metal/spell.js","import":"/engine/sim/particles/substances/materials/metal/spell.js","sourceHash":"becb6ba739c64a8ef68b29d44fb7136cda1447be731adac6f15bbc05377ee10c","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/metal/spell.js","title":"sim/particles/substances/materials/metal/spell","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/metal/sph.md","moduleTitle":"sim/particles/substances/materials/metal/sph","source":"engine/sim/particles/substances/materials/metal/sph.js","import":"/engine/sim/particles/substances/materials/metal/sph.js","sourceHash":"9b8f588ef70baa0b0c77a7e6780c52427a55c8dae8b8c90600bd8421a69f6fe0","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/metal/sph.js","title":"sim/particles/substances/materials/metal/sph","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/metal/thermal.md","moduleTitle":"sim/particles/substances/materials/metal/thermal","source":"engine/sim/particles/substances/materials/metal/thermal.js","import":"/engine/sim/particles/substances/materials/metal/thermal.js","sourceHash":"e081fe5406ecb825d2941a762f8f83f9449a9eab3fe624d74b6ca1acfcf143e4","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/metal/thermal.js","title":"sim/particles/substances/materials/metal/thermal","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/metal/visual.md","moduleTitle":"sim/particles/substances/materials/metal/visual","source":"engine/sim/particles/substances/materials/metal/visual.js","import":"/engine/sim/particles/substances/materials/metal/visual.js","sourceHash":"124ad1785033d1d2a65ca0a665586e050a4ee1390cacf432a1b288a20b5da868","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/metal/visual.js","title":"sim/particles/substances/materials/metal/visual","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/oil/audio.md","moduleTitle":"sim/particles/substances/materials/oil/audio","source":"engine/sim/particles/substances/materials/oil/audio.js","import":"/engine/sim/particles/substances/materials/oil/audio.js","sourceHash":"9c29a6b2421c994b54bdcb330efa8889d0ff4b4587079356346241b807172ae9","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/oil/audio.js","title":"sim/particles/substances/materials/oil/audio","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/oil/chemistry.md","moduleTitle":"sim/particles/substances/materials/oil/chemistry","source":"engine/sim/particles/substances/materials/oil/chemistry.js","import":"/engine/sim/particles/substances/materials/oil/chemistry.js","sourceHash":"e5da9dbf5524da9209aa78cd4a86c7baea0c126ad3d1cb16297d32e0f87184bb","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/oil/chemistry.js","title":"sim/particles/substances/materials/oil/chemistry","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/oil/decals.md","moduleTitle":"sim/particles/substances/materials/oil/decals","source":"engine/sim/particles/substances/materials/oil/decals.js","import":"/engine/sim/particles/substances/materials/oil/decals.js","sourceHash":"491dd2330bc53b46a83b64856d8fba9fb8f5101c3934467683f3dc468e8e9d48","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/oil/decals.js","title":"sim/particles/substances/materials/oil/decals","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/oil/emitter.md","moduleTitle":"sim/particles/substances/materials/oil/emitter","source":"engine/sim/particles/substances/materials/oil/emitter.js","import":"/engine/sim/particles/substances/materials/oil/emitter.js","sourceHash":"f3a9179aa665caaadf7f676be93fd85439385a675146abaeba6847ebec1961b4","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/oil/emitter.js","title":"sim/particles/substances/materials/oil/emitter","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/oil/identity.md","moduleTitle":"sim/particles/substances/materials/oil/identity","source":"engine/sim/particles/substances/materials/oil/identity.js","import":"/engine/sim/particles/substances/materials/oil/identity.js","sourceHash":"b0e2a2ad97ad3d4b17e5a1d454dba0b8e4ca831401e4854ce7178916ec32bcec","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/oil/identity.js","title":"sim/particles/substances/materials/oil/identity","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/oil/index.md","moduleTitle":"sim/particles/substances/materials/oil/index","source":"engine/sim/particles/substances/materials/oil/index.js","import":"/engine/sim/particles/substances/materials/oil/index.js","sourceHash":"11f7e1b13b541a1b143f598b4f5b2022bce4624c4128dd292354a7ae5ab9735e","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/oil/index.js","title":"sim/particles/substances/materials/oil/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/oil/physics.md","moduleTitle":"sim/particles/substances/materials/oil/physics","source":"engine/sim/particles/substances/materials/oil/physics.js","import":"/engine/sim/particles/substances/materials/oil/physics.js","sourceHash":"3119a49550b8e3036081978f23198a4903ea15ce96289b6d073540ef1c2de8b2","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/oil/physics.js","title":"sim/particles/substances/materials/oil/physics","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/oil/reactions.md","moduleTitle":"sim/particles/substances/materials/oil/reactions","source":"engine/sim/particles/substances/materials/oil/reactions.js","import":"/engine/sim/particles/substances/materials/oil/reactions.js","sourceHash":"b61abe5ef4c636e334fd651bd07e484aa4705dde4602940acb75b10e3eb9860a","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/oil/reactions.js","title":"sim/particles/substances/materials/oil/reactions","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/oil/spell.md","moduleTitle":"sim/particles/substances/materials/oil/spell","source":"engine/sim/particles/substances/materials/oil/spell.js","import":"/engine/sim/particles/substances/materials/oil/spell.js","sourceHash":"d117abe61d91ebade8ec8c810b687a0ffc787123e928b43154d8bea7d96205f1","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/oil/spell.js","title":"sim/particles/substances/materials/oil/spell","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/oil/sph.md","moduleTitle":"sim/particles/substances/materials/oil/sph","source":"engine/sim/particles/substances/materials/oil/sph.js","import":"/engine/sim/particles/substances/materials/oil/sph.js","sourceHash":"2fa5fbf90fba177254441c2f410a018d0d4cf7f7a117c4d1d07d0f61029e181e","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/oil/sph.js","title":"sim/particles/substances/materials/oil/sph","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/oil/thermal.md","moduleTitle":"sim/particles/substances/materials/oil/thermal","source":"engine/sim/particles/substances/materials/oil/thermal.js","import":"/engine/sim/particles/substances/materials/oil/thermal.js","sourceHash":"1cedae6ea7650caf50de9e31f309255921d91aebefef67c03c44a9822ab3c7b9","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/oil/thermal.js","title":"sim/particles/substances/materials/oil/thermal","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/oil/visual.md","moduleTitle":"sim/particles/substances/materials/oil/visual","source":"engine/sim/particles/substances/materials/oil/visual.js","import":"/engine/sim/particles/substances/materials/oil/visual.js","sourceHash":"a340634a82502b8a726d1ad307b2657cfa07fe9e0eca1a7527fc998f8787656c","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/oil/visual.js","title":"sim/particles/substances/materials/oil/visual","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/plasma/audio.md","moduleTitle":"sim/particles/substances/materials/plasma/audio","source":"engine/sim/particles/substances/materials/plasma/audio.js","import":"/engine/sim/particles/substances/materials/plasma/audio.js","sourceHash":"8ea8efbb514a255fbf414069426053b63436b953c2114d3b5e6ff3f96b3e2c9d","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/plasma/audio.js","title":"sim/particles/substances/materials/plasma/audio","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/plasma/chemistry.md","moduleTitle":"sim/particles/substances/materials/plasma/chemistry","source":"engine/sim/particles/substances/materials/plasma/chemistry.js","import":"/engine/sim/particles/substances/materials/plasma/chemistry.js","sourceHash":"80a73c4fd427fce91eebebe390c74c50c119e5be7ec6b695aa728394dd4ab9d6","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/plasma/chemistry.js","title":"sim/particles/substances/materials/plasma/chemistry","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/plasma/decals.md","moduleTitle":"sim/particles/substances/materials/plasma/decals","source":"engine/sim/particles/substances/materials/plasma/decals.js","import":"/engine/sim/particles/substances/materials/plasma/decals.js","sourceHash":"0f48b1fe24a9c1a8a360b2a590d9b9b8e5ff4dfa4ec15ae3011e6f377f09d4c1","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/plasma/decals.js","title":"sim/particles/substances/materials/plasma/decals","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/plasma/emitter.md","moduleTitle":"sim/particles/substances/materials/plasma/emitter","source":"engine/sim/particles/substances/materials/plasma/emitter.js","import":"/engine/sim/particles/substances/materials/plasma/emitter.js","sourceHash":"a3aec70bf84349bde7dd7c3a279d77bc3931cd97dddce2e90e8b731fa7013142","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/plasma/emitter.js","title":"sim/particles/substances/materials/plasma/emitter","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/plasma/identity.md","moduleTitle":"sim/particles/substances/materials/plasma/identity","source":"engine/sim/particles/substances/materials/plasma/identity.js","import":"/engine/sim/particles/substances/materials/plasma/identity.js","sourceHash":"8d6724518e9130853b4a14c21100b8862aeb173ef977695b65f8881c3b811327","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/plasma/identity.js","title":"sim/particles/substances/materials/plasma/identity","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/plasma/index.md","moduleTitle":"sim/particles/substances/materials/plasma/index","source":"engine/sim/particles/substances/materials/plasma/index.js","import":"/engine/sim/particles/substances/materials/plasma/index.js","sourceHash":"11f7e1b13b541a1b143f598b4f5b2022bce4624c4128dd292354a7ae5ab9735e","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/plasma/index.js","title":"sim/particles/substances/materials/plasma/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/plasma/physics.md","moduleTitle":"sim/particles/substances/materials/plasma/physics","source":"engine/sim/particles/substances/materials/plasma/physics.js","import":"/engine/sim/particles/substances/materials/plasma/physics.js","sourceHash":"d936e33c19d102f12aaa84c2ead6b8cde36c9b1786bc17082d81d8b8aac6ae20","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/plasma/physics.js","title":"sim/particles/substances/materials/plasma/physics","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/plasma/reactions.md","moduleTitle":"sim/particles/substances/materials/plasma/reactions","source":"engine/sim/particles/substances/materials/plasma/reactions.js","import":"/engine/sim/particles/substances/materials/plasma/reactions.js","sourceHash":"e3a67960385f8a045c61045b193f6905863701ffd737adbdc1976a16675388f4","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/plasma/reactions.js","title":"sim/particles/substances/materials/plasma/reactions","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/plasma/spell.md","moduleTitle":"sim/particles/substances/materials/plasma/spell","source":"engine/sim/particles/substances/materials/plasma/spell.js","import":"/engine/sim/particles/substances/materials/plasma/spell.js","sourceHash":"ebfff341ed23b671c80782c5d9362e2a3d93e4f828fc926229b4128b62b6b0c4","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/plasma/spell.js","title":"sim/particles/substances/materials/plasma/spell","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/plasma/sph.md","moduleTitle":"sim/particles/substances/materials/plasma/sph","source":"engine/sim/particles/substances/materials/plasma/sph.js","import":"/engine/sim/particles/substances/materials/plasma/sph.js","sourceHash":"d01e0b897d6eea9d7191bd12b836303394fee3ec5b2bdd1c8fed01613e2cc56d","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/plasma/sph.js","title":"sim/particles/substances/materials/plasma/sph","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/plasma/thermal.md","moduleTitle":"sim/particles/substances/materials/plasma/thermal","source":"engine/sim/particles/substances/materials/plasma/thermal.js","import":"/engine/sim/particles/substances/materials/plasma/thermal.js","sourceHash":"195c20cd8d7b817c7ccdc7750b4b5596a1cb2fa557238b84df5f0e8985b3d6c5","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/plasma/thermal.js","title":"sim/particles/substances/materials/plasma/thermal","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/plasma/visual.md","moduleTitle":"sim/particles/substances/materials/plasma/visual","source":"engine/sim/particles/substances/materials/plasma/visual.js","import":"/engine/sim/particles/substances/materials/plasma/visual.js","sourceHash":"a9562688e979b604e9b8911e99f38cdb5f255d28721c461c7608a5081d36bcbb","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/plasma/visual.js","title":"sim/particles/substances/materials/plasma/visual","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/sand/audio.md","moduleTitle":"sim/particles/substances/materials/sand/audio","source":"engine/sim/particles/substances/materials/sand/audio.js","import":"/engine/sim/particles/substances/materials/sand/audio.js","sourceHash":"09586f539c046036cf438243ed67b099989fe6117835beaef8bcd39156263f9c","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/sand/audio.js","title":"sim/particles/substances/materials/sand/audio","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/sand/chemistry.md","moduleTitle":"sim/particles/substances/materials/sand/chemistry","source":"engine/sim/particles/substances/materials/sand/chemistry.js","import":"/engine/sim/particles/substances/materials/sand/chemistry.js","sourceHash":"9ec1ec2e724dfb0a3449d160b55c828451f29d4376ce349050e4cc88ce7c6b54","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/sand/chemistry.js","title":"sim/particles/substances/materials/sand/chemistry","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/sand/decals.md","moduleTitle":"sim/particles/substances/materials/sand/decals","source":"engine/sim/particles/substances/materials/sand/decals.js","import":"/engine/sim/particles/substances/materials/sand/decals.js","sourceHash":"0940bdf9e97fd911eed29601a48c14fca5d493747d98e019ba063607ff046872","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/sand/decals.js","title":"sim/particles/substances/materials/sand/decals","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/sand/emitter.md","moduleTitle":"sim/particles/substances/materials/sand/emitter","source":"engine/sim/particles/substances/materials/sand/emitter.js","import":"/engine/sim/particles/substances/materials/sand/emitter.js","sourceHash":"bb4715ad6c528241a6ad17b45cb257c5163d799c36c1e77eca4d3d361c5ff36f","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/sand/emitter.js","title":"sim/particles/substances/materials/sand/emitter","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/sand/identity.md","moduleTitle":"sim/particles/substances/materials/sand/identity","source":"engine/sim/particles/substances/materials/sand/identity.js","import":"/engine/sim/particles/substances/materials/sand/identity.js","sourceHash":"112908d65d0761865e0e3aecd43f85f4ec24880d68c54d60293f454ddf8042e4","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/sand/identity.js","title":"sim/particles/substances/materials/sand/identity","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/sand/index.md","moduleTitle":"sim/particles/substances/materials/sand/index","source":"engine/sim/particles/substances/materials/sand/index.js","import":"/engine/sim/particles/substances/materials/sand/index.js","sourceHash":"11f7e1b13b541a1b143f598b4f5b2022bce4624c4128dd292354a7ae5ab9735e","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/sand/index.js","title":"sim/particles/substances/materials/sand/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/sand/physics.md","moduleTitle":"sim/particles/substances/materials/sand/physics","source":"engine/sim/particles/substances/materials/sand/physics.js","import":"/engine/sim/particles/substances/materials/sand/physics.js","sourceHash":"aef030e5fc85c9a5be6970b7138f40e861891c2b2bae4785f23fda5d8b08a9bc","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/sand/physics.js","title":"sim/particles/substances/materials/sand/physics","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/sand/reactions.md","moduleTitle":"sim/particles/substances/materials/sand/reactions","source":"engine/sim/particles/substances/materials/sand/reactions.js","import":"/engine/sim/particles/substances/materials/sand/reactions.js","sourceHash":"dfe5c12b7a4de8325ecffb91eafc6d2295d3f7a3633c845c0ae1d452c422d3f5","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/sand/reactions.js","title":"sim/particles/substances/materials/sand/reactions","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/sand/spell.md","moduleTitle":"sim/particles/substances/materials/sand/spell","source":"engine/sim/particles/substances/materials/sand/spell.js","import":"/engine/sim/particles/substances/materials/sand/spell.js","sourceHash":"91e22ddf248a18fd375d0cef965c74fe49ea15f2f44aaf72d620b8939d32ad0e","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/sand/spell.js","title":"sim/particles/substances/materials/sand/spell","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/sand/sph.md","moduleTitle":"sim/particles/substances/materials/sand/sph","source":"engine/sim/particles/substances/materials/sand/sph.js","import":"/engine/sim/particles/substances/materials/sand/sph.js","sourceHash":"ff093c67acd1b750ed1d33954fc8d168182327c7567e4eadb92259d047448f9e","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/sand/sph.js","title":"sim/particles/substances/materials/sand/sph","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/sand/thermal.md","moduleTitle":"sim/particles/substances/materials/sand/thermal","source":"engine/sim/particles/substances/materials/sand/thermal.js","import":"/engine/sim/particles/substances/materials/sand/thermal.js","sourceHash":"1fdce1b2a665d51c18994faad6eb8ddc4a604d7f9b771b98d4ba718c2d267327","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/sand/thermal.js","title":"sim/particles/substances/materials/sand/thermal","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/sand/visual.md","moduleTitle":"sim/particles/substances/materials/sand/visual","source":"engine/sim/particles/substances/materials/sand/visual.js","import":"/engine/sim/particles/substances/materials/sand/visual.js","sourceHash":"c80aa5e34abced8b5eb7d23b4e96101d1d59a0d8bd90915ccff6ddc14fc18e6f","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/sand/visual.js","title":"sim/particles/substances/materials/sand/visual","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/smoke/audio.md","moduleTitle":"sim/particles/substances/materials/smoke/audio","source":"engine/sim/particles/substances/materials/smoke/audio.js","import":"/engine/sim/particles/substances/materials/smoke/audio.js","sourceHash":"b50db4c034712354e056f01fa3d1c3bb42c6e4aa9bc10d06bd4fa8e5078cf13f","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/smoke/audio.js","title":"sim/particles/substances/materials/smoke/audio","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/smoke/chemistry.md","moduleTitle":"sim/particles/substances/materials/smoke/chemistry","source":"engine/sim/particles/substances/materials/smoke/chemistry.js","import":"/engine/sim/particles/substances/materials/smoke/chemistry.js","sourceHash":"84874534aadefdeb690be05d92f0a7ebd4ecf2a2e5429f0ec7cebf945acd56f6","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/smoke/chemistry.js","title":"sim/particles/substances/materials/smoke/chemistry","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/smoke/decals.md","moduleTitle":"sim/particles/substances/materials/smoke/decals","source":"engine/sim/particles/substances/materials/smoke/decals.js","import":"/engine/sim/particles/substances/materials/smoke/decals.js","sourceHash":"9fa5670d3b70562935caff4e435ab5d2b9426fd0e596b394fc8e0d5e73d1f783","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/smoke/decals.js","title":"sim/particles/substances/materials/smoke/decals","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/smoke/emitter.md","moduleTitle":"sim/particles/substances/materials/smoke/emitter","source":"engine/sim/particles/substances/materials/smoke/emitter.js","import":"/engine/sim/particles/substances/materials/smoke/emitter.js","sourceHash":"6e97af19eca2a4a77107dc2d1569d64c7a2a20ecd9d504b054c2d94542e8b831","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/smoke/emitter.js","title":"sim/particles/substances/materials/smoke/emitter","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/smoke/identity.md","moduleTitle":"sim/particles/substances/materials/smoke/identity","source":"engine/sim/particles/substances/materials/smoke/identity.js","import":"/engine/sim/particles/substances/materials/smoke/identity.js","sourceHash":"8c8a9ba67dbe32c230fd9942fcba50a82ced07c613a63498dcda0d7885a35d13","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/smoke/identity.js","title":"sim/particles/substances/materials/smoke/identity","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/smoke/index.md","moduleTitle":"sim/particles/substances/materials/smoke/index","source":"engine/sim/particles/substances/materials/smoke/index.js","import":"/engine/sim/particles/substances/materials/smoke/index.js","sourceHash":"11f7e1b13b541a1b143f598b4f5b2022bce4624c4128dd292354a7ae5ab9735e","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/smoke/index.js","title":"sim/particles/substances/materials/smoke/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/smoke/physics.md","moduleTitle":"sim/particles/substances/materials/smoke/physics","source":"engine/sim/particles/substances/materials/smoke/physics.js","import":"/engine/sim/particles/substances/materials/smoke/physics.js","sourceHash":"a0efb42aa36354deb991ed248dbcaccf32076356af3847f0d6013df6b2919237","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/smoke/physics.js","title":"sim/particles/substances/materials/smoke/physics","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/smoke/reactions.md","moduleTitle":"sim/particles/substances/materials/smoke/reactions","source":"engine/sim/particles/substances/materials/smoke/reactions.js","import":"/engine/sim/particles/substances/materials/smoke/reactions.js","sourceHash":"e3a67960385f8a045c61045b193f6905863701ffd737adbdc1976a16675388f4","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/smoke/reactions.js","title":"sim/particles/substances/materials/smoke/reactions","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/smoke/spell.md","moduleTitle":"sim/particles/substances/materials/smoke/spell","source":"engine/sim/particles/substances/materials/smoke/spell.js","import":"/engine/sim/particles/substances/materials/smoke/spell.js","sourceHash":"53399a68a3c8ff906291c15c43abbf5cd19853917a633c52a2d9ac8b200edf73","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/smoke/spell.js","title":"sim/particles/substances/materials/smoke/spell","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/smoke/sph.md","moduleTitle":"sim/particles/substances/materials/smoke/sph","source":"engine/sim/particles/substances/materials/smoke/sph.js","import":"/engine/sim/particles/substances/materials/smoke/sph.js","sourceHash":"d01e0b897d6eea9d7191bd12b836303394fee3ec5b2bdd1c8fed01613e2cc56d","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/smoke/sph.js","title":"sim/particles/substances/materials/smoke/sph","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/smoke/thermal.md","moduleTitle":"sim/particles/substances/materials/smoke/thermal","source":"engine/sim/particles/substances/materials/smoke/thermal.js","import":"/engine/sim/particles/substances/materials/smoke/thermal.js","sourceHash":"e8d2eba0356531df009f88050a864bda57f22ea2299e4a33ea59b8e61cd5439a","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/smoke/thermal.js","title":"sim/particles/substances/materials/smoke/thermal","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/smoke/visual.md","moduleTitle":"sim/particles/substances/materials/smoke/visual","source":"engine/sim/particles/substances/materials/smoke/visual.js","import":"/engine/sim/particles/substances/materials/smoke/visual.js","sourceHash":"db84296e164e475d83413db1552e88278f1d2348c4ffca0300f8ec7e732cc98f","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/smoke/visual.js","title":"sim/particles/substances/materials/smoke/visual","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/snow/audio.md","moduleTitle":"sim/particles/substances/materials/snow/audio","source":"engine/sim/particles/substances/materials/snow/audio.js","import":"/engine/sim/particles/substances/materials/snow/audio.js","sourceHash":"ae641a3aee2fd83161ea60ae804d94356caf2f9bfac66c7a13238e99d4607e4b","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/snow/audio.js","title":"sim/particles/substances/materials/snow/audio","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/snow/chemistry.md","moduleTitle":"sim/particles/substances/materials/snow/chemistry","source":"engine/sim/particles/substances/materials/snow/chemistry.js","import":"/engine/sim/particles/substances/materials/snow/chemistry.js","sourceHash":"cc0bdc2d1d97712c71c31f40f48ff372d257f3ec5053f7b8333992d492773890","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/snow/chemistry.js","title":"sim/particles/substances/materials/snow/chemistry","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/snow/decals.md","moduleTitle":"sim/particles/substances/materials/snow/decals","source":"engine/sim/particles/substances/materials/snow/decals.js","import":"/engine/sim/particles/substances/materials/snow/decals.js","sourceHash":"2075f61ce1c11404770539d35371bf220d203815f6964fd9356f4b2f3804fc58","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/snow/decals.js","title":"sim/particles/substances/materials/snow/decals","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/snow/emitter.md","moduleTitle":"sim/particles/substances/materials/snow/emitter","source":"engine/sim/particles/substances/materials/snow/emitter.js","import":"/engine/sim/particles/substances/materials/snow/emitter.js","sourceHash":"911fd0901e7a758153595f7b76106964012e40f04a288edd16ebf9afd32ae17e","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/snow/emitter.js","title":"sim/particles/substances/materials/snow/emitter","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/snow/identity.md","moduleTitle":"sim/particles/substances/materials/snow/identity","source":"engine/sim/particles/substances/materials/snow/identity.js","import":"/engine/sim/particles/substances/materials/snow/identity.js","sourceHash":"817c8cc6ea57b427687b0f4c7f17471543dc3e6129295cc089ee9ddbaec0eb90","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/snow/identity.js","title":"sim/particles/substances/materials/snow/identity","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/snow/index.md","moduleTitle":"sim/particles/substances/materials/snow/index","source":"engine/sim/particles/substances/materials/snow/index.js","import":"/engine/sim/particles/substances/materials/snow/index.js","sourceHash":"11f7e1b13b541a1b143f598b4f5b2022bce4624c4128dd292354a7ae5ab9735e","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/snow/index.js","title":"sim/particles/substances/materials/snow/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/snow/physics.md","moduleTitle":"sim/particles/substances/materials/snow/physics","source":"engine/sim/particles/substances/materials/snow/physics.js","import":"/engine/sim/particles/substances/materials/snow/physics.js","sourceHash":"73dd4d03bccc50302f7f9478f970a83c97e6d62e5b73dbb061a591d9b4fe576b","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/snow/physics.js","title":"sim/particles/substances/materials/snow/physics","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/snow/reactions.md","moduleTitle":"sim/particles/substances/materials/snow/reactions","source":"engine/sim/particles/substances/materials/snow/reactions.js","import":"/engine/sim/particles/substances/materials/snow/reactions.js","sourceHash":"7385e4c70f6a92c923df306789e9582cc689e690485fe658da07560431acf253","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/snow/reactions.js","title":"sim/particles/substances/materials/snow/reactions","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/snow/spell.md","moduleTitle":"sim/particles/substances/materials/snow/spell","source":"engine/sim/particles/substances/materials/snow/spell.js","import":"/engine/sim/particles/substances/materials/snow/spell.js","sourceHash":"aa460e8c3d5fcbd161f23f52ecc68bfb2390bbf7d346627623ebb1e6e9077d61","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/snow/spell.js","title":"sim/particles/substances/materials/snow/spell","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/snow/sph.md","moduleTitle":"sim/particles/substances/materials/snow/sph","source":"engine/sim/particles/substances/materials/snow/sph.js","import":"/engine/sim/particles/substances/materials/snow/sph.js","sourceHash":"59a5fa01723cc267e03be44725a615c562546b927bd3af933b5eb42c4bb0372a","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/snow/sph.js","title":"sim/particles/substances/materials/snow/sph","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/snow/thermal.md","moduleTitle":"sim/particles/substances/materials/snow/thermal","source":"engine/sim/particles/substances/materials/snow/thermal.js","import":"/engine/sim/particles/substances/materials/snow/thermal.js","sourceHash":"f7bd5fb425992aedf4571f7976976f456e3f6bda4c20a724318be0a8e9dbdf4d","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/snow/thermal.js","title":"sim/particles/substances/materials/snow/thermal","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/snow/visual.md","moduleTitle":"sim/particles/substances/materials/snow/visual","source":"engine/sim/particles/substances/materials/snow/visual.js","import":"/engine/sim/particles/substances/materials/snow/visual.js","sourceHash":"88677d42a742a121492712f85e9c17ebe0c274cdb097114f38e1ad692c723337","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/snow/visual.js","title":"sim/particles/substances/materials/snow/visual","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/sparks/audio.md","moduleTitle":"sim/particles/substances/materials/sparks/audio","source":"engine/sim/particles/substances/materials/sparks/audio.js","import":"/engine/sim/particles/substances/materials/sparks/audio.js","sourceHash":"ee321c51874fbc79e202ad918850e051a56ef6ad6e6e9e324b1f111b35f5c1f3","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/sparks/audio.js","title":"sim/particles/substances/materials/sparks/audio","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/sparks/chemistry.md","moduleTitle":"sim/particles/substances/materials/sparks/chemistry","source":"engine/sim/particles/substances/materials/sparks/chemistry.js","import":"/engine/sim/particles/substances/materials/sparks/chemistry.js","sourceHash":"433010aa32c0f92d51d6424faa294ed93fc31c04b17655dbc52f082b09bebb08","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/sparks/chemistry.js","title":"sim/particles/substances/materials/sparks/chemistry","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/sparks/decals.md","moduleTitle":"sim/particles/substances/materials/sparks/decals","source":"engine/sim/particles/substances/materials/sparks/decals.js","import":"/engine/sim/particles/substances/materials/sparks/decals.js","sourceHash":"35fc167edf9e3b8fa4de0bbf6ac28dc83391c06688462d9c48f86eef8b3b917b","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/sparks/decals.js","title":"sim/particles/substances/materials/sparks/decals","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/sparks/emitter.md","moduleTitle":"sim/particles/substances/materials/sparks/emitter","source":"engine/sim/particles/substances/materials/sparks/emitter.js","import":"/engine/sim/particles/substances/materials/sparks/emitter.js","sourceHash":"fe2c77feca636a4518f55ac7e8c34cda1bcdad4a122cf8d9a9893f78feba439e","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/sparks/emitter.js","title":"sim/particles/substances/materials/sparks/emitter","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/sparks/identity.md","moduleTitle":"sim/particles/substances/materials/sparks/identity","source":"engine/sim/particles/substances/materials/sparks/identity.js","import":"/engine/sim/particles/substances/materials/sparks/identity.js","sourceHash":"e290afa99344c23712503d5ddf32ea58be9b9c503179393050a1a7d7ab12ef1a","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/sparks/identity.js","title":"sim/particles/substances/materials/sparks/identity","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/sparks/index.md","moduleTitle":"sim/particles/substances/materials/sparks/index","source":"engine/sim/particles/substances/materials/sparks/index.js","import":"/engine/sim/particles/substances/materials/sparks/index.js","sourceHash":"11f7e1b13b541a1b143f598b4f5b2022bce4624c4128dd292354a7ae5ab9735e","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/sparks/index.js","title":"sim/particles/substances/materials/sparks/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/sparks/physics.md","moduleTitle":"sim/particles/substances/materials/sparks/physics","source":"engine/sim/particles/substances/materials/sparks/physics.js","import":"/engine/sim/particles/substances/materials/sparks/physics.js","sourceHash":"2af754bc2c2091400b61a7b5e5134b415f89e4afab04b0bc35484d5e39df21c2","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/sparks/physics.js","title":"sim/particles/substances/materials/sparks/physics","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/sparks/reactions.md","moduleTitle":"sim/particles/substances/materials/sparks/reactions","source":"engine/sim/particles/substances/materials/sparks/reactions.js","import":"/engine/sim/particles/substances/materials/sparks/reactions.js","sourceHash":"e3a67960385f8a045c61045b193f6905863701ffd737adbdc1976a16675388f4","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/sparks/reactions.js","title":"sim/particles/substances/materials/sparks/reactions","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/sparks/spell.md","moduleTitle":"sim/particles/substances/materials/sparks/spell","source":"engine/sim/particles/substances/materials/sparks/spell.js","import":"/engine/sim/particles/substances/materials/sparks/spell.js","sourceHash":"665a2713adbeba987b69f6b10b7ed3b7b268b14a3bfdf843afe65d59ea8ccf90","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/sparks/spell.js","title":"sim/particles/substances/materials/sparks/spell","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/sparks/sph.md","moduleTitle":"sim/particles/substances/materials/sparks/sph","source":"engine/sim/particles/substances/materials/sparks/sph.js","import":"/engine/sim/particles/substances/materials/sparks/sph.js","sourceHash":"d01e0b897d6eea9d7191bd12b836303394fee3ec5b2bdd1c8fed01613e2cc56d","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/sparks/sph.js","title":"sim/particles/substances/materials/sparks/sph","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/sparks/thermal.md","moduleTitle":"sim/particles/substances/materials/sparks/thermal","source":"engine/sim/particles/substances/materials/sparks/thermal.js","import":"/engine/sim/particles/substances/materials/sparks/thermal.js","sourceHash":"1304be92ab86d682b1b04e83dcc1c2ceb68642d044736ccd732c304e2bd94920","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/sparks/thermal.js","title":"sim/particles/substances/materials/sparks/thermal","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/sparks/visual.md","moduleTitle":"sim/particles/substances/materials/sparks/visual","source":"engine/sim/particles/substances/materials/sparks/visual.js","import":"/engine/sim/particles/substances/materials/sparks/visual.js","sourceHash":"a52418de92fbe0a73d4b5919d86044b6fbda388a7c3051c2591b4f40ed5392b7","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/sparks/visual.js","title":"sim/particles/substances/materials/sparks/visual","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/steam/audio.md","moduleTitle":"sim/particles/substances/materials/steam/audio","source":"engine/sim/particles/substances/materials/steam/audio.js","import":"/engine/sim/particles/substances/materials/steam/audio.js","sourceHash":"fe1460b471cbea9b17432ab8b317909640d5de1971644915dfa4a562606219eb","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/steam/audio.js","title":"sim/particles/substances/materials/steam/audio","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/steam/chemistry.md","moduleTitle":"sim/particles/substances/materials/steam/chemistry","source":"engine/sim/particles/substances/materials/steam/chemistry.js","import":"/engine/sim/particles/substances/materials/steam/chemistry.js","sourceHash":"cc0bdc2d1d97712c71c31f40f48ff372d257f3ec5053f7b8333992d492773890","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/steam/chemistry.js","title":"sim/particles/substances/materials/steam/chemistry","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/steam/decals.md","moduleTitle":"sim/particles/substances/materials/steam/decals","source":"engine/sim/particles/substances/materials/steam/decals.js","import":"/engine/sim/particles/substances/materials/steam/decals.js","sourceHash":"f8f3f48dfe7c5594da75c7c8cfe5040f2acc90b0d218d3997f934cdbd5256572","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/steam/decals.js","title":"sim/particles/substances/materials/steam/decals","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/steam/emitter.md","moduleTitle":"sim/particles/substances/materials/steam/emitter","source":"engine/sim/particles/substances/materials/steam/emitter.js","import":"/engine/sim/particles/substances/materials/steam/emitter.js","sourceHash":"f6c5e488ae3ac0dbf8fac7c241c33bb7684861ffd49c570041a1dc37356ccad1","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/steam/emitter.js","title":"sim/particles/substances/materials/steam/emitter","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/steam/identity.md","moduleTitle":"sim/particles/substances/materials/steam/identity","source":"engine/sim/particles/substances/materials/steam/identity.js","import":"/engine/sim/particles/substances/materials/steam/identity.js","sourceHash":"e55a822f5ff16d90559c1a62ef4b3cc17544e8c89d9146e67625fcebfc6e9aad","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/steam/identity.js","title":"sim/particles/substances/materials/steam/identity","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/steam/index.md","moduleTitle":"sim/particles/substances/materials/steam/index","source":"engine/sim/particles/substances/materials/steam/index.js","import":"/engine/sim/particles/substances/materials/steam/index.js","sourceHash":"11f7e1b13b541a1b143f598b4f5b2022bce4624c4128dd292354a7ae5ab9735e","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/steam/index.js","title":"sim/particles/substances/materials/steam/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/steam/physics.md","moduleTitle":"sim/particles/substances/materials/steam/physics","source":"engine/sim/particles/substances/materials/steam/physics.js","import":"/engine/sim/particles/substances/materials/steam/physics.js","sourceHash":"fdebcdf9cd87c3ecf428e5ef4557b2945655d142dfc7567a613a68d7afa618c0","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/steam/physics.js","title":"sim/particles/substances/materials/steam/physics","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/steam/reactions.md","moduleTitle":"sim/particles/substances/materials/steam/reactions","source":"engine/sim/particles/substances/materials/steam/reactions.js","import":"/engine/sim/particles/substances/materials/steam/reactions.js","sourceHash":"79bf9a94807d40050ed9b98a0f17716f75eb496828d1a515f34c470df6308c58","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/steam/reactions.js","title":"sim/particles/substances/materials/steam/reactions","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/steam/spell.md","moduleTitle":"sim/particles/substances/materials/steam/spell","source":"engine/sim/particles/substances/materials/steam/spell.js","import":"/engine/sim/particles/substances/materials/steam/spell.js","sourceHash":"65838a79d099717aba0fd7f369442f8362e1eb790a4aee4047c48bcdd9baee3a","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/steam/spell.js","title":"sim/particles/substances/materials/steam/spell","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/steam/sph.md","moduleTitle":"sim/particles/substances/materials/steam/sph","source":"engine/sim/particles/substances/materials/steam/sph.js","import":"/engine/sim/particles/substances/materials/steam/sph.js","sourceHash":"d01e0b897d6eea9d7191bd12b836303394fee3ec5b2bdd1c8fed01613e2cc56d","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/steam/sph.js","title":"sim/particles/substances/materials/steam/sph","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/steam/thermal.md","moduleTitle":"sim/particles/substances/materials/steam/thermal","source":"engine/sim/particles/substances/materials/steam/thermal.js","import":"/engine/sim/particles/substances/materials/steam/thermal.js","sourceHash":"858f76917b47b3c0624bfe346fcd13a097647205a1b7dfdabfc681926d1c665f","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/steam/thermal.js","title":"sim/particles/substances/materials/steam/thermal","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/steam/visual.md","moduleTitle":"sim/particles/substances/materials/steam/visual","source":"engine/sim/particles/substances/materials/steam/visual.js","import":"/engine/sim/particles/substances/materials/steam/visual.js","sourceHash":"0e7f5e6b99fe861611acfff174fd745128098d0962a14060bd343aae7ee641fe","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/steam/visual.js","title":"sim/particles/substances/materials/steam/visual","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/stone/audio.md","moduleTitle":"sim/particles/substances/materials/stone/audio","source":"engine/sim/particles/substances/materials/stone/audio.js","import":"/engine/sim/particles/substances/materials/stone/audio.js","sourceHash":"13a21038180a55236eb3515a50adc9e3dbbdce72bb8d92c0ad1fc8da700224a3","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/stone/audio.js","title":"sim/particles/substances/materials/stone/audio","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/stone/chemistry.md","moduleTitle":"sim/particles/substances/materials/stone/chemistry","source":"engine/sim/particles/substances/materials/stone/chemistry.js","import":"/engine/sim/particles/substances/materials/stone/chemistry.js","sourceHash":"9ec1ec2e724dfb0a3449d160b55c828451f29d4376ce349050e4cc88ce7c6b54","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/stone/chemistry.js","title":"sim/particles/substances/materials/stone/chemistry","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/stone/decals.md","moduleTitle":"sim/particles/substances/materials/stone/decals","source":"engine/sim/particles/substances/materials/stone/decals.js","import":"/engine/sim/particles/substances/materials/stone/decals.js","sourceHash":"34d92b9fb1d37edf3c42d533535e77d8cdee2274ced6e0ff1a17e28923b90e25","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/stone/decals.js","title":"sim/particles/substances/materials/stone/decals","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/stone/emitter.md","moduleTitle":"sim/particles/substances/materials/stone/emitter","source":"engine/sim/particles/substances/materials/stone/emitter.js","import":"/engine/sim/particles/substances/materials/stone/emitter.js","sourceHash":"b44b4e264c374658f71d18cd9d359baee6a3c61f1355878ed72b267e6ece3436","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/stone/emitter.js","title":"sim/particles/substances/materials/stone/emitter","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/stone/identity.md","moduleTitle":"sim/particles/substances/materials/stone/identity","source":"engine/sim/particles/substances/materials/stone/identity.js","import":"/engine/sim/particles/substances/materials/stone/identity.js","sourceHash":"a3b9648e770428364c9a80b7ea3be5917fa8e2f59a99b66089a60e7ff2d95c7b","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/stone/identity.js","title":"sim/particles/substances/materials/stone/identity","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/stone/index.md","moduleTitle":"sim/particles/substances/materials/stone/index","source":"engine/sim/particles/substances/materials/stone/index.js","import":"/engine/sim/particles/substances/materials/stone/index.js","sourceHash":"11f7e1b13b541a1b143f598b4f5b2022bce4624c4128dd292354a7ae5ab9735e","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/stone/index.js","title":"sim/particles/substances/materials/stone/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/stone/physics.md","moduleTitle":"sim/particles/substances/materials/stone/physics","source":"engine/sim/particles/substances/materials/stone/physics.js","import":"/engine/sim/particles/substances/materials/stone/physics.js","sourceHash":"e98491edd414e29ac7da1bc3935aa136946009877a93f46b72800c84d346731b","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/stone/physics.js","title":"sim/particles/substances/materials/stone/physics","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/stone/reactions.md","moduleTitle":"sim/particles/substances/materials/stone/reactions","source":"engine/sim/particles/substances/materials/stone/reactions.js","import":"/engine/sim/particles/substances/materials/stone/reactions.js","sourceHash":"b79fb6f98f498b8ca9149efd302a8287c33174c4b7a36a141d4c17b88f16de02","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/stone/reactions.js","title":"sim/particles/substances/materials/stone/reactions","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/stone/spell.md","moduleTitle":"sim/particles/substances/materials/stone/spell","source":"engine/sim/particles/substances/materials/stone/spell.js","import":"/engine/sim/particles/substances/materials/stone/spell.js","sourceHash":"e284fb97686237ddf096c9aa225d6d976e7c58e4eb6d25e724d5aad00d99d62b","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/stone/spell.js","title":"sim/particles/substances/materials/stone/spell","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/stone/sph.md","moduleTitle":"sim/particles/substances/materials/stone/sph","source":"engine/sim/particles/substances/materials/stone/sph.js","import":"/engine/sim/particles/substances/materials/stone/sph.js","sourceHash":"9d758336deaf224f570ab529b726619bca146558c41e1e7405503d55f0a53452","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/stone/sph.js","title":"sim/particles/substances/materials/stone/sph","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/stone/thermal.md","moduleTitle":"sim/particles/substances/materials/stone/thermal","source":"engine/sim/particles/substances/materials/stone/thermal.js","import":"/engine/sim/particles/substances/materials/stone/thermal.js","sourceHash":"60bddfb22670d3c1527b7d4e58632c8a4e9dfa5469044b6f97e69972b86319af","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/stone/thermal.js","title":"sim/particles/substances/materials/stone/thermal","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/stone/visual.md","moduleTitle":"sim/particles/substances/materials/stone/visual","source":"engine/sim/particles/substances/materials/stone/visual.js","import":"/engine/sim/particles/substances/materials/stone/visual.js","sourceHash":"339081b6ae3b56935c77d1750789e2696f2994dd39e05de1e9cbe540318a99a7","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/stone/visual.js","title":"sim/particles/substances/materials/stone/visual","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/water/audio.md","moduleTitle":"sim/particles/substances/materials/water/audio","source":"engine/sim/particles/substances/materials/water/audio.js","import":"/engine/sim/particles/substances/materials/water/audio.js","sourceHash":"d26f3ebc6fa14b3f56e9dfb8d83d5039d5fca6c182f1e1405a8f3073c0c1aece","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/water/audio.js","title":"sim/particles/substances/materials/water/audio","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/water/chemistry.md","moduleTitle":"sim/particles/substances/materials/water/chemistry","source":"engine/sim/particles/substances/materials/water/chemistry.js","import":"/engine/sim/particles/substances/materials/water/chemistry.js","sourceHash":"cc0bdc2d1d97712c71c31f40f48ff372d257f3ec5053f7b8333992d492773890","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/water/chemistry.js","title":"sim/particles/substances/materials/water/chemistry","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/water/decals.md","moduleTitle":"sim/particles/substances/materials/water/decals","source":"engine/sim/particles/substances/materials/water/decals.js","import":"/engine/sim/particles/substances/materials/water/decals.js","sourceHash":"0538b9e3e82a5287ac44f2f96b9cce85908d1e5d973bd41d1d6355980c47100e","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/water/decals.js","title":"sim/particles/substances/materials/water/decals","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/water/emitter.md","moduleTitle":"sim/particles/substances/materials/water/emitter","source":"engine/sim/particles/substances/materials/water/emitter.js","import":"/engine/sim/particles/substances/materials/water/emitter.js","sourceHash":"51ca05a89c831da0f0b7389901b671374388475bb22d1aa4620c63cba60e6f36","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/water/emitter.js","title":"sim/particles/substances/materials/water/emitter","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/water/identity.md","moduleTitle":"sim/particles/substances/materials/water/identity","source":"engine/sim/particles/substances/materials/water/identity.js","import":"/engine/sim/particles/substances/materials/water/identity.js","sourceHash":"e3dca444f99ddd49ee71c82a57f96b4d033b93978ebc4160cbd2b85ac58c4f89","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/water/identity.js","title":"sim/particles/substances/materials/water/identity","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/water/index.md","moduleTitle":"sim/particles/substances/materials/water/index","source":"engine/sim/particles/substances/materials/water/index.js","import":"/engine/sim/particles/substances/materials/water/index.js","sourceHash":"11f7e1b13b541a1b143f598b4f5b2022bce4624c4128dd292354a7ae5ab9735e","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/water/index.js","title":"sim/particles/substances/materials/water/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/water/physics.md","moduleTitle":"sim/particles/substances/materials/water/physics","source":"engine/sim/particles/substances/materials/water/physics.js","import":"/engine/sim/particles/substances/materials/water/physics.js","sourceHash":"8174b1a302d4ca010c13cb336f29271e8077a4f668ffc49d3012cc7545da7a3b","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/water/physics.js","title":"sim/particles/substances/materials/water/physics","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/water/reactions.md","moduleTitle":"sim/particles/substances/materials/water/reactions","source":"engine/sim/particles/substances/materials/water/reactions.js","import":"/engine/sim/particles/substances/materials/water/reactions.js","sourceHash":"05ceaa994fc260e0c17ebcfac8e650a9d2ffdb9a69fc985d253952f065d55450","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/water/reactions.js","title":"sim/particles/substances/materials/water/reactions","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/water/spell.md","moduleTitle":"sim/particles/substances/materials/water/spell","source":"engine/sim/particles/substances/materials/water/spell.js","import":"/engine/sim/particles/substances/materials/water/spell.js","sourceHash":"09ca75f97be7c97fda27748f9c0041eafc9e3e2b70002718f7ee7c28fd20fc14","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/water/spell.js","title":"sim/particles/substances/materials/water/spell","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/water/sph.md","moduleTitle":"sim/particles/substances/materials/water/sph","source":"engine/sim/particles/substances/materials/water/sph.js","import":"/engine/sim/particles/substances/materials/water/sph.js","sourceHash":"dcef15a8db414311379ab6c7ee47a7d74adda427a1043a3d137643588ec3817b","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/water/sph.js","title":"sim/particles/substances/materials/water/sph","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/water/thermal.md","moduleTitle":"sim/particles/substances/materials/water/thermal","source":"engine/sim/particles/substances/materials/water/thermal.js","import":"/engine/sim/particles/substances/materials/water/thermal.js","sourceHash":"7868bc2656836e88a2ff90c2b8545ee03ef56c606ec6107585259572851d4749","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/water/thermal.js","title":"sim/particles/substances/materials/water/thermal","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/water/visual.md","moduleTitle":"sim/particles/substances/materials/water/visual","source":"engine/sim/particles/substances/materials/water/visual.js","import":"/engine/sim/particles/substances/materials/water/visual.js","sourceHash":"39eacd4baf16d2d254b4ccf0fe95203711244bb85d5f2cd48b6d9817054088a4","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/water/visual.js","title":"sim/particles/substances/materials/water/visual","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/wax/audio.md","moduleTitle":"sim/particles/substances/materials/wax/audio","source":"engine/sim/particles/substances/materials/wax/audio.js","import":"/engine/sim/particles/substances/materials/wax/audio.js","sourceHash":"48c8450e7873287843b4477815f39ba16444189773e4401e2da2535aa3a3b412","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/wax/audio.js","title":"sim/particles/substances/materials/wax/audio","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/wax/chemistry.md","moduleTitle":"sim/particles/substances/materials/wax/chemistry","source":"engine/sim/particles/substances/materials/wax/chemistry.js","import":"/engine/sim/particles/substances/materials/wax/chemistry.js","sourceHash":"413ba9c326c5b632af5c70408bac1bd5ac91071d9469f6121b77caebdbd282b4","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/wax/chemistry.js","title":"sim/particles/substances/materials/wax/chemistry","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/wax/decals.md","moduleTitle":"sim/particles/substances/materials/wax/decals","source":"engine/sim/particles/substances/materials/wax/decals.js","import":"/engine/sim/particles/substances/materials/wax/decals.js","sourceHash":"0cd79c91fe84e787d122c551df48ee40a8f2a788dccf9f9738568ebdd0671d01","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/wax/decals.js","title":"sim/particles/substances/materials/wax/decals","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/wax/emitter.md","moduleTitle":"sim/particles/substances/materials/wax/emitter","source":"engine/sim/particles/substances/materials/wax/emitter.js","import":"/engine/sim/particles/substances/materials/wax/emitter.js","sourceHash":"58bfbdd7b520b4b86249326f55bb7f297e82d8ceb81cc6ec764447eaab9b6ba5","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/wax/emitter.js","title":"sim/particles/substances/materials/wax/emitter","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/wax/identity.md","moduleTitle":"sim/particles/substances/materials/wax/identity","source":"engine/sim/particles/substances/materials/wax/identity.js","import":"/engine/sim/particles/substances/materials/wax/identity.js","sourceHash":"d553b0a3dfef8fbf1eaff305ed295bf3826ec336cc9fe7de4e18e70dca732b60","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/wax/identity.js","title":"sim/particles/substances/materials/wax/identity","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/wax/index.md","moduleTitle":"sim/particles/substances/materials/wax/index","source":"engine/sim/particles/substances/materials/wax/index.js","import":"/engine/sim/particles/substances/materials/wax/index.js","sourceHash":"11f7e1b13b541a1b143f598b4f5b2022bce4624c4128dd292354a7ae5ab9735e","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/wax/index.js","title":"sim/particles/substances/materials/wax/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/wax/physics.md","moduleTitle":"sim/particles/substances/materials/wax/physics","source":"engine/sim/particles/substances/materials/wax/physics.js","import":"/engine/sim/particles/substances/materials/wax/physics.js","sourceHash":"525a09b646a3fe6f85e37682cb1d64d274860c1360a2db2d72441d8365439ab1","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/wax/physics.js","title":"sim/particles/substances/materials/wax/physics","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/wax/reactions.md","moduleTitle":"sim/particles/substances/materials/wax/reactions","source":"engine/sim/particles/substances/materials/wax/reactions.js","import":"/engine/sim/particles/substances/materials/wax/reactions.js","sourceHash":"c07a32932408c241d860d6aab5b3c980ef5920d30de30658daee27e1a4302dbc","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/wax/reactions.js","title":"sim/particles/substances/materials/wax/reactions","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/wax/spell.md","moduleTitle":"sim/particles/substances/materials/wax/spell","source":"engine/sim/particles/substances/materials/wax/spell.js","import":"/engine/sim/particles/substances/materials/wax/spell.js","sourceHash":"a0a50c83fea6e8fe0a307966d9b195ffbd13c10a0dca94ac1aa368a1ba69bf11","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/wax/spell.js","title":"sim/particles/substances/materials/wax/spell","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/wax/sph.md","moduleTitle":"sim/particles/substances/materials/wax/sph","source":"engine/sim/particles/substances/materials/wax/sph.js","import":"/engine/sim/particles/substances/materials/wax/sph.js","sourceHash":"cabf8105eeb23c7f6a9493a68485a43848eafabe6c6e8ee41d4e941f7c0b923c","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/wax/sph.js","title":"sim/particles/substances/materials/wax/sph","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/wax/thermal.md","moduleTitle":"sim/particles/substances/materials/wax/thermal","source":"engine/sim/particles/substances/materials/wax/thermal.js","import":"/engine/sim/particles/substances/materials/wax/thermal.js","sourceHash":"2b2ad3dc7f16ba9e0880f51f36fc7290375f4d5e1755e183c26804a860c8c39a","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/wax/thermal.js","title":"sim/particles/substances/materials/wax/thermal","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/wax/visual.md","moduleTitle":"sim/particles/substances/materials/wax/visual","source":"engine/sim/particles/substances/materials/wax/visual.js","import":"/engine/sim/particles/substances/materials/wax/visual.js","sourceHash":"5e70a160f17530606a405f90ada19075ba8e8f15cc607d9b53017d88b453e412","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/wax/visual.js","title":"sim/particles/substances/materials/wax/visual","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/wood/audio.md","moduleTitle":"sim/particles/substances/materials/wood/audio","source":"engine/sim/particles/substances/materials/wood/audio.js","import":"/engine/sim/particles/substances/materials/wood/audio.js","sourceHash":"9dbd99b9d422d30df4d70af7760882cb475baf3138dbf8fac1bea6678258f16a","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/wood/audio.js","title":"sim/particles/substances/materials/wood/audio","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/wood/chemistry.md","moduleTitle":"sim/particles/substances/materials/wood/chemistry","source":"engine/sim/particles/substances/materials/wood/chemistry.js","import":"/engine/sim/particles/substances/materials/wood/chemistry.js","sourceHash":"413ba9c326c5b632af5c70408bac1bd5ac91071d9469f6121b77caebdbd282b4","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/wood/chemistry.js","title":"sim/particles/substances/materials/wood/chemistry","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/wood/decals.md","moduleTitle":"sim/particles/substances/materials/wood/decals","source":"engine/sim/particles/substances/materials/wood/decals.js","import":"/engine/sim/particles/substances/materials/wood/decals.js","sourceHash":"d9aeae455817d3655ae1873e5f68fe656d670d215b7eda84842e758e8269a2a9","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/wood/decals.js","title":"sim/particles/substances/materials/wood/decals","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/wood/emitter.md","moduleTitle":"sim/particles/substances/materials/wood/emitter","source":"engine/sim/particles/substances/materials/wood/emitter.js","import":"/engine/sim/particles/substances/materials/wood/emitter.js","sourceHash":"da295741b45276a4b8f584831fd4b1eec9a17f9b49690b68423cacab60b67791","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/wood/emitter.js","title":"sim/particles/substances/materials/wood/emitter","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/wood/identity.md","moduleTitle":"sim/particles/substances/materials/wood/identity","source":"engine/sim/particles/substances/materials/wood/identity.js","import":"/engine/sim/particles/substances/materials/wood/identity.js","sourceHash":"f03767f97810dd1aae4487477d0253027c0e959d723339dd8da85c3b6353fedf","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/wood/identity.js","title":"sim/particles/substances/materials/wood/identity","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/wood/index.md","moduleTitle":"sim/particles/substances/materials/wood/index","source":"engine/sim/particles/substances/materials/wood/index.js","import":"/engine/sim/particles/substances/materials/wood/index.js","sourceHash":"11f7e1b13b541a1b143f598b4f5b2022bce4624c4128dd292354a7ae5ab9735e","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/wood/index.js","title":"sim/particles/substances/materials/wood/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/wood/physics.md","moduleTitle":"sim/particles/substances/materials/wood/physics","source":"engine/sim/particles/substances/materials/wood/physics.js","import":"/engine/sim/particles/substances/materials/wood/physics.js","sourceHash":"b42652b7ea4731ebeb321ca2c0ce8605e9d82401b466557d037bf9cc0028bcd7","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/wood/physics.js","title":"sim/particles/substances/materials/wood/physics","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/wood/reactions.md","moduleTitle":"sim/particles/substances/materials/wood/reactions","source":"engine/sim/particles/substances/materials/wood/reactions.js","import":"/engine/sim/particles/substances/materials/wood/reactions.js","sourceHash":"2a0d646fdf00ea353a9ee34fc98850d76e5cae29354c505da145b22e64493fe0","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/wood/reactions.js","title":"sim/particles/substances/materials/wood/reactions","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/wood/spell.md","moduleTitle":"sim/particles/substances/materials/wood/spell","source":"engine/sim/particles/substances/materials/wood/spell.js","import":"/engine/sim/particles/substances/materials/wood/spell.js","sourceHash":"5a3da0bf2092de6b056b05d99e067cedbf4b413c78a7363fcc1a321ffefeba55","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/wood/spell.js","title":"sim/particles/substances/materials/wood/spell","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/wood/sph.md","moduleTitle":"sim/particles/substances/materials/wood/sph","source":"engine/sim/particles/substances/materials/wood/sph.js","import":"/engine/sim/particles/substances/materials/wood/sph.js","sourceHash":"d01e0b897d6eea9d7191bd12b836303394fee3ec5b2bdd1c8fed01613e2cc56d","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/wood/sph.js","title":"sim/particles/substances/materials/wood/sph","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/wood/thermal.md","moduleTitle":"sim/particles/substances/materials/wood/thermal","source":"engine/sim/particles/substances/materials/wood/thermal.js","import":"/engine/sim/particles/substances/materials/wood/thermal.js","sourceHash":"1bde9448d52207715b57d46caf5670c690e8dd0829e8962f661437019b7073a9","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/wood/thermal.js","title":"sim/particles/substances/materials/wood/thermal","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/substances/materials/wood/visual.md","moduleTitle":"sim/particles/substances/materials/wood/visual","source":"engine/sim/particles/substances/materials/wood/visual.js","import":"/engine/sim/particles/substances/materials/wood/visual.js","sourceHash":"96f27fff1aa28b668e7526e26195df97818be209cc04671b1fd5e0957ea684c0","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/substances/materials/wood/visual.js","title":"sim/particles/substances/materials/wood/visual","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/particles/thermal/index.md","moduleTitle":"sim/particles/thermal/index","source":"engine/sim/particles/thermal/index.js","import":"/engine/sim/particles/thermal/index.js","sourceHash":"e5a61b0e7abcb90e1c8d58513a729d6561b590640b0b820ddd416f588e7c394e","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/particles/thermal/index.js","title":"sim/particles/thermal/index","summary":"thermal/index.js — Re-exports for heat, phase transitions, and chemistry.","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/ConnectivityCompute.md","moduleTitle":"sim/physics/ConnectivityCompute","source":"engine/sim/physics/ConnectivityCompute.js","import":"/engine/sim/physics/ConnectivityCompute.js","sourceHash":"014bfd2481478190885f6809df41d1d31f1b9cd85d0b56d146d2e4c4715b0a4a","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/ConnectivityCompute.js","title":"sim/physics/ConnectivityCompute","summary":"ConnectivityCompute.js - GPU-Accelerated Voxel Connectivity Analysis Problem: When voxels are destroyed, we need to detect which parts are still connected to anchors (ground) vs floating (should fall). CPU flood-fill is O(n) and too slow for real-time destruction. Solution: GPU wave propagation using ping-pong buffers. Each iteration, voxels adopt the minimum component ID of their neighbors. After log(n) iterations, all connected voxels share the same ID. Algorithm: 1. Initialize: Each solid voxel gets unique ID, anchors get ID=1 2. Propagate: Each voxel takes min(self, neighbors) if solid 3. Repeat until no changes (typically 10-20 iterations for 32³) 4. Result: All voxels connected to anchors have ID=1, others form islands Performance Target: <1ms for 32³ chunk (10-20 iterations)","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/ConnectivityCompute.md","moduleTitle":"sim/physics/ConnectivityCompute","source":"engine/sim/physics/ConnectivityCompute.js","import":"/engine/sim/physics/ConnectivityCompute.js","sourceHash":"014bfd2481478190885f6809df41d1d31f1b9cd85d0b56d146d2e4c4715b0a4a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/ConnectivityCompute.js#0000:ConnectivityCompute","exportIndex":0,"name":"ConnectivityCompute","kind":"class","signature":"class ConnectivityCompute","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/ConnectivityCompute.md","moduleTitle":"sim/physics/ConnectivityCompute","source":"engine/sim/physics/ConnectivityCompute.js","import":"/engine/sim/physics/ConnectivityCompute.js","sourceHash":"014bfd2481478190885f6809df41d1d31f1b9cd85d0b56d146d2e4c4715b0a4a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/ConnectivityCompute.js#0001:indexTo3D","exportIndex":1,"name":"indexTo3D","kind":"function","signature":"indexTo3D(idx, size)","summary":"Convert 1D index to 3D position"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/ConnectivityCompute.md","moduleTitle":"sim/physics/ConnectivityCompute","source":"engine/sim/physics/ConnectivityCompute.js","import":"/engine/sim/physics/ConnectivityCompute.js","sourceHash":"014bfd2481478190885f6809df41d1d31f1b9cd85d0b56d146d2e4c4715b0a4a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/ConnectivityCompute.js#0002:positionToIndex","exportIndex":2,"name":"positionToIndex","kind":"function","signature":"positionToIndex(x, y, z, size)","summary":"Convert 3D position to 1D index"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/ConnectivityCompute.md","moduleTitle":"sim/physics/ConnectivityCompute","source":"engine/sim/physics/ConnectivityCompute.js","import":"/engine/sim/physics/ConnectivityCompute.js","sourceHash":"014bfd2481478190885f6809df41d1d31f1b9cd85d0b56d146d2e4c4715b0a4a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/ConnectivityCompute.js#0003:MAX_ITERATIONS","exportIndex":3,"name":"MAX_ITERATIONS","kind":"constant","signature":"MAX_ITERATIONS","summary":"Maximum iterations before forcing stop (prevents infinite loops)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/ConnectivityCompute.md","moduleTitle":"sim/physics/ConnectivityCompute","source":"engine/sim/physics/ConnectivityCompute.js","import":"/engine/sim/physics/ConnectivityCompute.js","sourceHash":"014bfd2481478190885f6809df41d1d31f1b9cd85d0b56d146d2e4c4715b0a4a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/ConnectivityCompute.js#0004:WORKGROUP_SIZE","exportIndex":4,"name":"WORKGROUP_SIZE","kind":"constant","signature":"WORKGROUP_SIZE","summary":"Workgroup size for compute shaders"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/ConnectivityCompute.md","moduleTitle":"sim/physics/ConnectivityCompute","source":"engine/sim/physics/ConnectivityCompute.js","import":"/engine/sim/physics/ConnectivityCompute.js","sourceHash":"014bfd2481478190885f6809df41d1d31f1b9cd85d0b56d146d2e4c4715b0a4a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/ConnectivityCompute.js#0005:ANCHOR_COMPONENT_ID","exportIndex":5,"name":"ANCHOR_COMPONENT_ID","kind":"constant","signature":"ANCHOR_COMPONENT_ID","summary":"Component ID for anchored voxels (ground, supports)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/ConnectivityCompute.md","moduleTitle":"sim/physics/ConnectivityCompute","source":"engine/sim/physics/ConnectivityCompute.js","import":"/engine/sim/physics/ConnectivityCompute.js","sourceHash":"014bfd2481478190885f6809df41d1d31f1b9cd85d0b56d146d2e4c4715b0a4a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/ConnectivityCompute.js#0006:EMPTY_COMPONENT_ID","exportIndex":6,"name":"EMPTY_COMPONENT_ID","kind":"constant","signature":"EMPTY_COMPONENT_ID","summary":"Component ID for empty/air voxels"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/ConvexDecomposition.md","moduleTitle":"sim/physics/ConvexDecomposition","source":"engine/sim/physics/ConvexDecomposition.js","import":"/engine/sim/physics/ConvexDecomposition.js","sourceHash":"ff54f4f794001bc44949754b575d5b6c82e4a9f09840f11243f0fa34476e3995","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/ConvexDecomposition.js","title":"sim/physics/ConvexDecomposition","summary":"ConvexDecomposition.js - V-HACD Style Convex Decomposition Implements Volumetric Hierarchical Approximate Convex Decomposition (V-HACD) for breaking concave meshes into convex pieces suitable for physics collision. This is essential for: - Complex mesh colliders (characters, vehicles, props) - Hollow objects (cups, bowls, tubes) - Concave terrain features The algorithm: 1. Voxelize the mesh at a given resolution 2. Recursively split voxel regions using optimal cutting planes 3. Compute convex hulls for each region 4. Simplify hulls to reduce vertex count","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/ConvexDecomposition.md","moduleTitle":"sim/physics/ConvexDecomposition","source":"engine/sim/physics/ConvexDecomposition.js","import":"/engine/sim/physics/ConvexDecomposition.js","sourceHash":"ff54f4f794001bc44949754b575d5b6c82e4a9f09840f11243f0fa34476e3995","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/ConvexDecomposition.js#0000:voxelizeMesh","exportIndex":0,"name":"voxelizeMesh","kind":"function","signature":"voxelizeMesh(vertices, indices, resolution = 64)","summary":"Voxelize a mesh into a 3D grid"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/ConvexDecomposition.md","moduleTitle":"sim/physics/ConvexDecomposition","source":"engine/sim/physics/ConvexDecomposition.js","import":"/engine/sim/physics/ConvexDecomposition.js","sourceHash":"ff54f4f794001bc44949754b575d5b6c82e4a9f09840f11243f0fa34476e3995","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/ConvexDecomposition.js#0001:decomposeMesh","exportIndex":1,"name":"decomposeMesh","kind":"function","signature":"decomposeMesh(vertices, indices, options = {})","summary":"Decompose a mesh into convex hulls"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/ConvexDecomposition.md","moduleTitle":"sim/physics/ConvexDecomposition","source":"engine/sim/physics/ConvexDecomposition.js","import":"/engine/sim/physics/ConvexDecomposition.js","sourceHash":"ff54f4f794001bc44949754b575d5b6c82e4a9f09840f11243f0fa34476e3995","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/ConvexDecomposition.js#0002:hullsToCompoundCollider","exportIndex":2,"name":"hullsToCompoundCollider","kind":"function","signature":"hullsToCompoundCollider(hulls)","summary":"Convert decomposition result to PhysX compound collider format"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/ConvexDecomposition.md","moduleTitle":"sim/physics/ConvexDecomposition","source":"engine/sim/physics/ConvexDecomposition.js","import":"/engine/sim/physics/ConvexDecomposition.js","sourceHash":"ff54f4f794001bc44949754b575d5b6c82e4a9f09840f11243f0fa34476e3995","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/ConvexDecomposition.js#0003:createDecomposedCollider","exportIndex":3,"name":"createDecomposedCollider","kind":"function","signature":"createDecomposedCollider(vertices, indices, options = {})","summary":"High-level function: Decompose mesh and create PhysX collider"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/ConvexDecomposition.md","moduleTitle":"sim/physics/ConvexDecomposition","source":"engine/sim/physics/ConvexDecomposition.js","import":"/engine/sim/physics/ConvexDecomposition.js","sourceHash":"ff54f4f794001bc44949754b575d5b6c82e4a9f09840f11243f0fa34476e3995","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/ConvexDecomposition.js#0004:DECOMPOSITION_DEFAULTS","exportIndex":4,"name":"DECOMPOSITION_DEFAULTS","kind":"constant","signature":"DECOMPOSITION_DEFAULTS","summary":"Default decomposition parameters"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/DynamicMeshCollider.md","moduleTitle":"sim/physics/DynamicMeshCollider","source":"engine/sim/physics/DynamicMeshCollider.js","import":"/engine/sim/physics/DynamicMeshCollider.js","sourceHash":"0e373c43c972d51ffbd7057d2b90a7345ab105af13c617a6764e9fcaa2a5151f","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/DynamicMeshCollider.js","title":"sim/physics/DynamicMeshCollider","summary":"","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/DynamicMeshCollider.md","moduleTitle":"sim/physics/DynamicMeshCollider","source":"engine/sim/physics/DynamicMeshCollider.js","import":"/engine/sim/physics/DynamicMeshCollider.js","sourceHash":"0e373c43c972d51ffbd7057d2b90a7345ab105af13c617a6764e9fcaa2a5151f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/DynamicMeshCollider.js#0000:cookMeshColliderFromVertices","exportIndex":0,"name":"cookMeshColliderFromVertices","kind":"function","signature":"cookMeshColliderFromVertices(world, meshId, positions)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/DynamicMeshCollider.md","moduleTitle":"sim/physics/DynamicMeshCollider","source":"engine/sim/physics/DynamicMeshCollider.js","import":"/engine/sim/physics/DynamicMeshCollider.js","sourceHash":"0e373c43c972d51ffbd7057d2b90a7345ab105af13c617a6764e9fcaa2a5151f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/DynamicMeshCollider.js#0001:cookMeshColliderFromRenderMesh","exportIndex":1,"name":"cookMeshColliderFromRenderMesh","kind":"function","signature":"cookMeshColliderFromRenderMesh(world, renderMesh)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/DynamicMeshCollider.md","moduleTitle":"sim/physics/DynamicMeshCollider","source":"engine/sim/physics/DynamicMeshCollider.js","import":"/engine/sim/physics/DynamicMeshCollider.js","sourceHash":"0e373c43c972d51ffbd7057d2b90a7345ab105af13c617a6764e9fcaa2a5151f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/DynamicMeshCollider.js#0002:getColliderConfigForMesh","exportIndex":2,"name":"getColliderConfigForMesh","kind":"function","signature":"getColliderConfigForMesh(meshId, halfExtents = [0.5, 0.5, 0.5])","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/DynamicMeshCollider.md","moduleTitle":"sim/physics/DynamicMeshCollider","source":"engine/sim/physics/DynamicMeshCollider.js","import":"/engine/sim/physics/DynamicMeshCollider.js","sourceHash":"0e373c43c972d51ffbd7057d2b90a7345ab105af13c617a6764e9fcaa2a5151f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/DynamicMeshCollider.js#0003:createUniversalCollider","exportIndex":3,"name":"createUniversalCollider","kind":"function","signature":"createUniversalCollider(world, meshType, geometryFn, halfExtents = [0.5, 0.5, 0.5], material = null, density = 1.0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/DynamicMeshCollider.md","moduleTitle":"sim/physics/DynamicMeshCollider","source":"engine/sim/physics/DynamicMeshCollider.js","import":"/engine/sim/physics/DynamicMeshCollider.js","sourceHash":"0e373c43c972d51ffbd7057d2b90a7345ab105af13c617a6764e9fcaa2a5151f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/DynamicMeshCollider.js#0004:clearMeshColliderCache","exportIndex":4,"name":"clearMeshColliderCache","kind":"function","signature":"clearMeshColliderCache()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/FragmentPhysics.md","moduleTitle":"sim/physics/FragmentPhysics","source":"engine/sim/physics/FragmentPhysics.js","import":"/engine/sim/physics/FragmentPhysics.js","sourceHash":"4a20e15be985dbacf32972f3b0537a167bb5c51486430d2a47f98108f30bbc0d","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/FragmentPhysics.js","title":"sim/physics/FragmentPhysics","summary":"FragmentPhysics.js - Physics Integration for Mesh Fragments Handles physics simulation for fracture fragments using PhysX. Features: - Convex hull generation for rigid body collision - Mass distribution based on volume/material - Structural connection graph for progressive collapse - Fragment → particle conversion for small pieces","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/FragmentPhysics.md","moduleTitle":"sim/physics/FragmentPhysics","source":"engine/sim/physics/FragmentPhysics.js","import":"/engine/sim/physics/FragmentPhysics.js","sourceHash":"4a20e15be985dbacf32972f3b0537a167bb5c51486430d2a47f98108f30bbc0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/FragmentPhysics.js#0000:StructuralConnection","exportIndex":0,"name":"StructuralConnection","kind":"class","signature":"class StructuralConnection","summary":"Represents a connection between two fragments"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/FragmentPhysics.md","moduleTitle":"sim/physics/FragmentPhysics","source":"engine/sim/physics/FragmentPhysics.js","import":"/engine/sim/physics/FragmentPhysics.js","sourceHash":"4a20e15be985dbacf32972f3b0537a167bb5c51486430d2a47f98108f30bbc0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/FragmentPhysics.js#0001:PhysicsFragment","exportIndex":1,"name":"PhysicsFragment","kind":"class","signature":"class PhysicsFragment","summary":"A mesh fragment with physics properties"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/FragmentPhysics.md","moduleTitle":"sim/physics/FragmentPhysics","source":"engine/sim/physics/FragmentPhysics.js","import":"/engine/sim/physics/FragmentPhysics.js","sourceHash":"4a20e15be985dbacf32972f3b0537a167bb5c51486430d2a47f98108f30bbc0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/FragmentPhysics.js#0002:FragmentManager","exportIndex":2,"name":"FragmentManager","kind":"class","signature":"class FragmentManager","summary":"Manages all physics fragments in the world"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/FragmentPhysics.md","moduleTitle":"sim/physics/FragmentPhysics","source":"engine/sim/physics/FragmentPhysics.js","import":"/engine/sim/physics/FragmentPhysics.js","sourceHash":"4a20e15be985dbacf32972f3b0537a167bb5c51486430d2a47f98108f30bbc0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/FragmentPhysics.js#0003:meshFragmentToIndexedMesh","exportIndex":3,"name":"meshFragmentToIndexedMesh","kind":"function","signature":"meshFragmentToIndexedMesh(meshFragment, options = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/GPUArticulationSolver.md","moduleTitle":"sim/physics/GPUArticulationSolver","source":"engine/sim/physics/GPUArticulationSolver.js","import":"/engine/sim/physics/GPUArticulationSolver.js","sourceHash":"72824a10a19a7714a9ddb7b374a86f492e716a4d3a390f9b3a20c8902318adfd","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/GPUArticulationSolver.js","title":"sim/physics/GPUArticulationSolver","summary":"GPUArticulationSolver.js - WebGPU Articulation Physics GPU-based articulation solver using vGPU compute shaders. Replaces PhysX WASM articulation with pure WebGPU implementation. Based on: - Stable Cosserat Rods (SIGGRAPH 2025) - Split position/rotation optimization - Direct PBD Solver for Stiff Rods (Bender et al. 2018) - XPBD compliance for stable stiffness Key Features: - Parallel Jacobi solver for position constraints - Quaternion orientation updates for twist - Graph coloring for dependency-free parallel solving - Warm starting for faster convergence","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/GPUArticulationSolver.md","moduleTitle":"sim/physics/GPUArticulationSolver","source":"engine/sim/physics/GPUArticulationSolver.js","import":"/engine/sim/physics/GPUArticulationSolver.js","sourceHash":"72824a10a19a7714a9ddb7b374a86f492e716a4d3a390f9b3a20c8902318adfd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/GPUArticulationSolver.js#0000:GPUArticulationSolver","exportIndex":0,"name":"GPUArticulationSolver","kind":"class","signature":"class GPUArticulationSolver","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/GPUArticulationSolver.md","moduleTitle":"sim/physics/GPUArticulationSolver","source":"engine/sim/physics/GPUArticulationSolver.js","import":"/engine/sim/physics/GPUArticulationSolver.js","sourceHash":"72824a10a19a7714a9ddb7b374a86f492e716a4d3a390f9b3a20c8902318adfd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/GPUArticulationSolver.js#0001:getGPUArticulationSolver","exportIndex":1,"name":"getGPUArticulationSolver","kind":"function","signature":"async getGPUArticulationSolver(device)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/GPUClothSolver.md","moduleTitle":"sim/physics/GPUClothSolver","source":"engine/sim/physics/GPUClothSolver.js","import":"/engine/sim/physics/GPUClothSolver.js","sourceHash":"40826ed9f13832484d4baa1d4e5a40d40f915c1ceceb2f36086902f526a0c63b","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/GPUClothSolver.js","title":"sim/physics/GPUClothSolver","summary":"GPU Cloth Physics Solver Position-based dynamics (PBD) solver running entirely on GPU Handles cloth, ropes, soft bodies with collision detection **Small Substeps Approach (Miles Macklin, NVIDIA 2019):** Uses 8 substeps with 1 iteration each for better stability than 1 substep with 8 iterations. This is especially important for stiff constraints like ropes and tightly-woven cloth. **OGC Contact Model (Chen et al., SIGGRAPH 2025):** Uses Offset Geometric Contact for penetration-free simulation. Barrier energy prevents penetration before it occurs, with orthogonal contact forces along face normals.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/GPUClothSolver.md","moduleTitle":"sim/physics/GPUClothSolver","source":"engine/sim/physics/GPUClothSolver.js","import":"/engine/sim/physics/GPUClothSolver.js","sourceHash":"40826ed9f13832484d4baa1d4e5a40d40f915c1ceceb2f36086902f526a0c63b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/GPUClothSolver.js#0000:GPUClothSolver","exportIndex":0,"name":"GPUClothSolver","kind":"class","signature":"class GPUClothSolver","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/GPUClothSolver.md","moduleTitle":"sim/physics/GPUClothSolver","source":"engine/sim/physics/GPUClothSolver.js","import":"/engine/sim/physics/GPUClothSolver.js","sourceHash":"40826ed9f13832484d4baa1d4e5a40d40f915c1ceceb2f36086902f526a0c63b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/GPUClothSolver.js#0001:GPU_CLOTH_DEFAULT_SUBSTEPS","exportIndex":1,"name":"GPU_CLOTH_DEFAULT_SUBSTEPS","kind":"constant","signature":"GPU_CLOTH_DEFAULT_SUBSTEPS","summary":"Default substeps (small substeps approach)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/GPUClothSolver.md","moduleTitle":"sim/physics/GPUClothSolver","source":"engine/sim/physics/GPUClothSolver.js","import":"/engine/sim/physics/GPUClothSolver.js","sourceHash":"40826ed9f13832484d4baa1d4e5a40d40f915c1ceceb2f36086902f526a0c63b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/GPUClothSolver.js#0002:GPU_CLOTH_DEFAULT_ITERATIONS","exportIndex":2,"name":"GPU_CLOTH_DEFAULT_ITERATIONS","kind":"constant","signature":"GPU_CLOTH_DEFAULT_ITERATIONS","summary":"Default iterations per substep"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/GPUSpatialHash.md","moduleTitle":"sim/physics/GPUSpatialHash","source":"engine/sim/physics/GPUSpatialHash.js","import":"/engine/sim/physics/GPUSpatialHash.js","sourceHash":"4f52be6837ec6fc9c04d0a3d29d4ac58de278558721f8404bcfecb70c61e3c04","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/GPUSpatialHash.js","title":"sim/physics/GPUSpatialHash","summary":"CPU-based spatial hash grid for physics broad-phase","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/GPUSpatialHash.md","moduleTitle":"sim/physics/GPUSpatialHash","source":"engine/sim/physics/GPUSpatialHash.js","import":"/engine/sim/physics/GPUSpatialHash.js","sourceHash":"4f52be6837ec6fc9c04d0a3d29d4ac58de278558721f8404bcfecb70c61e3c04","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/GPUSpatialHash.js#0000:SpatialHashGrid","exportIndex":0,"name":"SpatialHashGrid","kind":"class","signature":"class SpatialHashGrid","summary":"CPU-based spatial hash grid for physics broad-phase"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/GPUSpatialHash.md","moduleTitle":"sim/physics/GPUSpatialHash","source":"engine/sim/physics/GPUSpatialHash.js","import":"/engine/sim/physics/GPUSpatialHash.js","sourceHash":"4f52be6837ec6fc9c04d0a3d29d4ac58de278558721f8404bcfecb70c61e3c04","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/GPUSpatialHash.js#0001:GPUSpatialHashGrid","exportIndex":1,"name":"GPUSpatialHashGrid","kind":"class","signature":"class GPUSpatialHashGrid","summary":"GPU-accelerated spatial hash grid using WebGPU compute shaders"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/GPUSpatialHash.md","moduleTitle":"sim/physics/GPUSpatialHash","source":"engine/sim/physics/GPUSpatialHash.js","import":"/engine/sim/physics/GPUSpatialHash.js","sourceHash":"4f52be6837ec6fc9c04d0a3d29d4ac58de278558721f8404bcfecb70c61e3c04","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/GPUSpatialHash.js#0002:morton3D","exportIndex":2,"name":"morton3D","kind":"function","signature":"morton3D(x, y, z)","summary":"Calculate Morton code for 3D position"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/GPUSpatialHash.md","moduleTitle":"sim/physics/GPUSpatialHash","source":"engine/sim/physics/GPUSpatialHash.js","import":"/engine/sim/physics/GPUSpatialHash.js","sourceHash":"4f52be6837ec6fc9c04d0a3d29d4ac58de278558721f8404bcfecb70c61e3c04","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/GPUSpatialHash.js#0003:hashCell","exportIndex":3,"name":"hashCell","kind":"function","signature":"hashCell(x, y, z, tableSize)","summary":"Simple hash function for cell coordinates"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/GPUSpatialHash.md","moduleTitle":"sim/physics/GPUSpatialHash","source":"engine/sim/physics/GPUSpatialHash.js","import":"/engine/sim/physics/GPUSpatialHash.js","sourceHash":"4f52be6837ec6fc9c04d0a3d29d4ac58de278558721f8404bcfecb70c61e3c04","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/GPUSpatialHash.js#0004:createSpatialHashFromVGPU","exportIndex":4,"name":"createSpatialHashFromVGPU","kind":"function","signature":"async createSpatialHashFromVGPU(vgpu, options = {})","summary":"Factory function to create GPUSpatialHashGrid from VirtualGPU"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/MLSMPMSolver.md","moduleTitle":"sim/physics/MLSMPMSolver","source":"engine/sim/physics/MLSMPMSolver.js","import":"/engine/sim/physics/MLSMPMSolver.js","sourceHash":"bc98122123ecde5c1dec5e2d47501649a6b6eaf43091e4e6251af117b2ab051b","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/MLSMPMSolver.js","title":"sim/physics/MLSMPMSolver","summary":"MLSMPMSolver.js - Moving Least Squares Material Point Method Hybrid Lagrangian-Eulerian simulation for: - Soft body deformation (jelly, flesh) - Fracturing materials (snow, sand) - Fluid-solid interaction - Large deformation scenarios Algorithm Overview: 1. P2G (Particle to Grid): Transfer mass/momentum using quadratic B-splines 2. Grid Update: Apply forces, boundaries, compute velocities 3. G2P (Grid to Particle): Gather velocity, update deformation gradient 4. Advection: Move particles Key Features: - Fixed-point atomics for P2G scatter (WebGPU has no f32 atomics) - SoA (Structure of Arrays) for GPU coalescing - Multiple constitutive models (Neo-Hookean, Fixed Corotated, Snow) Performance Target: 100k particles < 10ms","exportCount":11}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/MLSMPMSolver.md","moduleTitle":"sim/physics/MLSMPMSolver","source":"engine/sim/physics/MLSMPMSolver.js","import":"/engine/sim/physics/MLSMPMSolver.js","sourceHash":"bc98122123ecde5c1dec5e2d47501649a6b6eaf43091e4e6251af117b2ab051b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/MLSMPMSolver.js#0000:MPMParticle","exportIndex":0,"name":"MPMParticle","kind":"class","signature":"class MPMParticle","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/MLSMPMSolver.md","moduleTitle":"sim/physics/MLSMPMSolver","source":"engine/sim/physics/MLSMPMSolver.js","import":"/engine/sim/physics/MLSMPMSolver.js","sourceHash":"bc98122123ecde5c1dec5e2d47501649a6b6eaf43091e4e6251af117b2ab051b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/MLSMPMSolver.js#0001:GridCell","exportIndex":1,"name":"GridCell","kind":"class","signature":"class GridCell","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/MLSMPMSolver.md","moduleTitle":"sim/physics/MLSMPMSolver","source":"engine/sim/physics/MLSMPMSolver.js","import":"/engine/sim/physics/MLSMPMSolver.js","sourceHash":"bc98122123ecde5c1dec5e2d47501649a6b6eaf43091e4e6251af117b2ab051b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/MLSMPMSolver.js#0002:MLSMPMSolver","exportIndex":2,"name":"MLSMPMSolver","kind":"class","signature":"class MLSMPMSolver","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/MLSMPMSolver.md","moduleTitle":"sim/physics/MLSMPMSolver","source":"engine/sim/physics/MLSMPMSolver.js","import":"/engine/sim/physics/MLSMPMSolver.js","sourceHash":"bc98122123ecde5c1dec5e2d47501649a6b6eaf43091e4e6251af117b2ab051b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/MLSMPMSolver.js#0003:quadraticBSpline","exportIndex":3,"name":"quadraticBSpline","kind":"function","signature":"quadraticBSpline(x)","summary":"Quadratic B-spline weight"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/MLSMPMSolver.md","moduleTitle":"sim/physics/MLSMPMSolver","source":"engine/sim/physics/MLSMPMSolver.js","import":"/engine/sim/physics/MLSMPMSolver.js","sourceHash":"bc98122123ecde5c1dec5e2d47501649a6b6eaf43091e4e6251af117b2ab051b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/MLSMPMSolver.js#0004:quadraticBSplineGrad","exportIndex":4,"name":"quadraticBSplineGrad","kind":"function","signature":"quadraticBSplineGrad(x)","summary":"Quadratic B-spline derivative"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/MLSMPMSolver.md","moduleTitle":"sim/physics/MLSMPMSolver","source":"engine/sim/physics/MLSMPMSolver.js","import":"/engine/sim/physics/MLSMPMSolver.js","sourceHash":"bc98122123ecde5c1dec5e2d47501649a6b6eaf43091e4e6251af117b2ab051b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/MLSMPMSolver.js#0005:computeWeight","exportIndex":5,"name":"computeWeight","kind":"function","signature":"computeWeight(px, py, pz, gx, gy, gz, cellSize = 1.0)","summary":"Compute 3D weight and gradient for a particle-grid pair"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/MLSMPMSolver.md","moduleTitle":"sim/physics/MLSMPMSolver","source":"engine/sim/physics/MLSMPMSolver.js","import":"/engine/sim/physics/MLSMPMSolver.js","sourceHash":"bc98122123ecde5c1dec5e2d47501649a6b6eaf43091e4e6251af117b2ab051b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/MLSMPMSolver.js#0006:CELL_SIZE","exportIndex":6,"name":"CELL_SIZE","kind":"constant","signature":"CELL_SIZE","summary":"Grid cell size (1 unit typical)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/MLSMPMSolver.md","moduleTitle":"sim/physics/MLSMPMSolver","source":"engine/sim/physics/MLSMPMSolver.js","import":"/engine/sim/physics/MLSMPMSolver.js","sourceHash":"bc98122123ecde5c1dec5e2d47501649a6b6eaf43091e4e6251af117b2ab051b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/MLSMPMSolver.js#0007:DEFAULT_GRID_SIZE","exportIndex":7,"name":"DEFAULT_GRID_SIZE","kind":"constant","signature":"DEFAULT_GRID_SIZE","summary":"Default grid dimensions"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/MLSMPMSolver.md","moduleTitle":"sim/physics/MLSMPMSolver","source":"engine/sim/physics/MLSMPMSolver.js","import":"/engine/sim/physics/MLSMPMSolver.js","sourceHash":"bc98122123ecde5c1dec5e2d47501649a6b6eaf43091e4e6251af117b2ab051b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/MLSMPMSolver.js#0008:SPLINE_RADIUS","exportIndex":8,"name":"SPLINE_RADIUS","kind":"constant","signature":"SPLINE_RADIUS","summary":"Quadratic B-spline support radius (3 cells)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/MLSMPMSolver.md","moduleTitle":"sim/physics/MLSMPMSolver","source":"engine/sim/physics/MLSMPMSolver.js","import":"/engine/sim/physics/MLSMPMSolver.js","sourceHash":"bc98122123ecde5c1dec5e2d47501649a6b6eaf43091e4e6251af117b2ab051b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/MLSMPMSolver.js#0009:ConstitutiveModel","exportIndex":9,"name":"ConstitutiveModel","kind":"constant","signature":"ConstitutiveModel","summary":"Constitutive model types"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/MLSMPMSolver.md","moduleTitle":"sim/physics/MLSMPMSolver","source":"engine/sim/physics/MLSMPMSolver.js","import":"/engine/sim/physics/MLSMPMSolver.js","sourceHash":"bc98122123ecde5c1dec5e2d47501649a6b6eaf43091e4e6251af117b2ab051b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/MLSMPMSolver.js#0010:MaterialPresets","exportIndex":10,"name":"MaterialPresets","kind":"constant","signature":"MaterialPresets","summary":"Material presets"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/MeshCutter.md","moduleTitle":"sim/physics/MeshCutter","source":"engine/sim/physics/MeshCutter.js","import":"/engine/sim/physics/MeshCutter.js","sourceHash":"4e675a28f966c228005ecc56e127d4aa959806dc840fac8bce7792234f861064","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/MeshCutter.js","title":"sim/physics/MeshCutter","summary":"MeshCutter.js - Mesh Cutting and Fragment Generation System Cuts meshes along Voronoi cell boundaries to create realistic fragments. Uses plane-triangle intersection to split geometry. Features: - Triangle classification (front/back/spanning) - Edge-plane intersection computation - Cap geometry generation for cut faces - UV coordinate preservation - Convex hull generation for PhysX","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/MeshCutter.md","moduleTitle":"sim/physics/MeshCutter","source":"engine/sim/physics/MeshCutter.js","import":"/engine/sim/physics/MeshCutter.js","sourceHash":"4e675a28f966c228005ecc56e127d4aa959806dc840fac8bce7792234f861064","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/MeshCutter.js#0000:Plane","exportIndex":0,"name":"Plane","kind":"class","signature":"class Plane","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/MeshCutter.md","moduleTitle":"sim/physics/MeshCutter","source":"engine/sim/physics/MeshCutter.js","import":"/engine/sim/physics/MeshCutter.js","sourceHash":"4e675a28f966c228005ecc56e127d4aa959806dc840fac8bce7792234f861064","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/MeshCutter.js#0001:Vertex","exportIndex":1,"name":"Vertex","kind":"class","signature":"class Vertex","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/MeshCutter.md","moduleTitle":"sim/physics/MeshCutter","source":"engine/sim/physics/MeshCutter.js","import":"/engine/sim/physics/MeshCutter.js","sourceHash":"4e675a28f966c228005ecc56e127d4aa959806dc840fac8bce7792234f861064","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/MeshCutter.js#0002:Triangle","exportIndex":2,"name":"Triangle","kind":"class","signature":"class Triangle","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/MeshCutter.md","moduleTitle":"sim/physics/MeshCutter","source":"engine/sim/physics/MeshCutter.js","import":"/engine/sim/physics/MeshCutter.js","sourceHash":"4e675a28f966c228005ecc56e127d4aa959806dc840fac8bce7792234f861064","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/MeshCutter.js#0003:MeshFragment","exportIndex":3,"name":"MeshFragment","kind":"class","signature":"class MeshFragment","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/MeshCutter.md","moduleTitle":"sim/physics/MeshCutter","source":"engine/sim/physics/MeshCutter.js","import":"/engine/sim/physics/MeshCutter.js","sourceHash":"4e675a28f966c228005ecc56e127d4aa959806dc840fac8bce7792234f861064","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/MeshCutter.js#0004:MeshCutter","exportIndex":4,"name":"MeshCutter","kind":"class","signature":"class MeshCutter","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/MeshDecimation.md","moduleTitle":"sim/physics/MeshDecimation","source":"engine/sim/physics/MeshDecimation.js","import":"/engine/sim/physics/MeshDecimation.js","sourceHash":"e5e606d35b579c254a29b39f96bffe783f28e9bff6a191ebb1eaa88451c6681a","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/MeshDecimation.js","title":"sim/physics/MeshDecimation","summary":"MeshDecimation.js - Mesh Simplification for Debris Reduces triangle count for debris meshes to maintain performance. Two algorithms available: 1. Grid-Based (Fast): O(n) - Good for realtime debris - Snap vertices to grid - Merge coincident vertices - Remove degenerate triangles 2. QEM (Quality): O(n log n) - Better for LOD generation - Quadric Error Metrics - Edge collapse with priority queue - Preserves shape better Performance Targets: - Grid: 10k verts → 500 verts in <1ms - QEM: 10k verts → 500 verts in <50ms","exportCount":10}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/MeshDecimation.md","moduleTitle":"sim/physics/MeshDecimation","source":"engine/sim/physics/MeshDecimation.js","import":"/engine/sim/physics/MeshDecimation.js","sourceHash":"e5e606d35b579c254a29b39f96bffe783f28e9bff6a191ebb1eaa88451c6681a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/MeshDecimation.js#0000:Vertex","exportIndex":0,"name":"Vertex","kind":"class","signature":"class Vertex","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/MeshDecimation.md","moduleTitle":"sim/physics/MeshDecimation","source":"engine/sim/physics/MeshDecimation.js","import":"/engine/sim/physics/MeshDecimation.js","sourceHash":"e5e606d35b579c254a29b39f96bffe783f28e9bff6a191ebb1eaa88451c6681a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/MeshDecimation.js#0001:Triangle","exportIndex":1,"name":"Triangle","kind":"class","signature":"class Triangle","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/MeshDecimation.md","moduleTitle":"sim/physics/MeshDecimation","source":"engine/sim/physics/MeshDecimation.js","import":"/engine/sim/physics/MeshDecimation.js","sourceHash":"e5e606d35b579c254a29b39f96bffe783f28e9bff6a191ebb1eaa88451c6681a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/MeshDecimation.js#0002:Quadric","exportIndex":2,"name":"Quadric","kind":"class","signature":"class Quadric","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/MeshDecimation.md","moduleTitle":"sim/physics/MeshDecimation","source":"engine/sim/physics/MeshDecimation.js","import":"/engine/sim/physics/MeshDecimation.js","sourceHash":"e5e606d35b579c254a29b39f96bffe783f28e9bff6a191ebb1eaa88451c6681a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/MeshDecimation.js#0003:Edge","exportIndex":3,"name":"Edge","kind":"class","signature":"class Edge","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/MeshDecimation.md","moduleTitle":"sim/physics/MeshDecimation","source":"engine/sim/physics/MeshDecimation.js","import":"/engine/sim/physics/MeshDecimation.js","sourceHash":"e5e606d35b579c254a29b39f96bffe783f28e9bff6a191ebb1eaa88451c6681a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/MeshDecimation.js#0004:MeshDecimator","exportIndex":4,"name":"MeshDecimator","kind":"class","signature":"class MeshDecimator","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/MeshDecimation.md","moduleTitle":"sim/physics/MeshDecimation","source":"engine/sim/physics/MeshDecimation.js","import":"/engine/sim/physics/MeshDecimation.js","sourceHash":"e5e606d35b579c254a29b39f96bffe783f28e9bff6a191ebb1eaa88451c6681a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/MeshDecimation.js#0005:decimateGrid","exportIndex":5,"name":"decimateGrid","kind":"function","signature":"decimateGrid(vertices, indices, gridSize = DEFAULT_GRID_SIZE)","summary":"Fast grid-based mesh decimation"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/MeshDecimation.md","moduleTitle":"sim/physics/MeshDecimation","source":"engine/sim/physics/MeshDecimation.js","import":"/engine/sim/physics/MeshDecimation.js","sourceHash":"e5e606d35b579c254a29b39f96bffe783f28e9bff6a191ebb1eaa88451c6681a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/MeshDecimation.js#0006:decimateQEM","exportIndex":6,"name":"decimateQEM","kind":"function","signature":"decimateQEM(vertices, indices, targetRatio = DEFAULT_TARGET_RATIO, maxIterations = Infinity, options = null)","summary":"QEM-based mesh decimation"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/MeshDecimation.md","moduleTitle":"sim/physics/MeshDecimation","source":"engine/sim/physics/MeshDecimation.js","import":"/engine/sim/physics/MeshDecimation.js","sourceHash":"e5e606d35b579c254a29b39f96bffe783f28e9bff6a191ebb1eaa88451c6681a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/MeshDecimation.js#0007:DEFAULT_GRID_SIZE","exportIndex":7,"name":"DEFAULT_GRID_SIZE","kind":"constant","signature":"DEFAULT_GRID_SIZE","summary":"Default grid cell size for grid-based decimation"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/MeshDecimation.md","moduleTitle":"sim/physics/MeshDecimation","source":"engine/sim/physics/MeshDecimation.js","import":"/engine/sim/physics/MeshDecimation.js","sourceHash":"e5e606d35b579c254a29b39f96bffe783f28e9bff6a191ebb1eaa88451c6681a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/MeshDecimation.js#0008:DEFAULT_TARGET_RATIO","exportIndex":8,"name":"DEFAULT_TARGET_RATIO","kind":"constant","signature":"DEFAULT_TARGET_RATIO","summary":"Default target reduction ratio"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/MeshDecimation.md","moduleTitle":"sim/physics/MeshDecimation","source":"engine/sim/physics/MeshDecimation.js","import":"/engine/sim/physics/MeshDecimation.js","sourceHash":"e5e606d35b579c254a29b39f96bffe783f28e9bff6a191ebb1eaa88451c6681a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/MeshDecimation.js#0009:MAX_QEM_ITERATIONS","exportIndex":9,"name":"MAX_QEM_ITERATIONS","kind":"constant","signature":"MAX_QEM_ITERATIONS","summary":"Maximum QEM iterations per frame (for realtime)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/MeshParticles.md","moduleTitle":"sim/physics/MeshParticles","source":"engine/sim/physics/MeshParticles.js","import":"/engine/sim/physics/MeshParticles.js","sourceHash":"bd29ab33642fda207238bb165b4bfa168468c2b280e2cc2d451cafbe42ba88b8","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/MeshParticles.js","title":"sim/physics/MeshParticles","summary":"Single debris chunk with mesh, physics, and rendering state","exportCount":10}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/MeshParticles.md","moduleTitle":"sim/physics/MeshParticles","source":"engine/sim/physics/MeshParticles.js","import":"/engine/sim/physics/MeshParticles.js","sourceHash":"bd29ab33642fda207238bb165b4bfa168468c2b280e2cc2d451cafbe42ba88b8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/MeshParticles.js#0000:DebrisParticle","exportIndex":0,"name":"DebrisParticle","kind":"class","signature":"class DebrisParticle","summary":"Single debris chunk with mesh, physics, and rendering state"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/MeshParticles.md","moduleTitle":"sim/physics/MeshParticles","source":"engine/sim/physics/MeshParticles.js","import":"/engine/sim/physics/MeshParticles.js","sourceHash":"bd29ab33642fda207238bb165b4bfa168468c2b280e2cc2d451cafbe42ba88b8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/MeshParticles.js#0001:MeshParticleSystem","exportIndex":1,"name":"MeshParticleSystem","kind":"class","signature":"class MeshParticleSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/MeshParticles.md","moduleTitle":"sim/physics/MeshParticles","source":"engine/sim/physics/MeshParticles.js","import":"/engine/sim/physics/MeshParticles.js","sourceHash":"bd29ab33642fda207238bb165b4bfa168468c2b280e2cc2d451cafbe42ba88b8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/MeshParticles.js#0002:MAX_DEBRIS_PARTICLES","exportIndex":2,"name":"MAX_DEBRIS_PARTICLES","kind":"constant","signature":"MAX_DEBRIS_PARTICLES","summary":"Maximum active debris particles"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/MeshParticles.md","moduleTitle":"sim/physics/MeshParticles","source":"engine/sim/physics/MeshParticles.js","import":"/engine/sim/physics/MeshParticles.js","sourceHash":"bd29ab33642fda207238bb165b4bfa168468c2b280e2cc2d451cafbe42ba88b8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/MeshParticles.js#0003:LOD_DISTANCES","exportIndex":3,"name":"LOD_DISTANCES","kind":"constant","signature":"LOD_DISTANCES","summary":"LOD distance thresholds"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/MeshParticles.md","moduleTitle":"sim/physics/MeshParticles","source":"engine/sim/physics/MeshParticles.js","import":"/engine/sim/physics/MeshParticles.js","sourceHash":"bd29ab33642fda207238bb165b4bfa168468c2b280e2cc2d451cafbe42ba88b8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/MeshParticles.js#0004:LOD_RATIOS","exportIndex":4,"name":"LOD_RATIOS","kind":"constant","signature":"LOD_RATIOS","summary":"LOD decimation ratios"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/MeshParticles.md","moduleTitle":"sim/physics/MeshParticles","source":"engine/sim/physics/MeshParticles.js","import":"/engine/sim/physics/MeshParticles.js","sourceHash":"bd29ab33642fda207238bb165b4bfa168468c2b280e2cc2d451cafbe42ba88b8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/MeshParticles.js#0005:MIN_CLUSTER_SIZE","exportIndex":5,"name":"MIN_CLUSTER_SIZE","kind":"constant","signature":"MIN_CLUSTER_SIZE","summary":"Minimum voxels to create debris (smaller clusters become particles)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/MeshParticles.md","moduleTitle":"sim/physics/MeshParticles","source":"engine/sim/physics/MeshParticles.js","import":"/engine/sim/physics/MeshParticles.js","sourceHash":"bd29ab33642fda207238bb165b4bfa168468c2b280e2cc2d451cafbe42ba88b8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/MeshParticles.js#0006:MAX_CLUSTER_SIZE","exportIndex":6,"name":"MAX_CLUSTER_SIZE","kind":"constant","signature":"MAX_CLUSTER_SIZE","summary":"Maximum voxels per debris chunk"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/MeshParticles.md","moduleTitle":"sim/physics/MeshParticles","source":"engine/sim/physics/MeshParticles.js","import":"/engine/sim/physics/MeshParticles.js","sourceHash":"bd29ab33642fda207238bb165b4bfa168468c2b280e2cc2d451cafbe42ba88b8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/MeshParticles.js#0007:DEFAULT_LIFETIME","exportIndex":7,"name":"DEFAULT_LIFETIME","kind":"constant","signature":"DEFAULT_LIFETIME","summary":"Debris lifetime in seconds"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/MeshParticles.md","moduleTitle":"sim/physics/MeshParticles","source":"engine/sim/physics/MeshParticles.js","import":"/engine/sim/physics/MeshParticles.js","sourceHash":"bd29ab33642fda207238bb165b4bfa168468c2b280e2cc2d451cafbe42ba88b8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/MeshParticles.js#0008:DebrisState","exportIndex":8,"name":"DebrisState","kind":"constant","signature":"DebrisState","summary":"Debris states"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/MeshParticles.md","moduleTitle":"sim/physics/MeshParticles","source":"engine/sim/physics/MeshParticles.js","import":"/engine/sim/physics/MeshParticles.js","sourceHash":"bd29ab33642fda207238bb165b4bfa168468c2b280e2cc2d451cafbe42ba88b8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/MeshParticles.js#0009:MeshParticles","exportIndex":9,"name":"MeshParticles","kind":"re-export","signature":"MeshParticles","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/OGCContact.md","moduleTitle":"sim/physics/OGCContact","source":"engine/sim/physics/OGCContact.js","import":"/engine/sim/physics/OGCContact.js","sourceHash":"199843b33037aa766ffb4d8750ad2a433b53ef85c75b079f15c97a3b9255fcc8","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/OGCContact.js","title":"sim/physics/OGCContact","summary":"OGCContact.js - Offset Geometric Contact Model Implementation of the SIGGRAPH 2025 paper: \"Offset Geometric Contact for Real-Time Simulation\" Chen et al., 2025 Key features: - Guaranteed penetration-free simulation - Orthogonal contact forces (along face normals, not radial) - Large contact radius support (2-5mm without artifacts) - No CCD required - uses conservative displacement bounds - GPU-efficient parallel local operations The offset geometry approach inflates primitives by a contact radius, computes distance to the offset surface, and applies smooth barrier energy that activates before penetration occurs.","exportCount":22}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/OGCContact.md","moduleTitle":"sim/physics/OGCContact","source":"engine/sim/physics/OGCContact.js","import":"/engine/sim/physics/OGCContact.js","sourceHash":"199843b33037aa766ffb4d8750ad2a433b53ef85c75b079f15c97a3b9255fcc8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/OGCContact.js#0000:OGCContactManager","exportIndex":0,"name":"OGCContactManager","kind":"class","signature":"class OGCContactManager","summary":"Manages OGC contacts for a simulation"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/OGCContact.md","moduleTitle":"sim/physics/OGCContact","source":"engine/sim/physics/OGCContact.js","import":"/engine/sim/physics/OGCContact.js","sourceHash":"199843b33037aa766ffb4d8750ad2a433b53ef85c75b079f15c97a3b9255fcc8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/OGCContact.js#0001:barrierEnergy","exportIndex":1,"name":"barrierEnergy","kind":"function","signature":"barrierEnergy(d, r)","summary":"OGC Barrier energy function g(d) = d²(2r - d)² Smooth C1 continuous, zero at d=0 and d=2r Maximum at d=r"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/OGCContact.md","moduleTitle":"sim/physics/OGCContact","source":"engine/sim/physics/OGCContact.js","import":"/engine/sim/physics/OGCContact.js","sourceHash":"199843b33037aa766ffb4d8750ad2a433b53ef85c75b079f15c97a3b9255fcc8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/OGCContact.js#0002:barrierForce","exportIndex":2,"name":"barrierForce","kind":"function","signature":"barrierForce(d, r)","summary":"Derivative of barrier energy: g'(d) = 2d(2r-d)(2r-2d) Used for force computation"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/OGCContact.md","moduleTitle":"sim/physics/OGCContact","source":"engine/sim/physics/OGCContact.js","import":"/engine/sim/physics/OGCContact.js","sourceHash":"199843b33037aa766ffb4d8750ad2a433b53ef85c75b079f15c97a3b9255fcc8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/OGCContact.js#0003:normalizedBarrierEnergy","exportIndex":3,"name":"normalizedBarrierEnergy","kind":"function","signature":"normalizedBarrierEnergy(d, r)","summary":"Normalized barrier energy for stability Scales to [0, 1] range with maximum at d=r"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/OGCContact.md","moduleTitle":"sim/physics/OGCContact","source":"engine/sim/physics/OGCContact.js","import":"/engine/sim/physics/OGCContact.js","sourceHash":"199843b33037aa766ffb4d8750ad2a433b53ef85c75b079f15c97a3b9255fcc8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/OGCContact.js#0004:conservativeDisplacementBound","exportIndex":4,"name":"conservativeDisplacementBound","kind":"function","signature":"conservativeDisplacementBound(currentDistance, contactRadius)","summary":"Compute conservative displacement bound for a vertex This is the maximum safe movement before barrier check is needed"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/OGCContact.md","moduleTitle":"sim/physics/OGCContact","source":"engine/sim/physics/OGCContact.js","import":"/engine/sim/physics/OGCContact.js","sourceHash":"199843b33037aa766ffb4d8750ad2a433b53ef85c75b079f15c97a3b9255fcc8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/OGCContact.js#0005:distanceToOffsetSphere","exportIndex":5,"name":"distanceToOffsetSphere","kind":"function","signature":"distanceToOffsetSphere(p, center, radius, r)","summary":"Distance from point to offset sphere (sphere with radius inflated by r)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/OGCContact.md","moduleTitle":"sim/physics/OGCContact","source":"engine/sim/physics/OGCContact.js","import":"/engine/sim/physics/OGCContact.js","sourceHash":"199843b33037aa766ffb4d8750ad2a433b53ef85c75b079f15c97a3b9255fcc8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/OGCContact.js#0006:distanceToOffsetPlane","exportIndex":6,"name":"distanceToOffsetPlane","kind":"function","signature":"distanceToOffsetPlane(p, planePoint, planeNormal, r)","summary":"Distance from point to offset plane (plane pushed by r along normal)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/OGCContact.md","moduleTitle":"sim/physics/OGCContact","source":"engine/sim/physics/OGCContact.js","import":"/engine/sim/physics/OGCContact.js","sourceHash":"199843b33037aa766ffb4d8750ad2a433b53ef85c75b079f15c97a3b9255fcc8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/OGCContact.js#0007:distanceToOffsetCapsule","exportIndex":7,"name":"distanceToOffsetCapsule","kind":"function","signature":"distanceToOffsetCapsule(p, a, b, radius, r)","summary":"Distance from point to offset capsule"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/OGCContact.md","moduleTitle":"sim/physics/OGCContact","source":"engine/sim/physics/OGCContact.js","import":"/engine/sim/physics/OGCContact.js","sourceHash":"199843b33037aa766ffb4d8750ad2a433b53ef85c75b079f15c97a3b9255fcc8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/OGCContact.js#0008:distanceToOffsetBox","exportIndex":8,"name":"distanceToOffsetBox","kind":"function","signature":"distanceToOffsetBox(p, center, halfExtents, rotation, r)","summary":"Distance from point to offset box (OBB with offset shell) Handles rotated boxes by transforming into local space."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/OGCContact.md","moduleTitle":"sim/physics/OGCContact","source":"engine/sim/physics/OGCContact.js","import":"/engine/sim/physics/OGCContact.js","sourceHash":"199843b33037aa766ffb4d8750ad2a433b53ef85c75b079f15c97a3b9255fcc8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/OGCContact.js#0009:evaluateAnalyticSDF","exportIndex":9,"name":"evaluateAnalyticSDF","kind":"function","signature":"evaluateAnalyticSDF(shape, params, lx, ly, lz)","summary":"Evaluate an analytic SDF in local space (no transform — caller handles that)."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/OGCContact.md","moduleTitle":"sim/physics/OGCContact","source":"engine/sim/physics/OGCContact.js","import":"/engine/sim/physics/OGCContact.js","sourceHash":"199843b33037aa766ffb4d8750ad2a433b53ef85c75b079f15c97a3b9255fcc8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/OGCContact.js#0010:distanceToOffsetEdge","exportIndex":10,"name":"distanceToOffsetEdge","kind":"function","signature":"distanceToOffsetEdge(p, a, b, r)","summary":"Distance from point to offset edge (line segment with offset radius)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/OGCContact.md","moduleTitle":"sim/physics/OGCContact","source":"engine/sim/physics/OGCContact.js","import":"/engine/sim/physics/OGCContact.js","sourceHash":"199843b33037aa766ffb4d8750ad2a433b53ef85c75b079f15c97a3b9255fcc8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/OGCContact.js#0011:distanceToOffsetTriangle","exportIndex":11,"name":"distanceToOffsetTriangle","kind":"function","signature":"distanceToOffsetTriangle(p, v0, v1, v2, r)","summary":"Distance from point to offset triangle (triangle with offset shell) Uses the face normal for orthogonal contact"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/OGCContact.md","moduleTitle":"sim/physics/OGCContact","source":"engine/sim/physics/OGCContact.js","import":"/engine/sim/physics/OGCContact.js","sourceHash":"199843b33037aa766ffb4d8750ad2a433b53ef85c75b079f15c97a3b9255fcc8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/OGCContact.js#0012:applyOGCForce","exportIndex":12,"name":"applyOGCForce","kind":"function","signature":"applyOGCForce(particle, distance, normal, contactRadius, stiffness, dt)","summary":"Apply OGC barrier force to a particle"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/OGCContact.md","moduleTitle":"sim/physics/OGCContact","source":"engine/sim/physics/OGCContact.js","import":"/engine/sim/physics/OGCContact.js","sourceHash":"199843b33037aa766ffb4d8750ad2a433b53ef85c75b079f15c97a3b9255fcc8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/OGCContact.js#0013:applyOGCPositionCorrection","exportIndex":13,"name":"applyOGCPositionCorrection","kind":"function","signature":"applyOGCPositionCorrection(particle, distance, normal, contactRadius, compliance, dt)","summary":"Apply OGC position correction (for PBD-style solvers)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/OGCContact.md","moduleTitle":"sim/physics/OGCContact","source":"engine/sim/physics/OGCContact.js","import":"/engine/sim/physics/OGCContact.js","sourceHash":"199843b33037aa766ffb4d8750ad2a433b53ef85c75b079f15c97a3b9255fcc8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/OGCContact.js#0014:DEFAULT_CONTACT_RADIUS","exportIndex":14,"name":"DEFAULT_CONTACT_RADIUS","kind":"constant","signature":"DEFAULT_CONTACT_RADIUS","summary":"Default contact radius (meters) - paper recommends 2-5mm for cloth"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/OGCContact.md","moduleTitle":"sim/physics/OGCContact","source":"engine/sim/physics/OGCContact.js","import":"/engine/sim/physics/OGCContact.js","sourceHash":"199843b33037aa766ffb4d8750ad2a433b53ef85c75b079f15c97a3b9255fcc8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/OGCContact.js#0015:BARRIER_ACTIVATION_RATIO","exportIndex":15,"name":"BARRIER_ACTIVATION_RATIO","kind":"constant","signature":"BARRIER_ACTIVATION_RATIO","summary":"Barrier energy activation distance (multiple of contact radius)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/OGCContact.md","moduleTitle":"sim/physics/OGCContact","source":"engine/sim/physics/OGCContact.js","import":"/engine/sim/physics/OGCContact.js","sourceHash":"199843b33037aa766ffb4d8750ad2a433b53ef85c75b079f15c97a3b9255fcc8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/OGCContact.js#0016:MIN_DISTANCE","exportIndex":16,"name":"MIN_DISTANCE","kind":"constant","signature":"MIN_DISTANCE","summary":"Minimum distance to prevent numerical issues"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/OGCContact.md","moduleTitle":"sim/physics/OGCContact","source":"engine/sim/physics/OGCContact.js","import":"/engine/sim/physics/OGCContact.js","sourceHash":"199843b33037aa766ffb4d8750ad2a433b53ef85c75b079f15c97a3b9255fcc8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/OGCContact.js#0017:FIXED_SCALE","exportIndex":17,"name":"FIXED_SCALE","kind":"constant","signature":"FIXED_SCALE","summary":"Fixed-point scale for GPU atomics"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/OGCContact.md","moduleTitle":"sim/physics/OGCContact","source":"engine/sim/physics/OGCContact.js","import":"/engine/sim/physics/OGCContact.js","sourceHash":"199843b33037aa766ffb4d8750ad2a433b53ef85c75b079f15c97a3b9255fcc8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/OGCContact.js#0018:OGC_BARRIER_WGSL","exportIndex":18,"name":"OGC_BARRIER_WGSL","kind":"constant","signature":"OGC_BARRIER_WGSL","summary":"WGSL snippet for OGC barrier functions"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/OGCContact.md","moduleTitle":"sim/physics/OGCContact","source":"engine/sim/physics/OGCContact.js","import":"/engine/sim/physics/OGCContact.js","sourceHash":"199843b33037aa766ffb4d8750ad2a433b53ef85c75b079f15c97a3b9255fcc8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/OGCContact.js#0019:OGC_DISTANCE_WGSL","exportIndex":19,"name":"OGC_DISTANCE_WGSL","kind":"constant","signature":"OGC_DISTANCE_WGSL","summary":"WGSL snippet for offset geometry distance functions"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/OGCContact.md","moduleTitle":"sim/physics/OGCContact","source":"engine/sim/physics/OGCContact.js","import":"/engine/sim/physics/OGCContact.js","sourceHash":"199843b33037aa766ffb4d8750ad2a433b53ef85c75b079f15c97a3b9255fcc8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/OGCContact.js#0020:OGC_SOLVE_WGSL","exportIndex":20,"name":"OGC_SOLVE_WGSL","kind":"constant","signature":"OGC_SOLVE_WGSL","summary":"WGSL snippet for OGC contact solving"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/OGCContact.md","moduleTitle":"sim/physics/OGCContact","source":"engine/sim/physics/OGCContact.js","import":"/engine/sim/physics/OGCContact.js","sourceHash":"199843b33037aa766ffb4d8750ad2a433b53ef85c75b079f15c97a3b9255fcc8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/OGCContact.js#0021:OGC_WGSL_MODULE","exportIndex":21,"name":"OGC_WGSL_MODULE","kind":"constant","signature":"OGC_WGSL_MODULE","summary":"Complete WGSL module for OGC"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PBDRagdoll.md","moduleTitle":"sim/physics/PBDRagdoll","source":"engine/sim/physics/PBDRagdoll.js","import":"/engine/sim/physics/PBDRagdoll.js","sourceHash":"a783c6854f3567842a6da30a2e2f64ad31c43b6676b6aca6043a311cb6681c2a","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/PBDRagdoll.js","title":"sim/physics/PBDRagdoll","summary":"Bone identifiers","exportCount":8}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PBDRagdoll.md","moduleTitle":"sim/physics/PBDRagdoll","source":"engine/sim/physics/PBDRagdoll.js","import":"/engine/sim/physics/PBDRagdoll.js","sourceHash":"a783c6854f3567842a6da30a2e2f64ad31c43b6676b6aca6043a311cb6681c2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PBDRagdoll.js#0000:CapsuleCollider","exportIndex":0,"name":"CapsuleCollider","kind":"class","signature":"class CapsuleCollider","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PBDRagdoll.md","moduleTitle":"sim/physics/PBDRagdoll","source":"engine/sim/physics/PBDRagdoll.js","import":"/engine/sim/physics/PBDRagdoll.js","sourceHash":"a783c6854f3567842a6da30a2e2f64ad31c43b6676b6aca6043a311cb6681c2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PBDRagdoll.js#0001:RagdollBoneData","exportIndex":1,"name":"RagdollBoneData","kind":"class","signature":"class RagdollBoneData","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PBDRagdoll.md","moduleTitle":"sim/physics/PBDRagdoll","source":"engine/sim/physics/PBDRagdoll.js","import":"/engine/sim/physics/PBDRagdoll.js","sourceHash":"a783c6854f3567842a6da30a2e2f64ad31c43b6676b6aca6043a311cb6681c2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PBDRagdoll.js#0002:PBDRagdoll","exportIndex":2,"name":"PBDRagdoll","kind":"class","signature":"class PBDRagdoll","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PBDRagdoll.md","moduleTitle":"sim/physics/PBDRagdoll","source":"engine/sim/physics/PBDRagdoll.js","import":"/engine/sim/physics/PBDRagdoll.js","sourceHash":"a783c6854f3567842a6da30a2e2f64ad31c43b6676b6aca6043a311cb6681c2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PBDRagdoll.js#0003:RagdollBone","exportIndex":3,"name":"RagdollBone","kind":"constant","signature":"RagdollBone","summary":"Bone identifiers"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PBDRagdoll.md","moduleTitle":"sim/physics/PBDRagdoll","source":"engine/sim/physics/PBDRagdoll.js","import":"/engine/sim/physics/PBDRagdoll.js","sourceHash":"a783c6854f3567842a6da30a2e2f64ad31c43b6676b6aca6043a311cb6681c2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PBDRagdoll.js#0004:JointType","exportIndex":4,"name":"JointType","kind":"constant","signature":"JointType","summary":"Joint types"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PBDRagdoll.md","moduleTitle":"sim/physics/PBDRagdoll","source":"engine/sim/physics/PBDRagdoll.js","import":"/engine/sim/physics/PBDRagdoll.js","sourceHash":"a783c6854f3567842a6da30a2e2f64ad31c43b6676b6aca6043a311cb6681c2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PBDRagdoll.js#0005:RagdollState","exportIndex":5,"name":"RagdollState","kind":"constant","signature":"RagdollState","summary":"Ragdoll states"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PBDRagdoll.md","moduleTitle":"sim/physics/PBDRagdoll","source":"engine/sim/physics/PBDRagdoll.js","import":"/engine/sim/physics/PBDRagdoll.js","sourceHash":"a783c6854f3567842a6da30a2e2f64ad31c43b6676b6aca6043a311cb6681c2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PBDRagdoll.js#0006:DEFAULT_MEASUREMENTS","exportIndex":6,"name":"DEFAULT_MEASUREMENTS","kind":"constant","signature":"DEFAULT_MEASUREMENTS","summary":"Default humanoid measurements (meters)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PBDRagdoll.md","moduleTitle":"sim/physics/PBDRagdoll","source":"engine/sim/physics/PBDRagdoll.js","import":"/engine/sim/physics/PBDRagdoll.js","sourceHash":"a783c6854f3567842a6da30a2e2f64ad31c43b6676b6aca6043a311cb6681c2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PBDRagdoll.js#0007:JOINT_LIMITS","exportIndex":7,"name":"JOINT_LIMITS","kind":"constant","signature":"JOINT_LIMITS","summary":"Joint angle limits (radians)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PBDSolver.md","moduleTitle":"sim/physics/PBDSolver","source":"engine/sim/physics/PBDSolver.js","import":"/engine/sim/physics/PBDSolver.js","sourceHash":"8bb2326d5ce269ffaf826e1fc6df41cc52d23d0ccf6af07d004ee677a9717d0c","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/PBDSolver.js","title":"sim/physics/PBDSolver","summary":"PBDSolver.js - Position-Based Dynamics Solver Implements XPBD (Extended Position-Based Dynamics) for: - Rope/cable physics (line segments) - Soft body deformation - Ragdoll skeletons - Cloth simulation Key Algorithms: - Verlet integration (position-based) - Gauss-Seidel constraint projection - Graph coloring for GPU parallelization - XPBD compliance for stable stiffness **Small Substeps Approach (Miles Macklin, NVIDIA 2019):** \"n small timesteps with 1 iteration each > 1 large timestep with n iterations\" This provides better stability for stiff systems (ropes, cloth). We use 8 substeps with 1 iteration each by default (equivalent to but more stable than 1 substep with 8 iterations). **OGC Contact Model (Chen et al., SIGGRAPH 2025):** Uses Offset Geometric Contact for penetration-free collision. Barrier energy prevents penetration before it occurs. Performance Targets: - 1000 particles + 3000 constraints: <5ms - 8 substeps, 1 iteration per substep (small substeps approach)","exportCount":20}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PBDSolver.md","moduleTitle":"sim/physics/PBDSolver","source":"engine/sim/physics/PBDSolver.js","import":"/engine/sim/physics/PBDSolver.js","sourceHash":"8bb2326d5ce269ffaf826e1fc6df41cc52d23d0ccf6af07d004ee677a9717d0c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PBDSolver.js#0000:PBDParticle","exportIndex":0,"name":"PBDParticle","kind":"class","signature":"class PBDParticle","summary":"PBD Particle with position, velocity, and inverse mass"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PBDSolver.md","moduleTitle":"sim/physics/PBDSolver","source":"engine/sim/physics/PBDSolver.js","import":"/engine/sim/physics/PBDSolver.js","sourceHash":"8bb2326d5ce269ffaf826e1fc6df41cc52d23d0ccf6af07d004ee677a9717d0c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PBDSolver.js#0001:PBDConstraint","exportIndex":1,"name":"PBDConstraint","kind":"class","signature":"class PBDConstraint","summary":"Base constraint class"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PBDSolver.md","moduleTitle":"sim/physics/PBDSolver","source":"engine/sim/physics/PBDSolver.js","import":"/engine/sim/physics/PBDSolver.js","sourceHash":"8bb2326d5ce269ffaf826e1fc6df41cc52d23d0ccf6af07d004ee677a9717d0c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PBDSolver.js#0002:DistanceConstraint","exportIndex":2,"name":"DistanceConstraint","kind":"class","signature":"class DistanceConstraint extends PBDConstraint","summary":"Distance constraint - maintains rest length between two particles"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PBDSolver.md","moduleTitle":"sim/physics/PBDSolver","source":"engine/sim/physics/PBDSolver.js","import":"/engine/sim/physics/PBDSolver.js","sourceHash":"8bb2326d5ce269ffaf826e1fc6df41cc52d23d0ccf6af07d004ee677a9717d0c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PBDSolver.js#0003:AngleConstraint","exportIndex":3,"name":"AngleConstraint","kind":"class","signature":"class AngleConstraint extends PBDConstraint","summary":"Angle constraint - limits angle between three particles"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PBDSolver.md","moduleTitle":"sim/physics/PBDSolver","source":"engine/sim/physics/PBDSolver.js","import":"/engine/sim/physics/PBDSolver.js","sourceHash":"8bb2326d5ce269ffaf826e1fc6df41cc52d23d0ccf6af07d004ee677a9717d0c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PBDSolver.js#0004:AttachmentConstraint","exportIndex":4,"name":"AttachmentConstraint","kind":"class","signature":"class AttachmentConstraint extends PBDConstraint","summary":"Attachment constraint - pins particle to world position Simple and stable: directly moves particle toward target"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PBDSolver.md","moduleTitle":"sim/physics/PBDSolver","source":"engine/sim/physics/PBDSolver.js","import":"/engine/sim/physics/PBDSolver.js","sourceHash":"8bb2326d5ce269ffaf826e1fc6df41cc52d23d0ccf6af07d004ee677a9717d0c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PBDSolver.js#0005:BendingConstraint","exportIndex":5,"name":"BendingConstraint","kind":"class","signature":"class BendingConstraint extends PBDConstraint","summary":"Bending constraint - maintains angle between 3 particles - UNTESTED Used for hair, grass, stiff ropes"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PBDSolver.md","moduleTitle":"sim/physics/PBDSolver","source":"engine/sim/physics/PBDSolver.js","import":"/engine/sim/physics/PBDSolver.js","sourceHash":"8bb2326d5ce269ffaf826e1fc6df41cc52d23d0ccf6af07d004ee677a9717d0c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PBDSolver.js#0006:SpringConstraint","exportIndex":6,"name":"SpringConstraint","kind":"class","signature":"class SpringConstraint extends PBDConstraint","summary":"Spring constraint - UNTESTED Unlike distance constraint, springs can compress AND extend (Hooke's law)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PBDSolver.md","moduleTitle":"sim/physics/PBDSolver","source":"engine/sim/physics/PBDSolver.js","import":"/engine/sim/physics/PBDSolver.js","sourceHash":"8bb2326d5ce269ffaf826e1fc6df41cc52d23d0ccf6af07d004ee677a9717d0c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PBDSolver.js#0007:CohesionConstraint","exportIndex":7,"name":"CohesionConstraint","kind":"class","signature":"class CohesionConstraint extends PBDConstraint","summary":"Cohesion constraint - UNTESTED Particles attract each other within a radius (like water droplets)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PBDSolver.md","moduleTitle":"sim/physics/PBDSolver","source":"engine/sim/physics/PBDSolver.js","import":"/engine/sim/physics/PBDSolver.js","sourceHash":"8bb2326d5ce269ffaf826e1fc6df41cc52d23d0ccf6af07d004ee677a9717d0c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PBDSolver.js#0008:LongRangeAttachmentConstraint","exportIndex":8,"name":"LongRangeAttachmentConstraint","kind":"class","signature":"class LongRangeAttachmentConstraint extends PBDConstraint","summary":"Long Range Attachment (LRA) Constraint Creates distance constraints from fixed/anchor particles to all particles in a rope. This dramatically improves convergence for long ropes (100+ segments). Reference: Kim et al. 2012 \"Long Range Attachments - A Method to Simulate Inextensible Clothing in Computer Games\" Reference: Müller 2017 \"Long Range Constraints for Rigid Body Simulations\" Key idea: Instead of only having adjacent distance constraints, we create constraints from the anchor to every Nth particle along the rope. This allows the solver to propagate length corrections globally in fewer iterations."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PBDSolver.md","moduleTitle":"sim/physics/PBDSolver","source":"engine/sim/physics/PBDSolver.js","import":"/engine/sim/physics/PBDSolver.js","sourceHash":"8bb2326d5ce269ffaf826e1fc6df41cc52d23d0ccf6af07d004ee677a9717d0c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PBDSolver.js#0009:VolumeConstraint","exportIndex":9,"name":"VolumeConstraint","kind":"class","signature":"class VolumeConstraint extends PBDConstraint","summary":"Volume constraint - preserves volume of a tetrahedron (4 particles) C = V - V0 = 0, where V = (1/6) * (p1-p0) · ((p2-p0) × (p3-p0))"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PBDSolver.md","moduleTitle":"sim/physics/PBDSolver","source":"engine/sim/physics/PBDSolver.js","import":"/engine/sim/physics/PBDSolver.js","sourceHash":"8bb2326d5ce269ffaf826e1fc6df41cc52d23d0ccf6af07d004ee677a9717d0c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PBDSolver.js#0010:ShapeMatchingConstraint","exportIndex":10,"name":"ShapeMatchingConstraint","kind":"class","signature":"class ShapeMatchingConstraint extends PBDConstraint","summary":"Shape Matching constraint - restores N particles to their original shape Based on \"Meshless Deformations Based on Shape Matching\" (Müller 2005)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PBDSolver.md","moduleTitle":"sim/physics/PBDSolver","source":"engine/sim/physics/PBDSolver.js","import":"/engine/sim/physics/PBDSolver.js","sourceHash":"8bb2326d5ce269ffaf826e1fc6df41cc52d23d0ccf6af07d004ee677a9717d0c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PBDSolver.js#0011:PressureConstraint","exportIndex":11,"name":"PressureConstraint","kind":"class","signature":"class PressureConstraint extends PBDConstraint","summary":"Pressure constraint - internal pressure for closed meshes (balloons) Works with N particles forming a closed surface"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PBDSolver.md","moduleTitle":"sim/physics/PBDSolver","source":"engine/sim/physics/PBDSolver.js","import":"/engine/sim/physics/PBDSolver.js","sourceHash":"8bb2326d5ce269ffaf826e1fc6df41cc52d23d0ccf6af07d004ee677a9717d0c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PBDSolver.js#0012:DensityConstraint","exportIndex":12,"name":"DensityConstraint","kind":"class","signature":"class DensityConstraint extends PBDConstraint","summary":"SPH Density constraint - maintains constant density (fluids) Based on \"Position Based Fluids\" (Macklin & Müller 2013)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PBDSolver.md","moduleTitle":"sim/physics/PBDSolver","source":"engine/sim/physics/PBDSolver.js","import":"/engine/sim/physics/PBDSolver.js","sourceHash":"8bb2326d5ce269ffaf826e1fc6df41cc52d23d0ccf6af07d004ee677a9717d0c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PBDSolver.js#0013:PBDSolver","exportIndex":13,"name":"PBDSolver","kind":"class","signature":"class PBDSolver","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PBDSolver.md","moduleTitle":"sim/physics/PBDSolver","source":"engine/sim/physics/PBDSolver.js","import":"/engine/sim/physics/PBDSolver.js","sourceHash":"8bb2326d5ce269ffaf826e1fc6df41cc52d23d0ccf6af07d004ee677a9717d0c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PBDSolver.js#0014:colorConstraints","exportIndex":14,"name":"colorConstraints","kind":"function","signature":"colorConstraints(constraints, particles)","summary":"Greedy graph coloring for constraint parallelization Constraints with same color can be solved in parallel"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PBDSolver.md","moduleTitle":"sim/physics/PBDSolver","source":"engine/sim/physics/PBDSolver.js","import":"/engine/sim/physics/PBDSolver.js","sourceHash":"8bb2326d5ce269ffaf826e1fc6df41cc52d23d0ccf6af07d004ee677a9717d0c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PBDSolver.js#0015:groupByColor","exportIndex":15,"name":"groupByColor","kind":"function","signature":"groupByColor(constraints, numColors)","summary":"Group constraints by color for batched dispatch"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PBDSolver.md","moduleTitle":"sim/physics/PBDSolver","source":"engine/sim/physics/PBDSolver.js","import":"/engine/sim/physics/PBDSolver.js","sourceHash":"8bb2326d5ce269ffaf826e1fc6df41cc52d23d0ccf6af07d004ee677a9717d0c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PBDSolver.js#0016:DEFAULT_ITERATIONS","exportIndex":16,"name":"DEFAULT_ITERATIONS","kind":"constant","signature":"DEFAULT_ITERATIONS","summary":"Default solver iterations per substep (small substeps: use 1-2)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PBDSolver.md","moduleTitle":"sim/physics/PBDSolver","source":"engine/sim/physics/PBDSolver.js","import":"/engine/sim/physics/PBDSolver.js","sourceHash":"8bb2326d5ce269ffaf826e1fc6df41cc52d23d0ccf6af07d004ee677a9717d0c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PBDSolver.js#0017:DEFAULT_SUBSTEPS","exportIndex":17,"name":"DEFAULT_SUBSTEPS","kind":"constant","signature":"DEFAULT_SUBSTEPS","summary":"Default substeps per frame (small substeps: use 8-16 for stability)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PBDSolver.md","moduleTitle":"sim/physics/PBDSolver","source":"engine/sim/physics/PBDSolver.js","import":"/engine/sim/physics/PBDSolver.js","sourceHash":"8bb2326d5ce269ffaf826e1fc6df41cc52d23d0ccf6af07d004ee677a9717d0c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PBDSolver.js#0018:ConstraintType","exportIndex":18,"name":"ConstraintType","kind":"constant","signature":"ConstraintType","summary":"Constraint types"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PBDSolver.md","moduleTitle":"sim/physics/PBDSolver","source":"engine/sim/physics/PBDSolver.js","import":"/engine/sim/physics/PBDSolver.js","sourceHash":"8bb2326d5ce269ffaf826e1fc6df41cc52d23d0ccf6af07d004ee677a9717d0c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PBDSolver.js#0019:ParticleFlags","exportIndex":19,"name":"ParticleFlags","kind":"constant","signature":"ParticleFlags","summary":"Particle flags"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysXArticulations.md","moduleTitle":"sim/physics/PhysXArticulations","source":"engine/sim/physics/PhysXArticulations.js","import":"/engine/sim/physics/PhysXArticulations.js","sourceHash":"c1d1eebe252d20de4ab5c1a7eabe79500968c31deb639cf1c5364306a0ca66d7","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/PhysXArticulations.js","title":"sim/physics/PhysXArticulations","summary":"PhysXArticulations.js - PhysX Articulation Support Articulations are optimized for chains of connected bodies like: - Ropes and cables - Ragdolls - Robotic arms - Vehicles (suspensions) Per NVIDIA PhysX Best Practices: \"Articulations are much better at simulating articulated objects. They can be used to model better ropes, bridges, vehicles, or ragdolls out-of-the-box, without the need for workarounds.\" Articulations provide: - Better stability than joint chains - Reduced jitter - More accurate constraint solving - Built-in tendon support for muscle simulation","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysXArticulations.md","moduleTitle":"sim/physics/PhysXArticulations","source":"engine/sim/physics/PhysXArticulations.js","import":"/engine/sim/physics/PhysXArticulations.js","sourceHash":"c1d1eebe252d20de4ab5c1a7eabe79500968c31deb639cf1c5364306a0ca66d7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysXArticulations.js#0000:createArticulation","exportIndex":0,"name":"createArticulation","kind":"function","signature":"createArticulation(world, options = {})","summary":"Create a reduced coordinate articulation (PhysX 5.x)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysXArticulations.md","moduleTitle":"sim/physics/PhysXArticulations","source":"engine/sim/physics/PhysXArticulations.js","import":"/engine/sim/physics/PhysXArticulations.js","sourceHash":"c1d1eebe252d20de4ab5c1a7eabe79500968c31deb639cf1c5364306a0ca66d7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysXArticulations.js#0001:createRootLink","exportIndex":1,"name":"createRootLink","kind":"function","signature":"createRootLink(articulation, options = {})","summary":"Create the root link of an articulation"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysXArticulations.md","moduleTitle":"sim/physics/PhysXArticulations","source":"engine/sim/physics/PhysXArticulations.js","import":"/engine/sim/physics/PhysXArticulations.js","sourceHash":"c1d1eebe252d20de4ab5c1a7eabe79500968c31deb639cf1c5364306a0ca66d7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysXArticulations.js#0002:createChildLink","exportIndex":2,"name":"createChildLink","kind":"function","signature":"createChildLink(articulation, parentLink, options = {})","summary":"Create a child link attached to a parent link"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysXArticulations.md","moduleTitle":"sim/physics/PhysXArticulations","source":"engine/sim/physics/PhysXArticulations.js","import":"/engine/sim/physics/PhysXArticulations.js","sourceHash":"c1d1eebe252d20de4ab5c1a7eabe79500968c31deb639cf1c5364306a0ca66d7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysXArticulations.js#0003:addArticulationToScene","exportIndex":3,"name":"addArticulationToScene","kind":"function","signature":"addArticulationToScene(articulation)","summary":"Add articulation to scene (must be called after all links are created)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysXArticulations.md","moduleTitle":"sim/physics/PhysXArticulations","source":"engine/sim/physics/PhysXArticulations.js","import":"/engine/sim/physics/PhysXArticulations.js","sourceHash":"c1d1eebe252d20de4ab5c1a7eabe79500968c31deb639cf1c5364306a0ca66d7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysXArticulations.js#0004:createRope","exportIndex":4,"name":"createRope","kind":"function","signature":"createRope(world, startPos, endPos, segments = 10, options = {})","summary":"Create a rope using articulations Per NVIDIA: \"Use spheres instead of capsules. A rope made of spheres will be more stable.\""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysXArticulations.md","moduleTitle":"sim/physics/PhysXArticulations","source":"engine/sim/physics/PhysXArticulations.js","import":"/engine/sim/physics/PhysXArticulations.js","sourceHash":"c1d1eebe252d20de4ab5c1a7eabe79500968c31deb639cf1c5364306a0ca66d7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysXArticulations.js#0005:getArticulationLinkTransforms","exportIndex":5,"name":"getArticulationLinkTransforms","kind":"function","signature":"getArticulationLinkTransforms(articulation)","summary":"Update articulation link positions from simulation"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysXArticulations.md","moduleTitle":"sim/physics/PhysXArticulations","source":"engine/sim/physics/PhysXArticulations.js","import":"/engine/sim/physics/PhysXArticulations.js","sourceHash":"c1d1eebe252d20de4ab5c1a7eabe79500968c31deb639cf1c5364306a0ca66d7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysXArticulations.js#0006:destroyArticulation","exportIndex":6,"name":"destroyArticulation","kind":"function","signature":"destroyArticulation(articulation)","summary":"Destroy an articulation and clean up resources"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysXJoints.md","moduleTitle":"sim/physics/PhysXJoints","source":"engine/sim/physics/PhysXJoints.js","import":"/engine/sim/physics/PhysXJoints.js","sourceHash":"fd2f78a431a29ae21a9d44a6d8b5125fd2f19ec8710bab0e897fa0a96eacdca2","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/PhysXJoints.js","title":"sim/physics/PhysXJoints","summary":"PhysX Joint Creation API Exposes D6, revolute, distance, and spherical joints for articulated bodies","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysXJoints.md","moduleTitle":"sim/physics/PhysXJoints","source":"engine/sim/physics/PhysXJoints.js","import":"/engine/sim/physics/PhysXJoints.js","sourceHash":"fd2f78a431a29ae21a9d44a6d8b5125fd2f19ec8710bab0e897fa0a96eacdca2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysXJoints.js#0000:getPhysXJointCapabilities","exportIndex":0,"name":"getPhysXJointCapabilities","kind":"function","signature":"getPhysXJointCapabilities(world)","summary":"PhysX Joint Creation API Exposes D6, revolute, distance, and spherical joints for articulated bodies"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysXJoints.md","moduleTitle":"sim/physics/PhysXJoints","source":"engine/sim/physics/PhysXJoints.js","import":"/engine/sim/physics/PhysXJoints.js","sourceHash":"fd2f78a431a29ae21a9d44a6d8b5125fd2f19ec8710bab0e897fa0a96eacdca2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysXJoints.js#0001:createD6Joint","exportIndex":1,"name":"createD6Joint","kind":"function","signature":"createD6Joint(world, bodyA, bodyB, options = {})","summary":"Create a D6 joint (6 degrees of freedom - most flexible joint type)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysXJoints.md","moduleTitle":"sim/physics/PhysXJoints","source":"engine/sim/physics/PhysXJoints.js","import":"/engine/sim/physics/PhysXJoints.js","sourceHash":"fd2f78a431a29ae21a9d44a6d8b5125fd2f19ec8710bab0e897fa0a96eacdca2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysXJoints.js#0002:createRevoluteJoint","exportIndex":2,"name":"createRevoluteJoint","kind":"function","signature":"createRevoluteJoint(world, bodyA, bodyB, options = {})","summary":"Create a revolute joint (hinge joint - 1 rotational DOF)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysXJoints.md","moduleTitle":"sim/physics/PhysXJoints","source":"engine/sim/physics/PhysXJoints.js","import":"/engine/sim/physics/PhysXJoints.js","sourceHash":"fd2f78a431a29ae21a9d44a6d8b5125fd2f19ec8710bab0e897fa0a96eacdca2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysXJoints.js#0003:createSphericalJoint","exportIndex":3,"name":"createSphericalJoint","kind":"function","signature":"createSphericalJoint(world, bodyA, bodyB, options = {})","summary":"Create a spherical joint (ball-and-socket - 3 rotational DOF)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysXJoints.md","moduleTitle":"sim/physics/PhysXJoints","source":"engine/sim/physics/PhysXJoints.js","import":"/engine/sim/physics/PhysXJoints.js","sourceHash":"fd2f78a431a29ae21a9d44a6d8b5125fd2f19ec8710bab0e897fa0a96eacdca2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysXJoints.js#0004:createDistanceJoint","exportIndex":4,"name":"createDistanceJoint","kind":"function","signature":"createDistanceJoint(world, bodyA, bodyB, options = {})","summary":"Create a distance joint (maintains distance between two points)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysXMeshCooking.md","moduleTitle":"sim/physics/PhysXMeshCooking","source":"engine/sim/physics/PhysXMeshCooking.js","import":"/engine/sim/physics/PhysXMeshCooking.js","sourceHash":"9b1c76625fc827d59569aca717623031feca49a4f8575885956f6b0f26cc05bb","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/PhysXMeshCooking.js","title":"sim/physics/PhysXMeshCooking","summary":"Local register helpers (avoid circular import with PhysXPhysicsWorld)","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysXMeshCooking.md","moduleTitle":"sim/physics/PhysXMeshCooking","source":"engine/sim/physics/PhysXMeshCooking.js","import":"/engine/sim/physics/PhysXMeshCooking.js","sourceHash":"9b1c76625fc827d59569aca717623031feca49a4f8575885956f6b0f26cc05bb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysXMeshCooking.js#0000:cookAndRegisterConvexMeshForWorld","exportIndex":0,"name":"cookAndRegisterConvexMeshForWorld","kind":"function","signature":"cookAndRegisterConvexMeshForWorld(world, meshId, positions)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysXMeshCooking.md","moduleTitle":"sim/physics/PhysXMeshCooking","source":"engine/sim/physics/PhysXMeshCooking.js","import":"/engine/sim/physics/PhysXMeshCooking.js","sourceHash":"9b1c76625fc827d59569aca717623031feca49a4f8575885956f6b0f26cc05bb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysXMeshCooking.js#0001:cookAndRegisterTriangleMeshForWorld","exportIndex":1,"name":"cookAndRegisterTriangleMeshForWorld","kind":"function","signature":"cookAndRegisterTriangleMeshForWorld(world, meshId, positions, indices)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysXMeshCooking.md","moduleTitle":"sim/physics/PhysXMeshCooking","source":"engine/sim/physics/PhysXMeshCooking.js","import":"/engine/sim/physics/PhysXMeshCooking.js","sourceHash":"9b1c76625fc827d59569aca717623031feca49a4f8575885956f6b0f26cc05bb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysXMeshCooking.js#0002:PhysXMeshCooking","exportIndex":2,"name":"PhysXMeshCooking","kind":"re-export","signature":"PhysXMeshCooking","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysXModule.md","moduleTitle":"sim/physics/PhysXModule","source":"engine/sim/physics/PhysXModule.js","import":"/engine/sim/physics/PhysXModule.js","sourceHash":"743c7782aefa327a5c64a7ca35fbf3d1b4d22bbdb7ecf71ddb1e0e8bb6fc779d","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/PhysXModule.js","title":"sim/physics/PhysXModule","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysXModule.md","moduleTitle":"sim/physics/PhysXModule","source":"engine/sim/physics/PhysXModule.js","import":"/engine/sim/physics/PhysXModule.js","sourceHash":"743c7782aefa327a5c64a7ca35fbf3d1b4d22bbdb7ecf71ddb1e0e8bb6fc779d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysXModule.js#0000:ensurePhysXModule","exportIndex":0,"name":"ensurePhysXModule","kind":"function","signature":"ensurePhysXModule()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysXModule.md","moduleTitle":"sim/physics/PhysXModule","source":"engine/sim/physics/PhysXModule.js","import":"/engine/sim/physics/PhysXModule.js","sourceHash":"743c7782aefa327a5c64a7ca35fbf3d1b4d22bbdb7ecf71ddb1e0e8bb6fc779d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysXModule.js#0001:PhysXModule","exportIndex":1,"name":"PhysXModule","kind":"re-export","signature":"PhysXModule","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysXPhysicsWorld.md","moduleTitle":"sim/physics/PhysXPhysicsWorld","source":"engine/sim/physics/PhysXPhysicsWorld.js","import":"/engine/sim/physics/PhysXPhysicsWorld.js","sourceHash":"9b48f0c14b4d5fa2b3e4941475c68c2e62a39a00cb2d433ed2dbdcfc8e457703","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/PhysXPhysicsWorld.js","title":"sim/physics/PhysXPhysicsWorld","summary":"Move a kinematic body to a new pose (PhysX setKinematicTarget — the solver sweeps it there over the next step, pushing dynamic bodies out of the way instead of teleporting through them). Used for script-driven obstacles (e.g. AI traffic cars that dynamic bodies must collide with).","exportCount":14}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysXPhysicsWorld.md","moduleTitle":"sim/physics/PhysXPhysicsWorld","source":"engine/sim/physics/PhysXPhysicsWorld.js","import":"/engine/sim/physics/PhysXPhysicsWorld.js","sourceHash":"9b48f0c14b4d5fa2b3e4941475c68c2e62a39a00cb2d433ed2dbdcfc8e457703","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysXPhysicsWorld.js#0000:createPhysicsWorld","exportIndex":0,"name":"createPhysicsWorld","kind":"function","signature":"createPhysicsWorld(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysXPhysicsWorld.md","moduleTitle":"sim/physics/PhysXPhysicsWorld","source":"engine/sim/physics/PhysXPhysicsWorld.js","import":"/engine/sim/physics/PhysXPhysicsWorld.js","sourceHash":"9b48f0c14b4d5fa2b3e4941475c68c2e62a39a00cb2d433ed2dbdcfc8e457703","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysXPhysicsWorld.js#0001:registerConvexMesh","exportIndex":1,"name":"registerConvexMesh","kind":"function","signature":"registerConvexMesh(world, meshId, pxConvexMesh)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysXPhysicsWorld.md","moduleTitle":"sim/physics/PhysXPhysicsWorld","source":"engine/sim/physics/PhysXPhysicsWorld.js","import":"/engine/sim/physics/PhysXPhysicsWorld.js","sourceHash":"9b48f0c14b4d5fa2b3e4941475c68c2e62a39a00cb2d433ed2dbdcfc8e457703","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysXPhysicsWorld.js#0002:registerTriangleMesh","exportIndex":2,"name":"registerTriangleMesh","kind":"function","signature":"registerTriangleMesh(world, meshId, pxTriangleMesh)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysXPhysicsWorld.md","moduleTitle":"sim/physics/PhysXPhysicsWorld","source":"engine/sim/physics/PhysXPhysicsWorld.js","import":"/engine/sim/physics/PhysXPhysicsWorld.js","sourceHash":"9b48f0c14b4d5fa2b3e4941475c68c2e62a39a00cb2d433ed2dbdcfc8e457703","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysXPhysicsWorld.js#0003:destroyPhysicsWorld","exportIndex":3,"name":"destroyPhysicsWorld","kind":"function","signature":"destroyPhysicsWorld(world)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysXPhysicsWorld.md","moduleTitle":"sim/physics/PhysXPhysicsWorld","source":"engine/sim/physics/PhysXPhysicsWorld.js","import":"/engine/sim/physics/PhysXPhysicsWorld.js","sourceHash":"9b48f0c14b4d5fa2b3e4941475c68c2e62a39a00cb2d433ed2dbdcfc8e457703","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysXPhysicsWorld.js#0004:createBody","exportIndex":4,"name":"createBody","kind":"function","signature":"createBody(world, desc)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysXPhysicsWorld.md","moduleTitle":"sim/physics/PhysXPhysicsWorld","source":"engine/sim/physics/PhysXPhysicsWorld.js","import":"/engine/sim/physics/PhysXPhysicsWorld.js","sourceHash":"9b48f0c14b4d5fa2b3e4941475c68c2e62a39a00cb2d433ed2dbdcfc8e457703","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysXPhysicsWorld.js#0005:getBody","exportIndex":5,"name":"getBody","kind":"function","signature":"getBody(world, handle)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysXPhysicsWorld.md","moduleTitle":"sim/physics/PhysXPhysicsWorld","source":"engine/sim/physics/PhysXPhysicsWorld.js","import":"/engine/sim/physics/PhysXPhysicsWorld.js","sourceHash":"9b48f0c14b4d5fa2b3e4941475c68c2e62a39a00cb2d433ed2dbdcfc8e457703","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysXPhysicsWorld.js#0006:setBodyKinematic","exportIndex":6,"name":"setBodyKinematic","kind":"function","signature":"setBodyKinematic(world, handle, enabled)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysXPhysicsWorld.md","moduleTitle":"sim/physics/PhysXPhysicsWorld","source":"engine/sim/physics/PhysXPhysicsWorld.js","import":"/engine/sim/physics/PhysXPhysicsWorld.js","sourceHash":"9b48f0c14b4d5fa2b3e4941475c68c2e62a39a00cb2d433ed2dbdcfc8e457703","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysXPhysicsWorld.js#0007:setKinematicPose","exportIndex":7,"name":"setKinematicPose","kind":"function","signature":"setKinematicPose(world, handle, position, rotation = [0, 0, 0, 1])","summary":"Move a kinematic body to a new pose (PhysX setKinematicTarget — the solver sweeps it there over the next step, pushing dynamic bodies out of the way instead of teleporting through them). Used for script-driven obstacles (e.g. AI traffic cars that dynamic bodies must collide with)."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysXPhysicsWorld.md","moduleTitle":"sim/physics/PhysXPhysicsWorld","source":"engine/sim/physics/PhysXPhysicsWorld.js","import":"/engine/sim/physics/PhysXPhysicsWorld.js","sourceHash":"9b48f0c14b4d5fa2b3e4941475c68c2e62a39a00cb2d433ed2dbdcfc8e457703","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysXPhysicsWorld.js#0008:removeBody","exportIndex":8,"name":"removeBody","kind":"function","signature":"removeBody(world, handle)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysXPhysicsWorld.md","moduleTitle":"sim/physics/PhysXPhysicsWorld","source":"engine/sim/physics/PhysXPhysicsWorld.js","import":"/engine/sim/physics/PhysXPhysicsWorld.js","sourceHash":"9b48f0c14b4d5fa2b3e4941475c68c2e62a39a00cb2d433ed2dbdcfc8e457703","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysXPhysicsWorld.js#0009:updateBodyFilterData","exportIndex":9,"name":"updateBodyFilterData","kind":"function","signature":"updateBodyFilterData(world, handle, entityFlags)","summary":"Update a body's collision filter data based on EntityFlags Call this when EntityFlags.collisionLayer, collisionMask, or collisionMode changes"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysXPhysicsWorld.md","moduleTitle":"sim/physics/PhysXPhysicsWorld","source":"engine/sim/physics/PhysXPhysicsWorld.js","import":"/engine/sim/physics/PhysXPhysicsWorld.js","sourceHash":"9b48f0c14b4d5fa2b3e4941475c68c2e62a39a00cb2d433ed2dbdcfc8e457703","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysXPhysicsWorld.js#0010:updateWorldMaterial","exportIndex":10,"name":"updateWorldMaterial","kind":"function","signature":"updateWorldMaterial(world, materialOptions)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysXPhysicsWorld.md","moduleTitle":"sim/physics/PhysXPhysicsWorld","source":"engine/sim/physics/PhysXPhysicsWorld.js","import":"/engine/sim/physics/PhysXPhysicsWorld.js","sourceHash":"9b48f0c14b4d5fa2b3e4941475c68c2e62a39a00cb2d433ed2dbdcfc8e457703","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysXPhysicsWorld.js#0011:raycastWorld","exportIndex":11,"name":"raycastWorld","kind":"function","signature":"raycastWorld(world, origin, direction, maxDistance)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysXPhysicsWorld.md","moduleTitle":"sim/physics/PhysXPhysicsWorld","source":"engine/sim/physics/PhysXPhysicsWorld.js","import":"/engine/sim/physics/PhysXPhysicsWorld.js","sourceHash":"9b48f0c14b4d5fa2b3e4941475c68c2e62a39a00cb2d433ed2dbdcfc8e457703","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysXPhysicsWorld.js#0012:stepPhysicsWorld","exportIndex":12,"name":"stepPhysicsWorld","kind":"function","signature":"stepPhysicsWorld(world, deltaTime)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysXPhysicsWorld.md","moduleTitle":"sim/physics/PhysXPhysicsWorld","source":"engine/sim/physics/PhysXPhysicsWorld.js","import":"/engine/sim/physics/PhysXPhysicsWorld.js","sourceHash":"9b48f0c14b4d5fa2b3e4941475c68c2e62a39a00cb2d433ed2dbdcfc8e457703","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysXPhysicsWorld.js#0013:PhysXPhysicsWorld","exportIndex":13,"name":"PhysXPhysicsWorld","kind":"re-export","signature":"PhysXPhysicsWorld","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysXVehicle.md","moduleTitle":"sim/physics/PhysXVehicle","source":"engine/sim/physics/PhysXVehicle.js","import":"/engine/sim/physics/PhysXVehicle.js","sourceHash":"db304e9273d382b73f92569c0447060a2f5b6e5509ac97f4b61f238d103c5ec5","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/PhysXVehicle.js","title":"sim/physics/PhysXVehicle","summary":"Compatibility entry point. Implementation is split by vehicle subsystem in ./vehicle so existing engine and playground import paths remain stable.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysXVehicle.md","moduleTitle":"sim/physics/PhysXVehicle","source":"engine/sim/physics/PhysXVehicle.js","import":"/engine/sim/physics/PhysXVehicle.js","sourceHash":"db304e9273d382b73f92569c0447060a2f5b6e5509ac97f4b61f238d103c5ec5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysXVehicle.js#0000:createPhysXVehicle","exportIndex":0,"name":"createPhysXVehicle","kind":"re-export","signature":"createPhysXVehicle","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysXVehicle.md","moduleTitle":"sim/physics/PhysXVehicle","source":"engine/sim/physics/PhysXVehicle.js","import":"/engine/sim/physics/PhysXVehicle.js","sourceHash":"db304e9273d382b73f92569c0447060a2f5b6e5509ac97f4b61f238d103c5ec5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysXVehicle.js#0001:isPhysXVehicleSupported","exportIndex":1,"name":"isPhysXVehicleSupported","kind":"re-export","signature":"isPhysXVehicleSupported","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysicalMaterialPresets.md","moduleTitle":"sim/physics/PhysicalMaterialPresets","source":"engine/sim/physics/PhysicalMaterialPresets.js","import":"/engine/sim/physics/PhysicalMaterialPresets.js","sourceHash":"0b43b134179af6b9c25e7f5e17a2f71c3842944aeef9c16753e81471c0f5a7ec","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/PhysicalMaterialPresets.js","title":"sim/physics/PhysicalMaterialPresets","summary":"PhysicalMaterialPresets.js — Real-world material property presets Each preset defines how a shape behaves physically: density for mass, elasticity for springback, hardness for deformation resistance, brittleness for shatter vs bend, and fracture configuration. Used by the PhysicalMaterial ECS component and EditorPhysicalMaterial bridge.","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysicalMaterialPresets.md","moduleTitle":"sim/physics/PhysicalMaterialPresets","source":"engine/sim/physics/PhysicalMaterialPresets.js","import":"/engine/sim/physics/PhysicalMaterialPresets.js","sourceHash":"0b43b134179af6b9c25e7f5e17a2f71c3842944aeef9c16753e81471c0f5a7ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysicalMaterialPresets.js#0000:getMaterialPreset","exportIndex":0,"name":"getMaterialPreset","kind":"function","signature":"getMaterialPreset(key)","summary":"Get a full material preset by key (returns a shallow copy)."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysicalMaterialPresets.md","moduleTitle":"sim/physics/PhysicalMaterialPresets","source":"engine/sim/physics/PhysicalMaterialPresets.js","import":"/engine/sim/physics/PhysicalMaterialPresets.js","sourceHash":"0b43b134179af6b9c25e7f5e17a2f71c3842944aeef9c16753e81471c0f5a7ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysicalMaterialPresets.js#0001:createPhysicalMaterial","exportIndex":1,"name":"createPhysicalMaterial","kind":"function","signature":"createPhysicalMaterial(presetKey, overrides = {})","summary":"Create a PhysicalMaterial component value from a preset key, with optional property overrides."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysicalMaterialPresets.md","moduleTitle":"sim/physics/PhysicalMaterialPresets","source":"engine/sim/physics/PhysicalMaterialPresets.js","import":"/engine/sim/physics/PhysicalMaterialPresets.js","sourceHash":"0b43b134179af6b9c25e7f5e17a2f71c3842944aeef9c16753e81471c0f5a7ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysicalMaterialPresets.js#0002:computeMassFromMaterial","exportIndex":2,"name":"computeMassFromMaterial","kind":"function","signature":"computeMassFromMaterial(material, halfExtents, colliderShape)","summary":"Compute mass from material density and collider volume."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysicalMaterialPresets.md","moduleTitle":"sim/physics/PhysicalMaterialPresets","source":"engine/sim/physics/PhysicalMaterialPresets.js","import":"/engine/sim/physics/PhysicalMaterialPresets.js","sourceHash":"0b43b134179af6b9c25e7f5e17a2f71c3842944aeef9c16753e81471c0f5a7ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysicalMaterialPresets.js#0003:MATERIAL_PRESETS","exportIndex":3,"name":"MATERIAL_PRESETS","kind":"constant","signature":"MATERIAL_PRESETS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysicalMaterialPresets.md","moduleTitle":"sim/physics/PhysicalMaterialPresets","source":"engine/sim/physics/PhysicalMaterialPresets.js","import":"/engine/sim/physics/PhysicalMaterialPresets.js","sourceHash":"0b43b134179af6b9c25e7f5e17a2f71c3842944aeef9c16753e81471c0f5a7ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysicalMaterialPresets.js#0004:MATERIAL_KEYS","exportIndex":4,"name":"MATERIAL_KEYS","kind":"constant","signature":"MATERIAL_KEYS","summary":"All preset keys."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysicsSchema.md","moduleTitle":"sim/physics/PhysicsSchema","source":"engine/sim/physics/PhysicsSchema.js","import":"/engine/sim/physics/PhysicsSchema.js","sourceHash":"7b2c061487e7c773c23bf55bb49605489b3c2576a2bacda2c5b66f03e08fc348","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/PhysicsSchema.js","title":"sim/physics/PhysicsSchema","summary":"PhysicsSchema.js - Unified JSON Schema for Physics System Defines consistent data structures for: - Body types (dynamic, kinematic, static) - Collider shapes (box, sphere, capsule, mesh) - Joint types (D6, revolute, spherical, distance) - Collision layers and masks - Material properties (friction, restitution) All physics code should use these schemas for consistency.","exportCount":28}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysicsSchema.md","moduleTitle":"sim/physics/PhysicsSchema","source":"engine/sim/physics/PhysicsSchema.js","import":"/engine/sim/physics/PhysicsSchema.js","sourceHash":"7b2c061487e7c773c23bf55bb49605489b3c2576a2bacda2c5b66f03e08fc348","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysicsSchema.js#0000:getSimModeId","exportIndex":0,"name":"getSimModeId","kind":"function","signature":"getSimModeId(modeName)","summary":"Get simulation mode ID from name"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysicsSchema.md","moduleTitle":"sim/physics/PhysicsSchema","source":"engine/sim/physics/PhysicsSchema.js","import":"/engine/sim/physics/PhysicsSchema.js","sourceHash":"7b2c061487e7c773c23bf55bb49605489b3c2576a2bacda2c5b66f03e08fc348","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysicsSchema.js#0001:getSimModeName","exportIndex":1,"name":"getSimModeName","kind":"function","signature":"getSimModeName(modeId)","summary":"Get simulation mode name from ID"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysicsSchema.md","moduleTitle":"sim/physics/PhysicsSchema","source":"engine/sim/physics/PhysicsSchema.js","import":"/engine/sim/physics/PhysicsSchema.js","sourceHash":"7b2c061487e7c773c23bf55bb49605489b3c2576a2bacda2c5b66f03e08fc348","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysicsSchema.js#0002:getColliderShapeId","exportIndex":2,"name":"getColliderShapeId","kind":"function","signature":"getColliderShapeId(shapeName)","summary":"Get collider shape ID from name"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysicsSchema.md","moduleTitle":"sim/physics/PhysicsSchema","source":"engine/sim/physics/PhysicsSchema.js","import":"/engine/sim/physics/PhysicsSchema.js","sourceHash":"7b2c061487e7c773c23bf55bb49605489b3c2576a2bacda2c5b66f03e08fc348","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysicsSchema.js#0003:getColliderShapeName","exportIndex":3,"name":"getColliderShapeName","kind":"function","signature":"getColliderShapeName(shapeId)","summary":"Get collider shape name from ID"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysicsSchema.md","moduleTitle":"sim/physics/PhysicsSchema","source":"engine/sim/physics/PhysicsSchema.js","import":"/engine/sim/physics/PhysicsSchema.js","sourceHash":"7b2c061487e7c773c23bf55bb49605489b3c2576a2bacda2c5b66f03e08fc348","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysicsSchema.js#0004:getCollisionMask","exportIndex":4,"name":"getCollisionMask","kind":"function","signature":"getCollisionMask(...layerNames)","summary":"Get collision layer mask from layer names"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysicsSchema.md","moduleTitle":"sim/physics/PhysicsSchema","source":"engine/sim/physics/PhysicsSchema.js","import":"/engine/sim/physics/PhysicsSchema.js","sourceHash":"7b2c061487e7c773c23bf55bb49605489b3c2576a2bacda2c5b66f03e08fc348","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysicsSchema.js#0005:layersCollide","exportIndex":5,"name":"layersCollide","kind":"function","signature":"layersCollide(maskA, maskB)","summary":"Check if two layer masks collide"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysicsSchema.md","moduleTitle":"sim/physics/PhysicsSchema","source":"engine/sim/physics/PhysicsSchema.js","import":"/engine/sim/physics/PhysicsSchema.js","sourceHash":"7b2c061487e7c773c23bf55bb49605489b3c2576a2bacda2c5b66f03e08fc348","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysicsSchema.js#0006:validatePhysicsBody","exportIndex":6,"name":"validatePhysicsBody","kind":"function","signature":"validatePhysicsBody(config)","summary":"Validate physics body configuration"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysicsSchema.md","moduleTitle":"sim/physics/PhysicsSchema","source":"engine/sim/physics/PhysicsSchema.js","import":"/engine/sim/physics/PhysicsSchema.js","sourceHash":"7b2c061487e7c773c23bf55bb49605489b3c2576a2bacda2c5b66f03e08fc348","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysicsSchema.js#0007:validateCollider","exportIndex":7,"name":"validateCollider","kind":"function","signature":"validateCollider(config)","summary":"Validate collider configuration"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysicsSchema.md","moduleTitle":"sim/physics/PhysicsSchema","source":"engine/sim/physics/PhysicsSchema.js","import":"/engine/sim/physics/PhysicsSchema.js","sourceHash":"7b2c061487e7c773c23bf55bb49605489b3c2576a2bacda2c5b66f03e08fc348","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysicsSchema.js#0008:validatePhysicsMaterial","exportIndex":8,"name":"validatePhysicsMaterial","kind":"function","signature":"validatePhysicsMaterial(config)","summary":"Validate physics material"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysicsSchema.md","moduleTitle":"sim/physics/PhysicsSchema","source":"engine/sim/physics/PhysicsSchema.js","import":"/engine/sim/physics/PhysicsSchema.js","sourceHash":"7b2c061487e7c773c23bf55bb49605489b3c2576a2bacda2c5b66f03e08fc348","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysicsSchema.js#0009:createDefaultPhysicsBody","exportIndex":9,"name":"createDefaultPhysicsBody","kind":"function","signature":"createDefaultPhysicsBody()","summary":"Create default physics body config"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysicsSchema.md","moduleTitle":"sim/physics/PhysicsSchema","source":"engine/sim/physics/PhysicsSchema.js","import":"/engine/sim/physics/PhysicsSchema.js","sourceHash":"7b2c061487e7c773c23bf55bb49605489b3c2576a2bacda2c5b66f03e08fc348","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysicsSchema.js#0010:createDefaultCollider","exportIndex":10,"name":"createDefaultCollider","kind":"function","signature":"createDefaultCollider(shape = \"box\")","summary":"Create default collider config"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysicsSchema.md","moduleTitle":"sim/physics/PhysicsSchema","source":"engine/sim/physics/PhysicsSchema.js","import":"/engine/sim/physics/PhysicsSchema.js","sourceHash":"7b2c061487e7c773c23bf55bb49605489b3c2576a2bacda2c5b66f03e08fc348","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysicsSchema.js#0011:createDefaultJoint","exportIndex":11,"name":"createDefaultJoint","kind":"function","signature":"createDefaultJoint(type = \"fixed\")","summary":"Create default joint config"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysicsSchema.md","moduleTitle":"sim/physics/PhysicsSchema","source":"engine/sim/physics/PhysicsSchema.js","import":"/engine/sim/physics/PhysicsSchema.js","sourceHash":"7b2c061487e7c773c23bf55bb49605489b3c2576a2bacda2c5b66f03e08fc348","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysicsSchema.js#0012:createDefaultPhysicsWorld","exportIndex":12,"name":"createDefaultPhysicsWorld","kind":"function","signature":"createDefaultPhysicsWorld()","summary":"Create default physics world config"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysicsSchema.md","moduleTitle":"sim/physics/PhysicsSchema","source":"engine/sim/physics/PhysicsSchema.js","import":"/engine/sim/physics/PhysicsSchema.js","sourceHash":"7b2c061487e7c773c23bf55bb49605489b3c2576a2bacda2c5b66f03e08fc348","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysicsSchema.js#0013:getPhysicsMaterial","exportIndex":13,"name":"getPhysicsMaterial","kind":"function","signature":"getPhysicsMaterial(name)","summary":"Get physics material by name"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysicsSchema.md","moduleTitle":"sim/physics/PhysicsSchema","source":"engine/sim/physics/PhysicsSchema.js","import":"/engine/sim/physics/PhysicsSchema.js","sourceHash":"7b2c061487e7c773c23bf55bb49605489b3c2576a2bacda2c5b66f03e08fc348","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysicsSchema.js#0014:SIM_MODES","exportIndex":14,"name":"SIM_MODES","kind":"constant","signature":"SIM_MODES","summary":"Physics simulation modes"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysicsSchema.md","moduleTitle":"sim/physics/PhysicsSchema","source":"engine/sim/physics/PhysicsSchema.js","import":"/engine/sim/physics/PhysicsSchema.js","sourceHash":"7b2c061487e7c773c23bf55bb49605489b3c2576a2bacda2c5b66f03e08fc348","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysicsSchema.js#0015:COLLIDER_SHAPES","exportIndex":15,"name":"COLLIDER_SHAPES","kind":"constant","signature":"COLLIDER_SHAPES","summary":"Collider shape types"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysicsSchema.md","moduleTitle":"sim/physics/PhysicsSchema","source":"engine/sim/physics/PhysicsSchema.js","import":"/engine/sim/physics/PhysicsSchema.js","sourceHash":"7b2c061487e7c773c23bf55bb49605489b3c2576a2bacda2c5b66f03e08fc348","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysicsSchema.js#0016:JOINT_TYPES","exportIndex":16,"name":"JOINT_TYPES","kind":"constant","signature":"JOINT_TYPES","summary":"Joint types for articulated bodies"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysicsSchema.md","moduleTitle":"sim/physics/PhysicsSchema","source":"engine/sim/physics/PhysicsSchema.js","import":"/engine/sim/physics/PhysicsSchema.js","sourceHash":"7b2c061487e7c773c23bf55bb49605489b3c2576a2bacda2c5b66f03e08fc348","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysicsSchema.js#0017:D6_MOTION","exportIndex":17,"name":"D6_MOTION","kind":"constant","signature":"D6_MOTION","summary":"D6 joint axis motion types"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysicsSchema.md","moduleTitle":"sim/physics/PhysicsSchema","source":"engine/sim/physics/PhysicsSchema.js","import":"/engine/sim/physics/PhysicsSchema.js","sourceHash":"7b2c061487e7c773c23bf55bb49605489b3c2576a2bacda2c5b66f03e08fc348","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysicsSchema.js#0018:D6_AXES","exportIndex":18,"name":"D6_AXES","kind":"constant","signature":"D6_AXES","summary":"D6 joint axes"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysicsSchema.md","moduleTitle":"sim/physics/PhysicsSchema","source":"engine/sim/physics/PhysicsSchema.js","import":"/engine/sim/physics/PhysicsSchema.js","sourceHash":"7b2c061487e7c773c23bf55bb49605489b3c2576a2bacda2c5b66f03e08fc348","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysicsSchema.js#0019:D6_DRIVES","exportIndex":19,"name":"D6_DRIVES","kind":"constant","signature":"D6_DRIVES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysicsSchema.md","moduleTitle":"sim/physics/PhysicsSchema","source":"engine/sim/physics/PhysicsSchema.js","import":"/engine/sim/physics/PhysicsSchema.js","sourceHash":"7b2c061487e7c773c23bf55bb49605489b3c2576a2bacda2c5b66f03e08fc348","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysicsSchema.js#0020:COLLISION_LAYERS","exportIndex":20,"name":"COLLISION_LAYERS","kind":"constant","signature":"COLLISION_LAYERS","summary":"Collision layer definitions (bitmask)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysicsSchema.md","moduleTitle":"sim/physics/PhysicsSchema","source":"engine/sim/physics/PhysicsSchema.js","import":"/engine/sim/physics/PhysicsSchema.js","sourceHash":"7b2c061487e7c773c23bf55bb49605489b3c2576a2bacda2c5b66f03e08fc348","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysicsSchema.js#0021:PHYSICS_MATERIAL_SCHEMA","exportIndex":21,"name":"PHYSICS_MATERIAL_SCHEMA","kind":"constant","signature":"PHYSICS_MATERIAL_SCHEMA","summary":"Physics material schema **Compliant Contacts (PhysX 5.1+):** Set restitution to a NEGATIVE value to enable spring-damper contact model. This provides more stable collision behavior for complex contact configurations. - restitution = -springStiffness (negative enables compliant mode) - damping = damping ratio for the spring - compliantAcceleration = true to use acceleration spring (mass-independent)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysicsSchema.md","moduleTitle":"sim/physics/PhysicsSchema","source":"engine/sim/physics/PhysicsSchema.js","import":"/engine/sim/physics/PhysicsSchema.js","sourceHash":"7b2c061487e7c773c23bf55bb49605489b3c2576a2bacda2c5b66f03e08fc348","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysicsSchema.js#0022:PHYSICS_MATERIALS","exportIndex":22,"name":"PHYSICS_MATERIALS","kind":"constant","signature":"PHYSICS_MATERIALS","summary":"Preset physics materials Note: Negative restitution enables compliant (spring-damper) contacts"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysicsSchema.md","moduleTitle":"sim/physics/PhysicsSchema","source":"engine/sim/physics/PhysicsSchema.js","import":"/engine/sim/physics/PhysicsSchema.js","sourceHash":"7b2c061487e7c773c23bf55bb49605489b3c2576a2bacda2c5b66f03e08fc348","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysicsSchema.js#0023:PHYSICS_BODY_SCHEMA","exportIndex":23,"name":"PHYSICS_BODY_SCHEMA","kind":"constant","signature":"PHYSICS_BODY_SCHEMA","summary":"Physics body schema"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysicsSchema.md","moduleTitle":"sim/physics/PhysicsSchema","source":"engine/sim/physics/PhysicsSchema.js","import":"/engine/sim/physics/PhysicsSchema.js","sourceHash":"7b2c061487e7c773c23bf55bb49605489b3c2576a2bacda2c5b66f03e08fc348","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysicsSchema.js#0024:COLLIDER_SCHEMA","exportIndex":24,"name":"COLLIDER_SCHEMA","kind":"constant","signature":"COLLIDER_SCHEMA","summary":"Collider schema"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysicsSchema.md","moduleTitle":"sim/physics/PhysicsSchema","source":"engine/sim/physics/PhysicsSchema.js","import":"/engine/sim/physics/PhysicsSchema.js","sourceHash":"7b2c061487e7c773c23bf55bb49605489b3c2576a2bacda2c5b66f03e08fc348","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysicsSchema.js#0025:JOINT_SCHEMA","exportIndex":25,"name":"JOINT_SCHEMA","kind":"constant","signature":"JOINT_SCHEMA","summary":"Joint schema"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysicsSchema.md","moduleTitle":"sim/physics/PhysicsSchema","source":"engine/sim/physics/PhysicsSchema.js","import":"/engine/sim/physics/PhysicsSchema.js","sourceHash":"7b2c061487e7c773c23bf55bb49605489b3c2576a2bacda2c5b66f03e08fc348","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysicsSchema.js#0026:PHYSICS_WORLD_SCHEMA","exportIndex":26,"name":"PHYSICS_WORLD_SCHEMA","kind":"constant","signature":"PHYSICS_WORLD_SCHEMA","summary":"Physics world configuration"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysicsSchema.md","moduleTitle":"sim/physics/PhysicsSchema","source":"engine/sim/physics/PhysicsSchema.js","import":"/engine/sim/physics/PhysicsSchema.js","sourceHash":"7b2c061487e7c773c23bf55bb49605489b3c2576a2bacda2c5b66f03e08fc348","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysicsSchema.js#0027:STANDARD_COLLIDER_MESHES","exportIndex":27,"name":"STANDARD_COLLIDER_MESHES","kind":"constant","signature":"STANDARD_COLLIDER_MESHES","summary":"Standard convex collider mesh IDs"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysicsWorld.md","moduleTitle":"sim/physics/PhysicsWorld","source":"engine/sim/physics/PhysicsWorld.js","import":"/engine/sim/physics/PhysicsWorld.js","sourceHash":"baca91fd7841cc4105753bb1a43212d8df35cf1ca9e97f93c3f062c939fd28f8","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/PhysicsWorld.js","title":"sim/physics/PhysicsWorld","summary":"","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysicsWorld.md","moduleTitle":"sim/physics/PhysicsWorld","source":"engine/sim/physics/PhysicsWorld.js","import":"/engine/sim/physics/PhysicsWorld.js","sourceHash":"baca91fd7841cc4105753bb1a43212d8df35cf1ca9e97f93c3f062c939fd28f8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysicsWorld.js#0000:createPhysicsWorld","exportIndex":0,"name":"createPhysicsWorld","kind":"function","signature":"createPhysicsWorld(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysicsWorld.md","moduleTitle":"sim/physics/PhysicsWorld","source":"engine/sim/physics/PhysicsWorld.js","import":"/engine/sim/physics/PhysicsWorld.js","sourceHash":"baca91fd7841cc4105753bb1a43212d8df35cf1ca9e97f93c3f062c939fd28f8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysicsWorld.js#0001:destroyPhysicsWorld","exportIndex":1,"name":"destroyPhysicsWorld","kind":"function","signature":"destroyPhysicsWorld(physicsWorld)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysicsWorld.md","moduleTitle":"sim/physics/PhysicsWorld","source":"engine/sim/physics/PhysicsWorld.js","import":"/engine/sim/physics/PhysicsWorld.js","sourceHash":"baca91fd7841cc4105753bb1a43212d8df35cf1ca9e97f93c3f062c939fd28f8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysicsWorld.js#0002:createBody","exportIndex":2,"name":"createBody","kind":"function","signature":"createBody(physicsWorld, desc)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysicsWorld.md","moduleTitle":"sim/physics/PhysicsWorld","source":"engine/sim/physics/PhysicsWorld.js","import":"/engine/sim/physics/PhysicsWorld.js","sourceHash":"baca91fd7841cc4105753bb1a43212d8df35cf1ca9e97f93c3f062c939fd28f8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysicsWorld.js#0003:getBody","exportIndex":3,"name":"getBody","kind":"function","signature":"getBody(physicsWorld, handle)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysicsWorld.md","moduleTitle":"sim/physics/PhysicsWorld","source":"engine/sim/physics/PhysicsWorld.js","import":"/engine/sim/physics/PhysicsWorld.js","sourceHash":"baca91fd7841cc4105753bb1a43212d8df35cf1ca9e97f93c3f062c939fd28f8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysicsWorld.js#0004:removeBody","exportIndex":4,"name":"removeBody","kind":"function","signature":"removeBody(physicsWorld, handle)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysicsWorld.md","moduleTitle":"sim/physics/PhysicsWorld","source":"engine/sim/physics/PhysicsWorld.js","import":"/engine/sim/physics/PhysicsWorld.js","sourceHash":"baca91fd7841cc4105753bb1a43212d8df35cf1ca9e97f93c3f062c939fd28f8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysicsWorld.js#0005:stepPhysicsWorld","exportIndex":5,"name":"stepPhysicsWorld","kind":"function","signature":"stepPhysicsWorld(physicsWorld, deltaSeconds)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/PhysicsWorld.md","moduleTitle":"sim/physics/PhysicsWorld","source":"engine/sim/physics/PhysicsWorld.js","import":"/engine/sim/physics/PhysicsWorld.js","sourceHash":"baca91fd7841cc4105753bb1a43212d8df35cf1ca9e97f93c3f062c939fd28f8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/PhysicsWorld.js#0006:PhysicsWorld","exportIndex":6,"name":"PhysicsWorld","kind":"re-export","signature":"PhysicsWorld","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/SDFCollision.md","moduleTitle":"sim/physics/SDFCollision","source":"engine/sim/physics/SDFCollision.js","import":"/engine/sim/physics/SDFCollision.js","sourceHash":"88762feef26f204c25c91b6a79b76c446ca4bfd2c47ad2a2dfb385d2a99d03aa","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/SDFCollision.js","title":"sim/physics/SDFCollision","summary":"SDFCollision.js - Signed Distance Field Collision Detection Based on GPU Gems 3, Chapter 34: \"Signed Distance Fields Using Single-Pass GPU Scan\" and PhysX 5.x SDF collision geometry. SDFs provide: - Accurate collision for concave shapes without decomposition - Efficient distance queries for soft body interactions - Smooth contact normals for stable simulation - Fast ray/sphere casting The SDF stores the signed distance to the nearest surface at each point: - Negative inside the object - Positive outside the object - Zero on the surface","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/SDFCollision.md","moduleTitle":"sim/physics/SDFCollision","source":"engine/sim/physics/SDFCollision.js","import":"/engine/sim/physics/SDFCollision.js","sourceHash":"88762feef26f204c25c91b6a79b76c446ca4bfd2c47ad2a2dfb385d2a99d03aa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/SDFCollision.js#0000:SDFGrid","exportIndex":0,"name":"SDFGrid","kind":"class","signature":"class SDFGrid","summary":"3D SDF Grid for collision detection"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/SDFCollision.md","moduleTitle":"sim/physics/SDFCollision","source":"engine/sim/physics/SDFCollision.js","import":"/engine/sim/physics/SDFCollision.js","sourceHash":"88762feef26f204c25c91b6a79b76c446ca4bfd2c47ad2a2dfb385d2a99d03aa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/SDFCollision.js#0001:createSDFFromMesh","exportIndex":1,"name":"createSDFFromMesh","kind":"function","signature":"createSDFFromMesh(vertices, indices, options = {})","summary":"Create SDF collider from mesh using jump flooding algorithm This is a simplified CPU version - GPU version would be faster"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/SDFCollision.md","moduleTitle":"sim/physics/SDFCollision","source":"engine/sim/physics/SDFCollision.js","import":"/engine/sim/physics/SDFCollision.js","sourceHash":"88762feef26f204c25c91b6a79b76c446ca4bfd2c47ad2a2dfb385d2a99d03aa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/SDFCollision.js#0002:SDFPrimitives","exportIndex":2,"name":"SDFPrimitives","kind":"constant","signature":"SDFPrimitives","summary":"SDF primitive functions"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/SDFCollision.md","moduleTitle":"sim/physics/SDFCollision","source":"engine/sim/physics/SDFCollision.js","import":"/engine/sim/physics/SDFCollision.js","sourceHash":"88762feef26f204c25c91b6a79b76c446ca4bfd2c47ad2a2dfb385d2a99d03aa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/SDFCollision.js#0003:SDFOperations","exportIndex":3,"name":"SDFOperations","kind":"constant","signature":"SDFOperations","summary":"SDF combination operations"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/SeismicSystem.md","moduleTitle":"sim/physics/SeismicSystem","source":"engine/sim/physics/SeismicSystem.js","import":"/engine/sim/physics/SeismicSystem.js","sourceHash":"95904af0338d65b31980ad24108a2bcf5afa12bd5d5260c5d9604219cb03747a","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/SeismicSystem.js","title":"sim/physics/SeismicSystem","summary":"SeismicSystem.js - Tectonic Simulation and Earthquake Events Simulates geological activity on the planet: - Tectonic fault lines with stress accumulation - Earthquake event triggering when stress exceeds threshold - Seismic wave propagation (P-waves, S-waves, surface waves) - Distance-based attenuation - Character/entity response integration Wave Types: - P-waves (Primary): Compressional, fastest, travels through solids/liquids - S-waves (Secondary): Shear, slower, solids only - Surface waves: Slowest, most destructive, along surface","exportCount":8}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/SeismicSystem.md","moduleTitle":"sim/physics/SeismicSystem","source":"engine/sim/physics/SeismicSystem.js","import":"/engine/sim/physics/SeismicSystem.js","sourceHash":"95904af0338d65b31980ad24108a2bcf5afa12bd5d5260c5d9604219cb03747a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/SeismicSystem.js#0000:FaultLine","exportIndex":0,"name":"FaultLine","kind":"class","signature":"class FaultLine","summary":"Represents a tectonic fault line"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/SeismicSystem.md","moduleTitle":"sim/physics/SeismicSystem","source":"engine/sim/physics/SeismicSystem.js","import":"/engine/sim/physics/SeismicSystem.js","sourceHash":"95904af0338d65b31980ad24108a2bcf5afa12bd5d5260c5d9604219cb03747a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/SeismicSystem.js#0001:SeismicWave","exportIndex":1,"name":"SeismicWave","kind":"class","signature":"class SeismicWave","summary":"Propagating seismic wave"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/SeismicSystem.md","moduleTitle":"sim/physics/SeismicSystem","source":"engine/sim/physics/SeismicSystem.js","import":"/engine/sim/physics/SeismicSystem.js","sourceHash":"95904af0338d65b31980ad24108a2bcf5afa12bd5d5260c5d9604219cb03747a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/SeismicSystem.js#0002:Earthquake","exportIndex":2,"name":"Earthquake","kind":"class","signature":"class Earthquake","summary":"Complete earthquake event with multiple wave types"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/SeismicSystem.md","moduleTitle":"sim/physics/SeismicSystem","source":"engine/sim/physics/SeismicSystem.js","import":"/engine/sim/physics/SeismicSystem.js","sourceHash":"95904af0338d65b31980ad24108a2bcf5afa12bd5d5260c5d9604219cb03747a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/SeismicSystem.js#0003:SeismicSystem","exportIndex":3,"name":"SeismicSystem","kind":"class","signature":"class SeismicSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/SeismicSystem.md","moduleTitle":"sim/physics/SeismicSystem","source":"engine/sim/physics/SeismicSystem.js","import":"/engine/sim/physics/SeismicSystem.js","sourceHash":"95904af0338d65b31980ad24108a2bcf5afa12bd5d5260c5d9604219cb03747a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/SeismicSystem.js#0004:WaveType","exportIndex":4,"name":"WaveType","kind":"constant","signature":"WaveType","summary":"Wave types"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/SeismicSystem.md","moduleTitle":"sim/physics/SeismicSystem","source":"engine/sim/physics/SeismicSystem.js","import":"/engine/sim/physics/SeismicSystem.js","sourceHash":"95904af0338d65b31980ad24108a2bcf5afa12bd5d5260c5d9604219cb03747a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/SeismicSystem.js#0005:WAVE_SPEEDS","exportIndex":5,"name":"WAVE_SPEEDS","kind":"constant","signature":"WAVE_SPEEDS","summary":"Wave speeds (m/s, scaled for game)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/SeismicSystem.md","moduleTitle":"sim/physics/SeismicSystem","source":"engine/sim/physics/SeismicSystem.js","import":"/engine/sim/physics/SeismicSystem.js","sourceHash":"95904af0338d65b31980ad24108a2bcf5afa12bd5d5260c5d9604219cb03747a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/SeismicSystem.js#0006:MagnitudeScale","exportIndex":6,"name":"MagnitudeScale","kind":"constant","signature":"MagnitudeScale","summary":"Earthquake magnitude scales"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/SeismicSystem.md","moduleTitle":"sim/physics/SeismicSystem","source":"engine/sim/physics/SeismicSystem.js","import":"/engine/sim/physics/SeismicSystem.js","sourceHash":"95904af0338d65b31980ad24108a2bcf5afa12bd5d5260c5d9604219cb03747a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/SeismicSystem.js#0007:DEFAULT_PARAMS","exportIndex":7,"name":"DEFAULT_PARAMS","kind":"constant","signature":"DEFAULT_PARAMS","summary":"Default seismic parameters"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/ShockPropagation.md","moduleTitle":"sim/physics/ShockPropagation","source":"engine/sim/physics/ShockPropagation.js","import":"/engine/sim/physics/ShockPropagation.js","sourceHash":"b23374c6b05dd0c3e0bff9bbaaa90b438c2e3264bfa62f08863a2e8e7f4cb110","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/ShockPropagation.js","title":"sim/physics/ShockPropagation","summary":"ShockPropagation.js - Shock Propagation for Stable Stacking Based on \"Nonconvex Rigid Bodies with Stacking\" (Guendelman et al., SIGGRAPH 2003) and NVIDIA PhysX best practices. Problem: Standard iterative solvers struggle with deep stacks of objects. Objects at the bottom don't \"know\" about the weight above them, causing jitter and instability. Solution: Process contacts in a specific order, propagating forces from the ground upward through the contact graph. This ensures each layer is stable before processing the next. Key Techniques: - Contact graph construction - Topological sorting by \"height\" from ground - Bottom-up constraint solving - Velocity-level shock propagation","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/ShockPropagation.md","moduleTitle":"sim/physics/ShockPropagation","source":"engine/sim/physics/ShockPropagation.js","import":"/engine/sim/physics/ShockPropagation.js","sourceHash":"b23374c6b05dd0c3e0bff9bbaaa90b438c2e3264bfa62f08863a2e8e7f4cb110","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/ShockPropagation.js#0000:ShockPropagationSolver","exportIndex":0,"name":"ShockPropagationSolver","kind":"class","signature":"class ShockPropagationSolver","summary":"Shock propagation solver for stable stacking"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/ShockPropagation.md","moduleTitle":"sim/physics/ShockPropagation","source":"engine/sim/physics/ShockPropagation.js","import":"/engine/sim/physics/ShockPropagation.js","sourceHash":"b23374c6b05dd0c3e0bff9bbaaa90b438c2e3264bfa62f08863a2e8e7f4cb110","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/ShockPropagation.js#0001:applyShockPropagation","exportIndex":1,"name":"applyShockPropagation","kind":"function","signature":"applyShockPropagation(world, contacts, dt)","summary":"Integrate shock propagation with existing physics world Call this after broad/narrow phase but before velocity integration"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/SpatialIntegritySystem.md","moduleTitle":"sim/physics/SpatialIntegritySystem","source":"engine/sim/physics/SpatialIntegritySystem.js","import":"/engine/sim/physics/SpatialIntegritySystem.js","sourceHash":"ac8d386da0352a0225e0d3221077e08d40eac1b36f937a76310ba3327ff10e1d","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/SpatialIntegritySystem.js","title":"sim/physics/SpatialIntegritySystem","summary":"SpatialIntegritySystem.js - Coordinate Validation & Correction Ensures spatial integrity for planetary-scale worlds: - O(1) position lookup via composite keys - Fast checksum validation for corruption detection - World-tick based temporal tracking - Authority snapshots for rollback/sync - Drift correction for network sync Designed for minimal overhead while providing strong guarantees.","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/SpatialIntegritySystem.md","moduleTitle":"sim/physics/SpatialIntegritySystem","source":"engine/sim/physics/SpatialIntegritySystem.js","import":"/engine/sim/physics/SpatialIntegritySystem.js","sourceHash":"ac8d386da0352a0225e0d3221077e08d40eac1b36f937a76310ba3327ff10e1d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/SpatialIntegritySystem.js#0000:SpatialIntegritySystem","exportIndex":0,"name":"SpatialIntegritySystem","kind":"class","signature":"class SpatialIntegritySystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/SpatialIntegritySystem.md","moduleTitle":"sim/physics/SpatialIntegritySystem","source":"engine/sim/physics/SpatialIntegritySystem.js","import":"/engine/sim/physics/SpatialIntegritySystem.js","sourceHash":"ac8d386da0352a0225e0d3221077e08d40eac1b36f937a76310ba3327ff10e1d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/SpatialIntegritySystem.js#0001:ChunkIntegrityTracker","exportIndex":1,"name":"ChunkIntegrityTracker","kind":"class","signature":"class ChunkIntegrityTracker","summary":"Specialized integrity tracking for chunk positions Uses integer coordinates for exact matching"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/SpatialIntegritySystem.md","moduleTitle":"sim/physics/SpatialIntegritySystem","source":"engine/sim/physics/SpatialIntegritySystem.js","import":"/engine/sim/physics/SpatialIntegritySystem.js","sourceHash":"ac8d386da0352a0225e0d3221077e08d40eac1b36f937a76310ba3327ff10e1d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/SpatialIntegritySystem.js#0002:EntityCategory","exportIndex":2,"name":"EntityCategory","kind":"constant","signature":"EntityCategory","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/SpatialIntegritySystem.md","moduleTitle":"sim/physics/SpatialIntegritySystem","source":"engine/sim/physics/SpatialIntegritySystem.js","import":"/engine/sim/physics/SpatialIntegritySystem.js","sourceHash":"ac8d386da0352a0225e0d3221077e08d40eac1b36f937a76310ba3327ff10e1d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/SpatialIntegritySystem.js#0003:ValidationResult","exportIndex":3,"name":"ValidationResult","kind":"constant","signature":"ValidationResult","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/SpeculativeContacts.md","moduleTitle":"sim/physics/SpeculativeContacts","source":"engine/sim/physics/SpeculativeContacts.js","import":"/engine/sim/physics/SpeculativeContacts.js","sourceHash":"2c271c46a9a88edac3d9b4288c52be9f95e2cb0ec69d4c7f3b3e506a2ba6a5f3","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/SpeculativeContacts.js","title":"sim/physics/SpeculativeContacts","summary":"SpeculativeContacts.js - Speculative Continuous Collision Detection Based on \"Speculative Contacts\" (Bullet Physics) and PhysX eSPECULATIVE_CCD. Traditional CCD is expensive as it requires time-of-impact (TOI) calculations. Speculative contacts provide a cheaper alternative: 1. Expand AABBs by velocity * dt to predict where objects will be 2. Generate contacts for all potentially overlapping pairs 3. Add velocity constraints to prevent future penetration Benefits: - Cheaper than sweep-based CCD - Prevents tunneling for most cases - Works well with iterative solvers Limitations: - Can cause \"ghost collisions\" with thin objects - Not as accurate as full CCD for very fast objects","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/SpeculativeContacts.md","moduleTitle":"sim/physics/SpeculativeContacts","source":"engine/sim/physics/SpeculativeContacts.js","import":"/engine/sim/physics/SpeculativeContacts.js","sourceHash":"2c271c46a9a88edac3d9b4288c52be9f95e2cb0ec69d4c7f3b3e506a2ba6a5f3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/SpeculativeContacts.js#0000:SpeculativeContactsSolver","exportIndex":0,"name":"SpeculativeContactsSolver","kind":"class","signature":"class SpeculativeContactsSolver","summary":"Speculative contacts solver"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/SpeculativeContacts.md","moduleTitle":"sim/physics/SpeculativeContacts","source":"engine/sim/physics/SpeculativeContacts.js","import":"/engine/sim/physics/SpeculativeContacts.js","sourceHash":"2c271c46a9a88edac3d9b4288c52be9f95e2cb0ec69d4c7f3b3e506a2ba6a5f3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/SpeculativeContacts.js#0001:expandAABBByVelocity","exportIndex":1,"name":"expandAABBByVelocity","kind":"function","signature":"expandAABBByVelocity(aabb, velocity, dt, margin = 0.01)","summary":"Expand AABB by velocity to get speculative bounds"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/SpeculativeContacts.md","moduleTitle":"sim/physics/SpeculativeContacts","source":"engine/sim/physics/SpeculativeContacts.js","import":"/engine/sim/physics/SpeculativeContacts.js","sourceHash":"2c271c46a9a88edac3d9b4288c52be9f95e2cb0ec69d4c7f3b3e506a2ba6a5f3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/SpeculativeContacts.js#0002:timeOfClosestApproach","exportIndex":2,"name":"timeOfClosestApproach","kind":"function","signature":"timeOfClosestApproach(posA, velA, radiusA, posB, velB, radiusB)","summary":"Calculate time of closest approach between two moving spheres Used for speculative contact timing"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/SpeculativeContacts.md","moduleTitle":"sim/physics/SpeculativeContacts","source":"engine/sim/physics/SpeculativeContacts.js","import":"/engine/sim/physics/SpeculativeContacts.js","sourceHash":"2c271c46a9a88edac3d9b4288c52be9f95e2cb0ec69d4c7f3b3e506a2ba6a5f3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/SpeculativeContacts.js#0003:enablePhysXSpeculativeCCD","exportIndex":3,"name":"enablePhysXSpeculativeCCD","kind":"function","signature":"enablePhysXSpeculativeCCD(actor, PhysX)","summary":"Enable speculative CCD on a PhysX rigid body This configures the PhysX-specific flags for speculative contacts"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/StandardColliderMeshes.md","moduleTitle":"sim/physics/StandardColliderMeshes","source":"engine/sim/physics/StandardColliderMeshes.js","import":"/engine/sim/physics/StandardColliderMeshes.js","sourceHash":"47a89cedbba0459370064b7ab80398f02cc30470de15a20aa2c077ad03b52309","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/StandardColliderMeshes.js","title":"sim/physics/StandardColliderMeshes","summary":"","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/StandardColliderMeshes.md","moduleTitle":"sim/physics/StandardColliderMeshes","source":"engine/sim/physics/StandardColliderMeshes.js","import":"/engine/sim/physics/StandardColliderMeshes.js","sourceHash":"47a89cedbba0459370064b7ab80398f02cc30470de15a20aa2c077ad03b52309","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/StandardColliderMeshes.js#0000:getStandardColliderBaseHalfExtents","exportIndex":0,"name":"getStandardColliderBaseHalfExtents","kind":"function","signature":"getStandardColliderBaseHalfExtents(meshId)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/StandardColliderMeshes.md","moduleTitle":"sim/physics/StandardColliderMeshes","source":"engine/sim/physics/StandardColliderMeshes.js","import":"/engine/sim/physics/StandardColliderMeshes.js","sourceHash":"47a89cedbba0459370064b7ab80398f02cc30470de15a20aa2c077ad03b52309","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/StandardColliderMeshes.js#0001:ensureStandardColliderMeshes","exportIndex":1,"name":"ensureStandardColliderMeshes","kind":"function","signature":"ensureStandardColliderMeshes(world)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/StandardColliderMeshes.md","moduleTitle":"sim/physics/StandardColliderMeshes","source":"engine/sim/physics/StandardColliderMeshes.js","import":"/engine/sim/physics/StandardColliderMeshes.js","sourceHash":"47a89cedbba0459370064b7ab80398f02cc30470de15a20aa2c077ad03b52309","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/StandardColliderMeshes.js#0002:StandardColliderMeshIds","exportIndex":2,"name":"StandardColliderMeshIds","kind":"constant","signature":"StandardColliderMeshIds","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/StandardColliderMeshes.md","moduleTitle":"sim/physics/StandardColliderMeshes","source":"engine/sim/physics/StandardColliderMeshes.js","import":"/engine/sim/physics/StandardColliderMeshes.js","sourceHash":"47a89cedbba0459370064b7ab80398f02cc30470de15a20aa2c077ad03b52309","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/StandardColliderMeshes.js#0003:StandardColliderMeshes","exportIndex":3,"name":"StandardColliderMeshes","kind":"re-export","signature":"StandardColliderMeshes","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/StructuralIntegrity.md","moduleTitle":"sim/physics/StructuralIntegrity","source":"engine/sim/physics/StructuralIntegrity.js","import":"/engine/sim/physics/StructuralIntegrity.js","sourceHash":"b329056485069d2e4984e5e7904c42dd08f84c9f305f875093fd506da42735af","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/StructuralIntegrity.js","title":"sim/physics/StructuralIntegrity","summary":"StructuralIntegrity.js - Structural Integrity and Collapse System Implements realistic structural mechanics for destructible buildings: - Iterative relaxation solver for force propagation - Stress accumulation and breaking thresholds - Connectivity analysis with flood-fill from anchors - Chain reaction cascading collapse Based on constraint relaxation similar to Verlet physics but for structural connections rather than particle positions.","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/StructuralIntegrity.md","moduleTitle":"sim/physics/StructuralIntegrity","source":"engine/sim/physics/StructuralIntegrity.js","import":"/engine/sim/physics/StructuralIntegrity.js","sourceHash":"b329056485069d2e4984e5e7904c42dd08f84c9f305f875093fd506da42735af","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/StructuralIntegrity.js#0000:StructuralNode","exportIndex":0,"name":"StructuralNode","kind":"class","signature":"class StructuralNode","summary":"A node in the structural graph (corresponds to a fragment or chunk)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/StructuralIntegrity.md","moduleTitle":"sim/physics/StructuralIntegrity","source":"engine/sim/physics/StructuralIntegrity.js","import":"/engine/sim/physics/StructuralIntegrity.js","sourceHash":"b329056485069d2e4984e5e7904c42dd08f84c9f305f875093fd506da42735af","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/StructuralIntegrity.js#0001:StructuralEdge","exportIndex":1,"name":"StructuralEdge","kind":"class","signature":"class StructuralEdge","summary":"An edge connecting two structural nodes"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/StructuralIntegrity.md","moduleTitle":"sim/physics/StructuralIntegrity","source":"engine/sim/physics/StructuralIntegrity.js","import":"/engine/sim/physics/StructuralIntegrity.js","sourceHash":"b329056485069d2e4984e5e7904c42dd08f84c9f305f875093fd506da42735af","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/StructuralIntegrity.js#0002:StructuralIntegritySolver","exportIndex":2,"name":"StructuralIntegritySolver","kind":"class","signature":"class StructuralIntegritySolver","summary":"Main structural integrity system"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/StructuralIntegrity.md","moduleTitle":"sim/physics/StructuralIntegrity","source":"engine/sim/physics/StructuralIntegrity.js","import":"/engine/sim/physics/StructuralIntegrity.js","sourceHash":"b329056485069d2e4984e5e7904c42dd08f84c9f305f875093fd506da42735af","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/StructuralIntegrity.js#0003:ANCHOR_TYPE","exportIndex":3,"name":"ANCHOR_TYPE","kind":"constant","signature":"ANCHOR_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/TreePhysics.md","moduleTitle":"sim/physics/TreePhysics","source":"engine/sim/physics/TreePhysics.js","import":"/engine/sim/physics/TreePhysics.js","sourceHash":"dee13420258954f0d3f97c9089ed9988bf981ff820e02933c62da73f1c1b5b9d","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/TreePhysics.js","title":"sim/physics/TreePhysics","summary":"TreePhysics.js - Teardown-style Tree Physics System Features: - Trees must spawn on solid ground (validated placement) - Root connection tracking (trees anchored at base) - Structural integrity - cut trees fall realistically - Physics body conversion when disconnected Based on Teardown's structural integrity system where objects fall when disconnected from anchors (ground).","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/TreePhysics.md","moduleTitle":"sim/physics/TreePhysics","source":"engine/sim/physics/TreePhysics.js","import":"/engine/sim/physics/TreePhysics.js","sourceHash":"dee13420258954f0d3f97c9089ed9988bf981ff820e02933c62da73f1c1b5b9d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/TreePhysics.js#0000:TreeVoxelBody","exportIndex":0,"name":"TreeVoxelBody","kind":"class","signature":"class TreeVoxelBody","summary":"Represents a tree's voxel structure for physics"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/TreePhysics.md","moduleTitle":"sim/physics/TreePhysics","source":"engine/sim/physics/TreePhysics.js","import":"/engine/sim/physics/TreePhysics.js","sourceHash":"dee13420258954f0d3f97c9089ed9988bf981ff820e02933c62da73f1c1b5b9d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/TreePhysics.js#0001:TreePhysicsSystem","exportIndex":1,"name":"TreePhysicsSystem","kind":"class","signature":"class TreePhysicsSystem","summary":"Manages all tree physics in the world"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/UnifiedDamageSystem.md","moduleTitle":"sim/physics/UnifiedDamageSystem","source":"engine/sim/physics/UnifiedDamageSystem.js","import":"/engine/sim/physics/UnifiedDamageSystem.js","sourceHash":"a50848e7d1c7a8fd23bad3d8c97dd9e32a9a5f75be356143af697e360c404abd","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/UnifiedDamageSystem.js","title":"sim/physics/UnifiedDamageSystem","summary":"UnifiedDamageSystem.js - Cross-System Damage Integration Connects all destruction systems so everything affects everything: - Particles damage voxels (erosion, accumulation) - Particles damage meshes (impact fracture) - Mesh debris creates voxel craters - Voxel explosions affect mesh structures Acts as the central hub for damage propagation between systems.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/UnifiedDamageSystem.md","moduleTitle":"sim/physics/UnifiedDamageSystem","source":"engine/sim/physics/UnifiedDamageSystem.js","import":"/engine/sim/physics/UnifiedDamageSystem.js","sourceHash":"a50848e7d1c7a8fd23bad3d8c97dd9e32a9a5f75be356143af697e360c404abd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/UnifiedDamageSystem.js#0000:DamageEvent","exportIndex":0,"name":"DamageEvent","kind":"class","signature":"class DamageEvent","summary":"Represents a damage event that propagates through systems"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/UnifiedDamageSystem.md","moduleTitle":"sim/physics/UnifiedDamageSystem","source":"engine/sim/physics/UnifiedDamageSystem.js","import":"/engine/sim/physics/UnifiedDamageSystem.js","sourceHash":"a50848e7d1c7a8fd23bad3d8c97dd9e32a9a5f75be356143af697e360c404abd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/UnifiedDamageSystem.js#0001:UnifiedDamageSystem","exportIndex":1,"name":"UnifiedDamageSystem","kind":"class","signature":"class UnifiedDamageSystem","summary":"Central damage system that coordinates between all subsystems"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/UnifiedDamageSystem.md","moduleTitle":"sim/physics/UnifiedDamageSystem","source":"engine/sim/physics/UnifiedDamageSystem.js","import":"/engine/sim/physics/UnifiedDamageSystem.js","sourceHash":"a50848e7d1c7a8fd23bad3d8c97dd9e32a9a5f75be356143af697e360c404abd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/UnifiedDamageSystem.js#0002:DAMAGE_TYPE","exportIndex":2,"name":"DAMAGE_TYPE","kind":"constant","signature":"DAMAGE_TYPE","summary":"Damage types"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/VoronoiFracture.md","moduleTitle":"sim/physics/VoronoiFracture","source":"engine/sim/physics/VoronoiFracture.js","import":"/engine/sim/physics/VoronoiFracture.js","sourceHash":"243cfebc3872355731198e238e26c9e69f2ed547f502e8f01ab28a39f213d822","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/VoronoiFracture.js","title":"sim/physics/VoronoiFracture","summary":"VoronoiFracture.js - GPU-accelerated Voronoi Fracture System Uses Jump Flooding Algorithm (JFA) to compute 3D Voronoi diagrams for realistic mesh fracturing. Seeds are placed based on impact location and fracture patterns. Algorithm: 1. Place seed points (impact-based or pattern-based) 2. Run JFA to compute nearest seed for each voxel 3. Extract cell boundaries as fracture planes 4. Cut mesh along planes to create fragments","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/VoronoiFracture.md","moduleTitle":"sim/physics/VoronoiFracture","source":"engine/sim/physics/VoronoiFracture.js","import":"/engine/sim/physics/VoronoiFracture.js","sourceHash":"243cfebc3872355731198e238e26c9e69f2ed547f502e8f01ab28a39f213d822","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/VoronoiFracture.js#0000:VoronoiFracture","exportIndex":0,"name":"VoronoiFracture","kind":"class","signature":"class VoronoiFracture","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/VoronoiFracture.md","moduleTitle":"sim/physics/VoronoiFracture","source":"engine/sim/physics/VoronoiFracture.js","import":"/engine/sim/physics/VoronoiFracture.js","sourceHash":"243cfebc3872355731198e238e26c9e69f2ed547f502e8f01ab28a39f213d822","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/VoronoiFracture.js#0001:FRACTURE_PATTERNS","exportIndex":1,"name":"FRACTURE_PATTERNS","kind":"constant","signature":"FRACTURE_PATTERNS","summary":"Predefined fracture patterns for different impact types"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/VoxelMeshCollision.md","moduleTitle":"sim/physics/VoxelMeshCollision","source":"engine/sim/physics/VoxelMeshCollision.js","import":"/engine/sim/physics/VoxelMeshCollision.js","sourceHash":"93d022c0d4d7ee64e7350a8090692caac437db0799f99fef5948055eb28c1421","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/VoxelMeshCollision.js","title":"sim/physics/VoxelMeshCollision","summary":"VoxelMeshCollision.js - Voxel-based Mesh Collision for Particles and Ropes Voxelizes meshes into an occupancy grid with compressed normals for efficient GPU collision detection. This allows particles and ropes to collide with arbitrary mesh geometry beyond simple AABBs. Representation (per voxel, 32 bits total): - Bit 31: Occupancy flag (1 = solid) - Bits 30-21: Normal X (10 bits, signed normalized) - Bits 20-11: Normal Y (10 bits, signed normalized) - Bits 10-1: Normal Z (10 bits, signed normalized) - Bit 0: Reserved Features: - GPU mesh voxelization via compute shader - Compressed normal storage (10-10-10-2 format) - Cascaded/multi-resolution support - GPU collision queries for particles - Cache and reuse voxelized meshes","exportCount":8}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/VoxelMeshCollision.md","moduleTitle":"sim/physics/VoxelMeshCollision","source":"engine/sim/physics/VoxelMeshCollision.js","import":"/engine/sim/physics/VoxelMeshCollision.js","sourceHash":"93d022c0d4d7ee64e7350a8090692caac437db0799f99fef5948055eb28c1421","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/VoxelMeshCollision.js#0000:VoxelMeshCollider","exportIndex":0,"name":"VoxelMeshCollider","kind":"class","signature":"class VoxelMeshCollider","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/VoxelMeshCollision.md","moduleTitle":"sim/physics/VoxelMeshCollision","source":"engine/sim/physics/VoxelMeshCollision.js","import":"/engine/sim/physics/VoxelMeshCollision.js","sourceHash":"93d022c0d4d7ee64e7350a8090692caac437db0799f99fef5948055eb28c1421","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/VoxelMeshCollision.js#0001:CascadedVoxelCollider","exportIndex":1,"name":"CascadedVoxelCollider","kind":"class","signature":"class CascadedVoxelCollider","summary":"CascadedVoxelCollider - Multi-resolution voxel collision with LOD levels Uses multiple grid resolutions for efficient collision: - LOD 0: Fine (128³) - Near particles, high accuracy - LOD 1: Medium (64³) - Mid-range particles - LOD 2: Coarse (32³) - Far particles, fast queries"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/VoxelMeshCollision.md","moduleTitle":"sim/physics/VoxelMeshCollision","source":"engine/sim/physics/VoxelMeshCollision.js","import":"/engine/sim/physics/VoxelMeshCollision.js","sourceHash":"93d022c0d4d7ee64e7350a8090692caac437db0799f99fef5948055eb28c1421","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/VoxelMeshCollision.js#0002:VoxelCacheManager","exportIndex":2,"name":"VoxelCacheManager","kind":"class","signature":"class VoxelCacheManager","summary":"VoxelCacheManager - Persistent cache for voxelized meshes Saves/loads voxelized mesh data to avoid re-voxelization. Uses IndexedDB for persistence."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/VoxelMeshCollision.md","moduleTitle":"sim/physics/VoxelMeshCollision","source":"engine/sim/physics/VoxelMeshCollision.js","import":"/engine/sim/physics/VoxelMeshCollision.js","sourceHash":"93d022c0d4d7ee64e7350a8090692caac437db0799f99fef5948055eb28c1421","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/VoxelMeshCollision.js#0003:meshToTriangleBuffer","exportIndex":3,"name":"meshToTriangleBuffer","kind":"function","signature":"meshToTriangleBuffer(vertices, indices)","summary":"Helper: Convert mesh vertices/indices to triangle buffer format"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/VoxelMeshCollision.md","moduleTitle":"sim/physics/VoxelMeshCollision","source":"engine/sim/physics/VoxelMeshCollision.js","import":"/engine/sim/physics/VoxelMeshCollision.js","sourceHash":"93d022c0d4d7ee64e7350a8090692caac437db0799f99fef5948055eb28c1421","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/VoxelMeshCollision.js#0004:computeMeshBounds","exportIndex":4,"name":"computeMeshBounds","kind":"function","signature":"computeMeshBounds(vertices)","summary":"Helper: Compute mesh AABB"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/VoxelMeshCollision.md","moduleTitle":"sim/physics/VoxelMeshCollision","source":"engine/sim/physics/VoxelMeshCollision.js","import":"/engine/sim/physics/VoxelMeshCollision.js","sourceHash":"93d022c0d4d7ee64e7350a8090692caac437db0799f99fef5948055eb28c1421","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/VoxelMeshCollision.js#0005:createVoxelMeshCollider","exportIndex":5,"name":"createVoxelMeshCollider","kind":"function","signature":"createVoxelMeshCollider(device, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/VoxelMeshCollision.md","moduleTitle":"sim/physics/VoxelMeshCollision","source":"engine/sim/physics/VoxelMeshCollision.js","import":"/engine/sim/physics/VoxelMeshCollision.js","sourceHash":"93d022c0d4d7ee64e7350a8090692caac437db0799f99fef5948055eb28c1421","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/VoxelMeshCollision.js#0006:createCascadedVoxelCollider","exportIndex":6,"name":"createCascadedVoxelCollider","kind":"function","signature":"createCascadedVoxelCollider(device, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/VoxelMeshCollision.md","moduleTitle":"sim/physics/VoxelMeshCollision","source":"engine/sim/physics/VoxelMeshCollision.js","import":"/engine/sim/physics/VoxelMeshCollision.js","sourceHash":"93d022c0d4d7ee64e7350a8090692caac437db0799f99fef5948055eb28c1421","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/VoxelMeshCollision.js#0007:createVoxelCacheManager","exportIndex":7,"name":"createVoxelCacheManager","kind":"function","signature":"createVoxelCacheManager(dbName = 'VoxelMeshCache')","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUBroadphase.md","moduleTitle":"sim/physics/gpu/GPUBroadphase","source":"engine/sim/physics/gpu/GPUBroadphase.js","import":"/engine/sim/physics/gpu/GPUBroadphase.js","sourceHash":"5df30582ecda7ec677bf64bcd1e656e53da6ba9cd40e47ff9edcedca09312f64","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/gpu/GPUBroadphase.js","title":"sim/physics/gpu/GPUBroadphase","summary":"GPUBroadphase.js — GPU Compute Spatial Hash Broadphase Spatial hash broad-phase collision detection on GPU. Computes AABBs from collider shapes + world transforms, inserts into spatial hash grid, finds candidate collision pairs. Based on: - GPU Gems 3 Ch.32: Broad-Phase Collision Detection with CUDA - GPU Gems 3 Ch.29: Uniform grid with 27-neighbor cell queries - Existing GPUSpatialHash.js patterns (morton codes, hash primes) Uses atomicAdd for pair output (modern WebGPU, no multi-pass needed). Collision layer/mask filtering happens during pair generation.","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUBroadphase.md","moduleTitle":"sim/physics/gpu/GPUBroadphase","source":"engine/sim/physics/gpu/GPUBroadphase.js","import":"/engine/sim/physics/gpu/GPUBroadphase.js","sourceHash":"5df30582ecda7ec677bf64bcd1e656e53da6ba9cd40e47ff9edcedca09312f64","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUBroadphase.js#0000:GPUBroadphase","exportIndex":0,"name":"GPUBroadphase","kind":"class","signature":"class GPUBroadphase","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUBroadphase.md","moduleTitle":"sim/physics/gpu/GPUBroadphase","source":"engine/sim/physics/gpu/GPUBroadphase.js","import":"/engine/sim/physics/gpu/GPUBroadphase.js","sourceHash":"5df30582ecda7ec677bf64bcd1e656e53da6ba9cd40e47ff9edcedca09312f64","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUBroadphase.js#0001:createBroadphase","exportIndex":1,"name":"createBroadphase","kind":"function","signature":"async createBroadphase(device, worldBuffers, options = {})","summary":"Create and initialize a GPU broadphase."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUBroadphase.md","moduleTitle":"sim/physics/gpu/GPUBroadphase","source":"engine/sim/physics/gpu/GPUBroadphase.js","import":"/engine/sim/physics/gpu/GPUBroadphase.js","sourceHash":"5df30582ecda7ec677bf64bcd1e656e53da6ba9cd40e47ff9edcedca09312f64","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUBroadphase.js#0002:destroyBroadphase","exportIndex":2,"name":"destroyBroadphase","kind":"function","signature":"destroyBroadphase(bp)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUBroadphase.md","moduleTitle":"sim/physics/gpu/GPUBroadphase","source":"engine/sim/physics/gpu/GPUBroadphase.js","import":"/engine/sim/physics/gpu/GPUBroadphase.js","sourceHash":"5df30582ecda7ec677bf64bcd1e656e53da6ba9cd40e47ff9edcedca09312f64","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUBroadphase.js#0003:DEFAULT_CELL_SIZE","exportIndex":3,"name":"DEFAULT_CELL_SIZE","kind":"constant","signature":"DEFAULT_CELL_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUBroadphase.md","moduleTitle":"sim/physics/gpu/GPUBroadphase","source":"engine/sim/physics/gpu/GPUBroadphase.js","import":"/engine/sim/physics/gpu/GPUBroadphase.js","sourceHash":"5df30582ecda7ec677bf64bcd1e656e53da6ba9cd40e47ff9edcedca09312f64","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUBroadphase.js#0004:HASH_TABLE_SIZE","exportIndex":4,"name":"HASH_TABLE_SIZE","kind":"constant","signature":"HASH_TABLE_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUBroadphase.md","moduleTitle":"sim/physics/gpu/GPUBroadphase","source":"engine/sim/physics/gpu/GPUBroadphase.js","import":"/engine/sim/physics/gpu/GPUBroadphase.js","sourceHash":"5df30582ecda7ec677bf64bcd1e656e53da6ba9cd40e47ff9edcedca09312f64","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUBroadphase.js#0005:MAX_BODIES_PER_CELL","exportIndex":5,"name":"MAX_BODIES_PER_CELL","kind":"constant","signature":"MAX_BODIES_PER_CELL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUCharacterController.md","moduleTitle":"sim/physics/gpu/GPUCharacterController","source":"engine/sim/physics/gpu/GPUCharacterController.js","import":"/engine/sim/physics/gpu/GPUCharacterController.js","sourceHash":"ebf7cee4cb160410cdaf0ba7521dd698de9c5d6b538bba27450ea77401e4bb9e","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/gpu/GPUCharacterController.js","title":"sim/physics/gpu/GPUCharacterController","summary":"GPUCharacterController.js — Kinematic Character Controller PhysX-style character controller (CCT) for player/NPC movement. Kinematic body that sweeps through the scene, resolves collisions, handles ground detection, slope limits, step climbing, and skin width. Based on: - PhysX PxController: kinematic move with depenetration, auto-step, slope limit - Quake/Source: slide-move along wall normals, stair stepping - Jolt CharacterVirtual: predictive contacts, inner body shape Architecture: - CPU-driven (character movement is inherently sequential per-character) - Uses GPURaycast (CPU fallback) for ground probes and sweep tests - Applies final position to a kinematic body in GPURigidBodyWorld - Supports capsule and box shapes The controller does NOT use GPU compute shaders directly because character movement is latency-sensitive (needs immediate response to input) and typically only a handful of characters exist. CPU is the right choice here.","exportCount":9}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUCharacterController.md","moduleTitle":"sim/physics/gpu/GPUCharacterController","source":"engine/sim/physics/gpu/GPUCharacterController.js","import":"/engine/sim/physics/gpu/GPUCharacterController.js","sourceHash":"ebf7cee4cb160410cdaf0ba7521dd698de9c5d6b538bba27450ea77401e4bb9e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUCharacterController.js#0000:GPUCharacterController","exportIndex":0,"name":"GPUCharacterController","kind":"class","signature":"class GPUCharacterController","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUCharacterController.md","moduleTitle":"sim/physics/gpu/GPUCharacterController","source":"engine/sim/physics/gpu/GPUCharacterController.js","import":"/engine/sim/physics/gpu/GPUCharacterController.js","sourceHash":"ebf7cee4cb160410cdaf0ba7521dd698de9c5d6b538bba27450ea77401e4bb9e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUCharacterController.js#0001:GPUCharacterControllerManager","exportIndex":1,"name":"GPUCharacterControllerManager","kind":"class","signature":"class GPUCharacterControllerManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUCharacterController.md","moduleTitle":"sim/physics/gpu/GPUCharacterController","source":"engine/sim/physics/gpu/GPUCharacterController.js","import":"/engine/sim/physics/gpu/GPUCharacterController.js","sourceHash":"ebf7cee4cb160410cdaf0ba7521dd698de9c5d6b538bba27450ea77401e4bb9e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUCharacterController.js#0002:createCharacterControllerManager","exportIndex":2,"name":"createCharacterControllerManager","kind":"function","signature":"createCharacterControllerManager()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUCharacterController.md","moduleTitle":"sim/physics/gpu/GPUCharacterController","source":"engine/sim/physics/gpu/GPUCharacterController.js","import":"/engine/sim/physics/gpu/GPUCharacterController.js","sourceHash":"ebf7cee4cb160410cdaf0ba7521dd698de9c5d6b538bba27450ea77401e4bb9e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUCharacterController.js#0003:destroyCharacterControllerManager","exportIndex":3,"name":"destroyCharacterControllerManager","kind":"function","signature":"destroyCharacterControllerManager(mgr)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUCharacterController.md","moduleTitle":"sim/physics/gpu/GPUCharacterController","source":"engine/sim/physics/gpu/GPUCharacterController.js","import":"/engine/sim/physics/gpu/GPUCharacterController.js","sourceHash":"ebf7cee4cb160410cdaf0ba7521dd698de9c5d6b538bba27450ea77401e4bb9e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUCharacterController.js#0004:CCT_SHAPE_CAPSULE","exportIndex":4,"name":"CCT_SHAPE_CAPSULE","kind":"constant","signature":"CCT_SHAPE_CAPSULE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUCharacterController.md","moduleTitle":"sim/physics/gpu/GPUCharacterController","source":"engine/sim/physics/gpu/GPUCharacterController.js","import":"/engine/sim/physics/gpu/GPUCharacterController.js","sourceHash":"ebf7cee4cb160410cdaf0ba7521dd698de9c5d6b538bba27450ea77401e4bb9e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUCharacterController.js#0005:CCT_SHAPE_BOX","exportIndex":5,"name":"CCT_SHAPE_BOX","kind":"constant","signature":"CCT_SHAPE_BOX","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUCharacterController.md","moduleTitle":"sim/physics/gpu/GPUCharacterController","source":"engine/sim/physics/gpu/GPUCharacterController.js","import":"/engine/sim/physics/gpu/GPUCharacterController.js","sourceHash":"ebf7cee4cb160410cdaf0ba7521dd698de9c5d6b538bba27450ea77401e4bb9e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUCharacterController.js#0006:CCT_GROUNDED","exportIndex":6,"name":"CCT_GROUNDED","kind":"constant","signature":"CCT_GROUNDED","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUCharacterController.md","moduleTitle":"sim/physics/gpu/GPUCharacterController","source":"engine/sim/physics/gpu/GPUCharacterController.js","import":"/engine/sim/physics/gpu/GPUCharacterController.js","sourceHash":"ebf7cee4cb160410cdaf0ba7521dd698de9c5d6b538bba27450ea77401e4bb9e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUCharacterController.js#0007:CCT_SLIDING","exportIndex":7,"name":"CCT_SLIDING","kind":"constant","signature":"CCT_SLIDING","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUCharacterController.md","moduleTitle":"sim/physics/gpu/GPUCharacterController","source":"engine/sim/physics/gpu/GPUCharacterController.js","import":"/engine/sim/physics/gpu/GPUCharacterController.js","sourceHash":"ebf7cee4cb160410cdaf0ba7521dd698de9c5d6b538bba27450ea77401e4bb9e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUCharacterController.js#0008:CCT_FALLING","exportIndex":8,"name":"CCT_FALLING","kind":"constant","signature":"CCT_FALLING","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUConstraintSolver.md","moduleTitle":"sim/physics/gpu/GPUConstraintSolver","source":"engine/sim/physics/gpu/GPUConstraintSolver.js","import":"/engine/sim/physics/gpu/GPUConstraintSolver.js","sourceHash":"d3e020ad9913e2acf5b5ead38604cce78107b5a6a72ded8ffd26cfe81c58da27","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/gpu/GPUConstraintSolver.js","title":"sim/physics/gpu/GPUConstraintSolver","summary":"GPUConstraintSolver.js — GPU Compute XPBD/TGS Constraint Solver Solves contact constraints and joint constraints on GPU. Uses TGS_Soft approach (Erin Catto, Box2D v3): - Sub-step contact separation update via local-frame anchors - Accumulated impulse clamping (Sequential Impulses) - Warm starting from previous frame's Lagrange multipliers - Relaxation pass to drain bias energy - Coulomb friction with tangent clamping - Restitution via velocity-level bounce Joint constraints use D6 as sole native type (PhysX 5 GPU best practice). Ball, hinge, fixed, distance, prismatic are D6 presets. Parallel solving via graph-colored Gauss-Seidel (Fratarcangeli et al.): - CPU-side graph coloring groups non-conflicting constraints - One GPU dispatch per color group Based on: - XPBD (Macklin 2016): Δλ = -(C + α̃·λ) / (w_a + w_b + α̃) - Small Steps (Macklin 2019): sub-stepping > iteration - Box2D v3 Solver2D: TGS_Soft, relaxation, accumulated impulse clamping - PhysX 5 GPU: D6 joints native, soft constraint compliance","exportCount":14}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUConstraintSolver.md","moduleTitle":"sim/physics/gpu/GPUConstraintSolver","source":"engine/sim/physics/gpu/GPUConstraintSolver.js","import":"/engine/sim/physics/gpu/GPUConstraintSolver.js","sourceHash":"d3e020ad9913e2acf5b5ead38604cce78107b5a6a72ded8ffd26cfe81c58da27","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUConstraintSolver.js#0000:GPUConstraintSolver","exportIndex":0,"name":"GPUConstraintSolver","kind":"class","signature":"class GPUConstraintSolver","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUConstraintSolver.md","moduleTitle":"sim/physics/gpu/GPUConstraintSolver","source":"engine/sim/physics/gpu/GPUConstraintSolver.js","import":"/engine/sim/physics/gpu/GPUConstraintSolver.js","sourceHash":"d3e020ad9913e2acf5b5ead38604cce78107b5a6a72ded8ffd26cfe81c58da27","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUConstraintSolver.js#0001:createConstraintSolver","exportIndex":1,"name":"createConstraintSolver","kind":"function","signature":"async createConstraintSolver(device, worldBuffers, narrowphaseBuffers, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUConstraintSolver.md","moduleTitle":"sim/physics/gpu/GPUConstraintSolver","source":"engine/sim/physics/gpu/GPUConstraintSolver.js","import":"/engine/sim/physics/gpu/GPUConstraintSolver.js","sourceHash":"d3e020ad9913e2acf5b5ead38604cce78107b5a6a72ded8ffd26cfe81c58da27","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUConstraintSolver.js#0002:destroyConstraintSolver","exportIndex":2,"name":"destroyConstraintSolver","kind":"function","signature":"destroyConstraintSolver(solver)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUConstraintSolver.md","moduleTitle":"sim/physics/gpu/GPUConstraintSolver","source":"engine/sim/physics/gpu/GPUConstraintSolver.js","import":"/engine/sim/physics/gpu/GPUConstraintSolver.js","sourceHash":"d3e020ad9913e2acf5b5ead38604cce78107b5a6a72ded8ffd26cfe81c58da27","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUConstraintSolver.js#0003:gpuAddJoint","exportIndex":3,"name":"gpuAddJoint","kind":"function","signature":"gpuAddJoint(solver, desc)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUConstraintSolver.md","moduleTitle":"sim/physics/gpu/GPUConstraintSolver","source":"engine/sim/physics/gpu/GPUConstraintSolver.js","import":"/engine/sim/physics/gpu/GPUConstraintSolver.js","sourceHash":"d3e020ad9913e2acf5b5ead38604cce78107b5a6a72ded8ffd26cfe81c58da27","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUConstraintSolver.js#0004:gpuRemoveJoint","exportIndex":4,"name":"gpuRemoveJoint","kind":"function","signature":"gpuRemoveJoint(solver, handle)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUConstraintSolver.md","moduleTitle":"sim/physics/gpu/GPUConstraintSolver","source":"engine/sim/physics/gpu/GPUConstraintSolver.js","import":"/engine/sim/physics/gpu/GPUConstraintSolver.js","sourceHash":"d3e020ad9913e2acf5b5ead38604cce78107b5a6a72ded8ffd26cfe81c58da27","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUConstraintSolver.js#0005:JOINT_BALL","exportIndex":5,"name":"JOINT_BALL","kind":"constant","signature":"JOINT_BALL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUConstraintSolver.md","moduleTitle":"sim/physics/gpu/GPUConstraintSolver","source":"engine/sim/physics/gpu/GPUConstraintSolver.js","import":"/engine/sim/physics/gpu/GPUConstraintSolver.js","sourceHash":"d3e020ad9913e2acf5b5ead38604cce78107b5a6a72ded8ffd26cfe81c58da27","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUConstraintSolver.js#0006:JOINT_HINGE","exportIndex":6,"name":"JOINT_HINGE","kind":"constant","signature":"JOINT_HINGE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUConstraintSolver.md","moduleTitle":"sim/physics/gpu/GPUConstraintSolver","source":"engine/sim/physics/gpu/GPUConstraintSolver.js","import":"/engine/sim/physics/gpu/GPUConstraintSolver.js","sourceHash":"d3e020ad9913e2acf5b5ead38604cce78107b5a6a72ded8ffd26cfe81c58da27","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUConstraintSolver.js#0007:JOINT_FIXED","exportIndex":7,"name":"JOINT_FIXED","kind":"constant","signature":"JOINT_FIXED","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUConstraintSolver.md","moduleTitle":"sim/physics/gpu/GPUConstraintSolver","source":"engine/sim/physics/gpu/GPUConstraintSolver.js","import":"/engine/sim/physics/gpu/GPUConstraintSolver.js","sourceHash":"d3e020ad9913e2acf5b5ead38604cce78107b5a6a72ded8ffd26cfe81c58da27","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUConstraintSolver.js#0008:JOINT_DISTANCE","exportIndex":8,"name":"JOINT_DISTANCE","kind":"constant","signature":"JOINT_DISTANCE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUConstraintSolver.md","moduleTitle":"sim/physics/gpu/GPUConstraintSolver","source":"engine/sim/physics/gpu/GPUConstraintSolver.js","import":"/engine/sim/physics/gpu/GPUConstraintSolver.js","sourceHash":"d3e020ad9913e2acf5b5ead38604cce78107b5a6a72ded8ffd26cfe81c58da27","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUConstraintSolver.js#0009:JOINT_D6","exportIndex":9,"name":"JOINT_D6","kind":"constant","signature":"JOINT_D6","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUConstraintSolver.md","moduleTitle":"sim/physics/gpu/GPUConstraintSolver","source":"engine/sim/physics/gpu/GPUConstraintSolver.js","import":"/engine/sim/physics/gpu/GPUConstraintSolver.js","sourceHash":"d3e020ad9913e2acf5b5ead38604cce78107b5a6a72ded8ffd26cfe81c58da27","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUConstraintSolver.js#0010:JOINT_PRISMATIC","exportIndex":10,"name":"JOINT_PRISMATIC","kind":"constant","signature":"JOINT_PRISMATIC","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUConstraintSolver.md","moduleTitle":"sim/physics/gpu/GPUConstraintSolver","source":"engine/sim/physics/gpu/GPUConstraintSolver.js","import":"/engine/sim/physics/gpu/GPUConstraintSolver.js","sourceHash":"d3e020ad9913e2acf5b5ead38604cce78107b5a6a72ded8ffd26cfe81c58da27","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUConstraintSolver.js#0011:D6_LOCKED","exportIndex":11,"name":"D6_LOCKED","kind":"constant","signature":"D6_LOCKED","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUConstraintSolver.md","moduleTitle":"sim/physics/gpu/GPUConstraintSolver","source":"engine/sim/physics/gpu/GPUConstraintSolver.js","import":"/engine/sim/physics/gpu/GPUConstraintSolver.js","sourceHash":"d3e020ad9913e2acf5b5ead38604cce78107b5a6a72ded8ffd26cfe81c58da27","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUConstraintSolver.js#0012:D6_LIMITED","exportIndex":12,"name":"D6_LIMITED","kind":"constant","signature":"D6_LIMITED","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUConstraintSolver.md","moduleTitle":"sim/physics/gpu/GPUConstraintSolver","source":"engine/sim/physics/gpu/GPUConstraintSolver.js","import":"/engine/sim/physics/gpu/GPUConstraintSolver.js","sourceHash":"d3e020ad9913e2acf5b5ead38604cce78107b5a6a72ded8ffd26cfe81c58da27","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUConstraintSolver.js#0013:D6_FREE","exportIndex":13,"name":"D6_FREE","kind":"constant","signature":"D6_FREE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUContinuousCollision.md","moduleTitle":"sim/physics/gpu/GPUContinuousCollision","source":"engine/sim/physics/gpu/GPUContinuousCollision.js","import":"/engine/sim/physics/gpu/GPUContinuousCollision.js","sourceHash":"799f36d3926fadf7cae5e36435ffcd8310300169d3afa7bae32a80f013fa8fa5","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/gpu/GPUContinuousCollision.js","title":"sim/physics/gpu/GPUContinuousCollision","summary":"GPUContinuousCollision.js — GPU Speculative CCD (Continuous Collision Detection) Prevents fast-moving objects from tunneling through thin geometry. Uses speculative contacts: expand AABBs by velocity, generate conservative contacts at predicted future positions. Based on: - PhysX CCD: PxPairFlag::eDETECT_CCD_CONTACT, PxRigidBodyFlag::eENABLE_CCD - Bullet Physics: speculative contacts (Erwin Coumans GDC 2013) - Existing engine SpeculativeContacts.js (CPU) — this is the GPU version Architecture: - GPU shader expands AABBs by linear velocity * dt - Broadphase runs on expanded AABBs (catches potential tunneling pairs) - For CCD-flagged bodies, compute time of impact (TOI) via conservative advancement - Clamp body position to TOI * displacement if tunneling detected - Generates speculative contacts at predicted impact point When to enable CCD: - Bullets, projectiles, fast vehicles - Small objects near thin walls - Any body with speed > size/dt (tunneling risk)","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUContinuousCollision.md","moduleTitle":"sim/physics/gpu/GPUContinuousCollision","source":"engine/sim/physics/gpu/GPUContinuousCollision.js","import":"/engine/sim/physics/gpu/GPUContinuousCollision.js","sourceHash":"799f36d3926fadf7cae5e36435ffcd8310300169d3afa7bae32a80f013fa8fa5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUContinuousCollision.js#0000:GPUContinuousCollision","exportIndex":0,"name":"GPUContinuousCollision","kind":"class","signature":"class GPUContinuousCollision","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUContinuousCollision.md","moduleTitle":"sim/physics/gpu/GPUContinuousCollision","source":"engine/sim/physics/gpu/GPUContinuousCollision.js","import":"/engine/sim/physics/gpu/GPUContinuousCollision.js","sourceHash":"799f36d3926fadf7cae5e36435ffcd8310300169d3afa7bae32a80f013fa8fa5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUContinuousCollision.js#0001:createContinuousCollision","exportIndex":1,"name":"createContinuousCollision","kind":"function","signature":"async createContinuousCollision(device, worldBuffers, narrowphaseBuffers, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUContinuousCollision.md","moduleTitle":"sim/physics/gpu/GPUContinuousCollision","source":"engine/sim/physics/gpu/GPUContinuousCollision.js","import":"/engine/sim/physics/gpu/GPUContinuousCollision.js","sourceHash":"799f36d3926fadf7cae5e36435ffcd8310300169d3afa7bae32a80f013fa8fa5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUContinuousCollision.js#0002:destroyContinuousCollision","exportIndex":2,"name":"destroyContinuousCollision","kind":"function","signature":"destroyContinuousCollision(ccd)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUContinuousCollision.md","moduleTitle":"sim/physics/gpu/GPUContinuousCollision","source":"engine/sim/physics/gpu/GPUContinuousCollision.js","import":"/engine/sim/physics/gpu/GPUContinuousCollision.js","sourceHash":"799f36d3926fadf7cae5e36435ffcd8310300169d3afa7bae32a80f013fa8fa5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUContinuousCollision.js#0003:CCD_FLAG_BIT","exportIndex":3,"name":"CCD_FLAG_BIT","kind":"constant","signature":"CCD_FLAG_BIT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUContinuousCollision.md","moduleTitle":"sim/physics/gpu/GPUContinuousCollision","source":"engine/sim/physics/gpu/GPUContinuousCollision.js","import":"/engine/sim/physics/gpu/GPUContinuousCollision.js","sourceHash":"799f36d3926fadf7cae5e36435ffcd8310300169d3afa7bae32a80f013fa8fa5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUContinuousCollision.js#0004:MAX_CCD_PAIRS","exportIndex":4,"name":"MAX_CCD_PAIRS","kind":"constant","signature":"MAX_CCD_PAIRS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUContinuousCollision.md","moduleTitle":"sim/physics/gpu/GPUContinuousCollision","source":"engine/sim/physics/gpu/GPUContinuousCollision.js","import":"/engine/sim/physics/gpu/GPUContinuousCollision.js","sourceHash":"799f36d3926fadf7cae5e36435ffcd8310300169d3afa7bae32a80f013fa8fa5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUContinuousCollision.js#0005:CCD_SLOP","exportIndex":5,"name":"CCD_SLOP","kind":"constant","signature":"CCD_SLOP","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUConvexHull.md","moduleTitle":"sim/physics/gpu/GPUConvexHull","source":"engine/sim/physics/gpu/GPUConvexHull.js","import":"/engine/sim/physics/gpu/GPUConvexHull.js","sourceHash":"390c5d2c611fcf93ca1db4240f8c222664363e2c3fb1f3322cc7916fc6e0cfc3","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/gpu/GPUConvexHull.js","title":"sim/physics/gpu/GPUConvexHull","summary":"GPUConvexHull.js — CPU-side Quickhull 3D + GPU Buffer Helpers Computes convex hulls from vertex data (runs once at cook time, not per-frame). Produces GPU-compatible hull data for narrowphase collision detection. PhysX 5 GPU limits enforced: - Max 64 vertices per hull - Max 32 vertices per face - Hulls exceeding these limits are simplified Algorithm: Incremental Quickhull 3D - Find initial tetrahedron from extreme points - Iteratively add furthest point from each face - Expand horizon edges, rebuild faces Also builds precomputed support maps for GJK: - For 128 sampled directions, store the support vertex index - Enables O(1) support queries on GPU","exportCount":8}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUConvexHull.md","moduleTitle":"sim/physics/gpu/GPUConvexHull","source":"engine/sim/physics/gpu/GPUConvexHull.js","import":"/engine/sim/physics/gpu/GPUConvexHull.js","sourceHash":"390c5d2c611fcf93ca1db4240f8c222664363e2c3fb1f3322cc7916fc6e0cfc3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUConvexHull.js#0000:computeConvexHull","exportIndex":0,"name":"computeConvexHull","kind":"function","signature":"computeConvexHull(vertices, options = {})","summary":"Compute a 3D convex hull from a set of vertices."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUConvexHull.md","moduleTitle":"sim/physics/gpu/GPUConvexHull","source":"engine/sim/physics/gpu/GPUConvexHull.js","import":"/engine/sim/physics/gpu/GPUConvexHull.js","sourceHash":"390c5d2c611fcf93ca1db4240f8c222664363e2c3fb1f3322cc7916fc6e0cfc3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUConvexHull.js#0001:buildSupportMap","exportIndex":1,"name":"buildSupportMap","kind":"function","signature":"buildSupportMap(hull, numDirections = SUPPORT_MAP_DIRECTIONS)","summary":"Build precomputed support map for fast GPU GJK. For each of N uniformly sampled directions, stores the index of the furthest vertex in that direction."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUConvexHull.md","moduleTitle":"sim/physics/gpu/GPUConvexHull","source":"engine/sim/physics/gpu/GPUConvexHull.js","import":"/engine/sim/physics/gpu/GPUConvexHull.js","sourceHash":"390c5d2c611fcf93ca1db4240f8c222664363e2c3fb1f3322cc7916fc6e0cfc3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUConvexHull.js#0002:hullToGPUBuffer","exportIndex":2,"name":"hullToGPUBuffer","kind":"function","signature":"hullToGPUBuffer(device, hull, supportMap = null)","summary":"Upload hull data to a GPU buffer for narrowphase use. Layout: [vertexCount(u32), faceCount(u32), pad, pad] + [vertices (vec4)] + [normals (vec4)] + [supportMap (u32)]"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUConvexHull.md","moduleTitle":"sim/physics/gpu/GPUConvexHull","source":"engine/sim/physics/gpu/GPUConvexHull.js","import":"/engine/sim/physics/gpu/GPUConvexHull.js","sourceHash":"390c5d2c611fcf93ca1db4240f8c222664363e2c3fb1f3322cc7916fc6e0cfc3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUConvexHull.js#0003:hullHalfExtents","exportIndex":3,"name":"hullHalfExtents","kind":"function","signature":"hullHalfExtents(hull)","summary":"Compute AABB half-extents from hull vertices (for broadphase)."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUConvexHull.md","moduleTitle":"sim/physics/gpu/GPUConvexHull","source":"engine/sim/physics/gpu/GPUConvexHull.js","import":"/engine/sim/physics/gpu/GPUConvexHull.js","sourceHash":"390c5d2c611fcf93ca1db4240f8c222664363e2c3fb1f3322cc7916fc6e0cfc3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUConvexHull.js#0004:MAX_HULL_VERTICES","exportIndex":4,"name":"MAX_HULL_VERTICES","kind":"constant","signature":"MAX_HULL_VERTICES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUConvexHull.md","moduleTitle":"sim/physics/gpu/GPUConvexHull","source":"engine/sim/physics/gpu/GPUConvexHull.js","import":"/engine/sim/physics/gpu/GPUConvexHull.js","sourceHash":"390c5d2c611fcf93ca1db4240f8c222664363e2c3fb1f3322cc7916fc6e0cfc3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUConvexHull.js#0005:MAX_HULL_FACES","exportIndex":5,"name":"MAX_HULL_FACES","kind":"constant","signature":"MAX_HULL_FACES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUConvexHull.md","moduleTitle":"sim/physics/gpu/GPUConvexHull","source":"engine/sim/physics/gpu/GPUConvexHull.js","import":"/engine/sim/physics/gpu/GPUConvexHull.js","sourceHash":"390c5d2c611fcf93ca1db4240f8c222664363e2c3fb1f3322cc7916fc6e0cfc3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUConvexHull.js#0006:MAX_VERTS_PER_FACE","exportIndex":6,"name":"MAX_VERTS_PER_FACE","kind":"constant","signature":"MAX_VERTS_PER_FACE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUConvexHull.md","moduleTitle":"sim/physics/gpu/GPUConvexHull","source":"engine/sim/physics/gpu/GPUConvexHull.js","import":"/engine/sim/physics/gpu/GPUConvexHull.js","sourceHash":"390c5d2c611fcf93ca1db4240f8c222664363e2c3fb1f3322cc7916fc6e0cfc3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUConvexHull.js#0007:SUPPORT_MAP_DIRECTIONS","exportIndex":7,"name":"SUPPORT_MAP_DIRECTIONS","kind":"constant","signature":"SUPPORT_MAP_DIRECTIONS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUHeightfield.md","moduleTitle":"sim/physics/gpu/GPUHeightfield","source":"engine/sim/physics/gpu/GPUHeightfield.js","import":"/engine/sim/physics/gpu/GPUHeightfield.js","sourceHash":"4795645c9bbdbe8fb18921a2fd8327edef15a0aba2f86f40a4eb16093a0f3975","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/gpu/GPUHeightfield.js","title":"sim/physics/gpu/GPUHeightfield","summary":"GPUHeightfield.js — GPU Terrain Heightfield Collider Heightmap-based terrain collision for GPU physics. Stores a 2D grid of heights, generates contacts against rigid bodies via GPU compute shader. Based on: - PhysX PxHeightField: regular grid, per-sample materials, hole support - Bullet btHeightfieldTerrainShape: bilinear interpolation - Jolt HeightFieldShape: hierarchical BVH for large terrains Features: - Bilinear height interpolation for smooth normals - Per-cell material index (for surface types: grass, rock, mud, etc.) - Hole support (cells with height = NaN are passthrough) - GPU shader: one thread per body, probes heightfield under body AABB - CPU upload of heightmap data (set once or update regions) - Supports terrains up to 1024×1024 (configurable)","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUHeightfield.md","moduleTitle":"sim/physics/gpu/GPUHeightfield","source":"engine/sim/physics/gpu/GPUHeightfield.js","import":"/engine/sim/physics/gpu/GPUHeightfield.js","sourceHash":"4795645c9bbdbe8fb18921a2fd8327edef15a0aba2f86f40a4eb16093a0f3975","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUHeightfield.js#0000:GPUHeightfield","exportIndex":0,"name":"GPUHeightfield","kind":"class","signature":"class GPUHeightfield","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUHeightfield.md","moduleTitle":"sim/physics/gpu/GPUHeightfield","source":"engine/sim/physics/gpu/GPUHeightfield.js","import":"/engine/sim/physics/gpu/GPUHeightfield.js","sourceHash":"4795645c9bbdbe8fb18921a2fd8327edef15a0aba2f86f40a4eb16093a0f3975","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUHeightfield.js#0001:createHeightfield","exportIndex":1,"name":"createHeightfield","kind":"function","signature":"async createHeightfield(device, worldBuffers, narrowphaseBuffers, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUHeightfield.md","moduleTitle":"sim/physics/gpu/GPUHeightfield","source":"engine/sim/physics/gpu/GPUHeightfield.js","import":"/engine/sim/physics/gpu/GPUHeightfield.js","sourceHash":"4795645c9bbdbe8fb18921a2fd8327edef15a0aba2f86f40a4eb16093a0f3975","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUHeightfield.js#0002:destroyHeightfield","exportIndex":2,"name":"destroyHeightfield","kind":"function","signature":"destroyHeightfield(hf)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUHeightfield.md","moduleTitle":"sim/physics/gpu/GPUHeightfield","source":"engine/sim/physics/gpu/GPUHeightfield.js","import":"/engine/sim/physics/gpu/GPUHeightfield.js","sourceHash":"4795645c9bbdbe8fb18921a2fd8327edef15a0aba2f86f40a4eb16093a0f3975","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUHeightfield.js#0003:DEFAULT_HEIGHTFIELD_SIZE","exportIndex":3,"name":"DEFAULT_HEIGHTFIELD_SIZE","kind":"constant","signature":"DEFAULT_HEIGHTFIELD_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUHeightfield.md","moduleTitle":"sim/physics/gpu/GPUHeightfield","source":"engine/sim/physics/gpu/GPUHeightfield.js","import":"/engine/sim/physics/gpu/GPUHeightfield.js","sourceHash":"4795645c9bbdbe8fb18921a2fd8327edef15a0aba2f86f40a4eb16093a0f3975","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUHeightfield.js#0004:MAX_HEIGHTFIELD_SIZE","exportIndex":4,"name":"MAX_HEIGHTFIELD_SIZE","kind":"constant","signature":"MAX_HEIGHTFIELD_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUMeshDeform.md","moduleTitle":"sim/physics/gpu/GPUMeshDeform","source":"engine/sim/physics/gpu/GPUMeshDeform.js","import":"/engine/sim/physics/gpu/GPUMeshDeform.js","sourceHash":"44e8f155bfe6a2753faf99d81ea708e3b4b6a6903f6ba3cd07150dcd39e85c24","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/gpu/GPUMeshDeform.js","title":"sim/physics/gpu/GPUMeshDeform","summary":"GPUMeshDeform.js — GPU-accelerated vertex displacement for impact dents Fast-path for small impacts: pushes vertices inward within a radius around the impact point, weighted by distance. Runs in <1ms on GPU vs 50-200ms for the full voxelize→SDF→marching cubes CPU pipeline. Also includes a normal recalculation pass (GAP 4). Usage: const deformer = new GPUMeshDeform(device); const result = await deformer.applyDent(positions, indices, { impactPoint: [x, y, z], impactNormal: [nx, ny, nz], radius: 0.3, depth: 0.1, }); // result.positions — Float32Array of deformed positions // result.normals   — Float32Array of recalculated normals","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUMeshDeform.md","moduleTitle":"sim/physics/gpu/GPUMeshDeform","source":"engine/sim/physics/gpu/GPUMeshDeform.js","import":"/engine/sim/physics/gpu/GPUMeshDeform.js","sourceHash":"44e8f155bfe6a2753faf99d81ea708e3b4b6a6903f6ba3cd07150dcd39e85c24","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUMeshDeform.js#0000:GPUMeshDeform","exportIndex":0,"name":"GPUMeshDeform","kind":"class","signature":"class GPUMeshDeform","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUNarrowphase.md","moduleTitle":"sim/physics/gpu/GPUNarrowphase","source":"engine/sim/physics/gpu/GPUNarrowphase.js","import":"/engine/sim/physics/gpu/GPUNarrowphase.js","sourceHash":"95d8607fc7ba61b68d25076b39bd6cd16f81c1b591b2e2437f1b48f6faa1fd0a","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/gpu/GPUNarrowphase.js","title":"sim/physics/gpu/GPUNarrowphase","summary":"GPUNarrowphase.js — GPU Compute Contact Generation Analytic shape-shape collision tests on GPU compute shaders. Processes candidate pairs from GPUBroadphase, generates contact manifold. Supported shape pairs: - sphere–sphere, sphere–box, sphere–capsule - box–box (SAT, 15 separating axes) - capsule–capsule (closest points on two line segments) - capsule–box (segment vs box faces) - ground plane (infinite y=0, special-cased) Contact manifold uses Persistent Contact Manifold (PCM) approach: - Contacts stored with local-frame anchors for sub-step updating - Feature IDs for warm-start matching across frames - OGC barrier energy for penetration prevention Based on: - PhysX 5 GPU: PCM required for GPU contact gen - PhysX 5: convex hulls capped at 64 verts for GPU compat - Box2D v3 TGS: sub-step contact separation update via local anchors - OGCContact.js: barrier energy WGSL module","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUNarrowphase.md","moduleTitle":"sim/physics/gpu/GPUNarrowphase","source":"engine/sim/physics/gpu/GPUNarrowphase.js","import":"/engine/sim/physics/gpu/GPUNarrowphase.js","sourceHash":"95d8607fc7ba61b68d25076b39bd6cd16f81c1b591b2e2437f1b48f6faa1fd0a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUNarrowphase.js#0000:GPUNarrowphase","exportIndex":0,"name":"GPUNarrowphase","kind":"class","signature":"class GPUNarrowphase","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUNarrowphase.md","moduleTitle":"sim/physics/gpu/GPUNarrowphase","source":"engine/sim/physics/gpu/GPUNarrowphase.js","import":"/engine/sim/physics/gpu/GPUNarrowphase.js","sourceHash":"95d8607fc7ba61b68d25076b39bd6cd16f81c1b591b2e2437f1b48f6faa1fd0a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUNarrowphase.js#0001:createNarrowphase","exportIndex":1,"name":"createNarrowphase","kind":"function","signature":"async createNarrowphase(device, worldBuffers, broadphaseBuffers, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUNarrowphase.md","moduleTitle":"sim/physics/gpu/GPUNarrowphase","source":"engine/sim/physics/gpu/GPUNarrowphase.js","import":"/engine/sim/physics/gpu/GPUNarrowphase.js","sourceHash":"95d8607fc7ba61b68d25076b39bd6cd16f81c1b591b2e2437f1b48f6faa1fd0a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUNarrowphase.js#0002:destroyNarrowphase","exportIndex":2,"name":"destroyNarrowphase","kind":"function","signature":"destroyNarrowphase(np)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUNarrowphase.md","moduleTitle":"sim/physics/gpu/GPUNarrowphase","source":"engine/sim/physics/gpu/GPUNarrowphase.js","import":"/engine/sim/physics/gpu/GPUNarrowphase.js","sourceHash":"95d8607fc7ba61b68d25076b39bd6cd16f81c1b591b2e2437f1b48f6faa1fd0a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUNarrowphase.js#0003:CONTACT_STRIDE","exportIndex":3,"name":"CONTACT_STRIDE","kind":"constant","signature":"CONTACT_STRIDE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPURaycast.md","moduleTitle":"sim/physics/gpu/GPURaycast","source":"engine/sim/physics/gpu/GPURaycast.js","import":"/engine/sim/physics/gpu/GPURaycast.js","sourceHash":"20a313e377b83ce174da4c34fded510b85ea707175fa77faef20693db6295adc","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/gpu/GPURaycast.js","title":"sim/physics/gpu/GPURaycast","summary":"GPURaycast.js — GPU Compute Parallel Raycast Casts rays against all rigid bodies on the GPU. Each thread tests one body, writes closest hit to output. Reduction pass finds global closest hit across all threads. Result returned via async readback (Promise). Also provides CPU fallback for synchronous raycasting against CPU shadow data (1-frame lag, but instant). Shape-ray tests: - ray-sphere (geometric closest approach) - ray-box (slab method) - ray-capsule (ray-segment closest point + sphere test)","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPURaycast.md","moduleTitle":"sim/physics/gpu/GPURaycast","source":"engine/sim/physics/gpu/GPURaycast.js","import":"/engine/sim/physics/gpu/GPURaycast.js","sourceHash":"20a313e377b83ce174da4c34fded510b85ea707175fa77faef20693db6295adc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPURaycast.js#0000:GPURaycast","exportIndex":0,"name":"GPURaycast","kind":"class","signature":"class GPURaycast","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPURaycast.md","moduleTitle":"sim/physics/gpu/GPURaycast","source":"engine/sim/physics/gpu/GPURaycast.js","import":"/engine/sim/physics/gpu/GPURaycast.js","sourceHash":"20a313e377b83ce174da4c34fded510b85ea707175fa77faef20693db6295adc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPURaycast.js#0001:gpuRaycastCPU","exportIndex":1,"name":"gpuRaycastCPU","kind":"function","signature":"gpuRaycastCPU(world, origin, direction, maxDistance = 1000)","summary":"Synchronous CPU raycast against CPU shadow data (1-frame lag). Use when async GPU raycast is too slow or when GPU is busy."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPURaycast.md","moduleTitle":"sim/physics/gpu/GPURaycast","source":"engine/sim/physics/gpu/GPURaycast.js","import":"/engine/sim/physics/gpu/GPURaycast.js","sourceHash":"20a313e377b83ce174da4c34fded510b85ea707175fa77faef20693db6295adc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPURaycast.js#0002:createGPURaycast","exportIndex":2,"name":"createGPURaycast","kind":"function","signature":"async createGPURaycast(device, worldBuffers, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPURaycast.md","moduleTitle":"sim/physics/gpu/GPURaycast","source":"engine/sim/physics/gpu/GPURaycast.js","import":"/engine/sim/physics/gpu/GPURaycast.js","sourceHash":"20a313e377b83ce174da4c34fded510b85ea707175fa77faef20693db6295adc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPURaycast.js#0003:destroyGPURaycast","exportIndex":3,"name":"destroyGPURaycast","kind":"function","signature":"destroyGPURaycast(rc)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPURaycast.md","moduleTitle":"sim/physics/gpu/GPURaycast","source":"engine/sim/physics/gpu/GPURaycast.js","import":"/engine/sim/physics/gpu/GPURaycast.js","sourceHash":"20a313e377b83ce174da4c34fded510b85ea707175fa77faef20693db6295adc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPURaycast.js#0004:gpuRaycast","exportIndex":4,"name":"gpuRaycast","kind":"function","signature":"async gpuRaycast(rc, world, origin, direction, maxDistance = 1000)","summary":"GPU raycast (async)."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPURigidBodyWorld.md","moduleTitle":"sim/physics/gpu/GPURigidBodyWorld","source":"engine/sim/physics/gpu/GPURigidBodyWorld.js","import":"/engine/sim/physics/gpu/GPURigidBodyWorld.js","sourceHash":"179a5bc09d7daca5a25846e7075c5505364ad3e049710b3162be6c330e9c7fa7","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/gpu/GPURigidBodyWorld.js","title":"sim/physics/gpu/GPURigidBodyWorld","summary":"GPURigidBodyWorld.js — GPU Compute Rigid Body Physics World Custom WebGPU compute-based rigid body simulation engine. Runs broadphase, narrowphase, constraint solving, and integration entirely on the GPU via WGSL compute shaders. Architecture based on: - TGS_Soft solver (Erin Catto, Box2D v3 Solver2D, Feb 2024) Sub-stepping + warm starting + soft constraints + relaxation - XPBD compliance (Macklin 2016) for stiffness-independent constraints - Small Steps (Macklin 2019) for sub-step contact updating - PhysX 5 GPU rigid bodies: fixed pre-allocated buffers, D6-native joints - Jolt + Box2D v3: simulation islands via union-find, per-island sleep - Delta-position formulation (Catto) to avoid FP cancellation far from origin - Graph-colored parallel Gauss-Seidel (Fratarcangeli et al.) - GPU Gems 3 Ch.29: spatial hash broadphase, 27-neighbor cell queries SoA buffer layout for cache-coherent GPU access. All WGSL shaders embedded as template literals (matches codebase pattern).","exportCount":30}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPURigidBodyWorld.md","moduleTitle":"sim/physics/gpu/GPURigidBodyWorld","source":"engine/sim/physics/gpu/GPURigidBodyWorld.js","import":"/engine/sim/physics/gpu/GPURigidBodyWorld.js","sourceHash":"179a5bc09d7daca5a25846e7075c5505364ad3e049710b3162be6c330e9c7fa7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPURigidBodyWorld.js#0000:GPURigidBodyWorld","exportIndex":0,"name":"GPURigidBodyWorld","kind":"class","signature":"class GPURigidBodyWorld","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPURigidBodyWorld.md","moduleTitle":"sim/physics/gpu/GPURigidBodyWorld","source":"engine/sim/physics/gpu/GPURigidBodyWorld.js","import":"/engine/sim/physics/gpu/GPURigidBodyWorld.js","sourceHash":"179a5bc09d7daca5a25846e7075c5505364ad3e049710b3162be6c330e9c7fa7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPURigidBodyWorld.js#0001:createGPUPhysicsWorld","exportIndex":1,"name":"createGPUPhysicsWorld","kind":"function","signature":"async createGPUPhysicsWorld(device, options = {})","summary":"Create a GPU physics world."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPURigidBodyWorld.md","moduleTitle":"sim/physics/gpu/GPURigidBodyWorld","source":"engine/sim/physics/gpu/GPURigidBodyWorld.js","import":"/engine/sim/physics/gpu/GPURigidBodyWorld.js","sourceHash":"179a5bc09d7daca5a25846e7075c5505364ad3e049710b3162be6c330e9c7fa7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPURigidBodyWorld.js#0002:destroyGPUPhysicsWorld","exportIndex":2,"name":"destroyGPUPhysicsWorld","kind":"function","signature":"destroyGPUPhysicsWorld(world)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPURigidBodyWorld.md","moduleTitle":"sim/physics/gpu/GPURigidBodyWorld","source":"engine/sim/physics/gpu/GPURigidBodyWorld.js","import":"/engine/sim/physics/gpu/GPURigidBodyWorld.js","sourceHash":"179a5bc09d7daca5a25846e7075c5505364ad3e049710b3162be6c330e9c7fa7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPURigidBodyWorld.js#0003:gpuCreateBody","exportIndex":3,"name":"gpuCreateBody","kind":"function","signature":"gpuCreateBody(world, desc)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPURigidBodyWorld.md","moduleTitle":"sim/physics/gpu/GPURigidBodyWorld","source":"engine/sim/physics/gpu/GPURigidBodyWorld.js","import":"/engine/sim/physics/gpu/GPURigidBodyWorld.js","sourceHash":"179a5bc09d7daca5a25846e7075c5505364ad3e049710b3162be6c330e9c7fa7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPURigidBodyWorld.js#0004:gpuRemoveBody","exportIndex":4,"name":"gpuRemoveBody","kind":"function","signature":"gpuRemoveBody(world, handle)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPURigidBodyWorld.md","moduleTitle":"sim/physics/gpu/GPURigidBodyWorld","source":"engine/sim/physics/gpu/GPURigidBodyWorld.js","import":"/engine/sim/physics/gpu/GPURigidBodyWorld.js","sourceHash":"179a5bc09d7daca5a25846e7075c5505364ad3e049710b3162be6c330e9c7fa7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPURigidBodyWorld.js#0005:gpuGetBody","exportIndex":5,"name":"gpuGetBody","kind":"function","signature":"gpuGetBody(world, handle)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPURigidBodyWorld.md","moduleTitle":"sim/physics/gpu/GPURigidBodyWorld","source":"engine/sim/physics/gpu/GPURigidBodyWorld.js","import":"/engine/sim/physics/gpu/GPURigidBodyWorld.js","sourceHash":"179a5bc09d7daca5a25846e7075c5505364ad3e049710b3162be6c330e9c7fa7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPURigidBodyWorld.js#0006:gpuSetBodyKinematic","exportIndex":6,"name":"gpuSetBodyKinematic","kind":"function","signature":"gpuSetBodyKinematic(world, handle, enabled)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPURigidBodyWorld.md","moduleTitle":"sim/physics/gpu/GPURigidBodyWorld","source":"engine/sim/physics/gpu/GPURigidBodyWorld.js","import":"/engine/sim/physics/gpu/GPURigidBodyWorld.js","sourceHash":"179a5bc09d7daca5a25846e7075c5505364ad3e049710b3162be6c330e9c7fa7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPURigidBodyWorld.js#0007:gpuApplyForce","exportIndex":7,"name":"gpuApplyForce","kind":"function","signature":"gpuApplyForce(world, handle, fx, fy, fz)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPURigidBodyWorld.md","moduleTitle":"sim/physics/gpu/GPURigidBodyWorld","source":"engine/sim/physics/gpu/GPURigidBodyWorld.js","import":"/engine/sim/physics/gpu/GPURigidBodyWorld.js","sourceHash":"179a5bc09d7daca5a25846e7075c5505364ad3e049710b3162be6c330e9c7fa7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPURigidBodyWorld.js#0008:gpuApplyTorque","exportIndex":8,"name":"gpuApplyTorque","kind":"function","signature":"gpuApplyTorque(world, handle, tx, ty, tz)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPURigidBodyWorld.md","moduleTitle":"sim/physics/gpu/GPURigidBodyWorld","source":"engine/sim/physics/gpu/GPURigidBodyWorld.js","import":"/engine/sim/physics/gpu/GPURigidBodyWorld.js","sourceHash":"179a5bc09d7daca5a25846e7075c5505364ad3e049710b3162be6c330e9c7fa7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPURigidBodyWorld.js#0009:gpuStepWorld","exportIndex":9,"name":"gpuStepWorld","kind":"function","signature":"gpuStepWorld(world, dt, broadphase, narrowphase, solver)","summary":"Step the GPU physics world."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPURigidBodyWorld.md","moduleTitle":"sim/physics/gpu/GPURigidBodyWorld","source":"engine/sim/physics/gpu/GPURigidBodyWorld.js","import":"/engine/sim/physics/gpu/GPURigidBodyWorld.js","sourceHash":"179a5bc09d7daca5a25846e7075c5505364ad3e049710b3162be6c330e9c7fa7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPURigidBodyWorld.js#0010:gpuReadbackAsync","exportIndex":10,"name":"gpuReadbackAsync","kind":"function","signature":"async gpuReadbackAsync(world)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPURigidBodyWorld.md","moduleTitle":"sim/physics/gpu/GPURigidBodyWorld","source":"engine/sim/physics/gpu/GPURigidBodyWorld.js","import":"/engine/sim/physics/gpu/GPURigidBodyWorld.js","sourceHash":"179a5bc09d7daca5a25846e7075c5505364ad3e049710b3162be6c330e9c7fa7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPURigidBodyWorld.js#0011:MAX_BODIES","exportIndex":11,"name":"MAX_BODIES","kind":"constant","signature":"MAX_BODIES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPURigidBodyWorld.md","moduleTitle":"sim/physics/gpu/GPURigidBodyWorld","source":"engine/sim/physics/gpu/GPURigidBodyWorld.js","import":"/engine/sim/physics/gpu/GPURigidBodyWorld.js","sourceHash":"179a5bc09d7daca5a25846e7075c5505364ad3e049710b3162be6c330e9c7fa7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPURigidBodyWorld.js#0012:MAX_CONTACTS","exportIndex":12,"name":"MAX_CONTACTS","kind":"constant","signature":"MAX_CONTACTS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPURigidBodyWorld.md","moduleTitle":"sim/physics/gpu/GPURigidBodyWorld","source":"engine/sim/physics/gpu/GPURigidBodyWorld.js","import":"/engine/sim/physics/gpu/GPURigidBodyWorld.js","sourceHash":"179a5bc09d7daca5a25846e7075c5505364ad3e049710b3162be6c330e9c7fa7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPURigidBodyWorld.js#0013:MAX_PAIRS","exportIndex":13,"name":"MAX_PAIRS","kind":"constant","signature":"MAX_PAIRS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPURigidBodyWorld.md","moduleTitle":"sim/physics/gpu/GPURigidBodyWorld","source":"engine/sim/physics/gpu/GPURigidBodyWorld.js","import":"/engine/sim/physics/gpu/GPURigidBodyWorld.js","sourceHash":"179a5bc09d7daca5a25846e7075c5505364ad3e049710b3162be6c330e9c7fa7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPURigidBodyWorld.js#0014:MAX_JOINTS","exportIndex":14,"name":"MAX_JOINTS","kind":"constant","signature":"MAX_JOINTS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPURigidBodyWorld.md","moduleTitle":"sim/physics/gpu/GPURigidBodyWorld","source":"engine/sim/physics/gpu/GPURigidBodyWorld.js","import":"/engine/sim/physics/gpu/GPURigidBodyWorld.js","sourceHash":"179a5bc09d7daca5a25846e7075c5505364ad3e049710b3162be6c330e9c7fa7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPURigidBodyWorld.js#0015:SHAPE_SPHERE","exportIndex":15,"name":"SHAPE_SPHERE","kind":"constant","signature":"SHAPE_SPHERE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPURigidBodyWorld.md","moduleTitle":"sim/physics/gpu/GPURigidBodyWorld","source":"engine/sim/physics/gpu/GPURigidBodyWorld.js","import":"/engine/sim/physics/gpu/GPURigidBodyWorld.js","sourceHash":"179a5bc09d7daca5a25846e7075c5505364ad3e049710b3162be6c330e9c7fa7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPURigidBodyWorld.js#0016:SHAPE_BOX","exportIndex":16,"name":"SHAPE_BOX","kind":"constant","signature":"SHAPE_BOX","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPURigidBodyWorld.md","moduleTitle":"sim/physics/gpu/GPURigidBodyWorld","source":"engine/sim/physics/gpu/GPURigidBodyWorld.js","import":"/engine/sim/physics/gpu/GPURigidBodyWorld.js","sourceHash":"179a5bc09d7daca5a25846e7075c5505364ad3e049710b3162be6c330e9c7fa7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPURigidBodyWorld.js#0017:SHAPE_CAPSULE","exportIndex":17,"name":"SHAPE_CAPSULE","kind":"constant","signature":"SHAPE_CAPSULE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPURigidBodyWorld.md","moduleTitle":"sim/physics/gpu/GPURigidBodyWorld","source":"engine/sim/physics/gpu/GPURigidBodyWorld.js","import":"/engine/sim/physics/gpu/GPURigidBodyWorld.js","sourceHash":"179a5bc09d7daca5a25846e7075c5505364ad3e049710b3162be6c330e9c7fa7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPURigidBodyWorld.js#0018:SHAPE_CONVEX","exportIndex":18,"name":"SHAPE_CONVEX","kind":"constant","signature":"SHAPE_CONVEX","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPURigidBodyWorld.md","moduleTitle":"sim/physics/gpu/GPURigidBodyWorld","source":"engine/sim/physics/gpu/GPURigidBodyWorld.js","import":"/engine/sim/physics/gpu/GPURigidBodyWorld.js","sourceHash":"179a5bc09d7daca5a25846e7075c5505364ad3e049710b3162be6c330e9c7fa7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPURigidBodyWorld.js#0019:SIM_DYNAMIC","exportIndex":19,"name":"SIM_DYNAMIC","kind":"constant","signature":"SIM_DYNAMIC","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPURigidBodyWorld.md","moduleTitle":"sim/physics/gpu/GPURigidBodyWorld","source":"engine/sim/physics/gpu/GPURigidBodyWorld.js","import":"/engine/sim/physics/gpu/GPURigidBodyWorld.js","sourceHash":"179a5bc09d7daca5a25846e7075c5505364ad3e049710b3162be6c330e9c7fa7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPURigidBodyWorld.js#0020:SIM_KINEMATIC","exportIndex":20,"name":"SIM_KINEMATIC","kind":"constant","signature":"SIM_KINEMATIC","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPURigidBodyWorld.md","moduleTitle":"sim/physics/gpu/GPURigidBodyWorld","source":"engine/sim/physics/gpu/GPURigidBodyWorld.js","import":"/engine/sim/physics/gpu/GPURigidBodyWorld.js","sourceHash":"179a5bc09d7daca5a25846e7075c5505364ad3e049710b3162be6c330e9c7fa7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPURigidBodyWorld.js#0021:SIM_STATIC","exportIndex":21,"name":"SIM_STATIC","kind":"constant","signature":"SIM_STATIC","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPURigidBodyWorld.md","moduleTitle":"sim/physics/gpu/GPURigidBodyWorld","source":"engine/sim/physics/gpu/GPURigidBodyWorld.js","import":"/engine/sim/physics/gpu/GPURigidBodyWorld.js","sourceHash":"179a5bc09d7daca5a25846e7075c5505364ad3e049710b3162be6c330e9c7fa7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPURigidBodyWorld.js#0022:DEFAULT_SUBSTEPS","exportIndex":22,"name":"DEFAULT_SUBSTEPS","kind":"constant","signature":"DEFAULT_SUBSTEPS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPURigidBodyWorld.md","moduleTitle":"sim/physics/gpu/GPURigidBodyWorld","source":"engine/sim/physics/gpu/GPURigidBodyWorld.js","import":"/engine/sim/physics/gpu/GPURigidBodyWorld.js","sourceHash":"179a5bc09d7daca5a25846e7075c5505364ad3e049710b3162be6c330e9c7fa7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPURigidBodyWorld.js#0023:DEFAULT_ITERATIONS","exportIndex":23,"name":"DEFAULT_ITERATIONS","kind":"constant","signature":"DEFAULT_ITERATIONS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPURigidBodyWorld.md","moduleTitle":"sim/physics/gpu/GPURigidBodyWorld","source":"engine/sim/physics/gpu/GPURigidBodyWorld.js","import":"/engine/sim/physics/gpu/GPURigidBodyWorld.js","sourceHash":"179a5bc09d7daca5a25846e7075c5505364ad3e049710b3162be6c330e9c7fa7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPURigidBodyWorld.js#0024:DEFAULT_MAX_SUBSTEPS","exportIndex":24,"name":"DEFAULT_MAX_SUBSTEPS","kind":"constant","signature":"DEFAULT_MAX_SUBSTEPS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPURigidBodyWorld.md","moduleTitle":"sim/physics/gpu/GPURigidBodyWorld","source":"engine/sim/physics/gpu/GPURigidBodyWorld.js","import":"/engine/sim/physics/gpu/GPURigidBodyWorld.js","sourceHash":"179a5bc09d7daca5a25846e7075c5505364ad3e049710b3162be6c330e9c7fa7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPURigidBodyWorld.js#0025:DEFAULT_SLEEP_FRAMES","exportIndex":25,"name":"DEFAULT_SLEEP_FRAMES","kind":"constant","signature":"DEFAULT_SLEEP_FRAMES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPURigidBodyWorld.md","moduleTitle":"sim/physics/gpu/GPURigidBodyWorld","source":"engine/sim/physics/gpu/GPURigidBodyWorld.js","import":"/engine/sim/physics/gpu/GPURigidBodyWorld.js","sourceHash":"179a5bc09d7daca5a25846e7075c5505364ad3e049710b3162be6c330e9c7fa7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPURigidBodyWorld.js#0026:DEFAULT_SLEEP_THRESHOLD","exportIndex":26,"name":"DEFAULT_SLEEP_THRESHOLD","kind":"constant","signature":"DEFAULT_SLEEP_THRESHOLD","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPURigidBodyWorld.md","moduleTitle":"sim/physics/gpu/GPURigidBodyWorld","source":"engine/sim/physics/gpu/GPURigidBodyWorld.js","import":"/engine/sim/physics/gpu/GPURigidBodyWorld.js","sourceHash":"179a5bc09d7daca5a25846e7075c5505364ad3e049710b3162be6c330e9c7fa7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPURigidBodyWorld.js#0027:DEFAULT_MAX_DEPENETRATION_VEL","exportIndex":27,"name":"DEFAULT_MAX_DEPENETRATION_VEL","kind":"constant","signature":"DEFAULT_MAX_DEPENETRATION_VEL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPURigidBodyWorld.md","moduleTitle":"sim/physics/gpu/GPURigidBodyWorld","source":"engine/sim/physics/gpu/GPURigidBodyWorld.js","import":"/engine/sim/physics/gpu/GPURigidBodyWorld.js","sourceHash":"179a5bc09d7daca5a25846e7075c5505364ad3e049710b3162be6c330e9c7fa7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPURigidBodyWorld.js#0028:DEFAULT_CONTACT_OFFSET","exportIndex":28,"name":"DEFAULT_CONTACT_OFFSET","kind":"constant","signature":"DEFAULT_CONTACT_OFFSET","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPURigidBodyWorld.md","moduleTitle":"sim/physics/gpu/GPURigidBodyWorld","source":"engine/sim/physics/gpu/GPURigidBodyWorld.js","import":"/engine/sim/physics/gpu/GPURigidBodyWorld.js","sourceHash":"179a5bc09d7daca5a25846e7075c5505364ad3e049710b3162be6c330e9c7fa7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPURigidBodyWorld.js#0029:DEFAULT_REST_OFFSET","exportIndex":29,"name":"DEFAULT_REST_OFFSET","kind":"constant","signature":"DEFAULT_REST_OFFSET","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUSceneQuery.md","moduleTitle":"sim/physics/gpu/GPUSceneQuery","source":"engine/sim/physics/gpu/GPUSceneQuery.js","import":"/engine/sim/physics/gpu/GPUSceneQuery.js","sourceHash":"1d6352c4fe7cd4711f361164884b37033bafc50c6d8f3b7832ca0a308de7de0e","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/gpu/GPUSceneQuery.js","title":"sim/physics/gpu/GPUSceneQuery","summary":"GPUSceneQuery.js — GPU Scene Queries (Overlap, Sweep, Shape Cast) PhysX-style scene query system for spatial queries against the physics world. Supports overlap tests, sweep/shape casts, and multi-hit collection. Features: - Sphere/Box/Capsule overlap tests (find all bodies overlapping a shape) - Sphere/Box sweep (shape cast along a direction, find first/all hits) - Closest-hit and multi-hit modes - Layer/mask filtering - CPU-side for low-latency (synchronous results), uses CPU shadow data Based on: - PhysX PxScene::overlap(), sweep(), raycast() - PhysX PxOverlapBuffer, PxSweepBuffer - Jolt NarrowPhaseQuery: CastShape, CollideShape CPU-only implementation (not GPU compute) because: - Scene queries are typically 1-10 per frame (not thousands) - Need synchronous results (gameplay logic depends on them immediately) - GPU readback latency would negate the benefit","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUSceneQuery.md","moduleTitle":"sim/physics/gpu/GPUSceneQuery","source":"engine/sim/physics/gpu/GPUSceneQuery.js","import":"/engine/sim/physics/gpu/GPUSceneQuery.js","sourceHash":"1d6352c4fe7cd4711f361164884b37033bafc50c6d8f3b7832ca0a308de7de0e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUSceneQuery.js#0000:GPUSceneQuery","exportIndex":0,"name":"GPUSceneQuery","kind":"class","signature":"class GPUSceneQuery","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUSceneQuery.md","moduleTitle":"sim/physics/gpu/GPUSceneQuery","source":"engine/sim/physics/gpu/GPUSceneQuery.js","import":"/engine/sim/physics/gpu/GPUSceneQuery.js","sourceHash":"1d6352c4fe7cd4711f361164884b37033bafc50c6d8f3b7832ca0a308de7de0e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUSceneQuery.js#0001:createSceneQuery","exportIndex":1,"name":"createSceneQuery","kind":"function","signature":"createSceneQuery(world)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUSceneQuery.md","moduleTitle":"sim/physics/gpu/GPUSceneQuery","source":"engine/sim/physics/gpu/GPUSceneQuery.js","import":"/engine/sim/physics/gpu/GPUSceneQuery.js","sourceHash":"1d6352c4fe7cd4711f361164884b37033bafc50c6d8f3b7832ca0a308de7de0e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUSceneQuery.js#0002:QUERY_CLOSEST","exportIndex":2,"name":"QUERY_CLOSEST","kind":"constant","signature":"QUERY_CLOSEST","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUSceneQuery.md","moduleTitle":"sim/physics/gpu/GPUSceneQuery","source":"engine/sim/physics/gpu/GPUSceneQuery.js","import":"/engine/sim/physics/gpu/GPUSceneQuery.js","sourceHash":"1d6352c4fe7cd4711f361164884b37033bafc50c6d8f3b7832ca0a308de7de0e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUSceneQuery.js#0003:QUERY_ALL","exportIndex":3,"name":"QUERY_ALL","kind":"constant","signature":"QUERY_ALL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUSceneQuery.md","moduleTitle":"sim/physics/gpu/GPUSceneQuery","source":"engine/sim/physics/gpu/GPUSceneQuery.js","import":"/engine/sim/physics/gpu/GPUSceneQuery.js","sourceHash":"1d6352c4fe7cd4711f361164884b37033bafc50c6d8f3b7832ca0a308de7de0e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUSceneQuery.js#0004:QUERY_ANY","exportIndex":4,"name":"QUERY_ANY","kind":"constant","signature":"QUERY_ANY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUSoftBody.md","moduleTitle":"sim/physics/gpu/GPUSoftBody","source":"engine/sim/physics/gpu/GPUSoftBody.js","import":"/engine/sim/physics/gpu/GPUSoftBody.js","sourceHash":"130b66425bc7aa1bc4f359d011bbb9476c5844491fa49386739dd269e2ace7d3","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/gpu/GPUSoftBody.js","title":"sim/physics/gpu/GPUSoftBody","summary":"GPUSoftBody.js — GPU FEM Soft Body Simulation Finite Element Method (FEM) soft body using tetrahedral meshes. PhysX 5's signature GPU feature — deformable materials like rubber, jelly, flesh, foam, etc. Based on: - PhysX 5 FEM Soft Bodies: tetrahedral simulation mesh + collision mesh - Müller et al. \"Real Time Physics\" (XPBD for FEM) - Smith et al. \"Stable Neo-Hookean Flesh Simulation\" (SIGGRAPH 2018) - Irving et al. \"Invertible Finite Elements\" (SIGGRAPH 2004) Architecture: - Tetrahedral mesh defines volume elements - Each tet has a rest-state inverse matrix (Dm_inv) - Per-frame: compute deformation gradient F, strain, stress → nodal forces - GPU shader: one thread per tetrahedron - Supports Neo-Hookean and co-rotational constitutive models - Nodes can be pinned (fixed) or coupled to rigid bodies Material properties: - Young's modulus E: stiffness (rubber ~1MPa, steel ~200GPa) - Poisson's ratio ν: incompressibility (rubber ~0.49, steel ~0.3) - Damping: velocity proportional damping","exportCount":9}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUSoftBody.md","moduleTitle":"sim/physics/gpu/GPUSoftBody","source":"engine/sim/physics/gpu/GPUSoftBody.js","import":"/engine/sim/physics/gpu/GPUSoftBody.js","sourceHash":"130b66425bc7aa1bc4f359d011bbb9476c5844491fa49386739dd269e2ace7d3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUSoftBody.js#0000:GPUSoftBody","exportIndex":0,"name":"GPUSoftBody","kind":"class","signature":"class GPUSoftBody","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUSoftBody.md","moduleTitle":"sim/physics/gpu/GPUSoftBody","source":"engine/sim/physics/gpu/GPUSoftBody.js","import":"/engine/sim/physics/gpu/GPUSoftBody.js","sourceHash":"130b66425bc7aa1bc4f359d011bbb9476c5844491fa49386739dd269e2ace7d3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUSoftBody.js#0001:lameParameters","exportIndex":1,"name":"lameParameters","kind":"function","signature":"lameParameters(youngsModulus, poissonRatio)","summary":"Lamé parameters from Young's modulus and Poisson's ratio."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUSoftBody.md","moduleTitle":"sim/physics/gpu/GPUSoftBody","source":"engine/sim/physics/gpu/GPUSoftBody.js","import":"/engine/sim/physics/gpu/GPUSoftBody.js","sourceHash":"130b66425bc7aa1bc4f359d011bbb9476c5844491fa49386739dd269e2ace7d3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUSoftBody.js#0002:createSoftBodySolver","exportIndex":2,"name":"createSoftBodySolver","kind":"function","signature":"async createSoftBodySolver(device, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUSoftBody.md","moduleTitle":"sim/physics/gpu/GPUSoftBody","source":"engine/sim/physics/gpu/GPUSoftBody.js","import":"/engine/sim/physics/gpu/GPUSoftBody.js","sourceHash":"130b66425bc7aa1bc4f359d011bbb9476c5844491fa49386739dd269e2ace7d3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUSoftBody.js#0003:destroySoftBodySolver","exportIndex":3,"name":"destroySoftBodySolver","kind":"function","signature":"destroySoftBodySolver(sb)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUSoftBody.md","moduleTitle":"sim/physics/gpu/GPUSoftBody","source":"engine/sim/physics/gpu/GPUSoftBody.js","import":"/engine/sim/physics/gpu/GPUSoftBody.js","sourceHash":"130b66425bc7aa1bc4f359d011bbb9476c5844491fa49386739dd269e2ace7d3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUSoftBody.js#0004:MAX_SOFT_BODY_NODES","exportIndex":4,"name":"MAX_SOFT_BODY_NODES","kind":"constant","signature":"MAX_SOFT_BODY_NODES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUSoftBody.md","moduleTitle":"sim/physics/gpu/GPUSoftBody","source":"engine/sim/physics/gpu/GPUSoftBody.js","import":"/engine/sim/physics/gpu/GPUSoftBody.js","sourceHash":"130b66425bc7aa1bc4f359d011bbb9476c5844491fa49386739dd269e2ace7d3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUSoftBody.js#0005:MAX_SOFT_BODY_TETS","exportIndex":5,"name":"MAX_SOFT_BODY_TETS","kind":"constant","signature":"MAX_SOFT_BODY_TETS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUSoftBody.md","moduleTitle":"sim/physics/gpu/GPUSoftBody","source":"engine/sim/physics/gpu/GPUSoftBody.js","import":"/engine/sim/physics/gpu/GPUSoftBody.js","sourceHash":"130b66425bc7aa1bc4f359d011bbb9476c5844491fa49386739dd269e2ace7d3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUSoftBody.js#0006:CONSTITUTIVE_COROTATIONAL","exportIndex":6,"name":"CONSTITUTIVE_COROTATIONAL","kind":"constant","signature":"CONSTITUTIVE_COROTATIONAL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUSoftBody.md","moduleTitle":"sim/physics/gpu/GPUSoftBody","source":"engine/sim/physics/gpu/GPUSoftBody.js","import":"/engine/sim/physics/gpu/GPUSoftBody.js","sourceHash":"130b66425bc7aa1bc4f359d011bbb9476c5844491fa49386739dd269e2ace7d3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUSoftBody.js#0007:CONSTITUTIVE_NEOHOOKEAN","exportIndex":7,"name":"CONSTITUTIVE_NEOHOOKEAN","kind":"constant","signature":"CONSTITUTIVE_NEOHOOKEAN","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUSoftBody.md","moduleTitle":"sim/physics/gpu/GPUSoftBody","source":"engine/sim/physics/gpu/GPUSoftBody.js","import":"/engine/sim/physics/gpu/GPUSoftBody.js","sourceHash":"130b66425bc7aa1bc4f359d011bbb9476c5844491fa49386739dd269e2ace7d3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUSoftBody.js#0008:SOFT_BODY_MATERIALS","exportIndex":8,"name":"SOFT_BODY_MATERIALS","kind":"constant","signature":"SOFT_BODY_MATERIALS","summary":"Material presets (Young's modulus in Pa, Poisson's ratio)."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUTriangleMesh.md","moduleTitle":"sim/physics/gpu/GPUTriangleMesh","source":"engine/sim/physics/gpu/GPUTriangleMesh.js","import":"/engine/sim/physics/gpu/GPUTriangleMesh.js","sourceHash":"6901246bf342970d88c2cdea51fc6c9b8c2d8dfafc46f9ef4034940035c7ee16","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/gpu/GPUTriangleMesh.js","title":"sim/physics/gpu/GPUTriangleMesh","summary":"GPUTriangleMesh.js — GPU Triangle Mesh Static Collider Collision detection against static triangle meshes on GPU. Used for environment geometry (terrain, buildings, props) that doesn't move but needs accurate concave collision. Based on: - PhysX PxTriangleMeshGeometry: cooked triangle mesh with BVH - PhysX GPU: buildGPUData flag for GPU-accelerated triangle mesh contacts - Embree-style BVH: AABB tree for triangle culling Architecture: - CPU: Cook mesh → build BVH → upload to GPU buffers - GPU: Per-body shader traverses BVH, tests triangles in leaf nodes - Generates contacts into the shared narrowphase contact buffer Limitations (matching PhysX): - Triangle meshes are STATIC only (no deformation at runtime) - For deformable meshes, use GPUSoftBody.js instead - Max 65536 triangles per mesh (GPU buffer limit, configurable) - Max 16 meshes registered simultaneously","exportCount":8}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUTriangleMesh.md","moduleTitle":"sim/physics/gpu/GPUTriangleMesh","source":"engine/sim/physics/gpu/GPUTriangleMesh.js","import":"/engine/sim/physics/gpu/GPUTriangleMesh.js","sourceHash":"6901246bf342970d88c2cdea51fc6c9b8c2d8dfafc46f9ef4034940035c7ee16","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUTriangleMesh.js#0000:GPUTriangleMesh","exportIndex":0,"name":"GPUTriangleMesh","kind":"class","signature":"class GPUTriangleMesh","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUTriangleMesh.md","moduleTitle":"sim/physics/gpu/GPUTriangleMesh","source":"engine/sim/physics/gpu/GPUTriangleMesh.js","import":"/engine/sim/physics/gpu/GPUTriangleMesh.js","sourceHash":"6901246bf342970d88c2cdea51fc6c9b8c2d8dfafc46f9ef4034940035c7ee16","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUTriangleMesh.js#0001:buildTriangleMeshBVH","exportIndex":1,"name":"buildTriangleMeshBVH","kind":"function","signature":"buildTriangleMeshBVH(vertices, indices)","summary":"Build a BVH from triangle data for GPU traversal. Uses surface area heuristic (SAH) median split."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUTriangleMesh.md","moduleTitle":"sim/physics/gpu/GPUTriangleMesh","source":"engine/sim/physics/gpu/GPUTriangleMesh.js","import":"/engine/sim/physics/gpu/GPUTriangleMesh.js","sourceHash":"6901246bf342970d88c2cdea51fc6c9b8c2d8dfafc46f9ef4034940035c7ee16","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUTriangleMesh.js#0002:createTriangleMesh","exportIndex":2,"name":"createTriangleMesh","kind":"function","signature":"async createTriangleMesh(device, worldBuffers, narrowphaseBuffers, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUTriangleMesh.md","moduleTitle":"sim/physics/gpu/GPUTriangleMesh","source":"engine/sim/physics/gpu/GPUTriangleMesh.js","import":"/engine/sim/physics/gpu/GPUTriangleMesh.js","sourceHash":"6901246bf342970d88c2cdea51fc6c9b8c2d8dfafc46f9ef4034940035c7ee16","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUTriangleMesh.js#0003:destroyTriangleMesh","exportIndex":3,"name":"destroyTriangleMesh","kind":"function","signature":"destroyTriangleMesh(tm)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUTriangleMesh.md","moduleTitle":"sim/physics/gpu/GPUTriangleMesh","source":"engine/sim/physics/gpu/GPUTriangleMesh.js","import":"/engine/sim/physics/gpu/GPUTriangleMesh.js","sourceHash":"6901246bf342970d88c2cdea51fc6c9b8c2d8dfafc46f9ef4034940035c7ee16","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUTriangleMesh.js#0004:MAX_TRIMESH_TRIANGLES","exportIndex":4,"name":"MAX_TRIMESH_TRIANGLES","kind":"constant","signature":"MAX_TRIMESH_TRIANGLES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUTriangleMesh.md","moduleTitle":"sim/physics/gpu/GPUTriangleMesh","source":"engine/sim/physics/gpu/GPUTriangleMesh.js","import":"/engine/sim/physics/gpu/GPUTriangleMesh.js","sourceHash":"6901246bf342970d88c2cdea51fc6c9b8c2d8dfafc46f9ef4034940035c7ee16","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUTriangleMesh.js#0005:MAX_TRIMESH_VERTICES","exportIndex":5,"name":"MAX_TRIMESH_VERTICES","kind":"constant","signature":"MAX_TRIMESH_VERTICES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUTriangleMesh.md","moduleTitle":"sim/physics/gpu/GPUTriangleMesh","source":"engine/sim/physics/gpu/GPUTriangleMesh.js","import":"/engine/sim/physics/gpu/GPUTriangleMesh.js","sourceHash":"6901246bf342970d88c2cdea51fc6c9b8c2d8dfafc46f9ef4034940035c7ee16","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUTriangleMesh.js#0006:MAX_TRIMESH_INSTANCES","exportIndex":6,"name":"MAX_TRIMESH_INSTANCES","kind":"constant","signature":"MAX_TRIMESH_INSTANCES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUTriangleMesh.md","moduleTitle":"sim/physics/gpu/GPUTriangleMesh","source":"engine/sim/physics/gpu/GPUTriangleMesh.js","import":"/engine/sim/physics/gpu/GPUTriangleMesh.js","sourceHash":"6901246bf342970d88c2cdea51fc6c9b8c2d8dfafc46f9ef4034940035c7ee16","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUTriangleMesh.js#0007:MAX_BVH_NODES","exportIndex":7,"name":"MAX_BVH_NODES","kind":"constant","signature":"MAX_BVH_NODES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUTriggerSystem.md","moduleTitle":"sim/physics/gpu/GPUTriggerSystem","source":"engine/sim/physics/gpu/GPUTriggerSystem.js","import":"/engine/sim/physics/gpu/GPUTriggerSystem.js","sourceHash":"6663a4a35e282d2f31f6cb0a80375e7e997de7ec1bf15c0aba91ec64df4611e5","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/gpu/GPUTriggerSystem.js","title":"sim/physics/gpu/GPUTriggerSystem","summary":"GPUTriggerSystem.js — Trigger Volumes & Contact Event System GPU-accelerated trigger overlap detection and contact event generation. Mirrors PhysX's onContact/onTrigger callback system. Features: - Trigger volumes: AABB overlap tests on GPU, event dispatch on CPU - Contact events: begin/persist/end contact tracking with entity IDs - Event buffering: GPU writes events, CPU reads back and dispatches - Pair tracking: persistent pair state across frames for begin/end detection Based on: - PhysX PxSimulationEventCallback: onContact, onTrigger, onConstraintBreak - PhysX PxPairFlag: eNOTIFY_TOUCH_FOUND, eNOTIFY_TOUCH_PERSISTS, eNOTIFY_TOUCH_LOST - PhysX PxShapeFlagEnum: eTRIGGER_SHAPE (no contact response, only overlap events)","exportCount":11}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUTriggerSystem.md","moduleTitle":"sim/physics/gpu/GPUTriggerSystem","source":"engine/sim/physics/gpu/GPUTriggerSystem.js","import":"/engine/sim/physics/gpu/GPUTriggerSystem.js","sourceHash":"6663a4a35e282d2f31f6cb0a80375e7e997de7ec1bf15c0aba91ec64df4611e5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUTriggerSystem.js#0000:GPUTriggerSystem","exportIndex":0,"name":"GPUTriggerSystem","kind":"class","signature":"class GPUTriggerSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUTriggerSystem.md","moduleTitle":"sim/physics/gpu/GPUTriggerSystem","source":"engine/sim/physics/gpu/GPUTriggerSystem.js","import":"/engine/sim/physics/gpu/GPUTriggerSystem.js","sourceHash":"6663a4a35e282d2f31f6cb0a80375e7e997de7ec1bf15c0aba91ec64df4611e5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUTriggerSystem.js#0001:createTriggerSystem","exportIndex":1,"name":"createTriggerSystem","kind":"function","signature":"async createTriggerSystem(device, worldBuffers, broadphaseBuffers, narrowphaseBuffers, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUTriggerSystem.md","moduleTitle":"sim/physics/gpu/GPUTriggerSystem","source":"engine/sim/physics/gpu/GPUTriggerSystem.js","import":"/engine/sim/physics/gpu/GPUTriggerSystem.js","sourceHash":"6663a4a35e282d2f31f6cb0a80375e7e997de7ec1bf15c0aba91ec64df4611e5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUTriggerSystem.js#0002:destroyTriggerSystem","exportIndex":2,"name":"destroyTriggerSystem","kind":"function","signature":"destroyTriggerSystem(sys)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUTriggerSystem.md","moduleTitle":"sim/physics/gpu/GPUTriggerSystem","source":"engine/sim/physics/gpu/GPUTriggerSystem.js","import":"/engine/sim/physics/gpu/GPUTriggerSystem.js","sourceHash":"6663a4a35e282d2f31f6cb0a80375e7e997de7ec1bf15c0aba91ec64df4611e5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUTriggerSystem.js#0003:MAX_TRIGGER_EVENTS","exportIndex":3,"name":"MAX_TRIGGER_EVENTS","kind":"constant","signature":"MAX_TRIGGER_EVENTS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUTriggerSystem.md","moduleTitle":"sim/physics/gpu/GPUTriggerSystem","source":"engine/sim/physics/gpu/GPUTriggerSystem.js","import":"/engine/sim/physics/gpu/GPUTriggerSystem.js","sourceHash":"6663a4a35e282d2f31f6cb0a80375e7e997de7ec1bf15c0aba91ec64df4611e5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUTriggerSystem.js#0004:MAX_CONTACT_EVENTS","exportIndex":4,"name":"MAX_CONTACT_EVENTS","kind":"constant","signature":"MAX_CONTACT_EVENTS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUTriggerSystem.md","moduleTitle":"sim/physics/gpu/GPUTriggerSystem","source":"engine/sim/physics/gpu/GPUTriggerSystem.js","import":"/engine/sim/physics/gpu/GPUTriggerSystem.js","sourceHash":"6663a4a35e282d2f31f6cb0a80375e7e997de7ec1bf15c0aba91ec64df4611e5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUTriggerSystem.js#0005:TRIGGER_ENTER","exportIndex":5,"name":"TRIGGER_ENTER","kind":"constant","signature":"TRIGGER_ENTER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUTriggerSystem.md","moduleTitle":"sim/physics/gpu/GPUTriggerSystem","source":"engine/sim/physics/gpu/GPUTriggerSystem.js","import":"/engine/sim/physics/gpu/GPUTriggerSystem.js","sourceHash":"6663a4a35e282d2f31f6cb0a80375e7e997de7ec1bf15c0aba91ec64df4611e5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUTriggerSystem.js#0006:TRIGGER_STAY","exportIndex":6,"name":"TRIGGER_STAY","kind":"constant","signature":"TRIGGER_STAY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUTriggerSystem.md","moduleTitle":"sim/physics/gpu/GPUTriggerSystem","source":"engine/sim/physics/gpu/GPUTriggerSystem.js","import":"/engine/sim/physics/gpu/GPUTriggerSystem.js","sourceHash":"6663a4a35e282d2f31f6cb0a80375e7e997de7ec1bf15c0aba91ec64df4611e5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUTriggerSystem.js#0007:TRIGGER_EXIT","exportIndex":7,"name":"TRIGGER_EXIT","kind":"constant","signature":"TRIGGER_EXIT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUTriggerSystem.md","moduleTitle":"sim/physics/gpu/GPUTriggerSystem","source":"engine/sim/physics/gpu/GPUTriggerSystem.js","import":"/engine/sim/physics/gpu/GPUTriggerSystem.js","sourceHash":"6663a4a35e282d2f31f6cb0a80375e7e997de7ec1bf15c0aba91ec64df4611e5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUTriggerSystem.js#0008:CONTACT_BEGIN","exportIndex":8,"name":"CONTACT_BEGIN","kind":"constant","signature":"CONTACT_BEGIN","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUTriggerSystem.md","moduleTitle":"sim/physics/gpu/GPUTriggerSystem","source":"engine/sim/physics/gpu/GPUTriggerSystem.js","import":"/engine/sim/physics/gpu/GPUTriggerSystem.js","sourceHash":"6663a4a35e282d2f31f6cb0a80375e7e997de7ec1bf15c0aba91ec64df4611e5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUTriggerSystem.js#0009:CONTACT_PERSIST","exportIndex":9,"name":"CONTACT_PERSIST","kind":"constant","signature":"CONTACT_PERSIST","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUTriggerSystem.md","moduleTitle":"sim/physics/gpu/GPUTriggerSystem","source":"engine/sim/physics/gpu/GPUTriggerSystem.js","import":"/engine/sim/physics/gpu/GPUTriggerSystem.js","sourceHash":"6663a4a35e282d2f31f6cb0a80375e7e997de7ec1bf15c0aba91ec64df4611e5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUTriggerSystem.js#0010:CONTACT_END","exportIndex":10,"name":"CONTACT_END","kind":"constant","signature":"CONTACT_END","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUVehicle.md","moduleTitle":"sim/physics/gpu/GPUVehicle","source":"engine/sim/physics/gpu/GPUVehicle.js","import":"/engine/sim/physics/gpu/GPUVehicle.js","sourceHash":"2b44911b9bf1a4f14a69712d5180bc5033cae54649ad77a70a487de1285b5160","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/gpu/GPUVehicle.js","title":"sim/physics/gpu/GPUVehicle","summary":"GPUVehicle.js — GPU-Accelerated Vehicle Physics Arcade-to-simulation vehicle system running on GPU compute. Models wheels, suspension, engine, transmission, steering, and drivetrain. Based on: - PhysX 5 Vehicle SDK: suspension raycasts, tire model, drivetrain - Bullet Vehicle: raycast vehicle with Pacejka tire friction - Marco Monster's \"Car Physics for Games\" (classic reference) - Brian Beckman's \"Physics of Racing\" series Architecture: - Vehicle is a rigid body in GPURigidBodyWorld with attached wheel descriptors - Each frame: suspension raycasts → tire forces → engine torque → apply to chassis body - GPU shader handles all wheels in parallel (one thread per wheel across all vehicles) - CPU manages gear shifts, input mapping, and vehicle creation Tire model: simplified Pacejka \"Magic Formula\" F = D * sin(C * atan(B * slip - E * (B * slip - atan(B * slip)))) Simplified to: F = peakForce * sin(2 * atan(slip / peakSlip))","exportCount":19}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUVehicle.md","moduleTitle":"sim/physics/gpu/GPUVehicle","source":"engine/sim/physics/gpu/GPUVehicle.js","import":"/engine/sim/physics/gpu/GPUVehicle.js","sourceHash":"2b44911b9bf1a4f14a69712d5180bc5033cae54649ad77a70a487de1285b5160","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUVehicle.js#0000:GPUVehicleManager","exportIndex":0,"name":"GPUVehicleManager","kind":"class","signature":"class GPUVehicleManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUVehicle.md","moduleTitle":"sim/physics/gpu/GPUVehicle","source":"engine/sim/physics/gpu/GPUVehicle.js","import":"/engine/sim/physics/gpu/GPUVehicle.js","sourceHash":"2b44911b9bf1a4f14a69712d5180bc5033cae54649ad77a70a487de1285b5160","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUVehicle.js#0001:createVehicleManager","exportIndex":1,"name":"createVehicleManager","kind":"function","signature":"async createVehicleManager(device, worldBuffers, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUVehicle.md","moduleTitle":"sim/physics/gpu/GPUVehicle","source":"engine/sim/physics/gpu/GPUVehicle.js","import":"/engine/sim/physics/gpu/GPUVehicle.js","sourceHash":"2b44911b9bf1a4f14a69712d5180bc5033cae54649ad77a70a487de1285b5160","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUVehicle.js#0002:destroyVehicleManager","exportIndex":2,"name":"destroyVehicleManager","kind":"function","signature":"destroyVehicleManager(mgr)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUVehicle.md","moduleTitle":"sim/physics/gpu/GPUVehicle","source":"engine/sim/physics/gpu/GPUVehicle.js","import":"/engine/sim/physics/gpu/GPUVehicle.js","sourceHash":"2b44911b9bf1a4f14a69712d5180bc5033cae54649ad77a70a487de1285b5160","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUVehicle.js#0003:MAX_VEHICLES","exportIndex":3,"name":"MAX_VEHICLES","kind":"constant","signature":"MAX_VEHICLES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUVehicle.md","moduleTitle":"sim/physics/gpu/GPUVehicle","source":"engine/sim/physics/gpu/GPUVehicle.js","import":"/engine/sim/physics/gpu/GPUVehicle.js","sourceHash":"2b44911b9bf1a4f14a69712d5180bc5033cae54649ad77a70a487de1285b5160","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUVehicle.js#0004:MAX_WHEELS_PER_VEHICLE","exportIndex":4,"name":"MAX_WHEELS_PER_VEHICLE","kind":"constant","signature":"MAX_WHEELS_PER_VEHICLE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUVehicle.md","moduleTitle":"sim/physics/gpu/GPUVehicle","source":"engine/sim/physics/gpu/GPUVehicle.js","import":"/engine/sim/physics/gpu/GPUVehicle.js","sourceHash":"2b44911b9bf1a4f14a69712d5180bc5033cae54649ad77a70a487de1285b5160","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUVehicle.js#0005:MAX_TOTAL_WHEELS","exportIndex":5,"name":"MAX_TOTAL_WHEELS","kind":"constant","signature":"MAX_TOTAL_WHEELS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUVehicle.md","moduleTitle":"sim/physics/gpu/GPUVehicle","source":"engine/sim/physics/gpu/GPUVehicle.js","import":"/engine/sim/physics/gpu/GPUVehicle.js","sourceHash":"2b44911b9bf1a4f14a69712d5180bc5033cae54649ad77a70a487de1285b5160","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUVehicle.js#0006:DRIVE_FRONT","exportIndex":6,"name":"DRIVE_FRONT","kind":"constant","signature":"DRIVE_FRONT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUVehicle.md","moduleTitle":"sim/physics/gpu/GPUVehicle","source":"engine/sim/physics/gpu/GPUVehicle.js","import":"/engine/sim/physics/gpu/GPUVehicle.js","sourceHash":"2b44911b9bf1a4f14a69712d5180bc5033cae54649ad77a70a487de1285b5160","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUVehicle.js#0007:DRIVE_REAR","exportIndex":7,"name":"DRIVE_REAR","kind":"constant","signature":"DRIVE_REAR","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUVehicle.md","moduleTitle":"sim/physics/gpu/GPUVehicle","source":"engine/sim/physics/gpu/GPUVehicle.js","import":"/engine/sim/physics/gpu/GPUVehicle.js","sourceHash":"2b44911b9bf1a4f14a69712d5180bc5033cae54649ad77a70a487de1285b5160","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUVehicle.js#0008:DRIVE_AWD","exportIndex":8,"name":"DRIVE_AWD","kind":"constant","signature":"DRIVE_AWD","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUVehicle.md","moduleTitle":"sim/physics/gpu/GPUVehicle","source":"engine/sim/physics/gpu/GPUVehicle.js","import":"/engine/sim/physics/gpu/GPUVehicle.js","sourceHash":"2b44911b9bf1a4f14a69712d5180bc5033cae54649ad77a70a487de1285b5160","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUVehicle.js#0009:GEAR_REVERSE","exportIndex":9,"name":"GEAR_REVERSE","kind":"constant","signature":"GEAR_REVERSE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUVehicle.md","moduleTitle":"sim/physics/gpu/GPUVehicle","source":"engine/sim/physics/gpu/GPUVehicle.js","import":"/engine/sim/physics/gpu/GPUVehicle.js","sourceHash":"2b44911b9bf1a4f14a69712d5180bc5033cae54649ad77a70a487de1285b5160","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUVehicle.js#0010:GEAR_NEUTRAL","exportIndex":10,"name":"GEAR_NEUTRAL","kind":"constant","signature":"GEAR_NEUTRAL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUVehicle.md","moduleTitle":"sim/physics/gpu/GPUVehicle","source":"engine/sim/physics/gpu/GPUVehicle.js","import":"/engine/sim/physics/gpu/GPUVehicle.js","sourceHash":"2b44911b9bf1a4f14a69712d5180bc5033cae54649ad77a70a487de1285b5160","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUVehicle.js#0011:GEAR_1","exportIndex":11,"name":"GEAR_1","kind":"constant","signature":"GEAR_1","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUVehicle.md","moduleTitle":"sim/physics/gpu/GPUVehicle","source":"engine/sim/physics/gpu/GPUVehicle.js","import":"/engine/sim/physics/gpu/GPUVehicle.js","sourceHash":"2b44911b9bf1a4f14a69712d5180bc5033cae54649ad77a70a487de1285b5160","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUVehicle.js#0012:GEAR_2","exportIndex":12,"name":"GEAR_2","kind":"constant","signature":"GEAR_2","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUVehicle.md","moduleTitle":"sim/physics/gpu/GPUVehicle","source":"engine/sim/physics/gpu/GPUVehicle.js","import":"/engine/sim/physics/gpu/GPUVehicle.js","sourceHash":"2b44911b9bf1a4f14a69712d5180bc5033cae54649ad77a70a487de1285b5160","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUVehicle.js#0013:GEAR_3","exportIndex":13,"name":"GEAR_3","kind":"constant","signature":"GEAR_3","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUVehicle.md","moduleTitle":"sim/physics/gpu/GPUVehicle","source":"engine/sim/physics/gpu/GPUVehicle.js","import":"/engine/sim/physics/gpu/GPUVehicle.js","sourceHash":"2b44911b9bf1a4f14a69712d5180bc5033cae54649ad77a70a487de1285b5160","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUVehicle.js#0014:GEAR_4","exportIndex":14,"name":"GEAR_4","kind":"constant","signature":"GEAR_4","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUVehicle.md","moduleTitle":"sim/physics/gpu/GPUVehicle","source":"engine/sim/physics/gpu/GPUVehicle.js","import":"/engine/sim/physics/gpu/GPUVehicle.js","sourceHash":"2b44911b9bf1a4f14a69712d5180bc5033cae54649ad77a70a487de1285b5160","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUVehicle.js#0015:GEAR_5","exportIndex":15,"name":"GEAR_5","kind":"constant","signature":"GEAR_5","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUVehicle.md","moduleTitle":"sim/physics/gpu/GPUVehicle","source":"engine/sim/physics/gpu/GPUVehicle.js","import":"/engine/sim/physics/gpu/GPUVehicle.js","sourceHash":"2b44911b9bf1a4f14a69712d5180bc5033cae54649ad77a70a487de1285b5160","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUVehicle.js#0016:GEAR_6","exportIndex":16,"name":"GEAR_6","kind":"constant","signature":"GEAR_6","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUVehicle.md","moduleTitle":"sim/physics/gpu/GPUVehicle","source":"engine/sim/physics/gpu/GPUVehicle.js","import":"/engine/sim/physics/gpu/GPUVehicle.js","sourceHash":"2b44911b9bf1a4f14a69712d5180bc5033cae54649ad77a70a487de1285b5160","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUVehicle.js#0017:WHEEL_PRESETS","exportIndex":17,"name":"WHEEL_PRESETS","kind":"constant","signature":"WHEEL_PRESETS","summary":"Default wheel presets for common vehicle types."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/GPUVehicle.md","moduleTitle":"sim/physics/gpu/GPUVehicle","source":"engine/sim/physics/gpu/GPUVehicle.js","import":"/engine/sim/physics/gpu/GPUVehicle.js","sourceHash":"2b44911b9bf1a4f14a69712d5180bc5033cae54649ad77a70a487de1285b5160","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/gpu/GPUVehicle.js#0018:ENGINE_PRESETS","exportIndex":18,"name":"ENGINE_PRESETS","kind":"constant","signature":"ENGINE_PRESETS","summary":"Default engine/transmission presets."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/gpu/index.md","moduleTitle":"sim/physics/gpu/index","source":"engine/sim/physics/gpu/index.js","import":"/engine/sim/physics/gpu/index.js","sourceHash":"05fc583617fc16c19ec15b21a725e420ca64ab962ead7239bebdd15d38bf41be","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/gpu/index.js","title":"sim/physics/gpu/index","summary":"GPU Physics Engine — Barrel Export Standalone WebGPU compute-based rigid body physics engine. Full PhysX 5 feature parity via WebGPU compute shaders. Import from this file to access all GPU physics components. Usage: import { createGPUPhysicsWorld, createBroadphase, ... } from './gpu/index.js'; ═══════════════════════════════════════════════════════════════ Core Rigid Body Pipeline (7 files): GPURigidBodyWorld   — World, bodies, integration, islands, readback GPUBroadphase       — Spatial hash broadphase, AABB, pair finding GPUNarrowphase      — Shape-shape contact generation (PCM) GPUConstraintSolver  — TGS_Soft contacts + D6 joints + relaxation GPUConvexHull       — Quickhull 3D, support maps, GPU upload GPURaycast          — GPU parallel raycast + CPU fallback GPUContinuousCollision — Speculative CCD (AABB expansion + TOI) Extended Simulation (4 files): GPUVehicle              — Wheels, suspension, Pacejka tires, drivetrain GPUCharacterController  — Kinematic CCT (slide-move, step climb, slope limit) GPUSoftBody             — FEM soft body (tetrahedral, co-rotational elasticity) GPUTriggerSystem        — Trigger volumes + contact events (enter/stay/exit) Geometry & Queries (4 files): GPUSceneQuery       — Overlap tests, sweep/shape casts GPUHeightfield      — Terrain heightfield collider (bilinear, materials, holes) GPUTriangleMesh     — Static triangle mesh collider (BVH traversal) ═══════════════════════════════════════════════════════════════ Existing Engine Systems (already built, import from parent): ../GPUClothSolver.js       — PBD cloth (small substeps + OGC contact) ../GPUArticulationSolver.js — Articulated chains (Cosserat rods) ../GPUSpatialHash.js       — Morton-code spatial hash (GPU Gems 3) ../SDFCollision.js         — SDF mesh geometry (PhysX 5 style) ../PBDSolver.js            — Position-Based Dynamics (XPBD, graph coloring) ../MLSMPMSolver.js         — MLS-MPM soft body (snow, sand, jelly) ../OGCContact.js           — Offset Geometric Contact (SIGGRAPH 2025) ../SpeculativeContacts.js  — CPU speculative CCD ../ShockPropagation.js     — Shock propagation (Guendelman 2003) ../VoronoiFracture.js      — Voronoi destruction (Blast SDK equivalent) ../ConvexDecomposition.js  — V-HACD convex decomposition ../VoxelMeshCollision.js   — Voxelized mesh collider (LOD) ../DynamicMeshCollider.js  — Runtime mesh collider updates ═══════════════════════════════════════════════════════════════","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/index.js","title":"sim/physics/index","summary":"engine/sim/physics/index.js - Physics Systems Barrel Export","exportCount":171}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0000:ANCHOR_COMPONENT_ID","exportIndex":0,"name":"ANCHOR_COMPONENT_ID","kind":"re-export","signature":"ANCHOR_COMPONENT_ID","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0001:ANCHOR_TYPE","exportIndex":1,"name":"ANCHOR_TYPE","kind":"re-export","signature":"ANCHOR_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0002:AngleConstraint","exportIndex":2,"name":"AngleConstraint","kind":"re-export","signature":"AngleConstraint","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0003:AttachmentConstraint","exportIndex":3,"name":"AttachmentConstraint","kind":"re-export","signature":"AttachmentConstraint","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0004:BARRIER_ACTIVATION_RATIO","exportIndex":4,"name":"BARRIER_ACTIVATION_RATIO","kind":"re-export","signature":"BARRIER_ACTIVATION_RATIO","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0005:COLLIDER_SCHEMA","exportIndex":5,"name":"COLLIDER_SCHEMA","kind":"re-export","signature":"COLLIDER_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0006:COLLIDER_SHAPES","exportIndex":6,"name":"COLLIDER_SHAPES","kind":"re-export","signature":"COLLIDER_SHAPES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0007:COLLISION_LAYERS","exportIndex":7,"name":"COLLISION_LAYERS","kind":"re-export","signature":"COLLISION_LAYERS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0008:CONNECTIVITY_MAX_ITERATIONS","exportIndex":8,"name":"CONNECTIVITY_MAX_ITERATIONS","kind":"re-export","signature":"CONNECTIVITY_MAX_ITERATIONS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0009:CONNECTIVITY_WORKGROUP_SIZE","exportIndex":9,"name":"CONNECTIVITY_WORKGROUP_SIZE","kind":"re-export","signature":"CONNECTIVITY_WORKGROUP_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0010:CapsuleCollider","exportIndex":10,"name":"CapsuleCollider","kind":"re-export","signature":"CapsuleCollider","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0011:ConnectivityCompute","exportIndex":11,"name":"ConnectivityCompute","kind":"re-export","signature":"ConnectivityCompute","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0012:ConstitutiveModel","exportIndex":12,"name":"ConstitutiveModel","kind":"re-export","signature":"ConstitutiveModel","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0013:ConstraintType","exportIndex":13,"name":"ConstraintType","kind":"re-export","signature":"ConstraintType","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0014:D6_AXES","exportIndex":14,"name":"D6_AXES","kind":"re-export","signature":"D6_AXES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0015:D6_DRIVES","exportIndex":15,"name":"D6_DRIVES","kind":"re-export","signature":"D6_DRIVES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0016:D6_MOTION","exportIndex":16,"name":"D6_MOTION","kind":"re-export","signature":"D6_MOTION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0017:DECIMATION_GRID_SIZE","exportIndex":17,"name":"DECIMATION_GRID_SIZE","kind":"re-export","signature":"DECIMATION_GRID_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0018:DECOMPOSITION_DEFAULTS","exportIndex":18,"name":"DECOMPOSITION_DEFAULTS","kind":"re-export","signature":"DECOMPOSITION_DEFAULTS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0019:DEFAULT_CONTACT_RADIUS","exportIndex":19,"name":"DEFAULT_CONTACT_RADIUS","kind":"re-export","signature":"DEFAULT_CONTACT_RADIUS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0020:DEFAULT_MEASUREMENTS","exportIndex":20,"name":"DEFAULT_MEASUREMENTS","kind":"re-export","signature":"DEFAULT_MEASUREMENTS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0021:DEFAULT_TARGET_RATIO","exportIndex":21,"name":"DEFAULT_TARGET_RATIO","kind":"re-export","signature":"DEFAULT_TARGET_RATIO","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0022:DecimationEdge","exportIndex":22,"name":"DecimationEdge","kind":"re-export","signature":"DecimationEdge","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0023:DecimationTriangle","exportIndex":23,"name":"DecimationTriangle","kind":"re-export","signature":"DecimationTriangle","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0024:DecimationVertex","exportIndex":24,"name":"DecimationVertex","kind":"re-export","signature":"DecimationVertex","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0025:DistanceConstraint","exportIndex":25,"name":"DistanceConstraint","kind":"re-export","signature":"DistanceConstraint","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0026:EMPTY_COMPONENT_ID","exportIndex":26,"name":"EMPTY_COMPONENT_ID","kind":"re-export","signature":"EMPTY_COMPONENT_ID","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0027:Earthquake","exportIndex":27,"name":"Earthquake","kind":"re-export","signature":"Earthquake","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0028:FRACTURE_PATTERNS","exportIndex":28,"name":"FRACTURE_PATTERNS","kind":"re-export","signature":"FRACTURE_PATTERNS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0029:FaultLine","exportIndex":29,"name":"FaultLine","kind":"re-export","signature":"FaultLine","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0030:FragmentManager","exportIndex":30,"name":"FragmentManager","kind":"re-export","signature":"FragmentManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0031:FragmentPhysics","exportIndex":31,"name":"FragmentPhysics","kind":"re-export","signature":"FragmentPhysics","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0032:GPUClothSolver","exportIndex":32,"name":"GPUClothSolver","kind":"re-export","signature":"GPUClothSolver","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0033:GPUSpatialHashGrid","exportIndex":33,"name":"GPUSpatialHashGrid","kind":"re-export","signature":"GPUSpatialHashGrid","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0034:GPU_CLOTH_DEFAULT_ITERATIONS","exportIndex":34,"name":"GPU_CLOTH_DEFAULT_ITERATIONS","kind":"re-export","signature":"GPU_CLOTH_DEFAULT_ITERATIONS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0035:GPU_CLOTH_DEFAULT_SUBSTEPS","exportIndex":35,"name":"GPU_CLOTH_DEFAULT_SUBSTEPS","kind":"re-export","signature":"GPU_CLOTH_DEFAULT_SUBSTEPS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0036:GridCell","exportIndex":36,"name":"GridCell","kind":"re-export","signature":"GridCell","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0037:JOINT_LIMITS","exportIndex":37,"name":"JOINT_LIMITS","kind":"re-export","signature":"JOINT_LIMITS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0038:JOINT_SCHEMA","exportIndex":38,"name":"JOINT_SCHEMA","kind":"re-export","signature":"JOINT_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0039:JOINT_TYPES","exportIndex":39,"name":"JOINT_TYPES","kind":"re-export","signature":"JOINT_TYPES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0040:JointType","exportIndex":40,"name":"JointType","kind":"re-export","signature":"JointType","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0041:MAX_QEM_ITERATIONS","exportIndex":41,"name":"MAX_QEM_ITERATIONS","kind":"re-export","signature":"MAX_QEM_ITERATIONS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0042:MLSMPMSolver","exportIndex":42,"name":"MLSMPMSolver","kind":"re-export","signature":"MLSMPMSolver","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0043:MPMParticle","exportIndex":43,"name":"MPMParticle","kind":"re-export","signature":"MPMParticle","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0044:MPM_CELL_SIZE","exportIndex":44,"name":"MPM_CELL_SIZE","kind":"re-export","signature":"MPM_CELL_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0045:MPM_DEFAULT_GRID_SIZE","exportIndex":45,"name":"MPM_DEFAULT_GRID_SIZE","kind":"re-export","signature":"MPM_DEFAULT_GRID_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0046:MagnitudeScale","exportIndex":46,"name":"MagnitudeScale","kind":"re-export","signature":"MagnitudeScale","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0047:MaterialPresets","exportIndex":47,"name":"MaterialPresets","kind":"re-export","signature":"MaterialPresets","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0048:MeshCutter","exportIndex":48,"name":"MeshCutter","kind":"re-export","signature":"MeshCutter","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0049:MeshDecimator","exportIndex":49,"name":"MeshDecimator","kind":"re-export","signature":"MeshDecimator","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0050:MeshFragment","exportIndex":50,"name":"MeshFragment","kind":"re-export","signature":"MeshFragment","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0051:MeshParticles","exportIndex":51,"name":"MeshParticles","kind":"re-export","signature":"MeshParticles","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0052:OGCContactManager","exportIndex":52,"name":"OGCContactManager","kind":"re-export","signature":"OGCContactManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0053:OGC_BARRIER_WGSL","exportIndex":53,"name":"OGC_BARRIER_WGSL","kind":"re-export","signature":"OGC_BARRIER_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0054:OGC_DISTANCE_WGSL","exportIndex":54,"name":"OGC_DISTANCE_WGSL","kind":"re-export","signature":"OGC_DISTANCE_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0055:OGC_FIXED_SCALE","exportIndex":55,"name":"OGC_FIXED_SCALE","kind":"re-export","signature":"OGC_FIXED_SCALE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0056:OGC_MIN_DISTANCE","exportIndex":56,"name":"OGC_MIN_DISTANCE","kind":"re-export","signature":"OGC_MIN_DISTANCE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0057:OGC_SOLVE_WGSL","exportIndex":57,"name":"OGC_SOLVE_WGSL","kind":"re-export","signature":"OGC_SOLVE_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0058:OGC_WGSL_MODULE","exportIndex":58,"name":"OGC_WGSL_MODULE","kind":"re-export","signature":"OGC_WGSL_MODULE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0059:PBDConstraint","exportIndex":59,"name":"PBDConstraint","kind":"re-export","signature":"PBDConstraint","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0060:PBDParticle","exportIndex":60,"name":"PBDParticle","kind":"re-export","signature":"PBDParticle","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0061:PBDRagdoll","exportIndex":61,"name":"PBDRagdoll","kind":"re-export","signature":"PBDRagdoll","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0062:PBDSolver","exportIndex":62,"name":"PBDSolver","kind":"re-export","signature":"PBDSolver","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0063:PBD_DEFAULT_ITERATIONS","exportIndex":63,"name":"PBD_DEFAULT_ITERATIONS","kind":"re-export","signature":"PBD_DEFAULT_ITERATIONS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0064:PBD_DEFAULT_SUBSTEPS","exportIndex":64,"name":"PBD_DEFAULT_SUBSTEPS","kind":"re-export","signature":"PBD_DEFAULT_SUBSTEPS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0065:PHYSICS_BODY_SCHEMA","exportIndex":65,"name":"PHYSICS_BODY_SCHEMA","kind":"re-export","signature":"PHYSICS_BODY_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0066:PHYSICS_MATERIALS","exportIndex":66,"name":"PHYSICS_MATERIALS","kind":"re-export","signature":"PHYSICS_MATERIALS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0067:PHYSICS_WORLD_SCHEMA","exportIndex":67,"name":"PHYSICS_WORLD_SCHEMA","kind":"re-export","signature":"PHYSICS_WORLD_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0068:ParticleFlags","exportIndex":68,"name":"ParticleFlags","kind":"re-export","signature":"ParticleFlags","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0069:PhysXMeshCooking","exportIndex":69,"name":"PhysXMeshCooking","kind":"re-export","signature":"PhysXMeshCooking","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0070:PhysXPhysicsWorld","exportIndex":70,"name":"PhysXPhysicsWorld","kind":"re-export","signature":"PhysXPhysicsWorld","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0071:PhysicsFragment","exportIndex":71,"name":"PhysicsFragment","kind":"re-export","signature":"PhysicsFragment","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0072:Plane","exportIndex":72,"name":"Plane","kind":"re-export","signature":"Plane","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0073:Quadric","exportIndex":73,"name":"Quadric","kind":"re-export","signature":"Quadric","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0074:RagdollBone","exportIndex":74,"name":"RagdollBone","kind":"re-export","signature":"RagdollBone","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0075:RagdollBoneData","exportIndex":75,"name":"RagdollBoneData","kind":"re-export","signature":"RagdollBoneData","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0076:RagdollState","exportIndex":76,"name":"RagdollState","kind":"re-export","signature":"RagdollState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0077:SDFGrid","exportIndex":77,"name":"SDFGrid","kind":"re-export","signature":"SDFGrid","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0078:SDFOperations","exportIndex":78,"name":"SDFOperations","kind":"re-export","signature":"SDFOperations","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0079:SDFPrimitives","exportIndex":79,"name":"SDFPrimitives","kind":"re-export","signature":"SDFPrimitives","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0080:SEISMIC_PARAMS","exportIndex":80,"name":"SEISMIC_PARAMS","kind":"re-export","signature":"SEISMIC_PARAMS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0081:SIM_MODES","exportIndex":81,"name":"SIM_MODES","kind":"re-export","signature":"SIM_MODES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0082:SPLINE_RADIUS","exportIndex":82,"name":"SPLINE_RADIUS","kind":"re-export","signature":"SPLINE_RADIUS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0083:STANDARD_COLLIDER_MESHES","exportIndex":83,"name":"STANDARD_COLLIDER_MESHES","kind":"re-export","signature":"STANDARD_COLLIDER_MESHES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0084:SeismicSystem","exportIndex":84,"name":"SeismicSystem","kind":"re-export","signature":"SeismicSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0085:SeismicWave","exportIndex":85,"name":"SeismicWave","kind":"re-export","signature":"SeismicWave","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0086:ShockPropagationSolver","exportIndex":86,"name":"ShockPropagationSolver","kind":"re-export","signature":"ShockPropagationSolver","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0087:SpatialHashGrid","exportIndex":87,"name":"SpatialHashGrid","kind":"re-export","signature":"SpatialHashGrid","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0088:SpatialIntegritySystem","exportIndex":88,"name":"SpatialIntegritySystem","kind":"re-export","signature":"SpatialIntegritySystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0089:SpeculativeContactsSolver","exportIndex":89,"name":"SpeculativeContactsSolver","kind":"re-export","signature":"SpeculativeContactsSolver","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0090:StandardColliderMeshes","exportIndex":90,"name":"StandardColliderMeshes","kind":"re-export","signature":"StandardColliderMeshes","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0091:StructuralConnection","exportIndex":91,"name":"StructuralConnection","kind":"re-export","signature":"StructuralConnection","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0092:StructuralIntegritySolver","exportIndex":92,"name":"StructuralIntegritySolver","kind":"re-export","signature":"StructuralIntegritySolver","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0093:TreePhysics","exportIndex":93,"name":"TreePhysics","kind":"re-export","signature":"TreePhysics","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0094:TreePhysicsSystem","exportIndex":94,"name":"TreePhysicsSystem","kind":"re-export","signature":"TreePhysicsSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0095:TreeVoxelBody","exportIndex":95,"name":"TreeVoxelBody","kind":"re-export","signature":"TreeVoxelBody","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0096:Triangle","exportIndex":96,"name":"Triangle","kind":"re-export","signature":"Triangle","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0097:UnifiedDamageSystem","exportIndex":97,"name":"UnifiedDamageSystem","kind":"re-export","signature":"UnifiedDamageSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0098:Vertex","exportIndex":98,"name":"Vertex","kind":"re-export","signature":"Vertex","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0099:VoronoiFracture","exportIndex":99,"name":"VoronoiFracture","kind":"re-export","signature":"VoronoiFracture","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0100:WAVE_SPEEDS","exportIndex":100,"name":"WAVE_SPEEDS","kind":"re-export","signature":"WAVE_SPEEDS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0101:WaveType","exportIndex":101,"name":"WaveType","kind":"re-export","signature":"WaveType","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0102:addArticulationToScene","exportIndex":102,"name":"addArticulationToScene","kind":"re-export","signature":"addArticulationToScene","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0103:applyOGCForce","exportIndex":103,"name":"applyOGCForce","kind":"re-export","signature":"applyOGCForce","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0104:applyOGCPositionCorrection","exportIndex":104,"name":"applyOGCPositionCorrection","kind":"re-export","signature":"applyOGCPositionCorrection","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0105:applyShockPropagation","exportIndex":105,"name":"applyShockPropagation","kind":"re-export","signature":"applyShockPropagation","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0106:barrierEnergy","exportIndex":106,"name":"barrierEnergy","kind":"re-export","signature":"barrierEnergy","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0107:barrierForce","exportIndex":107,"name":"barrierForce","kind":"re-export","signature":"barrierForce","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0108:colorConstraints","exportIndex":108,"name":"colorConstraints","kind":"re-export","signature":"colorConstraints","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0109:computeWeight","exportIndex":109,"name":"computeWeight","kind":"re-export","signature":"computeWeight","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0110:conservativeDisplacementBound","exportIndex":110,"name":"conservativeDisplacementBound","kind":"re-export","signature":"conservativeDisplacementBound","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0111:createArticulation","exportIndex":111,"name":"createArticulation","kind":"re-export","signature":"createArticulation","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0112:createBody","exportIndex":112,"name":"createBody","kind":"re-export","signature":"createBody","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0113:createChildLink","exportIndex":113,"name":"createChildLink","kind":"re-export","signature":"createChildLink","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0114:createD6Joint","exportIndex":114,"name":"createD6Joint","kind":"re-export","signature":"createD6Joint","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0115:createDecomposedCollider","exportIndex":115,"name":"createDecomposedCollider","kind":"re-export","signature":"createDecomposedCollider","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0116:createDefaultCollider","exportIndex":116,"name":"createDefaultCollider","kind":"re-export","signature":"createDefaultCollider","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0117:createDefaultJoint","exportIndex":117,"name":"createDefaultJoint","kind":"re-export","signature":"createDefaultJoint","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0118:createDefaultPhysicsBody","exportIndex":118,"name":"createDefaultPhysicsBody","kind":"re-export","signature":"createDefaultPhysicsBody","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0119:createDefaultPhysicsWorld","exportIndex":119,"name":"createDefaultPhysicsWorld","kind":"re-export","signature":"createDefaultPhysicsWorld","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0120:createDistanceJoint","exportIndex":120,"name":"createDistanceJoint","kind":"re-export","signature":"createDistanceJoint","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0121:createPhysicsWorld","exportIndex":121,"name":"createPhysicsWorld","kind":"re-export","signature":"createPhysicsWorld","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0122:createRevoluteJoint","exportIndex":122,"name":"createRevoluteJoint","kind":"re-export","signature":"createRevoluteJoint","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0123:createRootLink","exportIndex":123,"name":"createRootLink","kind":"re-export","signature":"createRootLink","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0124:createRope","exportIndex":124,"name":"createRope","kind":"re-export","signature":"createRope","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0125:createSDFFromMesh","exportIndex":125,"name":"createSDFFromMesh","kind":"re-export","signature":"createSDFFromMesh","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0126:createSpatialHashFromVGPU","exportIndex":126,"name":"createSpatialHashFromVGPU","kind":"re-export","signature":"createSpatialHashFromVGPU","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0127:createSphericalJoint","exportIndex":127,"name":"createSphericalJoint","kind":"re-export","signature":"createSphericalJoint","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0128:decimateGrid","exportIndex":128,"name":"decimateGrid","kind":"re-export","signature":"decimateGrid","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0129:decimateQEM","exportIndex":129,"name":"decimateQEM","kind":"re-export","signature":"decimateQEM","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0130:decomposeMesh","exportIndex":130,"name":"decomposeMesh","kind":"re-export","signature":"decomposeMesh","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0131:destroyArticulation","exportIndex":131,"name":"destroyArticulation","kind":"re-export","signature":"destroyArticulation","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0132:destroyPhysicsWorld","exportIndex":132,"name":"destroyPhysicsWorld","kind":"re-export","signature":"destroyPhysicsWorld","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0133:distanceToOffsetCapsule","exportIndex":133,"name":"distanceToOffsetCapsule","kind":"re-export","signature":"distanceToOffsetCapsule","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0134:distanceToOffsetEdge","exportIndex":134,"name":"distanceToOffsetEdge","kind":"re-export","signature":"distanceToOffsetEdge","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0135:distanceToOffsetPlane","exportIndex":135,"name":"distanceToOffsetPlane","kind":"re-export","signature":"distanceToOffsetPlane","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0136:distanceToOffsetSphere","exportIndex":136,"name":"distanceToOffsetSphere","kind":"re-export","signature":"distanceToOffsetSphere","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0137:distanceToOffsetTriangle","exportIndex":137,"name":"distanceToOffsetTriangle","kind":"re-export","signature":"distanceToOffsetTriangle","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0138:enablePhysXSpeculativeCCD","exportIndex":138,"name":"enablePhysXSpeculativeCCD","kind":"re-export","signature":"enablePhysXSpeculativeCCD","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0139:expandAABBByVelocity","exportIndex":139,"name":"expandAABBByVelocity","kind":"re-export","signature":"expandAABBByVelocity","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0140:getArticulationLinkTransforms","exportIndex":140,"name":"getArticulationLinkTransforms","kind":"re-export","signature":"getArticulationLinkTransforms","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0141:getBody","exportIndex":141,"name":"getBody","kind":"re-export","signature":"getBody","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0142:getColliderShapeId","exportIndex":142,"name":"getColliderShapeId","kind":"re-export","signature":"getColliderShapeId","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0143:getColliderShapeName","exportIndex":143,"name":"getColliderShapeName","kind":"re-export","signature":"getColliderShapeName","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0144:getCollisionMask","exportIndex":144,"name":"getCollisionMask","kind":"re-export","signature":"getCollisionMask","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0145:getPhysXJointCapabilities","exportIndex":145,"name":"getPhysXJointCapabilities","kind":"re-export","signature":"getPhysXJointCapabilities","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0146:getPhysicsMaterial","exportIndex":146,"name":"getPhysicsMaterial","kind":"re-export","signature":"getPhysicsMaterial","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0147:getSimModeId","exportIndex":147,"name":"getSimModeId","kind":"re-export","signature":"getSimModeId","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0148:getSimModeName","exportIndex":148,"name":"getSimModeName","kind":"re-export","signature":"getSimModeName","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0149:groupByColor","exportIndex":149,"name":"groupByColor","kind":"re-export","signature":"groupByColor","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0150:hashCell","exportIndex":150,"name":"hashCell","kind":"re-export","signature":"hashCell","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0151:hullsToCompoundCollider","exportIndex":151,"name":"hullsToCompoundCollider","kind":"re-export","signature":"hullsToCompoundCollider","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0152:indexTo3D","exportIndex":152,"name":"indexTo3D","kind":"re-export","signature":"indexTo3D","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0153:layersCollide","exportIndex":153,"name":"layersCollide","kind":"re-export","signature":"layersCollide","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0154:morton3D","exportIndex":154,"name":"morton3D","kind":"re-export","signature":"morton3D","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0155:normalizedBarrierEnergy","exportIndex":155,"name":"normalizedBarrierEnergy","kind":"re-export","signature":"normalizedBarrierEnergy","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0156:positionToIndex","exportIndex":156,"name":"positionToIndex","kind":"re-export","signature":"positionToIndex","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0157:quadraticBSpline","exportIndex":157,"name":"quadraticBSpline","kind":"re-export","signature":"quadraticBSpline","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0158:quadraticBSplineGrad","exportIndex":158,"name":"quadraticBSplineGrad","kind":"re-export","signature":"quadraticBSplineGrad","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0159:raycastWorld","exportIndex":159,"name":"raycastWorld","kind":"re-export","signature":"raycastWorld","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0160:registerConvexMesh","exportIndex":160,"name":"registerConvexMesh","kind":"re-export","signature":"registerConvexMesh","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0161:registerTriangleMesh","exportIndex":161,"name":"registerTriangleMesh","kind":"re-export","signature":"registerTriangleMesh","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0162:removeBody","exportIndex":162,"name":"removeBody","kind":"re-export","signature":"removeBody","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0163:setBodyKinematic","exportIndex":163,"name":"setBodyKinematic","kind":"re-export","signature":"setBodyKinematic","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0164:stepPhysicsWorld","exportIndex":164,"name":"stepPhysicsWorld","kind":"re-export","signature":"stepPhysicsWorld","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0165:timeOfClosestApproach","exportIndex":165,"name":"timeOfClosestApproach","kind":"re-export","signature":"timeOfClosestApproach","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0166:updateWorldMaterial","exportIndex":166,"name":"updateWorldMaterial","kind":"re-export","signature":"updateWorldMaterial","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0167:validateCollider","exportIndex":167,"name":"validateCollider","kind":"re-export","signature":"validateCollider","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0168:validatePhysicsBody","exportIndex":168,"name":"validatePhysicsBody","kind":"re-export","signature":"validatePhysicsBody","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0169:validatePhysicsMaterial","exportIndex":169,"name":"validatePhysicsMaterial","kind":"re-export","signature":"validatePhysicsMaterial","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/index.md","moduleTitle":"sim/physics/index","source":"engine/sim/physics/index.js","import":"/engine/sim/physics/index.js","sourceHash":"6862f9c63d155db3b4e8832b8074d2e54f19244f0cd6a8bef3353328d209f3c1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/index.js#0170:voxelizeMesh","exportIndex":170,"name":"voxelizeMesh","kind":"re-export","signature":"voxelizeMesh","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/rig/ActiveRigController.md","moduleTitle":"sim/physics/rig/ActiveRigController","source":"engine/sim/physics/rig/ActiveRigController.js","import":"/engine/sim/physics/rig/ActiveRigController.js","sourceHash":"2f398c787854f0b198c2ce142639e68f08bf61d46ba536e16160f065789d6903","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/rig/ActiveRigController.js","title":"sim/physics/rig/ActiveRigController","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/rig/ActiveRigController.md","moduleTitle":"sim/physics/rig/ActiveRigController","source":"engine/sim/physics/rig/ActiveRigController.js","import":"/engine/sim/physics/rig/ActiveRigController.js","sourceHash":"2f398c787854f0b198c2ce142639e68f08bf61d46ba536e16160f065789d6903","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/rig/ActiveRigController.js#0000:ActiveRigController","exportIndex":0,"name":"ActiveRigController","kind":"class","signature":"class ActiveRigController","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/rig/ActiveRigController.md","moduleTitle":"sim/physics/rig/ActiveRigController","source":"engine/sim/physics/rig/ActiveRigController.js","import":"/engine/sim/physics/rig/ActiveRigController.js","sourceHash":"2f398c787854f0b198c2ce142639e68f08bf61d46ba536e16160f065789d6903","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/rig/ActiveRigController.js#0001:createActiveRigController","exportIndex":1,"name":"createActiveRigController","kind":"function","signature":"createActiveRigController(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/rig/ActiveRigSchema.md","moduleTitle":"sim/physics/rig/ActiveRigSchema","source":"engine/sim/physics/rig/ActiveRigSchema.js","import":"/engine/sim/physics/rig/ActiveRigSchema.js","sourceHash":"9fd59c80cea1ad3fee7294ddc9f1d93f4ab599f318e925cdde0aafbfda58fb24","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/rig/ActiveRigSchema.js","title":"sim/physics/rig/ActiveRigSchema","summary":"","exportCount":16}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/rig/ActiveRigSchema.md","moduleTitle":"sim/physics/rig/ActiveRigSchema","source":"engine/sim/physics/rig/ActiveRigSchema.js","import":"/engine/sim/physics/rig/ActiveRigSchema.js","sourceHash":"9fd59c80cea1ad3fee7294ddc9f1d93f4ab599f318e925cdde0aafbfda58fb24","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/rig/ActiveRigSchema.js#0000:createDriveAxis","exportIndex":0,"name":"createDriveAxis","kind":"function","signature":"createDriveAxis(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/rig/ActiveRigSchema.md","moduleTitle":"sim/physics/rig/ActiveRigSchema","source":"engine/sim/physics/rig/ActiveRigSchema.js","import":"/engine/sim/physics/rig/ActiveRigSchema.js","sourceHash":"9fd59c80cea1ad3fee7294ddc9f1d93f4ab599f318e925cdde0aafbfda58fb24","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/rig/ActiveRigSchema.js#0001:frequencyToDrive","exportIndex":1,"name":"frequencyToDrive","kind":"function","signature":"frequencyToDrive({ frequencyHz = 4.5, dampingRatio = 1.0, effectiveMass = 1, mode = DRIVE_MODES.acceleration } = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/rig/ActiveRigSchema.md","moduleTitle":"sim/physics/rig/ActiveRigSchema","source":"engine/sim/physics/rig/ActiveRigSchema.js","import":"/engine/sim/physics/rig/ActiveRigSchema.js","sourceHash":"9fd59c80cea1ad3fee7294ddc9f1d93f4ab599f318e925cdde0aafbfda58fb24","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/rig/ActiveRigSchema.js#0002:getJointTorqueBudget","exportIndex":2,"name":"getJointTorqueBudget","kind":"function","signature":"getJointTorqueBudget(jointType, massKg = 80, presetName = 'HumanAverage', tier = 'avg')","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/rig/ActiveRigSchema.md","moduleTitle":"sim/physics/rig/ActiveRigSchema","source":"engine/sim/physics/rig/ActiveRigSchema.js","import":"/engine/sim/physics/rig/ActiveRigSchema.js","sourceHash":"9fd59c80cea1ad3fee7294ddc9f1d93f4ab599f318e925cdde0aafbfda58fb24","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/rig/ActiveRigSchema.js#0003:createDriveProfile","exportIndex":3,"name":"createDriveProfile","kind":"function","signature":"createDriveProfile({ joints = [], massKg = 80, preset = 'HumanAverage', frequencyHz = 4.5, dampingRatio = 1.0, driveMode = DRIVE_MODES.acceleration } = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/rig/ActiveRigSchema.md","moduleTitle":"sim/physics/rig/ActiveRigSchema","source":"engine/sim/physics/rig/ActiveRigSchema.js","import":"/engine/sim/physics/rig/ActiveRigSchema.js","sourceHash":"9fd59c80cea1ad3fee7294ddc9f1d93f4ab599f318e925cdde0aafbfda58fb24","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/rig/ActiveRigSchema.js#0004:createPoseBufferFromRig","exportIndex":4,"name":"createPoseBufferFromRig","kind":"function","signature":"createPoseBufferFromRig(rig = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/rig/ActiveRigSchema.md","moduleTitle":"sim/physics/rig/ActiveRigSchema","source":"engine/sim/physics/rig/ActiveRigSchema.js","import":"/engine/sim/physics/rig/ActiveRigSchema.js","sourceHash":"9fd59c80cea1ad3fee7294ddc9f1d93f4ab599f318e925cdde0aafbfda58fb24","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/rig/ActiveRigSchema.js#0005:createActiveRigConfig","exportIndex":5,"name":"createActiveRigConfig","kind":"function","signature":"createActiveRigConfig(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/rig/ActiveRigSchema.md","moduleTitle":"sim/physics/rig/ActiveRigSchema","source":"engine/sim/physics/rig/ActiveRigSchema.js","import":"/engine/sim/physics/rig/ActiveRigSchema.js","sourceHash":"9fd59c80cea1ad3fee7294ddc9f1d93f4ab599f318e925cdde0aafbfda58fb24","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/rig/ActiveRigSchema.js#0006:inferJointDriveType","exportIndex":6,"name":"inferJointDriveType","kind":"function","signature":"inferJointDriveType(name = '')","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/rig/ActiveRigSchema.md","moduleTitle":"sim/physics/rig/ActiveRigSchema","source":"engine/sim/physics/rig/ActiveRigSchema.js","import":"/engine/sim/physics/rig/ActiveRigSchema.js","sourceHash":"9fd59c80cea1ad3fee7294ddc9f1d93f4ab599f318e925cdde0aafbfda58fb24","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/rig/ActiveRigSchema.js#0007:ACTIVE_RIG_BACKENDS","exportIndex":7,"name":"ACTIVE_RIG_BACKENDS","kind":"constant","signature":"ACTIVE_RIG_BACKENDS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/rig/ActiveRigSchema.md","moduleTitle":"sim/physics/rig/ActiveRigSchema","source":"engine/sim/physics/rig/ActiveRigSchema.js","import":"/engine/sim/physics/rig/ActiveRigSchema.js","sourceHash":"9fd59c80cea1ad3fee7294ddc9f1d93f4ab599f318e925cdde0aafbfda58fb24","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/rig/ActiveRigSchema.js#0008:ACTIVE_RIG_STATES","exportIndex":8,"name":"ACTIVE_RIG_STATES","kind":"constant","signature":"ACTIVE_RIG_STATES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/rig/ActiveRigSchema.md","moduleTitle":"sim/physics/rig/ActiveRigSchema","source":"engine/sim/physics/rig/ActiveRigSchema.js","import":"/engine/sim/physics/rig/ActiveRigSchema.js","sourceHash":"9fd59c80cea1ad3fee7294ddc9f1d93f4ab599f318e925cdde0aafbfda58fb24","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/rig/ActiveRigSchema.js#0009:DRIVE_MODES","exportIndex":9,"name":"DRIVE_MODES","kind":"constant","signature":"DRIVE_MODES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/rig/ActiveRigSchema.md","moduleTitle":"sim/physics/rig/ActiveRigSchema","source":"engine/sim/physics/rig/ActiveRigSchema.js","import":"/engine/sim/physics/rig/ActiveRigSchema.js","sourceHash":"9fd59c80cea1ad3fee7294ddc9f1d93f4ab599f318e925cdde0aafbfda58fb24","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/rig/ActiveRigSchema.js#0010:POSE_BLEND_MODES","exportIndex":10,"name":"POSE_BLEND_MODES","kind":"constant","signature":"POSE_BLEND_MODES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/rig/ActiveRigSchema.md","moduleTitle":"sim/physics/rig/ActiveRigSchema","source":"engine/sim/physics/rig/ActiveRigSchema.js","import":"/engine/sim/physics/rig/ActiveRigSchema.js","sourceHash":"9fd59c80cea1ad3fee7294ddc9f1d93f4ab599f318e925cdde0aafbfda58fb24","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/rig/ActiveRigSchema.js#0011:ACTIVE_RIG_AXES","exportIndex":11,"name":"ACTIVE_RIG_AXES","kind":"constant","signature":"ACTIVE_RIG_AXES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/rig/ActiveRigSchema.md","moduleTitle":"sim/physics/rig/ActiveRigSchema","source":"engine/sim/physics/rig/ActiveRigSchema.js","import":"/engine/sim/physics/rig/ActiveRigSchema.js","sourceHash":"9fd59c80cea1ad3fee7294ddc9f1d93f4ab599f318e925cdde0aafbfda58fb24","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/rig/ActiveRigSchema.js#0012:HUMAN_MASS_FRACTIONS","exportIndex":12,"name":"HUMAN_MASS_FRACTIONS","kind":"constant","signature":"HUMAN_MASS_FRACTIONS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/rig/ActiveRigSchema.md","moduleTitle":"sim/physics/rig/ActiveRigSchema","source":"engine/sim/physics/rig/ActiveRigSchema.js","import":"/engine/sim/physics/rig/ActiveRigSchema.js","sourceHash":"9fd59c80cea1ad3fee7294ddc9f1d93f4ab599f318e925cdde0aafbfda58fb24","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/rig/ActiveRigSchema.js#0013:HUMAN_JOINT_TORQUE_NM_PER_KG","exportIndex":13,"name":"HUMAN_JOINT_TORQUE_NM_PER_KG","kind":"constant","signature":"HUMAN_JOINT_TORQUE_NM_PER_KG","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/rig/ActiveRigSchema.md","moduleTitle":"sim/physics/rig/ActiveRigSchema","source":"engine/sim/physics/rig/ActiveRigSchema.js","import":"/engine/sim/physics/rig/ActiveRigSchema.js","sourceHash":"9fd59c80cea1ad3fee7294ddc9f1d93f4ab599f318e925cdde0aafbfda58fb24","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/rig/ActiveRigSchema.js#0014:ACTIVE_RIG_PRESETS","exportIndex":14,"name":"ACTIVE_RIG_PRESETS","kind":"constant","signature":"ACTIVE_RIG_PRESETS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/rig/ActiveRigSchema.md","moduleTitle":"sim/physics/rig/ActiveRigSchema","source":"engine/sim/physics/rig/ActiveRigSchema.js","import":"/engine/sim/physics/rig/ActiveRigSchema.js","sourceHash":"9fd59c80cea1ad3fee7294ddc9f1d93f4ab599f318e925cdde0aafbfda58fb24","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/rig/ActiveRigSchema.js#0015:DEFAULT_ACTIVE_RIG_CONFIG","exportIndex":15,"name":"DEFAULT_ACTIVE_RIG_CONFIG","kind":"constant","signature":"DEFAULT_ACTIVE_RIG_CONFIG","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/rig/BalanceController.md","moduleTitle":"sim/physics/rig/BalanceController","source":"engine/sim/physics/rig/BalanceController.js","import":"/engine/sim/physics/rig/BalanceController.js","sourceHash":"1bab629c5ceb06b8e1cf5cf5433d3fee95adbb5e57ef0bd25bbdf80f0ceeeb07","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/rig/BalanceController.js","title":"sim/physics/rig/BalanceController","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/rig/BalanceController.md","moduleTitle":"sim/physics/rig/BalanceController","source":"engine/sim/physics/rig/BalanceController.js","import":"/engine/sim/physics/rig/BalanceController.js","sourceHash":"1bab629c5ceb06b8e1cf5cf5433d3fee95adbb5e57ef0bd25bbdf80f0ceeeb07","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/rig/BalanceController.js#0000:BalanceController","exportIndex":0,"name":"BalanceController","kind":"class","signature":"class BalanceController","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/rig/BalanceController.md","moduleTitle":"sim/physics/rig/BalanceController","source":"engine/sim/physics/rig/BalanceController.js","import":"/engine/sim/physics/rig/BalanceController.js","sourceHash":"1bab629c5ceb06b8e1cf5cf5433d3fee95adbb5e57ef0bd25bbdf80f0ceeeb07","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/rig/BalanceController.js#0001:estimateCenterOfMass","exportIndex":1,"name":"estimateCenterOfMass","kind":"function","signature":"estimateCenterOfMass(joints = {}, fallback = [0, 0, 0])","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/rig/CharacterPhysicsAssetAdapter.md","moduleTitle":"sim/physics/rig/CharacterPhysicsAssetAdapter","source":"engine/sim/physics/rig/CharacterPhysicsAssetAdapter.js","import":"/engine/sim/physics/rig/CharacterPhysicsAssetAdapter.js","sourceHash":"128a84b4e8060093c0be88c95287046f62b3fc15c686fb4f71d235c3db2e2bff","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/rig/CharacterPhysicsAssetAdapter.js","title":"sim/physics/rig/CharacterPhysicsAssetAdapter","summary":"engine/sim/physics/rig/CharacterPhysicsAssetAdapter.js — converts a CharacterPhysicsAsset (engine/assets/rig/CharacterPhysicsAsset.js) into the { parts, joints, bodies } rig shape ActiveRigController expects.  This is the Phase 1 fix for the ragdoll stack's root-cause bug: StickmanActiveRigAdapter.js only ever read the hand-authored StickmanRagdoll ECS shape, completely disconnected from RagdollBuilder/JointLimits' output — meaning PhysX built joints from different axis/limit data than RagdollSim did, so systems disagreed about which way an elbow/knee should bend. This adapter reads the SAME asset.jointDefs (axis/swingDeg/twistDeg/motion/ frameA/frameB) that RagdollSim consumes, so PhysX and the Verlet fallback now agree by construction.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/rig/CharacterPhysicsAssetAdapter.md","moduleTitle":"sim/physics/rig/CharacterPhysicsAssetAdapter","source":"engine/sim/physics/rig/CharacterPhysicsAssetAdapter.js","import":"/engine/sim/physics/rig/CharacterPhysicsAssetAdapter.js","sourceHash":"128a84b4e8060093c0be88c95287046f62b3fc15c686fb4f71d235c3db2e2bff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/rig/CharacterPhysicsAssetAdapter.js#0000:createActiveRigFromCharacterPhysicsAsset","exportIndex":0,"name":"createActiveRigFromCharacterPhysicsAsset","kind":"function","signature":"createActiveRigFromCharacterPhysicsAsset(asset, options = {})","summary":"Build an ActiveRigController-compatible rig descriptor from a CharacterPhysicsAsset."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/rig/CharacterPhysicsAssetAdapter.md","moduleTitle":"sim/physics/rig/CharacterPhysicsAssetAdapter","source":"engine/sim/physics/rig/CharacterPhysicsAssetAdapter.js","import":"/engine/sim/physics/rig/CharacterPhysicsAssetAdapter.js","sourceHash":"128a84b4e8060093c0be88c95287046f62b3fc15c686fb4f71d235c3db2e2bff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/rig/CharacterPhysicsAssetAdapter.js#0001:createActiveRigControllerOptionsFromCharacterPhysicsAsset","exportIndex":1,"name":"createActiveRigControllerOptionsFromCharacterPhysicsAsset","kind":"function","signature":"createActiveRigControllerOptionsFromCharacterPhysicsAsset(asset, options = {})","summary":"Build the full option bag `new ActiveRigController(options)` expects, from a CharacterPhysicsAsset — the CharacterPhysicsAsset equivalent of `createActiveRigControllerOptionsFromStickman`."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/rig/CharacterPhysicsAssetAdapter.md","moduleTitle":"sim/physics/rig/CharacterPhysicsAssetAdapter","source":"engine/sim/physics/rig/CharacterPhysicsAssetAdapter.js","import":"/engine/sim/physics/rig/CharacterPhysicsAssetAdapter.js","sourceHash":"128a84b4e8060093c0be88c95287046f62b3fc15c686fb4f71d235c3db2e2bff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/rig/CharacterPhysicsAssetAdapter.js#0002:createRetargetGraphFromBodyDefs","exportIndex":2,"name":"createRetargetGraphFromBodyDefs","kind":"function","signature":"createRetargetGraphFromBodyDefs(bodyDefs = [])","summary":"Trivial identity retarget graph (physics joint id === render bone id/slot)."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/rig/MuscleLayer.md","moduleTitle":"sim/physics/rig/MuscleLayer","source":"engine/sim/physics/rig/MuscleLayer.js","import":"/engine/sim/physics/rig/MuscleLayer.js","sourceHash":"1daa430d6683dfc3538f4c8e3a9e7e175a93dc4b29b87dd41cfc8f93d1eac686","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/rig/MuscleLayer.js","title":"sim/physics/rig/MuscleLayer","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/rig/MuscleLayer.md","moduleTitle":"sim/physics/rig/MuscleLayer","source":"engine/sim/physics/rig/MuscleLayer.js","import":"/engine/sim/physics/rig/MuscleLayer.js","sourceHash":"1daa430d6683dfc3538f4c8e3a9e7e175a93dc4b29b87dd41cfc8f93d1eac686","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/rig/MuscleLayer.js#0000:MuscleLayer","exportIndex":0,"name":"MuscleLayer","kind":"class","signature":"class MuscleLayer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/rig/MuscleLayer.md","moduleTitle":"sim/physics/rig/MuscleLayer","source":"engine/sim/physics/rig/MuscleLayer.js","import":"/engine/sim/physics/rig/MuscleLayer.js","sourceHash":"1daa430d6683dfc3538f4c8e3a9e7e175a93dc4b29b87dd41cfc8f93d1eac686","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/rig/MuscleLayer.js#0001:MUSCLE_GROUPS","exportIndex":1,"name":"MUSCLE_GROUPS","kind":"constant","signature":"MUSCLE_GROUPS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/rig/PoseStateGraph.md","moduleTitle":"sim/physics/rig/PoseStateGraph","source":"engine/sim/physics/rig/PoseStateGraph.js","import":"/engine/sim/physics/rig/PoseStateGraph.js","sourceHash":"fba564e92a7cb7675d35875753a29d6a14485142020917a14e90a0b1d82f6b59","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/rig/PoseStateGraph.js","title":"sim/physics/rig/PoseStateGraph","summary":"","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/rig/PoseStateGraph.md","moduleTitle":"sim/physics/rig/PoseStateGraph","source":"engine/sim/physics/rig/PoseStateGraph.js","import":"/engine/sim/physics/rig/PoseStateGraph.js","sourceHash":"fba564e92a7cb7675d35875753a29d6a14485142020917a14e90a0b1d82f6b59","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/rig/PoseStateGraph.js#0000:PoseStateGraph","exportIndex":0,"name":"PoseStateGraph","kind":"class","signature":"class PoseStateGraph","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/rig/PoseStateGraph.md","moduleTitle":"sim/physics/rig/PoseStateGraph","source":"engine/sim/physics/rig/PoseStateGraph.js","import":"/engine/sim/physics/rig/PoseStateGraph.js","sourceHash":"fba564e92a7cb7675d35875753a29d6a14485142020917a14e90a0b1d82f6b59","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/rig/PoseStateGraph.js#0001:createPoseStateGraph","exportIndex":1,"name":"createPoseStateGraph","kind":"function","signature":"createPoseStateGraph(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/rig/PoseStateGraph.md","moduleTitle":"sim/physics/rig/PoseStateGraph","source":"engine/sim/physics/rig/PoseStateGraph.js","import":"/engine/sim/physics/rig/PoseStateGraph.js","sourceHash":"fba564e92a7cb7675d35875753a29d6a14485142020917a14e90a0b1d82f6b59","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/rig/PoseStateGraph.js#0002:resolveRequestedPoseState","exportIndex":2,"name":"resolveRequestedPoseState","kind":"function","signature":"resolveRequestedPoseState(intent = {}, fallback = 'idle_stand')","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/rig/PoseStateGraph.md","moduleTitle":"sim/physics/rig/PoseStateGraph","source":"engine/sim/physics/rig/PoseStateGraph.js","import":"/engine/sim/physics/rig/PoseStateGraph.js","sourceHash":"fba564e92a7cb7675d35875753a29d6a14485142020917a14e90a0b1d82f6b59","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/rig/PoseStateGraph.js#0003:DEFAULT_POSE_STATES","exportIndex":3,"name":"DEFAULT_POSE_STATES","kind":"constant","signature":"DEFAULT_POSE_STATES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/rig/RetargetGraph.md","moduleTitle":"sim/physics/rig/RetargetGraph","source":"engine/sim/physics/rig/RetargetGraph.js","import":"/engine/sim/physics/rig/RetargetGraph.js","sourceHash":"3380b40e6d1b29fdd911fa1b93917626a73f0869098ca9dcec8534e823b4dfd2","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/rig/RetargetGraph.js","title":"sim/physics/rig/RetargetGraph","summary":"","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/rig/RetargetGraph.md","moduleTitle":"sim/physics/rig/RetargetGraph","source":"engine/sim/physics/rig/RetargetGraph.js","import":"/engine/sim/physics/rig/RetargetGraph.js","sourceHash":"3380b40e6d1b29fdd911fa1b93917626a73f0869098ca9dcec8534e823b4dfd2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/rig/RetargetGraph.js#0000:RetargetGraph","exportIndex":0,"name":"RetargetGraph","kind":"class","signature":"class RetargetGraph","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/rig/RetargetGraph.md","moduleTitle":"sim/physics/rig/RetargetGraph","source":"engine/sim/physics/rig/RetargetGraph.js","import":"/engine/sim/physics/rig/RetargetGraph.js","sourceHash":"3380b40e6d1b29fdd911fa1b93917626a73f0869098ca9dcec8534e823b4dfd2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/rig/RetargetGraph.js#0001:PoseBlendState","exportIndex":1,"name":"PoseBlendState","kind":"class","signature":"class PoseBlendState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/rig/RetargetGraph.md","moduleTitle":"sim/physics/rig/RetargetGraph","source":"engine/sim/physics/rig/RetargetGraph.js","import":"/engine/sim/physics/rig/RetargetGraph.js","sourceHash":"3380b40e6d1b29fdd911fa1b93917626a73f0869098ca9dcec8534e823b4dfd2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/rig/RetargetGraph.js#0002:createEmptyPoseBuffer","exportIndex":2,"name":"createEmptyPoseBuffer","kind":"function","signature":"createEmptyPoseBuffer()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/rig/RetargetGraph.md","moduleTitle":"sim/physics/rig/RetargetGraph","source":"engine/sim/physics/rig/RetargetGraph.js","import":"/engine/sim/physics/rig/RetargetGraph.js","sourceHash":"3380b40e6d1b29fdd911fa1b93917626a73f0869098ca9dcec8534e823b4dfd2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/rig/RetargetGraph.js#0003:createPoseJoint","exportIndex":3,"name":"createPoseJoint","kind":"function","signature":"createPoseJoint(id, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/rig/RetargetGraph.md","moduleTitle":"sim/physics/rig/RetargetGraph","source":"engine/sim/physics/rig/RetargetGraph.js","import":"/engine/sim/physics/rig/RetargetGraph.js","sourceHash":"3380b40e6d1b29fdd911fa1b93917626a73f0869098ca9dcec8534e823b4dfd2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/rig/RetargetGraph.js#0004:clonePoseBuffer","exportIndex":4,"name":"clonePoseBuffer","kind":"function","signature":"clonePoseBuffer(pose)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/rig/RetargetGraph.md","moduleTitle":"sim/physics/rig/RetargetGraph","source":"engine/sim/physics/rig/RetargetGraph.js","import":"/engine/sim/physics/rig/RetargetGraph.js","sourceHash":"3380b40e6d1b29fdd911fa1b93917626a73f0869098ca9dcec8534e823b4dfd2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/rig/RetargetGraph.js#0005:blendPoseBuffers","exportIndex":5,"name":"blendPoseBuffers","kind":"function","signature":"blendPoseBuffers(a, b, t)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/rig/RetargetGraph.md","moduleTitle":"sim/physics/rig/RetargetGraph","source":"engine/sim/physics/rig/RetargetGraph.js","import":"/engine/sim/physics/rig/RetargetGraph.js","sourceHash":"3380b40e6d1b29fdd911fa1b93917626a73f0869098ca9dcec8534e823b4dfd2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/rig/RetargetGraph.js#0006:poseFromJointArray","exportIndex":6,"name":"poseFromJointArray","kind":"function","signature":"poseFromJointArray(joints = [])","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/rig/StickmanActiveRigAdapter.md","moduleTitle":"sim/physics/rig/StickmanActiveRigAdapter","source":"engine/sim/physics/rig/StickmanActiveRigAdapter.js","import":"/engine/sim/physics/rig/StickmanActiveRigAdapter.js","sourceHash":"b70677366f931c1517debfe88923d50fd790a3ec840b6512d49891e656671629","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/rig/StickmanActiveRigAdapter.js","title":"sim/physics/rig/StickmanActiveRigAdapter","summary":"","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/rig/StickmanActiveRigAdapter.md","moduleTitle":"sim/physics/rig/StickmanActiveRigAdapter","source":"engine/sim/physics/rig/StickmanActiveRigAdapter.js","import":"/engine/sim/physics/rig/StickmanActiveRigAdapter.js","sourceHash":"b70677366f931c1517debfe88923d50fd790a3ec840b6512d49891e656671629","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/rig/StickmanActiveRigAdapter.js#0000:createActiveRigFromStickman","exportIndex":0,"name":"createActiveRigFromStickman","kind":"function","signature":"createActiveRigFromStickman(stickman = {}, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/rig/StickmanActiveRigAdapter.md","moduleTitle":"sim/physics/rig/StickmanActiveRigAdapter","source":"engine/sim/physics/rig/StickmanActiveRigAdapter.js","import":"/engine/sim/physics/rig/StickmanActiveRigAdapter.js","sourceHash":"b70677366f931c1517debfe88923d50fd790a3ec840b6512d49891e656671629","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/rig/StickmanActiveRigAdapter.js#0001:createActiveRigControllerOptionsFromStickman","exportIndex":1,"name":"createActiveRigControllerOptionsFromStickman","kind":"function","signature":"createActiveRigControllerOptionsFromStickman(stickman = {}, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/rig/StickmanActiveRigAdapter.md","moduleTitle":"sim/physics/rig/StickmanActiveRigAdapter","source":"engine/sim/physics/rig/StickmanActiveRigAdapter.js","import":"/engine/sim/physics/rig/StickmanActiveRigAdapter.js","sourceHash":"b70677366f931c1517debfe88923d50fd790a3ec840b6512d49891e656671629","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/rig/StickmanActiveRigAdapter.js#0002:createStickmanRetargetGraph","exportIndex":2,"name":"createStickmanRetargetGraph","kind":"function","signature":"createStickmanRetargetGraph(bodies = [])","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/rig/index.md","moduleTitle":"sim/physics/rig/index","source":"engine/sim/physics/rig/index.js","import":"/engine/sim/physics/rig/index.js","sourceHash":"7c5513cd75e53b4c19f2d1c63fad9c83a16e292b81f6d87d7a2fa64cba391fbf","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/rig/index.js","title":"sim/physics/rig/index","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/vehicle/VehicleBindings.md","moduleTitle":"sim/physics/vehicle/VehicleBindings","source":"engine/sim/physics/vehicle/VehicleBindings.js","import":"/engine/sim/physics/vehicle/VehicleBindings.js","sourceHash":"97b09e236b670ca6ee5285cfb98b8512cc1f92f1686147d053132c7a03ce0ae1","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/vehicle/VehicleBindings.js","title":"sim/physics/vehicle/VehicleBindings","summary":"Vehicle2 WebIDL capability adapters. The generated declaration exposes several helpers as statics while the emitted JavaScript places them on the constructor prototype, so all vehicle code crosses that mismatch here.","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/vehicle/VehicleBindings.md","moduleTitle":"sim/physics/vehicle/VehicleBindings","source":"engine/sim/physics/vehicle/VehicleBindings.js","import":"/engine/sim/physics/vehicle/VehicleBindings.js","sourceHash":"97b09e236b670ca6ee5285cfb98b8512cc1f92f1686147d053132c7a03ce0ae1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/vehicle/VehicleBindings.js#0000:vehicleTopLevelFunctions","exportIndex":0,"name":"vehicleTopLevelFunctions","kind":"function","signature":"vehicleTopLevelFunctions(PhysX)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/vehicle/VehicleBindings.md","moduleTitle":"sim/physics/vehicle/VehicleBindings","source":"engine/sim/physics/vehicle/VehicleBindings.js","import":"/engine/sim/physics/vehicle/VehicleBindings.js","sourceHash":"97b09e236b670ca6ee5285cfb98b8512cc1f92f1686147d053132c7a03ce0ae1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/vehicle/VehicleBindings.js#0001:tireForceExtension","exportIndex":1,"name":"tireForceExtension","kind":"function","signature":"tireForceExtension(PhysX)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/vehicle/VehicleBindings.md","moduleTitle":"sim/physics/vehicle/VehicleBindings","source":"engine/sim/physics/vehicle/VehicleBindings.js","import":"/engine/sim/physics/vehicle/VehicleBindings.js","sourceHash":"97b09e236b670ca6ee5285cfb98b8512cc1f92f1686147d053132c7a03ce0ae1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/vehicle/VehicleBindings.js#0002:ensureVehicleExtension","exportIndex":2,"name":"ensureVehicleExtension","kind":"function","signature":"ensureVehicleExtension(PhysX, foundation)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/vehicle/VehicleBindings.md","moduleTitle":"sim/physics/vehicle/VehicleBindings","source":"engine/sim/physics/vehicle/VehicleBindings.js","import":"/engine/sim/physics/vehicle/VehicleBindings.js","sourceHash":"97b09e236b670ca6ee5285cfb98b8512cc1f92f1686147d053132c7a03ce0ae1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/vehicle/VehicleBindings.js#0003:isPhysXVehicleSupported","exportIndex":3,"name":"isPhysXVehicleSupported","kind":"function","signature":"isPhysXVehicleSupported(world)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/vehicle/VehicleBindings.md","moduleTitle":"sim/physics/vehicle/VehicleBindings","source":"engine/sim/physics/vehicle/VehicleBindings.js","import":"/engine/sim/physics/vehicle/VehicleBindings.js","sourceHash":"97b09e236b670ca6ee5285cfb98b8512cc1f92f1686147d053132c7a03ce0ae1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/vehicle/VehicleBindings.js#0004:destroyTracked","exportIndex":4,"name":"destroyTracked","kind":"function","signature":"destroyTracked(PhysX, tracked)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/vehicle/VehicleChassis.md","moduleTitle":"sim/physics/vehicle/VehicleChassis","source":"engine/sim/physics/vehicle/VehicleChassis.js","import":"/engine/sim/physics/vehicle/VehicleChassis.js","sourceHash":"21afd7427fa0a76b97a041f3d7d2fc0116369244a7f547050ffae724a108f640","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/vehicle/VehicleChassis.js","title":"sim/physics/vehicle/VehicleChassis","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/vehicle/VehicleChassis.md","moduleTitle":"sim/physics/vehicle/VehicleChassis","source":"engine/sim/physics/vehicle/VehicleChassis.js","import":"/engine/sim/physics/vehicle/VehicleChassis.js","sourceHash":"21afd7427fa0a76b97a041f3d7d2fc0116369244a7f547050ffae724a108f640","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/vehicle/VehicleChassis.js#0000:configureVehicleChassis","exportIndex":0,"name":"configureVehicleChassis","kind":"function","signature":"configureVehicleChassis(PhysX, vehicle, config, alloc)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/vehicle/VehicleChassis.md","moduleTitle":"sim/physics/vehicle/VehicleChassis","source":"engine/sim/physics/vehicle/VehicleChassis.js","import":"/engine/sim/physics/vehicle/VehicleChassis.js","sourceHash":"21afd7427fa0a76b97a041f3d7d2fc0116369244a7f547050ffae724a108f640","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/vehicle/VehicleChassis.js#0001:initializeVehicleActor","exportIndex":1,"name":"initializeVehicleActor","kind":"function","signature":"initializeVehicleActor(PhysX, topLevel, world, vehicle, config, alloc)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/vehicle/VehicleConfig.md","moduleTitle":"sim/physics/vehicle/VehicleConfig","source":"engine/sim/physics/vehicle/VehicleConfig.js","import":"/engine/sim/physics/vehicle/VehicleConfig.js","sourceHash":"2668e06d78fa5abae23fa844fd8682a85603d409951433eab8c3d15a01c316bb","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/vehicle/VehicleConfig.js","title":"sim/physics/vehicle/VehicleConfig","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/vehicle/VehicleConfig.md","moduleTitle":"sim/physics/vehicle/VehicleConfig","source":"engine/sim/physics/vehicle/VehicleConfig.js","import":"/engine/sim/physics/vehicle/VehicleConfig.js","sourceHash":"2668e06d78fa5abae23fa844fd8682a85603d409951433eab8c3d15a01c316bb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/vehicle/VehicleConfig.js#0000:resolveVehicleConfig","exportIndex":0,"name":"resolveVehicleConfig","kind":"function","signature":"resolveVehicleConfig(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/vehicle/VehicleConfig.md","moduleTitle":"sim/physics/vehicle/VehicleConfig","source":"engine/sim/physics/vehicle/VehicleConfig.js","import":"/engine/sim/physics/vehicle/VehicleConfig.js","sourceHash":"2668e06d78fa5abae23fa844fd8682a85603d409951433eab8c3d15a01c316bb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/vehicle/VehicleConfig.js#0001:arrayAt","exportIndex":1,"name":"arrayAt","kind":"function","signature":"arrayAt(owner, field, index)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/vehicle/VehicleController.md","moduleTitle":"sim/physics/vehicle/VehicleController","source":"engine/sim/physics/vehicle/VehicleController.js","import":"/engine/sim/physics/vehicle/VehicleController.js","sourceHash":"fee817699995c08e921c4252aa967937a925278883e17753d1626b035d1d1941","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/vehicle/VehicleController.js","title":"sim/physics/vehicle/VehicleController","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/vehicle/VehicleController.md","moduleTitle":"sim/physics/vehicle/VehicleController","source":"engine/sim/physics/vehicle/VehicleController.js","import":"/engine/sim/physics/vehicle/VehicleController.js","sourceHash":"fee817699995c08e921c4252aa967937a925278883e17753d1626b035d1d1941","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/vehicle/VehicleController.js#0000:createVehicleController","exportIndex":0,"name":"createVehicleController","kind":"function","signature":"createVehicleController({ PhysX, world, topLevel, vehicle, actor, context, sweepMesh, tracked, config, gears, })","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/vehicle/VehicleDrivetrain.md","moduleTitle":"sim/physics/vehicle/VehicleDrivetrain","source":"engine/sim/physics/vehicle/VehicleDrivetrain.js","import":"/engine/sim/physics/vehicle/VehicleDrivetrain.js","sourceHash":"09845e26802d23f75bbe4a7b133ba4215c2038554ae7ed64e889a940f71ecbdc","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/vehicle/VehicleDrivetrain.js","title":"sim/physics/vehicle/VehicleDrivetrain","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/vehicle/VehicleDrivetrain.md","moduleTitle":"sim/physics/vehicle/VehicleDrivetrain","source":"engine/sim/physics/vehicle/VehicleDrivetrain.js","import":"/engine/sim/physics/vehicle/VehicleDrivetrain.js","sourceHash":"09845e26802d23f75bbe4a7b133ba4215c2038554ae7ed64e889a940f71ecbdc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/vehicle/VehicleDrivetrain.js#0000:configureVehicleDrivetrain","exportIndex":0,"name":"configureVehicleDrivetrain","kind":"function","signature":"configureVehicleDrivetrain(PhysX, vehicle)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/vehicle/VehicleEngine.md","moduleTitle":"sim/physics/vehicle/VehicleEngine","source":"engine/sim/physics/vehicle/VehicleEngine.js","import":"/engine/sim/physics/vehicle/VehicleEngine.js","sourceHash":"539ec7587a3b5bf938ffdc02c26093c7314060c242989e99c842bf035c68b413","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/vehicle/VehicleEngine.js","title":"sim/physics/vehicle/VehicleEngine","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/vehicle/VehicleEngine.md","moduleTitle":"sim/physics/vehicle/VehicleEngine","source":"engine/sim/physics/vehicle/VehicleEngine.js","import":"/engine/sim/physics/vehicle/VehicleEngine.js","sourceHash":"539ec7587a3b5bf938ffdc02c26093c7314060c242989e99c842bf035c68b413","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/vehicle/VehicleEngine.js#0000:configureVehicleEngine","exportIndex":0,"name":"configureVehicleEngine","kind":"function","signature":"configureVehicleEngine(vehicle, config)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/vehicle/VehicleWheels.md","moduleTitle":"sim/physics/vehicle/VehicleWheels","source":"engine/sim/physics/vehicle/VehicleWheels.js","import":"/engine/sim/physics/vehicle/VehicleWheels.js","sourceHash":"b932b4eaffd16b35263b15cb30bf0e39431c6a6d004edaa23937e8db7f74a818","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/vehicle/VehicleWheels.js","title":"sim/physics/vehicle/VehicleWheels","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/vehicle/VehicleWheels.md","moduleTitle":"sim/physics/vehicle/VehicleWheels","source":"engine/sim/physics/vehicle/VehicleWheels.js","import":"/engine/sim/physics/vehicle/VehicleWheels.js","sourceHash":"b932b4eaffd16b35263b15cb30bf0e39431c6a6d004edaa23937e8db7f74a818","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/vehicle/VehicleWheels.js#0000:configureVehicleWheels","exportIndex":0,"name":"configureVehicleWheels","kind":"function","signature":"configureVehicleWheels(PhysX, topLevel, vehicle, config, alloc)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/vehicle/index.md","moduleTitle":"sim/physics/vehicle/index","source":"engine/sim/physics/vehicle/index.js","import":"/engine/sim/physics/vehicle/index.js","sourceHash":"0c8d20ac95b04ef47c0c3324f7b3ab839d65211ec2ac35c21cdcd6d206fa3988","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/physics/vehicle/index.js","title":"sim/physics/vehicle/index","summary":"Build a complete PhysX Vehicle2 car from independently owned subsystems.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/vehicle/index.md","moduleTitle":"sim/physics/vehicle/index","source":"engine/sim/physics/vehicle/index.js","import":"/engine/sim/physics/vehicle/index.js","sourceHash":"0c8d20ac95b04ef47c0c3324f7b3ab839d65211ec2ac35c21cdcd6d206fa3988","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/vehicle/index.js#0000:createPhysXVehicle","exportIndex":0,"name":"createPhysXVehicle","kind":"function","signature":"createPhysXVehicle(world, options = {})","summary":"Build a complete PhysX Vehicle2 car from independently owned subsystems."}
{"schemaVersion":1,"modulePath":"engine/reference/sim/physics/vehicle/index.md","moduleTitle":"sim/physics/vehicle/index","source":"engine/sim/physics/vehicle/index.js","import":"/engine/sim/physics/vehicle/index.js","sourceHash":"0c8d20ac95b04ef47c0c3324f7b3ab839d65211ec2ac35c21cdcd6d206fa3988","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/physics/vehicle/index.js#0001:isPhysXVehicleSupported","exportIndex":1,"name":"isPhysXVehicleSupported","kind":"re-export","signature":"isPhysXVehicleSupported","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/world/WindSimulation.md","moduleTitle":"sim/world/WindSimulation","source":"engine/sim/world/WindSimulation.js","import":"/engine/sim/world/WindSimulation.js","sourceHash":"b69d30783a2f75705041704fd336413a0dca5a330d8e08b23b3ed914eb5a5475","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/world/WindSimulation.js","title":"sim/world/WindSimulation","summary":"Procedural Weather System - Grid-based weather simulation Simulates coupled ODE system for: - Temperature (fed by sunshine, decreased by rain/altitude) - Humidity (fed by water evaporation, lost to rain) - Clouds (appear above temp/humidity thresholds) - Precipitation (impulsive rain from cooling humid air) - Wind (convects temperature and humidity)","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/sim/world/WindSimulation.md","moduleTitle":"sim/world/WindSimulation","source":"engine/sim/world/WindSimulation.js","import":"/engine/sim/world/WindSimulation.js","sourceHash":"b69d30783a2f75705041704fd336413a0dca5a330d8e08b23b3ed914eb5a5475","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/world/WindSimulation.js#0000:WindSimulation","exportIndex":0,"name":"WindSimulation","kind":"class","signature":"class WindSimulation","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/world/WindSimulation.md","moduleTitle":"sim/world/WindSimulation","source":"engine/sim/world/WindSimulation.js","import":"/engine/sim/world/WindSimulation.js","sourceHash":"b69d30783a2f75705041704fd336413a0dca5a330d8e08b23b3ed914eb5a5475","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/world/WindSimulation.js#0001:ProceduralWeather","exportIndex":1,"name":"ProceduralWeather","kind":"class","signature":"class ProceduralWeather","summary":"Procedural Weather System - Grid-based weather simulation Simulates coupled ODE system for: - Temperature (fed by sunshine, decreased by rain/altitude) - Humidity (fed by water evaporation, lost to rain) - Clouds (appear above temp/humidity thresholds) - Precipitation (impulsive rain from cooling humid air) - Wind (convects temperature and humidity)"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/world/WindSimulation.md","moduleTitle":"sim/world/WindSimulation","source":"engine/sim/world/WindSimulation.js","import":"/engine/sim/world/WindSimulation.js","sourceHash":"b69d30783a2f75705041704fd336413a0dca5a330d8e08b23b3ed914eb5a5475","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/world/WindSimulation.js#0002:VolumetricClouds","exportIndex":2,"name":"VolumetricClouds","kind":"class","signature":"class VolumetricClouds","summary":"Volumetric Cloud Generator - Raymarched 3D density clouds INTEGRATION: - Uses GPU particles for cloud puffs/wisps - Uses WindSimulation for cloud advection - Uses SpatialHashCompute for LOD particle culling Uses multi-octave noise for cloud density with: - Wind advection from LBM simulation - Rayleigh/Mie scattering for realistic lighting - LOD based on ray distance"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/world/WindSystem.md","moduleTitle":"sim/world/WindSystem","source":"engine/sim/world/WindSystem.js","import":"/engine/sim/world/WindSystem.js","sourceHash":"be6e0f04d8c530906e8bf6fe05ff3fdc0fd69062e9456eb53422868ae9e55d7c","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/world/WindSystem.js","title":"sim/world/WindSystem","summary":"WindSystem.js - Global Wind Simulation Provides wind data for vegetation, particles, cloth, etc. Features gusts, turbulence, and directional wind","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/sim/world/WindSystem.md","moduleTitle":"sim/world/WindSystem","source":"engine/sim/world/WindSystem.js","import":"/engine/sim/world/WindSystem.js","sourceHash":"be6e0f04d8c530906e8bf6fe05ff3fdc0fd69062e9456eb53422868ae9e55d7c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/world/WindSystem.js#0000:WindSystem","exportIndex":0,"name":"WindSystem","kind":"class","signature":"class WindSystem","summary":"WindSystem.js - Global Wind Simulation Provides wind data for vegetation, particles, cloth, etc. Features gusts, turbulence, and directional wind"}
{"schemaVersion":1,"modulePath":"engine/reference/sim/world/WorldSim.md","moduleTitle":"sim/world/WorldSim","source":"engine/sim/world/WorldSim.js","import":"/engine/sim/world/WorldSim.js","sourceHash":"70f0220e76173e4f4689a1f6a8c161e8b31b835b95dde9862af9e172577ddf58","subsystem":"engine","recordType":"api-module","id":"module:engine/sim/world/WorldSim.js","title":"sim/world/WorldSim","summary":"","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/sim/world/WorldSim.md","moduleTitle":"sim/world/WorldSim","source":"engine/sim/world/WorldSim.js","import":"/engine/sim/world/WorldSim.js","sourceHash":"70f0220e76173e4f4689a1f6a8c161e8b31b835b95dde9862af9e172577ddf58","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/world/WorldSim.js#0000:createWorldSim","exportIndex":0,"name":"createWorldSim","kind":"function","signature":"createWorldSim(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/world/WorldSim.md","moduleTitle":"sim/world/WorldSim","source":"engine/sim/world/WorldSim.js","import":"/engine/sim/world/WorldSim.js","sourceHash":"70f0220e76173e4f4689a1f6a8c161e8b31b835b95dde9862af9e172577ddf58","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/world/WorldSim.js#0001:destroyWorldSim","exportIndex":1,"name":"destroyWorldSim","kind":"function","signature":"destroyWorldSim(worldSim)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/world/WorldSim.md","moduleTitle":"sim/world/WorldSim","source":"engine/sim/world/WorldSim.js","import":"/engine/sim/world/WorldSim.js","sourceHash":"70f0220e76173e4f4689a1f6a8c161e8b31b835b95dde9862af9e172577ddf58","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/world/WorldSim.js#0002:stepWorldSim","exportIndex":2,"name":"stepWorldSim","kind":"function","signature":"stepWorldSim(worldSim, deltaSeconds, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/world/WorldSim.md","moduleTitle":"sim/world/WorldSim","source":"engine/sim/world/WorldSim.js","import":"/engine/sim/world/WorldSim.js","sourceHash":"70f0220e76173e4f4689a1f6a8c161e8b31b835b95dde9862af9e172577ddf58","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/world/WorldSim.js#0003:sampleTerrainHeight","exportIndex":3,"name":"sampleTerrainHeight","kind":"function","signature":"sampleTerrainHeight(worldSim, worldX, worldZ)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/world/WorldSim.md","moduleTitle":"sim/world/WorldSim","source":"engine/sim/world/WorldSim.js","import":"/engine/sim/world/WorldSim.js","sourceHash":"70f0220e76173e4f4689a1f6a8c161e8b31b835b95dde9862af9e172577ddf58","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/world/WorldSim.js#0004:getWorldSimSnapshot","exportIndex":4,"name":"getWorldSimSnapshot","kind":"function","signature":"getWorldSimSnapshot(worldSim)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/world/WorldSim.md","moduleTitle":"sim/world/WorldSim","source":"engine/sim/world/WorldSim.js","import":"/engine/sim/world/WorldSim.js","sourceHash":"70f0220e76173e4f4689a1f6a8c161e8b31b835b95dde9862af9e172577ddf58","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/world/WorldSim.js#0005:exportWorldSimState","exportIndex":5,"name":"exportWorldSimState","kind":"function","signature":"exportWorldSimState(worldSim, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/sim/world/WorldSim.md","moduleTitle":"sim/world/WorldSim","source":"engine/sim/world/WorldSim.js","import":"/engine/sim/world/WorldSim.js","sourceHash":"70f0220e76173e4f4689a1f6a8c161e8b31b835b95dde9862af9e172577ddf58","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/sim/world/WorldSim.js#0006:createWorldSimFromState","exportIndex":6,"name":"createWorldSimFromState","kind":"function","signature":"createWorldSimFromState(state)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/authority/Capability.md","moduleTitle":"state/authority/Capability","source":"engine/state/authority/Capability.js","import":"/engine/state/authority/Capability.js","sourceHash":"6ae58a8f8791eb90d7657efa3af1c642c62d9bd095dccdfaa196dc2a9bd794b5","subsystem":"engine","recordType":"api-module","id":"module:engine/state/authority/Capability.js","title":"state/authority/Capability","summary":"state/authority/Capability.js — scoped, attenuable, revocable authority (spec §12).  Observation does NOT imply permission (spec rule 29). A capability names a principal, an object, an allowed action, scope/constraints, expiry, and whether it is single-use. Following Macaroons, a capability can be ATTENUATED by adding caveats (narrowing who/where/when/what) — never widened. Critical single-use capabilities are themselves USOs (consumed on use). Authority is re-checked at commit, closing the time-of-check/time-of-use gap.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/state/authority/Capability.md","moduleTitle":"state/authority/Capability","source":"engine/state/authority/Capability.js","import":"/engine/state/authority/Capability.js","sourceHash":"6ae58a8f8791eb90d7657efa3af1c642c62d9bd095dccdfaa196dc2a9bd794b5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/authority/Capability.js#0000:makeCapability","exportIndex":0,"name":"makeCapability","kind":"function","signature":"makeCapability(c = {})","summary":"Mint a capability."}
{"schemaVersion":1,"modulePath":"engine/reference/state/authority/Capability.md","moduleTitle":"state/authority/Capability","source":"engine/state/authority/Capability.js","import":"/engine/state/authority/Capability.js","sourceHash":"6ae58a8f8791eb90d7657efa3af1c642c62d9bd095dccdfaa196dc2a9bd794b5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/authority/Capability.js#0001:attenuate","exportIndex":1,"name":"attenuate","kind":"function","signature":"attenuate(cap, caveat)","summary":"Attenuate a capability by adding a caveat. The result is a NEW capability that is strictly narrower; it can never grant more than its parent (spec rule 30, CSE rule \"a capability cannot grant rights beyond its issuer's rights\")."}
{"schemaVersion":1,"modulePath":"engine/reference/state/authority/Capability.md","moduleTitle":"state/authority/Capability","source":"engine/state/authority/Capability.js","import":"/engine/state/authority/Capability.js","sourceHash":"6ae58a8f8791eb90d7657efa3af1c642c62d9bd095dccdfaa196dc2a9bd794b5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/authority/Capability.js#0002:authorizes","exportIndex":2,"name":"authorizes","kind":"function","signature":"authorizes(cap, { principal, object, action, epoch, context = {} } = {})","summary":"Test whether a capability authorizes an action in a context. Checks object/action match, expiry, and every caveat predicate. Does NOT check revocation — that lives in the registry (online status, spec rule 31)."}
{"schemaVersion":1,"modulePath":"engine/reference/state/authority/CapabilityRegistry.md","moduleTitle":"state/authority/CapabilityRegistry","source":"engine/state/authority/CapabilityRegistry.js","import":"/engine/state/authority/CapabilityRegistry.js","sourceHash":"16bbd9f2d16b24beaf91a1ebea1ce0ed0d15c1210e1a4d953e288cc88c556985","subsystem":"engine","recordType":"api-module","id":"module:engine/state/authority/CapabilityRegistry.js","title":"state/authority/CapabilityRegistry","summary":"state/authority/CapabilityRegistry.js — registry + revocation (spec §6,§12).  Holds issued capabilities and a revocation set. A revoked critical capability can never commit (safety invariant, spec §19). Revocation-sensitive capabilities require an online status check at commit, so the coordinator asks the registry — not a cached plan — whether a capability is still valid.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/state/authority/CapabilityRegistry.md","moduleTitle":"state/authority/CapabilityRegistry","source":"engine/state/authority/CapabilityRegistry.js","import":"/engine/state/authority/CapabilityRegistry.js","sourceHash":"16bbd9f2d16b24beaf91a1ebea1ce0ed0d15c1210e1a4d953e288cc88c556985","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/authority/CapabilityRegistry.js#0000:CapabilityRegistry","exportIndex":0,"name":"CapabilityRegistry","kind":"class","signature":"class CapabilityRegistry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/authority/Identity.md","moduleTitle":"state/authority/Identity","source":"engine/state/authority/Identity.js","import":"/engine/state/authority/Identity.js","sourceHash":"7d22bc018dc405e5fbde98d3326a15323a901dd5a181d9a6b4359fd5a73ddf48","subsystem":"engine","recordType":"api-module","id":"module:engine/state/authority/Identity.js","title":"state/authority/Identity","summary":"state/authority/Identity.js — pluggable signer for the Authority plane (spec §12).  Authority is explicit and bound to a signing key, not an ambient bearer token (spec rule 30, CSE rule 1). This wraps the engine's existing ECDSA P-256 identity (engine/collab/CollabIdentity.js) behind a minimal signer interface so the commit coordinator can verify signatures at commit time. When SubtleCrypto is unavailable it degrades to a deterministic FNV stamp — usable for local dev, but `secure:false` flags that it carries no cryptographic guarantee.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/state/authority/Identity.md","moduleTitle":"state/authority/Identity","source":"engine/state/authority/Identity.js","import":"/engine/state/authority/Identity.js","sourceHash":"7d22bc018dc405e5fbde98d3326a15323a901dd5a181d9a6b4359fd5a73ddf48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/authority/Identity.js#0000:createSigner","exportIndex":0,"name":"createSigner","kind":"function","signature":"async createSigner(principal, opts = {})","summary":"Create an authority signer bound to a principal id. Each distinct principal gets its OWN persisted ECDSA P-256 keypair (via CollabIdentity's named-key support) rather than sharing the single default device key. This lets the same device host multiple unlinkable signers — e.g. a stable `profile:<id>` identity and per-group pseudonymous `membership:<groupId>:<profileId>` identities (engine/network/identity) — without one leaking the other's fingerprint."}
{"schemaVersion":1,"modulePath":"engine/reference/state/authority/Identity.md","moduleTitle":"state/authority/Identity","source":"engine/state/authority/Identity.js","import":"/engine/state/authority/Identity.js","sourceHash":"7d22bc018dc405e5fbde98d3326a15323a901dd5a181d9a6b4359fd5a73ddf48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/authority/Identity.js#0001:verifyWithKey","exportIndex":1,"name":"verifyWithKey","kind":"function","signature":"async verifyWithKey(publicKeyHex, data, signatureHex)","summary":"Verify a signature against an explicit public key (cross-actor verification)."}
{"schemaVersion":1,"modulePath":"engine/reference/state/authority/Identity.md","moduleTitle":"state/authority/Identity","source":"engine/state/authority/Identity.js","import":"/engine/state/authority/Identity.js","sourceHash":"7d22bc018dc405e5fbde98d3326a15323a901dd5a181d9a6b4359fd5a73ddf48","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/authority/Identity.js#0002:computeFingerprint","exportIndex":2,"name":"computeFingerprint","kind":"re-export","signature":"computeFingerprint","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/authority/PolicyEngine.md","moduleTitle":"state/authority/PolicyEngine","source":"engine/state/authority/PolicyEngine.js","import":"/engine/state/authority/PolicyEngine.js","sourceHash":"0549c73affee4f07052c64c052e10563d12c4f4350337a1aa8e30ce4d615bd6e","subsystem":"engine","recordType":"api-module","id":"module:engine/state/authority/PolicyEngine.js","title":"state/authority/PolicyEngine","summary":"state/authority/PolicyEngine.js — Authority-plane policy engine + approval/risk gates (spec §3 plane 6, rules 30, 34).  Capabilities say WHAT a principal may do; policy says under WHICH conditions it is currently allowed, and which actions need human/authority approval before they may commit. The engine evaluates ordered rules (deny overrides allow) and classifies an action's risk; irreversible / high-risk actions are gated behind an explicit approval that must be present at commit time — closing the time-of-check/time-of-use gap together with the capability re-check (rule 31). Policy is versioned (rule 5) so receipts can record which policy decided.","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/state/authority/PolicyEngine.md","moduleTitle":"state/authority/PolicyEngine","source":"engine/state/authority/PolicyEngine.js","import":"/engine/state/authority/PolicyEngine.js","sourceHash":"0549c73affee4f07052c64c052e10563d12c4f4350337a1aa8e30ce4d615bd6e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/authority/PolicyEngine.js#0000:PolicyEngine","exportIndex":0,"name":"PolicyEngine","kind":"class","signature":"class PolicyEngine","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/authority/PolicyEngine.md","moduleTitle":"state/authority/PolicyEngine","source":"engine/state/authority/PolicyEngine.js","import":"/engine/state/authority/PolicyEngine.js","sourceHash":"0549c73affee4f07052c64c052e10563d12c4f4350337a1aa8e30ce4d615bd6e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/authority/PolicyEngine.js#0001:policyRule","exportIndex":1,"name":"policyRule","kind":"function","signature":"policyRule(r)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/authority/PolicyEngine.md","moduleTitle":"state/authority/PolicyEngine","source":"engine/state/authority/PolicyEngine.js","import":"/engine/state/authority/PolicyEngine.js","sourceHash":"0549c73affee4f07052c64c052e10563d12c4f4350337a1aa8e30ce4d615bd6e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/authority/PolicyEngine.js#0002:RISK_LEVEL","exportIndex":2,"name":"RISK_LEVEL","kind":"constant","signature":"RISK_LEVEL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/authority/PolicyEngine.md","moduleTitle":"state/authority/PolicyEngine","source":"engine/state/authority/PolicyEngine.js","import":"/engine/state/authority/PolicyEngine.js","sourceHash":"0549c73affee4f07052c64c052e10563d12c4f4350337a1aa8e30ce4d615bd6e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/authority/PolicyEngine.js#0003:DECISION","exportIndex":3,"name":"DECISION","kind":"constant","signature":"DECISION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/causal/CausalParents.md","moduleTitle":"state/causal/CausalParents","source":"engine/state/causal/CausalParents.js","import":"/engine/state/causal/CausalParents.js","sourceHash":"5aac5c5b88a71890be52cf400384dec19350ba0d1d6c797c24826a32d3ba4f35","subsystem":"engine","recordType":"api-module","id":"module:engine/state/causal/CausalParents.js","title":"state/causal/CausalParents","summary":"state/causal/CausalParents.js — partial order over committed events (spec §2,§9).  Lamport's happened-before: causal relationships establish a partial order; concurrent events need not have a global order. This Causal Plane tracks the DAG of committed ids (commits, observations) so a new transaction can declare `causalParents` and the coordinator can verify those parents are known before committing. It reuses the partial-order toposort from facts/Causality.js for deterministic projection of the known causal graph.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/state/causal/CausalParents.md","moduleTitle":"state/causal/CausalParents","source":"engine/state/causal/CausalParents.js","import":"/engine/state/causal/CausalParents.js","sourceHash":"5aac5c5b88a71890be52cf400384dec19350ba0d1d6c797c24826a32d3ba4f35","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/causal/CausalParents.js#0000:CausalGraph","exportIndex":0,"name":"CausalGraph","kind":"class","signature":"class CausalGraph","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/causal/DottedVersionVector.md","moduleTitle":"state/causal/DottedVersionVector","source":"engine/state/causal/DottedVersionVector.js","import":"/engine/state/causal/DottedVersionVector.js","sourceHash":"30732395b15dbd7de7e0a565f6e9026e32d0f69d046f7215a4d619ecbd971846","subsystem":"engine","recordType":"api-module","id":"module:engine/state/causal/DottedVersionVector.js","title":"state/causal/DottedVersionVector","summary":"state/causal/DottedVersionVector.js — precise concurrent-version causality (spec §9 \"Causal time\", rule 8/9).  A VersionVector summarizes \"what I have seen\" per node and gives a partial order: equal / before / after / concurrent. Dotted version vectors (Preguiça et al.) add the ability to track each write as an isolated event (a \"dot\") so concurrent writes are kept as explicit SIBLINGS instead of being silently lost or forcing per-client metadata to grow without bound. This is the causality backbone the Causal Plane uses to decide when order is genuinely required.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/state/causal/DottedVersionVector.md","moduleTitle":"state/causal/DottedVersionVector","source":"engine/state/causal/DottedVersionVector.js","import":"/engine/state/causal/DottedVersionVector.js","sourceHash":"30732395b15dbd7de7e0a565f6e9026e32d0f69d046f7215a4d619ecbd971846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/causal/DottedVersionVector.js#0000:VersionVector","exportIndex":0,"name":"VersionVector","kind":"class","signature":"class VersionVector","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/causal/DottedVersionVector.md","moduleTitle":"state/causal/DottedVersionVector","source":"engine/state/causal/DottedVersionVector.js","import":"/engine/state/causal/DottedVersionVector.js","sourceHash":"30732395b15dbd7de7e0a565f6e9026e32d0f69d046f7215a4d619ecbd971846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/causal/DottedVersionVector.js#0001:DVVSet","exportIndex":1,"name":"DVVSet","kind":"class","signature":"class DVVSet","summary":"A dotted-version-vector set for ONE logical key: stores the current value(s) plus the causal history at which each was written. Concurrent writes survive as siblings; a write that causally dominates a value replaces it."}
{"schemaVersion":1,"modulePath":"engine/reference/state/causal/DottedVersionVector.md","moduleTitle":"state/causal/DottedVersionVector","source":"engine/state/causal/DottedVersionVector.js","import":"/engine/state/causal/DottedVersionVector.js","sourceHash":"30732395b15dbd7de7e0a565f6e9026e32d0f69d046f7215a4d619ecbd971846","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/causal/DottedVersionVector.js#0002:ORDER","exportIndex":2,"name":"ORDER","kind":"constant","signature":"ORDER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/causal/HLC.md","moduleTitle":"state/causal/HLC","source":"engine/state/causal/HLC.js","import":"/engine/state/causal/HLC.js","sourceHash":"48a3e2efa12df1e8ba7369b3ba7b6b560bae3b589f90f6b5a28f271b45e30c23","subsystem":"engine","recordType":"api-module","id":"module:engine/state/causal/HLC.js","title":"state/causal/HLC","summary":"state/causal/HLC.js — Hybrid Logical Clock (spec §9 \"Operational time\", rule 11).  An HLC (Kulkarni et al.) combines a logical clock's causal guarantees with a timestamp that stays close to physical time. Each timestamp is (l, c): `l` tracks the max physical time observed, `c` is a bounded counter that breaks ties when events share the same `l`. HLC gives a total order consistent with causality (if A → B then ts(A) < ts(B)) while remaining readable as wall time.  IMPORTANT (rule 11): a timestamp NEVER establishes authority, ownership, or uniqueness on its own — HLC orders events; the commit protocol decides truth.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/state/causal/HLC.md","moduleTitle":"state/causal/HLC","source":"engine/state/causal/HLC.js","import":"/engine/state/causal/HLC.js","sourceHash":"48a3e2efa12df1e8ba7369b3ba7b6b560bae3b589f90f6b5a28f271b45e30c23","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/causal/HLC.js#0000:HLC","exportIndex":0,"name":"HLC","kind":"class","signature":"class HLC","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/causal/HLC.md","moduleTitle":"state/causal/HLC","source":"engine/state/causal/HLC.js","import":"/engine/state/causal/HLC.js","sourceHash":"48a3e2efa12df1e8ba7369b3ba7b6b560bae3b589f90f6b5a28f271b45e30c23","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/causal/HLC.js#0001:compareHLC","exportIndex":1,"name":"compareHLC","kind":"function","signature":"compareHLC(a, b)","summary":"Compare two HLC timestamps {l,c}. Returns -1, 0, or 1."}
{"schemaVersion":1,"modulePath":"engine/reference/state/codebook/CodeEntry.md","moduleTitle":"state/codebook/CodeEntry","source":"engine/state/codebook/CodeEntry.js","import":"/engine/state/codebook/CodeEntry.js","sourceHash":"c87bef0fb15484cd2c1e810e609f24e79b7a5e834d978e9ddf36af51ab888915","subsystem":"engine","recordType":"api-module","id":"module:engine/state/codebook/CodeEntry.js","title":"state/codebook/CodeEntry","summary":"state/codebook/CodeEntry.js — the layered code packet. NOT one magic number: each field has exactly one job and never pretends to be another.  denseID        fast runtime handle exactID        literal pattern identity (9-bit packed / canonical) spatialID      where it belongs in space   (filled by the spatial layer, M2) resonanceVector what it resembles          (filled by the resonance layer, M3) correctionCode how to repair corruption    (filled by the correction layer, M5) hashID         have we seen this exact thing symbolicSig    what it MEANS (optional)","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/state/codebook/CodeEntry.md","moduleTitle":"state/codebook/CodeEntry","source":"engine/state/codebook/CodeEntry.js","import":"/engine/state/codebook/CodeEntry.js","sourceHash":"c87bef0fb15484cd2c1e810e609f24e79b7a5e834d978e9ddf36af51ab888915","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/codebook/CodeEntry.js#0000:makeCodeEntry","exportIndex":0,"name":"makeCodeEntry","kind":"function","signature":"makeCodeEntry(rawId, opts = {})","summary":"Build a CodeEntry for a raw 3x3 pattern. Later layers enrich the null fields: spatialID (M2 SpatialCode), resonanceVector (M3 Transforms), correctionCode (M5 CorrectionGate). Keeping them explicitly null preserves the layer law — a missing layer is visibly missing, never faked."}
{"schemaVersion":1,"modulePath":"engine/reference/state/codebook/PatternCodebook.md","moduleTitle":"state/codebook/PatternCodebook","source":"engine/state/codebook/PatternCodebook.js","import":"/engine/state/codebook/PatternCodebook.js","sourceHash":"1f081287566473f20ea6ce1f02cd98190384f983fd582515194d554dd99e5513","subsystem":"engine","recordType":"api-module","id":"module:engine/state/codebook/PatternCodebook.js","title":"state/codebook/PatternCodebook","summary":"state/codebook/PatternCodebook.js — Phase 1 of the URC pipeline: raw 3x3 block -> 9-bit exact id -> canonical (rotations/flips) -> dense id + hash id + nearest legal attractor (Hamming distance).  This is the smallest stable codebook. Bigger blocks (8x8 DCT, 32x32 wavelets) plug into the resonance layer later; the contract here is: a raw pattern maps deterministically to a stable codebook entry.","exportCount":11}
{"schemaVersion":1,"modulePath":"engine/reference/state/codebook/PatternCodebook.md","moduleTitle":"state/codebook/PatternCodebook","source":"engine/state/codebook/PatternCodebook.js","import":"/engine/state/codebook/PatternCodebook.js","sourceHash":"1f081287566473f20ea6ce1f02cd98190384f983fd582515194d554dd99e5513","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/codebook/PatternCodebook.js#0000:PatternCodebook","exportIndex":0,"name":"PatternCodebook","kind":"class","signature":"class PatternCodebook","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/codebook/PatternCodebook.md","moduleTitle":"state/codebook/PatternCodebook","source":"engine/state/codebook/PatternCodebook.js","import":"/engine/state/codebook/PatternCodebook.js","sourceHash":"1f081287566473f20ea6ce1f02cd98190384f983fd582515194d554dd99e5513","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/codebook/PatternCodebook.js#0001:packPattern","exportIndex":1,"name":"packPattern","kind":"function","signature":"packPattern(cells)","summary":"Pack a length-9 array of truthy/0 cells (row-major) into a 9-bit id (0..511)."}
{"schemaVersion":1,"modulePath":"engine/reference/state/codebook/PatternCodebook.md","moduleTitle":"state/codebook/PatternCodebook","source":"engine/state/codebook/PatternCodebook.js","import":"/engine/state/codebook/PatternCodebook.js","sourceHash":"1f081287566473f20ea6ce1f02cd98190384f983fd582515194d554dd99e5513","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/codebook/PatternCodebook.js#0002:unpackPattern","exportIndex":2,"name":"unpackPattern","kind":"function","signature":"unpackPattern(id)","summary":"Unpack a 9-bit id back into a length-9 Uint8Array (row-major)."}
{"schemaVersion":1,"modulePath":"engine/reference/state/codebook/PatternCodebook.md","moduleTitle":"state/codebook/PatternCodebook","source":"engine/state/codebook/PatternCodebook.js","import":"/engine/state/codebook/PatternCodebook.js","sourceHash":"1f081287566473f20ea6ce1f02cd98190384f983fd582515194d554dd99e5513","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/codebook/PatternCodebook.js#0003:hammingDistance","exportIndex":3,"name":"hammingDistance","kind":"function","signature":"hammingDistance(a, b)","summary":"Number of differing cells between two packed 3x3 patterns."}
{"schemaVersion":1,"modulePath":"engine/reference/state/codebook/PatternCodebook.md","moduleTitle":"state/codebook/PatternCodebook","source":"engine/state/codebook/PatternCodebook.js","import":"/engine/state/codebook/PatternCodebook.js","sourceHash":"1f081287566473f20ea6ce1f02cd98190384f983fd582515194d554dd99e5513","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/codebook/PatternCodebook.js#0004:symmetries","exportIndex":4,"name":"symmetries","kind":"function","signature":"symmetries(id)","summary":"All 8 dihedral symmetries of a packed pattern."}
{"schemaVersion":1,"modulePath":"engine/reference/state/codebook/PatternCodebook.md","moduleTitle":"state/codebook/PatternCodebook","source":"engine/state/codebook/PatternCodebook.js","import":"/engine/state/codebook/PatternCodebook.js","sourceHash":"1f081287566473f20ea6ce1f02cd98190384f983fd582515194d554dd99e5513","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/codebook/PatternCodebook.js#0005:canonicalId","exportIndex":5,"name":"canonicalId","kind":"function","signature":"canonicalId(id)","summary":"Canonical id = smallest packed id over all dihedral symmetries (rotation/flip invariant)."}
{"schemaVersion":1,"modulePath":"engine/reference/state/codebook/PatternCodebook.md","moduleTitle":"state/codebook/PatternCodebook","source":"engine/state/codebook/PatternCodebook.js","import":"/engine/state/codebook/PatternCodebook.js","sourceHash":"1f081287566473f20ea6ce1f02cd98190384f983fd582515194d554dd99e5513","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/codebook/PatternCodebook.js#0006:patternHashId","exportIndex":6,"name":"patternHashId","kind":"function","signature":"patternHashId(rawId)","summary":"Stable content fingerprint for a pattern (hash = identity)."}
{"schemaVersion":1,"modulePath":"engine/reference/state/codebook/PatternCodebook.md","moduleTitle":"state/codebook/PatternCodebook","source":"engine/state/codebook/PatternCodebook.js","import":"/engine/state/codebook/PatternCodebook.js","sourceHash":"1f081287566473f20ea6ce1f02cd98190384f983fd582515194d554dd99e5513","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/codebook/PatternCodebook.js#0007:PATTERN_W","exportIndex":7,"name":"PATTERN_W","kind":"constant","signature":"PATTERN_W","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/codebook/PatternCodebook.md","moduleTitle":"state/codebook/PatternCodebook","source":"engine/state/codebook/PatternCodebook.js","import":"/engine/state/codebook/PatternCodebook.js","sourceHash":"1f081287566473f20ea6ce1f02cd98190384f983fd582515194d554dd99e5513","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/codebook/PatternCodebook.js#0008:PATTERN_H","exportIndex":8,"name":"PATTERN_H","kind":"constant","signature":"PATTERN_H","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/codebook/PatternCodebook.md","moduleTitle":"state/codebook/PatternCodebook","source":"engine/state/codebook/PatternCodebook.js","import":"/engine/state/codebook/PatternCodebook.js","sourceHash":"1f081287566473f20ea6ce1f02cd98190384f983fd582515194d554dd99e5513","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/codebook/PatternCodebook.js#0009:PATTERN_BITS","exportIndex":9,"name":"PATTERN_BITS","kind":"constant","signature":"PATTERN_BITS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/codebook/PatternCodebook.md","moduleTitle":"state/codebook/PatternCodebook","source":"engine/state/codebook/PatternCodebook.js","import":"/engine/state/codebook/PatternCodebook.js","sourceHash":"1f081287566473f20ea6ce1f02cd98190384f983fd582515194d554dd99e5513","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/codebook/PatternCodebook.js#0010:PATTERN_COUNT","exportIndex":10,"name":"PATTERN_COUNT","kind":"constant","signature":"PATTERN_COUNT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/codebook/SymbolicSig.md","moduleTitle":"state/codebook/SymbolicSig","source":"engine/state/codebook/SymbolicSig.js","import":"/engine/state/codebook/SymbolicSig.js","sourceHash":"2e675002b93c14c5fd2354236f682c663faf13fd5cf6f92b1b23ffe31bfa19fa","subsystem":"engine","recordType":"api-module","id":"module:engine/state/codebook/SymbolicSig.js","title":"state/codebook/SymbolicSig","summary":"state/codebook/SymbolicSig.js — symbolic *meaning* via prime INDICES.  Layer law: \"Primes = symbolic meaning\". We never multiply giant prime products at runtime (that would be slow and pretend to be storage). A symbolic signature is just a sorted set of prime indices; identity stays in hashes, speed stays in dense ids. Two things that look alike (resonance) can still mean opposite things — meaning is checked HERE, not by similarity.","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/state/codebook/SymbolicSig.md","moduleTitle":"state/codebook/SymbolicSig","source":"engine/state/codebook/SymbolicSig.js","import":"/engine/state/codebook/SymbolicSig.js","sourceHash":"2e675002b93c14c5fd2354236f682c663faf13fd5cf6f92b1b23ffe31bfa19fa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/codebook/SymbolicSig.js#0000:primeAt","exportIndex":0,"name":"primeAt","kind":"function","signature":"primeAt(index)","summary":"Prime value for a given index (bounds-checked)."}
{"schemaVersion":1,"modulePath":"engine/reference/state/codebook/SymbolicSig.md","moduleTitle":"state/codebook/SymbolicSig","source":"engine/state/codebook/SymbolicSig.js","import":"/engine/state/codebook/SymbolicSig.js","sourceHash":"2e675002b93c14c5fd2354236f682c663faf13fd5cf6f92b1b23ffe31bfa19fa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/codebook/SymbolicSig.js#0001:symbolicSig","exportIndex":1,"name":"symbolicSig","kind":"function","signature":"symbolicSig(primeIndices)","summary":"Build a symbolic signature: a sorted, de-duplicated vector of prime indices."}
{"schemaVersion":1,"modulePath":"engine/reference/state/codebook/SymbolicSig.md","moduleTitle":"state/codebook/SymbolicSig","source":"engine/state/codebook/SymbolicSig.js","import":"/engine/state/codebook/SymbolicSig.js","sourceHash":"2e675002b93c14c5fd2354236f682c663faf13fd5cf6f92b1b23ffe31bfa19fa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/codebook/SymbolicSig.js#0002:sigEquals","exportIndex":2,"name":"sigEquals","kind":"function","signature":"sigEquals(a, b)","summary":"Meaning equality — compares index sets, NEVER products."}
{"schemaVersion":1,"modulePath":"engine/reference/state/codebook/SymbolicSig.md","moduleTitle":"state/codebook/SymbolicSig","source":"engine/state/codebook/SymbolicSig.js","import":"/engine/state/codebook/SymbolicSig.js","sourceHash":"2e675002b93c14c5fd2354236f682c663faf13fd5cf6f92b1b23ffe31bfa19fa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/codebook/SymbolicSig.js#0003:sigContains","exportIndex":3,"name":"sigContains","kind":"function","signature":"sigContains(sig, sub)","summary":"True if `sub`'s meanings are all present in `sig` (symbolic containment)."}
{"schemaVersion":1,"modulePath":"engine/reference/state/codebook/SymbolicSig.md","moduleTitle":"state/codebook/SymbolicSig","source":"engine/state/codebook/SymbolicSig.js","import":"/engine/state/codebook/SymbolicSig.js","sourceHash":"2e675002b93c14c5fd2354236f682c663faf13fd5cf6f92b1b23ffe31bfa19fa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/codebook/SymbolicSig.js#0004:PRIME_TABLE","exportIndex":4,"name":"PRIME_TABLE","kind":"constant","signature":"PRIME_TABLE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/commit/CommitGate.md","moduleTitle":"state/commit/CommitGate","source":"engine/state/commit/CommitGate.js","import":"/engine/state/commit/CommitGate.js","sourceHash":"3694364bd5ae2a2739926dd32b5f6a9a3122adf34c3a6f78b4480386791feaa4","subsystem":"engine","recordType":"api-module","id":"module:engine/state/commit/CommitGate.js","title":"state/commit/CommitGate","summary":"state/commit/CommitGate.js — only commit gates decide FINAL truth.  Core law: \"Similarity may suggest. Facts may branch. Constraints may reject. But only commit gates decide final truth.\" Used for the orderless-unsafe things: inventory, permissions, ownership, money, save overwrite, security, multiplayer hit-confirm, choosing a canonical branch.  A commit applies a delta (adds + tombstones) to a CLONE of the base store, runs COMMIT-strength constraints, then an optional authority check. It never mutates the base — truth is the returned store, with a witness either way.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/state/commit/CommitGate.md","moduleTitle":"state/commit/CommitGate","source":"engine/state/commit/CommitGate.js","import":"/engine/state/commit/CommitGate.js","sourceHash":"3694364bd5ae2a2739926dd32b5f6a9a3122adf34c3a6f78b4480386791feaa4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/commit/CommitGate.js#0000:createCommitGate","exportIndex":0,"name":"createCommitGate","kind":"function","signature":"createCommitGate({ constraints = [], authority = null } = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/commit/CorrectionGate.md","moduleTitle":"state/commit/CorrectionGate","source":"engine/state/commit/CorrectionGate.js","import":"/engine/state/commit/CorrectionGate.js","sourceHash":"443e38be7020c10ff79257d9abffad3b577e9dfa0076b4a71ce4efafbbbfb86a","subsystem":"engine","recordType":"api-module","id":"module:engine/state/commit/CorrectionGate.js","title":"state/commit/CorrectionGate","summary":"state/commit/CorrectionGate.js — correction is NOT authority.  Tiered policy (the layer law for repair): VISUAL    state may auto-correct (particles, cache, chunk, network-with-confidence) SEMANTIC  state must verify before applying (inventory, save, ...) SECURITY  state must NEVER silently repair (permission, ownership, security)  When unsure: branch / quarantine / request authority — never silently fix. Resonance (nearestAttractor) may SUGGEST the repaired value, but acceptance is decided here, and a security tier can only escalate, never apply.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/state/commit/CorrectionGate.md","moduleTitle":"state/commit/CorrectionGate","source":"engine/state/commit/CorrectionGate.js","import":"/engine/state/commit/CorrectionGate.js","sourceHash":"443e38be7020c10ff79257d9abffad3b577e9dfa0076b4a71ce4efafbbbfb86a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/commit/CorrectionGate.js#0000:correct","exportIndex":0,"name":"correct","kind":"function","signature":"correct({ tier, repaired, verify, unsure = false })","summary":"Decide what to do with a (resonance-)repaired candidate."}
{"schemaVersion":1,"modulePath":"engine/reference/state/commit/CorrectionGate.md","moduleTitle":"state/commit/CorrectionGate","source":"engine/state/commit/CorrectionGate.js","import":"/engine/state/commit/CorrectionGate.js","sourceHash":"443e38be7020c10ff79257d9abffad3b577e9dfa0076b4a71ce4efafbbbfb86a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/commit/CorrectionGate.js#0001:CORRECTION_TIERS","exportIndex":1,"name":"CORRECTION_TIERS","kind":"constant","signature":"CORRECTION_TIERS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/commit/CorrectionGate.md","moduleTitle":"state/commit/CorrectionGate","source":"engine/state/commit/CorrectionGate.js","import":"/engine/state/commit/CorrectionGate.js","sourceHash":"443e38be7020c10ff79257d9abffad3b577e9dfa0076b4a71ce4efafbbbfb86a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/commit/CorrectionGate.js#0002:CORRECTION_ACTIONS","exportIndex":2,"name":"CORRECTION_ACTIONS","kind":"constant","signature":"CORRECTION_ACTIONS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/consistency/CRDT.md","moduleTitle":"state/consistency/CRDT","source":"engine/state/consistency/CRDT.js","import":"/engine/state/consistency/CRDT.js","sourceHash":"739bcace58a6dbef5b1c2d98f1284a099eaae80f1ec4f8d159a33ab9d0d41507","subsystem":"engine","recordType":"api-module","id":"module:engine/state/consistency/CRDT.js","title":"state/consistency/CRDT","summary":"state/consistency/CRDT.js — approved mergeable types (spec §4 \"Mergeable state\", rule 14/36).  State-based CRDTs (CvRDTs): every type exposes a `merge(other)` that is a least-upper-bound join — associative, commutative, and idempotent — so replicas that exchange state in any order/any number of times converge to the same value WITHOUT coordination (CALM / coordination-avoidance). Each merge is non-mutating and returns a NEW instance so the join algebra is easy to test.  IMPORTANT (rule 36): CRDT convergence is NOT proof of application validity. A CRDT may only be used for a value after `InvariantConfluence` confirms its operations preserve the relevant invariants. These types are the approved building blocks, not a license to make any value mergeable.","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/state/consistency/CRDT.md","moduleTitle":"state/consistency/CRDT","source":"engine/state/consistency/CRDT.js","import":"/engine/state/consistency/CRDT.js","sourceHash":"739bcace58a6dbef5b1c2d98f1284a099eaae80f1ec4f8d159a33ab9d0d41507","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/consistency/CRDT.js#0000:GCounter","exportIndex":0,"name":"GCounter","kind":"class","signature":"class GCounter","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/consistency/CRDT.md","moduleTitle":"state/consistency/CRDT","source":"engine/state/consistency/CRDT.js","import":"/engine/state/consistency/CRDT.js","sourceHash":"739bcace58a6dbef5b1c2d98f1284a099eaae80f1ec4f8d159a33ab9d0d41507","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/consistency/CRDT.js#0001:PNCounter","exportIndex":1,"name":"PNCounter","kind":"class","signature":"class PNCounter","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/consistency/CRDT.md","moduleTitle":"state/consistency/CRDT","source":"engine/state/consistency/CRDT.js","import":"/engine/state/consistency/CRDT.js","sourceHash":"739bcace58a6dbef5b1c2d98f1284a099eaae80f1ec4f8d159a33ab9d0d41507","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/consistency/CRDT.js#0002:GSet","exportIndex":2,"name":"GSet","kind":"class","signature":"class GSet","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/consistency/CRDT.md","moduleTitle":"state/consistency/CRDT","source":"engine/state/consistency/CRDT.js","import":"/engine/state/consistency/CRDT.js","sourceHash":"739bcace58a6dbef5b1c2d98f1284a099eaae80f1ec4f8d159a33ab9d0d41507","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/consistency/CRDT.js#0003:ORSet","exportIndex":3,"name":"ORSet","kind":"class","signature":"class ORSet","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/consistency/CRDT.md","moduleTitle":"state/consistency/CRDT","source":"engine/state/consistency/CRDT.js","import":"/engine/state/consistency/CRDT.js","sourceHash":"739bcace58a6dbef5b1c2d98f1284a099eaae80f1ec4f8d159a33ab9d0d41507","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/consistency/CRDT.js#0004:LWWRegister","exportIndex":4,"name":"LWWRegister","kind":"class","signature":"class LWWRegister","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/consistency/InvariantConfluence.md","moduleTitle":"state/consistency/InvariantConfluence","source":"engine/state/consistency/InvariantConfluence.js","import":"/engine/state/consistency/InvariantConfluence.js","sourceHash":"56caa87917ec33bb39a1e6414528615e7380ba337431d16acb2e2cae5e68ef2d","subsystem":"engine","recordType":"api-module","id":"module:engine/state/consistency/InvariantConfluence.js","title":"state/consistency/InvariantConfluence","summary":"state/consistency/InvariantConfluence.js — coordination-avoidance classifier (spec §4, §8 \"Consistency Plane\", rule 35/36).  Invariant confluence (Bailis et al.) is the precise test for whether a set of operations can run WITHOUT coordination: a set of operations is I-confluent with respect to an invariant I if, for any I-valid states reachable from a common ancestor, their merge is also I-valid. If so, replicas may diverge and merge freely (CALM); if not, those operations need a coordinating commit (Exclusive/serializable profile).  This is a BOUNDED, honest classifier (a finite-model property check, in the spirit of §19) — it explores states reachable within `depth` operations and reports a concrete counterexample when it finds one. A \"confluent\" result is evidence within the explored bound, not a closed-form proof.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/state/consistency/InvariantConfluence.md","moduleTitle":"state/consistency/InvariantConfluence","source":"engine/state/consistency/InvariantConfluence.js","import":"/engine/state/consistency/InvariantConfluence.js","sourceHash":"56caa87917ec33bb39a1e6414528615e7380ba337431d16acb2e2cae5e68ef2d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/consistency/InvariantConfluence.js#0000:classifyConfluence","exportIndex":0,"name":"classifyConfluence","kind":"function","signature":"classifyConfluence({ initial, merge, invariant, operations, depth = 2 })","summary":"Classify a set of operations for invariant confluence."}
{"schemaVersion":1,"modulePath":"engine/reference/state/consistency/OptimisticValidator.md","moduleTitle":"state/consistency/OptimisticValidator","source":"engine/state/consistency/OptimisticValidator.js","import":"/engine/state/consistency/OptimisticValidator.js","sourceHash":"0b8b7c13f58f08d1421721136354258f8e24a75b7b6e26b5b93a8dc4f90ecfea","subsystem":"engine","recordType":"api-module","id":"module:engine/state/consistency/OptimisticValidator.js","title":"state/consistency/OptimisticValidator","summary":"state/consistency/OptimisticValidator.js — optimistic read-set / predicate validation and write-skew detection (spec §6, §8, rule 22/24).  The \"Optimistic\" consistency profile reads versions, proposes a replacement, and commits only if every read remained current (MVCC validation). Checking only WRITTEN objects is insufficient: snapshot execution can admit write-skew anomalies involving predicates or separately-read objects. So validation must cover the full declared read-set AND predicates, and a serializability check must detect dangerous rw-antidependency structures between concurrent transactions.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/state/consistency/OptimisticValidator.md","moduleTitle":"state/consistency/OptimisticValidator","source":"engine/state/consistency/OptimisticValidator.js","import":"/engine/state/consistency/OptimisticValidator.js","sourceHash":"0b8b7c13f58f08d1421721136354258f8e24a75b7b6e26b5b93a8dc4f90ecfea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/consistency/OptimisticValidator.js#0000:OptimisticValidator","exportIndex":0,"name":"OptimisticValidator","kind":"class","signature":"class OptimisticValidator","summary":"Validate a transaction's declared read-set and predicates against the current state. Used standalone or alongside the CommitCoordinator's version check."}
{"schemaVersion":1,"modulePath":"engine/reference/state/consistency/OptimisticValidator.md","moduleTitle":"state/consistency/OptimisticValidator","source":"engine/state/consistency/OptimisticValidator.js","import":"/engine/state/consistency/OptimisticValidator.js","sourceHash":"0b8b7c13f58f08d1421721136354258f8e24a75b7b6e26b5b93a8dc4f90ecfea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/consistency/OptimisticValidator.js#0001:detectWriteSkew","exportIndex":1,"name":"detectWriteSkew","kind":"function","signature":"detectWriteSkew(a, b)","summary":"Detect a write-skew (non-serializable) hazard between two CONCURRENT transactions. Write-skew occurs when each transaction reads data the other writes — two rw-antidependency edges — so both can pass snapshot validation yet jointly violate an invariant coupling the items."}
{"schemaVersion":1,"modulePath":"engine/reference/state/consistency/Reservation.md","moduleTitle":"state/consistency/Reservation","source":"engine/state/consistency/Reservation.js","import":"/engine/state/consistency/Reservation.js","sourceHash":"9b66a4f50ddb2b6f074adce0f0aca882dbe8cbd8987743133f5ce24c223f7e42","subsystem":"engine","recordType":"api-module","id":"module:engine/state/consistency/Reservation.js","title":"state/consistency/Reservation","summary":"state/consistency/Reservation.js — reservations + bounded-counter escrow (spec §5 fragmentation fix, §10, rule 16).  Two coordination-avoidance tools that sit in front of the commit path:  • ReservationManager — a reservation is itself a USO (single-use, exclusive). Reserving a scarce resource creates a reservation output; it is later CONSUMED on commit or RELEASED/expired. A reservation can never be consumed twice (inherits the USO double-commit guarantee), and an expired reservation cannot mutate protected state (liveness: aborted reservation is eventually released).  • BoundedCounterEscrow — divides decrement rights for a scarce quantity among holders so each can withdraw from its local grant WITHOUT coordination, while preserving the lower-bound invariant (quantity never drops below the floor). Coordination is only needed when a holder exhausts its grant and must be rebalanced. This is the escrow / bounded-counter CRDT pattern.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/state/consistency/Reservation.md","moduleTitle":"state/consistency/Reservation","source":"engine/state/consistency/Reservation.js","import":"/engine/state/consistency/Reservation.js","sourceHash":"9b66a4f50ddb2b6f074adce0f0aca882dbe8cbd8987743133f5ce24c223f7e42","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/consistency/Reservation.js#0000:ReservationManager","exportIndex":0,"name":"ReservationManager","kind":"class","signature":"class ReservationManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/consistency/Reservation.md","moduleTitle":"state/consistency/Reservation","source":"engine/state/consistency/Reservation.js","import":"/engine/state/consistency/Reservation.js","sourceHash":"9b66a4f50ddb2b6f074adce0f0aca882dbe8cbd8987743133f5ce24c223f7e42","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/consistency/Reservation.js#0001:BoundedCounterEscrow","exportIndex":1,"name":"BoundedCounterEscrow","kind":"class","signature":"class BoundedCounterEscrow","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/consistency/SerializableQueue.md","moduleTitle":"state/consistency/SerializableQueue","source":"engine/state/consistency/SerializableQueue.js","import":"/engine/state/consistency/SerializableQueue.js","sourceHash":"06db562db27c08e15648e872616b750d1cc93ad99e6a9c7a1b9f3195e962e9d9","subsystem":"engine","recordType":"api-module","id":"module:engine/state/consistency/SerializableQueue.js","title":"state/consistency/SerializableQueue","summary":"state/consistency/SerializableQueue.js — Consistency-plane serializable commit queue (spec §3 plane 3, §6, §8 \"Serializable\", rule 24).  The \"Exclusive\"/serializable consistency profile needs commits to be applied in an order equivalent to some serial schedule. This queue admits transactions (each declaring a read-set and write-set), assigns a monotonic commit sequence, and detects when admitting a transaction would create a non-serializable schedule against already-queued/committed transactions (a read-write or write-write conflict on overlapping items). Conflicting transactions are not silently interleaved — the queue rejects them for retry, preserving serializability for the invariants that require it.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/state/consistency/SerializableQueue.md","moduleTitle":"state/consistency/SerializableQueue","source":"engine/state/consistency/SerializableQueue.js","import":"/engine/state/consistency/SerializableQueue.js","sourceHash":"06db562db27c08e15648e872616b750d1cc93ad99e6a9c7a1b9f3195e962e9d9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/consistency/SerializableQueue.js#0000:SerializableQueue","exportIndex":0,"name":"SerializableQueue","kind":"class","signature":"class SerializableQueue","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/entity/EntityRegistry.md","moduleTitle":"state/entity/EntityRegistry","source":"engine/state/entity/EntityRegistry.js","import":"/engine/state/entity/EntityRegistry.js","sourceHash":"a85f6576e260c1de3d6459c74f3c38467c31c37060f40da2a9b6b1c6a8f59447","subsystem":"engine","recordType":"api-module","id":"module:engine/state/entity/EntityRegistry.js","title":"state/entity/EntityRegistry","summary":"state/entity/EntityRegistry.js — versioned entity state (spec §4, rule 2).  A mutable logical object is represented as a chain of immutable versions. The logical entity id stays stable; each version's id is the content hash of its canonical bytes. \"Editing\" creates a new version pointing at its parent — the old version is never mutated. This is what optimistic concurrency reads against: a transaction's readSet declares the version it expected, and the commit fails if the entity has since advanced (write-skew protection).","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/state/entity/EntityRegistry.md","moduleTitle":"state/entity/EntityRegistry","source":"engine/state/entity/EntityRegistry.js","import":"/engine/state/entity/EntityRegistry.js","sourceHash":"a85f6576e260c1de3d6459c74f3c38467c31c37060f40da2a9b6b1c6a8f59447","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/entity/EntityRegistry.js#0000:EntityRegistry","exportIndex":0,"name":"EntityRegistry","kind":"class","signature":"class EntityRegistry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/entity/ProvenanceStore.md","moduleTitle":"state/entity/ProvenanceStore","source":"engine/state/entity/ProvenanceStore.js","import":"/engine/state/entity/ProvenanceStore.js","sourceHash":"2c0be6746eb31d96d5680d60c6ca9b597983dd6b67bcd11554af9867f497c748","subsystem":"engine","recordType":"api-module","id":"module:engine/state/entity/ProvenanceStore.js","title":"state/entity/ProvenanceStore","summary":"state/entity/ProvenanceStore.js — every observation, inference, prediction, and commit carries provenance (spec §14, rule 4). Vocabulary follows W3C PROV (entities, activities, agents, generation, derivation). Provenance lets the engine distinguish directly-observed vs inferred vs model-predicted vs stale vs untrusted data — crucial for the prompt-injection boundary (spec §15): retrieved/tool/model content is recorded as untrusted observation, never as authority.","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/state/entity/ProvenanceStore.md","moduleTitle":"state/entity/ProvenanceStore","source":"engine/state/entity/ProvenanceStore.js","import":"/engine/state/entity/ProvenanceStore.js","sourceHash":"2c0be6746eb31d96d5680d60c6ca9b597983dd6b67bcd11554af9867f497c748","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/entity/ProvenanceStore.js#0000:ProvenanceStore","exportIndex":0,"name":"ProvenanceStore","kind":"class","signature":"class ProvenanceStore","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/entity/ProvenanceStore.md","moduleTitle":"state/entity/ProvenanceStore","source":"engine/state/entity/ProvenanceStore.js","import":"/engine/state/entity/ProvenanceStore.js","sourceHash":"2c0be6746eb31d96d5680d60c6ca9b597983dd6b67bcd11554af9867f497c748","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/entity/ProvenanceStore.js#0001:makeProvenance","exportIndex":1,"name":"makeProvenance","kind":"function","signature":"makeProvenance(p = {})","summary":"Build a provenance record for a subject (a fact, version, or transaction)."}
{"schemaVersion":1,"modulePath":"engine/reference/state/entity/ProvenanceStore.md","moduleTitle":"state/entity/ProvenanceStore","source":"engine/state/entity/ProvenanceStore.js","import":"/engine/state/entity/ProvenanceStore.js","sourceHash":"2c0be6746eb31d96d5680d60c6ca9b597983dd6b67bcd11554af9867f497c748","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/entity/ProvenanceStore.js#0002:isUntrusted","exportIndex":2,"name":"isUntrusted","kind":"function","signature":"isUntrusted(prov)","summary":"True if a provenance record came from an untrusted external source."}
{"schemaVersion":1,"modulePath":"engine/reference/state/entity/ProvenanceStore.md","moduleTitle":"state/entity/ProvenanceStore","source":"engine/state/entity/ProvenanceStore.js","import":"/engine/state/entity/ProvenanceStore.js","sourceHash":"2c0be6746eb31d96d5680d60c6ca9b597983dd6b67bcd11554af9867f497c748","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/entity/ProvenanceStore.js#0003:CERTAINTY","exportIndex":3,"name":"CERTAINTY","kind":"constant","signature":"CERTAINTY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/entity/SchemaRegistry.md","moduleTitle":"state/entity/SchemaRegistry","source":"engine/state/entity/SchemaRegistry.js","import":"/engine/state/entity/SchemaRegistry.js","sourceHash":"9349745dde454a08f6e28ad30e088ff0727e7c7d3e1aa08dc66f42504bc463f4","subsystem":"engine","recordType":"api-module","id":"module:engine/state/entity/SchemaRegistry.js","title":"state/entity/SchemaRegistry","summary":"state/entity/SchemaRegistry.js — meaning from schemas, not numeric tricks (spec rule 3). Every schema/validator/policy is versioned (spec rule 5) so migrations can reference exact stamps. A schema declares a name, a version, and a validate(value) predicate; validation is structural (legality), never a claim of semantic truth — that comes from commit logic.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/state/entity/SchemaRegistry.md","moduleTitle":"state/entity/SchemaRegistry","source":"engine/state/entity/SchemaRegistry.js","import":"/engine/state/entity/SchemaRegistry.js","sourceHash":"9349745dde454a08f6e28ad30e088ff0727e7c7d3e1aa08dc66f42504bc463f4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/entity/SchemaRegistry.js#0000:SchemaRegistry","exportIndex":0,"name":"SchemaRegistry","kind":"class","signature":"class SchemaRegistry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/facts/Branch.md","moduleTitle":"state/facts/Branch","source":"engine/state/facts/Branch.js","import":"/engine/state/facts/Branch.js","sourceHash":"e630ae3d8cb1b8893bf6cc1b0281e24bacdacbbbe6bc1db3fc550a9a98cffd50","subsystem":"engine","recordType":"api-module","id":"module:engine/state/facts/Branch.js","title":"state/facts/Branch","summary":"state/facts/Branch.js — split non-commuting possibilities; merge equivalent; prune invalid.  Core law: \"If A + B = B + A, merge them. If A + B != B + A, branch them.\" An operation is a pure function (store) => void that adds facts / tombstones.","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/state/facts/Branch.md","moduleTitle":"state/facts/Branch","source":"engine/state/facts/Branch.js","import":"/engine/state/facts/Branch.js","sourceHash":"e630ae3d8cb1b8893bf6cc1b0281e24bacdacbbbe6bc1db3fc550a9a98cffd50","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/facts/Branch.js#0000:applySequence","exportIndex":0,"name":"applySequence","kind":"function","signature":"applySequence(store, ops)","summary":"Apply a sequence of operations to a (cloned) store. Returns the store."}
{"schemaVersion":1,"modulePath":"engine/reference/state/facts/Branch.md","moduleTitle":"state/facts/Branch","source":"engine/state/facts/Branch.js","import":"/engine/state/facts/Branch.js","sourceHash":"e630ae3d8cb1b8893bf6cc1b0281e24bacdacbbbe6bc1db3fc550a9a98cffd50","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/facts/Branch.js#0001:commutes","exportIndex":1,"name":"commutes","kind":"function","signature":"commutes(base, opA, opB)","summary":"Does applying opA then opB yield the same projection as opB then opA?"}
{"schemaVersion":1,"modulePath":"engine/reference/state/facts/Branch.md","moduleTitle":"state/facts/Branch","source":"engine/state/facts/Branch.js","import":"/engine/state/facts/Branch.js","sourceHash":"e630ae3d8cb1b8893bf6cc1b0281e24bacdacbbbe6bc1db3fc550a9a98cffd50","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/facts/Branch.js#0002:branchOrders","exportIndex":2,"name":"branchOrders","kind":"function","signature":"branchOrders(base, opA, opB)","summary":"Produce both order-branches [A→B, B→A] from a base store."}
{"schemaVersion":1,"modulePath":"engine/reference/state/facts/Branch.md","moduleTitle":"state/facts/Branch","source":"engine/state/facts/Branch.js","import":"/engine/state/facts/Branch.js","sourceHash":"e630ae3d8cb1b8893bf6cc1b0281e24bacdacbbbe6bc1db3fc550a9a98cffd50","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/facts/Branch.js#0003:mergeEquivalent","exportIndex":3,"name":"mergeEquivalent","kind":"function","signature":"mergeEquivalent(stores)","summary":"Collapse branches with identical projections (merge equivalent)."}
{"schemaVersion":1,"modulePath":"engine/reference/state/facts/Branch.md","moduleTitle":"state/facts/Branch","source":"engine/state/facts/Branch.js","import":"/engine/state/facts/Branch.js","sourceHash":"e630ae3d8cb1b8893bf6cc1b0281e24bacdacbbbe6bc1db3fc550a9a98cffd50","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/facts/Branch.js#0004:prune","exportIndex":4,"name":"prune","kind":"function","signature":"prune(stores, constraints)","summary":"Drop branches that fail commit-strength constraints (prune invalid)."}
{"schemaVersion":1,"modulePath":"engine/reference/state/facts/Causality.md","moduleTitle":"state/facts/Causality","source":"engine/state/facts/Causality.js","import":"/engine/state/facts/Causality.js","sourceHash":"d361f493c2972f8cf58d8484f7904113041f327d6682f40805214f42e15ad5d6","subsystem":"engine","recordType":"api-module","id":"module:engine/state/facts/Causality.js","title":"state/facts/Causality","summary":"state/facts/Causality.js — partial order ONLY when a dependency forces it.  Layer law: \"Only causality creates before/after\". Facts with no dependency link stay unordered; we never invent sequence. Independent nodes get a deterministic tie-break (canonical sort) purely for reproducibility, not as claimed truth.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/state/facts/Causality.md","moduleTitle":"state/facts/Causality","source":"engine/state/facts/Causality.js","import":"/engine/state/facts/Causality.js","sourceHash":"d361f493c2972f8cf58d8484f7904113041f327d6682f40805214f42e15ad5d6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/facts/Causality.js#0000:link","exportIndex":0,"name":"link","kind":"function","signature":"link(cause, effect)","summary":"A causal link: effect depends on cause (cause must precede effect)."}
{"schemaVersion":1,"modulePath":"engine/reference/state/facts/Causality.md","moduleTitle":"state/facts/Causality","source":"engine/state/facts/Causality.js","import":"/engine/state/facts/Causality.js","sourceHash":"d361f493c2972f8cf58d8484f7904113041f327d6682f40805214f42e15ad5d6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/facts/Causality.js#0001:toposort","exportIndex":1,"name":"toposort","kind":"function","signature":"toposort(nodes, links = [])","summary":"Partial-order sort. Nodes only ordered where links force it; otherwise deterministic by string. Throws on a causal cycle (an impossible order)."}
{"schemaVersion":1,"modulePath":"engine/reference/state/facts/Causality.md","moduleTitle":"state/facts/Causality","source":"engine/state/facts/Causality.js","import":"/engine/state/facts/Causality.js","sourceHash":"d361f493c2972f8cf58d8484f7904113041f327d6682f40805214f42e15ad5d6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/facts/Causality.js#0002:dependsOn","exportIndex":2,"name":"dependsOn","kind":"function","signature":"dependsOn(effect, cause, links = [])","summary":"Transitive dependency test: does `effect` (transitively) depend on `cause`?"}
{"schemaVersion":1,"modulePath":"engine/reference/state/facts/Constraints.md","moduleTitle":"state/facts/Constraints","source":"engine/state/facts/Constraints.js","import":"/engine/state/facts/Constraints.js","sourceHash":"ac5330d776308ed80833cad4b03f1e21e7bfd3cf3d58bd00c88ea53478169646","subsystem":"engine","recordType":"api-module","id":"module:engine/state/facts/Constraints.js","title":"state/facts/Constraints","summary":"state/facts/Constraints.js — the laws of the system.  Layer law: runtime uses simple validators; commit uses stronger validators (a superset). A constraint never repairs — it accepts or rejects. When a commit constraint fails, the caller branches / quarantines / requests authority (see CommitGate, M5) rather than silently fixing.","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/state/facts/Constraints.md","moduleTitle":"state/facts/Constraints","source":"engine/state/facts/Constraints.js","import":"/engine/state/facts/Constraints.js","sourceHash":"ac5330d776308ed80833cad4b03f1e21e7bfd3cf3d58bd00c88ea53478169646","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/facts/Constraints.js#0000:constraint","exportIndex":0,"name":"constraint","kind":"function","signature":"constraint(id, test, opts = {})","summary":"Define a constraint."}
{"schemaVersion":1,"modulePath":"engine/reference/state/facts/Constraints.md","moduleTitle":"state/facts/Constraints","source":"engine/state/facts/Constraints.js","import":"/engine/state/facts/Constraints.js","sourceHash":"ac5330d776308ed80833cad4b03f1e21e7bfd3cf3d58bd00c88ea53478169646","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/facts/Constraints.js#0001:validateFacts","exportIndex":1,"name":"validateFacts","kind":"function","signature":"validateFacts(liveFacts, constraints, { phase = SCOPE_RUNTIME } = {})","summary":"Validate live facts. phase 'runtime' runs only runtime constraints; phase 'commit' runs ALL (runtime + commit) — commit is strictly stronger."}
{"schemaVersion":1,"modulePath":"engine/reference/state/facts/Constraints.md","moduleTitle":"state/facts/Constraints","source":"engine/state/facts/Constraints.js","import":"/engine/state/facts/Constraints.js","sourceHash":"ac5330d776308ed80833cad4b03f1e21e7bfd3cf3d58bd00c88ea53478169646","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/facts/Constraints.js#0002:atMostOne","exportIndex":2,"name":"atMostOne","kind":"function","signature":"atMostOne(id, pattern, opts = {})","summary":"No more than one live fact matching a regex (single source of truth)."}
{"schemaVersion":1,"modulePath":"engine/reference/state/facts/Constraints.md","moduleTitle":"state/facts/Constraints","source":"engine/state/facts/Constraints.js","import":"/engine/state/facts/Constraints.js","sourceHash":"ac5330d776308ed80833cad4b03f1e21e7bfd3cf3d58bd00c88ea53478169646","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/facts/Constraints.js#0003:mutuallyExclusive","exportIndex":3,"name":"mutuallyExclusive","kind":"function","signature":"mutuallyExclusive(id, a, b, opts = {})","summary":"Two facts must never be live at once (mutual exclusion)."}
{"schemaVersion":1,"modulePath":"engine/reference/state/facts/Constraints.md","moduleTitle":"state/facts/Constraints","source":"engine/state/facts/Constraints.js","import":"/engine/state/facts/Constraints.js","sourceHash":"ac5330d776308ed80833cad4b03f1e21e7bfd3cf3d58bd00c88ea53478169646","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/facts/Constraints.js#0004:SCOPE_RUNTIME","exportIndex":4,"name":"SCOPE_RUNTIME","kind":"constant","signature":"SCOPE_RUNTIME","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/facts/Constraints.md","moduleTitle":"state/facts/Constraints","source":"engine/state/facts/Constraints.js","import":"/engine/state/facts/Constraints.js","sourceHash":"ac5330d776308ed80833cad4b03f1e21e7bfd3cf3d58bd00c88ea53478169646","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/facts/Constraints.js#0005:SCOPE_COMMIT","exportIndex":5,"name":"SCOPE_COMMIT","kind":"constant","signature":"SCOPE_COMMIT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/facts/Fact.md","moduleTitle":"state/facts/Fact","source":"engine/state/facts/Fact.js","import":"/engine/state/facts/Fact.js","sourceHash":"2938ba8a8e3ca0d1d333a2c9672cc857afe0e0cbe6d17ab26618a43313fb1ac4","subsystem":"engine","recordType":"api-module","id":"module:engine/state/facts/Fact.js","title":"state/facts/Fact","summary":"state/facts/Fact.js — canonical facts + tombstones.  Layer law: facts are MONOTONIC. We prefer adding facts, never deleting them. \"Deletion\" is a tombstone fact `revoked(<fact>)`; projection later decides what is currently valid. A fact is just a canonical string predicate so that {A,B} and {B,A} hash identically (see util/hashing.canonicalSetHash).","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/state/facts/Fact.md","moduleTitle":"state/facts/Fact","source":"engine/state/facts/Fact.js","import":"/engine/state/facts/Fact.js","sourceHash":"2938ba8a8e3ca0d1d333a2c9672cc857afe0e0cbe6d17ab26618a43313fb1ac4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/facts/Fact.js#0000:fact","exportIndex":0,"name":"fact","kind":"function","signature":"fact(predicate, ...args)","summary":"Build a canonical fact string: fact('hasKey','player','red') → \"hasKey(player,red)\"."}
{"schemaVersion":1,"modulePath":"engine/reference/state/facts/Fact.md","moduleTitle":"state/facts/Fact","source":"engine/state/facts/Fact.js","import":"/engine/state/facts/Fact.js","sourceHash":"2938ba8a8e3ca0d1d333a2c9672cc857afe0e0cbe6d17ab26618a43313fb1ac4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/facts/Fact.js#0001:revoke","exportIndex":1,"name":"revoke","kind":"function","signature":"revoke(f)","summary":"Wrap a fact as a tombstone (the monotonic stand-in for deletion)."}
{"schemaVersion":1,"modulePath":"engine/reference/state/facts/Fact.md","moduleTitle":"state/facts/Fact","source":"engine/state/facts/Fact.js","import":"/engine/state/facts/Fact.js","sourceHash":"2938ba8a8e3ca0d1d333a2c9672cc857afe0e0cbe6d17ab26618a43313fb1ac4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/facts/Fact.js#0002:isTombstone","exportIndex":2,"name":"isTombstone","kind":"function","signature":"isTombstone(f)","summary":"Is this fact a tombstone?"}
{"schemaVersion":1,"modulePath":"engine/reference/state/facts/Fact.md","moduleTitle":"state/facts/Fact","source":"engine/state/facts/Fact.js","import":"/engine/state/facts/Fact.js","sourceHash":"2938ba8a8e3ca0d1d333a2c9672cc857afe0e0cbe6d17ab26618a43313fb1ac4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/facts/Fact.js#0003:tombstoneTarget","exportIndex":3,"name":"tombstoneTarget","kind":"function","signature":"tombstoneTarget(f)","summary":"The fact a tombstone revokes, or null."}
{"schemaVersion":1,"modulePath":"engine/reference/state/facts/FactStore.md","moduleTitle":"state/facts/FactStore","source":"engine/state/facts/FactStore.js","import":"/engine/state/facts/FactStore.js","sourceHash":"500e73d5772dbcb00e74d615fd9f9a376ca2d0cdc85bcdebeaf372db00422f99","subsystem":"engine","recordType":"api-module","id":"module:engine/state/facts/FactStore.js","title":"state/facts/FactStore","summary":"state/facts/FactStore.js — the unordered, monotonic fact set.  No sequence is stored. `id()` is the order-independent hash of ALL facts (history identity); `liveId()` is the hash of the currently-valid projection (tombstones applied). Merge is a set union — naturally commutative and idempotent (a CRDT-style anti-entropy merge), so two peers that saw events in different orders converge to the same id.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/state/facts/FactStore.md","moduleTitle":"state/facts/FactStore","source":"engine/state/facts/FactStore.js","import":"/engine/state/facts/FactStore.js","sourceHash":"500e73d5772dbcb00e74d615fd9f9a376ca2d0cdc85bcdebeaf372db00422f99","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/facts/FactStore.js#0000:FactStore","exportIndex":0,"name":"FactStore","kind":"class","signature":"class FactStore","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-module","id":"module:engine/state/index.js","title":"state/index","summary":"state/index.js — public barrel for the Causal State Engine (CSE), formerly the Universal Resonance State Engine (URC).  Order-on-demand: unordered facts encoded through a resonance codebook, organized spatially, compared by wave-like similarity, repaired through correction codes, branched when order matters, committed only when reality must choose one truth, and projected by observers into experienced sequence.  The CSE upgrade (see plans/causal-state-engine-upgrade-59657d.md) layers a partially-ordered, capability-secured, transactionally-committed world-state system on top of the URC core. The codebook/resonance/spatial layers are kept as the optional indexing/perception extension (spec §16) — never in the trusted authority/correctness path.  Build status: URC core: [x] M0 [x] M1 codebook [x] M2 spatial [x] M3 resonance [x] M4 facts [x] M5 commit [x] M6 observer CSE:      [x] P1 formal core (USO, tx envelope, idempotency, causal, 14-step commit, receipts) [x] P2 single-authority (entity/version, schema, provenance, capabilities, identity, event log, state roots, checkpoints) [x] P3 reliability (outbox, idempotent inbox, sagas+compensation, reconciler, reservations + bounded-counter escrow) [x] P4 concurrency (CRDTs, invariant-confluence classifier, optimistic/write-skew validator, dotted version vectors, HLC) [x] P5 world model (belief vs canonical, object graph, affordances, tool-effect/discrepancy, prediction sandbox, untrusted boundary) [x] P6 distributed (shard router, replicated log, Raft adapter, cross-shard 2PC + recovery, quorum checkpoints) [x] P7 sim/resonance (independent sim clocks, deterministic world dynamics, approximate-retrieve→exact-verify perception index) [x] P8 completeness (proposal pool, serializable queue, policy engine+risk gates, encryption/retention crypto-erase, GC, causal dynamics, TLA+ core stub) [x] P9 hardening (WebCrypto AES-GCM retention, Byzantine adapter, executable bounded model checker + TLC config) CSE COMPLETE: all 12 planes implemented + verified in verify.html.","exportCount":176}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0000:AffordanceRegistry","exportIndex":0,"name":"AffordanceRegistry","kind":"re-export","signature":"AffordanceRegistry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0001:BeliefStore","exportIndex":1,"name":"BeliefStore","kind":"re-export","signature":"BeliefStore","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0002:BoundedCounterEscrow","exportIndex":2,"name":"BoundedCounterEscrow","kind":"re-export","signature":"BoundedCounterEscrow","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0003:ByzantineAdapter","exportIndex":3,"name":"ByzantineAdapter","kind":"re-export","signature":"ByzantineAdapter","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0004:CERTAINTY","exportIndex":4,"name":"CERTAINTY","kind":"re-export","signature":"CERTAINTY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0005:CORRECTION_ACTIONS","exportIndex":5,"name":"CORRECTION_ACTIONS","kind":"re-export","signature":"CORRECTION_ACTIONS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0006:CORRECTION_TIERS","exportIndex":6,"name":"CORRECTION_TIERS","kind":"re-export","signature":"CORRECTION_TIERS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0007:CapabilityRegistry","exportIndex":7,"name":"CapabilityRegistry","kind":"re-export","signature":"CapabilityRegistry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0008:CausalDynamics","exportIndex":8,"name":"CausalDynamics","kind":"re-export","signature":"CausalDynamics","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0009:CausalGraph","exportIndex":9,"name":"CausalGraph","kind":"re-export","signature":"CausalGraph","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0010:CheckpointQuorum","exportIndex":10,"name":"CheckpointQuorum","kind":"re-export","signature":"CheckpointQuorum","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0011:CrossShardCoordinator","exportIndex":11,"name":"CrossShardCoordinator","kind":"re-export","signature":"CrossShardCoordinator","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0012:DECISION","exportIndex":12,"name":"DECISION","kind":"re-export","signature":"DECISION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0013:DOMAIN_SEPARATOR","exportIndex":13,"name":"DOMAIN_SEPARATOR","kind":"re-export","signature":"DOMAIN_SEPARATOR","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0014:DVVSet","exportIndex":14,"name":"DVVSet","kind":"re-export","signature":"DVVSet","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0015:EFFECT_STATUS","exportIndex":15,"name":"EFFECT_STATUS","kind":"re-export","signature":"EFFECT_STATUS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0016:EVENTLOG_GENESIS","exportIndex":16,"name":"EVENTLOG_GENESIS","kind":"re-export","signature":"EVENTLOG_GENESIS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0017:EntityRegistry","exportIndex":17,"name":"EntityRegistry","kind":"re-export","signature":"EntityRegistry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0018:EventLog","exportIndex":18,"name":"EventLog","kind":"re-export","signature":"EventLog","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0019:FactStore","exportIndex":19,"name":"FactStore","kind":"re-export","signature":"FactStore","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0020:FencingDomain","exportIndex":20,"name":"FencingDomain","kind":"re-export","signature":"FencingDomain","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0021:GCounter","exportIndex":21,"name":"GCounter","kind":"re-export","signature":"GCounter","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0022:GSet","exportIndex":22,"name":"GSet","kind":"re-export","signature":"GSet","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0023:GarbageCollector","exportIndex":23,"name":"GarbageCollector","kind":"re-export","signature":"GarbageCollector","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0024:HLC","exportIndex":24,"name":"HLC","kind":"re-export","signature":"HLC","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0025:IdempotencyRegistry","exportIndex":25,"name":"IdempotencyRegistry","kind":"re-export","signature":"IdempotencyRegistry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0026:Inbox","exportIndex":26,"name":"Inbox","kind":"re-export","signature":"Inbox","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0027:LWWRegister","exportIndex":27,"name":"LWWRegister","kind":"re-export","signature":"LWWRegister","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0028:ORDER","exportIndex":28,"name":"ORDER","kind":"re-export","signature":"ORDER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0029:ORSet","exportIndex":29,"name":"ORSet","kind":"re-export","signature":"ORSet","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0030:ObjectGraph","exportIndex":30,"name":"ObjectGraph","kind":"re-export","signature":"ObjectGraph","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0031:OptimisticValidator","exportIndex":31,"name":"OptimisticValidator","kind":"re-export","signature":"OptimisticValidator","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0032:Outbox","exportIndex":32,"name":"Outbox","kind":"re-export","signature":"Outbox","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0033:PATTERN_BITS","exportIndex":33,"name":"PATTERN_BITS","kind":"re-export","signature":"PATTERN_BITS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0034:PATTERN_COUNT","exportIndex":34,"name":"PATTERN_COUNT","kind":"re-export","signature":"PATTERN_COUNT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0035:PATTERN_H","exportIndex":35,"name":"PATTERN_H","kind":"re-export","signature":"PATTERN_H","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0036:PATTERN_W","exportIndex":36,"name":"PATTERN_W","kind":"re-export","signature":"PATTERN_W","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0037:PNCounter","exportIndex":37,"name":"PNCounter","kind":"re-export","signature":"PNCounter","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0038:PRIME_TABLE","exportIndex":38,"name":"PRIME_TABLE","kind":"re-export","signature":"PRIME_TABLE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0039:PROPOSAL_STATUS","exportIndex":39,"name":"PROPOSAL_STATUS","kind":"re-export","signature":"PROPOSAL_STATUS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0040:PatternCodebook","exportIndex":40,"name":"PatternCodebook","kind":"re-export","signature":"PatternCodebook","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0041:PolicyEngine","exportIndex":41,"name":"PolicyEngine","kind":"re-export","signature":"PolicyEngine","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0042:PredictionSandbox","exportIndex":42,"name":"PredictionSandbox","kind":"re-export","signature":"PredictionSandbox","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0043:ProposalPool","exportIndex":43,"name":"ProposalPool","kind":"re-export","signature":"ProposalPool","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0044:ProvenanceStore","exportIndex":44,"name":"ProvenanceStore","kind":"re-export","signature":"ProvenanceStore","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0045:RECONCILE_RESULT","exportIndex":45,"name":"RECONCILE_RESULT","kind":"re-export","signature":"RECONCILE_RESULT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0046:RELATION","exportIndex":46,"name":"RELATION","kind":"re-export","signature":"RELATION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0047:RISK","exportIndex":47,"name":"RISK","kind":"re-export","signature":"RISK","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0048:RISK_LEVEL","exportIndex":48,"name":"RISK_LEVEL","kind":"re-export","signature":"RISK_LEVEL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0049:RaftAdapter","exportIndex":49,"name":"RaftAdapter","kind":"re-export","signature":"RaftAdapter","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0050:Reconciler","exportIndex":50,"name":"Reconciler","kind":"re-export","signature":"Reconciler","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0051:ReplicatedLog","exportIndex":51,"name":"ReplicatedLog","kind":"re-export","signature":"ReplicatedLog","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0052:ReservationManager","exportIndex":52,"name":"ReservationManager","kind":"re-export","signature":"ReservationManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0053:ResonanceIndex","exportIndex":53,"name":"ResonanceIndex","kind":"re-export","signature":"ResonanceIndex","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0054:RetentionManager","exportIndex":54,"name":"RetentionManager","kind":"re-export","signature":"RetentionManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0055:SAGA_STATUS","exportIndex":55,"name":"SAGA_STATUS","kind":"re-export","signature":"SAGA_STATUS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0056:SCOPE_COMMIT","exportIndex":56,"name":"SCOPE_COMMIT","kind":"re-export","signature":"SCOPE_COMMIT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0057:SCOPE_RUNTIME","exportIndex":57,"name":"SCOPE_RUNTIME","kind":"re-export","signature":"SCOPE_RUNTIME","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0058:Saga","exportIndex":58,"name":"Saga","kind":"re-export","signature":"Saga","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0059:SchemaRegistry","exportIndex":59,"name":"SchemaRegistry","kind":"re-export","signature":"SchemaRegistry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0060:SecureRetentionManager","exportIndex":60,"name":"SecureRetentionManager","kind":"re-export","signature":"SecureRetentionManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0061:SerializableQueue","exportIndex":61,"name":"SerializableQueue","kind":"re-export","signature":"SerializableQueue","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0062:ShardRouter","exportIndex":62,"name":"ShardRouter","kind":"re-export","signature":"ShardRouter","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0063:SimulationClock","exportIndex":63,"name":"SimulationClock","kind":"re-export","signature":"SimulationClock","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0064:SimulationClockSet","exportIndex":64,"name":"SimulationClockSet","kind":"re-export","signature":"SimulationClockSet","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0065:TIME_MODES","exportIndex":65,"name":"TIME_MODES","kind":"re-export","signature":"TIME_MODES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0066:TX_SCHEMA_VERSION","exportIndex":66,"name":"TX_SCHEMA_VERSION","kind":"re-export","signature":"TX_SCHEMA_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0067:ToolEffectModel","exportIndex":67,"name":"ToolEffectModel","kind":"re-export","signature":"ToolEffectModel","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0068:USORegistry","exportIndex":68,"name":"USORegistry","kind":"re-export","signature":"USORegistry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0069:USO_KIND","exportIndex":69,"name":"USO_KIND","kind":"re-export","signature":"USO_KIND","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0070:UntrustedBoundary","exportIndex":70,"name":"UntrustedBoundary","kind":"re-export","signature":"UntrustedBoundary","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0071:VersionVector","exportIndex":71,"name":"VersionVector","kind":"re-export","signature":"VersionVector","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0072:WORLD","exportIndex":72,"name":"WORLD","kind":"re-export","signature":"WORLD","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0073:WorldDynamics","exportIndex":73,"name":"WorldDynamics","kind":"re-export","signature":"WorldDynamics","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0074:aeadOpen","exportIndex":74,"name":"aeadOpen","kind":"re-export","signature":"aeadOpen","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0075:aeadSeal","exportIndex":75,"name":"aeadSeal","kind":"re-export","signature":"aeadSeal","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0076:applySequence","exportIndex":76,"name":"applySequence","kind":"re-export","signature":"applySequence","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0077:atMostOne","exportIndex":77,"name":"atMostOne","kind":"re-export","signature":"atMostOne","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0078:attenuate","exportIndex":78,"name":"attenuate","kind":"re-export","signature":"attenuate","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0079:authorizes","exportIndex":79,"name":"authorizes","kind":"re-export","signature":"authorizes","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0080:branchOrders","exportIndex":80,"name":"branchOrders","kind":"re-export","signature":"branchOrders","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0081:canAuthorize","exportIndex":81,"name":"canAuthorize","kind":"re-export","signature":"canAuthorize","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0082:canonicalBytes","exportIndex":82,"name":"canonicalBytes","kind":"re-export","signature":"canonicalBytes","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0083:canonicalId","exportIndex":83,"name":"canonicalId","kind":"re-export","signature":"canonicalId","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0084:canonicalSetHash","exportIndex":84,"name":"canonicalSetHash","kind":"re-export","signature":"canonicalSetHash","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0085:canonicalize","exportIndex":85,"name":"canonicalize","kind":"re-export","signature":"canonicalize","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0086:chooseBranch","exportIndex":86,"name":"chooseBranch","kind":"re-export","signature":"chooseBranch","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0087:chunkCoords2D","exportIndex":87,"name":"chunkCoords2D","kind":"re-export","signature":"chunkCoords2D","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0088:chunkCoords3D","exportIndex":88,"name":"chunkCoords3D","kind":"re-export","signature":"chunkCoords3D","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0089:chunkId2D","exportIndex":89,"name":"chunkId2D","kind":"re-export","signature":"chunkId2D","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0090:chunkId3D","exportIndex":90,"name":"chunkId3D","kind":"re-export","signature":"chunkId3D","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0091:classifyConfluence","exportIndex":91,"name":"classifyConfluence","kind":"re-export","signature":"classifyConfluence","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0092:commutes","exportIndex":92,"name":"commutes","kind":"re-export","signature":"commutes","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0093:compareHLC","exportIndex":93,"name":"compareHLC","kind":"re-export","signature":"compareHLC","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0094:computeStateRoot","exportIndex":94,"name":"computeStateRoot","kind":"re-export","signature":"computeStateRoot","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0095:constraint","exportIndex":95,"name":"constraint","kind":"re-export","signature":"constraint","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0096:correct","exportIndex":96,"name":"correct","kind":"re-export","signature":"correct","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0097:cosineSimilarity","exportIndex":97,"name":"cosineSimilarity","kind":"re-export","signature":"cosineSimilarity","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0098:createCommitCoordinator","exportIndex":98,"name":"createCommitCoordinator","kind":"re-export","signature":"createCommitCoordinator","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0099:createCommitGate","exportIndex":99,"name":"createCommitGate","kind":"re-export","signature":"createCommitGate","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0100:createSigner","exportIndex":100,"name":"createSigner","kind":"re-export","signature":"createSigner","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0101:createTimeSource","exportIndex":101,"name":"createTimeSource","kind":"re-export","signature":"createTimeSource","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0102:dct1D","exportIndex":102,"name":"dct1D","kind":"re-export","signature":"dct1D","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0103:dct2D","exportIndex":103,"name":"dct2D","kind":"re-export","signature":"dct2D","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0104:dependsOn","exportIndex":104,"name":"dependsOn","kind":"re-export","signature":"dependsOn","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0105:detectWriteSkew","exportIndex":105,"name":"detectWriteSkew","kind":"re-export","signature":"detectWriteSkew","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0106:exploreCommitMachine","exportIndex":106,"name":"exploreCommitMachine","kind":"re-export","signature":"exploreCommitMachine","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0107:exportKeyRaw","exportIndex":107,"name":"exportKeyRaw","kind":"re-export","signature":"exportKeyRaw","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0108:fact","exportIndex":108,"name":"fact","kind":"re-export","signature":"fact","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0109:fromHilbertId2D","exportIndex":109,"name":"fromHilbertId2D","kind":"re-export","signature":"fromHilbertId2D","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0110:fromSpatialId2D","exportIndex":110,"name":"fromSpatialId2D","kind":"re-export","signature":"fromSpatialId2D","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0111:fromSpatialId3D","exportIndex":111,"name":"fromSpatialId3D","kind":"re-export","signature":"fromSpatialId3D","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0112:generateAesKey","exportIndex":112,"name":"generateAesKey","kind":"re-export","signature":"generateAesKey","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0113:hammingDistance","exportIndex":113,"name":"hammingDistance","kind":"re-export","signature":"hammingDistance","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0114:hashFactString","exportIndex":114,"name":"hashFactString","kind":"re-export","signature":"hashFactString","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0115:hashIdEquals","exportIndex":115,"name":"hashIdEquals","kind":"re-export","signature":"hashIdEquals","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0116:hashIdFast","exportIndex":116,"name":"hashIdFast","kind":"re-export","signature":"hashIdFast","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0117:hashIdSecure","exportIndex":117,"name":"hashIdSecure","kind":"re-export","signature":"hashIdSecure","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0118:hashU32Sequence","exportIndex":118,"name":"hashU32Sequence","kind":"re-export","signature":"hashU32Sequence","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0119:hexId","exportIndex":119,"name":"hexId","kind":"re-export","signature":"hexId","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0120:hilbertId2D","exportIndex":120,"name":"hilbertId2D","kind":"re-export","signature":"hilbertId2D","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0121:idct1D","exportIndex":121,"name":"idct1D","kind":"re-export","signature":"idct1D","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0122:idct2D","exportIndex":122,"name":"idct2D","kind":"re-export","signature":"idct2D","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0123:importAesKey","exportIndex":123,"name":"importAesKey","kind":"re-export","signature":"importAesKey","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0124:ingestUntrusted","exportIndex":124,"name":"ingestUntrusted","kind":"re-export","signature":"ingestUntrusted","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0125:isTombstone","exportIndex":125,"name":"isTombstone","kind":"re-export","signature":"isTombstone","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0126:isUSO","exportIndex":126,"name":"isUSO","kind":"re-export","signature":"isUSO","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0127:isUntrusted","exportIndex":127,"name":"isUntrusted","kind":"re-export","signature":"isUntrusted","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0128:l2Distance","exportIndex":128,"name":"l2Distance","kind":"re-export","signature":"l2Distance","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0129:link","exportIndex":129,"name":"link","kind":"re-export","signature":"link","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0130:makeAffordance","exportIndex":130,"name":"makeAffordance","kind":"re-export","signature":"makeAffordance","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0131:makeCapability","exportIndex":131,"name":"makeCapability","kind":"re-export","signature":"makeCapability","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0132:makeCheckpoint","exportIndex":132,"name":"makeCheckpoint","kind":"re-export","signature":"makeCheckpoint","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0133:makeCodeEntry","exportIndex":133,"name":"makeCodeEntry","kind":"re-export","signature":"makeCodeEntry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0134:makeEffectIntent","exportIndex":134,"name":"makeEffectIntent","kind":"re-export","signature":"makeEffectIntent","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0135:makeProvenance","exportIndex":135,"name":"makeProvenance","kind":"re-export","signature":"makeProvenance","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0136:makeReceipt","exportIndex":136,"name":"makeReceipt","kind":"re-export","signature":"makeReceipt","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0137:makeTransaction","exportIndex":137,"name":"makeTransaction","kind":"re-export","signature":"makeTransaction","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0138:makeUSO","exportIndex":138,"name":"makeUSO","kind":"re-export","signature":"makeUSO","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0139:makeWitness","exportIndex":139,"name":"makeWitness","kind":"re-export","signature":"makeWitness","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0140:mergeEquivalent","exportIndex":140,"name":"mergeEquivalent","kind":"re-export","signature":"mergeEquivalent","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0141:mutuallyExclusive","exportIndex":141,"name":"mutuallyExclusive","kind":"re-export","signature":"mutuallyExclusive","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0142:nearestAttractor","exportIndex":142,"name":"nearestAttractor","kind":"re-export","signature":"nearestAttractor","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0143:neighbors2D","exportIndex":143,"name":"neighbors2D","kind":"re-export","signature":"neighbors2D","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0144:objectVersionOutput","exportIndex":144,"name":"objectVersionOutput","kind":"re-export","signature":"objectVersionOutput","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0145:packPattern","exportIndex":145,"name":"packPattern","kind":"re-export","signature":"packPattern","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0146:parseHashId","exportIndex":146,"name":"parseHashId","kind":"re-export","signature":"parseHashId","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0147:pattern3x3ToVector","exportIndex":147,"name":"pattern3x3ToVector","kind":"re-export","signature":"pattern3x3ToVector","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0148:patternHashId","exportIndex":148,"name":"patternHashId","kind":"re-export","signature":"patternHashId","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0149:policyRule","exportIndex":149,"name":"policyRule","kind":"re-export","signature":"policyRule","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0150:primeAt","exportIndex":150,"name":"primeAt","kind":"re-export","signature":"primeAt","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0151:projectSequence","exportIndex":151,"name":"projectSequence","kind":"re-export","signature":"projectSequence","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0152:prune","exportIndex":152,"name":"prune","kind":"re-export","signature":"prune","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0153:quantize","exportIndex":153,"name":"quantize","kind":"re-export","signature":"quantize","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0154:resonanceDCT","exportIndex":154,"name":"resonanceDCT","kind":"re-export","signature":"resonanceDCT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0155:resonanceWHT","exportIndex":155,"name":"resonanceWHT","kind":"re-export","signature":"resonanceWHT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0156:revoke","exportIndex":156,"name":"revoke","kind":"re-export","signature":"revoke","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0157:rootFromStores","exportIndex":157,"name":"rootFromStores","kind":"re-export","signature":"rootFromStores","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0158:sagaStep","exportIndex":158,"name":"sagaStep","kind":"re-export","signature":"sagaStep","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0159:sealTransaction","exportIndex":159,"name":"sealTransaction","kind":"re-export","signature":"sealTransaction","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0160:sealTransactionFast","exportIndex":160,"name":"sealTransactionFast","kind":"re-export","signature":"sealTransactionFast","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0161:secureCryptoAvailable","exportIndex":161,"name":"secureCryptoAvailable","kind":"re-export","signature":"secureCryptoAvailable","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0162:sigContains","exportIndex":162,"name":"sigContains","kind":"re-export","signature":"sigContains","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0163:sigEquals","exportIndex":163,"name":"sigEquals","kind":"re-export","signature":"sigEquals","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0164:spatialId2D","exportIndex":164,"name":"spatialId2D","kind":"re-export","signature":"spatialId2D","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0165:spatialId3D","exportIndex":165,"name":"spatialId3D","kind":"re-export","signature":"spatialId3D","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0166:symbolicSig","exportIndex":166,"name":"symbolicSig","kind":"re-export","signature":"symbolicSig","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0167:symmetries","exportIndex":167,"name":"symmetries","kind":"re-export","signature":"symmetries","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0168:tombstoneTarget","exportIndex":168,"name":"tombstoneTarget","kind":"re-export","signature":"tombstoneTarget","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0169:toposort","exportIndex":169,"name":"toposort","kind":"re-export","signature":"toposort","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0170:transactionBody","exportIndex":170,"name":"transactionBody","kind":"re-export","signature":"transactionBody","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0171:unpackPattern","exportIndex":171,"name":"unpackPattern","kind":"re-export","signature":"unpackPattern","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0172:validateFacts","exportIndex":172,"name":"validateFacts","kind":"re-export","signature":"validateFacts","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0173:verifyCheckpoint","exportIndex":173,"name":"verifyCheckpoint","kind":"re-export","signature":"verifyCheckpoint","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0174:verifyWithKey","exportIndex":174,"name":"verifyWithKey","kind":"re-export","signature":"verifyWithKey","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/index.md","moduleTitle":"state/index","source":"engine/state/index.js","import":"/engine/state/index.js","sourceHash":"1bd5b1473a1bc18cd7bd10721b2cf5bf307435651d6f2242bf8cd4a326ea4ca9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/index.js#0175:walshHadamard","exportIndex":175,"name":"walshHadamard","kind":"re-export","signature":"walshHadamard","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/integrity/Checkpoint.md","moduleTitle":"state/integrity/Checkpoint","source":"engine/state/integrity/Checkpoint.js","import":"/engine/state/integrity/Checkpoint.js","sourceHash":"46b5a0c1dc9e58cb7b25eeb592bb3cbd9cbfba0aad688589a7e6ab003af756ff","subsystem":"engine","recordType":"api-module","id":"module:engine/state/integrity/Checkpoint.js","title":"state/integrity/Checkpoint","summary":"state/integrity/Checkpoint.js — compaction + fast restoration (spec §13).  A checkpoint summarizes history without pretending it never existed: it links to the previous checkpoint and the event range it covers, and pins the canonical state root, unspent-output root, and policy/schema/validator versions. A restored system must verify its state root before accepting new commits (spec rule 64). Checkpoints carry an optional authority signature.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/state/integrity/Checkpoint.md","moduleTitle":"state/integrity/Checkpoint","source":"engine/state/integrity/Checkpoint.js","import":"/engine/state/integrity/Checkpoint.js","sourceHash":"46b5a0c1dc9e58cb7b25eeb592bb3cbd9cbfba0aad688589a7e6ab003af756ff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/integrity/Checkpoint.js#0000:makeCheckpoint","exportIndex":0,"name":"makeCheckpoint","kind":"function","signature":"makeCheckpoint(c = {})","summary":"Build a checkpoint record."}
{"schemaVersion":1,"modulePath":"engine/reference/state/integrity/Checkpoint.md","moduleTitle":"state/integrity/Checkpoint","source":"engine/state/integrity/Checkpoint.js","import":"/engine/state/integrity/Checkpoint.js","sourceHash":"46b5a0c1dc9e58cb7b25eeb592bb3cbd9cbfba0aad688589a7e6ab003af756ff","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/integrity/Checkpoint.js#0001:verifyCheckpoint","exportIndex":1,"name":"verifyCheckpoint","kind":"function","signature":"verifyCheckpoint(checkpoint, computedStateRoot, predecessor = null)","summary":"Verify a checkpoint's stateRoot matches a freshly computed root, and (if a predecessor is provided) that the chain links correctly (spec rule 60,64)."}
{"schemaVersion":1,"modulePath":"engine/reference/state/integrity/EventLog.md","moduleTitle":"state/integrity/EventLog","source":"engine/state/integrity/EventLog.js","import":"/engine/state/integrity/EventLog.js","sourceHash":"eaebe8fceca85068f8b1037ead95e891f7680436b4312537a0e0ee4c707ee355","subsystem":"engine","recordType":"api-module","id":"module:engine/state/integrity/EventLog.js","title":"state/integrity/EventLog","summary":"state/integrity/EventLog.js — append-only commit stream (spec §13).  Committed changes are appended to an immutable, hash-chained event log. Materialized views can be rebuilt without altering history (event sourcing). Each entry links to the previous entry's hash, so any tampering with earlier history changes every subsequent link — a lightweight Merkle chain. The hash is the fast tagged id of the canonical entry (hot path); authority signatures live on the witness receipts the entries reference.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/state/integrity/EventLog.md","moduleTitle":"state/integrity/EventLog","source":"engine/state/integrity/EventLog.js","import":"/engine/state/integrity/EventLog.js","sourceHash":"eaebe8fceca85068f8b1037ead95e891f7680436b4312537a0e0ee4c707ee355","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/integrity/EventLog.js#0000:EventLog","exportIndex":0,"name":"EventLog","kind":"class","signature":"class EventLog","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/integrity/EventLog.md","moduleTitle":"state/integrity/EventLog","source":"engine/state/integrity/EventLog.js","import":"/engine/state/integrity/EventLog.js","sourceHash":"eaebe8fceca85068f8b1037ead95e891f7680436b4312537a0e0ee4c707ee355","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/integrity/EventLog.js#0001:EVENTLOG_GENESIS","exportIndex":1,"name":"EVENTLOG_GENESIS","kind":"re-export","signature":"EVENTLOG_GENESIS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/integrity/GarbageCollector.md","moduleTitle":"state/integrity/GarbageCollector","source":"engine/state/integrity/GarbageCollector.js","import":"/engine/state/integrity/GarbageCollector.js","sourceHash":"62218686e9650b899a6c141660947b1ad328416d08db1db03bf012677b247968","subsystem":"engine","recordType":"api-module","id":"module:engine/state/integrity/GarbageCollector.js","title":"state/integrity/GarbageCollector","summary":"state/integrity/GarbageCollector.js — Integrity-plane garbage collection (spec §3 plane 8, rule 61; liveness \"GC never removes pinned authoritative state\").  GC reclaims storage by collecting objects that are no longer reachable from a set of SIGNED ROOTS (latest checkpoint, unspent outputs, retained branches) and not protected by a retention policy. It is mark-and-sweep over the reference graph: anything reachable from a root — or explicitly pinned — is retained; everything else is eligible. The hard invariant is that GC can NEVER remove pinned authoritative state, even if it looks unreferenced.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/state/integrity/GarbageCollector.md","moduleTitle":"state/integrity/GarbageCollector","source":"engine/state/integrity/GarbageCollector.js","import":"/engine/state/integrity/GarbageCollector.js","sourceHash":"62218686e9650b899a6c141660947b1ad328416d08db1db03bf012677b247968","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/integrity/GarbageCollector.js#0000:GarbageCollector","exportIndex":0,"name":"GarbageCollector","kind":"class","signature":"class GarbageCollector","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/integrity/Retention.md","moduleTitle":"state/integrity/Retention","source":"engine/state/integrity/Retention.js","import":"/engine/state/integrity/Retention.js","sourceHash":"ef281fa36c2cab017da5d495db57940736d793de9bfc3559b79622010d4ddc3a","subsystem":"engine","recordType":"api-module","id":"module:engine/state/integrity/Retention.js","title":"state/integrity/Retention","summary":"state/integrity/Retention.js — Integrity-plane encryption & retention manager (spec §13 \"Privacy and deletion\", rule 62).  Append-only logs conflict with deletion requirements. The resolution: store sensitive payloads ENCRYPTED under a scoped key, leaving only minimal, non-sensitive audit metadata in the permanent record. Destroying the scope key renders the encrypted payload infeasible to recover — NIST \"cryptographic erase\" — so the audit trail survives while the sensitive bytes are irrecoverable. The cipher here is a deterministic keyed stream (model-grade, not production crypto): the point is the KEY-LIFECYCLE invariant, i.e. erase the key ⇒ payload unrecoverable, metadata retained.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/state/integrity/Retention.md","moduleTitle":"state/integrity/Retention","source":"engine/state/integrity/Retention.js","import":"/engine/state/integrity/Retention.js","sourceHash":"ef281fa36c2cab017da5d495db57940736d793de9bfc3559b79622010d4ddc3a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/integrity/Retention.js#0000:RetentionManager","exportIndex":0,"name":"RetentionManager","kind":"class","signature":"class RetentionManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/integrity/SecureCrypto.md","moduleTitle":"state/integrity/SecureCrypto","source":"engine/state/integrity/SecureCrypto.js","import":"/engine/state/integrity/SecureCrypto.js","sourceHash":"deee6e24372e7688689cd9bd28d157ff7dabe6c1266972b35492195e4ac92993","subsystem":"engine","recordType":"api-module","id":"module:engine/state/integrity/SecureCrypto.js","title":"state/integrity/SecureCrypto","summary":"state/integrity/SecureCrypto.js — production-grade authenticated encryption (spec §13 privacy, §17 deterministic-core boundary).  Real AEAD via Web Crypto AES-256-GCM. Used by SecureRetention for sensitive payloads so that destroying the key (cryptographic erase) renders ciphertext infeasible to recover, and any tampering with ciphertext/AAD fails the GCM authentication tag. This is the production swap-in for the model-grade keyed stream used elsewhere. All operations are async (SubtleCrypto); callers that need a sync path keep the deterministic fallback in RetentionManager.","exportCount":8}
{"schemaVersion":1,"modulePath":"engine/reference/state/integrity/SecureCrypto.md","moduleTitle":"state/integrity/SecureCrypto","source":"engine/state/integrity/SecureCrypto.js","import":"/engine/state/integrity/SecureCrypto.js","sourceHash":"deee6e24372e7688689cd9bd28d157ff7dabe6c1266972b35492195e4ac92993","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/integrity/SecureCrypto.js#0000:secureCryptoAvailable","exportIndex":0,"name":"secureCryptoAvailable","kind":"function","signature":"secureCryptoAvailable()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/integrity/SecureCrypto.md","moduleTitle":"state/integrity/SecureCrypto","source":"engine/state/integrity/SecureCrypto.js","import":"/engine/state/integrity/SecureCrypto.js","sourceHash":"deee6e24372e7688689cd9bd28d157ff7dabe6c1266972b35492195e4ac92993","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/integrity/SecureCrypto.js#0001:bytesToHex","exportIndex":1,"name":"bytesToHex","kind":"function","signature":"bytesToHex(bytes)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/integrity/SecureCrypto.md","moduleTitle":"state/integrity/SecureCrypto","source":"engine/state/integrity/SecureCrypto.js","import":"/engine/state/integrity/SecureCrypto.js","sourceHash":"deee6e24372e7688689cd9bd28d157ff7dabe6c1266972b35492195e4ac92993","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/integrity/SecureCrypto.js#0002:hexToBytes","exportIndex":2,"name":"hexToBytes","kind":"function","signature":"hexToBytes(hex)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/integrity/SecureCrypto.md","moduleTitle":"state/integrity/SecureCrypto","source":"engine/state/integrity/SecureCrypto.js","import":"/engine/state/integrity/SecureCrypto.js","sourceHash":"deee6e24372e7688689cd9bd28d157ff7dabe6c1266972b35492195e4ac92993","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/integrity/SecureCrypto.js#0003:generateAesKey","exportIndex":3,"name":"generateAesKey","kind":"function","signature":"async generateAesKey()","summary":"Generate a fresh AES-256-GCM key (extractable, for raw export/erase tests)."}
{"schemaVersion":1,"modulePath":"engine/reference/state/integrity/SecureCrypto.md","moduleTitle":"state/integrity/SecureCrypto","source":"engine/state/integrity/SecureCrypto.js","import":"/engine/state/integrity/SecureCrypto.js","sourceHash":"deee6e24372e7688689cd9bd28d157ff7dabe6c1266972b35492195e4ac92993","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/integrity/SecureCrypto.js#0004:exportKeyRaw","exportIndex":4,"name":"exportKeyRaw","kind":"function","signature":"async exportKeyRaw(key)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/integrity/SecureCrypto.md","moduleTitle":"state/integrity/SecureCrypto","source":"engine/state/integrity/SecureCrypto.js","import":"/engine/state/integrity/SecureCrypto.js","sourceHash":"deee6e24372e7688689cd9bd28d157ff7dabe6c1266972b35492195e4ac92993","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/integrity/SecureCrypto.js#0005:importAesKey","exportIndex":5,"name":"importAesKey","kind":"function","signature":"async importAesKey(raw)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/integrity/SecureCrypto.md","moduleTitle":"state/integrity/SecureCrypto","source":"engine/state/integrity/SecureCrypto.js","import":"/engine/state/integrity/SecureCrypto.js","sourceHash":"deee6e24372e7688689cd9bd28d157ff7dabe6c1266972b35492195e4ac92993","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/integrity/SecureCrypto.js#0006:aeadSeal","exportIndex":6,"name":"aeadSeal","kind":"function","signature":"async aeadSeal(key, plaintext, aad = '')","summary":"AEAD-seal a plaintext string. `aad` (additional authenticated data) binds the ciphertext to a context (e.g. the scope id) without encrypting it."}
{"schemaVersion":1,"modulePath":"engine/reference/state/integrity/SecureCrypto.md","moduleTitle":"state/integrity/SecureCrypto","source":"engine/state/integrity/SecureCrypto.js","import":"/engine/state/integrity/SecureCrypto.js","sourceHash":"deee6e24372e7688689cd9bd28d157ff7dabe6c1266972b35492195e4ac92993","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/integrity/SecureCrypto.js#0007:aeadOpen","exportIndex":7,"name":"aeadOpen","kind":"function","signature":"async aeadOpen(key, envelope, aad = '')","summary":"AEAD-open an envelope. Returns plaintext, or null if the key is wrong/erased or the ciphertext/AAD was tampered with (GCM tag check fails)."}
{"schemaVersion":1,"modulePath":"engine/reference/state/integrity/SecureRetention.md","moduleTitle":"state/integrity/SecureRetention","source":"engine/state/integrity/SecureRetention.js","import":"/engine/state/integrity/SecureRetention.js","sourceHash":"d6d48eb8ac1236ae39dc2d650e98eaa4a623c14edc64db94ffc2867cc47ffa57","subsystem":"engine","recordType":"api-module","id":"module:engine/state/integrity/SecureRetention.js","title":"state/integrity/SecureRetention","summary":"state/integrity/SecureRetention.js — production AES-256-GCM retention manager (spec §13, rule 62). The cryptographic counterpart of RetentionManager.  Sensitive payloads are sealed under a per-scope AES-GCM key held only in memory as a non-extractable-by-policy CryptoKey reference. Cryptographic erase drops that reference, after which the ciphertext is infeasible to recover (NIST crypto-erase), while non-sensitive audit metadata on the envelope survives. GCM's authentication tag also makes any tampering with the ciphertext or the scope-bound AAD fail closed (open → null).","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/state/integrity/SecureRetention.md","moduleTitle":"state/integrity/SecureRetention","source":"engine/state/integrity/SecureRetention.js","import":"/engine/state/integrity/SecureRetention.js","sourceHash":"d6d48eb8ac1236ae39dc2d650e98eaa4a623c14edc64db94ffc2867cc47ffa57","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/integrity/SecureRetention.js#0000:SecureRetentionManager","exportIndex":0,"name":"SecureRetentionManager","kind":"class","signature":"class SecureRetentionManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/integrity/StateRoot.md","moduleTitle":"state/integrity/StateRoot","source":"engine/state/integrity/StateRoot.js","import":"/engine/state/integrity/StateRoot.js","sourceHash":"ad2a2eb8c80cd5db7feac4530ba93845649c7eb13012fa781698dba0ebd21556","subsystem":"engine","recordType":"api-module","id":"module:engine/state/integrity/StateRoot.js","title":"state/integrity/StateRoot","summary":"state/integrity/StateRoot.js — Merkle-style canonical state root (spec §13,§19).  A state root is the hash of the canonical, ORDER-INDEPENDENT summary of the authoritative state: the live fact set, the unspent-output id set, and the entity head version ids. The committed state root must exactly match the committed outputs (safety invariant). A hash proves exact content only — not correctness — so the root is used for integrity/restoration, never as a semantic-truth or authority claim (spec rule 52).","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/state/integrity/StateRoot.md","moduleTitle":"state/integrity/StateRoot","source":"engine/state/integrity/StateRoot.js","import":"/engine/state/integrity/StateRoot.js","sourceHash":"ad2a2eb8c80cd5db7feac4530ba93845649c7eb13012fa781698dba0ebd21556","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/integrity/StateRoot.js#0000:computeStateRoot","exportIndex":0,"name":"computeStateRoot","kind":"function","signature":"computeStateRoot({ facts = [], unspent = [], entityHeads = [] } = {})","summary":"Compute a state root from the authoritative components. Any iterable is accepted; members are sorted for order-independence."}
{"schemaVersion":1,"modulePath":"engine/reference/state/integrity/StateRoot.md","moduleTitle":"state/integrity/StateRoot","source":"engine/state/integrity/StateRoot.js","import":"/engine/state/integrity/StateRoot.js","sourceHash":"ad2a2eb8c80cd5db7feac4530ba93845649c7eb13012fa781698dba0ebd21556","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/integrity/StateRoot.js#0001:rootFromStores","exportIndex":1,"name":"rootFromStores","kind":"function","signature":"rootFromStores({ factStore = null, usoRegistry = null, entityRegistry = null } = {})","summary":"Convenience: derive a state root from live engine registries."}
{"schemaVersion":1,"modulePath":"engine/reference/state/observer/Projection.md","moduleTitle":"state/observer/Projection","source":"engine/state/observer/Projection.js","import":"/engine/state/observer/Projection.js","sourceHash":"d2300c07124521ef57b540e6bcbcf2761358fb4dac9e67ef4617793089ee1200","subsystem":"engine","recordType":"api-module","id":"module:engine/state/observer/Projection.js","title":"state/observer/Projection","summary":"state/observer/Projection.js — the observer creates EXPERIENCED order.  Core truth may be unordered or branched. An observer sees one path, but that is only a projection: render order is not truth, UI order is not truth, debug order is not truth. Only committed facts are canonical — so every projection here carries `isTruth: false` and a witness. Turning a projection into truth requires a CommitGate.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/state/observer/Projection.md","moduleTitle":"state/observer/Projection","source":"engine/state/observer/Projection.js","import":"/engine/state/observer/Projection.js","sourceHash":"d2300c07124521ef57b540e6bcbcf2761358fb4dac9e67ef4617793089ee1200","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/observer/Projection.js#0000:projectSequence","exportIndex":0,"name":"projectSequence","kind":"function","signature":"projectSequence(store, links = [])","summary":"Project one experienced sequence from a fact store. Independent facts stay deterministically ordered (reproducible), causal links force precedence."}
{"schemaVersion":1,"modulePath":"engine/reference/state/observer/Projection.md","moduleTitle":"state/observer/Projection","source":"engine/state/observer/Projection.js","import":"/engine/state/observer/Projection.js","sourceHash":"d2300c07124521ef57b540e6bcbcf2761358fb4dac9e67ef4617793089ee1200","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/observer/Projection.js#0001:chooseBranch","exportIndex":1,"name":"chooseBranch","kind":"function","signature":"chooseBranch(branches, selector = ()","summary":"Choose one branch for an observer to experience. Does NOT commit — the other branches remain possible (recorded as \"rejected/not observed\" in the witness) until a CommitGate finalizes one as canonical."}
{"schemaVersion":1,"modulePath":"engine/reference/state/perception/ResonanceIndex.md","moduleTitle":"state/perception/ResonanceIndex","source":"engine/state/perception/ResonanceIndex.js","import":"/engine/state/perception/ResonanceIndex.js","sourceHash":"0e3f5587329856f3053582785978e91908c9700a31307d544d93832f72857b64","subsystem":"engine","recordType":"api-module","id":"module:engine/state/perception/ResonanceIndex.js","title":"state/perception/ResonanceIndex","summary":"state/perception/ResonanceIndex.js — the Resonance/Perception extension reattached as an OPTIONAL indexing layer (spec §16, rules 52–56).  This is where the codebook / resonance / spatial layers belong: approximate retrieval, never the trusted authority path. The discipline is strict and one-directional:  approximate similarity  → retrieves CANDIDATES   (cosine over feature vectors) exact identity (hash)    → verifies BYTES         (cryptographic/fast hash) semantic constraints     → verify MEANING         (predicate over content) commit logic             → establishes TRUTH      (elsewhere; not here)  A near match is only ever a suggestion. This module will NEVER return a similar-but-not-byte-identical item as a verified match — similarity suggests candidates; it never establishes identity (rule 53). Nearest-neighbour search may repair a visual cache or rank suggestions, but must never silently repair inventory, permissions, ownership, or other authoritative semantic state.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/state/perception/ResonanceIndex.md","moduleTitle":"state/perception/ResonanceIndex","source":"engine/state/perception/ResonanceIndex.js","import":"/engine/state/perception/ResonanceIndex.js","sourceHash":"0e3f5587329856f3053582785978e91908c9700a31307d544d93832f72857b64","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/perception/ResonanceIndex.js#0000:ResonanceIndex","exportIndex":0,"name":"ResonanceIndex","kind":"class","signature":"class ResonanceIndex","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/replication/ByzantineAdapter.md","moduleTitle":"state/replication/ByzantineAdapter","source":"engine/state/replication/ByzantineAdapter.js","import":"/engine/state/replication/ByzantineAdapter.js","sourceHash":"64828e6cdbfb7a1432377334ea3070c1a6c5e7def1e78a1488fbd9bf36d2a1dc","subsystem":"engine","recordType":"api-module","id":"module:engine/state/replication/ByzantineAdapter.js","title":"state/replication/ByzantineAdapter","summary":"state/replication/ByzantineAdapter.js — optional Byzantine-fault-tolerant authority (spec §8 hostile peer-to-peer profile, rule 38).  This is the explicitly-separate hostile-P2P profile, NOT implied by the default crash-fault deployment. It tolerates up to f Byzantine (arbitrary / malicious) nodes given n ≥ 3f+1 members, committing a value only when at least a 2f+1 quorum cast MATCHING votes for it. Two safety mechanisms:  • Equivocation detection — a node that votes for two different values in the same round is provably faulty; it is marked Byzantine and ALL its votes are discarded, so a double-voter cannot help two values reach quorum. • 2f+1 quorum — with n ≥ 3f+1 and ≤ f faulty nodes, any value with 2f+1 votes has ≥ f+1 honest votes, so two conflicting values can never both commit (their honest supporters would have to overlap).  Votes are expected to be signed; an optional verifier rejects unsigned/forged votes. Membership/Sybil control is a deployment policy declared separately.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/state/replication/ByzantineAdapter.md","moduleTitle":"state/replication/ByzantineAdapter","source":"engine/state/replication/ByzantineAdapter.js","import":"/engine/state/replication/ByzantineAdapter.js","sourceHash":"64828e6cdbfb7a1432377334ea3070c1a6c5e7def1e78a1488fbd9bf36d2a1dc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/replication/ByzantineAdapter.js#0000:ByzantineAdapter","exportIndex":0,"name":"ByzantineAdapter","kind":"class","signature":"class ByzantineAdapter","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/replication/CheckpointQuorum.md","moduleTitle":"state/replication/CheckpointQuorum","source":"engine/state/replication/CheckpointQuorum.js","import":"/engine/state/replication/CheckpointQuorum.js","sourceHash":"de90fc4b44a4011222359cb41ccf5fb87ab0f64d6c306b498cbbe204afd95cb7","subsystem":"engine","recordType":"api-module","id":"module:engine/state/replication/CheckpointQuorum.js","title":"state/replication/CheckpointQuorum","summary":"state/replication/CheckpointQuorum.js — quorum-signed checkpoint proofs (spec §13 checkpoints + §8 replication, rule 64).  A checkpoint summarizes history with a canonical state root. In a replicated deployment a checkpoint becomes authoritative only when a QUORUM of members attest to the SAME state root — this is the proof a restored node verifies before accepting commits (rule 64). Members that attest a different root are recorded as DIVERGENT and never counted toward the quorum, so a minority of faulty/forked replicas cannot finalize a bad checkpoint.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/state/replication/CheckpointQuorum.md","moduleTitle":"state/replication/CheckpointQuorum","source":"engine/state/replication/CheckpointQuorum.js","import":"/engine/state/replication/CheckpointQuorum.js","sourceHash":"de90fc4b44a4011222359cb41ccf5fb87ab0f64d6c306b498cbbe204afd95cb7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/replication/CheckpointQuorum.js#0000:CheckpointQuorum","exportIndex":0,"name":"CheckpointQuorum","kind":"class","signature":"class CheckpointQuorum","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/replication/CrossShardCoordinator.md","moduleTitle":"state/replication/CrossShardCoordinator","source":"engine/state/replication/CrossShardCoordinator.js","import":"/engine/state/replication/CrossShardCoordinator.js","sourceHash":"58d046977273af707a6faaea3ed3e6253b30a58f82e0d96ad0fe2671a9399e5d","subsystem":"engine","recordType":"api-module","id":"module:engine/state/replication/CrossShardCoordinator.js","title":"state/replication/CrossShardCoordinator","summary":"state/replication/CrossShardCoordinator.js — cross-domain atomic commit (spec §10, rule 40).  Cross-domain atomicity is the most expensive operation, so it is used only when true all-or-nothing behavior is required. This coordinator implements two-phase commit with the §10 hardening: • locks are acquired in CANONICAL order (sorted shard/key) to avoid deadlock; • a durable PREPARED record is written so a coordinator that crashes after prepare can be recovered and the commit completed (classic 2PC blocks on coordinator failure; the prepared record makes it recoverable); • for operations that do NOT need atomicity, a SAGA fallback is offered instead, since compensation is cheaper than distributed commit.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/state/replication/CrossShardCoordinator.md","moduleTitle":"state/replication/CrossShardCoordinator","source":"engine/state/replication/CrossShardCoordinator.js","import":"/engine/state/replication/CrossShardCoordinator.js","sourceHash":"58d046977273af707a6faaea3ed3e6253b30a58f82e0d96ad0fe2671a9399e5d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/replication/CrossShardCoordinator.js#0000:CrossShardCoordinator","exportIndex":0,"name":"CrossShardCoordinator","kind":"class","signature":"class CrossShardCoordinator","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/replication/RaftAdapter.md","moduleTitle":"state/replication/RaftAdapter","source":"engine/state/replication/RaftAdapter.js","import":"/engine/state/replication/RaftAdapter.js","sourceHash":"9f5e598c3a2b6d304fc065fa64afc376cfd67f72f173bacd92e816e72b97d990","subsystem":"engine","recordType":"api-module","id":"module:engine/state/replication/RaftAdapter.js","title":"state/replication/RaftAdapter","summary":"state/replication/RaftAdapter.js — crash-fault replicated authority (spec §8 Replication, rules 37–39).  An in-memory Raft cluster used where authority is genuinely SHARED. It manages leader election (with the Raft up-to-date restriction so a leader never lacks a committed entry) and quorum commit: a command is committed only once it lives on a majority of the cluster, so it survives any minority of crashes. The failure model is explicitly CRASH-FAULT (not Byzantine), and progress requires a quorum — when too many nodes are down the cluster correctly STALLS rather than risking divergence (rule 38/39: declare the failure model; partitions force an availability/consistency choice).","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/state/replication/RaftAdapter.md","moduleTitle":"state/replication/RaftAdapter","source":"engine/state/replication/RaftAdapter.js","import":"/engine/state/replication/RaftAdapter.js","sourceHash":"9f5e598c3a2b6d304fc065fa64afc376cfd67f72f173bacd92e816e72b97d990","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/replication/RaftAdapter.js#0000:RaftAdapter","exportIndex":0,"name":"RaftAdapter","kind":"class","signature":"class RaftAdapter","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/replication/ReplicatedLog.md","moduleTitle":"state/replication/ReplicatedLog","source":"engine/state/replication/ReplicatedLog.js","import":"/engine/state/replication/ReplicatedLog.js","sourceHash":"c705b4927fce176bb782e9b6071128a951b9214c75b7a146901ab2d3b75d67da","subsystem":"engine","recordType":"api-module","id":"module:engine/state/replication/ReplicatedLog.js","title":"state/replication/ReplicatedLog","summary":"state/replication/ReplicatedLog.js — a single replica's replicated commit log (spec §8 \"Replication\", §11 consensus-backed commit record).  Implements the Raft log model: each entry is { index, term, command }. The LOG-MATCHING property is enforced on replication — an AppendEntries is rejected unless the follower's entry at prevIndex has prevTerm; conflicting suffixes are truncated before appending. Consequently, if two logs hold an entry with the same index and term, the logs are identical up to that index. `commitIndex` only advances over entries known durable on a quorum (the RaftAdapter drives that), so a committed entry is never lost under the declared crash-fault model.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/state/replication/ReplicatedLog.md","moduleTitle":"state/replication/ReplicatedLog","source":"engine/state/replication/ReplicatedLog.js","import":"/engine/state/replication/ReplicatedLog.js","sourceHash":"c705b4927fce176bb782e9b6071128a951b9214c75b7a146901ab2d3b75d67da","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/replication/ReplicatedLog.js#0000:ReplicatedLog","exportIndex":0,"name":"ReplicatedLog","kind":"class","signature":"class ReplicatedLog","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/replication/ShardRouter.md","moduleTitle":"state/replication/ShardRouter","source":"engine/state/replication/ShardRouter.js","import":"/engine/state/replication/ShardRouter.js","sourceHash":"6834395199d1df1fdb68a514278841c31af5379030ec0187562730f2bb2d0814","subsystem":"engine","recordType":"api-module","id":"module:engine/state/replication/ShardRouter.js","title":"state/replication/ShardRouter","summary":"state/replication/ShardRouter.js — deterministic key→shard routing and commit-domain boundaries (spec §10, rule 1 of cross-domain preference order).  A shard is a commit domain: state strongly related to an invariant should land in ONE shard so its commit is local and atomic. The router maps a logical key to a shard deterministically (same key → same shard on every node) using the engine's canonical fast hash, so routing needs no coordination. Transactions touching more than one shard are flagged as cross-shard (handled by the CrossShardCoordinator) — the router never silently spans domains.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/state/replication/ShardRouter.md","moduleTitle":"state/replication/ShardRouter","source":"engine/state/replication/ShardRouter.js","import":"/engine/state/replication/ShardRouter.js","sourceHash":"6834395199d1df1fdb68a514278841c31af5379030ec0187562730f2bb2d0814","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/replication/ShardRouter.js#0000:ShardRouter","exportIndex":0,"name":"ShardRouter","kind":"class","signature":"class ShardRouter","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/resonance/ResonanceVector.md","moduleTitle":"state/resonance/ResonanceVector","source":"engine/state/resonance/ResonanceVector.js","import":"/engine/state/resonance/ResonanceVector.js","sourceHash":"258e3eb24924ee8be631265e23c485040caafc541d2a10f096cac836abce6129","subsystem":"engine","recordType":"api-module","id":"module:engine/state/resonance/ResonanceVector.js","title":"state/resonance/ResonanceVector","summary":"state/resonance/ResonanceVector.js — build + compare resonance signatures and snap to the nearest attractor by SIMILARITY.  Layer law: \"resonance suggests\". This module reports closeness; it never decides identity (hash) or meaning (symbolicSig) or truth (commit). Two patterns can be near in resonance yet mean opposites (potion vs poison) — callers must still check symbolicSig / hash / constraints before trusting.","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/state/resonance/ResonanceVector.md","moduleTitle":"state/resonance/ResonanceVector","source":"engine/state/resonance/ResonanceVector.js","import":"/engine/state/resonance/ResonanceVector.js","sourceHash":"258e3eb24924ee8be631265e23c485040caafc541d2a10f096cac836abce6129","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/resonance/ResonanceVector.js#0000:resonanceWHT","exportIndex":0,"name":"resonanceWHT","kind":"function","signature":"resonanceWHT(id)","summary":"Resonance vector for a tiny 3x3 pattern (Walsh/Hadamard; integer-exact)."}
{"schemaVersion":1,"modulePath":"engine/reference/state/resonance/ResonanceVector.md","moduleTitle":"state/resonance/ResonanceVector","source":"engine/state/resonance/ResonanceVector.js","import":"/engine/state/resonance/ResonanceVector.js","sourceHash":"258e3eb24924ee8be631265e23c485040caafc541d2a10f096cac836abce6129","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/resonance/ResonanceVector.js#0001:resonanceDCT","exportIndex":1,"name":"resonanceDCT","kind":"function","signature":"resonanceDCT(block, N)","summary":"Resonance vector for an NxN visual block (DCT-II)."}
{"schemaVersion":1,"modulePath":"engine/reference/state/resonance/ResonanceVector.md","moduleTitle":"state/resonance/ResonanceVector","source":"engine/state/resonance/ResonanceVector.js","import":"/engine/state/resonance/ResonanceVector.js","sourceHash":"258e3eb24924ee8be631265e23c485040caafc541d2a10f096cac836abce6129","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/resonance/ResonanceVector.js#0002:cosineSimilarity","exportIndex":2,"name":"cosineSimilarity","kind":"function","signature":"cosineSimilarity(a, b)","summary":"Cosine similarity in [-1, 1] (1 = identical direction). 0 if either is null."}
{"schemaVersion":1,"modulePath":"engine/reference/state/resonance/ResonanceVector.md","moduleTitle":"state/resonance/ResonanceVector","source":"engine/state/resonance/ResonanceVector.js","import":"/engine/state/resonance/ResonanceVector.js","sourceHash":"258e3eb24924ee8be631265e23c485040caafc541d2a10f096cac836abce6129","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/resonance/ResonanceVector.js#0003:l2Distance","exportIndex":3,"name":"l2Distance","kind":"function","signature":"l2Distance(a, b)","summary":"Euclidean (L2) distance between two equal-length vectors."}
{"schemaVersion":1,"modulePath":"engine/reference/state/resonance/ResonanceVector.md","moduleTitle":"state/resonance/ResonanceVector","source":"engine/state/resonance/ResonanceVector.js","import":"/engine/state/resonance/ResonanceVector.js","sourceHash":"258e3eb24924ee8be631265e23c485040caafc541d2a10f096cac836abce6129","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/resonance/ResonanceVector.js#0004:nearestAttractor","exportIndex":4,"name":"nearestAttractor","kind":"function","signature":"nearestAttractor(vec, attractors, { metric = 'cosine' } = {})","summary":"Nearest attractor by similarity. metric 'cosine' (higher score = closer) or 'l2' (score = negative distance so higher is always closer)."}
{"schemaVersion":1,"modulePath":"engine/reference/state/resonance/Transforms.md","moduleTitle":"state/resonance/Transforms","source":"engine/state/resonance/Transforms.js","import":"/engine/state/resonance/Transforms.js","sourceHash":"c84066ca406382cb0d10de65eff1a96df8db8be82adb83da43e76a9aeb4e67b6","subsystem":"engine","recordType":"api-module","id":"module:engine/state/resonance/Transforms.js","title":"state/resonance/Transforms","summary":"state/resonance/Transforms.js — Phase 3 transforms.  Walsh/Hadamard  tiny binary patterns (3x3, 4x4)   [new] DCT-II          small visual blocks (8x8, 16x16)  Scale routing (per the plan): Walsh for tiny binary, DCT for small visual, wavelets for 32x32+/3D (added later). These produce the \"resonance vector\": a compressed signature of what a pattern RESEMBLES — never its identity.","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/state/resonance/Transforms.md","moduleTitle":"state/resonance/Transforms","source":"engine/state/resonance/Transforms.js","import":"/engine/state/resonance/Transforms.js","sourceHash":"c84066ca406382cb0d10de65eff1a96df8db8be82adb83da43e76a9aeb4e67b6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/resonance/Transforms.js#0000:walshHadamard","exportIndex":0,"name":"walshHadamard","kind":"function","signature":"walshHadamard(input)","summary":"In-place-style fast WHT. Integer input → integer output. Length must be a power of two. WHT(WHT(v)) === n * v (involutive up to the length scale)."}
{"schemaVersion":1,"modulePath":"engine/reference/state/resonance/Transforms.md","moduleTitle":"state/resonance/Transforms","source":"engine/state/resonance/Transforms.js","import":"/engine/state/resonance/Transforms.js","sourceHash":"c84066ca406382cb0d10de65eff1a96df8db8be82adb83da43e76a9aeb4e67b6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/resonance/Transforms.js#0001:pattern3x3ToVector","exportIndex":1,"name":"pattern3x3ToVector","kind":"function","signature":"pattern3x3ToVector(id)","summary":"Map a packed 3x3 pattern to a length-16 bipolar vector ({0,1} → {-1,+1}, zero-padded to the next power of two) ready for the WHT."}
{"schemaVersion":1,"modulePath":"engine/reference/state/resonance/Transforms.md","moduleTitle":"state/resonance/Transforms","source":"engine/state/resonance/Transforms.js","import":"/engine/state/resonance/Transforms.js","sourceHash":"c84066ca406382cb0d10de65eff1a96df8db8be82adb83da43e76a9aeb4e67b6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/resonance/Transforms.js#0002:dct1D","exportIndex":2,"name":"dct1D","kind":"function","signature":"dct1D(input)","summary":"1-D DCT-II (orthonormal)."}
{"schemaVersion":1,"modulePath":"engine/reference/state/resonance/Transforms.md","moduleTitle":"state/resonance/Transforms","source":"engine/state/resonance/Transforms.js","import":"/engine/state/resonance/Transforms.js","sourceHash":"c84066ca406382cb0d10de65eff1a96df8db8be82adb83da43e76a9aeb4e67b6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/resonance/Transforms.js#0003:idct1D","exportIndex":3,"name":"idct1D","kind":"function","signature":"idct1D(input)","summary":"1-D inverse DCT-II (orthonormal)."}
{"schemaVersion":1,"modulePath":"engine/reference/state/resonance/Transforms.md","moduleTitle":"state/resonance/Transforms","source":"engine/state/resonance/Transforms.js","import":"/engine/state/resonance/Transforms.js","sourceHash":"c84066ca406382cb0d10de65eff1a96df8db8be82adb83da43e76a9aeb4e67b6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/resonance/Transforms.js#0004:dct2D","exportIndex":4,"name":"dct2D","kind":"function","signature":"dct2D(block, N)","summary":"2-D DCT-II of an NxN block (row-major Float array of length N*N)."}
{"schemaVersion":1,"modulePath":"engine/reference/state/resonance/Transforms.md","moduleTitle":"state/resonance/Transforms","source":"engine/state/resonance/Transforms.js","import":"/engine/state/resonance/Transforms.js","sourceHash":"c84066ca406382cb0d10de65eff1a96df8db8be82adb83da43e76a9aeb4e67b6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/resonance/Transforms.js#0005:idct2D","exportIndex":5,"name":"idct2D","kind":"function","signature":"idct2D(block, N)","summary":"2-D inverse DCT-II."}
{"schemaVersion":1,"modulePath":"engine/reference/state/resonance/Transforms.md","moduleTitle":"state/resonance/Transforms","source":"engine/state/resonance/Transforms.js","import":"/engine/state/resonance/Transforms.js","sourceHash":"c84066ca406382cb0d10de65eff1a96df8db8be82adb83da43e76a9aeb4e67b6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/resonance/Transforms.js#0006:quantize","exportIndex":6,"name":"quantize","kind":"function","signature":"quantize(vec, q = 1)","summary":"Quantize a coefficient vector to integers by step `q` (lossy resonance)."}
{"schemaVersion":1,"modulePath":"engine/reference/state/sim/WorldDynamics.md","moduleTitle":"state/sim/WorldDynamics","source":"engine/state/sim/WorldDynamics.js","import":"/engine/state/sim/WorldDynamics.js","sourceHash":"ce1f249abc2d30204c6aa8ab63199d6f4d899008a06fdb238d41afa66190b1a4","subsystem":"engine","recordType":"api-module","id":"module:engine/state/sim/WorldDynamics.js","title":"state/sim/WorldDynamics","summary":"state/sim/WorldDynamics.js — deterministic stepped world dynamics over simulation time (spec §17 CPU deterministic core, rules 66/68 deterministic replay).  World dynamics advance simulated state one tick at a time. To keep canonical state reproducible (and replayable for verification), any randomness comes from a SEEDED deterministic PRNG — never Math.random or wall-clock. Running the same dynamics from the same seed and inputs always yields byte-identical results, which deterministic replay and fault-injection testing depend on.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/state/sim/WorldDynamics.md","moduleTitle":"state/sim/WorldDynamics","source":"engine/state/sim/WorldDynamics.js","import":"/engine/state/sim/WorldDynamics.js","sourceHash":"ce1f249abc2d30204c6aa8ab63199d6f4d899008a06fdb238d41afa66190b1a4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/sim/WorldDynamics.js#0000:WorldDynamics","exportIndex":0,"name":"WorldDynamics","kind":"class","signature":"class WorldDynamics","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/spatial/SpatialCode.md","moduleTitle":"state/spatial/SpatialCode","source":"engine/state/spatial/SpatialCode.js","import":"/engine/state/spatial/SpatialCode.js","sourceHash":"1ae3df44bb0beb06b17615406a3fdc8199b9a486254b63b065849012903f4478","subsystem":"engine","recordType":"api-module","id":"module:engine/state/spatial/SpatialCode.js","title":"state/spatial/SpatialCode","summary":"state/spatial/SpatialCode.js — Phase 2: a pattern knows WHERE it belongs.  Layer law: \"Morton = hot runtime, Hilbert = cold storage / large chunk packing\". We reuse the engine's deterministic MathBits curves rather than re-deriving them; this module only adds chunk addressing + neighbor lookup and the URC contract that spatialID is \"where\", never \"what\" or \"truth\".","exportCount":11}
{"schemaVersion":1,"modulePath":"engine/reference/state/spatial/SpatialCode.md","moduleTitle":"state/spatial/SpatialCode","source":"engine/state/spatial/SpatialCode.js","import":"/engine/state/spatial/SpatialCode.js","sourceHash":"1ae3df44bb0beb06b17615406a3fdc8199b9a486254b63b065849012903f4478","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/spatial/SpatialCode.js#0000:spatialId2D","exportIndex":0,"name":"spatialId2D","kind":"function","signature":"spatialId2D(x, y)","summary":"2D Morton/Z-order spatial id (16 bits per axis)."}
{"schemaVersion":1,"modulePath":"engine/reference/state/spatial/SpatialCode.md","moduleTitle":"state/spatial/SpatialCode","source":"engine/state/spatial/SpatialCode.js","import":"/engine/state/spatial/SpatialCode.js","sourceHash":"1ae3df44bb0beb06b17615406a3fdc8199b9a486254b63b065849012903f4478","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/spatial/SpatialCode.js#0001:fromSpatialId2D","exportIndex":1,"name":"fromSpatialId2D","kind":"function","signature":"fromSpatialId2D(code)","summary":"Inverse of spatialId2D → [x, y]."}
{"schemaVersion":1,"modulePath":"engine/reference/state/spatial/SpatialCode.md","moduleTitle":"state/spatial/SpatialCode","source":"engine/state/spatial/SpatialCode.js","import":"/engine/state/spatial/SpatialCode.js","sourceHash":"1ae3df44bb0beb06b17615406a3fdc8199b9a486254b63b065849012903f4478","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/spatial/SpatialCode.js#0002:spatialId3D","exportIndex":2,"name":"spatialId3D","kind":"function","signature":"spatialId3D(x, y, z)","summary":"3D Morton spatial id (10 bits per axis)."}
{"schemaVersion":1,"modulePath":"engine/reference/state/spatial/SpatialCode.md","moduleTitle":"state/spatial/SpatialCode","source":"engine/state/spatial/SpatialCode.js","import":"/engine/state/spatial/SpatialCode.js","sourceHash":"1ae3df44bb0beb06b17615406a3fdc8199b9a486254b63b065849012903f4478","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/spatial/SpatialCode.js#0003:fromSpatialId3D","exportIndex":3,"name":"fromSpatialId3D","kind":"function","signature":"fromSpatialId3D(code)","summary":"Inverse of spatialId3D → [x, y, z]."}
{"schemaVersion":1,"modulePath":"engine/reference/state/spatial/SpatialCode.md","moduleTitle":"state/spatial/SpatialCode","source":"engine/state/spatial/SpatialCode.js","import":"/engine/state/spatial/SpatialCode.js","sourceHash":"1ae3df44bb0beb06b17615406a3fdc8199b9a486254b63b065849012903f4478","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/spatial/SpatialCode.js#0004:hilbertId2D","exportIndex":4,"name":"hilbertId2D","kind":"function","signature":"hilbertId2D(n, x, y)","summary":"Hilbert distance for (x,y) on a 2^k grid of side `n`."}
{"schemaVersion":1,"modulePath":"engine/reference/state/spatial/SpatialCode.md","moduleTitle":"state/spatial/SpatialCode","source":"engine/state/spatial/SpatialCode.js","import":"/engine/state/spatial/SpatialCode.js","sourceHash":"1ae3df44bb0beb06b17615406a3fdc8199b9a486254b63b065849012903f4478","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/spatial/SpatialCode.js#0005:fromHilbertId2D","exportIndex":5,"name":"fromHilbertId2D","kind":"function","signature":"fromHilbertId2D(n, d)","summary":"Inverse of hilbertId2D → [x, y]."}
{"schemaVersion":1,"modulePath":"engine/reference/state/spatial/SpatialCode.md","moduleTitle":"state/spatial/SpatialCode","source":"engine/state/spatial/SpatialCode.js","import":"/engine/state/spatial/SpatialCode.js","sourceHash":"1ae3df44bb0beb06b17615406a3fdc8199b9a486254b63b065849012903f4478","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/spatial/SpatialCode.js#0006:chunkCoords2D","exportIndex":6,"name":"chunkCoords2D","kind":"function","signature":"chunkCoords2D(x, y, chunkSize)","summary":"World coords → chunk coords for a square chunk grid."}
{"schemaVersion":1,"modulePath":"engine/reference/state/spatial/SpatialCode.md","moduleTitle":"state/spatial/SpatialCode","source":"engine/state/spatial/SpatialCode.js","import":"/engine/state/spatial/SpatialCode.js","sourceHash":"1ae3df44bb0beb06b17615406a3fdc8199b9a486254b63b065849012903f4478","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/spatial/SpatialCode.js#0007:chunkId2D","exportIndex":7,"name":"chunkId2D","kind":"function","signature":"chunkId2D(x, y, chunkSize)","summary":"Stable chunk id (Morton of chunk coords) for GPU-buffer packing + cache locality."}
{"schemaVersion":1,"modulePath":"engine/reference/state/spatial/SpatialCode.md","moduleTitle":"state/spatial/SpatialCode","source":"engine/state/spatial/SpatialCode.js","import":"/engine/state/spatial/SpatialCode.js","sourceHash":"1ae3df44bb0beb06b17615406a3fdc8199b9a486254b63b065849012903f4478","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/spatial/SpatialCode.js#0008:chunkCoords3D","exportIndex":8,"name":"chunkCoords3D","kind":"function","signature":"chunkCoords3D(x, y, z, chunkSize)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/spatial/SpatialCode.md","moduleTitle":"state/spatial/SpatialCode","source":"engine/state/spatial/SpatialCode.js","import":"/engine/state/spatial/SpatialCode.js","sourceHash":"1ae3df44bb0beb06b17615406a3fdc8199b9a486254b63b065849012903f4478","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/spatial/SpatialCode.js#0009:chunkId3D","exportIndex":9,"name":"chunkId3D","kind":"function","signature":"chunkId3D(x, y, z, chunkSize)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/spatial/SpatialCode.md","moduleTitle":"state/spatial/SpatialCode","source":"engine/state/spatial/SpatialCode.js","import":"/engine/state/spatial/SpatialCode.js","sourceHash":"1ae3df44bb0beb06b17615406a3fdc8199b9a486254b63b065849012903f4478","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/spatial/SpatialCode.js#0010:neighbors2D","exportIndex":10,"name":"neighbors2D","kind":"function","signature":"neighbors2D(x, y, { diagonal = false } = {})","summary":"Spatial ids of a cell's neighbors (non-negative coords only)."}
{"schemaVersion":1,"modulePath":"engine/reference/state/time/Fencing.md","moduleTitle":"state/time/Fencing","source":"engine/state/time/Fencing.js","import":"/engine/state/time/Fencing.js","sourceHash":"67e97d89c0134475a8bcde12673e805b6b9c5f57629ba5deaef3388450f5786c","subsystem":"engine","recordType":"api-module","id":"module:engine/state/time/Fencing.js","title":"state/time/Fencing","summary":"state/time/Fencing.js — monotonic fencing tokens (spec §9, rule 12).  A lease optimizes liveness; it is NOT final authority. A paused client may resume after its lease expired. Correctness-critical resources therefore require a monotonically increasing fencing token that the PROTECTED RESOURCE itself verifies: a stale token can never mutate protected state (safety invariant, spec §19). Each commit domain issues strictly increasing tokens; the domain rejects any token <= the last one it accepted.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/state/time/Fencing.md","moduleTitle":"state/time/Fencing","source":"engine/state/time/Fencing.js","import":"/engine/state/time/Fencing.js","sourceHash":"67e97d89c0134475a8bcde12673e805b6b9c5f57629ba5deaef3388450f5786c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/time/Fencing.js#0000:FencingDomain","exportIndex":0,"name":"FencingDomain","kind":"class","signature":"class FencingDomain","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/time/SimulationClock.md","moduleTitle":"state/time/SimulationClock","source":"engine/state/time/SimulationClock.js","import":"/engine/state/time/SimulationClock.js","sourceHash":"48b4876a848da392b5b3928399217219a96e4e6bbf4d7e3a37fc20e2fd702170","subsystem":"engine","recordType":"api-module","id":"module:engine/state/time/SimulationClock.js","title":"state/time/SimulationClock","summary":"state/time/SimulationClock.js — simulation time (spec §9 \"Simulation time\").  Simulation time is a domain-specific relationship between simulated changes (physics steps, biological cycles, world epochs, oscillator phases). There may be MANY simulation clocks and NO universal model clock — each advances independently. Simulation clocks are distinct from causal time (dependencies) and operational time (deadlines/leases); they never establish authority.  Advancing is deterministic: the same sequence of steps yields the same tick, which is required for deterministic replay (rule 66/68).","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/state/time/SimulationClock.md","moduleTitle":"state/time/SimulationClock","source":"engine/state/time/SimulationClock.js","import":"/engine/state/time/SimulationClock.js","sourceHash":"48b4876a848da392b5b3928399217219a96e4e6bbf4d7e3a37fc20e2fd702170","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/time/SimulationClock.js#0000:SimulationClock","exportIndex":0,"name":"SimulationClock","kind":"class","signature":"class SimulationClock","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/time/SimulationClock.md","moduleTitle":"state/time/SimulationClock","source":"engine/state/time/SimulationClock.js","import":"/engine/state/time/SimulationClock.js","sourceHash":"48b4876a848da392b5b3928399217219a96e4e6bbf4d7e3a37fc20e2fd702170","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/time/SimulationClock.js#0001:SimulationClockSet","exportIndex":1,"name":"SimulationClockSet","kind":"class","signature":"class SimulationClockSet","summary":"A set of independent simulation clocks. Each domain advances on its own; there is deliberately no method to advance them all in lockstep to a global time."}
{"schemaVersion":1,"modulePath":"engine/reference/state/time/TimeModel.md","moduleTitle":"state/time/TimeModel","source":"engine/state/time/TimeModel.js","import":"/engine/state/time/TimeModel.js","sourceHash":"0bdd3b7172370cbfcd9dcd5fd225980d5363b5977d150171630f9b0b9d451011","subsystem":"engine","recordType":"api-module","id":"module:engine/state/time/TimeModel.js","title":"state/time/TimeModel","summary":"state/time/TimeModel.js — time is NOT a counter.  A state only has \"time\" if it subscribes to a time source. Real time = change + comparison + memory + causality + irreversible direction. Different sources express different truths; a state can be timeless (NONE) while an observer experiences progression.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/state/time/TimeModel.md","moduleTitle":"state/time/TimeModel","source":"engine/state/time/TimeModel.js","import":"/engine/state/time/TimeModel.js","sourceHash":"0bdd3b7172370cbfcd9dcd5fd225980d5363b5977d150171630f9b0b9d451011","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/time/TimeModel.js#0000:createTimeSource","exportIndex":0,"name":"createTimeSource","kind":"function","signature":"createTimeSource(mode = TIME_MODES.NONE)","summary":"Create a time source. `step(input)` advances per-mode and returns the new value; the engine never does `time++` globally. CAUSAL    input.causalSteps CLOCKED   input.dt (oscillator phase) ENTROPIC  input.irreversibleChange (abs — monotonic) OBSERVER  input.observed (boolean) MEMORY    input.stateDistance (>= 0) HYBRID    any combination of the above"}
{"schemaVersion":1,"modulePath":"engine/reference/state/time/TimeModel.md","moduleTitle":"state/time/TimeModel","source":"engine/state/time/TimeModel.js","import":"/engine/state/time/TimeModel.js","sourceHash":"0bdd3b7172370cbfcd9dcd5fd225980d5363b5977d150171630f9b0b9d451011","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/time/TimeModel.js#0001:TIME_MODES","exportIndex":1,"name":"TIME_MODES","kind":"constant","signature":"TIME_MODES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/transaction/CommitCoordinator.md","moduleTitle":"state/transaction/CommitCoordinator","source":"engine/state/transaction/CommitCoordinator.js","import":"/engine/state/transaction/CommitCoordinator.js","sourceHash":"f702038a6f10a27cc51d35dfeb5abce808bf475c38df3528cb7ae8dfbb9c2aa1","subsystem":"engine","recordType":"api-module","id":"module:engine/state/transaction/CommitCoordinator.js","title":"state/transaction/CommitCoordinator","summary":"state/transaction/CommitCoordinator.js — the atomic commit protocol (spec §7).  No authoritative state change happens outside this pipeline (spec rule 19). It runs the 14-step protocol over a sealed transaction envelope and a set of canonical registries, then either commits atomically and returns a signed witness receipt, or rejects with a receipt explaining what failed. The pipeline enforces the CSE safety invariants: single-spend USOs, expected versions, valid + non-revoked authority, fencing-token freshness, predicate and invariant checks, idempotent replay, and a post-state root that matches the committed outputs.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/state/transaction/CommitCoordinator.md","moduleTitle":"state/transaction/CommitCoordinator","source":"engine/state/transaction/CommitCoordinator.js","import":"/engine/state/transaction/CommitCoordinator.js","sourceHash":"f702038a6f10a27cc51d35dfeb5abce808bf475c38df3528cb7ae8dfbb9c2aa1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/transaction/CommitCoordinator.js#0000:createCommitCoordinator","exportIndex":0,"name":"createCommitCoordinator","kind":"function","signature":"createCommitCoordinator(cfg = {})","summary":"Create a commit coordinator bound to a set of canonical registries."}
{"schemaVersion":1,"modulePath":"engine/reference/state/transaction/Idempotency.md","moduleTitle":"state/transaction/Idempotency","source":"engine/state/transaction/Idempotency.js","import":"/engine/state/transaction/Idempotency.js","sourceHash":"8d7cb7b0c12812beb440fd504dd472efffeb57b75c8c028db79f4b31a7757b0d","subsystem":"engine","recordType":"api-module","id":"module:engine/state/transaction/Idempotency.js","title":"state/transaction/Idempotency","summary":"state/transaction/Idempotency.js — replay protection (spec rule 21).  Every potentially duplicated operation carries an idempotency key (`actor:task:operation`). The default registry preserves canonical at-most- once receipts without eviction for CommitCoordinator and other durable callers. A bounded TTL/LRU policy is available only by explicit opt-in for process-local replay caches whose mutation safety lives in canonical state or a separate durable dispatch fence.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/state/transaction/Idempotency.md","moduleTitle":"state/transaction/Idempotency","source":"engine/state/transaction/Idempotency.js","import":"/engine/state/transaction/Idempotency.js","sourceHash":"8d7cb7b0c12812beb440fd504dd472efffeb57b75c8c028db79f4b31a7757b0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/transaction/Idempotency.js#0000:IdempotencyRegistry","exportIndex":0,"name":"IdempotencyRegistry","kind":"class","signature":"class IdempotencyRegistry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/transaction/Idempotency.md","moduleTitle":"state/transaction/Idempotency","source":"engine/state/transaction/Idempotency.js","import":"/engine/state/transaction/Idempotency.js","sourceHash":"8d7cb7b0c12812beb440fd504dd472efffeb57b75c8c028db79f4b31a7757b0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/transaction/Idempotency.js#0001:IDEMPOTENCY_REPLAY_MAX_ENTRIES","exportIndex":1,"name":"IDEMPOTENCY_REPLAY_MAX_ENTRIES","kind":"constant","signature":"IDEMPOTENCY_REPLAY_MAX_ENTRIES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/transaction/Idempotency.md","moduleTitle":"state/transaction/Idempotency","source":"engine/state/transaction/Idempotency.js","import":"/engine/state/transaction/Idempotency.js","sourceHash":"8d7cb7b0c12812beb440fd504dd472efffeb57b75c8c028db79f4b31a7757b0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/transaction/Idempotency.js#0002:IDEMPOTENCY_REPLAY_TTL_MS","exportIndex":2,"name":"IDEMPOTENCY_REPLAY_TTL_MS","kind":"constant","signature":"IDEMPOTENCY_REPLAY_TTL_MS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/transaction/ProposalPool.md","moduleTitle":"state/transaction/ProposalPool","source":"engine/state/transaction/ProposalPool.js","import":"/engine/state/transaction/ProposalPool.js","sourceHash":"30d500678e499b4789dbcd8fdae335687d4543c34d0a91931c727bdea628021a","subsystem":"engine","recordType":"api-module","id":"module:engine/state/transaction/ProposalPool.js","title":"state/transaction/ProposalPool","summary":"state/transaction/ProposalPool.js — Transaction-plane proposal pool (spec §3 plane 5, rules 27–28).  Before a transaction reaches the CommitCoordinator it is a PROPOSAL: a candidate that has not yet won its conflict domain. Two proposals that consume the same USO conflict — they must COMPETE, never silently overwrite (rule 27). The pool groups proposals by the exclusive inputs they contend for, picks at most one winner per conflict set (deterministically), and marks the losers as `superseded` so they re-observe and re-plan (rule 28). The pool decides only candidacy; the commit gate still establishes truth.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/state/transaction/ProposalPool.md","moduleTitle":"state/transaction/ProposalPool","source":"engine/state/transaction/ProposalPool.js","import":"/engine/state/transaction/ProposalPool.js","sourceHash":"30d500678e499b4789dbcd8fdae335687d4543c34d0a91931c727bdea628021a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/transaction/ProposalPool.js#0000:ProposalPool","exportIndex":0,"name":"ProposalPool","kind":"class","signature":"class ProposalPool","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/transaction/ProposalPool.md","moduleTitle":"state/transaction/ProposalPool","source":"engine/state/transaction/ProposalPool.js","import":"/engine/state/transaction/ProposalPool.js","sourceHash":"30d500678e499b4789dbcd8fdae335687d4543c34d0a91931c727bdea628021a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/transaction/ProposalPool.js#0001:PROPOSAL_STATUS","exportIndex":1,"name":"PROPOSAL_STATUS","kind":"constant","signature":"PROPOSAL_STATUS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/transaction/Transaction.md","moduleTitle":"state/transaction/Transaction","source":"engine/state/transaction/Transaction.js","import":"/engine/state/transaction/Transaction.js","sourceHash":"76b4537dbeb294cb335748389d432f52027e8101690eaa8104e53aae15e51353","subsystem":"engine","recordType":"api-module","id":"module:engine/state/transaction/Transaction.js","title":"state/transaction/Transaction","summary":"state/transaction/Transaction.js — the one canonical transaction envelope.  Every authoritative state change flows through this envelope (spec §6). A transaction must STATE everything whose correctness depends on current state: read-set (expected versions), predicates, consumed inputs (USOs), created outputs, capabilities and external-effect intents. Checking only written objects is insufficient — predicate/write-skew anomalies require the read+predicate sets to be declared up front (spec rule 20).  The envelope is a plain, canonicalizable object; its transactionID is the secure hash of its canonical bytes (signature excluded), so the id is stable and tamper-evident.","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/state/transaction/Transaction.md","moduleTitle":"state/transaction/Transaction","source":"engine/state/transaction/Transaction.js","import":"/engine/state/transaction/Transaction.js","sourceHash":"76b4537dbeb294cb335748389d432f52027e8101690eaa8104e53aae15e51353","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/transaction/Transaction.js#0000:makeTransaction","exportIndex":0,"name":"makeTransaction","kind":"function","signature":"makeTransaction(spec = {})","summary":"Build a canonical transaction envelope. Missing fields default to safe empty values so the shape is always complete (no partial transactions)."}
{"schemaVersion":1,"modulePath":"engine/reference/state/transaction/Transaction.md","moduleTitle":"state/transaction/Transaction","source":"engine/state/transaction/Transaction.js","import":"/engine/state/transaction/Transaction.js","sourceHash":"76b4537dbeb294cb335748389d432f52027e8101690eaa8104e53aae15e51353","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/transaction/Transaction.js#0001:transactionBody","exportIndex":1,"name":"transactionBody","kind":"function","signature":"transactionBody(env)","summary":"Canonical bytes of an envelope EXCLUDING id + signature (the signed body)."}
{"schemaVersion":1,"modulePath":"engine/reference/state/transaction/Transaction.md","moduleTitle":"state/transaction/Transaction","source":"engine/state/transaction/Transaction.js","import":"/engine/state/transaction/Transaction.js","sourceHash":"76b4537dbeb294cb335748389d432f52027e8101690eaa8104e53aae15e51353","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/transaction/Transaction.js#0002:sealTransactionFast","exportIndex":2,"name":"sealTransactionFast","kind":"function","signature":"sealTransactionFast(env)","summary":"Attach a synchronous (fast) transactionID. Use for runtime/non-critical transactions where a 32-bit identity is enough."}
{"schemaVersion":1,"modulePath":"engine/reference/state/transaction/Transaction.md","moduleTitle":"state/transaction/Transaction","source":"engine/state/transaction/Transaction.js","import":"/engine/state/transaction/Transaction.js","sourceHash":"76b4537dbeb294cb335748389d432f52027e8101690eaa8104e53aae15e51353","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/transaction/Transaction.js#0003:sealTransaction","exportIndex":3,"name":"sealTransaction","kind":"function","signature":"async sealTransaction(env, signer = null)","summary":"Attach a secure (SHA-256) transactionID and an optional signature produced by an authority signer. The signature covers the transactionID."}
{"schemaVersion":1,"modulePath":"engine/reference/state/transaction/Transaction.md","moduleTitle":"state/transaction/Transaction","source":"engine/state/transaction/Transaction.js","import":"/engine/state/transaction/Transaction.js","sourceHash":"76b4537dbeb294cb335748389d432f52027e8101690eaa8104e53aae15e51353","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/transaction/Transaction.js#0004:TX_SCHEMA_VERSION","exportIndex":4,"name":"TX_SCHEMA_VERSION","kind":"constant","signature":"TX_SCHEMA_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/uso/USO.md","moduleTitle":"state/uso/USO","source":"engine/state/uso/USO.js","import":"/engine/state/uso/USO.js","sourceHash":"30aa210bd56b290be93243c00510e0a30cd7bdb853afb2f3055f5f39eb5ebdef","subsystem":"engine","recordType":"api-module","id":"module:engine/state/uso/USO.js","title":"state/uso/USO","summary":"state/uso/USO.js — Unspent State Output: the single-spend primitive (spec §5).  Adapted from Bitcoin's UTXO model: an exclusive, consumable, finalizable, or scarce resource. A transaction consumes inputs and creates replacement outputs; a consumed output can never be accepted again. Spendability (defined here) is separate from which conflicting spend wins (decided by the commit coordinator), exactly as Bitcoin separates outputs from consensus.  Use USOs for: exclusive ownership, scarce inventory, single-winner decisions, object-mutation rights, permission use, branch finalization, irreversible commits. Do NOT use them for hover/particles/observations/debug notes.","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/state/uso/USO.md","moduleTitle":"state/uso/USO","source":"engine/state/uso/USO.js","import":"/engine/state/uso/USO.js","sourceHash":"30aa210bd56b290be93243c00510e0a30cd7bdb853afb2f3055f5f39eb5ebdef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/uso/USO.js#0000:makeUSO","exportIndex":0,"name":"makeUSO","kind":"function","signature":"makeUSO(spec = {})","summary":"Create an unspent state output. The id is derived from kind + entity + a discriminator (e.g. version) so distinct outputs get distinct ids and equal ones collapse. Payload is opaque domain data."}
{"schemaVersion":1,"modulePath":"engine/reference/state/uso/USO.md","moduleTitle":"state/uso/USO","source":"engine/state/uso/USO.js","import":"/engine/state/uso/USO.js","sourceHash":"30aa210bd56b290be93243c00510e0a30cd7bdb853afb2f3055f5f39eb5ebdef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/uso/USO.js#0001:objectVersionOutput","exportIndex":1,"name":"objectVersionOutput","kind":"function","signature":"objectVersionOutput(entity, versionId, payload = null)","summary":"Convenience: an object-version output (the common mutable-object case)."}
{"schemaVersion":1,"modulePath":"engine/reference/state/uso/USO.md","moduleTitle":"state/uso/USO","source":"engine/state/uso/USO.js","import":"/engine/state/uso/USO.js","sourceHash":"30aa210bd56b290be93243c00510e0a30cd7bdb853afb2f3055f5f39eb5ebdef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/uso/USO.js#0002:isUSO","exportIndex":2,"name":"isUSO","kind":"function","signature":"isUSO(v)","summary":"True if a value looks like a USO (has a string id and a kind)."}
{"schemaVersion":1,"modulePath":"engine/reference/state/uso/USO.md","moduleTitle":"state/uso/USO","source":"engine/state/uso/USO.js","import":"/engine/state/uso/USO.js","sourceHash":"30aa210bd56b290be93243c00510e0a30cd7bdb853afb2f3055f5f39eb5ebdef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/uso/USO.js#0003:USO_KIND","exportIndex":3,"name":"USO_KIND","kind":"constant","signature":"USO_KIND","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/uso/USORegistry.md","moduleTitle":"state/uso/USORegistry","source":"engine/state/uso/USORegistry.js","import":"/engine/state/uso/USORegistry.js","sourceHash":"0f8678a8f2a6094162b7cd3b59e548750d376aa6a72b81dd4198d8fc85f2911a","subsystem":"engine","recordType":"api-module","id":"module:engine/state/uso/USORegistry.js","title":"state/uso/USORegistry","summary":"state/uso/USORegistry.js — the unspent-output set + double-commit detector.  Tracks which outputs currently exist (unspent) and which have been consumed (spent). Enforces the core safety invariant: an output is never committed as spent twice (spec §19). A spend transaction's inputs must ALL be currently unspent; on commit they move to the spent set and the new outputs are created atomically by the caller (CommitCoordinator).","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/state/uso/USORegistry.md","moduleTitle":"state/uso/USORegistry","source":"engine/state/uso/USORegistry.js","import":"/engine/state/uso/USORegistry.js","sourceHash":"0f8678a8f2a6094162b7cd3b59e548750d376aa6a72b81dd4198d8fc85f2911a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/uso/USORegistry.js#0000:USORegistry","exportIndex":0,"name":"USORegistry","kind":"class","signature":"class USORegistry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/util/canonical.md","moduleTitle":"state/util/canonical","source":"engine/state/util/canonical.js","import":"/engine/state/util/canonical.js","sourceHash":"4bcf05c213e3ed7871ef155b3261e112a681401d96f2535b8a657c746cb41111","subsystem":"engine","recordType":"api-module","id":"module:engine/state/util/canonical.js","title":"state/util/canonical","summary":"state/util/canonical.js — deterministic serialization + self-describing, algorithm-tagged hash IDs (CSE Integrity plane, spec §13).  Equivalent data MUST produce byte-identical bytes before hashing or signing (spec rule 58). We implement an RFC 8785-style canonical JSON: object keys are sorted by UTF-16 code unit, arrays keep order, no insignificant whitespace, and non-finite numbers are rejected. Hash IDs are multihash-style (`alg:bits:hex`) so the algorithm can migrate later (spec rule 59).  Two tiers, matching the engine's hybrid integrity policy: • hot-path id   — synchronous 32-bit FNV (runtime identity / state roots). • authority id  — async Web Crypto SHA-256 (capabilities, receipts, checkpoints) where security matters.","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/state/util/canonical.md","moduleTitle":"state/util/canonical","source":"engine/state/util/canonical.js","import":"/engine/state/util/canonical.js","sourceHash":"4bcf05c213e3ed7871ef155b3261e112a681401d96f2535b8a657c746cb41111","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/util/canonical.js#0000:canonicalize","exportIndex":0,"name":"canonicalize","kind":"function","signature":"canonicalize(value)","summary":"Produce a deterministic canonical JSON string for any JSON-compatible value. Object keys are sorted; Maps and Sets are normalized; arrays preserve order."}
{"schemaVersion":1,"modulePath":"engine/reference/state/util/canonical.md","moduleTitle":"state/util/canonical","source":"engine/state/util/canonical.js","import":"/engine/state/util/canonical.js","sourceHash":"4bcf05c213e3ed7871ef155b3261e112a681401d96f2535b8a657c746cb41111","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/util/canonical.js#0001:canonicalBytes","exportIndex":1,"name":"canonicalBytes","kind":"function","signature":"canonicalBytes(value, { domain = DOMAIN_SEPARATOR, schemaVersion = '' } = {})","summary":"Domain-separated canonical bytes string used as hash/sign input (spec §13)."}
{"schemaVersion":1,"modulePath":"engine/reference/state/util/canonical.md","moduleTitle":"state/util/canonical","source":"engine/state/util/canonical.js","import":"/engine/state/util/canonical.js","sourceHash":"4bcf05c213e3ed7871ef155b3261e112a681401d96f2535b8a657c746cb41111","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/util/canonical.js#0002:hashIdFast","exportIndex":2,"name":"hashIdFast","kind":"function","signature":"hashIdFast(value, opts = {})","summary":"Synchronous hot-path id: 32-bit FNV over canonical bytes. Tagged so it is self-describing and migratable. Fast, NOT collision-resistant — identity for runtime state, never a security claim (spec rule 52)."}
{"schemaVersion":1,"modulePath":"engine/reference/state/util/canonical.md","moduleTitle":"state/util/canonical","source":"engine/state/util/canonical.js","import":"/engine/state/util/canonical.js","sourceHash":"4bcf05c213e3ed7871ef155b3261e112a681401d96f2535b8a657c746cb41111","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/util/canonical.js#0003:hashIdSecure","exportIndex":3,"name":"hashIdSecure","kind":"function","signature":"async hashIdSecure(value, opts = {})","summary":"Async authority id: Web Crypto SHA-256 over canonical bytes. Use for capabilities, witness receipts, checkpoints, and signed transactions. Throws if SubtleCrypto is unavailable (callers degrade explicitly)."}
{"schemaVersion":1,"modulePath":"engine/reference/state/util/canonical.md","moduleTitle":"state/util/canonical","source":"engine/state/util/canonical.js","import":"/engine/state/util/canonical.js","sourceHash":"4bcf05c213e3ed7871ef155b3261e112a681401d96f2535b8a657c746cb41111","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/util/canonical.js#0004:parseHashId","exportIndex":4,"name":"parseHashId","kind":"function","signature":"parseHashId(id)","summary":"Parse a tagged hash id into `{ alg, bits, hex }` or null."}
{"schemaVersion":1,"modulePath":"engine/reference/state/util/canonical.md","moduleTitle":"state/util/canonical","source":"engine/state/util/canonical.js","import":"/engine/state/util/canonical.js","sourceHash":"4bcf05c213e3ed7871ef155b3261e112a681401d96f2535b8a657c746cb41111","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/util/canonical.js#0005:hashIdEquals","exportIndex":5,"name":"hashIdEquals","kind":"function","signature":"hashIdEquals(a, b)","summary":"True when two tagged hash ids are byte-equal (same algorithm + digest)."}
{"schemaVersion":1,"modulePath":"engine/reference/state/util/canonical.md","moduleTitle":"state/util/canonical","source":"engine/state/util/canonical.js","import":"/engine/state/util/canonical.js","sourceHash":"4bcf05c213e3ed7871ef155b3261e112a681401d96f2535b8a657c746cb41111","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/util/canonical.js#0006:DOMAIN_SEPARATOR","exportIndex":6,"name":"DOMAIN_SEPARATOR","kind":"constant","signature":"DOMAIN_SEPARATOR","summary":"Domain separator prefix so hashes of different structures never collide."}
{"schemaVersion":1,"modulePath":"engine/reference/state/util/hashing.md","moduleTitle":"state/util/hashing","source":"engine/state/util/hashing.js","import":"/engine/state/util/hashing.js","sourceHash":"32e1db855efe92846cae55e3ad907198286d09d08fe968fa609a35a4e8617528","subsystem":"engine","recordType":"api-module","id":"module:engine/state/util/hashing.js","title":"state/util/hashing","summary":"state/util/hashing.js — canonical, order-independent identity hashing for the URC fact/state layers. Reuses the engine's deterministic ChecksumMath rather than rolling new hashes (layer law: \"hash = identity\", nothing more).","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/state/util/hashing.md","moduleTitle":"state/util/hashing","source":"engine/state/util/hashing.js","import":"/engine/state/util/hashing.js","sourceHash":"32e1db855efe92846cae55e3ad907198286d09d08fe968fa609a35a4e8617528","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/util/hashing.js#0000:hashFactString","exportIndex":0,"name":"hashFactString","kind":"function","signature":"hashFactString(value)","summary":"Deterministic 32-bit hash of a single string fact."}
{"schemaVersion":1,"modulePath":"engine/reference/state/util/hashing.md","moduleTitle":"state/util/hashing","source":"engine/state/util/hashing.js","import":"/engine/state/util/hashing.js","sourceHash":"32e1db855efe92846cae55e3ad907198286d09d08fe968fa609a35a4e8617528","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/util/hashing.js#0001:hashU32Sequence","exportIndex":1,"name":"hashU32Sequence","kind":"function","signature":"hashU32Sequence(values)","summary":"Deterministic 32-bit hash of an ordered sequence of uint32 (e.g. a packed pattern)."}
{"schemaVersion":1,"modulePath":"engine/reference/state/util/hashing.md","moduleTitle":"state/util/hashing","source":"engine/state/util/hashing.js","import":"/engine/state/util/hashing.js","sourceHash":"32e1db855efe92846cae55e3ad907198286d09d08fe968fa609a35a4e8617528","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/util/hashing.js#0002:canonicalSetHash","exportIndex":2,"name":"canonicalSetHash","kind":"function","signature":"canonicalSetHash(facts)","summary":"Canonical, ORDER-INDEPENDENT hash of a set of facts. Facts are stringified, de-duplicated and sorted so that {A,B} and {B,A} collapse to the same id — this is what makes `State.id = hash(canonicalFacts)` sequence-free."}
{"schemaVersion":1,"modulePath":"engine/reference/state/util/hashing.md","moduleTitle":"state/util/hashing","source":"engine/state/util/hashing.js","import":"/engine/state/util/hashing.js","sourceHash":"32e1db855efe92846cae55e3ad907198286d09d08fe968fa609a35a4e8617528","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/util/hashing.js#0003:hexId","exportIndex":3,"name":"hexId","kind":"function","signature":"hexId(value)","summary":"Stable hex fingerprint for an unsigned 32-bit value (cold-path display/keys)."}
{"schemaVersion":1,"modulePath":"engine/reference/state/util/hashing.md","moduleTitle":"state/util/hashing","source":"engine/state/util/hashing.js","import":"/engine/state/util/hashing.js","sourceHash":"32e1db855efe92846cae55e3ad907198286d09d08fe968fa609a35a4e8617528","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/util/hashing.js#0004:hashIdTailUint32","exportIndex":4,"name":"hashIdTailUint32","kind":"function","signature":"hashIdTailUint32(hashId, fallback = 0)","summary":"Parse a tagged hash id's low 32-bit hex tail for deterministic bucketing/seeding."}
{"schemaVersion":1,"modulePath":"engine/reference/state/verify/ModelCheck.md","moduleTitle":"state/verify/ModelCheck","source":"engine/state/verify/ModelCheck.js","import":"/engine/state/verify/ModelCheck.js","sourceHash":"edaa1923cfeeeb55341de9af3c66c9a20cd2fca049c567cdef9e5ade1d4a7a71","subsystem":"engine","recordType":"api-module","id":"module:engine/state/verify/ModelCheck.js","title":"state/verify/ModelCheck","summary":"state/verify/ModelCheck.js — browser-runnable bounded model checker for the CSE commit state machine (spec §19, rule 66: model-check the core protocol).  This is the executable companion to verify/cse-core.tla. Where TLC would exhaustively explore the TLA+ model, this performs the SAME exhaustive exploration in JavaScript so it runs inside the verify.html harness with no external tooling. It enumerates every reachable state under all interleavings of commit actions and checks the core safety invariants on each:  • NoDoubleSpend     — an output is never simultaneously unspent and spent. • SingleSpend       — no output is consumed by two committed transactions. • EveryCommitWitnessed — every committed transaction has a witness.  A transaction is enabled iff it is uncommitted and all of its inputs are still unspent; applying it consumes inputs, creates outputs, and records a witness.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/state/verify/ModelCheck.md","moduleTitle":"state/verify/ModelCheck","source":"engine/state/verify/ModelCheck.js","import":"/engine/state/verify/ModelCheck.js","sourceHash":"edaa1923cfeeeb55341de9af3c66c9a20cd2fca049c567cdef9e5ade1d4a7a71","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/verify/ModelCheck.js#0000:exploreCommitMachine","exportIndex":0,"name":"exploreCommitMachine","kind":"function","signature":"exploreCommitMachine(cfg = {})","summary":"Exhaustively explore the commit state machine."}
{"schemaVersion":1,"modulePath":"engine/reference/state/version.md","moduleTitle":"state/version","source":"engine/state/version.js","import":"/engine/state/version.js","sourceHash":"713dcfc117eb6abe25754ceae9ad4e521192260fc265fd0d3b00b0ed74f13389","subsystem":"engine","recordType":"api-module","id":"module:engine/state/version.js","title":"state/version","summary":"============================================================ Universal Resonance State Engine (URC) — version source. ============================================================ Order-on-demand state engine: unordered facts, a resonance codebook, causal order only when forced, branches when order matters, and commit gates that decide final truth. The machine runs in order; the MODEL does not assume order unless forced.  Versions are facts too: migration rules reference these stamps, e.g. \"URC-v1 dense #88 maps to URC-v2 dense #402 iff hashID and symbolicSig match\". ============================================================","exportCount":11}
{"schemaVersion":1,"modulePath":"engine/reference/state/version.md","moduleTitle":"state/version","source":"engine/state/version.js","import":"/engine/state/version.js","sourceHash":"713dcfc117eb6abe25754ceae9ad4e521192260fc265fd0d3b00b0ed74f13389","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/version.js#0000:urcVersionStamp","exportIndex":0,"name":"urcVersionStamp","kind":"function","signature":"urcVersionStamp()","summary":"Version stamp embedded on every State/CodeEntry/Receipt for migration + audit."}
{"schemaVersion":1,"modulePath":"engine/reference/state/version.md","moduleTitle":"state/version","source":"engine/state/version.js","import":"/engine/state/version.js","sourceHash":"713dcfc117eb6abe25754ceae9ad4e521192260fc265fd0d3b00b0ed74f13389","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/version.js#0001:URC_VERSION","exportIndex":1,"name":"URC_VERSION","kind":"constant","signature":"URC_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/version.md","moduleTitle":"state/version","source":"engine/state/version.js","import":"/engine/state/version.js","sourceHash":"713dcfc117eb6abe25754ceae9ad4e521192260fc265fd0d3b00b0ed74f13389","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/version.js#0002:URC_CODEBOOK","exportIndex":2,"name":"URC_CODEBOOK","kind":"constant","signature":"URC_CODEBOOK","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/version.md","moduleTitle":"state/version","source":"engine/state/version.js","import":"/engine/state/version.js","sourceHash":"713dcfc117eb6abe25754ceae9ad4e521192260fc265fd0d3b00b0ed74f13389","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/version.js#0003:URC_SCHEMA","exportIndex":3,"name":"URC_SCHEMA","kind":"constant","signature":"URC_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/version.md","moduleTitle":"state/version","source":"engine/state/version.js","import":"/engine/state/version.js","sourceHash":"713dcfc117eb6abe25754ceae9ad4e521192260fc265fd0d3b00b0ed74f13389","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/version.js#0004:URC_TRANSFORM","exportIndex":4,"name":"URC_TRANSFORM","kind":"constant","signature":"URC_TRANSFORM","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/version.md","moduleTitle":"state/version","source":"engine/state/version.js","import":"/engine/state/version.js","sourceHash":"713dcfc117eb6abe25754ceae9ad4e521192260fc265fd0d3b00b0ed74f13389","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/version.js#0005:URC_BUILD_TAG","exportIndex":5,"name":"URC_BUILD_TAG","kind":"constant","signature":"URC_BUILD_TAG","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/version.md","moduleTitle":"state/version","source":"engine/state/version.js","import":"/engine/state/version.js","sourceHash":"713dcfc117eb6abe25754ceae9ad4e521192260fc265fd0d3b00b0ed74f13389","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/version.js#0006:CSE_TX_SCHEMA","exportIndex":6,"name":"CSE_TX_SCHEMA","kind":"constant","signature":"CSE_TX_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/version.md","moduleTitle":"state/version","source":"engine/state/version.js","import":"/engine/state/version.js","sourceHash":"713dcfc117eb6abe25754ceae9ad4e521192260fc265fd0d3b00b0ed74f13389","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/version.js#0007:CSE_VALIDATOR","exportIndex":7,"name":"CSE_VALIDATOR","kind":"constant","signature":"CSE_VALIDATOR","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/version.md","moduleTitle":"state/version","source":"engine/state/version.js","import":"/engine/state/version.js","sourceHash":"713dcfc117eb6abe25754ceae9ad4e521192260fc265fd0d3b00b0ed74f13389","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/version.js#0008:CSE_POLICY","exportIndex":8,"name":"CSE_POLICY","kind":"constant","signature":"CSE_POLICY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/version.md","moduleTitle":"state/version","source":"engine/state/version.js","import":"/engine/state/version.js","sourceHash":"713dcfc117eb6abe25754ceae9ad4e521192260fc265fd0d3b00b0ed74f13389","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/version.js#0009:CSE_PHASES","exportIndex":9,"name":"CSE_PHASES","kind":"constant","signature":"CSE_PHASES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/version.md","moduleTitle":"state/version","source":"engine/state/version.js","import":"/engine/state/version.js","sourceHash":"713dcfc117eb6abe25754ceae9ad4e521192260fc265fd0d3b00b0ed74f13389","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/version.js#0010:URC_FULL","exportIndex":10,"name":"URC_FULL","kind":"constant","signature":"URC_FULL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/witness/Witness.md","moduleTitle":"state/witness/Witness","source":"engine/state/witness/Witness.js","import":"/engine/state/witness/Witness.js","sourceHash":"3ec2fd8fbd5904c13b6a449f60b166140defbe3ecd725198e5006f390653b320","subsystem":"engine","recordType":"api-module","id":"module:engine/state/witness/Witness.js","title":"state/witness/Witness","summary":"state/witness/Witness.js — debug proof for every projection / commit.  Replaces \"1 happened, 2 happened, 3 happened\" timelines with: these facts existed · these rules fired · these branches were possible · this projection was shown · this commit was chosen.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/state/witness/Witness.md","moduleTitle":"state/witness/Witness","source":"engine/state/witness/Witness.js","import":"/engine/state/witness/Witness.js","sourceHash":"3ec2fd8fbd5904c13b6a449f60b166140defbe3ecd725198e5006f390653b320","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/witness/Witness.js#0000:makeWitness","exportIndex":0,"name":"makeWitness","kind":"function","signature":"makeWitness(w = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/witness/Witness.md","moduleTitle":"state/witness/Witness","source":"engine/state/witness/Witness.js","import":"/engine/state/witness/Witness.js","sourceHash":"3ec2fd8fbd5904c13b6a449f60b166140defbe3ecd725198e5006f390653b320","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/witness/Witness.js#0001:makeReceipt","exportIndex":1,"name":"makeReceipt","kind":"function","signature":"makeReceipt(r = {})","summary":"Build a full CSE witness receipt for a transaction commit decision (spec §7). The receipt proves WHAT was checked and WHAT the engine decided — it does not claim the input observations were objectively true. Every committed transition has exactly one receipt (safety invariant, spec §19)."}
{"schemaVersion":1,"modulePath":"engine/reference/state/workflow/Inbox.md","moduleTitle":"state/workflow/Inbox","source":"engine/state/workflow/Inbox.js","import":"/engine/state/workflow/Inbox.js","sourceHash":"3044f5af81824fba14614f1f08602ba4fc8b564ee1682107ebd2f78beee6aee7","subsystem":"engine","recordType":"api-module","id":"module:engine/state/workflow/Inbox.js","title":"state/workflow/Inbox","summary":"state/workflow/Inbox.js — idempotent inbox / effect receiver (spec §11, rule 42).  The outbox delivers at-least-once, so the receiving side MUST deduplicate by the stable effect id to make the end-to-end behavior effectively-once. The inbox records the first result for each effect id; a redelivery returns the stored result and does NOT re-run the handler (mirrors the transaction IdempotencyRegistry, but for inbound external effects).","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/state/workflow/Inbox.md","moduleTitle":"state/workflow/Inbox","source":"engine/state/workflow/Inbox.js","import":"/engine/state/workflow/Inbox.js","sourceHash":"3044f5af81824fba14614f1f08602ba4fc8b564ee1682107ebd2f78beee6aee7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/workflow/Inbox.js#0000:Inbox","exportIndex":0,"name":"Inbox","kind":"class","signature":"class Inbox","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/workflow/Outbox.md","moduleTitle":"state/workflow/Outbox","source":"engine/state/workflow/Outbox.js","import":"/engine/state/workflow/Outbox.js","sourceHash":"f0b780d825cf53cb8542712c4f0667bb2d59ac18759fc56b46bd0b2937b74c42","subsystem":"engine","recordType":"api-module","id":"module:engine/state/workflow/Outbox.js","title":"state/workflow/Outbox","summary":"state/workflow/Outbox.js — transactional outbox (spec §11, rule 41).  A canonical commit cannot atomically control an unrelated email server, payment processor, OS call, or device. CSE solves this dual-write problem by writing an external-effect INTENT into the same atomic transaction as the internal state change (the CommitCoordinator appends intents here on commit); a separate worker later delivers each intent and receivers deduplicate by a stable effect id (rule 42). This module owns the durable intent queue and its status lifecycle:  pending → delivering → delivered → acked ↘ failed → (reconcile | retry)  Re-recording the same effect id is a no-op, so commit retries never enqueue an effect twice. Delivery is at-least-once; idempotent receivers (see Inbox.js) make the end-to-end behavior effectively-once.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/state/workflow/Outbox.md","moduleTitle":"state/workflow/Outbox","source":"engine/state/workflow/Outbox.js","import":"/engine/state/workflow/Outbox.js","sourceHash":"f0b780d825cf53cb8542712c4f0667bb2d59ac18759fc56b46bd0b2937b74c42","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/workflow/Outbox.js#0000:Outbox","exportIndex":0,"name":"Outbox","kind":"class","signature":"class Outbox","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/workflow/Outbox.md","moduleTitle":"state/workflow/Outbox","source":"engine/state/workflow/Outbox.js","import":"/engine/state/workflow/Outbox.js","sourceHash":"f0b780d825cf53cb8542712c4f0667bb2d59ac18759fc56b46bd0b2937b74c42","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/workflow/Outbox.js#0001:makeEffectIntent","exportIndex":1,"name":"makeEffectIntent","kind":"function","signature":"makeEffectIntent(spec = {})","summary":"Declare an external-effect intent. Every effect must state its reversibility profile so the workflow plane knows whether it can be compensated, retried, or must pause for approval (spec §11)."}
{"schemaVersion":1,"modulePath":"engine/reference/state/workflow/Outbox.md","moduleTitle":"state/workflow/Outbox","source":"engine/state/workflow/Outbox.js","import":"/engine/state/workflow/Outbox.js","sourceHash":"f0b780d825cf53cb8542712c4f0667bb2d59ac18759fc56b46bd0b2937b74c42","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/workflow/Outbox.js#0002:EFFECT_STATUS","exportIndex":2,"name":"EFFECT_STATUS","kind":"constant","signature":"EFFECT_STATUS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/workflow/Reconciler.md","moduleTitle":"state/workflow/Reconciler","source":"engine/state/workflow/Reconciler.js","import":"/engine/state/workflow/Reconciler.js","sourceHash":"b553fd85501660cc794d8df70528641de86ce7b70140e3236733916eec65373f","subsystem":"engine","recordType":"api-module","id":"module:engine/state/workflow/Reconciler.js","title":"state/workflow/Reconciler","summary":"state/workflow/Reconciler.js — external-effect reconciler (spec §11, rule 43).  When a delivery outcome is unknown (timeout, crash between send and ack, etc.) the effect is parked in the outbox as RECONCILE rather than guessed. The reconciler queries the external system's authoritative status for each parked effect and resolves it: confirm (it actually happened → ack), retry (it did not happen and is safe to resend → back to pending), or escalate (needs human authority attention). Ambiguity is resolved by EVIDENCE, never assumption.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/state/workflow/Reconciler.md","moduleTitle":"state/workflow/Reconciler","source":"engine/state/workflow/Reconciler.js","import":"/engine/state/workflow/Reconciler.js","sourceHash":"b553fd85501660cc794d8df70528641de86ce7b70140e3236733916eec65373f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/workflow/Reconciler.js#0000:Reconciler","exportIndex":0,"name":"Reconciler","kind":"class","signature":"class Reconciler","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/workflow/Reconciler.md","moduleTitle":"state/workflow/Reconciler","source":"engine/state/workflow/Reconciler.js","import":"/engine/state/workflow/Reconciler.js","sourceHash":"b553fd85501660cc794d8df70528641de86ce7b70140e3236733916eec65373f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/workflow/Reconciler.js#0001:RECONCILE_RESULT","exportIndex":1,"name":"RECONCILE_RESULT","kind":"constant","signature":"RECONCILE_RESULT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/workflow/Saga.md","moduleTitle":"state/workflow/Saga","source":"engine/state/workflow/Saga.js","import":"/engine/state/workflow/Saga.js","sourceHash":"12e52301526fb2bfd492c45db5f1df06966e58aad36e8a66291084d958e78f50","subsystem":"engine","recordType":"api-module","id":"module:engine/state/workflow/Saga.js","title":"state/workflow/Saga","summary":"state/workflow/Saga.js — saga coordinator + compensation registry (spec §11).  For multi-step workflows that span commit domains or external systems, true distributed atomic commit is avoided where possible (rule 40). Instead a saga runs a sequence of LOCAL steps, each with a forward action and a compensating action. If a step fails, the already-completed steps are compensated in reverse order. Compensation is a NEW action, not deletion of history (rule 44), and some effects cannot be perfectly undone — every saga declares a PIVOT step after which forward-only recovery applies because compensation is no longer possible (rule 45, the irreversible pivot).","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/state/workflow/Saga.md","moduleTitle":"state/workflow/Saga","source":"engine/state/workflow/Saga.js","import":"/engine/state/workflow/Saga.js","sourceHash":"12e52301526fb2bfd492c45db5f1df06966e58aad36e8a66291084d958e78f50","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/workflow/Saga.js#0000:Saga","exportIndex":0,"name":"Saga","kind":"class","signature":"class Saga","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/workflow/Saga.md","moduleTitle":"state/workflow/Saga","source":"engine/state/workflow/Saga.js","import":"/engine/state/workflow/Saga.js","sourceHash":"12e52301526fb2bfd492c45db5f1df06966e58aad36e8a66291084d958e78f50","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/workflow/Saga.js#0001:sagaStep","exportIndex":1,"name":"sagaStep","kind":"function","signature":"sagaStep(s)","summary":"Define a saga step."}
{"schemaVersion":1,"modulePath":"engine/reference/state/workflow/Saga.md","moduleTitle":"state/workflow/Saga","source":"engine/state/workflow/Saga.js","import":"/engine/state/workflow/Saga.js","sourceHash":"12e52301526fb2bfd492c45db5f1df06966e58aad36e8a66291084d958e78f50","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/workflow/Saga.js#0002:SAGA_STATUS","exportIndex":2,"name":"SAGA_STATUS","kind":"constant","signature":"SAGA_STATUS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/worldmodel/AffordanceRegistry.md","moduleTitle":"state/worldmodel/AffordanceRegistry","source":"engine/state/worldmodel/AffordanceRegistry.js","import":"/engine/state/worldmodel/AffordanceRegistry.js","sourceHash":"d506b519cfb7fd2d6c1c2c2772b3a19b739563347e7d48abce9674de8e692b1b","subsystem":"engine","recordType":"api-module","id":"module:engine/state/worldmodel/AffordanceRegistry.js","title":"state/worldmodel/AffordanceRegistry","summary":"state/worldmodel/AffordanceRegistry.js — declares LEGAL actions rather than letting the model invent tool syntax (spec §15 \"Affordance registry\", rule 34/50).  Each affordance binds an action to an object type and declares: preconditions (named predicates evaluated against context), the capability required to do it, predicted effects, a risk level, and a rollback/compensation hint. The planner asks \"what may I legally do to this object?\" and the registry answers from explicit declarations. High-risk / irreversible actions require explicit approval — the registry surfaces this but NEVER authorizes by itself (the capability + commit layer remains the authority).","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/state/worldmodel/AffordanceRegistry.md","moduleTitle":"state/worldmodel/AffordanceRegistry","source":"engine/state/worldmodel/AffordanceRegistry.js","import":"/engine/state/worldmodel/AffordanceRegistry.js","sourceHash":"d506b519cfb7fd2d6c1c2c2772b3a19b739563347e7d48abce9674de8e692b1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/worldmodel/AffordanceRegistry.js#0000:AffordanceRegistry","exportIndex":0,"name":"AffordanceRegistry","kind":"class","signature":"class AffordanceRegistry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/worldmodel/AffordanceRegistry.md","moduleTitle":"state/worldmodel/AffordanceRegistry","source":"engine/state/worldmodel/AffordanceRegistry.js","import":"/engine/state/worldmodel/AffordanceRegistry.js","sourceHash":"d506b519cfb7fd2d6c1c2c2772b3a19b739563347e7d48abce9674de8e692b1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/worldmodel/AffordanceRegistry.js#0001:makeAffordance","exportIndex":1,"name":"makeAffordance","kind":"function","signature":"makeAffordance(a = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/worldmodel/AffordanceRegistry.md","moduleTitle":"state/worldmodel/AffordanceRegistry","source":"engine/state/worldmodel/AffordanceRegistry.js","import":"/engine/state/worldmodel/AffordanceRegistry.js","sourceHash":"d506b519cfb7fd2d6c1c2c2772b3a19b739563347e7d48abce9674de8e692b1b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/worldmodel/AffordanceRegistry.js#0002:RISK","exportIndex":2,"name":"RISK","kind":"constant","signature":"RISK","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/worldmodel/BeliefStore.md","moduleTitle":"state/worldmodel/BeliefStore","source":"engine/state/worldmodel/BeliefStore.js","import":"/engine/state/worldmodel/BeliefStore.js","sourceHash":"983aee55f515dff1e008f6f4d2bf057b757792435e803675691f61d7cdab8cc8","subsystem":"engine","recordType":"api-module","id":"module:engine/state/worldmodel/BeliefStore.js","title":"state/worldmodel/BeliefStore","summary":"state/worldmodel/BeliefStore.js — separates the AI's belief model from canonical state (spec §15, rules 46–48).  The world model maintains five strictly-separated worlds:  CANONICAL — authoritative committed state (mirror, written ONLY by commit) OBSERVED  — currently sensed / retrieved information BELIEF    — inferences and uncertain interpretations PREDICTED — counterfactual futures from the model/sandbox PROPOSED  — the branch an agent wants to commit  Hard rule (47): a prediction or belief can NEVER become canonical directly. This store exposes NO method to write CANONICAL except `syncCanonical`, which represents the commit gate mirroring an already-committed result back into the model. predict()/believe()/observe()/propose() can never touch it.  Rule 48: uncertainty grows with prediction horizon unless new evidence reduces it — predict() decays confidence by horizon; observe() can restore it.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/state/worldmodel/BeliefStore.md","moduleTitle":"state/worldmodel/BeliefStore","source":"engine/state/worldmodel/BeliefStore.js","import":"/engine/state/worldmodel/BeliefStore.js","sourceHash":"983aee55f515dff1e008f6f4d2bf057b757792435e803675691f61d7cdab8cc8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/worldmodel/BeliefStore.js#0000:BeliefStore","exportIndex":0,"name":"BeliefStore","kind":"class","signature":"class BeliefStore","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/worldmodel/BeliefStore.md","moduleTitle":"state/worldmodel/BeliefStore","source":"engine/state/worldmodel/BeliefStore.js","import":"/engine/state/worldmodel/BeliefStore.js","sourceHash":"983aee55f515dff1e008f6f4d2bf057b757792435e803675691f61d7cdab8cc8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/worldmodel/BeliefStore.js#0001:WORLD","exportIndex":1,"name":"WORLD","kind":"constant","signature":"WORLD","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/worldmodel/CausalDynamics.md","moduleTitle":"state/worldmodel/CausalDynamics","source":"engine/state/worldmodel/CausalDynamics.js","import":"/engine/state/worldmodel/CausalDynamics.js","sourceHash":"d03ce880a448e2e6eb37573fab8b6ea5a0be5e0bef74f1e2647bf36d71a12e74","subsystem":"engine","recordType":"api-module","id":"module:engine/state/worldmodel/CausalDynamics.js","title":"state/worldmodel/CausalDynamics","summary":"state/worldmodel/CausalDynamics.js — AI World Model causal-dynamics model (spec §15 \"Causal dynamics model\", rules 47–49).  Predicts how the world MAY change under an action: a registry of declared transition functions, each producing a predicted next state plus an effect summary the sandbox/planner can score. Predictions are hypotheses only — they never mutate canonical state (rule 47). An unknown action is reported as `known:false` and leaves state unchanged rather than guessing. The model also learns from outcomes: feeding observed effects back adjusts a per-action confidence so planning becomes calibrated (rule 49), pairing with ToolEffectModel's discrepancy tracking.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/state/worldmodel/CausalDynamics.md","moduleTitle":"state/worldmodel/CausalDynamics","source":"engine/state/worldmodel/CausalDynamics.js","import":"/engine/state/worldmodel/CausalDynamics.js","sourceHash":"d03ce880a448e2e6eb37573fab8b6ea5a0be5e0bef74f1e2647bf36d71a12e74","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/worldmodel/CausalDynamics.js#0000:CausalDynamics","exportIndex":0,"name":"CausalDynamics","kind":"class","signature":"class CausalDynamics","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/worldmodel/ObjectGraph.md","moduleTitle":"state/worldmodel/ObjectGraph","source":"engine/state/worldmodel/ObjectGraph.js","import":"/engine/state/worldmodel/ObjectGraph.js","sourceHash":"0f19f945cb1cba52d180a9da42c244fcb0a96a138554e7fda5fc70a653dedd5c","subsystem":"engine","recordType":"api-module","id":"module:engine/state/worldmodel/ObjectGraph.js","title":"state/worldmodel/ObjectGraph","summary":"state/worldmodel/ObjectGraph.js — object identity + relationship graph (spec §15 \"Object identity graph\" + \"Spatial and relationship graph\").  Tracks objects with STABLE logical ids (independent of their content version) and typed directed relations between them: inside, near, connected-to, blocks, contains, reachable-from, visible-from, depends-on. Relations support reachability queries (e.g. \"is room A reachable from room B over `connected`?\") which the planner uses without ever asserting canonical truth.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/state/worldmodel/ObjectGraph.md","moduleTitle":"state/worldmodel/ObjectGraph","source":"engine/state/worldmodel/ObjectGraph.js","import":"/engine/state/worldmodel/ObjectGraph.js","sourceHash":"0f19f945cb1cba52d180a9da42c244fcb0a96a138554e7fda5fc70a653dedd5c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/worldmodel/ObjectGraph.js#0000:ObjectGraph","exportIndex":0,"name":"ObjectGraph","kind":"class","signature":"class ObjectGraph","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/worldmodel/ObjectGraph.md","moduleTitle":"state/worldmodel/ObjectGraph","source":"engine/state/worldmodel/ObjectGraph.js","import":"/engine/state/worldmodel/ObjectGraph.js","sourceHash":"0f19f945cb1cba52d180a9da42c244fcb0a96a138554e7fda5fc70a653dedd5c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/worldmodel/ObjectGraph.js#0001:RELATION","exportIndex":1,"name":"RELATION","kind":"constant","signature":"RELATION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/worldmodel/PredictionSandbox.md","moduleTitle":"state/worldmodel/PredictionSandbox","source":"engine/state/worldmodel/PredictionSandbox.js","import":"/engine/state/worldmodel/PredictionSandbox.js","sourceHash":"d8e4b02a9e4996f6c1aa4fc783d1d0453cbbe83196926571754d0488fc85057d","subsystem":"engine","recordType":"api-module","id":"module:engine/state/worldmodel/PredictionSandbox.js","title":"state/worldmodel/PredictionSandbox","summary":"state/worldmodel/PredictionSandbox.js — isolated counterfactual rollouts (spec §15 \"Prediction sandbox\", rules 18, 47, 48).  The model proposes multiple futures WITHOUT modifying canonical state. Every produced state is a prediction (`canonical:false`, `isTruth:false`) — it can only become real by being turned into a transaction and passing the commit gate. The sandbox enforces the §18 / §15 disciplines: short receding-horizon rollouts, branch budgets (width × depth), and uncertainty that grows with the horizon. To guarantee non-mutation it deep-clones the state before every transition, so even a transition that mutates its argument cannot touch the caller's canonical snapshot.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/state/worldmodel/PredictionSandbox.md","moduleTitle":"state/worldmodel/PredictionSandbox","source":"engine/state/worldmodel/PredictionSandbox.js","import":"/engine/state/worldmodel/PredictionSandbox.js","sourceHash":"d8e4b02a9e4996f6c1aa4fc783d1d0453cbbe83196926571754d0488fc85057d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/worldmodel/PredictionSandbox.js#0000:PredictionSandbox","exportIndex":0,"name":"PredictionSandbox","kind":"class","signature":"class PredictionSandbox","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/worldmodel/ToolEffectModel.md","moduleTitle":"state/worldmodel/ToolEffectModel","source":"engine/state/worldmodel/ToolEffectModel.js","import":"/engine/state/worldmodel/ToolEffectModel.js","sourceHash":"46952379486b55e14e736f63d3446912c85b8ab015bef0339448662b21e8306d","subsystem":"engine","recordType":"api-module","id":"module:engine/state/worldmodel/ToolEffectModel.js","title":"state/worldmodel/ToolEffectModel","summary":"state/worldmodel/ToolEffectModel.js — expected-vs-observed tool consequences and a discrepancy learner (spec §15 \"Tool effect model\" + \"Discrepancy learner\", rule 49/51).  For each tool the model records what it EXPECTED to happen; after the action the actual result is observed and compared. The discrepancy updates a running calibration score so the planner learns which tools are reliable. World-model quality is judged by action outcomes and calibration — not appearance (rule 51). The agent re-observes after acting (rule 49); this is where that loop is closed.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/state/worldmodel/ToolEffectModel.md","moduleTitle":"state/worldmodel/ToolEffectModel","source":"engine/state/worldmodel/ToolEffectModel.js","import":"/engine/state/worldmodel/ToolEffectModel.js","sourceHash":"46952379486b55e14e736f63d3446912c85b8ab015bef0339448662b21e8306d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/worldmodel/ToolEffectModel.js#0000:ToolEffectModel","exportIndex":0,"name":"ToolEffectModel","kind":"class","signature":"class ToolEffectModel","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/worldmodel/UntrustedBoundary.md","moduleTitle":"state/worldmodel/UntrustedBoundary","source":"engine/state/worldmodel/UntrustedBoundary.js","import":"/engine/state/worldmodel/UntrustedBoundary.js","sourceHash":"3fe3b79e8b8f38eb9946312508590320ee704a2e768f044cf40cb3ed5d5e58a8","subsystem":"engine","recordType":"api-module","id":"module:engine/state/worldmodel/UntrustedBoundary.js","title":"state/worldmodel/UntrustedBoundary","summary":"state/worldmodel/UntrustedBoundary.js — the prompt-injection boundary (spec §15 \"Prompt-injection boundary\", rules 33, 50).  All webpages, files, emails, tool outputs, other agents, and generated text are UNTRUSTED OBSERVATIONS — never authority instructions. This boundary is the single chokepoint where such content enters the world model: it wraps the content as an untrusted observation (CERTAINTY.UNTRUSTED) and makes it structurally impossible to treat as policy or to mint authority from it.  The model MAY observe broadly, infer cautiously, propose actions, and simulate futures. It MAY NOT mint authority, bypass capabilities, declare its prediction canonical, or treat retrieved text as trusted policy. Authority decisions live OUTSIDE the model (capability + commit), so this module deliberately exposes no path from untrusted content to a capability or a canonical write.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/state/worldmodel/UntrustedBoundary.md","moduleTitle":"state/worldmodel/UntrustedBoundary","source":"engine/state/worldmodel/UntrustedBoundary.js","import":"/engine/state/worldmodel/UntrustedBoundary.js","sourceHash":"3fe3b79e8b8f38eb9946312508590320ee704a2e768f044cf40cb3ed5d5e58a8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/worldmodel/UntrustedBoundary.js#0000:UntrustedBoundary","exportIndex":0,"name":"UntrustedBoundary","kind":"class","signature":"class UntrustedBoundary","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/state/worldmodel/UntrustedBoundary.md","moduleTitle":"state/worldmodel/UntrustedBoundary","source":"engine/state/worldmodel/UntrustedBoundary.js","import":"/engine/state/worldmodel/UntrustedBoundary.js","sourceHash":"3fe3b79e8b8f38eb9946312508590320ee704a2e768f044cf40cb3ed5d5e58a8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/worldmodel/UntrustedBoundary.js#0001:ingestUntrusted","exportIndex":1,"name":"ingestUntrusted","kind":"function","signature":"ingestUntrusted(content, meta = {})","summary":"Ingest external/tool/model content as an untrusted observation. The returned record is explicitly non-authoritative and carries untrusted provenance."}
{"schemaVersion":1,"modulePath":"engine/reference/state/worldmodel/UntrustedBoundary.md","moduleTitle":"state/worldmodel/UntrustedBoundary","source":"engine/state/worldmodel/UntrustedBoundary.js","import":"/engine/state/worldmodel/UntrustedBoundary.js","sourceHash":"3fe3b79e8b8f38eb9946312508590320ee704a2e768f044cf40cb3ed5d5e58a8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/state/worldmodel/UntrustedBoundary.js#0002:canAuthorize","exportIndex":2,"name":"canAuthorize","kind":"function","signature":"canAuthorize(record)","summary":"True only for records that may carry authority. Untrusted records: always false."}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/CanvasSurface.md","moduleTitle":"surfaces/CanvasSurface","source":"engine/surfaces/CanvasSurface.js","import":"/engine/surfaces/CanvasSurface.js","sourceHash":"4bf5192a5779dae86ee6692c117fbacddbbfe20b249d316982b9f2293d183b81","subsystem":"engine","recordType":"api-module","id":"module:engine/surfaces/CanvasSurface.js","title":"surfaces/CanvasSurface","summary":"engine/surfaces/CanvasSurface.js — the base pixel source: a 2D canvas drawn by a callback. CodeSurface and TerminalSurface build on it. A source exposes the contract SurfaceManager expects: `.canvas`, optional `.dirty`, `.render(dt)`, `.resize(w,h)`, `.onPointer(e)`, `.onKey(e)`, `.dispose()`.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/CanvasSurface.md","moduleTitle":"surfaces/CanvasSurface","source":"engine/surfaces/CanvasSurface.js","import":"/engine/surfaces/CanvasSurface.js","sourceHash":"4bf5192a5779dae86ee6692c117fbacddbbfe20b249d316982b9f2293d183b81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/CanvasSurface.js#0000:make2DCanvas","exportIndex":0,"name":"make2DCanvas","kind":"function","signature":"make2DCanvas(width, height)","summary":"Allocate a 2D canvas (OffscreenCanvas when available, else a DOM canvas)."}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/CanvasSurface.md","moduleTitle":"surfaces/CanvasSurface","source":"engine/surfaces/CanvasSurface.js","import":"/engine/surfaces/CanvasSurface.js","sourceHash":"4bf5192a5779dae86ee6692c117fbacddbbfe20b249d316982b9f2293d183b81","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/CanvasSurface.js#0001:createCanvasSurface","exportIndex":1,"name":"createCanvasSurface","kind":"function","signature":"createCanvasSurface(opts = {})","summary":"A generic canvas source."}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/CodeSurface.md","moduleTitle":"surfaces/CodeSurface","source":"engine/surfaces/CodeSurface.js","import":"/engine/surfaces/CodeSurface.js","sourceHash":"94a89ae3efe9ad28f6a8c65df7c17e1821ffcf7d2f1c0248bdf837d081e1a587","subsystem":"engine","recordType":"api-module","id":"module:engine/surfaces/CodeSurface.js","title":"surfaces/CodeSurface","summary":"engine/surfaces/CodeSurface.js — an editable, syntax-lite code view rendered to a canvas so it can live on a mesh. Supports typing, Backspace, Enter, arrow navigation, Home/End, and vertical scroll that follows the caret. Highlighting is intentionally lightweight (comments / strings / numbers / keywords) — enough to read code on a surface without pulling in a full language grammar.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/CodeSurface.md","moduleTitle":"surfaces/CodeSurface","source":"engine/surfaces/CodeSurface.js","import":"/engine/surfaces/CodeSurface.js","sourceHash":"94a89ae3efe9ad28f6a8c65df7c17e1821ffcf7d2f1c0248bdf837d081e1a587","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/CodeSurface.js#0000:createCodeSurface","exportIndex":0,"name":"createCodeSurface","kind":"function","signature":"createCodeSurface(opts = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/MediaSurface.md","moduleTitle":"surfaces/MediaSurface","source":"engine/surfaces/MediaSurface.js","import":"/engine/surfaces/MediaSurface.js","sourceHash":"6d5c06e9861c404d150ed4a395555635f72e386e4739ffb808576e14877f47de","subsystem":"engine","recordType":"api-module","id":"module:engine/surfaces/MediaSurface.js","title":"surfaces/MediaSurface","summary":"Browser-media producers for RenderSurface. These sources only expose pixels that the caller explicitly supplies or requests; camera capture is never started implicitly and owned MediaStreams are always stopped on dispose.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/MediaSurface.md","moduleTitle":"surfaces/MediaSurface","source":"engine/surfaces/MediaSurface.js","import":"/engine/surfaces/MediaSurface.js","sourceHash":"6d5c06e9861c404d150ed4a395555635f72e386e4739ffb808576e14877f47de","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/MediaSurface.js#0000:createImageSurface","exportIndex":0,"name":"createImageSurface","kind":"function","signature":"createImageSurface(opts = {})","summary":"Wrap an ImageBitmap, image element, canvas, or URL as a static pixel source. URL-created images default to anonymous CORS and expose a `ready` promise."}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/MediaSurface.md","moduleTitle":"surfaces/MediaSurface","source":"engine/surfaces/MediaSurface.js","import":"/engine/surfaces/MediaSurface.js","sourceHash":"6d5c06e9861c404d150ed4a395555635f72e386e4739ffb808576e14877f47de","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/MediaSurface.js#0001:createVideoSurface","exportIndex":1,"name":"createVideoSurface","kind":"function","signature":"createVideoSurface(opts = {})","summary":"Wrap an HTMLVideoElement or create one from a URL/MediaStream."}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/MediaSurface.md","moduleTitle":"surfaces/MediaSurface","source":"engine/surfaces/MediaSurface.js","import":"/engine/surfaces/MediaSurface.js","sourceHash":"6d5c06e9861c404d150ed4a395555635f72e386e4739ffb808576e14877f47de","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/MediaSurface.js#0002:createCameraSurface","exportIndex":2,"name":"createCameraSurface","kind":"function","signature":"async createCameraSurface(opts = {})","summary":"Request a camera only after an explicit caller action, then expose it as a video source. The returned source owns and stops every acquired track."}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/RenderSurface.md","moduleTitle":"surfaces/RenderSurface","source":"engine/surfaces/RenderSurface.js","import":"/engine/surfaces/RenderSurface.js","sourceHash":"eea289670c0ffdc88b583cb6298de8ed5c4f7a5411bd2ca8bdee57680e4e9bd0","subsystem":"engine","recordType":"api-module","id":"module:engine/surfaces/RenderSurface.js","title":"surfaces/RenderSurface","summary":"engine/surfaces/RenderSurface.js — a RenderSurface is a live, drawable texture fed by a source (canvas / code / terminal / camera / webgpu / image / video) that can be mapped onto a mesh as baseColor/emissive and optionally receive pointer/keyboard input via UV hit-testing.  This module owns the schema + update policy (when a surface should re-upload to the GPU) and is deliberately GPU-free: SurfaceManager performs the upload, the source produces pixels, and RenderSurfaceMaterial binds it to a mesh. Keeping these concerns separate makes surfaces reusable across demos, editor, runtime.","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/RenderSurface.md","moduleTitle":"surfaces/RenderSurface","source":"engine/surfaces/RenderSurface.js","import":"/engine/surfaces/RenderSurface.js","sourceHash":"eea289670c0ffdc88b583cb6298de8ed5c4f7a5411bd2ca8bdee57680e4e9bd0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/RenderSurface.js#0000:createRenderSurface","exportIndex":0,"name":"createRenderSurface","kind":"function","signature":"createRenderSurface(init = {})","summary":"Create a RenderSurface descriptor."}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/RenderSurface.md","moduleTitle":"surfaces/RenderSurface","source":"engine/surfaces/RenderSurface.js","import":"/engine/surfaces/RenderSurface.js","sourceHash":"eea289670c0ffdc88b583cb6298de8ed5c4f7a5411bd2ca8bdee57680e4e9bd0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/RenderSurface.js#0001:markSurfaceDirty","exportIndex":1,"name":"markSurfaceDirty","kind":"function","signature":"markSurfaceDirty(surface)","summary":"Flag a surface as needing a GPU re-upload."}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/RenderSurface.md","moduleTitle":"surfaces/RenderSurface","source":"engine/surfaces/RenderSurface.js","import":"/engine/surfaces/RenderSurface.js","sourceHash":"eea289670c0ffdc88b583cb6298de8ed5c4f7a5411bd2ca8bdee57680e4e9bd0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/RenderSurface.js#0002:resizeSurface","exportIndex":2,"name":"resizeSurface","kind":"function","signature":"resizeSurface(surface, width, height)","summary":"Resize a surface (also resizes its source canvas) and flag it dirty."}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/RenderSurface.md","moduleTitle":"surfaces/RenderSurface","source":"engine/surfaces/RenderSurface.js","import":"/engine/surfaces/RenderSurface.js","sourceHash":"eea289670c0ffdc88b583cb6298de8ed5c4f7a5411bd2ca8bdee57680e4e9bd0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/RenderSurface.js#0003:surfaceNeedsUpload","exportIndex":3,"name":"surfaceNeedsUpload","kind":"function","signature":"surfaceNeedsUpload(surface, nowMs)","summary":"Decide whether a surface should upload to the GPU this tick. Pure (no side effects) so it is unit-testable; SurfaceManager applies the result."}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/RenderSurface.md","moduleTitle":"surfaces/RenderSurface","source":"engine/surfaces/RenderSurface.js","import":"/engine/surfaces/RenderSurface.js","sourceHash":"eea289670c0ffdc88b583cb6298de8ed5c4f7a5411bd2ca8bdee57680e4e9bd0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/RenderSurface.js#0004:SURFACE_SOURCE","exportIndex":4,"name":"SURFACE_SOURCE","kind":"constant","signature":"SURFACE_SOURCE","summary":"What feeds a surface's pixels."}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/RenderSurface.md","moduleTitle":"surfaces/RenderSurface","source":"engine/surfaces/RenderSurface.js","import":"/engine/surfaces/RenderSurface.js","sourceHash":"eea289670c0ffdc88b583cb6298de8ed5c4f7a5411bd2ca8bdee57680e4e9bd0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/RenderSurface.js#0005:UPDATE_MODE","exportIndex":5,"name":"UPDATE_MODE","kind":"constant","signature":"UPDATE_MODE","summary":"Update cadence. `dirty` only re-uploads when the source flags a change; `interval` re-uploads at most every intervalMs; `realtime` every frame the surface is visible. `static` uploads once."}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/RenderSurfaceMaterial.md","moduleTitle":"surfaces/RenderSurfaceMaterial","source":"engine/surfaces/RenderSurfaceMaterial.js","import":"/engine/surfaces/RenderSurfaceMaterial.js","sourceHash":"daf321bc73b4c01ea3ca70bd9ac42bc936ed902081d9330f2fdc5d0f2247cd51","subsystem":"engine","recordType":"api-module","id":"module:engine/surfaces/RenderSurfaceMaterial.js","title":"surfaces/RenderSurfaceMaterial","summary":"engine/surfaces/RenderSurfaceMaterial.js — bind a RenderSurface onto a mesh as baseColor or emissive, in world- or screen-space, reusing the EngineMaterial schema so surfaces flow through the same material/binding path as imported textures. The GPU resource accessor lets any renderer drop the surface's live texture into a bind group without knowing how it is produced.","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/RenderSurfaceMaterial.md","moduleTitle":"surfaces/RenderSurfaceMaterial","source":"engine/surfaces/RenderSurfaceMaterial.js","import":"/engine/surfaces/RenderSurfaceMaterial.js","sourceHash":"daf321bc73b4c01ea3ca70bd9ac42bc936ed902081d9330f2fdc5d0f2247cd51","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/RenderSurfaceMaterial.js#0000:createSurfaceMaterial","exportIndex":0,"name":"createSurfaceMaterial","kind":"function","signature":"createSurfaceMaterial(surface, opts = {})","summary":"Create an EngineMaterial that samples a RenderSurface. Screens usually want the UNLIT workflow + the EMISSIVE slot (they emit their own light) so they stay bright regardless of scene lighting."}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/RenderSurfaceMaterial.md","moduleTitle":"surfaces/RenderSurfaceMaterial","source":"engine/surfaces/RenderSurfaceMaterial.js","import":"/engine/surfaces/RenderSurfaceMaterial.js","sourceHash":"daf321bc73b4c01ea3ca70bd9ac42bc936ed902081d9330f2fdc5d0f2247cd51","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/RenderSurfaceMaterial.js#0001:surfaceTextureResource","exportIndex":1,"name":"surfaceTextureResource","kind":"function","signature":"surfaceTextureResource(surface)","summary":"Live GPU resource for a surface, for inserting into a bind group."}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/RenderSurfaceMaterial.md","moduleTitle":"surfaces/RenderSurfaceMaterial","source":"engine/surfaces/RenderSurfaceMaterial.js","import":"/engine/surfaces/RenderSurfaceMaterial.js","sourceHash":"daf321bc73b4c01ea3ca70bd9ac42bc936ed902081d9330f2fdc5d0f2247cd51","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/RenderSurfaceMaterial.js#0002:materialSurfaceBinding","exportIndex":2,"name":"materialSurfaceBinding","kind":"function","signature":"materialSurfaceBinding(material)","summary":"Is this material backed by a render surface? Returns its binding block or null."}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/RenderSurfaceMaterial.md","moduleTitle":"surfaces/RenderSurfaceMaterial","source":"engine/surfaces/RenderSurfaceMaterial.js","import":"/engine/surfaces/RenderSurfaceMaterial.js","sourceHash":"daf321bc73b4c01ea3ca70bd9ac42bc936ed902081d9330f2fdc5d0f2247cd51","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/RenderSurfaceMaterial.js#0003:surfaceIdFromTextureId","exportIndex":3,"name":"surfaceIdFromTextureId","kind":"function","signature":"surfaceIdFromTextureId(textureId)","summary":"Map a virtual surface texture id (`surface://id`) back to the surface id."}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/RenderSurfaceMaterial.md","moduleTitle":"surfaces/RenderSurfaceMaterial","source":"engine/surfaces/RenderSurfaceMaterial.js","import":"/engine/surfaces/RenderSurfaceMaterial.js","sourceHash":"daf321bc73b4c01ea3ca70bd9ac42bc936ed902081d9330f2fdc5d0f2247cd51","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/RenderSurfaceMaterial.js#0004:SURFACE_SLOT","exportIndex":4,"name":"SURFACE_SLOT","kind":"constant","signature":"SURFACE_SLOT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/RenderSurfaceMaterial.md","moduleTitle":"surfaces/RenderSurfaceMaterial","source":"engine/surfaces/RenderSurfaceMaterial.js","import":"/engine/surfaces/RenderSurfaceMaterial.js","sourceHash":"daf321bc73b4c01ea3ca70bd9ac42bc936ed902081d9330f2fdc5d0f2247cd51","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/RenderSurfaceMaterial.js#0005:SURFACE_SPACE","exportIndex":5,"name":"SURFACE_SPACE","kind":"constant","signature":"SURFACE_SPACE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/SurfaceInputMapper.md","moduleTitle":"surfaces/SurfaceInputMapper","source":"engine/surfaces/SurfaceInputMapper.js","import":"/engine/surfaces/SurfaceInputMapper.js","sourceHash":"d864d06f7a25fe31e79d3d50ede74e8e5ff99b9b063c145115a1fb8f187ed93f","subsystem":"engine","recordType":"api-module","id":"module:engine/surfaces/SurfaceInputMapper.js","title":"surfaces/SurfaceInputMapper","summary":"engine/surfaces/SurfaceInputMapper.js — route input to a focused RenderSurface.  Pointer events arrive as a UV hit (from the renderer's raycast against the mesh the surface is mapped to); this maps UV → surface pixel coords and dispatches to the surface's source. Keyboard events go to whichever surface is \"focused\" (typically the last one clicked). Only surfaces whose `permissions.input` is true receive events — surfaces are inert by default.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/SurfaceInputMapper.md","moduleTitle":"surfaces/SurfaceInputMapper","source":"engine/surfaces/SurfaceInputMapper.js","import":"/engine/surfaces/SurfaceInputMapper.js","sourceHash":"d864d06f7a25fe31e79d3d50ede74e8e5ff99b9b063c145115a1fb8f187ed93f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/SurfaceInputMapper.js#0000:uvToPixel","exportIndex":0,"name":"uvToPixel","kind":"function","signature":"uvToPixel(surface, u, v)","summary":"Convert a UV hit (with v measured top-down) to integer surface pixels."}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/SurfaceInputMapper.md","moduleTitle":"surfaces/SurfaceInputMapper","source":"engine/surfaces/SurfaceInputMapper.js","import":"/engine/surfaces/SurfaceInputMapper.js","sourceHash":"d864d06f7a25fe31e79d3d50ede74e8e5ff99b9b063c145115a1fb8f187ed93f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/SurfaceInputMapper.js#0001:createSurfaceInputMapper","exportIndex":1,"name":"createSurfaceInputMapper","kind":"function","signature":"createSurfaceInputMapper(opts = {})","summary":"Create an input mapper over a set of surfaces (or a SurfaceManager)."}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/SurfaceManager.md","moduleTitle":"surfaces/SurfaceManager","source":"engine/surfaces/SurfaceManager.js","import":"/engine/surfaces/SurfaceManager.js","sourceHash":"f7b8b39ee773a689afe77fe2e7964ac241e0305e94cfb9e0515371b4e9b64108","subsystem":"engine","recordType":"api-module","id":"module:engine/surfaces/SurfaceManager.js","title":"surfaces/SurfaceManager","summary":"engine/surfaces/SurfaceManager.js — owns the GPU texture lifetime and the update scheduler for a set of RenderSurfaces. Each tick it asks the policy (surfaceNeedsUpload) which surfaces changed/are due/are realtime-and-visible, renders just those sources, and uploads them — so nothing touches the GPU unless it must (dirty-only by default, interval-capped, slept when off-screen).  The actual GPU calls are isolated behind an injectable `uploader`, so the scheduling logic is testable headless (gates) without a WebGPU device.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/SurfaceManager.md","moduleTitle":"surfaces/SurfaceManager","source":"engine/surfaces/SurfaceManager.js","import":"/engine/surfaces/SurfaceManager.js","sourceHash":"f7b8b39ee773a689afe77fe2e7964ac241e0305e94cfb9e0515371b4e9b64108","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/SurfaceManager.js#0000:surfaceImageSource","exportIndex":0,"name":"surfaceImageSource","kind":"function","signature":"surfaceImageSource(surface)","summary":"The uploadable image source backing a surface (canvas / img / video)."}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/SurfaceManager.md","moduleTitle":"surfaces/SurfaceManager","source":"engine/surfaces/SurfaceManager.js","import":"/engine/surfaces/SurfaceManager.js","sourceHash":"f7b8b39ee773a689afe77fe2e7964ac241e0305e94cfb9e0515371b4e9b64108","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/SurfaceManager.js#0001:surfaceImageReady","exportIndex":1,"name":"surfaceImageReady","kind":"function","signature":"surfaceImageReady(surface)","summary":"True when an external-image source has decoded enough pixels to copy."}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/SurfaceManager.md","moduleTitle":"surfaces/SurfaceManager","source":"engine/surfaces/SurfaceManager.js","import":"/engine/surfaces/SurfaceManager.js","sourceHash":"f7b8b39ee773a689afe77fe2e7964ac241e0305e94cfb9e0515371b4e9b64108","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/SurfaceManager.js#0002:createSurfaceManager","exportIndex":2,"name":"createSurfaceManager","kind":"function","signature":"createSurfaceManager(device, opts = {})","summary":"Create a surface manager."}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/TerminalSurface.md","moduleTitle":"surfaces/TerminalSurface","source":"engine/surfaces/TerminalSurface.js","import":"/engine/surfaces/TerminalSurface.js","sourceHash":"368f590b25901974bdd842c5b67ccc16d6671b8b73b82e0bf156af52bdacdbf1","subsystem":"engine","recordType":"api-module","id":"module:engine/surfaces/TerminalSurface.js","title":"surfaces/TerminalSurface","summary":"engine/surfaces/TerminalSurface.js — an interactive terminal/REPL rendered to a canvas so it can live on a mesh. It keeps a scrollback buffer + an input line, echoes typing, and dispatches a command on Enter via `onCommand(line) -> string | string[] | void`. Safe by design: it only renders its OWN buffer — there is no shell, no eval, nothing external (the host wires whatever onCommand does).","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/TerminalSurface.md","moduleTitle":"surfaces/TerminalSurface","source":"engine/surfaces/TerminalSurface.js","import":"/engine/surfaces/TerminalSurface.js","sourceHash":"368f590b25901974bdd842c5b67ccc16d6671b8b73b82e0bf156af52bdacdbf1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/TerminalSurface.js#0000:createTerminalSurface","exportIndex":0,"name":"createTerminalSurface","kind":"function","signature":"createTerminalSurface(opts = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/WebGPUSurface.md","moduleTitle":"surfaces/WebGPUSurface","source":"engine/surfaces/WebGPUSurface.js","import":"/engine/surfaces/WebGPUSurface.js","sourceHash":"be3d3b66333eb31d642cca0cc3612869e5a751077960064e3e1a77a4d2b91fca","subsystem":"engine","recordType":"api-module","id":"module:engine/surfaces/WebGPUSurface.js","title":"surfaces/WebGPUSurface","summary":"engine/surfaces/WebGPUSurface.js — a surface source that ADOPTS an externally rendered GPU texture instead of uploading pixels from a canvas. The host renders into its own render target(s) and hands the current texture/view to the surface each frame via `adopt()`; SurfaceManager then exposes it like any other surface (sampleable on a mesh) with zero copies. This backs feedback/mirror effects and \"stream the screen onto a screen\" use-cases (SURFACE_SOURCE.WEBGPU).  Safety: it only ever adopts textures the host already owns — there is no capture of arbitrary external content.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/WebGPUSurface.md","moduleTitle":"surfaces/WebGPUSurface","source":"engine/surfaces/WebGPUSurface.js","import":"/engine/surfaces/WebGPUSurface.js","sourceHash":"be3d3b66333eb31d642cca0cc3612869e5a751077960064e3e1a77a4d2b91fca","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/WebGPUSurface.js#0000:createWebGPUSurface","exportIndex":0,"name":"createWebGPUSurface","kind":"function","signature":"createWebGPUSurface(opts = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/index.md","moduleTitle":"surfaces/index","source":"engine/surfaces/index.js","import":"/engine/surfaces/index.js","sourceHash":"2de6faf8310d59cdea22356f1c8169b3bd63e64557e643cefab5281e25c39623","subsystem":"engine","recordType":"api-module","id":"module:engine/surfaces/index.js","title":"surfaces/index","summary":"engine/surfaces/index.js — Render Surfaces barrel (spec Phase 4).  A RenderSurface turns a live source (canvas / code / terminal / camera / webgpu / image / video) into a GPU texture that can be mapped onto a mesh as baseColor or emissive and optionally receive pointer/keyboard input via UV hit-testing. The SurfaceManager owns texture lifetime + an update scheduler so nothing touches the GPU unless it must (dirty-only, interval-capped, slept when off-screen). Sources only ever render their OWN content (safety by design).","exportCount":25}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/index.md","moduleTitle":"surfaces/index","source":"engine/surfaces/index.js","import":"/engine/surfaces/index.js","sourceHash":"2de6faf8310d59cdea22356f1c8169b3bd63e64557e643cefab5281e25c39623","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/index.js#0000:SURFACE_SLOT","exportIndex":0,"name":"SURFACE_SLOT","kind":"re-export","signature":"SURFACE_SLOT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/index.md","moduleTitle":"surfaces/index","source":"engine/surfaces/index.js","import":"/engine/surfaces/index.js","sourceHash":"2de6faf8310d59cdea22356f1c8169b3bd63e64557e643cefab5281e25c39623","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/index.js#0001:SURFACE_SOURCE","exportIndex":1,"name":"SURFACE_SOURCE","kind":"re-export","signature":"SURFACE_SOURCE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/index.md","moduleTitle":"surfaces/index","source":"engine/surfaces/index.js","import":"/engine/surfaces/index.js","sourceHash":"2de6faf8310d59cdea22356f1c8169b3bd63e64557e643cefab5281e25c39623","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/index.js#0002:SURFACE_SPACE","exportIndex":2,"name":"SURFACE_SPACE","kind":"re-export","signature":"SURFACE_SPACE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/index.md","moduleTitle":"surfaces/index","source":"engine/surfaces/index.js","import":"/engine/surfaces/index.js","sourceHash":"2de6faf8310d59cdea22356f1c8169b3bd63e64557e643cefab5281e25c39623","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/index.js#0003:UPDATE_MODE","exportIndex":3,"name":"UPDATE_MODE","kind":"re-export","signature":"UPDATE_MODE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/index.md","moduleTitle":"surfaces/index","source":"engine/surfaces/index.js","import":"/engine/surfaces/index.js","sourceHash":"2de6faf8310d59cdea22356f1c8169b3bd63e64557e643cefab5281e25c39623","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/index.js#0004:createCameraSurface","exportIndex":4,"name":"createCameraSurface","kind":"re-export","signature":"createCameraSurface","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/index.md","moduleTitle":"surfaces/index","source":"engine/surfaces/index.js","import":"/engine/surfaces/index.js","sourceHash":"2de6faf8310d59cdea22356f1c8169b3bd63e64557e643cefab5281e25c39623","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/index.js#0005:createCanvasSurface","exportIndex":5,"name":"createCanvasSurface","kind":"re-export","signature":"createCanvasSurface","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/index.md","moduleTitle":"surfaces/index","source":"engine/surfaces/index.js","import":"/engine/surfaces/index.js","sourceHash":"2de6faf8310d59cdea22356f1c8169b3bd63e64557e643cefab5281e25c39623","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/index.js#0006:createCodeSurface","exportIndex":6,"name":"createCodeSurface","kind":"re-export","signature":"createCodeSurface","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/index.md","moduleTitle":"surfaces/index","source":"engine/surfaces/index.js","import":"/engine/surfaces/index.js","sourceHash":"2de6faf8310d59cdea22356f1c8169b3bd63e64557e643cefab5281e25c39623","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/index.js#0007:createImageSurface","exportIndex":7,"name":"createImageSurface","kind":"re-export","signature":"createImageSurface","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/index.md","moduleTitle":"surfaces/index","source":"engine/surfaces/index.js","import":"/engine/surfaces/index.js","sourceHash":"2de6faf8310d59cdea22356f1c8169b3bd63e64557e643cefab5281e25c39623","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/index.js#0008:createRenderSurface","exportIndex":8,"name":"createRenderSurface","kind":"re-export","signature":"createRenderSurface","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/index.md","moduleTitle":"surfaces/index","source":"engine/surfaces/index.js","import":"/engine/surfaces/index.js","sourceHash":"2de6faf8310d59cdea22356f1c8169b3bd63e64557e643cefab5281e25c39623","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/index.js#0009:createSurfaceInputMapper","exportIndex":9,"name":"createSurfaceInputMapper","kind":"re-export","signature":"createSurfaceInputMapper","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/index.md","moduleTitle":"surfaces/index","source":"engine/surfaces/index.js","import":"/engine/surfaces/index.js","sourceHash":"2de6faf8310d59cdea22356f1c8169b3bd63e64557e643cefab5281e25c39623","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/index.js#0010:createSurfaceManager","exportIndex":10,"name":"createSurfaceManager","kind":"re-export","signature":"createSurfaceManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/index.md","moduleTitle":"surfaces/index","source":"engine/surfaces/index.js","import":"/engine/surfaces/index.js","sourceHash":"2de6faf8310d59cdea22356f1c8169b3bd63e64557e643cefab5281e25c39623","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/index.js#0011:createSurfaceMaterial","exportIndex":11,"name":"createSurfaceMaterial","kind":"re-export","signature":"createSurfaceMaterial","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/index.md","moduleTitle":"surfaces/index","source":"engine/surfaces/index.js","import":"/engine/surfaces/index.js","sourceHash":"2de6faf8310d59cdea22356f1c8169b3bd63e64557e643cefab5281e25c39623","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/index.js#0012:createTerminalSurface","exportIndex":12,"name":"createTerminalSurface","kind":"re-export","signature":"createTerminalSurface","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/index.md","moduleTitle":"surfaces/index","source":"engine/surfaces/index.js","import":"/engine/surfaces/index.js","sourceHash":"2de6faf8310d59cdea22356f1c8169b3bd63e64557e643cefab5281e25c39623","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/index.js#0013:createVideoSurface","exportIndex":13,"name":"createVideoSurface","kind":"re-export","signature":"createVideoSurface","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/index.md","moduleTitle":"surfaces/index","source":"engine/surfaces/index.js","import":"/engine/surfaces/index.js","sourceHash":"2de6faf8310d59cdea22356f1c8169b3bd63e64557e643cefab5281e25c39623","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/index.js#0014:createWebGPUSurface","exportIndex":14,"name":"createWebGPUSurface","kind":"re-export","signature":"createWebGPUSurface","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/index.md","moduleTitle":"surfaces/index","source":"engine/surfaces/index.js","import":"/engine/surfaces/index.js","sourceHash":"2de6faf8310d59cdea22356f1c8169b3bd63e64557e643cefab5281e25c39623","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/index.js#0015:make2DCanvas","exportIndex":15,"name":"make2DCanvas","kind":"re-export","signature":"make2DCanvas","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/index.md","moduleTitle":"surfaces/index","source":"engine/surfaces/index.js","import":"/engine/surfaces/index.js","sourceHash":"2de6faf8310d59cdea22356f1c8169b3bd63e64557e643cefab5281e25c39623","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/index.js#0016:markSurfaceDirty","exportIndex":16,"name":"markSurfaceDirty","kind":"re-export","signature":"markSurfaceDirty","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/index.md","moduleTitle":"surfaces/index","source":"engine/surfaces/index.js","import":"/engine/surfaces/index.js","sourceHash":"2de6faf8310d59cdea22356f1c8169b3bd63e64557e643cefab5281e25c39623","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/index.js#0017:materialSurfaceBinding","exportIndex":17,"name":"materialSurfaceBinding","kind":"re-export","signature":"materialSurfaceBinding","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/index.md","moduleTitle":"surfaces/index","source":"engine/surfaces/index.js","import":"/engine/surfaces/index.js","sourceHash":"2de6faf8310d59cdea22356f1c8169b3bd63e64557e643cefab5281e25c39623","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/index.js#0018:resizeSurface","exportIndex":18,"name":"resizeSurface","kind":"re-export","signature":"resizeSurface","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/index.md","moduleTitle":"surfaces/index","source":"engine/surfaces/index.js","import":"/engine/surfaces/index.js","sourceHash":"2de6faf8310d59cdea22356f1c8169b3bd63e64557e643cefab5281e25c39623","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/index.js#0019:surfaceIdFromTextureId","exportIndex":19,"name":"surfaceIdFromTextureId","kind":"re-export","signature":"surfaceIdFromTextureId","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/index.md","moduleTitle":"surfaces/index","source":"engine/surfaces/index.js","import":"/engine/surfaces/index.js","sourceHash":"2de6faf8310d59cdea22356f1c8169b3bd63e64557e643cefab5281e25c39623","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/index.js#0020:surfaceImageReady","exportIndex":20,"name":"surfaceImageReady","kind":"re-export","signature":"surfaceImageReady","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/index.md","moduleTitle":"surfaces/index","source":"engine/surfaces/index.js","import":"/engine/surfaces/index.js","sourceHash":"2de6faf8310d59cdea22356f1c8169b3bd63e64557e643cefab5281e25c39623","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/index.js#0021:surfaceImageSource","exportIndex":21,"name":"surfaceImageSource","kind":"re-export","signature":"surfaceImageSource","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/index.md","moduleTitle":"surfaces/index","source":"engine/surfaces/index.js","import":"/engine/surfaces/index.js","sourceHash":"2de6faf8310d59cdea22356f1c8169b3bd63e64557e643cefab5281e25c39623","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/index.js#0022:surfaceNeedsUpload","exportIndex":22,"name":"surfaceNeedsUpload","kind":"re-export","signature":"surfaceNeedsUpload","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/index.md","moduleTitle":"surfaces/index","source":"engine/surfaces/index.js","import":"/engine/surfaces/index.js","sourceHash":"2de6faf8310d59cdea22356f1c8169b3bd63e64557e643cefab5281e25c39623","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/index.js#0023:surfaceTextureResource","exportIndex":23,"name":"surfaceTextureResource","kind":"re-export","signature":"surfaceTextureResource","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/surfaces/index.md","moduleTitle":"surfaces/index","source":"engine/surfaces/index.js","import":"/engine/surfaces/index.js","sourceHash":"2de6faf8310d59cdea22356f1c8169b3bd63e64557e643cefab5281e25c39623","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/surfaces/index.js#0024:uvToPixel","exportIndex":24,"name":"uvToPixel","kind":"re-export","signature":"uvToPixel","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/IntegrationTests.md","moduleTitle":"tools/IntegrationTests","source":"engine/tools/IntegrationTests.js","import":"/engine/tools/IntegrationTests.js","sourceHash":"044e6c35a0510e125abdbc67dffc65b7ef8453cb06832689e3a4a09724bfc11e","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/IntegrationTests.js","title":"tools/IntegrationTests","summary":"Test result","exportCount":11}
{"schemaVersion":1,"modulePath":"engine/reference/tools/IntegrationTests.md","moduleTitle":"tools/IntegrationTests","source":"engine/tools/IntegrationTests.js","import":"/engine/tools/IntegrationTests.js","sourceHash":"044e6c35a0510e125abdbc67dffc65b7ef8453cb06832689e3a4a09724bfc11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/IntegrationTests.js#0000:TestResult","exportIndex":0,"name":"TestResult","kind":"class","signature":"class TestResult","summary":"Test result"}
{"schemaVersion":1,"modulePath":"engine/reference/tools/IntegrationTests.md","moduleTitle":"tools/IntegrationTests","source":"engine/tools/IntegrationTests.js","import":"/engine/tools/IntegrationTests.js","sourceHash":"044e6c35a0510e125abdbc67dffc65b7ef8453cb06832689e3a4a09724bfc11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/IntegrationTests.js#0001:TestSuite","exportIndex":1,"name":"TestSuite","kind":"class","signature":"class TestSuite","summary":"Test suite for organizing tests"}
{"schemaVersion":1,"modulePath":"engine/reference/tools/IntegrationTests.md","moduleTitle":"tools/IntegrationTests","source":"engine/tools/IntegrationTests.js","import":"/engine/tools/IntegrationTests.js","sourceHash":"044e6c35a0510e125abdbc67dffc65b7ef8453cb06832689e3a4a09724bfc11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/IntegrationTests.js#0002:TestRunner","exportIndex":2,"name":"TestRunner","kind":"class","signature":"class TestRunner","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/IntegrationTests.md","moduleTitle":"tools/IntegrationTests","source":"engine/tools/IntegrationTests.js","import":"/engine/tools/IntegrationTests.js","sourceHash":"044e6c35a0510e125abdbc67dffc65b7ef8453cb06832689e3a4a09724bfc11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/IntegrationTests.js#0003:createVehicleMountingTests","exportIndex":3,"name":"createVehicleMountingTests","kind":"function","signature":"createVehicleMountingTests()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/IntegrationTests.md","moduleTitle":"tools/IntegrationTests","source":"engine/tools/IntegrationTests.js","import":"/engine/tools/IntegrationTests.js","sourceHash":"044e6c35a0510e125abdbc67dffc65b7ef8453cb06832689e3a4a09724bfc11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/IntegrationTests.js#0004:createMultiplayerSyncTests","exportIndex":4,"name":"createMultiplayerSyncTests","kind":"function","signature":"createMultiplayerSyncTests()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/IntegrationTests.md","moduleTitle":"tools/IntegrationTests","source":"engine/tools/IntegrationTests.js","import":"/engine/tools/IntegrationTests.js","sourceHash":"044e6c35a0510e125abdbc67dffc65b7ef8453cb06832689e3a4a09724bfc11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/IntegrationTests.js#0005:createMemoryLeakTests","exportIndex":5,"name":"createMemoryLeakTests","kind":"function","signature":"createMemoryLeakTests()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/IntegrationTests.md","moduleTitle":"tools/IntegrationTests","source":"engine/tools/IntegrationTests.js","import":"/engine/tools/IntegrationTests.js","sourceHash":"044e6c35a0510e125abdbc67dffc65b7ef8453cb06832689e3a4a09724bfc11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/IntegrationTests.js#0006:createFrameBudgetTests","exportIndex":6,"name":"createFrameBudgetTests","kind":"function","signature":"createFrameBudgetTests()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/IntegrationTests.md","moduleTitle":"tools/IntegrationTests","source":"engine/tools/IntegrationTests.js","import":"/engine/tools/IntegrationTests.js","sourceHash":"044e6c35a0510e125abdbc67dffc65b7ef8453cb06832689e3a4a09724bfc11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/IntegrationTests.js#0007:createCrossSystemTests","exportIndex":7,"name":"createCrossSystemTests","kind":"function","signature":"createCrossSystemTests()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/IntegrationTests.md","moduleTitle":"tools/IntegrationTests","source":"engine/tools/IntegrationTests.js","import":"/engine/tools/IntegrationTests.js","sourceHash":"044e6c35a0510e125abdbc67dffc65b7ef8453cb06832689e3a4a09724bfc11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/IntegrationTests.js#0008:runIntegrationTests","exportIndex":8,"name":"runIntegrationTests","kind":"function","signature":"async runIntegrationTests()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/IntegrationTests.md","moduleTitle":"tools/IntegrationTests","source":"engine/tools/IntegrationTests.js","import":"/engine/tools/IntegrationTests.js","sourceHash":"044e6c35a0510e125abdbc67dffc65b7ef8453cb06832689e3a4a09724bfc11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/IntegrationTests.js#0009:TestStatus","exportIndex":9,"name":"TestStatus","kind":"constant","signature":"TestStatus","summary":"Test result status"}
{"schemaVersion":1,"modulePath":"engine/reference/tools/IntegrationTests.md","moduleTitle":"tools/IntegrationTests","source":"engine/tools/IntegrationTests.js","import":"/engine/tools/IntegrationTests.js","sourceHash":"044e6c35a0510e125abdbc67dffc65b7ef8453cb06832689e3a4a09724bfc11e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/IntegrationTests.js#0010:assert","exportIndex":10,"name":"assert","kind":"constant","signature":"assert","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/aiming/GlobalAim.md","moduleTitle":"tools/aiming/GlobalAim","source":"engine/tools/aiming/GlobalAim.js","import":"/engine/tools/aiming/GlobalAim.js","sourceHash":"d3689d2e57e874a626eadd68c67410f17472e72a340ff5575b312e44d225d049","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/aiming/GlobalAim.js","title":"tools/aiming/GlobalAim","summary":"Get an entity's world position with an optional vertical offset. Returns null if the entity or Transform is missing.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/tools/aiming/GlobalAim.md","moduleTitle":"tools/aiming/GlobalAim","source":"engine/tools/aiming/GlobalAim.js","import":"/engine/tools/aiming/GlobalAim.js","sourceHash":"d3689d2e57e874a626eadd68c67410f17472e72a340ff5575b312e44d225d049","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/aiming/GlobalAim.js#0000:getEntityWorldPosition","exportIndex":0,"name":"getEntityWorldPosition","kind":"function","signature":"getEntityWorldPosition(ecsWorld, entityId, heightOffset = 0)","summary":"Get an entity's world position with an optional vertical offset. Returns null if the entity or Transform is missing."}
{"schemaVersion":1,"modulePath":"engine/reference/tools/aiming/GlobalAim.md","moduleTitle":"tools/aiming/GlobalAim","source":"engine/tools/aiming/GlobalAim.js","import":"/engine/tools/aiming/GlobalAim.js","sourceHash":"d3689d2e57e874a626eadd68c67410f17472e72a340ff5575b312e44d225d049","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/aiming/GlobalAim.js#0001:computeAimBetweenEntities","exportIndex":1,"name":"computeAimBetweenEntities","kind":"function","signature":"computeAimBetweenEntities(ecsWorld, sourceEntityId, targetEntityId, options = {},)","summary":"Compute an aim line from one entity to another. Returns { origin, target, direction, distance } or null if invalid."}
{"schemaVersion":1,"modulePath":"engine/reference/tools/aiming/GlobalAim.md","moduleTitle":"tools/aiming/GlobalAim","source":"engine/tools/aiming/GlobalAim.js","import":"/engine/tools/aiming/GlobalAim.js","sourceHash":"d3689d2e57e874a626eadd68c67410f17472e72a340ff5575b312e44d225d049","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/aiming/GlobalAim.js#0002:computeAimFromEntityToPoint","exportIndex":2,"name":"computeAimFromEntityToPoint","kind":"function","signature":"computeAimFromEntityToPoint(ecsWorld, sourceEntityId, worldPoint, options = {},)","summary":"Compute an aim line from an entity to an arbitrary world-space point."}
{"schemaVersion":1,"modulePath":"engine/reference/tools/animation/FBXAscii.md","moduleTitle":"tools/animation/FBXAscii","source":"engine/tools/animation/FBXAscii.js","import":"/engine/tools/animation/FBXAscii.js","sourceHash":"3c377bdd3748f3ea1e6e5f15cebb18b7f2514cb535bb66b2c1f7dd1f34986b21","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/animation/FBXAscii.js","title":"tools/animation/FBXAscii","summary":"","exportCount":10}
{"schemaVersion":1,"modulePath":"engine/reference/tools/animation/FBXAscii.md","moduleTitle":"tools/animation/FBXAscii","source":"engine/tools/animation/FBXAscii.js","import":"/engine/tools/animation/FBXAscii.js","sourceHash":"3c377bdd3748f3ea1e6e5f15cebb18b7f2514cb535bb66b2c1f7dd1f34986b21","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/animation/FBXAscii.js#0000:parseFBXAscii","exportIndex":0,"name":"parseFBXAscii","kind":"function","signature":"parseFBXAscii(text)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/animation/FBXAscii.md","moduleTitle":"tools/animation/FBXAscii","source":"engine/tools/animation/FBXAscii.js","import":"/engine/tools/animation/FBXAscii.js","sourceHash":"3c377bdd3748f3ea1e6e5f15cebb18b7f2514cb535bb66b2c1f7dd1f34986b21","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/animation/FBXAscii.js#0001:buildMixamoSkeletonFromFBX","exportIndex":1,"name":"buildMixamoSkeletonFromFBX","kind":"function","signature":"buildMixamoSkeletonFromFBX(fbx, opts = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/animation/FBXAscii.md","moduleTitle":"tools/animation/FBXAscii","source":"engine/tools/animation/FBXAscii.js","import":"/engine/tools/animation/FBXAscii.js","sourceHash":"3c377bdd3748f3ea1e6e5f15cebb18b7f2514cb535bb66b2c1f7dd1f34986b21","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/animation/FBXAscii.js#0002:sampleMixamoFBXAnimationClip","exportIndex":2,"name":"sampleMixamoFBXAnimationClip","kind":"function","signature":"sampleMixamoFBXAnimationClip(fbx, skeleton, opts = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/animation/FBXAscii.md","moduleTitle":"tools/animation/FBXAscii","source":"engine/tools/animation/FBXAscii.js","import":"/engine/tools/animation/FBXAscii.js","sourceHash":"3c377bdd3748f3ea1e6e5f15cebb18b7f2514cb535bb66b2c1f7dd1f34986b21","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/animation/FBXAscii.js#0003:findSkeletonJointIndexByName","exportIndex":3,"name":"findSkeletonJointIndexByName","kind":"function","signature":"findSkeletonJointIndexByName(skeleton, jointName)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/animation/FBXAscii.md","moduleTitle":"tools/animation/FBXAscii","source":"engine/tools/animation/FBXAscii.js","import":"/engine/tools/animation/FBXAscii.js","sourceHash":"3c377bdd3748f3ea1e6e5f15cebb18b7f2514cb535bb66b2c1f7dd1f34986b21","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/animation/FBXAscii.js#0004:computeClipLocalMatricesAtFrame","exportIndex":4,"name":"computeClipLocalMatricesAtFrame","kind":"function","signature":"computeClipLocalMatricesAtFrame(clip, skeleton, frameIndex, out = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/animation/FBXAscii.md","moduleTitle":"tools/animation/FBXAscii","source":"engine/tools/animation/FBXAscii.js","import":"/engine/tools/animation/FBXAscii.js","sourceHash":"3c377bdd3748f3ea1e6e5f15cebb18b7f2514cb535bb66b2c1f7dd1f34986b21","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/animation/FBXAscii.js#0005:computeClipGlobalMatricesAtFrame","exportIndex":5,"name":"computeClipGlobalMatricesAtFrame","kind":"function","signature":"computeClipGlobalMatricesAtFrame(clip, skeleton, frameIndex, out = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/animation/FBXAscii.md","moduleTitle":"tools/animation/FBXAscii","source":"engine/tools/animation/FBXAscii.js","import":"/engine/tools/animation/FBXAscii.js","sourceHash":"3c377bdd3748f3ea1e6e5f15cebb18b7f2514cb535bb66b2c1f7dd1f34986b21","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/animation/FBXAscii.js#0006:extractRootTranslationTrack","exportIndex":6,"name":"extractRootTranslationTrack","kind":"function","signature":"extractRootTranslationTrack(clip, skeleton, opts = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/animation/FBXAscii.md","moduleTitle":"tools/animation/FBXAscii","source":"engine/tools/animation/FBXAscii.js","import":"/engine/tools/animation/FBXAscii.js","sourceHash":"3c377bdd3748f3ea1e6e5f15cebb18b7f2514cb535bb66b2c1f7dd1f34986b21","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/animation/FBXAscii.js#0007:extractRootMotion","exportIndex":7,"name":"extractRootMotion","kind":"function","signature":"extractRootMotion(clip, skeleton, opts = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/animation/FBXAscii.md","moduleTitle":"tools/animation/FBXAscii","source":"engine/tools/animation/FBXAscii.js","import":"/engine/tools/animation/FBXAscii.js","sourceHash":"3c377bdd3748f3ea1e6e5f15cebb18b7f2514cb535bb66b2c1f7dd1f34986b21","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/animation/FBXAscii.js#0008:buildTeacherJointPositionDataset","exportIndex":8,"name":"buildTeacherJointPositionDataset","kind":"function","signature":"buildTeacherJointPositionDataset(clip, skeleton, opts = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/animation/FBXAscii.md","moduleTitle":"tools/animation/FBXAscii","source":"engine/tools/animation/FBXAscii.js","import":"/engine/tools/animation/FBXAscii.js","sourceHash":"3c377bdd3748f3ea1e6e5f15cebb18b7f2514cb535bb66b2c1f7dd1f34986b21","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/animation/FBXAscii.js#0009:loadMixamoFBXAscii","exportIndex":9,"name":"loadMixamoFBXAscii","kind":"function","signature":"loadMixamoFBXAscii(text, opts = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/camera/CameraController.md","moduleTitle":"tools/camera/CameraController","source":"engine/tools/camera/CameraController.js","import":"/engine/tools/camera/CameraController.js","sourceHash":"31cd3d9e89325a7ea00cda92d4c7088daff2d4a85c5972a1f33a87972d93b5b1","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/camera/CameraController.js","title":"tools/camera/CameraController","summary":"CameraController.js - admitted state management around StandardCameraController.","exportCount":15}
{"schemaVersion":1,"modulePath":"engine/reference/tools/camera/CameraController.md","moduleTitle":"tools/camera/CameraController","source":"engine/tools/camera/CameraController.js","import":"/engine/tools/camera/CameraController.js","sourceHash":"31cd3d9e89325a7ea00cda92d4c7088daff2d4a85c5972a1f33a87972d93b5b1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/camera/CameraController.js#0000:cameraEntityBoundsReport","exportIndex":0,"name":"cameraEntityBoundsReport","kind":"function","signature":"cameraEntityBoundsReport(subjects)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/camera/CameraController.md","moduleTitle":"tools/camera/CameraController","source":"engine/tools/camera/CameraController.js","import":"/engine/tools/camera/CameraController.js","sourceHash":"31cd3d9e89325a7ea00cda92d4c7088daff2d4a85c5972a1f33a87972d93b5b1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/camera/CameraController.js#0001:cameraCollisionOptionsReport","exportIndex":1,"name":"cameraCollisionOptionsReport","kind":"function","signature":"cameraCollisionOptionsReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/camera/CameraController.md","moduleTitle":"tools/camera/CameraController","source":"engine/tools/camera/CameraController.js","import":"/engine/tools/camera/CameraController.js","sourceHash":"31cd3d9e89325a7ea00cda92d4c7088daff2d4a85c5972a1f33a87972d93b5b1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/camera/CameraController.js#0002:cameraFocusReport","exportIndex":2,"name":"cameraFocusReport","kind":"function","signature":"cameraFocusReport(camera, target, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/camera/CameraController.md","moduleTitle":"tools/camera/CameraController","source":"engine/tools/camera/CameraController.js","import":"/engine/tools/camera/CameraController.js","sourceHash":"31cd3d9e89325a7ea00cda92d4c7088daff2d4a85c5972a1f33a87972d93b5b1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/camera/CameraController.js#0003:cameraEntityFocusReport","exportIndex":3,"name":"cameraEntityFocusReport","kind":"function","signature":"cameraEntityFocusReport(camera, subjects, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/camera/CameraController.md","moduleTitle":"tools/camera/CameraController","source":"engine/tools/camera/CameraController.js","import":"/engine/tools/camera/CameraController.js","sourceHash":"31cd3d9e89325a7ea00cda92d4c7088daff2d4a85c5972a1f33a87972d93b5b1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/camera/CameraController.js#0004:focusThirdPersonCamera","exportIndex":4,"name":"focusThirdPersonCamera","kind":"function","signature":"focusThirdPersonCamera(camera, target, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/camera/CameraController.md","moduleTitle":"tools/camera/CameraController","source":"engine/tools/camera/CameraController.js","import":"/engine/tools/camera/CameraController.js","sourceHash":"31cd3d9e89325a7ea00cda92d4c7088daff2d4a85c5972a1f33a87972d93b5b1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/camera/CameraController.js#0005:focusThirdPersonCameraOnEntities","exportIndex":5,"name":"focusThirdPersonCameraOnEntities","kind":"function","signature":"focusThirdPersonCameraOnEntities(camera, subjects, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/camera/CameraController.md","moduleTitle":"tools/camera/CameraController","source":"engine/tools/camera/CameraController.js","import":"/engine/tools/camera/CameraController.js","sourceHash":"31cd3d9e89325a7ea00cda92d4c7088daff2d4a85c5972a1f33a87972d93b5b1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/camera/CameraController.js#0006:cameraFocusTransitionReport","exportIndex":6,"name":"cameraFocusTransitionReport","kind":"function","signature":"cameraFocusTransitionReport(camera, deltaSeconds, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/camera/CameraController.md","moduleTitle":"tools/camera/CameraController","source":"engine/tools/camera/CameraController.js","import":"/engine/tools/camera/CameraController.js","sourceHash":"31cd3d9e89325a7ea00cda92d4c7088daff2d4a85c5972a1f33a87972d93b5b1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/camera/CameraController.js#0007:cameraControllerStepReport","exportIndex":7,"name":"cameraControllerStepReport","kind":"function","signature":"cameraControllerStepReport(camera, input, options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/camera/CameraController.md","moduleTitle":"tools/camera/CameraController","source":"engine/tools/camera/CameraController.js","import":"/engine/tools/camera/CameraController.js","sourceHash":"31cd3d9e89325a7ea00cda92d4c7088daff2d4a85c5972a1f33a87972d93b5b1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/camera/CameraController.js#0008:stepCamera","exportIndex":8,"name":"stepCamera","kind":"function","signature":"stepCamera(camera, input, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/camera/CameraController.md","moduleTitle":"tools/camera/CameraController","source":"engine/tools/camera/CameraController.js","import":"/engine/tools/camera/CameraController.js","sourceHash":"31cd3d9e89325a7ea00cda92d4c7088daff2d4a85c5972a1f33a87972d93b5b1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/camera/CameraController.js#0009:cameraControllerEntityReport","exportIndex":9,"name":"cameraControllerEntityReport","kind":"function","signature":"cameraControllerEntityReport(camera, cameraEntityId)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/camera/CameraController.md","moduleTitle":"tools/camera/CameraController","source":"engine/tools/camera/CameraController.js","import":"/engine/tools/camera/CameraController.js","sourceHash":"31cd3d9e89325a7ea00cda92d4c7088daff2d4a85c5972a1f33a87972d93b5b1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/camera/CameraController.js#0010:syncCameraToEcs","exportIndex":10,"name":"syncCameraToEcs","kind":"function","signature":"syncCameraToEcs(camera, ecsWorld, cameraEntityId)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/camera/CameraController.md","moduleTitle":"tools/camera/CameraController","source":"engine/tools/camera/CameraController.js","import":"/engine/tools/camera/CameraController.js","sourceHash":"31cd3d9e89325a7ea00cda92d4c7088daff2d4a85c5972a1f33a87972d93b5b1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/camera/CameraController.js#0011:updateCameraFull","exportIndex":11,"name":"updateCameraFull","kind":"function","signature":"updateCameraFull(camera, input, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/camera/CameraController.md","moduleTitle":"tools/camera/CameraController","source":"engine/tools/camera/CameraController.js","import":"/engine/tools/camera/CameraController.js","sourceHash":"31cd3d9e89325a7ea00cda92d4c7088daff2d4a85c5972a1f33a87972d93b5b1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/camera/CameraController.js#0012:cameraModeSwitchReport","exportIndex":12,"name":"cameraModeSwitchReport","kind":"function","signature":"cameraModeSwitchReport(camera, mode, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/camera/CameraController.md","moduleTitle":"tools/camera/CameraController","source":"engine/tools/camera/CameraController.js","import":"/engine/tools/camera/CameraController.js","sourceHash":"31cd3d9e89325a7ea00cda92d4c7088daff2d4a85c5972a1f33a87972d93b5b1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/camera/CameraController.js#0013:switchCameraMode","exportIndex":13,"name":"switchCameraMode","kind":"function","signature":"switchCameraMode(camera, mode, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/camera/CameraController.md","moduleTitle":"tools/camera/CameraController","source":"engine/tools/camera/CameraController.js","import":"/engine/tools/camera/CameraController.js","sourceHash":"31cd3d9e89325a7ea00cda92d4c7088daff2d4a85c5972a1f33a87972d93b5b1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/camera/CameraController.js#0014:CAMERA_CONTROLLER_LIMITS","exportIndex":14,"name":"CAMERA_CONTROLLER_LIMITS","kind":"constant","signature":"CAMERA_CONTROLLER_LIMITS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/camera/StandardCameraController.md","moduleTitle":"tools/camera/StandardCameraController","source":"engine/tools/camera/StandardCameraController.js","import":"/engine/tools/camera/StandardCameraController.js","sourceHash":"a9464657d30e1628b9121e2c24555234b1356c3debc987bdf4521354b343801e","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/camera/StandardCameraController.js","title":"tools/camera/StandardCameraController","summary":"","exportCount":16}
{"schemaVersion":1,"modulePath":"engine/reference/tools/camera/StandardCameraController.md","moduleTitle":"tools/camera/StandardCameraController","source":"engine/tools/camera/StandardCameraController.js","import":"/engine/tools/camera/StandardCameraController.js","sourceHash":"a9464657d30e1628b9121e2c24555234b1356c3debc987bdf4521354b343801e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/camera/StandardCameraController.js#0000:standardCameraKeysReport","exportIndex":0,"name":"standardCameraKeysReport","kind":"function","signature":"standardCameraKeysReport(keys = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/camera/StandardCameraController.md","moduleTitle":"tools/camera/StandardCameraController","source":"engine/tools/camera/StandardCameraController.js","import":"/engine/tools/camera/StandardCameraController.js","sourceHash":"a9464657d30e1628b9121e2c24555234b1356c3debc987bdf4521354b343801e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/camera/StandardCameraController.js#0001:standardCameraMovementResponseReport","exportIndex":1,"name":"standardCameraMovementResponseReport","kind":"function","signature":"standardCameraMovementResponseReport(currentAxes, targetAxes, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/camera/StandardCameraController.md","moduleTitle":"tools/camera/StandardCameraController","source":"engine/tools/camera/StandardCameraController.js","import":"/engine/tools/camera/StandardCameraController.js","sourceHash":"a9464657d30e1628b9121e2c24555234b1356c3debc987bdf4521354b343801e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/camera/StandardCameraController.js#0002:standardCameraZoomReport","exportIndex":2,"name":"standardCameraZoomReport","kind":"function","signature":"standardCameraZoomReport(distance, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/camera/StandardCameraController.md","moduleTitle":"tools/camera/StandardCameraController","source":"engine/tools/camera/StandardCameraController.js","import":"/engine/tools/camera/StandardCameraController.js","sourceHash":"a9464657d30e1628b9121e2c24555234b1356c3debc987bdf4521354b343801e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/camera/StandardCameraController.js#0003:standardCameraBoomReport","exportIndex":3,"name":"standardCameraBoomReport","kind":"function","signature":"standardCameraBoomReport(target, desiredEye, hit = null, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/camera/StandardCameraController.md","moduleTitle":"tools/camera/StandardCameraController","source":"engine/tools/camera/StandardCameraController.js","import":"/engine/tools/camera/StandardCameraController.js","sourceHash":"a9464657d30e1628b9121e2c24555234b1356c3debc987bdf4521354b343801e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/camera/StandardCameraController.js#0004:standardCameraMovementIntentReport","exportIndex":4,"name":"standardCameraMovementIntentReport","kind":"function","signature":"standardCameraMovementIntentReport(keys, yaw, distance, movementAxes = [0, 0, 0], responseOptions = {},)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/camera/StandardCameraController.md","moduleTitle":"tools/camera/StandardCameraController","source":"engine/tools/camera/StandardCameraController.js","import":"/engine/tools/camera/StandardCameraController.js","sourceHash":"a9464657d30e1628b9121e2c24555234b1356c3debc987bdf4521354b343801e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/camera/StandardCameraController.js#0005:standardCameraStateReport","exportIndex":5,"name":"standardCameraStateReport","kind":"function","signature":"standardCameraStateReport(state)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/camera/StandardCameraController.md","moduleTitle":"tools/camera/StandardCameraController","source":"engine/tools/camera/StandardCameraController.js","import":"/engine/tools/camera/StandardCameraController.js","sourceHash":"a9464657d30e1628b9121e2c24555234b1356c3debc987bdf4521354b343801e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/camera/StandardCameraController.js#0006:standardCameraSphereFitReport","exportIndex":6,"name":"standardCameraSphereFitReport","kind":"function","signature":"standardCameraSphereFitReport(radius, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/camera/StandardCameraController.md","moduleTitle":"tools/camera/StandardCameraController","source":"engine/tools/camera/StandardCameraController.js","import":"/engine/tools/camera/StandardCameraController.js","sourceHash":"a9464657d30e1628b9121e2c24555234b1356c3debc987bdf4521354b343801e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/camera/StandardCameraController.js#0007:standardCameraBoundsReport","exportIndex":7,"name":"standardCameraBoundsReport","kind":"function","signature":"standardCameraBoundsReport(bounds)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/camera/StandardCameraController.md","moduleTitle":"tools/camera/StandardCameraController","source":"engine/tools/camera/StandardCameraController.js","import":"/engine/tools/camera/StandardCameraController.js","sourceHash":"a9464657d30e1628b9121e2c24555234b1356c3debc987bdf4521354b343801e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/camera/StandardCameraController.js#0008:standardCameraBoundsFocusReport","exportIndex":8,"name":"standardCameraBoundsFocusReport","kind":"function","signature":"standardCameraBoundsFocusReport(bounds, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/camera/StandardCameraController.md","moduleTitle":"tools/camera/StandardCameraController","source":"engine/tools/camera/StandardCameraController.js","import":"/engine/tools/camera/StandardCameraController.js","sourceHash":"a9464657d30e1628b9121e2c24555234b1356c3debc987bdf4521354b343801e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/camera/StandardCameraController.js#0009:standardCameraFocusReport","exportIndex":9,"name":"standardCameraFocusReport","kind":"function","signature":"standardCameraFocusReport(state, target, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/camera/StandardCameraController.md","moduleTitle":"tools/camera/StandardCameraController","source":"engine/tools/camera/StandardCameraController.js","import":"/engine/tools/camera/StandardCameraController.js","sourceHash":"a9464657d30e1628b9121e2c24555234b1356c3debc987bdf4521354b343801e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/camera/StandardCameraController.js#0010:standardCameraFocusTransitionReport","exportIndex":10,"name":"standardCameraFocusTransitionReport","kind":"function","signature":"standardCameraFocusTransitionReport(transition, deltaSeconds)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/camera/StandardCameraController.md","moduleTitle":"tools/camera/StandardCameraController","source":"engine/tools/camera/StandardCameraController.js","import":"/engine/tools/camera/StandardCameraController.js","sourceHash":"a9464657d30e1628b9121e2c24555234b1356c3debc987bdf4521354b343801e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/camera/StandardCameraController.js#0011:standardCameraOptionsReport","exportIndex":11,"name":"standardCameraOptionsReport","kind":"function","signature":"standardCameraOptionsReport(options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/camera/StandardCameraController.md","moduleTitle":"tools/camera/StandardCameraController","source":"engine/tools/camera/StandardCameraController.js","import":"/engine/tools/camera/StandardCameraController.js","sourceHash":"a9464657d30e1628b9121e2c24555234b1356c3debc987bdf4521354b343801e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/camera/StandardCameraController.js#0012:standardCameraUpdateReport","exportIndex":12,"name":"standardCameraUpdateReport","kind":"function","signature":"standardCameraUpdateReport(state, options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/camera/StandardCameraController.md","moduleTitle":"tools/camera/StandardCameraController","source":"engine/tools/camera/StandardCameraController.js","import":"/engine/tools/camera/StandardCameraController.js","sourceHash":"a9464657d30e1628b9121e2c24555234b1356c3debc987bdf4521354b343801e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/camera/StandardCameraController.js#0013:updateStandardCamera","exportIndex":13,"name":"updateStandardCamera","kind":"function","signature":"updateStandardCamera(state, options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/camera/StandardCameraController.md","moduleTitle":"tools/camera/StandardCameraController","source":"engine/tools/camera/StandardCameraController.js","import":"/engine/tools/camera/StandardCameraController.js","sourceHash":"a9464657d30e1628b9121e2c24555234b1356c3debc987bdf4521354b343801e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/camera/StandardCameraController.js#0014:getStandardCameraEyeBasis","exportIndex":14,"name":"getStandardCameraEyeBasis","kind":"function","signature":"getStandardCameraEyeBasis(state)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/camera/StandardCameraController.md","moduleTitle":"tools/camera/StandardCameraController","source":"engine/tools/camera/StandardCameraController.js","import":"/engine/tools/camera/StandardCameraController.js","sourceHash":"a9464657d30e1628b9121e2c24555234b1356c3debc987bdf4521354b343801e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/camera/StandardCameraController.js#0015:STANDARD_CAMERA_LIMITS","exportIndex":15,"name":"STANDARD_CAMERA_LIMITS","kind":"constant","signature":"STANDARD_CAMERA_LIMITS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/console/HtmlConsole.md","moduleTitle":"tools/console/HtmlConsole","source":"engine/tools/console/HtmlConsole.js","import":"/engine/tools/console/HtmlConsole.js","sourceHash":"4ca0f7bf3d740f7ff4ead8de24c3ee4faa39ac33d9d877bb5b42ce659e8956e5","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/console/HtmlConsole.js","title":"tools/console/HtmlConsole","summary":"Render console-hook arguments without invoking getters or leaking common credential fields. Output is deliberately bounded so one diagnostic object cannot freeze the in-OS console or flood a durable log.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/tools/console/HtmlConsole.md","moduleTitle":"tools/console/HtmlConsole","source":"engine/tools/console/HtmlConsole.js","import":"/engine/tools/console/HtmlConsole.js","sourceHash":"4ca0f7bf3d740f7ff4ead8de24c3ee4faa39ac33d9d877bb5b42ce659e8956e5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/console/HtmlConsole.js#0000:formatConsoleHookArguments","exportIndex":0,"name":"formatConsoleHookArguments","kind":"function","signature":"formatConsoleHookArguments(args, options = {})","summary":"Render console-hook arguments without invoking getters or leaking common credential fields. Output is deliberately bounded so one diagnostic object cannot freeze the in-OS console or flood a durable log."}
{"schemaVersion":1,"modulePath":"engine/reference/tools/console/HtmlConsole.md","moduleTitle":"tools/console/HtmlConsole","source":"engine/tools/console/HtmlConsole.js","import":"/engine/tools/console/HtmlConsole.js","sourceHash":"4ca0f7bf3d740f7ff4ead8de24c3ee4faa39ac33d9d877bb5b42ce659e8956e5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/console/HtmlConsole.js#0001:createHtmlConsole","exportIndex":1,"name":"createHtmlConsole","kind":"function","signature":"createHtmlConsole(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/gizmos/RopeGizmo.md","moduleTitle":"tools/gizmos/RopeGizmo","source":"engine/tools/gizmos/RopeGizmo.js","import":"/engine/tools/gizmos/RopeGizmo.js","sourceHash":"fea430a35f959794e366034ceda162b26511ebc6229db2668f5197cb3c0d9740","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/gizmos/RopeGizmo.js","title":"tools/gizmos/RopeGizmo","summary":"RopeGizmo - Visual handles for manipulating rope attachment points Features: - Draggable spheres at start/end attachment points - Catenary curve visualization between endpoints - Entity snapping when dragging near entities - Visual feedback for hover/drag states Based on common patterns from Unity/Unreal constraint gizmos: - Anchor points shown as spherical handles - Lines/curves connecting attachment points - Snapping to nearby entities for easy attachment","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/tools/gizmos/RopeGizmo.md","moduleTitle":"tools/gizmos/RopeGizmo","source":"engine/tools/gizmos/RopeGizmo.js","import":"/engine/tools/gizmos/RopeGizmo.js","sourceHash":"fea430a35f959794e366034ceda162b26511ebc6229db2668f5197cb3c0d9740","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/gizmos/RopeGizmo.js#0000:RopeGizmo","exportIndex":0,"name":"RopeGizmo","kind":"class","signature":"class RopeGizmo","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/gizmos/TransformGizmo.md","moduleTitle":"tools/gizmos/TransformGizmo","source":"engine/tools/gizmos/TransformGizmo.js","import":"/engine/tools/gizmos/TransformGizmo.js","sourceHash":"6283dc1085c4f565e67988f244728caa41312028d7ee757c08465a543930f700","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/gizmos/TransformGizmo.js","title":"tools/gizmos/TransformGizmo","summary":"TransformGizmo - Visual handles for manipulating entity transforms Now powered by vGPU driver","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/tools/gizmos/TransformGizmo.md","moduleTitle":"tools/gizmos/TransformGizmo","source":"engine/tools/gizmos/TransformGizmo.js","import":"/engine/tools/gizmos/TransformGizmo.js","sourceHash":"6283dc1085c4f565e67988f244728caa41312028d7ee757c08465a543930f700","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/gizmos/TransformGizmo.js#0000:TransformGizmo","exportIndex":0,"name":"TransformGizmo","kind":"class","signature":"class TransformGizmo","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/gizmos/index.md","moduleTitle":"tools/gizmos/index","source":"engine/tools/gizmos/index.js","import":"/engine/tools/gizmos/index.js","sourceHash":"8fd83ac7c19eeacc1189a5e758d6dd9c43be66a2cc8ceb080c7cbed1771afddd","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/gizmos/index.js","title":"tools/gizmos/index","summary":"Gizmos - Visual manipulation handles for editor and runtime","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/tools/gizmos/index.md","moduleTitle":"tools/gizmos/index","source":"engine/tools/gizmos/index.js","import":"/engine/tools/gizmos/index.js","sourceHash":"8fd83ac7c19eeacc1189a5e758d6dd9c43be66a2cc8ceb080c7cbed1771afddd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/gizmos/index.js#0000:RopeGizmo","exportIndex":0,"name":"RopeGizmo","kind":"re-export","signature":"RopeGizmo","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/gizmos/index.md","moduleTitle":"tools/gizmos/index","source":"engine/tools/gizmos/index.js","import":"/engine/tools/gizmos/index.js","sourceHash":"8fd83ac7c19eeacc1189a5e758d6dd9c43be66a2cc8ceb080c7cbed1771afddd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/gizmos/index.js#0001:TransformGizmo","exportIndex":1,"name":"TransformGizmo","kind":"re-export","signature":"TransformGizmo","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/input/StandardInputController.md","moduleTitle":"tools/input/StandardInputController","source":"engine/tools/input/StandardInputController.js","import":"/engine/tools/input/StandardInputController.js","sourceHash":"6cbe3cc9d7367740279841d00b8a335f841df134cd64f9e4cdae5963289125e5","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/input/StandardInputController.js","title":"tools/input/StandardInputController","summary":"Create an input controller state object.","exportCount":22}
{"schemaVersion":1,"modulePath":"engine/reference/tools/input/StandardInputController.md","moduleTitle":"tools/input/StandardInputController","source":"engine/tools/input/StandardInputController.js","import":"/engine/tools/input/StandardInputController.js","sourceHash":"6cbe3cc9d7367740279841d00b8a335f841df134cd64f9e4cdae5963289125e5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/input/StandardInputController.js#0000:standardInputActionMapReport","exportIndex":0,"name":"standardInputActionMapReport","kind":"function","signature":"standardInputActionMapReport(actionMap, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/input/StandardInputController.md","moduleTitle":"tools/input/StandardInputController","source":"engine/tools/input/StandardInputController.js","import":"/engine/tools/input/StandardInputController.js","sourceHash":"6cbe3cc9d7367740279841d00b8a335f841df134cd64f9e4cdae5963289125e5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/input/StandardInputController.js#0001:standardInputActionStateReport","exportIndex":1,"name":"standardInputActionStateReport","kind":"function","signature":"standardInputActionStateReport(actionMap, pressedBindings)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/input/StandardInputController.md","moduleTitle":"tools/input/StandardInputController","source":"engine/tools/input/StandardInputController.js","import":"/engine/tools/input/StandardInputController.js","sourceHash":"6cbe3cc9d7367740279841d00b8a335f841df134cd64f9e4cdae5963289125e5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/input/StandardInputController.js#0002:rebindStandardInputAction","exportIndex":2,"name":"rebindStandardInputAction","kind":"function","signature":"rebindStandardInputAction(ctrl, action, bindings, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/input/StandardInputController.md","moduleTitle":"tools/input/StandardInputController","source":"engine/tools/input/StandardInputController.js","import":"/engine/tools/input/StandardInputController.js","sourceHash":"6cbe3cc9d7367740279841d00b8a335f841df134cd64f9e4cdae5963289125e5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/input/StandardInputController.js#0003:standardGamepadMovementReport","exportIndex":3,"name":"standardGamepadMovementReport","kind":"function","signature":"standardGamepadMovementReport(gamepad, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/input/StandardInputController.md","moduleTitle":"tools/input/StandardInputController","source":"engine/tools/input/StandardInputController.js","import":"/engine/tools/input/StandardInputController.js","sourceHash":"6cbe3cc9d7367740279841d00b8a335f841df134cd64f9e4cdae5963289125e5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/input/StandardInputController.js#0004:standardGamepadButtonReport","exportIndex":4,"name":"standardGamepadButtonReport","kind":"function","signature":"standardGamepadButtonReport(button, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/input/StandardInputController.md","moduleTitle":"tools/input/StandardInputController","source":"engine/tools/input/StandardInputController.js","import":"/engine/tools/input/StandardInputController.js","sourceHash":"6cbe3cc9d7367740279841d00b8a335f841df134cd64f9e4cdae5963289125e5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/input/StandardInputController.js#0005:standardInputWheelZoomReport","exportIndex":5,"name":"standardInputWheelZoomReport","kind":"function","signature":"standardInputWheelZoomReport(currentDelta, eventDelta)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/input/StandardInputController.md","moduleTitle":"tools/input/StandardInputController","source":"engine/tools/input/StandardInputController.js","import":"/engine/tools/input/StandardInputController.js","sourceHash":"6cbe3cc9d7367740279841d00b8a335f841df134cd64f9e4cdae5963289125e5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/input/StandardInputController.js#0006:standardGamepadHapticEffectReport","exportIndex":6,"name":"standardGamepadHapticEffectReport","kind":"function","signature":"standardGamepadHapticEffectReport(gamepad, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/input/StandardInputController.md","moduleTitle":"tools/input/StandardInputController","source":"engine/tools/input/StandardInputController.js","import":"/engine/tools/input/StandardInputController.js","sourceHash":"6cbe3cc9d7367740279841d00b8a335f841df134cd64f9e4cdae5963289125e5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/input/StandardInputController.js#0007:playStandardGamepadHaptics","exportIndex":7,"name":"playStandardGamepadHaptics","kind":"function","signature":"async playStandardGamepadHaptics(gamepad, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/input/StandardInputController.md","moduleTitle":"tools/input/StandardInputController","source":"engine/tools/input/StandardInputController.js","import":"/engine/tools/input/StandardInputController.js","sourceHash":"6cbe3cc9d7367740279841d00b8a335f841df134cd64f9e4cdae5963289125e5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/input/StandardInputController.js#0008:standardGamepadInputReport","exportIndex":8,"name":"standardGamepadInputReport","kind":"function","signature":"standardGamepadInputReport(gamepad, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/input/StandardInputController.md","moduleTitle":"tools/input/StandardInputController","source":"engine/tools/input/StandardInputController.js","import":"/engine/tools/input/StandardInputController.js","sourceHash":"6cbe3cc9d7367740279841d00b8a335f841df134cd64f9e4cdae5963289125e5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/input/StandardInputController.js#0009:pollInputGamepad","exportIndex":9,"name":"pollInputGamepad","kind":"function","signature":"pollInputGamepad(ctrl, gamepads = undefined)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/input/StandardInputController.md","moduleTitle":"tools/input/StandardInputController","source":"engine/tools/input/StandardInputController.js","import":"/engine/tools/input/StandardInputController.js","sourceHash":"6cbe3cc9d7367740279841d00b8a335f841df134cd64f9e4cdae5963289125e5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/input/StandardInputController.js#0010:createInputController","exportIndex":10,"name":"createInputController","kind":"function","signature":"createInputController(options = {})","summary":"Create an input controller state object."}
{"schemaVersion":1,"modulePath":"engine/reference/tools/input/StandardInputController.md","moduleTitle":"tools/input/StandardInputController","source":"engine/tools/input/StandardInputController.js","import":"/engine/tools/input/StandardInputController.js","sourceHash":"6cbe3cc9d7367740279841d00b8a335f841df134cd64f9e4cdae5963289125e5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/input/StandardInputController.js#0011:attachInputListeners","exportIndex":11,"name":"attachInputListeners","kind":"function","signature":"attachInputListeners(ctrl, callbacks = {})","summary":"Attach input listeners to the controller. Returns a cleanup function to remove all listeners."}
{"schemaVersion":1,"modulePath":"engine/reference/tools/input/StandardInputController.md","moduleTitle":"tools/input/StandardInputController","source":"engine/tools/input/StandardInputController.js","import":"/engine/tools/input/StandardInputController.js","sourceHash":"6cbe3cc9d7367740279841d00b8a335f841df134cd64f9e4cdae5963289125e5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/input/StandardInputController.js#0012:detachInputListeners","exportIndex":12,"name":"detachInputListeners","kind":"function","signature":"detachInputListeners(ctrl)","summary":"Remove all input listeners."}
{"schemaVersion":1,"modulePath":"engine/reference/tools/input/StandardInputController.md","moduleTitle":"tools/input/StandardInputController","source":"engine/tools/input/StandardInputController.js","import":"/engine/tools/input/StandardInputController.js","sourceHash":"6cbe3cc9d7367740279841d00b8a335f841df134cd64f9e4cdae5963289125e5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/input/StandardInputController.js#0013:consumeMouseDelta","exportIndex":13,"name":"consumeMouseDelta","kind":"function","signature":"consumeMouseDelta(ctrl)","summary":"Reset mouse deltas after consuming them for camera update."}
{"schemaVersion":1,"modulePath":"engine/reference/tools/input/StandardInputController.md","moduleTitle":"tools/input/StandardInputController","source":"engine/tools/input/StandardInputController.js","import":"/engine/tools/input/StandardInputController.js","sourceHash":"6cbe3cc9d7367740279841d00b8a335f841df134cd64f9e4cdae5963289125e5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/input/StandardInputController.js#0014:consumeZoomDelta","exportIndex":14,"name":"consumeZoomDelta","kind":"function","signature":"consumeZoomDelta(ctrl)","summary":"Get current keyboard state."}
{"schemaVersion":1,"modulePath":"engine/reference/tools/input/StandardInputController.md","moduleTitle":"tools/input/StandardInputController","source":"engine/tools/input/StandardInputController.js","import":"/engine/tools/input/StandardInputController.js","sourceHash":"6cbe3cc9d7367740279841d00b8a335f841df134cd64f9e4cdae5963289125e5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/input/StandardInputController.js#0015:getKeys","exportIndex":15,"name":"getKeys","kind":"function","signature":"getKeys(ctrl)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/input/StandardInputController.md","moduleTitle":"tools/input/StandardInputController","source":"engine/tools/input/StandardInputController.js","import":"/engine/tools/input/StandardInputController.js","sourceHash":"6cbe3cc9d7367740279841d00b8a335f841df134cd64f9e4cdae5963289125e5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/input/StandardInputController.js#0016:getInputActions","exportIndex":16,"name":"getInputActions","kind":"function","signature":"getInputActions(ctrl)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/input/StandardInputController.md","moduleTitle":"tools/input/StandardInputController","source":"engine/tools/input/StandardInputController.js","import":"/engine/tools/input/StandardInputController.js","sourceHash":"6cbe3cc9d7367740279841d00b8a335f841df134cd64f9e4cdae5963289125e5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/input/StandardInputController.js#0017:getInputActionMap","exportIndex":17,"name":"getInputActionMap","kind":"function","signature":"getInputActionMap(ctrl)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/input/StandardInputController.md","moduleTitle":"tools/input/StandardInputController","source":"engine/tools/input/StandardInputController.js","import":"/engine/tools/input/StandardInputController.js","sourceHash":"6cbe3cc9d7367740279841d00b8a335f841df134cd64f9e4cdae5963289125e5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/input/StandardInputController.js#0018:getMovementAxes","exportIndex":18,"name":"getMovementAxes","kind":"function","signature":"getMovementAxes(ctrl)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/input/StandardInputController.md","moduleTitle":"tools/input/StandardInputController","source":"engine/tools/input/StandardInputController.js","import":"/engine/tools/input/StandardInputController.js","sourceHash":"6cbe3cc9d7367740279841d00b8a335f841df134cd64f9e4cdae5963289125e5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/input/StandardInputController.js#0019:getLastMousePosition","exportIndex":19,"name":"getLastMousePosition","kind":"function","signature":"getLastMousePosition(ctrl)","summary":"Get last mouse position."}
{"schemaVersion":1,"modulePath":"engine/reference/tools/input/StandardInputController.md","moduleTitle":"tools/input/StandardInputController","source":"engine/tools/input/StandardInputController.js","import":"/engine/tools/input/StandardInputController.js","sourceHash":"6cbe3cc9d7367740279841d00b8a335f841df134cd64f9e4cdae5963289125e5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/input/StandardInputController.js#0020:STANDARD_INPUT_LIMITS","exportIndex":20,"name":"STANDARD_INPUT_LIMITS","kind":"constant","signature":"STANDARD_INPUT_LIMITS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/input/StandardInputController.md","moduleTitle":"tools/input/StandardInputController","source":"engine/tools/input/StandardInputController.js","import":"/engine/tools/input/StandardInputController.js","sourceHash":"6cbe3cc9d7367740279841d00b8a335f841df134cd64f9e4cdae5963289125e5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/input/StandardInputController.js#0021:DEFAULT_STANDARD_INPUT_ACTION_MAP","exportIndex":21,"name":"DEFAULT_STANDARD_INPUT_ACTION_MAP","kind":"constant","signature":"DEFAULT_STANDARD_INPUT_ACTION_MAP","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/EntitiesInspectorPanel.md","moduleTitle":"tools/inspector/EntitiesInspectorPanel","source":"engine/tools/inspector/EntitiesInspectorPanel.js","import":"/engine/tools/inspector/EntitiesInspectorPanel.js","sourceHash":"96786ccad88e42dcd5bba09cf9264d16aab60c69e68335e100191c376cc09a3e","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/inspector/EntitiesInspectorPanel.js","title":"tools/inspector/EntitiesInspectorPanel","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/EntitiesInspectorPanel.md","moduleTitle":"tools/inspector/EntitiesInspectorPanel","source":"engine/tools/inspector/EntitiesInspectorPanel.js","import":"/engine/tools/inspector/EntitiesInspectorPanel.js","sourceHash":"96786ccad88e42dcd5bba09cf9264d16aab60c69e68335e100191c376cc09a3e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/EntitiesInspectorPanel.js#0000:initEntitiesInspectorPanel","exportIndex":0,"name":"initEntitiesInspectorPanel","kind":"function","signature":"initEntitiesInspectorPanel(doc, entitiesPanel, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/EntitiesInspectorPanel.old.md","moduleTitle":"tools/inspector/EntitiesInspectorPanel.old","source":"engine/tools/inspector/EntitiesInspectorPanel.old.js","import":"/engine/tools/inspector/EntitiesInspectorPanel.old.js","sourceHash":"163c72c780450d9bf6be62e7082167410b4333082a810112d8134a92998881fe","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/inspector/EntitiesInspectorPanel.old.js","title":"tools/inspector/EntitiesInspectorPanel.old","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/EntitiesInspectorPanel.old.md","moduleTitle":"tools/inspector/EntitiesInspectorPanel.old","source":"engine/tools/inspector/EntitiesInspectorPanel.old.js","import":"/engine/tools/inspector/EntitiesInspectorPanel.old.js","sourceHash":"163c72c780450d9bf6be62e7082167410b4333082a810112d8134a92998881fe","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/EntitiesInspectorPanel.old.js#0000:initEntitiesInspectorPanel","exportIndex":0,"name":"initEntitiesInspectorPanel","kind":"re-export","signature":"initEntitiesInspectorPanel","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/EntityInspector.md","moduleTitle":"tools/inspector/EntityInspector","source":"engine/tools/inspector/EntityInspector.js","import":"/engine/tools/inspector/EntityInspector.js","sourceHash":"c94f41d4d5ff8f67a37390b91f90bd76996546742951b5e2bcb99afdac8fa678","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/inspector/EntityInspector.js","title":"tools/inspector/EntityInspector","summary":"","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/EntityInspector.md","moduleTitle":"tools/inspector/EntityInspector","source":"engine/tools/inspector/EntityInspector.js","import":"/engine/tools/inspector/EntityInspector.js","sourceHash":"c94f41d4d5ff8f67a37390b91f90bd76996546742951b5e2bcb99afdac8fa678","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/EntityInspector.js#0000:createEntityInspectorModel","exportIndex":0,"name":"createEntityInspectorModel","kind":"function","signature":"createEntityInspectorModel(world, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/EntityInspector.md","moduleTitle":"tools/inspector/EntityInspector","source":"engine/tools/inspector/EntityInspector.js","import":"/engine/tools/inspector/EntityInspector.js","sourceHash":"c94f41d4d5ff8f67a37390b91f90bd76996546742951b5e2bcb99afdac8fa678","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/EntityInspector.js#0001:setEntityComponentFromInspector","exportIndex":1,"name":"setEntityComponentFromInspector","kind":"function","signature":"setEntityComponentFromInspector(world, entityId, componentName, value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/EntityInspector.md","moduleTitle":"tools/inspector/EntityInspector","source":"engine/tools/inspector/EntityInspector.js","import":"/engine/tools/inspector/EntityInspector.js","sourceHash":"c94f41d4d5ff8f67a37390b91f90bd76996546742951b5e2bcb99afdac8fa678","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/EntityInspector.js#0002:removeEntityComponentFromInspector","exportIndex":2,"name":"removeEntityComponentFromInspector","kind":"function","signature":"removeEntityComponentFromInspector(world, entityId, componentName)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/InspectorConfigFactory.md","moduleTitle":"tools/inspector/InspectorConfigFactory","source":"engine/tools/inspector/InspectorConfigFactory.js","import":"/engine/tools/inspector/InspectorConfigFactory.js","sourceHash":"75a7f5e68ad63e74d4fb66f04b8f3dd58973571381afe8baa9f313b9072a9d31","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/inspector/InspectorConfigFactory.js","title":"tools/inspector/InspectorConfigFactory","summary":"Create a standard inspector configuration.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/InspectorConfigFactory.md","moduleTitle":"tools/inspector/InspectorConfigFactory","source":"engine/tools/inspector/InspectorConfigFactory.js","import":"/engine/tools/inspector/InspectorConfigFactory.js","sourceHash":"75a7f5e68ad63e74d4fb66f04b8f3dd58973571381afe8baa9f313b9072a9d31","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/InspectorConfigFactory.js#0000:createInspectorConfig","exportIndex":0,"name":"createInspectorConfig","kind":"function","signature":"createInspectorConfig(options)","summary":"Create a standard inspector configuration."}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/InspectorPanel.md","moduleTitle":"tools/inspector/InspectorPanel","source":"engine/tools/inspector/InspectorPanel.js","import":"/engine/tools/inspector/InspectorPanel.js","sourceHash":"3d94bd0eef0978dd394763a0a30998fb57bc0f96d6abe6bd631cb21bae9b49ee","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/inspector/InspectorPanel.js","title":"tools/inspector/InspectorPanel","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/InspectorPanel.md","moduleTitle":"tools/inspector/InspectorPanel","source":"engine/tools/inspector/InspectorPanel.js","import":"/engine/tools/inspector/InspectorPanel.js","sourceHash":"3d94bd0eef0978dd394763a0a30998fb57bc0f96d6abe6bd631cb21bae9b49ee","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/InspectorPanel.js#0000:attachInspectorPanel","exportIndex":0,"name":"attachInspectorPanel","kind":"function","signature":"attachInspectorPanel(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/NavInspector.md","moduleTitle":"tools/inspector/NavInspector","source":"engine/tools/inspector/NavInspector.js","import":"/engine/tools/inspector/NavInspector.js","sourceHash":"847af051a44ed8599d461c949c148bc329814acf0aad5f6423cf92505e52b0bf","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/inspector/NavInspector.js","title":"tools/inspector/NavInspector","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/NavInspector.md","moduleTitle":"tools/inspector/NavInspector","source":"engine/tools/inspector/NavInspector.js","import":"/engine/tools/inspector/NavInspector.js","sourceHash":"847af051a44ed8599d461c949c148bc329814acf0aad5f6423cf92505e52b0bf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/NavInspector.js#0000:createNavInspectorModel","exportIndex":0,"name":"createNavInspectorModel","kind":"function","signature":"createNavInspectorModel(world)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/PhysicsSandboxInspector.md","moduleTitle":"tools/inspector/PhysicsSandboxInspector","source":"engine/tools/inspector/PhysicsSandboxInspector.js","import":"/engine/tools/inspector/PhysicsSandboxInspector.js","sourceHash":"31217fc5ab33d62994e237e1c2222891709521c898b61c42f44d2b517e76a5e8","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/inspector/PhysicsSandboxInspector.js","title":"tools/inspector/PhysicsSandboxInspector","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/PhysicsSandboxInspector.md","moduleTitle":"tools/inspector/PhysicsSandboxInspector","source":"engine/tools/inspector/PhysicsSandboxInspector.js","import":"/engine/tools/inspector/PhysicsSandboxInspector.js","sourceHash":"31217fc5ab33d62994e237e1c2222891709521c898b61c42f44d2b517e76a5e8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/PhysicsSandboxInspector.js#0000:attachPhysicsSandboxInspector","exportIndex":0,"name":"attachPhysicsSandboxInspector","kind":"function","signature":"attachPhysicsSandboxInspector(options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/WorldInspector.md","moduleTitle":"tools/inspector/WorldInspector","source":"engine/tools/inspector/WorldInspector.js","import":"/engine/tools/inspector/WorldInspector.js","sourceHash":"7b722c7e4d6f17f13a4e1a9beaec79f0496af6e8236783eba9d09bb33fc17330","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/inspector/WorldInspector.js","title":"tools/inspector/WorldInspector","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/WorldInspector.md","moduleTitle":"tools/inspector/WorldInspector","source":"engine/tools/inspector/WorldInspector.js","import":"/engine/tools/inspector/WorldInspector.js","sourceHash":"7b722c7e4d6f17f13a4e1a9beaec79f0496af6e8236783eba9d09bb33fc17330","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/WorldInspector.js#0000:createWorldInspectorModel","exportIndex":0,"name":"createWorldInspectorModel","kind":"function","signature":"createWorldInspectorModel(world, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/WorldInspector.md","moduleTitle":"tools/inspector/WorldInspector","source":"engine/tools/inspector/WorldInspector.js","import":"/engine/tools/inspector/WorldInspector.js","sourceHash":"7b722c7e4d6f17f13a4e1a9beaec79f0496af6e8236783eba9d09bb33fc17330","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/WorldInspector.js#0001:applyWorldInspectorModel","exportIndex":1,"name":"applyWorldInspectorModel","kind":"function","signature":"applyWorldInspectorModel(world, model)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/entityEditors/CameraComponentEditor.md","moduleTitle":"tools/inspector/entityEditors/CameraComponentEditor","source":"engine/tools/inspector/entityEditors/CameraComponentEditor.js","import":"/engine/tools/inspector/entityEditors/CameraComponentEditor.js","sourceHash":"65e34e19e8dc6f8af1a17101dd734c490c6ab2e657d58404c2f2cc5948e6ec98","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/inspector/entityEditors/CameraComponentEditor.js","title":"tools/inspector/entityEditors/CameraComponentEditor","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/entityEditors/CameraComponentEditor.md","moduleTitle":"tools/inspector/entityEditors/CameraComponentEditor","source":"engine/tools/inspector/entityEditors/CameraComponentEditor.js","import":"/engine/tools/inspector/entityEditors/CameraComponentEditor.js","sourceHash":"65e34e19e8dc6f8af1a17101dd734c490c6ab2e657d58404c2f2cc5948e6ec98","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/entityEditors/CameraComponentEditor.js#0000:renderCameraComponentEditor","exportIndex":0,"name":"renderCameraComponentEditor","kind":"function","signature":"renderCameraComponentEditor(doc, container, state)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/entityEditors/JsonComponentEditor.md","moduleTitle":"tools/inspector/entityEditors/JsonComponentEditor","source":"engine/tools/inspector/entityEditors/JsonComponentEditor.js","import":"/engine/tools/inspector/entityEditors/JsonComponentEditor.js","sourceHash":"d92117141e3b2277e08c8bf7243400412ad7075ae7dd26bf2c2546d16dbb1daa","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/inspector/entityEditors/JsonComponentEditor.js","title":"tools/inspector/entityEditors/JsonComponentEditor","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/entityEditors/JsonComponentEditor.md","moduleTitle":"tools/inspector/entityEditors/JsonComponentEditor","source":"engine/tools/inspector/entityEditors/JsonComponentEditor.js","import":"/engine/tools/inspector/entityEditors/JsonComponentEditor.js","sourceHash":"d92117141e3b2277e08c8bf7243400412ad7075ae7dd26bf2c2546d16dbb1daa","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/entityEditors/JsonComponentEditor.js#0000:renderJsonComponentEditor","exportIndex":0,"name":"renderJsonComponentEditor","kind":"function","signature":"renderJsonComponentEditor(doc, container, editor, value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/entityEditors/LightComponentEditor.md","moduleTitle":"tools/inspector/entityEditors/LightComponentEditor","source":"engine/tools/inspector/entityEditors/LightComponentEditor.js","import":"/engine/tools/inspector/entityEditors/LightComponentEditor.js","sourceHash":"fa0d717feda51f3ee8c60f2b93695a57c4e542530996b37613fc989f35729b11","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/inspector/entityEditors/LightComponentEditor.js","title":"tools/inspector/entityEditors/LightComponentEditor","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/entityEditors/LightComponentEditor.md","moduleTitle":"tools/inspector/entityEditors/LightComponentEditor","source":"engine/tools/inspector/entityEditors/LightComponentEditor.js","import":"/engine/tools/inspector/entityEditors/LightComponentEditor.js","sourceHash":"fa0d717feda51f3ee8c60f2b93695a57c4e542530996b37613fc989f35729b11","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/entityEditors/LightComponentEditor.js#0000:renderLightComponentEditor","exportIndex":0,"name":"renderLightComponentEditor","kind":"function","signature":"renderLightComponentEditor(doc, container, state)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/entityEditors/ModelAnimationEditor.md","moduleTitle":"tools/inspector/entityEditors/ModelAnimationEditor","source":"engine/tools/inspector/entityEditors/ModelAnimationEditor.js","import":"/engine/tools/inspector/entityEditors/ModelAnimationEditor.js","sourceHash":"9ed4ad0c48cc501e3277b796dfa6c0107c6ddf2a754054e355d5c80a8ae2784c","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/inspector/entityEditors/ModelAnimationEditor.js","title":"tools/inspector/entityEditors/ModelAnimationEditor","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/entityEditors/ModelAnimationEditor.md","moduleTitle":"tools/inspector/entityEditors/ModelAnimationEditor","source":"engine/tools/inspector/entityEditors/ModelAnimationEditor.js","import":"/engine/tools/inspector/entityEditors/ModelAnimationEditor.js","sourceHash":"9ed4ad0c48cc501e3277b796dfa6c0107c6ddf2a754054e355d5c80a8ae2784c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/entityEditors/ModelAnimationEditor.js#0000:renderModelAnimationEditor","exportIndex":0,"name":"renderModelAnimationEditor","kind":"function","signature":"async renderModelAnimationEditor(doc, container, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/entityEditors/ModelMorphEditor.md","moduleTitle":"tools/inspector/entityEditors/ModelMorphEditor","source":"engine/tools/inspector/entityEditors/ModelMorphEditor.js","import":"/engine/tools/inspector/entityEditors/ModelMorphEditor.js","sourceHash":"e26787d717c20a26d6c4e4689fbcdfa727b80276cc937bc82c2b4c764b17474e","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/inspector/entityEditors/ModelMorphEditor.js","title":"tools/inspector/entityEditors/ModelMorphEditor","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/entityEditors/ModelMorphEditor.md","moduleTitle":"tools/inspector/entityEditors/ModelMorphEditor","source":"engine/tools/inspector/entityEditors/ModelMorphEditor.js","import":"/engine/tools/inspector/entityEditors/ModelMorphEditor.js","sourceHash":"e26787d717c20a26d6c4e4689fbcdfa727b80276cc937bc82c2b4c764b17474e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/entityEditors/ModelMorphEditor.js#0000:renderModelMorphEditor","exportIndex":0,"name":"renderModelMorphEditor","kind":"function","signature":"async renderModelMorphEditor(doc, container, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/entityEditors/PhysicalMaterialComponentEditor.md","moduleTitle":"tools/inspector/entityEditors/PhysicalMaterialComponentEditor","source":"engine/tools/inspector/entityEditors/PhysicalMaterialComponentEditor.js","import":"/engine/tools/inspector/entityEditors/PhysicalMaterialComponentEditor.js","sourceHash":"9a4ad312d59cce7849ef25765166039bf487b25104aa99ecf18571996b68d6be","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/inspector/entityEditors/PhysicalMaterialComponentEditor.js","title":"tools/inspector/entityEditors/PhysicalMaterialComponentEditor","summary":"Physical Material Component Editor — renders preset dropdown + property sliders for density, elasticity, hardness, brittleness, strength, friction, restitution, deformable/breakable flags, fracture pattern, and damage status.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/entityEditors/PhysicalMaterialComponentEditor.md","moduleTitle":"tools/inspector/entityEditors/PhysicalMaterialComponentEditor","source":"engine/tools/inspector/entityEditors/PhysicalMaterialComponentEditor.js","import":"/engine/tools/inspector/entityEditors/PhysicalMaterialComponentEditor.js","sourceHash":"9a4ad312d59cce7849ef25765166039bf487b25104aa99ecf18571996b68d6be","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/entityEditors/PhysicalMaterialComponentEditor.js#0000:renderPhysicalMaterialComponentEditor","exportIndex":0,"name":"renderPhysicalMaterialComponentEditor","kind":"function","signature":"renderPhysicalMaterialComponentEditor(doc, container, state)","summary":"Physical Material Component Editor — renders preset dropdown + property sliders for density, elasticity, hardness, brittleness, strength, friction, restitution, deformable/breakable flags, fracture pattern, and damage status."}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/entityEditors/PhysicsRopeComponentEditor.md","moduleTitle":"tools/inspector/entityEditors/PhysicsRopeComponentEditor","source":"engine/tools/inspector/entityEditors/PhysicsRopeComponentEditor.js","import":"/engine/tools/inspector/entityEditors/PhysicsRopeComponentEditor.js","sourceHash":"5d47eec49bd20d250bfdcaa4ecee1f53e36d15d9a597fb0c23cb1494a82b60d6","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/inspector/entityEditors/PhysicsRopeComponentEditor.js","title":"tools/inspector/entityEditors/PhysicsRopeComponentEditor","summary":"PhysicsRopeComponentEditor.js - Rope Property Editor Renders rope-specific properties in the entity inspector when a rope entity is selected. Uses shared ROPE_INSPECTOR_SCHEMA from RopeSchema.js for full consistency with RopeTool.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/entityEditors/PhysicsRopeComponentEditor.md","moduleTitle":"tools/inspector/entityEditors/PhysicsRopeComponentEditor","source":"engine/tools/inspector/entityEditors/PhysicsRopeComponentEditor.js","import":"/engine/tools/inspector/entityEditors/PhysicsRopeComponentEditor.js","sourceHash":"5d47eec49bd20d250bfdcaa4ecee1f53e36d15d9a597fb0c23cb1494a82b60d6","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/entityEditors/PhysicsRopeComponentEditor.js#0000:renderPhysicsRopeComponentEditor","exportIndex":0,"name":"renderPhysicsRopeComponentEditor","kind":"function","signature":"renderPhysicsRopeComponentEditor(doc, container, entitiesState)","summary":"Render the PhysicsRope component editor using shared schema"}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/entityEditors/RenderableComponentEditor.md","moduleTitle":"tools/inspector/entityEditors/RenderableComponentEditor","source":"engine/tools/inspector/entityEditors/RenderableComponentEditor.js","import":"/engine/tools/inspector/entityEditors/RenderableComponentEditor.js","sourceHash":"585c5fcce8098b561a225874eb66809edd149c86dc2117e497f8bf56bdc2873c","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/inspector/entityEditors/RenderableComponentEditor.js","title":"tools/inspector/entityEditors/RenderableComponentEditor","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/entityEditors/RenderableComponentEditor.md","moduleTitle":"tools/inspector/entityEditors/RenderableComponentEditor","source":"engine/tools/inspector/entityEditors/RenderableComponentEditor.js","import":"/engine/tools/inspector/entityEditors/RenderableComponentEditor.js","sourceHash":"585c5fcce8098b561a225874eb66809edd149c86dc2117e497f8bf56bdc2873c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/entityEditors/RenderableComponentEditor.js#0000:renderRenderableComponentEditor","exportIndex":0,"name":"renderRenderableComponentEditor","kind":"function","signature":"renderRenderableComponentEditor(doc, container, state)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/entityEditors/TransformComponentEditor.md","moduleTitle":"tools/inspector/entityEditors/TransformComponentEditor","source":"engine/tools/inspector/entityEditors/TransformComponentEditor.js","import":"/engine/tools/inspector/entityEditors/TransformComponentEditor.js","sourceHash":"1e685dd23b3d698d11de9bce8822c51e83d2c1fc946b57f8bd231dd340a83816","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/inspector/entityEditors/TransformComponentEditor.js","title":"tools/inspector/entityEditors/TransformComponentEditor","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/entityEditors/TransformComponentEditor.md","moduleTitle":"tools/inspector/entityEditors/TransformComponentEditor","source":"engine/tools/inspector/entityEditors/TransformComponentEditor.js","import":"/engine/tools/inspector/entityEditors/TransformComponentEditor.js","sourceHash":"1e685dd23b3d698d11de9bce8822c51e83d2c1fc946b57f8bd231dd340a83816","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/entityEditors/TransformComponentEditor.js#0000:renderTransformComponentEditor","exportIndex":0,"name":"renderTransformComponentEditor","kind":"function","signature":"renderTransformComponentEditor(doc, container, state)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/entityEditors/TransformComponentEditor.md","moduleTitle":"tools/inspector/entityEditors/TransformComponentEditor","source":"engine/tools/inspector/entityEditors/TransformComponentEditor.js","import":"/engine/tools/inspector/entityEditors/TransformComponentEditor.js","sourceHash":"1e685dd23b3d698d11de9bce8822c51e83d2c1fc946b57f8bd231dd340a83816","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/entityEditors/TransformComponentEditor.js#0001:SNAP_SETTINGS","exportIndex":1,"name":"SNAP_SETTINGS","kind":"constant","signature":"SNAP_SETTINGS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/EntitiesInspectorPanel.md","moduleTitle":"tools/inspector/panels/EntitiesInspectorPanel","source":"engine/tools/inspector/panels/EntitiesInspectorPanel.js","import":"/engine/tools/inspector/panels/EntitiesInspectorPanel.js","sourceHash":"1e8c409b6ca34d1ad7212b0b023a47bbd7bae222c268f4ef2a2ab7157d6235e5","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/inspector/panels/EntitiesInspectorPanel.js","title":"tools/inspector/panels/EntitiesInspectorPanel","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/EntitiesInspectorPanel.md","moduleTitle":"tools/inspector/panels/EntitiesInspectorPanel","source":"engine/tools/inspector/panels/EntitiesInspectorPanel.js","import":"/engine/tools/inspector/panels/EntitiesInspectorPanel.js","sourceHash":"1e8c409b6ca34d1ad7212b0b023a47bbd7bae222c268f4ef2a2ab7157d6235e5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/EntitiesInspectorPanel.js#0000:initEntitiesInspectorPanel","exportIndex":0,"name":"initEntitiesInspectorPanel","kind":"re-export","signature":"initEntitiesInspectorPanel","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/InspectorStyles.md","moduleTitle":"tools/inspector/panels/InspectorStyles","source":"engine/tools/inspector/panels/InspectorStyles.js","import":"/engine/tools/inspector/panels/InspectorStyles.js","sourceHash":"d1637bdf43f751e641c20838afecc27af3ed91189b5562bc51b94b17a4acdb5c","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/inspector/panels/InspectorStyles.js","title":"tools/inspector/panels/InspectorStyles","summary":"Inject shared inspector styles into the document. Safe to call multiple times - will only inject once.","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/InspectorStyles.md","moduleTitle":"tools/inspector/panels/InspectorStyles","source":"engine/tools/inspector/panels/InspectorStyles.js","import":"/engine/tools/inspector/panels/InspectorStyles.js","sourceHash":"d1637bdf43f751e641c20838afecc27af3ed91189b5562bc51b94b17a4acdb5c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/InspectorStyles.js#0000:injectInspectorStyles","exportIndex":0,"name":"injectInspectorStyles","kind":"function","signature":"injectInspectorStyles(doc = document)","summary":"Inject shared inspector styles into the document. Safe to call multiple times - will only inject once."}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/InspectorStyles.md","moduleTitle":"tools/inspector/panels/InspectorStyles","source":"engine/tools/inspector/panels/InspectorStyles.js","import":"/engine/tools/inspector/panels/InspectorStyles.js","sourceHash":"d1637bdf43f751e641c20838afecc27af3ed91189b5562bc51b94b17a4acdb5c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/InspectorStyles.js#0001:applyPanelContainerStyles","exportIndex":1,"name":"applyPanelContainerStyles","kind":"function","signature":"applyPanelContainerStyles(container)","summary":"Apply standard inspector panel container styles to a DOM element."}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/InspectorStyles.md","moduleTitle":"tools/inspector/panels/InspectorStyles","source":"engine/tools/inspector/panels/InspectorStyles.js","import":"/engine/tools/inspector/panels/InspectorStyles.js","sourceHash":"d1637bdf43f751e641c20838afecc27af3ed91189b5562bc51b94b17a4acdb5c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/InspectorStyles.js#0002:areStylesInjected","exportIndex":2,"name":"areStylesInjected","kind":"function","signature":"areStylesInjected()","summary":"Check if inspector styles have been injected"}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/NavInspectorPanel.md","moduleTitle":"tools/inspector/panels/NavInspectorPanel","source":"engine/tools/inspector/panels/NavInspectorPanel.js","import":"/engine/tools/inspector/panels/NavInspectorPanel.js","sourceHash":"80d61d38b45bac8e335e80352a3b11a338d47a751b2381264324f2b1f5944949","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/inspector/panels/NavInspectorPanel.js","title":"tools/inspector/panels/NavInspectorPanel","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/NavInspectorPanel.md","moduleTitle":"tools/inspector/panels/NavInspectorPanel","source":"engine/tools/inspector/panels/NavInspectorPanel.js","import":"/engine/tools/inspector/panels/NavInspectorPanel.js","sourceHash":"80d61d38b45bac8e335e80352a3b11a338d47a751b2381264324f2b1f5944949","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/NavInspectorPanel.js#0000:initNavInspectorPanel","exportIndex":0,"name":"initNavInspectorPanel","kind":"function","signature":"initNavInspectorPanel(doc, navPanel, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/SpawnerInspectorPanel.md","moduleTitle":"tools/inspector/panels/SpawnerInspectorPanel","source":"engine/tools/inspector/panels/SpawnerInspectorPanel.js","import":"/engine/tools/inspector/panels/SpawnerInspectorPanel.js","sourceHash":"8a2bd375c55f902f408c34130d565e2e7b6d8305a42185dcc1a34f223b768d13","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/inspector/panels/SpawnerInspectorPanel.js","title":"tools/inspector/panels/SpawnerInspectorPanel","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/SpawnerInspectorPanel.md","moduleTitle":"tools/inspector/panels/SpawnerInspectorPanel","source":"engine/tools/inspector/panels/SpawnerInspectorPanel.js","import":"/engine/tools/inspector/panels/SpawnerInspectorPanel.js","sourceHash":"8a2bd375c55f902f408c34130d565e2e7b6d8305a42185dcc1a34f223b768d13","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/SpawnerInspectorPanel.js#0000:initSpawnerInspectorPanel","exportIndex":0,"name":"initSpawnerInspectorPanel","kind":"function","signature":"initSpawnerInspectorPanel(doc, spawnerPanel, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/SpellBookPanel.md","moduleTitle":"tools/inspector/panels/SpellBookPanel","source":"engine/tools/inspector/panels/SpellBookPanel.js","import":"/engine/tools/inspector/panels/SpellBookPanel.js","sourceHash":"9637801dc6c6d653b04503e710ac02d7165f771eccf90281c3107d54376d7aeb","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/inspector/panels/SpellBookPanel.js","title":"tools/inspector/panels/SpellBookPanel","summary":"Spell Book Inspector Panel Browse, manage, and organize saved spells. Integrates with SpellBook for persistence.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/SpellBookPanel.md","moduleTitle":"tools/inspector/panels/SpellBookPanel","source":"engine/tools/inspector/panels/SpellBookPanel.js","import":"/engine/tools/inspector/panels/SpellBookPanel.js","sourceHash":"9637801dc6c6d653b04503e710ac02d7165f771eccf90281c3107d54376d7aeb","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/SpellBookPanel.js#0000:initSpellBookPanel","exportIndex":0,"name":"initSpellBookPanel","kind":"function","signature":"initSpellBookPanel(container, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/SpellBuilderPanel.md","moduleTitle":"tools/inspector/panels/SpellBuilderPanel","source":"engine/tools/inspector/panels/SpellBuilderPanel.js","import":"/engine/tools/inspector/panels/SpellBuilderPanel.js","sourceHash":"6126bc62a6d27e3b6a0e62068996fc8d6edc8595b02528300bc579aca3c33ac8","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/inspector/panels/SpellBuilderPanel.js","title":"tools/inspector/panels/SpellBuilderPanel","summary":"Spell Builder Inspector Panel Real-time spell effect editor integrated with the engine inspector. Allows creating, customizing, and previewing particle-based spells.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/SpellBuilderPanel.md","moduleTitle":"tools/inspector/panels/SpellBuilderPanel","source":"engine/tools/inspector/panels/SpellBuilderPanel.js","import":"/engine/tools/inspector/panels/SpellBuilderPanel.js","sourceHash":"6126bc62a6d27e3b6a0e62068996fc8d6edc8595b02528300bc579aca3c33ac8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/SpellBuilderPanel.js#0000:initSpellBuilderPanel","exportIndex":0,"name":"initSpellBuilderPanel","kind":"function","signature":"initSpellBuilderPanel(container, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/WorldInspectorPanel.md","moduleTitle":"tools/inspector/panels/WorldInspectorPanel","source":"engine/tools/inspector/panels/WorldInspectorPanel.js","import":"/engine/tools/inspector/panels/WorldInspectorPanel.js","sourceHash":"e64709a6112daa53240e5fd1632d8dc5dd0190ba8a25f5a91f935bf59ec97b29","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/inspector/panels/WorldInspectorPanel.js","title":"tools/inspector/panels/WorldInspectorPanel","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/WorldInspectorPanel.md","moduleTitle":"tools/inspector/panels/WorldInspectorPanel","source":"engine/tools/inspector/panels/WorldInspectorPanel.js","import":"/engine/tools/inspector/panels/WorldInspectorPanel.js","sourceHash":"e64709a6112daa53240e5fd1632d8dc5dd0190ba8a25f5a91f935bf59ec97b29","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/WorldInspectorPanel.js#0000:initWorldInspectorPanel","exportIndex":0,"name":"initWorldInspectorPanel","kind":"function","signature":"initWorldInspectorPanel(doc, worldPanel, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/index.md","moduleTitle":"tools/inspector/panels/index","source":"engine/tools/inspector/panels/index.js","import":"/engine/tools/inspector/panels/index.js","sourceHash":"5a5efc9f699194925653ef8e9c8fd52c448a174ab6247bacf382eb6101fb9c05","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/inspector/panels/index.js","title":"tools/inspector/panels/index","summary":"","exportCount":21}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/index.md","moduleTitle":"tools/inspector/panels/index","source":"engine/tools/inspector/panels/index.js","import":"/engine/tools/inspector/panels/index.js","sourceHash":"5a5efc9f699194925653ef8e9c8fd52c448a174ab6247bacf382eb6101fb9c05","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/index.js#0000:INSPECTOR_THEME","exportIndex":0,"name":"INSPECTOR_THEME","kind":"re-export","signature":"INSPECTOR_THEME","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/index.md","moduleTitle":"tools/inspector/panels/index","source":"engine/tools/inspector/panels/index.js","import":"/engine/tools/inspector/panels/index.js","sourceHash":"5a5efc9f699194925653ef8e9c8fd52c448a174ab6247bacf382eb6101fb9c05","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/index.js#0001:addCheckboxRow","exportIndex":1,"name":"addCheckboxRow","kind":"re-export","signature":"addCheckboxRow","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/index.md","moduleTitle":"tools/inspector/panels/index","source":"engine/tools/inspector/panels/index.js","import":"/engine/tools/inspector/panels/index.js","sourceHash":"5a5efc9f699194925653ef8e9c8fd52c448a174ab6247bacf382eb6101fb9c05","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/index.js#0002:addConfigRow","exportIndex":2,"name":"addConfigRow","kind":"re-export","signature":"addConfigRow","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/index.md","moduleTitle":"tools/inspector/panels/index","source":"engine/tools/inspector/panels/index.js","import":"/engine/tools/inspector/panels/index.js","sourceHash":"5a5efc9f699194925653ef8e9c8fd52c448a174ab6247bacf382eb6101fb9c05","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/index.js#0003:addNumberRow","exportIndex":3,"name":"addNumberRow","kind":"re-export","signature":"addNumberRow","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/index.md","moduleTitle":"tools/inspector/panels/index","source":"engine/tools/inspector/panels/index.js","import":"/engine/tools/inspector/panels/index.js","sourceHash":"5a5efc9f699194925653ef8e9c8fd52c448a174ab6247bacf382eb6101fb9c05","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/index.js#0004:addSliderRow","exportIndex":4,"name":"addSliderRow","kind":"re-export","signature":"addSliderRow","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/index.md","moduleTitle":"tools/inspector/panels/index","source":"engine/tools/inspector/panels/index.js","import":"/engine/tools/inspector/panels/index.js","sourceHash":"5a5efc9f699194925653ef8e9c8fd52c448a174ab6247bacf382eb6101fb9c05","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/index.js#0005:addTextRow","exportIndex":5,"name":"addTextRow","kind":"re-export","signature":"addTextRow","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/index.md","moduleTitle":"tools/inspector/panels/index","source":"engine/tools/inspector/panels/index.js","import":"/engine/tools/inspector/panels/index.js","sourceHash":"5a5efc9f699194925653ef8e9c8fd52c448a174ab6247bacf382eb6101fb9c05","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/index.js#0006:applyPanelContainerStyles","exportIndex":6,"name":"applyPanelContainerStyles","kind":"re-export","signature":"applyPanelContainerStyles","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/index.md","moduleTitle":"tools/inspector/panels/index","source":"engine/tools/inspector/panels/index.js","import":"/engine/tools/inspector/panels/index.js","sourceHash":"5a5efc9f699194925653ef8e9c8fd52c448a174ab6247bacf382eb6101fb9c05","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/index.js#0007:areStylesInjected","exportIndex":7,"name":"areStylesInjected","kind":"re-export","signature":"areStylesInjected","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/index.md","moduleTitle":"tools/inspector/panels/index","source":"engine/tools/inspector/panels/index.js","import":"/engine/tools/inspector/panels/index.js","sourceHash":"5a5efc9f699194925653ef8e9c8fd52c448a174ab6247bacf382eb6101fb9c05","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/index.js#0008:createPropertySection","exportIndex":8,"name":"createPropertySection","kind":"re-export","signature":"createPropertySection","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/index.md","moduleTitle":"tools/inspector/panels/index","source":"engine/tools/inspector/panels/index.js","import":"/engine/tools/inspector/panels/index.js","sourceHash":"5a5efc9f699194925653ef8e9c8fd52c448a174ab6247bacf382eb6101fb9c05","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/index.js#0009:createStatItem","exportIndex":9,"name":"createStatItem","kind":"re-export","signature":"createStatItem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/index.md","moduleTitle":"tools/inspector/panels/index","source":"engine/tools/inspector/panels/index.js","import":"/engine/tools/inspector/panels/index.js","sourceHash":"5a5efc9f699194925653ef8e9c8fd52c448a174ab6247bacf382eb6101fb9c05","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/index.js#0010:createThemedBox","exportIndex":10,"name":"createThemedBox","kind":"re-export","signature":"createThemedBox","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/index.md","moduleTitle":"tools/inspector/panels/index","source":"engine/tools/inspector/panels/index.js","import":"/engine/tools/inspector/panels/index.js","sourceHash":"5a5efc9f699194925653ef8e9c8fd52c448a174ab6247bacf382eb6101fb9c05","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/index.js#0011:createThemedCheckboxRow","exportIndex":11,"name":"createThemedCheckboxRow","kind":"re-export","signature":"createThemedCheckboxRow","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/index.md","moduleTitle":"tools/inspector/panels/index","source":"engine/tools/inspector/panels/index.js","import":"/engine/tools/inspector/panels/index.js","sourceHash":"5a5efc9f699194925653ef8e9c8fd52c448a174ab6247bacf382eb6101fb9c05","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/index.js#0012:createThemedSlider","exportIndex":12,"name":"createThemedSlider","kind":"re-export","signature":"createThemedSlider","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/index.md","moduleTitle":"tools/inspector/panels/index","source":"engine/tools/inspector/panels/index.js","import":"/engine/tools/inspector/panels/index.js","sourceHash":"5a5efc9f699194925653ef8e9c8fd52c448a174ab6247bacf382eb6101fb9c05","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/index.js#0013:initEntitiesInspectorPanel","exportIndex":13,"name":"initEntitiesInspectorPanel","kind":"re-export","signature":"initEntitiesInspectorPanel","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/index.md","moduleTitle":"tools/inspector/panels/index","source":"engine/tools/inspector/panels/index.js","import":"/engine/tools/inspector/panels/index.js","sourceHash":"5a5efc9f699194925653ef8e9c8fd52c448a174ab6247bacf382eb6101fb9c05","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/index.js#0014:initNavInspectorPanel","exportIndex":14,"name":"initNavInspectorPanel","kind":"re-export","signature":"initNavInspectorPanel","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/index.md","moduleTitle":"tools/inspector/panels/index","source":"engine/tools/inspector/panels/index.js","import":"/engine/tools/inspector/panels/index.js","sourceHash":"5a5efc9f699194925653ef8e9c8fd52c448a174ab6247bacf382eb6101fb9c05","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/index.js#0015:initSpawnerInspectorPanel","exportIndex":15,"name":"initSpawnerInspectorPanel","kind":"re-export","signature":"initSpawnerInspectorPanel","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/index.md","moduleTitle":"tools/inspector/panels/index","source":"engine/tools/inspector/panels/index.js","import":"/engine/tools/inspector/panels/index.js","sourceHash":"5a5efc9f699194925653ef8e9c8fd52c448a174ab6247bacf382eb6101fb9c05","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/index.js#0016:initSpellBookPanel","exportIndex":16,"name":"initSpellBookPanel","kind":"re-export","signature":"initSpellBookPanel","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/index.md","moduleTitle":"tools/inspector/panels/index","source":"engine/tools/inspector/panels/index.js","import":"/engine/tools/inspector/panels/index.js","sourceHash":"5a5efc9f699194925653ef8e9c8fd52c448a174ab6247bacf382eb6101fb9c05","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/index.js#0017:initSpellBuilderPanel","exportIndex":17,"name":"initSpellBuilderPanel","kind":"re-export","signature":"initSpellBuilderPanel","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/index.md","moduleTitle":"tools/inspector/panels/index","source":"engine/tools/inspector/panels/index.js","import":"/engine/tools/inspector/panels/index.js","sourceHash":"5a5efc9f699194925653ef8e9c8fd52c448a174ab6247bacf382eb6101fb9c05","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/index.js#0018:initWorldInspectorPanel","exportIndex":18,"name":"initWorldInspectorPanel","kind":"re-export","signature":"initWorldInspectorPanel","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/index.md","moduleTitle":"tools/inspector/panels/index","source":"engine/tools/inspector/panels/index.js","import":"/engine/tools/inspector/panels/index.js","sourceHash":"5a5efc9f699194925653ef8e9c8fd52c448a174ab6247bacf382eb6101fb9c05","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/index.js#0019:injectInspectorStyles","exportIndex":19,"name":"injectInspectorStyles","kind":"re-export","signature":"injectInspectorStyles","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/index.md","moduleTitle":"tools/inspector/panels/index","source":"engine/tools/inspector/panels/index.js","import":"/engine/tools/inspector/panels/index.js","sourceHash":"5a5efc9f699194925653ef8e9c8fd52c448a174ab6247bacf382eb6101fb9c05","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/index.js#0020:renderInspectorSchema","exportIndex":20,"name":"renderInspectorSchema","kind":"re-export","signature":"renderInspectorSchema","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/spawner/ElementLayers.md","moduleTitle":"tools/inspector/panels/spawner/ElementLayers","source":"engine/tools/inspector/panels/spawner/ElementLayers.js","import":"/engine/tools/inspector/panels/spawner/ElementLayers.js","sourceHash":"27722216d7b2df09c103e220502c35b0477ce45e7508707dc5ea20d6f10dddcc","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/inspector/panels/spawner/ElementLayers.js","title":"tools/inspector/panels/spawner/ElementLayers","summary":"","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/spawner/ElementLayers.md","moduleTitle":"tools/inspector/panels/spawner/ElementLayers","source":"engine/tools/inspector/panels/spawner/ElementLayers.js","import":"/engine/tools/inspector/panels/spawner/ElementLayers.js","sourceHash":"27722216d7b2df09c103e220502c35b0477ce45e7508707dc5ea20d6f10dddcc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/spawner/ElementLayers.js#0000:createElementLayers","exportIndex":0,"name":"createElementLayers","kind":"function","signature":"createElementLayers(doc, { elements, onChange })","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/spawner/ElementLayers.md","moduleTitle":"tools/inspector/panels/spawner/ElementLayers","source":"engine/tools/inspector/panels/spawner/ElementLayers.js","import":"/engine/tools/inspector/panels/spawner/ElementLayers.js","sourceHash":"27722216d7b2df09c103e220502c35b0477ce45e7508707dc5ea20d6f10dddcc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/spawner/ElementLayers.js#0001:ELEMENT_COLORS","exportIndex":1,"name":"ELEMENT_COLORS","kind":"re-export","signature":"ELEMENT_COLORS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/spawner/ElementLayers.md","moduleTitle":"tools/inspector/panels/spawner/ElementLayers","source":"engine/tools/inspector/panels/spawner/ElementLayers.js","import":"/engine/tools/inspector/panels/spawner/ElementLayers.js","sourceHash":"27722216d7b2df09c103e220502c35b0477ce45e7508707dc5ea20d6f10dddcc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/spawner/ElementLayers.js#0002:ELEMENT_ICONS","exportIndex":2,"name":"ELEMENT_ICONS","kind":"re-export","signature":"ELEMENT_ICONS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/spawner/EmitterInspectorCard.md","moduleTitle":"tools/inspector/panels/spawner/EmitterInspectorCard","source":"engine/tools/inspector/panels/spawner/EmitterInspectorCard.js","import":"/engine/tools/inspector/panels/spawner/EmitterInspectorCard.js","sourceHash":"b066d6a1c835ffb8f319bcc7d1e6b096161fbe8c2d507cbecde45f812d68be63","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/inspector/panels/spawner/EmitterInspectorCard.js","title":"tools/inspector/panels/spawner/EmitterInspectorCard","summary":"EmitterInspectorCard.js - Shared emitter property card component Modular emitter editor used by both Spawner and Entities inspector panels. Configurable sections: header, elements, physics, aim.","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/spawner/EmitterInspectorCard.md","moduleTitle":"tools/inspector/panels/spawner/EmitterInspectorCard","source":"engine/tools/inspector/panels/spawner/EmitterInspectorCard.js","import":"/engine/tools/inspector/panels/spawner/EmitterInspectorCard.js","sourceHash":"b066d6a1c835ffb8f319bcc7d1e6b096161fbe8c2d507cbecde45f812d68be63","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/spawner/EmitterInspectorCard.js#0000:createEmitterInspectorCard","exportIndex":0,"name":"createEmitterInspectorCard","kind":"function","signature":"createEmitterInspectorCard(doc, options = {})","summary":"Create a modular emitter inspector card."}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/spawner/EmitterInspectorCard.md","moduleTitle":"tools/inspector/panels/spawner/EmitterInspectorCard","source":"engine/tools/inspector/panels/spawner/EmitterInspectorCard.js","import":"/engine/tools/inspector/panels/spawner/EmitterInspectorCard.js","sourceHash":"b066d6a1c835ffb8f319bcc7d1e6b096161fbe8c2d507cbecde45f812d68be63","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/spawner/EmitterInspectorCard.js#0001:STATE_ICONS","exportIndex":1,"name":"STATE_ICONS","kind":"constant","signature":"STATE_ICONS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/spawner/EmitterInspectorCard.md","moduleTitle":"tools/inspector/panels/spawner/EmitterInspectorCard","source":"engine/tools/inspector/panels/spawner/EmitterInspectorCard.js","import":"/engine/tools/inspector/panels/spawner/EmitterInspectorCard.js","sourceHash":"b066d6a1c835ffb8f319bcc7d1e6b096161fbe8c2d507cbecde45f812d68be63","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/spawner/EmitterInspectorCard.js#0002:STATE_COLORS","exportIndex":2,"name":"STATE_COLORS","kind":"constant","signature":"STATE_COLORS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/spawner/EmitterInspectorCard.md","moduleTitle":"tools/inspector/panels/spawner/EmitterInspectorCard","source":"engine/tools/inspector/panels/spawner/EmitterInspectorCard.js","import":"/engine/tools/inspector/panels/spawner/EmitterInspectorCard.js","sourceHash":"b066d6a1c835ffb8f319bcc7d1e6b096161fbe8c2d507cbecde45f812d68be63","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/spawner/EmitterInspectorCard.js#0003:ELEMENT_ICONS","exportIndex":3,"name":"ELEMENT_ICONS","kind":"constant","signature":"ELEMENT_ICONS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/spawner/EmitterInspectorCard.md","moduleTitle":"tools/inspector/panels/spawner/EmitterInspectorCard","source":"engine/tools/inspector/panels/spawner/EmitterInspectorCard.js","import":"/engine/tools/inspector/panels/spawner/EmitterInspectorCard.js","sourceHash":"b066d6a1c835ffb8f319bcc7d1e6b096161fbe8c2d507cbecde45f812d68be63","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/spawner/EmitterInspectorCard.js#0004:ELEMENT_COLORS","exportIndex":4,"name":"ELEMENT_COLORS","kind":"constant","signature":"ELEMENT_COLORS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/spawner/GyroAimControl.md","moduleTitle":"tools/inspector/panels/spawner/GyroAimControl","source":"engine/tools/inspector/panels/spawner/GyroAimControl.js","import":"/engine/tools/inspector/panels/spawner/GyroAimControl.js","sourceHash":"9350ce6c7b1cfb39c7063d66f1f26db05a9fe93ec5d7414a49244c4fc21f9c8c","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/inspector/panels/spawner/GyroAimControl.js","title":"tools/inspector/panels/spawner/GyroAimControl","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/spawner/GyroAimControl.md","moduleTitle":"tools/inspector/panels/spawner/GyroAimControl","source":"engine/tools/inspector/panels/spawner/GyroAimControl.js","import":"/engine/tools/inspector/panels/spawner/GyroAimControl.js","sourceHash":"9350ce6c7b1cfb39c7063d66f1f26db05a9fe93ec5d7414a49244c4fc21f9c8c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/spawner/GyroAimControl.js#0000:createGyroAimControl","exportIndex":0,"name":"createGyroAimControl","kind":"function","signature":"createGyroAimControl(doc, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/spawner/PhysicsProps.md","moduleTitle":"tools/inspector/panels/spawner/PhysicsProps","source":"engine/tools/inspector/panels/spawner/PhysicsProps.js","import":"/engine/tools/inspector/panels/spawner/PhysicsProps.js","sourceHash":"e1f48cc2b8fdf5dd5d14c1d152a0a5f223f63a44f87917f91a96bbd90e02de2a","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/inspector/panels/spawner/PhysicsProps.js","title":"tools/inspector/panels/spawner/PhysicsProps","summary":"Physics properties grid component Uses slider-based controls with value readouts to match element styling.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/spawner/PhysicsProps.md","moduleTitle":"tools/inspector/panels/spawner/PhysicsProps","source":"engine/tools/inspector/panels/spawner/PhysicsProps.js","import":"/engine/tools/inspector/panels/spawner/PhysicsProps.js","sourceHash":"e1f48cc2b8fdf5dd5d14c1d152a0a5f223f63a44f87917f91a96bbd90e02de2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/spawner/PhysicsProps.js#0000:createPhysicsProps","exportIndex":0,"name":"createPhysicsProps","kind":"function","signature":"createPhysicsProps(doc, { emitterCfg })","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/spawner/PhysicsProps.md","moduleTitle":"tools/inspector/panels/spawner/PhysicsProps","source":"engine/tools/inspector/panels/spawner/PhysicsProps.js","import":"/engine/tools/inspector/panels/spawner/PhysicsProps.js","sourceHash":"e1f48cc2b8fdf5dd5d14c1d152a0a5f223f63a44f87917f91a96bbd90e02de2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/spawner/PhysicsProps.js#0001:createMatterProps","exportIndex":1,"name":"createMatterProps","kind":"function","signature":"createMatterProps(doc, { emitterCfg, onProfileChange })","summary":"Create the Matter / Substance section for the emitter inspector. Shows substance dropdown, temperature slider, charge slider, state badge, active physics badges, and conditional SPH params."}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/spawner/StateSelector.md","moduleTitle":"tools/inspector/panels/spawner/StateSelector","source":"engine/tools/inspector/panels/spawner/StateSelector.js","import":"/engine/tools/inspector/panels/spawner/StateSelector.js","sourceHash":"ef48f34ccdf20a7aa57b355a1561a35617a464ae0d39c0cab52c43705e427d6c","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/inspector/panels/spawner/StateSelector.js","title":"tools/inspector/panels/spawner/StateSelector","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/spawner/StateSelector.md","moduleTitle":"tools/inspector/panels/spawner/StateSelector","source":"engine/tools/inspector/panels/spawner/StateSelector.js","import":"/engine/tools/inspector/panels/spawner/StateSelector.js","sourceHash":"ef48f34ccdf20a7aa57b355a1561a35617a464ae0d39c0cab52c43705e427d6c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/spawner/StateSelector.js#0000:createStateSelector","exportIndex":0,"name":"createStateSelector","kind":"function","signature":"createStateSelector(doc, { state })","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/spawner/StateSelector.md","moduleTitle":"tools/inspector/panels/spawner/StateSelector","source":"engine/tools/inspector/panels/spawner/StateSelector.js","import":"/engine/tools/inspector/panels/spawner/StateSelector.js","sourceHash":"ef48f34ccdf20a7aa57b355a1561a35617a464ae0d39c0cab52c43705e427d6c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/spawner/StateSelector.js#0001:STATE_ICONS","exportIndex":1,"name":"STATE_ICONS","kind":"re-export","signature":"STATE_ICONS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/spawner/index.md","moduleTitle":"tools/inspector/panels/spawner/index","source":"engine/tools/inspector/panels/spawner/index.js","import":"/engine/tools/inspector/panels/spawner/index.js","sourceHash":"41cd4cd0e95300c1be60a2dee72d25e7189e7a0a4534a9df43f81dfde48f83e1","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/inspector/panels/spawner/index.js","title":"tools/inspector/panels/spawner/index","summary":"Deep copy element defaults for a state","exportCount":14}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/spawner/index.md","moduleTitle":"tools/inspector/panels/spawner/index","source":"engine/tools/inspector/panels/spawner/index.js","import":"/engine/tools/inspector/panels/spawner/index.js","sourceHash":"41cd4cd0e95300c1be60a2dee72d25e7189e7a0a4534a9df43f81dfde48f83e1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/spawner/index.js#0000:getElementsForState","exportIndex":0,"name":"getElementsForState","kind":"function","signature":"getElementsForState(stateId)","summary":"Deep copy element defaults for a state"}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/spawner/index.md","moduleTitle":"tools/inspector/panels/spawner/index","source":"engine/tools/inspector/panels/spawner/index.js","import":"/engine/tools/inspector/panels/spawner/index.js","sourceHash":"41cd4cd0e95300c1be60a2dee72d25e7189e7a0a4534a9df43f81dfde48f83e1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/spawner/index.js#0001:STATE_ELEMENT_DEFAULTS","exportIndex":1,"name":"STATE_ELEMENT_DEFAULTS","kind":"constant","signature":"STATE_ELEMENT_DEFAULTS","summary":"Default element configurations for each state of matter"}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/spawner/index.md","moduleTitle":"tools/inspector/panels/spawner/index","source":"engine/tools/inspector/panels/spawner/index.js","import":"/engine/tools/inspector/panels/spawner/index.js","sourceHash":"41cd4cd0e95300c1be60a2dee72d25e7189e7a0a4534a9df43f81dfde48f83e1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/spawner/index.js#0002:ELEMENT_COLORS","exportIndex":2,"name":"ELEMENT_COLORS","kind":"re-export","signature":"ELEMENT_COLORS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/spawner/index.md","moduleTitle":"tools/inspector/panels/spawner/index","source":"engine/tools/inspector/panels/spawner/index.js","import":"/engine/tools/inspector/panels/spawner/index.js","sourceHash":"41cd4cd0e95300c1be60a2dee72d25e7189e7a0a4534a9df43f81dfde48f83e1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/spawner/index.js#0003:ELEMENT_ICONS","exportIndex":3,"name":"ELEMENT_ICONS","kind":"re-export","signature":"ELEMENT_ICONS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/spawner/index.md","moduleTitle":"tools/inspector/panels/spawner/index","source":"engine/tools/inspector/panels/spawner/index.js","import":"/engine/tools/inspector/panels/spawner/index.js","sourceHash":"41cd4cd0e95300c1be60a2dee72d25e7189e7a0a4534a9df43f81dfde48f83e1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/spawner/index.js#0004:EMITTER_ELEMENT_COLORS","exportIndex":4,"name":"EMITTER_ELEMENT_COLORS","kind":"re-export","signature":"EMITTER_ELEMENT_COLORS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/spawner/index.md","moduleTitle":"tools/inspector/panels/spawner/index","source":"engine/tools/inspector/panels/spawner/index.js","import":"/engine/tools/inspector/panels/spawner/index.js","sourceHash":"41cd4cd0e95300c1be60a2dee72d25e7189e7a0a4534a9df43f81dfde48f83e1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/spawner/index.js#0005:EMITTER_ELEMENT_ICONS","exportIndex":5,"name":"EMITTER_ELEMENT_ICONS","kind":"re-export","signature":"EMITTER_ELEMENT_ICONS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/spawner/index.md","moduleTitle":"tools/inspector/panels/spawner/index","source":"engine/tools/inspector/panels/spawner/index.js","import":"/engine/tools/inspector/panels/spawner/index.js","sourceHash":"41cd4cd0e95300c1be60a2dee72d25e7189e7a0a4534a9df43f81dfde48f83e1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/spawner/index.js#0006:EMITTER_STATE_ICONS","exportIndex":6,"name":"EMITTER_STATE_ICONS","kind":"re-export","signature":"EMITTER_STATE_ICONS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/spawner/index.md","moduleTitle":"tools/inspector/panels/spawner/index","source":"engine/tools/inspector/panels/spawner/index.js","import":"/engine/tools/inspector/panels/spawner/index.js","sourceHash":"41cd4cd0e95300c1be60a2dee72d25e7189e7a0a4534a9df43f81dfde48f83e1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/spawner/index.js#0007:STATE_COLORS","exportIndex":7,"name":"STATE_COLORS","kind":"re-export","signature":"STATE_COLORS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/spawner/index.md","moduleTitle":"tools/inspector/panels/spawner/index","source":"engine/tools/inspector/panels/spawner/index.js","import":"/engine/tools/inspector/panels/spawner/index.js","sourceHash":"41cd4cd0e95300c1be60a2dee72d25e7189e7a0a4534a9df43f81dfde48f83e1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/spawner/index.js#0008:STATE_ICONS","exportIndex":8,"name":"STATE_ICONS","kind":"re-export","signature":"STATE_ICONS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/spawner/index.md","moduleTitle":"tools/inspector/panels/spawner/index","source":"engine/tools/inspector/panels/spawner/index.js","import":"/engine/tools/inspector/panels/spawner/index.js","sourceHash":"41cd4cd0e95300c1be60a2dee72d25e7189e7a0a4534a9df43f81dfde48f83e1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/spawner/index.js#0009:createElementLayers","exportIndex":9,"name":"createElementLayers","kind":"re-export","signature":"createElementLayers","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/spawner/index.md","moduleTitle":"tools/inspector/panels/spawner/index","source":"engine/tools/inspector/panels/spawner/index.js","import":"/engine/tools/inspector/panels/spawner/index.js","sourceHash":"41cd4cd0e95300c1be60a2dee72d25e7189e7a0a4534a9df43f81dfde48f83e1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/spawner/index.js#0010:createEmitterInspectorCard","exportIndex":10,"name":"createEmitterInspectorCard","kind":"re-export","signature":"createEmitterInspectorCard","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/spawner/index.md","moduleTitle":"tools/inspector/panels/spawner/index","source":"engine/tools/inspector/panels/spawner/index.js","import":"/engine/tools/inspector/panels/spawner/index.js","sourceHash":"41cd4cd0e95300c1be60a2dee72d25e7189e7a0a4534a9df43f81dfde48f83e1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/spawner/index.js#0011:createGyroAimControl","exportIndex":11,"name":"createGyroAimControl","kind":"re-export","signature":"createGyroAimControl","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/spawner/index.md","moduleTitle":"tools/inspector/panels/spawner/index","source":"engine/tools/inspector/panels/spawner/index.js","import":"/engine/tools/inspector/panels/spawner/index.js","sourceHash":"41cd4cd0e95300c1be60a2dee72d25e7189e7a0a4534a9df43f81dfde48f83e1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/spawner/index.js#0012:createPhysicsProps","exportIndex":12,"name":"createPhysicsProps","kind":"re-export","signature":"createPhysicsProps","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/spawner/index.md","moduleTitle":"tools/inspector/panels/spawner/index","source":"engine/tools/inspector/panels/spawner/index.js","import":"/engine/tools/inspector/panels/spawner/index.js","sourceHash":"41cd4cd0e95300c1be60a2dee72d25e7189e7a0a4534a9df43f81dfde48f83e1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/spawner/index.js#0013:createStateSelector","exportIndex":13,"name":"createStateSelector","kind":"re-export","signature":"createStateSelector","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/spell-configs/SpellBook.md","moduleTitle":"tools/inspector/panels/spell-configs/SpellBook","source":"engine/tools/inspector/panels/spell-configs/SpellBook.js","import":"/engine/tools/inspector/panels/spell-configs/SpellBook.js","sourceHash":"ffb66f55f69db346762f9f20d1e48c57bfdd7ce629c0c00e2d843820811eff3d","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/inspector/panels/spell-configs/SpellBook.js","title":"tools/inspector/panels/spell-configs/SpellBook","summary":"SpellBook.js — local stub for the external spell book persistence system.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/spell-configs/SpellBook.md","moduleTitle":"tools/inspector/panels/spell-configs/SpellBook","source":"engine/tools/inspector/panels/spell-configs/SpellBook.js","import":"/engine/tools/inspector/panels/spell-configs/SpellBook.js","sourceHash":"ffb66f55f69db346762f9f20d1e48c57bfdd7ce629c0c00e2d843820811eff3d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/spell-configs/SpellBook.js#0000:getSpellBook","exportIndex":0,"name":"getSpellBook","kind":"function","signature":"getSpellBook()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/spell-configs/SpellBook.md","moduleTitle":"tools/inspector/panels/spell-configs/SpellBook","source":"engine/tools/inspector/panels/spell-configs/SpellBook.js","import":"/engine/tools/inspector/panels/spell-configs/SpellBook.js","sourceHash":"ffb66f55f69db346762f9f20d1e48c57bfdd7ce629c0c00e2d843820811eff3d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/spell-configs/SpellBook.js#0001:initSpellBookWithPresets","exportIndex":1,"name":"initSpellBookWithPresets","kind":"function","signature":"initSpellBookWithPresets()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/spell-configs/SpellConfig.md","moduleTitle":"tools/inspector/panels/spell-configs/SpellConfig","source":"engine/tools/inspector/panels/spell-configs/SpellConfig.js","import":"/engine/tools/inspector/panels/spell-configs/SpellConfig.js","sourceHash":"5663ec6328259df17fc05d21e3983983c3d8b45fa6d6410fa08865ed8c27c248","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/inspector/panels/spell-configs/SpellConfig.js","title":"tools/inspector/panels/spell-configs/SpellConfig","summary":"SpellConfig.js — local stub for the external spell configuration system.","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/spell-configs/SpellConfig.md","moduleTitle":"tools/inspector/panels/spell-configs/SpellConfig","source":"engine/tools/inspector/panels/spell-configs/SpellConfig.js","import":"/engine/tools/inspector/panels/spell-configs/SpellConfig.js","sourceHash":"5663ec6328259df17fc05d21e3983983c3d8b45fa6d6410fa08865ed8c27c248","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/spell-configs/SpellConfig.js#0000:cloneSpellConfig","exportIndex":0,"name":"cloneSpellConfig","kind":"function","signature":"cloneSpellConfig(id)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/spell-configs/SpellConfig.md","moduleTitle":"tools/inspector/panels/spell-configs/SpellConfig","source":"engine/tools/inspector/panels/spell-configs/SpellConfig.js","import":"/engine/tools/inspector/panels/spell-configs/SpellConfig.js","sourceHash":"5663ec6328259df17fc05d21e3983983c3d8b45fa6d6410fa08865ed8c27c248","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/spell-configs/SpellConfig.js#0001:rgbToHex","exportIndex":1,"name":"rgbToHex","kind":"function","signature":"rgbToHex(r, g, b)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/spell-configs/SpellConfig.md","moduleTitle":"tools/inspector/panels/spell-configs/SpellConfig","source":"engine/tools/inspector/panels/spell-configs/SpellConfig.js","import":"/engine/tools/inspector/panels/spell-configs/SpellConfig.js","sourceHash":"5663ec6328259df17fc05d21e3983983c3d8b45fa6d6410fa08865ed8c27c248","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/spell-configs/SpellConfig.js#0002:hexToRgb","exportIndex":2,"name":"hexToRgb","kind":"function","signature":"hexToRgb(hex)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/spell-configs/SpellConfig.md","moduleTitle":"tools/inspector/panels/spell-configs/SpellConfig","source":"engine/tools/inspector/panels/spell-configs/SpellConfig.js","import":"/engine/tools/inspector/panels/spell-configs/SpellConfig.js","sourceHash":"5663ec6328259df17fc05d21e3983983c3d8b45fa6d6410fa08865ed8c27c248","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/spell-configs/SpellConfig.js#0003:SPELL_CATEGORIES","exportIndex":3,"name":"SPELL_CATEGORIES","kind":"constant","signature":"SPELL_CATEGORIES","summary":"SpellConfig.js — local stub for the external spell configuration system."}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/spell-configs/SpellConfig.md","moduleTitle":"tools/inspector/panels/spell-configs/SpellConfig","source":"engine/tools/inspector/panels/spell-configs/SpellConfig.js","import":"/engine/tools/inspector/panels/spell-configs/SpellConfig.js","sourceHash":"5663ec6328259df17fc05d21e3983983c3d8b45fa6d6410fa08865ed8c27c248","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/spell-configs/SpellConfig.js#0004:SPELL_PRESETS","exportIndex":4,"name":"SPELL_PRESETS","kind":"constant","signature":"SPELL_PRESETS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/spell-configs/SpellConfig.md","moduleTitle":"tools/inspector/panels/spell-configs/SpellConfig","source":"engine/tools/inspector/panels/spell-configs/SpellConfig.js","import":"/engine/tools/inspector/panels/spell-configs/SpellConfig.js","sourceHash":"5663ec6328259df17fc05d21e3983983c3d8b45fa6d6410fa08865ed8c27c248","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/spell-configs/SpellConfig.js#0005:SPELL_PARAM_SCHEMA","exportIndex":5,"name":"SPELL_PARAM_SCHEMA","kind":"constant","signature":"SPELL_PARAM_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/spell-configs/SpellEffectFactory.md","moduleTitle":"tools/inspector/panels/spell-configs/SpellEffectFactory","source":"engine/tools/inspector/panels/spell-configs/SpellEffectFactory.js","import":"/engine/tools/inspector/panels/spell-configs/SpellEffectFactory.js","sourceHash":"6ceca82449683db2f4bc1e1c71dff86099588ef608ad0a442c5cba7e9dfb1e69","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/inspector/panels/spell-configs/SpellEffectFactory.js","title":"tools/inspector/panels/spell-configs/SpellEffectFactory","summary":"SpellEffectFactory.js — local stub for the external spell particle effect factory.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/panels/spell-configs/SpellEffectFactory.md","moduleTitle":"tools/inspector/panels/spell-configs/SpellEffectFactory","source":"engine/tools/inspector/panels/spell-configs/SpellEffectFactory.js","import":"/engine/tools/inspector/panels/spell-configs/SpellEffectFactory.js","sourceHash":"6ceca82449683db2f4bc1e1c71dff86099588ef608ad0a442c5cba7e9dfb1e69","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/panels/spell-configs/SpellEffectFactory.js#0000:createEmitterConfig","exportIndex":0,"name":"createEmitterConfig","kind":"function","signature":"createEmitterConfig(config = {})","summary":"SpellEffectFactory.js — local stub for the external spell particle effect factory."}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/ui/InspectorControls.md","moduleTitle":"tools/inspector/ui/InspectorControls","source":"engine/tools/inspector/ui/InspectorControls.js","import":"/engine/tools/inspector/ui/InspectorControls.js","sourceHash":"7aed8a1658c51d11bcac50eaa948be7eac2e1bbf12617038bccc3ba954c5a1f3","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/inspector/ui/InspectorControls.js","title":"tools/inspector/ui/InspectorControls","summary":"Create a themed section box (card-like container)","exportCount":27}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/ui/InspectorControls.md","moduleTitle":"tools/inspector/ui/InspectorControls","source":"engine/tools/inspector/ui/InspectorControls.js","import":"/engine/tools/inspector/ui/InspectorControls.js","sourceHash":"7aed8a1658c51d11bcac50eaa948be7eac2e1bbf12617038bccc3ba954c5a1f3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/ui/InspectorControls.js#0000:createThemedBox","exportIndex":0,"name":"createThemedBox","kind":"function","signature":"createThemedBox(doc, title, options = {})","summary":"Create a themed section box (card-like container)"}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/ui/InspectorControls.md","moduleTitle":"tools/inspector/ui/InspectorControls","source":"engine/tools/inspector/ui/InspectorControls.js","import":"/engine/tools/inspector/ui/InspectorControls.js","sourceHash":"7aed8a1658c51d11bcac50eaa948be7eac2e1bbf12617038bccc3ba954c5a1f3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/ui/InspectorControls.js#0001:createStatItem","exportIndex":1,"name":"createStatItem","kind":"function","signature":"createStatItem(doc, label, value, color)","summary":"Create a themed stat item (for performance stats, etc.)"}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/ui/InspectorControls.md","moduleTitle":"tools/inspector/ui/InspectorControls","source":"engine/tools/inspector/ui/InspectorControls.js","import":"/engine/tools/inspector/ui/InspectorControls.js","sourceHash":"7aed8a1658c51d11bcac50eaa948be7eac2e1bbf12617038bccc3ba954c5a1f3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/ui/InspectorControls.js#0002:createThemedCheckboxRow","exportIndex":2,"name":"createThemedCheckboxRow","kind":"function","signature":"createThemedCheckboxRow(doc, label, checked, onChange)","summary":"Create a themed checkbox row"}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/ui/InspectorControls.md","moduleTitle":"tools/inspector/ui/InspectorControls","source":"engine/tools/inspector/ui/InspectorControls.js","import":"/engine/tools/inspector/ui/InspectorControls.js","sourceHash":"7aed8a1658c51d11bcac50eaa948be7eac2e1bbf12617038bccc3ba954c5a1f3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/ui/InspectorControls.js#0003:createThemedSlider","exportIndex":3,"name":"createThemedSlider","kind":"function","signature":"createThemedSlider(doc, options = {})","summary":"Create a themed slider with label and value display"}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/ui/InspectorControls.md","moduleTitle":"tools/inspector/ui/InspectorControls","source":"engine/tools/inspector/ui/InspectorControls.js","import":"/engine/tools/inspector/ui/InspectorControls.js","sourceHash":"7aed8a1658c51d11bcac50eaa948be7eac2e1bbf12617038bccc3ba954c5a1f3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/ui/InspectorControls.js#0004:createSliderTicks","exportIndex":4,"name":"createSliderTicks","kind":"function","signature":"createSliderTicks(doc, snapPoints)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/ui/InspectorControls.md","moduleTitle":"tools/inspector/ui/InspectorControls","source":"engine/tools/inspector/ui/InspectorControls.js","import":"/engine/tools/inspector/ui/InspectorControls.js","sourceHash":"7aed8a1658c51d11bcac50eaa948be7eac2e1bbf12617038bccc3ba954c5a1f3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/ui/InspectorControls.js#0005:getSnapPoints","exportIndex":5,"name":"getSnapPoints","kind":"function","signature":"getSnapPoints(min, max, snapPoints, tickCount = 6)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/ui/InspectorControls.md","moduleTitle":"tools/inspector/ui/InspectorControls","source":"engine/tools/inspector/ui/InspectorControls.js","import":"/engine/tools/inspector/ui/InspectorControls.js","sourceHash":"7aed8a1658c51d11bcac50eaa948be7eac2e1bbf12617038bccc3ba954c5a1f3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/ui/InspectorControls.js#0006:snapValueToPoints","exportIndex":6,"name":"snapValueToPoints","kind":"function","signature":"snapValueToPoints(value, snapPoints)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/ui/InspectorControls.md","moduleTitle":"tools/inspector/ui/InspectorControls","source":"engine/tools/inspector/ui/InspectorControls.js","import":"/engine/tools/inspector/ui/InspectorControls.js","sourceHash":"7aed8a1658c51d11bcac50eaa948be7eac2e1bbf12617038bccc3ba954c5a1f3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/ui/InspectorControls.js#0007:formatSliderValue","exportIndex":7,"name":"formatSliderValue","kind":"function","signature":"formatSliderValue(value, formatter, precision = 2)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/ui/InspectorControls.md","moduleTitle":"tools/inspector/ui/InspectorControls","source":"engine/tools/inspector/ui/InspectorControls.js","import":"/engine/tools/inspector/ui/InspectorControls.js","sourceHash":"7aed8a1658c51d11bcac50eaa948be7eac2e1bbf12617038bccc3ba954c5a1f3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/ui/InspectorControls.js#0008:createPropertySection","exportIndex":8,"name":"createPropertySection","kind":"function","signature":"createPropertySection(doc, container, titleText)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/ui/InspectorControls.md","moduleTitle":"tools/inspector/ui/InspectorControls","source":"engine/tools/inspector/ui/InspectorControls.js","import":"/engine/tools/inspector/ui/InspectorControls.js","sourceHash":"7aed8a1658c51d11bcac50eaa948be7eac2e1bbf12617038bccc3ba954c5a1f3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/ui/InspectorControls.js#0009:createCollapsibleSection","exportIndex":9,"name":"createCollapsibleSection","kind":"function","signature":"createCollapsibleSection(doc, container, titleText, startCollapsed = false)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/ui/InspectorControls.md","moduleTitle":"tools/inspector/ui/InspectorControls","source":"engine/tools/inspector/ui/InspectorControls.js","import":"/engine/tools/inspector/ui/InspectorControls.js","sourceHash":"7aed8a1658c51d11bcac50eaa948be7eac2e1bbf12617038bccc3ba954c5a1f3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/ui/InspectorControls.js#0010:addSelectRow","exportIndex":10,"name":"addSelectRow","kind":"function","signature":"addSelectRow(doc, section, labelText, items, getValue, setValue)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/ui/InspectorControls.md","moduleTitle":"tools/inspector/ui/InspectorControls","source":"engine/tools/inspector/ui/InspectorControls.js","import":"/engine/tools/inspector/ui/InspectorControls.js","sourceHash":"7aed8a1658c51d11bcac50eaa948be7eac2e1bbf12617038bccc3ba954c5a1f3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/ui/InspectorControls.js#0011:addVectorRow","exportIndex":11,"name":"addVectorRow","kind":"function","signature":"addVectorRow(doc, section, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/ui/InspectorControls.md","moduleTitle":"tools/inspector/ui/InspectorControls","source":"engine/tools/inspector/ui/InspectorControls.js","import":"/engine/tools/inspector/ui/InspectorControls.js","sourceHash":"7aed8a1658c51d11bcac50eaa948be7eac2e1bbf12617038bccc3ba954c5a1f3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/ui/InspectorControls.js#0012:getValueAtPath","exportIndex":12,"name":"getValueAtPath","kind":"function","signature":"getValueAtPath(obj, path)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/ui/InspectorControls.md","moduleTitle":"tools/inspector/ui/InspectorControls","source":"engine/tools/inspector/ui/InspectorControls.js","import":"/engine/tools/inspector/ui/InspectorControls.js","sourceHash":"7aed8a1658c51d11bcac50eaa948be7eac2e1bbf12617038bccc3ba954c5a1f3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/ui/InspectorControls.js#0013:setValueAtPath","exportIndex":13,"name":"setValueAtPath","kind":"function","signature":"setValueAtPath(obj, path, value)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/ui/InspectorControls.md","moduleTitle":"tools/inspector/ui/InspectorControls","source":"engine/tools/inspector/ui/InspectorControls.js","import":"/engine/tools/inspector/ui/InspectorControls.js","sourceHash":"7aed8a1658c51d11bcac50eaa948be7eac2e1bbf12617038bccc3ba954c5a1f3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/ui/InspectorControls.js#0014:renderInspectorSchema","exportIndex":14,"name":"renderInspectorSchema","kind":"function","signature":"renderInspectorSchema(doc, container, schema, ctx = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/ui/InspectorControls.md","moduleTitle":"tools/inspector/ui/InspectorControls","source":"engine/tools/inspector/ui/InspectorControls.js","import":"/engine/tools/inspector/ui/InspectorControls.js","sourceHash":"7aed8a1658c51d11bcac50eaa948be7eac2e1bbf12617038bccc3ba954c5a1f3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/ui/InspectorControls.js#0015:addNumberRow","exportIndex":15,"name":"addNumberRow","kind":"function","signature":"addNumberRow(doc, section, labelText, getValue, setValue, step)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/ui/InspectorControls.md","moduleTitle":"tools/inspector/ui/InspectorControls","source":"engine/tools/inspector/ui/InspectorControls.js","import":"/engine/tools/inspector/ui/InspectorControls.js","sourceHash":"7aed8a1658c51d11bcac50eaa948be7eac2e1bbf12617038bccc3ba954c5a1f3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/ui/InspectorControls.js#0016:bindNumberInput","exportIndex":16,"name":"bindNumberInput","kind":"function","signature":"bindNumberInput(input, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/ui/InspectorControls.md","moduleTitle":"tools/inspector/ui/InspectorControls","source":"engine/tools/inspector/ui/InspectorControls.js","import":"/engine/tools/inspector/ui/InspectorControls.js","sourceHash":"7aed8a1658c51d11bcac50eaa948be7eac2e1bbf12617038bccc3ba954c5a1f3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/ui/InspectorControls.js#0017:bindRangeInput","exportIndex":17,"name":"bindRangeInput","kind":"function","signature":"bindRangeInput(input, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/ui/InspectorControls.md","moduleTitle":"tools/inspector/ui/InspectorControls","source":"engine/tools/inspector/ui/InspectorControls.js","import":"/engine/tools/inspector/ui/InspectorControls.js","sourceHash":"7aed8a1658c51d11bcac50eaa948be7eac2e1bbf12617038bccc3ba954c5a1f3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/ui/InspectorControls.js#0018:bindTextInput","exportIndex":18,"name":"bindTextInput","kind":"function","signature":"bindTextInput(input, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/ui/InspectorControls.md","moduleTitle":"tools/inspector/ui/InspectorControls","source":"engine/tools/inspector/ui/InspectorControls.js","import":"/engine/tools/inspector/ui/InspectorControls.js","sourceHash":"7aed8a1658c51d11bcac50eaa948be7eac2e1bbf12617038bccc3ba954c5a1f3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/ui/InspectorControls.js#0019:bindCheckboxInput","exportIndex":19,"name":"bindCheckboxInput","kind":"function","signature":"bindCheckboxInput(input, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/ui/InspectorControls.md","moduleTitle":"tools/inspector/ui/InspectorControls","source":"engine/tools/inspector/ui/InspectorControls.js","import":"/engine/tools/inspector/ui/InspectorControls.js","sourceHash":"7aed8a1658c51d11bcac50eaa948be7eac2e1bbf12617038bccc3ba954c5a1f3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/ui/InspectorControls.js#0020:bindSelectInput","exportIndex":20,"name":"bindSelectInput","kind":"function","signature":"bindSelectInput(select, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/ui/InspectorControls.md","moduleTitle":"tools/inspector/ui/InspectorControls","source":"engine/tools/inspector/ui/InspectorControls.js","import":"/engine/tools/inspector/ui/InspectorControls.js","sourceHash":"7aed8a1658c51d11bcac50eaa948be7eac2e1bbf12617038bccc3ba954c5a1f3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/ui/InspectorControls.js#0021:showInspectorTextInputModal","exportIndex":21,"name":"showInspectorTextInputModal","kind":"function","signature":"showInspectorTextInputModal(doc, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/ui/InspectorControls.md","moduleTitle":"tools/inspector/ui/InspectorControls","source":"engine/tools/inspector/ui/InspectorControls.js","import":"/engine/tools/inspector/ui/InspectorControls.js","sourceHash":"7aed8a1658c51d11bcac50eaa948be7eac2e1bbf12617038bccc3ba954c5a1f3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/ui/InspectorControls.js#0022:showInspectorContextMenu","exportIndex":22,"name":"showInspectorContextMenu","kind":"function","signature":"showInspectorContextMenu(doc, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/ui/InspectorControls.md","moduleTitle":"tools/inspector/ui/InspectorControls","source":"engine/tools/inspector/ui/InspectorControls.js","import":"/engine/tools/inspector/ui/InspectorControls.js","sourceHash":"7aed8a1658c51d11bcac50eaa948be7eac2e1bbf12617038bccc3ba954c5a1f3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/ui/InspectorControls.js#0023:addConfigRow","exportIndex":23,"name":"addConfigRow","kind":"function","signature":"addConfigRow(doc, container, options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/ui/InspectorControls.md","moduleTitle":"tools/inspector/ui/InspectorControls","source":"engine/tools/inspector/ui/InspectorControls.js","import":"/engine/tools/inspector/ui/InspectorControls.js","sourceHash":"7aed8a1658c51d11bcac50eaa948be7eac2e1bbf12617038bccc3ba954c5a1f3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/ui/InspectorControls.js#0024:addSliderRow","exportIndex":24,"name":"addSliderRow","kind":"function","signature":"addSliderRow(doc, section, labelText, min, max, step, getValue, setValue, options = {},)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/ui/InspectorControls.md","moduleTitle":"tools/inspector/ui/InspectorControls","source":"engine/tools/inspector/ui/InspectorControls.js","import":"/engine/tools/inspector/ui/InspectorControls.js","sourceHash":"7aed8a1658c51d11bcac50eaa948be7eac2e1bbf12617038bccc3ba954c5a1f3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/ui/InspectorControls.js#0025:addCheckboxRow","exportIndex":25,"name":"addCheckboxRow","kind":"function","signature":"addCheckboxRow(doc, section, labelText, getValue, setValue)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/ui/InspectorControls.md","moduleTitle":"tools/inspector/ui/InspectorControls","source":"engine/tools/inspector/ui/InspectorControls.js","import":"/engine/tools/inspector/ui/InspectorControls.js","sourceHash":"7aed8a1658c51d11bcac50eaa948be7eac2e1bbf12617038bccc3ba954c5a1f3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/ui/InspectorControls.js#0026:addTextRow","exportIndex":26,"name":"addTextRow","kind":"function","signature":"addTextRow(doc, section, labelText, getValue, setValue)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/ui/InspectorTheme.md","moduleTitle":"tools/inspector/ui/InspectorTheme","source":"engine/tools/inspector/ui/InspectorTheme.js","import":"/engine/tools/inspector/ui/InspectorTheme.js","sourceHash":"242c82b0418282f7234360756735ae2e72d9d3c5a6eb78eb2ffa5231d4624150","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/inspector/ui/InspectorTheme.js","title":"tools/inspector/ui/InspectorTheme","summary":"Apply theme styles to an element","exportCount":8}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/ui/InspectorTheme.md","moduleTitle":"tools/inspector/ui/InspectorTheme","source":"engine/tools/inspector/ui/InspectorTheme.js","import":"/engine/tools/inspector/ui/InspectorTheme.js","sourceHash":"242c82b0418282f7234360756735ae2e72d9d3c5a6eb78eb2ffa5231d4624150","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/ui/InspectorTheme.js#0000:applyThemeStyles","exportIndex":0,"name":"applyThemeStyles","kind":"function","signature":"applyThemeStyles(el, styles)","summary":"Apply theme styles to an element"}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/ui/InspectorTheme.md","moduleTitle":"tools/inspector/ui/InspectorTheme","source":"engine/tools/inspector/ui/InspectorTheme.js","import":"/engine/tools/inspector/ui/InspectorTheme.js","sourceHash":"242c82b0418282f7234360756735ae2e72d9d3c5a6eb78eb2ffa5231d4624150","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/ui/InspectorTheme.js#0001:createThemedButton","exportIndex":1,"name":"createThemedButton","kind":"function","signature":"createThemedButton(doc, text, variant = \"primary\", onClick)","summary":"Create a themed button"}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/ui/InspectorTheme.md","moduleTitle":"tools/inspector/ui/InspectorTheme","source":"engine/tools/inspector/ui/InspectorTheme.js","import":"/engine/tools/inspector/ui/InspectorTheme.js","sourceHash":"242c82b0418282f7234360756735ae2e72d9d3c5a6eb78eb2ffa5231d4624150","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/ui/InspectorTheme.js#0002:createThemedInput","exportIndex":2,"name":"createThemedInput","kind":"function","signature":"createThemedInput(doc, type = \"text\")","summary":"Create a themed input"}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/ui/InspectorTheme.md","moduleTitle":"tools/inspector/ui/InspectorTheme","source":"engine/tools/inspector/ui/InspectorTheme.js","import":"/engine/tools/inspector/ui/InspectorTheme.js","sourceHash":"242c82b0418282f7234360756735ae2e72d9d3c5a6eb78eb2ffa5231d4624150","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/ui/InspectorTheme.js#0003:createThemedLabel","exportIndex":3,"name":"createThemedLabel","kind":"function","signature":"createThemedLabel(doc, text)","summary":"Create a themed label"}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/ui/InspectorTheme.md","moduleTitle":"tools/inspector/ui/InspectorTheme","source":"engine/tools/inspector/ui/InspectorTheme.js","import":"/engine/tools/inspector/ui/InspectorTheme.js","sourceHash":"242c82b0418282f7234360756735ae2e72d9d3c5a6eb78eb2ffa5231d4624150","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/ui/InspectorTheme.js#0004:createThemedSectionHeader","exportIndex":4,"name":"createThemedSectionHeader","kind":"function","signature":"createThemedSectionHeader(doc, text, icon = \"\")","summary":"Create a themed section header"}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/ui/InspectorTheme.md","moduleTitle":"tools/inspector/ui/InspectorTheme","source":"engine/tools/inspector/ui/InspectorTheme.js","import":"/engine/tools/inspector/ui/InspectorTheme.js","sourceHash":"242c82b0418282f7234360756735ae2e72d9d3c5a6eb78eb2ffa5231d4624150","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/ui/InspectorTheme.js#0005:createThemedTab","exportIndex":5,"name":"createThemedTab","kind":"function","signature":"createThemedTab(doc, text, isActive = false, onClick)","summary":"Create a themed tab button"}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/ui/InspectorTheme.md","moduleTitle":"tools/inspector/ui/InspectorTheme","source":"engine/tools/inspector/ui/InspectorTheme.js","import":"/engine/tools/inspector/ui/InspectorTheme.js","sourceHash":"242c82b0418282f7234360756735ae2e72d9d3c5a6eb78eb2ffa5231d4624150","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/ui/InspectorTheme.js#0006:createThemedBadge","exportIndex":6,"name":"createThemedBadge","kind":"function","signature":"createThemedBadge(doc, text, color = \"info\")","summary":"Create a themed badge"}
{"schemaVersion":1,"modulePath":"engine/reference/tools/inspector/ui/InspectorTheme.md","moduleTitle":"tools/inspector/ui/InspectorTheme","source":"engine/tools/inspector/ui/InspectorTheme.js","import":"/engine/tools/inspector/ui/InspectorTheme.js","sourceHash":"242c82b0418282f7234360756735ae2e72d9d3c5a6eb78eb2ffa5231d4624150","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/inspector/ui/InspectorTheme.js#0007:INSPECTOR_THEME","exportIndex":7,"name":"INSPECTOR_THEME","kind":"constant","signature":"INSPECTOR_THEME","summary":"InspectorTheme.js - Unified theme system for all inspector panels Provides consistent colors, spacing, and styling across all inspector UI."}
{"schemaVersion":1,"modulePath":"engine/reference/tools/interaction/GrabController.md","moduleTitle":"tools/interaction/GrabController","source":"engine/tools/interaction/GrabController.js","import":"/engine/tools/interaction/GrabController.js","sourceHash":"7682d405ca3b532d60c2ced337f3d1904d3ef627d7f1df55e2ffe01e9549cf5e","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/interaction/GrabController.js","title":"tools/interaction/GrabController","summary":"Hold-to-grab interaction for the engine's picking demo path. This controller intentionally suspends rigid-body simulation while an entity follows a pick ray. Play-mode force grabs remain owned by PhysicsGrab.js. Rotational handles, collision-aware sweeps, constraints, and throw momentum remain explicit gaps rather than being approximated here.","exportCount":10}
{"schemaVersion":1,"modulePath":"engine/reference/tools/interaction/GrabController.md","moduleTitle":"tools/interaction/GrabController","source":"engine/tools/interaction/GrabController.js","import":"/engine/tools/interaction/GrabController.js","sourceHash":"7682d405ca3b532d60c2ced337f3d1904d3ef627d7f1df55e2ffe01e9549cf5e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/interaction/GrabController.js#0000:grabControllerEntityReport","exportIndex":0,"name":"grabControllerEntityReport","kind":"function","signature":"grabControllerEntityReport(entityId)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/interaction/GrabController.md","moduleTitle":"tools/interaction/GrabController","source":"engine/tools/interaction/GrabController.js","import":"/engine/tools/interaction/GrabController.js","sourceHash":"7682d405ca3b532d60c2ced337f3d1904d3ef627d7f1df55e2ffe01e9549cf5e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/interaction/GrabController.js#0001:grabControllerTimingReport","exportIndex":1,"name":"grabControllerTimingReport","kind":"function","signature":"grabControllerTimingReport(distance, holdMs = 750)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/interaction/GrabController.md","moduleTitle":"tools/interaction/GrabController","source":"engine/tools/interaction/GrabController.js","import":"/engine/tools/interaction/GrabController.js","sourceHash":"7682d405ca3b532d60c2ced337f3d1904d3ef627d7f1df55e2ffe01e9549cf5e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/interaction/GrabController.js#0002:grabControllerRayReport","exportIndex":2,"name":"grabControllerRayReport","kind":"function","signature":"grabControllerRayReport(ray, distance)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/interaction/GrabController.md","moduleTitle":"tools/interaction/GrabController","source":"engine/tools/interaction/GrabController.js","import":"/engine/tools/interaction/GrabController.js","sourceHash":"7682d405ca3b532d60c2ced337f3d1904d3ef627d7f1df55e2ffe01e9549cf5e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/interaction/GrabController.js#0003:createGrabState","exportIndex":3,"name":"createGrabState","kind":"function","signature":"createGrabState()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/interaction/GrabController.md","moduleTitle":"tools/interaction/GrabController","source":"engine/tools/interaction/GrabController.js","import":"/engine/tools/interaction/GrabController.js","sourceHash":"7682d405ca3b532d60c2ced337f3d1904d3ef627d7f1df55e2ffe01e9549cf5e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/interaction/GrabController.js#0004:startGrabCandidate","exportIndex":4,"name":"startGrabCandidate","kind":"function","signature":"startGrabCandidate(grabState, ecsWorld, entityId, distance, holdMs = 750)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/interaction/GrabController.md","moduleTitle":"tools/interaction/GrabController","source":"engine/tools/interaction/GrabController.js","import":"/engine/tools/interaction/GrabController.js","sourceHash":"7682d405ca3b532d60c2ced337f3d1904d3ef627d7f1df55e2ffe01e9549cf5e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/interaction/GrabController.js#0005:cancelGrabCandidate","exportIndex":5,"name":"cancelGrabCandidate","kind":"function","signature":"cancelGrabCandidate(grabState)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/interaction/GrabController.md","moduleTitle":"tools/interaction/GrabController","source":"engine/tools/interaction/GrabController.js","import":"/engine/tools/interaction/GrabController.js","sourceHash":"7682d405ca3b532d60c2ced337f3d1904d3ef627d7f1df55e2ffe01e9549cf5e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/interaction/GrabController.js#0006:releaseGrabbed","exportIndex":6,"name":"releaseGrabbed","kind":"function","signature":"releaseGrabbed(grabState, ecsWorld)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/interaction/GrabController.md","moduleTitle":"tools/interaction/GrabController","source":"engine/tools/interaction/GrabController.js","import":"/engine/tools/interaction/GrabController.js","sourceHash":"7682d405ca3b532d60c2ced337f3d1904d3ef627d7f1df55e2ffe01e9549cf5e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/interaction/GrabController.js#0007:updateGrabbedEntity","exportIndex":7,"name":"updateGrabbedEntity","kind":"function","signature":"updateGrabbedEntity(grabState, ecsWorld, ray)","summary":"Update a grabbed entity position along an admitted pick ray."}
{"schemaVersion":1,"modulePath":"engine/reference/tools/interaction/GrabController.md","moduleTitle":"tools/interaction/GrabController","source":"engine/tools/interaction/GrabController.js","import":"/engine/tools/interaction/GrabController.js","sourceHash":"7682d405ca3b532d60c2ced337f3d1904d3ef627d7f1df55e2ffe01e9549cf5e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/interaction/GrabController.js#0008:clearGrabForEntity","exportIndex":8,"name":"clearGrabForEntity","kind":"function","signature":"clearGrabForEntity(grabState, entityId)","summary":"Clear only grab state owned by a deleted entity."}
{"schemaVersion":1,"modulePath":"engine/reference/tools/interaction/GrabController.md","moduleTitle":"tools/interaction/GrabController","source":"engine/tools/interaction/GrabController.js","import":"/engine/tools/interaction/GrabController.js","sourceHash":"7682d405ca3b532d60c2ced337f3d1904d3ef627d7f1df55e2ffe01e9549cf5e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/interaction/GrabController.js#0009:GRAB_CONTROLLER_LIMITS","exportIndex":9,"name":"GRAB_CONTROLLER_LIMITS","kind":"constant","signature":"GRAB_CONTROLLER_LIMITS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/picking/RayPicking.md","moduleTitle":"tools/picking/RayPicking","source":"engine/tools/picking/RayPicking.js","import":"/engine/tools/picking/RayPicking.js","sourceHash":"76d2ac98845591fb3147343a616ba53bc3a03062e3addb4be448ff0e38512581","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/picking/RayPicking.js","title":"tools/picking/RayPicking","summary":"RayPicking.js - Unified, admitted camera and room/entity picking wrappers.","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/tools/picking/RayPicking.md","moduleTitle":"tools/picking/RayPicking","source":"engine/tools/picking/RayPicking.js","import":"/engine/tools/picking/RayPicking.js","sourceHash":"76d2ac98845591fb3147343a616ba53bc3a03062e3addb4be448ff0e38512581","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/picking/RayPicking.js#0000:resolvePickFovRadians","exportIndex":0,"name":"resolvePickFovRadians","kind":"function","signature":"resolvePickFovRadians(options = {}, camera = null, config = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/picking/RayPicking.md","moduleTitle":"tools/picking/RayPicking","source":"engine/tools/picking/RayPicking.js","import":"/engine/tools/picking/RayPicking.js","sourceHash":"76d2ac98845591fb3147343a616ba53bc3a03062e3addb4be448ff0e38512581","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/picking/RayPicking.js#0001:rayPickerOptionsReport","exportIndex":1,"name":"rayPickerOptionsReport","kind":"function","signature":"rayPickerOptionsReport(options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/picking/RayPicking.md","moduleTitle":"tools/picking/RayPicking","source":"engine/tools/picking/RayPicking.js","import":"/engine/tools/picking/RayPicking.js","sourceHash":"76d2ac98845591fb3147343a616ba53bc3a03062e3addb4be448ff0e38512581","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/picking/RayPicking.js#0002:createRayPicker","exportIndex":2,"name":"createRayPicker","kind":"function","signature":"createRayPicker(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/picking/RayPicking.md","moduleTitle":"tools/picking/RayPicking","source":"engine/tools/picking/RayPicking.js","import":"/engine/tools/picking/RayPicking.js","sourceHash":"76d2ac98845591fb3147343a616ba53bc3a03062e3addb4be448ff0e38512581","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/picking/RayPicking.js#0003:getCameraEyeBasisFromState","exportIndex":3,"name":"getCameraEyeBasisFromState","kind":"function","signature":"getCameraEyeBasisFromState(camera)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/picking/RayPicking.md","moduleTitle":"tools/picking/RayPicking","source":"engine/tools/picking/RayPicking.js","import":"/engine/tools/picking/RayPicking.js","sourceHash":"76d2ac98845591fb3147343a616ba53bc3a03062e3addb4be448ff0e38512581","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/picking/RayPicking.js#0004:getPickRayFromState","exportIndex":4,"name":"getPickRayFromState","kind":"function","signature":"getPickRayFromState(canvas, camera, clientX, clientY, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/picking/RayPicking.md","moduleTitle":"tools/picking/RayPicking","source":"engine/tools/picking/RayPicking.js","import":"/engine/tools/picking/RayPicking.js","sourceHash":"76d2ac98845591fb3147343a616ba53bc3a03062e3addb4be448ff0e38512581","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/picking/RayPicking.js#0005:RAY_PICKER_LIMITS","exportIndex":5,"name":"RAY_PICKER_LIMITS","kind":"constant","signature":"RAY_PICKER_LIMITS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/picking/RoomPicking.md","moduleTitle":"tools/picking/RoomPicking","source":"engine/tools/picking/RoomPicking.js","import":"/engine/tools/picking/RoomPicking.js","sourceHash":"c0109e3e9f16c29de0b075750162ec99b6f7619585977cfce70ce45fd3270d12","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/picking/RoomPicking.js","title":"tools/picking/RoomPicking","summary":"","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/tools/picking/RoomPicking.md","moduleTitle":"tools/picking/RoomPicking","source":"engine/tools/picking/RoomPicking.js","import":"/engine/tools/picking/RoomPicking.js","sourceHash":"c0109e3e9f16c29de0b075750162ec99b6f7619585977cfce70ce45fd3270d12","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/picking/RoomPicking.js#0000:pickingRayReport","exportIndex":0,"name":"pickingRayReport","kind":"function","signature":"pickingRayReport(ray)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/picking/RoomPicking.md","moduleTitle":"tools/picking/RoomPicking","source":"engine/tools/picking/RoomPicking.js","import":"/engine/tools/picking/RoomPicking.js","sourceHash":"c0109e3e9f16c29de0b075750162ec99b6f7619585977cfce70ce45fd3270d12","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/picking/RoomPicking.js#0001:roomPickingOptionsReport","exportIndex":1,"name":"roomPickingOptionsReport","kind":"function","signature":"roomPickingOptionsReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/picking/RoomPicking.md","moduleTitle":"tools/picking/RoomPicking","source":"engine/tools/picking/RoomPicking.js","import":"/engine/tools/picking/RoomPicking.js","sourceHash":"c0109e3e9f16c29de0b075750162ec99b6f7619585977cfce70ce45fd3270d12","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/picking/RoomPicking.js#0002:entityPickingOptionsReport","exportIndex":2,"name":"entityPickingOptionsReport","kind":"function","signature":"entityPickingOptionsReport(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/picking/RoomPicking.md","moduleTitle":"tools/picking/RoomPicking","source":"engine/tools/picking/RoomPicking.js","import":"/engine/tools/picking/RoomPicking.js","sourceHash":"c0109e3e9f16c29de0b075750162ec99b6f7619585977cfce70ce45fd3270d12","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/picking/RoomPicking.js#0003:pickRoomSurfaceFromRay","exportIndex":3,"name":"pickRoomSurfaceFromRay","kind":"function","signature":"pickRoomSurfaceFromRay(ray, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/picking/RoomPicking.md","moduleTitle":"tools/picking/RoomPicking","source":"engine/tools/picking/RoomPicking.js","import":"/engine/tools/picking/RoomPicking.js","sourceHash":"c0109e3e9f16c29de0b075750162ec99b6f7619585977cfce70ce45fd3270d12","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/picking/RoomPicking.js#0004:pickEntityFromRay","exportIndex":4,"name":"pickEntityFromRay","kind":"function","signature":"pickEntityFromRay(ray, ecsWorld, spawnedEntities, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/picking/RoomPicking.md","moduleTitle":"tools/picking/RoomPicking","source":"engine/tools/picking/RoomPicking.js","import":"/engine/tools/picking/RoomPicking.js","sourceHash":"c0109e3e9f16c29de0b075750162ec99b6f7619585977cfce70ce45fd3270d12","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/picking/RoomPicking.js#0005:ROOM_PICKING_LIMITS","exportIndex":5,"name":"ROOM_PICKING_LIMITS","kind":"constant","signature":"ROOM_PICKING_LIMITS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/picking/ScreenRayCaster.md","moduleTitle":"tools/picking/ScreenRayCaster","source":"engine/tools/picking/ScreenRayCaster.js","import":"/engine/tools/picking/ScreenRayCaster.js","sourceHash":"a71e3211eae2c763a0a6c31992faf9e62c312ed71565596adb013f32093b212b","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/picking/ScreenRayCaster.js","title":"tools/picking/ScreenRayCaster","summary":"","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/tools/picking/ScreenRayCaster.md","moduleTitle":"tools/picking/ScreenRayCaster","source":"engine/tools/picking/ScreenRayCaster.js","import":"/engine/tools/picking/ScreenRayCaster.js","sourceHash":"a71e3211eae2c763a0a6c31992faf9e62c312ed71565596adb013f32093b212b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/picking/ScreenRayCaster.js#0000:screenPickInputReport","exportIndex":0,"name":"screenPickInputReport","kind":"function","signature":"screenPickInputReport(canvas, clientX, clientY, fovRadians = SCREEN_RAY_LIMITS.defaultFovRadians)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/picking/ScreenRayCaster.md","moduleTitle":"tools/picking/ScreenRayCaster","source":"engine/tools/picking/ScreenRayCaster.js","import":"/engine/tools/picking/ScreenRayCaster.js","sourceHash":"a71e3211eae2c763a0a6c31992faf9e62c312ed71565596adb013f32093b212b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/picking/ScreenRayCaster.js#0001:screenCameraBasisReport","exportIndex":1,"name":"screenCameraBasisReport","kind":"function","signature":"screenCameraBasisReport(basis)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/picking/ScreenRayCaster.md","moduleTitle":"tools/picking/ScreenRayCaster","source":"engine/tools/picking/ScreenRayCaster.js","import":"/engine/tools/picking/ScreenRayCaster.js","sourceHash":"a71e3211eae2c763a0a6c31992faf9e62c312ed71565596adb013f32093b212b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/picking/ScreenRayCaster.js#0002:screenCameraStateReport","exportIndex":2,"name":"screenCameraStateReport","kind":"function","signature":"screenCameraStateReport(cameraState)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/picking/ScreenRayCaster.md","moduleTitle":"tools/picking/ScreenRayCaster","source":"engine/tools/picking/ScreenRayCaster.js","import":"/engine/tools/picking/ScreenRayCaster.js","sourceHash":"a71e3211eae2c763a0a6c31992faf9e62c312ed71565596adb013f32093b212b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/picking/ScreenRayCaster.js#0003:getPickRayForCanvas","exportIndex":3,"name":"getPickRayForCanvas","kind":"function","signature":"getPickRayForCanvas(canvas, cameraState, clientX, clientY, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/picking/ScreenRayCaster.md","moduleTitle":"tools/picking/ScreenRayCaster","source":"engine/tools/picking/ScreenRayCaster.js","import":"/engine/tools/picking/ScreenRayCaster.js","sourceHash":"a71e3211eae2c763a0a6c31992faf9e62c312ed71565596adb013f32093b212b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/picking/ScreenRayCaster.js#0004:SCREEN_RAY_LIMITS","exportIndex":4,"name":"SCREEN_RAY_LIMITS","kind":"constant","signature":"SCREEN_RAY_LIMITS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/rigging/SkinWeightTransfer.md","moduleTitle":"tools/rigging/SkinWeightTransfer","source":"engine/tools/rigging/SkinWeightTransfer.js","import":"/engine/tools/rigging/SkinWeightTransfer.js","sourceHash":"772d4a423b2d06e5878cd194ccf5c2d22380ef36ec8b66aecb9a82ed83d9a94a","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/rigging/SkinWeightTransfer.js","title":"tools/rigging/SkinWeightTransfer","summary":"","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/tools/rigging/SkinWeightTransfer.md","moduleTitle":"tools/rigging/SkinWeightTransfer","source":"engine/tools/rigging/SkinWeightTransfer.js","import":"/engine/tools/rigging/SkinWeightTransfer.js","sourceHash":"772d4a423b2d06e5878cd194ccf5c2d22380ef36ec8b66aecb9a82ed83d9a94a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/rigging/SkinWeightTransfer.js#0000:SkinWeightTransferGPU","exportIndex":0,"name":"SkinWeightTransferGPU","kind":"class","signature":"class SkinWeightTransferGPU","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/rigging/SkinWeightTransfer.md","moduleTitle":"tools/rigging/SkinWeightTransfer","source":"engine/tools/rigging/SkinWeightTransfer.js","import":"/engine/tools/rigging/SkinWeightTransfer.js","sourceHash":"772d4a423b2d06e5878cd194ccf5c2d22380ef36ec8b66aecb9a82ed83d9a94a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/rigging/SkinWeightTransfer.js#0001:buildSourceSurfaceBVH","exportIndex":1,"name":"buildSourceSurfaceBVH","kind":"function","signature":"buildSourceSurfaceBVH(sourcePositions, sourceIndices)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/rigging/SkinWeightTransfer.md","moduleTitle":"tools/rigging/SkinWeightTransfer","source":"engine/tools/rigging/SkinWeightTransfer.js","import":"/engine/tools/rigging/SkinWeightTransfer.js","sourceHash":"772d4a423b2d06e5878cd194ccf5c2d22380ef36ec8b66aecb9a82ed83d9a94a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/rigging/SkinWeightTransfer.js#0002:estimateAlignmentICP","exportIndex":2,"name":"estimateAlignmentICP","kind":"function","signature":"estimateAlignmentICP(opts)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/rigging/SkinWeightTransfer.md","moduleTitle":"tools/rigging/SkinWeightTransfer","source":"engine/tools/rigging/SkinWeightTransfer.js","import":"/engine/tools/rigging/SkinWeightTransfer.js","sourceHash":"772d4a423b2d06e5878cd194ccf5c2d22380ef36ec8b66aecb9a82ed83d9a94a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/rigging/SkinWeightTransfer.js#0003:transferSkinWeightsCPU","exportIndex":3,"name":"transferSkinWeightsCPU","kind":"function","signature":"transferSkinWeightsCPU(opts)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/rigging/SkinWeightTransfer.md","moduleTitle":"tools/rigging/SkinWeightTransfer","source":"engine/tools/rigging/SkinWeightTransfer.js","import":"/engine/tools/rigging/SkinWeightTransfer.js","sourceHash":"772d4a423b2d06e5878cd194ccf5c2d22380ef36ec8b66aecb9a82ed83d9a94a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/rigging/SkinWeightTransfer.js#0004:transferSkinWeightsGPU","exportIndex":4,"name":"transferSkinWeightsGPU","kind":"function","signature":"async transferSkinWeightsGPU(device, opts, limits = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/scene/SceneSerializer.md","moduleTitle":"tools/scene/SceneSerializer","source":"engine/tools/scene/SceneSerializer.js","import":"/engine/tools/scene/SceneSerializer.js","sourceHash":"1a49418c5dd01b45aab96dbc6d60326b2ecd1538a6bea5da16712b9df21bb8b5","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/scene/SceneSerializer.js","title":"tools/scene/SceneSerializer","summary":"Serialize spawned entities to JSON-compatible object.","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/tools/scene/SceneSerializer.md","moduleTitle":"tools/scene/SceneSerializer","source":"engine/tools/scene/SceneSerializer.js","import":"/engine/tools/scene/SceneSerializer.js","sourceHash":"1a49418c5dd01b45aab96dbc6d60326b2ecd1538a6bea5da16712b9df21bb8b5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/scene/SceneSerializer.js#0000:serializeScene","exportIndex":0,"name":"serializeScene","kind":"function","signature":"serializeScene(options)","summary":"Serialize spawned entities to JSON-compatible object."}
{"schemaVersion":1,"modulePath":"engine/reference/tools/scene/SceneSerializer.md","moduleTitle":"tools/scene/SceneSerializer","source":"engine/tools/scene/SceneSerializer.js","import":"/engine/tools/scene/SceneSerializer.js","sourceHash":"1a49418c5dd01b45aab96dbc6d60326b2ecd1538a6bea5da16712b9df21bb8b5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/scene/SceneSerializer.js#0001:exportSceneToJson","exportIndex":1,"name":"exportSceneToJson","kind":"function","signature":"exportSceneToJson(options)","summary":"Export scene to JSON string."}
{"schemaVersion":1,"modulePath":"engine/reference/tools/scene/SceneSerializer.md","moduleTitle":"tools/scene/SceneSerializer","source":"engine/tools/scene/SceneSerializer.js","import":"/engine/tools/scene/SceneSerializer.js","sourceHash":"1a49418c5dd01b45aab96dbc6d60326b2ecd1538a6bea5da16712b9df21bb8b5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/scene/SceneSerializer.js#0002:downloadScene","exportIndex":2,"name":"downloadScene","kind":"function","signature":"downloadScene(options, filename = \"scene.json\")","summary":"Download scene as JSON file."}
{"schemaVersion":1,"modulePath":"engine/reference/tools/scene/SceneSerializer.md","moduleTitle":"tools/scene/SceneSerializer","source":"engine/tools/scene/SceneSerializer.js","import":"/engine/tools/scene/SceneSerializer.js","sourceHash":"1a49418c5dd01b45aab96dbc6d60326b2ecd1538a6bea5da16712b9df21bb8b5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/scene/SceneSerializer.js#0003:parseSceneJson","exportIndex":3,"name":"parseSceneJson","kind":"function","signature":"parseSceneJson(json)","summary":"Parse scene JSON data."}
{"schemaVersion":1,"modulePath":"engine/reference/tools/scene/SceneSerializer.md","moduleTitle":"tools/scene/SceneSerializer","source":"engine/tools/scene/SceneSerializer.js","import":"/engine/tools/scene/SceneSerializer.js","sourceHash":"1a49418c5dd01b45aab96dbc6d60326b2ecd1538a6bea5da16712b9df21bb8b5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/scene/SceneSerializer.js#0004:loadSceneFromJson","exportIndex":4,"name":"loadSceneFromJson","kind":"function","signature":"loadSceneFromJson(options)","summary":"Load scene from JSON and spawn entities."}
{"schemaVersion":1,"modulePath":"engine/reference/tools/scene/SceneSerializer.md","moduleTitle":"tools/scene/SceneSerializer","source":"engine/tools/scene/SceneSerializer.js","import":"/engine/tools/scene/SceneSerializer.js","sourceHash":"1a49418c5dd01b45aab96dbc6d60326b2ecd1538a6bea5da16712b9df21bb8b5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/scene/SceneSerializer.js#0005:loadSceneFromFile","exportIndex":5,"name":"loadSceneFromFile","kind":"function","signature":"async loadSceneFromFile(file, options)","summary":"Load scene from file input."}
{"schemaVersion":1,"modulePath":"engine/reference/tools/scene/SceneSerializer.md","moduleTitle":"tools/scene/SceneSerializer","source":"engine/tools/scene/SceneSerializer.js","import":"/engine/tools/scene/SceneSerializer.js","sourceHash":"1a49418c5dd01b45aab96dbc6d60326b2ecd1538a6bea5da16712b9df21bb8b5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/scene/SceneSerializer.js#0006:createSceneFileInput","exportIndex":6,"name":"createSceneFileInput","kind":"function","signature":"createSceneFileInput(options)","summary":"Create a file input for loading scenes."}
{"schemaVersion":1,"modulePath":"engine/reference/tools/spawn/GhostPreviewController.md","moduleTitle":"tools/spawn/GhostPreviewController","source":"engine/tools/spawn/GhostPreviewController.js","import":"/engine/tools/spawn/GhostPreviewController.js","sourceHash":"2a77bafcf1348f5dee4c898c6e09b47f916e8ad66b5a93b32546ff82725b887b","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/spawn/GhostPreviewController.js","title":"tools/spawn/GhostPreviewController","summary":"","exportCount":9}
{"schemaVersion":1,"modulePath":"engine/reference/tools/spawn/GhostPreviewController.md","moduleTitle":"tools/spawn/GhostPreviewController","source":"engine/tools/spawn/GhostPreviewController.js","import":"/engine/tools/spawn/GhostPreviewController.js","sourceHash":"2a77bafcf1348f5dee4c898c6e09b47f916e8ad66b5a93b32546ff82725b887b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/spawn/GhostPreviewController.js#0000:getGhostPreviewInfo","exportIndex":0,"name":"getGhostPreviewInfo","kind":"function","signature":"getGhostPreviewInfo(params)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/spawn/GhostPreviewController.md","moduleTitle":"tools/spawn/GhostPreviewController","source":"engine/tools/spawn/GhostPreviewController.js","import":"/engine/tools/spawn/GhostPreviewController.js","sourceHash":"2a77bafcf1348f5dee4c898c6e09b47f916e8ad66b5a93b32546ff82725b887b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/spawn/GhostPreviewController.js#0001:createGhostSelectionState","exportIndex":1,"name":"createGhostSelectionState","kind":"function","signature":"createGhostSelectionState()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/spawn/GhostPreviewController.md","moduleTitle":"tools/spawn/GhostPreviewController","source":"engine/tools/spawn/GhostPreviewController.js","import":"/engine/tools/spawn/GhostPreviewController.js","sourceHash":"2a77bafcf1348f5dee4c898c6e09b47f916e8ad66b5a93b32546ff82725b887b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/spawn/GhostPreviewController.js#0002:addGhostToSelection","exportIndex":2,"name":"addGhostToSelection","kind":"function","signature":"addGhostToSelection(selection, options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/spawn/GhostPreviewController.md","moduleTitle":"tools/spawn/GhostPreviewController","source":"engine/tools/spawn/GhostPreviewController.js","import":"/engine/tools/spawn/GhostPreviewController.js","sourceHash":"2a77bafcf1348f5dee4c898c6e09b47f916e8ad66b5a93b32546ff82725b887b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/spawn/GhostPreviewController.js#0003:setActiveGhostInSelection","exportIndex":3,"name":"setActiveGhostInSelection","kind":"function","signature":"setActiveGhostInSelection(selection, id)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/spawn/GhostPreviewController.md","moduleTitle":"tools/spawn/GhostPreviewController","source":"engine/tools/spawn/GhostPreviewController.js","import":"/engine/tools/spawn/GhostPreviewController.js","sourceHash":"2a77bafcf1348f5dee4c898c6e09b47f916e8ad66b5a93b32546ff82725b887b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/spawn/GhostPreviewController.js#0004:setActiveGhostBasePosition","exportIndex":4,"name":"setActiveGhostBasePosition","kind":"function","signature":"setActiveGhostBasePosition(selection, position, type)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/spawn/GhostPreviewController.md","moduleTitle":"tools/spawn/GhostPreviewController","source":"engine/tools/spawn/GhostPreviewController.js","import":"/engine/tools/spawn/GhostPreviewController.js","sourceHash":"2a77bafcf1348f5dee4c898c6e09b47f916e8ad66b5a93b32546ff82725b887b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/spawn/GhostPreviewController.js#0005:setActiveGhostOffset","exportIndex":5,"name":"setActiveGhostOffset","kind":"function","signature":"setActiveGhostOffset(selection, offset)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/spawn/GhostPreviewController.md","moduleTitle":"tools/spawn/GhostPreviewController","source":"engine/tools/spawn/GhostPreviewController.js","import":"/engine/tools/spawn/GhostPreviewController.js","sourceHash":"2a77bafcf1348f5dee4c898c6e09b47f916e8ad66b5a93b32546ff82725b887b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/spawn/GhostPreviewController.js#0006:getGhostWorldPosition","exportIndex":6,"name":"getGhostWorldPosition","kind":"function","signature":"getGhostWorldPosition(ghost)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/spawn/GhostPreviewController.md","moduleTitle":"tools/spawn/GhostPreviewController","source":"engine/tools/spawn/GhostPreviewController.js","import":"/engine/tools/spawn/GhostPreviewController.js","sourceHash":"2a77bafcf1348f5dee4c898c6e09b47f916e8ad66b5a93b32546ff82725b887b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/spawn/GhostPreviewController.js#0007:getActiveGhost","exportIndex":7,"name":"getActiveGhost","kind":"function","signature":"getActiveGhost(selection)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/spawn/GhostPreviewController.md","moduleTitle":"tools/spawn/GhostPreviewController","source":"engine/tools/spawn/GhostPreviewController.js","import":"/engine/tools/spawn/GhostPreviewController.js","sourceHash":"2a77bafcf1348f5dee4c898c6e09b47f916e8ad66b5a93b32546ff82725b887b","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/spawn/GhostPreviewController.js#0008:getActiveGhostWorldPosition","exportIndex":8,"name":"getActiveGhostWorldPosition","kind":"function","signature":"getActiveGhostWorldPosition(selection)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/spawn/PhysicsSpawnController.md","moduleTitle":"tools/spawn/PhysicsSpawnController","source":"engine/tools/spawn/PhysicsSpawnController.js","import":"/engine/tools/spawn/PhysicsSpawnController.js","sourceHash":"7783e663203ee3c3c8d9e16714dffe9e31749da39081fa34ff40a43cf1a4d664","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/spawn/PhysicsSpawnController.js","title":"tools/spawn/PhysicsSpawnController","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/tools/spawn/PhysicsSpawnController.md","moduleTitle":"tools/spawn/PhysicsSpawnController","source":"engine/tools/spawn/PhysicsSpawnController.js","import":"/engine/tools/spawn/PhysicsSpawnController.js","sourceHash":"7783e663203ee3c3c8d9e16714dffe9e31749da39081fa34ff40a43cf1a4d664","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/spawn/PhysicsSpawnController.js#0000:spawnPhysicsObjectAtPosition","exportIndex":0,"name":"spawnPhysicsObjectAtPosition","kind":"function","signature":"spawnPhysicsObjectAtPosition(ecsWorld, position, type = \"cube\", spawnerProps = null, logger = null,)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/tools/spawn/SpawnManager.md","moduleTitle":"tools/spawn/SpawnManager","source":"engine/tools/spawn/SpawnManager.js","import":"/engine/tools/spawn/SpawnManager.js","sourceHash":"7e4acba2a20deccfe8c3aae1d47ae47a13ee6889678a66c41dbfac33fd86a09f","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/spawn/SpawnManager.js","title":"tools/spawn/SpawnManager","summary":"Spawn a physics object with full render resource setup.","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/tools/spawn/SpawnManager.md","moduleTitle":"tools/spawn/SpawnManager","source":"engine/tools/spawn/SpawnManager.js","import":"/engine/tools/spawn/SpawnManager.js","sourceHash":"7e4acba2a20deccfe8c3aae1d47ae47a13ee6889678a66c41dbfac33fd86a09f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/spawn/SpawnManager.js#0000:spawnEntity","exportIndex":0,"name":"spawnEntity","kind":"function","signature":"spawnEntity(options)","summary":"Spawn a physics object with full render resource setup."}
{"schemaVersion":1,"modulePath":"engine/reference/tools/spawn/SpawnManager.md","moduleTitle":"tools/spawn/SpawnManager","source":"engine/tools/spawn/SpawnManager.js","import":"/engine/tools/spawn/SpawnManager.js","sourceHash":"7e4acba2a20deccfe8c3aae1d47ae47a13ee6889678a66c41dbfac33fd86a09f","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/spawn/SpawnManager.js#0001:spawnParticleEmitter","exportIndex":1,"name":"spawnParticleEmitter","kind":"function","signature":"spawnParticleEmitter(options)","summary":"Spawn a particle emitter at position."}
{"schemaVersion":1,"modulePath":"engine/reference/tools/spawn/SpawnTypeDefaults.md","moduleTitle":"tools/spawn/SpawnTypeDefaults","source":"engine/tools/spawn/SpawnTypeDefaults.js","import":"/engine/tools/spawn/SpawnTypeDefaults.js","sourceHash":"3a06f1da521b70bd739569400d3e8a6511c422cc1ada84378163a19062dd98df","subsystem":"engine","recordType":"api-module","id":"module:engine/tools/spawn/SpawnTypeDefaults.js","title":"tools/spawn/SpawnTypeDefaults","summary":"Get all available spawn types.","exportCount":9}
{"schemaVersion":1,"modulePath":"engine/reference/tools/spawn/SpawnTypeDefaults.md","moduleTitle":"tools/spawn/SpawnTypeDefaults","source":"engine/tools/spawn/SpawnTypeDefaults.js","import":"/engine/tools/spawn/SpawnTypeDefaults.js","sourceHash":"3a06f1da521b70bd739569400d3e8a6511c422cc1ada84378163a19062dd98df","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/spawn/SpawnTypeDefaults.js#0000:getAvailableSpawnTypes","exportIndex":0,"name":"getAvailableSpawnTypes","kind":"function","signature":"getAvailableSpawnTypes()","summary":"Get all available spawn types."}
{"schemaVersion":1,"modulePath":"engine/reference/tools/spawn/SpawnTypeDefaults.md","moduleTitle":"tools/spawn/SpawnTypeDefaults","source":"engine/tools/spawn/SpawnTypeDefaults.js","import":"/engine/tools/spawn/SpawnTypeDefaults.js","sourceHash":"3a06f1da521b70bd739569400d3e8a6511c422cc1ada84378163a19062dd98df","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/spawn/SpawnTypeDefaults.js#0001:getSpawnTypesByCategory","exportIndex":1,"name":"getSpawnTypesByCategory","kind":"function","signature":"getSpawnTypesByCategory(category)","summary":"Get spawn types by category."}
{"schemaVersion":1,"modulePath":"engine/reference/tools/spawn/SpawnTypeDefaults.md","moduleTitle":"tools/spawn/SpawnTypeDefaults","source":"engine/tools/spawn/SpawnTypeDefaults.js","import":"/engine/tools/spawn/SpawnTypeDefaults.js","sourceHash":"3a06f1da521b70bd739569400d3e8a6511c422cc1ada84378163a19062dd98df","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/spawn/SpawnTypeDefaults.js#0002:getSpawnTypeColor","exportIndex":2,"name":"getSpawnTypeColor","kind":"function","signature":"getSpawnTypeColor(type)","summary":"Get the default color for a spawn type."}
{"schemaVersion":1,"modulePath":"engine/reference/tools/spawn/SpawnTypeDefaults.md","moduleTitle":"tools/spawn/SpawnTypeDefaults","source":"engine/tools/spawn/SpawnTypeDefaults.js","import":"/engine/tools/spawn/SpawnTypeDefaults.js","sourceHash":"3a06f1da521b70bd739569400d3e8a6511c422cc1ada84378163a19062dd98df","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/spawn/SpawnTypeDefaults.js#0003:getSpawnTypeMeshKey","exportIndex":3,"name":"getSpawnTypeMeshKey","kind":"function","signature":"getSpawnTypeMeshKey(type)","summary":"Get the mesh type for a spawn type."}
{"schemaVersion":1,"modulePath":"engine/reference/tools/spawn/SpawnTypeDefaults.md","moduleTitle":"tools/spawn/SpawnTypeDefaults","source":"engine/tools/spawn/SpawnTypeDefaults.js","import":"/engine/tools/spawn/SpawnTypeDefaults.js","sourceHash":"3a06f1da521b70bd739569400d3e8a6511c422cc1ada84378163a19062dd98df","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/spawn/SpawnTypeDefaults.js#0004:resolveSpawnAppearance","exportIndex":4,"name":"resolveSpawnAppearance","kind":"function","signature":"resolveSpawnAppearance(type, spawnerProps, meshes)","summary":"Resolve color and mesh for a spawned entity. Uses spawnerProps.color if provided, otherwise falls back to type defaults."}
{"schemaVersion":1,"modulePath":"engine/reference/tools/spawn/SpawnTypeDefaults.md","moduleTitle":"tools/spawn/SpawnTypeDefaults","source":"engine/tools/spawn/SpawnTypeDefaults.js","import":"/engine/tools/spawn/SpawnTypeDefaults.js","sourceHash":"3a06f1da521b70bd739569400d3e8a6511c422cc1ada84378163a19062dd98df","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/spawn/SpawnTypeDefaults.js#0005:createMeshLookup","exportIndex":5,"name":"createMeshLookup","kind":"function","signature":"createMeshLookup(options)","summary":"Create a mesh lookup object from individual mesh references."}
{"schemaVersion":1,"modulePath":"engine/reference/tools/spawn/SpawnTypeDefaults.md","moduleTitle":"tools/spawn/SpawnTypeDefaults","source":"engine/tools/spawn/SpawnTypeDefaults.js","import":"/engine/tools/spawn/SpawnTypeDefaults.js","sourceHash":"3a06f1da521b70bd739569400d3e8a6511c422cc1ada84378163a19062dd98df","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/spawn/SpawnTypeDefaults.js#0006:SPAWN_TYPE_COLORS","exportIndex":6,"name":"SPAWN_TYPE_COLORS","kind":"constant","signature":"SPAWN_TYPE_COLORS","summary":"Default colors for each spawn type"}
{"schemaVersion":1,"modulePath":"engine/reference/tools/spawn/SpawnTypeDefaults.md","moduleTitle":"tools/spawn/SpawnTypeDefaults","source":"engine/tools/spawn/SpawnTypeDefaults.js","import":"/engine/tools/spawn/SpawnTypeDefaults.js","sourceHash":"3a06f1da521b70bd739569400d3e8a6511c422cc1ada84378163a19062dd98df","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/spawn/SpawnTypeDefaults.js#0007:SPAWN_TYPE_MESHES","exportIndex":7,"name":"SPAWN_TYPE_MESHES","kind":"constant","signature":"SPAWN_TYPE_MESHES","summary":"Mesh type mapping (which mesh to use for each spawn type)"}
{"schemaVersion":1,"modulePath":"engine/reference/tools/spawn/SpawnTypeDefaults.md","moduleTitle":"tools/spawn/SpawnTypeDefaults","source":"engine/tools/spawn/SpawnTypeDefaults.js","import":"/engine/tools/spawn/SpawnTypeDefaults.js","sourceHash":"3a06f1da521b70bd739569400d3e8a6511c422cc1ada84378163a19062dd98df","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/tools/spawn/SpawnTypeDefaults.js#0008:SPAWN_TYPE_CATEGORIES","exportIndex":8,"name":"SPAWN_TYPE_CATEGORIES","kind":"constant","signature":"SPAWN_TYPE_CATEGORIES","summary":"Spawn type categories for UI organization"}
{"schemaVersion":1,"modulePath":"engine/reference/version.md","moduleTitle":"version","source":"engine/version.js","import":"/engine/version.js","sourceHash":"3d3ffc8640c204acb6380f24bde83b4bd0e41b99fd723d430cb6d2a6a1d0afef","subsystem":"engine","recordType":"api-module","id":"module:engine/version.js","title":"version","summary":"============================================================ Particle Realms — Canonical Version Source ============================================================ Import this module from anywhere in the engine or editor. The landing page (tests/index.html) also reads these values. ============================================================","exportCount":13}
{"schemaVersion":1,"modulePath":"engine/reference/version.md","moduleTitle":"version","source":"engine/version.js","import":"/engine/version.js","sourceHash":"3d3ffc8640c204acb6380f24bde83b4bd0e41b99fd723d430cb6d2a6a1d0afef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/version.js#0000:ENGINE_VERSION","exportIndex":0,"name":"ENGINE_VERSION","kind":"constant","signature":"ENGINE_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/version.md","moduleTitle":"version","source":"engine/version.js","import":"/engine/version.js","sourceHash":"3d3ffc8640c204acb6380f24bde83b4bd0e41b99fd723d430cb6d2a6a1d0afef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/version.js#0001:EDITOR_VERSION","exportIndex":1,"name":"EDITOR_VERSION","kind":"constant","signature":"EDITOR_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/version.md","moduleTitle":"version","source":"engine/version.js","import":"/engine/version.js","sourceHash":"3d3ffc8640c204acb6380f24bde83b4bd0e41b99fd723d430cb6d2a6a1d0afef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/version.js#0002:PLAUNA_VERSION","exportIndex":2,"name":"PLAUNA_VERSION","kind":"constant","signature":"PLAUNA_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/version.md","moduleTitle":"version","source":"engine/version.js","import":"/engine/version.js","sourceHash":"3d3ffc8640c204acb6380f24bde83b4bd0e41b99fd723d430cb6d2a6a1d0afef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/version.js#0003:AGI_CORE_VERSION","exportIndex":3,"name":"AGI_CORE_VERSION","kind":"constant","signature":"AGI_CORE_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/version.md","moduleTitle":"version","source":"engine/version.js","import":"/engine/version.js","sourceHash":"3d3ffc8640c204acb6380f24bde83b4bd0e41b99fd723d430cb6d2a6a1d0afef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/version.js#0004:BUILD_TAG","exportIndex":4,"name":"BUILD_TAG","kind":"constant","signature":"BUILD_TAG","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/version.md","moduleTitle":"version","source":"engine/version.js","import":"/engine/version.js","sourceHash":"3d3ffc8640c204acb6380f24bde83b4bd0e41b99fd723d430cb6d2a6a1d0afef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/version.js#0005:ENGINE_FULL","exportIndex":5,"name":"ENGINE_FULL","kind":"constant","signature":"ENGINE_FULL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/version.md","moduleTitle":"version","source":"engine/version.js","import":"/engine/version.js","sourceHash":"3d3ffc8640c204acb6380f24bde83b4bd0e41b99fd723d430cb6d2a6a1d0afef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/version.js#0006:EDITOR_FULL","exportIndex":6,"name":"EDITOR_FULL","kind":"constant","signature":"EDITOR_FULL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/version.md","moduleTitle":"version","source":"engine/version.js","import":"/engine/version.js","sourceHash":"3d3ffc8640c204acb6380f24bde83b4bd0e41b99fd723d430cb6d2a6a1d0afef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/version.js#0007:PLAUNA_FULL","exportIndex":7,"name":"PLAUNA_FULL","kind":"constant","signature":"PLAUNA_FULL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/version.md","moduleTitle":"version","source":"engine/version.js","import":"/engine/version.js","sourceHash":"3d3ffc8640c204acb6380f24bde83b4bd0e41b99fd723d430cb6d2a6a1d0afef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/version.js#0008:AGI_CORE_FULL","exportIndex":8,"name":"AGI_CORE_FULL","kind":"constant","signature":"AGI_CORE_FULL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/version.md","moduleTitle":"version","source":"engine/version.js","import":"/engine/version.js","sourceHash":"3d3ffc8640c204acb6380f24bde83b4bd0e41b99fd723d430cb6d2a6a1d0afef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/version.js#0009:VERSION_BANNER","exportIndex":9,"name":"VERSION_BANNER","kind":"constant","signature":"VERSION_BANNER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/version.md","moduleTitle":"version","source":"engine/version.js","import":"/engine/version.js","sourceHash":"3d3ffc8640c204acb6380f24bde83b4bd0e41b99fd723d430cb6d2a6a1d0afef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/version.js#0010:ENGINE_STARTED","exportIndex":10,"name":"ENGINE_STARTED","kind":"constant","signature":"ENGINE_STARTED","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/version.md","moduleTitle":"version","source":"engine/version.js","import":"/engine/version.js","sourceHash":"3d3ffc8640c204acb6380f24bde83b4bd0e41b99fd723d430cb6d2a6a1d0afef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/version.js#0011:EDITOR_STARTED","exportIndex":11,"name":"EDITOR_STARTED","kind":"constant","signature":"EDITOR_STARTED","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/version.md","moduleTitle":"version","source":"engine/version.js","import":"/engine/version.js","sourceHash":"3d3ffc8640c204acb6380f24bde83b4bd0e41b99fd723d430cb6d2a6a1d0afef","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/version.js#0012:STATS","exportIndex":12,"name":"STATS","kind":"constant","signature":"STATS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/ChunkCullCompute.md","moduleTitle":"voxel/ChunkCullCompute","source":"engine/voxel/ChunkCullCompute.js","import":"/engine/voxel/ChunkCullCompute.js","sourceHash":"12cecef546d51ea02e7fe797e966f87071b0c6c7167d81220bf9d1e1ed09e32d","subsystem":"engine","recordType":"api-module","id":"module:engine/voxel/ChunkCullCompute.js","title":"voxel/ChunkCullCompute","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/ChunkCullCompute.md","moduleTitle":"voxel/ChunkCullCompute","source":"engine/voxel/ChunkCullCompute.js","import":"/engine/voxel/ChunkCullCompute.js","sourceHash":"12cecef546d51ea02e7fe797e966f87071b0c6c7167d81220bf9d1e1ed09e32d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/ChunkCullCompute.js#0000:ChunkCullCompute","exportIndex":0,"name":"ChunkCullCompute","kind":"class","signature":"class ChunkCullCompute","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/ChunkRegistry.md","moduleTitle":"voxel/ChunkRegistry","source":"engine/voxel/ChunkRegistry.js","import":"/engine/voxel/ChunkRegistry.js","sourceHash":"2afee90aecba37b4ad1bdb48e945da83d94ee4109b9d8b5efa4caa8b78ee94ad","subsystem":"engine","recordType":"api-module","id":"module:engine/voxel/ChunkRegistry.js","title":"voxel/ChunkRegistry","summary":"ChunkRegistry.js - Central Chunk Existence and Integrity Registry Solves: 1. Duplicate generation - fast O(1) existence check before generating 2. Corruption detection - content hash verification 3. Race conditions - atomic claim/release for chunk operations 4. Missing chunks - tracks all known chunks with metadata Uses: - In-memory Map for fast lookups - Content hashing (xxHash) for integrity verification - Temp file staging for atomic saves - Persistent index file for cross-session awareness","exportCount":12}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/ChunkRegistry.md","moduleTitle":"voxel/ChunkRegistry","source":"engine/voxel/ChunkRegistry.js","import":"/engine/voxel/ChunkRegistry.js","sourceHash":"2afee90aecba37b4ad1bdb48e945da83d94ee4109b9d8b5efa4caa8b78ee94ad","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/ChunkRegistry.js#0000:BloomFilter","exportIndex":0,"name":"BloomFilter","kind":"class","signature":"class BloomFilter","summary":"Bloom Filter for ultra-fast chunk existence checks - O(1) time for add/check - No false negatives (if says \"no\", definitely doesn't exist) - Small false positive rate (~0.8%) - Uses ~2% memory of equivalent Set"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/ChunkRegistry.md","moduleTitle":"voxel/ChunkRegistry","source":"engine/voxel/ChunkRegistry.js","import":"/engine/voxel/ChunkRegistry.js","sourceHash":"2afee90aecba37b4ad1bdb48e945da83d94ee4109b9d8b5efa4caa8b78ee94ad","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/ChunkRegistry.js#0001:ChunkRegistry","exportIndex":1,"name":"ChunkRegistry","kind":"class","signature":"class ChunkRegistry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/ChunkRegistry.md","moduleTitle":"voxel/ChunkRegistry","source":"engine/voxel/ChunkRegistry.js","import":"/engine/voxel/ChunkRegistry.js","sourceHash":"2afee90aecba37b4ad1bdb48e945da83d94ee4109b9d8b5efa4caa8b78ee94ad","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/ChunkRegistry.js#0002:xxHash32","exportIndex":2,"name":"xxHash32","kind":"function","signature":"xxHash32(data, seed = 0)","summary":"Fast 32-bit hash for chunk content verification"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/ChunkRegistry.md","moduleTitle":"voxel/ChunkRegistry","source":"engine/voxel/ChunkRegistry.js","import":"/engine/voxel/ChunkRegistry.js","sourceHash":"2afee90aecba37b4ad1bdb48e945da83d94ee4109b9d8b5efa4caa8b78ee94ad","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/ChunkRegistry.js#0003:hashVoxels","exportIndex":3,"name":"hashVoxels","kind":"function","signature":"hashVoxels(voxels)","summary":"Hash voxel data for quick integrity check Uses sampling for very large arrays (faster)"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/ChunkRegistry.md","moduleTitle":"voxel/ChunkRegistry","source":"engine/voxel/ChunkRegistry.js","import":"/engine/voxel/ChunkRegistry.js","sourceHash":"2afee90aecba37b4ad1bdb48e945da83d94ee4109b9d8b5efa4caa8b78ee94ad","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/ChunkRegistry.js#0004:chunkRegistryBloomCoordinateHash","exportIndex":4,"name":"chunkRegistryBloomCoordinateHash","kind":"function","signature":"chunkRegistryBloomCoordinateHash(cx, cy, cz)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/ChunkRegistry.md","moduleTitle":"voxel/ChunkRegistry","source":"engine/voxel/ChunkRegistry.js","import":"/engine/voxel/ChunkRegistry.js","sourceHash":"2afee90aecba37b4ad1bdb48e945da83d94ee4109b9d8b5efa4caa8b78ee94ad","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/ChunkRegistry.js#0005:encodeMorton3D","exportIndex":5,"name":"encodeMorton3D","kind":"function","signature":"encodeMorton3D(x, y, z)","summary":"Encode 3D chunk coordinates to Morton code (Z-order) Interleaves bits for better cache locality in spatial queries"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/ChunkRegistry.md","moduleTitle":"voxel/ChunkRegistry","source":"engine/voxel/ChunkRegistry.js","import":"/engine/voxel/ChunkRegistry.js","sourceHash":"2afee90aecba37b4ad1bdb48e945da83d94ee4109b9d8b5efa4caa8b78ee94ad","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/ChunkRegistry.js#0006:decodeMorton3D","exportIndex":6,"name":"decodeMorton3D","kind":"function","signature":"decodeMorton3D(morton)","summary":"Decode Morton code back to 3D coordinates"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/ChunkRegistry.md","moduleTitle":"voxel/ChunkRegistry","source":"engine/voxel/ChunkRegistry.js","import":"/engine/voxel/ChunkRegistry.js","sourceHash":"2afee90aecba37b4ad1bdb48e945da83d94ee4109b9d8b5efa4caa8b78ee94ad","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/ChunkRegistry.js#0007:appendTrailer","exportIndex":7,"name":"appendTrailer","kind":"function","signature":"appendTrailer(data)","summary":"Append trailer canary to data for torn write detection"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/ChunkRegistry.md","moduleTitle":"voxel/ChunkRegistry","source":"engine/voxel/ChunkRegistry.js","import":"/engine/voxel/ChunkRegistry.js","sourceHash":"2afee90aecba37b4ad1bdb48e945da83d94ee4109b9d8b5efa4caa8b78ee94ad","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/ChunkRegistry.js#0008:verifyTrailer","exportIndex":8,"name":"verifyTrailer","kind":"function","signature":"verifyTrailer(data)","summary":"Verify trailer canary is present (write was complete)"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/ChunkRegistry.md","moduleTitle":"voxel/ChunkRegistry","source":"engine/voxel/ChunkRegistry.js","import":"/engine/voxel/ChunkRegistry.js","sourceHash":"2afee90aecba37b4ad1bdb48e945da83d94ee4109b9d8b5efa4caa8b78ee94ad","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/ChunkRegistry.js#0009:getChunkRegistry","exportIndex":9,"name":"getChunkRegistry","kind":"function","signature":"getChunkRegistry()","summary":"Get the global ChunkRegistry instance"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/ChunkRegistry.md","moduleTitle":"voxel/ChunkRegistry","source":"engine/voxel/ChunkRegistry.js","import":"/engine/voxel/ChunkRegistry.js","sourceHash":"2afee90aecba37b4ad1bdb48e945da83d94ee4109b9d8b5efa4caa8b78ee94ad","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/ChunkRegistry.js#0010:initChunkRegistry","exportIndex":10,"name":"initChunkRegistry","kind":"function","signature":"async initChunkRegistry(backend)","summary":"Initialize the global registry with a storage backend"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/ChunkRegistry.md","moduleTitle":"voxel/ChunkRegistry","source":"engine/voxel/ChunkRegistry.js","import":"/engine/voxel/ChunkRegistry.js","sourceHash":"2afee90aecba37b4ad1bdb48e945da83d94ee4109b9d8b5efa4caa8b78ee94ad","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/ChunkRegistry.js#0011:ChunkStatus","exportIndex":11,"name":"ChunkStatus","kind":"constant","signature":"ChunkStatus","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/ChunkSorter.md","moduleTitle":"voxel/ChunkSorter","source":"engine/voxel/ChunkSorter.js","import":"/engine/voxel/ChunkSorter.js","sourceHash":"4b217062213e6ccf27c968c6101062ba830ba7a4c8ea9c668e663074c8375fb0","subsystem":"engine","recordType":"api-module","id":"module:engine/voxel/ChunkSorter.js","title":"voxel/ChunkSorter","summary":"ChunkSorter - Manages chunk draw order and visibility","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/ChunkSorter.md","moduleTitle":"voxel/ChunkSorter","source":"engine/voxel/ChunkSorter.js","import":"/engine/voxel/ChunkSorter.js","sourceHash":"4b217062213e6ccf27c968c6101062ba830ba7a4c8ea9c668e663074c8375fb0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/ChunkSorter.js#0000:ChunkSorter","exportIndex":0,"name":"ChunkSorter","kind":"class","signature":"class ChunkSorter","summary":"ChunkSorter - Manages chunk draw order and visibility"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/ChunkSorter.md","moduleTitle":"voxel/ChunkSorter","source":"engine/voxel/ChunkSorter.js","import":"/engine/voxel/ChunkSorter.js","sourceHash":"4b217062213e6ccf27c968c6101062ba830ba7a4c8ea9c668e663074c8375fb0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/ChunkSorter.js#0001:getCameraForward","exportIndex":1,"name":"getCameraForward","kind":"function","signature":"getCameraForward(viewMatrix)","summary":"Utility function to extract camera forward from view matrix"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/ChunkSorter.md","moduleTitle":"voxel/ChunkSorter","source":"engine/voxel/ChunkSorter.js","import":"/engine/voxel/ChunkSorter.js","sourceHash":"4b217062213e6ccf27c968c6101062ba830ba7a4c8ea9c668e663074c8375fb0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/ChunkSorter.js#0002:getCameraPosition","exportIndex":2,"name":"getCameraPosition","kind":"function","signature":"getCameraPosition(invViewMatrix)","summary":"Utility function to extract camera position from inverse view matrix"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/ChunkSorter.md","moduleTitle":"voxel/ChunkSorter","source":"engine/voxel/ChunkSorter.js","import":"/engine/voxel/ChunkSorter.js","sourceHash":"4b217062213e6ccf27c968c6101062ba830ba7a4c8ea9c668e663074c8375fb0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/ChunkSorter.js#0003:FACE_NAMES","exportIndex":3,"name":"FACE_NAMES","kind":"constant","signature":"FACE_NAMES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/ColoredLighting.md","moduleTitle":"voxel/ColoredLighting","source":"engine/voxel/ColoredLighting.js","import":"/engine/voxel/ColoredLighting.js","sourceHash":"f76a4bb2a60703e075b52cfc6a846f329bc1fa1c18db87bb7597f26a3ec0c14d","subsystem":"engine","recordType":"api-module","id":"module:engine/voxel/ColoredLighting.js","title":"voxel/ColoredLighting","summary":"Pack RGB + Sky into a 16-bit value","exportCount":8}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/ColoredLighting.md","moduleTitle":"voxel/ColoredLighting","source":"engine/voxel/ColoredLighting.js","import":"/engine/voxel/ColoredLighting.js","sourceHash":"f76a4bb2a60703e075b52cfc6a846f329bc1fa1c18db87bb7597f26a3ec0c14d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/ColoredLighting.js#0000:ColoredLightingSystem","exportIndex":0,"name":"ColoredLightingSystem","kind":"class","signature":"class ColoredLightingSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/ColoredLighting.md","moduleTitle":"voxel/ColoredLighting","source":"engine/voxel/ColoredLighting.js","import":"/engine/voxel/ColoredLighting.js","sourceHash":"f76a4bb2a60703e075b52cfc6a846f329bc1fa1c18db87bb7597f26a3ec0c14d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/ColoredLighting.js#0001:packLight","exportIndex":1,"name":"packLight","kind":"function","signature":"packLight(r, g, b, sky = 0)","summary":"Pack RGB + Sky into a 16-bit value"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/ColoredLighting.md","moduleTitle":"voxel/ColoredLighting","source":"engine/voxel/ColoredLighting.js","import":"/engine/voxel/ColoredLighting.js","sourceHash":"f76a4bb2a60703e075b52cfc6a846f329bc1fa1c18db87bb7597f26a3ec0c14d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/ColoredLighting.js#0002:unpackLight","exportIndex":2,"name":"unpackLight","kind":"function","signature":"unpackLight(packed)","summary":"Unpack light into components"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/ColoredLighting.md","moduleTitle":"voxel/ColoredLighting","source":"engine/voxel/ColoredLighting.js","import":"/engine/voxel/ColoredLighting.js","sourceHash":"f76a4bb2a60703e075b52cfc6a846f329bc1fa1c18db87bb7597f26a3ec0c14d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/ColoredLighting.js#0003:getChannel","exportIndex":3,"name":"getChannel","kind":"function","signature":"getChannel(packed, shift)","summary":"Get single channel from packed light"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/ColoredLighting.md","moduleTitle":"voxel/ColoredLighting","source":"engine/voxel/ColoredLighting.js","import":"/engine/voxel/ColoredLighting.js","sourceHash":"f76a4bb2a60703e075b52cfc6a846f329bc1fa1c18db87bb7597f26a3ec0c14d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/ColoredLighting.js#0004:lightMax","exportIndex":4,"name":"lightMax","kind":"function","signature":"lightMax(a, b)","summary":"Component-wise maximum of two light values"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/ColoredLighting.md","moduleTitle":"voxel/ColoredLighting","source":"engine/voxel/ColoredLighting.js","import":"/engine/voxel/ColoredLighting.js","sourceHash":"f76a4bb2a60703e075b52cfc6a846f329bc1fa1c18db87bb7597f26a3ec0c14d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/ColoredLighting.js#0005:lightDecrement","exportIndex":5,"name":"lightDecrement","kind":"function","signature":"lightDecrement(packed, amount = 1)","summary":"Component-wise decrement with saturation (no underflow)"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/ColoredLighting.md","moduleTitle":"voxel/ColoredLighting","source":"engine/voxel/ColoredLighting.js","import":"/engine/voxel/ColoredLighting.js","sourceHash":"f76a4bb2a60703e075b52cfc6a846f329bc1fa1c18db87bb7597f26a3ec0c14d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/ColoredLighting.js#0006:hasLight","exportIndex":6,"name":"hasLight","kind":"function","signature":"hasLight(packed)","summary":"Check if light value is non-zero"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/ColoredLighting.md","moduleTitle":"voxel/ColoredLighting","source":"engine/voxel/ColoredLighting.js","import":"/engine/voxel/ColoredLighting.js","sourceHash":"f76a4bb2a60703e075b52cfc6a846f329bc1fa1c18db87bb7597f26a3ec0c14d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/ColoredLighting.js#0007:lightToRGB","exportIndex":7,"name":"lightToRGB","kind":"function","signature":"lightToRGB(packed, skyBrightness = 1.0)","summary":"Convert light to normalized RGB (0-1 range)"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/DirtyChunkManager.md","moduleTitle":"voxel/DirtyChunkManager","source":"engine/voxel/DirtyChunkManager.js","import":"/engine/voxel/DirtyChunkManager.js","sourceHash":"ebf19748ed94ccdde42e099c6822d3f5935254432a88c15d89e19f6804f71a66","subsystem":"engine","recordType":"api-module","id":"module:engine/voxel/DirtyChunkManager.js","title":"voxel/DirtyChunkManager","summary":"Represents a dirty chunk entry","exportCount":9}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/DirtyChunkManager.md","moduleTitle":"voxel/DirtyChunkManager","source":"engine/voxel/DirtyChunkManager.js","import":"/engine/voxel/DirtyChunkManager.js","sourceHash":"ebf19748ed94ccdde42e099c6822d3f5935254432a88c15d89e19f6804f71a66","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/DirtyChunkManager.js#0000:DirtyChunkEntry","exportIndex":0,"name":"DirtyChunkEntry","kind":"class","signature":"class DirtyChunkEntry","summary":"Represents a dirty chunk entry"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/DirtyChunkManager.md","moduleTitle":"voxel/DirtyChunkManager","source":"engine/voxel/DirtyChunkManager.js","import":"/engine/voxel/DirtyChunkManager.js","sourceHash":"ebf19748ed94ccdde42e099c6822d3f5935254432a88c15d89e19f6804f71a66","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/DirtyChunkManager.js#0001:DirtyChunkManager","exportIndex":1,"name":"DirtyChunkManager","kind":"class","signature":"class DirtyChunkManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/DirtyChunkManager.md","moduleTitle":"voxel/DirtyChunkManager","source":"engine/voxel/DirtyChunkManager.js","import":"/engine/voxel/DirtyChunkManager.js","sourceHash":"ebf19748ed94ccdde42e099c6822d3f5935254432a88c15d89e19f6804f71a66","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/DirtyChunkManager.js#0002:GeometryDirtyTracker","exportIndex":2,"name":"GeometryDirtyTracker","kind":"class","signature":"class GeometryDirtyTracker extends DirtyChunkManager","summary":"Geometry-specific dirty tracker (for mesh rebuilds)"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/DirtyChunkManager.md","moduleTitle":"voxel/DirtyChunkManager","source":"engine/voxel/DirtyChunkManager.js","import":"/engine/voxel/DirtyChunkManager.js","sourceHash":"ebf19748ed94ccdde42e099c6822d3f5935254432a88c15d89e19f6804f71a66","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/DirtyChunkManager.js#0003:LightingDirtyTracker","exportIndex":3,"name":"LightingDirtyTracker","kind":"class","signature":"class LightingDirtyTracker extends DirtyChunkManager","summary":"Lighting-specific dirty tracker (for DDGI updates)"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/DirtyChunkManager.md","moduleTitle":"voxel/DirtyChunkManager","source":"engine/voxel/DirtyChunkManager.js","import":"/engine/voxel/DirtyChunkManager.js","sourceHash":"ebf19748ed94ccdde42e099c6822d3f5935254432a88c15d89e19f6804f71a66","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/DirtyChunkManager.js#0004:parseChunkKey","exportIndex":4,"name":"parseChunkKey","kind":"function","signature":"parseChunkKey(key)","summary":"Parse chunk key to coordinates"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/DirtyChunkManager.md","moduleTitle":"voxel/DirtyChunkManager","source":"engine/voxel/DirtyChunkManager.js","import":"/engine/voxel/DirtyChunkManager.js","sourceHash":"ebf19748ed94ccdde42e099c6822d3f5935254432a88c15d89e19f6804f71a66","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/DirtyChunkManager.js#0005:makeChunkKey","exportIndex":5,"name":"makeChunkKey","kind":"function","signature":"makeChunkKey(x, y, z)","summary":"Create chunk key from coordinates"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/DirtyChunkManager.md","moduleTitle":"voxel/DirtyChunkManager","source":"engine/voxel/DirtyChunkManager.js","import":"/engine/voxel/DirtyChunkManager.js","sourceHash":"ebf19748ed94ccdde42e099c6822d3f5935254432a88c15d89e19f6804f71a66","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/DirtyChunkManager.js#0006:MAX_DIRTY_PER_FRAME","exportIndex":6,"name":"MAX_DIRTY_PER_FRAME","kind":"constant","signature":"MAX_DIRTY_PER_FRAME","summary":"Maximum chunks that can be processed per frame"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/DirtyChunkManager.md","moduleTitle":"voxel/DirtyChunkManager","source":"engine/voxel/DirtyChunkManager.js","import":"/engine/voxel/DirtyChunkManager.js","sourceHash":"ebf19748ed94ccdde42e099c6822d3f5935254432a88c15d89e19f6804f71a66","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/DirtyChunkManager.js#0007:ChunkState","exportIndex":7,"name":"ChunkState","kind":"constant","signature":"ChunkState","summary":"Chunk states"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/DirtyChunkManager.md","moduleTitle":"voxel/DirtyChunkManager","source":"engine/voxel/DirtyChunkManager.js","import":"/engine/voxel/DirtyChunkManager.js","sourceHash":"ebf19748ed94ccdde42e099c6822d3f5935254432a88c15d89e19f6804f71a66","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/DirtyChunkManager.js#0008:DIRTY_FLAGS","exportIndex":8,"name":"DIRTY_FLAGS","kind":"re-export","signature":"DIRTY_FLAGS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/FaceListMesher.md","moduleTitle":"voxel/FaceListMesher","source":"engine/voxel/FaceListMesher.js","import":"/engine/voxel/FaceListMesher.js","sourceHash":"b74ef9652d47c1b5956fd3268375413a62e963d95acb6ed28e1198c55001db43","subsystem":"engine","recordType":"api-module","id":"module:engine/voxel/FaceListMesher.js","title":"voxel/FaceListMesher","summary":"","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/FaceListMesher.md","moduleTitle":"voxel/FaceListMesher","source":"engine/voxel/FaceListMesher.js","import":"/engine/voxel/FaceListMesher.js","sourceHash":"b74ef9652d47c1b5956fd3268375413a62e963d95acb6ed28e1198c55001db43","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/FaceListMesher.js#0000:GPUBufferPool","exportIndex":0,"name":"GPUBufferPool","kind":"class","signature":"class GPUBufferPool","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/FaceListMesher.md","moduleTitle":"voxel/FaceListMesher","source":"engine/voxel/FaceListMesher.js","import":"/engine/voxel/FaceListMesher.js","sourceHash":"b74ef9652d47c1b5956fd3268375413a62e963d95acb6ed28e1198c55001db43","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/FaceListMesher.js#0001:FaceListMesher","exportIndex":1,"name":"FaceListMesher","kind":"class","signature":"class FaceListMesher","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/FaceListMesher.md","moduleTitle":"voxel/FaceListMesher","source":"engine/voxel/FaceListMesher.js","import":"/engine/voxel/FaceListMesher.js","sourceHash":"b74ef9652d47c1b5956fd3268375413a62e963d95acb6ed28e1198c55001db43","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/FaceListMesher.js#0002:FACE_PULL_SHADER_BASE","exportIndex":2,"name":"FACE_PULL_SHADER_BASE","kind":"constant","signature":"FACE_PULL_SHADER_BASE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/FacePool.md","moduleTitle":"voxel/FacePool","source":"engine/voxel/FacePool.js","import":"/engine/voxel/FacePool.js","sourceHash":"bbcbaca27e24d366cc738cb7985f454438bc82c47bd817bf1b05ee38fd7eafd9","subsystem":"engine","recordType":"api-module","id":"module:engine/voxel/FacePool.js","title":"voxel/FacePool","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/FacePool.md","moduleTitle":"voxel/FacePool","source":"engine/voxel/FacePool.js","import":"/engine/voxel/FacePool.js","sourceHash":"bbcbaca27e24d366cc738cb7985f454438bc82c47bd817bf1b05ee38fd7eafd9","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/FacePool.js#0000:FacePool","exportIndex":0,"name":"FacePool","kind":"class","signature":"class FacePool","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MC33Tables.md","moduleTitle":"voxel/MC33Tables","source":"engine/voxel/MC33Tables.js","import":"/engine/voxel/MC33Tables.js","sourceHash":"ca9a9380ff70ca9929549985939e51c4002f741c6ef25c7fc64c1b5d6ef25c32","subsystem":"engine","recordType":"api-module","id":"module:engine/voxel/MC33Tables.js","title":"voxel/MC33Tables","summary":"Evaluate the asymptotic decider for a face Given 4 corner values of a face (v0, v1, v2, v3 in order around face), determine how the isosurface crosses the face. For a face to be ambiguous, corners must alternate in sign: (v0 > 0, v1 < 0, v2 > 0, v3 < 0) or vice versa The asymptotic decider computes: A = v0 + v2 (diagonal sum) B = v1 + v3 (other diagonal sum) If A * (v0 - v1) > 0: connect (v0,v2) pair Else: connect (v1,v3) pair Equivalently, compute Q = v0*v2 - v1*v3 Q > 0: separating, Q < 0: connecting","exportCount":14}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MC33Tables.md","moduleTitle":"voxel/MC33Tables","source":"engine/voxel/MC33Tables.js","import":"/engine/voxel/MC33Tables.js","sourceHash":"ca9a9380ff70ca9929549985939e51c4002f741c6ef25c7fc64c1b5d6ef25c32","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MC33Tables.js#0000:asymptoticDecider","exportIndex":0,"name":"asymptoticDecider","kind":"function","signature":"asymptoticDecider(v0, v1, v2, v3)","summary":"Evaluate the asymptotic decider for a face Given 4 corner values of a face (v0, v1, v2, v3 in order around face), determine how the isosurface crosses the face. For a face to be ambiguous, corners must alternate in sign: (v0 > 0, v1 < 0, v2 > 0, v3 < 0) or vice versa The asymptotic decider computes: A = v0 + v2 (diagonal sum) B = v1 + v3 (other diagonal sum) If A * (v0 - v1) > 0: connect (v0,v2) pair Else: connect (v1,v3) pair Equivalently, compute Q = v0*v2 - v1*v3 Q > 0: separating, Q < 0: connecting"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MC33Tables.md","moduleTitle":"voxel/MC33Tables","source":"engine/voxel/MC33Tables.js","import":"/engine/voxel/MC33Tables.js","sourceHash":"ca9a9380ff70ca9929549985939e51c4002f741c6ef25c7fc64c1b5d6ef25c32","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MC33Tables.js#0001:isFaceAmbiguous","exportIndex":1,"name":"isFaceAmbiguous","kind":"function","signature":"isFaceAmbiguous(cubeIndex, faceIndex)","summary":"Check if a face has ambiguity given cube configuration"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MC33Tables.md","moduleTitle":"voxel/MC33Tables","source":"engine/voxel/MC33Tables.js","import":"/engine/voxel/MC33Tables.js","sourceHash":"ca9a9380ff70ca9929549985939e51c4002f741c6ef25c7fc64c1b5d6ef25c32","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MC33Tables.js#0002:getAmbiguousFaces","exportIndex":2,"name":"getAmbiguousFaces","kind":"function","signature":"getAmbiguousFaces(cubeIndex)","summary":"Get all ambiguous faces for a cube configuration"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MC33Tables.md","moduleTitle":"voxel/MC33Tables","source":"engine/voxel/MC33Tables.js","import":"/engine/voxel/MC33Tables.js","sourceHash":"ca9a9380ff70ca9929549985939e51c4002f741c6ef25c7fc64c1b5d6ef25c32","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MC33Tables.js#0003:interiorTest","exportIndex":3,"name":"interiorTest","kind":"function","signature":"interiorTest(values)","summary":"Test for interior ambiguity in Case 13 configurations Case 13 has a potential tunnel through the cube center The interior test computes the bilinear patch at cube center and checks if it separates or connects the corner groups"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MC33Tables.md","moduleTitle":"voxel/MC33Tables","source":"engine/voxel/MC33Tables.js","import":"/engine/voxel/MC33Tables.js","sourceHash":"ca9a9380ff70ca9929549985939e51c4002f741c6ef25c7fc64c1b5d6ef25c32","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MC33Tables.js#0004:getMC33Subcase","exportIndex":4,"name":"getMC33Subcase","kind":"function","signature":"getMC33Subcase(cubeIndex, values)","summary":"Compute the MC33 subcase for a given cube configuration"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MC33Tables.md","moduleTitle":"voxel/MC33Tables","source":"engine/voxel/MC33Tables.js","import":"/engine/voxel/MC33Tables.js","sourceHash":"ca9a9380ff70ca9929549985939e51c4002f741c6ef25c7fc64c1b5d6ef25c32","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MC33Tables.js#0005:generateWGSLTables","exportIndex":5,"name":"generateWGSLTables","kind":"function","signature":"generateWGSLTables()","summary":"Generate WGSL constant arrays for MC33 tables For use in compute shaders"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MC33Tables.md","moduleTitle":"voxel/MC33Tables","source":"engine/voxel/MC33Tables.js","import":"/engine/voxel/MC33Tables.js","sourceHash":"ca9a9380ff70ca9929549985939e51c4002f741c6ef25c7fc64c1b5d6ef25c32","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MC33Tables.js#0006:rotateEdges","exportIndex":6,"name":"rotateEdges","kind":"function","signature":"rotateEdges(edges, rotation)","summary":"Apply rotation to edge indices"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MC33Tables.md","moduleTitle":"voxel/MC33Tables","source":"engine/voxel/MC33Tables.js","import":"/engine/voxel/MC33Tables.js","sourceHash":"ca9a9380ff70ca9929549985939e51c4002f741c6ef25c7fc64c1b5d6ef25c32","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MC33Tables.js#0007:MC33_CASE","exportIndex":7,"name":"MC33_CASE","kind":"constant","signature":"MC33_CASE","summary":"MC33 base case for each of the 256 cube configurations Standard MC has 15 cases, MC33 extends to 33 by splitting ambiguous ones Cases 0-14: Standard unambiguous cases Cases with face ambiguity: 3, 4, 6, 7, 10, 12, 13 Cases with interior ambiguity: 4, 6, 7, 10, 12, 13"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MC33Tables.md","moduleTitle":"voxel/MC33Tables","source":"engine/voxel/MC33Tables.js","import":"/engine/voxel/MC33Tables.js","sourceHash":"ca9a9380ff70ca9929549985939e51c4002f741c6ef25c7fc64c1b5d6ef25c32","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MC33Tables.js#0008:MC33_SUBCASE_COUNT","exportIndex":8,"name":"MC33_SUBCASE_COUNT","kind":"constant","signature":"MC33_SUBCASE_COUNT","summary":"Number of subcases for each MC33 case Most cases have 1 subcase (no ambiguity) Ambiguous cases have 2-6 subcases depending on face/interior tests"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MC33Tables.md","moduleTitle":"voxel/MC33Tables","source":"engine/voxel/MC33Tables.js","import":"/engine/voxel/MC33Tables.js","sourceHash":"ca9a9380ff70ca9929549985939e51c4002f741c6ef25c7fc64c1b5d6ef25c32","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MC33Tables.js#0009:CUBE_FACES","exportIndex":9,"name":"CUBE_FACES","kind":"constant","signature":"CUBE_FACES","summary":"Face indices for the 6 cube faces Each face defined by 4 corner indices in CCW order (from outside)"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MC33Tables.md","moduleTitle":"voxel/MC33Tables","source":"engine/voxel/MC33Tables.js","import":"/engine/voxel/MC33Tables.js","sourceHash":"ca9a9380ff70ca9929549985939e51c4002f741c6ef25c7fc64c1b5d6ef25c32","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MC33Tables.js#0010:AMBIGUOUS_FACES","exportIndex":10,"name":"AMBIGUOUS_FACES","kind":"constant","signature":"AMBIGUOUS_FACES","summary":"For each ambiguous case, which faces need to be tested Bit flags: bit 0 = face 0, bit 1 = face 1, etc."}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MC33Tables.md","moduleTitle":"voxel/MC33Tables","source":"engine/voxel/MC33Tables.js","import":"/engine/voxel/MC33Tables.js","sourceHash":"ca9a9380ff70ca9929549985939e51c4002f741c6ef25c7fc64c1b5d6ef25c32","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MC33Tables.js#0011:SUBCASE_LOOKUP","exportIndex":11,"name":"SUBCASE_LOOKUP","kind":"constant","signature":"SUBCASE_LOOKUP","summary":"Subcase lookup for each ambiguous case Index by face test results (bit flags)"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MC33Tables.md","moduleTitle":"voxel/MC33Tables","source":"engine/voxel/MC33Tables.js","import":"/engine/voxel/MC33Tables.js","sourceHash":"ca9a9380ff70ca9929549985939e51c4002f741c6ef25c7fc64c1b5d6ef25c32","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MC33Tables.js#0012:MC33_TRI_TABLE","exportIndex":12,"name":"MC33_TRI_TABLE","kind":"constant","signature":"MC33_TRI_TABLE","summary":"Triangle configurations for MC33 subcases For ambiguous cases, provides alternate triangulations Format: [case][subcase] = [edge indices for triangles, -1 terminated] Note: This is a subset of the full 1296-entry table Full table would be generated programmatically or loaded from binary"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MC33Tables.md","moduleTitle":"voxel/MC33Tables","source":"engine/voxel/MC33Tables.js","import":"/engine/voxel/MC33Tables.js","sourceHash":"ca9a9380ff70ca9929549985939e51c4002f741c6ef25c7fc64c1b5d6ef25c32","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MC33Tables.js#0013:CANONICAL_ROTATION","exportIndex":13,"name":"CANONICAL_ROTATION","kind":"constant","signature":"CANONICAL_ROTATION","summary":"Rotation lookup to map arbitrary configs to canonical form MC33 uses 48 symmetries (24 rotations × 2 reflections) This reduces the 256 configurations to ~23 canonical cases Each entry: [canonical_index, rotation_index]"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MarchingCubesMesher.md","moduleTitle":"voxel/MarchingCubesMesher","source":"engine/voxel/MarchingCubesMesher.js","import":"/engine/voxel/MarchingCubesMesher.js","sourceHash":"8dd9b725dff10314eb53d3d00425411439971114f3e90d9d42a256ed3817177e","subsystem":"engine","recordType":"api-module","id":"module:engine/voxel/MarchingCubesMesher.js","title":"voxel/MarchingCubesMesher","summary":"MarchingCubesMesher.js - Smooth Voxel Terrain via Isosurface Extraction INTEGRATION: - GPU compute shader for parallel cube processing - Uses VoxelMeshCompute for output buffer management - Integrates with ChunkManager for chunk-based meshing Implements the Marching Cubes algorithm for smooth terrain: - Extracts isosurface from 3D density field - Produces smooth, organic terrain instead of blocky voxels - Supports interpolated vertex positions for smooth gradients - Generates per-vertex normals for proper lighting - fBM SDF terrain (Inigo Quilez style) for native smooth noise MC33 Extension (Chernyaev 1995): - Resolves topological ambiguities for watertight meshes - Uses asymptotic decider for face ambiguity resolution - Interior tests for tunnel cases (Case 13) - 33 distinct cases vs standard 15 Based on: - Lorensen & Cline's Marching Cubes (1987) - Chernyaev's Marching Cubes 33 (1995) - Inigo Quilez fBM SDF: https://iquilezles.org/articles/fbmsdf/ Usage: const mesh = meshChunkSmooth(chunk, getDensity); const meshMC33 = meshChunkMC33(chunk, getDensity); // Watertight // Or with SDF: const density = sdfTerrain(x, y, z, config);","exportCount":25}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MarchingCubesMesher.md","moduleTitle":"voxel/MarchingCubesMesher","source":"engine/voxel/MarchingCubesMesher.js","import":"/engine/voxel/MarchingCubesMesher.js","sourceHash":"8dd9b725dff10314eb53d3d00425411439971114f3e90d9d42a256ed3817177e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MarchingCubesMesher.js#0000:MarchingCubesMesher","exportIndex":0,"name":"MarchingCubesMesher","kind":"class","signature":"class MarchingCubesMesher","summary":"Marching Cubes Mesher class for integration with existing systems"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MarchingCubesMesher.md","moduleTitle":"voxel/MarchingCubesMesher","source":"engine/voxel/MarchingCubesMesher.js","import":"/engine/voxel/MarchingCubesMesher.js","sourceHash":"8dd9b725dff10314eb53d3d00425411439971114f3e90d9d42a256ed3817177e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MarchingCubesMesher.js#0001:meshChunkSmooth","exportIndex":1,"name":"meshChunkSmooth","kind":"function","signature":"meshChunkSmooth(chunk, getDensity, options = {})","summary":"Mesh a chunk using Marching Cubes for smooth terrain"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MarchingCubesMesher.md","moduleTitle":"voxel/MarchingCubesMesher","source":"engine/voxel/MarchingCubesMesher.js","import":"/engine/voxel/MarchingCubesMesher.js","sourceHash":"8dd9b725dff10314eb53d3d00425411439971114f3e90d9d42a256ed3817177e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MarchingCubesMesher.js#0002:meshChunkMC33","exportIndex":2,"name":"meshChunkMC33","kind":"function","signature":"meshChunkMC33(chunk, getDensity, options = {})","summary":"Mesh a chunk using MC33 for watertight meshes Resolves topological ambiguities that cause holes in standard MC"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MarchingCubesMesher.md","moduleTitle":"voxel/MarchingCubesMesher","source":"engine/voxel/MarchingCubesMesher.js","import":"/engine/voxel/MarchingCubesMesher.js","sourceHash":"8dd9b725dff10314eb53d3d00425411439971114f3e90d9d42a256ed3817177e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MarchingCubesMesher.js#0003:resolveFaceAmbiguity","exportIndex":3,"name":"resolveFaceAmbiguity","kind":"function","signature":"resolveFaceAmbiguity(cubeIndex, densities, faceIndex)","summary":"Test if a face is ambiguous and resolve using asymptotic decider Exported for use in GPU shader validation"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MarchingCubesMesher.md","moduleTitle":"voxel/MarchingCubesMesher","source":"engine/voxel/MarchingCubesMesher.js","import":"/engine/voxel/MarchingCubesMesher.js","sourceHash":"8dd9b725dff10314eb53d3d00425411439971114f3e90d9d42a256ed3817177e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MarchingCubesMesher.js#0004:smin","exportIndex":4,"name":"smin","kind":"function","signature":"smin(a, b, k = 0.1)","summary":"Smooth minimum (polynomial) - blends two distances smoothly"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MarchingCubesMesher.md","moduleTitle":"voxel/MarchingCubesMesher","source":"engine/voxel/MarchingCubesMesher.js","import":"/engine/voxel/MarchingCubesMesher.js","sourceHash":"8dd9b725dff10314eb53d3d00425411439971114f3e90d9d42a256ed3817177e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MarchingCubesMesher.js#0005:fbm3D","exportIndex":5,"name":"fbm3D","kind":"function","signature":"fbm3D(x, y, z, config = {})","summary":"fBM (Fractal Brownian Motion) noise"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MarchingCubesMesher.md","moduleTitle":"voxel/MarchingCubesMesher","source":"engine/voxel/MarchingCubesMesher.js","import":"/engine/voxel/MarchingCubesMesher.js","sourceHash":"8dd9b725dff10314eb53d3d00425411439971114f3e90d9d42a256ed3817177e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MarchingCubesMesher.js#0006:sdfTerrain","exportIndex":6,"name":"sdfTerrain","kind":"function","signature":"sdfTerrain(x, y, z, config = {})","summary":"SDF Terrain density function (Inigo Quilez style) Returns negative inside terrain, positive outside"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MarchingCubesMesher.md","moduleTitle":"voxel/MarchingCubesMesher","source":"engine/voxel/MarchingCubesMesher.js","import":"/engine/voxel/MarchingCubesMesher.js","sourceHash":"8dd9b725dff10314eb53d3d00425411439971114f3e90d9d42a256ed3817177e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MarchingCubesMesher.js#0007:sdfSphere","exportIndex":7,"name":"sdfSphere","kind":"function","signature":"sdfSphere(x, y, z, cx, cy, cz, radius)","summary":"SDF Sphere primitive"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MarchingCubesMesher.md","moduleTitle":"voxel/MarchingCubesMesher","source":"engine/voxel/MarchingCubesMesher.js","import":"/engine/voxel/MarchingCubesMesher.js","sourceHash":"8dd9b725dff10314eb53d3d00425411439971114f3e90d9d42a256ed3817177e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MarchingCubesMesher.js#0008:sdfBox","exportIndex":8,"name":"sdfBox","kind":"function","signature":"sdfBox(x, y, z, cx, cy, cz, sx, sy, sz)","summary":"SDF Box primitive"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MarchingCubesMesher.md","moduleTitle":"voxel/MarchingCubesMesher","source":"engine/voxel/MarchingCubesMesher.js","import":"/engine/voxel/MarchingCubesMesher.js","sourceHash":"8dd9b725dff10314eb53d3d00425411439971114f3e90d9d42a256ed3817177e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MarchingCubesMesher.js#0009:sdfUnion","exportIndex":9,"name":"sdfUnion","kind":"function","signature":"sdfUnion(d1, d2)","summary":"Union of two SDFs"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MarchingCubesMesher.md","moduleTitle":"voxel/MarchingCubesMesher","source":"engine/voxel/MarchingCubesMesher.js","import":"/engine/voxel/MarchingCubesMesher.js","sourceHash":"8dd9b725dff10314eb53d3d00425411439971114f3e90d9d42a256ed3817177e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MarchingCubesMesher.js#0010:sdfSmoothUnion","exportIndex":10,"name":"sdfSmoothUnion","kind":"function","signature":"sdfSmoothUnion(d1, d2, k = 0.1)","summary":"Smooth union of two SDFs"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MarchingCubesMesher.md","moduleTitle":"voxel/MarchingCubesMesher","source":"engine/voxel/MarchingCubesMesher.js","import":"/engine/voxel/MarchingCubesMesher.js","sourceHash":"8dd9b725dff10314eb53d3d00425411439971114f3e90d9d42a256ed3817177e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MarchingCubesMesher.js#0011:sdfSubtract","exportIndex":11,"name":"sdfSubtract","kind":"function","signature":"sdfSubtract(d1, d2)","summary":"Subtraction of SDFs (d2 from d1)"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MarchingCubesMesher.md","moduleTitle":"voxel/MarchingCubesMesher","source":"engine/voxel/MarchingCubesMesher.js","import":"/engine/voxel/MarchingCubesMesher.js","sourceHash":"8dd9b725dff10314eb53d3d00425411439971114f3e90d9d42a256ed3817177e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MarchingCubesMesher.js#0012:sdfIntersect","exportIndex":12,"name":"sdfIntersect","kind":"function","signature":"sdfIntersect(d1, d2)","summary":"Intersection of SDFs"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MarchingCubesMesher.md","moduleTitle":"voxel/MarchingCubesMesher","source":"engine/voxel/MarchingCubesMesher.js","import":"/engine/voxel/MarchingCubesMesher.js","sourceHash":"8dd9b725dff10314eb53d3d00425411439971114f3e90d9d42a256ed3817177e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MarchingCubesMesher.js#0013:generateTransitionCell","exportIndex":13,"name":"generateTransitionCell","kind":"function","signature":"generateTransitionCell(densityHigh, densityLow, face, cellSize, isolevel = 0)","summary":"Generate transition cell mesh for LOD boundary"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MarchingCubesMesher.md","moduleTitle":"voxel/MarchingCubesMesher","source":"engine/voxel/MarchingCubesMesher.js","import":"/engine/voxel/MarchingCubesMesher.js","sourceHash":"8dd9b725dff10314eb53d3d00425411439971114f3e90d9d42a256ed3817177e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MarchingCubesMesher.js#0014:needsTransitionCell","exportIndex":14,"name":"needsTransitionCell","kind":"function","signature":"needsTransitionCell(chunkLOD, neighborLOD)","summary":"Check if chunk needs transition cells on a face"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MarchingCubesMesher.md","moduleTitle":"voxel/MarchingCubesMesher","source":"engine/voxel/MarchingCubesMesher.js","import":"/engine/voxel/MarchingCubesMesher.js","sourceHash":"8dd9b725dff10314eb53d3d00425411439971114f3e90d9d42a256ed3817177e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MarchingCubesMesher.js#0015:getTransitionRatio","exportIndex":15,"name":"getTransitionRatio","kind":"function","signature":"getTransitionRatio(chunkLOD, neighborLOD)","summary":"Get transition cell size ratio"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MarchingCubesMesher.md","moduleTitle":"voxel/MarchingCubesMesher","source":"engine/voxel/MarchingCubesMesher.js","import":"/engine/voxel/MarchingCubesMesher.js","sourceHash":"8dd9b725dff10314eb53d3d00425411439971114f3e90d9d42a256ed3817177e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MarchingCubesMesher.js#0016:dualContourVertex","exportIndex":16,"name":"dualContourVertex","kind":"function","signature":"dualContourVertex(density, gradients, isolevel = 0)","summary":"Dual Contouring vertex placement using QEF (Quadric Error Function) Unlike Marching Cubes, places vertex at optimal position inside cell"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MarchingCubesMesher.md","moduleTitle":"voxel/MarchingCubesMesher","source":"engine/voxel/MarchingCubesMesher.js","import":"/engine/voxel/MarchingCubesMesher.js","sourceHash":"8dd9b725dff10314eb53d3d00425411439971114f3e90d9d42a256ed3817177e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MarchingCubesMesher.js#0017:dualContourCell","exportIndex":17,"name":"dualContourCell","kind":"function","signature":"dualContourCell(density, isolevel = 0)","summary":"Check if cell contains surface using Dual Contouring"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MarchingCubesMesher.md","moduleTitle":"voxel/MarchingCubesMesher","source":"engine/voxel/MarchingCubesMesher.js","import":"/engine/voxel/MarchingCubesMesher.js","sourceHash":"8dd9b725dff10314eb53d3d00425411439971114f3e90d9d42a256ed3817177e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MarchingCubesMesher.js#0018:calculateWorldSpaceAO","exportIndex":18,"name":"calculateWorldSpaceAO","kind":"function","signature":"calculateWorldSpaceAO(sampleDensity, wx, wy, wz, radius = 2, samples = 8)","summary":"Calculate world-space AO from density field"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MarchingCubesMesher.md","moduleTitle":"voxel/MarchingCubesMesher","source":"engine/voxel/MarchingCubesMesher.js","import":"/engine/voxel/MarchingCubesMesher.js","sourceHash":"8dd9b725dff10314eb53d3d00425411439971114f3e90d9d42a256ed3817177e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MarchingCubesMesher.js#0019:calculateGradientAO","exportIndex":19,"name":"calculateGradientAO","kind":"function","signature":"calculateGradientAO(sampleDensity, wx, wy, wz)","summary":"Calculate AO from density gradient (faster, smoother)"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MarchingCubesMesher.md","moduleTitle":"voxel/MarchingCubesMesher","source":"engine/voxel/MarchingCubesMesher.js","import":"/engine/voxel/MarchingCubesMesher.js","sourceHash":"8dd9b725dff10314eb53d3d00425411439971114f3e90d9d42a256ed3817177e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MarchingCubesMesher.js#0020:MARCHING_CUBES_MATERIAL_PCG_HASH_WGSL","exportIndex":20,"name":"MARCHING_CUBES_MATERIAL_PCG_HASH_WGSL","kind":"constant","signature":"MARCHING_CUBES_MATERIAL_PCG_HASH_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MarchingCubesMesher.md","moduleTitle":"voxel/MarchingCubesMesher","source":"engine/voxel/MarchingCubesMesher.js","import":"/engine/voxel/MarchingCubesMesher.js","sourceHash":"8dd9b725dff10314eb53d3d00425411439971114f3e90d9d42a256ed3817177e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MarchingCubesMesher.js#0021:MESH_MODE","exportIndex":21,"name":"MESH_MODE","kind":"constant","signature":"MESH_MODE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MarchingCubesMesher.md","moduleTitle":"voxel/MarchingCubesMesher","source":"engine/voxel/MarchingCubesMesher.js","import":"/engine/voxel/MarchingCubesMesher.js","sourceHash":"8dd9b725dff10314eb53d3d00425411439971114f3e90d9d42a256ed3817177e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MarchingCubesMesher.js#0022:TRIPLANAR_SHADER","exportIndex":22,"name":"TRIPLANAR_SHADER","kind":"constant","signature":"TRIPLANAR_SHADER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MarchingCubesMesher.md","moduleTitle":"voxel/MarchingCubesMesher","source":"engine/voxel/MarchingCubesMesher.js","import":"/engine/voxel/MarchingCubesMesher.js","sourceHash":"8dd9b725dff10314eb53d3d00425411439971114f3e90d9d42a256ed3817177e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MarchingCubesMesher.js#0023:MATERIAL_BLEND_SHADER","exportIndex":23,"name":"MATERIAL_BLEND_SHADER","kind":"constant","signature":"MATERIAL_BLEND_SHADER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MarchingCubesMesher.md","moduleTitle":"voxel/MarchingCubesMesher","source":"engine/voxel/MarchingCubesMesher.js","import":"/engine/voxel/MarchingCubesMesher.js","sourceHash":"8dd9b725dff10314eb53d3d00425411439971114f3e90d9d42a256ed3817177e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MarchingCubesMesher.js#0024:SDF_RAYMARCH_SHADER","exportIndex":24,"name":"SDF_RAYMARCH_SHADER","kind":"constant","signature":"SDF_RAYMARCH_SHADER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MaterialSchema.md","moduleTitle":"voxel/MaterialSchema","source":"engine/voxel/MaterialSchema.js","import":"/engine/voxel/MaterialSchema.js","sourceHash":"6529046c60f728ab681b8bc293442a633b5243ef5152ab153579783f1017dc2a","subsystem":"engine","recordType":"api-module","id":"module:engine/voxel/MaterialSchema.js","title":"voxel/MaterialSchema","summary":"Get material ID by name (safe lookup)","exportCount":17}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MaterialSchema.md","moduleTitle":"voxel/MaterialSchema","source":"engine/voxel/MaterialSchema.js","import":"/engine/voxel/MaterialSchema.js","sourceHash":"6529046c60f728ab681b8bc293442a633b5243ef5152ab153579783f1017dc2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MaterialSchema.js#0000:getMaterialId","exportIndex":0,"name":"getMaterialId","kind":"function","signature":"getMaterialId(name)","summary":"Get material ID by name (safe lookup)"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MaterialSchema.md","moduleTitle":"voxel/MaterialSchema","source":"engine/voxel/MaterialSchema.js","import":"/engine/voxel/MaterialSchema.js","sourceHash":"6529046c60f728ab681b8bc293442a633b5243ef5152ab153579783f1017dc2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MaterialSchema.js#0001:getMaterialName","exportIndex":1,"name":"getMaterialName","kind":"function","signature":"getMaterialName(id)","summary":"Get material name by ID (safe lookup)"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MaterialSchema.md","moduleTitle":"voxel/MaterialSchema","source":"engine/voxel/MaterialSchema.js","import":"/engine/voxel/MaterialSchema.js","sourceHash":"6529046c60f728ab681b8bc293442a633b5243ef5152ab153579783f1017dc2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MaterialSchema.js#0002:getMaterialColor","exportIndex":2,"name":"getMaterialColor","kind":"function","signature":"getMaterialColor(id)","summary":"Get material color by ID"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MaterialSchema.md","moduleTitle":"voxel/MaterialSchema","source":"engine/voxel/MaterialSchema.js","import":"/engine/voxel/MaterialSchema.js","sourceHash":"6529046c60f728ab681b8bc293442a633b5243ef5152ab153579783f1017dc2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MaterialSchema.js#0003:getMaterialProperties","exportIndex":3,"name":"getMaterialProperties","kind":"function","signature":"getMaterialProperties(id)","summary":"Get material properties by ID"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MaterialSchema.md","moduleTitle":"voxel/MaterialSchema","source":"engine/voxel/MaterialSchema.js","import":"/engine/voxel/MaterialSchema.js","sourceHash":"6529046c60f728ab681b8bc293442a633b5243ef5152ab153579783f1017dc2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MaterialSchema.js#0004:isTransparent","exportIndex":4,"name":"isTransparent","kind":"function","signature":"isTransparent(id)","summary":"Check if material is transparent"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MaterialSchema.md","moduleTitle":"voxel/MaterialSchema","source":"engine/voxel/MaterialSchema.js","import":"/engine/voxel/MaterialSchema.js","sourceHash":"6529046c60f728ab681b8bc293442a633b5243ef5152ab153579783f1017dc2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MaterialSchema.js#0005:isSolid","exportIndex":5,"name":"isSolid","kind":"function","signature":"isSolid(id)","summary":"Check if material is solid"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MaterialSchema.md","moduleTitle":"voxel/MaterialSchema","source":"engine/voxel/MaterialSchema.js","import":"/engine/voxel/MaterialSchema.js","sourceHash":"6529046c60f728ab681b8bc293442a633b5243ef5152ab153579783f1017dc2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MaterialSchema.js#0006:isFluid","exportIndex":6,"name":"isFluid","kind":"function","signature":"isFluid(id)","summary":"Check if material is fluid"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MaterialSchema.md","moduleTitle":"voxel/MaterialSchema","source":"engine/voxel/MaterialSchema.js","import":"/engine/voxel/MaterialSchema.js","sourceHash":"6529046c60f728ab681b8bc293442a633b5243ef5152ab153579783f1017dc2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MaterialSchema.js#0007:isEmissive","exportIndex":7,"name":"isEmissive","kind":"function","signature":"isEmissive(id)","summary":"Check if material is emissive"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MaterialSchema.md","moduleTitle":"voxel/MaterialSchema","source":"engine/voxel/MaterialSchema.js","import":"/engine/voxel/MaterialSchema.js","sourceHash":"6529046c60f728ab681b8bc293442a633b5243ef5152ab153579783f1017dc2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MaterialSchema.js#0008:validateSchema","exportIndex":8,"name":"validateSchema","kind":"function","signature":"validateSchema()","summary":"Validate schema integrity"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MaterialSchema.md","moduleTitle":"voxel/MaterialSchema","source":"engine/voxel/MaterialSchema.js","import":"/engine/voxel/MaterialSchema.js","sourceHash":"6529046c60f728ab681b8bc293442a633b5243ef5152ab153579783f1017dc2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MaterialSchema.js#0009:SCHEMA_VERSION","exportIndex":9,"name":"SCHEMA_VERSION","kind":"constant","signature":"SCHEMA_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MaterialSchema.md","moduleTitle":"voxel/MaterialSchema","source":"engine/voxel/MaterialSchema.js","import":"/engine/voxel/MaterialSchema.js","sourceHash":"6529046c60f728ab681b8bc293442a633b5243ef5152ab153579783f1017dc2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MaterialSchema.js#0010:MATERIAL_DEFINITIONS","exportIndex":10,"name":"MATERIAL_DEFINITIONS","kind":"constant","signature":"MATERIAL_DEFINITIONS","summary":"Material definition schema Each material has: - name: Unique identifier (used as enum key) - color: RGBA array [0-255, 0-255, 0-255, 0-255] - colorNormalized: RGBA array [0-1, 0-1, 0-1, 0-1] (auto-generated) - properties: Material behavior flags"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MaterialSchema.md","moduleTitle":"voxel/MaterialSchema","source":"engine/voxel/MaterialSchema.js","import":"/engine/voxel/MaterialSchema.js","sourceHash":"6529046c60f728ab681b8bc293442a633b5243ef5152ab153579783f1017dc2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MaterialSchema.js#0011:MATERIAL","exportIndex":11,"name":"MATERIAL","kind":"constant","signature":"MATERIAL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MaterialSchema.md","moduleTitle":"voxel/MaterialSchema","source":"engine/voxel/MaterialSchema.js","import":"/engine/voxel/MaterialSchema.js","sourceHash":"6529046c60f728ab681b8bc293442a633b5243ef5152ab153579783f1017dc2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MaterialSchema.js#0012:MATERIAL_COLORS","exportIndex":12,"name":"MATERIAL_COLORS","kind":"constant","signature":"MATERIAL_COLORS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MaterialSchema.md","moduleTitle":"voxel/MaterialSchema","source":"engine/voxel/MaterialSchema.js","import":"/engine/voxel/MaterialSchema.js","sourceHash":"6529046c60f728ab681b8bc293442a633b5243ef5152ab153579783f1017dc2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MaterialSchema.js#0013:MATERIAL_PROPERTIES","exportIndex":13,"name":"MATERIAL_PROPERTIES","kind":"constant","signature":"MATERIAL_PROPERTIES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MaterialSchema.md","moduleTitle":"voxel/MaterialSchema","source":"engine/voxel/MaterialSchema.js","import":"/engine/voxel/MaterialSchema.js","sourceHash":"6529046c60f728ab681b8bc293442a633b5243ef5152ab153579783f1017dc2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MaterialSchema.js#0014:MATERIAL_NAMES","exportIndex":14,"name":"MATERIAL_NAMES","kind":"constant","signature":"MATERIAL_NAMES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MaterialSchema.md","moduleTitle":"voxel/MaterialSchema","source":"engine/voxel/MaterialSchema.js","import":"/engine/voxel/MaterialSchema.js","sourceHash":"6529046c60f728ab681b8bc293442a633b5243ef5152ab153579783f1017dc2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MaterialSchema.js#0015:MATERIAL_IDS","exportIndex":15,"name":"MATERIAL_IDS","kind":"constant","signature":"MATERIAL_IDS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MaterialSchema.md","moduleTitle":"voxel/MaterialSchema","source":"engine/voxel/MaterialSchema.js","import":"/engine/voxel/MaterialSchema.js","sourceHash":"6529046c60f728ab681b8bc293442a633b5243ef5152ab153579783f1017dc2a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MaterialSchema.js#0016:MATERIAL_COUNT","exportIndex":16,"name":"MATERIAL_COUNT","kind":"constant","signature":"MATERIAL_COUNT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MeshletCullCompute.md","moduleTitle":"voxel/MeshletCullCompute","source":"engine/voxel/MeshletCullCompute.js","import":"/engine/voxel/MeshletCullCompute.js","sourceHash":"bca4362274f8b522c3e188a9603efcdcf58468003589cf9cb5cbae58117ac489","subsystem":"engine","recordType":"api-module","id":"module:engine/voxel/MeshletCullCompute.js","title":"voxel/MeshletCullCompute","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/MeshletCullCompute.md","moduleTitle":"voxel/MeshletCullCompute","source":"engine/voxel/MeshletCullCompute.js","import":"/engine/voxel/MeshletCullCompute.js","sourceHash":"bca4362274f8b522c3e188a9603efcdcf58468003589cf9cb5cbae58117ac489","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/MeshletCullCompute.js#0000:MeshletCullCompute","exportIndex":0,"name":"MeshletCullCompute","kind":"class","signature":"class MeshletCullCompute","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/NeighborCache.md","moduleTitle":"voxel/NeighborCache","source":"engine/voxel/NeighborCache.js","import":"/engine/voxel/NeighborCache.js","sourceHash":"94d1ed668f47aaf4d6252e84860a5951ed6a8875812a2648b1c053e10b5787f5","subsystem":"engine","recordType":"api-module","id":"module:engine/voxel/NeighborCache.js","title":"voxel/NeighborCache","summary":"ChunkNeighborCache - Per-chunk neighbor references","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/NeighborCache.md","moduleTitle":"voxel/NeighborCache","source":"engine/voxel/NeighborCache.js","import":"/engine/voxel/NeighborCache.js","sourceHash":"94d1ed668f47aaf4d6252e84860a5951ed6a8875812a2648b1c053e10b5787f5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/NeighborCache.js#0000:ChunkNeighborCache","exportIndex":0,"name":"ChunkNeighborCache","kind":"class","signature":"class ChunkNeighborCache","summary":"ChunkNeighborCache - Per-chunk neighbor references"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/NeighborCache.md","moduleTitle":"voxel/NeighborCache","source":"engine/voxel/NeighborCache.js","import":"/engine/voxel/NeighborCache.js","sourceHash":"94d1ed668f47aaf4d6252e84860a5951ed6a8875812a2648b1c053e10b5787f5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/NeighborCache.js#0001:NeighborCacheManager","exportIndex":1,"name":"NeighborCacheManager","kind":"class","signature":"class NeighborCacheManager","summary":"NeighborCacheManager - Manages neighbor caches for all chunks"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/NeighborCache.md","moduleTitle":"voxel/NeighborCache","source":"engine/voxel/NeighborCache.js","import":"/engine/voxel/NeighborCache.js","sourceHash":"94d1ed668f47aaf4d6252e84860a5951ed6a8875812a2648b1c053e10b5787f5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/NeighborCache.js#0002:NEIGHBOR_DIR","exportIndex":2,"name":"NEIGHBOR_DIR","kind":"constant","signature":"NEIGHBOR_DIR","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/ProceduralMaterialBaker.md","moduleTitle":"voxel/ProceduralMaterialBaker","source":"engine/voxel/ProceduralMaterialBaker.js","import":"/engine/voxel/ProceduralMaterialBaker.js","sourceHash":"cc4ac75476e0c1729beb4d536105dc95b7a88f68e6058117727ab32309d378d4","subsystem":"engine","recordType":"api-module","id":"module:engine/voxel/ProceduralMaterialBaker.js","title":"voxel/ProceduralMaterialBaker","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/ProceduralMaterialBaker.md","moduleTitle":"voxel/ProceduralMaterialBaker","source":"engine/voxel/ProceduralMaterialBaker.js","import":"/engine/voxel/ProceduralMaterialBaker.js","sourceHash":"cc4ac75476e0c1729beb4d536105dc95b7a88f68e6058117727ab32309d378d4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/ProceduralMaterialBaker.js#0000:ProceduralMaterialBaker","exportIndex":0,"name":"ProceduralMaterialBaker","kind":"class","signature":"class ProceduralMaterialBaker","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/SubChunkMeshCompute.md","moduleTitle":"voxel/SubChunkMeshCompute","source":"engine/voxel/SubChunkMeshCompute.js","import":"/engine/voxel/SubChunkMeshCompute.js","sourceHash":"04162de95f7205f121932c0f7dc21362b5988af1756fe0cdac682ba2d0280ee7","subsystem":"engine","recordType":"api-module","id":"module:engine/voxel/SubChunkMeshCompute.js","title":"voxel/SubChunkMeshCompute","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/SubChunkMeshCompute.md","moduleTitle":"voxel/SubChunkMeshCompute","source":"engine/voxel/SubChunkMeshCompute.js","import":"/engine/voxel/SubChunkMeshCompute.js","sourceHash":"04162de95f7205f121932c0f7dc21362b5988af1756fe0cdac682ba2d0280ee7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/SubChunkMeshCompute.js#0000:SubChunkMeshCompute","exportIndex":0,"name":"SubChunkMeshCompute","kind":"class","signature":"class SubChunkMeshCompute","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/TextureArrayManager.md","moduleTitle":"voxel/TextureArrayManager","source":"engine/voxel/TextureArrayManager.js","import":"/engine/voxel/TextureArrayManager.js","sourceHash":"44ae79f3601c0fe314f3ef53ae3d7a91a340844f48a1213afaa481929fb4bc3a","subsystem":"engine","recordType":"api-module","id":"module:engine/voxel/TextureArrayManager.js","title":"voxel/TextureArrayManager","summary":"TextureArrayManager.js - Texture Array for Voxel Materials Uses a 2D texture array instead of a texture atlas for voxel materials. Benefits over atlas: - No UV calculation needed (just use material index) - Proper mipmapping per texture (no bleeding) - Cleaner shader code - Easy to add/remove materials Usage in shader: @group(0) @binding(X) var materials: texture_2d_array<f32>; let color = textureSample(materials, sampler, uv, materialIndex);","exportCount":5}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/TextureArrayManager.md","moduleTitle":"voxel/TextureArrayManager","source":"engine/voxel/TextureArrayManager.js","import":"/engine/voxel/TextureArrayManager.js","sourceHash":"44ae79f3601c0fe314f3ef53ae3d7a91a340844f48a1213afaa481929fb4bc3a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/TextureArrayManager.js#0000:TextureArrayManager","exportIndex":0,"name":"TextureArrayManager","kind":"class","signature":"class TextureArrayManager","summary":"TextureArrayManager - Manages a texture array for voxel materials"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/TextureArrayManager.md","moduleTitle":"voxel/TextureArrayManager","source":"engine/voxel/TextureArrayManager.js","import":"/engine/voxel/TextureArrayManager.js","sourceHash":"44ae79f3601c0fe314f3ef53ae3d7a91a340844f48a1213afaa481929fb4bc3a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/TextureArrayManager.js#0001:textureArrayMaterialNoiseHash","exportIndex":1,"name":"textureArrayMaterialNoiseHash","kind":"function","signature":"textureArrayMaterialNoiseHash(px, py, materialIndex)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/TextureArrayManager.md","moduleTitle":"voxel/TextureArrayManager","source":"engine/voxel/TextureArrayManager.js","import":"/engine/voxel/TextureArrayManager.js","sourceHash":"44ae79f3601c0fe314f3ef53ae3d7a91a340844f48a1213afaa481929fb4bc3a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/TextureArrayManager.js#0002:textureArrayMaterialNoiseDelta","exportIndex":2,"name":"textureArrayMaterialNoiseDelta","kind":"function","signature":"textureArrayMaterialNoiseDelta(px, py, materialIndex, amplitude = 0.1)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/TextureArrayManager.md","moduleTitle":"voxel/TextureArrayManager","source":"engine/voxel/TextureArrayManager.js","import":"/engine/voxel/TextureArrayManager.js","sourceHash":"44ae79f3601c0fe314f3ef53ae3d7a91a340844f48a1213afaa481929fb4bc3a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/TextureArrayManager.js#0003:TEXTURE_ARRAY_WGSL","exportIndex":3,"name":"TEXTURE_ARRAY_WGSL","kind":"constant","signature":"TEXTURE_ARRAY_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/TextureArrayManager.md","moduleTitle":"voxel/TextureArrayManager","source":"engine/voxel/TextureArrayManager.js","import":"/engine/voxel/TextureArrayManager.js","sourceHash":"44ae79f3601c0fe314f3ef53ae3d7a91a340844f48a1213afaa481929fb4bc3a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/TextureArrayManager.js#0004:TEXTURE_ARRAY_WGSL_GROUP2","exportIndex":4,"name":"TEXTURE_ARRAY_WGSL_GROUP2","kind":"constant","signature":"TEXTURE_ARRAY_WGSL_GROUP2","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelAO.md","moduleTitle":"voxel/VoxelAO","source":"engine/voxel/VoxelAO.js","import":"/engine/voxel/VoxelAO.js","sourceHash":"9c9b581a3d273eeda4840470ee0f1cf79a6e1be056532af40566efd8e7052b02","subsystem":"engine","recordType":"api-module","id":"module:engine/voxel/VoxelAO.js","title":"voxel/VoxelAO","summary":"VoxelAOCalculator - GPU compute shader for AO calculation","exportCount":7}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelAO.md","moduleTitle":"voxel/VoxelAO","source":"engine/voxel/VoxelAO.js","import":"/engine/voxel/VoxelAO.js","sourceHash":"9c9b581a3d273eeda4840470ee0f1cf79a6e1be056532af40566efd8e7052b02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelAO.js#0000:VoxelAOCalculator","exportIndex":0,"name":"VoxelAOCalculator","kind":"class","signature":"class VoxelAOCalculator","summary":"VoxelAOCalculator - GPU compute shader for AO calculation"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelAO.md","moduleTitle":"voxel/VoxelAO","source":"engine/voxel/VoxelAO.js","import":"/engine/voxel/VoxelAO.js","sourceHash":"9c9b581a3d273eeda4840470ee0f1cf79a6e1be056532af40566efd8e7052b02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelAO.js#0001:calculateVertexAO","exportIndex":1,"name":"calculateVertexAO","kind":"function","signature":"calculateVertexAO(isOpaque, x, y, z, face, corner)","summary":"Calculate vertex AO for a single corner"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelAO.md","moduleTitle":"voxel/VoxelAO","source":"engine/voxel/VoxelAO.js","import":"/engine/voxel/VoxelAO.js","sourceHash":"9c9b581a3d273eeda4840470ee0f1cf79a6e1be056532af40566efd8e7052b02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelAO.js#0002:calculateFaceAO","exportIndex":2,"name":"calculateFaceAO","kind":"function","signature":"calculateFaceAO(isOpaque, x, y, z, face)","summary":"Calculate all 4 corner AO values for a face"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelAO.md","moduleTitle":"voxel/VoxelAO","source":"engine/voxel/VoxelAO.js","import":"/engine/voxel/VoxelAO.js","sourceHash":"9c9b581a3d273eeda4840470ee0f1cf79a6e1be056532af40566efd8e7052b02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelAO.js#0003:packAO","exportIndex":3,"name":"packAO","kind":"function","signature":"packAO(ao)","summary":"Pack 4 AO values into a single u32 (8 bits each)"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelAO.md","moduleTitle":"voxel/VoxelAO","source":"engine/voxel/VoxelAO.js","import":"/engine/voxel/VoxelAO.js","sourceHash":"9c9b581a3d273eeda4840470ee0f1cf79a6e1be056532af40566efd8e7052b02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelAO.js#0004:unpackAO","exportIndex":4,"name":"unpackAO","kind":"function","signature":"unpackAO(packed)","summary":"Unpack u32 to 4 AO values"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelAO.md","moduleTitle":"voxel/VoxelAO","source":"engine/voxel/VoxelAO.js","import":"/engine/voxel/VoxelAO.js","sourceHash":"9c9b581a3d273eeda4840470ee0f1cf79a6e1be056532af40566efd8e7052b02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelAO.js#0005:shouldFlipQuad","exportIndex":5,"name":"shouldFlipQuad","kind":"function","signature":"shouldFlipQuad(ao)","summary":"Determine if face vertices should be flipped for better AO interpolation Fixes the \"anisotropy\" problem where diagonal looks different based on quad orientation"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelAO.md","moduleTitle":"voxel/VoxelAO","source":"engine/voxel/VoxelAO.js","import":"/engine/voxel/VoxelAO.js","sourceHash":"9c9b581a3d273eeda4840470ee0f1cf79a6e1be056532af40566efd8e7052b02","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelAO.js#0006:VOXEL_AO_WGSL","exportIndex":6,"name":"VOXEL_AO_WGSL","kind":"constant","signature":"VOXEL_AO_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelConstants.md","moduleTitle":"voxel/VoxelConstants","source":"engine/voxel/VoxelConstants.js","import":"/engine/voxel/VoxelConstants.js","sourceHash":"2a82e872a45ef5cb721a11d701ed8f4316ac6e93c4e16519f537f6bf7d7fd1e2","subsystem":"engine","recordType":"api-module","id":"module:engine/voxel/VoxelConstants.js","title":"voxel/VoxelConstants","summary":"Get the depth tier configuration for a given Y coordinate","exportCount":8}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelConstants.md","moduleTitle":"voxel/VoxelConstants","source":"engine/voxel/VoxelConstants.js","import":"/engine/voxel/VoxelConstants.js","sourceHash":"2a82e872a45ef5cb721a11d701ed8f4316ac6e93c4e16519f537f6bf7d7fd1e2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelConstants.js#0000:getDepthTier","exportIndex":0,"name":"getDepthTier","kind":"function","signature":"getDepthTier(y)","summary":"Get the depth tier configuration for a given Y coordinate"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelConstants.md","moduleTitle":"voxel/VoxelConstants","source":"engine/voxel/VoxelConstants.js","import":"/engine/voxel/VoxelConstants.js","sourceHash":"2a82e872a45ef5cb721a11d701ed8f4316ac6e93c4e16519f537f6bf7d7fd1e2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelConstants.js#0001:getDepthTierBlend","exportIndex":1,"name":"getDepthTierBlend","kind":"function","signature":"getDepthTierBlend(y)","summary":"Interpolate between depth tiers for smooth transitions"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelConstants.md","moduleTitle":"voxel/VoxelConstants","source":"engine/voxel/VoxelConstants.js","import":"/engine/voxel/VoxelConstants.js","sourceHash":"2a82e872a45ef5cb721a11d701ed8f4316ac6e93c4e16519f537f6bf7d7fd1e2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelConstants.js#0002:CHUNK_SIZE","exportIndex":2,"name":"CHUNK_SIZE","kind":"constant","signature":"CHUNK_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelConstants.md","moduleTitle":"voxel/VoxelConstants","source":"engine/voxel/VoxelConstants.js","import":"/engine/voxel/VoxelConstants.js","sourceHash":"2a82e872a45ef5cb721a11d701ed8f4316ac6e93c4e16519f537f6bf7d7fd1e2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelConstants.js#0003:CHUNK_SIZE_SQ","exportIndex":3,"name":"CHUNK_SIZE_SQ","kind":"constant","signature":"CHUNK_SIZE_SQ","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelConstants.md","moduleTitle":"voxel/VoxelConstants","source":"engine/voxel/VoxelConstants.js","import":"/engine/voxel/VoxelConstants.js","sourceHash":"2a82e872a45ef5cb721a11d701ed8f4316ac6e93c4e16519f537f6bf7d7fd1e2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelConstants.js#0004:CHUNK_VOLUME","exportIndex":4,"name":"CHUNK_VOLUME","kind":"constant","signature":"CHUNK_VOLUME","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelConstants.md","moduleTitle":"voxel/VoxelConstants","source":"engine/voxel/VoxelConstants.js","import":"/engine/voxel/VoxelConstants.js","sourceHash":"2a82e872a45ef5cb721a11d701ed8f4316ac6e93c4e16519f537f6bf7d7fd1e2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelConstants.js#0005:DEPTH_TIERS","exportIndex":5,"name":"DEPTH_TIERS","kind":"constant","signature":"DEPTH_TIERS","summary":"Depth tiers define how terrain generation changes with depth. Each tier has different noise parameters, materials, and features."}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelConstants.md","moduleTitle":"voxel/VoxelConstants","source":"engine/voxel/VoxelConstants.js","import":"/engine/voxel/VoxelConstants.js","sourceHash":"2a82e872a45ef5cb721a11d701ed8f4316ac6e93c4e16519f537f6bf7d7fd1e2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelConstants.js#0006:FACE_NORMALS","exportIndex":6,"name":"FACE_NORMALS","kind":"constant","signature":"FACE_NORMALS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelConstants.md","moduleTitle":"voxel/VoxelConstants","source":"engine/voxel/VoxelConstants.js","import":"/engine/voxel/VoxelConstants.js","sourceHash":"2a82e872a45ef5cb721a11d701ed8f4316ac6e93c4e16519f537f6bf7d7fd1e2","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelConstants.js#0007:FACE_NAMES","exportIndex":7,"name":"FACE_NAMES","kind":"constant","signature":"FACE_NAMES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelMeshCompute.md","moduleTitle":"voxel/VoxelMeshCompute","source":"engine/voxel/VoxelMeshCompute.js","import":"/engine/voxel/VoxelMeshCompute.js","sourceHash":"fbb5fa952d6cc8d5f2ec369caef05b48df1132bee7d8b5e5bda8efffffb5a820","subsystem":"engine","recordType":"api-module","id":"module:engine/voxel/VoxelMeshCompute.js","title":"voxel/VoxelMeshCompute","summary":"","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelMeshCompute.md","moduleTitle":"voxel/VoxelMeshCompute","source":"engine/voxel/VoxelMeshCompute.js","import":"/engine/voxel/VoxelMeshCompute.js","sourceHash":"fbb5fa952d6cc8d5f2ec369caef05b48df1132bee7d8b5e5bda8efffffb5a820","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelMeshCompute.js#0000:VoxelMeshCompute","exportIndex":0,"name":"VoxelMeshCompute","kind":"class","signature":"class VoxelMeshCompute","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelMeshCompute.md","moduleTitle":"voxel/VoxelMeshCompute","source":"engine/voxel/VoxelMeshCompute.js","import":"/engine/voxel/VoxelMeshCompute.js","sourceHash":"fbb5fa952d6cc8d5f2ec369caef05b48df1132bee7d8b5e5bda8efffffb5a820","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelMeshCompute.js#0001:COMPACT_VERTEX_SHADER","exportIndex":1,"name":"COMPACT_VERTEX_SHADER","kind":"constant","signature":"COMPACT_VERTEX_SHADER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelMeshCompute.md","moduleTitle":"voxel/VoxelMeshCompute","source":"engine/voxel/VoxelMeshCompute.js","import":"/engine/voxel/VoxelMeshCompute.js","sourceHash":"fbb5fa952d6cc8d5f2ec369caef05b48df1132bee7d8b5e5bda8efffffb5a820","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelMeshCompute.js#0002:COMPACT_VERTEX_LAYOUT","exportIndex":2,"name":"COMPACT_VERTEX_LAYOUT","kind":"constant","signature":"COMPACT_VERTEX_LAYOUT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelMesher.md","moduleTitle":"voxel/VoxelMesher","source":"engine/voxel/VoxelMesher.js","import":"/engine/voxel/VoxelMesher.js","sourceHash":"aa11895ee1323c90446a747c12998fa8c130c1b5d3ecfdb6913a8dcf5c980cea","subsystem":"engine","recordType":"api-module","id":"module:engine/voxel/VoxelMesher.js","title":"voxel/VoxelMesher","summary":"Check if a material is transparent","exportCount":20}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelMesher.md","moduleTitle":"voxel/VoxelMesher","source":"engine/voxel/VoxelMesher.js","import":"/engine/voxel/VoxelMesher.js","sourceHash":"aa11895ee1323c90446a747c12998fa8c130c1b5d3ecfdb6913a8dcf5c980cea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelMesher.js#0000:isTransparentMaterial","exportIndex":0,"name":"isTransparentMaterial","kind":"function","signature":"isTransparentMaterial(material)","summary":"Check if a material is transparent"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelMesher.md","moduleTitle":"voxel/VoxelMesher","source":"engine/voxel/VoxelMesher.js","import":"/engine/voxel/VoxelMesher.js","sourceHash":"aa11895ee1323c90446a747c12998fa8c130c1b5d3ecfdb6913a8dcf5c980cea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelMesher.js#0001:isChunkFaceSolid","exportIndex":1,"name":"isChunkFaceSolid","kind":"function","signature":"isChunkFaceSolid(chunk, face)","summary":"Check if a chunk's boundary face is fully solid (all voxels on that face are non-air) Used to skip meshing faces that are completely hidden by a solid neighbor"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelMesher.md","moduleTitle":"voxel/VoxelMesher","source":"engine/voxel/VoxelMesher.js","import":"/engine/voxel/VoxelMesher.js","sourceHash":"aa11895ee1323c90446a747c12998fa8c130c1b5d3ecfdb6913a8dcf5c980cea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelMesher.js#0002:getChunkOcclusionMask","exportIndex":2,"name":"getChunkOcclusionMask","kind":"function","signature":"getChunkOcclusionMask(getNeighborChunk, cx, cy, cz)","summary":"Get occlusion mask for a chunk based on neighbor chunk boundaries Returns a bitmask where bit N is set if face N is fully occluded"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelMesher.md","moduleTitle":"voxel/VoxelMesher","source":"engine/voxel/VoxelMesher.js","import":"/engine/voxel/VoxelMesher.js","sourceHash":"aa11895ee1323c90446a747c12998fa8c130c1b5d3ecfdb6913a8dcf5c980cea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelMesher.js#0003:getViewCullingMask","exportIndex":3,"name":"getViewCullingMask","kind":"function","signature":"getViewCullingMask(cx, cy, cz, cameraPos)","summary":"Get view-dependent face culling mask Skips chunk faces that face away from camera (backface culling at chunk level)"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelMesher.md","moduleTitle":"voxel/VoxelMesher","source":"engine/voxel/VoxelMesher.js","import":"/engine/voxel/VoxelMesher.js","sourceHash":"aa11895ee1323c90446a747c12998fa8c130c1b5d3ecfdb6913a8dcf5c980cea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelMesher.js#0004:meshChunk","exportIndex":4,"name":"meshChunk","kind":"function","signature":"meshChunk(chunk, getNeighborVoxel = null, occludedFaces = 0)","summary":"Generate mesh for a voxel chunk using simple per-face meshing with AO Returns separate meshes for opaque and transparent (water) geometry"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelMesher.md","moduleTitle":"voxel/VoxelMesher","source":"engine/voxel/VoxelMesher.js","import":"/engine/voxel/VoxelMesher.js","sourceHash":"aa11895ee1323c90446a747c12998fa8c130c1b5d3ecfdb6913a8dcf5c980cea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelMesher.js#0005:meshChunkLOD","exportIndex":5,"name":"meshChunkLOD","kind":"function","signature":"meshChunkLOD(chunk, lodLevel = 0, getNeighborVoxel = null, neighborLODs = null)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelMesher.md","moduleTitle":"voxel/VoxelMesher","source":"engine/voxel/VoxelMesher.js","import":"/engine/voxel/VoxelMesher.js","sourceHash":"aa11895ee1323c90446a747c12998fa8c130c1b5d3ecfdb6913a8dcf5c980cea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelMesher.js#0006:meshChunkGreedy","exportIndex":6,"name":"meshChunkGreedy","kind":"function","signature":"meshChunkGreedy(chunk, getNeighborVoxel = null)","summary":"Generate mesh using greedy meshing (fewer quads, better performance) Note: Currently does not separate water - falls back to simple meshing for chunks with water"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelMesher.md","moduleTitle":"voxel/VoxelMesher","source":"engine/voxel/VoxelMesher.js","import":"/engine/voxel/VoxelMesher.js","sourceHash":"aa11895ee1323c90446a747c12998fa8c130c1b5d3ecfdb6913a8dcf5c980cea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelMesher.js#0007:createChunkBuffers","exportIndex":7,"name":"createChunkBuffers","kind":"function","signature":"createChunkBuffers(device, chunk, meshData)","summary":"Create GPU buffers for chunk mesh (both opaque and water)"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelMesher.md","moduleTitle":"voxel/VoxelMesher","source":"engine/voxel/VoxelMesher.js","import":"/engine/voxel/VoxelMesher.js","sourceHash":"aa11895ee1323c90446a747c12998fa8c130c1b5d3ecfdb6913a8dcf5c980cea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelMesher.js#0008:meshSubChunk","exportIndex":8,"name":"meshSubChunk","kind":"function","signature":"meshSubChunk(chunk, subSize, sx, sy, sz, getNeighborVoxel = null)","summary":"Mesh a sub-region of a chunk (8³ or 16³) Used for ultra-fast partial updates in cascaded chunk architecture"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelMesher.md","moduleTitle":"voxel/VoxelMesher","source":"engine/voxel/VoxelMesher.js","import":"/engine/voxel/VoxelMesher.js","sourceHash":"aa11895ee1323c90446a747c12998fa8c130c1b5d3ecfdb6913a8dcf5c980cea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelMesher.js#0009:initGPUSubChunkMeshing","exportIndex":9,"name":"initGPUSubChunkMeshing","kind":"function","signature":"async initGPUSubChunkMeshing(device)","summary":"Initialize GPU sub-chunk meshing"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelMesher.md","moduleTitle":"voxel/VoxelMesher","source":"engine/voxel/VoxelMesher.js","import":"/engine/voxel/VoxelMesher.js","sourceHash":"aa11895ee1323c90446a747c12998fa8c130c1b5d3ecfdb6913a8dcf5c980cea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelMesher.js#0010:hasGPUSubChunkMeshing","exportIndex":10,"name":"hasGPUSubChunkMeshing","kind":"function","signature":"hasGPUSubChunkMeshing()","summary":"Check if GPU sub-chunk meshing is available"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelMesher.md","moduleTitle":"voxel/VoxelMesher","source":"engine/voxel/VoxelMesher.js","import":"/engine/voxel/VoxelMesher.js","sourceHash":"aa11895ee1323c90446a747c12998fa8c130c1b5d3ecfdb6913a8dcf5c980cea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelMesher.js#0011:meshSubChunk4GPU","exportIndex":11,"name":"meshSubChunk4GPU","kind":"function","signature":"async meshSubChunk4GPU(chunk, sx, sy, sz)","summary":"Mesh a 4³ sub-chunk on GPU (10× faster than CPU)"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelMesher.md","moduleTitle":"voxel/VoxelMesher","source":"engine/voxel/VoxelMesher.js","import":"/engine/voxel/VoxelMesher.js","sourceHash":"aa11895ee1323c90446a747c12998fa8c130c1b5d3ecfdb6913a8dcf5c980cea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelMesher.js#0012:meshSubChunk8GPU","exportIndex":12,"name":"meshSubChunk8GPU","kind":"function","signature":"async meshSubChunk8GPU(chunk, sx, sy, sz)","summary":"Mesh an 8³ sub-chunk on GPU (10× faster than CPU)"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelMesher.md","moduleTitle":"voxel/VoxelMesher","source":"engine/voxel/VoxelMesher.js","import":"/engine/voxel/VoxelMesher.js","sourceHash":"aa11895ee1323c90446a747c12998fa8c130c1b5d3ecfdb6913a8dcf5c980cea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelMesher.js#0013:releaseGPUSubChunkMesh","exportIndex":13,"name":"releaseGPUSubChunkMesh","kind":"function","signature":"releaseGPUSubChunkMesh(mesh)","summary":"Return GPU sub-chunk output buffers to the engine pool."}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelMesher.md","moduleTitle":"voxel/VoxelMesher","source":"engine/voxel/VoxelMesher.js","import":"/engine/voxel/VoxelMesher.js","sourceHash":"aa11895ee1323c90446a747c12998fa8c130c1b5d3ecfdb6913a8dcf5c980cea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelMesher.js#0014:returnGPUBuffers","exportIndex":14,"name":"returnGPUBuffers","kind":"function","signature":"returnGPUBuffers(vertexBuffer, indexBuffer, indirectBuffer)","summary":"Return GPU buffers to pool for reuse"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelMesher.md","moduleTitle":"voxel/VoxelMesher","source":"engine/voxel/VoxelMesher.js","import":"/engine/voxel/VoxelMesher.js","sourceHash":"aa11895ee1323c90446a747c12998fa8c130c1b5d3ecfdb6913a8dcf5c980cea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelMesher.js#0015:getGPUSubChunkStats","exportIndex":15,"name":"getGPUSubChunkStats","kind":"function","signature":"getGPUSubChunkStats()","summary":"Get GPU sub-chunk meshing statistics"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelMesher.md","moduleTitle":"voxel/VoxelMesher","source":"engine/voxel/VoxelMesher.js","import":"/engine/voxel/VoxelMesher.js","sourceHash":"aa11895ee1323c90446a747c12998fa8c130c1b5d3ecfdb6913a8dcf5c980cea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelMesher.js#0016:getMeshGranularity","exportIndex":16,"name":"getMeshGranularity","kind":"function","signature":"getMeshGranularity(distance, hasRecentModifications = false, modCount = 0)","summary":"Get mesh granularity based on distance from camera (4-Tier System)"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelMesher.md","moduleTitle":"voxel/VoxelMesher","source":"engine/voxel/VoxelMesher.js","import":"/engine/voxel/VoxelMesher.js","sourceHash":"aa11895ee1323c90446a747c12998fa8c130c1b5d3ecfdb6913a8dcf5c980cea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelMesher.js#0017:gpuBufferPool","exportIndex":17,"name":"gpuBufferPool","kind":"constant","signature":"gpuBufferPool","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelMesher.md","moduleTitle":"voxel/VoxelMesher","source":"engine/voxel/VoxelMesher.js","import":"/engine/voxel/VoxelMesher.js","sourceHash":"aa11895ee1323c90446a747c12998fa8c130c1b5d3ecfdb6913a8dcf5c980cea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelMesher.js#0018:VERTEX_STRIDE","exportIndex":18,"name":"VERTEX_STRIDE","kind":"constant","signature":"VERTEX_STRIDE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelMesher.md","moduleTitle":"voxel/VoxelMesher","source":"engine/voxel/VoxelMesher.js","import":"/engine/voxel/VoxelMesher.js","sourceHash":"aa11895ee1323c90446a747c12998fa8c130c1b5d3ecfdb6913a8dcf5c980cea","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelMesher.js#0019:FACE_NORMALS","exportIndex":19,"name":"FACE_NORMALS","kind":"re-export","signature":"FACE_NORMALS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelModifyCompute.md","moduleTitle":"voxel/VoxelModifyCompute","source":"engine/voxel/VoxelModifyCompute.js","import":"/engine/voxel/VoxelModifyCompute.js","sourceHash":"18790fb8c6666575fdfd9619cbb65298ca7cfec6196c8737555a32233f3c6372","subsystem":"engine","recordType":"api-module","id":"module:engine/voxel/VoxelModifyCompute.js","title":"voxel/VoxelModifyCompute","summary":"VoxelModifyCompute.js - GPU Voxel Modification System Now powered by vGPU driver Performs sphere and box removal operations on voxel chunks using compute shaders. Outputs removed voxels for particle spawning.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelModifyCompute.md","moduleTitle":"voxel/VoxelModifyCompute","source":"engine/voxel/VoxelModifyCompute.js","import":"/engine/voxel/VoxelModifyCompute.js","sourceHash":"18790fb8c6666575fdfd9619cbb65298ca7cfec6196c8737555a32233f3c6372","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelModifyCompute.js#0000:VoxelModifyCompute","exportIndex":0,"name":"VoxelModifyCompute","kind":"class","signature":"class VoxelModifyCompute","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelRaycast.md","moduleTitle":"voxel/VoxelRaycast","source":"engine/voxel/VoxelRaycast.js","import":"/engine/voxel/VoxelRaycast.js","sourceHash":"ca5300498c226775d58513ba9e250847f97ebfc7fcf899e8f60bde58fefcabf0","subsystem":"engine","recordType":"api-module","id":"module:engine/voxel/VoxelRaycast.js","title":"voxel/VoxelRaycast","summary":"GPU-accelerated batch voxel raycasting system Use when processing 100+ rays per frame","exportCount":16}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelRaycast.md","moduleTitle":"voxel/VoxelRaycast","source":"engine/voxel/VoxelRaycast.js","import":"/engine/voxel/VoxelRaycast.js","sourceHash":"ca5300498c226775d58513ba9e250847f97ebfc7fcf899e8f60bde58fefcabf0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelRaycast.js#0000:VoxelRaycastGPU","exportIndex":0,"name":"VoxelRaycastGPU","kind":"class","signature":"class VoxelRaycastGPU","summary":"GPU-accelerated batch voxel raycasting system Use when processing 100+ rays per frame"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelRaycast.md","moduleTitle":"voxel/VoxelRaycast","source":"engine/voxel/VoxelRaycast.js","import":"/engine/voxel/VoxelRaycast.js","sourceHash":"ca5300498c226775d58513ba9e250847f97ebfc7fcf899e8f60bde58fefcabf0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelRaycast.js#0001:raycastVoxels","exportIndex":1,"name":"raycastVoxels","kind":"function","signature":"raycastVoxels(origin, direction, getVoxel, options = {})","summary":"Raycast through voxel world using DDA algorithm Returns first solid voxel hit along ray"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelRaycast.md","moduleTitle":"voxel/VoxelRaycast","source":"engine/voxel/VoxelRaycast.js","import":"/engine/voxel/VoxelRaycast.js","sourceHash":"ca5300498c226775d58513ba9e250847f97ebfc7fcf899e8f60bde58fefcabf0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelRaycast.js#0002:hasVoxelLineOfSight","exportIndex":2,"name":"hasVoxelLineOfSight","kind":"function","signature":"hasVoxelLineOfSight(from, to, getVoxel, options = {})","summary":"Check line of sight between two points through voxels Returns true if no solid voxels block the path"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelRaycast.md","moduleTitle":"voxel/VoxelRaycast","source":"engine/voxel/VoxelRaycast.js","import":"/engine/voxel/VoxelRaycast.js","sourceHash":"ca5300498c226775d58513ba9e250847f97ebfc7fcf899e8f60bde58fefcabf0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelRaycast.js#0003:pickBlock","exportIndex":3,"name":"pickBlock","kind":"function","signature":"pickBlock(origin, direction, getVoxel, maxDistance = 10)","summary":"Block picking - raycast from camera with face/placement info Returns both the hit block and the adjacent empty block for placement"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelRaycast.md","moduleTitle":"voxel/VoxelRaycast","source":"engine/voxel/VoxelRaycast.js","import":"/engine/voxel/VoxelRaycast.js","sourceHash":"ca5300498c226775d58513ba9e250847f97ebfc7fcf899e8f60bde58fefcabf0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelRaycast.js#0004:traceVoxelPath","exportIndex":4,"name":"traceVoxelPath","kind":"function","signature":"traceVoxelPath(origin, direction, getVoxel, maxDistance = 50, options = {})","summary":"Trace ray through voxels collecting all intersected voxels Useful for beam weapons, explosion rays, etc."}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelRaycast.md","moduleTitle":"voxel/VoxelRaycast","source":"engine/voxel/VoxelRaycast.js","import":"/engine/voxel/VoxelRaycast.js","sourceHash":"ca5300498c226775d58513ba9e250847f97ebfc7fcf899e8f60bde58fefcabf0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelRaycast.js#0005:createVoxelGetter","exportIndex":5,"name":"createVoxelGetter","kind":"function","signature":"createVoxelGetter(chunkManager)","summary":"Create a voxel getter function from ChunkManager"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelRaycast.md","moduleTitle":"voxel/VoxelRaycast","source":"engine/voxel/VoxelRaycast.js","import":"/engine/voxel/VoxelRaycast.js","sourceHash":"ca5300498c226775d58513ba9e250847f97ebfc7fcf899e8f60bde58fefcabf0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelRaycast.js#0006:hasLineOfSightCombined","exportIndex":6,"name":"hasLineOfSightCombined","kind":"function","signature":"hasLineOfSightCombined(from, to, obstacles, getVoxel, options = {})","summary":"Combined LOS check - uses voxels AND AABB obstacles Drop-in replacement for AIAiming.hasLineOfSight"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelRaycast.md","moduleTitle":"voxel/VoxelRaycast","source":"engine/voxel/VoxelRaycast.js","import":"/engine/voxel/VoxelRaycast.js","sourceHash":"ca5300498c226775d58513ba9e250847f97ebfc7fcf899e8f60bde58fefcabf0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelRaycast.js#0007:computePixelToRayMatrix","exportIndex":7,"name":"computePixelToRayMatrix","kind":"function","signature":"computePixelToRayMatrix(cameraPos, cameraRotation, fovRad, screenWidth, screenHeight)","summary":"Compute a single matrix that transforms screen pixel coords to world-space ray directions. This avoids per-pixel matrix multiplications in shaders. Usage: rayDir = normalize((pixelToRay * vec4(pixelX, pixelY, 1, 1)).xyz - cameraPos)"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelRaycast.md","moduleTitle":"voxel/VoxelRaycast","source":"engine/voxel/VoxelRaycast.js","import":"/engine/voxel/VoxelRaycast.js","sourceHash":"ca5300498c226775d58513ba9e250847f97ebfc7fcf899e8f60bde58fefcabf0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelRaycast.js#0008:screenPixelToRay","exportIndex":8,"name":"screenPixelToRay","kind":"function","signature":"screenPixelToRay(pixelX, pixelY, pixelToRay, cameraPos)","summary":"Generate ray from screen pixel using precomputed pixel-to-ray matrix"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelRaycast.md","moduleTitle":"voxel/VoxelRaycast","source":"engine/voxel/VoxelRaycast.js","import":"/engine/voxel/VoxelRaycast.js","sourceHash":"ca5300498c226775d58513ba9e250847f97ebfc7fcf899e8f60bde58fefcabf0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelRaycast.js#0009:raycastVoxelsDebug","exportIndex":9,"name":"raycastVoxelsDebug","kind":"function","signature":"raycastVoxelsDebug(origin, direction, getVoxel, maxDistance = 100)","summary":"Raycast with step counting for performance debugging"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelRaycast.md","moduleTitle":"voxel/VoxelRaycast","source":"engine/voxel/VoxelRaycast.js","import":"/engine/voxel/VoxelRaycast.js","sourceHash":"ca5300498c226775d58513ba9e250847f97ebfc7fcf899e8f60bde58fefcabf0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelRaycast.js#0010:stepsToHeatColor","exportIndex":10,"name":"stepsToHeatColor","kind":"function","signature":"stepsToHeatColor(steps, maxSteps = 300)","summary":"Convert step count to heat map color (inferno palette)"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelRaycast.md","moduleTitle":"voxel/VoxelRaycast","source":"engine/voxel/VoxelRaycast.js","import":"/engine/voxel/VoxelRaycast.js","sourceHash":"ca5300498c226775d58513ba9e250847f97ebfc7fcf899e8f60bde58fefcabf0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelRaycast.js#0011:triangleVoxelIntersect","exportIndex":11,"name":"triangleVoxelIntersect","kind":"function","signature":"triangleVoxelIntersect(a, b, c, voxelMin, voxelMax)","summary":"Check if a triangle intersects a voxel using separating axis theorem. Based on DeadlockCode's implementation."}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelRaycast.md","moduleTitle":"voxel/VoxelRaycast","source":"engine/voxel/VoxelRaycast.js","import":"/engine/voxel/VoxelRaycast.js","sourceHash":"ca5300498c226775d58513ba9e250847f97ebfc7fcf899e8f60bde58fefcabf0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelRaycast.js#0012:voxelizeMesh","exportIndex":12,"name":"voxelizeMesh","kind":"function","signature":"voxelizeMesh(vertices, triangles, resolution, boundsMin, boundsMax)","summary":"Voxelize a triangle mesh into a voxel grid"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelRaycast.md","moduleTitle":"voxel/VoxelRaycast","source":"engine/voxel/VoxelRaycast.js","import":"/engine/voxel/VoxelRaycast.js","sourceHash":"ca5300498c226775d58513ba9e250847f97ebfc7fcf899e8f60bde58fefcabf0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelRaycast.js#0013:RAYCAST_DEBUG_MODE","exportIndex":13,"name":"RAYCAST_DEBUG_MODE","kind":"constant","signature":"RAYCAST_DEBUG_MODE","summary":"Debug render modes for raycast visualization"}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelRaycast.md","moduleTitle":"voxel/VoxelRaycast","source":"engine/voxel/VoxelRaycast.js","import":"/engine/voxel/VoxelRaycast.js","sourceHash":"ca5300498c226775d58513ba9e250847f97ebfc7fcf899e8f60bde58fefcabf0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelRaycast.js#0014:MAX_RAY_DISTANCE","exportIndex":14,"name":"MAX_RAY_DISTANCE","kind":"re-export","signature":"MAX_RAY_DISTANCE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelRaycast.md","moduleTitle":"voxel/VoxelRaycast","source":"engine/voxel/VoxelRaycast.js","import":"/engine/voxel/VoxelRaycast.js","sourceHash":"ca5300498c226775d58513ba9e250847f97ebfc7fcf899e8f60bde58fefcabf0","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelRaycast.js#0015:VOXEL_RAYCAST_SHADER","exportIndex":15,"name":"VOXEL_RAYCAST_SHADER","kind":"re-export","signature":"VOXEL_RAYCAST_SHADER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelRenderer.md","moduleTitle":"voxel/VoxelRenderer","source":"engine/voxel/VoxelRenderer.js","import":"/engine/voxel/VoxelRenderer.js","sourceHash":"5650772696ae36a6861e3881136b9955054b050e36f83b62261b474baeeebff5","subsystem":"engine","recordType":"api-module","id":"module:engine/voxel/VoxelRenderer.js","title":"voxel/VoxelRenderer","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelRenderer.md","moduleTitle":"voxel/VoxelRenderer","source":"engine/voxel/VoxelRenderer.js","import":"/engine/voxel/VoxelRenderer.js","sourceHash":"5650772696ae36a6861e3881136b9955054b050e36f83b62261b474baeeebff5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelRenderer.js#0000:VoxelRenderer","exportIndex":0,"name":"VoxelRenderer","kind":"class","signature":"class VoxelRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelSdfBrickBridge.md","moduleTitle":"voxel/VoxelSdfBrickBridge","source":"engine/voxel/VoxelSdfBrickBridge.js","import":"/engine/voxel/VoxelSdfBrickBridge.js","sourceHash":"9d7cd33472aba0cce73589dc243c01b5cd32ac126d391c2aee6ad82793c3c1f3","subsystem":"engine","recordType":"api-module","id":"module:engine/voxel/VoxelSdfBrickBridge.js","title":"voxel/VoxelSdfBrickBridge","summary":"Adapter only: voxel storage and dirty-queue ownership remain with the voxel subsystem. Callers pass the dirty entries they already admitted this frame.","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelSdfBrickBridge.md","moduleTitle":"voxel/VoxelSdfBrickBridge","source":"engine/voxel/VoxelSdfBrickBridge.js","import":"/engine/voxel/VoxelSdfBrickBridge.js","sourceHash":"9d7cd33472aba0cce73589dc243c01b5cd32ac126d391c2aee6ad82793c3c1f3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelSdfBrickBridge.js#0000:VoxelSdfBrickBridge","exportIndex":0,"name":"VoxelSdfBrickBridge","kind":"class","signature":"class VoxelSdfBrickBridge","summary":"Adapter only: voxel storage and dirty-queue ownership remain with the voxel subsystem. Callers pass the dirty entries they already admitted this frame."}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelSdfBrickBridge.md","moduleTitle":"voxel/VoxelSdfBrickBridge","source":"engine/voxel/VoxelSdfBrickBridge.js","import":"/engine/voxel/VoxelSdfBrickBridge.js","sourceHash":"9d7cd33472aba0cce73589dc243c01b5cd32ac126d391c2aee6ad82793c3c1f3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelSdfBrickBridge.js#0001:buildVoxelSdfBrickPair","exportIndex":1,"name":"buildVoxelSdfBrickPair","kind":"function","signature":"buildVoxelSdfBrickPair(options = {})","summary":"Convert one voxel chunk plus a one-voxel neighbor apron into independently generated coarse and fine sampled-field pages. The coarse page is an intentionally expanded conservative proxy, so a fine-page miss degrades shape accuracy instead of silently removing occupied geometry."}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelSdfBrickBridge.md","moduleTitle":"voxel/VoxelSdfBrickBridge","source":"engine/voxel/VoxelSdfBrickBridge.js","import":"/engine/voxel/VoxelSdfBrickBridge.js","sourceHash":"9d7cd33472aba0cce73589dc243c01b5cd32ac126d391c2aee6ad82793c3c1f3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelSdfBrickBridge.js#0002:voxelSdfPageToNexel","exportIndex":2,"name":"voxelSdfPageToNexel","kind":"function","signature":"voxelSdfPageToNexel(page, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelSdfBrickBridge.md","moduleTitle":"voxel/VoxelSdfBrickBridge","source":"engine/voxel/VoxelSdfBrickBridge.js","import":"/engine/voxel/VoxelSdfBrickBridge.js","sourceHash":"9d7cd33472aba0cce73589dc243c01b5cd32ac126d391c2aee6ad82793c3c1f3","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelSdfBrickBridge.js#0003:createVoxelSdfBrickBridge","exportIndex":3,"name":"createVoxelSdfBrickBridge","kind":"function","signature":"createVoxelSdfBrickBridge(options)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelShaders.md","moduleTitle":"voxel/VoxelShaders","source":"engine/voxel/VoxelShaders.js","import":"/engine/voxel/VoxelShaders.js","sourceHash":"02850a7dc1c37a9f19d7466e7a9497a18b81df205bd230c3743bfbdd1e43b2cc","subsystem":"engine","recordType":"api-module","id":"module:engine/voxel/VoxelShaders.js","title":"voxel/VoxelShaders","summary":"VoxelShaders.js - WGSL shader strings for VoxelRenderer Extracted from VoxelRenderer.js for modularity","exportCount":17}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelShaders.md","moduleTitle":"voxel/VoxelShaders","source":"engine/voxel/VoxelShaders.js","import":"/engine/voxel/VoxelShaders.js","sourceHash":"02850a7dc1c37a9f19d7466e7a9497a18b81df205bd230c3743bfbdd1e43b2cc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelShaders.js#0000:buildVoxelShaderCompactBase","exportIndex":0,"name":"buildVoxelShaderCompactBase","kind":"function","signature":"buildVoxelShaderCompactBase(VOXEL_SHADER)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelShaders.md","moduleTitle":"voxel/VoxelShaders","source":"engine/voxel/VoxelShaders.js","import":"/engine/voxel/VoxelShaders.js","sourceHash":"02850a7dc1c37a9f19d7466e7a9497a18b81df205bd230c3743bfbdd1e43b2cc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelShaders.js#0001:buildVoxelShaderCompactOpaque","exportIndex":1,"name":"buildVoxelShaderCompactOpaque","kind":"function","signature":"buildVoxelShaderCompactOpaque(compactBase)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelShaders.md","moduleTitle":"voxel/VoxelShaders","source":"engine/voxel/VoxelShaders.js","import":"/engine/voxel/VoxelShaders.js","sourceHash":"02850a7dc1c37a9f19d7466e7a9497a18b81df205bd230c3743bfbdd1e43b2cc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelShaders.js#0002:buildVoxelShaderCompactWater","exportIndex":2,"name":"buildVoxelShaderCompactWater","kind":"function","signature":"buildVoxelShaderCompactWater(compactBase)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelShaders.md","moduleTitle":"voxel/VoxelShaders","source":"engine/voxel/VoxelShaders.js","import":"/engine/voxel/VoxelShaders.js","sourceHash":"02850a7dc1c37a9f19d7466e7a9497a18b81df205bd230c3743bfbdd1e43b2cc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelShaders.js#0003:buildShadowShaderCompact","exportIndex":3,"name":"buildShadowShaderCompact","kind":"function","signature":"buildShadowShaderCompact()","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelShaders.md","moduleTitle":"voxel/VoxelShaders","source":"engine/voxel/VoxelShaders.js","import":"/engine/voxel/VoxelShaders.js","sourceHash":"02850a7dc1c37a9f19d7466e7a9497a18b81df205bd230c3743bfbdd1e43b2cc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelShaders.js#0004:SHADOW_MAP_SIZE","exportIndex":4,"name":"SHADOW_MAP_SIZE","kind":"constant","signature":"SHADOW_MAP_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelShaders.md","moduleTitle":"voxel/VoxelShaders","source":"engine/voxel/VoxelShaders.js","import":"/engine/voxel/VoxelShaders.js","sourceHash":"02850a7dc1c37a9f19d7466e7a9497a18b81df205bd230c3743bfbdd1e43b2cc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelShaders.js#0005:FRAME_UNIFORMS_STRUCT","exportIndex":5,"name":"FRAME_UNIFORMS_STRUCT","kind":"constant","signature":"FRAME_UNIFORMS_STRUCT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelShaders.md","moduleTitle":"voxel/VoxelShaders","source":"engine/voxel/VoxelShaders.js","import":"/engine/voxel/VoxelShaders.js","sourceHash":"02850a7dc1c37a9f19d7466e7a9497a18b81df205bd230c3743bfbdd1e43b2cc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelShaders.js#0006:FRAME_UNIFORMS_SIZE","exportIndex":6,"name":"FRAME_UNIFORMS_SIZE","kind":"constant","signature":"FRAME_UNIFORMS_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelShaders.md","moduleTitle":"voxel/VoxelShaders","source":"engine/voxel/VoxelShaders.js","import":"/engine/voxel/VoxelShaders.js","sourceHash":"02850a7dc1c37a9f19d7466e7a9497a18b81df205bd230c3743bfbdd1e43b2cc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelShaders.js#0007:FRAME_UNIFORMS_FLOATS","exportIndex":7,"name":"FRAME_UNIFORMS_FLOATS","kind":"constant","signature":"FRAME_UNIFORMS_FLOATS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelShaders.md","moduleTitle":"voxel/VoxelShaders","source":"engine/voxel/VoxelShaders.js","import":"/engine/voxel/VoxelShaders.js","sourceHash":"02850a7dc1c37a9f19d7466e7a9497a18b81df205bd230c3743bfbdd1e43b2cc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelShaders.js#0008:FACE_PULL_MESHLET_SHADER","exportIndex":8,"name":"FACE_PULL_MESHLET_SHADER","kind":"constant","signature":"FACE_PULL_MESHLET_SHADER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelShaders.md","moduleTitle":"voxel/VoxelShaders","source":"engine/voxel/VoxelShaders.js","import":"/engine/voxel/VoxelShaders.js","sourceHash":"02850a7dc1c37a9f19d7466e7a9497a18b81df205bd230c3743bfbdd1e43b2cc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelShaders.js#0009:FACE_PULL_SHADER","exportIndex":9,"name":"FACE_PULL_SHADER","kind":"constant","signature":"FACE_PULL_SHADER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelShaders.md","moduleTitle":"voxel/VoxelShaders","source":"engine/voxel/VoxelShaders.js","import":"/engine/voxel/VoxelShaders.js","sourceHash":"02850a7dc1c37a9f19d7466e7a9497a18b81df205bd230c3743bfbdd1e43b2cc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelShaders.js#0010:FACE_PULL_SHADOW_SHADER","exportIndex":10,"name":"FACE_PULL_SHADOW_SHADER","kind":"constant","signature":"FACE_PULL_SHADOW_SHADER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelShaders.md","moduleTitle":"voxel/VoxelShaders","source":"engine/voxel/VoxelShaders.js","import":"/engine/voxel/VoxelShaders.js","sourceHash":"02850a7dc1c37a9f19d7466e7a9497a18b81df205bd230c3743bfbdd1e43b2cc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelShaders.js#0011:SHADOW_SHADER","exportIndex":11,"name":"SHADOW_SHADER","kind":"constant","signature":"SHADOW_SHADER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelShaders.md","moduleTitle":"voxel/VoxelShaders","source":"engine/voxel/VoxelShaders.js","import":"/engine/voxel/VoxelShaders.js","sourceHash":"02850a7dc1c37a9f19d7466e7a9497a18b81df205bd230c3743bfbdd1e43b2cc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelShaders.js#0012:VOXEL_SHADER","exportIndex":12,"name":"VOXEL_SHADER","kind":"constant","signature":"VOXEL_SHADER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelShaders.md","moduleTitle":"voxel/VoxelShaders","source":"engine/voxel/VoxelShaders.js","import":"/engine/voxel/VoxelShaders.js","sourceHash":"02850a7dc1c37a9f19d7466e7a9497a18b81df205bd230c3743bfbdd1e43b2cc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelShaders.js#0013:VOXEL_SHADER_COMPACT_BASE","exportIndex":13,"name":"VOXEL_SHADER_COMPACT_BASE","kind":"constant","signature":"VOXEL_SHADER_COMPACT_BASE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelShaders.md","moduleTitle":"voxel/VoxelShaders","source":"engine/voxel/VoxelShaders.js","import":"/engine/voxel/VoxelShaders.js","sourceHash":"02850a7dc1c37a9f19d7466e7a9497a18b81df205bd230c3743bfbdd1e43b2cc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelShaders.js#0014:VOXEL_SHADER_COMPACT_OPAQUE","exportIndex":14,"name":"VOXEL_SHADER_COMPACT_OPAQUE","kind":"constant","signature":"VOXEL_SHADER_COMPACT_OPAQUE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelShaders.md","moduleTitle":"voxel/VoxelShaders","source":"engine/voxel/VoxelShaders.js","import":"/engine/voxel/VoxelShaders.js","sourceHash":"02850a7dc1c37a9f19d7466e7a9497a18b81df205bd230c3743bfbdd1e43b2cc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelShaders.js#0015:VOXEL_SHADER_COMPACT_WATER","exportIndex":15,"name":"VOXEL_SHADER_COMPACT_WATER","kind":"constant","signature":"VOXEL_SHADER_COMPACT_WATER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/VoxelShaders.md","moduleTitle":"voxel/VoxelShaders","source":"engine/voxel/VoxelShaders.js","import":"/engine/voxel/VoxelShaders.js","sourceHash":"02850a7dc1c37a9f19d7466e7a9497a18b81df205bd230c3743bfbdd1e43b2cc","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/VoxelShaders.js#0016:SHADOW_SHADER_COMPACT","exportIndex":16,"name":"SHADOW_SHADER_COMPACT","kind":"constant","signature":"SHADOW_SHADER_COMPACT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-module","id":"module:engine/voxel/index.js","title":"voxel/index","summary":"engine/voxel/index.js - Voxel System Barrel Export Core voxel functionality. Other systems have been moved to: - engine/render/passes/ - Post-processing passes - engine/render/atmosphere/ - Sky and atmospheric rendering - engine/world/ - World generation, streaming, storage, time - engine/sim/physics/ - Physics systems - engine/sim/fluids/ - Fluid simulation - engine/core/gpu/ - GPU utilities - engine/core/math/ - Math utilities - engine/core/memory/ - Memory management - engine/core/profiler/ - Profiling - engine/game/ - Gameplay systems","exportCount":340}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0000:AERIAL_PERSPECTIVE_WGSL","exportIndex":0,"name":"AERIAL_PERSPECTIVE_WGSL","kind":"re-export","signature":"AERIAL_PERSPECTIVE_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0001:AMBIGUOUS_FACES","exportIndex":1,"name":"AMBIGUOUS_FACES","kind":"re-export","signature":"AMBIGUOUS_FACES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0002:ATMOSPHERIC_SCATTERING_WGSL","exportIndex":2,"name":"ATMOSPHERIC_SCATTERING_WGSL","kind":"re-export","signature":"ATMOSPHERIC_SCATTERING_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0003:AdaptiveChunkBudget","exportIndex":3,"name":"AdaptiveChunkBudget","kind":"re-export","signature":"AdaptiveChunkBudget","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0004:AerialPerspectiveSystem","exportIndex":4,"name":"AerialPerspectiveSystem","kind":"re-export","signature":"AerialPerspectiveSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0005:AreaResamplePass","exportIndex":5,"name":"AreaResamplePass","kind":"re-export","signature":"AreaResamplePass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0006:AtmosphericScatteringSystem","exportIndex":6,"name":"AtmosphericScatteringSystem","kind":"re-export","signature":"AtmosphericScatteringSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0007:AutoExposurePass","exportIndex":7,"name":"AutoExposurePass","kind":"re-export","signature":"AutoExposurePass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0008:BIOME","exportIndex":8,"name":"BIOME","kind":"re-export","signature":"BIOME","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0009:BVHBuilder","exportIndex":9,"name":"BVHBuilder","kind":"re-export","signature":"BVHBuilder","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0010:BVHNode","exportIndex":10,"name":"BVHNode","kind":"re-export","signature":"BVHNode","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0011:BVH_TRAVERSAL_WGSL","exportIndex":11,"name":"BVH_TRAVERSAL_WGSL","kind":"re-export","signature":"BVH_TRAVERSAL_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0012:BezierDistanceCompute","exportIndex":12,"name":"BezierDistanceCompute","kind":"re-export","signature":"BezierDistanceCompute","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0013:BinaryReader","exportIndex":13,"name":"BinaryReader","kind":"re-export","signature":"BinaryReader","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0014:BinaryWriter","exportIndex":14,"name":"BinaryWriter","kind":"re-export","signature":"BinaryWriter","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0015:BloomFilter","exportIndex":15,"name":"BloomFilter","kind":"re-export","signature":"BloomFilter","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0016:BloomPass","exportIndex":16,"name":"BloomPass","kind":"re-export","signature":"BloomPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0017:CANONICAL_ROTATION","exportIndex":17,"name":"CANONICAL_ROTATION","kind":"re-export","signature":"CANONICAL_ROTATION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0018:CHUNK_SIZE","exportIndex":18,"name":"CHUNK_SIZE","kind":"re-export","signature":"CHUNK_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0019:CHUNK_SIZE_SQ","exportIndex":19,"name":"CHUNK_SIZE_SQ","kind":"re-export","signature":"CHUNK_SIZE_SQ","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0020:CHUNK_VOLUME","exportIndex":20,"name":"CHUNK_VOLUME","kind":"re-export","signature":"CHUNK_VOLUME","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0021:CUBE_FACES","exportIndex":21,"name":"CUBE_FACES","kind":"re-export","signature":"CUBE_FACES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0022:CascadeMetrics","exportIndex":22,"name":"CascadeMetrics","kind":"re-export","signature":"CascadeMetrics","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0023:CascadedShadowMap","exportIndex":23,"name":"CascadedShadowMap","kind":"re-export","signature":"CascadedShadowMap","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0024:CascadedShadowMapper","exportIndex":24,"name":"CascadedShadowMapper","kind":"re-export","signature":"CascadedShadowMapper","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0025:CelestialBodiesWGSL","exportIndex":25,"name":"CelestialBodiesWGSL","kind":"re-export","signature":"CelestialBodiesWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0026:ChromaticAberrationPass","exportIndex":26,"name":"ChromaticAberrationPass","kind":"re-export","signature":"ChromaticAberrationPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0027:ChunkBufferPool","exportIndex":27,"name":"ChunkBufferPool","kind":"re-export","signature":"ChunkBufferPool","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0028:ChunkCompressor","exportIndex":28,"name":"ChunkCompressor","kind":"re-export","signature":"ChunkCompressor","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0029:ChunkCullCompute","exportIndex":29,"name":"ChunkCullCompute","kind":"re-export","signature":"ChunkCullCompute","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0030:ChunkHistory","exportIndex":30,"name":"ChunkHistory","kind":"re-export","signature":"ChunkHistory","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0031:ChunkJobCoordinator","exportIndex":31,"name":"ChunkJobCoordinator","kind":"re-export","signature":"ChunkJobCoordinator","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0032:ChunkLoadingZone","exportIndex":32,"name":"ChunkLoadingZone","kind":"re-export","signature":"ChunkLoadingZone","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0033:ChunkNeighborCache","exportIndex":33,"name":"ChunkNeighborCache","kind":"re-export","signature":"ChunkNeighborCache","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0034:ChunkNetworking","exportIndex":34,"name":"ChunkNetworking","kind":"re-export","signature":"ChunkNetworking","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0035:ChunkPersistence","exportIndex":35,"name":"ChunkPersistence","kind":"re-export","signature":"ChunkPersistence","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0036:ChunkRegistry","exportIndex":36,"name":"ChunkRegistry","kind":"re-export","signature":"ChunkRegistry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0037:ChunkSeamSystem","exportIndex":37,"name":"ChunkSeamSystem","kind":"re-export","signature":"ChunkSeamSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0038:ChunkSorter","exportIndex":38,"name":"ChunkSorter","kind":"re-export","signature":"ChunkSorter","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0039:ChunkState","exportIndex":39,"name":"ChunkState","kind":"re-export","signature":"ChunkState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0040:ChunkStatus","exportIndex":40,"name":"ChunkStatus","kind":"re-export","signature":"ChunkStatus","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0041:ChunkStreamer","exportIndex":41,"name":"ChunkStreamer","kind":"re-export","signature":"ChunkStreamer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0042:ChunkStreaming","exportIndex":42,"name":"ChunkStreaming","kind":"re-export","signature":"ChunkStreaming","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0043:ChunkStreamingCompute","exportIndex":43,"name":"ChunkStreamingCompute","kind":"re-export","signature":"ChunkStreamingCompute","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0044:ChunkUpdater","exportIndex":44,"name":"ChunkUpdater","kind":"re-export","signature":"ChunkUpdater","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0045:ChunkWorkerPool","exportIndex":45,"name":"ChunkWorkerPool","kind":"re-export","signature":"ChunkWorkerPool","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0046:ColorGradingPass","exportIndex":46,"name":"ColorGradingPass","kind":"re-export","signature":"ColorGradingPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0047:ColoredLightingSystem","exportIndex":47,"name":"ColoredLightingSystem","kind":"re-export","signature":"ColoredLightingSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0048:CompressedChunk","exportIndex":48,"name":"CompressedChunk","kind":"re-export","signature":"CompressedChunk","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0049:Constellations","exportIndex":49,"name":"Constellations","kind":"re-export","signature":"Constellations","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0050:ContactShadowsPass","exportIndex":50,"name":"ContactShadowsPass","kind":"re-export","signature":"ContactShadowsPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0051:DEFAULT_BLEND_RADIUS","exportIndex":51,"name":"DEFAULT_BLEND_RADIUS","kind":"re-export","signature":"DEFAULT_BLEND_RADIUS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0052:DEFAULT_BUDGETS","exportIndex":52,"name":"DEFAULT_BUDGETS","kind":"re-export","signature":"DEFAULT_BUDGETS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0053:DEFAULT_RESOLUTION","exportIndex":53,"name":"DEFAULT_RESOLUTION","kind":"re-export","signature":"DEFAULT_RESOLUTION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0054:DEPTH_TIERS","exportIndex":54,"name":"DEPTH_TIERS","kind":"re-export","signature":"DEPTH_TIERS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0055:DepthOfFieldPass","exportIndex":55,"name":"DepthOfFieldPass","kind":"re-export","signature":"DepthOfFieldPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0056:DirtyChunkEntry","exportIndex":56,"name":"DirtyChunkEntry","kind":"re-export","signature":"DirtyChunkEntry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0057:DirtyChunkManager","exportIndex":57,"name":"DirtyChunkManager","kind":"re-export","signature":"DirtyChunkManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0058:DiskMeshCache","exportIndex":58,"name":"DiskMeshCache","kind":"re-export","signature":"DiskMeshCache","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0059:DistanceFogSystem","exportIndex":59,"name":"DistanceFogSystem","kind":"re-export","signature":"DistanceFogSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0060:DualModeRenderer","exportIndex":60,"name":"DualModeRenderer","kind":"re-export","signature":"DualModeRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0061:DualRNG","exportIndex":61,"name":"DualRNG","kind":"re-export","signature":"DualRNG","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0062:EPSILON","exportIndex":62,"name":"EPSILON","kind":"re-export","signature":"EPSILON","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0063:FACE_NAMES","exportIndex":63,"name":"FACE_NAMES","kind":"re-export","signature":"FACE_NAMES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0064:FACE_NORMALS","exportIndex":64,"name":"FACE_NORMALS","kind":"re-export","signature":"FACE_NORMALS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0065:FACE_PULL_SHADER_BASE","exportIndex":65,"name":"FACE_PULL_SHADER_BASE","kind":"re-export","signature":"FACE_PULL_SHADER_BASE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0066:FDTDSolver","exportIndex":66,"name":"FDTDSolver","kind":"re-export","signature":"FDTDSolver","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0067:FOG_TYPE","exportIndex":67,"name":"FOG_TYPE","kind":"re-export","signature":"FOG_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0068:FOG_WGSL","exportIndex":68,"name":"FOG_WGSL","kind":"re-export","signature":"FOG_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0069:FXAAPass","exportIndex":69,"name":"FXAAPass","kind":"re-export","signature":"FXAAPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0070:FaceListMesher","exportIndex":70,"name":"FaceListMesher","kind":"re-export","signature":"FaceListMesher","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0071:FilmGrainPass","exportIndex":71,"name":"FilmGrainPass","kind":"re-export","signature":"FilmGrainPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0072:FluidSimulator","exportIndex":72,"name":"FluidSimulator","kind":"re-export","signature":"FluidSimulator","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0073:FrameBudgetManager","exportIndex":73,"name":"FrameBudgetManager","kind":"re-export","signature":"FrameBudgetManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0074:GOD_RAYS_WGSL","exportIndex":74,"name":"GOD_RAYS_WGSL","kind":"re-export","signature":"GOD_RAYS_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0075:GPUBufferPool","exportIndex":75,"name":"GPUBufferPool","kind":"re-export","signature":"GPUBufferPool","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0076:GPULineVoxelizer","exportIndex":76,"name":"GPULineVoxelizer","kind":"re-export","signature":"GPULineVoxelizer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0077:GPUWorldGenerator","exportIndex":77,"name":"GPUWorldGenerator","kind":"re-export","signature":"GPUWorldGenerator","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0078:GenerationPhase","exportIndex":78,"name":"GenerationPhase","kind":"re-export","signature":"GenerationPhase","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0079:GeometryDirtyTracker","exportIndex":79,"name":"GeometryDirtyTracker","kind":"re-export","signature":"GeometryDirtyTracker","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0080:GodRays","exportIndex":80,"name":"GodRays","kind":"re-export","signature":"GodRays","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0081:HDRPipeline","exportIndex":81,"name":"HDRPipeline","kind":"re-export","signature":"HDRPipeline","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0082:HDR_PIPELINE_WGSL","exportIndex":82,"name":"HDR_PIPELINE_WGSL","kind":"re-export","signature":"HDR_PIPELINE_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0083:HiZPass","exportIndex":83,"name":"HiZPass","kind":"re-export","signature":"HiZPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0084:HistoryManager","exportIndex":84,"name":"HistoryManager","kind":"re-export","signature":"HistoryManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0085:HybridChunkCompressor","exportIndex":85,"name":"HybridChunkCompressor","kind":"re-export","signature":"HybridChunkCompressor","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0086:HybridConnectivity","exportIndex":86,"name":"HybridConnectivity","kind":"re-export","signature":"HybridConnectivity","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0087:HydraulicErosion","exportIndex":87,"name":"HydraulicErosion","kind":"re-export","signature":"HydraulicErosion","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0088:INF_T","exportIndex":88,"name":"INF_T","kind":"re-export","signature":"INF_T","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0089:JOB_SOURCE","exportIndex":89,"name":"JOB_SOURCE","kind":"re-export","signature":"JOB_SOURCE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0090:JOB_STATE","exportIndex":90,"name":"JOB_STATE","kind":"re-export","signature":"JOB_STATE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0091:LOAD_PATTERN","exportIndex":91,"name":"LOAD_PATTERN","kind":"re-export","signature":"LOAD_PATTERN","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0092:LayerMap","exportIndex":92,"name":"LayerMap","kind":"re-export","signature":"LayerMap","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0093:LensFlarePass","exportIndex":93,"name":"LensFlarePass","kind":"re-export","signature":"LensFlarePass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0094:LightingDirtyTracker","exportIndex":94,"name":"LightingDirtyTracker","kind":"re-export","signature":"LightingDirtyTracker","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0095:LineMaterials","exportIndex":95,"name":"LineMaterials","kind":"re-export","signature":"LineMaterials","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0096:LineNetwork","exportIndex":96,"name":"LineNetwork","kind":"re-export","signature":"LineNetwork","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0097:LineToVoxelizer","exportIndex":97,"name":"LineToVoxelizer","kind":"re-export","signature":"LineToVoxelizer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0098:LoadRequestRingBuffer","exportIndex":98,"name":"LoadRequestRingBuffer","kind":"re-export","signature":"LoadRequestRingBuffer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0099:MATERIAL","exportIndex":99,"name":"MATERIAL","kind":"re-export","signature":"MATERIAL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0100:MATERIAL_BLEND_SHADER","exportIndex":100,"name":"MATERIAL_BLEND_SHADER","kind":"re-export","signature":"MATERIAL_BLEND_SHADER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0101:MATERIAL_COLORS","exportIndex":101,"name":"MATERIAL_COLORS","kind":"re-export","signature":"MATERIAL_COLORS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0102:MATERIAL_COLORS_NORMALIZED","exportIndex":102,"name":"MATERIAL_COLORS_NORMALIZED","kind":"re-export","signature":"MATERIAL_COLORS_NORMALIZED","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0103:MATERIAL_COUNT","exportIndex":103,"name":"MATERIAL_COUNT","kind":"re-export","signature":"MATERIAL_COUNT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0104:MATERIAL_DEFINITIONS","exportIndex":104,"name":"MATERIAL_DEFINITIONS","kind":"re-export","signature":"MATERIAL_DEFINITIONS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0105:MATERIAL_IDS","exportIndex":105,"name":"MATERIAL_IDS","kind":"re-export","signature":"MATERIAL_IDS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0106:MATERIAL_NAMES","exportIndex":106,"name":"MATERIAL_NAMES","kind":"re-export","signature":"MATERIAL_NAMES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0107:MATERIAL_PROPERTIES","exportIndex":107,"name":"MATERIAL_PROPERTIES","kind":"re-export","signature":"MATERIAL_PROPERTIES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0108:MAX_DIRTY_PER_FRAME","exportIndex":108,"name":"MAX_DIRTY_PER_FRAME","kind":"re-export","signature":"MAX_DIRTY_PER_FRAME","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0109:MAX_RAY_DISTANCE","exportIndex":109,"name":"MAX_RAY_DISTANCE","kind":"re-export","signature":"MAX_RAY_DISTANCE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0110:MC33_CASE","exportIndex":110,"name":"MC33_CASE","kind":"re-export","signature":"MC33_CASE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0111:MC33_SUBCASE_COUNT","exportIndex":111,"name":"MC33_SUBCASE_COUNT","kind":"re-export","signature":"MC33_SUBCASE_COUNT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0112:MC33_TRI_TABLE","exportIndex":112,"name":"MC33_TRI_TABLE","kind":"re-export","signature":"MC33_TRI_TABLE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0113:MESH_MODE","exportIndex":113,"name":"MESH_MODE","kind":"re-export","signature":"MESH_MODE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0114:MappedBufferRing","exportIndex":114,"name":"MappedBufferRing","kind":"re-export","signature":"MappedBufferRing","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0115:MarchingCubesMesher","exportIndex":115,"name":"MarchingCubesMesher","kind":"re-export","signature":"MarchingCubesMesher","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0116:MinimapRenderer","exportIndex":116,"name":"MinimapRenderer","kind":"re-export","signature":"MinimapRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0117:Moon","exportIndex":117,"name":"Moon","kind":"re-export","signature":"Moon","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0118:MoonDefaults","exportIndex":118,"name":"MoonDefaults","kind":"re-export","signature":"MoonDefaults","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0119:MoonPresets","exportIndex":119,"name":"MoonPresets","kind":"re-export","signature":"MoonPresets","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0120:MoonSystem","exportIndex":120,"name":"MoonSystem","kind":"re-export","signature":"MoonSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0121:MoonType","exportIndex":121,"name":"MoonType","kind":"re-export","signature":"MoonType","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0122:MoonWGSL","exportIndex":122,"name":"MoonWGSL","kind":"re-export","signature":"MoonWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0123:MotionBlurPass","exportIndex":123,"name":"MotionBlurPass","kind":"re-export","signature":"MotionBlurPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0124:MovementPredictor","exportIndex":124,"name":"MovementPredictor","kind":"re-export","signature":"MovementPredictor","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0125:NEIGHBOR_DIR","exportIndex":125,"name":"NEIGHBOR_DIR","kind":"re-export","signature":"NEIGHBOR_DIR","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0126:NeighborCacheManager","exportIndex":126,"name":"NeighborCacheManager","kind":"re-export","signature":"NeighborCacheManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0127:NetworkEdge","exportIndex":127,"name":"NetworkEdge","kind":"re-export","signature":"NetworkEdge","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0128:NetworkNode","exportIndex":128,"name":"NetworkNode","kind":"re-export","signature":"NetworkNode","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0129:ObjectPool","exportIndex":129,"name":"ObjectPool","kind":"re-export","signature":"ObjectPool","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0130:OutlinePass","exportIndex":130,"name":"OutlinePass","kind":"re-export","signature":"OutlinePass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0131:PLANET_CURVATURE_WGSL","exportIndex":131,"name":"PLANET_CURVATURE_WGSL","kind":"re-export","signature":"PLANET_CURVATURE_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0132:PRIORITY_BUCKET","exportIndex":132,"name":"PRIORITY_BUCKET","kind":"re-export","signature":"PRIORITY_BUCKET","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0133:PROCEDURAL_SKY_WGSL","exportIndex":133,"name":"PROCEDURAL_SKY_WGSL","kind":"re-export","signature":"PROCEDURAL_SKY_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0134:PaniniProjectionPass","exportIndex":134,"name":"PaniniProjectionPass","kind":"re-export","signature":"PaniniProjectionPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0135:PerformanceOptimizer","exportIndex":135,"name":"PerformanceOptimizer","kind":"re-export","signature":"PerformanceOptimizer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0136:PhasorRays","exportIndex":136,"name":"PhasorRays","kind":"re-export","signature":"PhasorRays","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0137:PhotonicCrystal","exportIndex":137,"name":"PhotonicCrystal","kind":"re-export","signature":"PhotonicCrystal","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0138:PipelineCache","exportIndex":138,"name":"PipelineCache","kind":"re-export","signature":"PipelineCache","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0139:PlanetCurvatureSystem","exportIndex":139,"name":"PlanetCurvatureSystem","kind":"re-export","signature":"PlanetCurvatureSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0140:PlanetPreviewRenderer","exportIndex":140,"name":"PlanetPreviewRenderer","kind":"re-export","signature":"PlanetPreviewRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0141:PriorityBucketQueue","exportIndex":141,"name":"PriorityBucketQueue","kind":"re-export","signature":"PriorityBucketQueue","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0142:PriorityChunkLoader","exportIndex":142,"name":"PriorityChunkLoader","kind":"re-export","signature":"PriorityChunkLoader","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0143:ProceduralSky","exportIndex":143,"name":"ProceduralSky","kind":"re-export","signature":"ProceduralSky","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0144:ProceduralTreeGenerator","exportIndex":144,"name":"ProceduralTreeGenerator","kind":"re-export","signature":"ProceduralTreeGenerator","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0145:ProgressiveChunkLoader","exportIndex":145,"name":"ProgressiveChunkLoader","kind":"re-export","signature":"ProgressiveChunkLoader","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0146:PurkinjeEffectPass","exportIndex":146,"name":"PurkinjeEffectPass","kind":"re-export","signature":"PurkinjeEffectPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0147:RAYCAST_DEBUG_MODE","exportIndex":147,"name":"RAYCAST_DEBUG_MODE","kind":"re-export","signature":"RAYCAST_DEBUG_MODE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0148:RLEChunkCompressor","exportIndex":148,"name":"RLEChunkCompressor","kind":"re-export","signature":"RLEChunkCompressor","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0149:RegionFile","exportIndex":149,"name":"RegionFile","kind":"re-export","signature":"RegionFile","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0150:RegionManager","exportIndex":150,"name":"RegionManager","kind":"re-export","signature":"RegionManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0151:RenderBundleCache","exportIndex":151,"name":"RenderBundleCache","kind":"re-export","signature":"RenderBundleCache","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0152:SCHEMA_VERSION","exportIndex":152,"name":"SCHEMA_VERSION","kind":"re-export","signature":"SCHEMA_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0153:SDF_RAYMARCH_SHADER","exportIndex":153,"name":"SDF_RAYMARCH_SHADER","kind":"re-export","signature":"SDF_RAYMARCH_SHADER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0154:SSAOPass","exportIndex":154,"name":"SSAOPass","kind":"re-export","signature":"SSAOPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0155:SSGIPass","exportIndex":155,"name":"SSGIPass","kind":"re-export","signature":"SSGIPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0156:SSRPass","exportIndex":156,"name":"SSRPass","kind":"re-export","signature":"SSRPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0157:SUBCASE_LOOKUP","exportIndex":157,"name":"SUBCASE_LOOKUP","kind":"re-export","signature":"SUBCASE_LOOKUP","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0158:SUN_PHASE","exportIndex":158,"name":"SUN_PHASE","kind":"re-export","signature":"SUN_PHASE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0159:SharpeningPass","exportIndex":159,"name":"SharpeningPass","kind":"re-export","signature":"SharpeningPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0160:SpaceWGSL","exportIndex":160,"name":"SpaceWGSL","kind":"re-export","signature":"SpaceWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0161:SpatialHash","exportIndex":161,"name":"SpatialHash","kind":"re-export","signature":"SpatialHash","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0162:SpatialHashCompute","exportIndex":162,"name":"SpatialHashCompute","kind":"re-export","signature":"SpatialHashCompute","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0163:StarDefaults","exportIndex":163,"name":"StarDefaults","kind":"re-export","signature":"StarDefaults","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0164:StarField","exportIndex":164,"name":"StarField","kind":"re-export","signature":"StarField","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0165:StarLayer","exportIndex":165,"name":"StarLayer","kind":"re-export","signature":"StarLayer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0166:StarLayerPresets","exportIndex":166,"name":"StarLayerPresets","kind":"re-export","signature":"StarLayerPresets","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0167:StarSystem","exportIndex":167,"name":"StarSystem","kind":"re-export","signature":"StarSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0168:StarsWGSL","exportIndex":168,"name":"StarsWGSL","kind":"re-export","signature":"StarsWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0169:StructureType","exportIndex":169,"name":"StructureType","kind":"re-export","signature":"StructureType","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0170:SubChunkBufferPool","exportIndex":170,"name":"SubChunkBufferPool","kind":"re-export","signature":"SubChunkBufferPool","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0171:SubChunkMeshCompute","exportIndex":171,"name":"SubChunkMeshCompute","kind":"re-export","signature":"SubChunkMeshCompute","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0172:Sun","exportIndex":172,"name":"Sun","kind":"re-export","signature":"Sun","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0173:SunDefaults","exportIndex":173,"name":"SunDefaults","kind":"re-export","signature":"SunDefaults","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0174:SunWGSL","exportIndex":174,"name":"SunWGSL","kind":"re-export","signature":"SunWGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0175:TAAPass","exportIndex":175,"name":"TAAPass","kind":"re-export","signature":"TAAPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0176:TONEMAP_OPERATOR","exportIndex":176,"name":"TONEMAP_OPERATOR","kind":"re-export","signature":"TONEMAP_OPERATOR","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0177:TRIPLANAR_SHADER","exportIndex":177,"name":"TRIPLANAR_SHADER","kind":"re-export","signature":"TRIPLANAR_SHADER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0178:TectonicSimulation","exportIndex":178,"name":"TectonicSimulation","kind":"re-export","signature":"TectonicSimulation","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0179:TextureArrayManager","exportIndex":179,"name":"TextureArrayManager","kind":"re-export","signature":"TextureArrayManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0180:ThermalErosion","exportIndex":180,"name":"ThermalErosion","kind":"re-export","signature":"ThermalErosion","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0181:UnderwaterPass","exportIndex":181,"name":"UnderwaterPass","kind":"re-export","signature":"UnderwaterPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0182:UnifiedTerrainPipeline","exportIndex":182,"name":"UnifiedTerrainPipeline","kind":"re-export","signature":"UnifiedTerrainPipeline","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0183:UniformBufferRing","exportIndex":183,"name":"UniformBufferRing","kind":"re-export","signature":"UniformBufferRing","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0184:UnionFind","exportIndex":184,"name":"UnionFind","kind":"re-export","signature":"UnionFind","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0185:VERTEX_STRIDE","exportIndex":185,"name":"VERTEX_STRIDE","kind":"re-export","signature":"VERTEX_STRIDE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0186:VOLUMETRIC_PARAMS","exportIndex":186,"name":"VOLUMETRIC_PARAMS","kind":"re-export","signature":"VOLUMETRIC_PARAMS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0187:VOXEL_AO_WGSL","exportIndex":187,"name":"VOXEL_AO_WGSL","kind":"re-export","signature":"VOXEL_AO_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0188:VOXEL_RAYCAST_SHADER","exportIndex":188,"name":"VOXEL_RAYCAST_SHADER","kind":"re-export","signature":"VOXEL_RAYCAST_SHADER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0189:VertexPool","exportIndex":189,"name":"VertexPool","kind":"re-export","signature":"VertexPool","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0190:VignettePass","exportIndex":190,"name":"VignettePass","kind":"re-export","signature":"VignettePass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0191:VolumetricCloudsPass","exportIndex":191,"name":"VolumetricCloudsPass","kind":"re-export","signature":"VolumetricCloudsPass","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0192:VolumetricRaymarcher","exportIndex":192,"name":"VolumetricRaymarcher","kind":"re-export","signature":"VolumetricRaymarcher","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0193:VolumetricRenderMode","exportIndex":193,"name":"VolumetricRenderMode","kind":"re-export","signature":"VolumetricRenderMode","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0194:VoronoiTextureBlend","exportIndex":194,"name":"VoronoiTextureBlend","kind":"re-export","signature":"VoronoiTextureBlend","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0195:VoxelAOCalculator","exportIndex":195,"name":"VoxelAOCalculator","kind":"re-export","signature":"VoxelAOCalculator","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0196:VoxelMeshCompute","exportIndex":196,"name":"VoxelMeshCompute","kind":"re-export","signature":"VoxelMeshCompute","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0197:VoxelMesher","exportIndex":197,"name":"VoxelMesher","kind":"re-export","signature":"VoxelMesher","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0198:VoxelModifyCompute","exportIndex":198,"name":"VoxelModifyCompute","kind":"re-export","signature":"VoxelModifyCompute","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0199:VoxelRaycastGPU","exportIndex":199,"name":"VoxelRaycastGPU","kind":"re-export","signature":"VoxelRaycastGPU","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0200:VoxelRenderer","exportIndex":200,"name":"VoxelRenderer","kind":"re-export","signature":"VoxelRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0201:VoxelSdfBrickBridge","exportIndex":201,"name":"VoxelSdfBrickBridge","kind":"re-export","signature":"VoxelSdfBrickBridge","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0202:VoxelUnionFind","exportIndex":202,"name":"VoxelUnionFind","kind":"re-export","signature":"VoxelUnionFind","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0203:WindErosion","exportIndex":203,"name":"WindErosion","kind":"re-export","signature":"WindErosion","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0204:WindSimulation","exportIndex":204,"name":"WindSimulation","kind":"re-export","signature":"WindSimulation","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0205:WindSystem","exportIndex":205,"name":"WindSystem","kind":"re-export","signature":"WindSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0206:World3DPreviewRenderer","exportIndex":206,"name":"World3DPreviewRenderer","kind":"re-export","signature":"World3DPreviewRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0207:WorldGenerator","exportIndex":207,"name":"WorldGenerator","kind":"re-export","signature":"WorldGenerator","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0208:WorldMapGenerator","exportIndex":208,"name":"WorldMapGenerator","kind":"re-export","signature":"WorldMapGenerator","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0209:WorldParticleRenderer","exportIndex":209,"name":"WorldParticleRenderer","kind":"re-export","signature":"WorldParticleRenderer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0210:WorldStorage","exportIndex":210,"name":"WorldStorage","kind":"re-export","signature":"WorldStorage","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0211:ZONE_STATE","exportIndex":211,"name":"ZONE_STATE","kind":"re-export","signature":"ZONE_STATE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0212:appendTrailer","exportIndex":212,"name":"appendTrailer","kind":"re-export","signature":"appendTrailer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0213:applyDelta","exportIndex":213,"name":"applyDelta","kind":"re-export","signature":"applyDelta","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0214:asymptoticDecider","exportIndex":214,"name":"asymptoticDecider","kind":"re-export","signature":"asymptoticDecider","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0215:bezierClosestNewton","exportIndex":215,"name":"bezierClosestNewton","kind":"re-export","signature":"bezierClosestNewton","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0216:bezierDistanceBatch","exportIndex":216,"name":"bezierDistanceBatch","kind":"re-export","signature":"bezierDistanceBatch","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0217:bezierDistanceCapsule","exportIndex":217,"name":"bezierDistanceCapsule","kind":"re-export","signature":"bezierDistanceCapsule","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0218:bezierDistanceHybrid","exportIndex":218,"name":"bezierDistanceHybrid","kind":"re-export","signature":"bezierDistanceHybrid","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0219:buildVoxelSdfBrickPair","exportIndex":219,"name":"buildVoxelSdfBrickPair","kind":"re-export","signature":"buildVoxelSdfBrickPair","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0220:calculateFaceAO","exportIndex":220,"name":"calculateFaceAO","kind":"re-export","signature":"calculateFaceAO","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0221:calculateGradientAO","exportIndex":221,"name":"calculateGradientAO","kind":"re-export","signature":"calculateGradientAO","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0222:calculateVertexAO","exportIndex":222,"name":"calculateVertexAO","kind":"re-export","signature":"calculateVertexAO","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0223:calculateWorldSpaceAO","exportIndex":223,"name":"calculateWorldSpaceAO","kind":"re-export","signature":"calculateWorldSpaceAO","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0224:capsuleClosestT","exportIndex":224,"name":"capsuleClosestT","kind":"re-export","signature":"capsuleClosestT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0225:chunkKey","exportIndex":225,"name":"chunkKey","kind":"re-export","signature":"chunkKey","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0226:compressChunk","exportIndex":226,"name":"compressChunk","kind":"re-export","signature":"compressChunk","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0227:computePixelToRayMatrix","exportIndex":227,"name":"computePixelToRayMatrix","kind":"re-export","signature":"computePixelToRayMatrix","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0228:crc32","exportIndex":228,"name":"crc32","kind":"re-export","signature":"crc32","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0229:createChunkBuffers","exportIndex":229,"name":"createChunkBuffers","kind":"re-export","signature":"createChunkBuffers","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0230:createRaycastMesh","exportIndex":230,"name":"createRaycastMesh","kind":"re-export","signature":"createRaycastMesh","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0231:createVoxelGetter","exportIndex":231,"name":"createVoxelGetter","kind":"re-export","signature":"createVoxelGetter","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0232:createVoxelSdfBrickBridge","exportIndex":232,"name":"createVoxelSdfBrickBridge","kind":"re-export","signature":"createVoxelSdfBrickBridge","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0233:curvesToGPUBuffer","exportIndex":233,"name":"curvesToGPUBuffer","kind":"re-export","signature":"curvesToGPUBuffer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0234:curvesToSegments","exportIndex":234,"name":"curvesToSegments","kind":"re-export","signature":"curvesToSegments","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0235:decodeColumn","exportIndex":235,"name":"decodeColumn","kind":"re-export","signature":"decodeColumn","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0236:decodeMorton3D","exportIndex":236,"name":"decodeMorton3D","kind":"re-export","signature":"decodeMorton3D","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0237:decompressChunk","exportIndex":237,"name":"decompressChunk","kind":"re-export","signature":"decompressChunk","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0238:deserializeChunk","exportIndex":238,"name":"deserializeChunk","kind":"re-export","signature":"deserializeChunk","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0239:dualContourCell","exportIndex":239,"name":"dualContourCell","kind":"re-export","signature":"dualContourCell","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0240:dualContourVertex","exportIndex":240,"name":"dualContourVertex","kind":"re-export","signature":"dualContourVertex","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0241:encodeColumn","exportIndex":241,"name":"encodeColumn","kind":"re-export","signature":"encodeColumn","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0242:encodeMorton3D","exportIndex":242,"name":"encodeMorton3D","kind":"re-export","signature":"encodeMorton3D","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0243:estimateChunkSize","exportIndex":243,"name":"estimateChunkSize","kind":"re-export","signature":"estimateChunkSize","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0244:fbm3D","exportIndex":244,"name":"fbm3D","kind":"re-export","signature":"fbm3D","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0245:generateRoots","exportIndex":245,"name":"generateRoots","kind":"re-export","signature":"generateRoots","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0246:generateTransitionCell","exportIndex":246,"name":"generateTransitionCell","kind":"re-export","signature":"generateTransitionCell","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0247:generateTree","exportIndex":247,"name":"generateTree","kind":"re-export","signature":"generateTree","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0248:generateTunnel","exportIndex":248,"name":"generateTunnel","kind":"re-export","signature":"generateTunnel","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0249:generateWGSLTables","exportIndex":249,"name":"generateWGSLTables","kind":"re-export","signature":"generateWGSLTables","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0250:getAmbiguousFaces","exportIndex":250,"name":"getAmbiguousFaces","kind":"re-export","signature":"getAmbiguousFaces","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0251:getCameraForward","exportIndex":251,"name":"getCameraForward","kind":"re-export","signature":"getCameraForward","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0252:getCameraPosition","exportIndex":252,"name":"getCameraPosition","kind":"re-export","signature":"getCameraPosition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0253:getChannel","exportIndex":253,"name":"getChannel","kind":"re-export","signature":"getChannel","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0254:getChunkOcclusionMask","exportIndex":254,"name":"getChunkOcclusionMask","kind":"re-export","signature":"getChunkOcclusionMask","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0255:getChunkRegistry","exportIndex":255,"name":"getChunkRegistry","kind":"re-export","signature":"getChunkRegistry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0256:getDepthTier","exportIndex":256,"name":"getDepthTier","kind":"re-export","signature":"getDepthTier","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0257:getDepthTierBlend","exportIndex":257,"name":"getDepthTierBlend","kind":"re-export","signature":"getDepthTierBlend","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0258:getFrameBudgetManager","exportIndex":258,"name":"getFrameBudgetManager","kind":"re-export","signature":"getFrameBudgetManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0259:getGPUSubChunkStats","exportIndex":259,"name":"getGPUSubChunkStats","kind":"re-export","signature":"getGPUSubChunkStats","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0260:getGlobalRNG","exportIndex":260,"name":"getGlobalRNG","kind":"re-export","signature":"getGlobalRNG","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0261:getMC33Subcase","exportIndex":261,"name":"getMC33Subcase","kind":"re-export","signature":"getMC33Subcase","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0262:getMaterialColor","exportIndex":262,"name":"getMaterialColor","kind":"re-export","signature":"getMaterialColor","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0263:getMaterialId","exportIndex":263,"name":"getMaterialId","kind":"re-export","signature":"getMaterialId","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0264:getMaterialName","exportIndex":264,"name":"getMaterialName","kind":"re-export","signature":"getMaterialName","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0265:getMaterialProperties","exportIndex":265,"name":"getMaterialProperties","kind":"re-export","signature":"getMaterialProperties","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0266:getMeshGranularity","exportIndex":266,"name":"getMeshGranularity","kind":"re-export","signature":"getMeshGranularity","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0267:getTransitionRatio","exportIndex":267,"name":"getTransitionRatio","kind":"re-export","signature":"getTransitionRatio","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0268:getViewCullingMask","exportIndex":268,"name":"getViewCullingMask","kind":"re-export","signature":"getViewCullingMask","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0269:gpuBufferPool","exportIndex":269,"name":"gpuBufferPool","kind":"re-export","signature":"gpuBufferPool","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0270:greedyMesh","exportIndex":270,"name":"greedyMesh","kind":"re-export","signature":"greedyMesh","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0271:hasGPUSubChunkMeshing","exportIndex":271,"name":"hasGPUSubChunkMeshing","kind":"re-export","signature":"hasGPUSubChunkMeshing","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0272:hasLight","exportIndex":272,"name":"hasLight","kind":"re-export","signature":"hasLight","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0273:hasLineOfSightCombined","exportIndex":273,"name":"hasLineOfSightCombined","kind":"re-export","signature":"hasLineOfSightCombined","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0274:hasVoxelLineOfSight","exportIndex":274,"name":"hasVoxelLineOfSight","kind":"re-export","signature":"hasVoxelLineOfSight","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0275:hashVoxels","exportIndex":275,"name":"hashVoxels","kind":"re-export","signature":"hashVoxels","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0276:initChunkRegistry","exportIndex":276,"name":"initChunkRegistry","kind":"re-export","signature":"initChunkRegistry","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0277:initGPUSubChunkMeshing","exportIndex":277,"name":"initGPUSubChunkMeshing","kind":"re-export","signature":"initGPUSubChunkMeshing","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0278:initGlobalRNG","exportIndex":278,"name":"initGlobalRNG","kind":"re-export","signature":"initGlobalRNG","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0279:interiorTest","exportIndex":279,"name":"interiorTest","kind":"re-export","signature":"interiorTest","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0280:isChunkFaceSolid","exportIndex":280,"name":"isChunkFaceSolid","kind":"re-export","signature":"isChunkFaceSolid","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0281:isEmissive","exportIndex":281,"name":"isEmissive","kind":"re-export","signature":"isEmissive","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0282:isFaceAmbiguous","exportIndex":282,"name":"isFaceAmbiguous","kind":"re-export","signature":"isFaceAmbiguous","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0283:isFluid","exportIndex":283,"name":"isFluid","kind":"re-export","signature":"isFluid","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0284:isSolid","exportIndex":284,"name":"isSolid","kind":"re-export","signature":"isSolid","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0285:isTransparent","exportIndex":285,"name":"isTransparent","kind":"re-export","signature":"isTransparent","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0286:isTransparentMaterial","exportIndex":286,"name":"isTransparentMaterial","kind":"re-export","signature":"isTransparentMaterial","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0287:lightDecrement","exportIndex":287,"name":"lightDecrement","kind":"re-export","signature":"lightDecrement","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0288:lightMax","exportIndex":288,"name":"lightMax","kind":"re-export","signature":"lightMax","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0289:lightToRGB","exportIndex":289,"name":"lightToRGB","kind":"re-export","signature":"lightToRGB","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0290:linearToMorton","exportIndex":290,"name":"linearToMorton","kind":"re-export","signature":"linearToMorton","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0291:makeChunkKey","exportIndex":291,"name":"makeChunkKey","kind":"re-export","signature":"makeChunkKey","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0292:meshChunk","exportIndex":292,"name":"meshChunk","kind":"re-export","signature":"meshChunk","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0293:meshChunkGreedy","exportIndex":293,"name":"meshChunkGreedy","kind":"re-export","signature":"meshChunkGreedy","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0294:meshChunkLOD","exportIndex":294,"name":"meshChunkLOD","kind":"re-export","signature":"meshChunkLOD","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0295:meshChunkSmooth","exportIndex":295,"name":"meshChunkSmooth","kind":"re-export","signature":"meshChunkSmooth","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0296:meshSubChunk","exportIndex":296,"name":"meshSubChunk","kind":"re-export","signature":"meshSubChunk","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0297:meshSubChunk4GPU","exportIndex":297,"name":"meshSubChunk4GPU","kind":"re-export","signature":"meshSubChunk4GPU","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0298:meshSubChunk8GPU","exportIndex":298,"name":"meshSubChunk8GPU","kind":"re-export","signature":"meshSubChunk8GPU","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0299:mortonToLinear","exportIndex":299,"name":"mortonToLinear","kind":"re-export","signature":"mortonToLinear","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0300:multiCurveDistance","exportIndex":300,"name":"multiCurveDistance","kind":"re-export","signature":"multiCurveDistance","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0301:multiCurveDistanceSmooth","exportIndex":301,"name":"multiCurveDistanceSmooth","kind":"re-export","signature":"multiCurveDistanceSmooth","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0302:needsTransitionCell","exportIndex":302,"name":"needsTransitionCell","kind":"re-export","signature":"needsTransitionCell","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0303:packAO","exportIndex":303,"name":"packAO","kind":"re-export","signature":"packAO","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0304:packLight","exportIndex":304,"name":"packLight","kind":"re-export","signature":"packLight","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0305:parseChunkKey","exportIndex":305,"name":"parseChunkKey","kind":"re-export","signature":"parseChunkKey","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0306:pickBlock","exportIndex":306,"name":"pickBlock","kind":"re-export","signature":"pickBlock","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0307:positionHash","exportIndex":307,"name":"positionHash","kind":"re-export","signature":"positionHash","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0308:rayTriangleIntersect","exportIndex":308,"name":"rayTriangleIntersect","kind":"re-export","signature":"rayTriangleIntersect","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0309:raycastVoxels","exportIndex":309,"name":"raycastVoxels","kind":"re-export","signature":"raycastVoxels","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0310:raycastVoxelsDebug","exportIndex":310,"name":"raycastVoxelsDebug","kind":"re-export","signature":"raycastVoxelsDebug","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0311:releaseGPUSubChunkMesh","exportIndex":311,"name":"releaseGPUSubChunkMesh","kind":"re-export","signature":"releaseGPUSubChunkMesh","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0312:returnGPUBuffers","exportIndex":312,"name":"returnGPUBuffers","kind":"re-export","signature":"returnGPUBuffers","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0313:rotateEdges","exportIndex":313,"name":"rotateEdges","kind":"re-export","signature":"rotateEdges","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0314:screenPixelToRay","exportIndex":314,"name":"screenPixelToRay","kind":"re-export","signature":"screenPixelToRay","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0315:sdCapsule","exportIndex":315,"name":"sdCapsule","kind":"re-export","signature":"sdCapsule","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0316:sdfBox","exportIndex":316,"name":"sdfBox","kind":"re-export","signature":"sdfBox","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0317:sdfIntersect","exportIndex":317,"name":"sdfIntersect","kind":"re-export","signature":"sdfIntersect","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0318:sdfSmoothUnion","exportIndex":318,"name":"sdfSmoothUnion","kind":"re-export","signature":"sdfSmoothUnion","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0319:sdfSphere","exportIndex":319,"name":"sdfSphere","kind":"re-export","signature":"sdfSphere","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0320:sdfSubtract","exportIndex":320,"name":"sdfSubtract","kind":"re-export","signature":"sdfSubtract","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0321:sdfTerrain","exportIndex":321,"name":"sdfTerrain","kind":"re-export","signature":"sdfTerrain","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0322:sdfUnion","exportIndex":322,"name":"sdfUnion","kind":"re-export","signature":"sdfUnion","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0323:serializeBVHForGPU","exportIndex":323,"name":"serializeBVHForGPU","kind":"re-export","signature":"serializeBVHForGPU","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0324:serializeChunk","exportIndex":324,"name":"serializeChunk","kind":"re-export","signature":"serializeChunk","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0325:shouldFlipQuad","exportIndex":325,"name":"shouldFlipQuad","kind":"re-export","signature":"shouldFlipQuad","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0326:shouldSkipWork","exportIndex":326,"name":"shouldSkipWork","kind":"re-export","signature":"shouldSkipWork","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0327:smin","exportIndex":327,"name":"smin","kind":"re-export","signature":"smin","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0328:stepsToHeatColor","exportIndex":328,"name":"stepsToHeatColor","kind":"re-export","signature":"stepsToHeatColor","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0329:traceVoxelPath","exportIndex":329,"name":"traceVoxelPath","kind":"re-export","signature":"traceVoxelPath","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0330:traverseBVH","exportIndex":330,"name":"traverseBVH","kind":"re-export","signature":"traverseBVH","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0331:triangleVoxelIntersect","exportIndex":331,"name":"triangleVoxelIntersect","kind":"re-export","signature":"triangleVoxelIntersect","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0332:unpackAO","exportIndex":332,"name":"unpackAO","kind":"re-export","signature":"unpackAO","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0333:unpackLight","exportIndex":333,"name":"unpackLight","kind":"re-export","signature":"unpackLight","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0334:validateSchema","exportIndex":334,"name":"validateSchema","kind":"re-export","signature":"validateSchema","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0335:verifyCRC32","exportIndex":335,"name":"verifyCRC32","kind":"re-export","signature":"verifyCRC32","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0336:verifyTrailer","exportIndex":336,"name":"verifyTrailer","kind":"re-export","signature":"verifyTrailer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0337:voxelSdfPageToNexel","exportIndex":337,"name":"voxelSdfPageToNexel","kind":"re-export","signature":"voxelSdfPageToNexel","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0338:voxelizeMesh","exportIndex":338,"name":"voxelizeMesh","kind":"re-export","signature":"voxelizeMesh","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/voxel/index.md","moduleTitle":"voxel/index","source":"engine/voxel/index.js","import":"/engine/voxel/index.js","sourceHash":"e4b05678c6e966ab3c291d8d983e1d723499133f117c181d2fc4e35e08ecb2c7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/voxel/index.js#0339:xxHash32","exportIndex":339,"name":"xxHash32","kind":"re-export","signature":"xxHash32","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/FDTDSolver.md","moduleTitle":"world/FDTDSolver","source":"engine/world/FDTDSolver.js","import":"/engine/world/FDTDSolver.js","sourceHash":"983a58cbe176b5c32046f3e1c4b60172abebce77bbe966c59fa70e808b9d0c8f","subsystem":"engine","recordType":"api-module","id":"module:engine/world/FDTDSolver.js","title":"world/FDTDSolver","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/world/FloatingOrigin.md","moduleTitle":"world/FloatingOrigin","source":"engine/world/FloatingOrigin.js","import":"/engine/world/FloatingOrigin.js","sourceHash":"302fc1eb954cdd6baccb0f70c855e946d7fe22dc62be2bfc46ff5cc7f90bdfdd","subsystem":"engine","recordType":"api-module","id":"module:engine/world/FloatingOrigin.js","title":"world/FloatingOrigin","summary":"Shift an array of objects by the rebase offset Objects must have x, y, z properties","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/world/FloatingOrigin.md","moduleTitle":"world/FloatingOrigin","source":"engine/world/FloatingOrigin.js","import":"/engine/world/FloatingOrigin.js","sourceHash":"302fc1eb954cdd6baccb0f70c855e946d7fe22dc62be2bfc46ff5cc7f90bdfdd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/FloatingOrigin.js#0000:FloatingOrigin","exportIndex":0,"name":"FloatingOrigin","kind":"class","signature":"class FloatingOrigin","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/FloatingOrigin.md","moduleTitle":"world/FloatingOrigin","source":"engine/world/FloatingOrigin.js","import":"/engine/world/FloatingOrigin.js","sourceHash":"302fc1eb954cdd6baccb0f70c855e946d7fe22dc62be2bfc46ff5cc7f90bdfdd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/FloatingOrigin.js#0001:shiftObjects","exportIndex":1,"name":"shiftObjects","kind":"function","signature":"shiftObjects(objects, shiftX, shiftY, shiftZ)","summary":"Shift an array of objects by the rebase offset Objects must have x, y, z properties"}
{"schemaVersion":1,"modulePath":"engine/reference/world/FloatingOrigin.md","moduleTitle":"world/FloatingOrigin","source":"engine/world/FloatingOrigin.js","import":"/engine/world/FloatingOrigin.js","sourceHash":"302fc1eb954cdd6baccb0f70c855e946d7fe22dc62be2bfc46ff5cc7f90bdfdd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/FloatingOrigin.js#0002:shiftPosition","exportIndex":2,"name":"shiftPosition","kind":"function","signature":"shiftPosition(pos, shiftX, shiftY, shiftZ)","summary":"Shift a position array [x, y, z] by the rebase offset"}
{"schemaVersion":1,"modulePath":"engine/reference/world/FloatingOrigin.md","moduleTitle":"world/FloatingOrigin","source":"engine/world/FloatingOrigin.js","import":"/engine/world/FloatingOrigin.js","sourceHash":"302fc1eb954cdd6baccb0f70c855e946d7fe22dc62be2bfc46ff5cc7f90bdfdd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/FloatingOrigin.js#0003:REBASE_THRESHOLD","exportIndex":3,"name":"REBASE_THRESHOLD","kind":"constant","signature":"REBASE_THRESHOLD","summary":"Distance from local origin at which to trigger a rebase (in world units)"}
{"schemaVersion":1,"modulePath":"engine/reference/world/FloatingOrigin.md","moduleTitle":"world/FloatingOrigin","source":"engine/world/FloatingOrigin.js","import":"/engine/world/FloatingOrigin.js","sourceHash":"302fc1eb954cdd6baccb0f70c855e946d7fe22dc62be2bfc46ff5cc7f90bdfdd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/FloatingOrigin.js#0004:REBASE_SNAP","exportIndex":4,"name":"REBASE_SNAP","kind":"constant","signature":"REBASE_SNAP","summary":"Chunk size for coordinate snapping during rebase"}
{"schemaVersion":1,"modulePath":"engine/reference/world/FloatingOrigin.md","moduleTitle":"world/FloatingOrigin","source":"engine/world/FloatingOrigin.js","import":"/engine/world/FloatingOrigin.js","sourceHash":"302fc1eb954cdd6baccb0f70c855e946d7fe22dc62be2bfc46ff5cc7f90bdfdd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/FloatingOrigin.js#0005:SECTOR_REBASE_THRESHOLD","exportIndex":5,"name":"SECTOR_REBASE_THRESHOLD","kind":"constant","signature":"SECTOR_REBASE_THRESHOLD","summary":"Sector-based rebase threshold (rebase when crossing sector boundaries)"}
{"schemaVersion":1,"modulePath":"engine/reference/world/HierarchicalCoords.md","moduleTitle":"world/HierarchicalCoords","source":"engine/world/HierarchicalCoords.js","import":"/engine/world/HierarchicalCoords.js","sourceHash":"fe09aaa59cd014caf938a9601e484489c003fedc8b18871d37bc8785f9d0d6bf","subsystem":"engine","recordType":"api-module","id":"module:engine/world/HierarchicalCoords.js","title":"world/HierarchicalCoords","summary":"Represents a position using sector + local coordinates Sector is integer grid position, local is f32-safe offset within sector","exportCount":12}
{"schemaVersion":1,"modulePath":"engine/reference/world/HierarchicalCoords.md","moduleTitle":"world/HierarchicalCoords","source":"engine/world/HierarchicalCoords.js","import":"/engine/world/HierarchicalCoords.js","sourceHash":"fe09aaa59cd014caf938a9601e484489c003fedc8b18871d37bc8785f9d0d6bf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/HierarchicalCoords.js#0000:HierarchicalPosition","exportIndex":0,"name":"HierarchicalPosition","kind":"class","signature":"class HierarchicalPosition","summary":"Represents a position using sector + local coordinates Sector is integer grid position, local is f32-safe offset within sector"}
{"schemaVersion":1,"modulePath":"engine/reference/world/HierarchicalCoords.md","moduleTitle":"world/HierarchicalCoords","source":"engine/world/HierarchicalCoords.js","import":"/engine/world/HierarchicalCoords.js","sourceHash":"fe09aaa59cd014caf938a9601e484489c003fedc8b18871d37bc8785f9d0d6bf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/HierarchicalCoords.js#0001:BigHierarchicalPosition","exportIndex":1,"name":"BigHierarchicalPosition","kind":"class","signature":"class BigHierarchicalPosition","summary":"Extended hierarchical position using BigInt for extreme planet scales Use only when sector coordinates exceed MAX_SAFE_SECTOR"}
{"schemaVersion":1,"modulePath":"engine/reference/world/HierarchicalCoords.md","moduleTitle":"world/HierarchicalCoords","source":"engine/world/HierarchicalCoords.js","import":"/engine/world/HierarchicalCoords.js","sourceHash":"fe09aaa59cd014caf938a9601e484489c003fedc8b18871d37bc8785f9d0d6bf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/HierarchicalCoords.js#0002:getSectorsInRadius","exportIndex":2,"name":"getSectorsInRadius","kind":"function","signature":"getSectorsInRadius(center, radiusSectors)","summary":"Get all sector keys within radius of a position"}
{"schemaVersion":1,"modulePath":"engine/reference/world/HierarchicalCoords.md","moduleTitle":"world/HierarchicalCoords","source":"engine/world/HierarchicalCoords.js","import":"/engine/world/HierarchicalCoords.js","sourceHash":"fe09aaa59cd014caf938a9601e484489c003fedc8b18871d37bc8785f9d0d6bf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/HierarchicalCoords.js#0003:parseSectorKey","exportIndex":3,"name":"parseSectorKey","kind":"function","signature":"parseSectorKey(key)","summary":"Parse sector key back to coordinates"}
{"schemaVersion":1,"modulePath":"engine/reference/world/HierarchicalCoords.md","moduleTitle":"world/HierarchicalCoords","source":"engine/world/HierarchicalCoords.js","import":"/engine/world/HierarchicalCoords.js","sourceHash":"fe09aaa59cd014caf938a9601e484489c003fedc8b18871d37bc8785f9d0d6bf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/HierarchicalCoords.js#0004:getChunkKeyHierarchical","exportIndex":4,"name":"getChunkKeyHierarchical","kind":"function","signature":"getChunkKeyHierarchical(pos, chunkSize)","summary":"Calculate sector-aligned chunk key Useful for chunk loading that respects sector boundaries"}
{"schemaVersion":1,"modulePath":"engine/reference/world/HierarchicalCoords.md","moduleTitle":"world/HierarchicalCoords","source":"engine/world/HierarchicalCoords.js","import":"/engine/world/HierarchicalCoords.js","sourceHash":"fe09aaa59cd014caf938a9601e484489c003fedc8b18871d37bc8785f9d0d6bf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/HierarchicalCoords.js#0005:worldToHierarchical","exportIndex":5,"name":"worldToHierarchical","kind":"function","signature":"worldToHierarchical(x, y, z)","summary":"Convert world coordinates to hierarchical"}
{"schemaVersion":1,"modulePath":"engine/reference/world/HierarchicalCoords.md","moduleTitle":"world/HierarchicalCoords","source":"engine/world/HierarchicalCoords.js","import":"/engine/world/HierarchicalCoords.js","sourceHash":"fe09aaa59cd014caf938a9601e484489c003fedc8b18871d37bc8785f9d0d6bf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/HierarchicalCoords.js#0006:hierarchicalToWorld","exportIndex":6,"name":"hierarchicalToWorld","kind":"function","signature":"hierarchicalToWorld(pos)","summary":"Convert hierarchical to world coordinates"}
{"schemaVersion":1,"modulePath":"engine/reference/world/HierarchicalCoords.md","moduleTitle":"world/HierarchicalCoords","source":"engine/world/HierarchicalCoords.js","import":"/engine/world/HierarchicalCoords.js","sourceHash":"fe09aaa59cd014caf938a9601e484489c003fedc8b18871d37bc8785f9d0d6bf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/HierarchicalCoords.js#0007:toCameraSpace","exportIndex":7,"name":"toCameraSpace","kind":"function","signature":"toCameraSpace(worldPos, cameraPos)","summary":"Get camera-relative coordinates (f32 safe for GPU)"}
{"schemaVersion":1,"modulePath":"engine/reference/world/HierarchicalCoords.md","moduleTitle":"world/HierarchicalCoords","source":"engine/world/HierarchicalCoords.js","import":"/engine/world/HierarchicalCoords.js","sourceHash":"fe09aaa59cd014caf938a9601e484489c003fedc8b18871d37bc8785f9d0d6bf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/HierarchicalCoords.js#0008:SECTOR_SIZE","exportIndex":8,"name":"SECTOR_SIZE","kind":"constant","signature":"SECTOR_SIZE","summary":"Size of one sector in world units (10km)"}
{"schemaVersion":1,"modulePath":"engine/reference/world/HierarchicalCoords.md","moduleTitle":"world/HierarchicalCoords","source":"engine/world/HierarchicalCoords.js","import":"/engine/world/HierarchicalCoords.js","sourceHash":"fe09aaa59cd014caf938a9601e484489c003fedc8b18871d37bc8785f9d0d6bf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/HierarchicalCoords.js#0009:SECTOR_HALF","exportIndex":9,"name":"SECTOR_HALF","kind":"constant","signature":"SECTOR_HALF","summary":"Half sector size for boundary checks"}
{"schemaVersion":1,"modulePath":"engine/reference/world/HierarchicalCoords.md","moduleTitle":"world/HierarchicalCoords","source":"engine/world/HierarchicalCoords.js","import":"/engine/world/HierarchicalCoords.js","sourceHash":"fe09aaa59cd014caf938a9601e484489c003fedc8b18871d37bc8785f9d0d6bf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/HierarchicalCoords.js#0010:SECTOR_INV","exportIndex":10,"name":"SECTOR_INV","kind":"constant","signature":"SECTOR_INV","summary":"Inverse for fast division"}
{"schemaVersion":1,"modulePath":"engine/reference/world/HierarchicalCoords.md","moduleTitle":"world/HierarchicalCoords","source":"engine/world/HierarchicalCoords.js","import":"/engine/world/HierarchicalCoords.js","sourceHash":"fe09aaa59cd014caf938a9601e484489c003fedc8b18871d37bc8785f9d0d6bf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/HierarchicalCoords.js#0011:MAX_SAFE_SECTOR","exportIndex":11,"name":"MAX_SAFE_SECTOR","kind":"constant","signature":"MAX_SAFE_SECTOR","summary":"Maximum safe integer for sector coords (before BigInt needed)"}
{"schemaVersion":1,"modulePath":"engine/reference/world/PhasorRays.md","moduleTitle":"world/PhasorRays","source":"engine/world/PhasorRays.js","import":"/engine/world/PhasorRays.js","sourceHash":"f2fc69844626f212945ee7f14c5870528b2cffa8c45fa7842194bf4445769c7c","subsystem":"engine","recordType":"api-module","id":"module:engine/world/PhasorRays.js","title":"world/PhasorRays","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/world/PhotonicCrystal.md","moduleTitle":"world/PhotonicCrystal","source":"engine/world/PhotonicCrystal.js","import":"/engine/world/PhotonicCrystal.js","sourceHash":"036ec70b748b60acb5f8c99b865a9dc373aa683f7b6641d2cbb7a3d1ead5fc6a","subsystem":"engine","recordType":"api-module","id":"module:engine/world/PhotonicCrystal.js","title":"world/PhotonicCrystal","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"engine/reference/world/PlanetPhysics.md","moduleTitle":"world/PlanetPhysics","source":"engine/world/PlanetPhysics.js","import":"/engine/world/PlanetPhysics.js","sourceHash":"af875224ea72c42a40fd2b457555f9e8acb3cd507eb42196404ff36b78110a15","subsystem":"engine","recordType":"api-module","id":"module:engine/world/PlanetPhysics.js","title":"world/PlanetPhysics","summary":"Double-precision 3D vector using hi/lo split","exportCount":11}
{"schemaVersion":1,"modulePath":"engine/reference/world/PlanetPhysics.md","moduleTitle":"world/PlanetPhysics","source":"engine/world/PlanetPhysics.js","import":"/engine/world/PlanetPhysics.js","sourceHash":"af875224ea72c42a40fd2b457555f9e8acb3cd507eb42196404ff36b78110a15","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/PlanetPhysics.js#0000:DoubleVec3","exportIndex":0,"name":"DoubleVec3","kind":"class","signature":"class DoubleVec3","summary":"Double-precision 3D vector using hi/lo split"}
{"schemaVersion":1,"modulePath":"engine/reference/world/PlanetPhysics.md","moduleTitle":"world/PlanetPhysics","source":"engine/world/PlanetPhysics.js","import":"/engine/world/PlanetPhysics.js","sourceHash":"af875224ea72c42a40fd2b457555f9e8acb3cd507eb42196404ff36b78110a15","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/PlanetPhysics.js#0001:Quaternion","exportIndex":1,"name":"Quaternion","kind":"class","signature":"class Quaternion","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/PlanetPhysics.md","moduleTitle":"world/PlanetPhysics","source":"engine/world/PlanetPhysics.js","import":"/engine/world/PlanetPhysics.js","sourceHash":"af875224ea72c42a40fd2b457555f9e8acb3cd507eb42196404ff36b78110a15","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/PlanetPhysics.js#0002:Planet","exportIndex":2,"name":"Planet","kind":"class","signature":"class Planet","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/PlanetPhysics.md","moduleTitle":"world/PlanetPhysics","source":"engine/world/PlanetPhysics.js","import":"/engine/world/PlanetPhysics.js","sourceHash":"af875224ea72c42a40fd2b457555f9e8acb3cd507eb42196404ff36b78110a15","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/PlanetPhysics.js#0003:PlanetarySystem","exportIndex":3,"name":"PlanetarySystem","kind":"class","signature":"class PlanetarySystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/PlanetPhysics.md","moduleTitle":"world/PlanetPhysics","source":"engine/world/PlanetPhysics.js","import":"/engine/world/PlanetPhysics.js","sourceHash":"af875224ea72c42a40fd2b457555f9e8acb3cd507eb42196404ff36b78110a15","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/PlanetPhysics.js#0004:splitDouble","exportIndex":4,"name":"splitDouble","kind":"function","signature":"splitDouble(value)","summary":"Split a double into hi/lo f32 pair for GPU precision"}
{"schemaVersion":1,"modulePath":"engine/reference/world/PlanetPhysics.md","moduleTitle":"world/PlanetPhysics","source":"engine/world/PlanetPhysics.js","import":"/engine/world/PlanetPhysics.js","sourceHash":"af875224ea72c42a40fd2b457555f9e8acb3cd507eb42196404ff36b78110a15","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/PlanetPhysics.js#0005:combineDouble","exportIndex":5,"name":"combineDouble","kind":"function","signature":"combineDouble(hi, lo)","summary":"Combine hi/lo f32 pair back to double"}
{"schemaVersion":1,"modulePath":"engine/reference/world/PlanetPhysics.md","moduleTitle":"world/PlanetPhysics","source":"engine/world/PlanetPhysics.js","import":"/engine/world/PlanetPhysics.js","sourceHash":"af875224ea72c42a40fd2b457555f9e8acb3cd507eb42196404ff36b78110a15","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/PlanetPhysics.js#0006:G","exportIndex":6,"name":"G","kind":"constant","signature":"G","summary":"Gravitational constant (scaled for game)"}
{"schemaVersion":1,"modulePath":"engine/reference/world/PlanetPhysics.md","moduleTitle":"world/PlanetPhysics","source":"engine/world/PlanetPhysics.js","import":"/engine/world/PlanetPhysics.js","sourceHash":"af875224ea72c42a40fd2b457555f9e8acb3cd507eb42196404ff36b78110a15","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/PlanetPhysics.js#0007:DEFAULT_PLANET_RADIUS","exportIndex":7,"name":"DEFAULT_PLANET_RADIUS","kind":"constant","signature":"DEFAULT_PLANET_RADIUS","summary":"Default planet radius (180,000 km = 180,000,000 m)"}
{"schemaVersion":1,"modulePath":"engine/reference/world/PlanetPhysics.md","moduleTitle":"world/PlanetPhysics","source":"engine/world/PlanetPhysics.js","import":"/engine/world/PlanetPhysics.js","sourceHash":"af875224ea72c42a40fd2b457555f9e8acb3cd507eb42196404ff36b78110a15","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/PlanetPhysics.js#0008:DEFAULT_PLANET_MASS","exportIndex":8,"name":"DEFAULT_PLANET_MASS","kind":"constant","signature":"DEFAULT_PLANET_MASS","summary":"Default planet mass (for Earth-like surface gravity)"}
{"schemaVersion":1,"modulePath":"engine/reference/world/PlanetPhysics.md","moduleTitle":"world/PlanetPhysics","source":"engine/world/PlanetPhysics.js","import":"/engine/world/PlanetPhysics.js","sourceHash":"af875224ea72c42a40fd2b457555f9e8acb3cd507eb42196404ff36b78110a15","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/PlanetPhysics.js#0009:DEFAULT_ROTATION_PERIOD","exportIndex":9,"name":"DEFAULT_ROTATION_PERIOD","kind":"constant","signature":"DEFAULT_ROTATION_PERIOD","summary":"Default rotation period in seconds (24 hours)"}
{"schemaVersion":1,"modulePath":"engine/reference/world/PlanetPhysics.md","moduleTitle":"world/PlanetPhysics","source":"engine/world/PlanetPhysics.js","import":"/engine/world/PlanetPhysics.js","sourceHash":"af875224ea72c42a40fd2b457555f9e8acb3cd507eb42196404ff36b78110a15","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/PlanetPhysics.js#0010:MIN_GRAVITY","exportIndex":10,"name":"MIN_GRAVITY","kind":"constant","signature":"MIN_GRAVITY","summary":"Minimum gravity magnitude (to avoid division issues)"}
{"schemaVersion":1,"modulePath":"engine/reference/world/PlanetaryCoords.md","moduleTitle":"world/PlanetaryCoords","source":"engine/world/PlanetaryCoords.js","import":"/engine/world/PlanetaryCoords.js","sourceHash":"c43582d5f5f678bf2c1e97b289fea76600421a0b5aa908810d92f68d1dcbf472","subsystem":"engine","recordType":"api-module","id":"module:engine/world/PlanetaryCoords.js","title":"world/PlanetaryCoords","summary":"Planetary world configuration","exportCount":15}
{"schemaVersion":1,"modulePath":"engine/reference/world/PlanetaryCoords.md","moduleTitle":"world/PlanetaryCoords","source":"engine/world/PlanetaryCoords.js","import":"/engine/world/PlanetaryCoords.js","sourceHash":"c43582d5f5f678bf2c1e97b289fea76600421a0b5aa908810d92f68d1dcbf472","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/PlanetaryCoords.js#0000:PlanetaryWorld","exportIndex":0,"name":"PlanetaryWorld","kind":"class","signature":"class PlanetaryWorld","summary":"Planetary world configuration"}
{"schemaVersion":1,"modulePath":"engine/reference/world/PlanetaryCoords.md","moduleTitle":"world/PlanetaryCoords","source":"engine/world/PlanetaryCoords.js","import":"/engine/world/PlanetaryCoords.js","sourceHash":"c43582d5f5f678bf2c1e97b289fea76600421a0b5aa908810d92f68d1dcbf472","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/PlanetaryCoords.js#0001:ascProject","exportIndex":1,"name":"ascProject","kind":"function","signature":"ascProject(u, v)","summary":"ASC (Adjusted Spherified Cube) projection Maps a point on a cube face to a point on a unit sphere"}
{"schemaVersion":1,"modulePath":"engine/reference/world/PlanetaryCoords.md","moduleTitle":"world/PlanetaryCoords","source":"engine/world/PlanetaryCoords.js","import":"/engine/world/PlanetaryCoords.js","sourceHash":"c43582d5f5f678bf2c1e97b289fea76600421a0b5aa908810d92f68d1dcbf472","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/PlanetaryCoords.js#0002:ascInverse","exportIndex":2,"name":"ascInverse","kind":"function","signature":"ascInverse(x, y, z)","summary":"Inverse ASC projection Maps a direction on unit sphere back to cube face coordinates"}
{"schemaVersion":1,"modulePath":"engine/reference/world/PlanetaryCoords.md","moduleTitle":"world/PlanetaryCoords","source":"engine/world/PlanetaryCoords.js","import":"/engine/world/PlanetaryCoords.js","sourceHash":"c43582d5f5f678bf2c1e97b289fea76600421a0b5aa908810d92f68d1dcbf472","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/PlanetaryCoords.js#0003:faceToDirection","exportIndex":3,"name":"faceToDirection","kind":"function","signature":"faceToDirection(face, u, v)","summary":"Convert face coordinates to a direction on the unit sphere"}
{"schemaVersion":1,"modulePath":"engine/reference/world/PlanetaryCoords.md","moduleTitle":"world/PlanetaryCoords","source":"engine/world/PlanetaryCoords.js","import":"/engine/world/PlanetaryCoords.js","sourceHash":"c43582d5f5f678bf2c1e97b289fea76600421a0b5aa908810d92f68d1dcbf472","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/PlanetaryCoords.js#0004:planetaryToWorld","exportIndex":4,"name":"planetaryToWorld","kind":"function","signature":"planetaryToWorld(face, shell, u, v, planetRadius = DEFAULT_PLANET_RADIUS)","summary":"Convert planetary coordinates to world position"}
{"schemaVersion":1,"modulePath":"engine/reference/world/PlanetaryCoords.md","moduleTitle":"world/PlanetaryCoords","source":"engine/world/PlanetaryCoords.js","import":"/engine/world/PlanetaryCoords.js","sourceHash":"c43582d5f5f678bf2c1e97b289fea76600421a0b5aa908810d92f68d1dcbf472","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/PlanetaryCoords.js#0005:worldToPlanetary","exportIndex":5,"name":"worldToPlanetary","kind":"function","signature":"worldToPlanetary(x, y, z, planetRadius = DEFAULT_PLANET_RADIUS)","summary":"Convert world position to planetary coordinates"}
{"schemaVersion":1,"modulePath":"engine/reference/world/PlanetaryCoords.md","moduleTitle":"world/PlanetaryCoords","source":"engine/world/PlanetaryCoords.js","import":"/engine/world/PlanetaryCoords.js","sourceHash":"c43582d5f5f678bf2c1e97b289fea76600421a0b5aa908810d92f68d1dcbf472","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/PlanetaryCoords.js#0006:getGravityDirection","exportIndex":6,"name":"getGravityDirection","kind":"function","signature":"getGravityDirection(x, y, z)","summary":"Get gravity direction at a world position (points toward center)"}
{"schemaVersion":1,"modulePath":"engine/reference/world/PlanetaryCoords.md","moduleTitle":"world/PlanetaryCoords","source":"engine/world/PlanetaryCoords.js","import":"/engine/world/PlanetaryCoords.js","sourceHash":"c43582d5f5f678bf2c1e97b289fea76600421a0b5aa908810d92f68d1dcbf472","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/PlanetaryCoords.js#0007:getUpDirection","exportIndex":7,"name":"getUpDirection","kind":"function","signature":"getUpDirection(x, y, z)","summary":"Get \"up\" direction at a world position (away from center)"}
{"schemaVersion":1,"modulePath":"engine/reference/world/PlanetaryCoords.md","moduleTitle":"world/PlanetaryCoords","source":"engine/world/PlanetaryCoords.js","import":"/engine/world/PlanetaryCoords.js","sourceHash":"c43582d5f5f678bf2c1e97b289fea76600421a0b5aa908810d92f68d1dcbf472","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/PlanetaryCoords.js#0008:planetaryChunkKey","exportIndex":8,"name":"planetaryChunkKey","kind":"function","signature":"planetaryChunkKey(face, shell, cu, cv)","summary":"Get chunk key for planetary coordinates"}
{"schemaVersion":1,"modulePath":"engine/reference/world/PlanetaryCoords.md","moduleTitle":"world/PlanetaryCoords","source":"engine/world/PlanetaryCoords.js","import":"/engine/world/PlanetaryCoords.js","sourceHash":"c43582d5f5f678bf2c1e97b289fea76600421a0b5aa908810d92f68d1dcbf472","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/PlanetaryCoords.js#0009:parsePlanetaryChunkKey","exportIndex":9,"name":"parsePlanetaryChunkKey","kind":"function","signature":"parsePlanetaryChunkKey(key)","summary":"Parse planetary chunk key"}
{"schemaVersion":1,"modulePath":"engine/reference/world/PlanetaryCoords.md","moduleTitle":"world/PlanetaryCoords","source":"engine/world/PlanetaryCoords.js","import":"/engine/world/PlanetaryCoords.js","sourceHash":"c43582d5f5f678bf2c1e97b289fea76600421a0b5aa908810d92f68d1dcbf472","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/PlanetaryCoords.js#0010:worldToPlanetaryChunk","exportIndex":10,"name":"worldToPlanetaryChunk","kind":"function","signature":"worldToPlanetaryChunk(x, y, z, chunkSize = 32, planetRadius = DEFAULT_PLANET_RADIUS)","summary":"Convert world position to planetary chunk coordinates"}
{"schemaVersion":1,"modulePath":"engine/reference/world/PlanetaryCoords.md","moduleTitle":"world/PlanetaryCoords","source":"engine/world/PlanetaryCoords.js","import":"/engine/world/PlanetaryCoords.js","sourceHash":"c43582d5f5f678bf2c1e97b289fea76600421a0b5aa908810d92f68d1dcbf472","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/PlanetaryCoords.js#0011:FACE","exportIndex":11,"name":"FACE","kind":"constant","signature":"FACE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/PlanetaryCoords.md","moduleTitle":"world/PlanetaryCoords","source":"engine/world/PlanetaryCoords.js","import":"/engine/world/PlanetaryCoords.js","sourceHash":"c43582d5f5f678bf2c1e97b289fea76600421a0b5aa908810d92f68d1dcbf472","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/PlanetaryCoords.js#0012:FACE_NAMES","exportIndex":12,"name":"FACE_NAMES","kind":"constant","signature":"FACE_NAMES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/PlanetaryCoords.md","moduleTitle":"world/PlanetaryCoords","source":"engine/world/PlanetaryCoords.js","import":"/engine/world/PlanetaryCoords.js","sourceHash":"c43582d5f5f678bf2c1e97b289fea76600421a0b5aa908810d92f68d1dcbf472","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/PlanetaryCoords.js#0013:DEFAULT_PLANET_RADIUS","exportIndex":13,"name":"DEFAULT_PLANET_RADIUS","kind":"constant","signature":"DEFAULT_PLANET_RADIUS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/PlanetaryCoords.md","moduleTitle":"world/PlanetaryCoords","source":"engine/world/PlanetaryCoords.js","import":"/engine/world/PlanetaryCoords.js","sourceHash":"c43582d5f5f678bf2c1e97b289fea76600421a0b5aa908810d92f68d1dcbf472","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/PlanetaryCoords.js#0014:SHELL_THICKNESS","exportIndex":14,"name":"SHELL_THICKNESS","kind":"constant","signature":"SHELL_THICKNESS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/SurfaceAttachment.md","moduleTitle":"world/SurfaceAttachment","source":"engine/world/SurfaceAttachment.js","import":"/engine/world/SurfaceAttachment.js","sourceHash":"4ddb6cf61d83b7dd2002bb4096e293634a6b6faa7261a1341067e98fbb250d20","subsystem":"engine","recordType":"api-module","id":"module:engine/world/SurfaceAttachment.js","title":"world/SurfaceAttachment","summary":"Represents a point on a surface where attachment occurs","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/world/SurfaceAttachment.md","moduleTitle":"world/SurfaceAttachment","source":"engine/world/SurfaceAttachment.js","import":"/engine/world/SurfaceAttachment.js","sourceHash":"4ddb6cf61d83b7dd2002bb4096e293634a6b6faa7261a1341067e98fbb250d20","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/SurfaceAttachment.js#0000:AttachmentPoint","exportIndex":0,"name":"AttachmentPoint","kind":"class","signature":"class AttachmentPoint","summary":"Represents a point on a surface where attachment occurs"}
{"schemaVersion":1,"modulePath":"engine/reference/world/SurfaceAttachment.md","moduleTitle":"world/SurfaceAttachment","source":"engine/world/SurfaceAttachment.js","import":"/engine/world/SurfaceAttachment.js","sourceHash":"4ddb6cf61d83b7dd2002bb4096e293634a6b6faa7261a1341067e98fbb250d20","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/SurfaceAttachment.js#0001:SurfaceAttachment","exportIndex":1,"name":"SurfaceAttachment","kind":"class","signature":"class SurfaceAttachment","summary":"Manages attachment state for a single entity"}
{"schemaVersion":1,"modulePath":"engine/reference/world/SurfaceAttachment.md","moduleTitle":"world/SurfaceAttachment","source":"engine/world/SurfaceAttachment.js","import":"/engine/world/SurfaceAttachment.js","sourceHash":"4ddb6cf61d83b7dd2002bb4096e293634a6b6faa7261a1341067e98fbb250d20","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/SurfaceAttachment.js#0002:AttachmentManager","exportIndex":2,"name":"AttachmentManager","kind":"class","signature":"class AttachmentManager","summary":"Manages attachments for multiple entities"}
{"schemaVersion":1,"modulePath":"engine/reference/world/SurfaceAttachment.md","moduleTitle":"world/SurfaceAttachment","source":"engine/world/SurfaceAttachment.js","import":"/engine/world/SurfaceAttachment.js","sourceHash":"4ddb6cf61d83b7dd2002bb4096e293634a6b6faa7261a1341067e98fbb250d20","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/SurfaceAttachment.js#0003:AttachmentType","exportIndex":3,"name":"AttachmentType","kind":"constant","signature":"AttachmentType","summary":"Attachment types"}
{"schemaVersion":1,"modulePath":"engine/reference/world/SurfaceAttachment.md","moduleTitle":"world/SurfaceAttachment","source":"engine/world/SurfaceAttachment.js","import":"/engine/world/SurfaceAttachment.js","sourceHash":"4ddb6cf61d83b7dd2002bb4096e293634a6b6faa7261a1341067e98fbb250d20","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/SurfaceAttachment.js#0004:BreakCondition","exportIndex":4,"name":"BreakCondition","kind":"constant","signature":"BreakCondition","summary":"Break conditions"}
{"schemaVersion":1,"modulePath":"engine/reference/world/SurfaceAttachment.md","moduleTitle":"world/SurfaceAttachment","source":"engine/world/SurfaceAttachment.js","import":"/engine/world/SurfaceAttachment.js","sourceHash":"4ddb6cf61d83b7dd2002bb4096e293634a6b6faa7261a1341067e98fbb250d20","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/SurfaceAttachment.js#0005:DEFAULT_PARAMS","exportIndex":5,"name":"DEFAULT_PARAMS","kind":"constant","signature":"DEFAULT_PARAMS","summary":"Default attachment parameters"}
{"schemaVersion":1,"modulePath":"engine/reference/world/WorldSchema.md","moduleTitle":"world/WorldSchema","source":"engine/world/WorldSchema.js","import":"/engine/world/WorldSchema.js","sourceHash":"cccbf358396686f6b7d0fb96d0bb3fe53bbab3356825106ddad65a45d82caf46","subsystem":"engine","recordType":"api-module","id":"module:engine/world/WorldSchema.js","title":"world/WorldSchema","summary":"Get biome type ID from name","exportCount":27}
{"schemaVersion":1,"modulePath":"engine/reference/world/WorldSchema.md","moduleTitle":"world/WorldSchema","source":"engine/world/WorldSchema.js","import":"/engine/world/WorldSchema.js","sourceHash":"cccbf358396686f6b7d0fb96d0bb3fe53bbab3356825106ddad65a45d82caf46","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/WorldSchema.js#0000:getBiomeTypeId","exportIndex":0,"name":"getBiomeTypeId","kind":"function","signature":"getBiomeTypeId(biomeName)","summary":"Get biome type ID from name"}
{"schemaVersion":1,"modulePath":"engine/reference/world/WorldSchema.md","moduleTitle":"world/WorldSchema","source":"engine/world/WorldSchema.js","import":"/engine/world/WorldSchema.js","sourceHash":"cccbf358396686f6b7d0fb96d0bb3fe53bbab3356825106ddad65a45d82caf46","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/WorldSchema.js#0001:getBiomeTypeName","exportIndex":1,"name":"getBiomeTypeName","kind":"function","signature":"getBiomeTypeName(biomeId)","summary":"Get biome type name from ID"}
{"schemaVersion":1,"modulePath":"engine/reference/world/WorldSchema.md","moduleTitle":"world/WorldSchema","source":"engine/world/WorldSchema.js","import":"/engine/world/WorldSchema.js","sourceHash":"cccbf358396686f6b7d0fb96d0bb3fe53bbab3356825106ddad65a45d82caf46","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/WorldSchema.js#0002:validateTerrain","exportIndex":2,"name":"validateTerrain","kind":"function","signature":"validateTerrain(config)","summary":"Validate terrain config"}
{"schemaVersion":1,"modulePath":"engine/reference/world/WorldSchema.md","moduleTitle":"world/WorldSchema","source":"engine/world/WorldSchema.js","import":"/engine/world/WorldSchema.js","sourceHash":"cccbf358396686f6b7d0fb96d0bb3fe53bbab3356825106ddad65a45d82caf46","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/WorldSchema.js#0003:validateWeather","exportIndex":3,"name":"validateWeather","kind":"function","signature":"validateWeather(config)","summary":"Validate weather config"}
{"schemaVersion":1,"modulePath":"engine/reference/world/WorldSchema.md","moduleTitle":"world/WorldSchema","source":"engine/world/WorldSchema.js","import":"/engine/world/WorldSchema.js","sourceHash":"cccbf358396686f6b7d0fb96d0bb3fe53bbab3356825106ddad65a45d82caf46","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/WorldSchema.js#0004:validateWorldConfig","exportIndex":4,"name":"validateWorldConfig","kind":"function","signature":"validateWorldConfig(config)","summary":"Validate world config"}
{"schemaVersion":1,"modulePath":"engine/reference/world/WorldSchema.md","moduleTitle":"world/WorldSchema","source":"engine/world/WorldSchema.js","import":"/engine/world/WorldSchema.js","sourceHash":"cccbf358396686f6b7d0fb96d0bb3fe53bbab3356825106ddad65a45d82caf46","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/WorldSchema.js#0005:createDefaultTerrain","exportIndex":5,"name":"createDefaultTerrain","kind":"function","signature":"createDefaultTerrain()","summary":"Create default terrain config"}
{"schemaVersion":1,"modulePath":"engine/reference/world/WorldSchema.md","moduleTitle":"world/WorldSchema","source":"engine/world/WorldSchema.js","import":"/engine/world/WorldSchema.js","sourceHash":"cccbf358396686f6b7d0fb96d0bb3fe53bbab3356825106ddad65a45d82caf46","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/WorldSchema.js#0006:createDefaultWeather","exportIndex":6,"name":"createDefaultWeather","kind":"function","signature":"createDefaultWeather()","summary":"Create default weather"}
{"schemaVersion":1,"modulePath":"engine/reference/world/WorldSchema.md","moduleTitle":"world/WorldSchema","source":"engine/world/WorldSchema.js","import":"/engine/world/WorldSchema.js","sourceHash":"cccbf358396686f6b7d0fb96d0bb3fe53bbab3356825106ddad65a45d82caf46","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/WorldSchema.js#0007:createDefaultWorldConfig","exportIndex":7,"name":"createDefaultWorldConfig","kind":"function","signature":"createDefaultWorldConfig(seed = Date.now()","summary":"Create default world config"}
{"schemaVersion":1,"modulePath":"engine/reference/world/WorldSchema.md","moduleTitle":"world/WorldSchema","source":"engine/world/WorldSchema.js","import":"/engine/world/WorldSchema.js","sourceHash":"cccbf358396686f6b7d0fb96d0bb3fe53bbab3356825106ddad65a45d82caf46","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/WorldSchema.js#0008:createClimateFromPosition","exportIndex":8,"name":"createClimateFromPosition","kind":"function","signature":"createClimateFromPosition(latitude, altitude, oceanDistance)","summary":"Create climate from biome position"}
{"schemaVersion":1,"modulePath":"engine/reference/world/WorldSchema.md","moduleTitle":"world/WorldSchema","source":"engine/world/WorldSchema.js","import":"/engine/world/WorldSchema.js","sourceHash":"cccbf358396686f6b7d0fb96d0bb3fe53bbab3356825106ddad65a45d82caf46","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/WorldSchema.js#0009:getBiomeFromClimate","exportIndex":9,"name":"getBiomeFromClimate","kind":"function","signature":"getBiomeFromClimate(climate)","summary":"Get biome from climate"}
{"schemaVersion":1,"modulePath":"engine/reference/world/WorldSchema.md","moduleTitle":"world/WorldSchema","source":"engine/world/WorldSchema.js","import":"/engine/world/WorldSchema.js","sourceHash":"cccbf358396686f6b7d0fb96d0bb3fe53bbab3356825106ddad65a45d82caf46","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/WorldSchema.js#0010:getWeatherPreset","exportIndex":10,"name":"getWeatherPreset","kind":"function","signature":"getWeatherPreset(typeName)","summary":"Get weather preset"}
{"schemaVersion":1,"modulePath":"engine/reference/world/WorldSchema.md","moduleTitle":"world/WorldSchema","source":"engine/world/WorldSchema.js","import":"/engine/world/WorldSchema.js","sourceHash":"cccbf358396686f6b7d0fb96d0bb3fe53bbab3356825106ddad65a45d82caf46","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/WorldSchema.js#0011:getTimePhase","exportIndex":11,"name":"getTimePhase","kind":"function","signature":"getTimePhase(hour)","summary":"Get time phase for hour"}
{"schemaVersion":1,"modulePath":"engine/reference/world/WorldSchema.md","moduleTitle":"world/WorldSchema","source":"engine/world/WorldSchema.js","import":"/engine/world/WorldSchema.js","sourceHash":"cccbf358396686f6b7d0fb96d0bb3fe53bbab3356825106ddad65a45d82caf46","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/WorldSchema.js#0012:BIOME_TYPES","exportIndex":12,"name":"BIOME_TYPES","kind":"constant","signature":"BIOME_TYPES","summary":"Biome type definitions"}
{"schemaVersion":1,"modulePath":"engine/reference/world/WorldSchema.md","moduleTitle":"world/WorldSchema","source":"engine/world/WorldSchema.js","import":"/engine/world/WorldSchema.js","sourceHash":"cccbf358396686f6b7d0fb96d0bb3fe53bbab3356825106ddad65a45d82caf46","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/WorldSchema.js#0013:CLIMATE_PARAMS","exportIndex":13,"name":"CLIMATE_PARAMS","kind":"constant","signature":"CLIMATE_PARAMS","summary":"Climate parameter ranges (0-1)"}
{"schemaVersion":1,"modulePath":"engine/reference/world/WorldSchema.md","moduleTitle":"world/WorldSchema","source":"engine/world/WorldSchema.js","import":"/engine/world/WorldSchema.js","sourceHash":"cccbf358396686f6b7d0fb96d0bb3fe53bbab3356825106ddad65a45d82caf46","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/WorldSchema.js#0014:CLIMATE_SCHEMA","exportIndex":14,"name":"CLIMATE_SCHEMA","kind":"constant","signature":"CLIMATE_SCHEMA","summary":"Climate schema for biome selection"}
{"schemaVersion":1,"modulePath":"engine/reference/world/WorldSchema.md","moduleTitle":"world/WorldSchema","source":"engine/world/WorldSchema.js","import":"/engine/world/WorldSchema.js","sourceHash":"cccbf358396686f6b7d0fb96d0bb3fe53bbab3356825106ddad65a45d82caf46","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/WorldSchema.js#0015:BIOME_SCHEMA","exportIndex":15,"name":"BIOME_SCHEMA","kind":"constant","signature":"BIOME_SCHEMA","summary":"Biome definition schema"}
{"schemaVersion":1,"modulePath":"engine/reference/world/WorldSchema.md","moduleTitle":"world/WorldSchema","source":"engine/world/WorldSchema.js","import":"/engine/world/WorldSchema.js","sourceHash":"cccbf358396686f6b7d0fb96d0bb3fe53bbab3356825106ddad65a45d82caf46","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/WorldSchema.js#0016:NOISE_SCHEMA","exportIndex":16,"name":"NOISE_SCHEMA","kind":"constant","signature":"NOISE_SCHEMA","summary":"Noise parameters schema"}
{"schemaVersion":1,"modulePath":"engine/reference/world/WorldSchema.md","moduleTitle":"world/WorldSchema","source":"engine/world/WorldSchema.js","import":"/engine/world/WorldSchema.js","sourceHash":"cccbf358396686f6b7d0fb96d0bb3fe53bbab3356825106ddad65a45d82caf46","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/WorldSchema.js#0017:EROSION_TYPES","exportIndex":17,"name":"EROSION_TYPES","kind":"constant","signature":"EROSION_TYPES","summary":"Erosion types"}
{"schemaVersion":1,"modulePath":"engine/reference/world/WorldSchema.md","moduleTitle":"world/WorldSchema","source":"engine/world/WorldSchema.js","import":"/engine/world/WorldSchema.js","sourceHash":"cccbf358396686f6b7d0fb96d0bb3fe53bbab3356825106ddad65a45d82caf46","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/WorldSchema.js#0018:TERRAIN_SCHEMA","exportIndex":18,"name":"TERRAIN_SCHEMA","kind":"constant","signature":"TERRAIN_SCHEMA","summary":"Terrain generation schema"}
{"schemaVersion":1,"modulePath":"engine/reference/world/WorldSchema.md","moduleTitle":"world/WorldSchema","source":"engine/world/WorldSchema.js","import":"/engine/world/WorldSchema.js","sourceHash":"cccbf358396686f6b7d0fb96d0bb3fe53bbab3356825106ddad65a45d82caf46","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/WorldSchema.js#0019:CHUNK_SIZES","exportIndex":19,"name":"CHUNK_SIZES","kind":"constant","signature":"CHUNK_SIZES","summary":"Chunk sizes"}
{"schemaVersion":1,"modulePath":"engine/reference/world/WorldSchema.md","moduleTitle":"world/WorldSchema","source":"engine/world/WorldSchema.js","import":"/engine/world/WorldSchema.js","sourceHash":"cccbf358396686f6b7d0fb96d0bb3fe53bbab3356825106ddad65a45d82caf46","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/WorldSchema.js#0020:ZONE_TYPES","exportIndex":20,"name":"ZONE_TYPES","kind":"constant","signature":"ZONE_TYPES","summary":"Zone types for streaming"}
{"schemaVersion":1,"modulePath":"engine/reference/world/WorldSchema.md","moduleTitle":"world/WorldSchema","source":"engine/world/WorldSchema.js","import":"/engine/world/WorldSchema.js","sourceHash":"cccbf358396686f6b7d0fb96d0bb3fe53bbab3356825106ddad65a45d82caf46","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/WorldSchema.js#0021:CHUNK_STREAMING_SCHEMA","exportIndex":21,"name":"CHUNK_STREAMING_SCHEMA","kind":"constant","signature":"CHUNK_STREAMING_SCHEMA","summary":"Chunk streaming schema"}
{"schemaVersion":1,"modulePath":"engine/reference/world/WorldSchema.md","moduleTitle":"world/WorldSchema","source":"engine/world/WorldSchema.js","import":"/engine/world/WorldSchema.js","sourceHash":"cccbf358396686f6b7d0fb96d0bb3fe53bbab3356825106ddad65a45d82caf46","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/WorldSchema.js#0022:WEATHER_TYPES","exportIndex":22,"name":"WEATHER_TYPES","kind":"constant","signature":"WEATHER_TYPES","summary":"Weather types"}
{"schemaVersion":1,"modulePath":"engine/reference/world/WorldSchema.md","moduleTitle":"world/WorldSchema","source":"engine/world/WorldSchema.js","import":"/engine/world/WorldSchema.js","sourceHash":"cccbf358396686f6b7d0fb96d0bb3fe53bbab3356825106ddad65a45d82caf46","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/WorldSchema.js#0023:WEATHER_SCHEMA","exportIndex":23,"name":"WEATHER_SCHEMA","kind":"constant","signature":"WEATHER_SCHEMA","summary":"Weather schema"}
{"schemaVersion":1,"modulePath":"engine/reference/world/WorldSchema.md","moduleTitle":"world/WorldSchema","source":"engine/world/WorldSchema.js","import":"/engine/world/WorldSchema.js","sourceHash":"cccbf358396686f6b7d0fb96d0bb3fe53bbab3356825106ddad65a45d82caf46","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/WorldSchema.js#0024:TIME_PHASES","exportIndex":24,"name":"TIME_PHASES","kind":"constant","signature":"TIME_PHASES","summary":"Time of day phases"}
{"schemaVersion":1,"modulePath":"engine/reference/world/WorldSchema.md","moduleTitle":"world/WorldSchema","source":"engine/world/WorldSchema.js","import":"/engine/world/WorldSchema.js","sourceHash":"cccbf358396686f6b7d0fb96d0bb3fe53bbab3356825106ddad65a45d82caf46","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/WorldSchema.js#0025:WORLD_TIME_SCHEMA","exportIndex":25,"name":"WORLD_TIME_SCHEMA","kind":"constant","signature":"WORLD_TIME_SCHEMA","summary":"World time schema"}
{"schemaVersion":1,"modulePath":"engine/reference/world/WorldSchema.md","moduleTitle":"world/WorldSchema","source":"engine/world/WorldSchema.js","import":"/engine/world/WorldSchema.js","sourceHash":"cccbf358396686f6b7d0fb96d0bb3fe53bbab3356825106ddad65a45d82caf46","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/WorldSchema.js#0026:WORLD_CONFIG_SCHEMA","exportIndex":26,"name":"WORLD_CONFIG_SCHEMA","kind":"constant","signature":"WORLD_CONFIG_SCHEMA","summary":"Complete world configuration"}
{"schemaVersion":1,"modulePath":"engine/reference/world/WorldTime.md","moduleTitle":"world/WorldTime","source":"engine/world/WorldTime.js","import":"/engine/world/WorldTime.js","sourceHash":"9c0c9af5250b975db8cefabc83d927f799e3253f118622202b252da498855515","subsystem":"engine","recordType":"api-module","id":"module:engine/world/WorldTime.js","title":"world/WorldTime","summary":"WorldTime.js - Comprehensive Temporal Architecture Implements robust server-side time tracking based on: - Tick-based architecture with 64-bit precision (BigInt) - Hierarchical Timing Wheels for O(1) event scheduling - Custom calendar system derived from total ticks - Timescale ratios (game time vs real time) - Offline progression support - Network clock synchronization Reference: \"Temporal Architecture in Virtual Environments\"","exportCount":14}
{"schemaVersion":1,"modulePath":"engine/reference/world/WorldTime.md","moduleTitle":"world/WorldTime","source":"engine/world/WorldTime.js","import":"/engine/world/WorldTime.js","sourceHash":"9c0c9af5250b975db8cefabc83d927f799e3253f118622202b252da498855515","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/WorldTime.js#0000:GameDate","exportIndex":0,"name":"GameDate","kind":"class","signature":"class GameDate","summary":"GameDate - A view of the world time as calendar date Never store date components directly - always derive from ticks"}
{"schemaVersion":1,"modulePath":"engine/reference/world/WorldTime.md","moduleTitle":"world/WorldTime","source":"engine/world/WorldTime.js","import":"/engine/world/WorldTime.js","sourceHash":"9c0c9af5250b975db8cefabc83d927f799e3253f118622202b252da498855515","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/WorldTime.js#0001:HierarchicalTimingWheel","exportIndex":1,"name":"HierarchicalTimingWheel","kind":"class","signature":"class HierarchicalTimingWheel","summary":"HierarchicalTimingWheel - Multi-level timing wheel for efficient scheduling Level 0: Ticks (20 slots = 1 second at 20 TPS) Level 1: Seconds (60 slots = 1 minute) Level 2: Minutes (60 slots = 1 hour) Level 3: Hours (24 slots = 1 day) Level 4: Days (28 slots = 1 month)"}
{"schemaVersion":1,"modulePath":"engine/reference/world/WorldTime.md","moduleTitle":"world/WorldTime","source":"engine/world/WorldTime.js","import":"/engine/world/WorldTime.js","sourceHash":"9c0c9af5250b975db8cefabc83d927f799e3253f118622202b252da498855515","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/WorldTime.js#0002:WorldTimeSystem","exportIndex":2,"name":"WorldTimeSystem","kind":"class","signature":"class WorldTimeSystem","summary":"WorldTimeSystem - Main time tracking system Features: - 64-bit tick precision - Configurable timescale - Event scheduling via timing wheel - Offline progression - Network sync support"}
{"schemaVersion":1,"modulePath":"engine/reference/world/WorldTime.md","moduleTitle":"world/WorldTime","source":"engine/world/WorldTime.js","import":"/engine/world/WorldTime.js","sourceHash":"9c0c9af5250b975db8cefabc83d927f799e3253f118622202b252da498855515","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/WorldTime.js#0003:TICKS_PER_SECOND","exportIndex":3,"name":"TICKS_PER_SECOND","kind":"constant","signature":"TICKS_PER_SECOND","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/WorldTime.md","moduleTitle":"world/WorldTime","source":"engine/world/WorldTime.js","import":"/engine/world/WorldTime.js","sourceHash":"9c0c9af5250b975db8cefabc83d927f799e3253f118622202b252da498855515","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/WorldTime.js#0004:TICK_DURATION_MS","exportIndex":4,"name":"TICK_DURATION_MS","kind":"constant","signature":"TICK_DURATION_MS","summary":"Tick duration in milliseconds"}
{"schemaVersion":1,"modulePath":"engine/reference/world/WorldTime.md","moduleTitle":"world/WorldTime","source":"engine/world/WorldTime.js","import":"/engine/world/WorldTime.js","sourceHash":"9c0c9af5250b975db8cefabc83d927f799e3253f118622202b252da498855515","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/WorldTime.js#0005:PRECISION_TICKS_PER_SECOND","exportIndex":5,"name":"PRECISION_TICKS_PER_SECOND","kind":"constant","signature":"PRECISION_TICKS_PER_SECOND","summary":"High-precision ticks (100-nanosecond intervals, like .NET DateTime.Ticks)"}
{"schemaVersion":1,"modulePath":"engine/reference/world/WorldTime.md","moduleTitle":"world/WorldTime","source":"engine/world/WorldTime.js","import":"/engine/world/WorldTime.js","sourceHash":"9c0c9af5250b975db8cefabc83d927f799e3253f118622202b252da498855515","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/WorldTime.js#0006:TIMESCALE","exportIndex":6,"name":"TIMESCALE","kind":"constant","signature":"TIMESCALE","summary":"Timescale presets (game:real ratios)"}
{"schemaVersion":1,"modulePath":"engine/reference/world/WorldTime.md","moduleTitle":"world/WorldTime","source":"engine/world/WorldTime.js","import":"/engine/world/WorldTime.js","sourceHash":"9c0c9af5250b975db8cefabc83d927f799e3253f118622202b252da498855515","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/WorldTime.js#0007:CALENDAR_CONFIG","exportIndex":7,"name":"CALENDAR_CONFIG","kind":"constant","signature":"CALENDAR_CONFIG","summary":"Calendar configuration"}
{"schemaVersion":1,"modulePath":"engine/reference/world/WorldTime.md","moduleTitle":"world/WorldTime","source":"engine/world/WorldTime.js","import":"/engine/world/WorldTime.js","sourceHash":"9c0c9af5250b975db8cefabc83d927f799e3253f118622202b252da498855515","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/WorldTime.js#0008:SECONDS_PER_DAY","exportIndex":8,"name":"SECONDS_PER_DAY","kind":"constant","signature":"SECONDS_PER_DAY","summary":"Derived constants"}
{"schemaVersion":1,"modulePath":"engine/reference/world/WorldTime.md","moduleTitle":"world/WorldTime","source":"engine/world/WorldTime.js","import":"/engine/world/WorldTime.js","sourceHash":"9c0c9af5250b975db8cefabc83d927f799e3253f118622202b252da498855515","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/WorldTime.js#0009:DAYS_PER_YEAR","exportIndex":9,"name":"DAYS_PER_YEAR","kind":"constant","signature":"DAYS_PER_YEAR","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/WorldTime.md","moduleTitle":"world/WorldTime","source":"engine/world/WorldTime.js","import":"/engine/world/WorldTime.js","sourceHash":"9c0c9af5250b975db8cefabc83d927f799e3253f118622202b252da498855515","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/WorldTime.js#0010:TICKS_PER_DAY","exportIndex":10,"name":"TICKS_PER_DAY","kind":"constant","signature":"TICKS_PER_DAY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/WorldTime.md","moduleTitle":"world/WorldTime","source":"engine/world/WorldTime.js","import":"/engine/world/WorldTime.js","sourceHash":"9c0c9af5250b975db8cefabc83d927f799e3253f118622202b252da498855515","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/WorldTime.js#0011:TICKS_PER_YEAR","exportIndex":11,"name":"TICKS_PER_YEAR","kind":"constant","signature":"TICKS_PER_YEAR","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/WorldTime.md","moduleTitle":"world/WorldTime","source":"engine/world/WorldTime.js","import":"/engine/world/WorldTime.js","sourceHash":"9c0c9af5250b975db8cefabc83d927f799e3253f118622202b252da498855515","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/WorldTime.js#0012:MOON_PHASE","exportIndex":12,"name":"MOON_PHASE","kind":"constant","signature":"MOON_PHASE","summary":"Moon phases"}
{"schemaVersion":1,"modulePath":"engine/reference/world/WorldTime.md","moduleTitle":"world/WorldTime","source":"engine/world/WorldTime.js","import":"/engine/world/WorldTime.js","sourceHash":"9c0c9af5250b975db8cefabc83d927f799e3253f118622202b252da498855515","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/WorldTime.js#0013:SEASON","exportIndex":13,"name":"SEASON","kind":"constant","signature":"SEASON","summary":"Season names"}
{"schemaVersion":1,"modulePath":"engine/reference/world/ZoneManager.md","moduleTitle":"world/ZoneManager","source":"engine/world/ZoneManager.js","import":"/engine/world/ZoneManager.js","sourceHash":"d554ae82dc2af776ceef23a2d3fff73a1510bc845d732270719d118f48a268be","subsystem":"engine","recordType":"api-module","id":"module:engine/world/ZoneManager.js","title":"world/ZoneManager","summary":"Represents a single zone in the world","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/world/ZoneManager.md","moduleTitle":"world/ZoneManager","source":"engine/world/ZoneManager.js","import":"/engine/world/ZoneManager.js","sourceHash":"d554ae82dc2af776ceef23a2d3fff73a1510bc845d732270719d118f48a268be","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/ZoneManager.js#0000:Zone","exportIndex":0,"name":"Zone","kind":"class","signature":"class Zone","summary":"Represents a single zone in the world"}
{"schemaVersion":1,"modulePath":"engine/reference/world/ZoneManager.md","moduleTitle":"world/ZoneManager","source":"engine/world/ZoneManager.js","import":"/engine/world/ZoneManager.js","sourceHash":"d554ae82dc2af776ceef23a2d3fff73a1510bc845d732270719d118f48a268be","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/ZoneManager.js#0001:ZoneManager","exportIndex":1,"name":"ZoneManager","kind":"class","signature":"class ZoneManager","summary":"Manages all zones in the world"}
{"schemaVersion":1,"modulePath":"engine/reference/world/ZoneManager.md","moduleTitle":"world/ZoneManager","source":"engine/world/ZoneManager.js","import":"/engine/world/ZoneManager.js","sourceHash":"d554ae82dc2af776ceef23a2d3fff73a1510bc845d732270719d118f48a268be","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/ZoneManager.js#0002:ZONE_TYPE","exportIndex":2,"name":"ZONE_TYPE","kind":"constant","signature":"ZONE_TYPE","summary":"Zone types"}
{"schemaVersion":1,"modulePath":"engine/reference/world/ZoneManager.md","moduleTitle":"world/ZoneManager","source":"engine/world/ZoneManager.js","import":"/engine/world/ZoneManager.js","sourceHash":"d554ae82dc2af776ceef23a2d3fff73a1510bc845d732270719d118f48a268be","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/ZoneManager.js#0003:ZONE_SHAPE","exportIndex":3,"name":"ZONE_SHAPE","kind":"constant","signature":"ZONE_SHAPE","summary":"Zone shapes"}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/GPUWorldGenerator.md","moduleTitle":"world/generation/GPUWorldGenerator","source":"engine/world/generation/GPUWorldGenerator.js","import":"/engine/world/generation/GPUWorldGenerator.js","sourceHash":"55a71c84f3c2ebda639c8a7acb7b8aa52e45f750d820f4afad38edbd28fae508","subsystem":"engine","recordType":"api-module","id":"module:engine/world/generation/GPUWorldGenerator.js","title":"world/generation/GPUWorldGenerator","summary":"","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/GPUWorldGenerator.md","moduleTitle":"world/generation/GPUWorldGenerator","source":"engine/world/generation/GPUWorldGenerator.js","import":"/engine/world/generation/GPUWorldGenerator.js","sourceHash":"55a71c84f3c2ebda639c8a7acb7b8aa52e45f750d820f4afad38edbd28fae508","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/GPUWorldGenerator.js#0000:GPUWorldGenerator","exportIndex":0,"name":"GPUWorldGenerator","kind":"class","signature":"class GPUWorldGenerator","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/GPUWorldGenerator.md","moduleTitle":"world/generation/GPUWorldGenerator","source":"engine/world/generation/GPUWorldGenerator.js","import":"/engine/world/generation/GPUWorldGenerator.js","sourceHash":"55a71c84f3c2ebda639c8a7acb7b8aa52e45f750d820f4afad38edbd28fae508","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/GPUWorldGenerator.js#0001:NOISE_LIBRARY_WGSL","exportIndex":1,"name":"NOISE_LIBRARY_WGSL","kind":"constant","signature":"NOISE_LIBRARY_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/GPUWorldGenerator.md","moduleTitle":"world/generation/GPUWorldGenerator","source":"engine/world/generation/GPUWorldGenerator.js","import":"/engine/world/generation/GPUWorldGenerator.js","sourceHash":"55a71c84f3c2ebda639c8a7acb7b8aa52e45f750d820f4afad38edbd28fae508","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/GPUWorldGenerator.js#0002:CLIMATE_BIOME_WGSL","exportIndex":2,"name":"CLIMATE_BIOME_WGSL","kind":"constant","signature":"CLIMATE_BIOME_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/GPUWorldGenerator.md","moduleTitle":"world/generation/GPUWorldGenerator","source":"engine/world/generation/GPUWorldGenerator.js","import":"/engine/world/generation/GPUWorldGenerator.js","sourceHash":"55a71c84f3c2ebda639c8a7acb7b8aa52e45f750d820f4afad38edbd28fae508","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/GPUWorldGenerator.js#0003:CAVE_WGSL","exportIndex":3,"name":"CAVE_WGSL","kind":"constant","signature":"CAVE_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/GPUWorldGenerator.md","moduleTitle":"world/generation/GPUWorldGenerator","source":"engine/world/generation/GPUWorldGenerator.js","import":"/engine/world/generation/GPUWorldGenerator.js","sourceHash":"55a71c84f3c2ebda639c8a7acb7b8aa52e45f750d820f4afad38edbd28fae508","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/GPUWorldGenerator.js#0004:STRUCTURE_WGSL","exportIndex":4,"name":"STRUCTURE_WGSL","kind":"constant","signature":"STRUCTURE_WGSL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/GPUWorldGenerator.md","moduleTitle":"world/generation/GPUWorldGenerator","source":"engine/world/generation/GPUWorldGenerator.js","import":"/engine/world/generation/GPUWorldGenerator.js","sourceHash":"55a71c84f3c2ebda639c8a7acb7b8aa52e45f750d820f4afad38edbd28fae508","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/GPUWorldGenerator.js#0005:TERRAIN_GEN_SHADER","exportIndex":5,"name":"TERRAIN_GEN_SHADER","kind":"constant","signature":"TERRAIN_GEN_SHADER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/HydraulicErosion.md","moduleTitle":"world/generation/HydraulicErosion","source":"engine/world/generation/HydraulicErosion.js","import":"/engine/world/generation/HydraulicErosion.js","sourceHash":"916f93618a5067c0429e05f2f5364762290b3a062233b404bf25943a299de8cd","subsystem":"engine","recordType":"api-module","id":"module:engine/world/generation/HydraulicErosion.js","title":"world/generation/HydraulicErosion","summary":"HydraulicErosion - GPU particle-based erosion with momentum","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/HydraulicErosion.md","moduleTitle":"world/generation/HydraulicErosion","source":"engine/world/generation/HydraulicErosion.js","import":"/engine/world/generation/HydraulicErosion.js","sourceHash":"916f93618a5067c0429e05f2f5364762290b3a062233b404bf25943a299de8cd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/HydraulicErosion.js#0000:HydraulicErosion","exportIndex":0,"name":"HydraulicErosion","kind":"class","signature":"class HydraulicErosion","summary":"HydraulicErosion - GPU particle-based erosion with momentum"}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/LayerMap.md","moduleTitle":"world/generation/LayerMap","source":"engine/world/generation/LayerMap.js","import":"/engine/world/generation/LayerMap.js","sourceHash":"6d15bee4cf217f81cf0ae7be0e391f9a0136b55ee98dad415660c1eee1b7c0ab","subsystem":"engine","recordType":"api-module","id":"module:engine/world/generation/LayerMap.js","title":"world/generation/LayerMap","summary":"LayerMap - GPU-resident stratigraphic terrain data structure","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/LayerMap.md","moduleTitle":"world/generation/LayerMap","source":"engine/world/generation/LayerMap.js","import":"/engine/world/generation/LayerMap.js","sourceHash":"6d15bee4cf217f81cf0ae7be0e391f9a0136b55ee98dad415660c1eee1b7c0ab","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/LayerMap.js#0000:LayerMap","exportIndex":0,"name":"LayerMap","kind":"class","signature":"class LayerMap","summary":"LayerMap - GPU-resident stratigraphic terrain data structure"}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/LayerMap.md","moduleTitle":"world/generation/LayerMap","source":"engine/world/generation/LayerMap.js","import":"/engine/world/generation/LayerMap.js","sourceHash":"6d15bee4cf217f81cf0ae7be0e391f9a0136b55ee98dad415660c1eee1b7c0ab","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/LayerMap.js#0001:MATERIAL_ID","exportIndex":1,"name":"MATERIAL_ID","kind":"constant","signature":"MATERIAL_ID","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/LayerMap.md","moduleTitle":"world/generation/LayerMap","source":"engine/world/generation/LayerMap.js","import":"/engine/world/generation/LayerMap.js","sourceHash":"6d15bee4cf217f81cf0ae7be0e391f9a0136b55ee98dad415660c1eee1b7c0ab","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/LayerMap.js#0002:MATERIAL_PROPERTIES","exportIndex":2,"name":"MATERIAL_PROPERTIES","kind":"constant","signature":"MATERIAL_PROPERTIES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/ProceduralTreeGenerator.md","moduleTitle":"world/generation/ProceduralTreeGenerator","source":"engine/world/generation/ProceduralTreeGenerator.js","import":"/engine/world/generation/ProceduralTreeGenerator.js","sourceHash":"2a7c938c6d4e8dda1610a9ec68332d5f5057be0c35311a8cc22f479ffd77d27a","subsystem":"engine","recordType":"api-module","id":"module:engine/world/generation/ProceduralTreeGenerator.js","title":"world/generation/ProceduralTreeGenerator","summary":"GPU Grass Instancer - Generates millions of grass blades via mesh shaders INTEGRATION: - Uses shared particle system for grass blade physics - Uses SpatialHashCompute for wind field queries - Uses WindSimulation for dynamic wind effects Uses indirect instancing with per-blade data generated on GPU: - Position jittered from grid - Height/width variation - Wind animation parameters - LOD based on camera distance","exportCount":11}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/ProceduralTreeGenerator.md","moduleTitle":"world/generation/ProceduralTreeGenerator","source":"engine/world/generation/ProceduralTreeGenerator.js","import":"/engine/world/generation/ProceduralTreeGenerator.js","sourceHash":"2a7c938c6d4e8dda1610a9ec68332d5f5057be0c35311a8cc22f479ffd77d27a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/ProceduralTreeGenerator.js#0000:ProceduralTreeGenerator","exportIndex":0,"name":"ProceduralTreeGenerator","kind":"class","signature":"class ProceduralTreeGenerator","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/ProceduralTreeGenerator.md","moduleTitle":"world/generation/ProceduralTreeGenerator","source":"engine/world/generation/ProceduralTreeGenerator.js","import":"/engine/world/generation/ProceduralTreeGenerator.js","sourceHash":"2a7c938c6d4e8dda1610a9ec68332d5f5057be0c35311a8cc22f479ffd77d27a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/ProceduralTreeGenerator.js#0001:GrassInstancer","exportIndex":1,"name":"GrassInstancer","kind":"class","signature":"class GrassInstancer","summary":"GPU Grass Instancer - Generates millions of grass blades via mesh shaders INTEGRATION: - Uses shared particle system for grass blade physics - Uses SpatialHashCompute for wind field queries - Uses WindSimulation for dynamic wind effects Uses indirect instancing with per-blade data generated on GPU: - Position jittered from grid - Height/width variation - Wind animation parameters - LOD based on camera distance"}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/ProceduralTreeGenerator.md","moduleTitle":"world/generation/ProceduralTreeGenerator","source":"engine/world/generation/ProceduralTreeGenerator.js","import":"/engine/world/generation/ProceduralTreeGenerator.js","sourceHash":"2a7c938c6d4e8dda1610a9ec68332d5f5057be0c35311a8cc22f479ffd77d27a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/ProceduralTreeGenerator.js#0002:proceduralTreePositionHash3D","exportIndex":2,"name":"proceduralTreePositionHash3D","kind":"function","signature":"proceduralTreePositionHash3D(x, y, z)","summary":"Hash function for position-based determinism"}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/ProceduralTreeGenerator.md","moduleTitle":"world/generation/ProceduralTreeGenerator","source":"engine/world/generation/ProceduralTreeGenerator.js","import":"/engine/world/generation/ProceduralTreeGenerator.js","sourceHash":"2a7c938c6d4e8dda1610a9ec68332d5f5057be0c35311a8cc22f479ffd77d27a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/ProceduralTreeGenerator.js#0003:proceduralTreeDefaultSeed2D","exportIndex":3,"name":"proceduralTreeDefaultSeed2D","kind":"function","signature":"proceduralTreeDefaultSeed2D(x, z)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/ProceduralTreeGenerator.md","moduleTitle":"world/generation/ProceduralTreeGenerator","source":"engine/world/generation/ProceduralTreeGenerator.js","import":"/engine/world/generation/ProceduralTreeGenerator.js","sourceHash":"2a7c938c6d4e8dda1610a9ec68332d5f5057be0c35311a8cc22f479ffd77d27a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/ProceduralTreeGenerator.js#0004:grassPatchBladeSeed3D","exportIndex":4,"name":"grassPatchBladeSeed3D","kind":"function","signature":"grassPatchBladeSeed3D(patchX, patchZ, bladeIndex)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/ProceduralTreeGenerator.md","moduleTitle":"world/generation/ProceduralTreeGenerator","source":"engine/world/generation/ProceduralTreeGenerator.js","import":"/engine/world/generation/ProceduralTreeGenerator.js","sourceHash":"2a7c938c6d4e8dda1610a9ec68332d5f5057be0c35311a8cc22f479ffd77d27a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/ProceduralTreeGenerator.js#0005:TREE_SPECIES","exportIndex":5,"name":"TREE_SPECIES","kind":"constant","signature":"TREE_SPECIES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/ProceduralTreeGenerator.md","moduleTitle":"world/generation/ProceduralTreeGenerator","source":"engine/world/generation/ProceduralTreeGenerator.js","import":"/engine/world/generation/ProceduralTreeGenerator.js","sourceHash":"2a7c938c6d4e8dda1610a9ec68332d5f5057be0c35311a8cc22f479ffd77d27a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/ProceduralTreeGenerator.js#0006:BIOME_TREE_DENSITY","exportIndex":6,"name":"BIOME_TREE_DENSITY","kind":"constant","signature":"BIOME_TREE_DENSITY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/ProceduralTreeGenerator.md","moduleTitle":"world/generation/ProceduralTreeGenerator","source":"engine/world/generation/ProceduralTreeGenerator.js","import":"/engine/world/generation/ProceduralTreeGenerator.js","sourceHash":"2a7c938c6d4e8dda1610a9ec68332d5f5057be0c35311a8cc22f479ffd77d27a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/ProceduralTreeGenerator.js#0007:FLUFFY_FOLIAGE_SHADER","exportIndex":7,"name":"FLUFFY_FOLIAGE_SHADER","kind":"constant","signature":"FLUFFY_FOLIAGE_SHADER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/ProceduralTreeGenerator.md","moduleTitle":"world/generation/ProceduralTreeGenerator","source":"engine/world/generation/ProceduralTreeGenerator.js","import":"/engine/world/generation/ProceduralTreeGenerator.js","sourceHash":"2a7c938c6d4e8dda1610a9ec68332d5f5057be0c35311a8cc22f479ffd77d27a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/ProceduralTreeGenerator.js#0008:GRASS_TYPES","exportIndex":8,"name":"GRASS_TYPES","kind":"constant","signature":"GRASS_TYPES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/ProceduralTreeGenerator.md","moduleTitle":"world/generation/ProceduralTreeGenerator","source":"engine/world/generation/ProceduralTreeGenerator.js","import":"/engine/world/generation/ProceduralTreeGenerator.js","sourceHash":"2a7c938c6d4e8dda1610a9ec68332d5f5057be0c35311a8cc22f479ffd77d27a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/ProceduralTreeGenerator.js#0009:STYLIZED_GRASS_SHADER","exportIndex":9,"name":"STYLIZED_GRASS_SHADER","kind":"constant","signature":"STYLIZED_GRASS_SHADER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/ProceduralTreeGenerator.md","moduleTitle":"world/generation/ProceduralTreeGenerator","source":"engine/world/generation/ProceduralTreeGenerator.js","import":"/engine/world/generation/ProceduralTreeGenerator.js","sourceHash":"2a7c938c6d4e8dda1610a9ec68332d5f5057be0c35311a8cc22f479ffd77d27a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/ProceduralTreeGenerator.js#0010:FLUFFY_GRASS_SHADER","exportIndex":10,"name":"FLUFFY_GRASS_SHADER","kind":"constant","signature":"FLUFFY_GRASS_SHADER","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/TectonicSimulation.md","moduleTitle":"world/generation/TectonicSimulation","source":"engine/world/generation/TectonicSimulation.js","import":"/engine/world/generation/TectonicSimulation.js","sourceHash":"47436cdd589d77b4126d5fe2d00bb1b77f5fd446e11a5cbdaba46da221850ff1","subsystem":"engine","recordType":"api-module","id":"module:engine/world/generation/TectonicSimulation.js","title":"world/generation/TectonicSimulation","summary":"TectonicSimulation - GPU plate tectonics using clustered convection","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/TectonicSimulation.md","moduleTitle":"world/generation/TectonicSimulation","source":"engine/world/generation/TectonicSimulation.js","import":"/engine/world/generation/TectonicSimulation.js","sourceHash":"47436cdd589d77b4126d5fe2d00bb1b77f5fd446e11a5cbdaba46da221850ff1","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/TectonicSimulation.js#0000:TectonicSimulation","exportIndex":0,"name":"TectonicSimulation","kind":"class","signature":"class TectonicSimulation","summary":"TectonicSimulation - GPU plate tectonics using clustered convection"}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/ThermalErosion.md","moduleTitle":"world/generation/ThermalErosion","source":"engine/world/generation/ThermalErosion.js","import":"/engine/world/generation/ThermalErosion.js","sourceHash":"48afd7165c4d4bf422887822902f0144f8e39929cfd46e2e8dca121a18e7d799","subsystem":"engine","recordType":"api-module","id":"module:engine/world/generation/ThermalErosion.js","title":"world/generation/ThermalErosion","summary":"ThermalErosion.js - GPU Material-Specific Talus Angle Erosion Implements thermal erosion (slippage) with: - Per-material talus angles (angle of repose) - Mass-conserving material transfer between cells - Support for LayerMap stratigraphy Based on: SoilMachine thermal erosion Key concept: If slope > tan(θ_material), mass transfers downhill - Sand: ~30° (gentle slopes) - Rock: ~85° (near-vertical cliffs)","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/ThermalErosion.md","moduleTitle":"world/generation/ThermalErosion","source":"engine/world/generation/ThermalErosion.js","import":"/engine/world/generation/ThermalErosion.js","sourceHash":"48afd7165c4d4bf422887822902f0144f8e39929cfd46e2e8dca121a18e7d799","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/ThermalErosion.js#0000:ThermalErosion","exportIndex":0,"name":"ThermalErosion","kind":"class","signature":"class ThermalErosion","summary":"ThermalErosion - GPU material-specific talus angle erosion"}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/ThermalErosion.md","moduleTitle":"world/generation/ThermalErosion","source":"engine/world/generation/ThermalErosion.js","import":"/engine/world/generation/ThermalErosion.js","sourceHash":"48afd7165c4d4bf422887822902f0144f8e39929cfd46e2e8dca121a18e7d799","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/ThermalErosion.js#0001:TALUS_ANGLES","exportIndex":1,"name":"TALUS_ANGLES","kind":"constant","signature":"TALUS_ANGLES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/UnifiedTerrainPipeline.md","moduleTitle":"world/generation/UnifiedTerrainPipeline","source":"engine/world/generation/UnifiedTerrainPipeline.js","import":"/engine/world/generation/UnifiedTerrainPipeline.js","sourceHash":"1cef600c521069f2be4faf138a0a7d398e1ad96815566f99c35fcd33bdfcb19a","subsystem":"engine","recordType":"api-module","id":"module:engine/world/generation/UnifiedTerrainPipeline.js","title":"world/generation/UnifiedTerrainPipeline","summary":"UnifiedTerrainPipeline.js - Complete Procedural Geomorphology System Orchestrates the full terrain generation and simulation pipeline: 1. TECTONICS (Initialization Phase) - Clustered Convection plate simulation - JFA Voronoi for plate boundaries - Subduction/collision → bedrock heightmap 2. HYDROLOGY (Real-time Simulation) - Momentum-based particle erosion - Meandering river formation - Sediment transport & deposition 3. STRATIGRAPHY (LayerMap) - Multi-layer terrain storage - Per-material properties - Talus angle enforcement 4. THERMAL EROSION (Real-time) - Material-specific slippage - Cliff formation - Scree slopes Based on: Nick McDonald's research (Clustered Convection, SimpleHydrology, SoilMachine)","exportCount":8}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/UnifiedTerrainPipeline.md","moduleTitle":"world/generation/UnifiedTerrainPipeline","source":"engine/world/generation/UnifiedTerrainPipeline.js","import":"/engine/world/generation/UnifiedTerrainPipeline.js","sourceHash":"1cef600c521069f2be4faf138a0a7d398e1ad96815566f99c35fcd33bdfcb19a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/UnifiedTerrainPipeline.js#0000:UnifiedTerrainPipeline","exportIndex":0,"name":"UnifiedTerrainPipeline","kind":"class","signature":"class UnifiedTerrainPipeline","summary":"UnifiedTerrainPipeline - Orchestrates all terrain generation systems"}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/UnifiedTerrainPipeline.md","moduleTitle":"world/generation/UnifiedTerrainPipeline","source":"engine/world/generation/UnifiedTerrainPipeline.js","import":"/engine/world/generation/UnifiedTerrainPipeline.js","sourceHash":"1cef600c521069f2be4faf138a0a7d398e1ad96815566f99c35fcd33bdfcb19a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/UnifiedTerrainPipeline.js#0001:HydraulicErosion","exportIndex":1,"name":"HydraulicErosion","kind":"re-export","signature":"HydraulicErosion","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/UnifiedTerrainPipeline.md","moduleTitle":"world/generation/UnifiedTerrainPipeline","source":"engine/world/generation/UnifiedTerrainPipeline.js","import":"/engine/world/generation/UnifiedTerrainPipeline.js","sourceHash":"1cef600c521069f2be4faf138a0a7d398e1ad96815566f99c35fcd33bdfcb19a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/UnifiedTerrainPipeline.js#0002:LayerMap","exportIndex":2,"name":"LayerMap","kind":"re-export","signature":"LayerMap","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/UnifiedTerrainPipeline.md","moduleTitle":"world/generation/UnifiedTerrainPipeline","source":"engine/world/generation/UnifiedTerrainPipeline.js","import":"/engine/world/generation/UnifiedTerrainPipeline.js","sourceHash":"1cef600c521069f2be4faf138a0a7d398e1ad96815566f99c35fcd33bdfcb19a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/UnifiedTerrainPipeline.js#0003:MATERIAL_ID","exportIndex":3,"name":"MATERIAL_ID","kind":"re-export","signature":"MATERIAL_ID","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/UnifiedTerrainPipeline.md","moduleTitle":"world/generation/UnifiedTerrainPipeline","source":"engine/world/generation/UnifiedTerrainPipeline.js","import":"/engine/world/generation/UnifiedTerrainPipeline.js","sourceHash":"1cef600c521069f2be4faf138a0a7d398e1ad96815566f99c35fcd33bdfcb19a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/UnifiedTerrainPipeline.js#0004:MATERIAL_PROPERTIES","exportIndex":4,"name":"MATERIAL_PROPERTIES","kind":"re-export","signature":"MATERIAL_PROPERTIES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/UnifiedTerrainPipeline.md","moduleTitle":"world/generation/UnifiedTerrainPipeline","source":"engine/world/generation/UnifiedTerrainPipeline.js","import":"/engine/world/generation/UnifiedTerrainPipeline.js","sourceHash":"1cef600c521069f2be4faf138a0a7d398e1ad96815566f99c35fcd33bdfcb19a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/UnifiedTerrainPipeline.js#0005:TALUS_ANGLES","exportIndex":5,"name":"TALUS_ANGLES","kind":"re-export","signature":"TALUS_ANGLES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/UnifiedTerrainPipeline.md","moduleTitle":"world/generation/UnifiedTerrainPipeline","source":"engine/world/generation/UnifiedTerrainPipeline.js","import":"/engine/world/generation/UnifiedTerrainPipeline.js","sourceHash":"1cef600c521069f2be4faf138a0a7d398e1ad96815566f99c35fcd33bdfcb19a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/UnifiedTerrainPipeline.js#0006:TectonicSimulation","exportIndex":6,"name":"TectonicSimulation","kind":"re-export","signature":"TectonicSimulation","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/UnifiedTerrainPipeline.md","moduleTitle":"world/generation/UnifiedTerrainPipeline","source":"engine/world/generation/UnifiedTerrainPipeline.js","import":"/engine/world/generation/UnifiedTerrainPipeline.js","sourceHash":"1cef600c521069f2be4faf138a0a7d398e1ad96815566f99c35fcd33bdfcb19a","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/UnifiedTerrainPipeline.js#0007:ThermalErosion","exportIndex":7,"name":"ThermalErosion","kind":"re-export","signature":"ThermalErosion","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/VoronoiTextureBlend.md","moduleTitle":"world/generation/VoronoiTextureBlend","source":"engine/world/generation/VoronoiTextureBlend.js","import":"/engine/world/generation/VoronoiTextureBlend.js","sourceHash":"5dd8b1b606daad1c0f2179082296d9f50da78dc06947b546ac564384e738755c","subsystem":"engine","recordType":"api-module","id":"module:engine/world/generation/VoronoiTextureBlend.js","title":"world/generation/VoronoiTextureBlend","summary":"Sample Voronoi data at a world position (CPU fallback)","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/VoronoiTextureBlend.md","moduleTitle":"world/generation/VoronoiTextureBlend","source":"engine/world/generation/VoronoiTextureBlend.js","import":"/engine/world/generation/VoronoiTextureBlend.js","sourceHash":"5dd8b1b606daad1c0f2179082296d9f50da78dc06947b546ac564384e738755c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/VoronoiTextureBlend.js#0000:VoronoiTextureBlend","exportIndex":0,"name":"VoronoiTextureBlend","kind":"class","signature":"class VoronoiTextureBlend","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/VoronoiTextureBlend.md","moduleTitle":"world/generation/VoronoiTextureBlend","source":"engine/world/generation/VoronoiTextureBlend.js","import":"/engine/world/generation/VoronoiTextureBlend.js","sourceHash":"5dd8b1b606daad1c0f2179082296d9f50da78dc06947b546ac564384e738755c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/VoronoiTextureBlend.js#0001:voronoiTextureVariationHash","exportIndex":1,"name":"voronoiTextureVariationHash","kind":"function","signature":"voronoiTextureVariationHash(x, z, index)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/VoronoiTextureBlend.md","moduleTitle":"world/generation/VoronoiTextureBlend","source":"engine/world/generation/VoronoiTextureBlend.js","import":"/engine/world/generation/VoronoiTextureBlend.js","sourceHash":"5dd8b1b606daad1c0f2179082296d9f50da78dc06947b546ac564384e738755c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/VoronoiTextureBlend.js#0002:sampleVoronoi","exportIndex":2,"name":"sampleVoronoi","kind":"function","signature":"sampleVoronoi(centroids, x, z)","summary":"Sample Voronoi data at a world position (CPU fallback)"}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/WindErosion.md","moduleTitle":"world/generation/WindErosion","source":"engine/world/generation/WindErosion.js","import":"/engine/world/generation/WindErosion.js","sourceHash":"37b72e2bb29df3f5fa606be423fa8a67c6be10504b0be065fd94d17b6eae2702","subsystem":"engine","recordType":"api-module","id":"module:engine/world/generation/WindErosion.js","title":"world/generation/WindErosion","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/WindErosion.md","moduleTitle":"world/generation/WindErosion","source":"engine/world/generation/WindErosion.js","import":"/engine/world/generation/WindErosion.js","sourceHash":"37b72e2bb29df3f5fa606be423fa8a67c6be10504b0be065fd94d17b6eae2702","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/WindErosion.js#0000:WindErosion","exportIndex":0,"name":"WindErosion","kind":"class","signature":"class WindErosion","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/WorldGenerator.md","moduleTitle":"world/generation/WorldGenerator","source":"engine/world/generation/WorldGenerator.js","import":"/engine/world/generation/WorldGenerator.js","sourceHash":"cd440250acccdf5d9fca827629708bfd48b449e073f66f7baa4209f51965a444","subsystem":"engine","recordType":"api-module","id":"module:engine/world/generation/WorldGenerator.js","title":"world/generation/WorldGenerator","summary":"","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/WorldGenerator.md","moduleTitle":"world/generation/WorldGenerator","source":"engine/world/generation/WorldGenerator.js","import":"/engine/world/generation/WorldGenerator.js","sourceHash":"cd440250acccdf5d9fca827629708bfd48b449e073f66f7baa4209f51965a444","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/WorldGenerator.js#0000:WorldGenerator","exportIndex":0,"name":"WorldGenerator","kind":"class","signature":"class WorldGenerator","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/WorldGenerator.md","moduleTitle":"world/generation/WorldGenerator","source":"engine/world/generation/WorldGenerator.js","import":"/engine/world/generation/WorldGenerator.js","sourceHash":"cd440250acccdf5d9fca827629708bfd48b449e073f66f7baa4209f51965a444","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/WorldGenerator.js#0001:worldGeneratorHash3D","exportIndex":1,"name":"worldGeneratorHash3D","kind":"function","signature":"worldGeneratorHash3D(x, y, z)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/WorldGenerator.md","moduleTitle":"world/generation/WorldGenerator","source":"engine/world/generation/WorldGenerator.js","import":"/engine/world/generation/WorldGenerator.js","sourceHash":"cd440250acccdf5d9fca827629708bfd48b449e073f66f7baa4209f51965a444","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/WorldGenerator.js#0002:worldGeneratorDungeonSeed2D","exportIndex":2,"name":"worldGeneratorDungeonSeed2D","kind":"function","signature":"worldGeneratorDungeonSeed2D(centerX, centerZ)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/WorldGenerator.md","moduleTitle":"world/generation/WorldGenerator","source":"engine/world/generation/WorldGenerator.js","import":"/engine/world/generation/WorldGenerator.js","sourceHash":"cd440250acccdf5d9fca827629708bfd48b449e073f66f7baa4209f51965a444","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/WorldGenerator.js#0003:BIOME","exportIndex":3,"name":"BIOME","kind":"constant","signature":"BIOME","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/WorldMapGenerator.md","moduleTitle":"world/generation/WorldMapGenerator","source":"engine/world/generation/WorldMapGenerator.js","import":"/engine/world/generation/WorldMapGenerator.js","sourceHash":"f1406179c07c55b03a758f3c35b52cb9aa0d63d391ef7c2f68a94b3c44c5cef7","subsystem":"engine","recordType":"api-module","id":"module:engine/world/generation/WorldMapGenerator.js","title":"world/generation/WorldMapGenerator","summary":"WorldMapGenerator.js - Full World Map Preview Generator Generates a top-down world map from all loaded chunks, similar to Minecraft's world maps. Used for save file previews. Features: - Scans all chunks to build a complete heightmap - Color-codes terrain by material type - Height-based shading for 3D effect - Exports as PNG data URL or blob","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/WorldMapGenerator.md","moduleTitle":"world/generation/WorldMapGenerator","source":"engine/world/generation/WorldMapGenerator.js","import":"/engine/world/generation/WorldMapGenerator.js","sourceHash":"f1406179c07c55b03a758f3c35b52cb9aa0d63d391ef7c2f68a94b3c44c5cef7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/WorldMapGenerator.js#0000:WorldMapGenerator","exportIndex":0,"name":"WorldMapGenerator","kind":"class","signature":"class WorldMapGenerator","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/index.md","moduleTitle":"world/generation/index","source":"engine/world/generation/index.js","import":"/engine/world/generation/index.js","sourceHash":"f666d6e4c7badf237fefa5282a9bab5c8fe38a30633dc44686dd9c060e9b27b4","subsystem":"engine","recordType":"api-module","id":"module:engine/world/generation/index.js","title":"world/generation/index","summary":"","exportCount":12}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/index.md","moduleTitle":"world/generation/index","source":"engine/world/generation/index.js","import":"/engine/world/generation/index.js","sourceHash":"f666d6e4c7badf237fefa5282a9bab5c8fe38a30633dc44686dd9c060e9b27b4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/index.js#0000:BIOME","exportIndex":0,"name":"BIOME","kind":"re-export","signature":"BIOME","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/index.md","moduleTitle":"world/generation/index","source":"engine/world/generation/index.js","import":"/engine/world/generation/index.js","sourceHash":"f666d6e4c7badf237fefa5282a9bab5c8fe38a30633dc44686dd9c060e9b27b4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/index.js#0001:GPUWorldGenerator","exportIndex":1,"name":"GPUWorldGenerator","kind":"re-export","signature":"GPUWorldGenerator","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/index.md","moduleTitle":"world/generation/index","source":"engine/world/generation/index.js","import":"/engine/world/generation/index.js","sourceHash":"f666d6e4c7badf237fefa5282a9bab5c8fe38a30633dc44686dd9c060e9b27b4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/index.js#0002:HydraulicErosion","exportIndex":2,"name":"HydraulicErosion","kind":"re-export","signature":"HydraulicErosion","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/index.md","moduleTitle":"world/generation/index","source":"engine/world/generation/index.js","import":"/engine/world/generation/index.js","sourceHash":"f666d6e4c7badf237fefa5282a9bab5c8fe38a30633dc44686dd9c060e9b27b4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/index.js#0003:LayerMap","exportIndex":3,"name":"LayerMap","kind":"re-export","signature":"LayerMap","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/index.md","moduleTitle":"world/generation/index","source":"engine/world/generation/index.js","import":"/engine/world/generation/index.js","sourceHash":"f666d6e4c7badf237fefa5282a9bab5c8fe38a30633dc44686dd9c060e9b27b4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/index.js#0004:ProceduralTreeGenerator","exportIndex":4,"name":"ProceduralTreeGenerator","kind":"re-export","signature":"ProceduralTreeGenerator","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/index.md","moduleTitle":"world/generation/index","source":"engine/world/generation/index.js","import":"/engine/world/generation/index.js","sourceHash":"f666d6e4c7badf237fefa5282a9bab5c8fe38a30633dc44686dd9c060e9b27b4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/index.js#0005:TectonicSimulation","exportIndex":5,"name":"TectonicSimulation","kind":"re-export","signature":"TectonicSimulation","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/index.md","moduleTitle":"world/generation/index","source":"engine/world/generation/index.js","import":"/engine/world/generation/index.js","sourceHash":"f666d6e4c7badf237fefa5282a9bab5c8fe38a30633dc44686dd9c060e9b27b4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/index.js#0006:ThermalErosion","exportIndex":6,"name":"ThermalErosion","kind":"re-export","signature":"ThermalErosion","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/index.md","moduleTitle":"world/generation/index","source":"engine/world/generation/index.js","import":"/engine/world/generation/index.js","sourceHash":"f666d6e4c7badf237fefa5282a9bab5c8fe38a30633dc44686dd9c060e9b27b4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/index.js#0007:UnifiedTerrainPipeline","exportIndex":7,"name":"UnifiedTerrainPipeline","kind":"re-export","signature":"UnifiedTerrainPipeline","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/index.md","moduleTitle":"world/generation/index","source":"engine/world/generation/index.js","import":"/engine/world/generation/index.js","sourceHash":"f666d6e4c7badf237fefa5282a9bab5c8fe38a30633dc44686dd9c060e9b27b4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/index.js#0008:VoronoiTextureBlend","exportIndex":8,"name":"VoronoiTextureBlend","kind":"re-export","signature":"VoronoiTextureBlend","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/index.md","moduleTitle":"world/generation/index","source":"engine/world/generation/index.js","import":"/engine/world/generation/index.js","sourceHash":"f666d6e4c7badf237fefa5282a9bab5c8fe38a30633dc44686dd9c060e9b27b4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/index.js#0009:WindErosion","exportIndex":9,"name":"WindErosion","kind":"re-export","signature":"WindErosion","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/index.md","moduleTitle":"world/generation/index","source":"engine/world/generation/index.js","import":"/engine/world/generation/index.js","sourceHash":"f666d6e4c7badf237fefa5282a9bab5c8fe38a30633dc44686dd9c060e9b27b4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/index.js#0010:WorldGenerator","exportIndex":10,"name":"WorldGenerator","kind":"re-export","signature":"WorldGenerator","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/generation/index.md","moduleTitle":"world/generation/index","source":"engine/world/generation/index.js","import":"/engine/world/generation/index.js","sourceHash":"f666d6e4c7badf237fefa5282a9bab5c8fe38a30633dc44686dd9c060e9b27b4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/generation/index.js#0011:WorldMapGenerator","exportIndex":11,"name":"WorldMapGenerator","kind":"re-export","signature":"WorldMapGenerator","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-module","id":"module:engine/world/index.js","title":"world/index","summary":"","exportCount":81}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0000:BIOME_SCHEMA","exportIndex":0,"name":"BIOME_SCHEMA","kind":"re-export","signature":"BIOME_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0001:BIOME_TYPES","exportIndex":1,"name":"BIOME_TYPES","kind":"re-export","signature":"BIOME_TYPES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0002:BigHierarchicalPosition","exportIndex":2,"name":"BigHierarchicalPosition","kind":"re-export","signature":"BigHierarchicalPosition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0003:CALENDAR_CONFIG","exportIndex":3,"name":"CALENDAR_CONFIG","kind":"re-export","signature":"CALENDAR_CONFIG","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0004:CHUNK_SIZES","exportIndex":4,"name":"CHUNK_SIZES","kind":"re-export","signature":"CHUNK_SIZES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0005:CHUNK_STREAMING_SCHEMA","exportIndex":5,"name":"CHUNK_STREAMING_SCHEMA","kind":"re-export","signature":"CHUNK_STREAMING_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0006:CLIMATE_PARAMS","exportIndex":6,"name":"CLIMATE_PARAMS","kind":"re-export","signature":"CLIMATE_PARAMS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0007:CLIMATE_SCHEMA","exportIndex":7,"name":"CLIMATE_SCHEMA","kind":"re-export","signature":"CLIMATE_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0008:DEFAULT_PLANET_MASS","exportIndex":8,"name":"DEFAULT_PLANET_MASS","kind":"re-export","signature":"DEFAULT_PLANET_MASS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0009:DEFAULT_PLANET_RADIUS","exportIndex":9,"name":"DEFAULT_PLANET_RADIUS","kind":"re-export","signature":"DEFAULT_PLANET_RADIUS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0010:DEFAULT_ROTATION_PERIOD","exportIndex":10,"name":"DEFAULT_ROTATION_PERIOD","kind":"re-export","signature":"DEFAULT_ROTATION_PERIOD","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0011:DoubleVec3","exportIndex":11,"name":"DoubleVec3","kind":"re-export","signature":"DoubleVec3","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0012:EROSION_TYPES","exportIndex":12,"name":"EROSION_TYPES","kind":"re-export","signature":"EROSION_TYPES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0013:FACE","exportIndex":13,"name":"FACE","kind":"re-export","signature":"FACE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0014:FloatingOrigin","exportIndex":14,"name":"FloatingOrigin","kind":"re-export","signature":"FloatingOrigin","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0015:GRAVITATIONAL_CONSTANT","exportIndex":15,"name":"GRAVITATIONAL_CONSTANT","kind":"re-export","signature":"GRAVITATIONAL_CONSTANT","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0016:GameDate","exportIndex":16,"name":"GameDate","kind":"re-export","signature":"GameDate","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0017:HierarchicalPosition","exportIndex":17,"name":"HierarchicalPosition","kind":"re-export","signature":"HierarchicalPosition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0018:HierarchicalTimingWheel","exportIndex":18,"name":"HierarchicalTimingWheel","kind":"re-export","signature":"HierarchicalTimingWheel","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0019:MAX_SAFE_SECTOR","exportIndex":19,"name":"MAX_SAFE_SECTOR","kind":"re-export","signature":"MAX_SAFE_SECTOR","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0020:MIN_GRAVITY","exportIndex":20,"name":"MIN_GRAVITY","kind":"re-export","signature":"MIN_GRAVITY","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0021:MOON_PHASE","exportIndex":21,"name":"MOON_PHASE","kind":"re-export","signature":"MOON_PHASE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0022:NOISE_SCHEMA","exportIndex":22,"name":"NOISE_SCHEMA","kind":"re-export","signature":"NOISE_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0023:Planet","exportIndex":23,"name":"Planet","kind":"re-export","signature":"Planet","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0024:PlanetQuaternion","exportIndex":24,"name":"PlanetQuaternion","kind":"re-export","signature":"PlanetQuaternion","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0025:PlanetaryCoords","exportIndex":25,"name":"PlanetaryCoords","kind":"re-export","signature":"PlanetaryCoords","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0026:PlanetarySystem","exportIndex":26,"name":"PlanetarySystem","kind":"re-export","signature":"PlanetarySystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0027:PlanetaryWorld","exportIndex":27,"name":"PlanetaryWorld","kind":"re-export","signature":"PlanetaryWorld","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0028:REBASE_SNAP","exportIndex":28,"name":"REBASE_SNAP","kind":"re-export","signature":"REBASE_SNAP","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0029:REBASE_THRESHOLD","exportIndex":29,"name":"REBASE_THRESHOLD","kind":"re-export","signature":"REBASE_THRESHOLD","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0030:SEASON","exportIndex":30,"name":"SEASON","kind":"re-export","signature":"SEASON","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0031:SECTOR_HALF","exportIndex":31,"name":"SECTOR_HALF","kind":"re-export","signature":"SECTOR_HALF","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0032:SECTOR_INV","exportIndex":32,"name":"SECTOR_INV","kind":"re-export","signature":"SECTOR_INV","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0033:SECTOR_SIZE","exportIndex":33,"name":"SECTOR_SIZE","kind":"re-export","signature":"SECTOR_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0034:SHELL_THICKNESS","exportIndex":34,"name":"SHELL_THICKNESS","kind":"re-export","signature":"SHELL_THICKNESS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0035:SurfaceAttachment","exportIndex":35,"name":"SurfaceAttachment","kind":"re-export","signature":"SurfaceAttachment","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0036:TERRAIN_SCHEMA","exportIndex":36,"name":"TERRAIN_SCHEMA","kind":"re-export","signature":"TERRAIN_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0037:TICKS_PER_SECOND","exportIndex":37,"name":"TICKS_PER_SECOND","kind":"re-export","signature":"TICKS_PER_SECOND","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0038:TICK_DURATION_MS","exportIndex":38,"name":"TICK_DURATION_MS","kind":"re-export","signature":"TICK_DURATION_MS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0039:TIMESCALE","exportIndex":39,"name":"TIMESCALE","kind":"re-export","signature":"TIMESCALE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0040:TIME_PHASES","exportIndex":40,"name":"TIME_PHASES","kind":"re-export","signature":"TIME_PHASES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0041:WEATHER_SCHEMA","exportIndex":41,"name":"WEATHER_SCHEMA","kind":"re-export","signature":"WEATHER_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0042:WEATHER_TYPES","exportIndex":42,"name":"WEATHER_TYPES","kind":"re-export","signature":"WEATHER_TYPES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0043:WORLD_CONFIG_SCHEMA","exportIndex":43,"name":"WORLD_CONFIG_SCHEMA","kind":"re-export","signature":"WORLD_CONFIG_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0044:WORLD_TIME_SCHEMA","exportIndex":44,"name":"WORLD_TIME_SCHEMA","kind":"re-export","signature":"WORLD_TIME_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0045:WorldTime","exportIndex":45,"name":"WorldTime","kind":"re-export","signature":"WorldTime","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0046:WorldTimeSystem","exportIndex":46,"name":"WorldTimeSystem","kind":"re-export","signature":"WorldTimeSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0047:ZONE_TYPES","exportIndex":47,"name":"ZONE_TYPES","kind":"re-export","signature":"ZONE_TYPES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0048:ZoneManager","exportIndex":48,"name":"ZoneManager","kind":"re-export","signature":"ZoneManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0049:ascInverse","exportIndex":49,"name":"ascInverse","kind":"re-export","signature":"ascInverse","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0050:ascProject","exportIndex":50,"name":"ascProject","kind":"re-export","signature":"ascProject","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0051:combineDouble","exportIndex":51,"name":"combineDouble","kind":"re-export","signature":"combineDouble","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0052:createClimateFromPosition","exportIndex":52,"name":"createClimateFromPosition","kind":"re-export","signature":"createClimateFromPosition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0053:createDefaultTerrain","exportIndex":53,"name":"createDefaultTerrain","kind":"re-export","signature":"createDefaultTerrain","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0054:createDefaultWeather","exportIndex":54,"name":"createDefaultWeather","kind":"re-export","signature":"createDefaultWeather","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0055:createDefaultWorldConfig","exportIndex":55,"name":"createDefaultWorldConfig","kind":"re-export","signature":"createDefaultWorldConfig","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0056:faceToDirection","exportIndex":56,"name":"faceToDirection","kind":"re-export","signature":"faceToDirection","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0057:getBiomeFromClimate","exportIndex":57,"name":"getBiomeFromClimate","kind":"re-export","signature":"getBiomeFromClimate","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0058:getBiomeTypeId","exportIndex":58,"name":"getBiomeTypeId","kind":"re-export","signature":"getBiomeTypeId","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0059:getBiomeTypeName","exportIndex":59,"name":"getBiomeTypeName","kind":"re-export","signature":"getBiomeTypeName","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0060:getChunkKeyHierarchical","exportIndex":60,"name":"getChunkKeyHierarchical","kind":"re-export","signature":"getChunkKeyHierarchical","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0061:getGravityDirection","exportIndex":61,"name":"getGravityDirection","kind":"re-export","signature":"getGravityDirection","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0062:getSectorsInRadius","exportIndex":62,"name":"getSectorsInRadius","kind":"re-export","signature":"getSectorsInRadius","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0063:getTimePhase","exportIndex":63,"name":"getTimePhase","kind":"re-export","signature":"getTimePhase","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0064:getUpDirection","exportIndex":64,"name":"getUpDirection","kind":"re-export","signature":"getUpDirection","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0065:getWeatherPreset","exportIndex":65,"name":"getWeatherPreset","kind":"re-export","signature":"getWeatherPreset","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0066:hierarchicalToWorld","exportIndex":66,"name":"hierarchicalToWorld","kind":"re-export","signature":"hierarchicalToWorld","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0067:parsePlanetaryChunkKey","exportIndex":67,"name":"parsePlanetaryChunkKey","kind":"re-export","signature":"parsePlanetaryChunkKey","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0068:parseSectorKey","exportIndex":68,"name":"parseSectorKey","kind":"re-export","signature":"parseSectorKey","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0069:planetaryChunkKey","exportIndex":69,"name":"planetaryChunkKey","kind":"re-export","signature":"planetaryChunkKey","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0070:planetaryToWorld","exportIndex":70,"name":"planetaryToWorld","kind":"re-export","signature":"planetaryToWorld","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0071:shiftObjects","exportIndex":71,"name":"shiftObjects","kind":"re-export","signature":"shiftObjects","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0072:shiftPosition","exportIndex":72,"name":"shiftPosition","kind":"re-export","signature":"shiftPosition","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0073:splitDouble","exportIndex":73,"name":"splitDouble","kind":"re-export","signature":"splitDouble","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0074:toCameraSpace","exportIndex":74,"name":"toCameraSpace","kind":"re-export","signature":"toCameraSpace","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0075:validateTerrain","exportIndex":75,"name":"validateTerrain","kind":"re-export","signature":"validateTerrain","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0076:validateWeather","exportIndex":76,"name":"validateWeather","kind":"re-export","signature":"validateWeather","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0077:validateWorldConfig","exportIndex":77,"name":"validateWorldConfig","kind":"re-export","signature":"validateWorldConfig","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0078:worldToHierarchical","exportIndex":78,"name":"worldToHierarchical","kind":"re-export","signature":"worldToHierarchical","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0079:worldToPlanetary","exportIndex":79,"name":"worldToPlanetary","kind":"re-export","signature":"worldToPlanetary","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/index.md","moduleTitle":"world/index","source":"engine/world/index.js","import":"/engine/world/index.js","sourceHash":"425623b87c4f8abd264353ce451d1a5e14fdcf89a0767ca1c66e87ccd27a66ec","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/index.js#0080:worldToPlanetaryChunk","exportIndex":80,"name":"worldToPlanetaryChunk","kind":"re-export","signature":"worldToPlanetaryChunk","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/ChunkNetworking.md","moduleTitle":"world/storage/ChunkNetworking","source":"engine/world/storage/ChunkNetworking.js","import":"/engine/world/storage/ChunkNetworking.js","sourceHash":"96f641211f124b04a23db9b283de4103709b57660ef661dae4e2c437f5a50d80","subsystem":"engine","recordType":"api-module","id":"module:engine/world/storage/ChunkNetworking.js","title":"world/storage/ChunkNetworking","summary":"Versioned multiplayer chunk synchronization with legacy read compatibility. V1 remains the write format during the expand phase. V1, V2, and the original unversioned response shape can be read, allowing rolling upgrades without relabelling or discarding old traffic.","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/ChunkNetworking.md","moduleTitle":"world/storage/ChunkNetworking","source":"engine/world/storage/ChunkNetworking.js","import":"/engine/world/storage/ChunkNetworking.js","sourceHash":"96f641211f124b04a23db9b283de4103709b57660ef661dae4e2c437f5a50d80","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/ChunkNetworking.js#0000:ChunkNetworking","exportIndex":0,"name":"ChunkNetworking","kind":"class","signature":"class ChunkNetworking","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/ChunkNetworking.md","moduleTitle":"world/storage/ChunkNetworking","source":"engine/world/storage/ChunkNetworking.js","import":"/engine/world/storage/ChunkNetworking.js","sourceHash":"96f641211f124b04a23db9b283de4103709b57660ef661dae4e2c437f5a50d80","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/ChunkNetworking.js#0001:CHUNK_NETWORK_PROTOCOL","exportIndex":1,"name":"CHUNK_NETWORK_PROTOCOL","kind":"constant","signature":"CHUNK_NETWORK_PROTOCOL","summary":"Versioned multiplayer chunk synchronization with legacy read compatibility. V1 remains the write format during the expand phase. V1, V2, and the original unversioned response shape can be read, allowing rolling upgrades without relabelling or discarding old traffic."}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/ChunkNetworking.md","moduleTitle":"world/storage/ChunkNetworking","source":"engine/world/storage/ChunkNetworking.js","import":"/engine/world/storage/ChunkNetworking.js","sourceHash":"96f641211f124b04a23db9b283de4103709b57660ef661dae4e2c437f5a50d80","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/ChunkNetworking.js#0002:CHUNK_NETWORK_WRITE_PROTOCOL","exportIndex":2,"name":"CHUNK_NETWORK_WRITE_PROTOCOL","kind":"constant","signature":"CHUNK_NETWORK_WRITE_PROTOCOL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/ChunkNetworking.md","moduleTitle":"world/storage/ChunkNetworking","source":"engine/world/storage/ChunkNetworking.js","import":"/engine/world/storage/ChunkNetworking.js","sourceHash":"96f641211f124b04a23db9b283de4103709b57660ef661dae4e2c437f5a50d80","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/ChunkNetworking.js#0003:CHUNK_NETWORK_READ_PROTOCOLS","exportIndex":3,"name":"CHUNK_NETWORK_READ_PROTOCOLS","kind":"constant","signature":"CHUNK_NETWORK_READ_PROTOCOLS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/ChunkPersistence.md","moduleTitle":"world/storage/ChunkPersistence","source":"engine/world/storage/ChunkPersistence.js","import":"/engine/world/storage/ChunkPersistence.js","sourceHash":"9d34635279d071c568a6c830f4327065a580235a2391827b3f05482795f9b0c4","subsystem":"engine","recordType":"api-module","id":"module:engine/world/storage/ChunkPersistence.js","title":"world/storage/ChunkPersistence","summary":"ChunkPersistence.js - Chunk Save/Load System Manages chunk persistence with: - Multiple save formats (binary, JSON, compressed) - Delta saves (only modified blocks) - Auto-save with configurable interval - Backup management","exportCount":8}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/ChunkPersistence.md","moduleTitle":"world/storage/ChunkPersistence","source":"engine/world/storage/ChunkPersistence.js","import":"/engine/world/storage/ChunkPersistence.js","sourceHash":"9d34635279d071c568a6c830f4327065a580235a2391827b3f05482795f9b0c4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/ChunkPersistence.js#0000:ChunkPersistence","exportIndex":0,"name":"ChunkPersistence","kind":"class","signature":"class ChunkPersistence","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/ChunkPersistence.md","moduleTitle":"world/storage/ChunkPersistence","source":"engine/world/storage/ChunkPersistence.js","import":"/engine/world/storage/ChunkPersistence.js","sourceHash":"9d34635279d071c568a6c830f4327065a580235a2391827b3f05482795f9b0c4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/ChunkPersistence.js#0001:chunkPersistenceCurrentKey","exportIndex":1,"name":"chunkPersistenceCurrentKey","kind":"function","signature":"chunkPersistenceCurrentKey(legacyKey)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/ChunkPersistence.md","moduleTitle":"world/storage/ChunkPersistence","source":"engine/world/storage/ChunkPersistence.js","import":"/engine/world/storage/ChunkPersistence.js","sourceHash":"9d34635279d071c568a6c830f4327065a580235a2391827b3f05482795f9b0c4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/ChunkPersistence.js#0002:prepareChunkPersistenceRecord","exportIndex":2,"name":"prepareChunkPersistenceRecord","kind":"function","signature":"prepareChunkPersistenceRecord(record)","summary":"Validate one exact v1/v2 chunk record without manufacturing an upcast."}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/ChunkPersistence.md","moduleTitle":"world/storage/ChunkPersistence","source":"engine/world/storage/ChunkPersistence.js","import":"/engine/world/storage/ChunkPersistence.js","sourceHash":"9d34635279d071c568a6c830f4327065a580235a2391827b3f05482795f9b0c4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/ChunkPersistence.js#0003:CHUNK_PERSISTENCE_DB_NAME","exportIndex":3,"name":"CHUNK_PERSISTENCE_DB_NAME","kind":"constant","signature":"CHUNK_PERSISTENCE_DB_NAME","summary":"ChunkPersistence.js - Chunk Save/Load System Manages chunk persistence with: - Multiple save formats (binary, JSON, compressed) - Delta saves (only modified blocks) - Auto-save with configurable interval - Backup management"}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/ChunkPersistence.md","moduleTitle":"world/storage/ChunkPersistence","source":"engine/world/storage/ChunkPersistence.js","import":"/engine/world/storage/ChunkPersistence.js","sourceHash":"9d34635279d071c568a6c830f4327065a580235a2391827b3f05482795f9b0c4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/ChunkPersistence.js#0004:CHUNK_PERSISTENCE_STORE_NAME","exportIndex":4,"name":"CHUNK_PERSISTENCE_STORE_NAME","kind":"constant","signature":"CHUNK_PERSISTENCE_STORE_NAME","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/ChunkPersistence.md","moduleTitle":"world/storage/ChunkPersistence","source":"engine/world/storage/ChunkPersistence.js","import":"/engine/world/storage/ChunkPersistence.js","sourceHash":"9d34635279d071c568a6c830f4327065a580235a2391827b3f05482795f9b0c4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/ChunkPersistence.js#0005:CHUNK_PERSISTENCE_RECORD_SCHEMA","exportIndex":5,"name":"CHUNK_PERSISTENCE_RECORD_SCHEMA","kind":"constant","signature":"CHUNK_PERSISTENCE_RECORD_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/ChunkPersistence.md","moduleTitle":"world/storage/ChunkPersistence","source":"engine/world/storage/ChunkPersistence.js","import":"/engine/world/storage/ChunkPersistence.js","sourceHash":"9d34635279d071c568a6c830f4327065a580235a2391827b3f05482795f9b0c4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/ChunkPersistence.js#0006:CHUNK_PERSISTENCE_RECORD_VERSION","exportIndex":6,"name":"CHUNK_PERSISTENCE_RECORD_VERSION","kind":"constant","signature":"CHUNK_PERSISTENCE_RECORD_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/ChunkPersistence.md","moduleTitle":"world/storage/ChunkPersistence","source":"engine/world/storage/ChunkPersistence.js","import":"/engine/world/storage/ChunkPersistence.js","sourceHash":"9d34635279d071c568a6c830f4327065a580235a2391827b3f05482795f9b0c4","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/ChunkPersistence.js#0007:CHUNK_PERSISTENCE_RECORD_LIMITS","exportIndex":7,"name":"CHUNK_PERSISTENCE_RECORD_LIMITS","kind":"constant","signature":"CHUNK_PERSISTENCE_RECORD_LIMITS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/ChunkSerializer.md","moduleTitle":"world/storage/ChunkSerializer","source":"engine/world/storage/ChunkSerializer.js","import":"/engine/world/storage/ChunkSerializer.js","sourceHash":"743165cb7c7d8333cb429a44e554fa7d551e4fb08c60820c68ccfd017e97d223","subsystem":"engine","recordType":"api-module","id":"module:engine/world/storage/ChunkSerializer.js","title":"world/storage/ChunkSerializer","summary":"Serialize complete chunk state","exportCount":15}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/ChunkSerializer.md","moduleTitle":"world/storage/ChunkSerializer","source":"engine/world/storage/ChunkSerializer.js","import":"/engine/world/storage/ChunkSerializer.js","sourceHash":"743165cb7c7d8333cb429a44e554fa7d551e4fb08c60820c68ccfd017e97d223","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/ChunkSerializer.js#0000:serializeChunk","exportIndex":0,"name":"serializeChunk","kind":"function","signature":"serializeChunk(chunk, options = {})","summary":"Serialize complete chunk state"}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/ChunkSerializer.md","moduleTitle":"world/storage/ChunkSerializer","source":"engine/world/storage/ChunkSerializer.js","import":"/engine/world/storage/ChunkSerializer.js","sourceHash":"743165cb7c7d8333cb429a44e554fa7d551e4fb08c60820c68ccfd017e97d223","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/ChunkSerializer.js#0001:deserializeChunk","exportIndex":1,"name":"deserializeChunk","kind":"function","signature":"deserializeChunk(data, options = {})","summary":"Deserialize chunk from binary data"}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/ChunkSerializer.md","moduleTitle":"world/storage/ChunkSerializer","source":"engine/world/storage/ChunkSerializer.js","import":"/engine/world/storage/ChunkSerializer.js","sourceHash":"743165cb7c7d8333cb429a44e554fa7d551e4fb08c60820c68ccfd017e97d223","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/ChunkSerializer.js#0002:applyDelta","exportIndex":2,"name":"applyDelta","kind":"function","signature":"applyDelta(voxels, modifications, forward = true)","summary":"Apply delta modifications to voxel array"}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/ChunkSerializer.md","moduleTitle":"world/storage/ChunkSerializer","source":"engine/world/storage/ChunkSerializer.js","import":"/engine/world/storage/ChunkSerializer.js","sourceHash":"743165cb7c7d8333cb429a44e554fa7d551e4fb08c60820c68ccfd017e97d223","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/ChunkSerializer.js#0003:chunkKey","exportIndex":3,"name":"chunkKey","kind":"function","signature":"chunkKey(x, y, z)","summary":"Create chunk key from coordinates"}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/ChunkSerializer.md","moduleTitle":"world/storage/ChunkSerializer","source":"engine/world/storage/ChunkSerializer.js","import":"/engine/world/storage/ChunkSerializer.js","sourceHash":"743165cb7c7d8333cb429a44e554fa7d551e4fb08c60820c68ccfd017e97d223","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/ChunkSerializer.js#0004:parseChunkKey","exportIndex":4,"name":"parseChunkKey","kind":"function","signature":"parseChunkKey(key)","summary":"Parse chunk key to coordinates"}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/ChunkSerializer.md","moduleTitle":"world/storage/ChunkSerializer","source":"engine/world/storage/ChunkSerializer.js","import":"/engine/world/storage/ChunkSerializer.js","sourceHash":"743165cb7c7d8333cb429a44e554fa7d551e4fb08c60820c68ccfd017e97d223","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/ChunkSerializer.js#0005:estimateChunkSize","exportIndex":5,"name":"estimateChunkSize","kind":"function","signature":"estimateChunkSize(chunk)","summary":"Get serialized chunk size estimate"}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/ChunkSerializer.md","moduleTitle":"world/storage/ChunkSerializer","source":"engine/world/storage/ChunkSerializer.js","import":"/engine/world/storage/ChunkSerializer.js","sourceHash":"743165cb7c7d8333cb429a44e554fa7d551e4fb08c60820c68ccfd017e97d223","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/ChunkSerializer.js#0006:BinaryReader","exportIndex":6,"name":"BinaryReader","kind":"re-export","signature":"BinaryReader","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/ChunkSerializer.md","moduleTitle":"world/storage/ChunkSerializer","source":"engine/world/storage/ChunkSerializer.js","import":"/engine/world/storage/ChunkSerializer.js","sourceHash":"743165cb7c7d8333cb429a44e554fa7d551e4fb08c60820c68ccfd017e97d223","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/ChunkSerializer.js#0007:BinaryWriter","exportIndex":7,"name":"BinaryWriter","kind":"re-export","signature":"BinaryWriter","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/ChunkSerializer.md","moduleTitle":"world/storage/ChunkSerializer","source":"engine/world/storage/ChunkSerializer.js","import":"/engine/world/storage/ChunkSerializer.js","sourceHash":"743165cb7c7d8333cb429a44e554fa7d551e4fb08c60820c68ccfd017e97d223","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/ChunkSerializer.js#0008:CHUNK_MAGIC","exportIndex":8,"name":"CHUNK_MAGIC","kind":"re-export","signature":"CHUNK_MAGIC","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/ChunkSerializer.md","moduleTitle":"world/storage/ChunkSerializer","source":"engine/world/storage/ChunkSerializer.js","import":"/engine/world/storage/ChunkSerializer.js","sourceHash":"743165cb7c7d8333cb429a44e554fa7d551e4fb08c60820c68ccfd017e97d223","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/ChunkSerializer.js#0009:CHUNK_SIZE","exportIndex":9,"name":"CHUNK_SIZE","kind":"re-export","signature":"CHUNK_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/ChunkSerializer.md","moduleTitle":"world/storage/ChunkSerializer","source":"engine/world/storage/ChunkSerializer.js","import":"/engine/world/storage/ChunkSerializer.js","sourceHash":"743165cb7c7d8333cb429a44e554fa7d551e4fb08c60820c68ccfd017e97d223","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/ChunkSerializer.js#0010:CHUNK_VERSION","exportIndex":10,"name":"CHUNK_VERSION","kind":"re-export","signature":"CHUNK_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/ChunkSerializer.md","moduleTitle":"world/storage/ChunkSerializer","source":"engine/world/storage/ChunkSerializer.js","import":"/engine/world/storage/ChunkSerializer.js","sourceHash":"743165cb7c7d8333cb429a44e554fa7d551e4fb08c60820c68ccfd017e97d223","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/ChunkSerializer.js#0011:SECTION_DELTA","exportIndex":11,"name":"SECTION_DELTA","kind":"re-export","signature":"SECTION_DELTA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/ChunkSerializer.md","moduleTitle":"world/storage/ChunkSerializer","source":"engine/world/storage/ChunkSerializer.js","import":"/engine/world/storage/ChunkSerializer.js","sourceHash":"743165cb7c7d8333cb429a44e554fa7d551e4fb08c60820c68ccfd017e97d223","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/ChunkSerializer.js#0012:SECTION_ENTITIES","exportIndex":12,"name":"SECTION_ENTITIES","kind":"re-export","signature":"SECTION_ENTITIES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/ChunkSerializer.md","moduleTitle":"world/storage/ChunkSerializer","source":"engine/world/storage/ChunkSerializer.js","import":"/engine/world/storage/ChunkSerializer.js","sourceHash":"743165cb7c7d8333cb429a44e554fa7d551e4fb08c60820c68ccfd017e97d223","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/ChunkSerializer.js#0013:SECTION_METADATA","exportIndex":13,"name":"SECTION_METADATA","kind":"re-export","signature":"SECTION_METADATA","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/ChunkSerializer.md","moduleTitle":"world/storage/ChunkSerializer","source":"engine/world/storage/ChunkSerializer.js","import":"/engine/world/storage/ChunkSerializer.js","sourceHash":"743165cb7c7d8333cb429a44e554fa7d551e4fb08c60820c68ccfd017e97d223","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/ChunkSerializer.js#0014:SECTION_VOXELS","exportIndex":14,"name":"SECTION_VOXELS","kind":"re-export","signature":"SECTION_VOXELS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/DiskMeshCache.md","moduleTitle":"world/storage/DiskMeshCache","source":"engine/world/storage/DiskMeshCache.js","import":"/engine/world/storage/DiskMeshCache.js","sourceHash":"5021b6f614bfb706f7e822a9c2f3422001ce932762fd436a4f93549a13bf805c","subsystem":"engine","recordType":"api-module","id":"module:engine/world/storage/DiskMeshCache.js","title":"world/storage/DiskMeshCache","summary":"DiskMeshCache - IndexedDB-backed mesh cache","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/DiskMeshCache.md","moduleTitle":"world/storage/DiskMeshCache","source":"engine/world/storage/DiskMeshCache.js","import":"/engine/world/storage/DiskMeshCache.js","sourceHash":"5021b6f614bfb706f7e822a9c2f3422001ce932762fd436a4f93549a13bf805c","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/DiskMeshCache.js#0000:DiskMeshCache","exportIndex":0,"name":"DiskMeshCache","kind":"class","signature":"class DiskMeshCache","summary":"DiskMeshCache - IndexedDB-backed mesh cache"}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/PaletteCompression.md","moduleTitle":"world/storage/PaletteCompression","source":"engine/world/storage/PaletteCompression.js","import":"/engine/world/storage/PaletteCompression.js","sourceHash":"750016fa3bddc5a36be2fa1044ab892491e82f7857726a16e2d6739ae7668f58","subsystem":"engine","recordType":"api-module","id":"module:engine/world/storage/PaletteCompression.js","title":"world/storage/PaletteCompression","summary":"CompressedChunk - Palette-compressed voxel storage","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/PaletteCompression.md","moduleTitle":"world/storage/PaletteCompression","source":"engine/world/storage/PaletteCompression.js","import":"/engine/world/storage/PaletteCompression.js","sourceHash":"750016fa3bddc5a36be2fa1044ab892491e82f7857726a16e2d6739ae7668f58","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/PaletteCompression.js#0000:CompressedChunk","exportIndex":0,"name":"CompressedChunk","kind":"class","signature":"class CompressedChunk","summary":"CompressedChunk - Palette-compressed voxel storage"}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/PaletteCompression.md","moduleTitle":"world/storage/PaletteCompression","source":"engine/world/storage/PaletteCompression.js","import":"/engine/world/storage/PaletteCompression.js","sourceHash":"750016fa3bddc5a36be2fa1044ab892491e82f7857726a16e2d6739ae7668f58","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/PaletteCompression.js#0001:ChunkCompressor","exportIndex":1,"name":"ChunkCompressor","kind":"class","signature":"class ChunkCompressor","summary":"ChunkCompressor - Manages compression for multiple chunks"}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/RLECompression.md","moduleTitle":"world/storage/RLECompression","source":"engine/world/storage/RLECompression.js","import":"/engine/world/storage/RLECompression.js","sourceHash":"50a0b8b05348f22bf2baa074fac33f84c550e74b68cbded69c2b435b439bfcf8","subsystem":"engine","recordType":"api-module","id":"module:engine/world/storage/RLECompression.js","title":"world/storage/RLECompression","summary":"RLEChunkCompressor - RLE compression for entire chunks","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/RLECompression.md","moduleTitle":"world/storage/RLECompression","source":"engine/world/storage/RLECompression.js","import":"/engine/world/storage/RLECompression.js","sourceHash":"50a0b8b05348f22bf2baa074fac33f84c550e74b68cbded69c2b435b439bfcf8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/RLECompression.js#0000:RLEChunkCompressor","exportIndex":0,"name":"RLEChunkCompressor","kind":"class","signature":"class RLEChunkCompressor","summary":"RLEChunkCompressor - RLE compression for entire chunks"}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/RLECompression.md","moduleTitle":"world/storage/RLECompression","source":"engine/world/storage/RLECompression.js","import":"/engine/world/storage/RLECompression.js","sourceHash":"50a0b8b05348f22bf2baa074fac33f84c550e74b68cbded69c2b435b439bfcf8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/RLECompression.js#0001:HybridChunkCompressor","exportIndex":1,"name":"HybridChunkCompressor","kind":"class","signature":"class HybridChunkCompressor","summary":"Hybrid compression: Palette + RLE First applies palette compression, then RLE on the indices"}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/RLECompression.md","moduleTitle":"world/storage/RLECompression","source":"engine/world/storage/RLECompression.js","import":"/engine/world/storage/RLECompression.js","sourceHash":"50a0b8b05348f22bf2baa074fac33f84c550e74b68cbded69c2b435b439bfcf8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/RLECompression.js#0002:encodeColumn","exportIndex":2,"name":"encodeColumn","kind":"function","signature":"encodeColumn(column)","summary":"Encode a single column using RLE"}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/RLECompression.md","moduleTitle":"world/storage/RLECompression","source":"engine/world/storage/RLECompression.js","import":"/engine/world/storage/RLECompression.js","sourceHash":"50a0b8b05348f22bf2baa074fac33f84c550e74b68cbded69c2b435b439bfcf8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/RLECompression.js#0003:decodeColumn","exportIndex":3,"name":"decodeColumn","kind":"function","signature":"decodeColumn(encoded, expectedLength)","summary":"Decode RLE column back to raw data"}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/RegionFile.md","moduleTitle":"world/storage/RegionFile","source":"engine/world/storage/RegionFile.js","import":"/engine/world/storage/RegionFile.js","sourceHash":"627dbc93c47116f1bb9c9969d734b0a2ed1f849f6c99d9867224043ed72a8b9e","subsystem":"engine","recordType":"api-module","id":"module:engine/world/storage/RegionFile.js","title":"world/storage/RegionFile","summary":"RegionFile - Manages a single region file containing 32x32 chunks","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/RegionFile.md","moduleTitle":"world/storage/RegionFile","source":"engine/world/storage/RegionFile.js","import":"/engine/world/storage/RegionFile.js","sourceHash":"627dbc93c47116f1bb9c9969d734b0a2ed1f849f6c99d9867224043ed72a8b9e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/RegionFile.js#0000:RegionFile","exportIndex":0,"name":"RegionFile","kind":"class","signature":"class RegionFile","summary":"RegionFile - Manages a single region file containing 32x32 chunks"}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/RegionFile.md","moduleTitle":"world/storage/RegionFile","source":"engine/world/storage/RegionFile.js","import":"/engine/world/storage/RegionFile.js","sourceHash":"627dbc93c47116f1bb9c9969d734b0a2ed1f849f6c99d9867224043ed72a8b9e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/RegionFile.js#0001:RegionManager","exportIndex":1,"name":"RegionManager","kind":"class","signature":"class RegionManager","summary":"RegionManager - High-level interface for region-based chunk storage"}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/RegionFile.md","moduleTitle":"world/storage/RegionFile","source":"engine/world/storage/RegionFile.js","import":"/engine/world/storage/RegionFile.js","sourceHash":"627dbc93c47116f1bb9c9969d734b0a2ed1f849f6c99d9867224043ed72a8b9e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/RegionFile.js#0002:CHUNKS_PER_REGION","exportIndex":2,"name":"CHUNKS_PER_REGION","kind":"re-export","signature":"CHUNKS_PER_REGION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/RegionFile.md","moduleTitle":"world/storage/RegionFile","source":"engine/world/storage/RegionFile.js","import":"/engine/world/storage/RegionFile.js","sourceHash":"627dbc93c47116f1bb9c9969d734b0a2ed1f849f6c99d9867224043ed72a8b9e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/RegionFile.js#0003:HEADER_SIZE","exportIndex":3,"name":"HEADER_SIZE","kind":"re-export","signature":"HEADER_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/RegionFile.md","moduleTitle":"world/storage/RegionFile","source":"engine/world/storage/RegionFile.js","import":"/engine/world/storage/RegionFile.js","sourceHash":"627dbc93c47116f1bb9c9969d734b0a2ed1f849f6c99d9867224043ed72a8b9e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/RegionFile.js#0004:REGION_SIZE","exportIndex":4,"name":"REGION_SIZE","kind":"re-export","signature":"REGION_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/RegionFile.md","moduleTitle":"world/storage/RegionFile","source":"engine/world/storage/RegionFile.js","import":"/engine/world/storage/RegionFile.js","sourceHash":"627dbc93c47116f1bb9c9969d734b0a2ed1f849f6c99d9867224043ed72a8b9e","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/RegionFile.js#0005:SECTOR_SIZE","exportIndex":5,"name":"SECTOR_SIZE","kind":"re-export","signature":"SECTOR_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/StorageBackends.md","moduleTitle":"world/storage/StorageBackends","source":"engine/world/storage/StorageBackends.js","import":"/engine/world/storage/StorageBackends.js","sourceHash":"07a737f0a493661e3c9cae5d3366c220450da56323de49d97fab68397dad80ae","subsystem":"engine","recordType":"api-module","id":"module:engine/world/storage/StorageBackends.js","title":"world/storage/StorageBackends","summary":"StorageBackends.js - Storage backend implementations Extracted from WorldStorage.js for modularity Includes: - OPFSBackend (Origin Private File System) - IndexedDBBackend (fallback) - FileSystemBackend (user-selected folder)","exportCount":3}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/StorageBackends.md","moduleTitle":"world/storage/StorageBackends","source":"engine/world/storage/StorageBackends.js","import":"/engine/world/storage/StorageBackends.js","sourceHash":"07a737f0a493661e3c9cae5d3366c220450da56323de49d97fab68397dad80ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/StorageBackends.js#0000:OPFSBackend","exportIndex":0,"name":"OPFSBackend","kind":"class","signature":"class OPFSBackend","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/StorageBackends.md","moduleTitle":"world/storage/StorageBackends","source":"engine/world/storage/StorageBackends.js","import":"/engine/world/storage/StorageBackends.js","sourceHash":"07a737f0a493661e3c9cae5d3366c220450da56323de49d97fab68397dad80ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/StorageBackends.js#0001:IndexedDBBackend","exportIndex":1,"name":"IndexedDBBackend","kind":"class","signature":"class IndexedDBBackend","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/StorageBackends.md","moduleTitle":"world/storage/StorageBackends","source":"engine/world/storage/StorageBackends.js","import":"/engine/world/storage/StorageBackends.js","sourceHash":"07a737f0a493661e3c9cae5d3366c220450da56323de49d97fab68397dad80ae","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/StorageBackends.js#0002:FileSystemBackend","exportIndex":2,"name":"FileSystemBackend","kind":"class","signature":"class FileSystemBackend","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/VoxelCompression.md","moduleTitle":"world/storage/VoxelCompression","source":"engine/world/storage/VoxelCompression.js","import":"/engine/world/storage/VoxelCompression.js","sourceHash":"41f9a055eaf626355857e641a7045244c0921782ca8844970cdadb3c3335df0d","subsystem":"engine","recordType":"api-module","id":"module:engine/world/storage/VoxelCompression.js","title":"world/storage/VoxelCompression","summary":"Calculate CRC32 checksum","exportCount":20}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/VoxelCompression.md","moduleTitle":"world/storage/VoxelCompression","source":"engine/world/storage/VoxelCompression.js","import":"/engine/world/storage/VoxelCompression.js","sourceHash":"41f9a055eaf626355857e641a7045244c0921782ca8844970cdadb3c3335df0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/VoxelCompression.js#0000:crc32","exportIndex":0,"name":"crc32","kind":"function","signature":"crc32(data)","summary":"Calculate CRC32 checksum"}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/VoxelCompression.md","moduleTitle":"world/storage/VoxelCompression","source":"engine/world/storage/VoxelCompression.js","import":"/engine/world/storage/VoxelCompression.js","sourceHash":"41f9a055eaf626355857e641a7045244c0921782ca8844970cdadb3c3335df0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/VoxelCompression.js#0001:verifyCRC32","exportIndex":1,"name":"verifyCRC32","kind":"function","signature":"verifyCRC32(data, expectedCRC)","summary":"Verify data integrity"}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/VoxelCompression.md","moduleTitle":"world/storage/VoxelCompression","source":"engine/world/storage/VoxelCompression.js","import":"/engine/world/storage/VoxelCompression.js","sourceHash":"41f9a055eaf626355857e641a7045244c0921782ca8844970cdadb3c3335df0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/VoxelCompression.js#0002:encodeMorton3D","exportIndex":2,"name":"encodeMorton3D","kind":"function","signature":"encodeMorton3D(x, y, z)","summary":"Encode 3D coordinates to Morton code (Z-order)"}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/VoxelCompression.md","moduleTitle":"world/storage/VoxelCompression","source":"engine/world/storage/VoxelCompression.js","import":"/engine/world/storage/VoxelCompression.js","sourceHash":"41f9a055eaf626355857e641a7045244c0921782ca8844970cdadb3c3335df0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/VoxelCompression.js#0003:decodeMorton3D","exportIndex":3,"name":"decodeMorton3D","kind":"function","signature":"decodeMorton3D(morton)","summary":"Decode Morton code to 3D coordinates"}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/VoxelCompression.md","moduleTitle":"world/storage/VoxelCompression","source":"engine/world/storage/VoxelCompression.js","import":"/engine/world/storage/VoxelCompression.js","sourceHash":"41f9a055eaf626355857e641a7045244c0921782ca8844970cdadb3c3335df0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/VoxelCompression.js#0004:generateMortonIndices","exportIndex":4,"name":"generateMortonIndices","kind":"function","signature":"generateMortonIndices(size)","summary":"Generate Morton-order traversal indices for a cubic chunk"}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/VoxelCompression.md","moduleTitle":"world/storage/VoxelCompression","source":"engine/world/storage/VoxelCompression.js","import":"/engine/world/storage/VoxelCompression.js","sourceHash":"41f9a055eaf626355857e641a7045244c0921782ca8844970cdadb3c3335df0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/VoxelCompression.js#0005:getMortonIndices","exportIndex":5,"name":"getMortonIndices","kind":"function","signature":"getMortonIndices(size)","summary":"Get cached Morton indices for chunk size"}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/VoxelCompression.md","moduleTitle":"world/storage/VoxelCompression","source":"engine/world/storage/VoxelCompression.js","import":"/engine/world/storage/VoxelCompression.js","sourceHash":"41f9a055eaf626355857e641a7045244c0921782ca8844970cdadb3c3335df0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/VoxelCompression.js#0006:linearToMorton","exportIndex":6,"name":"linearToMorton","kind":"function","signature":"linearToMorton(data, size)","summary":"Reorder voxel data from linear to Morton order"}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/VoxelCompression.md","moduleTitle":"world/storage/VoxelCompression","source":"engine/world/storage/VoxelCompression.js","import":"/engine/world/storage/VoxelCompression.js","sourceHash":"41f9a055eaf626355857e641a7045244c0921782ca8844970cdadb3c3335df0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/VoxelCompression.js#0007:mortonToLinear","exportIndex":7,"name":"mortonToLinear","kind":"function","signature":"mortonToLinear(data, size)","summary":"Reorder voxel data from Morton to linear order"}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/VoxelCompression.md","moduleTitle":"world/storage/VoxelCompression","source":"engine/world/storage/VoxelCompression.js","import":"/engine/world/storage/VoxelCompression.js","sourceHash":"41f9a055eaf626355857e641a7045244c0921782ca8844970cdadb3c3335df0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/VoxelCompression.js#0008:buildPalette","exportIndex":8,"name":"buildPalette","kind":"function","signature":"buildPalette(data)","summary":"Build palette from voxel data"}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/VoxelCompression.md","moduleTitle":"world/storage/VoxelCompression","source":"engine/world/storage/VoxelCompression.js","import":"/engine/world/storage/VoxelCompression.js","sourceHash":"41f9a055eaf626355857e641a7045244c0921782ca8844970cdadb3c3335df0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/VoxelCompression.js#0009:bitsForPalette","exportIndex":9,"name":"bitsForPalette","kind":"function","signature":"bitsForPalette(paletteSize)","summary":"Calculate bits needed for palette size"}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/VoxelCompression.md","moduleTitle":"world/storage/VoxelCompression","source":"engine/world/storage/VoxelCompression.js","import":"/engine/world/storage/VoxelCompression.js","sourceHash":"41f9a055eaf626355857e641a7045244c0921782ca8844970cdadb3c3335df0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/VoxelCompression.js#0010:paletteCompress","exportIndex":10,"name":"paletteCompress","kind":"function","signature":"paletteCompress(data)","summary":"Compress voxels using palette compression"}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/VoxelCompression.md","moduleTitle":"world/storage/VoxelCompression","source":"engine/world/storage/VoxelCompression.js","import":"/engine/world/storage/VoxelCompression.js","sourceHash":"41f9a055eaf626355857e641a7045244c0921782ca8844970cdadb3c3335df0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/VoxelCompression.js#0011:paletteDecompress","exportIndex":11,"name":"paletteDecompress","kind":"function","signature":"paletteDecompress(palette, bits, packed, count)","summary":"Decompress palette-compressed data"}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/VoxelCompression.md","moduleTitle":"world/storage/VoxelCompression","source":"engine/world/storage/VoxelCompression.js","import":"/engine/world/storage/VoxelCompression.js","sourceHash":"41f9a055eaf626355857e641a7045244c0921782ca8844970cdadb3c3335df0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/VoxelCompression.js#0012:rleEncode","exportIndex":12,"name":"rleEncode","kind":"function","signature":"rleEncode(data)","summary":"RLE compress data (auto-trigger: only encodes when beneficial) Format: Literal: byte (if byte != ESCAPE) Escape:  ESCAPE, 0, ESCAPE (literal escape byte) Run:     ESCAPE, count-3, value (run of count bytes)"}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/VoxelCompression.md","moduleTitle":"world/storage/VoxelCompression","source":"engine/world/storage/VoxelCompression.js","import":"/engine/world/storage/VoxelCompression.js","sourceHash":"41f9a055eaf626355857e641a7045244c0921782ca8844970cdadb3c3335df0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/VoxelCompression.js#0013:rleDecode","exportIndex":13,"name":"rleDecode","kind":"function","signature":"rleDecode(data)","summary":"RLE decompress data"}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/VoxelCompression.md","moduleTitle":"world/storage/VoxelCompression","source":"engine/world/storage/VoxelCompression.js","import":"/engine/world/storage/VoxelCompression.js","sourceHash":"41f9a055eaf626355857e641a7045244c0921782ca8844970cdadb3c3335df0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/VoxelCompression.js#0014:compressChunk","exportIndex":14,"name":"compressChunk","kind":"function","signature":"compressChunk(voxels, chunkSize = 32)","summary":"Full compression pipeline for voxel chunk Pipeline: Morton → Palette → RLE"}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/VoxelCompression.md","moduleTitle":"world/storage/VoxelCompression","source":"engine/world/storage/VoxelCompression.js","import":"/engine/world/storage/VoxelCompression.js","sourceHash":"41f9a055eaf626355857e641a7045244c0921782ca8844970cdadb3c3335df0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/VoxelCompression.js#0015:decompressChunk","exportIndex":15,"name":"decompressChunk","kind":"function","signature":"decompressChunk(compressed, chunkSize = 32)","summary":"Decompress voxel chunk"}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/VoxelCompression.md","moduleTitle":"world/storage/VoxelCompression","source":"engine/world/storage/VoxelCompression.js","import":"/engine/world/storage/VoxelCompression.js","sourceHash":"41f9a055eaf626355857e641a7045244c0921782ca8844970cdadb3c3335df0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/VoxelCompression.js#0016:encodeDelta","exportIndex":16,"name":"encodeDelta","kind":"function","signature":"encodeDelta(modifications)","summary":"Encode chunk modifications as delta"}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/VoxelCompression.md","moduleTitle":"world/storage/VoxelCompression","source":"engine/world/storage/VoxelCompression.js","import":"/engine/world/storage/VoxelCompression.js","sourceHash":"41f9a055eaf626355857e641a7045244c0921782ca8844970cdadb3c3335df0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/VoxelCompression.js#0017:decodeDelta","exportIndex":17,"name":"decodeDelta","kind":"function","signature":"decodeDelta(data)","summary":"Decode delta modifications"}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/VoxelCompression.md","moduleTitle":"world/storage/VoxelCompression","source":"engine/world/storage/VoxelCompression.js","import":"/engine/world/storage/VoxelCompression.js","sourceHash":"41f9a055eaf626355857e641a7045244c0921782ca8844970cdadb3c3335df0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/VoxelCompression.js#0018:compressionStats","exportIndex":18,"name":"compressionStats","kind":"function","signature":"compressionStats(original, compressed)","summary":"Create a compression statistics report"}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/VoxelCompression.md","moduleTitle":"world/storage/VoxelCompression","source":"engine/world/storage/VoxelCompression.js","import":"/engine/world/storage/VoxelCompression.js","sourceHash":"41f9a055eaf626355857e641a7045244c0921782ca8844970cdadb3c3335df0d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/VoxelCompression.js#0019:testRoundtrip","exportIndex":19,"name":"testRoundtrip","kind":"function","signature":"testRoundtrip(data, chunkSize = 32)","summary":"Test compression roundtrip"}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/WorldStorage.md","moduleTitle":"world/storage/WorldStorage","source":"engine/world/storage/WorldStorage.js","import":"/engine/world/storage/WorldStorage.js","sourceHash":"ef1f8bb02d3f28a4769b5aca365b9846e675ce5f240b3307c0131670c9e9b5ac","subsystem":"engine","recordType":"api-module","id":"module:engine/world/storage/WorldStorage.js","title":"world/storage/WorldStorage","summary":"WorldStorage - Main API for world persistence","exportCount":9}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/WorldStorage.md","moduleTitle":"world/storage/WorldStorage","source":"engine/world/storage/WorldStorage.js","import":"/engine/world/storage/WorldStorage.js","sourceHash":"ef1f8bb02d3f28a4769b5aca365b9846e675ce5f240b3307c0131670c9e9b5ac","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/WorldStorage.js#0000:WorldStorage","exportIndex":0,"name":"WorldStorage","kind":"class","signature":"class WorldStorage","summary":"WorldStorage - Main API for world persistence"}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/WorldStorage.md","moduleTitle":"world/storage/WorldStorage","source":"engine/world/storage/WorldStorage.js","import":"/engine/world/storage/WorldStorage.js","sourceHash":"ef1f8bb02d3f28a4769b5aca365b9846e675ce5f240b3307c0131670c9e9b5ac","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/WorldStorage.js#0001:validateWorldMetadata","exportIndex":1,"name":"validateWorldMetadata","kind":"function","signature":"validateWorldMetadata(metadata)","summary":"Validate decoded world metadata without mutating it."}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/WorldStorage.md","moduleTitle":"world/storage/WorldStorage","source":"engine/world/storage/WorldStorage.js","import":"/engine/world/storage/WorldStorage.js","sourceHash":"ef1f8bb02d3f28a4769b5aca365b9846e675ce5f240b3307c0131670c9e9b5ac","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/WorldStorage.js#0002:parseWorldWalHeader","exportIndex":2,"name":"parseWorldWalHeader","kind":"function","signature":"parseWorldWalHeader(data)","summary":"Parse and validate a WAL header without mutating or persisting the input."}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/WorldStorage.md","moduleTitle":"world/storage/WorldStorage","source":"engine/world/storage/WorldStorage.js","import":"/engine/world/storage/WorldStorage.js","sourceHash":"ef1f8bb02d3f28a4769b5aca365b9846e675ce5f240b3307c0131670c9e9b5ac","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/WorldStorage.js#0003:parseWorldWal","exportIndex":3,"name":"parseWorldWal","kind":"function","signature":"parseWorldWal(data)","summary":"Strictly parse and validate an entire WAL before any recovery mutation."}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/WorldStorage.md","moduleTitle":"world/storage/WorldStorage","source":"engine/world/storage/WorldStorage.js","import":"/engine/world/storage/WorldStorage.js","sourceHash":"ef1f8bb02d3f28a4769b5aca365b9846e675ce5f240b3307c0131670c9e9b5ac","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/WorldStorage.js#0004:WORLD_METADATA_VERSION","exportIndex":4,"name":"WORLD_METADATA_VERSION","kind":"constant","signature":"WORLD_METADATA_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/WorldStorage.md","moduleTitle":"world/storage/WorldStorage","source":"engine/world/storage/WorldStorage.js","import":"/engine/world/storage/WorldStorage.js","sourceHash":"ef1f8bb02d3f28a4769b5aca365b9846e675ce5f240b3307c0131670c9e9b5ac","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/WorldStorage.js#0005:WORLD_WAL_VERSION","exportIndex":5,"name":"WORLD_WAL_VERSION","kind":"constant","signature":"WORLD_WAL_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/WorldStorage.md","moduleTitle":"world/storage/WorldStorage","source":"engine/world/storage/WorldStorage.js","import":"/engine/world/storage/WorldStorage.js","sourceHash":"ef1f8bb02d3f28a4769b5aca365b9846e675ce5f240b3307c0131670c9e9b5ac","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/WorldStorage.js#0006:FileSystemBackend","exportIndex":6,"name":"FileSystemBackend","kind":"re-export","signature":"FileSystemBackend","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/WorldStorage.md","moduleTitle":"world/storage/WorldStorage","source":"engine/world/storage/WorldStorage.js","import":"/engine/world/storage/WorldStorage.js","sourceHash":"ef1f8bb02d3f28a4769b5aca365b9846e675ce5f240b3307c0131670c9e9b5ac","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/WorldStorage.js#0007:IndexedDBBackend","exportIndex":7,"name":"IndexedDBBackend","kind":"re-export","signature":"IndexedDBBackend","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/WorldStorage.md","moduleTitle":"world/storage/WorldStorage","source":"engine/world/storage/WorldStorage.js","import":"/engine/world/storage/WorldStorage.js","sourceHash":"ef1f8bb02d3f28a4769b5aca365b9846e675ce5f240b3307c0131670c9e9b5ac","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/WorldStorage.js#0008:OPFSBackend","exportIndex":8,"name":"OPFSBackend","kind":"re-export","signature":"OPFSBackend","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/index.md","moduleTitle":"world/storage/index","source":"engine/world/storage/index.js","import":"/engine/world/storage/index.js","sourceHash":"5c786ce5433a94c03856e517e78fb39f913f4b499220ac17b137b3597be6c001","subsystem":"engine","recordType":"api-module","id":"module:engine/world/storage/index.js","title":"world/storage/index","summary":"","exportCount":34}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/index.md","moduleTitle":"world/storage/index","source":"engine/world/storage/index.js","import":"/engine/world/storage/index.js","sourceHash":"5c786ce5433a94c03856e517e78fb39f913f4b499220ac17b137b3597be6c001","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/index.js#0000:BinaryReader","exportIndex":0,"name":"BinaryReader","kind":"re-export","signature":"BinaryReader","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/index.md","moduleTitle":"world/storage/index","source":"engine/world/storage/index.js","import":"/engine/world/storage/index.js","sourceHash":"5c786ce5433a94c03856e517e78fb39f913f4b499220ac17b137b3597be6c001","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/index.js#0001:BinaryWriter","exportIndex":1,"name":"BinaryWriter","kind":"re-export","signature":"BinaryWriter","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/index.md","moduleTitle":"world/storage/index","source":"engine/world/storage/index.js","import":"/engine/world/storage/index.js","sourceHash":"5c786ce5433a94c03856e517e78fb39f913f4b499220ac17b137b3597be6c001","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/index.js#0002:CHUNK_NETWORK_PROTOCOL","exportIndex":2,"name":"CHUNK_NETWORK_PROTOCOL","kind":"re-export","signature":"CHUNK_NETWORK_PROTOCOL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/index.md","moduleTitle":"world/storage/index","source":"engine/world/storage/index.js","import":"/engine/world/storage/index.js","sourceHash":"5c786ce5433a94c03856e517e78fb39f913f4b499220ac17b137b3597be6c001","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/index.js#0003:CHUNK_NETWORK_READ_PROTOCOLS","exportIndex":3,"name":"CHUNK_NETWORK_READ_PROTOCOLS","kind":"re-export","signature":"CHUNK_NETWORK_READ_PROTOCOLS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/index.md","moduleTitle":"world/storage/index","source":"engine/world/storage/index.js","import":"/engine/world/storage/index.js","sourceHash":"5c786ce5433a94c03856e517e78fb39f913f4b499220ac17b137b3597be6c001","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/index.js#0004:CHUNK_NETWORK_WRITE_PROTOCOL","exportIndex":4,"name":"CHUNK_NETWORK_WRITE_PROTOCOL","kind":"re-export","signature":"CHUNK_NETWORK_WRITE_PROTOCOL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/index.md","moduleTitle":"world/storage/index","source":"engine/world/storage/index.js","import":"/engine/world/storage/index.js","sourceHash":"5c786ce5433a94c03856e517e78fb39f913f4b499220ac17b137b3597be6c001","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/index.js#0005:ChunkCompressor","exportIndex":5,"name":"ChunkCompressor","kind":"re-export","signature":"ChunkCompressor","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/index.md","moduleTitle":"world/storage/index","source":"engine/world/storage/index.js","import":"/engine/world/storage/index.js","sourceHash":"5c786ce5433a94c03856e517e78fb39f913f4b499220ac17b137b3597be6c001","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/index.js#0006:ChunkNetworking","exportIndex":6,"name":"ChunkNetworking","kind":"re-export","signature":"ChunkNetworking","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/index.md","moduleTitle":"world/storage/index","source":"engine/world/storage/index.js","import":"/engine/world/storage/index.js","sourceHash":"5c786ce5433a94c03856e517e78fb39f913f4b499220ac17b137b3597be6c001","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/index.js#0007:ChunkPersistence","exportIndex":7,"name":"ChunkPersistence","kind":"re-export","signature":"ChunkPersistence","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/index.md","moduleTitle":"world/storage/index","source":"engine/world/storage/index.js","import":"/engine/world/storage/index.js","sourceHash":"5c786ce5433a94c03856e517e78fb39f913f4b499220ac17b137b3597be6c001","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/index.js#0008:CompressedChunk","exportIndex":8,"name":"CompressedChunk","kind":"re-export","signature":"CompressedChunk","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/index.md","moduleTitle":"world/storage/index","source":"engine/world/storage/index.js","import":"/engine/world/storage/index.js","sourceHash":"5c786ce5433a94c03856e517e78fb39f913f4b499220ac17b137b3597be6c001","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/index.js#0009:DiskMeshCache","exportIndex":9,"name":"DiskMeshCache","kind":"re-export","signature":"DiskMeshCache","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/index.md","moduleTitle":"world/storage/index","source":"engine/world/storage/index.js","import":"/engine/world/storage/index.js","sourceHash":"5c786ce5433a94c03856e517e78fb39f913f4b499220ac17b137b3597be6c001","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/index.js#0010:HybridChunkCompressor","exportIndex":10,"name":"HybridChunkCompressor","kind":"re-export","signature":"HybridChunkCompressor","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/index.md","moduleTitle":"world/storage/index","source":"engine/world/storage/index.js","import":"/engine/world/storage/index.js","sourceHash":"5c786ce5433a94c03856e517e78fb39f913f4b499220ac17b137b3597be6c001","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/index.js#0011:RLEChunkCompressor","exportIndex":11,"name":"RLEChunkCompressor","kind":"re-export","signature":"RLEChunkCompressor","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/index.md","moduleTitle":"world/storage/index","source":"engine/world/storage/index.js","import":"/engine/world/storage/index.js","sourceHash":"5c786ce5433a94c03856e517e78fb39f913f4b499220ac17b137b3597be6c001","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/index.js#0012:RegionFile","exportIndex":12,"name":"RegionFile","kind":"re-export","signature":"RegionFile","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/index.md","moduleTitle":"world/storage/index","source":"engine/world/storage/index.js","import":"/engine/world/storage/index.js","sourceHash":"5c786ce5433a94c03856e517e78fb39f913f4b499220ac17b137b3597be6c001","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/index.js#0013:RegionManager","exportIndex":13,"name":"RegionManager","kind":"re-export","signature":"RegionManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/index.md","moduleTitle":"world/storage/index","source":"engine/world/storage/index.js","import":"/engine/world/storage/index.js","sourceHash":"5c786ce5433a94c03856e517e78fb39f913f4b499220ac17b137b3597be6c001","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/index.js#0014:WORLD_METADATA_VERSION","exportIndex":14,"name":"WORLD_METADATA_VERSION","kind":"re-export","signature":"WORLD_METADATA_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/index.md","moduleTitle":"world/storage/index","source":"engine/world/storage/index.js","import":"/engine/world/storage/index.js","sourceHash":"5c786ce5433a94c03856e517e78fb39f913f4b499220ac17b137b3597be6c001","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/index.js#0015:WORLD_WAL_VERSION","exportIndex":15,"name":"WORLD_WAL_VERSION","kind":"re-export","signature":"WORLD_WAL_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/index.md","moduleTitle":"world/storage/index","source":"engine/world/storage/index.js","import":"/engine/world/storage/index.js","sourceHash":"5c786ce5433a94c03856e517e78fb39f913f4b499220ac17b137b3597be6c001","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/index.js#0016:WorldStorage","exportIndex":16,"name":"WorldStorage","kind":"re-export","signature":"WorldStorage","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/index.md","moduleTitle":"world/storage/index","source":"engine/world/storage/index.js","import":"/engine/world/storage/index.js","sourceHash":"5c786ce5433a94c03856e517e78fb39f913f4b499220ac17b137b3597be6c001","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/index.js#0017:applyDelta","exportIndex":17,"name":"applyDelta","kind":"re-export","signature":"applyDelta","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/index.md","moduleTitle":"world/storage/index","source":"engine/world/storage/index.js","import":"/engine/world/storage/index.js","sourceHash":"5c786ce5433a94c03856e517e78fb39f913f4b499220ac17b137b3597be6c001","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/index.js#0018:chunkKey","exportIndex":18,"name":"chunkKey","kind":"re-export","signature":"chunkKey","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/index.md","moduleTitle":"world/storage/index","source":"engine/world/storage/index.js","import":"/engine/world/storage/index.js","sourceHash":"5c786ce5433a94c03856e517e78fb39f913f4b499220ac17b137b3597be6c001","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/index.js#0019:compressChunk","exportIndex":19,"name":"compressChunk","kind":"re-export","signature":"compressChunk","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/index.md","moduleTitle":"world/storage/index","source":"engine/world/storage/index.js","import":"/engine/world/storage/index.js","sourceHash":"5c786ce5433a94c03856e517e78fb39f913f4b499220ac17b137b3597be6c001","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/index.js#0020:crc32","exportIndex":20,"name":"crc32","kind":"re-export","signature":"crc32","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/index.md","moduleTitle":"world/storage/index","source":"engine/world/storage/index.js","import":"/engine/world/storage/index.js","sourceHash":"5c786ce5433a94c03856e517e78fb39f913f4b499220ac17b137b3597be6c001","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/index.js#0021:decodeColumn","exportIndex":21,"name":"decodeColumn","kind":"re-export","signature":"decodeColumn","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/index.md","moduleTitle":"world/storage/index","source":"engine/world/storage/index.js","import":"/engine/world/storage/index.js","sourceHash":"5c786ce5433a94c03856e517e78fb39f913f4b499220ac17b137b3597be6c001","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/index.js#0022:decompressChunk","exportIndex":22,"name":"decompressChunk","kind":"re-export","signature":"decompressChunk","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/index.md","moduleTitle":"world/storage/index","source":"engine/world/storage/index.js","import":"/engine/world/storage/index.js","sourceHash":"5c786ce5433a94c03856e517e78fb39f913f4b499220ac17b137b3597be6c001","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/index.js#0023:deserializeChunk","exportIndex":23,"name":"deserializeChunk","kind":"re-export","signature":"deserializeChunk","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/index.md","moduleTitle":"world/storage/index","source":"engine/world/storage/index.js","import":"/engine/world/storage/index.js","sourceHash":"5c786ce5433a94c03856e517e78fb39f913f4b499220ac17b137b3597be6c001","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/index.js#0024:encodeColumn","exportIndex":24,"name":"encodeColumn","kind":"re-export","signature":"encodeColumn","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/index.md","moduleTitle":"world/storage/index","source":"engine/world/storage/index.js","import":"/engine/world/storage/index.js","sourceHash":"5c786ce5433a94c03856e517e78fb39f913f4b499220ac17b137b3597be6c001","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/index.js#0025:estimateChunkSize","exportIndex":25,"name":"estimateChunkSize","kind":"re-export","signature":"estimateChunkSize","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/index.md","moduleTitle":"world/storage/index","source":"engine/world/storage/index.js","import":"/engine/world/storage/index.js","sourceHash":"5c786ce5433a94c03856e517e78fb39f913f4b499220ac17b137b3597be6c001","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/index.js#0026:linearToMorton","exportIndex":26,"name":"linearToMorton","kind":"re-export","signature":"linearToMorton","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/index.md","moduleTitle":"world/storage/index","source":"engine/world/storage/index.js","import":"/engine/world/storage/index.js","sourceHash":"5c786ce5433a94c03856e517e78fb39f913f4b499220ac17b137b3597be6c001","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/index.js#0027:mortonToLinear","exportIndex":27,"name":"mortonToLinear","kind":"re-export","signature":"mortonToLinear","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/index.md","moduleTitle":"world/storage/index","source":"engine/world/storage/index.js","import":"/engine/world/storage/index.js","sourceHash":"5c786ce5433a94c03856e517e78fb39f913f4b499220ac17b137b3597be6c001","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/index.js#0028:parseChunkKey","exportIndex":28,"name":"parseChunkKey","kind":"re-export","signature":"parseChunkKey","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/index.md","moduleTitle":"world/storage/index","source":"engine/world/storage/index.js","import":"/engine/world/storage/index.js","sourceHash":"5c786ce5433a94c03856e517e78fb39f913f4b499220ac17b137b3597be6c001","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/index.js#0029:parseWorldWal","exportIndex":29,"name":"parseWorldWal","kind":"re-export","signature":"parseWorldWal","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/index.md","moduleTitle":"world/storage/index","source":"engine/world/storage/index.js","import":"/engine/world/storage/index.js","sourceHash":"5c786ce5433a94c03856e517e78fb39f913f4b499220ac17b137b3597be6c001","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/index.js#0030:parseWorldWalHeader","exportIndex":30,"name":"parseWorldWalHeader","kind":"re-export","signature":"parseWorldWalHeader","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/index.md","moduleTitle":"world/storage/index","source":"engine/world/storage/index.js","import":"/engine/world/storage/index.js","sourceHash":"5c786ce5433a94c03856e517e78fb39f913f4b499220ac17b137b3597be6c001","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/index.js#0031:serializeChunk","exportIndex":31,"name":"serializeChunk","kind":"re-export","signature":"serializeChunk","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/index.md","moduleTitle":"world/storage/index","source":"engine/world/storage/index.js","import":"/engine/world/storage/index.js","sourceHash":"5c786ce5433a94c03856e517e78fb39f913f4b499220ac17b137b3597be6c001","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/index.js#0032:validateWorldMetadata","exportIndex":32,"name":"validateWorldMetadata","kind":"re-export","signature":"validateWorldMetadata","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/storage/index.md","moduleTitle":"world/storage/index","source":"engine/world/storage/index.js","import":"/engine/world/storage/index.js","sourceHash":"5c786ce5433a94c03856e517e78fb39f913f4b499220ac17b137b3597be6c001","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/storage/index.js#0033:verifyCRC32","exportIndex":33,"name":"verifyCRC32","kind":"re-export","signature":"verifyCRC32","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/AdaptiveChunkBudget.md","moduleTitle":"world/streaming/AdaptiveChunkBudget","source":"engine/world/streaming/AdaptiveChunkBudget.js","import":"/engine/world/streaming/AdaptiveChunkBudget.js","sourceHash":"fa0743b289d2fc94ed406f933a94278d6c6bb69573e456b586efebe9de3d2e76","subsystem":"engine","recordType":"api-module","id":"module:engine/world/streaming/AdaptiveChunkBudget.js","title":"world/streaming/AdaptiveChunkBudget","summary":"AdaptiveChunkBudget.js - Self-optimizing chunk memory management Uses PID-style control with EMA smoothing for smooth, responsive adaptation. Based on game engine best practices for adaptive performance.","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/AdaptiveChunkBudget.md","moduleTitle":"world/streaming/AdaptiveChunkBudget","source":"engine/world/streaming/AdaptiveChunkBudget.js","import":"/engine/world/streaming/AdaptiveChunkBudget.js","sourceHash":"fa0743b289d2fc94ed406f933a94278d6c6bb69573e456b586efebe9de3d2e76","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/AdaptiveChunkBudget.js#0000:AdaptiveChunkBudget","exportIndex":0,"name":"AdaptiveChunkBudget","kind":"class","signature":"class AdaptiveChunkBudget","summary":"AdaptiveChunkBudget.js - Self-optimizing chunk memory management Uses PID-style control with EMA smoothing for smooth, responsive adaptation. Based on game engine best practices for adaptive performance."}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ChunkHistory.md","moduleTitle":"world/streaming/ChunkHistory","source":"engine/world/streaming/ChunkHistory.js","import":"/engine/world/streaming/ChunkHistory.js","sourceHash":"34e69343ed87f14cc464ac7b53ea16b61a0d46521011e585120051ca4556f78d","subsystem":"engine","recordType":"api-module","id":"module:engine/world/streaming/ChunkHistory.js","title":"world/streaming/ChunkHistory","summary":"HistoryManager - Global history management","exportCount":13}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ChunkHistory.md","moduleTitle":"world/streaming/ChunkHistory","source":"engine/world/streaming/ChunkHistory.js","import":"/engine/world/streaming/ChunkHistory.js","sourceHash":"34e69343ed87f14cc464ac7b53ea16b61a0d46521011e585120051ca4556f78d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/ChunkHistory.js#0000:HistoryManager","exportIndex":0,"name":"HistoryManager","kind":"class","signature":"class HistoryManager","summary":"HistoryManager - Global history management"}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ChunkHistory.md","moduleTitle":"world/streaming/ChunkHistory","source":"engine/world/streaming/ChunkHistory.js","import":"/engine/world/streaming/ChunkHistory.js","sourceHash":"34e69343ed87f14cc464ac7b53ea16b61a0d46521011e585120051ca4556f78d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/ChunkHistory.js#0001:ChunkHistory","exportIndex":1,"name":"ChunkHistory","kind":"re-export","signature":"ChunkHistory","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ChunkHistory.md","moduleTitle":"world/streaming/ChunkHistory","source":"engine/world/streaming/ChunkHistory.js","import":"/engine/world/streaming/ChunkHistory.js","sourceHash":"34e69343ed87f14cc464ac7b53ea16b61a0d46521011e585120051ca4556f78d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/ChunkHistory.js#0002:ChunkSnapshot","exportIndex":2,"name":"ChunkSnapshot","kind":"re-export","signature":"ChunkSnapshot","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ChunkHistory.md","moduleTitle":"world/streaming/ChunkHistory","source":"engine/world/streaming/ChunkHistory.js","import":"/engine/world/streaming/ChunkHistory.js","sourceHash":"34e69343ed87f14cc464ac7b53ea16b61a0d46521011e585120051ca4556f78d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/ChunkHistory.js#0003:EntityDespawnOperation","exportIndex":3,"name":"EntityDespawnOperation","kind":"re-export","signature":"EntityDespawnOperation","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ChunkHistory.md","moduleTitle":"world/streaming/ChunkHistory","source":"engine/world/streaming/ChunkHistory.js","import":"/engine/world/streaming/ChunkHistory.js","sourceHash":"34e69343ed87f14cc464ac7b53ea16b61a0d46521011e585120051ca4556f78d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/ChunkHistory.js#0004:EntityMoveOperation","exportIndex":4,"name":"EntityMoveOperation","kind":"re-export","signature":"EntityMoveOperation","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ChunkHistory.md","moduleTitle":"world/streaming/ChunkHistory","source":"engine/world/streaming/ChunkHistory.js","import":"/engine/world/streaming/ChunkHistory.js","sourceHash":"34e69343ed87f14cc464ac7b53ea16b61a0d46521011e585120051ca4556f78d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/ChunkHistory.js#0005:EntitySpawnOperation","exportIndex":5,"name":"EntitySpawnOperation","kind":"re-export","signature":"EntitySpawnOperation","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ChunkHistory.md","moduleTitle":"world/streaming/ChunkHistory","source":"engine/world/streaming/ChunkHistory.js","import":"/engine/world/streaming/ChunkHistory.js","sourceHash":"34e69343ed87f14cc464ac7b53ea16b61a0d46521011e585120051ca4556f78d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/ChunkHistory.js#0006:FillOperation","exportIndex":6,"name":"FillOperation","kind":"re-export","signature":"FillOperation","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ChunkHistory.md","moduleTitle":"world/streaming/ChunkHistory","source":"engine/world/streaming/ChunkHistory.js","import":"/engine/world/streaming/ChunkHistory.js","sourceHash":"34e69343ed87f14cc464ac7b53ea16b61a0d46521011e585120051ca4556f78d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/ChunkHistory.js#0007:OP_ENTITY_DESPAWN","exportIndex":7,"name":"OP_ENTITY_DESPAWN","kind":"re-export","signature":"OP_ENTITY_DESPAWN","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ChunkHistory.md","moduleTitle":"world/streaming/ChunkHistory","source":"engine/world/streaming/ChunkHistory.js","import":"/engine/world/streaming/ChunkHistory.js","sourceHash":"34e69343ed87f14cc464ac7b53ea16b61a0d46521011e585120051ca4556f78d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/ChunkHistory.js#0008:OP_ENTITY_MOVE","exportIndex":8,"name":"OP_ENTITY_MOVE","kind":"re-export","signature":"OP_ENTITY_MOVE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ChunkHistory.md","moduleTitle":"world/streaming/ChunkHistory","source":"engine/world/streaming/ChunkHistory.js","import":"/engine/world/streaming/ChunkHistory.js","sourceHash":"34e69343ed87f14cc464ac7b53ea16b61a0d46521011e585120051ca4556f78d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/ChunkHistory.js#0009:OP_ENTITY_SPAWN","exportIndex":9,"name":"OP_ENTITY_SPAWN","kind":"re-export","signature":"OP_ENTITY_SPAWN","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ChunkHistory.md","moduleTitle":"world/streaming/ChunkHistory","source":"engine/world/streaming/ChunkHistory.js","import":"/engine/world/streaming/ChunkHistory.js","sourceHash":"34e69343ed87f14cc464ac7b53ea16b61a0d46521011e585120051ca4556f78d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/ChunkHistory.js#0010:OP_VOXEL_FILL","exportIndex":10,"name":"OP_VOXEL_FILL","kind":"re-export","signature":"OP_VOXEL_FILL","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ChunkHistory.md","moduleTitle":"world/streaming/ChunkHistory","source":"engine/world/streaming/ChunkHistory.js","import":"/engine/world/streaming/ChunkHistory.js","sourceHash":"34e69343ed87f14cc464ac7b53ea16b61a0d46521011e585120051ca4556f78d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/ChunkHistory.js#0011:OP_VOXEL_SET","exportIndex":11,"name":"OP_VOXEL_SET","kind":"re-export","signature":"OP_VOXEL_SET","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ChunkHistory.md","moduleTitle":"world/streaming/ChunkHistory","source":"engine/world/streaming/ChunkHistory.js","import":"/engine/world/streaming/ChunkHistory.js","sourceHash":"34e69343ed87f14cc464ac7b53ea16b61a0d46521011e585120051ca4556f78d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/ChunkHistory.js#0012:VoxelOperation","exportIndex":12,"name":"VoxelOperation","kind":"re-export","signature":"VoxelOperation","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ChunkJobCoordinator.md","moduleTitle":"world/streaming/ChunkJobCoordinator","source":"engine/world/streaming/ChunkJobCoordinator.js","import":"/engine/world/streaming/ChunkJobCoordinator.js","sourceHash":"882f2a5255d1d84897a4b5b01a871c9568129a88538c7eaa4e9dc7a7e96731c5","subsystem":"engine","recordType":"api-module","id":"module:engine/world/streaming/ChunkJobCoordinator.js","title":"world/streaming/ChunkJobCoordinator","summary":"Encode 3D coordinates to Morton code (Z-order curve) Preserves spatial locality for cache-friendly iteration","exportCount":6}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ChunkJobCoordinator.md","moduleTitle":"world/streaming/ChunkJobCoordinator","source":"engine/world/streaming/ChunkJobCoordinator.js","import":"/engine/world/streaming/ChunkJobCoordinator.js","sourceHash":"882f2a5255d1d84897a4b5b01a871c9568129a88538c7eaa4e9dc7a7e96731c5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/ChunkJobCoordinator.js#0000:ChunkJobCoordinator","exportIndex":0,"name":"ChunkJobCoordinator","kind":"class","signature":"class ChunkJobCoordinator","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ChunkJobCoordinator.md","moduleTitle":"world/streaming/ChunkJobCoordinator","source":"engine/world/streaming/ChunkJobCoordinator.js","import":"/engine/world/streaming/ChunkJobCoordinator.js","sourceHash":"882f2a5255d1d84897a4b5b01a871c9568129a88538c7eaa4e9dc7a7e96731c5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/ChunkJobCoordinator.js#0001:encodeMorton3D","exportIndex":1,"name":"encodeMorton3D","kind":"function","signature":"encodeMorton3D(x, y, z)","summary":"Encode 3D coordinates to Morton code (Z-order curve) Preserves spatial locality for cache-friendly iteration"}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ChunkJobCoordinator.md","moduleTitle":"world/streaming/ChunkJobCoordinator","source":"engine/world/streaming/ChunkJobCoordinator.js","import":"/engine/world/streaming/ChunkJobCoordinator.js","sourceHash":"882f2a5255d1d84897a4b5b01a871c9568129a88538c7eaa4e9dc7a7e96731c5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/ChunkJobCoordinator.js#0002:decodeMorton3D","exportIndex":2,"name":"decodeMorton3D","kind":"function","signature":"decodeMorton3D(morton)","summary":"Decode Morton code back to 3D coordinates"}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ChunkJobCoordinator.md","moduleTitle":"world/streaming/ChunkJobCoordinator","source":"engine/world/streaming/ChunkJobCoordinator.js","import":"/engine/world/streaming/ChunkJobCoordinator.js","sourceHash":"882f2a5255d1d84897a4b5b01a871c9568129a88538c7eaa4e9dc7a7e96731c5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/ChunkJobCoordinator.js#0003:mortonBigmin","exportIndex":3,"name":"mortonBigmin","kind":"function","signature":"mortonBigmin(current, minMorton, maxMorton)","summary":"BIGMIN optimization: Find next Morton code inside query box Skips irrelevant ranges when iterating Morton-ordered data"}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ChunkJobCoordinator.md","moduleTitle":"world/streaming/ChunkJobCoordinator","source":"engine/world/streaming/ChunkJobCoordinator.js","import":"/engine/world/streaming/ChunkJobCoordinator.js","sourceHash":"882f2a5255d1d84897a4b5b01a871c9568129a88538c7eaa4e9dc7a7e96731c5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/ChunkJobCoordinator.js#0004:JOB_STATE","exportIndex":4,"name":"JOB_STATE","kind":"constant","signature":"JOB_STATE","summary":"ChunkJobCoordinator.js - Central Job Assignment for Chunk Loading Prevents duplicate chunk loads across multiple systems: - PriorityChunkLoader - ChunkStreaming - ChunkStreamingCompute - ChunkManager.updateStreaming Single source of truth for chunk job state."}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ChunkJobCoordinator.md","moduleTitle":"world/streaming/ChunkJobCoordinator","source":"engine/world/streaming/ChunkJobCoordinator.js","import":"/engine/world/streaming/ChunkJobCoordinator.js","sourceHash":"882f2a5255d1d84897a4b5b01a871c9568129a88538c7eaa4e9dc7a7e96731c5","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/ChunkJobCoordinator.js#0005:JOB_SOURCE","exportIndex":5,"name":"JOB_SOURCE","kind":"constant","signature":"JOB_SOURCE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ChunkLoadingZone.md","moduleTitle":"world/streaming/ChunkLoadingZone","source":"engine/world/streaming/ChunkLoadingZone.js","import":"/engine/world/streaming/ChunkLoadingZone.js","sourceHash":"41f454ca900c2455cb6eed2c612f1d2edb864a6a84b759f311f61101e39310bd","subsystem":"engine","recordType":"api-module","id":"module:engine/world/streaming/ChunkLoadingZone.js","title":"world/streaming/ChunkLoadingZone","summary":"ChunkLoadingZone - Manages player movement boundaries","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ChunkLoadingZone.md","moduleTitle":"world/streaming/ChunkLoadingZone","source":"engine/world/streaming/ChunkLoadingZone.js","import":"/engine/world/streaming/ChunkLoadingZone.js","sourceHash":"41f454ca900c2455cb6eed2c612f1d2edb864a6a84b759f311f61101e39310bd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/ChunkLoadingZone.js#0000:ChunkLoadingZone","exportIndex":0,"name":"ChunkLoadingZone","kind":"class","signature":"class ChunkLoadingZone","summary":"ChunkLoadingZone - Manages player movement boundaries"}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ChunkLoadingZone.md","moduleTitle":"world/streaming/ChunkLoadingZone","source":"engine/world/streaming/ChunkLoadingZone.js","import":"/engine/world/streaming/ChunkLoadingZone.js","sourceHash":"41f454ca900c2455cb6eed2c612f1d2edb864a6a84b759f311f61101e39310bd","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/ChunkLoadingZone.js#0001:ZONE_STATE","exportIndex":1,"name":"ZONE_STATE","kind":"constant","signature":"ZONE_STATE","summary":"ChunkLoadingZone.js - Virtual Buffer Wall System Prevents players from advancing past unloaded terrain. Creates an invisible barrier at the edge of generated chunks. Benefits: - Players never see unloaded terrain - Prevents falling through world - Smooth loading experience - Configurable buffer distance Zones: - SAFE: Fully loaded, player can move freely - BUFFER: Loading in progress, soft warning - BARRIER: Not yet loaded, cannot pass"}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ChunkSeamSystem.md","moduleTitle":"world/streaming/ChunkSeamSystem","source":"engine/world/streaming/ChunkSeamSystem.js","import":"/engine/world/streaming/ChunkSeamSystem.js","sourceHash":"d165baf1694e2f814db2f61804919fc63d27f0d924a038c40d59750ed0636d57","subsystem":"engine","recordType":"api-module","id":"module:engine/world/streaming/ChunkSeamSystem.js","title":"world/streaming/ChunkSeamSystem","summary":"","exportCount":9}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ChunkSeamSystem.md","moduleTitle":"world/streaming/ChunkSeamSystem","source":"engine/world/streaming/ChunkSeamSystem.js","import":"/engine/world/streaming/ChunkSeamSystem.js","sourceHash":"d165baf1694e2f814db2f61804919fc63d27f0d924a038c40d59750ed0636d57","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/ChunkSeamSystem.js#0000:ChunkSeamSystem","exportIndex":0,"name":"ChunkSeamSystem","kind":"class","signature":"class ChunkSeamSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ChunkSeamSystem.md","moduleTitle":"world/streaming/ChunkSeamSystem","source":"engine/world/streaming/ChunkSeamSystem.js","import":"/engine/world/streaming/ChunkSeamSystem.js","sourceHash":"d165baf1694e2f814db2f61804919fc63d27f0d924a038c40d59750ed0636d57","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/ChunkSeamSystem.js#0001:chunkSeamStructureHash3D","exportIndex":1,"name":"chunkSeamStructureHash3D","kind":"function","signature":"chunkSeamStructureHash3D(x, y, z)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ChunkSeamSystem.md","moduleTitle":"world/streaming/ChunkSeamSystem","source":"engine/world/streaming/ChunkSeamSystem.js","import":"/engine/world/streaming/ChunkSeamSystem.js","sourceHash":"d165baf1694e2f814db2f61804919fc63d27f0d924a038c40d59750ed0636d57","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/ChunkSeamSystem.js#0002:chunkSeamSeededStructureHash3D","exportIndex":2,"name":"chunkSeamSeededStructureHash3D","kind":"function","signature":"chunkSeamSeededStructureHash3D(x, y, z, seed)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ChunkSeamSystem.md","moduleTitle":"world/streaming/ChunkSeamSystem","source":"engine/world/streaming/ChunkSeamSystem.js","import":"/engine/world/streaming/ChunkSeamSystem.js","sourceHash":"d165baf1694e2f814db2f61804919fc63d27f0d924a038c40d59750ed0636d57","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/ChunkSeamSystem.js#0003:chunkSeamChunkSeed3D","exportIndex":3,"name":"chunkSeamChunkSeed3D","kind":"function","signature":"chunkSeamChunkSeed3D(cx, cy, cz, seed = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ChunkSeamSystem.md","moduleTitle":"world/streaming/ChunkSeamSystem","source":"engine/world/streaming/ChunkSeamSystem.js","import":"/engine/world/streaming/ChunkSeamSystem.js","sourceHash":"d165baf1694e2f814db2f61804919fc63d27f0d924a038c40d59750ed0636d57","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/ChunkSeamSystem.js#0004:chunkSeamPositionSeed3D","exportIndex":4,"name":"chunkSeamPositionSeed3D","kind":"function","signature":"chunkSeamPositionSeed3D(x, y, z, seed = 0)","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ChunkSeamSystem.md","moduleTitle":"world/streaming/ChunkSeamSystem","source":"engine/world/streaming/ChunkSeamSystem.js","import":"/engine/world/streaming/ChunkSeamSystem.js","sourceHash":"d165baf1694e2f814db2f61804919fc63d27f0d924a038c40d59750ed0636d57","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/ChunkSeamSystem.js#0005:CHUNK_SIZE","exportIndex":5,"name":"CHUNK_SIZE","kind":"constant","signature":"CHUNK_SIZE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ChunkSeamSystem.md","moduleTitle":"world/streaming/ChunkSeamSystem","source":"engine/world/streaming/ChunkSeamSystem.js","import":"/engine/world/streaming/ChunkSeamSystem.js","sourceHash":"d165baf1694e2f814db2f61804919fc63d27f0d924a038c40d59750ed0636d57","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/ChunkSeamSystem.js#0006:StructureType","exportIndex":6,"name":"StructureType","kind":"constant","signature":"StructureType","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ChunkSeamSystem.md","moduleTitle":"world/streaming/ChunkSeamSystem","source":"engine/world/streaming/ChunkSeamSystem.js","import":"/engine/world/streaming/ChunkSeamSystem.js","sourceHash":"d165baf1694e2f814db2f61804919fc63d27f0d924a038c40d59750ed0636d57","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/ChunkSeamSystem.js#0007:GenerationPhase","exportIndex":7,"name":"GenerationPhase","kind":"constant","signature":"GenerationPhase","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ChunkSeamSystem.md","moduleTitle":"world/streaming/ChunkSeamSystem","source":"engine/world/streaming/ChunkSeamSystem.js","import":"/engine/world/streaming/ChunkSeamSystem.js","sourceHash":"d165baf1694e2f814db2f61804919fc63d27f0d924a038c40d59750ed0636d57","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/ChunkSeamSystem.js#0008:GenerationPhaseNames","exportIndex":8,"name":"GenerationPhaseNames","kind":"constant","signature":"GenerationPhaseNames","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ChunkStreaming.md","moduleTitle":"world/streaming/ChunkStreaming","source":"engine/world/streaming/ChunkStreaming.js","import":"/engine/world/streaming/ChunkStreaming.js","sourceHash":"23b7684476399fbbeae7d5ca0125a263a7ffa0939e9175962a19e61d936ba920","subsystem":"engine","recordType":"api-module","id":"module:engine/world/streaming/ChunkStreaming.js","title":"world/streaming/ChunkStreaming","summary":"","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ChunkStreaming.md","moduleTitle":"world/streaming/ChunkStreaming","source":"engine/world/streaming/ChunkStreaming.js","import":"/engine/world/streaming/ChunkStreaming.js","sourceHash":"23b7684476399fbbeae7d5ca0125a263a7ffa0939e9175962a19e61d936ba920","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/ChunkStreaming.js#0000:ChunkStreaming","exportIndex":0,"name":"ChunkStreaming","kind":"class","signature":"class ChunkStreaming","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ChunkStreaming.md","moduleTitle":"world/streaming/ChunkStreaming","source":"engine/world/streaming/ChunkStreaming.js","import":"/engine/world/streaming/ChunkStreaming.js","sourceHash":"23b7684476399fbbeae7d5ca0125a263a7ffa0939e9175962a19e61d936ba920","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/ChunkStreaming.js#0001:LoadRequestRingBuffer","exportIndex":1,"name":"LoadRequestRingBuffer","kind":"re-export","signature":"LoadRequestRingBuffer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ChunkStreaming.md","moduleTitle":"world/streaming/ChunkStreaming","source":"engine/world/streaming/ChunkStreaming.js","import":"/engine/world/streaming/ChunkStreaming.js","sourceHash":"23b7684476399fbbeae7d5ca0125a263a7ffa0939e9175962a19e61d936ba920","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/ChunkStreaming.js#0002:PRIORITY_BUCKET","exportIndex":2,"name":"PRIORITY_BUCKET","kind":"re-export","signature":"PRIORITY_BUCKET","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ChunkStreaming.md","moduleTitle":"world/streaming/ChunkStreaming","source":"engine/world/streaming/ChunkStreaming.js","import":"/engine/world/streaming/ChunkStreaming.js","sourceHash":"23b7684476399fbbeae7d5ca0125a263a7ffa0939e9175962a19e61d936ba920","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/ChunkStreaming.js#0003:PriorityBucketQueue","exportIndex":3,"name":"PriorityBucketQueue","kind":"re-export","signature":"PriorityBucketQueue","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ChunkStreamingCompute.md","moduleTitle":"world/streaming/ChunkStreamingCompute","source":"engine/world/streaming/ChunkStreamingCompute.js","import":"/engine/world/streaming/ChunkStreamingCompute.js","sourceHash":"1f069143c15af5ef143d4ad4a903f038b83af9e70e4bafa05527c56d075bf239","subsystem":"engine","recordType":"api-module","id":"module:engine/world/streaming/ChunkStreamingCompute.js","title":"world/streaming/ChunkStreamingCompute","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ChunkStreamingCompute.md","moduleTitle":"world/streaming/ChunkStreamingCompute","source":"engine/world/streaming/ChunkStreamingCompute.js","import":"/engine/world/streaming/ChunkStreamingCompute.js","sourceHash":"1f069143c15af5ef143d4ad4a903f038b83af9e70e4bafa05527c56d075bf239","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/ChunkStreamingCompute.js#0000:ChunkStreamingCompute","exportIndex":0,"name":"ChunkStreamingCompute","kind":"class","signature":"class ChunkStreamingCompute","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ChunkUpdater.md","moduleTitle":"world/streaming/ChunkUpdater","source":"engine/world/streaming/ChunkUpdater.js","import":"/engine/world/streaming/ChunkUpdater.js","sourceHash":"97a2b58703cf213e0584942352b7203320d4dea337bdf15a66a09fc768b922e8","subsystem":"engine","recordType":"api-module","id":"module:engine/world/streaming/ChunkUpdater.js","title":"world/streaming/ChunkUpdater","summary":"ChunkUpdater.js - Block Update Queue Manager Manages block updates with: - Rate-limited updates per frame - Propagation for lighting/physics - Lazy update batching - Update coalescing","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ChunkUpdater.md","moduleTitle":"world/streaming/ChunkUpdater","source":"engine/world/streaming/ChunkUpdater.js","import":"/engine/world/streaming/ChunkUpdater.js","sourceHash":"97a2b58703cf213e0584942352b7203320d4dea337bdf15a66a09fc768b922e8","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/ChunkUpdater.js#0000:ChunkUpdater","exportIndex":0,"name":"ChunkUpdater","kind":"class","signature":"class ChunkUpdater","summary":"ChunkUpdater.js - Block Update Queue Manager Manages block updates with: - Rate-limited updates per frame - Propagation for lighting/physics - Lazy update batching - Update coalescing"}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ChunkWorkerPool.md","moduleTitle":"world/streaming/ChunkWorkerPool","source":"engine/world/streaming/ChunkWorkerPool.js","import":"/engine/world/streaming/ChunkWorkerPool.js","sourceHash":"1fe165dae01978a20090a514b909533803768dc193edefb39c957bbe359fd421","subsystem":"engine","recordType":"api-module","id":"module:engine/world/streaming/ChunkWorkerPool.js","title":"world/streaming/ChunkWorkerPool","summary":"ChunkWorkerPool - Manages a pool of Web Workers","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ChunkWorkerPool.md","moduleTitle":"world/streaming/ChunkWorkerPool","source":"engine/world/streaming/ChunkWorkerPool.js","import":"/engine/world/streaming/ChunkWorkerPool.js","sourceHash":"1fe165dae01978a20090a514b909533803768dc193edefb39c957bbe359fd421","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/ChunkWorkerPool.js#0000:ChunkWorkerPool","exportIndex":0,"name":"ChunkWorkerPool","kind":"class","signature":"class ChunkWorkerPool","summary":"ChunkWorkerPool - Manages a pool of Web Workers"}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/MovementPredictor.md","moduleTitle":"world/streaming/MovementPredictor","source":"engine/world/streaming/MovementPredictor.js","import":"/engine/world/streaming/MovementPredictor.js","sourceHash":"5909954d382479d379d31a5c008787d2b1512077450318dbb0d6c9be049f043d","subsystem":"engine","recordType":"api-module","id":"module:engine/world/streaming/MovementPredictor.js","title":"world/streaming/MovementPredictor","summary":"MovementPredictor - Predicts player movement for chunk prefetch","exportCount":1}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/MovementPredictor.md","moduleTitle":"world/streaming/MovementPredictor","source":"engine/world/streaming/MovementPredictor.js","import":"/engine/world/streaming/MovementPredictor.js","sourceHash":"5909954d382479d379d31a5c008787d2b1512077450318dbb0d6c9be049f043d","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/MovementPredictor.js#0000:MovementPredictor","exportIndex":0,"name":"MovementPredictor","kind":"class","signature":"class MovementPredictor","summary":"MovementPredictor - Predicts player movement for chunk prefetch"}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/PriorityChunkLoader.md","moduleTitle":"world/streaming/PriorityChunkLoader","source":"engine/world/streaming/PriorityChunkLoader.js","import":"/engine/world/streaming/PriorityChunkLoader.js","sourceHash":"8189ea16c5303551bcd68271c0ac3fd1d1f1824b076d1008983a0be0b61cacdf","subsystem":"engine","recordType":"api-module","id":"module:engine/world/streaming/PriorityChunkLoader.js","title":"world/streaming/PriorityChunkLoader","summary":"PriorityChunkLoader.js - Distance-Based Chunk Loading Loads chunks in order from closest to player outward. Uses spiral/ring pattern for optimal loading experience. Benefits: - Player sees nearby terrain first - Smooth loading experience - Efficient resource usage - Integrates with ChunkLoadingZone Patterns: - SPIRAL: Classic spiral from center - RINGS: Concentric rings outward - DIRECTIONAL: Prioritize direction player is facing","exportCount":2}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/PriorityChunkLoader.md","moduleTitle":"world/streaming/PriorityChunkLoader","source":"engine/world/streaming/PriorityChunkLoader.js","import":"/engine/world/streaming/PriorityChunkLoader.js","sourceHash":"8189ea16c5303551bcd68271c0ac3fd1d1f1824b076d1008983a0be0b61cacdf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/PriorityChunkLoader.js#0000:PriorityChunkLoader","exportIndex":0,"name":"PriorityChunkLoader","kind":"class","signature":"class PriorityChunkLoader","summary":"PriorityChunkLoader - Manages chunk load ordering"}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/PriorityChunkLoader.md","moduleTitle":"world/streaming/PriorityChunkLoader","source":"engine/world/streaming/PriorityChunkLoader.js","import":"/engine/world/streaming/PriorityChunkLoader.js","sourceHash":"8189ea16c5303551bcd68271c0ac3fd1d1f1824b076d1008983a0be0b61cacdf","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/PriorityChunkLoader.js#0001:LOAD_PATTERN","exportIndex":1,"name":"LOAD_PATTERN","kind":"constant","signature":"LOAD_PATTERN","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ProgressiveChunkLoader.md","moduleTitle":"world/streaming/ProgressiveChunkLoader","source":"engine/world/streaming/ProgressiveChunkLoader.js","import":"/engine/world/streaming/ProgressiveChunkLoader.js","sourceHash":"c4984eadc4925c4de53320d7f67b89cab5e98c32eccef3b0a7f34dad88e08bc7","subsystem":"engine","recordType":"api-module","id":"module:engine/world/streaming/ProgressiveChunkLoader.js","title":"world/streaming/ProgressiveChunkLoader","summary":"ProgressiveChunkLoader - Manages progressive LOD loading","exportCount":4}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ProgressiveChunkLoader.md","moduleTitle":"world/streaming/ProgressiveChunkLoader","source":"engine/world/streaming/ProgressiveChunkLoader.js","import":"/engine/world/streaming/ProgressiveChunkLoader.js","sourceHash":"c4984eadc4925c4de53320d7f67b89cab5e98c32eccef3b0a7f34dad88e08bc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/ProgressiveChunkLoader.js#0000:ProgressiveChunkLoader","exportIndex":0,"name":"ProgressiveChunkLoader","kind":"class","signature":"class ProgressiveChunkLoader","summary":"ProgressiveChunkLoader - Manages progressive LOD loading"}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ProgressiveChunkLoader.md","moduleTitle":"world/streaming/ProgressiveChunkLoader","source":"engine/world/streaming/ProgressiveChunkLoader.js","import":"/engine/world/streaming/ProgressiveChunkLoader.js","sourceHash":"c4984eadc4925c4de53320d7f67b89cab5e98c32eccef3b0a7f34dad88e08bc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/ProgressiveChunkLoader.js#0001:ChunkRefinementState","exportIndex":1,"name":"ChunkRefinementState","kind":"re-export","signature":"ChunkRefinementState","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ProgressiveChunkLoader.md","moduleTitle":"world/streaming/ProgressiveChunkLoader","source":"engine/world/streaming/ProgressiveChunkLoader.js","import":"/engine/world/streaming/ProgressiveChunkLoader.js","sourceHash":"c4984eadc4925c4de53320d7f67b89cab5e98c32eccef3b0a7f34dad88e08bc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/ProgressiveChunkLoader.js#0002:PROGRESSIVE_LEVELS","exportIndex":2,"name":"PROGRESSIVE_LEVELS","kind":"re-export","signature":"PROGRESSIVE_LEVELS","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/ProgressiveChunkLoader.md","moduleTitle":"world/streaming/ProgressiveChunkLoader","source":"engine/world/streaming/ProgressiveChunkLoader.js","import":"/engine/world/streaming/ProgressiveChunkLoader.js","sourceHash":"c4984eadc4925c4de53320d7f67b89cab5e98c32eccef3b0a7f34dad88e08bc7","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/ProgressiveChunkLoader.js#0003:REFINEMENT_DISTANCES","exportIndex":3,"name":"REFINEMENT_DISTANCES","kind":"re-export","signature":"REFINEMENT_DISTANCES","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/index.md","moduleTitle":"world/streaming/index","source":"engine/world/streaming/index.js","import":"/engine/world/streaming/index.js","sourceHash":"bfbb67b412b7038332453acf22c1df99216cb51645e5fc9db94cc98932cb00ba","subsystem":"engine","recordType":"api-module","id":"module:engine/world/streaming/index.js","title":"world/streaming/index","summary":"","exportCount":23}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/index.md","moduleTitle":"world/streaming/index","source":"engine/world/streaming/index.js","import":"/engine/world/streaming/index.js","sourceHash":"bfbb67b412b7038332453acf22c1df99216cb51645e5fc9db94cc98932cb00ba","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/index.js#0000:AdaptiveChunkBudget","exportIndex":0,"name":"AdaptiveChunkBudget","kind":"re-export","signature":"AdaptiveChunkBudget","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/index.md","moduleTitle":"world/streaming/index","source":"engine/world/streaming/index.js","import":"/engine/world/streaming/index.js","sourceHash":"bfbb67b412b7038332453acf22c1df99216cb51645e5fc9db94cc98932cb00ba","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/index.js#0001:ChunkHistory","exportIndex":1,"name":"ChunkHistory","kind":"re-export","signature":"ChunkHistory","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/index.md","moduleTitle":"world/streaming/index","source":"engine/world/streaming/index.js","import":"/engine/world/streaming/index.js","sourceHash":"bfbb67b412b7038332453acf22c1df99216cb51645e5fc9db94cc98932cb00ba","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/index.js#0002:ChunkJobCoordinator","exportIndex":2,"name":"ChunkJobCoordinator","kind":"re-export","signature":"ChunkJobCoordinator","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/index.md","moduleTitle":"world/streaming/index","source":"engine/world/streaming/index.js","import":"/engine/world/streaming/index.js","sourceHash":"bfbb67b412b7038332453acf22c1df99216cb51645e5fc9db94cc98932cb00ba","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/index.js#0003:ChunkLoadingZone","exportIndex":3,"name":"ChunkLoadingZone","kind":"re-export","signature":"ChunkLoadingZone","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/index.md","moduleTitle":"world/streaming/index","source":"engine/world/streaming/index.js","import":"/engine/world/streaming/index.js","sourceHash":"bfbb67b412b7038332453acf22c1df99216cb51645e5fc9db94cc98932cb00ba","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/index.js#0004:ChunkSeamSystem","exportIndex":4,"name":"ChunkSeamSystem","kind":"re-export","signature":"ChunkSeamSystem","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/index.md","moduleTitle":"world/streaming/index","source":"engine/world/streaming/index.js","import":"/engine/world/streaming/index.js","sourceHash":"bfbb67b412b7038332453acf22c1df99216cb51645e5fc9db94cc98932cb00ba","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/index.js#0005:ChunkStreamer","exportIndex":5,"name":"ChunkStreamer","kind":"re-export","signature":"ChunkStreamer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/index.md","moduleTitle":"world/streaming/index","source":"engine/world/streaming/index.js","import":"/engine/world/streaming/index.js","sourceHash":"bfbb67b412b7038332453acf22c1df99216cb51645e5fc9db94cc98932cb00ba","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/index.js#0006:ChunkStreaming","exportIndex":6,"name":"ChunkStreaming","kind":"re-export","signature":"ChunkStreaming","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/index.md","moduleTitle":"world/streaming/index","source":"engine/world/streaming/index.js","import":"/engine/world/streaming/index.js","sourceHash":"bfbb67b412b7038332453acf22c1df99216cb51645e5fc9db94cc98932cb00ba","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/index.js#0007:ChunkStreamingCompute","exportIndex":7,"name":"ChunkStreamingCompute","kind":"re-export","signature":"ChunkStreamingCompute","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/index.md","moduleTitle":"world/streaming/index","source":"engine/world/streaming/index.js","import":"/engine/world/streaming/index.js","sourceHash":"bfbb67b412b7038332453acf22c1df99216cb51645e5fc9db94cc98932cb00ba","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/index.js#0008:ChunkUpdater","exportIndex":8,"name":"ChunkUpdater","kind":"re-export","signature":"ChunkUpdater","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/index.md","moduleTitle":"world/streaming/index","source":"engine/world/streaming/index.js","import":"/engine/world/streaming/index.js","sourceHash":"bfbb67b412b7038332453acf22c1df99216cb51645e5fc9db94cc98932cb00ba","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/index.js#0009:ChunkWorkerPool","exportIndex":9,"name":"ChunkWorkerPool","kind":"re-export","signature":"ChunkWorkerPool","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/index.md","moduleTitle":"world/streaming/index","source":"engine/world/streaming/index.js","import":"/engine/world/streaming/index.js","sourceHash":"bfbb67b412b7038332453acf22c1df99216cb51645e5fc9db94cc98932cb00ba","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/index.js#0010:GenerationPhase","exportIndex":10,"name":"GenerationPhase","kind":"re-export","signature":"GenerationPhase","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/index.md","moduleTitle":"world/streaming/index","source":"engine/world/streaming/index.js","import":"/engine/world/streaming/index.js","sourceHash":"bfbb67b412b7038332453acf22c1df99216cb51645e5fc9db94cc98932cb00ba","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/index.js#0011:HistoryManager","exportIndex":11,"name":"HistoryManager","kind":"re-export","signature":"HistoryManager","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/index.md","moduleTitle":"world/streaming/index","source":"engine/world/streaming/index.js","import":"/engine/world/streaming/index.js","sourceHash":"bfbb67b412b7038332453acf22c1df99216cb51645e5fc9db94cc98932cb00ba","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/index.js#0012:JOB_SOURCE","exportIndex":12,"name":"JOB_SOURCE","kind":"re-export","signature":"JOB_SOURCE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/index.md","moduleTitle":"world/streaming/index","source":"engine/world/streaming/index.js","import":"/engine/world/streaming/index.js","sourceHash":"bfbb67b412b7038332453acf22c1df99216cb51645e5fc9db94cc98932cb00ba","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/index.js#0013:JOB_STATE","exportIndex":13,"name":"JOB_STATE","kind":"re-export","signature":"JOB_STATE","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/index.md","moduleTitle":"world/streaming/index","source":"engine/world/streaming/index.js","import":"/engine/world/streaming/index.js","sourceHash":"bfbb67b412b7038332453acf22c1df99216cb51645e5fc9db94cc98932cb00ba","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/index.js#0014:LOAD_PATTERN","exportIndex":14,"name":"LOAD_PATTERN","kind":"re-export","signature":"LOAD_PATTERN","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/index.md","moduleTitle":"world/streaming/index","source":"engine/world/streaming/index.js","import":"/engine/world/streaming/index.js","sourceHash":"bfbb67b412b7038332453acf22c1df99216cb51645e5fc9db94cc98932cb00ba","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/index.js#0015:LoadRequestRingBuffer","exportIndex":15,"name":"LoadRequestRingBuffer","kind":"re-export","signature":"LoadRequestRingBuffer","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/index.md","moduleTitle":"world/streaming/index","source":"engine/world/streaming/index.js","import":"/engine/world/streaming/index.js","sourceHash":"bfbb67b412b7038332453acf22c1df99216cb51645e5fc9db94cc98932cb00ba","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/index.js#0016:MovementPredictor","exportIndex":16,"name":"MovementPredictor","kind":"re-export","signature":"MovementPredictor","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/index.md","moduleTitle":"world/streaming/index","source":"engine/world/streaming/index.js","import":"/engine/world/streaming/index.js","sourceHash":"bfbb67b412b7038332453acf22c1df99216cb51645e5fc9db94cc98932cb00ba","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/index.js#0017:PRIORITY_BUCKET","exportIndex":17,"name":"PRIORITY_BUCKET","kind":"re-export","signature":"PRIORITY_BUCKET","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/index.md","moduleTitle":"world/streaming/index","source":"engine/world/streaming/index.js","import":"/engine/world/streaming/index.js","sourceHash":"bfbb67b412b7038332453acf22c1df99216cb51645e5fc9db94cc98932cb00ba","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/index.js#0018:PriorityBucketQueue","exportIndex":18,"name":"PriorityBucketQueue","kind":"re-export","signature":"PriorityBucketQueue","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/index.md","moduleTitle":"world/streaming/index","source":"engine/world/streaming/index.js","import":"/engine/world/streaming/index.js","sourceHash":"bfbb67b412b7038332453acf22c1df99216cb51645e5fc9db94cc98932cb00ba","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/index.js#0019:PriorityChunkLoader","exportIndex":19,"name":"PriorityChunkLoader","kind":"re-export","signature":"PriorityChunkLoader","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/index.md","moduleTitle":"world/streaming/index","source":"engine/world/streaming/index.js","import":"/engine/world/streaming/index.js","sourceHash":"bfbb67b412b7038332453acf22c1df99216cb51645e5fc9db94cc98932cb00ba","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/index.js#0020:ProgressiveChunkLoader","exportIndex":20,"name":"ProgressiveChunkLoader","kind":"re-export","signature":"ProgressiveChunkLoader","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/index.md","moduleTitle":"world/streaming/index","source":"engine/world/streaming/index.js","import":"/engine/world/streaming/index.js","sourceHash":"bfbb67b412b7038332453acf22c1df99216cb51645e5fc9db94cc98932cb00ba","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/index.js#0021:StructureType","exportIndex":21,"name":"StructureType","kind":"re-export","signature":"StructureType","summary":""}
{"schemaVersion":1,"modulePath":"engine/reference/world/streaming/index.md","moduleTitle":"world/streaming/index","source":"engine/world/streaming/index.js","import":"/engine/world/streaming/index.js","sourceHash":"bfbb67b412b7038332453acf22c1df99216cb51645e5fc9db94cc98932cb00ba","subsystem":"engine","recordType":"api-symbol","id":"symbol:engine/world/streaming/index.js#0022:ZONE_STATE","exportIndex":22,"name":"ZONE_STATE","kind":"re-export","signature":"ZONE_STATE","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/boot.md","moduleTitle":"boot","source":"plauna/boot.js","import":"/plauna/boot.js","sourceHash":"d31c2e44005687827c650d109af0c4537f69ccd82d1141fcdeed63534897d78b","subsystem":"plauna","recordType":"api-module","id":"module:plauna/boot.js","title":"boot","summary":"============================================================================ PLAUNA ENGINE BOOTSTRAP ============================================================================ PlaunaDevShell is the main entry point for the Plauna UI system. It: 1. Initializes the rendering pipeline (WidgetRenderer, DOMRenderer) 2. Loads and applies themes from plauna/themes/{id}/theme.json 3. Sets up the workspace system for virtual desktops (optional GPU panels) 4. Injects base CSS for the widget gallery/showcase 5. Provides a public API for theme switching and widget rendering ARCHITECTURE FLOW: - PlaunaDevShell.boot(root, options) → PlaunaDevShell instance - _init() → loads styles, theme, workspace manager - ThemeLoader applies CSS variables to :root - WidgetRenderer converts UINode trees to DOM - WorkspaceManager (optional) handles GPU-accelerated panels USAGE: const shell = await PlaunaDevShell.boot(document.body, { logger: console }); shell.setTheme('dark'); const element = shell.render(myUINode); document.body.appendChild(element); THEME SYSTEM: - Themes live in plauna/themes/{id}/theme.json - Themes can extend other themes via \"extends\": \"parent\" - CSS variables are written to <style data-plauna-theme=\"1\"> tags - Per-session overrides can be applied via applyOverrides() WORKSPACE SYSTEM (OPTIONAL): - Requires gpuDevice option for WebGPU support - Creates virtual desktop layers for multi-panel layouts - Supports DOM panels and GPU panels (WebGPU textures) - Managed by WorkspaceManager class","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/boot.md","moduleTitle":"boot","source":"plauna/boot.js","import":"/plauna/boot.js","sourceHash":"d31c2e44005687827c650d109af0c4537f69ccd82d1141fcdeed63534897d78b","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/boot.js#0000:PlaunaDevShell","exportIndex":0,"name":"PlaunaDevShell","kind":"class","signature":"class PlaunaDevShell","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/console/PlaunaConsole.md","moduleTitle":"console/PlaunaConsole","source":"plauna/console/PlaunaConsole.js","import":"/plauna/console/PlaunaConsole.js","sourceHash":"d070c3f2d9b3cc92382af993554f65fc4bd7425bec674bf37f4acc2cc86a287e","subsystem":"plauna","recordType":"api-module","id":"module:plauna/console/PlaunaConsole.js","title":"console/PlaunaConsole","summary":"PlaunaConsole - Main console system for Plauna Integrates HtmlConsole with Plauna-specific features and debugging capabilities","exportCount":3}
{"schemaVersion":1,"modulePath":"plauna/reference/console/PlaunaConsole.md","moduleTitle":"console/PlaunaConsole","source":"plauna/console/PlaunaConsole.js","import":"/plauna/console/PlaunaConsole.js","sourceHash":"d070c3f2d9b3cc92382af993554f65fc4bd7425bec674bf37f4acc2cc86a287e","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/console/PlaunaConsole.js#0000:createPlaunaConsole","exportIndex":0,"name":"createPlaunaConsole","kind":"function","signature":"createPlaunaConsole(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/console/PlaunaConsole.md","moduleTitle":"console/PlaunaConsole","source":"plauna/console/PlaunaConsole.js","import":"/plauna/console/PlaunaConsole.js","sourceHash":"d070c3f2d9b3cc92382af993554f65fc4bd7425bec674bf37f4acc2cc86a287e","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/console/PlaunaConsole.js#0001:getPlaunaConsole","exportIndex":1,"name":"getPlaunaConsole","kind":"function","signature":"getPlaunaConsole()","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/console/PlaunaConsole.md","moduleTitle":"console/PlaunaConsole","source":"plauna/console/PlaunaConsole.js","import":"/plauna/console/PlaunaConsole.js","sourceHash":"d070c3f2d9b3cc92382af993554f65fc4bd7425bec674bf37f4acc2cc86a287e","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/console/PlaunaConsole.js#0002:PlaunaConsole","exportIndex":2,"name":"PlaunaConsole","kind":"constant","signature":"PlaunaConsole","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/core/BindingEngine.md","moduleTitle":"core/BindingEngine","source":"plauna/core/BindingEngine.js","import":"/plauna/core/BindingEngine.js","sourceHash":"84a41e35c48b8c31f4d13ec4b96ea21d53ab8d9748dd1ebb44dd39a6d15ec606","subsystem":"plauna","recordType":"api-module","id":"module:plauna/core/BindingEngine.js","title":"core/BindingEngine","summary":"Lifecycle-safe StateStore -> UINode bindings and UINode -> intent dispatch. Two-way bindings never promote local UI values into authoritative state.","exportCount":2}
{"schemaVersion":1,"modulePath":"plauna/reference/core/BindingEngine.md","moduleTitle":"core/BindingEngine","source":"plauna/core/BindingEngine.js","import":"/plauna/core/BindingEngine.js","sourceHash":"84a41e35c48b8c31f4d13ec4b96ea21d53ab8d9748dd1ebb44dd39a6d15ec606","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/core/BindingEngine.js#0000:BindingEngine","exportIndex":0,"name":"BindingEngine","kind":"class","signature":"class BindingEngine","summary":"Lifecycle-safe StateStore -> UINode bindings and UINode -> intent dispatch. Two-way bindings never promote local UI values into authoritative state."}
{"schemaVersion":1,"modulePath":"plauna/reference/core/BindingEngine.md","moduleTitle":"core/BindingEngine","source":"plauna/core/BindingEngine.js","import":"/plauna/core/BindingEngine.js","sourceHash":"84a41e35c48b8c31f4d13ec4b96ea21d53ab8d9748dd1ebb44dd39a6d15ec606","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/core/BindingEngine.js#0001:BindingUtils","exportIndex":1,"name":"BindingUtils","kind":"constant","signature":"BindingUtils","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/core/DOMRenderer.md","moduleTitle":"core/DOMRenderer","source":"plauna/core/DOMRenderer.js","import":"/plauna/core/DOMRenderer.js","sourceHash":"baa0a98fc60b7e6b42dc3f78b1c776b6b50d478911019906e04e377413b17b20","subsystem":"plauna","recordType":"api-module","id":"module:plauna/core/DOMRenderer.js","title":"core/DOMRenderer","summary":"============================================================================ DOMRenderer - Visual Tree to DOM Renderer ============================================================================ DOMRenderer connects Plauna's retained-mode UINode system to the browser DOM. It takes a VisualTree (rooted UINode tree) and renders it to actual DOM elements. DIFFERENCES FROM WidgetRenderer: - WidgetRenderer: Converts single UINode widgets to DOM (used by widgets themselves) - DOMRenderer: Renders entire visual tree from game/engine to DOM (used by PlaunaApp) RENDERING FLOW: 1. render(visualTree) - Entry point, renders entire tree to container 2. renderNode(node) - Recursively renders node and all children 3. createDOMElement(node) - Creates DOM element based on node type 4. Applies styles, attributes, and content 5. Updates mapping tables for bidirectional lookup MAPPING TABLES: - nodeToDOM: Map<UINode, HTMLElement> - UINode → DOM element - domToNode: Map<HTMLElement, UINode> - DOM element → UINode (reverse lookup) - renderedNodes: Set<UINode> - Track which nodes have been rendered ELEMENT TYPE HANDLING: - 'text': Renders as <div> with text content - 'button': <button> element - 'input': <input> element with type, value, placeholder, validation attributes - 'image': <img> element with src, alt - 'svg': SVG namespace elements for graphics - Other: <div> as fallback DIRTY FLAG PROCESSING: - DIRTY.STYLE: Re-apply inline styles to DOM - DIRTY.LAYOUT: Re-compute position/size - DIRTY.PAINT: Re-render entire node - DIRTY.TEXT: Update text content - DIRTY.CHILDREN: Re-render child subtree UPDATE MECHANISM: - updateNode(node): Incrementally updates a single node based on dirty flags - updateDOMElement(element, node): Applies node properties to DOM element - processStyleDirty(nodes): Batch updates for style changes TEXT SERVICE: - Optional textService for internationalization - If provided, wraps text content through translation layer","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/core/DOMRenderer.md","moduleTitle":"core/DOMRenderer","source":"plauna/core/DOMRenderer.js","import":"/plauna/core/DOMRenderer.js","sourceHash":"baa0a98fc60b7e6b42dc3f78b1c776b6b50d478911019906e04e377413b17b20","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/core/DOMRenderer.js#0000:DOMRenderer","exportIndex":0,"name":"DOMRenderer","kind":"class","signature":"class DOMRenderer","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/core/DirtyGraph.md","moduleTitle":"core/DirtyGraph","source":"plauna/core/DirtyGraph.js","import":"/plauna/core/DirtyGraph.js","sourceHash":"b7219d3bb232d8a74435db239bad02690060bf219da33bd28e93329d00c81301","subsystem":"plauna","recordType":"api-module","id":"module:plauna/core/DirtyGraph.js","title":"core/DirtyGraph","summary":"DirtyGraph - Optimized dirty flag propagation and update scheduling. Dirty flag management pattern: - Efficient dirty flag propagation for large UI trees - Categorizes dirty flags by type (STYLE, LAYOUT, PAINT, etc.) - Batch processing of dirty nodes - Performance tracking for propagation timing Propagation rules: - LAYOUT dirtiness propagates to parent - PAINT dirtiness propagates to parent if node affects parent's paint - CHILDREN dirtiness propagates to descendants - STYLE dirtiness propagates to descendants if style affects them Architecture: - dirtyNodes: Set of all dirty nodes - dirtySets: Map of flag → Set of nodes (categorized by flag type) - propagationQueue: Queue for deferred propagations - isProcessing: Flag to prevent re-entrant propagation","exportCount":2}
{"schemaVersion":1,"modulePath":"plauna/reference/core/DirtyGraph.md","moduleTitle":"core/DirtyGraph","source":"plauna/core/DirtyGraph.js","import":"/plauna/core/DirtyGraph.js","sourceHash":"b7219d3bb232d8a74435db239bad02690060bf219da33bd28e93329d00c81301","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/core/DirtyGraph.js#0000:DirtyGraph","exportIndex":0,"name":"DirtyGraph","kind":"class","signature":"class DirtyGraph","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/core/DirtyGraph.md","moduleTitle":"core/DirtyGraph","source":"plauna/core/DirtyGraph.js","import":"/plauna/core/DirtyGraph.js","sourceHash":"b7219d3bb232d8a74435db239bad02690060bf219da33bd28e93329d00c81301","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/core/DirtyGraph.js#0001:DirtyFlags","exportIndex":1,"name":"DirtyFlags","kind":"constant","signature":"DirtyFlags","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/core/ModuleTester.md","moduleTitle":"core/ModuleTester","source":"plauna/core/ModuleTester.js","import":"/plauna/core/ModuleTester.js","sourceHash":"cd14bad87d5e35c23aaac9bf7879fcb1c695f58417d42c0d5b1a9216b57339c1","subsystem":"plauna","recordType":"api-module","id":"module:plauna/core/ModuleTester.js","title":"core/ModuleTester","summary":"PlaunaModuleTester - Smoke-test runner for modules/widgets. Module testing pattern: - Verifies module registration and instantiation - Exposes widget properties for console diagnostics - Summarizes complex values for readable output - Tracks widget registry and available widgets Testing features: - Module registration verification - Widget instantiation testing - Property exposure and summarization - Value normalization for comparison Helper functions: - summarizeValue(): Human-readable value summaries - normalizeComparableValue(): Normalize values for comparison - isPlainObject(): Check if value is plain object","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/core/ModuleTester.md","moduleTitle":"core/ModuleTester","source":"plauna/core/ModuleTester.js","import":"/plauna/core/ModuleTester.js","sourceHash":"cd14bad87d5e35c23aaac9bf7879fcb1c695f58417d42c0d5b1a9216b57339c1","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/core/ModuleTester.js#0000:PlaunaModuleTester","exportIndex":0,"name":"PlaunaModuleTester","kind":"class","signature":"class PlaunaModuleTester","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/core/StateStore.md","moduleTitle":"core/StateStore","source":"plauna/core/StateStore.js","import":"/plauna/core/StateStore.js","sourceHash":"d9c02b06768a78d2cd3508ca0002f3540d762714191b06ccf7262580aec83b98","subsystem":"plauna","recordType":"api-module","id":"module:plauna/core/StateStore.js","title":"core/StateStore","summary":"Observable projection store used by Plauna bindings. The store is intentionally authority-neutral: networked UI writes arrive as projections, while user actions leave through BindingEngine intent handlers.","exportCount":3}
{"schemaVersion":1,"modulePath":"plauna/reference/core/StateStore.md","moduleTitle":"core/StateStore","source":"plauna/core/StateStore.js","import":"/plauna/core/StateStore.js","sourceHash":"d9c02b06768a78d2cd3508ca0002f3540d762714191b06ccf7262580aec83b98","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/core/StateStore.js#0000:StateStore","exportIndex":0,"name":"StateStore","kind":"class","signature":"class StateStore","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/core/StateStore.md","moduleTitle":"core/StateStore","source":"plauna/core/StateStore.js","import":"/plauna/core/StateStore.js","sourceHash":"d9c02b06768a78d2cd3508ca0002f3540d762714191b06ccf7262580aec83b98","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/core/StateStore.js#0001:createStore","exportIndex":1,"name":"createStore","kind":"function","signature":"createStore(initialState = {}, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/core/StateStore.md","moduleTitle":"core/StateStore","source":"plauna/core/StateStore.js","import":"/plauna/core/StateStore.js","sourceHash":"d9c02b06768a78d2cd3508ca0002f3540d762714191b06ccf7262580aec83b98","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/core/StateStore.js#0002:useStore","exportIndex":2,"name":"useStore","kind":"function","signature":"useStore(store, path, defaultValue)","summary":"Framework-neutral compatibility helper. The third tuple item subscribes to future values; no React global or hidden lifecycle is required."}
{"schemaVersion":1,"modulePath":"plauna/reference/core/UINode.md","moduleTitle":"core/UINode","source":"plauna/core/UINode.js","import":"/plauna/core/UINode.js","sourceHash":"7a6bbb78ba49c9db51262eb5cd32373711fdd14a414ca5f83159da87150607ea","subsystem":"plauna","recordType":"api-module","id":"module:plauna/core/UINode.js","title":"core/UINode","summary":"============================================================================ UINode - Retained Visual Tree Node ============================================================================ UINode is the base class for all UI nodes in Plauna's retained visual tree. It represents a node in a virtual DOM-like tree that can be rendered to actual DOM. KEY CONCEPTS: - Retained Mode: The tree persists in memory and is incrementally updated - Dirty Flags: Bits that track what parts of the node need re-rendering - Layout Box: Computed layout metrics (position, size, margins, padding) - Event Handlers: Map of event types to handler functions - Accessibility: ARIA attributes and role information DIRTY FLAGS (bitmask): - STYLE: CSS styles changed → re-apply styles to DOM - LAYOUT: Position/size changed → re-compute layout - PAINT: Visual appearance changed → re-render to DOM - TEXT: Text content changed → update text nodes - ACCESSIBILITY: ARIA attributes changed → update DOM attributes - CHILDREN: Child nodes added/removed → re-render subtree - FOCUS: Focus state changed → update focus ring NODE STATE (bitmask): - VISIBLE: Node is visible - FOCUSED: Node has keyboard focus - HOVERED: Mouse is over the node - ACTIVE: Node is being pressed/clicked - DISABLED: Node is disabled - FOCUSABLE: Node can receive focus - CHECKED: Checkbox/radio is checked - SELECTED: Option is selected - LOADING: Node is in loading/processing state - ERROR: Node is in error/validation failure state INPUT FLAGS (bitmask): - POINTER_CAPTURE: Node captures pointer events - KEYBOARD_CAPTURE: Node captures keyboard events - DRAG_TARGET: Node is a drag target - DROP_TARGET: Node is a drop target - SCROLLABLE: Node can be scrolled RENDER FLAGS (bitmask): - CLIPS_CONTENT: Children outside bounds are clipped - OPAQUE: Node is fully opaque (optimization hint) - REQUIRES_LAYER: Needs separate compositing layer - TRANSFORM_CHANGED: Transform property changed - OPACITY_CHANGED: Opacity property changed TREE STRUCTURE: - parent: Reference to parent UINode - children: Array of child UINodes - firstChild/lastChild: Linked list pointers for fast traversal - nextSibling/previousSibling: Linked list pointers for siblings LAYOUT BOX: - x, y: Position relative to parent - width, height: Computed size - minX, minY, maxX, maxY: Computed bounds - paddingLeft, paddingTop, paddingRight, paddingBottom: Padding - marginLeft, marginTop, marginRight, marginBottom: Margin - borderLeft, borderTop, borderRight, borderBottom: Border width","exportCount":5}
{"schemaVersion":1,"modulePath":"plauna/reference/core/UINode.md","moduleTitle":"core/UINode","source":"plauna/core/UINode.js","import":"/plauna/core/UINode.js","sourceHash":"7a6bbb78ba49c9db51262eb5cd32373711fdd14a414ca5f83159da87150607ea","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/core/UINode.js#0000:UINode","exportIndex":0,"name":"UINode","kind":"class","signature":"class UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/core/UINode.md","moduleTitle":"core/UINode","source":"plauna/core/UINode.js","import":"/plauna/core/UINode.js","sourceHash":"7a6bbb78ba49c9db51262eb5cd32373711fdd14a414ca5f83159da87150607ea","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/core/UINode.js#0001:DIRTY","exportIndex":1,"name":"DIRTY","kind":"constant","signature":"DIRTY","summary":"UINode - Retained visual tree node. UINode pattern: - Base class for all UI nodes in Plauna's retained visual tree - Virtual DOM-like tree that persists in memory - Incrementally updated via dirty flags - Supports tree structure (parent/children/siblings) - Event handling and accessibility support Key concepts: - Dirty flags: Track what needs re-rendering - Layout box: Computed layout metrics - Event handlers: Map of event types to functions - Accessibility: ARIA attributes and role information"}
{"schemaVersion":1,"modulePath":"plauna/reference/core/UINode.md","moduleTitle":"core/UINode","source":"plauna/core/UINode.js","import":"/plauna/core/UINode.js","sourceHash":"7a6bbb78ba49c9db51262eb5cd32373711fdd14a414ca5f83159da87150607ea","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/core/UINode.js#0002:NODE_STATE","exportIndex":2,"name":"NODE_STATE","kind":"constant","signature":"NODE_STATE","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/core/UINode.md","moduleTitle":"core/UINode","source":"plauna/core/UINode.js","import":"/plauna/core/UINode.js","sourceHash":"7a6bbb78ba49c9db51262eb5cd32373711fdd14a414ca5f83159da87150607ea","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/core/UINode.js#0003:INPUT_FLAGS","exportIndex":3,"name":"INPUT_FLAGS","kind":"constant","signature":"INPUT_FLAGS","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/core/UINode.md","moduleTitle":"core/UINode","source":"plauna/core/UINode.js","import":"/plauna/core/UINode.js","sourceHash":"7a6bbb78ba49c9db51262eb5cd32373711fdd14a414ca5f83159da87150607ea","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/core/UINode.js#0004:RENDER_FLAGS","exportIndex":4,"name":"RENDER_FLAGS","kind":"constant","signature":"RENDER_FLAGS","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/core/VisualTree.md","moduleTitle":"core/VisualTree","source":"plauna/core/VisualTree.js","import":"/plauna/core/VisualTree.js","sourceHash":"40a304f28cba2cfd252ad92daebb8301147a991c2a93ac1cd0c3d704e2ec53f7","subsystem":"plauna","recordType":"api-module","id":"module:plauna/core/VisualTree.js","title":"core/VisualTree","summary":"VisualTree - Manages the retained visual tree and dirty propagation. Visual tree management pattern: - Manages UINode hierarchy with root node - Dirty flag management and propagation - Update scheduling with requestAnimationFrame - Performance tracking for update timing - Callback hooks for layout, paint, accessibility updates Features: - setRoot(): Change root node (marks subtree dirty) - markDirty(): Mark node as dirty (schedules update) - markSubtreeDirty(): Mark entire subtree as dirty - update(): Main update loop (processes dirty nodes) Update queues: - layoutQueue: Nodes needing layout recalculation - paintQueue: Nodes needing paint updates - textQueue: Nodes needing text content updates - accessibilityQueue: Nodes needing ARIA updates Architecture: - root: Root UINode of the tree - dirtyNodes: Set of all dirty nodes - isUpdating: Flag to prevent re-entrant updates - updateScheduled: Flag for RAF scheduling","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/core/VisualTree.md","moduleTitle":"core/VisualTree","source":"plauna/core/VisualTree.js","import":"/plauna/core/VisualTree.js","sourceHash":"40a304f28cba2cfd252ad92daebb8301147a991c2a93ac1cd0c3d704e2ec53f7","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/core/VisualTree.js#0000:VisualTree","exportIndex":0,"name":"VisualTree","kind":"class","signature":"class VisualTree","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/core/app.md","moduleTitle":"core/app","source":"plauna/core/app.js","import":"/plauna/core/app.js","sourceHash":"fa1cd3d492de7123a87031e63713b644c41679296bf419788ad9487612582134","subsystem":"plauna","recordType":"api-module","id":"module:plauna/core/app.js","title":"core/app","summary":"============================================================================ PlaunaApp - Main Plauna Application Class ============================================================================ PlaunaApp is the main application class that integrates Plauna UI with the Particle Engine. It manages the visual tree, rendering, events, and development tools. CORE COMPONENTS: - VisualTree: Retained-mode UI tree (UINode hierarchy) - DOMRenderer: Renders visual tree to DOM elements - PlaunaEventSystem: Event handling and dispatching - ThemeManager: Theme management and CSS variable application - TransitionEngine: Animation and transition system - PlaunaTextService: Text internationalization (pretext) - PlaunaSurfaceManager: Surface/layer management - PlaunaGPUBridge: GPU integration bridge - PlaunaRegistry: Component registry DEVELOPMENT TOOLS: - TreeInspector: Visual tree inspector for debugging - StyleInspector: Style inspector for debugging - HotReload: Hot module replacement for development - PlaunaModuleTester: Module testing framework - PlaunaSmartContextMenu: Context-aware right-click menu INTEGRATION WITH PARTICLE ENGINE: - Uses ECS World from engine/ecs/world/World.js - Integrates with GPU via PlaunaGPUBridge - Uses PlaunaSurfaceManager for surface management - Text engine integration (pretext or custom) INITIALIZATION FLOW: 1. createPlaunaApp(options) - Factory function 2. PlaunaApp constructor - Sets up core components 3. initialize() - Initializes all subsystems 4. mount() - Mounts to root DOM element OPTIONS: - root: Required DOM element to mount to - getVGPU: Function to get VGPU instance - engine: Particle engine instance - editor: Editor instance (optional) - useCSS: Enable CSS injection (default: true) - textEngine: Text engine to use ('pretext' or custom) - enableModuleTester: Enable module tester (default: true) - enableSmartContextMenu: Enable smart context menu (default: true) PUBLIC API: - mount(): Mount app to root element - destroy(): Cleanup and destroy app - addComponent(): Add component to registry - getComponent(): Get component from registry - visualTree: Access visual tree instance - renderer: Access DOM renderer instance - eventSystem: Access event system instance - themeManager: Access theme manager instance LIFECYCLE: - Created via createPlaunaApp() factory - Must call mount() to display UI - Call destroy() to cleanup USAGE: const app = await createPlaunaApp({ root: document.body, getVGPU: () => vgpuInstance, engine: particleEngine }); await app.mount(); // ... use app app.destroy();","exportCount":2}
{"schemaVersion":1,"modulePath":"plauna/reference/core/app.md","moduleTitle":"core/app","source":"plauna/core/app.js","import":"/plauna/core/app.js","sourceHash":"fa1cd3d492de7123a87031e63713b644c41679296bf419788ad9487612582134","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/core/app.js#0000:PlaunaApp","exportIndex":0,"name":"PlaunaApp","kind":"class","signature":"class PlaunaApp","summary":"PlaunaApp - Main Plauna application class. Application architecture: - Integrates Plauna UI with Particle Engine - Manages visual tree, rendering, events, and development tools - Provides public API for component registration and access Core systems: - uiWorld: ECS World for UI entities - textService: Internationalization service - surfaceManager: Surface/layer management - gpuBridge: GPU integration bridge - registry: Component registry - events: Event system Retained-mode systems: - visualTree: UINode hierarchy - domRenderer: DOM renderer - themeManager: Theme management - transitionEngine: Animation system Development tools: - treeInspector: Visual tree inspector - styleInspector: Style inspector - hotReload: Hot module replacement - moduleTester: Module testing framework - smartContextMenu: Context-aware menu"}
{"schemaVersion":1,"modulePath":"plauna/reference/core/app.md","moduleTitle":"core/app","source":"plauna/core/app.js","import":"/plauna/core/app.js","sourceHash":"fa1cd3d492de7123a87031e63713b644c41679296bf419788ad9487612582134","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/core/app.js#0001:createPlaunaApp","exportIndex":1,"name":"createPlaunaApp","kind":"function","signature":"async createPlaunaApp(options = {})","summary":"PlaunaApp factory function. Application factory pattern: - Creates PlaunaApp instance with provided options - Initializes core components (visual tree, renderer, events) - Sets up development tools if enabled - Returns ready-to-use app instance"}
{"schemaVersion":1,"modulePath":"plauna/reference/core/events.md","moduleTitle":"core/events","source":"plauna/core/events.js","import":"/plauna/core/events.js","sourceHash":"75143ae4ff97520c4e94170d5d0ade390fac3be45053d9a9305e62891a88754c","subsystem":"plauna","recordType":"api-module","id":"module:plauna/core/events.js","title":"core/events","summary":"PlaunaEventSystem - Event system for Plauna. Event bus pattern: - Simple publish-subscribe event system - Follows existing engine/ editor patterns - Supports multiple listeners per event - Returns unsubscribe function for cleanup - Error handling for faulty event handlers Features: - on(): Subscribe to event with callback - off(): Unsubscribe from event - emit(): Dispatch event to all listeners - once(): Subscribe for single event occurrence - removeAllListeners(): Clean up listeners","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/core/events.md","moduleTitle":"core/events","source":"plauna/core/events.js","import":"/plauna/core/events.js","sourceHash":"75143ae4ff97520c4e94170d5d0ade390fac3be45053d9a9305e62891a88754c","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/core/events.js#0000:PlaunaEventSystem","exportIndex":0,"name":"PlaunaEventSystem","kind":"class","signature":"class PlaunaEventSystem","summary":"PlaunaEventSystem - Event system for Plauna. Event bus pattern: - Simple publish-subscribe event system - Follows existing engine/ editor patterns - Supports multiple listeners per event - Returns unsubscribe function for cleanup - Error handling for faulty event handlers Features: - on(): Subscribe to event with callback - off(): Unsubscribe from event - emit(): Dispatch event to all listeners - once(): Subscribe for single event occurrence - removeAllListeners(): Clean up listeners"}
{"schemaVersion":1,"modulePath":"plauna/reference/core/registry.md","moduleTitle":"core/registry","source":"plauna/core/registry.js","import":"/plauna/core/registry.js","sourceHash":"faf0559658c98b905f93f3a4305ef28d04d456c05dcb8f57a18c60fa01d82b92","subsystem":"plauna","recordType":"api-module","id":"module:plauna/core/registry.js","title":"core/registry","summary":"PlaunaRegistry - Registry for views, surfaces, and templates. Registry pattern: - Centralized registration system for UI components - Follows existing engine registry patterns - Supports views, surfaces, templates, and factories - Warns on duplicate registrations (overwrites) - Provides getters for retrieving registered items Registry types: - views: UI view configurations with render mode, size, closability - surfaces: Surface definitions for GPU rendering (viewport, texture) - templates: Reusable template configurations - factories: Factory functions for component instantiation","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/core/registry.md","moduleTitle":"core/registry","source":"plauna/core/registry.js","import":"/plauna/core/registry.js","sourceHash":"faf0559658c98b905f93f3a4305ef28d04d456c05dcb8f57a18c60fa01d82b92","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/core/registry.js#0000:PlaunaRegistry","exportIndex":0,"name":"PlaunaRegistry","kind":"class","signature":"class PlaunaRegistry","summary":"PlaunaRegistry - Registry for views, surfaces, and templates. Registry pattern: - Centralized registration system for UI components - Follows existing engine registry patterns - Supports views, surfaces, templates, and factories - Warns on duplicate registrations (overwrites) - Provides getters for retrieving registered items Registry types: - views: UI view configurations with render mode, size, closability - surfaces: Surface definitions for GPU rendering (viewport, texture) - templates: Reusable template configurations - factories: Factory functions for component instantiation"}
{"schemaVersion":1,"modulePath":"plauna/reference/ecs/components.md","moduleTitle":"ecs/components","source":"plauna/ecs/components.js","import":"/plauna/ecs/components.js","sourceHash":"bf7d44078da0290a44c0d714514657ccca31fa082475beb4ad80150a96a4e6fb","subsystem":"plauna","recordType":"api-module","id":"module:plauna/ecs/components.js","title":"ecs/components","summary":"Plauna ECS Components Follow existing engine component registration patterns.","exportCount":25}
{"schemaVersion":1,"modulePath":"plauna/reference/ecs/components.md","moduleTitle":"ecs/components","source":"plauna/ecs/components.js","import":"/plauna/ecs/components.js","sourceHash":"bf7d44078da0290a44c0d714514657ccca31fa082475beb4ad80150a96a4e6fb","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/ecs/components.js#0000:UIRoot","exportIndex":0,"name":"UIRoot","kind":"constant","signature":"UIRoot","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/ecs/components.md","moduleTitle":"ecs/components","source":"plauna/ecs/components.js","import":"/plauna/ecs/components.js","sourceHash":"bf7d44078da0290a44c0d714514657ccca31fa082475beb4ad80150a96a4e6fb","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/ecs/components.js#0001:UIWorkspace","exportIndex":1,"name":"UIWorkspace","kind":"constant","signature":"UIWorkspace","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/ecs/components.md","moduleTitle":"ecs/components","source":"plauna/ecs/components.js","import":"/plauna/ecs/components.js","sourceHash":"bf7d44078da0290a44c0d714514657ccca31fa082475beb4ad80150a96a4e6fb","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/ecs/components.js#0002:UIZone","exportIndex":2,"name":"UIZone","kind":"constant","signature":"UIZone","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/ecs/components.md","moduleTitle":"ecs/components","source":"plauna/ecs/components.js","import":"/plauna/ecs/components.js","sourceHash":"bf7d44078da0290a44c0d714514657ccca31fa082475beb4ad80150a96a4e6fb","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/ecs/components.js#0003:UIGroup","exportIndex":3,"name":"UIGroup","kind":"constant","signature":"UIGroup","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/ecs/components.md","moduleTitle":"ecs/components","source":"plauna/ecs/components.js","import":"/plauna/ecs/components.js","sourceHash":"bf7d44078da0290a44c0d714514657ccca31fa082475beb4ad80150a96a4e6fb","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/ecs/components.js#0004:UIView","exportIndex":4,"name":"UIView","kind":"constant","signature":"UIView","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/ecs/components.md","moduleTitle":"ecs/components","source":"plauna/ecs/components.js","import":"/plauna/ecs/components.js","sourceHash":"bf7d44078da0290a44c0d714514657ccca31fa082475beb4ad80150a96a4e6fb","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/ecs/components.js#0005:UILayout","exportIndex":5,"name":"UILayout","kind":"constant","signature":"UILayout","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/ecs/components.md","moduleTitle":"ecs/components","source":"plauna/ecs/components.js","import":"/plauna/ecs/components.js","sourceHash":"bf7d44078da0290a44c0d714514657ccca31fa082475beb4ad80150a96a4e6fb","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/ecs/components.js#0006:UIAnchor","exportIndex":6,"name":"UIAnchor","kind":"constant","signature":"UIAnchor","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/ecs/components.md","moduleTitle":"ecs/components","source":"plauna/ecs/components.js","import":"/plauna/ecs/components.js","sourceHash":"bf7d44078da0290a44c0d714514657ccca31fa082475beb4ad80150a96a4e6fb","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/ecs/components.js#0007:UISurface","exportIndex":7,"name":"UISurface","kind":"constant","signature":"UISurface","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/ecs/components.md","moduleTitle":"ecs/components","source":"plauna/ecs/components.js","import":"/plauna/ecs/components.js","sourceHash":"bf7d44078da0290a44c0d714514657ccca31fa082475beb4ad80150a96a4e6fb","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/ecs/components.js#0008:UIShape","exportIndex":8,"name":"UIShape","kind":"constant","signature":"UIShape","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/ecs/components.md","moduleTitle":"ecs/components","source":"plauna/ecs/components.js","import":"/plauna/ecs/components.js","sourceHash":"bf7d44078da0290a44c0d714514657ccca31fa082475beb4ad80150a96a4e6fb","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/ecs/components.js#0009:UIWarp","exportIndex":9,"name":"UIWarp","kind":"constant","signature":"UIWarp","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/ecs/components.md","moduleTitle":"ecs/components","source":"plauna/ecs/components.js","import":"/plauna/ecs/components.js","sourceHash":"bf7d44078da0290a44c0d714514657ccca31fa082475beb4ad80150a96a4e6fb","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/ecs/components.js#0010:UIBinding","exportIndex":10,"name":"UIBinding","kind":"constant","signature":"UIBinding","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/ecs/components.md","moduleTitle":"ecs/components","source":"plauna/ecs/components.js","import":"/plauna/ecs/components.js","sourceHash":"bf7d44078da0290a44c0d714514657ccca31fa082475beb4ad80150a96a4e6fb","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/ecs/components.js#0011:UIState","exportIndex":11,"name":"UIState","kind":"constant","signature":"UIState","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/ecs/components.md","moduleTitle":"ecs/components","source":"plauna/ecs/components.js","import":"/plauna/ecs/components.js","sourceHash":"bf7d44078da0290a44c0d714514657ccca31fa082475beb4ad80150a96a4e6fb","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/ecs/components.js#0012:UIInput","exportIndex":12,"name":"UIInput","kind":"constant","signature":"UIInput","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/ecs/components.md","moduleTitle":"ecs/components","source":"plauna/ecs/components.js","import":"/plauna/ecs/components.js","sourceHash":"bf7d44078da0290a44c0d714514657ccca31fa082475beb4ad80150a96a4e6fb","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/ecs/components.js#0013:UIText","exportIndex":13,"name":"UIText","kind":"constant","signature":"UIText","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/ecs/components.md","moduleTitle":"ecs/components","source":"plauna/ecs/components.js","import":"/plauna/ecs/components.js","sourceHash":"bf7d44078da0290a44c0d714514657ccca31fa082475beb4ad80150a96a4e6fb","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/ecs/components.js#0014:UITextLayout","exportIndex":14,"name":"UITextLayout","kind":"constant","signature":"UITextLayout","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/ecs/components.md","moduleTitle":"ecs/components","source":"plauna/ecs/components.js","import":"/plauna/ecs/components.js","sourceHash":"bf7d44078da0290a44c0d714514657ccca31fa082475beb4ad80150a96a4e6fb","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/ecs/components.js#0015:UIPanel","exportIndex":15,"name":"UIPanel","kind":"constant","signature":"UIPanel","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/ecs/components.md","moduleTitle":"ecs/components","source":"plauna/ecs/components.js","import":"/plauna/ecs/components.js","sourceHash":"bf7d44078da0290a44c0d714514657ccca31fa082475beb4ad80150a96a4e6fb","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/ecs/components.js#0016:UITab","exportIndex":16,"name":"UITab","kind":"constant","signature":"UITab","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/ecs/components.md","moduleTitle":"ecs/components","source":"plauna/ecs/components.js","import":"/plauna/ecs/components.js","sourceHash":"bf7d44078da0290a44c0d714514657ccca31fa082475beb4ad80150a96a4e6fb","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/ecs/components.js#0017:UISplit","exportIndex":17,"name":"UISplit","kind":"constant","signature":"UISplit","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/ecs/components.md","moduleTitle":"ecs/components","source":"plauna/ecs/components.js","import":"/plauna/ecs/components.js","sourceHash":"bf7d44078da0290a44c0d714514657ccca31fa082475beb4ad80150a96a4e6fb","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/ecs/components.js#0018:UINest","exportIndex":18,"name":"UINest","kind":"constant","signature":"UINest","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/ecs/components.md","moduleTitle":"ecs/components","source":"plauna/ecs/components.js","import":"/plauna/ecs/components.js","sourceHash":"bf7d44078da0290a44c0d714514657ccca31fa082475beb4ad80150a96a4e6fb","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/ecs/components.js#0019:UIFoodSource","exportIndex":19,"name":"UIFoodSource","kind":"constant","signature":"UIFoodSource","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/ecs/components.md","moduleTitle":"ecs/components","source":"plauna/ecs/components.js","import":"/plauna/ecs/components.js","sourceHash":"bf7d44078da0290a44c0d714514657ccca31fa082475beb4ad80150a96a4e6fb","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/ecs/components.js#0020:UIGPUResource","exportIndex":20,"name":"UIGPUResource","kind":"constant","signature":"UIGPUResource","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/ecs/components.md","moduleTitle":"ecs/components","source":"plauna/ecs/components.js","import":"/plauna/ecs/components.js","sourceHash":"bf7d44078da0290a44c0d714514657ccca31fa082475beb4ad80150a96a4e6fb","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/ecs/components.js#0021:UIAtlas","exportIndex":21,"name":"UIAtlas","kind":"constant","signature":"UIAtlas","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/ecs/components.md","moduleTitle":"ecs/components","source":"plauna/ecs/components.js","import":"/plauna/ecs/components.js","sourceHash":"bf7d44078da0290a44c0d714514657ccca31fa082475beb4ad80150a96a4e6fb","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/ecs/components.js#0022:UIGlyph","exportIndex":22,"name":"UIGlyph","kind":"constant","signature":"UIGlyph","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/ecs/components.md","moduleTitle":"ecs/components","source":"plauna/ecs/components.js","import":"/plauna/ecs/components.js","sourceHash":"bf7d44078da0290a44c0d714514657ccca31fa082475beb4ad80150a96a4e6fb","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/ecs/components.js#0023:UIDockLayout","exportIndex":23,"name":"UIDockLayout","kind":"constant","signature":"UIDockLayout","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/ecs/components.md","moduleTitle":"ecs/components","source":"plauna/ecs/components.js","import":"/plauna/ecs/components.js","sourceHash":"bf7d44078da0290a44c0d714514657ccca31fa082475beb4ad80150a96a4e6fb","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/ecs/components.js#0024:UIFloatingWindow","exportIndex":24,"name":"UIFloatingWindow","kind":"constant","signature":"UIFloatingWindow","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/editor/HotReload.md","moduleTitle":"editor/HotReload","source":"plauna/editor/HotReload.js","import":"/plauna/editor/HotReload.js","sourceHash":"393d78661c953cbf83d8c88d6f2bc685e26ac4f7960eaef38500dfffc68ab492","subsystem":"plauna","recordType":"api-module","id":"module:plauna/editor/HotReload.js","title":"editor/HotReload","summary":"HotReload - Live development tool for Plauna Provides hot module replacement and live style updates with robust validation","exportCount":3}
{"schemaVersion":1,"modulePath":"plauna/reference/editor/HotReload.md","moduleTitle":"editor/HotReload","source":"plauna/editor/HotReload.js","import":"/plauna/editor/HotReload.js","sourceHash":"393d78661c953cbf83d8c88d6f2bc685e26ac4f7960eaef38500dfffc68ab492","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/editor/HotReload.js#0000:HotReload","exportIndex":0,"name":"HotReload","kind":"class","signature":"class HotReload","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/editor/HotReload.md","moduleTitle":"editor/HotReload","source":"plauna/editor/HotReload.js","import":"/plauna/editor/HotReload.js","sourceHash":"393d78661c953cbf83d8c88d6f2bc685e26ac4f7960eaef38500dfffc68ab492","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/editor/HotReload.js#0001:plaunaHotReloadTextHash","exportIndex":1,"name":"plaunaHotReloadTextHash","kind":"function","signature":"plaunaHotReloadTextHash(text)","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/editor/HotReload.md","moduleTitle":"editor/HotReload","source":"plauna/editor/HotReload.js","import":"/plauna/editor/HotReload.js","sourceHash":"393d78661c953cbf83d8c88d6f2bc685e26ac4f7960eaef38500dfffc68ab492","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/editor/HotReload.js#0002:HotReloadUtils","exportIndex":2,"name":"HotReloadUtils","kind":"constant","signature":"HotReloadUtils","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/editor/StyleInspector.md","moduleTitle":"editor/StyleInspector","source":"plauna/editor/StyleInspector.js","import":"/plauna/editor/StyleInspector.js","sourceHash":"75a8b3f32567678c8f74951062310a9d047c66cb54e6b171c45500c70ce923bb","subsystem":"plauna","recordType":"api-module","id":"module:plauna/editor/StyleInspector.js","title":"editor/StyleInspector","summary":"StyleInspector - Live style debugging tool for Plauna Provides real-time style inspection and editing capabilities","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/editor/StyleInspector.md","moduleTitle":"editor/StyleInspector","source":"plauna/editor/StyleInspector.js","import":"/plauna/editor/StyleInspector.js","sourceHash":"75a8b3f32567678c8f74951062310a9d047c66cb54e6b171c45500c70ce923bb","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/editor/StyleInspector.js#0000:StyleInspector","exportIndex":0,"name":"StyleInspector","kind":"class","signature":"class StyleInspector","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/editor/TreeInspector.md","moduleTitle":"editor/TreeInspector","source":"plauna/editor/TreeInspector.js","import":"/plauna/editor/TreeInspector.js","sourceHash":"8fcd8150e36600245e13fb15e6bfce1b6fc46cf3d8666ff17eec4bbad4d730eb","subsystem":"plauna","recordType":"api-module","id":"module:plauna/editor/TreeInspector.js","title":"editor/TreeInspector","summary":"TreeInspector - Visual tree inspector for Plauna Provides debugging and inspection of the UI visual tree","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/editor/TreeInspector.md","moduleTitle":"editor/TreeInspector","source":"plauna/editor/TreeInspector.js","import":"/plauna/editor/TreeInspector.js","sourceHash":"8fcd8150e36600245e13fb15e6bfce1b6fc46cf3d8666ff17eec4bbad4d730eb","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/editor/TreeInspector.js#0000:TreeInspector","exportIndex":0,"name":"TreeInspector","kind":"class","signature":"class TreeInspector","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-module","id":"module:plauna/index.js","title":"index","summary":"Plauna - Advanced UI System for Particle Engine Browser-first UI runtime with hybrid DOM/GPU rendering ============================================================================ MODULE STRUCTURE ============================================================================ This is the main entry point for the Plauna UI system. It re-exports all public APIs in a structured, organized manner. Export Categories: Core System: - createPlaunaApp: Main application entry point - PlaunaModuleTester: Module testing utilities - UINode, DIRTY, NODE_STATE: Core retained-mode UI tree - VisualTree: Visual tree management UI Components: - PlaunaSmartContextMenu: Type-aware context menu for debugging - PlaunaTextService: Internationalization service (Pretext) - PlaunaSurfaceManager: Surface/layer management - PlaunaGPUBridge: WebGPU integration bridge Widget System: - Layout widgets: Grid, Divider, Spacer - Primitive widgets: Button, Panel, Text, Modal, Tooltip, Badge, Avatar, Progress, Skeleton - Form widgets: Input, Checkbox, Radio, Switch, Select, Textarea, Slider, Rating - Navigation widgets: Tabs, Dropdown, Breadcrumb, Pagination - Data view widgets: ListView, Card Utilities: - Style system: Design tokens, theme management - Console system: PlaunaConsole for debugging - Notification system: Toast, Notify - Showcase system: WidgetShowcase for widget gallery - Particle controller: ParticleController for particle integration Lab/Development: - mountPlaunaWorkbenchLab: Workbench development environment - mountShowcaseApp: Widget showcase application","exportCount":63}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0000:Avatar","exportIndex":0,"name":"Avatar","kind":"re-export","signature":"Avatar","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0001:BUILD_TAG","exportIndex":1,"name":"BUILD_TAG","kind":"re-export","signature":"BUILD_TAG","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0002:Badge","exportIndex":2,"name":"Badge","kind":"re-export","signature":"Badge","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0003:BindingEngine","exportIndex":3,"name":"BindingEngine","kind":"re-export","signature":"BindingEngine","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0004:BindingUtils","exportIndex":4,"name":"BindingUtils","kind":"re-export","signature":"BindingUtils","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0005:Breadcrumb","exportIndex":5,"name":"Breadcrumb","kind":"re-export","signature":"Breadcrumb","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0006:Button","exportIndex":6,"name":"Button","kind":"re-export","signature":"Button","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0007:Card","exportIndex":7,"name":"Card","kind":"re-export","signature":"Card","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0008:Checkbox","exportIndex":8,"name":"Checkbox","kind":"re-export","signature":"Checkbox","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0009:DIRTY","exportIndex":9,"name":"DIRTY","kind":"re-export","signature":"DIRTY","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0010:Divider","exportIndex":10,"name":"Divider","kind":"re-export","signature":"Divider","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0011:Dropdown","exportIndex":11,"name":"Dropdown","kind":"re-export","signature":"Dropdown","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0012:Grid","exportIndex":12,"name":"Grid","kind":"re-export","signature":"Grid","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0013:INPUT_FLAGS","exportIndex":13,"name":"INPUT_FLAGS","kind":"re-export","signature":"INPUT_FLAGS","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0014:Input","exportIndex":14,"name":"Input","kind":"re-export","signature":"Input","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0015:ListView","exportIndex":15,"name":"ListView","kind":"re-export","signature":"ListView","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0016:Modal","exportIndex":16,"name":"Modal","kind":"re-export","signature":"Modal","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0017:NODE_STATE","exportIndex":17,"name":"NODE_STATE","kind":"re-export","signature":"NODE_STATE","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0018:NotificationSystem","exportIndex":18,"name":"NotificationSystem","kind":"re-export","signature":"NotificationSystem","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0019:Notify","exportIndex":19,"name":"Notify","kind":"re-export","signature":"Notify","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0020:PLAUNA_FULL","exportIndex":20,"name":"PLAUNA_FULL","kind":"re-export","signature":"PLAUNA_FULL","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0021:PLAUNA_VERSION","exportIndex":21,"name":"PLAUNA_VERSION","kind":"re-export","signature":"PLAUNA_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0022:PageTransition","exportIndex":22,"name":"PageTransition","kind":"re-export","signature":"PageTransition","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0023:Pagination","exportIndex":23,"name":"Pagination","kind":"re-export","signature":"Pagination","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0024:Panel","exportIndex":24,"name":"Panel","kind":"re-export","signature":"Panel","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0025:ParticleController","exportIndex":25,"name":"ParticleController","kind":"re-export","signature":"ParticleController","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0026:PlaunaConsole","exportIndex":26,"name":"PlaunaConsole","kind":"re-export","signature":"PlaunaConsole","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0027:PlaunaGPUBridge","exportIndex":27,"name":"PlaunaGPUBridge","kind":"re-export","signature":"PlaunaGPUBridge","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0028:PlaunaModuleTester","exportIndex":28,"name":"PlaunaModuleTester","kind":"re-export","signature":"PlaunaModuleTester","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0029:PlaunaSmartContextMenu","exportIndex":29,"name":"PlaunaSmartContextMenu","kind":"re-export","signature":"PlaunaSmartContextMenu","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0030:PlaunaSurfaceManager","exportIndex":30,"name":"PlaunaSurfaceManager","kind":"re-export","signature":"PlaunaSurfaceManager","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0031:PlaunaTextService","exportIndex":31,"name":"PlaunaTextService","kind":"re-export","signature":"PlaunaTextService","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0032:Progress","exportIndex":32,"name":"Progress","kind":"re-export","signature":"Progress","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0033:RENDER_FLAGS","exportIndex":33,"name":"RENDER_FLAGS","kind":"re-export","signature":"RENDER_FLAGS","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0034:Radio","exportIndex":34,"name":"Radio","kind":"re-export","signature":"Radio","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0035:Rating","exportIndex":35,"name":"Rating","kind":"re-export","signature":"Rating","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0036:Select","exportIndex":36,"name":"Select","kind":"re-export","signature":"Select","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0037:ShowcaseApp","exportIndex":37,"name":"ShowcaseApp","kind":"re-export","signature":"ShowcaseApp","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0038:Skeleton","exportIndex":38,"name":"Skeleton","kind":"re-export","signature":"Skeleton","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0039:Slider","exportIndex":39,"name":"Slider","kind":"re-export","signature":"Slider","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0040:Spacer","exportIndex":40,"name":"Spacer","kind":"re-export","signature":"Spacer","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0041:StateStore","exportIndex":41,"name":"StateStore","kind":"re-export","signature":"StateStore","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0042:Switch","exportIndex":42,"name":"Switch","kind":"re-export","signature":"Switch","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0043:Tabs","exportIndex":43,"name":"Tabs","kind":"re-export","signature":"Tabs","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0044:Text","exportIndex":44,"name":"Text","kind":"re-export","signature":"Text","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0045:Textarea","exportIndex":45,"name":"Textarea","kind":"re-export","signature":"Textarea","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0046:Toast","exportIndex":46,"name":"Toast","kind":"re-export","signature":"Toast","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0047:ToastManager","exportIndex":47,"name":"ToastManager","kind":"re-export","signature":"ToastManager","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0048:Tooltip","exportIndex":48,"name":"Tooltip","kind":"re-export","signature":"Tooltip","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0049:TransitionEngine","exportIndex":49,"name":"TransitionEngine","kind":"re-export","signature":"TransitionEngine","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0050:TransitionUtils","exportIndex":50,"name":"TransitionUtils","kind":"re-export","signature":"TransitionUtils","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0051:UINode","exportIndex":51,"name":"UINode","kind":"re-export","signature":"UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0052:VisualTree","exportIndex":52,"name":"VisualTree","kind":"re-export","signature":"VisualTree","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0053:WidgetShowcase","exportIndex":53,"name":"WidgetShowcase","kind":"re-export","signature":"WidgetShowcase","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0054:createPlaunaApp","exportIndex":54,"name":"createPlaunaApp","kind":"re-export","signature":"createPlaunaApp","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0055:createPlaunaConsole","exportIndex":55,"name":"createPlaunaConsole","kind":"re-export","signature":"createPlaunaConsole","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0056:createStore","exportIndex":56,"name":"createStore","kind":"re-export","signature":"createStore","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0057:getPlaunaConsole","exportIndex":57,"name":"getPlaunaConsole","kind":"re-export","signature":"getPlaunaConsole","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0058:mountPlaunaWorkbenchLab","exportIndex":58,"name":"mountPlaunaWorkbenchLab","kind":"re-export","signature":"mountPlaunaWorkbenchLab","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0059:mountShowcaseApp","exportIndex":59,"name":"mountShowcaseApp","kind":"re-export","signature":"mountShowcaseApp","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0060:startPageTransition","exportIndex":60,"name":"startPageTransition","kind":"re-export","signature":"startPageTransition","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0061:useStore","exportIndex":61,"name":"useStore","kind":"re-export","signature":"useStore","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/index.md","moduleTitle":"index","source":"plauna/index.js","import":"/plauna/index.js","sourceHash":"353156a52d0d71b18737eda0e86d82bb5376c4e5dc78e6ad4865c988c838f609","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/index.js#0062:widgetShowcase","exportIndex":62,"name":"widgetShowcase","kind":"re-export","signature":"widgetShowcase","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/input/EventRouter.md","moduleTitle":"input/EventRouter","source":"plauna/input/EventRouter.js","import":"/plauna/input/EventRouter.js","sourceHash":"5d140a84a527e5ee503f5d3e6a0da2c97968b00afa2ac11d1348c81f04c67ccc","subsystem":"plauna","recordType":"api-module","id":"module:plauna/input/EventRouter.js","title":"input/EventRouter","summary":"EventRouter - Event capture/target/bubble routing system for Plauna Handles DOM-style event propagation with capture and bubble phases","exportCount":3}
{"schemaVersion":1,"modulePath":"plauna/reference/input/EventRouter.md","moduleTitle":"input/EventRouter","source":"plauna/input/EventRouter.js","import":"/plauna/input/EventRouter.js","sourceHash":"5d140a84a527e5ee503f5d3e6a0da2c97968b00afa2ac11d1348c81f04c67ccc","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/input/EventRouter.js#0000:EventRouter","exportIndex":0,"name":"EventRouter","kind":"class","signature":"class EventRouter","summary":"EventRouter - Event capture/target/bubble routing system for Plauna Handles DOM-style event propagation with capture and bubble phases"}
{"schemaVersion":1,"modulePath":"plauna/reference/input/EventRouter.md","moduleTitle":"input/EventRouter","source":"plauna/input/EventRouter.js","import":"/plauna/input/EventRouter.js","sourceHash":"5d140a84a527e5ee503f5d3e6a0da2c97968b00afa2ac11d1348c81f04c67ccc","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/input/EventRouter.js#0001:EVENT_TYPES","exportIndex":1,"name":"EVENT_TYPES","kind":"constant","signature":"EVENT_TYPES","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/input/EventRouter.md","moduleTitle":"input/EventRouter","source":"plauna/input/EventRouter.js","import":"/plauna/input/EventRouter.js","sourceHash":"5d140a84a527e5ee503f5d3e6a0da2c97968b00afa2ac11d1348c81f04c67ccc","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/input/EventRouter.js#0002:EventUtils","exportIndex":2,"name":"EventUtils","kind":"constant","signature":"EventUtils","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/lab/showcase-app.md","moduleTitle":"lab/showcase-app","source":"plauna/lab/showcase-app.js","import":"/plauna/lab/showcase-app.js","sourceHash":"3d0aaa4412de4eb644f15db4c2228a9804a027b329150d3f20dba3121928d25a","subsystem":"plauna","recordType":"api-module","id":"module:plauna/lab/showcase-app.js","title":"lab/showcase-app","summary":"ShowcaseApp - Thin shell that boots the Plauna engine and mounts WidgetGallery","exportCount":2}
{"schemaVersion":1,"modulePath":"plauna/reference/lab/showcase-app.md","moduleTitle":"lab/showcase-app","source":"plauna/lab/showcase-app.js","import":"/plauna/lab/showcase-app.js","sourceHash":"3d0aaa4412de4eb644f15db4c2228a9804a027b329150d3f20dba3121928d25a","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/lab/showcase-app.js#0000:ShowcaseApp","exportIndex":0,"name":"ShowcaseApp","kind":"class","signature":"class ShowcaseApp","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/lab/showcase-app.md","moduleTitle":"lab/showcase-app","source":"plauna/lab/showcase-app.js","import":"/plauna/lab/showcase-app.js","sourceHash":"3d0aaa4412de4eb644f15db4c2228a9804a027b329150d3f20dba3121928d25a","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/lab/showcase-app.js#0001:mountShowcaseApp","exportIndex":1,"name":"mountShowcaseApp","kind":"function","signature":"mountShowcaseApp(options = {})","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/lab/workbench-lab.md","moduleTitle":"lab/workbench-lab","source":"plauna/lab/workbench-lab.js","import":"/plauna/lab/workbench-lab.js","sourceHash":"847d177ee08e71cad0cf82443b72049e80e049565c3be59ee3673dc6bbe1c877","subsystem":"plauna","recordType":"api-module","id":"module:plauna/lab/workbench-lab.js","title":"lab/workbench-lab","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/lab/workbench-lab.md","moduleTitle":"lab/workbench-lab","source":"plauna/lab/workbench-lab.js","import":"/plauna/lab/workbench-lab.js","sourceHash":"847d177ee08e71cad0cf82443b72049e80e049565c3be59ee3673dc6bbe1c877","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/lab/workbench-lab.js#0000:mountPlaunaWorkbenchLab","exportIndex":0,"name":"mountPlaunaWorkbenchLab","kind":"function","signature":"mountPlaunaWorkbenchLab(options)","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/layout/Constraints.md","moduleTitle":"layout/Constraints","source":"plauna/layout/Constraints.js","import":"/plauna/layout/Constraints.js","sourceHash":"19dbb80de106679ba9026f4b0d6cf5d216282427c9e20cb5c28f088b14033bc5","subsystem":"plauna","recordType":"api-module","id":"module:plauna/layout/Constraints.js","title":"layout/Constraints","summary":"Constraints - Size constraint system for Plauna layout Handles min/max/preferred sizes and constraint resolution","exportCount":6}
{"schemaVersion":1,"modulePath":"plauna/reference/layout/Constraints.md","moduleTitle":"layout/Constraints","source":"plauna/layout/Constraints.js","import":"/plauna/layout/Constraints.js","sourceHash":"19dbb80de106679ba9026f4b0d6cf5d216282427c9e20cb5c28f088b14033bc5","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/layout/Constraints.js#0000:Constraints","exportIndex":0,"name":"Constraints","kind":"class","signature":"class Constraints","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/layout/Constraints.md","moduleTitle":"layout/Constraints","source":"plauna/layout/Constraints.js","import":"/plauna/layout/Constraints.js","sourceHash":"19dbb80de106679ba9026f4b0d6cf5d216282427c9e20cb5c28f088b14033bc5","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/layout/Constraints.js#0001:BoxConstraints","exportIndex":1,"name":"BoxConstraints","kind":"class","signature":"class BoxConstraints","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/layout/Constraints.md","moduleTitle":"layout/Constraints","source":"plauna/layout/Constraints.js","import":"/plauna/layout/Constraints.js","sourceHash":"19dbb80de106679ba9026f4b0d6cf5d216282427c9e20cb5c28f088b14033bc5","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/layout/Constraints.js#0002:LayoutConstraints","exportIndex":2,"name":"LayoutConstraints","kind":"class","signature":"class LayoutConstraints","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/layout/Constraints.md","moduleTitle":"layout/Constraints","source":"plauna/layout/Constraints.js","import":"/plauna/layout/Constraints.js","sourceHash":"19dbb80de106679ba9026f4b0d6cf5d216282427c9e20cb5c28f088b14033bc5","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/layout/Constraints.js#0003:ConstraintResolver","exportIndex":3,"name":"ConstraintResolver","kind":"class","signature":"class ConstraintResolver","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/layout/Constraints.md","moduleTitle":"layout/Constraints","source":"plauna/layout/Constraints.js","import":"/plauna/layout/Constraints.js","sourceHash":"19dbb80de106679ba9026f4b0d6cf5d216282427c9e20cb5c28f088b14033bc5","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/layout/Constraints.js#0004:LayoutConstraintType","exportIndex":4,"name":"LayoutConstraintType","kind":"constant","signature":"LayoutConstraintType","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/layout/Constraints.md","moduleTitle":"layout/Constraints","source":"plauna/layout/Constraints.js","import":"/plauna/layout/Constraints.js","sourceHash":"19dbb80de106679ba9026f4b0d6cf5d216282427c9e20cb5c28f088b14033bc5","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/layout/Constraints.js#0005:ConstraintUtils","exportIndex":5,"name":"ConstraintUtils","kind":"constant","signature":"ConstraintUtils","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/layout/FlexLayout.md","moduleTitle":"layout/FlexLayout","source":"plauna/layout/FlexLayout.js","import":"/plauna/layout/FlexLayout.js","sourceHash":"1d9e55008175304780755fc48a5d92c13ed9553d87d2d711c51b834b9b9a289a","subsystem":"plauna","recordType":"api-module","id":"module:plauna/layout/FlexLayout.js","title":"layout/FlexLayout","summary":"FlexLayout - Flexbox-inspired layout engine for Plauna Provides CSS Flexbox-like layout functionality with constrained feature set","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/layout/FlexLayout.md","moduleTitle":"layout/FlexLayout","source":"plauna/layout/FlexLayout.js","import":"/plauna/layout/FlexLayout.js","sourceHash":"1d9e55008175304780755fc48a5d92c13ed9553d87d2d711c51b834b9b9a289a","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/layout/FlexLayout.js#0000:FlexLayout","exportIndex":0,"name":"FlexLayout","kind":"class","signature":"class FlexLayout","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/layout/LayoutSizing.md","moduleTitle":"layout/LayoutSizing","source":"plauna/layout/LayoutSizing.js","import":"/plauna/layout/LayoutSizing.js","sourceHash":"f26ba138196ed2ce36db7ce2a4a063919021bdb94331f9debfdc4b9b56ea66de","subsystem":"plauna","recordType":"api-module","id":"module:plauna/layout/LayoutSizing.js","title":"layout/LayoutSizing","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"plauna/reference/layout/LayoutSizing.md","moduleTitle":"layout/LayoutSizing","source":"plauna/layout/LayoutSizing.js","import":"/plauna/layout/LayoutSizing.js","sourceHash":"f26ba138196ed2ce36db7ce2a4a063919021bdb94331f9debfdc4b9b56ea66de","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/layout/LayoutSizing.js#0000:resolvePlaunaLayoutSize","exportIndex":0,"name":"resolvePlaunaLayoutSize","kind":"function","signature":"resolvePlaunaLayoutSize(value, containerSize, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/layout/LayoutSizing.md","moduleTitle":"layout/LayoutSizing","source":"plauna/layout/LayoutSizing.js","import":"/plauna/layout/LayoutSizing.js","sourceHash":"f26ba138196ed2ce36db7ce2a4a063919021bdb94331f9debfdc4b9b56ea66de","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/layout/LayoutSizing.js#0001:resolvePlaunaLayoutConstraints","exportIndex":1,"name":"resolvePlaunaLayoutConstraints","kind":"function","signature":"resolvePlaunaLayoutConstraints(style = {}, containerSize = 0)","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/motion/MPAFallback.md","moduleTitle":"motion/MPAFallback","source":"plauna/motion/MPAFallback.js","import":"/plauna/motion/MPAFallback.js","sourceHash":"7264440845b6a050ab30b62b56b303f8b14bc31423f2421e99f902bb97ee314f","subsystem":"plauna","recordType":"api-module","id":"module:plauna/motion/MPAFallback.js","title":"motion/MPAFallback","summary":"MPAFallback - Cross-document view transition fallback for mobile/legacy browsers. Browsers that don't support the CSS @view-transition at-rule for MPA navigation get a minimal fade-in of the new page instead of a hard cut. This is a graceful degradation, not a full polyfill; the real cross-document transition only works in browsers that support the View Transitions API Level 2. Usage: include synchronously in the <head> of any landing page: <script src=\"/plauna/motion/MPAFallback.js\"></script>","exportCount":0}
{"schemaVersion":1,"modulePath":"plauna/reference/motion/PageTransition.md","moduleTitle":"motion/PageTransition","source":"plauna/motion/PageTransition.js","import":"/plauna/motion/PageTransition.js","sourceHash":"248eb96f969e8b54ed308b05830aca51ec3059ad2f7186dec698f084f8b2c871","subsystem":"plauna","recordType":"api-module","id":"module:plauna/motion/PageTransition.js","title":"motion/PageTransition","summary":"PageTransition - Modern page/view blending for Plauna. Wraps the native View Transitions API (Level 1/2) where available and falls back to CSS class/transition-based cross-fades for older browsers. Designed for SPA \"page\" swaps, tab changes, and content fades inside a Plauna app. Usage: const pt = new PageTransition({ type: 'slide-left', duration: 350 }); await pt.start(() => { // update the DOM here });","exportCount":2}
{"schemaVersion":1,"modulePath":"plauna/reference/motion/PageTransition.md","moduleTitle":"motion/PageTransition","source":"plauna/motion/PageTransition.js","import":"/plauna/motion/PageTransition.js","sourceHash":"248eb96f969e8b54ed308b05830aca51ec3059ad2f7186dec698f084f8b2c871","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/motion/PageTransition.js#0000:PageTransition","exportIndex":0,"name":"PageTransition","kind":"class","signature":"class PageTransition","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/motion/PageTransition.md","moduleTitle":"motion/PageTransition","source":"plauna/motion/PageTransition.js","import":"/plauna/motion/PageTransition.js","sourceHash":"248eb96f969e8b54ed308b05830aca51ec3059ad2f7186dec698f084f8b2c871","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/motion/PageTransition.js#0001:startPageTransition","exportIndex":1,"name":"startPageTransition","kind":"function","signature":"startPageTransition(update, options = {})","summary":"Convenience function for one-off transitions."}
{"schemaVersion":1,"modulePath":"plauna/reference/motion/PageTransitionContracts.md","moduleTitle":"motion/PageTransitionContracts","source":"plauna/motion/PageTransitionContracts.js","import":"/plauna/motion/PageTransitionContracts.js","sourceHash":"324d899287c5421192e917aa514d5d42501ba440bd4b2effc720ab9781072d1e","subsystem":"plauna","recordType":"api-module","id":"module:plauna/motion/PageTransitionContracts.js","title":"motion/PageTransitionContracts","summary":"","exportCount":6}
{"schemaVersion":1,"modulePath":"plauna/reference/motion/PageTransitionContracts.md","moduleTitle":"motion/PageTransitionContracts","source":"plauna/motion/PageTransitionContracts.js","import":"/plauna/motion/PageTransitionContracts.js","sourceHash":"324d899287c5421192e917aa514d5d42501ba440bd4b2effc720ab9781072d1e","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/motion/PageTransitionContracts.js#0000:UnsupportedPageTransitionVersionError","exportIndex":0,"name":"UnsupportedPageTransitionVersionError","kind":"class","signature":"class UnsupportedPageTransitionVersionError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/motion/PageTransitionContracts.md","moduleTitle":"motion/PageTransitionContracts","source":"plauna/motion/PageTransitionContracts.js","import":"/plauna/motion/PageTransitionContracts.js","sourceHash":"324d899287c5421192e917aa514d5d42501ba440bd4b2effc720ab9781072d1e","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/motion/PageTransitionContracts.js#0001:preparePageTransitionIntent","exportIndex":1,"name":"preparePageTransitionIntent","kind":"function","signature":"preparePageTransitionIntent(input)","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/motion/PageTransitionContracts.md","moduleTitle":"motion/PageTransitionContracts","source":"plauna/motion/PageTransitionContracts.js","import":"/plauna/motion/PageTransitionContracts.js","sourceHash":"324d899287c5421192e917aa514d5d42501ba440bd4b2effc720ab9781072d1e","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/motion/PageTransitionContracts.js#0002:preparePageTransitionResolved","exportIndex":2,"name":"preparePageTransitionResolved","kind":"function","signature":"preparePageTransitionResolved(input)","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/motion/PageTransitionContracts.md","moduleTitle":"motion/PageTransitionContracts","source":"plauna/motion/PageTransitionContracts.js","import":"/plauna/motion/PageTransitionContracts.js","sourceHash":"324d899287c5421192e917aa514d5d42501ba440bd4b2effc720ab9781072d1e","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/motion/PageTransitionContracts.js#0003:PAGE_TRANSITION_SCHEMA_VERSION","exportIndex":3,"name":"PAGE_TRANSITION_SCHEMA_VERSION","kind":"constant","signature":"PAGE_TRANSITION_SCHEMA_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/motion/PageTransitionContracts.md","moduleTitle":"motion/PageTransitionContracts","source":"plauna/motion/PageTransitionContracts.js","import":"/plauna/motion/PageTransitionContracts.js","sourceHash":"324d899287c5421192e917aa514d5d42501ba440bd4b2effc720ab9781072d1e","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/motion/PageTransitionContracts.js#0004:PAGE_TRANSITION_INTENT_SCHEMA","exportIndex":4,"name":"PAGE_TRANSITION_INTENT_SCHEMA","kind":"constant","signature":"PAGE_TRANSITION_INTENT_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/motion/PageTransitionContracts.md","moduleTitle":"motion/PageTransitionContracts","source":"plauna/motion/PageTransitionContracts.js","import":"/plauna/motion/PageTransitionContracts.js","sourceHash":"324d899287c5421192e917aa514d5d42501ba440bd4b2effc720ab9781072d1e","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/motion/PageTransitionContracts.js#0005:PAGE_TRANSITION_RESOLVED_SCHEMA","exportIndex":5,"name":"PAGE_TRANSITION_RESOLVED_SCHEMA","kind":"constant","signature":"PAGE_TRANSITION_RESOLVED_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/motion/PageTransitionManager.md","moduleTitle":"motion/PageTransitionManager","source":"plauna/motion/PageTransitionManager.js","import":"/plauna/motion/PageTransitionManager.js","sourceHash":"dc658349f46e63e25b352f76401bda2471c823403445b02d485a1b3ec9033050","subsystem":"plauna","recordType":"api-module","id":"module:plauna/motion/PageTransitionManager.js","title":"motion/PageTransitionManager","summary":"PageTransitionManager - Cross-document (MPA) view transition orchestration. This module runs on every page that opts in. It injects a shared stylesheet containing the PageTransition presets and, on supported browsers, sets the active view transition type for cross-document navigations via the pageswap and pagereveal events. Pages can control their transition with a data attribute on the <html> element: <html data-transition-preset=\"etch\"> <html data-transition-preset=\"random\"> <html data-transition-preset=\"cycle\"> The default is the project's default preset (etch). If the attribute is absent or the value is unknown, the default is used.","exportCount":0}
{"schemaVersion":1,"modulePath":"plauna/reference/motion/PageTransitionPresets.md","moduleTitle":"motion/PageTransitionPresets","source":"plauna/motion/PageTransitionPresets.js","import":"/plauna/motion/PageTransitionPresets.js","sourceHash":"5cb1546706b6d1e675de5151d34201b40cde06b8c28103be82c303179b285b0e","subsystem":"plauna","recordType":"api-module","id":"module:plauna/motion/PageTransitionPresets.js","title":"motion/PageTransitionPresets","summary":"PageTransitionPresets - Shared transition presets and stylesheet generation. This module is the single source of truth for the keyframes and CSS used by both the same-document PageTransition engine and the cross-document PageTransitionManager. Keeping the presets in one place means SPA demos and MPA page navigation can share the same effects and the same default.","exportCount":12}
{"schemaVersion":1,"modulePath":"plauna/reference/motion/PageTransitionPresets.md","moduleTitle":"motion/PageTransitionPresets","source":"plauna/motion/PageTransitionPresets.js","import":"/plauna/motion/PageTransitionPresets.js","sourceHash":"5cb1546706b6d1e675de5151d34201b40cde06b8c28103be82c303179b285b0e","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/motion/PageTransitionPresets.js#0000:directionToPreset","exportIndex":0,"name":"directionToPreset","kind":"function","signature":"directionToPreset(direction)","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/motion/PageTransitionPresets.md","moduleTitle":"motion/PageTransitionPresets","source":"plauna/motion/PageTransitionPresets.js","import":"/plauna/motion/PageTransitionPresets.js","sourceHash":"5cb1546706b6d1e675de5151d34201b40cde06b8c28103be82c303179b285b0e","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/motion/PageTransitionPresets.js#0001:resolvePreset","exportIndex":1,"name":"resolvePreset","kind":"function","signature":"resolvePreset(name, state = { index: 0 })","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/motion/PageTransitionPresets.md","moduleTitle":"motion/PageTransitionPresets","source":"plauna/motion/PageTransitionPresets.js","import":"/plauna/motion/PageTransitionPresets.js","sourceHash":"5cb1546706b6d1e675de5151d34201b40cde06b8c28103be82c303179b285b0e","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/motion/PageTransitionPresets.js#0002:keyframesForPreset","exportIndex":2,"name":"keyframesForPreset","kind":"function","signature":"keyframesForPreset(name)","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/motion/PageTransitionPresets.md","moduleTitle":"motion/PageTransitionPresets","source":"plauna/motion/PageTransitionPresets.js","import":"/plauna/motion/PageTransitionPresets.js","sourceHash":"5cb1546706b6d1e675de5151d34201b40cde06b8c28103be82c303179b285b0e","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/motion/PageTransitionPresets.js#0003:presetStyleSheet","exportIndex":3,"name":"presetStyleSheet","kind":"function","signature":"presetStyleSheet(namespace)","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/motion/PageTransitionPresets.md","moduleTitle":"motion/PageTransitionPresets","source":"plauna/motion/PageTransitionPresets.js","import":"/plauna/motion/PageTransitionPresets.js","sourceHash":"5cb1546706b6d1e675de5151d34201b40cde06b8c28103be82c303179b285b0e","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/motion/PageTransitionPresets.js#0004:ensureStyleSheet","exportIndex":4,"name":"ensureStyleSheet","kind":"function","signature":"ensureStyleSheet(namespace)","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/motion/PageTransitionPresets.md","moduleTitle":"motion/PageTransitionPresets","source":"plauna/motion/PageTransitionPresets.js","import":"/plauna/motion/PageTransitionPresets.js","sourceHash":"5cb1546706b6d1e675de5151d34201b40cde06b8c28103be82c303179b285b0e","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/motion/PageTransitionPresets.js#0005:DEFAULT_PRESET","exportIndex":5,"name":"DEFAULT_PRESET","kind":"constant","signature":"DEFAULT_PRESET","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/motion/PageTransitionPresets.md","moduleTitle":"motion/PageTransitionPresets","source":"plauna/motion/PageTransitionPresets.js","import":"/plauna/motion/PageTransitionPresets.js","sourceHash":"5cb1546706b6d1e675de5151d34201b40cde06b8c28103be82c303179b285b0e","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/motion/PageTransitionPresets.js#0006:DEFAULT_DURATION","exportIndex":6,"name":"DEFAULT_DURATION","kind":"constant","signature":"DEFAULT_DURATION","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/motion/PageTransitionPresets.md","moduleTitle":"motion/PageTransitionPresets","source":"plauna/motion/PageTransitionPresets.js","import":"/plauna/motion/PageTransitionPresets.js","sourceHash":"5cb1546706b6d1e675de5151d34201b40cde06b8c28103be82c303179b285b0e","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/motion/PageTransitionPresets.js#0007:DEFAULT_EASING","exportIndex":7,"name":"DEFAULT_EASING","kind":"constant","signature":"DEFAULT_EASING","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/motion/PageTransitionPresets.md","moduleTitle":"motion/PageTransitionPresets","source":"plauna/motion/PageTransitionPresets.js","import":"/plauna/motion/PageTransitionPresets.js","sourceHash":"5cb1546706b6d1e675de5151d34201b40cde06b8c28103be82c303179b285b0e","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/motion/PageTransitionPresets.js#0008:DIRECTION_PRESETS","exportIndex":8,"name":"DIRECTION_PRESETS","kind":"constant","signature":"DIRECTION_PRESETS","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/motion/PageTransitionPresets.md","moduleTitle":"motion/PageTransitionPresets","source":"plauna/motion/PageTransitionPresets.js","import":"/plauna/motion/PageTransitionPresets.js","sourceHash":"5cb1546706b6d1e675de5151d34201b40cde06b8c28103be82c303179b285b0e","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/motion/PageTransitionPresets.js#0009:TYPES","exportIndex":9,"name":"TYPES","kind":"constant","signature":"TYPES","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/motion/PageTransitionPresets.md","moduleTitle":"motion/PageTransitionPresets","source":"plauna/motion/PageTransitionPresets.js","import":"/plauna/motion/PageTransitionPresets.js","sourceHash":"5cb1546706b6d1e675de5151d34201b40cde06b8c28103be82c303179b285b0e","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/motion/PageTransitionPresets.js#0010:SPECIAL_TYPES","exportIndex":10,"name":"SPECIAL_TYPES","kind":"constant","signature":"SPECIAL_TYPES","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/motion/PageTransitionPresets.md","moduleTitle":"motion/PageTransitionPresets","source":"plauna/motion/PageTransitionPresets.js","import":"/plauna/motion/PageTransitionPresets.js","sourceHash":"5cb1546706b6d1e675de5151d34201b40cde06b8c28103be82c303179b285b0e","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/motion/PageTransitionPresets.js#0011:ALL_TYPES","exportIndex":11,"name":"ALL_TYPES","kind":"constant","signature":"ALL_TYPES","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/motion/TransitionEngine.md","moduleTitle":"motion/TransitionEngine","source":"plauna/motion/TransitionEngine.js","import":"/plauna/motion/TransitionEngine.js","sourceHash":"33ca27d906e31a81b9701f5d3dcc232470cdc274738ea9bd264910b5d37b6542","subsystem":"plauna","recordType":"api-module","id":"module:plauna/motion/TransitionEngine.js","title":"motion/TransitionEngine","summary":"TransitionEngine - Property animation system for Plauna Provides smooth transitions and animations for UI properties","exportCount":2}
{"schemaVersion":1,"modulePath":"plauna/reference/motion/TransitionEngine.md","moduleTitle":"motion/TransitionEngine","source":"plauna/motion/TransitionEngine.js","import":"/plauna/motion/TransitionEngine.js","sourceHash":"33ca27d906e31a81b9701f5d3dcc232470cdc274738ea9bd264910b5d37b6542","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/motion/TransitionEngine.js#0000:TransitionEngine","exportIndex":0,"name":"TransitionEngine","kind":"class","signature":"class TransitionEngine","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/motion/TransitionEngine.md","moduleTitle":"motion/TransitionEngine","source":"plauna/motion/TransitionEngine.js","import":"/plauna/motion/TransitionEngine.js","sourceHash":"33ca27d906e31a81b9701f5d3dcc232470cdc274738ea9bd264910b5d37b6542","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/motion/TransitionEngine.js#0001:TransitionUtils","exportIndex":1,"name":"TransitionUtils","kind":"constant","signature":"TransitionUtils","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/notifications/NotificationSystem.md","moduleTitle":"notifications/NotificationSystem","source":"plauna/notifications/NotificationSystem.js","import":"/plauna/notifications/NotificationSystem.js","sourceHash":"9748d96249cf48cd191fc19f6b6923451af31d0c727edd6d04cb0abb9de375c3","subsystem":"plauna","recordType":"api-module","id":"module:plauna/notifications/NotificationSystem.js","title":"notifications/NotificationSystem","summary":"============================================================================ NotificationSystem - Centralized Notification Management ============================================================================ NotificationSystem provides a unified API for user notifications, separating them from debug logging and integrating with ToastManager for UI feedback. NOTIFICATION CHANNELS: 1. Toasts: UI notifications via ToastManager (top-right corner) 2. Console: Browser console.log/error/warn for debugging 3. Sounds: Optional audio feedback using Web Audio API NOTIFICATION LEVELS (priority order): - debug (0): Development debugging information - info (1): General informational messages - success (2): Success confirmations - warning (3): Warning messages - error (4): Error messages - critical (5): Critical errors requiring immediate attention NOTIFICATION TYPES: - system: System-level notifications (startup, shutdown, etc.) - action: User action feedback (clicks, submissions, etc.) - validation: Form validation errors - performance: Performance metrics and warnings - security: Security-related alerts - network: Network request status GROUPING: - createGroup(name, options): Create a notification group - Groups collect related notifications and report summary - Useful for batch operations or multi-step processes CONVENIENCE METHODS: - debug(message, type, data): Debug-level notification - info(message, type, data): Info-level notification - success(message, type, data): Success-level notification - warning(message, type, data): Warning-level notification - error(message, type, data): Error-level notification - critical(message, type, data): Critical-level notification SOUND EFFECTS: - Uses Web Audio API to generate simple beep sounds - Different frequencies for different levels - Can be disabled via enableSounds option MIN LEVEL FILTERING: - minLevel option filters notifications below specified level - Useful for suppressing debug messages in production INTEGRATION: - Uses global Toast from ToastManager for UI toasts - Toast position defaults to top-right - Console output includes prefix (default: '[Plauna]') USAGE: const notify = new NotificationSystem({ minLevel: 'info' }); notify.success('File saved successfully', 'action'); notify.error('Failed to load data', 'network', { url: '/api/data' });","exportCount":2}
{"schemaVersion":1,"modulePath":"plauna/reference/notifications/NotificationSystem.md","moduleTitle":"notifications/NotificationSystem","source":"plauna/notifications/NotificationSystem.js","import":"/plauna/notifications/NotificationSystem.js","sourceHash":"9748d96249cf48cd191fc19f6b6923451af31d0c727edd6d04cb0abb9de375c3","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/notifications/NotificationSystem.js#0000:NotificationSystem","exportIndex":0,"name":"NotificationSystem","kind":"class","signature":"class NotificationSystem","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/notifications/NotificationSystem.md","moduleTitle":"notifications/NotificationSystem","source":"plauna/notifications/NotificationSystem.js","import":"/plauna/notifications/NotificationSystem.js","sourceHash":"9748d96249cf48cd191fc19f6b6923451af31d0c727edd6d04cb0abb9de375c3","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/notifications/NotificationSystem.js#0001:Notify","exportIndex":1,"name":"Notify","kind":"constant","signature":"Notify","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/particle/ParticleController.md","moduleTitle":"particle/ParticleController","source":"plauna/particle/ParticleController.js","import":"/plauna/particle/ParticleController.js","sourceHash":"a3659aca55e1918c43a4c088234b744502d943c5feec307f308199d578fa8a78","subsystem":"plauna","recordType":"api-module","id":"module:plauna/particle/ParticleController.js","title":"particle/ParticleController","summary":"ParticleController - Manages particle effects and animations Handles particle system initialization and control for showcase","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/particle/ParticleController.md","moduleTitle":"particle/ParticleController","source":"plauna/particle/ParticleController.js","import":"/plauna/particle/ParticleController.js","sourceHash":"a3659aca55e1918c43a4c088234b744502d943c5feec307f308199d578fa8a78","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/particle/ParticleController.js#0000:ParticleController","exportIndex":0,"name":"ParticleController","kind":"class","signature":"class ParticleController","summary":"ParticleController - Manages particle effects and animations Handles particle system initialization and control for showcase"}
{"schemaVersion":1,"modulePath":"plauna/reference/particle/bridge.md","moduleTitle":"particle/bridge","source":"plauna/particle/bridge.js","import":"/plauna/particle/bridge.js","sourceHash":"add11bd6169ac88b1bea8382cf8476905a40398090fd1e7f1f57f29db220740a","subsystem":"plauna","recordType":"api-module","id":"module:plauna/particle/bridge.js","title":"particle/bridge","summary":"PlaunaParticleBridge - Connects Plauna to Particle Engine's VGPU Follows existing VGPU patterns from ViewportPanel","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/particle/bridge.md","moduleTitle":"particle/bridge","source":"plauna/particle/bridge.js","import":"/plauna/particle/bridge.js","sourceHash":"add11bd6169ac88b1bea8382cf8476905a40398090fd1e7f1f57f29db220740a","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/particle/bridge.js#0000:PlaunaGPUBridge","exportIndex":0,"name":"PlaunaGPUBridge","kind":"class","signature":"class PlaunaGPUBridge","summary":"PlaunaParticleBridge - Connects Plauna to Particle Engine's VGPU Follows existing VGPU patterns from ViewportPanel"}
{"schemaVersion":1,"modulePath":"plauna/reference/style/AdaptiveThemeFactory.md","moduleTitle":"style/AdaptiveThemeFactory","source":"plauna/style/AdaptiveThemeFactory.js","import":"/plauna/style/AdaptiveThemeFactory.js","sourceHash":"1a563e32bd26835aa2d3c2ea732b1f57fcc7d3e962b3a287247865fb4debc37a","subsystem":"plauna","recordType":"api-module","id":"module:plauna/style/AdaptiveThemeFactory.js","title":"style/AdaptiveThemeFactory","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"plauna/reference/style/AdaptiveThemeFactory.md","moduleTitle":"style/AdaptiveThemeFactory","source":"plauna/style/AdaptiveThemeFactory.js","import":"/plauna/style/AdaptiveThemeFactory.js","sourceHash":"1a563e32bd26835aa2d3c2ea732b1f57fcc7d3e962b3a287247865fb4debc37a","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/style/AdaptiveThemeFactory.js#0000:AdaptiveThemeFactory","exportIndex":0,"name":"AdaptiveThemeFactory","kind":"class","signature":"class AdaptiveThemeFactory","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/style/AdaptiveThemeFactory.md","moduleTitle":"style/AdaptiveThemeFactory","source":"plauna/style/AdaptiveThemeFactory.js","import":"/plauna/style/AdaptiveThemeFactory.js","sourceHash":"1a563e32bd26835aa2d3c2ea732b1f57fcc7d3e962b3a287247865fb4debc37a","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/style/AdaptiveThemeFactory.js#0001:adaptiveThemeFactory","exportIndex":1,"name":"adaptiveThemeFactory","kind":"constant","signature":"adaptiveThemeFactory","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/style/CSSGenerator.md","moduleTitle":"style/CSSGenerator","source":"plauna/style/CSSGenerator.js","import":"/plauna/style/CSSGenerator.js","sourceHash":"cf79013ff717a9e420f50c167d50838df282f1bae39bbb7519e186a5c10583b2","subsystem":"plauna","recordType":"api-module","id":"module:plauna/style/CSSGenerator.js","title":"style/CSSGenerator","summary":"CSSGenerator - Runtime CSS generation from DesignTokens and LayerManager. CSS generation pattern: - Generates CSS custom properties from design tokens - Supports theme-based variable sets (bright/night) - Caches generated CSS for performance - Injects CSS into document via style tags - Supports z-index layer variables Architecture: - tokens: DesignTokens instance for token resolution - layerValues: LayerManager z-index values - generatedCSS: Map of cached CSS strings - styleElement: DOM style element for CSS injection - themes: Pre-defined theme variable sets","exportCount":2}
{"schemaVersion":1,"modulePath":"plauna/reference/style/CSSGenerator.md","moduleTitle":"style/CSSGenerator","source":"plauna/style/CSSGenerator.js","import":"/plauna/style/CSSGenerator.js","sourceHash":"cf79013ff717a9e420f50c167d50838df282f1bae39bbb7519e186a5c10583b2","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/style/CSSGenerator.js#0000:CSSGenerator","exportIndex":0,"name":"CSSGenerator","kind":"class","signature":"class CSSGenerator","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/style/CSSGenerator.md","moduleTitle":"style/CSSGenerator","source":"plauna/style/CSSGenerator.js","import":"/plauna/style/CSSGenerator.js","sourceHash":"cf79013ff717a9e420f50c167d50838df282f1bae39bbb7519e186a5c10583b2","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/style/CSSGenerator.js#0001:cssGenerator","exportIndex":1,"name":"cssGenerator","kind":"constant","signature":"cssGenerator","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/style/ComputedStyle.md","moduleTitle":"style/ComputedStyle","source":"plauna/style/ComputedStyle.js","import":"/plauna/style/ComputedStyle.js","sourceHash":"5a93e204225ee79f36475509594685463211d0a7ac68a452d1406dc44609990f","subsystem":"plauna","recordType":"api-module","id":"module:plauna/style/ComputedStyle.js","title":"style/ComputedStyle","summary":"ComputedStyle - Style resolution and caching system for Plauna. Style resolution pattern: - Handles style inheritance from parent nodes - Resolves design token references - Computes final style values for rendering - Caches computed styles for performance - Tracks performance statistics Architecture: - cache: Map of computed style results - tokenCache: Map of resolved token values - styleCache: Map of style property resolutions - performanceStats: Metrics for cache hits/misses and timing Style categories: - Position and layout: position, display, flex properties - Sizing: width, height, min/max dimensions, flex basis/grow/shrink - Spacing: margin, padding - Visual: colors, borders, shadows, opacity - Typography: font family, size, weight, line height, alignment - Interaction: pointer events, cursor - Accessibility: visibility, z-index - Transform and animation","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/style/ComputedStyle.md","moduleTitle":"style/ComputedStyle","source":"plauna/style/ComputedStyle.js","import":"/plauna/style/ComputedStyle.js","sourceHash":"5a93e204225ee79f36475509594685463211d0a7ac68a452d1406dc44609990f","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/style/ComputedStyle.js#0000:ComputedStyle","exportIndex":0,"name":"ComputedStyle","kind":"class","signature":"class ComputedStyle","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/style/DesignTokenContracts.md","moduleTitle":"style/DesignTokenContracts","source":"plauna/style/DesignTokenContracts.js","import":"/plauna/style/DesignTokenContracts.js","sourceHash":"c7a5cf3ed072856205d9ca341fddc0c7996b3914c6971aa183aca7ee53e978a2","subsystem":"plauna","recordType":"api-module","id":"module:plauna/style/DesignTokenContracts.js","title":"style/DesignTokenContracts","summary":"Accept legacy raw token maps and return a canonical, safely cloned v1 envelope.","exportCount":5}
{"schemaVersion":1,"modulePath":"plauna/reference/style/DesignTokenContracts.md","moduleTitle":"style/DesignTokenContracts","source":"plauna/style/DesignTokenContracts.js","import":"/plauna/style/DesignTokenContracts.js","sourceHash":"c7a5cf3ed072856205d9ca341fddc0c7996b3914c6971aa183aca7ee53e978a2","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/style/DesignTokenContracts.js#0000:UnsupportedDesignTokenVersionError","exportIndex":0,"name":"UnsupportedDesignTokenVersionError","kind":"class","signature":"class UnsupportedDesignTokenVersionError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/style/DesignTokenContracts.md","moduleTitle":"style/DesignTokenContracts","source":"plauna/style/DesignTokenContracts.js","import":"/plauna/style/DesignTokenContracts.js","sourceHash":"c7a5cf3ed072856205d9ca341fddc0c7996b3914c6971aa183aca7ee53e978a2","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/style/DesignTokenContracts.js#0001:prepareDesignTokenDocument","exportIndex":1,"name":"prepareDesignTokenDocument","kind":"function","signature":"prepareDesignTokenDocument(input)","summary":"Accept legacy raw token maps and return a canonical, safely cloned v1 envelope."}
{"schemaVersion":1,"modulePath":"plauna/reference/style/DesignTokenContracts.md","moduleTitle":"style/DesignTokenContracts","source":"plauna/style/DesignTokenContracts.js","import":"/plauna/style/DesignTokenContracts.js","sourceHash":"c7a5cf3ed072856205d9ca341fddc0c7996b3914c6971aa183aca7ee53e978a2","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/style/DesignTokenContracts.js#0002:createDesignTokenExport","exportIndex":2,"name":"createDesignTokenExport","kind":"function","signature":"createDesignTokenExport(input)","summary":"Emit metadata additively so legacy readers still see token categories at the root."}
{"schemaVersion":1,"modulePath":"plauna/reference/style/DesignTokenContracts.md","moduleTitle":"style/DesignTokenContracts","source":"plauna/style/DesignTokenContracts.js","import":"/plauna/style/DesignTokenContracts.js","sourceHash":"c7a5cf3ed072856205d9ca341fddc0c7996b3914c6971aa183aca7ee53e978a2","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/style/DesignTokenContracts.js#0003:DESIGN_TOKEN_SCHEMA","exportIndex":3,"name":"DESIGN_TOKEN_SCHEMA","kind":"constant","signature":"DESIGN_TOKEN_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/style/DesignTokenContracts.md","moduleTitle":"style/DesignTokenContracts","source":"plauna/style/DesignTokenContracts.js","import":"/plauna/style/DesignTokenContracts.js","sourceHash":"c7a5cf3ed072856205d9ca341fddc0c7996b3914c6971aa183aca7ee53e978a2","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/style/DesignTokenContracts.js#0004:DESIGN_TOKEN_SCHEMA_VERSION","exportIndex":4,"name":"DESIGN_TOKEN_SCHEMA_VERSION","kind":"constant","signature":"DESIGN_TOKEN_SCHEMA_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/style/DesignTokens.md","moduleTitle":"style/DesignTokens","source":"plauna/style/DesignTokens.js","import":"/plauna/style/DesignTokens.js","sourceHash":"da420ccc14e4020f3462b8a6d92a5d10ae49b85d2c80af5016de49a65cb90cd1","subsystem":"plauna","recordType":"api-module","id":"module:plauna/style/DesignTokens.js","title":"style/DesignTokens","summary":"DesignTokens - Design system token management. Token management pattern: - Centralized token system for Plauna styling - Manages spacing, typography, color, motion, borderRadius, shadows, zIndex - Observer pattern for token change notifications - Caching for performance optimization - Deep merge strategy for token inheritance Architecture: - tokens: Merged token object (defaults + custom) - observers: Set of callback functions - cache: Map of cached token lookups","exportCount":3}
{"schemaVersion":1,"modulePath":"plauna/reference/style/DesignTokens.md","moduleTitle":"style/DesignTokens","source":"plauna/style/DesignTokens.js","import":"/plauna/style/DesignTokens.js","sourceHash":"da420ccc14e4020f3462b8a6d92a5d10ae49b85d2c80af5016de49a65cb90cd1","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/style/DesignTokens.js#0000:DesignTokens","exportIndex":0,"name":"DesignTokens","kind":"class","signature":"class DesignTokens","summary":"DesignTokens - Design system token management. Token management pattern: - Centralized token system for Plauna styling - Manages spacing, typography, color, motion, borderRadius, shadows, zIndex - Observer pattern for token change notifications - Caching for performance optimization - Deep merge strategy for token inheritance Architecture: - tokens: Merged token object (defaults + custom) - observers: Set of callback functions - cache: Map of cached token lookups"}
{"schemaVersion":1,"modulePath":"plauna/reference/style/DesignTokens.md","moduleTitle":"style/DesignTokens","source":"plauna/style/DesignTokens.js","import":"/plauna/style/DesignTokens.js","sourceHash":"da420ccc14e4020f3462b8a6d92a5d10ae49b85d2c80af5016de49a65cb90cd1","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/style/DesignTokens.js#0001:tokens","exportIndex":1,"name":"tokens","kind":"constant","signature":"tokens","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/style/DesignTokens.md","moduleTitle":"style/DesignTokens","source":"plauna/style/DesignTokens.js","import":"/plauna/style/DesignTokens.js","sourceHash":"da420ccc14e4020f3462b8a6d92a5d10ae49b85d2c80af5016de49a65cb90cd1","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/style/DesignTokens.js#0002:TokenUtils","exportIndex":2,"name":"TokenUtils","kind":"constant","signature":"TokenUtils","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/style/LayerManager.md","moduleTitle":"style/LayerManager","source":"plauna/style/LayerManager.js","import":"/plauna/style/LayerManager.js","sourceHash":"f2469425f3962220de13ef0f37b3bcfe6e8cd38c56448e0fb93f8f46c851b3ef","subsystem":"plauna","recordType":"api-module","id":"module:plauna/style/LayerManager.js","title":"style/LayerManager","summary":"LayerManager - Semantic z-index management system. Z-index management pattern: - Centralized z-index constants organized by stacking context - Arithmetic relationships for self-documenting code - Prevents z-index wars by providing semantic layer names - Uses isolation: isolate for stacking context isolation Stacking contexts (lowest to highest): - Layout: backdrop, surface, widget gallery - Modal: backdrop, panel - Dropdown: backdrop, dropdown - Tooltip - Notification: toast, alert Arithmetic pattern: - base = 0 - above = 1 - below = -1 - Each layer is defined relative to the previous layer","exportCount":14}
{"schemaVersion":1,"modulePath":"plauna/reference/style/LayerManager.md","moduleTitle":"style/LayerManager","source":"plauna/style/LayerManager.js","import":"/plauna/style/LayerManager.js","sourceHash":"f2469425f3962220de13ef0f37b3bcfe6e8cd38c56448e0fb93f8f46c851b3ef","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/style/LayerManager.js#0000:getStackingContextCSS","exportIndex":0,"name":"getStackingContextCSS","kind":"function","signature":"getStackingContextCSS(layerName)","summary":"Create CSS for stacking context isolation. Stacking context pattern: - Uses isolation: isolate to create new stacking context - Prevents side effects from parent stacking contexts - Returns CSS object with isolation and z-index"}
{"schemaVersion":1,"modulePath":"plauna/reference/style/LayerManager.md","moduleTitle":"style/LayerManager","source":"plauna/style/LayerManager.js","import":"/plauna/style/LayerManager.js","sourceHash":"f2469425f3962220de13ef0f37b3bcfe6e8cd38c56448e0fb93f8f46c851b3ef","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/style/LayerManager.js#0001:getLayerZIndex","exportIndex":1,"name":"getLayerZIndex","kind":"function","signature":"getLayerZIndex(layerName)","summary":"Get z-index value for a layer"}
{"schemaVersion":1,"modulePath":"plauna/reference/style/LayerManager.md","moduleTitle":"style/LayerManager","source":"plauna/style/LayerManager.js","import":"/plauna/style/LayerManager.js","sourceHash":"f2469425f3962220de13ef0f37b3bcfe6e8cd38c56448e0fb93f8f46c851b3ef","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/style/LayerManager.js#0002:getLayerCSSVariables","exportIndex":2,"name":"getLayerCSSVariables","kind":"function","signature":"getLayerCSSVariables()","summary":"Get all layer values as CSS custom properties"}
{"schemaVersion":1,"modulePath":"plauna/reference/style/LayerManager.md","moduleTitle":"style/LayerManager","source":"plauna/style/LayerManager.js","import":"/plauna/style/LayerManager.js","sourceHash":"f2469425f3962220de13ef0f37b3bcfe6e8cd38c56448e0fb93f8f46c851b3ef","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/style/LayerManager.js#0003:zLayoutBackdrop","exportIndex":3,"name":"zLayoutBackdrop","kind":"constant","signature":"zLayoutBackdrop","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/style/LayerManager.md","moduleTitle":"style/LayerManager","source":"plauna/style/LayerManager.js","import":"/plauna/style/LayerManager.js","sourceHash":"f2469425f3962220de13ef0f37b3bcfe6e8cd38c56448e0fb93f8f46c851b3ef","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/style/LayerManager.js#0004:zLayoutSurface","exportIndex":4,"name":"zLayoutSurface","kind":"constant","signature":"zLayoutSurface","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/style/LayerManager.md","moduleTitle":"style/LayerManager","source":"plauna/style/LayerManager.js","import":"/plauna/style/LayerManager.js","sourceHash":"f2469425f3962220de13ef0f37b3bcfe6e8cd38c56448e0fb93f8f46c851b3ef","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/style/LayerManager.js#0005:zLayoutWidgetGallery","exportIndex":5,"name":"zLayoutWidgetGallery","kind":"constant","signature":"zLayoutWidgetGallery","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/style/LayerManager.md","moduleTitle":"style/LayerManager","source":"plauna/style/LayerManager.js","import":"/plauna/style/LayerManager.js","sourceHash":"f2469425f3962220de13ef0f37b3bcfe6e8cd38c56448e0fb93f8f46c851b3ef","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/style/LayerManager.js#0006:zModalBackdrop","exportIndex":6,"name":"zModalBackdrop","kind":"constant","signature":"zModalBackdrop","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/style/LayerManager.md","moduleTitle":"style/LayerManager","source":"plauna/style/LayerManager.js","import":"/plauna/style/LayerManager.js","sourceHash":"f2469425f3962220de13ef0f37b3bcfe6e8cd38c56448e0fb93f8f46c851b3ef","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/style/LayerManager.js#0007:zModalPanel","exportIndex":7,"name":"zModalPanel","kind":"constant","signature":"zModalPanel","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/style/LayerManager.md","moduleTitle":"style/LayerManager","source":"plauna/style/LayerManager.js","import":"/plauna/style/LayerManager.js","sourceHash":"f2469425f3962220de13ef0f37b3bcfe6e8cd38c56448e0fb93f8f46c851b3ef","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/style/LayerManager.js#0008:zDropdownBackdrop","exportIndex":8,"name":"zDropdownBackdrop","kind":"constant","signature":"zDropdownBackdrop","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/style/LayerManager.md","moduleTitle":"style/LayerManager","source":"plauna/style/LayerManager.js","import":"/plauna/style/LayerManager.js","sourceHash":"f2469425f3962220de13ef0f37b3bcfe6e8cd38c56448e0fb93f8f46c851b3ef","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/style/LayerManager.js#0009:zDropdown","exportIndex":9,"name":"zDropdown","kind":"constant","signature":"zDropdown","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/style/LayerManager.md","moduleTitle":"style/LayerManager","source":"plauna/style/LayerManager.js","import":"/plauna/style/LayerManager.js","sourceHash":"f2469425f3962220de13ef0f37b3bcfe6e8cd38c56448e0fb93f8f46c851b3ef","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/style/LayerManager.js#0010:zTooltip","exportIndex":10,"name":"zTooltip","kind":"constant","signature":"zTooltip","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/style/LayerManager.md","moduleTitle":"style/LayerManager","source":"plauna/style/LayerManager.js","import":"/plauna/style/LayerManager.js","sourceHash":"f2469425f3962220de13ef0f37b3bcfe6e8cd38c56448e0fb93f8f46c851b3ef","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/style/LayerManager.js#0011:zNotificationToast","exportIndex":11,"name":"zNotificationToast","kind":"constant","signature":"zNotificationToast","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/style/LayerManager.md","moduleTitle":"style/LayerManager","source":"plauna/style/LayerManager.js","import":"/plauna/style/LayerManager.js","sourceHash":"f2469425f3962220de13ef0f37b3bcfe6e8cd38c56448e0fb93f8f46c851b3ef","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/style/LayerManager.js#0012:zNotificationAlert","exportIndex":12,"name":"zNotificationAlert","kind":"constant","signature":"zNotificationAlert","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/style/LayerManager.md","moduleTitle":"style/LayerManager","source":"plauna/style/LayerManager.js","import":"/plauna/style/LayerManager.js","sourceHash":"f2469425f3962220de13ef0f37b3bcfe6e8cd38c56448e0fb93f8f46c851b3ef","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/style/LayerManager.js#0013:layerValues","exportIndex":13,"name":"layerValues","kind":"constant","signature":"layerValues","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/style/StyleSizing.md","moduleTitle":"style/StyleSizing","source":"plauna/style/StyleSizing.js","import":"/plauna/style/StyleSizing.js","sourceHash":"fc53654bce81be48fd296856034daa4dac86370600c341b920f3347115f242e6","subsystem":"plauna","recordType":"api-module","id":"module:plauna/style/StyleSizing.js","title":"style/StyleSizing","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/style/StyleSizing.md","moduleTitle":"style/StyleSizing","source":"plauna/style/StyleSizing.js","import":"/plauna/style/StyleSizing.js","sourceHash":"fc53654bce81be48fd296856034daa4dac86370600c341b920f3347115f242e6","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/style/StyleSizing.js#0000:resolvePlaunaStyleSize","exportIndex":0,"name":"resolvePlaunaStyleSize","kind":"function","signature":"resolvePlaunaStyleSize(value, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/style/ThemeController.md","moduleTitle":"style/ThemeController","source":"plauna/style/ThemeController.js","import":"/plauna/style/ThemeController.js","sourceHash":"d2ad330c69dbed0f6e85d6482149cabac38894e22f56d7e432e6c51286ba5a6f","subsystem":"plauna","recordType":"api-module","id":"module:plauna/style/ThemeController.js","title":"style/ThemeController","summary":"ThemeController - Runtime theme management and switching. Theme switching pattern: - Manages bright/night theme switching with live CSS updates - Persists theme preference to localStorage - Listens to system theme preference (prefers-color-scheme) - Observer pattern for theme change notifications - Applies theme via data-theme attribute and CSS variables Features: - Auto-switch based on system preference - Manual theme switching with setTheme() - Theme persistence across sessions - Observer notifications for reactive updates","exportCount":2}
{"schemaVersion":1,"modulePath":"plauna/reference/style/ThemeController.md","moduleTitle":"style/ThemeController","source":"plauna/style/ThemeController.js","import":"/plauna/style/ThemeController.js","sourceHash":"d2ad330c69dbed0f6e85d6482149cabac38894e22f56d7e432e6c51286ba5a6f","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/style/ThemeController.js#0000:ThemeController","exportIndex":0,"name":"ThemeController","kind":"class","signature":"class ThemeController","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/style/ThemeController.md","moduleTitle":"style/ThemeController","source":"plauna/style/ThemeController.js","import":"/plauna/style/ThemeController.js","sourceHash":"d2ad330c69dbed0f6e85d6482149cabac38894e22f56d7e432e6c51286ba5a6f","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/style/ThemeController.js#0001:themeController","exportIndex":1,"name":"themeController","kind":"constant","signature":"themeController","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/style/ThemeManager.md","moduleTitle":"style/ThemeManager","source":"plauna/style/ThemeManager.js","import":"/plauna/style/ThemeManager.js","sourceHash":"fdf9101d7853ef469a07369c2952cefe0d8651f3d633952f80a5b2cbe1772d03","subsystem":"plauna","recordType":"api-module","id":"module:plauna/style/ThemeManager.js","title":"style/ThemeManager","summary":"ThemeManager - Theme management system for Plauna. Theme management pattern: - Provides theme registration and switching - Supports custom token overrides - Observer pattern for theme change notifications - Deep merge strategy for token inheritance - Pre-registered themes (light, dark) Architecture: - themes: Map of registered theme definitions - observers: Set of callback functions for change notifications - customTokens: Map of custom token overrides - currentTheme: Currently active theme ID","exportCount":2}
{"schemaVersion":1,"modulePath":"plauna/reference/style/ThemeManager.md","moduleTitle":"style/ThemeManager","source":"plauna/style/ThemeManager.js","import":"/plauna/style/ThemeManager.js","sourceHash":"fdf9101d7853ef469a07369c2952cefe0d8651f3d633952f80a5b2cbe1772d03","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/style/ThemeManager.js#0000:ThemeManager","exportIndex":0,"name":"ThemeManager","kind":"class","signature":"class ThemeManager","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/style/ThemeManager.md","moduleTitle":"style/ThemeManager","source":"plauna/style/ThemeManager.js","import":"/plauna/style/ThemeManager.js","sourceHash":"fdf9101d7853ef469a07369c2952cefe0d8651f3d633952f80a5b2cbe1772d03","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/style/ThemeManager.js#0001:ThemeUtils","exportIndex":1,"name":"ThemeUtils","kind":"constant","signature":"ThemeUtils","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/style/index.md","moduleTitle":"style/index","source":"plauna/style/index.js","import":"/plauna/style/index.js","sourceHash":"8769ccaf5807e2dbc9f2c0aa71360b8f37fff546fec5a8e02edf5ed35498a23f","subsystem":"plauna","recordType":"api-module","id":"module:plauna/style/index.js","title":"style/index","summary":"Style Module Exports Central export point for all Plauna styling utilities and managers. Exported modules: - LayerManager: Semantic z-index management system - ThemeManager: Theme registration and management - DesignTokens: Design system token management - WidgetStyleManager: Theme-aware widget styling - CSSGenerator: Runtime CSS generation - ThemeController: Runtime theme switching Usage: import { tokens, ThemeManager, layerValues } from './style/index.js';","exportCount":0}
{"schemaVersion":1,"modulePath":"plauna/reference/surface/surface-manager.md","moduleTitle":"surface/surface-manager","source":"plauna/surface/surface-manager.js","import":"/plauna/surface/surface-manager.js","sourceHash":"fe179792c3c283b3098014a32b4cba09edb988a2d54d6322b96903283f36cdcf","subsystem":"plauna","recordType":"api-module","id":"module:plauna/surface/surface-manager.js","title":"surface/surface-manager","summary":"PlaunaSurfaceManager - Manages GPU surfaces and rendering Integrates with existing VGPU patterns","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/surface/surface-manager.md","moduleTitle":"surface/surface-manager","source":"plauna/surface/surface-manager.js","import":"/plauna/surface/surface-manager.js","sourceHash":"fe179792c3c283b3098014a32b4cba09edb988a2d54d6322b96903283f36cdcf","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/surface/surface-manager.js#0000:PlaunaSurfaceManager","exportIndex":0,"name":"PlaunaSurfaceManager","kind":"class","signature":"class PlaunaSurfaceManager","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/text/pretext-service.md","moduleTitle":"text/pretext-service","source":"plauna/text/pretext-service.js","import":"/plauna/text/pretext-service.js","sourceHash":"23ebfd88f83466a0b2ed50b29f0422e5f613f01b4661c00b5d7e5b5490efe0e8","subsystem":"plauna","recordType":"api-module","id":"module:plauna/text/pretext-service.js","title":"text/pretext-service","summary":"PlaunaTextService - DOM-free text measurement and layout Implements Pretext-style text measurement for Plauna","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/text/pretext-service.md","moduleTitle":"text/pretext-service","source":"plauna/text/pretext-service.js","import":"/plauna/text/pretext-service.js","sourceHash":"23ebfd88f83466a0b2ed50b29f0422e5f613f01b4661c00b5d7e5b5490efe0e8","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/text/pretext-service.js#0000:PlaunaTextService","exportIndex":0,"name":"PlaunaTextService","kind":"class","signature":"class PlaunaTextService","summary":"PlaunaTextService - DOM-free text measurement and layout Implements Pretext-style text measurement for Plauna"}
{"schemaVersion":1,"modulePath":"plauna/reference/themes/ThemeContracts.md","moduleTitle":"themes/ThemeContracts","source":"plauna/themes/ThemeContracts.js","import":"/plauna/themes/ThemeContracts.js","sourceHash":"b2f168771b7085d0cb3432a526d7f7fec5a1305c16e2621069f832a0b53dce93","subsystem":"plauna","recordType":"api-module","id":"module:plauna/themes/ThemeContracts.js","title":"themes/ThemeContracts","summary":"","exportCount":5}
{"schemaVersion":1,"modulePath":"plauna/reference/themes/ThemeContracts.md","moduleTitle":"themes/ThemeContracts","source":"plauna/themes/ThemeContracts.js","import":"/plauna/themes/ThemeContracts.js","sourceHash":"b2f168771b7085d0cb3432a526d7f7fec5a1305c16e2621069f832a0b53dce93","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/themes/ThemeContracts.js#0000:validateThemeId","exportIndex":0,"name":"validateThemeId","kind":"function","signature":"validateThemeId(value, label = 'Theme id')","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/themes/ThemeContracts.md","moduleTitle":"themes/ThemeContracts","source":"plauna/themes/ThemeContracts.js","import":"/plauna/themes/ThemeContracts.js","sourceHash":"b2f168771b7085d0cb3432a526d7f7fec5a1305c16e2621069f832a0b53dce93","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/themes/ThemeContracts.js#0001:prepareThemeVariables","exportIndex":1,"name":"prepareThemeVariables","kind":"function","signature":"prepareThemeVariables(input, { allowNull = true } = {})","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/themes/ThemeContracts.md","moduleTitle":"themes/ThemeContracts","source":"plauna/themes/ThemeContracts.js","import":"/plauna/themes/ThemeContracts.js","sourceHash":"b2f168771b7085d0cb3432a526d7f7fec5a1305c16e2621069f832a0b53dce93","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/themes/ThemeContracts.js#0002:prepareThemeRegistry","exportIndex":2,"name":"prepareThemeRegistry","kind":"function","signature":"prepareThemeRegistry(input)","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/themes/ThemeContracts.md","moduleTitle":"themes/ThemeContracts","source":"plauna/themes/ThemeContracts.js","import":"/plauna/themes/ThemeContracts.js","sourceHash":"b2f168771b7085d0cb3432a526d7f7fec5a1305c16e2621069f832a0b53dce93","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/themes/ThemeContracts.js#0003:prepareThemeManifest","exportIndex":3,"name":"prepareThemeManifest","kind":"function","signature":"prepareThemeManifest(input, requestedId)","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/themes/ThemeContracts.md","moduleTitle":"themes/ThemeContracts","source":"plauna/themes/ThemeContracts.js","import":"/plauna/themes/ThemeContracts.js","sourceHash":"b2f168771b7085d0cb3432a526d7f7fec5a1305c16e2621069f832a0b53dce93","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/themes/ThemeContracts.js#0004:THEME_SCHEMA_VERSION","exportIndex":4,"name":"THEME_SCHEMA_VERSION","kind":"constant","signature":"THEME_SCHEMA_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/themes/ThemeLoader.md","moduleTitle":"themes/ThemeLoader","source":"plauna/themes/ThemeLoader.js","import":"/plauna/themes/ThemeLoader.js","sourceHash":"14d9ab06a572b4b9c05d54fdc1a65d5542a8bc465ba0b07bfcfe8fc3214b8417","subsystem":"plauna","recordType":"api-module","id":"module:plauna/themes/ThemeLoader.js","title":"themes/ThemeLoader","summary":"============================================================================ ThemeLoader - File-Based Theme Discovery and Loading ============================================================================ ThemeLoader is a file-based theme system inspired by WordPress but modernized. It loads themes from plauna/themes/{id}/theme.json and applies CSS variables. THEME STRUCTURE: plauna/themes/ ├── _base/              # Base theme with all token defaults (required) │   └── theme.json      # Defines every possible CSS variable ├── dark/               # Dark theme (extends _base) │   └── theme.json      # Only overrides what's different from _base ├── light/              # Light theme (extends _base) │   └── theme.json ├── high-contrast/      # High contrast theme (extends dark) │   └── theme.json ├── custom/             # User starter template (extends dark) │   └── theme.json └── index.json          # Registry of discoverable themes THEME MANIFEST (theme.json): { \"name\": \"Theme Name\", \"description\": \"Theme description\", \"extends\": \"parent-theme-id\",  // Optional: parent theme to inherit from \"variables\": { \"color-primary\": \"#3b82f6\",  // CSS variable name → value \"spacing-md\": \"16px\", // null or omitted values inherit from parent } } THEME RESOLUTION CASCADE (highest priority wins): 1. _base theme defaults (all variables defined) 2. Parent theme variables (if extends is set) 3. Current theme variables (overrides parent) 4. Runtime overrides (applyOverrides() - per-session changes) CSS VARIABLE APPLICATION: - Variables are written to <style data-plauna-theme=\"1\"> tag on :root - Format: --variable-name: value; - Overrides use separate <style data-plauna-overrides=\"1\"> tag REGISTRY (themes/index.json): { \"themes\": [\"dark\", \"light\", \"high-contrast\", \"custom\"] } Add your theme folder name here to make it discoverable without code changes. METHODS: - discover(): Load themes/index.json and return available theme IDs - load(id): Load raw theme.json without resolving parent chain - resolve(id): Resolve full theme with parent chain merged - apply(id): Apply theme CSS variables to DOM - applyOverrides(vars): Apply per-session variable overrides - clearOverrides(): Remove runtime overrides - listThemes(): Return theme metadata for all discoverable themes","exportCount":2}
{"schemaVersion":1,"modulePath":"plauna/reference/themes/ThemeLoader.md","moduleTitle":"themes/ThemeLoader","source":"plauna/themes/ThemeLoader.js","import":"/plauna/themes/ThemeLoader.js","sourceHash":"14d9ab06a572b4b9c05d54fdc1a65d5542a8bc465ba0b07bfcfe8fc3214b8417","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/themes/ThemeLoader.js#0000:ThemeLoader","exportIndex":0,"name":"ThemeLoader","kind":"class","signature":"class ThemeLoader","summary":"ThemeLoader - File-based theme discovery and loading. Theme loading pattern: - Loads themes from plauna/themes/{id}/theme.json - Supports theme extension via \"extends\" property - Resolves parent chain with cascading variable inheritance - Applies CSS variables to :root via style tags - Caches resolved themes for performance Architecture: - _cache: Resolved theme manifests (parent chain merged) - _rawCache: Raw theme.json files - _registry: Discoverable theme IDs from index.json - _styleEl: CSS variable style tag - _overrideEl: Runtime override style tag"}
{"schemaVersion":1,"modulePath":"plauna/reference/themes/ThemeLoader.md","moduleTitle":"themes/ThemeLoader","source":"plauna/themes/ThemeLoader.js","import":"/plauna/themes/ThemeLoader.js","sourceHash":"14d9ab06a572b4b9c05d54fdc1a65d5542a8bc465ba0b07bfcfe8fc3214b8417","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/themes/ThemeLoader.js#0001:themeLoader","exportIndex":1,"name":"themeLoader","kind":"constant","signature":"themeLoader","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/themes/ThemePreference.md","moduleTitle":"themes/ThemePreference","source":"plauna/themes/ThemePreference.js","import":"/plauna/themes/ThemePreference.js","sourceHash":"41083fbe07cba0b49571bdb89020fc5df9ec44e9b5e4f8e0075b0718a90873c8","subsystem":"plauna","recordType":"api-module","id":"module:plauna/themes/ThemePreference.js","title":"themes/ThemePreference","summary":"Expand legacy state into both namespaced keys without contracting the old key. Older tabs may still be reading it during a rolling browser rollout.","exportCount":8}
{"schemaVersion":1,"modulePath":"plauna/reference/themes/ThemePreference.md","moduleTitle":"themes/ThemePreference","source":"plauna/themes/ThemePreference.js","import":"/plauna/themes/ThemePreference.js","sourceHash":"41083fbe07cba0b49571bdb89020fc5df9ec44e9b5e4f8e0075b0718a90873c8","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/themes/ThemePreference.js#0000:migrateLegacyThemePreference","exportIndex":0,"name":"migrateLegacyThemePreference","kind":"function","signature":"migrateLegacyThemePreference(storage)","summary":"Expand legacy state into both namespaced keys without contracting the old key. Older tabs may still be reading it during a rolling browser rollout."}
{"schemaVersion":1,"modulePath":"plauna/reference/themes/ThemePreference.md","moduleTitle":"themes/ThemePreference","source":"plauna/themes/ThemePreference.js","import":"/plauna/themes/ThemePreference.js","sourceHash":"41083fbe07cba0b49571bdb89020fc5df9ec44e9b5e4f8e0075b0718a90873c8","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/themes/ThemePreference.js#0001:readFileThemePreference","exportIndex":1,"name":"readFileThemePreference","kind":"function","signature":"readFileThemePreference(storage)","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/themes/ThemePreference.md","moduleTitle":"themes/ThemePreference","source":"plauna/themes/ThemePreference.js","import":"/plauna/themes/ThemePreference.js","sourceHash":"41083fbe07cba0b49571bdb89020fc5df9ec44e9b5e4f8e0075b0718a90873c8","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/themes/ThemePreference.js#0002:writeFileThemePreference","exportIndex":2,"name":"writeFileThemePreference","kind":"function","signature":"writeFileThemePreference(value, storage)","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/themes/ThemePreference.md","moduleTitle":"themes/ThemePreference","source":"plauna/themes/ThemePreference.js","import":"/plauna/themes/ThemePreference.js","sourceHash":"41083fbe07cba0b49571bdb89020fc5df9ec44e9b5e4f8e0075b0718a90873c8","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/themes/ThemePreference.js#0003:readColorModePreference","exportIndex":3,"name":"readColorModePreference","kind":"function","signature":"readColorModePreference(storage)","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/themes/ThemePreference.md","moduleTitle":"themes/ThemePreference","source":"plauna/themes/ThemePreference.js","import":"/plauna/themes/ThemePreference.js","sourceHash":"41083fbe07cba0b49571bdb89020fc5df9ec44e9b5e4f8e0075b0718a90873c8","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/themes/ThemePreference.js#0004:writeColorModePreference","exportIndex":4,"name":"writeColorModePreference","kind":"function","signature":"writeColorModePreference(value, storage)","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/themes/ThemePreference.md","moduleTitle":"themes/ThemePreference","source":"plauna/themes/ThemePreference.js","import":"/plauna/themes/ThemePreference.js","sourceHash":"41083fbe07cba0b49571bdb89020fc5df9ec44e9b5e4f8e0075b0718a90873c8","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/themes/ThemePreference.js#0005:LEGACY_THEME_STORAGE_KEY","exportIndex":5,"name":"LEGACY_THEME_STORAGE_KEY","kind":"constant","signature":"LEGACY_THEME_STORAGE_KEY","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/themes/ThemePreference.md","moduleTitle":"themes/ThemePreference","source":"plauna/themes/ThemePreference.js","import":"/plauna/themes/ThemePreference.js","sourceHash":"41083fbe07cba0b49571bdb89020fc5df9ec44e9b5e4f8e0075b0718a90873c8","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/themes/ThemePreference.js#0006:FILE_THEME_STORAGE_KEY","exportIndex":6,"name":"FILE_THEME_STORAGE_KEY","kind":"constant","signature":"FILE_THEME_STORAGE_KEY","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/themes/ThemePreference.md","moduleTitle":"themes/ThemePreference","source":"plauna/themes/ThemePreference.js","import":"/plauna/themes/ThemePreference.js","sourceHash":"41083fbe07cba0b49571bdb89020fc5df9ec44e9b5e4f8e0075b0718a90873c8","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/themes/ThemePreference.js#0007:COLOR_MODE_STORAGE_KEY","exportIndex":7,"name":"COLOR_MODE_STORAGE_KEY","kind":"constant","signature":"COLOR_MODE_STORAGE_KEY","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/ui/SmartContextMenu.md","moduleTitle":"ui/SmartContextMenu","source":"plauna/ui/SmartContextMenu.js","import":"/plauna/ui/SmartContextMenu.js","sourceHash":"4fd89875e01eb3064a19f5bac7fe051c7ec026723750f9d941e13c85a4cd7dfe","subsystem":"plauna","recordType":"api-module","id":"module:plauna/ui/SmartContextMenu.js","title":"ui/SmartContextMenu","summary":"============================================================================ PlaunaSmartContextMenu - Context-Aware Right-Click Menu ============================================================================ PlaunaSmartContextMenu provides a context-aware right-click menu that scans the visual tree near the cursor and builds a smart action panel based on nearby UI nodes. SCANNING ALGORITHM: 1. On right-click, collectNearbyNodes() scans the visual tree around cursor 2. Uses adaptive radius based on node density (shrinks when many nodes nearby) 3. Scores each node based on type, role, text content, and distance 4. Returns top N nodes within scan radius NODE SCORING: - Inside node: +1000 + inset depth (prioritizes deeper inside) - Has role: +22 - Has text content: +10 - Has className: +8 - Button type: +25 - Input type: +18 - Menu type: +15 - Small area: +6 (prefers compact elements) ADAPTIVE RADIUS: - Base radius: 140px (configurable) - Density >= 8: 48% of base (72px min) - Density >= 6: 55% of base (80px min) - Density >= 4: 65% of base (90px min) - Density >= 2: 80% of base (112px min) - Density < 2: 100% of base (140px) DOM FALLBACK: - If visualTree is unavailable (e.g., in showcase shell), falls back to DOM scanning - Uses element._plaunaNode back-reference set by WidgetRenderer - Scans all elements in root and collects associated UINodes ACTION GENERATION: - For each nearby node, generates contextual actions - Actions include: inspect, copy text, copy ID, copy styles, toggle visibility - Actions are sorted by relevance and displayed in a radial menu VISUAL FEEDBACK: - Draws a scan ring around cursor during scanning - Highlights nearby nodes with visual indicators - Shows tie nodes (nodes with similar scores) with special styling INTEGRATION: - Requires: app (PlaunaApp), root (DOM element), visualTree (optional) - Optional: domRenderer (WidgetRenderer instance), console (logger) - Configurable: radius, maxNearby, maxActions, enabled flag USAGE: const menu = new PlaunaSmartContextMenu({ app: plaunaApp, root: document.body, visualTree: app.visualTree, domRenderer: app.domRenderer, radius: 140, maxNearby: 6, maxActions: 6 }); menu.enable();","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/ui/SmartContextMenu.md","moduleTitle":"ui/SmartContextMenu","source":"plauna/ui/SmartContextMenu.js","import":"/plauna/ui/SmartContextMenu.js","sourceHash":"4fd89875e01eb3064a19f5bac7fe051c7ec026723750f9d941e13c85a4cd7dfe","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/ui/SmartContextMenu.js#0000:PlaunaSmartContextMenu","exportIndex":0,"name":"PlaunaSmartContextMenu","kind":"class","signature":"class PlaunaSmartContextMenu","summary":"PlaunaSmartContextMenu - Context-aware right-click menu. Context menu pattern: - Scans visual tree near cursor on right-click - Builds smart action panel based on nearby UI nodes - Adaptive radius based on node density - Node scoring for relevance ranking - Visual feedback with scan ring and highlights Integration: - Requires: app (PlaunaApp), root (DOM element), visualTree (optional) - Optional: domRenderer (WidgetRenderer), console (logger) - Configurable: radius, maxNearby, maxActions, enabled flag"}
{"schemaVersion":1,"modulePath":"plauna/reference/ui/ToastManager.md","moduleTitle":"ui/ToastManager","source":"plauna/ui/ToastManager.js","import":"/plauna/ui/ToastManager.js","sourceHash":"fbadb905c8ae3017f1d9de2c5a4e55a056a720265d9d2b55cba49ea3bedd9156","subsystem":"plauna","recordType":"api-module","id":"module:plauna/ui/ToastManager.js","title":"ui/ToastManager","summary":"============================================================================ ToastManager - Unified Toast Notification System ============================================================================ ToastManager provides a user-friendly toast notification system for Plauna. It separates UI notifications from debug logging and provides a clean API. TOAST POSITIONS: - top-right: Top-right corner (default) - top-left: Top-left corner - top-center: Top-center - bottom-right: Bottom-right corner - bottom-left: Bottom-left corner - bottom-center: Bottom-center TOAST TYPES: - success: Green checkmark, 3s duration - error: Red X, 5s duration - warning: Yellow warning, 4s duration - info: Blue info, 3s duration - loading: Gray spinner, indefinite (must be manually dismissed) TOAST LIFECYCLE: 1. show(options): Creates toast element and appends to container 2. Animate in: Slide-in animation based on position 3. Display: Shows for duration (or indefinite) 4. Animate out: Slide-out animation 5. Remove: Element removed from DOM TOAST STRUCTURE: - Container: Fixed-position div at specified position - Toast Element: Individual toast with type styling - Icon: Type-specific icon (✓, ✕, ⚠, ℹ, ⟳) - Content: Title and optional description - Close Button: X button to dismiss manually - Progress Bar: Optional countdown indicator AUTO-DISMISS: - maxToasts: Maximum concurrent toasts (default: 5) - defaultDuration: Default display time (default: 4000ms) - Oldest toasts are dismissed when limit is reached - Loading toasts have indefinite duration (duration: 0) ANIMATIONS: - Slide-in/out based on position - Fade effect for smooth transitions - CSS transitions defined in Toast.css CONVENIENCE METHODS: - success(message, options): Show success toast - error(message, options): Show error toast - warning(message, options): Show warning toast - info(message, options): Show info toast - loading(message, options): Show loading toast GLOBAL SINGLETON: - Toast.initialize() creates global singleton - Toast.show() uses global singleton - Used by NotificationSystem and widget gallery USAGE: const manager = new ToastManager({ position: 'top-right' }); manager.success('Operation completed'); manager.error('Failed to save', { duration: 6000 }); // Or use global singleton Toast.initialize(); Toast.show('Hello world', 'info');","exportCount":2}
{"schemaVersion":1,"modulePath":"plauna/reference/ui/ToastManager.md","moduleTitle":"ui/ToastManager","source":"plauna/ui/ToastManager.js","import":"/plauna/ui/ToastManager.js","sourceHash":"fbadb905c8ae3017f1d9de2c5a4e55a056a720265d9d2b55cba49ea3bedd9156","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/ui/ToastManager.js#0000:ToastManager","exportIndex":0,"name":"ToastManager","kind":"class","signature":"class ToastManager","summary":"ToastManager - Unified toast notification system. Toast pattern: - Fixed-position container at specified position - Type-specific styling (success, error, warning, info, loading) - Auto-dismiss with configurable duration - Slide-in/out animations based on position - Max concurrent toast limit with FIFO dismissal Lifecycle: 1. show(): Creates toast and appends to container 2. Animate in: Slide-in based on position 3. Display: Shows for duration (or indefinite for loading) 4. Animate out: Slide-out animation 5. Remove: Element removed from DOM"}
{"schemaVersion":1,"modulePath":"plauna/reference/ui/ToastManager.md","moduleTitle":"ui/ToastManager","source":"plauna/ui/ToastManager.js","import":"/plauna/ui/ToastManager.js","sourceHash":"fbadb905c8ae3017f1d9de2c5a4e55a056a720265d9d2b55cba49ea3bedd9156","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/ui/ToastManager.js#0001:Toast","exportIndex":1,"name":"Toast","kind":"constant","signature":"Toast","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/ui/WidgetGallery.md","moduleTitle":"ui/WidgetGallery","source":"plauna/ui/WidgetGallery.js","import":"/plauna/ui/WidgetGallery.js","sourceHash":"a605fa68d6951ce53a71dfc99973a61e994022937b585f3e3af836aaa197bfe2","subsystem":"plauna","recordType":"api-module","id":"module:plauna/ui/WidgetGallery.js","title":"ui/WidgetGallery","summary":"============================================================================ WidgetGallery - Storybook-Style Widget Showcase ============================================================================ WidgetGallery is a Storybook-like gallery that renders real interactive widget instances from widget.stories() definitions. It's used for development and documentation of Plauna widgets. RENDERING STRATEGY: - Uses widgetRenderer.render() directly to bypass the broken require() in create() - Instantiates widgets with new WidgetClass(id, storyOptions) - Renders each widget to DOM in preview cells - Adds interactive state badges (on/off/animating/sending toast) - Wires click/change/input events to emit toast notifications GALLERY STRUCTURE: - Header: Title and theme selector dropdown - Tabs: Category navigation (Primitive, Input, Form, Layout, Navigation, etc.) - Content Area: Grid of widget story previews - Story Cell: Widget preview + label + state badges STORY PATTERN: Each widget defines static stories() returning named configurations: static stories() { return { 'Story Name': { variant: 'primary', size: 'md' }, 'Another Story': { disabled: true } }; } SPECIAL HANDLING: - Tooltips: Appended to document.body for correct overlay positioning - Toasts: Call show() immediately for visible demos - State Badges: Display on/off/animating/sending-toast indicators - Interactive Events: Click/change/input emit toast notifications DATA ATTRIBUTES: - data-widget: Widget ID (e.g., 'button', 'badge') - data-variant: Story variant name - data-size: Story size name - data-story: Story name TOAST INTEGRATION: - Uses global Toast from ToastManager - Emits toasts on widget interactions for immediate feedback - Toast position defaults to top-right THEME SELECTOR: - Async dropdown in header - Calls shell.setTheme() on change - Refreshes gallery on theme change","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/ui/WidgetGallery.md","moduleTitle":"ui/WidgetGallery","source":"plauna/ui/WidgetGallery.js","import":"/plauna/ui/WidgetGallery.js","sourceHash":"a605fa68d6951ce53a71dfc99973a61e994022937b585f3e3af836aaa197bfe2","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/ui/WidgetGallery.js#0000:WidgetGallery","exportIndex":0,"name":"WidgetGallery","kind":"class","signature":"class WidgetGallery","summary":"WidgetGallery - Interactive widget showcase. Gallery architecture: - Storybook-like interface for widget documentation - Renders real interactive widget instances - Category-based navigation with tabs - Interactive state badges (on/off/animating/sending toast) - Toast integration for immediate feedback"}
{"schemaVersion":1,"modulePath":"plauna/reference/ui/WidgetShowcase.md","moduleTitle":"ui/WidgetShowcase","source":"plauna/ui/WidgetShowcase.js","import":"/plauna/ui/WidgetShowcase.js","sourceHash":"5efcd45d7bcf75ecdfdecee60dd5b6aaeacb7d888c51d8ea43ecc5e7a8e045c0","subsystem":"plauna","recordType":"api-module","id":"module:plauna/ui/WidgetShowcase.js","title":"ui/WidgetShowcase","summary":"WidgetShowcase - Display system for widget examples and variants. Architecture: - Renders individual widget examples with state variations - Creates structured showcase sections with title, description, and variants - Supports variant grids, state grids, size grids, and color grids - Uses PlaunaTextService for internationalization - Returns UINode trees for integration with Plauna rendering Showcase structure: - Container: Card-like container with title and description - Variants grid: Auto-fit grid for widget variants - States grid: Grid for different widget states (hover, active, disabled) - Size grid: Grid for different widget sizes - Color grid: Grid for different color variants","exportCount":2}
{"schemaVersion":1,"modulePath":"plauna/reference/ui/WidgetShowcase.md","moduleTitle":"ui/WidgetShowcase","source":"plauna/ui/WidgetShowcase.js","import":"/plauna/ui/WidgetShowcase.js","sourceHash":"5efcd45d7bcf75ecdfdecee60dd5b6aaeacb7d888c51d8ea43ecc5e7a8e045c0","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/ui/WidgetShowcase.js#0000:WidgetShowcase","exportIndex":0,"name":"WidgetShowcase","kind":"class","signature":"class WidgetShowcase","summary":"WidgetShowcase - Widget example renderer. Showcase pattern: - Creates structured sections for widget documentation - Renders variants, states, sizes, and colors in grids - Returns UINode trees for Plauna rendering - Supports optional interactive mode"}
{"schemaVersion":1,"modulePath":"plauna/reference/ui/WidgetShowcase.md","moduleTitle":"ui/WidgetShowcase","source":"plauna/ui/WidgetShowcase.js","import":"/plauna/ui/WidgetShowcase.js","sourceHash":"5efcd45d7bcf75ecdfdecee60dd5b6aaeacb7d888c51d8ea43ecc5e7a8e045c0","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/ui/WidgetShowcase.js#0001:widgetShowcase","exportIndex":1,"name":"widgetShowcase","kind":"constant","signature":"widgetShowcase","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/DataViews/Card.md","moduleTitle":"widgets/DataViews/Card","source":"plauna/widgets/DataViews/Card.js","import":"/plauna/widgets/DataViews/Card.js","sourceHash":"95df51e3fd53814969e3dbf5bedc6780593e54d542be8a932e8346d380c2f97b","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/DataViews/Card.js","title":"widgets/DataViews/Card","summary":"Card - Flexible content container widget for Plauna Provides header, body, and footer slots with variant system","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/DataViews/Card.md","moduleTitle":"widgets/DataViews/Card","source":"plauna/widgets/DataViews/Card.js","import":"/plauna/widgets/DataViews/Card.js","sourceHash":"95df51e3fd53814969e3dbf5bedc6780593e54d542be8a932e8346d380c2f97b","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/DataViews/Card.js#0000:Card","exportIndex":0,"name":"Card","kind":"class","signature":"class Card extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/DataViews/List.md","moduleTitle":"widgets/DataViews/List","source":"plauna/widgets/DataViews/List.js","import":"/plauna/widgets/DataViews/List.js","sourceHash":"7179173832d04fc732f1a581ab1aeb1e266fc7d580795b24a54c676949296b75","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/DataViews/List.js","title":"widgets/DataViews/List","summary":"List - Basic list widget for Plauna Provides list functionality with multiple variants and states","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/DataViews/List.md","moduleTitle":"widgets/DataViews/List","source":"plauna/widgets/DataViews/List.js","import":"/plauna/widgets/DataViews/List.js","sourceHash":"7179173832d04fc732f1a581ab1aeb1e266fc7d580795b24a54c676949296b75","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/DataViews/List.js#0000:List","exportIndex":0,"name":"List","kind":"class","signature":"class List extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/DataViews/ListView.md","moduleTitle":"widgets/DataViews/ListView","source":"plauna/widgets/DataViews/ListView.js","import":"/plauna/widgets/DataViews/ListView.js","sourceHash":"47c337861bcddd225ec68da2d12665a6b233247482179c6dcb275915da2ae5a6","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/DataViews/ListView.js","title":"widgets/DataViews/ListView","summary":"ListView - Data display widget for Plauna Provides virtualized list rendering with selection and sorting","exportCount":2}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/DataViews/ListView.md","moduleTitle":"widgets/DataViews/ListView","source":"plauna/widgets/DataViews/ListView.js","import":"/plauna/widgets/DataViews/ListView.js","sourceHash":"47c337861bcddd225ec68da2d12665a6b233247482179c6dcb275915da2ae5a6","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/DataViews/ListView.js#0000:ListView","exportIndex":0,"name":"ListView","kind":"class","signature":"class ListView extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/DataViews/ListView.md","moduleTitle":"widgets/DataViews/ListView","source":"plauna/widgets/DataViews/ListView.js","import":"/plauna/widgets/DataViews/ListView.js","sourceHash":"47c337861bcddd225ec68da2d12665a6b233247482179c6dcb275915da2ae5a6","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/DataViews/ListView.js#0001:ListViewFactory","exportIndex":1,"name":"ListViewFactory","kind":"constant","signature":"ListViewFactory","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/DataViews/Table.md","moduleTitle":"widgets/DataViews/Table","source":"plauna/widgets/DataViews/Table.js","import":"/plauna/widgets/DataViews/Table.js","sourceHash":"11472cb7df367c17615b052536649324adee2520ca32a74cbd7922783843e288","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/DataViews/Table.js","title":"widgets/DataViews/Table","summary":"Table - Data table widget for Plauna Provides table functionality with sorting, filtering, and pagination","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/DataViews/Table.md","moduleTitle":"widgets/DataViews/Table","source":"plauna/widgets/DataViews/Table.js","import":"/plauna/widgets/DataViews/Table.js","sourceHash":"11472cb7df367c17615b052536649324adee2520ca32a74cbd7922783843e288","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/DataViews/Table.js#0000:Table","exportIndex":0,"name":"Table","kind":"class","signature":"class Table extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/DataViews/Tree.md","moduleTitle":"widgets/DataViews/Tree","source":"plauna/widgets/DataViews/Tree.js","import":"/plauna/widgets/DataViews/Tree.js","sourceHash":"02b9d9721468a8d9491d03fed5e7750e3082094971d81742fbd5a405dd8689cc","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/DataViews/Tree.js","title":"widgets/DataViews/Tree","summary":"Tree - Hierarchical data display widget for Plauna Provides tree functionality with expand/collapse and navigation","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/DataViews/Tree.md","moduleTitle":"widgets/DataViews/Tree","source":"plauna/widgets/DataViews/Tree.js","import":"/plauna/widgets/DataViews/Tree.js","sourceHash":"02b9d9721468a8d9491d03fed5e7750e3082094971d81742fbd5a405dd8689cc","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/DataViews/Tree.js#0000:Tree","exportIndex":0,"name":"Tree","kind":"class","signature":"class Tree extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/DataViews/index.md","moduleTitle":"widgets/DataViews/index","source":"plauna/widgets/DataViews/index.js","import":"/plauna/widgets/DataViews/index.js","sourceHash":"15766cbe52c54194b3e93b81837e7bf60580a77964b4890a970d9844a97dd6cd","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/DataViews/index.js","title":"widgets/DataViews/index","summary":"Data Views Widgets Category Data display and visualization widgets","exportCount":4}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/DataViews/index.md","moduleTitle":"widgets/DataViews/index","source":"plauna/widgets/DataViews/index.js","import":"/plauna/widgets/DataViews/index.js","sourceHash":"15766cbe52c54194b3e93b81837e7bf60580a77964b4890a970d9844a97dd6cd","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/DataViews/index.js#0000:getDataviewsWidget","exportIndex":0,"name":"getDataviewsWidget","kind":"function","signature":"getDataviewsWidget(id)","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/DataViews/index.md","moduleTitle":"widgets/DataViews/index","source":"plauna/widgets/DataViews/index.js","import":"/plauna/widgets/DataViews/index.js","sourceHash":"15766cbe52c54194b3e93b81837e7bf60580a77964b4890a970d9844a97dd6cd","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/DataViews/index.js#0001:getAllDataviewsWidgets","exportIndex":1,"name":"getAllDataviewsWidgets","kind":"function","signature":"getAllDataviewsWidgets()","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/DataViews/index.md","moduleTitle":"widgets/DataViews/index","source":"plauna/widgets/DataViews/index.js","import":"/plauna/widgets/DataViews/index.js","sourceHash":"15766cbe52c54194b3e93b81837e7bf60580a77964b4890a970d9844a97dd6cd","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/DataViews/index.js#0002:dataviewsWidgets","exportIndex":2,"name":"dataviewsWidgets","kind":"constant","signature":"dataviewsWidgets","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/DataViews/index.md","moduleTitle":"widgets/DataViews/index","source":"plauna/widgets/DataViews/index.js","import":"/plauna/widgets/DataViews/index.js","sourceHash":"15766cbe52c54194b3e93b81837e7bf60580a77964b4890a970d9844a97dd6cd","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/DataViews/index.js#0003:dataviewsWidgetRegistry","exportIndex":3,"name":"dataviewsWidgetRegistry","kind":"constant","signature":"dataviewsWidgetRegistry","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Feedback/Alert.md","moduleTitle":"widgets/Feedback/Alert","source":"plauna/widgets/Feedback/Alert.js","import":"/plauna/widgets/Feedback/Alert.js","sourceHash":"a965f4c964e3d7978e59239a6c52fcaf926bda2d2f7e92b571fad0cc8d43ef10","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Feedback/Alert.js","title":"widgets/Feedback/Alert","summary":"Alert - Alert message widget for Plauna Provides alert functionality with multiple variants and dismissible options","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Feedback/Alert.md","moduleTitle":"widgets/Feedback/Alert","source":"plauna/widgets/Feedback/Alert.js","import":"/plauna/widgets/Feedback/Alert.js","sourceHash":"a965f4c964e3d7978e59239a6c52fcaf926bda2d2f7e92b571fad0cc8d43ef10","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Feedback/Alert.js#0000:Alert","exportIndex":0,"name":"Alert","kind":"class","signature":"class Alert extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Feedback/EmptyState.md","moduleTitle":"widgets/Feedback/EmptyState","source":"plauna/widgets/Feedback/EmptyState.js","import":"/plauna/widgets/Feedback/EmptyState.js","sourceHash":"95a9f99c3e6569694107181b6ec8fb499567c0ce0e9c6dad0152a5de8e03648b","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Feedback/EmptyState.js","title":"widgets/Feedback/EmptyState","summary":"EmptyState - Empty state widget for Plauna Provides empty state functionality with multiple variants and content options","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Feedback/EmptyState.md","moduleTitle":"widgets/Feedback/EmptyState","source":"plauna/widgets/Feedback/EmptyState.js","import":"/plauna/widgets/Feedback/EmptyState.js","sourceHash":"95a9f99c3e6569694107181b6ec8fb499567c0ce0e9c6dad0152a5de8e03648b","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Feedback/EmptyState.js#0000:EmptyState","exportIndex":0,"name":"EmptyState","kind":"class","signature":"class EmptyState extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Feedback/Spinner.md","moduleTitle":"widgets/Feedback/Spinner","source":"plauna/widgets/Feedback/Spinner.js","import":"/plauna/widgets/Feedback/Spinner.js","sourceHash":"d35ec361c28127b9415875d3910d24822cdbbd990b570109473a2af2e8a322cd","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Feedback/Spinner.js","title":"widgets/Feedback/Spinner","summary":"Spinner - Loading spinner widget for Plauna Provides spinner functionality with multiple variants and sizes","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Feedback/Spinner.md","moduleTitle":"widgets/Feedback/Spinner","source":"plauna/widgets/Feedback/Spinner.js","import":"/plauna/widgets/Feedback/Spinner.js","sourceHash":"d35ec361c28127b9415875d3910d24822cdbbd990b570109473a2af2e8a322cd","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Feedback/Spinner.js#0000:Spinner","exportIndex":0,"name":"Spinner","kind":"class","signature":"class Spinner extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Feedback/Status.md","moduleTitle":"widgets/Feedback/Status","source":"plauna/widgets/Feedback/Status.js","import":"/plauna/widgets/Feedback/Status.js","sourceHash":"75b1b49fddcdb22a79933c4c32de4d14edd0efddc6a3c15f5a4254fcdd3805ab","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Feedback/Status.js","title":"widgets/Feedback/Status","summary":"Status - Status indicator widget for Plauna Provides status functionality with multiple variants and sizes","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Feedback/Status.md","moduleTitle":"widgets/Feedback/Status","source":"plauna/widgets/Feedback/Status.js","import":"/plauna/widgets/Feedback/Status.js","sourceHash":"75b1b49fddcdb22a79933c4c32de4d14edd0efddc6a3c15f5a4254fcdd3805ab","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Feedback/Status.js#0000:Status","exportIndex":0,"name":"Status","kind":"class","signature":"class Status extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Feedback/Toast.md","moduleTitle":"widgets/Feedback/Toast","source":"plauna/widgets/Feedback/Toast.js","import":"/plauna/widgets/Feedback/Toast.js","sourceHash":"c98a5a42372a973ce479854944e8907d144ff3b84c110f2e3620b951b6ace685","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Feedback/Toast.js","title":"widgets/Feedback/Toast","summary":"Toast - Notification toast widget for Plauna Provides toast functionality with multiple variants and auto-dismiss","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Feedback/Toast.md","moduleTitle":"widgets/Feedback/Toast","source":"plauna/widgets/Feedback/Toast.js","import":"/plauna/widgets/Feedback/Toast.js","sourceHash":"c98a5a42372a973ce479854944e8907d144ff3b84c110f2e3620b951b6ace685","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Feedback/Toast.js#0000:Toast","exportIndex":0,"name":"Toast","kind":"class","signature":"class Toast extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Feedback/index.md","moduleTitle":"widgets/Feedback/index","source":"plauna/widgets/Feedback/index.js","import":"/plauna/widgets/Feedback/index.js","sourceHash":"5432cd012c07fcce204741f64ae9d1592eec230fb57c8a05c49bf7acdd8f7095","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Feedback/index.js","title":"widgets/Feedback/index","summary":"Feedback Widgets Category User feedback and notification widgets","exportCount":4}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Feedback/index.md","moduleTitle":"widgets/Feedback/index","source":"plauna/widgets/Feedback/index.js","import":"/plauna/widgets/Feedback/index.js","sourceHash":"5432cd012c07fcce204741f64ae9d1592eec230fb57c8a05c49bf7acdd8f7095","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Feedback/index.js#0000:getFeedbackWidget","exportIndex":0,"name":"getFeedbackWidget","kind":"function","signature":"getFeedbackWidget(id)","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Feedback/index.md","moduleTitle":"widgets/Feedback/index","source":"plauna/widgets/Feedback/index.js","import":"/plauna/widgets/Feedback/index.js","sourceHash":"5432cd012c07fcce204741f64ae9d1592eec230fb57c8a05c49bf7acdd8f7095","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Feedback/index.js#0001:getAllFeedbackWidgets","exportIndex":1,"name":"getAllFeedbackWidgets","kind":"function","signature":"getAllFeedbackWidgets()","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Feedback/index.md","moduleTitle":"widgets/Feedback/index","source":"plauna/widgets/Feedback/index.js","import":"/plauna/widgets/Feedback/index.js","sourceHash":"5432cd012c07fcce204741f64ae9d1592eec230fb57c8a05c49bf7acdd8f7095","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Feedback/index.js#0002:feedbackWidgets","exportIndex":2,"name":"feedbackWidgets","kind":"constant","signature":"feedbackWidgets","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Feedback/index.md","moduleTitle":"widgets/Feedback/index","source":"plauna/widgets/Feedback/index.js","import":"/plauna/widgets/Feedback/index.js","sourceHash":"5432cd012c07fcce204741f64ae9d1592eec230fb57c8a05c49bf7acdd8f7095","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Feedback/index.js#0003:feedbackWidgetRegistry","exportIndex":3,"name":"feedbackWidgetRegistry","kind":"constant","signature":"feedbackWidgetRegistry","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Form/Checkbox.md","moduleTitle":"widgets/Form/Checkbox","source":"plauna/widgets/Form/Checkbox.js","import":"/plauna/widgets/Form/Checkbox.js","sourceHash":"819915f03a8eebe46dfd977356cb11225f0cdfa2370f9fc094fd4bb7b358e906","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Form/Checkbox.js","title":"widgets/Form/Checkbox","summary":"Checkbox - Multi-select form control widget for Plauna Provides checkbox functionality with multiple states and variants","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Form/Checkbox.md","moduleTitle":"widgets/Form/Checkbox","source":"plauna/widgets/Form/Checkbox.js","import":"/plauna/widgets/Form/Checkbox.js","sourceHash":"819915f03a8eebe46dfd977356cb11225f0cdfa2370f9fc094fd4bb7b358e906","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Form/Checkbox.js#0000:Checkbox","exportIndex":0,"name":"Checkbox","kind":"class","signature":"class Checkbox extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Form/Input.md","moduleTitle":"widgets/Form/Input","source":"plauna/widgets/Form/Input.js","import":"/plauna/widgets/Form/Input.js","sourceHash":"0190046b22177822c18b1b9b9ef06356211902f370f1f250ec0ab69e07b3e720","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Form/Input.js","title":"widgets/Form/Input","summary":"Input - Form input widget for Plauna Provides text input with validation and styling options","exportCount":2}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Form/Input.md","moduleTitle":"widgets/Form/Input","source":"plauna/widgets/Form/Input.js","import":"/plauna/widgets/Form/Input.js","sourceHash":"0190046b22177822c18b1b9b9ef06356211902f370f1f250ec0ab69e07b3e720","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Form/Input.js#0000:Input","exportIndex":0,"name":"Input","kind":"class","signature":"class Input extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Form/Input.md","moduleTitle":"widgets/Form/Input","source":"plauna/widgets/Form/Input.js","import":"/plauna/widgets/Form/Input.js","sourceHash":"0190046b22177822c18b1b9b9ef06356211902f370f1f250ec0ab69e07b3e720","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Form/Input.js#0001:InputFactory","exportIndex":1,"name":"InputFactory","kind":"constant","signature":"InputFactory","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Form/Radio.md","moduleTitle":"widgets/Form/Radio","source":"plauna/widgets/Form/Radio.js","import":"/plauna/widgets/Form/Radio.js","sourceHash":"cd7c6ebce5e5a7d56d1e853099a336f2000584169d9e7c40450230c52068366e","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Form/Radio.js","title":"widgets/Form/Radio","summary":"Radio - Single-select form control widget for Plauna Provides radio button functionality with multiple states and variants","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Form/Radio.md","moduleTitle":"widgets/Form/Radio","source":"plauna/widgets/Form/Radio.js","import":"/plauna/widgets/Form/Radio.js","sourceHash":"cd7c6ebce5e5a7d56d1e853099a336f2000584169d9e7c40450230c52068366e","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Form/Radio.js#0000:Radio","exportIndex":0,"name":"Radio","kind":"class","signature":"class Radio extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Form/Rating.md","moduleTitle":"widgets/Form/Rating","source":"plauna/widgets/Form/Rating.js","import":"/plauna/widgets/Form/Rating.js","sourceHash":"d0e618dda344337e0d8da801dfd0e91af4431de890a256d6196ad91592c2ad83","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Form/Rating.js","title":"widgets/Form/Rating","summary":"Rating - Star rating widget for Plauna Provides rating functionality with multiple states and variants","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Form/Rating.md","moduleTitle":"widgets/Form/Rating","source":"plauna/widgets/Form/Rating.js","import":"/plauna/widgets/Form/Rating.js","sourceHash":"d0e618dda344337e0d8da801dfd0e91af4431de890a256d6196ad91592c2ad83","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Form/Rating.js#0000:Rating","exportIndex":0,"name":"Rating","kind":"class","signature":"class Rating extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Form/Select.md","moduleTitle":"widgets/Form/Select","source":"plauna/widgets/Form/Select.js","import":"/plauna/widgets/Form/Select.js","sourceHash":"6758951b44ac9478eb7cded71670b56ff7ce3cc61a1f6d5db5bfa0dc7d3ec4b9","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Form/Select.js","title":"widgets/Form/Select","summary":"Select - Multi-option selection widget for Plauna Provides dropdown functionality with search and keyboard navigation","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Form/Select.md","moduleTitle":"widgets/Form/Select","source":"plauna/widgets/Form/Select.js","import":"/plauna/widgets/Form/Select.js","sourceHash":"6758951b44ac9478eb7cded71670b56ff7ce3cc61a1f6d5db5bfa0dc7d3ec4b9","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Form/Select.js#0000:Select","exportIndex":0,"name":"Select","kind":"class","signature":"class Select extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Form/Slider.md","moduleTitle":"widgets/Form/Slider","source":"plauna/widgets/Form/Slider.js","import":"/plauna/widgets/Form/Slider.js","sourceHash":"006c32fca8ede1237bb0b3f4471ee4e76ddec4d93ef7755d2182ddbac3a7961d","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Form/Slider.js","title":"widgets/Form/Slider","summary":"Slider - Range selection widget for Plauna Provides slider functionality with multiple states and variants","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Form/Slider.md","moduleTitle":"widgets/Form/Slider","source":"plauna/widgets/Form/Slider.js","import":"/plauna/widgets/Form/Slider.js","sourceHash":"006c32fca8ede1237bb0b3f4471ee4e76ddec4d93ef7755d2182ddbac3a7961d","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Form/Slider.js#0000:Slider","exportIndex":0,"name":"Slider","kind":"class","signature":"class Slider extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Form/Switch.md","moduleTitle":"widgets/Form/Switch","source":"plauna/widgets/Form/Switch.js","import":"/plauna/widgets/Form/Switch.js","sourceHash":"fa900701f9e3cc04cefd9c1f925dc659cad0c0a991b9eca439aa172f77a162de","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Form/Switch.js","title":"widgets/Form/Switch","summary":"Switch - Binary on/off form control widget for Plauna Provides toggle functionality with multiple states and variants","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Form/Switch.md","moduleTitle":"widgets/Form/Switch","source":"plauna/widgets/Form/Switch.js","import":"/plauna/widgets/Form/Switch.js","sourceHash":"fa900701f9e3cc04cefd9c1f925dc659cad0c0a991b9eca439aa172f77a162de","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Form/Switch.js#0000:Switch","exportIndex":0,"name":"Switch","kind":"class","signature":"class Switch extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Form/Textarea.md","moduleTitle":"widgets/Form/Textarea","source":"plauna/widgets/Form/Textarea.js","import":"/plauna/widgets/Form/Textarea.js","sourceHash":"ca515ad55c5f048c6194308ec7fc493ace6a2390aa5a05ac2f68f5186f52cc39","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Form/Textarea.js","title":"widgets/Form/Textarea","summary":"Textarea - Multi-line text input widget for Plauna Provides textarea functionality with multiple states and variants","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Form/Textarea.md","moduleTitle":"widgets/Form/Textarea","source":"plauna/widgets/Form/Textarea.js","import":"/plauna/widgets/Form/Textarea.js","sourceHash":"ca515ad55c5f048c6194308ec7fc493ace6a2390aa5a05ac2f68f5186f52cc39","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Form/Textarea.js#0000:Textarea","exportIndex":0,"name":"Textarea","kind":"class","signature":"class Textarea extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Form/index.md","moduleTitle":"widgets/Form/index","source":"plauna/widgets/Form/index.js","import":"/plauna/widgets/Form/index.js","sourceHash":"9dc6d8f5bc41aa1ad794286d3cc5e57177a5dc663ccdd90512e5fa39167b5061","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Form/index.js","title":"widgets/Form/index","summary":"Form Widgets Category Form elements and validation widgets","exportCount":4}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Form/index.md","moduleTitle":"widgets/Form/index","source":"plauna/widgets/Form/index.js","import":"/plauna/widgets/Form/index.js","sourceHash":"9dc6d8f5bc41aa1ad794286d3cc5e57177a5dc663ccdd90512e5fa39167b5061","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Form/index.js#0000:getFormWidget","exportIndex":0,"name":"getFormWidget","kind":"function","signature":"getFormWidget(id)","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Form/index.md","moduleTitle":"widgets/Form/index","source":"plauna/widgets/Form/index.js","import":"/plauna/widgets/Form/index.js","sourceHash":"9dc6d8f5bc41aa1ad794286d3cc5e57177a5dc663ccdd90512e5fa39167b5061","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Form/index.js#0001:getAllFormWidgets","exportIndex":1,"name":"getAllFormWidgets","kind":"function","signature":"getAllFormWidgets()","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Form/index.md","moduleTitle":"widgets/Form/index","source":"plauna/widgets/Form/index.js","import":"/plauna/widgets/Form/index.js","sourceHash":"9dc6d8f5bc41aa1ad794286d3cc5e57177a5dc663ccdd90512e5fa39167b5061","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Form/index.js#0002:formWidgets","exportIndex":2,"name":"formWidgets","kind":"constant","signature":"formWidgets","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Form/index.md","moduleTitle":"widgets/Form/index","source":"plauna/widgets/Form/index.js","import":"/plauna/widgets/Form/index.js","sourceHash":"9dc6d8f5bc41aa1ad794286d3cc5e57177a5dc663ccdd90512e5fa39167b5061","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Form/index.js#0003:formWidgetRegistry","exportIndex":3,"name":"formWidgetRegistry","kind":"constant","signature":"formWidgetRegistry","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Input/Button.md","moduleTitle":"widgets/Input/Button","source":"plauna/widgets/Input/Button.js","import":"/plauna/widgets/Input/Button.js","sourceHash":"a40c11eaca8a62d7bc592edd40cac718e5f14caf0710b0e876c709779d48590a","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Input/Button.js","title":"widgets/Input/Button","summary":"Button - Interactive button widget for Plauna Provides various button types, states, and accessibility","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Input/Button.md","moduleTitle":"widgets/Input/Button","source":"plauna/widgets/Input/Button.js","import":"/plauna/widgets/Input/Button.js","sourceHash":"a40c11eaca8a62d7bc592edd40cac718e5f14caf0710b0e876c709779d48590a","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Input/Button.js#0000:Button","exportIndex":0,"name":"Button","kind":"class","signature":"class Button extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Input/Color.md","moduleTitle":"widgets/Input/Color","source":"plauna/widgets/Input/Color.js","import":"/plauna/widgets/Input/Color.js","sourceHash":"0a4dd8695e09c9310926f9c422bafed65c2998f417e89e414a18ea8e43da8d1a","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Input/Color.js","title":"widgets/Input/Color","summary":"Color - Color picker widget for Plauna Provides color selection with various input formats","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Input/Color.md","moduleTitle":"widgets/Input/Color","source":"plauna/widgets/Input/Color.js","import":"/plauna/widgets/Input/Color.js","sourceHash":"0a4dd8695e09c9310926f9c422bafed65c2998f417e89e414a18ea8e43da8d1a","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Input/Color.js#0000:Color","exportIndex":0,"name":"Color","kind":"class","signature":"class Color extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Input/Date.md","moduleTitle":"widgets/Input/Date","source":"plauna/widgets/Input/Date.js","import":"/plauna/widgets/Input/Date.js","sourceHash":"c772506febfc28914d32ad8da2b4c5dd47c398bc229abd4065da73983f020599","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Input/Date.js","title":"widgets/Input/Date","summary":"Date - Date picker widget for Plauna Provides date selection with various formats and validation","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Input/Date.md","moduleTitle":"widgets/Input/Date","source":"plauna/widgets/Input/Date.js","import":"/plauna/widgets/Input/Date.js","sourceHash":"c772506febfc28914d32ad8da2b4c5dd47c398bc229abd4065da73983f020599","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Input/Date.js#0000:Date","exportIndex":0,"name":"Date","kind":"class","signature":"class Date extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Input/File.md","moduleTitle":"widgets/Input/File","source":"plauna/widgets/Input/File.js","import":"/plauna/widgets/Input/File.js","sourceHash":"51f0523ae0f9711d4453c9a9f6033f316c129900808481f915e7c8ee63f58082","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Input/File.js","title":"widgets/Input/File","summary":"File - File input widget for Plauna Provides file upload functionality with drag-and-drop support","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Input/File.md","moduleTitle":"widgets/Input/File","source":"plauna/widgets/Input/File.js","import":"/plauna/widgets/Input/File.js","sourceHash":"51f0523ae0f9711d4453c9a9f6033f316c129900808481f915e7c8ee63f58082","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Input/File.js#0000:File","exportIndex":0,"name":"File","kind":"class","signature":"class File extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Input/Input.md","moduleTitle":"widgets/Input/Input","source":"plauna/widgets/Input/Input.js","import":"/plauna/widgets/Input/Input.js","sourceHash":"04721512a09b1c84f10d129c05d8cff6144ea5cec841030f08a7bb6f2632e3ac","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Input/Input.js","title":"widgets/Input/Input","summary":"Input - Text input widget for Plauna Provides various input types with validation, states, and accessibility","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Input/Input.md","moduleTitle":"widgets/Input/Input","source":"plauna/widgets/Input/Input.js","import":"/plauna/widgets/Input/Input.js","sourceHash":"04721512a09b1c84f10d129c05d8cff6144ea5cec841030f08a7bb6f2632e3ac","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Input/Input.js#0000:Input","exportIndex":0,"name":"Input","kind":"class","signature":"class Input extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Input/Number.md","moduleTitle":"widgets/Input/Number","source":"plauna/widgets/Input/Number.js","import":"/plauna/widgets/Input/Number.js","sourceHash":"33b06919cfde38c05d648e791b71a94e8ebd137e75952d4bdcb39093af4fa305","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Input/Number.js","title":"widgets/Input/Number","summary":"Number - Number input widget for Plauna Provides numeric input with validation, controls, and formatting","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Input/Number.md","moduleTitle":"widgets/Input/Number","source":"plauna/widgets/Input/Number.js","import":"/plauna/widgets/Input/Number.js","sourceHash":"33b06919cfde38c05d648e791b71a94e8ebd137e75952d4bdcb39093af4fa305","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Input/Number.js#0000:Number","exportIndex":0,"name":"Number","kind":"class","signature":"class Number extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Input/Range.md","moduleTitle":"widgets/Input/Range","source":"plauna/widgets/Input/Range.js","import":"/plauna/widgets/Input/Range.js","sourceHash":"3b0fbe9c6b409487ffa7b30ed1efa750a4168e58cc1006c6d8318bede68b76bf","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Input/Range.js","title":"widgets/Input/Range","summary":"Range - Range slider widget for Plauna Provides range selection with various configurations","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Input/Range.md","moduleTitle":"widgets/Input/Range","source":"plauna/widgets/Input/Range.js","import":"/plauna/widgets/Input/Range.js","sourceHash":"3b0fbe9c6b409487ffa7b30ed1efa750a4168e58cc1006c6d8318bede68b76bf","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Input/Range.js#0000:Range","exportIndex":0,"name":"Range","kind":"class","signature":"class Range extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Input/Search.md","moduleTitle":"widgets/Input/Search","source":"plauna/widgets/Input/Search.js","import":"/plauna/widgets/Input/Search.js","sourceHash":"08dac219011fd432a1ce6ac1c540dfedf24c58c3d086b79bb2d1e2bffda2d9b8","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Input/Search.js","title":"widgets/Input/Search","summary":"Search - Search input widget for Plauna Provides search functionality with suggestions and filters","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Input/Search.md","moduleTitle":"widgets/Input/Search","source":"plauna/widgets/Input/Search.js","import":"/plauna/widgets/Input/Search.js","sourceHash":"08dac219011fd432a1ce6ac1c540dfedf24c58c3d086b79bb2d1e2bffda2d9b8","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Input/Search.js#0000:Search","exportIndex":0,"name":"Search","kind":"class","signature":"class Search extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Input/Search.new.md","moduleTitle":"widgets/Input/Search.new","source":"plauna/widgets/Input/Search.new.js","import":"/plauna/widgets/Input/Search.new.js","sourceHash":"43517bc2fee56a549e7a1ca9c76e4db810fcd1c6d55469c62ebfc51b855d3107","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Input/Search.new.js","title":"widgets/Input/Search.new","summary":"Search - Search input widget for Plauna Provides search functionality with suggestions and filters Refactored to follow the new WidgetItem pattern while maintaining UINode compatibility","exportCount":2}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Input/Search.new.md","moduleTitle":"widgets/Input/Search.new","source":"plauna/widgets/Input/Search.new.js","import":"/plauna/widgets/Input/Search.new.js","sourceHash":"43517bc2fee56a549e7a1ca9c76e4db810fcd1c6d55469c62ebfc51b855d3107","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Input/Search.new.js#0000:Search","exportIndex":0,"name":"Search","kind":"class","signature":"class Search extends WidgetItem","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Input/Search.new.md","moduleTitle":"widgets/Input/Search.new","source":"plauna/widgets/Input/Search.new.js","import":"/plauna/widgets/Input/Search.new.js","sourceHash":"43517bc2fee56a549e7a1ca9c76e4db810fcd1c6d55469c62ebfc51b855d3107","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Input/Search.new.js#0001:SearchUINode","exportIndex":1,"name":"SearchUINode","kind":"re-export","signature":"SearchUINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Input/Tag.md","moduleTitle":"widgets/Input/Tag","source":"plauna/widgets/Input/Tag.js","import":"/plauna/widgets/Input/Tag.js","sourceHash":"2eea9ade75d2aae231e36921c63487fe3192d5aac13a3dc35486b29427db13f8","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Input/Tag.js","title":"widgets/Input/Tag","summary":"Tag - Tag input widget for Plauna Provides tag management with autocomplete and suggestions","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Input/Tag.md","moduleTitle":"widgets/Input/Tag","source":"plauna/widgets/Input/Tag.js","import":"/plauna/widgets/Input/Tag.js","sourceHash":"2eea9ade75d2aae231e36921c63487fe3192d5aac13a3dc35486b29427db13f8","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Input/Tag.js#0000:Tag","exportIndex":0,"name":"Tag","kind":"class","signature":"class Tag extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Input/Time.md","moduleTitle":"widgets/Input/Time","source":"plauna/widgets/Input/Time.js","import":"/plauna/widgets/Input/Time.js","sourceHash":"2bd5d54f9954aa1395c46078c31e61c5f4c4eeab7d2eb00ebd358debd4b6984b","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Input/Time.js","title":"widgets/Input/Time","summary":"Time - Time picker widget for Plauna Provides time selection with various formats and validation","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Input/Time.md","moduleTitle":"widgets/Input/Time","source":"plauna/widgets/Input/Time.js","import":"/plauna/widgets/Input/Time.js","sourceHash":"2bd5d54f9954aa1395c46078c31e61c5f4c4eeab7d2eb00ebd358debd4b6984b","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Input/Time.js#0000:Time","exportIndex":0,"name":"Time","kind":"class","signature":"class Time extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Input/Upload.md","moduleTitle":"widgets/Input/Upload","source":"plauna/widgets/Input/Upload.js","import":"/plauna/widgets/Input/Upload.js","sourceHash":"3f02ae8524884c5bd9bd39a6d4e76ec720909b8453dd1cd98d31d11769ecf0f3","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Input/Upload.js","title":"widgets/Input/Upload","summary":"Upload - File upload widget for Plauna Provides advanced file upload with drag-and-drop, progress, and preview","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Input/Upload.md","moduleTitle":"widgets/Input/Upload","source":"plauna/widgets/Input/Upload.js","import":"/plauna/widgets/Input/Upload.js","sourceHash":"3f02ae8524884c5bd9bd39a6d4e76ec720909b8453dd1cd98d31d11769ecf0f3","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Input/Upload.js#0000:Upload","exportIndex":0,"name":"Upload","kind":"class","signature":"class Upload extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Input/index.md","moduleTitle":"widgets/Input/index","source":"plauna/widgets/Input/index.js","import":"/plauna/widgets/Input/index.js","sourceHash":"eb86f67152f7609a10e8c93bd0c130ee71faca70443c7290fa288a15498d7fb5","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Input/index.js","title":"widgets/Input/index","summary":"Input Widgets Category User input and data entry widgets","exportCount":4}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Input/index.md","moduleTitle":"widgets/Input/index","source":"plauna/widgets/Input/index.js","import":"/plauna/widgets/Input/index.js","sourceHash":"eb86f67152f7609a10e8c93bd0c130ee71faca70443c7290fa288a15498d7fb5","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Input/index.js#0000:getInputWidget","exportIndex":0,"name":"getInputWidget","kind":"function","signature":"getInputWidget(id)","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Input/index.md","moduleTitle":"widgets/Input/index","source":"plauna/widgets/Input/index.js","import":"/plauna/widgets/Input/index.js","sourceHash":"eb86f67152f7609a10e8c93bd0c130ee71faca70443c7290fa288a15498d7fb5","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Input/index.js#0001:getAllInputWidgets","exportIndex":1,"name":"getAllInputWidgets","kind":"function","signature":"getAllInputWidgets()","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Input/index.md","moduleTitle":"widgets/Input/index","source":"plauna/widgets/Input/index.js","import":"/plauna/widgets/Input/index.js","sourceHash":"eb86f67152f7609a10e8c93bd0c130ee71faca70443c7290fa288a15498d7fb5","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Input/index.js#0002:inputWidgets","exportIndex":2,"name":"inputWidgets","kind":"constant","signature":"inputWidgets","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Input/index.md","moduleTitle":"widgets/Input/index","source":"plauna/widgets/Input/index.js","import":"/plauna/widgets/Input/index.js","sourceHash":"eb86f67152f7609a10e8c93bd0c130ee71faca70443c7290fa288a15498d7fb5","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Input/index.js#0003:inputWidgetRegistry","exportIndex":3,"name":"inputWidgetRegistry","kind":"constant","signature":"inputWidgetRegistry","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Layout/Collapse.md","moduleTitle":"widgets/Layout/Collapse","source":"plauna/widgets/Layout/Collapse.js","import":"/plauna/widgets/Layout/Collapse.js","sourceHash":"2ab08c73c8180bdd5e7c663fc463f41bdf07c9e3ffea8d2cd1b2658dfd7dba67","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Layout/Collapse.js","title":"widgets/Layout/Collapse","summary":"Collapse - Collapsible content widget for Plauna Provides collapsible/expandable content areas with smooth animations","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Layout/Collapse.md","moduleTitle":"widgets/Layout/Collapse","source":"plauna/widgets/Layout/Collapse.js","import":"/plauna/widgets/Layout/Collapse.js","sourceHash":"2ab08c73c8180bdd5e7c663fc463f41bdf07c9e3ffea8d2cd1b2658dfd7dba67","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Layout/Collapse.js#0000:Collapse","exportIndex":0,"name":"Collapse","kind":"class","signature":"class Collapse extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Layout/Container.md","moduleTitle":"widgets/Layout/Container","source":"plauna/widgets/Layout/Container.js","import":"/plauna/widgets/Layout/Container.js","sourceHash":"c3b3a061522323f756f4713a26a62e455c1c5684c12a30d0cbfda57cd438c9f6","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Layout/Container.js","title":"widgets/Layout/Container","summary":"Container - Layout container widget for Plauna Provides flexible container with multiple variants and layouts","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Layout/Container.md","moduleTitle":"widgets/Layout/Container","source":"plauna/widgets/Layout/Container.js","import":"/plauna/widgets/Layout/Container.js","sourceHash":"c3b3a061522323f756f4713a26a62e455c1c5684c12a30d0cbfda57cd438c9f6","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Layout/Container.js#0000:Container","exportIndex":0,"name":"Container","kind":"class","signature":"class Container extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Layout/Divider.md","moduleTitle":"widgets/Layout/Divider","source":"plauna/widgets/Layout/Divider.js","import":"/plauna/widgets/Layout/Divider.js","sourceHash":"4de573bc862106b3554742a5ff9fb58ac6a70ffbfea3dad9f4f3e17d8dfd0a33","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Layout/Divider.js","title":"widgets/Layout/Divider","summary":"Divider - Visual separation widget for Plauna Provides orientation variants with text label support","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Layout/Divider.md","moduleTitle":"widgets/Layout/Divider","source":"plauna/widgets/Layout/Divider.js","import":"/plauna/widgets/Layout/Divider.js","sourceHash":"4de573bc862106b3554742a5ff9fb58ac6a70ffbfea3dad9f4f3e17d8dfd0a33","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Layout/Divider.js#0000:Divider","exportIndex":0,"name":"Divider","kind":"class","signature":"class Divider extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Layout/Grid.md","moduleTitle":"widgets/Layout/Grid","source":"plauna/widgets/Layout/Grid.js","import":"/plauna/widgets/Layout/Grid.js","sourceHash":"2945ef0528976abf5267d267c97452ef6f090edfb718a4c177ab532c5ec8877d","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Layout/Grid.js","title":"widgets/Layout/Grid","summary":"Grid - CSS Grid wrapper widget for Plauna Provides responsive breakpoints and template areas support","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Layout/Grid.md","moduleTitle":"widgets/Layout/Grid","source":"plauna/widgets/Layout/Grid.js","import":"/plauna/widgets/Layout/Grid.js","sourceHash":"2945ef0528976abf5267d267c97452ef6f090edfb718a4c177ab532c5ec8877d","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Layout/Grid.js#0000:Grid","exportIndex":0,"name":"Grid","kind":"class","signature":"class Grid extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Layout/HeaderFooter.md","moduleTitle":"widgets/Layout/HeaderFooter","source":"plauna/widgets/Layout/HeaderFooter.js","import":"/plauna/widgets/Layout/HeaderFooter.js","sourceHash":"4453cf7a8b1bfe32b4991e44f745240f85e8da481d4994e3ebc27ce233e9778d","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Layout/HeaderFooter.js","title":"widgets/Layout/HeaderFooter","summary":"HeaderFooter - Header and Footer widget for Plauna Provides semantic header and footer containers with comprehensive styling options","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Layout/HeaderFooter.md","moduleTitle":"widgets/Layout/HeaderFooter","source":"plauna/widgets/Layout/HeaderFooter.js","import":"/plauna/widgets/Layout/HeaderFooter.js","sourceHash":"4453cf7a8b1bfe32b4991e44f745240f85e8da481d4994e3ebc27ce233e9778d","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Layout/HeaderFooter.js#0000:HeaderFooter","exportIndex":0,"name":"HeaderFooter","kind":"class","signature":"class HeaderFooter extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Layout/Panel.md","moduleTitle":"widgets/Layout/Panel","source":"plauna/widgets/Layout/Panel.js","import":"/plauna/widgets/Layout/Panel.js","sourceHash":"982c93f890232d7c3fba6a147be32a1d09428b568859e02acbc6a8df995705a8","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Layout/Panel.js","title":"widgets/Layout/Panel","summary":"Panel - Content panel widget for Plauna Provides panel containers with various styles and configurations","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Layout/Panel.md","moduleTitle":"widgets/Layout/Panel","source":"plauna/widgets/Layout/Panel.js","import":"/plauna/widgets/Layout/Panel.js","sourceHash":"982c93f890232d7c3fba6a147be32a1d09428b568859e02acbc6a8df995705a8","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Layout/Panel.js#0000:Panel","exportIndex":0,"name":"Panel","kind":"class","signature":"class Panel extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Layout/Section.md","moduleTitle":"widgets/Layout/Section","source":"plauna/widgets/Layout/Section.js","import":"/plauna/widgets/Layout/Section.js","sourceHash":"0726a046425d99acde614321181e56e2461fd63851dd6a42d7c23748a8ea7148","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Layout/Section.js","title":"widgets/Layout/Section","summary":"Section - Content section widget for Plauna Provides semantic section containers with layout and styling options","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Layout/Section.md","moduleTitle":"widgets/Layout/Section","source":"plauna/widgets/Layout/Section.js","import":"/plauna/widgets/Layout/Section.js","sourceHash":"0726a046425d99acde614321181e56e2461fd63851dd6a42d7c23748a8ea7148","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Layout/Section.js#0000:Section","exportIndex":0,"name":"Section","kind":"class","signature":"class Section extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Layout/Spacer.md","moduleTitle":"widgets/Layout/Spacer","source":"plauna/widgets/Layout/Spacer.js","import":"/plauna/widgets/Layout/Spacer.js","sourceHash":"fba5b32f8d37f194ca3b8b1542b8aa1988fad048f0ded1f282c1728ff3420998","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Layout/Spacer.js","title":"widgets/Layout/Spacer","summary":"Spacer - Flexible spacing utility widget for Plauna Provides flexible sizing with token integration","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Layout/Spacer.md","moduleTitle":"widgets/Layout/Spacer","source":"plauna/widgets/Layout/Spacer.js","import":"/plauna/widgets/Layout/Spacer.js","sourceHash":"fba5b32f8d37f194ca3b8b1542b8aa1988fad048f0ded1f282c1728ff3420998","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Layout/Spacer.js#0000:Spacer","exportIndex":0,"name":"Spacer","kind":"class","signature":"class Spacer extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Layout/index.md","moduleTitle":"widgets/Layout/index","source":"plauna/widgets/Layout/index.js","import":"/plauna/widgets/Layout/index.js","sourceHash":"dab3d5c8c1ca62ca8efb6133b758b8309cacf082b0ec6f5d5757d10f9a7d4ae2","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Layout/index.js","title":"widgets/Layout/index","summary":"Layout Widgets Category Layout and container widgets","exportCount":4}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Layout/index.md","moduleTitle":"widgets/Layout/index","source":"plauna/widgets/Layout/index.js","import":"/plauna/widgets/Layout/index.js","sourceHash":"dab3d5c8c1ca62ca8efb6133b758b8309cacf082b0ec6f5d5757d10f9a7d4ae2","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Layout/index.js#0000:getLayoutWidget","exportIndex":0,"name":"getLayoutWidget","kind":"function","signature":"getLayoutWidget(id)","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Layout/index.md","moduleTitle":"widgets/Layout/index","source":"plauna/widgets/Layout/index.js","import":"/plauna/widgets/Layout/index.js","sourceHash":"dab3d5c8c1ca62ca8efb6133b758b8309cacf082b0ec6f5d5757d10f9a7d4ae2","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Layout/index.js#0001:getAllLayoutWidgets","exportIndex":1,"name":"getAllLayoutWidgets","kind":"function","signature":"getAllLayoutWidgets()","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Layout/index.md","moduleTitle":"widgets/Layout/index","source":"plauna/widgets/Layout/index.js","import":"/plauna/widgets/Layout/index.js","sourceHash":"dab3d5c8c1ca62ca8efb6133b758b8309cacf082b0ec6f5d5757d10f9a7d4ae2","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Layout/index.js#0002:layoutWidgets","exportIndex":2,"name":"layoutWidgets","kind":"constant","signature":"layoutWidgets","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Layout/index.md","moduleTitle":"widgets/Layout/index","source":"plauna/widgets/Layout/index.js","import":"/plauna/widgets/Layout/index.js","sourceHash":"dab3d5c8c1ca62ca8efb6133b758b8309cacf082b0ec6f5d5757d10f9a7d4ae2","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Layout/index.js#0003:layoutWidgetRegistry","exportIndex":3,"name":"layoutWidgetRegistry","kind":"constant","signature":"layoutWidgetRegistry","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Navigation/Breadcrumb.md","moduleTitle":"widgets/Navigation/Breadcrumb","source":"plauna/widgets/Navigation/Breadcrumb.js","import":"/plauna/widgets/Navigation/Breadcrumb.js","sourceHash":"1c50d63c3dc917e32c38b1f7bca1cdc1ec0816d16521a834294fda2683845c7a","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Navigation/Breadcrumb.js","title":"widgets/Navigation/Breadcrumb","summary":"Breadcrumb - Navigation hierarchy widget for Plauna Provides breadcrumb navigation with customizable separators","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Navigation/Breadcrumb.md","moduleTitle":"widgets/Navigation/Breadcrumb","source":"plauna/widgets/Navigation/Breadcrumb.js","import":"/plauna/widgets/Navigation/Breadcrumb.js","sourceHash":"1c50d63c3dc917e32c38b1f7bca1cdc1ec0816d16521a834294fda2683845c7a","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Navigation/Breadcrumb.js#0000:Breadcrumb","exportIndex":0,"name":"Breadcrumb","kind":"class","signature":"class Breadcrumb extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Navigation/Dropdown.md","moduleTitle":"widgets/Navigation/Dropdown","source":"plauna/widgets/Navigation/Dropdown.js","import":"/plauna/widgets/Navigation/Dropdown.js","sourceHash":"eab9709e664227ce58a808476fe3d0ead818bcbdcdf779010a30c0841a2e17c3","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Navigation/Dropdown.js","title":"widgets/Navigation/Dropdown","summary":"Dropdown - Context menu widget for Plauna Provides dropdown menus with keyboard navigation and accessibility","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Navigation/Dropdown.md","moduleTitle":"widgets/Navigation/Dropdown","source":"plauna/widgets/Navigation/Dropdown.js","import":"/plauna/widgets/Navigation/Dropdown.js","sourceHash":"eab9709e664227ce58a808476fe3d0ead818bcbdcdf779010a30c0841a2e17c3","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Navigation/Dropdown.js#0000:Dropdown","exportIndex":0,"name":"Dropdown","kind":"class","signature":"class Dropdown extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Navigation/Menu.md","moduleTitle":"widgets/Navigation/Menu","source":"plauna/widgets/Navigation/Menu.js","import":"/plauna/widgets/Navigation/Menu.js","sourceHash":"1ae886fcbae9f5da7ca9f434b53212ee3401f8fafdf33731e181f80bff33b405","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Navigation/Menu.js","title":"widgets/Navigation/Menu","summary":"Menu - Navigation menu widget for Plauna Provides menu functionality with multiple variants and states","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Navigation/Menu.md","moduleTitle":"widgets/Navigation/Menu","source":"plauna/widgets/Navigation/Menu.js","import":"/plauna/widgets/Navigation/Menu.js","sourceHash":"1ae886fcbae9f5da7ca9f434b53212ee3401f8fafdf33731e181f80bff33b405","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Navigation/Menu.js#0000:Menu","exportIndex":0,"name":"Menu","kind":"class","signature":"class Menu extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Navigation/Navbar.md","moduleTitle":"widgets/Navigation/Navbar","source":"plauna/widgets/Navigation/Navbar.js","import":"/plauna/widgets/Navigation/Navbar.js","sourceHash":"f514d8024ad40a509b4933f93f62e012be3e5cb5d9b20ea741e45a5bcaf99b90","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Navigation/Navbar.js","title":"widgets/Navigation/Navbar","summary":"Navbar - Navigation bar widget for Plauna Provides navbar functionality with multiple variants and layouts","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Navigation/Navbar.md","moduleTitle":"widgets/Navigation/Navbar","source":"plauna/widgets/Navigation/Navbar.js","import":"/plauna/widgets/Navigation/Navbar.js","sourceHash":"f514d8024ad40a509b4933f93f62e012be3e5cb5d9b20ea741e45a5bcaf99b90","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Navigation/Navbar.js#0000:Navbar","exportIndex":0,"name":"Navbar","kind":"class","signature":"class Navbar extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Navigation/Pagination.md","moduleTitle":"widgets/Navigation/Pagination","source":"plauna/widgets/Navigation/Pagination.js","import":"/plauna/widgets/Navigation/Pagination.js","sourceHash":"19afcb13f30c70edd85a96a17f59ad9100df46ea5e547560690b9a51ba41f99c","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Navigation/Pagination.js","title":"widgets/Navigation/Pagination","summary":"Pagination - Data navigation widget for Plauna Provides page controls with ellipsis and keyboard navigation","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Navigation/Pagination.md","moduleTitle":"widgets/Navigation/Pagination","source":"plauna/widgets/Navigation/Pagination.js","import":"/plauna/widgets/Navigation/Pagination.js","sourceHash":"19afcb13f30c70edd85a96a17f59ad9100df46ea5e547560690b9a51ba41f99c","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Navigation/Pagination.js#0000:Pagination","exportIndex":0,"name":"Pagination","kind":"class","signature":"class Pagination extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Navigation/Sidebar.md","moduleTitle":"widgets/Navigation/Sidebar","source":"plauna/widgets/Navigation/Sidebar.js","import":"/plauna/widgets/Navigation/Sidebar.js","sourceHash":"51c4dd1d8012380e96e21f055b15643745e52abb3c67e12b9891b6ef73982d06","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Navigation/Sidebar.js","title":"widgets/Navigation/Sidebar","summary":"Sidebar - Sidebar navigation widget for Plauna Provides sidebar functionality with multiple variants and states","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Navigation/Sidebar.md","moduleTitle":"widgets/Navigation/Sidebar","source":"plauna/widgets/Navigation/Sidebar.js","import":"/plauna/widgets/Navigation/Sidebar.js","sourceHash":"51c4dd1d8012380e96e21f055b15643745e52abb3c67e12b9891b6ef73982d06","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Navigation/Sidebar.js#0000:Sidebar","exportIndex":0,"name":"Sidebar","kind":"class","signature":"class Sidebar extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Navigation/Stepper.md","moduleTitle":"widgets/Navigation/Stepper","source":"plauna/widgets/Navigation/Stepper.js","import":"/plauna/widgets/Navigation/Stepper.js","sourceHash":"28b19486329eb5fc23f6c7663b2f74217f2a6483a6791b07f088b00bbf480125","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Navigation/Stepper.js","title":"widgets/Navigation/Stepper","summary":"Stepper - Step indicator widget for Plauna Provides stepper functionality with multiple variants and states","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Navigation/Stepper.md","moduleTitle":"widgets/Navigation/Stepper","source":"plauna/widgets/Navigation/Stepper.js","import":"/plauna/widgets/Navigation/Stepper.js","sourceHash":"28b19486329eb5fc23f6c7663b2f74217f2a6483a6791b07f088b00bbf480125","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Navigation/Stepper.js#0000:Stepper","exportIndex":0,"name":"Stepper","kind":"class","signature":"class Stepper extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Navigation/Tabs.md","moduleTitle":"widgets/Navigation/Tabs","source":"plauna/widgets/Navigation/Tabs.js","import":"/plauna/widgets/Navigation/Tabs.js","sourceHash":"c5d6441f13c343fefdec3fbe8c4c442c5ebc8383c7e4a4cacf4bd8ca03a73894","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Navigation/Tabs.js","title":"widgets/Navigation/Tabs","summary":"Tabs - Tab navigation widget for Plauna Provides tabbed interface with keyboard navigation and styling","exportCount":2}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Navigation/Tabs.md","moduleTitle":"widgets/Navigation/Tabs","source":"plauna/widgets/Navigation/Tabs.js","import":"/plauna/widgets/Navigation/Tabs.js","sourceHash":"c5d6441f13c343fefdec3fbe8c4c442c5ebc8383c7e4a4cacf4bd8ca03a73894","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Navigation/Tabs.js#0000:Tabs","exportIndex":0,"name":"Tabs","kind":"class","signature":"class Tabs extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Navigation/Tabs.md","moduleTitle":"widgets/Navigation/Tabs","source":"plauna/widgets/Navigation/Tabs.js","import":"/plauna/widgets/Navigation/Tabs.js","sourceHash":"c5d6441f13c343fefdec3fbe8c4c442c5ebc8383c7e4a4cacf4bd8ca03a73894","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Navigation/Tabs.js#0001:TabsFactory","exportIndex":1,"name":"TabsFactory","kind":"constant","signature":"TabsFactory","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Navigation/index.md","moduleTitle":"widgets/Navigation/index","source":"plauna/widgets/Navigation/index.js","import":"/plauna/widgets/Navigation/index.js","sourceHash":"28393120f06dc354de21fd15e935d717405e97b3e07b7dd407e5ce453e3de290","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Navigation/index.js","title":"widgets/Navigation/index","summary":"Navigation Widgets Category Navigation and menu widgets","exportCount":4}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Navigation/index.md","moduleTitle":"widgets/Navigation/index","source":"plauna/widgets/Navigation/index.js","import":"/plauna/widgets/Navigation/index.js","sourceHash":"28393120f06dc354de21fd15e935d717405e97b3e07b7dd407e5ce453e3de290","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Navigation/index.js#0000:getNavigationWidget","exportIndex":0,"name":"getNavigationWidget","kind":"function","signature":"getNavigationWidget(id)","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Navigation/index.md","moduleTitle":"widgets/Navigation/index","source":"plauna/widgets/Navigation/index.js","import":"/plauna/widgets/Navigation/index.js","sourceHash":"28393120f06dc354de21fd15e935d717405e97b3e07b7dd407e5ce453e3de290","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Navigation/index.js#0001:getAllNavigationWidgets","exportIndex":1,"name":"getAllNavigationWidgets","kind":"function","signature":"getAllNavigationWidgets()","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Navigation/index.md","moduleTitle":"widgets/Navigation/index","source":"plauna/widgets/Navigation/index.js","import":"/plauna/widgets/Navigation/index.js","sourceHash":"28393120f06dc354de21fd15e935d717405e97b3e07b7dd407e5ce453e3de290","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Navigation/index.js#0002:navigationWidgets","exportIndex":2,"name":"navigationWidgets","kind":"constant","signature":"navigationWidgets","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Navigation/index.md","moduleTitle":"widgets/Navigation/index","source":"plauna/widgets/Navigation/index.js","import":"/plauna/widgets/Navigation/index.js","sourceHash":"28393120f06dc354de21fd15e935d717405e97b3e07b7dd407e5ce453e3de290","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Navigation/index.js#0003:navigationWidgetRegistry","exportIndex":3,"name":"navigationWidgetRegistry","kind":"constant","signature":"navigationWidgetRegistry","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Primitive/Avatar.md","moduleTitle":"widgets/Primitive/Avatar","source":"plauna/widgets/Primitive/Avatar.js","import":"/plauna/widgets/Primitive/Avatar.js","sourceHash":"ef405346036184033d4d26029934550a068870ef98663b382b6db2e5c8e2f658","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Primitive/Avatar.js","title":"widgets/Primitive/Avatar","summary":"Avatar - User representation widget for Plauna Provides image, icon, and text fallback with status indicators","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Primitive/Avatar.md","moduleTitle":"widgets/Primitive/Avatar","source":"plauna/widgets/Primitive/Avatar.js","import":"/plauna/widgets/Primitive/Avatar.js","sourceHash":"ef405346036184033d4d26029934550a068870ef98663b382b6db2e5c8e2f658","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Primitive/Avatar.js#0000:Avatar","exportIndex":0,"name":"Avatar","kind":"class","signature":"class Avatar extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Primitive/Badge.md","moduleTitle":"widgets/Primitive/Badge","source":"plauna/widgets/Primitive/Badge.js","import":"/plauna/widgets/Primitive/Badge.js","sourceHash":"c04645c5bb48a3dce981bc68f9e2db633a57176985d2632dfd5dcc826804a0a2","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Primitive/Badge.js","title":"widgets/Primitive/Badge","summary":"Badge - Status indicator widget for Plauna Provides status indicators, counts, and labels with variants","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Primitive/Badge.md","moduleTitle":"widgets/Primitive/Badge","source":"plauna/widgets/Primitive/Badge.js","import":"/plauna/widgets/Primitive/Badge.js","sourceHash":"c04645c5bb48a3dce981bc68f9e2db633a57176985d2632dfd5dcc826804a0a2","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Primitive/Badge.js#0000:Badge","exportIndex":0,"name":"Badge","kind":"class","signature":"class Badge extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Primitive/Button.md","moduleTitle":"widgets/Primitive/Button","source":"plauna/widgets/Primitive/Button.js","import":"/plauna/widgets/Primitive/Button.js","sourceHash":"f9c92aa84595242316c83155015a9415b32a7060ad166d887bc27698e1038406","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Primitive/Button.js","title":"widgets/Primitive/Button","summary":"Button - Interactive button widget for Plauna Provides clickable button with styling, states, and event handling","exportCount":2}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Primitive/Button.md","moduleTitle":"widgets/Primitive/Button","source":"plauna/widgets/Primitive/Button.js","import":"/plauna/widgets/Primitive/Button.js","sourceHash":"f9c92aa84595242316c83155015a9415b32a7060ad166d887bc27698e1038406","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Primitive/Button.js#0000:Button","exportIndex":0,"name":"Button","kind":"class","signature":"class Button extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Primitive/Button.md","moduleTitle":"widgets/Primitive/Button","source":"plauna/widgets/Primitive/Button.js","import":"/plauna/widgets/Primitive/Button.js","sourceHash":"f9c92aa84595242316c83155015a9415b32a7060ad166d887bc27698e1038406","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Primitive/Button.js#0001:ButtonFactory","exportIndex":1,"name":"ButtonFactory","kind":"constant","signature":"ButtonFactory","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Primitive/Chip.md","moduleTitle":"widgets/Primitive/Chip","source":"plauna/widgets/Primitive/Chip.js","import":"/plauna/widgets/Primitive/Chip.js","sourceHash":"df938286c5ba7039573e9735d161be8aa57e92c8b01525db8cd74bb2a949f6bb","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Primitive/Chip.js","title":"widgets/Primitive/Chip","summary":"Chip/Tag - Removable tag widget for Plauna Provides chip functionality with multiple variants and states","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Primitive/Chip.md","moduleTitle":"widgets/Primitive/Chip","source":"plauna/widgets/Primitive/Chip.js","import":"/plauna/widgets/Primitive/Chip.js","sourceHash":"df938286c5ba7039573e9735d161be8aa57e92c8b01525db8cd74bb2a949f6bb","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Primitive/Chip.js#0000:Chip","exportIndex":0,"name":"Chip","kind":"class","signature":"class Chip extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Primitive/Modal.md","moduleTitle":"widgets/Primitive/Modal","source":"plauna/widgets/Primitive/Modal.js","import":"/plauna/widgets/Primitive/Modal.js","sourceHash":"4d78ac8ebd653538391dfa54b71742978ed51355c888a9306dded5868991a227","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Primitive/Modal.js","title":"widgets/Primitive/Modal","summary":"Modal - Overlay dialog widget for Plauna Provides modal dialogs with focus trapping, accessibility, and backdrop","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Primitive/Modal.md","moduleTitle":"widgets/Primitive/Modal","source":"plauna/widgets/Primitive/Modal.js","import":"/plauna/widgets/Primitive/Modal.js","sourceHash":"4d78ac8ebd653538391dfa54b71742978ed51355c888a9306dded5868991a227","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Primitive/Modal.js#0000:Modal","exportIndex":0,"name":"Modal","kind":"class","signature":"class Modal extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Primitive/Panel.md","moduleTitle":"widgets/Primitive/Panel","source":"plauna/widgets/Primitive/Panel.js","import":"/plauna/widgets/Primitive/Panel.js","sourceHash":"948eaeb3897d7faf0e4f86fa15b6ca43fb00ed1379833dc2fcb8381d38ce4bd6","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Primitive/Panel.js","title":"widgets/Primitive/Panel","summary":"Panel - Basic container widget for Plauna Provides a container for other UI elements with styling and layout options","exportCount":2}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Primitive/Panel.md","moduleTitle":"widgets/Primitive/Panel","source":"plauna/widgets/Primitive/Panel.js","import":"/plauna/widgets/Primitive/Panel.js","sourceHash":"948eaeb3897d7faf0e4f86fa15b6ca43fb00ed1379833dc2fcb8381d38ce4bd6","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Primitive/Panel.js#0000:Panel","exportIndex":0,"name":"Panel","kind":"class","signature":"class Panel extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Primitive/Panel.md","moduleTitle":"widgets/Primitive/Panel","source":"plauna/widgets/Primitive/Panel.js","import":"/plauna/widgets/Primitive/Panel.js","sourceHash":"948eaeb3897d7faf0e4f86fa15b6ca43fb00ed1379833dc2fcb8381d38ce4bd6","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Primitive/Panel.js#0001:PanelFactory","exportIndex":1,"name":"PanelFactory","kind":"constant","signature":"PanelFactory","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Primitive/Progress.md","moduleTitle":"widgets/Primitive/Progress","source":"plauna/widgets/Primitive/Progress.js","import":"/plauna/widgets/Primitive/Progress.js","sourceHash":"8a23205004a48e09cbea3f125b6b287843711b3b4768687027e61c95d21a39fd","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Primitive/Progress.js","title":"widgets/Primitive/Progress","summary":"Progress - Task completion indicator widget for Plauna Provides linear and circular progress indicators with multiple states","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Primitive/Progress.md","moduleTitle":"widgets/Primitive/Progress","source":"plauna/widgets/Primitive/Progress.js","import":"/plauna/widgets/Primitive/Progress.js","sourceHash":"8a23205004a48e09cbea3f125b6b287843711b3b4768687027e61c95d21a39fd","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Primitive/Progress.js#0000:Progress","exportIndex":0,"name":"Progress","kind":"class","signature":"class Progress extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Primitive/Skeleton.md","moduleTitle":"widgets/Primitive/Skeleton","source":"plauna/widgets/Primitive/Skeleton.js","import":"/plauna/widgets/Primitive/Skeleton.js","sourceHash":"238888bdd1e9a8a6eab57e03b657f5f636b7d850fb3468350654a8972b196243","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Primitive/Skeleton.js","title":"widgets/Primitive/Skeleton","summary":"Skeleton - Content loading placeholder widget for Plauna Provides loading placeholders with realistic shapes and shimmer animation","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Primitive/Skeleton.md","moduleTitle":"widgets/Primitive/Skeleton","source":"plauna/widgets/Primitive/Skeleton.js","import":"/plauna/widgets/Primitive/Skeleton.js","sourceHash":"238888bdd1e9a8a6eab57e03b657f5f636b7d850fb3468350654a8972b196243","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Primitive/Skeleton.js#0000:Skeleton","exportIndex":0,"name":"Skeleton","kind":"class","signature":"class Skeleton extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Primitive/Text.md","moduleTitle":"widgets/Primitive/Text","source":"plauna/widgets/Primitive/Text.js","import":"/plauna/widgets/Primitive/Text.js","sourceHash":"a9f00b2fd28138f74eea4a16308aa1f7b288c908be19c65c604a2270a42b3e20","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Primitive/Text.js","title":"widgets/Primitive/Text","summary":"Text - Basic text widget for Plauna Provides text rendering with styling and layout options","exportCount":2}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Primitive/Text.md","moduleTitle":"widgets/Primitive/Text","source":"plauna/widgets/Primitive/Text.js","import":"/plauna/widgets/Primitive/Text.js","sourceHash":"a9f00b2fd28138f74eea4a16308aa1f7b288c908be19c65c604a2270a42b3e20","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Primitive/Text.js#0000:Text","exportIndex":0,"name":"Text","kind":"class","signature":"class Text extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Primitive/Text.md","moduleTitle":"widgets/Primitive/Text","source":"plauna/widgets/Primitive/Text.js","import":"/plauna/widgets/Primitive/Text.js","sourceHash":"a9f00b2fd28138f74eea4a16308aa1f7b288c908be19c65c604a2270a42b3e20","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Primitive/Text.js#0001:TextFactory","exportIndex":1,"name":"TextFactory","kind":"constant","signature":"TextFactory","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Primitive/Tooltip.md","moduleTitle":"widgets/Primitive/Tooltip","source":"plauna/widgets/Primitive/Tooltip.js","import":"/plauna/widgets/Primitive/Tooltip.js","sourceHash":"6bdddaaaa0031e8cabdab46ded999aa7a65c092a9b4af7900a8f2b1c067180c9","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/Primitive/Tooltip.js","title":"widgets/Primitive/Tooltip","summary":"Tooltip - Contextual help widget for Plauna Provides positioning engine with arrow support and accessibility","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/Primitive/Tooltip.md","moduleTitle":"widgets/Primitive/Tooltip","source":"plauna/widgets/Primitive/Tooltip.js","import":"/plauna/widgets/Primitive/Tooltip.js","sourceHash":"6bdddaaaa0031e8cabdab46ded999aa7a65c092a9b4af7900a8f2b1c067180c9","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/Primitive/Tooltip.js#0000:Tooltip","exportIndex":0,"name":"Tooltip","kind":"class","signature":"class Tooltip extends UINode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/WidgetConfig.md","moduleTitle":"widgets/WidgetConfig","source":"plauna/widgets/WidgetConfig.js","import":"/plauna/widgets/WidgetConfig.js","sourceHash":"f9c1a6f7df17f4a9c9181b19a46915c1417bfeb10c910ddc10a9b020aa9af289","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/WidgetConfig.js","title":"widgets/WidgetConfig","summary":"Widget Configuration System Manages widget configurations, presets, and user preferences Following the same pattern as the editor's theme system","exportCount":5}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/WidgetConfig.md","moduleTitle":"widgets/WidgetConfig","source":"plauna/widgets/WidgetConfig.js","import":"/plauna/widgets/WidgetConfig.js","sourceHash":"f9c1a6f7df17f4a9c9181b19a46915c1417bfeb10c910ddc10a9b020aa9af289","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/WidgetConfig.js#0000:UnsupportedWidgetConfigVersionError","exportIndex":0,"name":"UnsupportedWidgetConfigVersionError","kind":"class","signature":"class UnsupportedWidgetConfigVersionError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/WidgetConfig.md","moduleTitle":"widgets/WidgetConfig","source":"plauna/widgets/WidgetConfig.js","import":"/plauna/widgets/WidgetConfig.js","sourceHash":"f9c1a6f7df17f4a9c9181b19a46915c1417bfeb10c910ddc10a9b020aa9af289","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/WidgetConfig.js#0001:prepareWidgetConfigImport","exportIndex":1,"name":"prepareWidgetConfigImport","kind":"function","signature":"prepareWidgetConfigImport(input)","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/WidgetConfig.md","moduleTitle":"widgets/WidgetConfig","source":"plauna/widgets/WidgetConfig.js","import":"/plauna/widgets/WidgetConfig.js","sourceHash":"f9c1a6f7df17f4a9c9181b19a46915c1417bfeb10c910ddc10a9b020aa9af289","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/WidgetConfig.js#0002:WIDGET_CONFIG_SCHEMA","exportIndex":2,"name":"WIDGET_CONFIG_SCHEMA","kind":"constant","signature":"WIDGET_CONFIG_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/WidgetConfig.md","moduleTitle":"widgets/WidgetConfig","source":"plauna/widgets/WidgetConfig.js","import":"/plauna/widgets/WidgetConfig.js","sourceHash":"f9c1a6f7df17f4a9c9181b19a46915c1417bfeb10c910ddc10a9b020aa9af289","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/WidgetConfig.js#0003:WIDGET_CONFIG_SCHEMA_VERSION","exportIndex":3,"name":"WIDGET_CONFIG_SCHEMA_VERSION","kind":"constant","signature":"WIDGET_CONFIG_SCHEMA_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/WidgetConfig.md","moduleTitle":"widgets/WidgetConfig","source":"plauna/widgets/WidgetConfig.js","import":"/plauna/widgets/WidgetConfig.js","sourceHash":"f9c1a6f7df17f4a9c9181b19a46915c1417bfeb10c910ddc10a9b020aa9af289","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/WidgetConfig.js#0004:widgetConfigManager","exportIndex":4,"name":"widgetConfigManager","kind":"constant","signature":"widgetConfigManager","summary":"Singleton export for WidgetConfigManager. Ensures a single instance is used throughout the application: - Consistent configuration state across all components - Single storage persistence point - Centralized event notification system"}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/WidgetItem.md","moduleTitle":"widgets/WidgetItem","source":"plauna/widgets/WidgetItem.js","import":"/plauna/widgets/WidgetItem.js","sourceHash":"1918051dc66ee29bb7d8cc01201319858cfd4fb07cfb1d822aa86281b66d3da0","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/WidgetItem.js","title":"widgets/WidgetItem","summary":"WidgetItem - Base class for all Plauna widgets. Follows the same pattern as SpawnableItem from the editor: - Static properties for metadata - Static methods for configuration - Registry-based discovery - Category-based organization ```js export class MyWidget extends WidgetItem { static id = 'my-widget'; static name = 'My Widget'; static icon = '🔧'; static category = 'custom'; static description = 'A custom widget for specific use case'; static create(container, options = {}) { return new MyWidget(container, options); } } ```","exportCount":2}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/WidgetItem.md","moduleTitle":"widgets/WidgetItem","source":"plauna/widgets/WidgetItem.js","import":"/plauna/widgets/WidgetItem.js","sourceHash":"1918051dc66ee29bb7d8cc01201319858cfd4fb07cfb1d822aa86281b66d3da0","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/WidgetItem.js#0000:MyWidget","exportIndex":0,"name":"MyWidget","kind":"class","signature":"class MyWidget extends WidgetItem","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/WidgetItem.md","moduleTitle":"widgets/WidgetItem","source":"plauna/widgets/WidgetItem.js","import":"/plauna/widgets/WidgetItem.js","sourceHash":"1918051dc66ee29bb7d8cc01201319858cfd4fb07cfb1d822aa86281b66d3da0","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/WidgetItem.js#0001:WidgetItem","exportIndex":1,"name":"WidgetItem","kind":"class","signature":"class WidgetItem","summary":"WidgetItem - Base class for all Plauna widgets. Follows the same pattern as SpawnableItem from the editor: - Static properties for metadata - Static methods for configuration - Registry-based discovery - Category-based organization ```js export class MyWidget extends WidgetItem { static id = 'my-widget'; static name = 'My Widget'; static icon = '🔧'; static category = 'custom'; static description = 'A custom widget for specific use case'; static create(container, options = {}) { return new MyWidget(container, options); } } ```"}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/WidgetRenderer.md","moduleTitle":"widgets/WidgetRenderer","source":"plauna/widgets/WidgetRenderer.js","import":"/plauna/widgets/WidgetRenderer.js","sourceHash":"7e4953a611b3cd2e2850cb6dd8020ee6af448395dd0c23249718b7fbd41bf52e","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/WidgetRenderer.js","title":"widgets/WidgetRenderer","summary":"============================================================================ WidgetRenderer - UINode to DOM Converter ============================================================================ WidgetRenderer is the bridge between Plauna's retained UINode tree and the actual browser DOM. It converts UINode instances into DOM elements recursively. RENDERING PIPELINE: 1. render(node) - Entry point, converts UINode tree to DOM tree 2. createDOMElement(node) - Creates appropriate DOM element for UINode type 3. Applies styles, classes, IDs, text content, and attributes 4. Recursively renders children and appends to parent 5. Returns root DOM element ready for insertion into document MAPPING TABLES: - nodeToDOM: Map<UINode, HTMLElement> - UINode → DOM element - domToNode: Map<HTMLElement, UINode> - DOM element → UINode (reverse lookup) ELEMENT TYPE MAPPING: - SVG elements: svg, circle, path, etc. → created with createElementNS - Text nodes: type='text' → rendered as <span> - Form elements: button, input, textarea, select, label, form, img → native elements - HTML elements: h1-h6, p, div, header, footer, nav, etc. → native elements - Unknown types: fallback to <div> SPECIAL HANDLING: - Raw HTMLElements: If node is already an HTMLElement, return it directly - Pre-existing DOM: If node.element exists (created by widget), use it - Back-reference: Sets element._plaunaNode for reverse lookup (used by SmartContextMenu) STYLE APPLICATION: 1. node.style: Direct inline styles (highest priority) 2. node.computedStyle: Computed styles from layout engine 3. node.className: CSS class names 4. node.id: Element ID TEXT CONTENT: - node.textContent: Plain text content - node.innerHTML: HTML string content - If node has children, text content is ignored","exportCount":2}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/WidgetRenderer.md","moduleTitle":"widgets/WidgetRenderer","source":"plauna/widgets/WidgetRenderer.js","import":"/plauna/widgets/WidgetRenderer.js","sourceHash":"7e4953a611b3cd2e2850cb6dd8020ee6af448395dd0c23249718b7fbd41bf52e","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/WidgetRenderer.js#0000:WidgetRenderer","exportIndex":0,"name":"WidgetRenderer","kind":"class","signature":"class WidgetRenderer","summary":"============================================================================ WidgetRenderer - UINode to DOM Converter ============================================================================ WidgetRenderer is the bridge between Plauna's retained UINode tree and the actual browser DOM. It converts UINode instances into DOM elements recursively. RENDERING PIPELINE: 1. render(node) - Entry point, converts UINode tree to DOM tree 2. createDOMElement(node) - Creates appropriate DOM element for UINode type 3. Applies styles, classes, IDs, text content, and attributes 4. Recursively renders children and appends to parent 5. Returns root DOM element ready for insertion into document MAPPING TABLES: - nodeToDOM: Map<UINode, HTMLElement> - UINode → DOM element - domToNode: Map<HTMLElement, UINode> - DOM element → UINode (reverse lookup) ELEMENT TYPE MAPPING: - SVG elements: svg, circle, path, etc. → created with createElementNS - Text nodes: type='text' → rendered as <span> - Form elements: button, input, textarea, select, label, form, img → native elements - HTML elements: h1-h6, p, div, header, footer, nav, etc. → native elements - Unknown types: fallback to <div> SPECIAL HANDLING: - Raw HTMLElements: If node is already an HTMLElement, return it directly - Pre-existing DOM: If node.element exists (created by widget), use it - Back-reference: Sets element._plaunaNode for reverse lookup (used by SmartContextMenu) STYLE APPLICATION: 1. node.style: Direct inline styles (highest priority) 2. node.computedStyle: Computed styles from layout engine 3. node.className: CSS class names 4. node.id: Element ID TEXT CONTENT: - node.textContent: Plain text content - node.innerHTML: HTML string content - If node has children, text content is ignored"}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/WidgetRenderer.md","moduleTitle":"widgets/WidgetRenderer","source":"plauna/widgets/WidgetRenderer.js","import":"/plauna/widgets/WidgetRenderer.js","sourceHash":"7e4953a611b3cd2e2850cb6dd8020ee6af448395dd0c23249718b7fbd41bf52e","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/WidgetRenderer.js#0001:widgetRenderer","exportIndex":1,"name":"widgetRenderer","kind":"constant","signature":"widgetRenderer","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/WidgetStyleManager.md","moduleTitle":"widgets/WidgetStyleManager","source":"plauna/widgets/WidgetStyleManager.js","import":"/plauna/widgets/WidgetStyleManager.js","sourceHash":"0b987b2917e1ca1696ecef1c30771858289ee706e295818534898675ccf53cc2","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/WidgetStyleManager.js","title":"widgets/WidgetStyleManager","summary":"WidgetStyleManager - Widget-specific styling system Provides theme-based styling utilities for widgets and UI components","exportCount":2}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/WidgetStyleManager.md","moduleTitle":"widgets/WidgetStyleManager","source":"plauna/widgets/WidgetStyleManager.js","import":"/plauna/widgets/WidgetStyleManager.js","sourceHash":"0b987b2917e1ca1696ecef1c30771858289ee706e295818534898675ccf53cc2","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/WidgetStyleManager.js#0000:WidgetStyleManager","exportIndex":0,"name":"WidgetStyleManager","kind":"class","signature":"class WidgetStyleManager","summary":"WidgetStyleManager - Theme-aware widget styling system. Architecture pattern: - Singleton pattern for consistent styling across the application - Style caching for performance (memoization by widgetType:variant:theme) - Theme integration with ThemeManager for dynamic theme switching - Observer pattern for reactive style updates on theme changes - Base token fallback for graceful degradation Features: - Generates CSS styles based on theme tokens - Supports multiple widget types (modal, tooltip, dropdown, etc.) - Automatic cache invalidation on theme changes - Token-based styling for consistency"}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/WidgetStyleManager.md","moduleTitle":"widgets/WidgetStyleManager","source":"plauna/widgets/WidgetStyleManager.js","import":"/plauna/widgets/WidgetStyleManager.js","sourceHash":"0b987b2917e1ca1696ecef1c30771858289ee706e295818534898675ccf53cc2","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/WidgetStyleManager.js#0001:widgetStyleManager","exportIndex":1,"name":"widgetStyleManager","kind":"constant","signature":"widgetStyleManager","summary":"Singleton export for WidgetStyleManager. Ensures a single instance is used throughout the application: - Consistent style caching across all components - Single theme subscription point - Centralized style generation"}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/index.md","moduleTitle":"widgets/index","source":"plauna/widgets/index.js","import":"/plauna/widgets/index.js","sourceHash":"355b3371ad6f128442508471d3edd74138396e936ab9dbc823cac2f51b5f1923","subsystem":"plauna","recordType":"api-module","id":"module:plauna/widgets/index.js","title":"widgets/index","summary":"============================================================================ PLAUNA WIDGET REGISTRY ============================================================================ This file serves as the central registry for all Plauna widgets. It imports widgets from their category folders and provides: 1. widgets array - Flat array of all widget classes 2. widgetRegistry - Map of widget.id → widget class for O(1) lookup 3. categories - Map of category name → array of widgets in that category 4. Helper functions for querying and filtering widgets WIDGET CATEGORIES: - Primitive: Basic building blocks (Button, Badge, Avatar, Chip, etc.) - Input: Form input controls (Search, Color, Date, File, etc.) - Form: Form elements (Checkbox, Radio, Switch, Select, etc.) - Layout: Layout containers (Card, Grid, Panel, Divider, etc.) - Navigation: Navigation components (Menu, Tabs, Sidebar, etc.) - DataViews: Data presentation (List, Table, Tree, etc.) - Feedback: User feedback (Alert, Toast, Spinner, etc.) WIDGET PATTERN: Each widget class MUST have: - static id: Unique string identifier (e.g., 'button') - static name: Display name (e.g., 'Button') - static category: Category name (e.g., 'primitive') - static icon: Emoji or icon for UI display - static description: Short description of widget purpose - static tags: Array of searchable tags - static dependencies: Array of required widget IDs - static getDefaultOptions(): Returns default configuration object - static stories(): Returns named story configurations for showcase - constructor(id, options): Initializes widget instance IMPORTANT: - Do NOT use widget.create() - it has require() that breaks in ESM - Instead, instantiate directly: new WidgetClass(id, options) - Use widgetRegistry.get(id) to find widget class by ID","exportCount":17}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/index.md","moduleTitle":"widgets/index","source":"plauna/widgets/index.js","import":"/plauna/widgets/index.js","sourceHash":"355b3371ad6f128442508471d3edd74138396e936ab9dbc823cac2f51b5f1923","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/index.js#0000:getWidget","exportIndex":0,"name":"getWidget","kind":"function","signature":"getWidget(id)","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/index.md","moduleTitle":"widgets/index","source":"plauna/widgets/index.js","import":"/plauna/widgets/index.js","sourceHash":"355b3371ad6f128442508471d3edd74138396e936ab9dbc823cac2f51b5f1923","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/index.js#0001:getWidgetsByCategory","exportIndex":1,"name":"getWidgetsByCategory","kind":"function","signature":"getWidgetsByCategory(category)","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/index.md","moduleTitle":"widgets/index","source":"plauna/widgets/index.js","import":"/plauna/widgets/index.js","sourceHash":"355b3371ad6f128442508471d3edd74138396e936ab9dbc823cac2f51b5f1923","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/index.js#0002:getAllCategories","exportIndex":2,"name":"getAllCategories","kind":"function","signature":"getAllCategories()","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/index.md","moduleTitle":"widgets/index","source":"plauna/widgets/index.js","import":"/plauna/widgets/index.js","sourceHash":"355b3371ad6f128442508471d3edd74138396e936ab9dbc823cac2f51b5f1923","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/index.js#0003:getAllWidgets","exportIndex":3,"name":"getAllWidgets","kind":"function","signature":"getAllWidgets()","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/index.md","moduleTitle":"widgets/index","source":"plauna/widgets/index.js","import":"/plauna/widgets/index.js","sourceHash":"355b3371ad6f128442508471d3edd74138396e936ab9dbc823cac2f51b5f1923","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/index.js#0004:searchWidgets","exportIndex":4,"name":"searchWidgets","kind":"function","signature":"searchWidgets(query)","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/index.md","moduleTitle":"widgets/index","source":"plauna/widgets/index.js","import":"/plauna/widgets/index.js","sourceHash":"355b3371ad6f128442508471d3edd74138396e936ab9dbc823cac2f51b5f1923","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/index.js#0005:getWidgetsByTag","exportIndex":5,"name":"getWidgetsByTag","kind":"function","signature":"getWidgetsByTag(tag)","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/index.md","moduleTitle":"widgets/index","source":"plauna/widgets/index.js","import":"/plauna/widgets/index.js","sourceHash":"355b3371ad6f128442508471d3edd74138396e936ab9dbc823cac2f51b5f1923","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/index.js#0006:getWidgetDependencies","exportIndex":6,"name":"getWidgetDependencies","kind":"function","signature":"getWidgetDependencies(widgetId)","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/index.md","moduleTitle":"widgets/index","source":"plauna/widgets/index.js","import":"/plauna/widgets/index.js","sourceHash":"355b3371ad6f128442508471d3edd74138396e936ab9dbc823cac2f51b5f1923","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/index.js#0007:validateWidgetDependencies","exportIndex":7,"name":"validateWidgetDependencies","kind":"function","signature":"validateWidgetDependencies(widgetId)","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/index.md","moduleTitle":"widgets/index","source":"plauna/widgets/index.js","import":"/plauna/widgets/index.js","sourceHash":"355b3371ad6f128442508471d3edd74138396e936ab9dbc823cac2f51b5f1923","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/index.js#0008:createWidget","exportIndex":8,"name":"createWidget","kind":"function","signature":"createWidget(widgetId, container, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/index.md","moduleTitle":"widgets/index","source":"plauna/widgets/index.js","import":"/plauna/widgets/index.js","sourceHash":"355b3371ad6f128442508471d3edd74138396e936ab9dbc823cac2f51b5f1923","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/index.js#0009:createWidgetWithTheme","exportIndex":9,"name":"createWidgetWithTheme","kind":"function","signature":"createWidgetWithTheme(widgetId, container, theme, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/index.md","moduleTitle":"widgets/index","source":"plauna/widgets/index.js","import":"/plauna/widgets/index.js","sourceHash":"355b3371ad6f128442508471d3edd74138396e936ab9dbc823cac2f51b5f1923","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/index.js#0010:getWidgetMetadata","exportIndex":10,"name":"getWidgetMetadata","kind":"function","signature":"getWidgetMetadata(widgetId)","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/index.md","moduleTitle":"widgets/index","source":"plauna/widgets/index.js","import":"/plauna/widgets/index.js","sourceHash":"355b3371ad6f128442508471d3edd74138396e936ab9dbc823cac2f51b5f1923","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/index.js#0011:getAllWidgetMetadata","exportIndex":11,"name":"getAllWidgetMetadata","kind":"function","signature":"getAllWidgetMetadata()","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/index.md","moduleTitle":"widgets/index","source":"plauna/widgets/index.js","import":"/plauna/widgets/index.js","sourceHash":"355b3371ad6f128442508471d3edd74138396e936ab9dbc823cac2f51b5f1923","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/index.js#0012:getWidgetDocumentation","exportIndex":12,"name":"getWidgetDocumentation","kind":"function","signature":"getWidgetDocumentation(widgetId)","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/index.md","moduleTitle":"widgets/index","source":"plauna/widgets/index.js","import":"/plauna/widgets/index.js","sourceHash":"355b3371ad6f128442508471d3edd74138396e936ab9dbc823cac2f51b5f1923","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/index.js#0013:getWidgetStats","exportIndex":13,"name":"getWidgetStats","kind":"function","signature":"getWidgetStats()","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/index.md","moduleTitle":"widgets/index","source":"plauna/widgets/index.js","import":"/plauna/widgets/index.js","sourceHash":"355b3371ad6f128442508471d3edd74138396e936ab9dbc823cac2f51b5f1923","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/index.js#0014:widgets","exportIndex":14,"name":"widgets","kind":"constant","signature":"widgets","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/index.md","moduleTitle":"widgets/index","source":"plauna/widgets/index.js","import":"/plauna/widgets/index.js","sourceHash":"355b3371ad6f128442508471d3edd74138396e936ab9dbc823cac2f51b5f1923","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/index.js#0015:widgetRegistry","exportIndex":15,"name":"widgetRegistry","kind":"constant","signature":"widgetRegistry","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/widgets/index.md","moduleTitle":"widgets/index","source":"plauna/widgets/index.js","import":"/plauna/widgets/index.js","sourceHash":"355b3371ad6f128442508471d3edd74138396e936ab9dbc823cac2f51b5f1923","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/widgets/index.js#0016:categories","exportIndex":16,"name":"categories","kind":"constant","signature":"categories","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/workspace/Panel.md","moduleTitle":"workspace/Panel","source":"plauna/workspace/Panel.js","import":"/plauna/workspace/Panel.js","sourceHash":"446ee2b5ba46e12325d64a6c911cb51ba07011f691783d4b0e1cbd0e762d0fee","subsystem":"plauna","recordType":"api-module","id":"module:plauna/workspace/Panel.js","title":"workspace/Panel","summary":"Panel.js — Base panel and two concrete flavours: DOMPanel  — a positioned <div> container for Plauna widgets / HTML content GPUPanel  — owns a GPUTexture render target; blitted to canvas by WorkspaceCompositor Lifecycle:  create → mount(container) → [resize / focus / show / hide] → destroy()","exportCount":3}
{"schemaVersion":1,"modulePath":"plauna/reference/workspace/Panel.md","moduleTitle":"workspace/Panel","source":"plauna/workspace/Panel.js","import":"/plauna/workspace/Panel.js","sourceHash":"446ee2b5ba46e12325d64a6c911cb51ba07011f691783d4b0e1cbd0e762d0fee","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/workspace/Panel.js#0000:Panel","exportIndex":0,"name":"Panel","kind":"class","signature":"class Panel","summary":"Panel - Base class for workspace panels. Architecture pattern: - Abstract base class for DOMPanel and GPUPanel - Lifecycle: create → mount → [resize/focus/show/hide] → destroy - Observer pattern for event emission (move, resize, visibility, focus, blur) - Position/size constraints with min-size enforcement - Z-index management for panel stacking Panel types: - DOMPanel: Renders Plauna widgets in DOM elements - GPUPanel: Renders to WebGPU textures, composited by WorkspaceCompositor"}
{"schemaVersion":1,"modulePath":"plauna/reference/workspace/Panel.md","moduleTitle":"workspace/Panel","source":"plauna/workspace/Panel.js","import":"/plauna/workspace/Panel.js","sourceHash":"446ee2b5ba46e12325d64a6c911cb51ba07011f691783d4b0e1cbd0e762d0fee","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/workspace/Panel.js#0001:DOMPanel","exportIndex":1,"name":"DOMPanel","kind":"class","signature":"class DOMPanel extends Panel","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/workspace/Panel.md","moduleTitle":"workspace/Panel","source":"plauna/workspace/Panel.js","import":"/plauna/workspace/Panel.js","sourceHash":"446ee2b5ba46e12325d64a6c911cb51ba07011f691783d4b0e1cbd0e762d0fee","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/workspace/Panel.js#0002:GPUPanel","exportIndex":2,"name":"GPUPanel","kind":"class","signature":"class GPUPanel extends Panel","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/workspace/PanelLayout.md","moduleTitle":"workspace/PanelLayout","source":"plauna/workspace/PanelLayout.js","import":"/plauna/workspace/PanelLayout.js","sourceHash":"3ef1a8ab88ee47e21a177a38ae49dd2b506a4986ceb57cf2414ea98e73bab9bb","subsystem":"plauna","recordType":"api-module","id":"module:plauna/workspace/PanelLayout.js","title":"workspace/PanelLayout","summary":"PanelLayout.js — Layout engine for arranging panels in a workspace. Modes: fullscreen — one panel fills the entire workspace float      — panels are free-position windows (drag/resize) split      — tmux/VS Code-style binary split tree (horizontal | vertical) tile       — auto-arranged fixed grid","exportCount":2}
{"schemaVersion":1,"modulePath":"plauna/reference/workspace/PanelLayout.md","moduleTitle":"workspace/PanelLayout","source":"plauna/workspace/PanelLayout.js","import":"/plauna/workspace/PanelLayout.js","sourceHash":"3ef1a8ab88ee47e21a177a38ae49dd2b506a4986ceb57cf2414ea98e73bab9bb","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/workspace/PanelLayout.js#0000:LayoutEngine","exportIndex":0,"name":"LayoutEngine","kind":"class","signature":"class LayoutEngine","summary":"LayoutEngine - Panel layout orchestration. Layout modes: - fullscreen: First visible panel fills entire workspace - float: Panels are free-position windows with drag/resize - split: Binary tree layout (like tmux/VS Code) with recursive splits - tile: Auto-arranged grid layout Architecture: - Mode-based layout dispatch (apply() switches between modes) - Split tree cached for efficiency (reused if panels unchanged) - Z-index management for float mode (focused panel on top) - Observer pattern for mode change notifications"}
{"schemaVersion":1,"modulePath":"plauna/reference/workspace/PanelLayout.md","moduleTitle":"workspace/PanelLayout","source":"plauna/workspace/PanelLayout.js","import":"/plauna/workspace/PanelLayout.js","sourceHash":"3ef1a8ab88ee47e21a177a38ae49dd2b506a4986ceb57cf2414ea98e73bab9bb","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/workspace/PanelLayout.js#0001:LayoutMode","exportIndex":1,"name":"LayoutMode","kind":"constant","signature":"LayoutMode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/workspace/Workspace.md","moduleTitle":"workspace/Workspace","source":"plauna/workspace/Workspace.js","import":"/plauna/workspace/Workspace.js","sourceHash":"a372a172593f511cbc501ad336a8aeb8fa8f5a02c524f0b77c778f7fd801fc70","subsystem":"plauna","recordType":"api-module","id":"module:plauna/workspace/Workspace.js","title":"workspace/Workspace","summary":"Workspace.js — Virtual desktop for panels. Architecture: - Virtual desktop that holds an ordered list of panels - DOM layer that sits over WebGPU canvas - LayoutEngine for panel arrangement (fullscreen/float/split/tile) - WorkspaceManager handles switching between workspaces via CSS transitions Lifecycle: - mount(container): Creates DOM layer and mounts panels - activate(): Shows workspace (opacity 1, pointer-events auto) - deactivate(): Hides workspace (opacity 0, pointer-events none) - CSS transitions for smooth workspace switching Panel management: - addPanel(): Adds panel to workspace and mounts it - removePanel(): Removes panel from workspace - Layout applied automatically on mount and resize","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/workspace/Workspace.md","moduleTitle":"workspace/Workspace","source":"plauna/workspace/Workspace.js","import":"/plauna/workspace/Workspace.js","sourceHash":"a372a172593f511cbc501ad336a8aeb8fa8f5a02c524f0b77c778f7fd801fc70","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/workspace/Workspace.js#0000:Workspace","exportIndex":0,"name":"Workspace","kind":"class","signature":"class Workspace","summary":"Workspace - Virtual desktop container. Virtual desktop pattern: - Each workspace is a separate DOM layer - Workspaces are stacked with CSS z-index - Only one workspace active/visible at a time - CSS opacity transitions for smooth switching - Panels are mounted into workspace DOM layer"}
{"schemaVersion":1,"modulePath":"plauna/reference/workspace/WorkspaceCompositor.md","moduleTitle":"workspace/WorkspaceCompositor","source":"plauna/workspace/WorkspaceCompositor.js","import":"/plauna/workspace/WorkspaceCompositor.js","sourceHash":"dd866bb5cb51eab623ee06fcb4ce4eb3d02298ddeb7e302ab846793435f8d705","subsystem":"plauna","recordType":"api-module","id":"module:plauna/workspace/WorkspaceCompositor.js","title":"workspace/WorkspaceCompositor","summary":"WorkspaceCompositor.js — WebGPU blit pipeline for GPU panels. Architecture: - Each GPUPanel owns a GPUTexture render target - Compositor blits all visible GPU panels onto canvas swap chain each frame - DOM panels are rendered directly by browser (compositor only handles WebGPU) - Simple blit shader: just copies texture to canvas Pipeline components: - Sampler: Linear filtering for panel textures - Bind group layout: Single texture binding (binding 0) - Shader: Simple vertex + fragment shader for texture copy - Blend state: Alpha blending for layered panels Render loop: - Called by WorkspaceManager each frame - Iterates visible GPU panels in z-order - Creates bind group per panel - Issues draw call (6 vertices for quad)","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/workspace/WorkspaceCompositor.md","moduleTitle":"workspace/WorkspaceCompositor","source":"plauna/workspace/WorkspaceCompositor.js","import":"/plauna/workspace/WorkspaceCompositor.js","sourceHash":"dd866bb5cb51eab623ee06fcb4ce4eb3d02298ddeb7e302ab846793435f8d705","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/workspace/WorkspaceCompositor.js#0000:WorkspaceCompositor","exportIndex":0,"name":"WorkspaceCompositor","kind":"class","signature":"class WorkspaceCompositor","summary":"WorkspaceCompositor - WebGPU texture compositor. Compositor pattern: - Blits GPU panel textures to canvas swap chain - Handles only WebGPU panels (DOM panels rendered by browser) - Simple texture copy pipeline (no post-processing) - Alpha blending for layered panel support"}
{"schemaVersion":1,"modulePath":"plauna/reference/workspace/WorkspaceManager.md","moduleTitle":"workspace/WorkspaceManager","source":"plauna/workspace/WorkspaceManager.js","import":"/plauna/workspace/WorkspaceManager.js","sourceHash":"78c3807db65f3c9e3f4da472cfd9e368b1ef3bee0291f08878e7587bd42eeb01","subsystem":"plauna","recordType":"api-module","id":"module:plauna/workspace/WorkspaceManager.js","title":"workspace/WorkspaceManager","summary":"============================================================================ WorkspaceManager - Virtual Desktop Management ============================================================================ WorkspaceManager provides a virtual desktop system for Plauna, allowing multiple workspaces with different layouts and panel configurations. WORKSPACE CONCEPT: - A Workspace is a virtual desktop that holds panels - Each workspace can have its own layout mode (fullscreen, float, split, tile) - Workspaces are DOM layers stacked over the canvas - Only one workspace is active/visible at a time PANEL TYPES: - DOMPanel: Wrapper for Plauna widgets (div-based) - GPUPanel: WebGPU texture panel (for GPU-accelerated content) LAYOUT MODES: - fullscreen: One panel fills the entire workspace - float: Draggable, resizable windows with z-order - split: Recursive binary tree layout (like tmux/VS Code) - tile: Auto-arranged grid layout COMPOSITOR: - WorkspaceCompositor blits GPU panel textures to canvas swap chain - Iterates visible GPU panels in z-order - Required for GPU panel support SWITCHER: - WorkspaceSwitcher provides HUD overlay (Ctrl+`) - Shows thumbnails of all workspaces - Keyboard navigation with arrow keys - Enter to switch workspace SINGLE CONSTRAINT: - Only one WebGPU canvas context allowed per page - Only one GPUDevice instance shared across all workspaces - GPU panels share the same device and canvas PUBLIC API: - createWorkspace({ name, layout }): Create new workspace - switchTo(id): Switch active workspace - createPanel(type, options): Create panel in active workspace - list(): List all workspaces - activeWorkspace: Get currently active workspace INITIALIZATION: - Requires: container (DOM element), device (WebGPU), canvas - Optional: format (texture format), logger - Must call initialize() before using KEYBOARD SHORTCUTS: - Ctrl+`: Open workspace switcher - Arrow keys: Navigate switcher - Enter: Switch to selected workspace - Escape: Close switcher USAGE: const manager = new WorkspaceManager({ container: document.body, device: gpuDevice, canvas: canvasElement, format: 'bgra8unorm' }); await manager.initialize(); const ws = manager.createWorkspace({ name: 'Main', layout: 'float' }); manager.switchTo(ws.id); manager.createPanel('dom', { title: 'Panel 1' });","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/workspace/WorkspaceManager.md","moduleTitle":"workspace/WorkspaceManager","source":"plauna/workspace/WorkspaceManager.js","import":"/plauna/workspace/WorkspaceManager.js","sourceHash":"78c3807db65f3c9e3f4da472cfd9e368b1ef3bee0291f08878e7587bd42eeb01","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/workspace/WorkspaceManager.js#0000:WorkspaceManager","exportIndex":0,"name":"WorkspaceManager","kind":"class","signature":"class WorkspaceManager","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/workspace/WorkspaceSwitcher.md","moduleTitle":"workspace/WorkspaceSwitcher","source":"plauna/workspace/WorkspaceSwitcher.js","import":"/plauna/workspace/WorkspaceSwitcher.js","sourceHash":"32f2aba085789625842a75f602521d4c097b2fd46392ba68878a5322c072af94","subsystem":"plauna","recordType":"api-module","id":"module:plauna/workspace/WorkspaceSwitcher.js","title":"workspace/WorkspaceSwitcher","summary":"WorkspaceSwitcher.js — HUD overlay for workspace switching. Architecture: - Triggered by Ctrl+` (managed by WorkspaceManager) - Shows thumbnails of all workspaces in grid layout - Keyboard navigation with arrow keys - Enter to switch to selected workspace - Escape to close switcher UI pattern: - Full-screen overlay with backdrop blur - Centered card with workspace thumbnails - Highlighted selection indicator - CSS transitions for smooth show/hide Keyboard handling: - Arrow keys: Navigate between workspaces - Enter: Switch to selected workspace - Escape: Close switcher without switching","exportCount":1}
{"schemaVersion":1,"modulePath":"plauna/reference/workspace/WorkspaceSwitcher.md","moduleTitle":"workspace/WorkspaceSwitcher","source":"plauna/workspace/WorkspaceSwitcher.js","import":"/plauna/workspace/WorkspaceSwitcher.js","sourceHash":"32f2aba085789625842a75f602521d4c097b2fd46392ba68878a5322c072af94","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/workspace/WorkspaceSwitcher.js#0000:WorkspaceSwitcher","exportIndex":0,"name":"WorkspaceSwitcher","kind":"class","signature":"class WorkspaceSwitcher","summary":"WorkspaceSwitcher - HUD overlay for workspace navigation. HUD pattern: - Full-screen overlay with backdrop blur - Grid layout of workspace thumbnails - Keyboard navigation support - Smooth CSS transitions for show/hide"}
{"schemaVersion":1,"modulePath":"plauna/reference/workspace/index.md","moduleTitle":"workspace/index","source":"plauna/workspace/index.js","import":"/plauna/workspace/index.js","sourceHash":"e51e6ddcf93355d22a0c078f3f540def56ecf82469e29107643f5371f560ac6e","subsystem":"plauna","recordType":"api-module","id":"module:plauna/workspace/index.js","title":"workspace/index","summary":"plauna/workspace — Virtual desktop / multi-panel system for Plauna. Exported classes: - Panel, DOMPanel, GPUPanel - Workspace - WorkspaceManager - WorkspaceCompositor - WorkspaceSwitcher - LayoutEngine, LayoutMode","exportCount":9}
{"schemaVersion":1,"modulePath":"plauna/reference/workspace/index.md","moduleTitle":"workspace/index","source":"plauna/workspace/index.js","import":"/plauna/workspace/index.js","sourceHash":"e51e6ddcf93355d22a0c078f3f540def56ecf82469e29107643f5371f560ac6e","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/workspace/index.js#0000:DOMPanel","exportIndex":0,"name":"DOMPanel","kind":"re-export","signature":"DOMPanel","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/workspace/index.md","moduleTitle":"workspace/index","source":"plauna/workspace/index.js","import":"/plauna/workspace/index.js","sourceHash":"e51e6ddcf93355d22a0c078f3f540def56ecf82469e29107643f5371f560ac6e","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/workspace/index.js#0001:GPUPanel","exportIndex":1,"name":"GPUPanel","kind":"re-export","signature":"GPUPanel","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/workspace/index.md","moduleTitle":"workspace/index","source":"plauna/workspace/index.js","import":"/plauna/workspace/index.js","sourceHash":"e51e6ddcf93355d22a0c078f3f540def56ecf82469e29107643f5371f560ac6e","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/workspace/index.js#0002:LayoutEngine","exportIndex":2,"name":"LayoutEngine","kind":"re-export","signature":"LayoutEngine","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/workspace/index.md","moduleTitle":"workspace/index","source":"plauna/workspace/index.js","import":"/plauna/workspace/index.js","sourceHash":"e51e6ddcf93355d22a0c078f3f540def56ecf82469e29107643f5371f560ac6e","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/workspace/index.js#0003:LayoutMode","exportIndex":3,"name":"LayoutMode","kind":"re-export","signature":"LayoutMode","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/workspace/index.md","moduleTitle":"workspace/index","source":"plauna/workspace/index.js","import":"/plauna/workspace/index.js","sourceHash":"e51e6ddcf93355d22a0c078f3f540def56ecf82469e29107643f5371f560ac6e","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/workspace/index.js#0004:Panel","exportIndex":4,"name":"Panel","kind":"re-export","signature":"Panel","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/workspace/index.md","moduleTitle":"workspace/index","source":"plauna/workspace/index.js","import":"/plauna/workspace/index.js","sourceHash":"e51e6ddcf93355d22a0c078f3f540def56ecf82469e29107643f5371f560ac6e","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/workspace/index.js#0005:Workspace","exportIndex":5,"name":"Workspace","kind":"re-export","signature":"Workspace","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/workspace/index.md","moduleTitle":"workspace/index","source":"plauna/workspace/index.js","import":"/plauna/workspace/index.js","sourceHash":"e51e6ddcf93355d22a0c078f3f540def56ecf82469e29107643f5371f560ac6e","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/workspace/index.js#0006:WorkspaceCompositor","exportIndex":6,"name":"WorkspaceCompositor","kind":"re-export","signature":"WorkspaceCompositor","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/workspace/index.md","moduleTitle":"workspace/index","source":"plauna/workspace/index.js","import":"/plauna/workspace/index.js","sourceHash":"e51e6ddcf93355d22a0c078f3f540def56ecf82469e29107643f5371f560ac6e","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/workspace/index.js#0007:WorkspaceManager","exportIndex":7,"name":"WorkspaceManager","kind":"re-export","signature":"WorkspaceManager","summary":""}
{"schemaVersion":1,"modulePath":"plauna/reference/workspace/index.md","moduleTitle":"workspace/index","source":"plauna/workspace/index.js","import":"/plauna/workspace/index.js","sourceHash":"e51e6ddcf93355d22a0c078f3f540def56ecf82469e29107643f5371f560ac6e","subsystem":"plauna","recordType":"api-symbol","id":"symbol:plauna/workspace/index.js#0008:WorkspaceSwitcher","exportIndex":8,"name":"WorkspaceSwitcher","kind":"re-export","signature":"WorkspaceSwitcher","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-bridge/BrowserBridgeClient.md","moduleTitle":"browser-bridge/BrowserBridgeClient","source":"webgpu-os/browser-bridge/BrowserBridgeClient.js","import":"/webgpu-os/browser-bridge/BrowserBridgeClient.js","sourceHash":"3837e6e9994f0df05acff68e3db8c8af195039b06756b957fc127f7259f20b6d","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/browser-bridge/BrowserBridgeClient.js","title":"browser-bridge/BrowserBridgeClient","summary":"Singleton — shared by all syscall consumers.","exportCount":3}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-bridge/BrowserBridgeClient.md","moduleTitle":"browser-bridge/BrowserBridgeClient","source":"webgpu-os/browser-bridge/BrowserBridgeClient.js","import":"/webgpu-os/browser-bridge/BrowserBridgeClient.js","sourceHash":"3837e6e9994f0df05acff68e3db8c8af195039b06756b957fc127f7259f20b6d","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-bridge/BrowserBridgeClient.js#0000:BrowserBridgeClient","exportIndex":0,"name":"BrowserBridgeClient","kind":"class","signature":"class BrowserBridgeClient","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-bridge/BrowserBridgeClient.md","moduleTitle":"browser-bridge/BrowserBridgeClient","source":"webgpu-os/browser-bridge/BrowserBridgeClient.js","import":"/webgpu-os/browser-bridge/BrowserBridgeClient.js","sourceHash":"3837e6e9994f0df05acff68e3db8c8af195039b06756b957fc127f7259f20b6d","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-bridge/BrowserBridgeClient.js#0001:validateBridgeArgs","exportIndex":1,"name":"validateBridgeArgs","kind":"function","signature":"validateBridgeArgs(args, service = '', method = '')","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-bridge/BrowserBridgeClient.md","moduleTitle":"browser-bridge/BrowserBridgeClient","source":"webgpu-os/browser-bridge/BrowserBridgeClient.js","import":"/webgpu-os/browser-bridge/BrowserBridgeClient.js","sourceHash":"3837e6e9994f0df05acff68e3db8c8af195039b06756b957fc127f7259f20b6d","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-bridge/BrowserBridgeClient.js#0002:browserBridge","exportIndex":2,"name":"browserBridge","kind":"constant","signature":"browserBridge","summary":"Singleton — shared by all syscall consumers."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-bridge/BrowserBridgeDriver.md","moduleTitle":"browser-bridge/BrowserBridgeDriver","source":"webgpu-os/browser-bridge/BrowserBridgeDriver.js","import":"/webgpu-os/browser-bridge/BrowserBridgeDriver.js","sourceHash":"3bffb1f70c6751306138ad6525721637ffcc8beb1be9607daac77df990297b30","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/browser-bridge/BrowserBridgeDriver.js","title":"browser-bridge/BrowserBridgeDriver","summary":"BrowserBridgeDriver.js — kernel-level wrapper around BrowserBridgeClient. Held at kernel.browserBridge. Manages availability probing on boot, event relay to the kernel event bus, and exposes the full typed client for syscalls.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-bridge/BrowserBridgeDriver.md","moduleTitle":"browser-bridge/BrowserBridgeDriver","source":"webgpu-os/browser-bridge/BrowserBridgeDriver.js","import":"/webgpu-os/browser-bridge/BrowserBridgeDriver.js","sourceHash":"3bffb1f70c6751306138ad6525721637ffcc8beb1be9607daac77df990297b30","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-bridge/BrowserBridgeDriver.js#0000:BrowserBridgeDriver","exportIndex":0,"name":"BrowserBridgeDriver","kind":"class","signature":"class BrowserBridgeDriver","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/adblock-content.md","moduleTitle":"browser-extension/adblock-content","source":"webgpu-os/browser-extension/adblock-content.js","import":"/webgpu-os/browser-extension/adblock-content.js","sourceHash":"b10423dabc02135398a71a2a235f535de677929a9e233c190ced0786c0ac3b7c","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/browser-extension/adblock-content.js","title":"browser-extension/adblock-content","summary":"adblock-content.js — in-frame cosmetic ad filtering (Layer 2). Runs in the DEFAULT (ISOLATED) world, in ALL frames, at document_start. ISOLATED world is required so chrome.runtime / chrome.storage are available (the MAIN-world content.js cannot reach them). Cosmetic hiding and DOM node removal only need access to the SHARED DOM, which the isolated world has. Responsibilities: - Inject cosmetic CSS hiding known ad containers. - Watch the DOM and remove ad/tracker <iframe>/<script>/<img> nodes whose src targets a blocked domain (defence-in-depth alongside the DNR rule). - Report removals to the background counter. Strictly scoped: only activates inside frames that belong to the WebGPU OS browser (top page is an OS host, or the outermost ancestor is an OS host), and only while ad-blocking is enabled. Stays completely inert during the user's normal browsing.","exportCount":0}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/adblock-list.md","moduleTitle":"browser-extension/adblock-list","source":"webgpu-os/browser-extension/adblock-list.js","import":"/webgpu-os/browser-extension/adblock-list.js","sourceHash":"4f4bafec0d29d829d2d694320ab13a30017794f519db3c30cf22e5af52479e3e","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/browser-extension/adblock-list.js","title":"browser-extension/adblock-list","summary":"adblock-list.js — shared ad/tracker blocklist for the WebGPU OS browser. SINGLE SOURCE OF TRUTH, consumed by three enforcement layers: 1. background.js        → declarativeNetRequest BLOCK rules (network layer, scoped to OS tabs only — never the user's normal browsing) 2. adblock-content.js   → cosmetic hiding + DOM ad-node removal inside OS-embedded frames 3. _extProxyFetch       → ad-tag stripping for proxied (srcdoc) pages Ported and expanded from the Playwright stealth blocker (C:\\Coding\\fail\\server\\tools\\stealth.py — ADBLOCK_DOMAINS / ADBLOCK_URL_KEYWORDS). This is an ES module: background.js imports it directly; the content script loads it via dynamic import(chrome.runtime.getURL('adblock-list.js')), which is why it is also listed under web_accessible_resources in the manifest. The hand-curated CORE list below is augmented at runtime by an optional, build-generated list (adblock-domains.generated.js) produced from EasyList / EasyPrivacy via build_adblock_rules.py. The generated file ships empty until you run that script, so the extension always loads.","exportCount":7}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/adblock-list.md","moduleTitle":"browser-extension/adblock-list","source":"webgpu-os/browser-extension/adblock-list.js","import":"/webgpu-os/browser-extension/adblock-list.js","sourceHash":"4f4bafec0d29d829d2d694320ab13a30017794f519db3c30cf22e5af52479e3e","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/adblock-list.js#0000:hostnameOf","exportIndex":0,"name":"hostnameOf","kind":"function","signature":"hostnameOf(url)","summary":"Lowercased hostname from a URL, or '' if unparseable."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/adblock-list.md","moduleTitle":"browser-extension/adblock-list","source":"webgpu-os/browser-extension/adblock-list.js","import":"/webgpu-os/browser-extension/adblock-list.js","sourceHash":"4f4bafec0d29d829d2d694320ab13a30017794f519db3c30cf22e5af52479e3e","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/adblock-list.js#0001:isAdDomain","exportIndex":1,"name":"isAdDomain","kind":"function","signature":"isAdDomain(url)","summary":"True if the URL targets a known ad/tracker domain (or a subdomain of one)."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/adblock-list.md","moduleTitle":"browser-extension/adblock-list","source":"webgpu-os/browser-extension/adblock-list.js","import":"/webgpu-os/browser-extension/adblock-list.js","sourceHash":"4f4bafec0d29d829d2d694320ab13a30017794f519db3c30cf22e5af52479e3e","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/adblock-list.js#0002:looksLikeAd","exportIndex":2,"name":"looksLikeAd","kind":"function","signature":"looksLikeAd(url)","summary":"Broader match incl. keyword patterns — for the cosmetic/proxy layers only."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/adblock-list.md","moduleTitle":"browser-extension/adblock-list","source":"webgpu-os/browser-extension/adblock-list.js","import":"/webgpu-os/browser-extension/adblock-list.js","sourceHash":"4f4bafec0d29d829d2d694320ab13a30017794f519db3c30cf22e5af52479e3e","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/adblock-list.js#0003:cosmeticCss","exportIndex":3,"name":"cosmeticCss","kind":"function","signature":"cosmeticCss()","summary":"A single <style> string that hides all cosmetic selectors."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/adblock-list.md","moduleTitle":"browser-extension/adblock-list","source":"webgpu-os/browser-extension/adblock-list.js","import":"/webgpu-os/browser-extension/adblock-list.js","sourceHash":"4f4bafec0d29d829d2d694320ab13a30017794f519db3c30cf22e5af52479e3e","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/adblock-list.js#0004:ADBLOCK_DOMAINS","exportIndex":4,"name":"ADBLOCK_DOMAINS","kind":"constant","signature":"ADBLOCK_DOMAINS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/adblock-list.md","moduleTitle":"browser-extension/adblock-list","source":"webgpu-os/browser-extension/adblock-list.js","import":"/webgpu-os/browser-extension/adblock-list.js","sourceHash":"4f4bafec0d29d829d2d694320ab13a30017794f519db3c30cf22e5af52479e3e","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/adblock-list.js#0005:ADBLOCK_URL_KEYWORDS","exportIndex":5,"name":"ADBLOCK_URL_KEYWORDS","kind":"constant","signature":"ADBLOCK_URL_KEYWORDS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/adblock-list.md","moduleTitle":"browser-extension/adblock-list","source":"webgpu-os/browser-extension/adblock-list.js","import":"/webgpu-os/browser-extension/adblock-list.js","sourceHash":"4f4bafec0d29d829d2d694320ab13a30017794f519db3c30cf22e5af52479e3e","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/adblock-list.js#0006:ADBLOCK_COSMETIC","exportIndex":6,"name":"ADBLOCK_COSMETIC","kind":"constant","signature":"ADBLOCK_COSMETIC","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/ai-settings.md","moduleTitle":"browser-extension/ai-settings","source":"webgpu-os/browser-extension/ai-settings.js","import":"/webgpu-os/browser-extension/ai-settings.js","sourceHash":"196889bb11ed4c4596e159493e04a1edaf00cfb619eeeb5c0b3345684f311c5f","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/browser-extension/ai-settings.js","title":"browser-extension/ai-settings","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/background.md","moduleTitle":"browser-extension/background","source":"webgpu-os/browser-extension/background.js","import":"/webgpu-os/browser-extension/background.js","sourceHash":"936cb328efff59f153877bdf93a803716f5ae8e594e5bd641f2ef1e44293a780","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/browser-extension/background.js","title":"browser-extension/background","summary":"background.js — WebGPU OS Frame Unblocker + Browser Bridge service worker. Static rules (rules.json) are the primary mechanism. Dynamic rules (updateDynamicRules) are registered as a fallback on every startup in case Chrome silently rejected the static ruleset. Browser Bridge: handles __os_bridge_request__ messages routed from relay.js, delegating to the four service modules (Tabs, Injection, Navigation, Rules).","exportCount":0}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/content.md","moduleTitle":"browser-extension/content","source":"webgpu-os/browser-extension/content.js","import":"/webgpu-os/browser-extension/content.js","sourceHash":"4a80cbb8840755a6efe0786d2f4b70e2876b785eeb1040241bbe4396526d90e0","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/browser-extension/content.js","title":"browser-extension/content","summary":"content.js — runs in the page's MAIN world at document_start. 1. Sets window.__frameUnblockerActive so the OS browser app can detect the extension. 2. In sub-frames (iframes): overrides window.top / window.parent / window.frameElement so frame-busting scripts (e.g. DuckDuckGo: \"if (top !== self) top.location = ...\") think they are the top-level page and do not navigate away. Must run in world: \"MAIN\" and all_frames: true to take effect before site JS.","exportCount":0}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/offscreen.md","moduleTitle":"browser-extension/offscreen","source":"webgpu-os/browser-extension/offscreen.js","import":"/webgpu-os/browser-extension/offscreen.js","sourceHash":"4ffefad9dc2fdb349aeeaf4757f081478250c15ddce6660f67a3b81b902c6973","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/browser-extension/offscreen.js","title":"browser-extension/offscreen","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/options.md","moduleTitle":"browser-extension/options","source":"webgpu-os/browser-extension/options.js","import":"/webgpu-os/browser-extension/options.js","sourceHash":"f9c422dbfd5abf947f387ebab735bd5eca1f9ea4a9c9f52c67eedc84455b3e42","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/browser-extension/options.js","title":"browser-extension/options","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/popup.md","moduleTitle":"browser-extension/popup","source":"webgpu-os/browser-extension/popup.js","import":"/webgpu-os/browser-extension/popup.js","sourceHash":"ec32a08d29c857e1dbd9ea658202eca76e5574901a97987c8a6c202952f19d53","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/browser-extension/popup.js","title":"browser-extension/popup","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/popup-ai.md","moduleTitle":"browser-extension/popup-ai","source":"webgpu-os/browser-extension/popup-ai.js","import":"/webgpu-os/browser-extension/popup-ai.js","sourceHash":"a4298c8fa17c5a5f23b10dc0ea516a3f270a74ddb0bba97bb58818059c4c9df2","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/browser-extension/popup-ai.js","title":"browser-extension/popup-ai","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/popup-ai.md","moduleTitle":"browser-extension/popup-ai","source":"webgpu-os/browser-extension/popup-ai.js","import":"/webgpu-os/browser-extension/popup-ai.js","sourceHash":"a4298c8fa17c5a5f23b10dc0ea516a3f270a74ddb0bba97bb58818059c4c9df2","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/popup-ai.js#0000:runtimeMessageSender","exportIndex":0,"name":"runtimeMessageSender","kind":"function","signature":"runtimeMessageSender(message)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/popup-ai.md","moduleTitle":"browser-extension/popup-ai","source":"webgpu-os/browser-extension/popup-ai.js","import":"/webgpu-os/browser-extension/popup-ai.js","sourceHash":"a4298c8fa17c5a5f23b10dc0ea516a3f270a74ddb0bba97bb58818059c4c9df2","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/popup-ai.js#0001:mountSecureProviderList","exportIndex":1,"name":"mountSecureProviderList","kind":"function","signature":"mountSecureProviderList({ root, summary, manageButton, refreshButton, send = runtimeMessageSender, onChange = ()","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/popup-size.md","moduleTitle":"browser-extension/popup-size","source":"webgpu-os/browser-extension/popup-size.js","import":"/webgpu-os/browser-extension/popup-size.js","sourceHash":"9de15ca0597e594e8aef1d3835a5b739b4d89936ce7c3df6272543e411b1aee2","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/browser-extension/popup-size.js","title":"browser-extension/popup-size","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/relay.md","moduleTitle":"browser-extension/relay","source":"webgpu-os/browser-extension/relay.js","import":"/webgpu-os/browser-extension/relay.js","sourceHash":"21ebb620c8897c758bcb97dc265a1f956db2ff875ba85a656cf46fdbcf9059aa","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/browser-extension/relay.js","title":"browser-extension/relay","summary":"relay.js — runs in the ISOLATED content script world (default). chrome.runtime IS available here (unlike world: \"MAIN\"). Acts as a bridge between the OS page (MAIN world) and the extension background. Two-way channels: 1. Proxy fetch (legacy): page →__os_proxy_request__→ relay → background → __os_proxy_response__→ page 2. Browser Bridge requests: page →__os_bridge_request__→ relay → background → __os_bridge_response__→ page 3. Push events from background (nav/tab changes): background →sendMessage→ relay →__os_bridge_event__→ page","exportCount":0}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/AIProviderCatalog.md","moduleTitle":"browser-extension/services/AIProviderCatalog","source":"webgpu-os/browser-extension/services/AIProviderCatalog.js","import":"/webgpu-os/browser-extension/services/AIProviderCatalog.js","sourceHash":"cbd7bcba1ec8a62e13cc450edcd05cd910992b0d3cd96e1eda7d3a3894569569","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/browser-extension/services/AIProviderCatalog.js","title":"browser-extension/services/AIProviderCatalog","summary":"Shared provider metadata and OpenAI-compatible endpoint normalization. Keep this module free of chrome.* calls so the service worker and tests can use the exact same routing and capability rules.","exportCount":20}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/AIProviderCatalog.md","moduleTitle":"browser-extension/services/AIProviderCatalog","source":"webgpu-os/browser-extension/services/AIProviderCatalog.js","import":"/webgpu-os/browser-extension/services/AIProviderCatalog.js","sourceHash":"cbd7bcba1ec8a62e13cc450edcd05cd910992b0d3cd96e1eda7d3a3894569569","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/AIProviderCatalog.js#0000:resolveProviderDataPolicy","exportIndex":0,"name":"resolveProviderDataPolicy","kind":"function","signature":"resolveProviderDataPolicy(providerId, route = {}, { authority = 'catalog' } = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/AIProviderCatalog.md","moduleTitle":"browser-extension/services/AIProviderCatalog","source":"webgpu-os/browser-extension/services/AIProviderCatalog.js","import":"/webgpu-os/browser-extension/services/AIProviderCatalog.js","sourceHash":"cbd7bcba1ec8a62e13cc450edcd05cd910992b0d3cd96e1eda7d3a3894569569","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/AIProviderCatalog.js#0001:classifyModelFamily","exportIndex":1,"name":"classifyModelFamily","kind":"function","signature":"classifyModelFamily(providerId, modelId)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/AIProviderCatalog.md","moduleTitle":"browser-extension/services/AIProviderCatalog","source":"webgpu-os/browser-extension/services/AIProviderCatalog.js","import":"/webgpu-os/browser-extension/services/AIProviderCatalog.js","sourceHash":"cbd7bcba1ec8a62e13cc450edcd05cd910992b0d3cd96e1eda7d3a3894569569","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/AIProviderCatalog.js#0002:resolveModelAccess","exportIndex":2,"name":"resolveModelAccess","kind":"function","signature":"resolveModelAccess(providerId, model = {}, { authority = 'catalog' } = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/AIProviderCatalog.md","moduleTitle":"browser-extension/services/AIProviderCatalog","source":"webgpu-os/browser-extension/services/AIProviderCatalog.js","import":"/webgpu-os/browser-extension/services/AIProviderCatalog.js","sourceHash":"cbd7bcba1ec8a62e13cc450edcd05cd910992b0d3cd96e1eda7d3a3894569569","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/AIProviderCatalog.js#0003:listProviderDefinitions","exportIndex":3,"name":"listProviderDefinitions","kind":"function","signature":"listProviderDefinitions()","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/AIProviderCatalog.md","moduleTitle":"browser-extension/services/AIProviderCatalog","source":"webgpu-os/browser-extension/services/AIProviderCatalog.js","import":"/webgpu-os/browser-extension/services/AIProviderCatalog.js","sourceHash":"cbd7bcba1ec8a62e13cc450edcd05cd910992b0d3cd96e1eda7d3a3894569569","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/AIProviderCatalog.js#0004:isProviderId","exportIndex":4,"name":"isProviderId","kind":"function","signature":"isProviderId(value)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/AIProviderCatalog.md","moduleTitle":"browser-extension/services/AIProviderCatalog","source":"webgpu-os/browser-extension/services/AIProviderCatalog.js","import":"/webgpu-os/browser-extension/services/AIProviderCatalog.js","sourceHash":"cbd7bcba1ec8a62e13cc450edcd05cd910992b0d3cd96e1eda7d3a3894569569","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/AIProviderCatalog.js#0005:detectProvider","exportIndex":5,"name":"detectProvider","kind":"function","signature":"detectProvider({ key = '', endpoint = '' } = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/AIProviderCatalog.md","moduleTitle":"browser-extension/services/AIProviderCatalog","source":"webgpu-os/browser-extension/services/AIProviderCatalog.js","import":"/webgpu-os/browser-extension/services/AIProviderCatalog.js","sourceHash":"cbd7bcba1ec8a62e13cc450edcd05cd910992b0d3cd96e1eda7d3a3894569569","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/AIProviderCatalog.js#0006:planCredentialStorage","exportIndex":6,"name":"planCredentialStorage","kind":"function","signature":"planCredentialStorage(providerId, key)","summary":"Decide whether an entered credential can be stored for the explicitly selected provider. Prefix detection is advisory only; it must never move a secret to another provider slot behind the user's back."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/AIProviderCatalog.md","moduleTitle":"browser-extension/services/AIProviderCatalog","source":"webgpu-os/browser-extension/services/AIProviderCatalog.js","import":"/webgpu-os/browser-extension/services/AIProviderCatalog.js","sourceHash":"cbd7bcba1ec8a62e13cc450edcd05cd910992b0d3cd96e1eda7d3a3894569569","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/AIProviderCatalog.js#0007:normalizeEndpoint","exportIndex":7,"name":"normalizeEndpoint","kind":"function","signature":"normalizeEndpoint(value, { defaultBase = '' } = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/AIProviderCatalog.md","moduleTitle":"browser-extension/services/AIProviderCatalog","source":"webgpu-os/browser-extension/services/AIProviderCatalog.js","import":"/webgpu-os/browser-extension/services/AIProviderCatalog.js","sourceHash":"cbd7bcba1ec8a62e13cc450edcd05cd910992b0d3cd96e1eda7d3a3894569569","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/AIProviderCatalog.js#0008:endpointFor","exportIndex":8,"name":"endpointFor","kind":"function","signature":"endpointFor(providerId, customBase = '')","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/AIProviderCatalog.md","moduleTitle":"browser-extension/services/AIProviderCatalog","source":"webgpu-os/browser-extension/services/AIProviderCatalog.js","import":"/webgpu-os/browser-extension/services/AIProviderCatalog.js","sourceHash":"cbd7bcba1ec8a62e13cc450edcd05cd910992b0d3cd96e1eda7d3a3894569569","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/AIProviderCatalog.js#0009:isChatModel","exportIndex":9,"name":"isChatModel","kind":"function","signature":"isChatModel(model)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/AIProviderCatalog.md","moduleTitle":"browser-extension/services/AIProviderCatalog","source":"webgpu-os/browser-extension/services/AIProviderCatalog.js","import":"/webgpu-os/browser-extension/services/AIProviderCatalog.js","sourceHash":"cbd7bcba1ec8a62e13cc450edcd05cd910992b0d3cd96e1eda7d3a3894569569","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/AIProviderCatalog.js#0010:inferModelTaskAffinities","exportIndex":10,"name":"inferModelTaskAffinities","kind":"function","signature":"inferModelTaskAffinities(providerId, model = {})","summary":"Infer preference-only task affinities from bounded catalog evidence. These hints may improve ranking, but must never authorize tools, strict output, private disclosure, or any other compatibility or security decision."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/AIProviderCatalog.md","moduleTitle":"browser-extension/services/AIProviderCatalog","source":"webgpu-os/browser-extension/services/AIProviderCatalog.js","import":"/webgpu-os/browser-extension/services/AIProviderCatalog.js","sourceHash":"cbd7bcba1ec8a62e13cc450edcd05cd910992b0d3cd96e1eda7d3a3894569569","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/AIProviderCatalog.js#0011:inferModelCapabilities","exportIndex":11,"name":"inferModelCapabilities","kind":"function","signature":"inferModelCapabilities(providerId, model = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/AIProviderCatalog.md","moduleTitle":"browser-extension/services/AIProviderCatalog","source":"webgpu-os/browser-extension/services/AIProviderCatalog.js","import":"/webgpu-os/browser-extension/services/AIProviderCatalog.js","sourceHash":"cbd7bcba1ec8a62e13cc450edcd05cd910992b0d3cd96e1eda7d3a3894569569","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/AIProviderCatalog.js#0012:normalizeReasoningControl","exportIndex":12,"name":"normalizeReasoningControl","kind":"function","signature":"normalizeReasoningControl(model = {}, modelId = '')","summary":"Preserve the endpoint's own reasoning control surface. A single `reasoning` boolean cannot answer the questions a caller has to ask before touching reasoning: whether the endpoint rejects a disable (`mandatory`), whether it reasons unless told otherwise (`defaultEnabled`), and which gateway knobs are real for it. OpenRouter reports effort levels and token budgets per model, and both are honoured for only a few families, so a caller that guesses either sends a parameter that silently does nothing or one that fails the request. `softSwitch` is inferred from the model family because it is a training-time prompt convention that no catalog reports."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/AIProviderCatalog.md","moduleTitle":"browser-extension/services/AIProviderCatalog","source":"webgpu-os/browser-extension/services/AIProviderCatalog.js","import":"/webgpu-os/browser-extension/services/AIProviderCatalog.js","sourceHash":"cbd7bcba1ec8a62e13cc450edcd05cd910992b0d3cd96e1eda7d3a3894569569","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/AIProviderCatalog.js#0013:normalizeSupportedParameters","exportIndex":13,"name":"normalizeSupportedParameters","kind":"function","signature":"normalizeSupportedParameters(model = {})","summary":"Preserve exact provider compatibility evidence in one deterministic shape. Some provider APIs use supported_parameters while saved OS routes use supportedParameters, so merge both aliases instead of allowing one to hide the other. Values are bounded before they can enter extension storage."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/AIProviderCatalog.md","moduleTitle":"browser-extension/services/AIProviderCatalog","source":"webgpu-os/browser-extension/services/AIProviderCatalog.js","import":"/webgpu-os/browser-extension/services/AIProviderCatalog.js","sourceHash":"cbd7bcba1ec8a62e13cc450edcd05cd910992b0d3cd96e1eda7d3a3894569569","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/AIProviderCatalog.js#0014:normalizeModel","exportIndex":14,"name":"normalizeModel","kind":"function","signature":"normalizeModel(providerId, raw)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/AIProviderCatalog.md","moduleTitle":"browser-extension/services/AIProviderCatalog","source":"webgpu-os/browser-extension/services/AIProviderCatalog.js","import":"/webgpu-os/browser-extension/services/AIProviderCatalog.js","sourceHash":"cbd7bcba1ec8a62e13cc450edcd05cd910992b0d3cd96e1eda7d3a3894569569","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/AIProviderCatalog.js#0015:PROVIDER_DATA_POLICY_FORMAT","exportIndex":15,"name":"PROVIDER_DATA_POLICY_FORMAT","kind":"constant","signature":"PROVIDER_DATA_POLICY_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/AIProviderCatalog.md","moduleTitle":"browser-extension/services/AIProviderCatalog","source":"webgpu-os/browser-extension/services/AIProviderCatalog.js","import":"/webgpu-os/browser-extension/services/AIProviderCatalog.js","sourceHash":"cbd7bcba1ec8a62e13cc450edcd05cd910992b0d3cd96e1eda7d3a3894569569","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/AIProviderCatalog.js#0016:MODEL_ACCESS_CLASSES","exportIndex":16,"name":"MODEL_ACCESS_CLASSES","kind":"constant","signature":"MODEL_ACCESS_CLASSES","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/AIProviderCatalog.md","moduleTitle":"browser-extension/services/AIProviderCatalog","source":"webgpu-os/browser-extension/services/AIProviderCatalog.js","import":"/webgpu-os/browser-extension/services/AIProviderCatalog.js","sourceHash":"cbd7bcba1ec8a62e13cc450edcd05cd910992b0d3cd96e1eda7d3a3894569569","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/AIProviderCatalog.js#0017:MODEL_TASK_AFFINITIES","exportIndex":17,"name":"MODEL_TASK_AFFINITIES","kind":"constant","signature":"MODEL_TASK_AFFINITIES","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/AIProviderCatalog.md","moduleTitle":"browser-extension/services/AIProviderCatalog","source":"webgpu-os/browser-extension/services/AIProviderCatalog.js","import":"/webgpu-os/browser-extension/services/AIProviderCatalog.js","sourceHash":"cbd7bcba1ec8a62e13cc450edcd05cd910992b0d3cd96e1eda7d3a3894569569","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/AIProviderCatalog.js#0018:PROVIDER_CATALOG","exportIndex":18,"name":"PROVIDER_CATALOG","kind":"constant","signature":"PROVIDER_CATALOG","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/AIProviderCatalog.md","moduleTitle":"browser-extension/services/AIProviderCatalog","source":"webgpu-os/browser-extension/services/AIProviderCatalog.js","import":"/webgpu-os/browser-extension/services/AIProviderCatalog.js","sourceHash":"cbd7bcba1ec8a62e13cc450edcd05cd910992b0d3cd96e1eda7d3a3894569569","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/AIProviderCatalog.js#0019:PROVIDER_IDS","exportIndex":19,"name":"PROVIDER_IDS","kind":"constant","signature":"PROVIDER_IDS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/AIProviderService.md","moduleTitle":"browser-extension/services/AIProviderService","source":"webgpu-os/browser-extension/services/AIProviderService.js","import":"/webgpu-os/browser-extension/services/AIProviderService.js","sourceHash":"e1853c47da604f04c64fb905c24093ed414b7a47d3acd28498a401425324ce6a","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/browser-extension/services/AIProviderService.js","title":"browser-extension/services/AIProviderService","summary":"AIProviderService.js — remote LLM provider bridge for the OS AI Hub. Runs in the extension background service worker context (privileged fetch, no CORS; host_permissions already grant <all_urls> for this extension, so no additional host_permissions are needed for the built-in providers). The OS page NEVER sees provider URLs, headers, or API keys — it only sends {provider, model, messages, params} and gets back {message, usage}. Keys are read via KeyVaultService.getRawKeyInternal(), which is not reachable through the bridge router (see KeyVaultService.js for why). Allowlists: - providerAllowlist/pathAllowlist: AIProviderCatalog is the only set of provider ids + exact endpoint URLs ever fetched for non-custom requests. - originAllowlist (custom provider): CUSTOM_ENDPOINTS is a user-approved https-only allowlist, persisted in chrome.storage.local, populated only via allowCustomEndpoint().","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/AIProviderService.md","moduleTitle":"browser-extension/services/AIProviderService","source":"webgpu-os/browser-extension/services/AIProviderService.js","import":"/webgpu-os/browser-extension/services/AIProviderService.js","sourceHash":"e1853c47da604f04c64fb905c24093ed414b7a47d3acd28498a401425324ce6a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/AIProviderService.js#0000:AIProviderService","exportIndex":0,"name":"AIProviderService","kind":"constant","signature":"AIProviderService","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/AudioService.md","moduleTitle":"browser-extension/services/AudioService","source":"webgpu-os/browser-extension/services/AudioService.js","import":"/webgpu-os/browser-extension/services/AudioService.js","sourceHash":"37b4534fb3e7535bb7508e36860e8d90d4b88b9ac443a02bc5c12e07406d05ec","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/browser-extension/services/AudioService.js","title":"browser-extension/services/AudioService","summary":"AudioService.js — privileged tab-audio bridge for WebGPU OS. Browser page audio inside the OS tab (YouTube, video sites, embedded frames) does not pass through the OS AudioDriver. Chrome extensions can control that audio by capturing the tab stream, replaying it through an offscreen AudioContext, and applying a GainNode. The OS mixer sends the effective gain here; the service worker owns tabCapture permission and the offscreen document owns Web Audio playback.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/AudioService.md","moduleTitle":"browser-extension/services/AudioService","source":"webgpu-os/browser-extension/services/AudioService.js","import":"/webgpu-os/browser-extension/services/AudioService.js","sourceHash":"37b4534fb3e7535bb7508e36860e8d90d4b88b9ac443a02bc5c12e07406d05ec","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/AudioService.js#0000:AudioService","exportIndex":0,"name":"AudioService","kind":"constant","signature":"AudioService","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/BridgeSessionPolicy.md","moduleTitle":"browser-extension/services/BridgeSessionPolicy","source":"webgpu-os/browser-extension/services/BridgeSessionPolicy.js","import":"/webgpu-os/browser-extension/services/BridgeSessionPolicy.js","sourceHash":"78a6297777c71d3f7add6ff48657e36911e7ca31fd2726d227ee015317113317","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/browser-extension/services/BridgeSessionPolicy.js","title":"browser-extension/services/BridgeSessionPolicy","summary":"Memory-only session boundary between the isolated relay and background worker. Secrets never cross window.postMessage. A service-worker restart invalidates every session and forces the still-isolated relay to open a fresh one.","exportCount":2}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/BridgeSessionPolicy.md","moduleTitle":"browser-extension/services/BridgeSessionPolicy","source":"webgpu-os/browser-extension/services/BridgeSessionPolicy.js","import":"/webgpu-os/browser-extension/services/BridgeSessionPolicy.js","sourceHash":"78a6297777c71d3f7add6ff48657e36911e7ca31fd2726d227ee015317113317","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/BridgeSessionPolicy.js#0000:BridgeSessionPolicy","exportIndex":0,"name":"BridgeSessionPolicy","kind":"class","signature":"class BridgeSessionPolicy","summary":"Memory-only session boundary between the isolated relay and background worker. Secrets never cross window.postMessage. A service-worker restart invalidates every session and forces the still-isolated relay to open a fresh one."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/BridgeSessionPolicy.md","moduleTitle":"browser-extension/services/BridgeSessionPolicy","source":"webgpu-os/browser-extension/services/BridgeSessionPolicy.js","import":"/webgpu-os/browser-extension/services/BridgeSessionPolicy.js","sourceHash":"78a6297777c71d3f7add6ff48657e36911e7ca31fd2726d227ee015317113317","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/BridgeSessionPolicy.js#0001:BRIDGE_SESSION_PROTOCOL","exportIndex":1,"name":"BRIDGE_SESSION_PROTOCOL","kind":"constant","signature":"BRIDGE_SESSION_PROTOCOL","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/CorsService.md","moduleTitle":"browser-extension/services/CorsService","source":"webgpu-os/browser-extension/services/CorsService.js","import":"/webgpu-os/browser-extension/services/CorsService.js","sourceHash":"ae8b2545babf01a4c8a2d9db48550aa6526879f5a1faef445c753ff9f952b456","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/browser-extension/services/CorsService.js","title":"browser-extension/services/CorsService","summary":"CorsService.js — per-site opt-in CORS/API unblocking for the OS bridge. Runs in the extension background service worker context. The blanket rule 9005 only injects `Access-Control-Allow-Origin: *` on NON-credentialed static assets (scripts/fonts/etc.), deliberately leaving a framed site's own credentialed `fetch`/XHR/API calls untouched — a wildcard ACAO is illegal for credentialed requests and would break logins. This service lets the user OPT IN, per trusted site, to also unblock those credentialed API calls. For each enabled origin O (host H) we add session rules (tab-scoped to OS tabs) that, for requests INITIATED BY that site's frames (initiatorDomains: [H]), set on the response: Access-Control-Allow-Origin:      O        (echoes the page origin, not *) Access-Control-Allow-Credentials: true Access-Control-Allow-Methods:     GET,POST,PUT,PATCH,DELETE,OPTIONS Access-Control-Allow-Headers:     * Scoping by initiatorDomains keeps this correct with multiple sites open and never affects the user's normal browsing (session rules are tab-scoped).","exportCount":2}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/CorsService.md","moduleTitle":"browser-extension/services/CorsService","source":"webgpu-os/browser-extension/services/CorsService.js","import":"/webgpu-os/browser-extension/services/CorsService.js","sourceHash":"ae8b2545babf01a4c8a2d9db48550aa6526879f5a1faef445c753ff9f952b456","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/CorsService.js#0000:CORS_RULE_BASE","exportIndex":0,"name":"CORS_RULE_BASE","kind":"constant","signature":"CORS_RULE_BASE","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/CorsService.md","moduleTitle":"browser-extension/services/CorsService","source":"webgpu-os/browser-extension/services/CorsService.js","import":"/webgpu-os/browser-extension/services/CorsService.js","sourceHash":"ae8b2545babf01a4c8a2d9db48550aa6526879f5a1faef445c753ff9f952b456","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/CorsService.js#0001:CorsService","exportIndex":1,"name":"CorsService","kind":"constant","signature":"CorsService","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/ExtensionSenderPolicy.md","moduleTitle":"browser-extension/services/ExtensionSenderPolicy","source":"webgpu-os/browser-extension/services/ExtensionSenderPolicy.js","import":"/webgpu-os/browser-extension/services/ExtensionSenderPolicy.js","sourceHash":"3dcfb8a1ab4e083cedd5069458af1182ea9b67db1c7b0c6341aadb0fc172d720","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/browser-extension/services/ExtensionSenderPolicy.js","title":"browser-extension/services/ExtensionSenderPolicy","summary":"Authenticate privileged runtime messages from this extension's own pages. Extension pages opened in a popup window can have sender.tab; content scripts also have sender.tab, so ownership must be decided from the sender URL/origin rather than from tab presence alone.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/ExtensionSenderPolicy.md","moduleTitle":"browser-extension/services/ExtensionSenderPolicy","source":"webgpu-os/browser-extension/services/ExtensionSenderPolicy.js","import":"/webgpu-os/browser-extension/services/ExtensionSenderPolicy.js","sourceHash":"3dcfb8a1ab4e083cedd5069458af1182ea9b67db1c7b0c6341aadb0fc172d720","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/ExtensionSenderPolicy.js#0000:isExtensionPageSender","exportIndex":0,"name":"isExtensionPageSender","kind":"function","signature":"isExtensionPageSender(sender, runtimeId)","summary":"Authenticate privileged runtime messages from this extension's own pages. Extension pages opened in a popup window can have sender.tab; content scripts also have sender.tab, so ownership must be decided from the sender URL/origin rather than from tab presence alone."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/InjectionService.md","moduleTitle":"browser-extension/services/InjectionService","source":"webgpu-os/browser-extension/services/InjectionService.js","import":"/webgpu-os/browser-extension/services/InjectionService.js","sourceHash":"dd77d88ec72cad704d13bb5812710913b49b8c9ed24ef55dbdab0b8fb33890dc","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/browser-extension/services/InjectionService.js","title":"browser-extension/services/InjectionService","summary":"","exportCount":3}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/InjectionService.md","moduleTitle":"browser-extension/services/InjectionService","source":"webgpu-os/browser-extension/services/InjectionService.js","import":"/webgpu-os/browser-extension/services/InjectionService.js","sourceHash":"dd77d88ec72cad704d13bb5812710913b49b8c9ed24ef55dbdab0b8fb33890dc","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/InjectionService.js#0000:INJECTION_BRIDGE_AUTHORIZATION_PROTOCOL","exportIndex":0,"name":"INJECTION_BRIDGE_AUTHORIZATION_PROTOCOL","kind":"constant","signature":"INJECTION_BRIDGE_AUTHORIZATION_PROTOCOL","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/InjectionService.md","moduleTitle":"browser-extension/services/InjectionService","source":"webgpu-os/browser-extension/services/InjectionService.js","import":"/webgpu-os/browser-extension/services/InjectionService.js","sourceHash":"dd77d88ec72cad704d13bb5812710913b49b8c9ed24ef55dbdab0b8fb33890dc","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/InjectionService.js#0001:INJECTION_ONE_USE_AUTHORITY_STATUS_FORMAT","exportIndex":1,"name":"INJECTION_ONE_USE_AUTHORITY_STATUS_FORMAT","kind":"constant","signature":"INJECTION_ONE_USE_AUTHORITY_STATUS_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/InjectionService.md","moduleTitle":"browser-extension/services/InjectionService","source":"webgpu-os/browser-extension/services/InjectionService.js","import":"/webgpu-os/browser-extension/services/InjectionService.js","sourceHash":"dd77d88ec72cad704d13bb5812710913b49b8c9ed24ef55dbdab0b8fb33890dc","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/InjectionService.js#0002:InjectionService","exportIndex":2,"name":"InjectionService","kind":"constant","signature":"InjectionService","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/KeyVaultService.md","moduleTitle":"browser-extension/services/KeyVaultService","source":"webgpu-os/browser-extension/services/KeyVaultService.js","import":"/webgpu-os/browser-extension/services/KeyVaultService.js","sourceHash":"8cbd8da8e4046f9c86d095aea00e870f7dee1b62034c59b792aa305ea0d446e6","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/browser-extension/services/KeyVaultService.js","title":"browser-extension/services/KeyVaultService","summary":"KeyVaultService.js — provider API key storage for the AI Bridge. Runs in the extension background service worker context. Keys are NEVER exposed to the OS page/bridge caller — only status booleans cross the bridge. getRawKeyInternal() remains a module-only worker export. V2 binds provider and generation into AES-GCM additional authenticated data. V1 encrypted envelopes and bounded legacy plaintext remain read-only inputs and migrate on first use. A durable generation tombstone prevents an older persistent credential from reappearing after a session-only switch or an interrupted clear.","exportCount":6}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/KeyVaultService.md","moduleTitle":"browser-extension/services/KeyVaultService","source":"webgpu-os/browser-extension/services/KeyVaultService.js","import":"/webgpu-os/browser-extension/services/KeyVaultService.js","sourceHash":"8cbd8da8e4046f9c86d095aea00e870f7dee1b62034c59b792aa305ea0d446e6","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/KeyVaultService.js#0000:KeyVaultContractError","exportIndex":0,"name":"KeyVaultContractError","kind":"class","signature":"class KeyVaultContractError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/KeyVaultService.md","moduleTitle":"browser-extension/services/KeyVaultService","source":"webgpu-os/browser-extension/services/KeyVaultService.js","import":"/webgpu-os/browser-extension/services/KeyVaultService.js","sourceHash":"8cbd8da8e4046f9c86d095aea00e870f7dee1b62034c59b792aa305ea0d446e6","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/KeyVaultService.js#0001:normalizeKeyVaultEnvelope","exportIndex":1,"name":"normalizeKeyVaultEnvelope","kind":"function","signature":"normalizeKeyVaultEnvelope(provider, raw, { persisted = false, label = 'AI key record' } = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/KeyVaultService.md","moduleTitle":"browser-extension/services/KeyVaultService","source":"webgpu-os/browser-extension/services/KeyVaultService.js","import":"/webgpu-os/browser-extension/services/KeyVaultService.js","sourceHash":"8cbd8da8e4046f9c86d095aea00e870f7dee1b62034c59b792aa305ea0d446e6","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/KeyVaultService.js#0002:normalizeKeyVaultState","exportIndex":2,"name":"normalizeKeyVaultState","kind":"function","signature":"normalizeKeyVaultState(provider, raw, label = 'AI key state')","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/KeyVaultService.md","moduleTitle":"browser-extension/services/KeyVaultService","source":"webgpu-os/browser-extension/services/KeyVaultService.js","import":"/webgpu-os/browser-extension/services/KeyVaultService.js","sourceHash":"8cbd8da8e4046f9c86d095aea00e870f7dee1b62034c59b792aa305ea0d446e6","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/KeyVaultService.js#0003:getRawKeyInternal","exportIndex":3,"name":"getRawKeyInternal","kind":"function","signature":"async getRawKeyInternal(provider)","summary":"Internal-only accessor; deliberately absent from KeyVaultService dispatch."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/KeyVaultService.md","moduleTitle":"browser-extension/services/KeyVaultService","source":"webgpu-os/browser-extension/services/KeyVaultService.js","import":"/webgpu-os/browser-extension/services/KeyVaultService.js","sourceHash":"8cbd8da8e4046f9c86d095aea00e870f7dee1b62034c59b792aa305ea0d446e6","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/KeyVaultService.js#0004:KEY_VAULT_CONTRACTS","exportIndex":4,"name":"KEY_VAULT_CONTRACTS","kind":"constant","signature":"KEY_VAULT_CONTRACTS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/KeyVaultService.md","moduleTitle":"browser-extension/services/KeyVaultService","source":"webgpu-os/browser-extension/services/KeyVaultService.js","import":"/webgpu-os/browser-extension/services/KeyVaultService.js","sourceHash":"8cbd8da8e4046f9c86d095aea00e870f7dee1b62034c59b792aa305ea0d446e6","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/KeyVaultService.js#0005:KeyVaultService","exportIndex":5,"name":"KeyVaultService","kind":"constant","signature":"KeyVaultService","summary":"Page/bridge-facing surface — status only, never the raw key."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/LivePatchRuntime.md","moduleTitle":"browser-extension/services/LivePatchRuntime","source":"webgpu-os/browser-extension/services/LivePatchRuntime.js","import":"/webgpu-os/browser-extension/services/LivePatchRuntime.js","sourceHash":"86a27c2e393abe5751522c8ec7be162c1d7d69ed39ef5321b08229d0293fdd6d","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/browser-extension/services/LivePatchRuntime.js","title":"browser-extension/services/LivePatchRuntime","summary":"Clean-room declarative browser surface editor. This module deliberately accepts data, never JavaScript source. The exported page function is self-contained so chrome.scripting can serialize it into the extension's ISOLATED world without eval, Function, or page-owned callbacks.","exportCount":6}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/LivePatchRuntime.md","moduleTitle":"browser-extension/services/LivePatchRuntime","source":"webgpu-os/browser-extension/services/LivePatchRuntime.js","import":"/webgpu-os/browser-extension/services/LivePatchRuntime.js","sourceHash":"86a27c2e393abe5751522c8ec7be162c1d7d69ed39ef5321b08229d0293fdd6d","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/LivePatchRuntime.js#0000:normalizeBrowserLivePatch","exportIndex":0,"name":"normalizeBrowserLivePatch","kind":"function","signature":"normalizeBrowserLivePatch(patch, tabId)","summary":"Validate and reduce a kernel patch before it crosses the 64 KiB bridge."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/LivePatchRuntime.md","moduleTitle":"browser-extension/services/LivePatchRuntime","source":"webgpu-os/browser-extension/services/LivePatchRuntime.js","import":"/webgpu-os/browser-extension/services/LivePatchRuntime.js","sourceHash":"86a27c2e393abe5751522c8ec7be162c1d7d69ed39ef5321b08229d0293fdd6d","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/LivePatchRuntime.js#0001:normalizeLiveInspectOptions","exportIndex":1,"name":"normalizeLiveInspectOptions","kind":"function","signature":"normalizeLiveInspectOptions(opts = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/LivePatchRuntime.md","moduleTitle":"browser-extension/services/LivePatchRuntime","source":"webgpu-os/browser-extension/services/LivePatchRuntime.js","import":"/webgpu-os/browser-extension/services/LivePatchRuntime.js","sourceHash":"86a27c2e393abe5751522c8ec7be162c1d7d69ed39ef5321b08229d0293fdd6d","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/LivePatchRuntime.js#0002:normalizeLiveApplyOptions","exportIndex":2,"name":"normalizeLiveApplyOptions","kind":"function","signature":"normalizeLiveApplyOptions(opts = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/LivePatchRuntime.md","moduleTitle":"browser-extension/services/LivePatchRuntime","source":"webgpu-os/browser-extension/services/LivePatchRuntime.js","import":"/webgpu-os/browser-extension/services/LivePatchRuntime.js","sourceHash":"86a27c2e393abe5751522c8ec7be162c1d7d69ed39ef5321b08229d0293fdd6d","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/LivePatchRuntime.js#0003:normalizeLiveHistoryOptions","exportIndex":3,"name":"normalizeLiveHistoryOptions","kind":"function","signature":"normalizeLiveHistoryOptions(opts = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/LivePatchRuntime.md","moduleTitle":"browser-extension/services/LivePatchRuntime","source":"webgpu-os/browser-extension/services/LivePatchRuntime.js","import":"/webgpu-os/browser-extension/services/LivePatchRuntime.js","sourceHash":"86a27c2e393abe5751522c8ec7be162c1d7d69ed39ef5321b08229d0293fdd6d","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/LivePatchRuntime.js#0004:normalizeBrowserPatchId","exportIndex":4,"name":"normalizeBrowserPatchId","kind":"function","signature":"normalizeBrowserPatchId(value)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/LivePatchRuntime.md","moduleTitle":"browser-extension/services/LivePatchRuntime","source":"webgpu-os/browser-extension/services/LivePatchRuntime.js","import":"/webgpu-os/browser-extension/services/LivePatchRuntime.js","sourceHash":"86a27c2e393abe5751522c8ec7be162c1d7d69ed39ef5321b08229d0293fdd6d","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/LivePatchRuntime.js#0005:runBrowserLivePatch","exportIndex":5,"name":"runBrowserLivePatch","kind":"function","signature":"runBrowserLivePatch(command, payload = {})","summary":"Self-contained function executed by chrome.scripting in the ISOLATED world. Do not introduce references to module-scope bindings here."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/NaviFacultyStatusService.md","moduleTitle":"browser-extension/services/NaviFacultyStatusService","source":"webgpu-os/browser-extension/services/NaviFacultyStatusService.js","import":"/webgpu-os/browser-extension/services/NaviFacultyStatusService.js","sourceHash":"1f0772eb23f4ce14313ec6140336670a72784d12c290a567aa232c8bc7f6d94d","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/browser-extension/services/NaviFacultyStatusService.js","title":"browser-extension/services/NaviFacultyStatusService","summary":"Memory-only projection of kernel-owned Browser Semantic Faculty readiness. The Companion does not sign, verify, install, enable, or approve Faculties. It accepts a content-free status only through an authenticated OS bridge session so extension-owned UI can show which exact kernel package revision the OS reports as verified. A service-worker restart or bridge revocation clears the projection.","exportCount":5}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/NaviFacultyStatusService.md","moduleTitle":"browser-extension/services/NaviFacultyStatusService","source":"webgpu-os/browser-extension/services/NaviFacultyStatusService.js","import":"/webgpu-os/browser-extension/services/NaviFacultyStatusService.js","sourceHash":"1f0772eb23f4ce14313ec6140336670a72784d12c290a567aa232c8bc7f6d94d","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/NaviFacultyStatusService.js#0000:NaviFacultyStatusRegistry","exportIndex":0,"name":"NaviFacultyStatusRegistry","kind":"class","signature":"class NaviFacultyStatusRegistry","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/NaviFacultyStatusService.md","moduleTitle":"browser-extension/services/NaviFacultyStatusService","source":"webgpu-os/browser-extension/services/NaviFacultyStatusService.js","import":"/webgpu-os/browser-extension/services/NaviFacultyStatusService.js","sourceHash":"1f0772eb23f4ce14313ec6140336670a72784d12c290a567aa232c8bc7f6d94d","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/NaviFacultyStatusService.js#0001:NAVI_BROWSER_FACULTY_STATUS_FORMAT","exportIndex":1,"name":"NAVI_BROWSER_FACULTY_STATUS_FORMAT","kind":"constant","signature":"NAVI_BROWSER_FACULTY_STATUS_FORMAT","summary":"Memory-only projection of kernel-owned Browser Semantic Faculty readiness. The Companion does not sign, verify, install, enable, or approve Faculties. It accepts a content-free status only through an authenticated OS bridge session so extension-owned UI can show which exact kernel package revision the OS reports as verified. A service-worker restart or bridge revocation clears the projection."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/NaviFacultyStatusService.md","moduleTitle":"browser-extension/services/NaviFacultyStatusService","source":"webgpu-os/browser-extension/services/NaviFacultyStatusService.js","import":"/webgpu-os/browser-extension/services/NaviFacultyStatusService.js","sourceHash":"1f0772eb23f4ce14313ec6140336670a72784d12c290a567aa232c8bc7f6d94d","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/NaviFacultyStatusService.js#0002:NAVI_BROWSER_FACULTY_ID","exportIndex":2,"name":"NAVI_BROWSER_FACULTY_ID","kind":"constant","signature":"NAVI_BROWSER_FACULTY_ID","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/NaviFacultyStatusService.md","moduleTitle":"browser-extension/services/NaviFacultyStatusService","source":"webgpu-os/browser-extension/services/NaviFacultyStatusService.js","import":"/webgpu-os/browser-extension/services/NaviFacultyStatusService.js","sourceHash":"1f0772eb23f4ce14313ec6140336670a72784d12c290a567aa232c8bc7f6d94d","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/NaviFacultyStatusService.js#0003:NAVI_BROWSER_FACULTY_PACKAGE_ID","exportIndex":3,"name":"NAVI_BROWSER_FACULTY_PACKAGE_ID","kind":"constant","signature":"NAVI_BROWSER_FACULTY_PACKAGE_ID","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/NaviFacultyStatusService.md","moduleTitle":"browser-extension/services/NaviFacultyStatusService","source":"webgpu-os/browser-extension/services/NaviFacultyStatusService.js","import":"/webgpu-os/browser-extension/services/NaviFacultyStatusService.js","sourceHash":"1f0772eb23f4ce14313ec6140336670a72784d12c290a567aa232c8bc7f6d94d","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/NaviFacultyStatusService.js#0004:NaviFacultyStatusService","exportIndex":4,"name":"NaviFacultyStatusService","kind":"constant","signature":"NaviFacultyStatusService","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/NavigationService.md","moduleTitle":"browser-extension/services/NavigationService","source":"webgpu-os/browser-extension/services/NavigationService.js","import":"/webgpu-os/browser-extension/services/NavigationService.js","sourceHash":"688873ad43be5aeb4e96b86cacf4fbb5ecd9a5ca92e8a9d13f6fdb4ea92a84a4","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/browser-extension/services/NavigationService.js","title":"browser-extension/services/NavigationService","summary":"NavigationService.js — webNavigation history + OS push events. Runs in the extension background service worker context. The background registers webNavigation listeners that call NavigationService.addEvent(). The OS can poll history() or receive live push events via the __os_bridge_event__ channel.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/NavigationService.md","moduleTitle":"browser-extension/services/NavigationService","source":"webgpu-os/browser-extension/services/NavigationService.js","import":"/webgpu-os/browser-extension/services/NavigationService.js","sourceHash":"688873ad43be5aeb4e96b86cacf4fbb5ecd9a5ca92e8a9d13f6fdb4ea92a84a4","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/NavigationService.js#0000:NavigationService","exportIndex":0,"name":"NavigationService","kind":"constant","signature":"NavigationService","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/OpenRouterAuthService.md","moduleTitle":"browser-extension/services/OpenRouterAuthService","source":"webgpu-os/browser-extension/services/OpenRouterAuthService.js","import":"/webgpu-os/browser-extension/services/OpenRouterAuthService.js","sourceHash":"30b39140cdae6a0a4ee6a50eb661008fafdab3fbd8a21ad972cd2bb707d960d9","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/browser-extension/services/OpenRouterAuthService.js","title":"browser-extension/services/OpenRouterAuthService","summary":"OpenRouterAuthService.js — extension-owned OAuth PKCE sign-in. The authorization code and generated API key never cross the page bridge. Only the extension credential window can start this flow, and the resulting key is immediately encrypted through KeyVaultService.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/OpenRouterAuthService.md","moduleTitle":"browser-extension/services/OpenRouterAuthService","source":"webgpu-os/browser-extension/services/OpenRouterAuthService.js","import":"/webgpu-os/browser-extension/services/OpenRouterAuthService.js","sourceHash":"30b39140cdae6a0a4ee6a50eb661008fafdab3fbd8a21ad972cd2bb707d960d9","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/OpenRouterAuthService.js#0000:OpenRouterAuthService","exportIndex":0,"name":"OpenRouterAuthService","kind":"constant","signature":"OpenRouterAuthService","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/ProviderProtocol.md","moduleTitle":"browser-extension/services/ProviderProtocol","source":"webgpu-os/browser-extension/services/ProviderProtocol.js","import":"/webgpu-os/browser-extension/services/ProviderProtocol.js","sourceHash":"23f75c2f6b35865e93ee73ce03d8210ed7b24d00338247cbd466f56a46f7078c","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/browser-extension/services/ProviderProtocol.js","title":"browser-extension/services/ProviderProtocol","summary":"Pure OpenAI-compatible request/response helpers shared by the privileged extension transport and the browser-direct mobile fallback. This module performs no storage, network, DOM, or chrome.* work.","exportCount":28}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/ProviderProtocol.md","moduleTitle":"browser-extension/services/ProviderProtocol","source":"webgpu-os/browser-extension/services/ProviderProtocol.js","import":"/webgpu-os/browser-extension/services/ProviderProtocol.js","sourceHash":"23f75c2f6b35865e93ee73ce03d8210ed7b24d00338247cbd466f56a46f7078c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/ProviderProtocol.js#0000:providerErrorNumber","exportIndex":0,"name":"providerErrorNumber","kind":"function","signature":"providerErrorNumber(value = {})","summary":"Stable public diagnosis family; never contains provider-controlled text."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/ProviderProtocol.md","moduleTitle":"browser-extension/services/ProviderProtocol","source":"webgpu-os/browser-extension/services/ProviderProtocol.js","import":"/webgpu-os/browser-extension/services/ProviderProtocol.js","sourceHash":"23f75c2f6b35865e93ee73ce03d8210ed7b24d00338247cbd466f56a46f7078c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/ProviderProtocol.js#0001:createProviderIncidentId","exportIndex":1,"name":"createProviderIncidentId","kind":"function","signature":"createProviderIncidentId()","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/ProviderProtocol.md","moduleTitle":"browser-extension/services/ProviderProtocol","source":"webgpu-os/browser-extension/services/ProviderProtocol.js","import":"/webgpu-os/browser-extension/services/ProviderProtocol.js","sourceHash":"23f75c2f6b35865e93ee73ce03d8210ed7b24d00338247cbd466f56a46f7078c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/ProviderProtocol.js#0002:applyProviderErrorContext","exportIndex":2,"name":"applyProviderErrorContext","kind":"function","signature":"applyProviderErrorContext(error, context = {})","summary":"Attach only bounded, structured-clone-safe diagnostic correlation fields."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/ProviderProtocol.md","moduleTitle":"browser-extension/services/ProviderProtocol","source":"webgpu-os/browser-extension/services/ProviderProtocol.js","import":"/webgpu-os/browser-extension/services/ProviderProtocol.js","sourceHash":"23f75c2f6b35865e93ee73ce03d8210ed7b24d00338247cbd466f56a46f7078c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/ProviderProtocol.js#0003:validateProviderMessages","exportIndex":3,"name":"validateProviderMessages","kind":"function","signature":"validateProviderMessages(messages)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/ProviderProtocol.md","moduleTitle":"browser-extension/services/ProviderProtocol","source":"webgpu-os/browser-extension/services/ProviderProtocol.js","import":"/webgpu-os/browser-extension/services/ProviderProtocol.js","sourceHash":"23f75c2f6b35865e93ee73ce03d8210ed7b24d00338247cbd466f56a46f7078c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/ProviderProtocol.js#0004:normalizeReasoningConfig","exportIndex":4,"name":"normalizeReasoningConfig","kind":"function","signature":"normalizeReasoningConfig(value)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/ProviderProtocol.md","moduleTitle":"browser-extension/services/ProviderProtocol","source":"webgpu-os/browser-extension/services/ProviderProtocol.js","import":"/webgpu-os/browser-extension/services/ProviderProtocol.js","sourceHash":"23f75c2f6b35865e93ee73ce03d8210ed7b24d00338247cbd466f56a46f7078c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/ProviderProtocol.js#0005:providerResponseModel","exportIndex":5,"name":"providerResponseModel","kind":"function","signature":"providerResponseModel(value, fallback = '')","summary":"Normalize a provider model identifier without trusting arbitrary text."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/ProviderProtocol.md","moduleTitle":"browser-extension/services/ProviderProtocol","source":"webgpu-os/browser-extension/services/ProviderProtocol.js","import":"/webgpu-os/browser-extension/services/ProviderProtocol.js","sourceHash":"23f75c2f6b35865e93ee73ce03d8210ed7b24d00338247cbd466f56a46f7078c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/ProviderProtocol.js#0006:providerModelAttribution","exportIndex":6,"name":"providerModelAttribution","kind":"function","signature":"providerModelAttribution({ provider = '', requestedModel = '', responseModel = '' } = {})","summary":"Keep the requested route separate from provider-reported attribution. `model` remains backward-compatible, but modelEvidence makes an omitted or dynamic alias explicitly non-concrete so callers cannot mistake a request fallback for observed provider output."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/ProviderProtocol.md","moduleTitle":"browser-extension/services/ProviderProtocol","source":"webgpu-os/browser-extension/services/ProviderProtocol.js","import":"/webgpu-os/browser-extension/services/ProviderProtocol.js","sourceHash":"23f75c2f6b35865e93ee73ce03d8210ed7b24d00338247cbd466f56a46f7078c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/ProviderProtocol.js#0007:normalizeProviderTools","exportIndex":7,"name":"normalizeProviderTools","kind":"function","signature":"normalizeProviderTools(value)","summary":"Normalize the provider-facing projection of locally authoritative OS tools. These definitions help a model form typed calls; they never grant execution authority, which remains with the descriptor hash, graph validator, and ToolRouter after the provider response returns."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/ProviderProtocol.md","moduleTitle":"browser-extension/services/ProviderProtocol","source":"webgpu-os/browser-extension/services/ProviderProtocol.js","import":"/webgpu-os/browser-extension/services/ProviderProtocol.js","sourceHash":"23f75c2f6b35865e93ee73ce03d8210ed7b24d00338247cbd466f56a46f7078c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/ProviderProtocol.js#0008:openAIProviderToolDefinitions","exportIndex":8,"name":"openAIProviderToolDefinitions","kind":"function","signature":"openAIProviderToolDefinitions(value)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/ProviderProtocol.md","moduleTitle":"browser-extension/services/ProviderProtocol","source":"webgpu-os/browser-extension/services/ProviderProtocol.js","import":"/webgpu-os/browser-extension/services/ProviderProtocol.js","sourceHash":"23f75c2f6b35865e93ee73ce03d8210ed7b24d00338247cbd466f56a46f7078c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/ProviderProtocol.js#0009:anthropicProviderToolDefinitions","exportIndex":9,"name":"anthropicProviderToolDefinitions","kind":"function","signature":"anthropicProviderToolDefinitions(value)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/ProviderProtocol.md","moduleTitle":"browser-extension/services/ProviderProtocol","source":"webgpu-os/browser-extension/services/ProviderProtocol.js","import":"/webgpu-os/browser-extension/services/ProviderProtocol.js","sourceHash":"23f75c2f6b35865e93ee73ce03d8210ed7b24d00338247cbd466f56a46f7078c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/ProviderProtocol.js#0010:canonicalProviderToolCalls","exportIndex":10,"name":"canonicalProviderToolCalls","kind":"function","signature":"canonicalProviderToolCalls(payload, providerTools = [], transport = 'provider-native')","summary":"Convert completed native provider calls into one provider-neutral batch."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/ProviderProtocol.md","moduleTitle":"browser-extension/services/ProviderProtocol","source":"webgpu-os/browser-extension/services/ProviderProtocol.js","import":"/webgpu-os/browser-extension/services/ProviderProtocol.js","sourceHash":"23f75c2f6b35865e93ee73ce03d8210ed7b24d00338247cbd466f56a46f7078c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/ProviderProtocol.js#0011:createProviderToolStreamAccumulator","exportIndex":11,"name":"createProviderToolStreamAccumulator","kind":"function","signature":"createProviderToolStreamAccumulator(providerTools = [], transport = 'provider-native-stream')","summary":"Accumulate provider tool-call stream fragments without executing partial arguments. ID/name conflicts and malformed mixed batches fail atomically."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/ProviderProtocol.md","moduleTitle":"browser-extension/services/ProviderProtocol","source":"webgpu-os/browser-extension/services/ProviderProtocol.js","import":"/webgpu-os/browser-extension/services/ProviderProtocol.js","sourceHash":"23f75c2f6b35865e93ee73ce03d8210ed7b24d00338247cbd466f56a46f7078c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/ProviderProtocol.js#0012:buildOpenAICompatibleBody","exportIndex":12,"name":"buildOpenAICompatibleBody","kind":"function","signature":"buildOpenAICompatibleBody(spec, providerDefinition = null)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/ProviderProtocol.md","moduleTitle":"browser-extension/services/ProviderProtocol","source":"webgpu-os/browser-extension/services/ProviderProtocol.js","import":"/webgpu-os/browser-extension/services/ProviderProtocol.js","sourceHash":"23f75c2f6b35865e93ee73ce03d8210ed7b24d00338247cbd466f56a46f7078c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/ProviderProtocol.js#0013:normalizeProviderRequirements","exportIndex":13,"name":"normalizeProviderRequirements","kind":"function","signature":"normalizeProviderRequirements(value)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/ProviderProtocol.md","moduleTitle":"browser-extension/services/ProviderProtocol","source":"webgpu-os/browser-extension/services/ProviderProtocol.js","import":"/webgpu-os/browser-extension/services/ProviderProtocol.js","sourceHash":"23f75c2f6b35865e93ee73ce03d8210ed7b24d00338247cbd466f56a46f7078c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/ProviderProtocol.js#0014:normalizeOutputSchema","exportIndex":14,"name":"normalizeOutputSchema","kind":"function","signature":"normalizeOutputSchema(value)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/ProviderProtocol.md","moduleTitle":"browser-extension/services/ProviderProtocol","source":"webgpu-os/browser-extension/services/ProviderProtocol.js","import":"/webgpu-os/browser-extension/services/ProviderProtocol.js","sourceHash":"23f75c2f6b35865e93ee73ce03d8210ed7b24d00338247cbd466f56a46f7078c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/ProviderProtocol.js#0015:providerError","exportIndex":15,"name":"providerError","kind":"function","signature":"providerError(json, status)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/ProviderProtocol.md","moduleTitle":"browser-extension/services/ProviderProtocol","source":"webgpu-os/browser-extension/services/ProviderProtocol.js","import":"/webgpu-os/browser-extension/services/ProviderProtocol.js","sourceHash":"23f75c2f6b35865e93ee73ce03d8210ed7b24d00338247cbd466f56a46f7078c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/ProviderProtocol.js#0016:providerHttpError","exportIndex":16,"name":"providerHttpError","kind":"function","signature":"providerHttpError(json, status, provider = '', responseMetadata = null)","summary":"Construct the only provider-originated Error shape allowed to cross the AI bridge. Endpoint URLs, headers, response bodies, request content, and keys are deliberately excluded. Retryability is asserted only for unambiguous transient HTTP classes; every other status remains unclassified so the Navi broker can apply its own fail-closed policy."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/ProviderProtocol.md","moduleTitle":"browser-extension/services/ProviderProtocol","source":"webgpu-os/browser-extension/services/ProviderProtocol.js","import":"/webgpu-os/browser-extension/services/ProviderProtocol.js","sourceHash":"23f75c2f6b35865e93ee73ce03d8210ed7b24d00338247cbd466f56a46f7078c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/ProviderProtocol.js#0017:providerOutputError","exportIndex":17,"name":"providerOutputError","kind":"function","signature":"providerOutputError(code, provider, message, retryable = true, responseMetadata = null)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/ProviderProtocol.md","moduleTitle":"browser-extension/services/ProviderProtocol","source":"webgpu-os/browser-extension/services/ProviderProtocol.js","import":"/webgpu-os/browser-extension/services/ProviderProtocol.js","sourceHash":"23f75c2f6b35865e93ee73ce03d8210ed7b24d00338247cbd466f56a46f7078c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/ProviderProtocol.js#0018:providerChoiceError","exportIndex":18,"name":"providerChoiceError","kind":"function","signature":"providerChoiceError(json, status, provider = '', responseMetadata = null)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/ProviderProtocol.md","moduleTitle":"browser-extension/services/ProviderProtocol","source":"webgpu-os/browser-extension/services/ProviderProtocol.js","import":"/webgpu-os/browser-extension/services/ProviderProtocol.js","sourceHash":"23f75c2f6b35865e93ee73ce03d8210ed7b24d00338247cbd466f56a46f7078c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/ProviderProtocol.js#0019:providerResponseMetadata","exportIndex":19,"name":"providerResponseMetadata","kind":"function","signature":"providerResponseMetadata(response)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/ProviderProtocol.md","moduleTitle":"browser-extension/services/ProviderProtocol","source":"webgpu-os/browser-extension/services/ProviderProtocol.js","import":"/webgpu-os/browser-extension/services/ProviderProtocol.js","sourceHash":"23f75c2f6b35865e93ee73ce03d8210ed7b24d00338247cbd466f56a46f7078c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/ProviderProtocol.js#0020:assertUsableProviderOutput","exportIndex":20,"name":"assertUsableProviderOutput","kind":"function","signature":"assertUsableProviderOutput({ message = '', reasoning = '', toolCalls = [], provider = '', strictOutput = false } = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/ProviderProtocol.md","moduleTitle":"browser-extension/services/ProviderProtocol","source":"webgpu-os/browser-extension/services/ProviderProtocol.js","import":"/webgpu-os/browser-extension/services/ProviderProtocol.js","sourceHash":"23f75c2f6b35865e93ee73ce03d8210ed7b24d00338247cbd466f56a46f7078c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/ProviderProtocol.js#0021:providerFailureProjection","exportIndex":21,"name":"providerFailureProjection","kind":"function","signature":"providerFailureProjection(error)","summary":"Return a bounded structured-clone-safe view of an AI provider failure."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/ProviderProtocol.md","moduleTitle":"browser-extension/services/ProviderProtocol","source":"webgpu-os/browser-extension/services/ProviderProtocol.js","import":"/webgpu-os/browser-extension/services/ProviderProtocol.js","sourceHash":"23f75c2f6b35865e93ee73ce03d8210ed7b24d00338247cbd466f56a46f7078c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/ProviderProtocol.js#0022:visibleReasoningText","exportIndex":22,"name":"visibleReasoningText","kind":"function","signature":"visibleReasoningText(value)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/ProviderProtocol.md","moduleTitle":"browser-extension/services/ProviderProtocol","source":"webgpu-os/browser-extension/services/ProviderProtocol.js","import":"/webgpu-os/browser-extension/services/ProviderProtocol.js","sourceHash":"23f75c2f6b35865e93ee73ce03d8210ed7b24d00338247cbd466f56a46f7078c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/ProviderProtocol.js#0023:openAICompatibleReasoning","exportIndex":23,"name":"openAICompatibleReasoning","kind":"function","signature":"openAICompatibleReasoning(message = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/ProviderProtocol.md","moduleTitle":"browser-extension/services/ProviderProtocol","source":"webgpu-os/browser-extension/services/ProviderProtocol.js","import":"/webgpu-os/browser-extension/services/ProviderProtocol.js","sourceHash":"23f75c2f6b35865e93ee73ce03d8210ed7b24d00338247cbd466f56a46f7078c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/ProviderProtocol.js#0024:visibleMessageText","exportIndex":24,"name":"visibleMessageText","kind":"function","signature":"visibleMessageText(value)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/ProviderProtocol.md","moduleTitle":"browser-extension/services/ProviderProtocol","source":"webgpu-os/browser-extension/services/ProviderProtocol.js","import":"/webgpu-os/browser-extension/services/ProviderProtocol.js","sourceHash":"23f75c2f6b35865e93ee73ce03d8210ed7b24d00338247cbd466f56a46f7078c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/ProviderProtocol.js#0025:safeAttachmentData","exportIndex":25,"name":"safeAttachmentData","kind":"function","signature":"safeAttachmentData(value)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/ProviderProtocol.md","moduleTitle":"browser-extension/services/ProviderProtocol","source":"webgpu-os/browser-extension/services/ProviderProtocol.js","import":"/webgpu-os/browser-extension/services/ProviderProtocol.js","sourceHash":"23f75c2f6b35865e93ee73ce03d8210ed7b24d00338247cbd466f56a46f7078c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/ProviderProtocol.js#0026:PROVIDER_ERROR_CONTRACT_VERSION","exportIndex":26,"name":"PROVIDER_ERROR_CONTRACT_VERSION","kind":"constant","signature":"PROVIDER_ERROR_CONTRACT_VERSION","summary":"Pure OpenAI-compatible request/response helpers shared by the privileged extension transport and the browser-direct mobile fallback. This module performs no storage, network, DOM, or chrome.* work."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/ProviderProtocol.md","moduleTitle":"browser-extension/services/ProviderProtocol","source":"webgpu-os/browser-extension/services/ProviderProtocol.js","import":"/webgpu-os/browser-extension/services/ProviderProtocol.js","sourceHash":"23f75c2f6b35865e93ee73ce03d8210ed7b24d00338247cbd466f56a46f7078c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/ProviderProtocol.js#0027:PROVIDER_STATUS_EVIDENCE_VERSION","exportIndex":27,"name":"PROVIDER_STATUS_EVIDENCE_VERSION","kind":"constant","signature":"PROVIDER_STATUS_EVIDENCE_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/ResidentService.md","moduleTitle":"browser-extension/services/ResidentService","source":"webgpu-os/browser-extension/services/ResidentService.js","import":"/webgpu-os/browser-extension/services/ResidentService.js","sourceHash":"76898333d5c83e21d132ff3547c0e3e7612ca3b84f24f782ed2fb627f441f3c2","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/browser-extension/services/ResidentService.js","title":"browser-extension/services/ResidentService","summary":"ResidentService.js — manages the resident SecureMesh node (offscreen document). Exposed via the bridge router (service name `resident`) so the trusted OS page can query/toggle it, and via dedicated messages for the popup. Keeps an offscreen document alive (MV3's persistent WebRTC-capable context) using a chrome.alarms keep-alive that respawns the service worker to re-ensure the doc exists. Privacy: this only ever stores the PUBLIC cert bundle the OS page pushes (pub key, name, room) — never the identity private key. It is OFF by default and fully user-controlled. Real background mesh reachability is NOT attempted here (keep an OS tab open for that); this is a lightweight cert vault + keepalive responder.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/ResidentService.md","moduleTitle":"browser-extension/services/ResidentService","source":"webgpu-os/browser-extension/services/ResidentService.js","import":"/webgpu-os/browser-extension/services/ResidentService.js","sourceHash":"76898333d5c83e21d132ff3547c0e3e7612ca3b84f24f782ed2fb627f441f3c2","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/ResidentService.js#0000:ResidentService","exportIndex":0,"name":"ResidentService","kind":"constant","signature":"ResidentService","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/RuleService.md","moduleTitle":"browser-extension/services/RuleService","source":"webgpu-os/browser-extension/services/RuleService.js","import":"/webgpu-os/browser-extension/services/RuleService.js","sourceHash":"3bf657a047b8c2e04e23fabbc49b257ec1ec28b939ded1a872c59ee330b89de4","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/browser-extension/services/RuleService.js","title":"browser-extension/services/RuleService","summary":"RuleService.js — declarativeNetRequest dynamic rule manager for the OS bridge. Runs in the extension background service worker context. User-added rules use IDs >= 50000 to avoid colliding with the built-in frame-unblock rules (IDs 100-102).","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/RuleService.md","moduleTitle":"browser-extension/services/RuleService","source":"webgpu-os/browser-extension/services/RuleService.js","import":"/webgpu-os/browser-extension/services/RuleService.js","sourceHash":"3bf657a047b8c2e04e23fabbc49b257ec1ec28b939ded1a872c59ee330b89de4","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/RuleService.js#0000:RuleService","exportIndex":0,"name":"RuleService","kind":"constant","signature":"RuleService","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/SemanticAutomationRuntime.md","moduleTitle":"browser-extension/services/SemanticAutomationRuntime","source":"webgpu-os/browser-extension/services/SemanticAutomationRuntime.js","import":"/webgpu-os/browser-extension/services/SemanticAutomationRuntime.js","sourceHash":"afe26c64aca27862d852aee505c3ec2bbdaa3e25f2b055cd333cd4978a4a0cc9","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/browser-extension/services/SemanticAutomationRuntime.js","title":"browser-extension/services/SemanticAutomationRuntime","summary":"Validate and compact one AI Echo browser-semantic request before it crosses the extension boundary. Unknown fields fail closed so the protocol cannot silently grow into a generic page-execution channel.","exportCount":3}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/SemanticAutomationRuntime.md","moduleTitle":"browser-extension/services/SemanticAutomationRuntime","source":"webgpu-os/browser-extension/services/SemanticAutomationRuntime.js","import":"/webgpu-os/browser-extension/services/SemanticAutomationRuntime.js","sourceHash":"afe26c64aca27862d852aee505c3ec2bbdaa3e25f2b055cd333cd4978a4a0cc9","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/SemanticAutomationRuntime.js#0000:normalizeBrowserSemanticRequest","exportIndex":0,"name":"normalizeBrowserSemanticRequest","kind":"function","signature":"normalizeBrowserSemanticRequest(request = {})","summary":"Validate and compact one AI Echo browser-semantic request before it crosses the extension boundary. Unknown fields fail closed so the protocol cannot silently grow into a generic page-execution channel."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/SemanticAutomationRuntime.md","moduleTitle":"browser-extension/services/SemanticAutomationRuntime","source":"webgpu-os/browser-extension/services/SemanticAutomationRuntime.js","import":"/webgpu-os/browser-extension/services/SemanticAutomationRuntime.js","sourceHash":"afe26c64aca27862d852aee505c3ec2bbdaa3e25f2b055cd333cd4978a4a0cc9","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/SemanticAutomationRuntime.js#0001:runBrowserSemanticAction","exportIndex":1,"name":"runBrowserSemanticAction","kind":"function","signature":"runBrowserSemanticAction(request)","summary":"Packaged Chrome scripting entry point. This function is intentionally self-contained because chrome.scripting serializes the function body into the target tab; it cannot close over extension service-worker state."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/SemanticAutomationRuntime.md","moduleTitle":"browser-extension/services/SemanticAutomationRuntime","source":"webgpu-os/browser-extension/services/SemanticAutomationRuntime.js","import":"/webgpu-os/browser-extension/services/SemanticAutomationRuntime.js","sourceHash":"afe26c64aca27862d852aee505c3ec2bbdaa3e25f2b055cd333cd4978a4a0cc9","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/SemanticAutomationRuntime.js#0002:BROWSER_SEMANTIC_PROTOCOL","exportIndex":2,"name":"BROWSER_SEMANTIC_PROTOCOL","kind":"constant","signature":"BROWSER_SEMANTIC_PROTOCOL","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/TabService.md","moduleTitle":"browser-extension/services/TabService","source":"webgpu-os/browser-extension/services/TabService.js","import":"/webgpu-os/browser-extension/services/TabService.js","sourceHash":"2f9ddcd793f3aab6ebde7db1d3492674dc0dcc1df88e4c7526bb572dbd2f38d9","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/browser-extension/services/TabService.js","title":"browser-extension/services/TabService","summary":"TabService.js — chrome.tabs wrapper for the OS bridge. Runs in the extension background service worker context.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/TabService.md","moduleTitle":"browser-extension/services/TabService","source":"webgpu-os/browser-extension/services/TabService.js","import":"/webgpu-os/browser-extension/services/TabService.js","sourceHash":"2f9ddcd793f3aab6ebde7db1d3492674dc0dcc1df88e4c7526bb572dbd2f38d9","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/TabService.js#0000:TabService","exportIndex":0,"name":"TabService","kind":"constant","signature":"TabService","summary":"TabService.js — chrome.tabs wrapper for the OS bridge. Runs in the extension background service worker context."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/TrustedOsOriginPolicy.md","moduleTitle":"browser-extension/services/TrustedOsOriginPolicy","source":"webgpu-os/browser-extension/services/TrustedOsOriginPolicy.js","import":"/webgpu-os/browser-extension/services/TrustedOsOriginPolicy.js","sourceHash":"5f5dd15dca83e246750ae15743550eada9f61bcd90a19b82b056fd6870289533","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/browser-extension/services/TrustedOsOriginPolicy.js","title":"browser-extension/services/TrustedOsOriginPolicy","summary":"Exact OS origins trusted with privileged browser bridge authority.","exportCount":2}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/TrustedOsOriginPolicy.md","moduleTitle":"browser-extension/services/TrustedOsOriginPolicy","source":"webgpu-os/browser-extension/services/TrustedOsOriginPolicy.js","import":"/webgpu-os/browser-extension/services/TrustedOsOriginPolicy.js","sourceHash":"5f5dd15dca83e246750ae15743550eada9f61bcd90a19b82b056fd6870289533","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/TrustedOsOriginPolicy.js#0000:isTrustedOsOrigin","exportIndex":0,"name":"isTrustedOsOrigin","kind":"function","signature":"isTrustedOsOrigin(value)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/TrustedOsOriginPolicy.md","moduleTitle":"browser-extension/services/TrustedOsOriginPolicy","source":"webgpu-os/browser-extension/services/TrustedOsOriginPolicy.js","import":"/webgpu-os/browser-extension/services/TrustedOsOriginPolicy.js","sourceHash":"5f5dd15dca83e246750ae15743550eada9f61bcd90a19b82b056fd6870289533","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/TrustedOsOriginPolicy.js#0001:TRUSTED_OS_ORIGINS","exportIndex":1,"name":"TRUSTED_OS_ORIGINS","kind":"constant","signature":"TRUSTED_OS_ORIGINS","summary":"Exact OS origins trusted with privileged browser bridge authority."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/WebMCPBridgeRuntime.md","moduleTitle":"browser-extension/services/WebMCPBridgeRuntime","source":"webgpu-os/browser-extension/services/WebMCPBridgeRuntime.js","import":"/webgpu-os/browser-extension/services/WebMCPBridgeRuntime.js","sourceHash":"51cbfa7bc337d387972f684acccff4ec98f811cc381ac30fd06e2335865c6f50","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/browser-extension/services/WebMCPBridgeRuntime.js","title":"browser-extension/services/WebMCPBridgeRuntime","summary":"WebMCPBridgeRuntime.js - clean-room, versioned adapter between AI Echo and the browser's evolving WebMCP surface. Page-owned metadata and results are always untrusted. The extension never exposes callbacks, Window objects, or credentials across the OS bridge.","exportCount":3}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/WebMCPBridgeRuntime.md","moduleTitle":"browser-extension/services/WebMCPBridgeRuntime","source":"webgpu-os/browser-extension/services/WebMCPBridgeRuntime.js","import":"/webgpu-os/browser-extension/services/WebMCPBridgeRuntime.js","sourceHash":"51cbfa7bc337d387972f684acccff4ec98f811cc381ac30fd06e2335865c6f50","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/WebMCPBridgeRuntime.js#0000:normalizeBrowserWebMCPRequest","exportIndex":0,"name":"normalizeBrowserWebMCPRequest","kind":"function","signature":"normalizeBrowserWebMCPRequest(request = {})","summary":"Validate one bridge request before any page script is dispatched."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/WebMCPBridgeRuntime.md","moduleTitle":"browser-extension/services/WebMCPBridgeRuntime","source":"webgpu-os/browser-extension/services/WebMCPBridgeRuntime.js","import":"/webgpu-os/browser-extension/services/WebMCPBridgeRuntime.js","sourceHash":"51cbfa7bc337d387972f684acccff4ec98f811cc381ac30fd06e2335865c6f50","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/WebMCPBridgeRuntime.js#0001:runBrowserWebMCPAction","exportIndex":1,"name":"runBrowserWebMCPAction","kind":"function","signature":"async runBrowserWebMCPAction(request)","summary":"Packaged Chrome scripting entry point. It deliberately feature-detects the origin-trial API, because WebMCP is still a Community Group draft and the browser execution helper is not yet part of the portable specification."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/browser-extension/services/WebMCPBridgeRuntime.md","moduleTitle":"browser-extension/services/WebMCPBridgeRuntime","source":"webgpu-os/browser-extension/services/WebMCPBridgeRuntime.js","import":"/webgpu-os/browser-extension/services/WebMCPBridgeRuntime.js","sourceHash":"51cbfa7bc337d387972f684acccff4ec98f811cc381ac30fd06e2335865c6f50","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/browser-extension/services/WebMCPBridgeRuntime.js#0002:BROWSER_WEBMCP_PROTOCOL","exportIndex":2,"name":"BROWSER_WEBMCP_PROTOCOL","kind":"constant","signature":"BROWSER_WEBMCP_PROTOCOL","summary":"WebMCPBridgeRuntime.js - clean-room, versioned adapter between AI Echo and the browser's evolving WebMCP surface. Page-owned metadata and results are always untrusted. The extension never exposes callbacks, Window objects, or credentials across the OS bridge."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/drivers/AudioDriver.md","moduleTitle":"drivers/AudioDriver","source":"webgpu-os/drivers/AudioDriver.js","import":"/webgpu-os/drivers/AudioDriver.js","sourceHash":"f313b42ca6886ab3671b9dde19a440cfe943c9a7883d0f496eb3a15c8c3b6619","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/drivers/AudioDriver.js","title":"drivers/AudioDriver","summary":"AudioDriver.js — the OS audio server (kernel service). Provides system-wide audio output routing, a per-app volume mixer, output-device switching, OS-level media transport (navigator.mediaSession), and opt-in spatial (window-position) panning. Mirrors the kernel-service pattern of AmbientEngine / ThemeEngine: created in KernelBootstrap, exposed via createAudioSyscalls() in Syscalls.js, guarded per-app in guardSyscalls(). ── Two routing models ────────────────────────────────────────────────────────── 1. Shared-context routing (true central mix): apps hand the driver an <audio>/<video> element (attachElement) or an AudioNode built in the OS context (context() + attachNode). The driver builds: source → sessionGain → analyser → stereoPanner → masterGain → destination(setSinkId) 2. Cooperative sessions: apps that keep their own AudioContext register with an onVolume(effective, muted) / onPan(pan) callback. The driver cannot touch their nodes, so it calls the callback whenever the user changes master/app volume, mute, or pan, and the app applies it to its own graph. Everything no-ops safely before the first user gesture (autoplay policy) and on browsers without setSinkId / mediaSession. ── Events ────────────────────────────────────────────────────────────────────── kernel.events.emit('os:audio-change', { type })   // 'sessions' | 'master' | 'devices' | 'spatial'","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/drivers/AudioDriver.md","moduleTitle":"drivers/AudioDriver","source":"webgpu-os/drivers/AudioDriver.js","import":"/webgpu-os/drivers/AudioDriver.js","sourceHash":"f313b42ca6886ab3671b9dde19a440cfe943c9a7883d0f496eb3a15c8c3b6619","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/drivers/AudioDriver.js#0000:AudioDriver","exportIndex":0,"name":"AudioDriver","kind":"class","signature":"class AudioDriver","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/drivers/CryptoDriver.md","moduleTitle":"drivers/CryptoDriver","source":"webgpu-os/drivers/CryptoDriver.js","import":"/webgpu-os/drivers/CryptoDriver.js","sourceHash":"755a998072e36a7a520a06ca5f8aaca992b7598877b6d0a9915a1290ec88727e","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/drivers/CryptoDriver.js","title":"drivers/CryptoDriver","summary":"CryptoDriver.js — OS-level cryptographic identity driver. Wraps CollabIdentity (ECDSA P-256) and exposes a simple API: - Persistent key pair stored in IndexedDB (survives page reload) - Same fingerprint = same user across sessions - sign(data)                  → ECDSA signature bytes - verify(pubKeyRaw, data, sig) → boolean - publicKeyRaw / fingerprint   → identity Used by: - kernel/Syscalls.js  → syscalls.crypto.* - chat room           → signed messages (tamper-evident + authenticated) - future game systems → anti-cheat signed receipts, session proofs","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/drivers/CryptoDriver.md","moduleTitle":"drivers/CryptoDriver","source":"webgpu-os/drivers/CryptoDriver.js","import":"/webgpu-os/drivers/CryptoDriver.js","sourceHash":"755a998072e36a7a520a06ca5f8aaca992b7598877b6d0a9915a1290ec88727e","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/drivers/CryptoDriver.js#0000:CryptoDriver","exportIndex":0,"name":"CryptoDriver","kind":"class","signature":"class CryptoDriver","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/drivers/EmbeddedParticleNode.md","moduleTitle":"drivers/EmbeddedParticleNode","source":"webgpu-os/drivers/EmbeddedParticleNode.js","import":"/webgpu-os/drivers/EmbeddedParticleNode.js","sourceHash":"7c49eb8e94b6bc3308a52a423758839bcdffebaeda53aabf10b981a72697ee59","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/drivers/EmbeddedParticleNode.js","title":"drivers/EmbeddedParticleNode","summary":"One embedded Particle node per browser profile. Resident availability and temporary supernode/witness roles are facets of this same node identity.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/drivers/EmbeddedParticleNode.md","moduleTitle":"drivers/EmbeddedParticleNode","source":"webgpu-os/drivers/EmbeddedParticleNode.js","import":"/webgpu-os/drivers/EmbeddedParticleNode.js","sourceHash":"7c49eb8e94b6bc3308a52a423758839bcdffebaeda53aabf10b981a72697ee59","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/drivers/EmbeddedParticleNode.js#0000:EmbeddedParticleNode","exportIndex":0,"name":"EmbeddedParticleNode","kind":"class","signature":"class EmbeddedParticleNode","summary":"One embedded Particle node per browser profile. Resident availability and temporary supernode/witness roles are facets of this same node identity."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/drivers/NetDriver.md","moduleTitle":"drivers/NetDriver","source":"webgpu-os/drivers/NetDriver.js","import":"/webgpu-os/drivers/NetDriver.js","sourceHash":"4b6787f9f2ca94701560056f5aa90d0cf3c5e89ef262737f4c6a5c24fe5e41fd","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/drivers/NetDriver.js","title":"drivers/NetDriver","summary":"NetDriver.js — Phase 5 network driver for WebGPU OS. Tiered transport (fastest-wins): Tier 1 — BroadcastChannel (same-origin tabs, <1ms, always available) Tier 2 — WebRTC full-mesh via CollabCore + pinned Particle V2 signaling (cross-machine). BitTorrent remains an explicit, off-by-default hard fallback. Public API (mirrored by kernel/Syscalls.js net namespace): connect(roomId, opts)          — join a named room disconnect()                   — leave current room send(channel, data)            — broadcast to all peers sendTo(peerId, channel, data)  — unicast to specific peer on(channel, cb)                — subscribe to incoming channel messages off(channel, cb)               — unsubscribe peers()                        — list connected peers { id, transport } isConnected()                  — true if at least one peer stats()                        — transport statistics selfId                         — this peer's UUID","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/drivers/NetDriver.md","moduleTitle":"drivers/NetDriver","source":"webgpu-os/drivers/NetDriver.js","import":"/webgpu-os/drivers/NetDriver.js","sourceHash":"4b6787f9f2ca94701560056f5aa90d0cf3c5e89ef262737f4c6a5c24fe5e41fd","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/drivers/NetDriver.js#0000:NetDriver","exportIndex":0,"name":"NetDriver","kind":"class","signature":"class NetDriver","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/drivers/NetworkDriver.md","moduleTitle":"drivers/NetworkDriver","source":"webgpu-os/drivers/NetworkDriver.js","import":"/webgpu-os/drivers/NetworkDriver.js","sourceHash":"bcbdfcceb281ffac8d10856e1bb6f3dd3b9628730f0f42bcfcc02001869d94ee","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/drivers/NetworkDriver.js","title":"drivers/NetworkDriver","summary":"drivers/NetworkDriver.js — kernel driver backing `syscalls.network.*` / `syscalls.sync.*` / `syscalls.workstation.*` (network plan Phase 6 webgpu-os wiring, previously deferred — see C:\\Users\\btspa\\.windsurf\\plans\\particle-network-layer-2bf6f0.md). Thin glue only: delegates to engine/network's already-complete client-side modules (identity, routes/MasterServerList, the shared pinned ParticleNetworkDaemon, syncManager, workstation) and reads/writes the SAME localStorage-backed config `factory/apps/network-manager/NetworkManagerApp.js` already uses (`os.network.masterServers` / `os.network.syncRules`), so any app calling these syscalls sees the exact same state the Control Panel shows — one source of truth, not a second copy. Security model (see kernel/RuleGraph.js): `network.read`/`sync.read` are low-risk status/config visibility; `network.connect` actually opens a Masterserver session and can attach/signal on routes (declaration-gated, high risk); `sync.manage` changes what syncs where (medium risk). Every live-session method requires `connect()` to have been called first for that url — apps cannot attach/signal/discover on a session they never opened, even though the underlying WebSocket may be SHARED with other OS features via the V2 daemon registry (or the V1 registry only for explicit compatibility endpoints).","exportCount":3}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/drivers/NetworkDriver.md","moduleTitle":"drivers/NetworkDriver","source":"webgpu-os/drivers/NetworkDriver.js","import":"/webgpu-os/drivers/NetworkDriver.js","sourceHash":"bcbdfcceb281ffac8d10856e1bb6f3dd3b9628730f0f42bcfcc02001869d94ee","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/drivers/NetworkDriver.js#0000:NetworkDriver","exportIndex":0,"name":"NetworkDriver","kind":"class","signature":"class NetworkDriver","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/drivers/NetworkDriver.md","moduleTitle":"drivers/NetworkDriver","source":"webgpu-os/drivers/NetworkDriver.js","import":"/webgpu-os/drivers/NetworkDriver.js","sourceHash":"bcbdfcceb281ffac8d10856e1bb6f3dd3b9628730f0f42bcfcc02001869d94ee","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/drivers/NetworkDriver.js#0001:PARTICLE_BACKBONE_ROUTE_ID","exportIndex":1,"name":"PARTICLE_BACKBONE_ROUTE_ID","kind":"constant","signature":"PARTICLE_BACKBONE_ROUTE_ID","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/drivers/NetworkDriver.md","moduleTitle":"drivers/NetworkDriver","source":"webgpu-os/drivers/NetworkDriver.js","import":"/webgpu-os/drivers/NetworkDriver.js","sourceHash":"bcbdfcceb281ffac8d10856e1bb6f3dd3b9628730f0f42bcfcc02001869d94ee","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/drivers/NetworkDriver.js#0002:RESIDENT_NODE_ROUTE_ID","exportIndex":2,"name":"RESIDENT_NODE_ROUTE_ID","kind":"constant","signature":"RESIDENT_NODE_ROUTE_ID","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/drivers/NetworkPersistence.md","moduleTitle":"drivers/NetworkPersistence","source":"webgpu-os/drivers/NetworkPersistence.js","import":"/webgpu-os/drivers/NetworkPersistence.js","sourceHash":"5b362b082ba6aa1ef36c5ad557a241ed51c6ab1cb3605e4218b55406e58ba9c7","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/drivers/NetworkPersistence.js","title":"drivers/NetworkPersistence","summary":"drivers/NetworkPersistence.js — OS-integration persistence for engine/network's intentionally storage-agnostic modules (network plan §15/§38 persistence gap: \"EventLog is in-memory only\" / \"PeerTicketStore is in-memory only... callers are responsible for persisting\"). engine/network never imports webgpu-os/storage/AppSandbox.js (same layering rule as drivers/ResidentBootstrapSource.js) — this file is the glue that reads/writes an AppSandbox instance using the snapshot/hydrate/ replay functions those modules already expose: - engine/network/groupLedger/GroupLedger.js: replayGroupLedger() - engine/network/peerTickets/PeerTicketStore.js: snapshotPeerTicketStore()/hydratePeerTicketStore() AppSandbox encrypts everything at rest (AES-256-GCM, device+app-bound key) and is isolated per appId (webgpu-os/storage/AppSandbox.js) — callers should pass the sandbox of THE APP THAT OWNS THIS DATA (e.g. a future groups/chat app), not some shared \"network\" pseudo-app, so the sandbox's per-app isolation guarantee stays meaningful.","exportCount":13}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/drivers/NetworkPersistence.md","moduleTitle":"drivers/NetworkPersistence","source":"webgpu-os/drivers/NetworkPersistence.js","import":"/webgpu-os/drivers/NetworkPersistence.js","sourceHash":"5b362b082ba6aa1ef36c5ad557a241ed51c6ab1cb3605e4218b55406e58ba9c7","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/drivers/NetworkPersistence.js#0000:saveGroupLedger","exportIndex":0,"name":"saveGroupLedger","kind":"function","signature":"async saveGroupLedger(sandbox, ledger)","summary":"Persist a group ledger's full replayable state: its static config (groupId/founders/mode/threshold) plus `eventLog.entries()`. Cheap to call after every `proposeGroupEvent`/`genesisGroup` — it's a full snapshot, not an incremental diff, so there's nothing to get out of sync."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/drivers/NetworkPersistence.md","moduleTitle":"drivers/NetworkPersistence","source":"webgpu-os/drivers/NetworkPersistence.js","import":"/webgpu-os/drivers/NetworkPersistence.js","sourceHash":"5b362b082ba6aa1ef36c5ad557a241ed51c6ab1cb3605e4218b55406e58ba9c7","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/drivers/NetworkPersistence.js#0001:loadGroupLedger","exportIndex":1,"name":"loadGroupLedger","kind":"function","signature":"async loadGroupLedger(sandbox, groupId)","summary":"Load and replay a previously-saved group ledger."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/drivers/NetworkPersistence.md","moduleTitle":"drivers/NetworkPersistence","source":"webgpu-os/drivers/NetworkPersistence.js","import":"/webgpu-os/drivers/NetworkPersistence.js","sourceHash":"5b362b082ba6aa1ef36c5ad557a241ed51c6ab1cb3605e4218b55406e58ba9c7","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/drivers/NetworkPersistence.js#0002:listSavedGroupIds","exportIndex":2,"name":"listSavedGroupIds","kind":"function","signature":"async listSavedGroupIds(sandbox)","summary":"groupIds this sandbox currently has a saved ledger for."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/drivers/NetworkPersistence.md","moduleTitle":"drivers/NetworkPersistence","source":"webgpu-os/drivers/NetworkPersistence.js","import":"/webgpu-os/drivers/NetworkPersistence.js","sourceHash":"5b362b082ba6aa1ef36c5ad557a241ed51c6ab1cb3605e4218b55406e58ba9c7","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/drivers/NetworkPersistence.js#0003:deleteGroupLedger","exportIndex":3,"name":"deleteGroupLedger","kind":"function","signature":"async deleteGroupLedger(sandbox, groupId)","summary":"Forget a saved group ledger. Does not affect any already-live in-memory ledger object."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/drivers/NetworkPersistence.md","moduleTitle":"drivers/NetworkPersistence","source":"webgpu-os/drivers/NetworkPersistence.js","import":"/webgpu-os/drivers/NetworkPersistence.js","sourceHash":"5b362b082ba6aa1ef36c5ad557a241ed51c6ab1cb3605e4218b55406e58ba9c7","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/drivers/NetworkPersistence.js#0004:savePeerTickets","exportIndex":4,"name":"savePeerTickets","kind":"function","signature":"async savePeerTickets(sandbox, store)","summary":"Persist a peer ticket store (full snapshot — see PeerTicketStore.js's snapshotPeerTicketStore)."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/drivers/NetworkPersistence.md","moduleTitle":"drivers/NetworkPersistence","source":"webgpu-os/drivers/NetworkPersistence.js","import":"/webgpu-os/drivers/NetworkPersistence.js","sourceHash":"5b362b082ba6aa1ef36c5ad557a241ed51c6ab1cb3605e4218b55406e58ba9c7","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/drivers/NetworkPersistence.js#0005:loadPeerTickets","exportIndex":5,"name":"loadPeerTickets","kind":"function","signature":"async loadPeerTickets(sandbox)","summary":"Load a previously-saved peer ticket store, or a fresh empty one if none is saved."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/drivers/NetworkPersistence.md","moduleTitle":"drivers/NetworkPersistence","source":"webgpu-os/drivers/NetworkPersistence.js","import":"/webgpu-os/drivers/NetworkPersistence.js","sourceHash":"5b362b082ba6aa1ef36c5ad557a241ed51c6ab1cb3605e4218b55406e58ba9c7","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/drivers/NetworkPersistence.js#0006:saveStateChannelCheckpoint","exportIndex":6,"name":"saveStateChannelCheckpoint","kind":"function","signature":"async saveStateChannelCheckpoint(sandbox, channelId, checkpoint)","summary":"Persist one complete, fenced State Channel authority checkpoint."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/drivers/NetworkPersistence.md","moduleTitle":"drivers/NetworkPersistence","source":"webgpu-os/drivers/NetworkPersistence.js","import":"/webgpu-os/drivers/NetworkPersistence.js","sourceHash":"5b362b082ba6aa1ef36c5ad557a241ed51c6ab1cb3605e4218b55406e58ba9c7","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/drivers/NetworkPersistence.js#0007:loadStateChannelCheckpoint","exportIndex":7,"name":"loadStateChannelCheckpoint","kind":"function","signature":"async loadStateChannelCheckpoint(sandbox, channelId)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/drivers/NetworkPersistence.md","moduleTitle":"drivers/NetworkPersistence","source":"webgpu-os/drivers/NetworkPersistence.js","import":"/webgpu-os/drivers/NetworkPersistence.js","sourceHash":"5b362b082ba6aa1ef36c5ad557a241ed51c6ab1cb3605e4218b55406e58ba9c7","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/drivers/NetworkPersistence.js#0008:listSavedStateChannelIds","exportIndex":8,"name":"listSavedStateChannelIds","kind":"function","signature":"async listSavedStateChannelIds(sandbox)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/drivers/NetworkPersistence.md","moduleTitle":"drivers/NetworkPersistence","source":"webgpu-os/drivers/NetworkPersistence.js","import":"/webgpu-os/drivers/NetworkPersistence.js","sourceHash":"5b362b082ba6aa1ef36c5ad557a241ed51c6ab1cb3605e4218b55406e58ba9c7","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/drivers/NetworkPersistence.js#0009:deleteStateChannelCheckpoint","exportIndex":9,"name":"deleteStateChannelCheckpoint","kind":"function","signature":"async deleteStateChannelCheckpoint(sandbox, channelId)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/drivers/NetworkPersistence.md","moduleTitle":"drivers/NetworkPersistence","source":"webgpu-os/drivers/NetworkPersistence.js","import":"/webgpu-os/drivers/NetworkPersistence.js","sourceHash":"5b362b082ba6aa1ef36c5ad557a241ed51c6ab1cb3605e4218b55406e58ba9c7","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/drivers/NetworkPersistence.js#0010:saveStateChannelOutbox","exportIndex":10,"name":"saveStateChannelOutbox","kind":"function","signature":"async saveStateChannelOutbox(sandbox, channelId, intents, maxEntries = 512)","summary":"Bounded pending intents survive tab reload until a receipt is observed."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/drivers/NetworkPersistence.md","moduleTitle":"drivers/NetworkPersistence","source":"webgpu-os/drivers/NetworkPersistence.js","import":"/webgpu-os/drivers/NetworkPersistence.js","sourceHash":"5b362b082ba6aa1ef36c5ad557a241ed51c6ab1cb3605e4218b55406e58ba9c7","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/drivers/NetworkPersistence.js#0011:loadStateChannelOutbox","exportIndex":11,"name":"loadStateChannelOutbox","kind":"function","signature":"async loadStateChannelOutbox(sandbox, channelId)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/drivers/NetworkPersistence.md","moduleTitle":"drivers/NetworkPersistence","source":"webgpu-os/drivers/NetworkPersistence.js","import":"/webgpu-os/drivers/NetworkPersistence.js","sourceHash":"5b362b082ba6aa1ef36c5ad557a241ed51c6ab1cb3605e4218b55406e58ba9c7","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/drivers/NetworkPersistence.js#0012:createStateChannelCheckpointStore","exportIndex":12,"name":"createStateChannelCheckpointStore","kind":"function","signature":"createStateChannelCheckpointStore(sandbox)","summary":"Adapter consumed by StateChannelAuthorityCoordinator."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/drivers/ProfileDriver.md","moduleTitle":"drivers/ProfileDriver","source":"webgpu-os/drivers/ProfileDriver.js","import":"/webgpu-os/drivers/ProfileDriver.js","sourceHash":"7d3e94222579aaa037c7957318a19c59c4edc9a0a9bcea0083be441dc85baeef","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/drivers/ProfileDriver.js","title":"drivers/ProfileDriver","summary":"ProfileDriver.js — OS-level multi-user profile + per-profile identity. SecureMesh Phase 1. Lawful, user-owned identity: profile = OS-created account + per-profile ECDSA P-256 keypair + random (hashed) install id + user-held recovery code. Privacy rules baked in: - NO hardware/browser fingerprinting feeds identity. `localDeviceIdHash` is a SHA-256 of a RANDOM, user-resettable install id (never the raw id, never any device characteristics). - The private key is NEVER stored raw. The working signing key is held as a NON-EXTRACTABLE WebCrypto key (cannot be exfiltrated). A separate copy is stored encrypted (AES-GCM, PBKDF2-from-recovery-code) purely for user-triggered export / portability. Storage: IndexedDB `profiles` store (CryptoKey objects are structured-cloneable); active profile id + random install id live in the generic `kv` store. This driver is additive — the legacy global CryptoDriver identity is left untouched. Apps opt into per-user identity via `syscalls.profile.*`.","exportCount":4}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/drivers/ProfileDriver.md","moduleTitle":"drivers/ProfileDriver","source":"webgpu-os/drivers/ProfileDriver.js","import":"/webgpu-os/drivers/ProfileDriver.js","sourceHash":"7d3e94222579aaa037c7957318a19c59c4edc9a0a9bcea0083be441dc85baeef","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/drivers/ProfileDriver.js#0000:ProfileSchemaVersionError","exportIndex":0,"name":"ProfileSchemaVersionError","kind":"class","signature":"class ProfileSchemaVersionError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/drivers/ProfileDriver.md","moduleTitle":"drivers/ProfileDriver","source":"webgpu-os/drivers/ProfileDriver.js","import":"/webgpu-os/drivers/ProfileDriver.js","sourceHash":"7d3e94222579aaa037c7957318a19c59c4edc9a0a9bcea0083be441dc85baeef","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/drivers/ProfileDriver.js#0001:ProfileDriver","exportIndex":1,"name":"ProfileDriver","kind":"class","signature":"class ProfileDriver","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/drivers/ProfileDriver.md","moduleTitle":"drivers/ProfileDriver","source":"webgpu-os/drivers/ProfileDriver.js","import":"/webgpu-os/drivers/ProfileDriver.js","sourceHash":"7d3e94222579aaa037c7957318a19c59c4edc9a0a9bcea0083be441dc85baeef","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/drivers/ProfileDriver.js#0002:assertSupportedProfileSchemaVersion","exportIndex":2,"name":"assertSupportedProfileSchemaVersion","kind":"function","signature":"assertSupportedProfileSchemaVersion(value, { allowMissing = true, label = 'profile record' } = {})","summary":"Reject records from a newer writer before normalization can discard fields. Missing versions are accepted as the legacy v1 shape and migrated explicitly."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/drivers/ProfileDriver.md","moduleTitle":"drivers/ProfileDriver","source":"webgpu-os/drivers/ProfileDriver.js","import":"/webgpu-os/drivers/ProfileDriver.js","sourceHash":"7d3e94222579aaa037c7957318a19c59c4edc9a0a9bcea0083be441dc85baeef","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/drivers/ProfileDriver.js#0003:PROFILE_RECORD_SCHEMA_VERSION","exportIndex":3,"name":"PROFILE_RECORD_SCHEMA_VERSION","kind":"constant","signature":"PROFILE_RECORD_SCHEMA_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/drivers/RealmNetworkFeatureFlags.md","moduleTitle":"drivers/RealmNetworkFeatureFlags","source":"webgpu-os/drivers/RealmNetworkFeatureFlags.js","import":"/webgpu-os/drivers/RealmNetworkFeatureFlags.js","sourceHash":"26e48354db138ba6a2c871ad6ef7d968aede9956516a99ce29bbac28175b0563","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/drivers/RealmNetworkFeatureFlags.js","title":"drivers/RealmNetworkFeatureFlags","summary":"Persisted rollout gates for the additive Realm Network upgrade. Realm Network Alpha ships with every completed slice active. Version 2 stores only explicit user overrides, so later default changes cannot erase a deliberate opt-out. Callers may inject a storage-compatible object in tests; the driver uses localStorage in the OS.","exportCount":6}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/drivers/RealmNetworkFeatureFlags.md","moduleTitle":"drivers/RealmNetworkFeatureFlags","source":"webgpu-os/drivers/RealmNetworkFeatureFlags.js","import":"/webgpu-os/drivers/RealmNetworkFeatureFlags.js","sourceHash":"26e48354db138ba6a2c871ad6ef7d968aede9956516a99ce29bbac28175b0563","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/drivers/RealmNetworkFeatureFlags.js#0000:RealmNetworkFeatureFlags","exportIndex":0,"name":"RealmNetworkFeatureFlags","kind":"class","signature":"class RealmNetworkFeatureFlags","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/drivers/RealmNetworkFeatureFlags.md","moduleTitle":"drivers/RealmNetworkFeatureFlags","source":"webgpu-os/drivers/RealmNetworkFeatureFlags.js","import":"/webgpu-os/drivers/RealmNetworkFeatureFlags.js","sourceHash":"26e48354db138ba6a2c871ad6ef7d968aede9956516a99ce29bbac28175b0563","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/drivers/RealmNetworkFeatureFlags.js#0001:createRealmNetworkFeatureFlags","exportIndex":1,"name":"createRealmNetworkFeatureFlags","kind":"function","signature":"createRealmNetworkFeatureFlags(options)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/drivers/RealmNetworkFeatureFlags.md","moduleTitle":"drivers/RealmNetworkFeatureFlags","source":"webgpu-os/drivers/RealmNetworkFeatureFlags.js","import":"/webgpu-os/drivers/RealmNetworkFeatureFlags.js","sourceHash":"26e48354db138ba6a2c871ad6ef7d968aede9956516a99ce29bbac28175b0563","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/drivers/RealmNetworkFeatureFlags.js#0002:REALM_NETWORK_FEATURE_FLAG_VERSION","exportIndex":2,"name":"REALM_NETWORK_FEATURE_FLAG_VERSION","kind":"constant","signature":"REALM_NETWORK_FEATURE_FLAG_VERSION","summary":"Persisted rollout gates for the additive Realm Network upgrade. Realm Network Alpha ships with every completed slice active. Version 2 stores only explicit user overrides, so later default changes cannot erase a deliberate opt-out. Callers may inject a storage-compatible object in tests; the driver uses localStorage in the OS."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/drivers/RealmNetworkFeatureFlags.md","moduleTitle":"drivers/RealmNetworkFeatureFlags","source":"webgpu-os/drivers/RealmNetworkFeatureFlags.js","import":"/webgpu-os/drivers/RealmNetworkFeatureFlags.js","sourceHash":"26e48354db138ba6a2c871ad6ef7d968aede9956516a99ce29bbac28175b0563","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/drivers/RealmNetworkFeatureFlags.js#0003:REALM_NETWORK_FEATURE_FLAG_KEY","exportIndex":3,"name":"REALM_NETWORK_FEATURE_FLAG_KEY","kind":"constant","signature":"REALM_NETWORK_FEATURE_FLAG_KEY","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/drivers/RealmNetworkFeatureFlags.md","moduleTitle":"drivers/RealmNetworkFeatureFlags","source":"webgpu-os/drivers/RealmNetworkFeatureFlags.js","import":"/webgpu-os/drivers/RealmNetworkFeatureFlags.js","sourceHash":"26e48354db138ba6a2c871ad6ef7d968aede9956516a99ce29bbac28175b0563","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/drivers/RealmNetworkFeatureFlags.js#0004:REALM_NETWORK_LEGACY_FEATURE_FLAG_KEY","exportIndex":4,"name":"REALM_NETWORK_LEGACY_FEATURE_FLAG_KEY","kind":"constant","signature":"REALM_NETWORK_LEGACY_FEATURE_FLAG_KEY","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/drivers/RealmNetworkFeatureFlags.md","moduleTitle":"drivers/RealmNetworkFeatureFlags","source":"webgpu-os/drivers/RealmNetworkFeatureFlags.js","import":"/webgpu-os/drivers/RealmNetworkFeatureFlags.js","sourceHash":"26e48354db138ba6a2c871ad6ef7d968aede9956516a99ce29bbac28175b0563","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/drivers/RealmNetworkFeatureFlags.js#0005:REALM_NETWORK_FEATURE_DEFAULTS","exportIndex":5,"name":"REALM_NETWORK_FEATURE_DEFAULTS","kind":"constant","signature":"REALM_NETWORK_FEATURE_DEFAULTS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/drivers/ResidentBootstrapSource.md","moduleTitle":"drivers/ResidentBootstrapSource","source":"webgpu-os/drivers/ResidentBootstrapSource.js","import":"/webgpu-os/drivers/ResidentBootstrapSource.js","sourceHash":"43cc93bf26c2d258a0089b5f4d0e2847e8349bbab57aea97fc56259942d48fad","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/drivers/ResidentBootstrapSource.js","title":"drivers/ResidentBootstrapSource","summary":"drivers/ResidentBootstrapSource.js — OS-integration adapter wiring the browser extension's resident cert vault (browser-extension/services/ ResidentService.js) into engine/network/dht/BootstrapSource.js's `{ id, scan, advertise }` interface (network plan §37/§47/§48). `engine/network` intentionally has no `webgpu-os` dependency (same layering rule as the deferred `kernel/Syscalls.js` wiring — see BootstrapSource.js's header comment) — this file is the OS-side glue the plan called out as the natural adapter, kept honest about what the resident node actually does today: - The resident node is a lightweight, OFF-BY-DEFAULT cert vault + a chrome.alarms keepalive heartbeat living in an MV3 offscreen document. It does NOT run a real WebRTC/Masterserver client and does NOT answer DISCOVER while no OS tab is open (see ResidentService.js's own header comment). Do not oversell this as \"background reachability\" anywhere in the UI (network plan §42's \"never overstate privacy/reachability\"). - What it DOES give a bootstrap attempt: a small piece of persisted memory that survives an OS tab closing — \"the last identity this browser saved for room X\" — which is a legitimate (if modest) bootstrap hint once a new tab reopens, and a place to advertise our current identity so it's still there next time.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/drivers/ResidentBootstrapSource.md","moduleTitle":"drivers/ResidentBootstrapSource","source":"webgpu-os/drivers/ResidentBootstrapSource.js","import":"/webgpu-os/drivers/ResidentBootstrapSource.js","sourceHash":"43cc93bf26c2d258a0089b5f4d0e2847e8349bbab57aea97fc56259942d48fad","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/drivers/ResidentBootstrapSource.js#0000:createResidentBootstrapSource","exportIndex":0,"name":"createResidentBootstrapSource","kind":"function","signature":"createResidentBootstrapSource({ browserBridge } = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/drivers/WebSurfaceDriver.md","moduleTitle":"drivers/WebSurfaceDriver","source":"webgpu-os/drivers/WebSurfaceDriver.js","import":"/webgpu-os/drivers/WebSurfaceDriver.js","sourceHash":"fcf674329d159f472ae93b245aa36a8230f8a4a5019e2e7253c333f3ec71c9bb","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/drivers/WebSurfaceDriver.js","title":"drivers/WebSurfaceDriver","summary":"WebSurfaceDriver.js — Render any cross-origin website as a live WebGPU texture. ── How it works ───────────────────────────────────────────────────────────── 1. Creates an <iframe> that loads the target URL (browser renders it normally) 2. User clicks \"Share Tab\" once via getDisplayMedia({ preferCurrentTab: true }) 3. Element Capture API restricts the stream to just the iframe's pixels 4. HTMLVideoElement.srcObject = stream  →  live video feed of the website 5. device.importExternalTexture({ source: videoEl }) → WebGPU texture every frame Result: any cross-origin URL renders as a live GPU texture surface inside the OS. ── Browser support ─────────────────────────────────────────────────────────── getDisplayMedia:   all major browsers Element Capture:   Chrome 116+  (RestrictionTarget.fromElement) importExternalTexture: Chrome/Edge (WebGPU) ── Security model ──────────────────────────────────────────────────────────── - User must approve screen share once (one-time gesture, can be re-used) - iframe is sandboxed; cross-origin website cannot access our JS - We only get pixels, not DOM of the foreign page - Mouse/keyboard relay is optional (events forwarded to iframe element)","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/drivers/WebSurfaceDriver.md","moduleTitle":"drivers/WebSurfaceDriver","source":"webgpu-os/drivers/WebSurfaceDriver.js","import":"/webgpu-os/drivers/WebSurfaceDriver.js","sourceHash":"fcf674329d159f472ae93b245aa36a8230f8a4a5019e2e7253c333f3ec71c9bb","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/drivers/WebSurfaceDriver.js#0000:WebSurfaceDriver","exportIndex":0,"name":"WebSurfaceDriver","kind":"class","signature":"class WebSurfaceDriver","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/AmbientEngine.md","moduleTitle":"kernel/AmbientEngine","source":"webgpu-os/kernel/AmbientEngine.js","import":"/webgpu-os/kernel/AmbientEngine.js","sourceHash":"bb8460358fb4e12bdbd96ac78e16d50815d07f75735aa1a6a85d18ca83fd0f9b","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/AmbientEngine.js","title":"kernel/AmbientEngine","summary":"AmbientEngine.js — Desktop background rendering service. Owns a fixed full-screen DOM layer (z-index: -10) that sits permanently behind every panel and shell element.  Supports CSS gradients, solid colors, static images, video, and extensible driver plug-ins registered by mods.  Exposes the same before/after hook middleware pattern as ThemeEngine so mods can intercept and customize background changes. ThemeEngine drives this automatically via setFromTheme() when the accent or wallpaper preset changes.  Mods (or the user) can bypass ThemeEngine entirely with apply() for fully custom backgrounds. ── Modder API ──────────────────────────────────────────────────────────── const amb = syscalls.ambient; // Register a totally custom renderer (canvas, WebGPU, Three.js …) amb.registerDriver('webgpu-scene', { apply(layer, config) { layer.innerHTML = ''; const canvas = document.createElement('canvas'); canvas.style.cssText = 'position:absolute;inset:0;width:100%;height:100%;'; layer.appendChild(canvas); // … render into canvas … }, destroy(layer) { layer.innerHTML = ''; } }); // Before hook — middleware: modify config before the layer receives it amb.before('my-mod', (cfg, next) => next({ ...cfg, opacity: 0.7 }), 'Dim'); // After hook — react after background is applied amb.after('my-mod', (cfg) => console.log('Ambient applied:', cfg)); // Apply custom backgrounds amb.apply({ type: 'css',   value: 'linear-gradient(135deg,#ff0080,#7928ca)' }); amb.apply({ type: 'color', value: '#1a0533' }); amb.apply({ type: 'image', src: '/bg.jpg', size: 'cover', position: 'center' }); amb.apply({ type: 'video', src: '/bg.mp4', bg: '#000' }); amb.apply({ type: 'webgpu-scene', ... }); // custom driver // Set opacity of the ambient layer (0–1) amb.setOpacity(0.85); // Export / import config JSON const json = amb.export(); amb.import(json); // Subscribe to changes kernel.events.on('os:ambient-change', ({ config }) => { … });","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/AmbientEngine.md","moduleTitle":"kernel/AmbientEngine","source":"webgpu-os/kernel/AmbientEngine.js","import":"/webgpu-os/kernel/AmbientEngine.js","sourceHash":"bb8460358fb4e12bdbd96ac78e16d50815d07f75735aa1a6a85d18ca83fd0f9b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/AmbientEngine.js#0000:AmbientEngine","exportIndex":0,"name":"AmbientEngine","kind":"class","signature":"class AmbientEngine","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/AppRegistrationScope.md","moduleTitle":"kernel/AppRegistrationScope","source":"webgpu-os/kernel/AppRegistrationScope.js","import":"/webgpu-os/kernel/AppRegistrationScope.js","sourceHash":"db2433a1daa6f11a18be3d052bc2b1483ad7734ce58ccd5901e9d8aeb98779fc","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/AppRegistrationScope.js","title":"kernel/AppRegistrationScope","summary":"Authenticated app wrappers for registration-bearing syscall namespaces. Identity binding is independent of permission-enforcement mode: developer mode may relax capability checks, but it never relaxes ownership.","exportCount":4}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/AppRegistrationScope.md","moduleTitle":"kernel/AppRegistrationScope","source":"webgpu-os/kernel/AppRegistrationScope.js","import":"/webgpu-os/kernel/AppRegistrationScope.js","sourceHash":"db2433a1daa6f11a18be3d052bc2b1483ad7734ce58ccd5901e9d8aeb98779fc","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/AppRegistrationScope.js#0000:scopeToolSyscalls","exportIndex":0,"name":"scopeToolSyscalls","kind":"function","signature":"scopeToolSyscalls(kernel, appId, raw = kernel?.syscalls?.tools)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/AppRegistrationScope.md","moduleTitle":"kernel/AppRegistrationScope","source":"webgpu-os/kernel/AppRegistrationScope.js","import":"/webgpu-os/kernel/AppRegistrationScope.js","sourceHash":"db2433a1daa6f11a18be3d052bc2b1483ad7734ce58ccd5901e9d8aeb98779fc","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/AppRegistrationScope.js#0001:scopeProtocolSyscalls","exportIndex":1,"name":"scopeProtocolSyscalls","kind":"function","signature":"scopeProtocolSyscalls(kernel, appId, raw = kernel?.syscalls?.protocol)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/AppRegistrationScope.md","moduleTitle":"kernel/AppRegistrationScope","source":"webgpu-os/kernel/AppRegistrationScope.js","import":"/webgpu-os/kernel/AppRegistrationScope.js","sourceHash":"db2433a1daa6f11a18be3d052bc2b1483ad7734ce58ccd5901e9d8aeb98779fc","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/AppRegistrationScope.js#0002:scopeCommandSyscalls","exportIndex":2,"name":"scopeCommandSyscalls","kind":"function","signature":"scopeCommandSyscalls(kernel, appId, raw = kernel?.syscalls?.cmd)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/AppRegistrationScope.md","moduleTitle":"kernel/AppRegistrationScope","source":"webgpu-os/kernel/AppRegistrationScope.js","import":"/webgpu-os/kernel/AppRegistrationScope.js","sourceHash":"db2433a1daa6f11a18be3d052bc2b1483ad7734ce58ccd5901e9d8aeb98779fc","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/AppRegistrationScope.js#0003:cleanupAppRegistrations","exportIndex":3,"name":"cleanupAppRegistrations","kind":"function","signature":"cleanupAppRegistrations(kernel, appId, { logger = console } = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/AppRegistry.md","moduleTitle":"kernel/AppRegistry","source":"webgpu-os/kernel/AppRegistry.js","import":"/webgpu-os/kernel/AppRegistry.js","sourceHash":"29bf5250b5ede279d9bcd164cba9ccac442fc0751f3f73ba9f86d27ea1756788","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/AppRegistry.js","title":"kernel/AppRegistry","summary":"AppRegistry.js — fully dynamic, fetch-based app discovery. NO apps are hardcoded here. Discovery works as follows: 1. Fetch  apps/index.json  → array of folder names, e.g. [\"calculator\",\"notepad\",…] 2. For each folder, fetch  apps/<folder>/manifest.json 3. Resolve manifest.entry against the manifest URL (absolute URL) 4. Register and emit 'change' so the shell re-renders live To add a new app: create  apps/<name>/manifest.json  +  apps/<name>/YourApp.js, then add \"<name>\" to  apps/index.json.  No JS edits required. Manifest shape (see docs/APP_MANIFEST_SPEC.md): appId, name, entry, icon, category, surface, defaultWidth, defaultHeight, permissions, description, version, settings[]","exportCount":6}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/AppRegistry.md","moduleTitle":"kernel/AppRegistry","source":"webgpu-os/kernel/AppRegistry.js","import":"/webgpu-os/kernel/AppRegistry.js","sourceHash":"29bf5250b5ede279d9bcd164cba9ccac442fc0751f3f73ba9f86d27ea1756788","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/AppRegistry.js#0000:AppManifestValidationError","exportIndex":0,"name":"AppManifestValidationError","kind":"class","signature":"class AppManifestValidationError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/AppRegistry.md","moduleTitle":"kernel/AppRegistry","source":"webgpu-os/kernel/AppRegistry.js","import":"/webgpu-os/kernel/AppRegistry.js","sourceHash":"29bf5250b5ede279d9bcd164cba9ccac442fc0751f3f73ba9f86d27ea1756788","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/AppRegistry.js#0001:AppRegistry","exportIndex":1,"name":"AppRegistry","kind":"class","signature":"class AppRegistry","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/AppRegistry.md","moduleTitle":"kernel/AppRegistry","source":"webgpu-os/kernel/AppRegistry.js","import":"/webgpu-os/kernel/AppRegistry.js","sourceHash":"29bf5250b5ede279d9bcd164cba9ccac442fc0751f3f73ba9f86d27ea1756788","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/AppRegistry.js#0002:validateAppManifest","exportIndex":2,"name":"validateAppManifest","kind":"function","signature":"validateAppManifest(manifest, { mode = APP_MANIFEST_VALIDATION.STRICT, registry = schemaRegistry, logger = console, } = {})","summary":"Validate an authority-bearing manifest after removing registry-only fields."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/AppRegistry.md","moduleTitle":"kernel/AppRegistry","source":"webgpu-os/kernel/AppRegistry.js","import":"/webgpu-os/kernel/AppRegistry.js","sourceHash":"29bf5250b5ede279d9bcd164cba9ccac442fc0751f3f73ba9f86d27ea1756788","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/AppRegistry.js#0003:APP_MANIFEST_SCHEMA_VERSION","exportIndex":3,"name":"APP_MANIFEST_SCHEMA_VERSION","kind":"constant","signature":"APP_MANIFEST_SCHEMA_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/AppRegistry.md","moduleTitle":"kernel/AppRegistry","source":"webgpu-os/kernel/AppRegistry.js","import":"/webgpu-os/kernel/AppRegistry.js","sourceHash":"29bf5250b5ede279d9bcd164cba9ccac442fc0751f3f73ba9f86d27ea1756788","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/AppRegistry.js#0004:APP_MANIFEST_VALIDATION","exportIndex":4,"name":"APP_MANIFEST_VALIDATION","kind":"constant","signature":"APP_MANIFEST_VALIDATION","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/AppRegistry.md","moduleTitle":"kernel/AppRegistry","source":"webgpu-os/kernel/AppRegistry.js","import":"/webgpu-os/kernel/AppRegistry.js","sourceHash":"29bf5250b5ede279d9bcd164cba9ccac442fc0751f3f73ba9f86d27ea1756788","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/AppRegistry.js#0005:appRegistry","exportIndex":5,"name":"appRegistry","kind":"constant","signature":"appRegistry","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/CommandBus.md","moduleTitle":"kernel/CommandBus","source":"webgpu-os/kernel/CommandBus.js","import":"/webgpu-os/kernel/CommandBus.js","sourceHash":"0d1d19f829f8b01d4fad3182ad2ad41b252be5b8db72d0c114e232d41ab078e1","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/CommandBus.js","title":"kernel/CommandBus","summary":"CommandBus.js — OS-wide addressable command registry. Every syscall namespace, app, and service can register handlers for dot-namespaced command strings: pkg.install    patch.apply    gpu.profile.start    browser.tabs.list Dispatch flow: caller → cmd.dispatch('pkg.install', { url }) → handler → result All dispatches are logged to /os/logs/commands.log (async, non-blocking). Usage: kernel.cmd.register('pkg.install', async ({ url }, ctx) => { ... }); const result = await kernel.cmd.dispatch('pkg.install', { url: '...' });","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/CommandBus.md","moduleTitle":"kernel/CommandBus","source":"webgpu-os/kernel/CommandBus.js","import":"/webgpu-os/kernel/CommandBus.js","sourceHash":"0d1d19f829f8b01d4fad3182ad2ad41b252be5b8db72d0c114e232d41ab078e1","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/CommandBus.js#0000:CommandBus","exportIndex":0,"name":"CommandBus","kind":"class","signature":"class CommandBus","summary":"CommandBus.js — OS-wide addressable command registry. Every syscall namespace, app, and service can register handlers for dot-namespaced command strings: pkg.install    patch.apply    gpu.profile.start    browser.tabs.list Dispatch flow: caller → cmd.dispatch('pkg.install', { url }) → handler → result All dispatches are logged to /os/logs/commands.log (async, non-blocking). Usage: kernel.cmd.register('pkg.install', async ({ url }, ctx) => { ... }); const result = await kernel.cmd.dispatch('pkg.install', { url: '...' });"}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/FxBus.md","moduleTitle":"kernel/FxBus","source":"webgpu-os/kernel/FxBus.js","import":"/webgpu-os/kernel/FxBus.js","sourceHash":"c3bccea31af288fa7f594fc46eb8fdd5b253ab641551e422a12724dfae4bd1ba","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/FxBus.js","title":"kernel/FxBus","summary":"FxBus.js — the OS \"FX Bridge\". A normalized pipeline that lets apps (and the OS itself) publish a lightweight \"vibe\" — a dominant accent color, optional palette, an energy level, and an optional beat/mood — which the desktop reacts to (ambient tint/pulse, accent glow) and which external sinks (WLED / Home Assistant / Hue via a relay) can later subscribe to. Producers: - Explicit: an app calls `syscalls.fx.publish(frame)` (capability `fx.emit`). Sandboxed iframe guests call `window.os.fx.publish(frame)`, routed over the existing postMessage RPC bridge. - Automatic: `startAutoSample()` samples a provided surface (canvas/img/video) and extracts the dominant color, so an app can drive effects with no code. Consumers subscribe to the kernel event `os:fx-frame`. The built-in consumer is AmbientEngine.fxTint(); more sinks can be added without touching producers. Frames are normalized and rate-limited (coalesced to ~one emit per minInterval) so a chatty producer cannot flood the desktop or thrash the compositor.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/FxBus.md","moduleTitle":"kernel/FxBus","source":"webgpu-os/kernel/FxBus.js","import":"/webgpu-os/kernel/FxBus.js","sourceHash":"c3bccea31af288fa7f594fc46eb8fdd5b253ab641551e422a12724dfae4bd1ba","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/FxBus.js#0000:FxBus","exportIndex":0,"name":"FxBus","kind":"class","signature":"class FxBus","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/GpuDeviceBroker.md","moduleTitle":"kernel/GpuDeviceBroker","source":"webgpu-os/kernel/GpuDeviceBroker.js","import":"/webgpu-os/kernel/GpuDeviceBroker.js","sourceHash":"f3f1f5f1f6ecd9acea8e7ffa50af44d74e4aa4296b155772be0b77ee6639c1f3","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/GpuDeviceBroker.js","title":"kernel/GpuDeviceBroker","summary":"GpuDeviceBroker.js — per-app GPU device facades, quotas, and adapter redaction. WHY a facade and not a Proxy of the real GPUDevice? Host objects with internal slots (GPUDevice/GPUQueue) fail brand checks when a Proxy is handed back to other WebGPU APIs (notably `GPUCanvasContext .configure({ device })`). So we hand apps a *forwarding facade*: a plain object that forwards to the real device and ALWAYS returns real host objects (real GPUBuffer/GPUTexture/encoder/queue). The only host API that consumes the device object itself is `context.configure` — untrusted apps should get their canvas via `gpu.acquireSurface` (configured by the OS with the REAL device), so they never need to pass the facade anywhere. If an untrusted app does configure a canvas itself with the facade it fails closed (safe). POLICY: trusted / built-in apps receive the RAW device (zero compatibility risk). Untrusted (unverified) apps receive a facade that: - tracks + quota-checks every createBuffer / createTexture (via VRAMTracker), - counts pipelines / shader modules / queue submits per app, - enforces a command-submit budget (anti-runaway), - partitions the shader-module cache per app (no cross-app cache sharing), - fails closed after device loss until the broker re-issues a fresh facade.","exportCount":3}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/GpuDeviceBroker.md","moduleTitle":"kernel/GpuDeviceBroker","source":"webgpu-os/kernel/GpuDeviceBroker.js","import":"/webgpu-os/kernel/GpuDeviceBroker.js","sourceHash":"f3f1f5f1f6ecd9acea8e7ffa50af44d74e4aa4296b155772be0b77ee6639c1f3","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/GpuDeviceBroker.js#0000:GpuDeviceBroker","exportIndex":0,"name":"GpuDeviceBroker","kind":"class","signature":"class GpuDeviceBroker","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/GpuDeviceBroker.md","moduleTitle":"kernel/GpuDeviceBroker","source":"webgpu-os/kernel/GpuDeviceBroker.js","import":"/webgpu-os/kernel/GpuDeviceBroker.js","sourceHash":"f3f1f5f1f6ecd9acea8e7ffa50af44d74e4aa4296b155772be0b77ee6639c1f3","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/GpuDeviceBroker.js#0001:bucketLimits","exportIndex":1,"name":"bucketLimits","kind":"function","signature":"bucketLimits(limits)","summary":"Bucket GPUSupportedLimits into a coarse, plain object. Reduces fingerprint entropy (exact limits vary per GPU/driver) while keeping values usable. Returns a plain object with the same keys apps read."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/GpuDeviceBroker.md","moduleTitle":"kernel/GpuDeviceBroker","source":"webgpu-os/kernel/GpuDeviceBroker.js","import":"/webgpu-os/kernel/GpuDeviceBroker.js","sourceHash":"f3f1f5f1f6ecd9acea8e7ffa50af44d74e4aa4296b155772be0b77ee6639c1f3","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/GpuDeviceBroker.js#0002:bucketAdapterInfo","exportIndex":2,"name":"bucketAdapterInfo","kind":"function","signature":"bucketAdapterInfo(info)","summary":"Redact a rich adapter-info report down to a coarse, low-entropy summary for untrusted apps. Keeps the vendor *bucket* and capability booleans; drops the precise renderer string, driver version, device id, and exact limits."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/GpuInfo.md","moduleTitle":"kernel/GpuInfo","source":"webgpu-os/kernel/GpuInfo.js","import":"/webgpu-os/kernel/GpuInfo.js","sourceHash":"47a9a3500997dcbcb38a8a7fc94985b52ad814b0521c727de77964254644ba7d","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/GpuInfo.js","title":"kernel/GpuInfo","summary":"GpuInfo.js — rich, consolidated GPU adapter reporting for the OS. Browsers expose the GPU through several uneven channels; the most accurate picture comes from combining them (this mirrors what the engine's VGPUMemoryTracker / GPU Profiler do, minus the heavy VRAM probe): 1. WebGPU `adapter.info`            → vendor / architecture / device / description 2. `adapter.requestAdapterInfo()`   → same, legacy async fallback 3. `device.adapterInfo`             → some implementations expose it here 4. WebGL `WEBGL_debug_renderer_info`→ the UNMASKED renderer string is usually the only place the real model name (e.g. \"AMD Radeon RX 6700 XT\") appears, since Chrome hides it from adapter.info. 5. `adapter.features` / `.limits`   → capability flags + key device limits `gatherGpuInfo()` returns ONE structured report plus best-effort adapter preference probes. Everything is best-effort and never throws — missing channels just leave their fields empty.","exportCount":3}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/GpuInfo.md","moduleTitle":"kernel/GpuInfo","source":"webgpu-os/kernel/GpuInfo.js","import":"/webgpu-os/kernel/GpuInfo.js","sourceHash":"47a9a3500997dcbcb38a8a7fc94985b52ad814b0521c727de77964254644ba7d","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/GpuInfo.js#0000:vendorBucket","exportIndex":0,"name":"vendorBucket","kind":"function","signature":"vendorBucket(info)","summary":"Coarse vendor label from any descriptive string."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/GpuInfo.md","moduleTitle":"kernel/GpuInfo","source":"webgpu-os/kernel/GpuInfo.js","import":"/webgpu-os/kernel/GpuInfo.js","sourceHash":"47a9a3500997dcbcb38a8a7fc94985b52ad814b0521c727de77964254644ba7d","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/GpuInfo.js#0001:friendlyAdapterName","exportIndex":1,"name":"friendlyAdapterName","kind":"function","signature":"friendlyAdapterName(info)","summary":"Best human-readable adapter name from the combined channels."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/GpuInfo.md","moduleTitle":"kernel/GpuInfo","source":"webgpu-os/kernel/GpuInfo.js","import":"/webgpu-os/kernel/GpuInfo.js","sourceHash":"47a9a3500997dcbcb38a8a7fc94985b52ad814b0521c727de77964254644ba7d","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/GpuInfo.js#0002:gatherGpuInfo","exportIndex":2,"name":"gatherGpuInfo","kind":"function","signature":"async gatherGpuInfo(adapter, device = null, options = {})","summary":"Gather a full GPU report from a WebGPU adapter (+ optional device)."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/KernelBootstrap.md","moduleTitle":"kernel/KernelBootstrap","source":"webgpu-os/kernel/KernelBootstrap.js","import":"/webgpu-os/kernel/KernelBootstrap.js","sourceHash":"450df00e29c9578d127d42542d6f43ea61a0cf7a7d7cc68553381ad115ee81e6","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/KernelBootstrap.js","title":"kernel/KernelBootstrap","summary":"KernelBootstrap — the OS kernel layer. Owns: - The single shared WebGPU device (if available). - The central task scheduler (kernel-owned RAF). - The event bus. - GPU device-lost fan-out to all registered apps. - The syscall surface exposed to apps. Tier-2 note: In Tier 2 this becomes a Rust native-host service; the kernel.syscalls shape must remain stable across tiers.","exportCount":2}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/KernelBootstrap.md","moduleTitle":"kernel/KernelBootstrap","source":"webgpu-os/kernel/KernelBootstrap.js","import":"/webgpu-os/kernel/KernelBootstrap.js","sourceHash":"450df00e29c9578d127d42542d6f43ea61a0cf7a7d7cc68553381ad115ee81e6","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/KernelBootstrap.js#0000:KernelBootstrap","exportIndex":0,"name":"KernelBootstrap","kind":"class","signature":"class KernelBootstrap","summary":"KernelBootstrap — the OS kernel layer. Owns: - The single shared WebGPU device (if available). - The central task scheduler (kernel-owned RAF). - The event bus. - GPU device-lost fan-out to all registered apps. - The syscall surface exposed to apps. Tier-2 note: In Tier 2 this becomes a Rust native-host service; the kernel.syscalls shape must remain stable across tiers."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/KernelBootstrap.md","moduleTitle":"kernel/KernelBootstrap","source":"webgpu-os/kernel/KernelBootstrap.js","import":"/webgpu-os/kernel/KernelBootstrap.js","sourceHash":"450df00e29c9578d127d42542d6f43ea61a0cf7a7d7cc68553381ad115ee81e6","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/KernelBootstrap.js#0001:KernelEventBus","exportIndex":1,"name":"KernelEventBus","kind":"class","signature":"class KernelEventBus","summary":"Minimal synchronous event bus for kernel-internal use. Apps should use kernel.syscalls.ipc for cross-app messaging."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/LaunchCoordinator.md","moduleTitle":"kernel/LaunchCoordinator","source":"webgpu-os/kernel/LaunchCoordinator.js","import":"/webgpu-os/kernel/LaunchCoordinator.js","sourceHash":"3d32e5413fd7eb74af7a821015b656c3a9cb843d683d69f175823a4b6d3d21fe","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/LaunchCoordinator.js","title":"kernel/LaunchCoordinator","summary":"Route validated launch intents through the existing desktop and subsurface services.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/LaunchCoordinator.md","moduleTitle":"kernel/LaunchCoordinator","source":"webgpu-os/kernel/LaunchCoordinator.js","import":"/webgpu-os/kernel/LaunchCoordinator.js","sourceHash":"3d32e5413fd7eb74af7a821015b656c3a9cb843d683d69f175823a4b6d3d21fe","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/LaunchCoordinator.js#0000:LaunchCoordinator","exportIndex":0,"name":"LaunchCoordinator","kind":"class","signature":"class LaunchCoordinator","summary":"Route validated launch intents through the existing desktop and subsurface services."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/LaunchIntent.md","moduleTitle":"kernel/LaunchIntent","source":"webgpu-os/kernel/LaunchIntent.js","import":"/webgpu-os/kernel/LaunchIntent.js","sourceHash":"935b8e4e1bf86c5482d82039688e368069fbb760b9c80161b6b92c349415b04c","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/LaunchIntent.js","title":"kernel/LaunchIntent","summary":"Canonical, untrusted-input boundary for browser and operating-system launches.","exportCount":4}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/LaunchIntent.md","moduleTitle":"kernel/LaunchIntent","source":"webgpu-os/kernel/LaunchIntent.js","import":"/webgpu-os/kernel/LaunchIntent.js","sourceHash":"935b8e4e1bf86c5482d82039688e368069fbb760b9c80161b6b92c349415b04c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/LaunchIntent.js#0000:LaunchIntentError","exportIndex":0,"name":"LaunchIntentError","kind":"class","signature":"class LaunchIntentError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/LaunchIntent.md","moduleTitle":"kernel/LaunchIntent","source":"webgpu-os/kernel/LaunchIntent.js","import":"/webgpu-os/kernel/LaunchIntent.js","sourceHash":"935b8e4e1bf86c5482d82039688e368069fbb760b9c80161b6b92c349415b04c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/LaunchIntent.js#0001:parseLaunchUrl","exportIndex":1,"name":"parseLaunchUrl","kind":"function","signature":"parseLaunchUrl(input, { baseUrl = globalThis.location?.href ?? 'https://localhost/webgpu-os/', scopePath = DEFAULT_LAUNCH_SCOPE, } = {})","summary":"Parse a canonical launch URL. Non-launch URLs inside the shell return null; malformed URLs under /open/ throw so callers can log a security rejection."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/LaunchIntent.md","moduleTitle":"kernel/LaunchIntent","source":"webgpu-os/kernel/LaunchIntent.js","import":"/webgpu-os/kernel/LaunchIntent.js","sourceHash":"935b8e4e1bf86c5482d82039688e368069fbb760b9c80161b6b92c349415b04c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/LaunchIntent.js#0002:LAUNCH_CONTRACT_VERSION","exportIndex":2,"name":"LAUNCH_CONTRACT_VERSION","kind":"constant","signature":"LAUNCH_CONTRACT_VERSION","summary":"Canonical, untrusted-input boundary for browser and operating-system launches."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/LaunchIntent.md","moduleTitle":"kernel/LaunchIntent","source":"webgpu-os/kernel/LaunchIntent.js","import":"/webgpu-os/kernel/LaunchIntent.js","sourceHash":"935b8e4e1bf86c5482d82039688e368069fbb760b9c80161b6b92c349415b04c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/LaunchIntent.js#0003:DEFAULT_LAUNCH_SCOPE","exportIndex":3,"name":"DEFAULT_LAUNCH_SCOPE","kind":"constant","signature":"DEFAULT_LAUNCH_SCOPE","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ModRegistry.md","moduleTitle":"kernel/ModRegistry","source":"webgpu-os/kernel/ModRegistry.js","import":"/webgpu-os/kernel/ModRegistry.js","sourceHash":"88be212f6c5d36b350106f004bdd9372e72efa751409865395b49ce99d743987","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/ModRegistry.js","title":"kernel/ModRegistry","summary":"ModRegistry.js — dynamic mod discovery, mirroring AppRegistry. Scans  mods/index.json  → per-mod  mods/<folder>/manifest.json Imports the mod entry and registers its hooks into PatchBus. Mod manifest shape: modId        — unique reverse-domain id, e.g. \"com.example.dark-plus\" name         — display name version      — semver string author       — author name description  — one-line description targets      — array of appIds to patch, or [\"*\"] for all apps entry        — relative path to mod JS module (default export = mod object) entryOverride — boolean, if true this mod completely replaces the app entry enabled      — boolean (default true), false to disable without removing Adding a new mod: 1. Create  mods/<name>/manifest.json 2. Create  mods/<name>/YourMod.js  (default export: mod object) 3. Add \"<name>\" to  mods/index.json No kernel or app code changes required.","exportCount":2}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ModRegistry.md","moduleTitle":"kernel/ModRegistry","source":"webgpu-os/kernel/ModRegistry.js","import":"/webgpu-os/kernel/ModRegistry.js","sourceHash":"88be212f6c5d36b350106f004bdd9372e72efa751409865395b49ce99d743987","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ModRegistry.js#0000:ModRegistry","exportIndex":0,"name":"ModRegistry","kind":"class","signature":"class ModRegistry","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ModRegistry.md","moduleTitle":"kernel/ModRegistry","source":"webgpu-os/kernel/ModRegistry.js","import":"/webgpu-os/kernel/ModRegistry.js","sourceHash":"88be212f6c5d36b350106f004bdd9372e72efa751409865395b49ce99d743987","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ModRegistry.js#0001:modRegistry","exportIndex":1,"name":"modRegistry","kind":"constant","signature":"modRegistry","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/OsLogger.md","moduleTitle":"kernel/OsLogger","source":"webgpu-os/kernel/OsLogger.js","import":"/webgpu-os/kernel/OsLogger.js","sourceHash":"b052b52ba13aa5e4067cf1b194e60ab9efe2833559edfe93023c888a0153ffd7","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/OsLogger.js","title":"kernel/OsLogger","summary":"OsLogger.js — in-memory ring-buffer logger for the OS kernel and apps. Levels: debug < info < warn < error Keeps the last MAX_ENTRIES entries in memory. Listeners (e.g. Log Viewer) are notified on each write. Optionally flushes to /os/logs/os.log via StorageManager (non-blocking).","exportCount":5}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/OsLogger.md","moduleTitle":"kernel/OsLogger","source":"webgpu-os/kernel/OsLogger.js","import":"/webgpu-os/kernel/OsLogger.js","sourceHash":"b052b52ba13aa5e4067cf1b194e60ab9efe2833559edfe93023c888a0153ffd7","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/OsLogger.js#0000:OsLogger","exportIndex":0,"name":"OsLogger","kind":"class","signature":"class OsLogger","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/OsLogger.md","moduleTitle":"kernel/OsLogger","source":"webgpu-os/kernel/OsLogger.js","import":"/webgpu-os/kernel/OsLogger.js","sourceHash":"b052b52ba13aa5e4067cf1b194e60ab9efe2833559edfe93023c888a0153ffd7","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/OsLogger.js#0001:projectLogMetadata","exportIndex":1,"name":"projectLogMetadata","kind":"function","signature":"projectLogMetadata(value)","summary":"Produce an accessor-free, bounded, closed projection for a log entry. Unknown fields and nested objects are omitted instead of serialized."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/OsLogger.md","moduleTitle":"kernel/OsLogger","source":"webgpu-os/kernel/OsLogger.js","import":"/webgpu-os/kernel/OsLogger.js","sourceHash":"b052b52ba13aa5e4067cf1b194e60ab9efe2833559edfe93023c888a0153ffd7","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/OsLogger.js#0002:OS_LOG_CAPACITY","exportIndex":2,"name":"OS_LOG_CAPACITY","kind":"constant","signature":"OS_LOG_CAPACITY","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/OsLogger.md","moduleTitle":"kernel/OsLogger","source":"webgpu-os/kernel/OsLogger.js","import":"/webgpu-os/kernel/OsLogger.js","sourceHash":"b052b52ba13aa5e4067cf1b194e60ab9efe2833559edfe93023c888a0153ffd7","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/OsLogger.js#0003:OS_LOG_CAPACITY_BYTES","exportIndex":3,"name":"OS_LOG_CAPACITY_BYTES","kind":"constant","signature":"OS_LOG_CAPACITY_BYTES","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/OsLogger.md","moduleTitle":"kernel/OsLogger","source":"webgpu-os/kernel/OsLogger.js","import":"/webgpu-os/kernel/OsLogger.js","sourceHash":"b052b52ba13aa5e4067cf1b194e60ab9efe2833559edfe93023c888a0153ffd7","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/OsLogger.js#0004:osLogger","exportIndex":4,"name":"osLogger","kind":"constant","signature":"osLogger","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/PatchBus.md","moduleTitle":"kernel/PatchBus","source":"webgpu-os/kernel/PatchBus.js","import":"/webgpu-os/kernel/PatchBus.js","sourceHash":"b06cc91475eccca92e4bb0c50eefdf2c8a345d9c393aa9ad646b27585981d7d5","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/PatchBus.js","title":"kernel/PatchBus","summary":"PatchBus.js — Android-style mod / patch bus for WebGPU OS. Provides: beforeMount / afterMount / beforeUnmount / afterUnmount hooks UI injection    — mods append DOM into any app panel CSS injection   — scoped to the app's panel element automatically Manifest patch  — mods can widen panels, add permissions, change defaults Entry override  — a mod can fully replace an app's module Syscall intercept — middleware chain on any syscall namespace.method Hook execution order: mods registered first run first (FIFO per phase). Syscall interceptors are chained: each calls next() to delegate down. ── Mod object API (default export from mod entry file) ───────────────────── beforeMount(container, syscalls, manifest)           → void | Promise afterMount(container, syscalls, appInstance, manifest) → void | Promise beforeUnmount(appInstance, manifest)                 → void | Promise afterUnmount(manifest)                               → void | Promise injectUI(container, manifest)                        → HTMLElement | null injectCSS(manifest)                                  → string | null patchManifest(manifest)                              → Partial<Manifest> interceptSyscall(syscallPath, args, next)            → any None of these are required — implement only what you need.","exportCount":2}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/PatchBus.md","moduleTitle":"kernel/PatchBus","source":"webgpu-os/kernel/PatchBus.js","import":"/webgpu-os/kernel/PatchBus.js","sourceHash":"b06cc91475eccca92e4bb0c50eefdf2c8a345d9c393aa9ad646b27585981d7d5","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/PatchBus.js#0000:PatchBus","exportIndex":0,"name":"PatchBus","kind":"class","signature":"class PatchBus","summary":"PatchBus.js — Android-style mod / patch bus for WebGPU OS. Provides: beforeMount / afterMount / beforeUnmount / afterUnmount hooks UI injection    — mods append DOM into any app panel CSS injection   — scoped to the app's panel element automatically Manifest patch  — mods can widen panels, add permissions, change defaults Entry override  — a mod can fully replace an app's module Syscall intercept — middleware chain on any syscall namespace.method Hook execution order: mods registered first run first (FIFO per phase). Syscall interceptors are chained: each calls next() to delegate down. ── Mod object API (default export from mod entry file) ───────────────────── beforeMount(container, syscalls, manifest)           → void | Promise afterMount(container, syscalls, appInstance, manifest) → void | Promise beforeUnmount(appInstance, manifest)                 → void | Promise afterUnmount(manifest)                               → void | Promise injectUI(container, manifest)                        → HTMLElement | null injectCSS(manifest)                                  → string | null patchManifest(manifest)                              → Partial<Manifest> interceptSyscall(syscallPath, args, next)            → any None of these are required — implement only what you need."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/PatchBus.md","moduleTitle":"kernel/PatchBus","source":"webgpu-os/kernel/PatchBus.js","import":"/webgpu-os/kernel/PatchBus.js","sourceHash":"b06cc91475eccca92e4bb0c50eefdf2c8a345d9c393aa9ad646b27585981d7d5","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/PatchBus.js#0001:patchBus","exportIndex":1,"name":"patchBus","kind":"constant","signature":"patchBus","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/PermissionPortal.md","moduleTitle":"kernel/PermissionPortal","source":"webgpu-os/kernel/PermissionPortal.js","import":"/webgpu-os/kernel/PermissionPortal.js","sourceHash":"f8633ebfb07acff9fd989d4eb929bbd2c422e64210a2f2b01d0fe2e788580f7e","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/PermissionPortal.js","title":"kernel/PermissionPortal","summary":"PermissionPortal.js — user-facing permission prompt. Appears as a stacked card above the taskbar whenever an app requests a capability that is not yet decided. Multiple requests queue and show one at a time (FIFO). Each card: ┌──────────────────────────────────────┐ │ 🔒  os.my-app wants permission       │ │     Access camera                    │ │     Risk: ● High                     │ │  [Deny]  [Allow Once]  [Allow Always] │ └──────────────────────────────────────┘ Usage (kernel internal — apps call syscalls.permissions.request()): const portal = new PermissionPortal(); portal.mount(document.body); const granted = await portal.ask(appId, capability, manifest);","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/PermissionPortal.md","moduleTitle":"kernel/PermissionPortal","source":"webgpu-os/kernel/PermissionPortal.js","import":"/webgpu-os/kernel/PermissionPortal.js","sourceHash":"f8633ebfb07acff9fd989d4eb929bbd2c422e64210a2f2b01d0fe2e788580f7e","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/PermissionPortal.js#0000:PermissionPortal","exportIndex":0,"name":"PermissionPortal","kind":"class","signature":"class PermissionPortal","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/PermissionStore.md","moduleTitle":"kernel/PermissionStore","source":"webgpu-os/kernel/PermissionStore.js","import":"/webgpu-os/kernel/PermissionStore.js","sourceHash":"f40217dcfdab726e7eb5218fc78b34c0a762c165e8e7ef7346f43585bc5b6aab","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/PermissionStore.js","title":"kernel/PermissionStore","summary":"PermissionStore.js — IDB-backed persistence of user permission decisions. Decisions are keyed as `{appId}::{capability}` in the 'permissions' IDB store. Each record: { appId, capability, decision: 'allow'|'deny', scope: 'once'|'always', ts } 'once' decisions are in-memory only (not persisted). 'always' decisions are stored and reloaded on next boot.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/PermissionStore.md","moduleTitle":"kernel/PermissionStore","source":"webgpu-os/kernel/PermissionStore.js","import":"/webgpu-os/kernel/PermissionStore.js","sourceHash":"f40217dcfdab726e7eb5218fc78b34c0a762c165e8e7ef7346f43585bc5b6aab","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/PermissionStore.js#0000:PermissionStore","exportIndex":0,"name":"PermissionStore","kind":"class","signature":"class PermissionStore","summary":"PermissionStore.js — IDB-backed persistence of user permission decisions. Decisions are keyed as `{appId}::{capability}` in the 'permissions' IDB store. Each record: { appId, capability, decision: 'allow'|'deny', scope: 'once'|'always', ts } 'once' decisions are in-memory only (not persisted). 'always' decisions are stored and reloaded on next boot."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/Permissions.md","moduleTitle":"kernel/Permissions","source":"webgpu-os/kernel/Permissions.js","import":"/webgpu-os/kernel/Permissions.js","sourceHash":"b35e182e3b63a183a8cfdabc3fbd7e4537224e421ef3320467d131ae0cea66f1","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/Permissions.js","title":"kernel/Permissions","summary":"Permissions.js — capability gating backed by RuleGraph. Phase 4: enforces manifest-declared permissions via a declarative RuleGraph. Phase 1 mode: audit-only (log violations, never block) — set enforcing=false. Tier 2: delegates to WASI capability broker (same check() interface). Usage: kernel.permissions.registerApp(appId, manifest) kernel.permissions.check(appId, 'gpu.compute')  → { granted, reason } kernel.permissions.require(appId, 'gpu.compute') → throws if denied + enforcing","exportCount":2}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/Permissions.md","moduleTitle":"kernel/Permissions","source":"webgpu-os/kernel/Permissions.js","import":"/webgpu-os/kernel/Permissions.js","sourceHash":"b35e182e3b63a183a8cfdabc3fbd7e4537224e421ef3320467d131ae0cea66f1","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/Permissions.js#0000:Permissions","exportIndex":0,"name":"Permissions","kind":"class","signature":"class Permissions","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/Permissions.md","moduleTitle":"kernel/Permissions","source":"webgpu-os/kernel/Permissions.js","import":"/webgpu-os/kernel/Permissions.js","sourceHash":"b35e182e3b63a183a8cfdabc3fbd7e4537224e421ef3320467d131ae0cea66f1","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/Permissions.js#0001:PermissionDeniedError","exportIndex":1,"name":"PermissionDeniedError","kind":"class","signature":"class PermissionDeniedError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ProcessTable.md","moduleTitle":"kernel/ProcessTable","source":"webgpu-os/kernel/ProcessTable.js","import":"/webgpu-os/kernel/ProcessTable.js","sourceHash":"903a1371476bee032dbf10b9b2c60f0eec9c3a84516d8ff86c69f989dd2e1117","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/ProcessTable.js","title":"kernel/ProcessTable","summary":"ProcessTable.js — tracks all running app panel instances. Each entry maps an appId to its runtime handle: { appId, panelId, manifestPath, panel, resources, startedAt, parentAppId, cpuMs, memoryBytes, networkBytes, diskBytes, lastSampleAt } Phase 4 extends this with per-app VRAM quotas, capability sets, and \"destroy on policy breach\" enforcement. Phase 5 adds full system monitoring (CPU%, memory, network I/O, disk I/O).","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ProcessTable.md","moduleTitle":"kernel/ProcessTable","source":"webgpu-os/kernel/ProcessTable.js","import":"/webgpu-os/kernel/ProcessTable.js","sourceHash":"903a1371476bee032dbf10b9b2c60f0eec9c3a84516d8ff86c69f989dd2e1117","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ProcessTable.js#0000:ProcessTable","exportIndex":0,"name":"ProcessTable","kind":"class","signature":"class ProcessTable","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ProvenanceChecker.md","moduleTitle":"kernel/ProvenanceChecker","source":"webgpu-os/kernel/ProvenanceChecker.js","import":"/webgpu-os/kernel/ProvenanceChecker.js","sourceHash":"8e583663803989ca8c3bce6d502dc2a7067a0fd02248d9665cd63d58ceb0162c","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/ProvenanceChecker.js","title":"kernel/ProvenanceChecker","summary":"ProvenanceChecker.js — SLSA-inspired build provenance validation. Signatures prove WHO built a package; provenance proves HOW. The 2026 TanStack attack shipped packages with valid signatures from a hijacked builder, so we validate a provenance block and (critically) that the declared source materials actually match the packaged files. Provenance block shape (in the envelope): { sourceRef:  'git@…#<commit>' | 'webgpu-os/devtools', builderId:  'webgpu-os/devtools' | 'ci/github', builtAt:    ISO timestamp, buildParams:{ … }, materials:  [ { path: 'files/app.js', sha256: '…' }, … ] } Returns a verdict { ok, level, builderId, warnings[] }: level 0 — no provenance (allowed, but lowers trust → risk badge) level 1 — provenance present + materials match packaged files level 2 — level 1 AND builder is a recognized trusted builder","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ProvenanceChecker.md","moduleTitle":"kernel/ProvenanceChecker","source":"webgpu-os/kernel/ProvenanceChecker.js","import":"/webgpu-os/kernel/ProvenanceChecker.js","sourceHash":"8e583663803989ca8c3bce6d502dc2a7067a0fd02248d9665cd63d58ceb0162c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ProvenanceChecker.js#0000:ProvenanceChecker","exportIndex":0,"name":"ProvenanceChecker","kind":"class","signature":"class ProvenanceChecker","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/RuleGraph.md","moduleTitle":"kernel/RuleGraph","source":"webgpu-os/kernel/RuleGraph.js","import":"/webgpu-os/kernel/RuleGraph.js","sourceHash":"19749b4a686d1dff1d8237985a02ec3ed78c2290a73e14ce7e3263e2dd97786f","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/RuleGraph.js","title":"kernel/RuleGraph","summary":"RuleGraph.js — declarative capability-based permissions engine. Rules are evaluated in registration order; the LAST matching rule wins (CSS-like specificity — more specific rules override general ones). Capabilities follow a dot-namespace convention: fs.read, fs.write, gpu.compute, gpu.acquireSurface, net.send, net.on, ai.infer, ui.notify, ipc.emit, … Wildcard matching: 'fs.*'  matches any capability starting with 'fs.' '*'     matches everything Condition functions receive (appId, capability, manifest) and return bool. A rule with a condition is only applied when the condition is true. Usage: const graph = new RuleGraph() .allow('fs.*') .deny('net.*') .allowIf('gpu.compute', (id, cap, mf) => mf.permissions?.includes('gpu.compute')); const { granted, reason } = graph.check('os.calculator', 'fs.read', manifest);","exportCount":4}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/RuleGraph.md","moduleTitle":"kernel/RuleGraph","source":"webgpu-os/kernel/RuleGraph.js","import":"/webgpu-os/kernel/RuleGraph.js","sourceHash":"19749b4a686d1dff1d8237985a02ec3ed78c2290a73e14ce7e3263e2dd97786f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/RuleGraph.js#0000:RuleGraph","exportIndex":0,"name":"RuleGraph","kind":"class","signature":"class RuleGraph","summary":"RuleGraph.js — declarative capability-based permissions engine. Rules are evaluated in registration order; the LAST matching rule wins (CSS-like specificity — more specific rules override general ones). Capabilities follow a dot-namespace convention: fs.read, fs.write, gpu.compute, gpu.acquireSurface, net.send, net.on, ai.infer, ui.notify, ipc.emit, … Wildcard matching: 'fs.*'  matches any capability starting with 'fs.' '*'     matches everything Condition functions receive (appId, capability, manifest) and return bool. A rule with a condition is only applied when the condition is true. Usage: const graph = new RuleGraph() .allow('fs.*') .deny('net.*') .allowIf('gpu.compute', (id, cap, mf) => mf.permissions?.includes('gpu.compute')); const { granted, reason } = graph.check('os.calculator', 'fs.read', manifest);"}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/RuleGraph.md","moduleTitle":"kernel/RuleGraph","source":"webgpu-os/kernel/RuleGraph.js","import":"/webgpu-os/kernel/RuleGraph.js","sourceHash":"19749b4a686d1dff1d8237985a02ec3ed78c2290a73e14ce7e3263e2dd97786f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/RuleGraph.js#0001:buildDefaultRuleGraph","exportIndex":1,"name":"buildDefaultRuleGraph","kind":"function","signature":"buildDefaultRuleGraph()","summary":"Build the default OS-wide RuleGraph. Apps with explicit manifest.permissions entries unlock restricted capabilities."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/RuleGraph.md","moduleTitle":"kernel/RuleGraph","source":"webgpu-os/kernel/RuleGraph.js","import":"/webgpu-os/kernel/RuleGraph.js","sourceHash":"19749b4a686d1dff1d8237985a02ec3ed78c2290a73e14ce7e3263e2dd97786f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/RuleGraph.js#0002:KNOWN_CAPABILITIES","exportIndex":2,"name":"KNOWN_CAPABILITIES","kind":"constant","signature":"KNOWN_CAPABILITIES","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/RuleGraph.md","moduleTitle":"kernel/RuleGraph","source":"webgpu-os/kernel/RuleGraph.js","import":"/webgpu-os/kernel/RuleGraph.js","sourceHash":"19749b4a686d1dff1d8237985a02ec3ed78c2290a73e14ce7e3263e2dd97786f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/RuleGraph.js#0003:CAPABILITY_LABELS","exportIndex":3,"name":"CAPABILITY_LABELS","kind":"constant","signature":"CAPABILITY_LABELS","summary":"Human-readable label for each capability (used by PermissionPortal)."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/RuntimeModeManager.md","moduleTitle":"kernel/RuntimeModeManager","source":"webgpu-os/kernel/RuntimeModeManager.js","import":"/webgpu-os/kernel/RuntimeModeManager.js","sourceHash":"8eebf325ae626b3f5579417c7dab268ff1eb6f57eec3afa314eae601283fe317","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/RuntimeModeManager.js","title":"kernel/RuntimeModeManager","summary":"RuntimeModeManager.js — Runtime ↔ Developer mode switch. Modes: 'runtime'   — enforcing permissions, no debug surface, production-like 'developer' — enforcing permissions, bounded diagnostics, hot-reload enabled Effects applied on mode change: runtime    → permissions.setEnforcing(true), window.__DEV__ = false developer  → permissions.setEnforcing(true), window.__DEV__ = true Developer mode is never an authority bypass. Entering it requires a trusted system principal and a live browser user activation; the kernel object and private services are never projected onto `window`. Persisted in IDB kv store under key 'os.runtimeMode'. Emits kernel event 'os:mode-change' with { mode, prev }.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/RuntimeModeManager.md","moduleTitle":"kernel/RuntimeModeManager","source":"webgpu-os/kernel/RuntimeModeManager.js","import":"/webgpu-os/kernel/RuntimeModeManager.js","sourceHash":"8eebf325ae626b3f5579417c7dab268ff1eb6f57eec3afa314eae601283fe317","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/RuntimeModeManager.js#0000:RuntimeModeManager","exportIndex":0,"name":"RuntimeModeManager","kind":"class","signature":"class RuntimeModeManager","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/SearchManager.md","moduleTitle":"kernel/SearchManager","source":"webgpu-os/kernel/SearchManager.js","import":"/webgpu-os/kernel/SearchManager.js","sourceHash":"ac5cbaec4cbea85c49ca5c08f5a2d93feff3bba231823b4e73ede0149a69737e","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/SearchManager.js","title":"kernel/SearchManager","summary":"SearchManager.js — unified OS search backend for the command palette. Aggregates \"app elements\" from three kinds of sources, on top of the apps / subsurfaces / deep-links the palette already indexes: 1. Quick Actions (static)  — declared in a manifest's `actions` array. Each is a runnable item. If it carries a `command`, the palette dispatches it on the CommandBus; otherwise it is delivered to the app as an app-action (the app is opened/focused first, then receives ui:app-action / reads pendingActions). 2. Live content providers  — a running app registers a query callback via ui.registerSearchProvider(id, { label, query }). `query(q)` returns result items { id, label, sublabel?, icon?, run } where run() performs the action. Providers are same-realm closures, so run() can call straight back into the app. 3. Commands (opt-in)        — CommandBus commands registered with meta.search:true become searchable; selecting dispatches them (no-arg). Opt-in keeps destructive commands out of search by default. Events: ui:app-action { appId, actionId, args } — a manifest app-action was invoked.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/SearchManager.md","moduleTitle":"kernel/SearchManager","source":"webgpu-os/kernel/SearchManager.js","import":"/webgpu-os/kernel/SearchManager.js","sourceHash":"ac5cbaec4cbea85c49ca5c08f5a2d93feff3bba231823b4e73ede0149a69737e","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/SearchManager.js#0000:SearchManager","exportIndex":0,"name":"SearchManager","kind":"class","signature":"class SearchManager","summary":"SearchManager.js — unified OS search backend for the command palette. Aggregates \"app elements\" from three kinds of sources, on top of the apps / subsurfaces / deep-links the palette already indexes: 1. Quick Actions (static)  — declared in a manifest's `actions` array. Each is a runnable item. If it carries a `command`, the palette dispatches it on the CommandBus; otherwise it is delivered to the app as an app-action (the app is opened/focused first, then receives ui:app-action / reads pendingActions). 2. Live content providers  — a running app registers a query callback via ui.registerSearchProvider(id, { label, query }). `query(q)` returns result items { id, label, sublabel?, icon?, run } where run() performs the action. Providers are same-realm closures, so run() can call straight back into the app. 3. Commands (opt-in)        — CommandBus commands registered with meta.search:true become searchable; selecting dispatches them (no-arg). Opt-in keeps destructive commands out of search by default. Events: ui:app-action { appId, actionId, args } — a manifest app-action was invoked."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/SecurityDoctor.md","moduleTitle":"kernel/SecurityDoctor","source":"webgpu-os/kernel/SecurityDoctor.js","import":"/webgpu-os/kernel/SecurityDoctor.js","sourceHash":"67001167766ed98e8d0407c51f341ef8052f6a4be029d5dc1c4f1088fc3bcc49","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/SecurityDoctor.js","title":"kernel/SecurityDoctor","summary":"SecurityDoctor.js — in-browser security posture report (no Node required). Aggregates the OS's runtime security signals into a single graded report: - syscall guard coverage (reuses auditSyscallGuards) - complete capability-policy coverage (reuses auditCapabilityMap) - permission enforcement state - package trust posture (quarantined / untrusted installed packages) - update supply-chain policy (signed + trusted-for-auto) - GPU containment (per-app broker + VRAM quotas) - shell CSP delivery (Report-Only vs enforcing, inline-script regressions) - browser-extension presence Each finding has a severity ('critical'|'high'|'medium'|'low'|'info') and a pass flag. `runSecurityDoctor(kernel)` returns a structured report suitable for logging or rendering in a Security Doctor panel.","exportCount":2}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/SecurityDoctor.md","moduleTitle":"kernel/SecurityDoctor","source":"webgpu-os/kernel/SecurityDoctor.js","import":"/webgpu-os/kernel/SecurityDoctor.js","sourceHash":"67001167766ed98e8d0407c51f341ef8052f6a4be029d5dc1c4f1088fc3bcc49","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/SecurityDoctor.js#0000:scoreSecurityFindings","exportIndex":0,"name":"scoreSecurityFindings","kind":"function","signature":"scoreSecurityFindings(findings)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/SecurityDoctor.md","moduleTitle":"kernel/SecurityDoctor","source":"webgpu-os/kernel/SecurityDoctor.js","import":"/webgpu-os/kernel/SecurityDoctor.js","sourceHash":"67001167766ed98e8d0407c51f341ef8052f6a4be029d5dc1c4f1088fc3bcc49","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/SecurityDoctor.js#0001:runSecurityDoctor","exportIndex":1,"name":"runSecurityDoctor","kind":"function","signature":"async runSecurityDoctor(kernel)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/SessionStore.md","moduleTitle":"kernel/SessionStore","source":"webgpu-os/kernel/SessionStore.js","import":"/webgpu-os/kernel/SessionStore.js","sourceHash":"a7dd3a70dca2f4ab8779039597620bbaf4f8c600b28a6cc9ec96e0bcbe236c3e","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/SessionStore.js","title":"kernel/SessionStore","summary":"SessionStore.js — OS-wide, encrypted per-origin session + credential store. One machine-bound, AES-256-GCM encrypted IndexedDB store (via AppSandbox, db `os.sandbox.os.sessions`) shared by every app and the compat layer. It replaces the Browser app's localStorage-local vault/cookie stores so logins and per-site policy are managed OS-wide and consistently encrypted. Record kinds (one IDB key each): policy:<origin>  → 'persist' | 'isolated'      per-site session policy sess:<origin>    → { cookies:{k:v}, local:{k:v}, t }   agent-captured data vault            → the Browser vault blob (itself master-password encrypted; stored here so all apps share one OS-wide vault) IMPORTANT — what this can and cannot do: We CANNOT read a cross-origin live frame's real cookies (browser isolation), and Set-Cookie is a forbidden header. So \"persistence\" is policy-driven: • 'isolated' (default) → frame loads `credentialless` (ephemeral, sessionless) • 'persist'            → frame drops `credentialless` so the browser keeps its cookies natively across reloads + restarts Captured `sess:<origin>` data only comes from surfaces we CONTROL (proxied / srcdoc / compat-sandbox documents) via an injected agent — never scraped from a live cross-origin frame.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/SessionStore.md","moduleTitle":"kernel/SessionStore","source":"webgpu-os/kernel/SessionStore.js","import":"/webgpu-os/kernel/SessionStore.js","sourceHash":"a7dd3a70dca2f4ab8779039597620bbaf4f8c600b28a6cc9ec96e0bcbe236c3e","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/SessionStore.js#0000:SessionStore","exportIndex":0,"name":"SessionStore","kind":"class","signature":"class SessionStore","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/SigningLineage.md","moduleTitle":"kernel/SigningLineage","source":"webgpu-os/kernel/SigningLineage.js","import":"/webgpu-os/kernel/SigningLineage.js","sourceHash":"c9cb2590691cb4d249fcf891f8a9f2c5af15b737c2894c835391ccd5580713b9","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/SigningLineage.js","title":"kernel/SigningLineage","summary":"SigningLineage.js — publisher signing-key rotation lineage (proof-of-rotation). Models the Android APK Signature Scheme v3 \"proof-of-rotation\" idea in our ECDSA P-256 world: a singly-linked list of publisher keys, ordered oldest → newest, where EACH ancestor key signs the NEXT key's payload. This proves that a new key is endorsed by the previous one, so an app update signed by a fresh key is provably the same publisher identity as the version a user already pinned — \"reuse the same identity with new keys, still isolated per update.\" Two independent guarantees (kept separate, exactly like APK v3): 1. File integrity / self-verification — the CURRENT key signs the version's Merkle root (PackageBuilder.buildV2). That is unchanged and lives outside this module: a package always verifies against its own files. 2. Identity continuity — THIS module. The lineage is carried inside the signed package envelope (so it is covered by the current key's signature and cannot be stripped/swapped in transit), and proves the head key descends from the previously-pinned key. Lineage shape (`prlineage-v1`): { format: 'prlineage-v1', appId:  'community.my-app', nodes:  [ { pubKey:<b64>, fingerprint:<hex>, flags:<uint>, rotatedAt:<iso> }, ... ],  // oldest → newest links:  [ <b64 sig>, ... ]   // links[i] = nodes[i] signing canonical(nodes[i+1]); length = nodes.length - 1 } Node flags (self-trusted-old-certs, bitfield): FLAG_INSTALL  (1) — this (old) key may still authorize fresh installs FLAG_UPDATE   (2) — this (old) key may still sign updates Default for new rotations is 0 (strict): only the head key installs/updates; ancestors are accepted ONLY to prove continuity to a pinned fingerprint. SECURITY: this verifier is FAIL-CLOSED. Any malformed structure, fingerprint mismatch, or broken link signature ⇒ { valid:false }. Callers fall back to the existing publisher-change quarantine path on invalid/absent lineage. fingerprintOf:(pubRaw:Uint8Array)=>Promise<string>, sign?:(data:string)=>Promise<Uint8Array|null> }} CryptoLike","exportCount":7}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/SigningLineage.md","moduleTitle":"kernel/SigningLineage","source":"webgpu-os/kernel/SigningLineage.js","import":"/webgpu-os/kernel/SigningLineage.js","sourceHash":"c9cb2590691cb4d249fcf891f8a9f2c5af15b737c2894c835391ccd5580713b9","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/SigningLineage.js#0000:lineageNodePayload","exportIndex":0,"name":"lineageNodePayload","kind":"function","signature":"lineageNodePayload(appId, prevFingerprint, node)","summary":"Canonical signed payload for a lineage node — the bytes an ancestor key signs to endorse this successor node. Binds the successor's key, fingerprint, flags, the appId, and the PREVIOUS node's fingerprint, so a link cannot be replayed onto a different app or spliced into a different chain."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/SigningLineage.md","moduleTitle":"kernel/SigningLineage","source":"webgpu-os/kernel/SigningLineage.js","import":"/webgpu-os/kernel/SigningLineage.js","sourceHash":"c9cb2590691cb4d249fcf891f8a9f2c5af15b737c2894c835391ccd5580713b9","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/SigningLineage.js#0001:verifyLineage","exportIndex":1,"name":"verifyLineage","kind":"function","signature":"async verifyLineage(lineage, crypto)","summary":"Verify a lineage end-to-end. FAIL-CLOSED."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/SigningLineage.md","moduleTitle":"kernel/SigningLineage","source":"webgpu-os/kernel/SigningLineage.js","import":"/webgpu-os/kernel/SigningLineage.js","sourceHash":"c9cb2590691cb4d249fcf891f8a9f2c5af15b737c2894c835391ccd5580713b9","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/SigningLineage.js#0002:authorizeRotation","exportIndex":2,"name":"authorizeRotation","kind":"function","signature":"async authorizeRotation(lineage, signerFingerprint, pinnedFingerprint, crypto)","summary":"Decide whether an update may proceed via key rotation. FAIL-CLOSED. Accepts iff the lineage is valid, its head equals the package's current signer fingerprint, and the previously-pinned fingerprint appears in the chain (i.e. the head provably descends from the key the user already trusts)."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/SigningLineage.md","moduleTitle":"kernel/SigningLineage","source":"webgpu-os/kernel/SigningLineage.js","import":"/webgpu-os/kernel/SigningLineage.js","sourceHash":"c9cb2590691cb4d249fcf891f8a9f2c5af15b737c2894c835391ccd5580713b9","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/SigningLineage.js#0003:createGenesisLineage","exportIndex":3,"name":"createGenesisLineage","kind":"function","signature":"async createGenesisLineage(appId, pubKeyRaw, crypto, flags = 0)","summary":"Build the genesis (single-node) lineage for a brand-new publisher key."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/SigningLineage.md","moduleTitle":"kernel/SigningLineage","source":"webgpu-os/kernel/SigningLineage.js","import":"/webgpu-os/kernel/SigningLineage.js","sourceHash":"c9cb2590691cb4d249fcf891f8a9f2c5af15b737c2894c835391ccd5580713b9","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/SigningLineage.js#0004:appendRotation","exportIndex":4,"name":"appendRotation","kind":"function","signature":"async appendRotation(lineage, newPubKeyRaw, signWithCurrent, crypto, opts = {})","summary":"Append a rotation: the CURRENT head key signs the NEW key's node, proving the new key inherits the identity. The caller supplies a `signWithCurrent(data)` bound to the OLD/head private key (the dev's safely-kept key), so private keys never enter this module."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/SigningLineage.md","moduleTitle":"kernel/SigningLineage","source":"webgpu-os/kernel/SigningLineage.js","import":"/webgpu-os/kernel/SigningLineage.js","sourceHash":"c9cb2590691cb4d249fcf891f8a9f2c5af15b737c2894c835391ccd5580713b9","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/SigningLineage.js#0005:LINEAGE_FORMAT","exportIndex":5,"name":"LINEAGE_FORMAT","kind":"constant","signature":"LINEAGE_FORMAT","summary":"SigningLineage.js — publisher signing-key rotation lineage (proof-of-rotation). Models the Android APK Signature Scheme v3 \"proof-of-rotation\" idea in our ECDSA P-256 world: a singly-linked list of publisher keys, ordered oldest → newest, where EACH ancestor key signs the NEXT key's payload. This proves that a new key is endorsed by the previous one, so an app update signed by a fresh key is provably the same publisher identity as the version a user already pinned — \"reuse the same identity with new keys, still isolated per update.\" Two independent guarantees (kept separate, exactly like APK v3): 1. File integrity / self-verification — the CURRENT key signs the version's Merkle root (PackageBuilder.buildV2). That is unchanged and lives outside this module: a package always verifies against its own files. 2. Identity continuity — THIS module. The lineage is carried inside the signed package envelope (so it is covered by the current key's signature and cannot be stripped/swapped in transit), and proves the head key descends from the previously-pinned key. Lineage shape (`prlineage-v1`): { format: 'prlineage-v1', appId:  'community.my-app', nodes:  [ { pubKey:<b64>, fingerprint:<hex>, flags:<uint>, rotatedAt:<iso> }, ... ],  // oldest → newest links:  [ <b64 sig>, ... ]   // links[i] = nodes[i] signing canonical(nodes[i+1]); length = nodes.length - 1 } Node flags (self-trusted-old-certs, bitfield): FLAG_INSTALL  (1) — this (old) key may still authorize fresh installs FLAG_UPDATE   (2) — this (old) key may still sign updates Default for new rotations is 0 (strict): only the head key installs/updates; ancestors are accepted ONLY to prove continuity to a pinned fingerprint. SECURITY: this verifier is FAIL-CLOSED. Any malformed structure, fingerprint mismatch, or broken link signature ⇒ { valid:false }. Callers fall back to the existing publisher-change quarantine path on invalid/absent lineage. fingerprintOf:(pubRaw:Uint8Array)=>Promise<string>, sign?:(data:string)=>Promise<Uint8Array|null> }} CryptoLike"}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/SigningLineage.md","moduleTitle":"kernel/SigningLineage","source":"webgpu-os/kernel/SigningLineage.js","import":"/webgpu-os/kernel/SigningLineage.js","sourceHash":"c9cb2590691cb4d249fcf891f8a9f2c5af15b737c2894c835391ccd5580713b9","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/SigningLineage.js#0006:LINEAGE_FLAG","exportIndex":6,"name":"LINEAGE_FLAG","kind":"constant","signature":"LINEAGE_FLAG","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/SubsurfaceManager.md","moduleTitle":"kernel/SubsurfaceManager","source":"webgpu-os/kernel/SubsurfaceManager.js","import":"/webgpu-os/kernel/SubsurfaceManager.js","sourceHash":"d747047ff86b3ef92c05b98ba712c7cee32ffd8db7b64654b1104960576953f7","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/SubsurfaceManager.js","title":"kernel/SubsurfaceManager","summary":"SubsurfaceManager.js — kernel navigation service for app SUBSURFACES. A \"surface\" is an app's top-level display mode (window / overlay / tray — see manifest.surface). A \"subsurface\" is a navigable sub-location *inside* an app (a tab, section, or view), declared in the manifest as: \"subsurfaces\": [ { \"id\": \"mixer\", \"label\": \"Volume Mixer\", \"icon\": \"🎚\", \"keywords\": [\"volume\"] }, ... ] This service is the OS-level registry/tracker for deep-linking into those: - Active tracking: which subsurface each running app currently shows. - Pending nav:     a deep-link target stashed for an app that is still launching (the app reads it on mount via ui.pendingNavigate). - Recents + Pins:  persisted deep-link shortcuts (the \"small UI shortcuts\"), surfaced in the command palette / Start Menu. NOTE: This is distinct from SurfaceManager.js, which allocates WebGPU canvases. Events emitted on kernel.events: ui:navigate-subsurface  { appId, subsurfaceId, args }  — a deep-link was requested ui:subsurface-change    { appId, subsurfaceId }         — an app reported its active sub os:deeplinks-change     {}                              — pins/recents changed","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/SubsurfaceManager.md","moduleTitle":"kernel/SubsurfaceManager","source":"webgpu-os/kernel/SubsurfaceManager.js","import":"/webgpu-os/kernel/SubsurfaceManager.js","sourceHash":"d747047ff86b3ef92c05b98ba712c7cee32ffd8db7b64654b1104960576953f7","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/SubsurfaceManager.js#0000:SubsurfaceManager","exportIndex":0,"name":"SubsurfaceManager","kind":"class","signature":"class SubsurfaceManager","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/SurfaceManager.md","moduleTitle":"kernel/SurfaceManager","source":"webgpu-os/kernel/SurfaceManager.js","import":"/webgpu-os/kernel/SurfaceManager.js","sourceHash":"6dfa2afae1cd8e51ae7c14d8bf846d35b9ad822e40cec7a38029968920570e92","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/SurfaceManager.js","title":"kernel/SurfaceManager","summary":"SurfaceManager.js — allocates and manages one WebGPU canvas surface per panel. Checks permissions (gpu.acquireSurface) and VRAM quotas before allocating.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/SurfaceManager.md","moduleTitle":"kernel/SurfaceManager","source":"webgpu-os/kernel/SurfaceManager.js","import":"/webgpu-os/kernel/SurfaceManager.js","sourceHash":"6dfa2afae1cd8e51ae7c14d8bf846d35b9ad822e40cec7a38029968920570e92","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/SurfaceManager.js#0000:SurfaceManager","exportIndex":0,"name":"SurfaceManager","kind":"class","signature":"class SurfaceManager","summary":"Each `gpu-panel` app gets an exclusive <canvas> + GPUCanvasContext bound to the kernel's GPU device. The SurfaceManager handles: - Canvas creation and insertion into the panel body - GPUCanvasContext.configure() with the preferred format - ResizeObserver wiring so the canvas tracks panel resize - Clean release (unconfigure + canvas removal) on panel close Quota admission happens before GPUCanvasContext creation/configuration."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/Syscalls.md","moduleTitle":"kernel/Syscalls","source":"webgpu-os/kernel/Syscalls.js","import":"/webgpu-os/kernel/Syscalls.js","sourceHash":"f61e95422a378284bffc6e00969428b22abe2a9ce64e8e27812e7c3e1774754e","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/Syscalls.js","title":"kernel/Syscalls","summary":"Syscalls.js — the stable Tier 1 ↔ Tier 2 contract boundary. Every app sees ONLY this surface. In Tier 1 (browser) each method delegates to the corresponding engine module. In Tier 2 (Rust + Wasmtime) each method becomes a WASI capability-table entry. ⚠  Never expose engine internals directly to apps. If an app needs a new capability, add a method here first; never let apps import from ../../engine/. Syscall namespaces: kernel.fs   — virtual filesystem (IndexedDB + ProjectManager) kernel.gpu  — GPU stats, resource budgets, device info kernel.ipc  — cross-app event bus kernel.ai   — inference handle (AGI driver, Phase 6) kernel.net    — networking (collab driver, Phase 5) kernel.crypto — ECDSA P-256 identity, sign/verify (CryptoDriver) kernel.ui     — notifications, modals, panels","exportCount":3}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/Syscalls.md","moduleTitle":"kernel/Syscalls","source":"webgpu-os/kernel/Syscalls.js","import":"/webgpu-os/kernel/Syscalls.js","sourceHash":"f61e95422a378284bffc6e00969428b22abe2a9ce64e8e27812e7c3e1774754e","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/Syscalls.js#0000:createSyscalls","exportIndex":0,"name":"createSyscalls","kind":"function","signature":"createSyscalls(kernel)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/Syscalls.md","moduleTitle":"kernel/Syscalls","source":"webgpu-os/kernel/Syscalls.js","import":"/webgpu-os/kernel/Syscalls.js","sourceHash":"f61e95422a378284bffc6e00969428b22abe2a9ce64e8e27812e7c3e1774754e","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/Syscalls.js#0001:guardSyscalls","exportIndex":1,"name":"guardSyscalls","kind":"function","signature":"guardSyscalls(kernel, appId, syscalls)","summary":"Wrap a syscalls object with per-app permission enforcement. Only restricted capabilities are guarded — universally-open ones (fs.*, ipc.*, ui.*) are skipped since they are always granted and the overhead is unnecessary."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/Syscalls.md","moduleTitle":"kernel/Syscalls","source":"webgpu-os/kernel/Syscalls.js","import":"/webgpu-os/kernel/Syscalls.js","sourceHash":"f61e95422a378284bffc6e00969428b22abe2a9ce64e8e27812e7c3e1774754e","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/Syscalls.js#0002:auditSyscallGuards","exportIndex":2,"name":"auditSyscallGuards","kind":"function","signature":"auditSyscallGuards(kernel)","summary":"Inventory every syscall method and classify it as guarded / open / unguarded. Build-only: no syscall is invoked. Use at boot (dev mode) or in tests to catch privileged methods added without a capability guard."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ThemeEngine.md","moduleTitle":"kernel/ThemeEngine","source":"webgpu-os/kernel/ThemeEngine.js","import":"/webgpu-os/kernel/ThemeEngine.js","sourceHash":"9e963185d0530936101fe623cda8013d3273414a93fdbc11c157a0e38efbbf25","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/ThemeEngine.js","title":"kernel/ThemeEngine","summary":"ThemeEngine.js — Kernel-level theme orchestration service. Single source of truth for all OS appearance state. Exposes a middleware-chain hook system so mods can intercept theme changes before or after they are applied to the DOM. ── Modder API ──────────────────────────────────────────────────────────── const tm = syscalls.theme; // Before hook — middleware: receive appear + next(modified) tm.before('my-mod', (appear, next) => next({ ...appear, chromeStyle: 'metal' }), 'Force metal chrome'); // After hook — react to a completed theme change tm.after('my-mod', (appear) => console.log('Theme applied:', appear)); // Remove hooks tm.removeHook('my-mod'); // Reorder tm.moveHook('my-mod', 'before', 1);           // move to index 1 in before list // Preview (no save, no events) tm.preview({ ...tm.current(), chromeStyle: 'metal' }); // Apply (save + emit os:theme-change) tm.apply({ ...tm.current(), themeId: 'crimson' }); // Export / import theme JSON const json = tm.export(); tm.import(json); // List registered hooks tm.hookList(); // → [{ id, phase, description, enabled, order }]","exportCount":9}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ThemeEngine.md","moduleTitle":"kernel/ThemeEngine","source":"webgpu-os/kernel/ThemeEngine.js","import":"/webgpu-os/kernel/ThemeEngine.js","sourceHash":"9e963185d0530936101fe623cda8013d3273414a93fdbc11c157a0e38efbbf25","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ThemeEngine.js#0000:ThemeEngine","exportIndex":0,"name":"ThemeEngine","kind":"class","signature":"class ThemeEngine","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ThemeEngine.md","moduleTitle":"kernel/ThemeEngine","source":"webgpu-os/kernel/ThemeEngine.js","import":"/webgpu-os/kernel/ThemeEngine.js","sourceHash":"9e963185d0530936101fe623cda8013d3273414a93fdbc11c157a0e38efbbf25","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ThemeEngine.js#0001:normalizeAppearance","exportIndex":1,"name":"normalizeAppearance","kind":"function","signature":"normalizeAppearance(input = {})","summary":"Normalize untrusted or legacy appearance data into the supported schema."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ThemeEngine.md","moduleTitle":"kernel/ThemeEngine","source":"webgpu-os/kernel/ThemeEngine.js","import":"/webgpu-os/kernel/ThemeEngine.js","sourceHash":"9e963185d0530936101fe623cda8013d3273414a93fdbc11c157a0e38efbbf25","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ThemeEngine.js#0002:readAppearanceRecord","exportIndex":2,"name":"readAppearanceRecord","kind":"function","signature":"readAppearanceRecord()","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ThemeEngine.md","moduleTitle":"kernel/ThemeEngine","source":"webgpu-os/kernel/ThemeEngine.js","import":"/webgpu-os/kernel/ThemeEngine.js","sourceHash":"9e963185d0530936101fe623cda8013d3273414a93fdbc11c157a0e38efbbf25","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ThemeEngine.js#0003:writeAppearanceRecord","exportIndex":3,"name":"writeAppearanceRecord","kind":"function","signature":"writeAppearanceRecord(input)","summary":"Publish one canonical appearance record after guarding the existing version."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ThemeEngine.md","moduleTitle":"kernel/ThemeEngine","source":"webgpu-os/kernel/ThemeEngine.js","import":"/webgpu-os/kernel/ThemeEngine.js","sourceHash":"9e963185d0530936101fe623cda8013d3273414a93fdbc11c157a0e38efbbf25","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ThemeEngine.js#0004:removeAppearanceRecord","exportIndex":4,"name":"removeAppearanceRecord","kind":"function","signature":"removeAppearanceRecord()","summary":"Remove the current record only when this runtime can understand it."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ThemeEngine.md","moduleTitle":"kernel/ThemeEngine","source":"webgpu-os/kernel/ThemeEngine.js","import":"/webgpu-os/kernel/ThemeEngine.js","sourceHash":"9e963185d0530936101fe623cda8013d3273414a93fdbc11c157a0e38efbbf25","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ThemeEngine.js#0005:THEMES","exportIndex":5,"name":"THEMES","kind":"constant","signature":"THEMES","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ThemeEngine.md","moduleTitle":"kernel/ThemeEngine","source":"webgpu-os/kernel/ThemeEngine.js","import":"/webgpu-os/kernel/ThemeEngine.js","sourceHash":"9e963185d0530936101fe623cda8013d3273414a93fdbc11c157a0e38efbbf25","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ThemeEngine.js#0006:WALLPAPERS","exportIndex":6,"name":"WALLPAPERS","kind":"constant","signature":"WALLPAPERS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ThemeEngine.md","moduleTitle":"kernel/ThemeEngine","source":"webgpu-os/kernel/ThemeEngine.js","import":"/webgpu-os/kernel/ThemeEngine.js","sourceHash":"9e963185d0530936101fe623cda8013d3273414a93fdbc11c157a0e38efbbf25","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ThemeEngine.js#0007:APPEARANCE_VERSION","exportIndex":7,"name":"APPEARANCE_VERSION","kind":"constant","signature":"APPEARANCE_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ThemeEngine.md","moduleTitle":"kernel/ThemeEngine","source":"webgpu-os/kernel/ThemeEngine.js","import":"/webgpu-os/kernel/ThemeEngine.js","sourceHash":"9e963185d0530936101fe623cda8013d3273414a93fdbc11c157a0e38efbbf25","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ThemeEngine.js#0008:APPEARANCE_DEFAULTS","exportIndex":8,"name":"APPEARANCE_DEFAULTS","kind":"constant","signature":"APPEARANCE_DEFAULTS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ToolDriver.md","moduleTitle":"kernel/ToolDriver","source":"webgpu-os/kernel/ToolDriver.js","import":"/webgpu-os/kernel/ToolDriver.js","sourceHash":"94b40f20959878cf1a20912877425347bfda32813ccbdeb9a397e0a107e2f4e0","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/ToolDriver.js","title":"kernel/ToolDriver","summary":"ToolDriver — small OS-native tool registry for LLM/tool callers. This mirrors the useful parts of Augment's tool registry in browser-native form: schema listing, guarded execution, history, read-only batching, and a narrow terminal bridge that never exposes the interactive terminal's eval path.","exportCount":7}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ToolDriver.md","moduleTitle":"kernel/ToolDriver","source":"webgpu-os/kernel/ToolDriver.js","import":"/webgpu-os/kernel/ToolDriver.js","sourceHash":"94b40f20959878cf1a20912877425347bfda32813ccbdeb9a397e0a107e2f4e0","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ToolDriver.js#0000:ToolDriver","exportIndex":0,"name":"ToolDriver","kind":"class","signature":"class ToolDriver","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ToolDriver.md","moduleTitle":"kernel/ToolDriver","source":"webgpu-os/kernel/ToolDriver.js","import":"/webgpu-os/kernel/ToolDriver.js","sourceHash":"94b40f20959878cf1a20912877425347bfda32813ccbdeb9a397e0a107e2f4e0","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ToolDriver.js#0001:evaluateCalculatorExpression","exportIndex":1,"name":"evaluateCalculatorExpression","kind":"function","signature":"evaluateCalculatorExpression(expression)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ToolDriver.md","moduleTitle":"kernel/ToolDriver","source":"webgpu-os/kernel/ToolDriver.js","import":"/webgpu-os/kernel/ToolDriver.js","sourceHash":"94b40f20959878cf1a20912877425347bfda32813ccbdeb9a397e0a107e2f4e0","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ToolDriver.js#0002:normalizeCalculatorExpression","exportIndex":2,"name":"normalizeCalculatorExpression","kind":"function","signature":"normalizeCalculatorExpression(expression)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ToolDriver.md","moduleTitle":"kernel/ToolDriver","source":"webgpu-os/kernel/ToolDriver.js","import":"/webgpu-os/kernel/ToolDriver.js","sourceHash":"94b40f20959878cf1a20912877425347bfda32813ccbdeb9a397e0a107e2f4e0","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ToolDriver.js#0003:projectContentFreeToolFailure","exportIndex":3,"name":"projectContentFreeToolFailure","kind":"function","signature":"async projectContentFreeToolFailure(error, { toolName = 'unknown', errorCode = null, } = {})","summary":"Project an arbitrary handler failure without retaining its message. Handler messages are untrusted and may quote complete tool inputs, credentials, or provider content. The digest preserves deterministic incident correlation."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ToolDriver.md","moduleTitle":"kernel/ToolDriver","source":"webgpu-os/kernel/ToolDriver.js","import":"/webgpu-os/kernel/ToolDriver.js","sourceHash":"94b40f20959878cf1a20912877425347bfda32813ccbdeb9a397e0a107e2f4e0","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ToolDriver.js#0004:TOOL_ARGUMENT_HASH_OPTIONS","exportIndex":4,"name":"TOOL_ARGUMENT_HASH_OPTIONS","kind":"constant","signature":"TOOL_ARGUMENT_HASH_OPTIONS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ToolDriver.md","moduleTitle":"kernel/ToolDriver","source":"webgpu-os/kernel/ToolDriver.js","import":"/webgpu-os/kernel/ToolDriver.js","sourceHash":"94b40f20959878cf1a20912877425347bfda32813ccbdeb9a397e0a107e2f4e0","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ToolDriver.js#0005:TOOL_HISTORY_MAX_ENTRIES","exportIndex":5,"name":"TOOL_HISTORY_MAX_ENTRIES","kind":"constant","signature":"TOOL_HISTORY_MAX_ENTRIES","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ToolDriver.md","moduleTitle":"kernel/ToolDriver","source":"webgpu-os/kernel/ToolDriver.js","import":"/webgpu-os/kernel/ToolDriver.js","sourceHash":"94b40f20959878cf1a20912877425347bfda32813ccbdeb9a397e0a107e2f4e0","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ToolDriver.js#0006:TOOL_HISTORY_MAX_BYTES","exportIndex":6,"name":"TOOL_HISTORY_MAX_BYTES","kind":"constant","signature":"TOOL_HISTORY_MAX_BYTES","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/TrayManager.md","moduleTitle":"kernel/TrayManager","source":"webgpu-os/kernel/TrayManager.js","import":"/webgpu-os/kernel/TrayManager.js","sourceHash":"9ae7575d922475dac5c4ad6491f563db97365afce0fd106ad25e13100ae011ca","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/TrayManager.js","title":"kernel/TrayManager","summary":"TrayManager.js — system notification area (status icons). Background/utility apps register a small status icon next to the clock, the same model used by Windows' notification area, macOS' menu-bar extras, and the FreeDesktop StatusNotifier spec. Apps register via syscalls.ui.registerTrayIcon(spec) and the StatusTray renders them, with an overflow popup for icons beyond the visible limit. Icon spec: { id, appId?, icon, tooltip?, onClick?, menu?, priority? } - icon:    emoji/glyph string (or short text) - onClick: fn() invoked on left click (shared-realm apps only) - menu:    [{ label, onClick }] optional right-click menu - priority: higher sorts first (default 0)","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/TrayManager.md","moduleTitle":"kernel/TrayManager","source":"webgpu-os/kernel/TrayManager.js","import":"/webgpu-os/kernel/TrayManager.js","sourceHash":"9ae7575d922475dac5c4ad6491f563db97365afce0fd106ad25e13100ae011ca","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/TrayManager.js#0000:TrayManager","exportIndex":0,"name":"TrayManager","kind":"class","signature":"class TrayManager","summary":"TrayManager.js — system notification area (status icons). Background/utility apps register a small status icon next to the clock, the same model used by Windows' notification area, macOS' menu-bar extras, and the FreeDesktop StatusNotifier spec. Apps register via syscalls.ui.registerTrayIcon(spec) and the StatusTray renders them, with an overflow popup for icons beyond the visible limit. Icon spec: { id, appId?, icon, tooltip?, onClick?, menu?, priority? } - icon:    emoji/glyph string (or short text) - onClick: fn() invoked on left click (shared-realm apps only) - menu:    [{ label, onClick }] optional right-click menu - priority: higher sorts first (default 0)"}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/TrustStore.md","moduleTitle":"kernel/TrustStore","source":"webgpu-os/kernel/TrustStore.js","import":"/webgpu-os/kernel/TrustStore.js","sourceHash":"4f6a1b21b64f78714a73fa895394201b0e8413875aa4ce96f03c2489641dd97c","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/TrustStore.js","title":"kernel/TrustStore","summary":"TrustStore.js — ring-0 trust anchors + publisher pinning for the package system. Two tiers of trust: 1. ROOTS  — public keys baked into the OS bundle (kernel/trust/roots.json). A publisher certificate that chains to a root is fully trusted. 2. PINS   — publishers the user accepted on first install (trust-on-first-use). Persisted in IndexedDB (kv store, key `trust.pin.<fingerprint>`). Anti-takeover: a pinned publisher is bound to a specific key fingerprint. If a later package for the same publisher presents a *different* fingerprint, the caller (PackageManager.verifyAndAuthorize) treats it as an identity change and blocks pending explicit re-consent — defending event-stream/durabletask-style account takeovers. SECURITY NOTE: signatures prove *who* built a package, not that the build was clean. Trust here is combined with provenance + static scan + egress controls.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/TrustStore.md","moduleTitle":"kernel/TrustStore","source":"webgpu-os/kernel/TrustStore.js","import":"/webgpu-os/kernel/TrustStore.js","sourceHash":"4f6a1b21b64f78714a73fa895394201b0e8413875aa4ce96f03c2489641dd97c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/TrustStore.js#0000:TrustStore","exportIndex":0,"name":"TrustStore","kind":"class","signature":"class TrustStore","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/UiSounds.md","moduleTitle":"kernel/UiSounds","source":"webgpu-os/kernel/UiSounds.js","import":"/webgpu-os/kernel/UiSounds.js","sourceHash":"a1eb998e98b83f7733585114aca4127903234ce6dc3ae300c3b6ae0ad2995821","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/UiSounds.js","title":"kernel/UiSounds","summary":"UiSounds.js — OS-wide UI sound engine (kernel service). Procedurally synthesizes short UI sounds (click, open, close, notify, error, …) through the OS AudioDriver's shared context, so every cue is mixed and volume- controlled centrally (it appears in the Sound mixer as a \"System sounds\" session). Sounds are auto-triggered from OS-wide kernel events (panel open/close/minimize/ restore, notifications, theme toggle) and from a global click listener, so the whole desktop gets feedback without each app wiring anything. Apps can also play a cue explicitly via syscalls.ui.sound('click'). ── Future customization ────────────────────────────────────────────────────────── Every cue is a named entry in a registry. A mod / sound pack can override or add cues at runtime: kernel.uiSounds.register('click', (ctx, out, t0) => { ... custom synth ... }); kernel.uiSounds.register('coin', (ctx, out, t0) => { ... new cue ... }); Per-cue enable flags, global enable, and volume persist in localStorage, ready for a settings UI (the Sound app exposes the global toggle + volume today).","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/UiSounds.md","moduleTitle":"kernel/UiSounds","source":"webgpu-os/kernel/UiSounds.js","import":"/webgpu-os/kernel/UiSounds.js","sourceHash":"a1eb998e98b83f7733585114aca4127903234ce6dc3ae300c3b6ae0ad2995821","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/UiSounds.js#0000:UiSounds","exportIndex":0,"name":"UiSounds","kind":"class","signature":"class UiSounds","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/VRAMTracker.md","moduleTitle":"kernel/VRAMTracker","source":"webgpu-os/kernel/VRAMTracker.js","import":"/webgpu-os/kernel/VRAMTracker.js","sourceHash":"0ef7f62132d39dc7ac8374e83f6e819f89e23a317e4ebeda838aee40c84cf3a4","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/VRAMTracker.js","title":"kernel/VRAMTracker","summary":"VRAMTracker.js — per-app GPU memory budget tracking. WebGPU does not expose actual VRAM usage. We track *requested* allocations: Surfaces  — estimated from canvas dimensions × bytes-per-pixel Buffers   — exact size passed to createBuffer (when routed via syscalls) Textures  — estimated from width × height × format bytes-per-pixel Admission is checked before allocations. Canvas surfaces receive a small, bounded reserve so buffer/texture workloads cannot consume the final UI capacity and make an app impossible to close or recover. Phase 5+ upgrade path: hook device.createBuffer/createTexture via a GPUDevice proxy to track all allocations, not just syscall-routed ones.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/VRAMTracker.md","moduleTitle":"kernel/VRAMTracker","source":"webgpu-os/kernel/VRAMTracker.js","import":"/webgpu-os/kernel/VRAMTracker.js","sourceHash":"0ef7f62132d39dc7ac8374e83f6e819f89e23a317e4ebeda838aee40c84cf3a4","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/VRAMTracker.js#0000:VRAMTracker","exportIndex":0,"name":"VRAMTracker","kind":"class","signature":"class VRAMTracker","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/VirtualFS.md","moduleTitle":"kernel/VirtualFS","source":"webgpu-os/kernel/VirtualFS.js","import":"/webgpu-os/kernel/VirtualFS.js","sourceHash":"c7ee3f68da55aef3dd5e2fc429698fa16640adb5ddfef743c54f1d07664ae467","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/VirtualFS.js","title":"kernel/VirtualFS","summary":"VirtualFS.js — path-tree virtual filesystem. Features: POSIX-like paths   — /user/notepad/file.txt Directories        — implicit from file paths; explicit mkdir supported Persistence        — OPFS-backed via StorageManager (falls back to localStorage) Events             — on('write'|'delete'|'*', cb) for live watchers (e.g. Notepad tabs) JSON helpers       — readJSON / writeJSON All public methods are synchronous (reads from in-memory cache). Writes flush to OPFS asynchronously in the background. Call `await virtualFS.hydrate()` once at OS boot to preload OPFS → memory.","exportCount":2}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/VirtualFS.md","moduleTitle":"kernel/VirtualFS","source":"webgpu-os/kernel/VirtualFS.js","import":"/webgpu-os/kernel/VirtualFS.js","sourceHash":"c7ee3f68da55aef3dd5e2fc429698fa16640adb5ddfef743c54f1d07664ae467","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/VirtualFS.js#0000:VirtualFS","exportIndex":0,"name":"VirtualFS","kind":"class","signature":"class VirtualFS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/VirtualFS.md","moduleTitle":"kernel/VirtualFS","source":"webgpu-os/kernel/VirtualFS.js","import":"/webgpu-os/kernel/VirtualFS.js","sourceHash":"c7ee3f68da55aef3dd5e2fc429698fa16640adb5ddfef743c54f1d07664ae467","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/VirtualFS.js#0001:virtualFS","exportIndex":1,"name":"virtualFS","kind":"constant","signature":"virtualFS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/agent/JavaScriptProjectFacts.md","moduleTitle":"kernel/agent/JavaScriptProjectFacts","source":"webgpu-os/kernel/agent/JavaScriptProjectFacts.js","import":"/webgpu-os/kernel/agent/JavaScriptProjectFacts.js","sourceHash":"38fb71e87ad0106cfdc4d0964f39a0fa991dab901267b967bb40be55115548fb","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/agent/JavaScriptProjectFacts.js","title":"kernel/agent/JavaScriptProjectFacts","summary":"Bounded lexical facts shared by project indexing and source verification. This module deliberately does not claim to parse JavaScript, TypeScript, or JSX. It identifies inspectable declarations and import specifiers while keeping lexical evidence distinct from parser evidence.","exportCount":5}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/agent/JavaScriptProjectFacts.md","moduleTitle":"kernel/agent/JavaScriptProjectFacts","source":"webgpu-os/kernel/agent/JavaScriptProjectFacts.js","import":"/webgpu-os/kernel/agent/JavaScriptProjectFacts.js","sourceHash":"38fb71e87ad0106cfdc4d0964f39a0fa991dab901267b967bb40be55115548fb","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/agent/JavaScriptProjectFacts.js#0000:javascriptLanguageForPath","exportIndex":0,"name":"javascriptLanguageForPath","kind":"function","signature":"javascriptLanguageForPath(path = '')","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/agent/JavaScriptProjectFacts.md","moduleTitle":"kernel/agent/JavaScriptProjectFacts","source":"webgpu-os/kernel/agent/JavaScriptProjectFacts.js","import":"/webgpu-os/kernel/agent/JavaScriptProjectFacts.js","sourceHash":"38fb71e87ad0106cfdc4d0964f39a0fa991dab901267b967bb40be55115548fb","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/agent/JavaScriptProjectFacts.js#0001:inspectJavaScriptProjectFacts","exportIndex":1,"name":"inspectJavaScriptProjectFacts","kind":"function","signature":"inspectJavaScriptProjectFacts({ path = '', content = '', maxTokens = MAX_TOKENS, maxSymbols = MAX_SYMBOLS, maxImports = MAX_IMPORTS, } = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/agent/JavaScriptProjectFacts.md","moduleTitle":"kernel/agent/JavaScriptProjectFacts","source":"webgpu-os/kernel/agent/JavaScriptProjectFacts.js","import":"/webgpu-os/kernel/agent/JavaScriptProjectFacts.js","sourceHash":"38fb71e87ad0106cfdc4d0964f39a0fa991dab901267b967bb40be55115548fb","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/agent/JavaScriptProjectFacts.js#0002:resolveJavaScriptImport","exportIndex":2,"name":"resolveJavaScriptImport","kind":"function","signature":"resolveJavaScriptImport({ sourcePath = '', specifier = '', knownFiles = null } = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/agent/JavaScriptProjectFacts.md","moduleTitle":"kernel/agent/JavaScriptProjectFacts","source":"webgpu-os/kernel/agent/JavaScriptProjectFacts.js","import":"/webgpu-os/kernel/agent/JavaScriptProjectFacts.js","sourceHash":"38fb71e87ad0106cfdc4d0964f39a0fa991dab901267b967bb40be55115548fb","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/agent/JavaScriptProjectFacts.js#0003:dependencyName","exportIndex":3,"name":"dependencyName","kind":"function","signature":"dependencyName(specifier = '')","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/agent/JavaScriptProjectFacts.md","moduleTitle":"kernel/agent/JavaScriptProjectFacts","source":"webgpu-os/kernel/agent/JavaScriptProjectFacts.js","import":"/webgpu-os/kernel/agent/JavaScriptProjectFacts.js","sourceHash":"38fb71e87ad0106cfdc4d0964f39a0fa991dab901267b967bb40be55115548fb","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/agent/JavaScriptProjectFacts.js#0004:JAVASCRIPT_PROJECT_FACTS_FORMAT","exportIndex":4,"name":"JAVASCRIPT_PROJECT_FACTS_FORMAT","kind":"constant","signature":"JAVASCRIPT_PROJECT_FACTS_FORMAT","summary":"Bounded lexical facts shared by project indexing and source verification. This module deliberately does not claim to parse JavaScript, TypeScript, or JSX. It identifies inspectable declarations and import specifiers while keeping lexical evidence distinct from parser evidence."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/agent/MountedProjectIntelligenceIndex.md","moduleTitle":"kernel/agent/MountedProjectIntelligenceIndex","source":"webgpu-os/kernel/agent/MountedProjectIntelligenceIndex.js","import":"/webgpu-os/kernel/agent/MountedProjectIntelligenceIndex.js","sourceHash":"dd6135481af41fba3618c8df6eebc58afc7bf00ec05e7cff5f4eb2d050d15fad","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/agent/MountedProjectIntelligenceIndex.js","title":"kernel/agent/MountedProjectIntelligenceIndex","summary":"Deterministic, authority-free project intelligence for a mounted workspace. The builder can see a workspace only through AI Echo's existing bounded storage.list and storage.read tool contracts. It returns source-backed facts separately from advisory suggestions and never exposes complete source text.","exportCount":4}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/agent/MountedProjectIntelligenceIndex.md","moduleTitle":"kernel/agent/MountedProjectIntelligenceIndex","source":"webgpu-os/kernel/agent/MountedProjectIntelligenceIndex.js","import":"/webgpu-os/kernel/agent/MountedProjectIntelligenceIndex.js","sourceHash":"dd6135481af41fba3618c8df6eebc58afc7bf00ec05e7cff5f4eb2d050d15fad","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/agent/MountedProjectIntelligenceIndex.js#0000:buildMountedProjectIntelligence","exportIndex":0,"name":"buildMountedProjectIntelligence","kind":"function","signature":"async buildMountedProjectIntelligence({ invokeTool, rootPath, workspaceRevision = '', maxEntries = DEFAULT_MAX_ENTRIES, maxDepth = DEFAULT_MAX_DEPTH, maxReadFiles = DEFAULT_MAX_READ_FILES, maxReadChars = DEFAULT_MAX_READ_CHARS, maxTotalReadChars = DEFAULT_MAX_TOTAL_READ_CHARS, } = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/agent/MountedProjectIntelligenceIndex.md","moduleTitle":"kernel/agent/MountedProjectIntelligenceIndex","source":"webgpu-os/kernel/agent/MountedProjectIntelligenceIndex.js","import":"/webgpu-os/kernel/agent/MountedProjectIntelligenceIndex.js","sourceHash":"dd6135481af41fba3618c8df6eebc58afc7bf00ec05e7cff5f4eb2d050d15fad","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/agent/MountedProjectIntelligenceIndex.js#0001:MOUNTED_PROJECT_INTELLIGENCE_FORMAT","exportIndex":1,"name":"MOUNTED_PROJECT_INTELLIGENCE_FORMAT","kind":"constant","signature":"MOUNTED_PROJECT_INTELLIGENCE_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/agent/MountedProjectIntelligenceIndex.md","moduleTitle":"kernel/agent/MountedProjectIntelligenceIndex","source":"webgpu-os/kernel/agent/MountedProjectIntelligenceIndex.js","import":"/webgpu-os/kernel/agent/MountedProjectIntelligenceIndex.js","sourceHash":"dd6135481af41fba3618c8df6eebc58afc7bf00ec05e7cff5f4eb2d050d15fad","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/agent/MountedProjectIntelligenceIndex.js#0002:AGENT_STORAGE_LIST_TOOL","exportIndex":2,"name":"AGENT_STORAGE_LIST_TOOL","kind":"constant","signature":"AGENT_STORAGE_LIST_TOOL","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/agent/MountedProjectIntelligenceIndex.md","moduleTitle":"kernel/agent/MountedProjectIntelligenceIndex","source":"webgpu-os/kernel/agent/MountedProjectIntelligenceIndex.js","import":"/webgpu-os/kernel/agent/MountedProjectIntelligenceIndex.js","sourceHash":"dd6135481af41fba3618c8df6eebc58afc7bf00ec05e7cff5f4eb2d050d15fad","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/agent/MountedProjectIntelligenceIndex.js#0003:AGENT_STORAGE_READ_TOOL","exportIndex":3,"name":"AGENT_STORAGE_READ_TOOL","kind":"constant","signature":"AGENT_STORAGE_READ_TOOL","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/AIDispatchScheduler.md","moduleTitle":"kernel/ai-hub/AIDispatchScheduler","source":"webgpu-os/kernel/ai-hub/AIDispatchScheduler.js","import":"/webgpu-os/kernel/ai-hub/AIDispatchScheduler.js","sourceHash":"0af1053b8db32a9ee7c2eb4745b3c313134c38c5da903b33d70ea175b9891302","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/ai-hub/AIDispatchScheduler.js","title":"kernel/ai-hub/AIDispatchScheduler","summary":"AIDispatchScheduler.js — bounded, in-memory admission for live model calls. Prompts stay inside the caller's run closure and are never serialized or persisted by this scheduler. Owners are serviced round-robin while each owner's jobs retain FIFO start order. Provider and exact-route limits keep a burst of Navi work from crushing one remote endpoint.","exportCount":3}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/AIDispatchScheduler.md","moduleTitle":"kernel/ai-hub/AIDispatchScheduler","source":"webgpu-os/kernel/ai-hub/AIDispatchScheduler.js","import":"/webgpu-os/kernel/ai-hub/AIDispatchScheduler.js","sourceHash":"0af1053b8db32a9ee7c2eb4745b3c313134c38c5da903b33d70ea175b9891302","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/AIDispatchScheduler.js#0000:AIDispatchError","exportIndex":0,"name":"AIDispatchError","kind":"class","signature":"class AIDispatchError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/AIDispatchScheduler.md","moduleTitle":"kernel/ai-hub/AIDispatchScheduler","source":"webgpu-os/kernel/ai-hub/AIDispatchScheduler.js","import":"/webgpu-os/kernel/ai-hub/AIDispatchScheduler.js","sourceHash":"0af1053b8db32a9ee7c2eb4745b3c313134c38c5da903b33d70ea175b9891302","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/AIDispatchScheduler.js#0001:AIDispatchScheduler","exportIndex":1,"name":"AIDispatchScheduler","kind":"class","signature":"class AIDispatchScheduler","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/AIDispatchScheduler.md","moduleTitle":"kernel/ai-hub/AIDispatchScheduler","source":"webgpu-os/kernel/ai-hub/AIDispatchScheduler.js","import":"/webgpu-os/kernel/ai-hub/AIDispatchScheduler.js","sourceHash":"0af1053b8db32a9ee7c2eb4745b3c313134c38c5da903b33d70ea175b9891302","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/AIDispatchScheduler.js#0002:AI_DISPATCH_DEFAULTS","exportIndex":2,"name":"AI_DISPATCH_DEFAULTS","kind":"constant","signature":"AI_DISPATCH_DEFAULTS","summary":"AIDispatchScheduler.js — bounded, in-memory admission for live model calls. Prompts stay inside the caller's run closure and are never serialized or persisted by this scheduler. Owners are serviced round-robin while each owner's jobs retain FIFO start order. Provider and exact-route limits keep a burst of Navi work from crushing one remote endpoint."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/AIService.md","moduleTitle":"kernel/ai-hub/AIService","source":"webgpu-os/kernel/ai-hub/AIService.js","import":"/webgpu-os/kernel/ai-hub/AIService.js","sourceHash":"8a956bcc0c2a49c6d70ee1011ad52b4af38b7d6e5cf9ceb7f80f790778480c3f","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/ai-hub/AIService.js","title":"kernel/ai-hub/AIService","summary":"AIService.js — the OS.ai() entrypoint (Phase 1 skeleton). Remote-provider based through an adaptive credential boundary. It prefers the isolated AI Bridge extension and falls back on phones to browser-direct OpenRouter or an approved user-controlled HTTPS proxy. Fully separate from `syscalls.ai.*` (the local on-device GGUF runtime). Exposed at kernel.aiHub and wrapped by syscalls.aiHub (capability-gated).","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/AIService.md","moduleTitle":"kernel/ai-hub/AIService","source":"webgpu-os/kernel/ai-hub/AIService.js","import":"/webgpu-os/kernel/ai-hub/AIService.js","sourceHash":"8a956bcc0c2a49c6d70ee1011ad52b4af38b7d6e5cf9ceb7f80f790778480c3f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/AIService.js#0000:AIHub","exportIndex":0,"name":"AIHub","kind":"class","signature":"class AIHub","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/AdaptiveProviderBridge.md","moduleTitle":"kernel/ai-hub/AdaptiveProviderBridge","source":"webgpu-os/kernel/ai-hub/AdaptiveProviderBridge.js","import":"/webgpu-os/kernel/ai-hub/AdaptiveProviderBridge.js","sourceHash":"c9470aec531a8748dbadf1b2c5bfa75d137c2f19dc3b1aa01b640c29a58b6aee","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/ai-hub/AdaptiveProviderBridge.js","title":"kernel/ai-hub/AdaptiveProviderBridge","summary":"Chooses one credential/transport boundary per operation. The extension is always preferred because its origin isolates secrets from the OS page. Browser-direct is selected only when the extension remains unavailable after a bridge reprobe. Provider requests are never replayed across the two backends, preventing duplicate billing and duplicate tool/model effects.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/AdaptiveProviderBridge.md","moduleTitle":"kernel/ai-hub/AdaptiveProviderBridge","source":"webgpu-os/kernel/ai-hub/AdaptiveProviderBridge.js","import":"/webgpu-os/kernel/ai-hub/AdaptiveProviderBridge.js","sourceHash":"c9470aec531a8748dbadf1b2c5bfa75d137c2f19dc3b1aa01b640c29a58b6aee","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/AdaptiveProviderBridge.js#0000:AdaptiveProviderBridge","exportIndex":0,"name":"AdaptiveProviderBridge","kind":"class","signature":"class AdaptiveProviderBridge","summary":"Chooses one credential/transport boundary per operation. The extension is always preferred because its origin isolates secrets from the OS page. Browser-direct is selected only when the extension remains unavailable after a bridge reprobe. Provider requests are never replayed across the two backends, preventing duplicate billing and duplicate tool/model effects."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/DirectProviderBridge.md","moduleTitle":"kernel/ai-hub/DirectProviderBridge","source":"webgpu-os/kernel/ai-hub/DirectProviderBridge.js","import":"/webgpu-os/kernel/ai-hub/DirectProviderBridge.js","sourceHash":"505af2c9b70ba79cc430bf22218496fa3d283f40cc892d0abb03eb28b7637261","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/ai-hub/DirectProviderBridge.js","title":"kernel/ai-hub/DirectProviderBridge","summary":"Browser-direct AI transport for phones and other browsers without extension support. The allowlist is deliberately narrow: - OpenRouter, whose official OAuth/PKCE flow supports browser clients. - A user-approved HTTPS OpenAI-compatible proxy controlled by the user. OpenAI, Anthropic, and other long-lived provider keys stay extension/server only. Their presence in the shared provider catalog does not grant this transport permission to call them.","exportCount":11}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/DirectProviderBridge.md","moduleTitle":"kernel/ai-hub/DirectProviderBridge","source":"webgpu-os/kernel/ai-hub/DirectProviderBridge.js","import":"/webgpu-os/kernel/ai-hub/DirectProviderBridge.js","sourceHash":"505af2c9b70ba79cc430bf22218496fa3d283f40cc892d0abb03eb28b7637261","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/DirectProviderBridge.js#0000:DirectProviderBridge","exportIndex":0,"name":"DirectProviderBridge","kind":"class","signature":"class DirectProviderBridge","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/DirectProviderBridge.md","moduleTitle":"kernel/ai-hub/DirectProviderBridge","source":"webgpu-os/kernel/ai-hub/DirectProviderBridge.js","import":"/webgpu-os/kernel/ai-hub/DirectProviderBridge.js","sourceHash":"505af2c9b70ba79cc430bf22218496fa3d283f40cc892d0abb03eb28b7637261","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/DirectProviderBridge.js#0001:readCustomEndpointAllowlist","exportIndex":1,"name":"readCustomEndpointAllowlist","kind":"function","signature":"readCustomEndpointAllowlist(storage = globalThis.localStorage)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/DirectProviderBridge.md","moduleTitle":"kernel/ai-hub/DirectProviderBridge","source":"webgpu-os/kernel/ai-hub/DirectProviderBridge.js","import":"/webgpu-os/kernel/ai-hub/DirectProviderBridge.js","sourceHash":"505af2c9b70ba79cc430bf22218496fa3d283f40cc892d0abb03eb28b7637261","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/DirectProviderBridge.js#0002:writeCustomEndpointAllowlist","exportIndex":2,"name":"writeCustomEndpointAllowlist","kind":"function","signature":"writeCustomEndpointAllowlist(endpoints, storage = globalThis.localStorage)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/DirectProviderBridge.md","moduleTitle":"kernel/ai-hub/DirectProviderBridge","source":"webgpu-os/kernel/ai-hub/DirectProviderBridge.js","import":"/webgpu-os/kernel/ai-hub/DirectProviderBridge.js","sourceHash":"505af2c9b70ba79cc430bf22218496fa3d283f40cc892d0abb03eb28b7637261","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/DirectProviderBridge.js#0003:readDirectModelCache","exportIndex":3,"name":"readDirectModelCache","kind":"function","signature":"readDirectModelCache(storage = globalThis.localStorage)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/DirectProviderBridge.md","moduleTitle":"kernel/ai-hub/DirectProviderBridge","source":"webgpu-os/kernel/ai-hub/DirectProviderBridge.js","import":"/webgpu-os/kernel/ai-hub/DirectProviderBridge.js","sourceHash":"505af2c9b70ba79cc430bf22218496fa3d283f40cc892d0abb03eb28b7637261","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/DirectProviderBridge.js#0004:writeDirectModelCache","exportIndex":4,"name":"writeDirectModelCache","kind":"function","signature":"writeDirectModelCache(records, storage = globalThis.localStorage)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/DirectProviderBridge.md","moduleTitle":"kernel/ai-hub/DirectProviderBridge","source":"webgpu-os/kernel/ai-hub/DirectProviderBridge.js","import":"/webgpu-os/kernel/ai-hub/DirectProviderBridge.js","sourceHash":"505af2c9b70ba79cc430bf22218496fa3d283f40cc892d0abb03eb28b7637261","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/DirectProviderBridge.js#0005:CUSTOM_ENDPOINTS_KEY","exportIndex":5,"name":"CUSTOM_ENDPOINTS_KEY","kind":"constant","signature":"CUSTOM_ENDPOINTS_KEY","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/DirectProviderBridge.md","moduleTitle":"kernel/ai-hub/DirectProviderBridge","source":"webgpu-os/kernel/ai-hub/DirectProviderBridge.js","import":"/webgpu-os/kernel/ai-hub/DirectProviderBridge.js","sourceHash":"505af2c9b70ba79cc430bf22218496fa3d283f40cc892d0abb03eb28b7637261","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/DirectProviderBridge.js#0006:CUSTOM_ENDPOINTS_LEGACY_KEY","exportIndex":6,"name":"CUSTOM_ENDPOINTS_LEGACY_KEY","kind":"constant","signature":"CUSTOM_ENDPOINTS_LEGACY_KEY","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/DirectProviderBridge.md","moduleTitle":"kernel/ai-hub/DirectProviderBridge","source":"webgpu-os/kernel/ai-hub/DirectProviderBridge.js","import":"/webgpu-os/kernel/ai-hub/DirectProviderBridge.js","sourceHash":"505af2c9b70ba79cc430bf22218496fa3d283f40cc892d0abb03eb28b7637261","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/DirectProviderBridge.js#0007:CUSTOM_ENDPOINTS_FORMAT","exportIndex":7,"name":"CUSTOM_ENDPOINTS_FORMAT","kind":"constant","signature":"CUSTOM_ENDPOINTS_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/DirectProviderBridge.md","moduleTitle":"kernel/ai-hub/DirectProviderBridge","source":"webgpu-os/kernel/ai-hub/DirectProviderBridge.js","import":"/webgpu-os/kernel/ai-hub/DirectProviderBridge.js","sourceHash":"505af2c9b70ba79cc430bf22218496fa3d283f40cc892d0abb03eb28b7637261","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/DirectProviderBridge.js#0008:MODEL_CACHE_KEY","exportIndex":8,"name":"MODEL_CACHE_KEY","kind":"constant","signature":"MODEL_CACHE_KEY","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/DirectProviderBridge.md","moduleTitle":"kernel/ai-hub/DirectProviderBridge","source":"webgpu-os/kernel/ai-hub/DirectProviderBridge.js","import":"/webgpu-os/kernel/ai-hub/DirectProviderBridge.js","sourceHash":"505af2c9b70ba79cc430bf22218496fa3d283f40cc892d0abb03eb28b7637261","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/DirectProviderBridge.js#0009:MODEL_CACHE_FORMAT","exportIndex":9,"name":"MODEL_CACHE_FORMAT","kind":"constant","signature":"MODEL_CACHE_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/DirectProviderBridge.md","moduleTitle":"kernel/ai-hub/DirectProviderBridge","source":"webgpu-os/kernel/ai-hub/DirectProviderBridge.js","import":"/webgpu-os/kernel/ai-hub/DirectProviderBridge.js","sourceHash":"505af2c9b70ba79cc430bf22218496fa3d283f40cc892d0abb03eb28b7637261","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/DirectProviderBridge.js#0010:AI_DIRECT_PREFERENCE_VERSION","exportIndex":10,"name":"AI_DIRECT_PREFERENCE_VERSION","kind":"constant","signature":"AI_DIRECT_PREFERENCE_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/ExtensionBridge.md","moduleTitle":"kernel/ai-hub/ExtensionBridge","source":"webgpu-os/kernel/ai-hub/ExtensionBridge.js","import":"/webgpu-os/kernel/ai-hub/ExtensionBridge.js","sourceHash":"e52cd757fc8260971ea444ee0f5e2baf7ac339d097285726fe5e62430b9dba8c","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/ai-hub/ExtensionBridge.js","title":"kernel/ai-hub/ExtensionBridge","summary":"ExtensionBridge.js — the AI Hub's preferred isolated path to a remote provider. Talks to WebGPU OS Companion via kernel.browserBridge (relay.js's message contract). Never called with a page-supplied header; built-in routes accept only provider/model/messages/ params while custom endpoints remain explicitly approved by the user.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/ExtensionBridge.md","moduleTitle":"kernel/ai-hub/ExtensionBridge","source":"webgpu-os/kernel/ai-hub/ExtensionBridge.js","import":"/webgpu-os/kernel/ai-hub/ExtensionBridge.js","sourceHash":"e52cd757fc8260971ea444ee0f5e2baf7ac339d097285726fe5e62430b9dba8c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/ExtensionBridge.js#0000:ExtensionBridge","exportIndex":0,"name":"ExtensionBridge","kind":"class","signature":"class ExtensionBridge","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/LocalCredentialVault.md","moduleTitle":"kernel/ai-hub/LocalCredentialVault","source":"webgpu-os/kernel/ai-hub/LocalCredentialVault.js","import":"/webgpu-os/kernel/ai-hub/LocalCredentialVault.js","sourceHash":"228dba9adbd835afa5ee3324712f1798133f30651975e09f0664eeaadae7092f","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/ai-hub/LocalCredentialVault.js","title":"kernel/ai-hub/LocalCredentialVault","summary":"Same-origin credential vault for browsers that cannot install extensions. Session credentials remain ephemeral. Opt-in persistent credentials use a non-extractable IndexedDB CryptoKey and a versioned, encrypted readback. V2 commits the Files-visible readback first and the matching IndexedDB slot second. Readers compare monotonically increasing generations and repair an interrupted second step. V1 envelopes/readbacks remain read-only inputs.","exportCount":4}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/LocalCredentialVault.md","moduleTitle":"kernel/ai-hub/LocalCredentialVault","source":"webgpu-os/kernel/ai-hub/LocalCredentialVault.js","import":"/webgpu-os/kernel/ai-hub/LocalCredentialVault.js","sourceHash":"228dba9adbd835afa5ee3324712f1798133f30651975e09f0664eeaadae7092f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/LocalCredentialVault.js#0000:LocalCredentialContractError","exportIndex":0,"name":"LocalCredentialContractError","kind":"class","signature":"class LocalCredentialContractError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/LocalCredentialVault.md","moduleTitle":"kernel/ai-hub/LocalCredentialVault","source":"webgpu-os/kernel/ai-hub/LocalCredentialVault.js","import":"/webgpu-os/kernel/ai-hub/LocalCredentialVault.js","sourceHash":"228dba9adbd835afa5ee3324712f1798133f30651975e09f0664eeaadae7092f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/LocalCredentialVault.js#0001:LocalCredentialVault","exportIndex":1,"name":"LocalCredentialVault","kind":"class","signature":"class LocalCredentialVault","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/LocalCredentialVault.md","moduleTitle":"kernel/ai-hub/LocalCredentialVault","source":"webgpu-os/kernel/ai-hub/LocalCredentialVault.js","import":"/webgpu-os/kernel/ai-hub/LocalCredentialVault.js","sourceHash":"228dba9adbd835afa5ee3324712f1798133f30651975e09f0664eeaadae7092f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/LocalCredentialVault.js#0002:LOCAL_CREDENTIAL_CONTRACTS","exportIndex":2,"name":"LOCAL_CREDENTIAL_CONTRACTS","kind":"constant","signature":"LOCAL_CREDENTIAL_CONTRACTS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/LocalCredentialVault.md","moduleTitle":"kernel/ai-hub/LocalCredentialVault","source":"webgpu-os/kernel/ai-hub/LocalCredentialVault.js","import":"/webgpu-os/kernel/ai-hub/LocalCredentialVault.js","sourceHash":"228dba9adbd835afa5ee3324712f1798133f30651975e09f0664eeaadae7092f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/LocalCredentialVault.js#0003:LOCAL_CREDENTIAL_READBACK_PATH","exportIndex":3,"name":"LOCAL_CREDENTIAL_READBACK_PATH","kind":"constant","signature":"LOCAL_CREDENTIAL_READBACK_PATH","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/LocalRuntimeProvider.md","moduleTitle":"kernel/ai-hub/LocalRuntimeProvider","source":"webgpu-os/kernel/ai-hub/LocalRuntimeProvider.js","import":"/webgpu-os/kernel/ai-hub/LocalRuntimeProvider.js","sourceHash":"8c0e901cb4f7939db8b874d29dbdc6435a61fdcbd346e736f0d507f71470a18f","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/ai-hub/LocalRuntimeProvider.js","title":"kernel/ai-hub/LocalRuntimeProvider","summary":"AI Hub adapter for the kernel-owned, on-device GGUF runtime. Installed models and generation defaults stay authoritative in LLMDriver; this class only translates that state into the provider-neutral AI Hub contract.","exportCount":3}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/LocalRuntimeProvider.md","moduleTitle":"kernel/ai-hub/LocalRuntimeProvider","source":"webgpu-os/kernel/ai-hub/LocalRuntimeProvider.js","import":"/webgpu-os/kernel/ai-hub/LocalRuntimeProvider.js","sourceHash":"8c0e901cb4f7939db8b874d29dbdc6435a61fdcbd346e736f0d507f71470a18f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/LocalRuntimeProvider.js#0000:LocalRuntimeProvider","exportIndex":0,"name":"LocalRuntimeProvider","kind":"class","signature":"class LocalRuntimeProvider","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/LocalRuntimeProvider.md","moduleTitle":"kernel/ai-hub/LocalRuntimeProvider","source":"webgpu-os/kernel/ai-hub/LocalRuntimeProvider.js","import":"/webgpu-os/kernel/ai-hub/LocalRuntimeProvider.js","sourceHash":"8c0e901cb4f7939db8b874d29dbdc6435a61fdcbd346e736f0d507f71470a18f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/LocalRuntimeProvider.js#0001:automaticRoutingReadiness","exportIndex":1,"name":"automaticRoutingReadiness","kind":"function","signature":"automaticRoutingReadiness(model, runtimeStatus = {})","summary":"Automatic Navi routing is stricter than catalog presence. A saved handle can identify a model without proving that this tab can read it, and an initialized driver can exist without a usable WebGPU device. Manual LLM Runtime flows may still ask the operator to reconnect a handle; unattended routing may not."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/LocalRuntimeProvider.md","moduleTitle":"kernel/ai-hub/LocalRuntimeProvider","source":"webgpu-os/kernel/ai-hub/LocalRuntimeProvider.js","import":"/webgpu-os/kernel/ai-hub/LocalRuntimeProvider.js","sourceHash":"8c0e901cb4f7939db8b874d29dbdc6435a61fdcbd346e736f0d507f71470a18f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/LocalRuntimeProvider.js#0002:LOCAL_RUNTIME_PROVIDER_ID","exportIndex":2,"name":"LOCAL_RUNTIME_PROVIDER_ID","kind":"constant","signature":"LOCAL_RUNTIME_PROVIDER_ID","summary":"AI Hub adapter for the kernel-owned, on-device GGUF runtime. Installed models and generation defaults stay authoritative in LLMDriver; this class only translates that state into the provider-neutral AI Hub contract."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/ModelCapabilityRegistry.md","moduleTitle":"kernel/ai-hub/ModelCapabilityRegistry","source":"webgpu-os/kernel/ai-hub/ModelCapabilityRegistry.js","import":"/webgpu-os/kernel/ai-hub/ModelCapabilityRegistry.js","sourceHash":"f2576f10dcbd81140313a92307a76e4db92c821b20ae00c9ee558a7a95d109f7","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/ai-hub/ModelCapabilityRegistry.js","title":"kernel/ai-hub/ModelCapabilityRegistry","summary":"ModelCapabilityRegistry.js — maps an abstract `modelTier` to a concrete { provider, model } pair for the OS AI Hub. Apps ask for a tier ('fast', 'balanced', 'reasoning'), not a specific vendor model, so the default can change without touching every app's request payload.","exportCount":7}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/ModelCapabilityRegistry.md","moduleTitle":"kernel/ai-hub/ModelCapabilityRegistry","source":"webgpu-os/kernel/ai-hub/ModelCapabilityRegistry.js","import":"/webgpu-os/kernel/ai-hub/ModelCapabilityRegistry.js","sourceHash":"f2576f10dcbd81140313a92307a76e4db92c821b20ae00c9ee558a7a95d109f7","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/ModelCapabilityRegistry.js#0000:ModelCapabilityRegistry","exportIndex":0,"name":"ModelCapabilityRegistry","kind":"class","signature":"class ModelCapabilityRegistry","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/ModelCapabilityRegistry.md","moduleTitle":"kernel/ai-hub/ModelCapabilityRegistry","source":"webgpu-os/kernel/ai-hub/ModelCapabilityRegistry.js","import":"/webgpu-os/kernel/ai-hub/ModelCapabilityRegistry.js","sourceHash":"f2576f10dcbd81140313a92307a76e4db92c821b20ae00c9ee558a7a95d109f7","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/ModelCapabilityRegistry.js#0001:readModelCapabilityRouting","exportIndex":1,"name":"readModelCapabilityRouting","kind":"function","signature":"readModelCapabilityRouting(storage = globalThis.localStorage)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/ModelCapabilityRegistry.md","moduleTitle":"kernel/ai-hub/ModelCapabilityRegistry","source":"webgpu-os/kernel/ai-hub/ModelCapabilityRegistry.js","import":"/webgpu-os/kernel/ai-hub/ModelCapabilityRegistry.js","sourceHash":"f2576f10dcbd81140313a92307a76e4db92c821b20ae00c9ee558a7a95d109f7","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/ModelCapabilityRegistry.js#0002:writeModelCapabilityRouting","exportIndex":2,"name":"writeModelCapabilityRouting","kind":"function","signature":"writeModelCapabilityRouting(tiers, storage = globalThis.localStorage)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/ModelCapabilityRegistry.md","moduleTitle":"kernel/ai-hub/ModelCapabilityRegistry","source":"webgpu-os/kernel/ai-hub/ModelCapabilityRegistry.js","import":"/webgpu-os/kernel/ai-hub/ModelCapabilityRegistry.js","sourceHash":"f2576f10dcbd81140313a92307a76e4db92c821b20ae00c9ee558a7a95d109f7","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/ModelCapabilityRegistry.js#0003:MODEL_CAPABILITY_STORAGE_KEY","exportIndex":3,"name":"MODEL_CAPABILITY_STORAGE_KEY","kind":"constant","signature":"MODEL_CAPABILITY_STORAGE_KEY","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/ModelCapabilityRegistry.md","moduleTitle":"kernel/ai-hub/ModelCapabilityRegistry","source":"webgpu-os/kernel/ai-hub/ModelCapabilityRegistry.js","import":"/webgpu-os/kernel/ai-hub/ModelCapabilityRegistry.js","sourceHash":"f2576f10dcbd81140313a92307a76e4db92c821b20ae00c9ee558a7a95d109f7","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/ModelCapabilityRegistry.js#0004:MODEL_CAPABILITY_LEGACY_STORAGE_KEY","exportIndex":4,"name":"MODEL_CAPABILITY_LEGACY_STORAGE_KEY","kind":"constant","signature":"MODEL_CAPABILITY_LEGACY_STORAGE_KEY","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/ModelCapabilityRegistry.md","moduleTitle":"kernel/ai-hub/ModelCapabilityRegistry","source":"webgpu-os/kernel/ai-hub/ModelCapabilityRegistry.js","import":"/webgpu-os/kernel/ai-hub/ModelCapabilityRegistry.js","sourceHash":"f2576f10dcbd81140313a92307a76e4db92c821b20ae00c9ee558a7a95d109f7","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/ModelCapabilityRegistry.js#0005:MODEL_CAPABILITY_STORAGE_FORMAT","exportIndex":5,"name":"MODEL_CAPABILITY_STORAGE_FORMAT","kind":"constant","signature":"MODEL_CAPABILITY_STORAGE_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/ModelCapabilityRegistry.md","moduleTitle":"kernel/ai-hub/ModelCapabilityRegistry","source":"webgpu-os/kernel/ai-hub/ModelCapabilityRegistry.js","import":"/webgpu-os/kernel/ai-hub/ModelCapabilityRegistry.js","sourceHash":"f2576f10dcbd81140313a92307a76e4db92c821b20ae00c9ee558a7a95d109f7","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/ModelCapabilityRegistry.js#0006:MODEL_CAPABILITY_STORAGE_VERSION","exportIndex":6,"name":"MODEL_CAPABILITY_STORAGE_VERSION","kind":"constant","signature":"MODEL_CAPABILITY_STORAGE_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/ProviderRouter.md","moduleTitle":"kernel/ai-hub/ProviderRouter","source":"webgpu-os/kernel/ai-hub/ProviderRouter.js","import":"/webgpu-os/kernel/ai-hub/ProviderRouter.js","sourceHash":"81af30ca33aed9ff56a947fb6f1fdc08ba4ea969c7c7a9ab21bcb1ff935d321f","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/ai-hub/ProviderRouter.js","title":"kernel/ai-hub/ProviderRouter","summary":"ProviderRouter.js — picks the concrete { provider, model } for a normalized OS.ai() request: an explicit provider/model on the request always wins, otherwise it resolves the request's modelTier via ModelCapabilityRegistry.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/ProviderRouter.md","moduleTitle":"kernel/ai-hub/ProviderRouter","source":"webgpu-os/kernel/ai-hub/ProviderRouter.js","import":"/webgpu-os/kernel/ai-hub/ProviderRouter.js","sourceHash":"81af30ca33aed9ff56a947fb6f1fdc08ba4ea969c7c7a9ab21bcb1ff935d321f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/ProviderRouter.js#0000:ProviderRouter","exportIndex":0,"name":"ProviderRouter","kind":"class","signature":"class ProviderRouter","summary":"ProviderRouter.js — picks the concrete { provider, model } for a normalized OS.ai() request: an explicit provider/model on the request always wins, otherwise it resolves the request's modelTier via ModelCapabilityRegistry."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/RequestNormalizer.md","moduleTitle":"kernel/ai-hub/RequestNormalizer","source":"webgpu-os/kernel/ai-hub/RequestNormalizer.js","import":"/webgpu-os/kernel/ai-hub/RequestNormalizer.js","sourceHash":"33f8ac4aeda6c4f3df06379f6098e51498e05c3808d7d775c911f038255f506a","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/ai-hub/RequestNormalizer.js","title":"kernel/ai-hub/RequestNormalizer","summary":"RequestNormalizer.js — validates and normalizes an OS.ai(request) payload into the canonical shape the rest of the AI Hub pipeline consumes.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/RequestNormalizer.md","moduleTitle":"kernel/ai-hub/RequestNormalizer","source":"webgpu-os/kernel/ai-hub/RequestNormalizer.js","import":"/webgpu-os/kernel/ai-hub/RequestNormalizer.js","sourceHash":"33f8ac4aeda6c4f3df06379f6098e51498e05c3808d7d775c911f038255f506a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/RequestNormalizer.js#0000:RequestNormalizer","exportIndex":0,"name":"RequestNormalizer","kind":"class","signature":"class RequestNormalizer","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/ResultBroker.md","moduleTitle":"kernel/ai-hub/ResultBroker","source":"webgpu-os/kernel/ai-hub/ResultBroker.js","import":"/webgpu-os/kernel/ai-hub/ResultBroker.js","sourceHash":"d8c3106ebff654f1c3fd7c2afab37c7499be7bd8bf336fce751432e799fb70a1","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/ai-hub/ResultBroker.js","title":"kernel/ai-hub/ResultBroker","summary":"ResultBroker.js — wraps a raw provider chat result into the OS.ai() response envelope and stamps it with CSE provenance (engine/state). Model output is always MODEL_PREDICTED/untrusted-for-authority — it becomes canonical only if/when Phase 9's finalizer + CommitCoordinator commit it.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/ResultBroker.md","moduleTitle":"kernel/ai-hub/ResultBroker","source":"webgpu-os/kernel/ai-hub/ResultBroker.js","import":"/webgpu-os/kernel/ai-hub/ResultBroker.js","sourceHash":"d8c3106ebff654f1c3fd7c2afab37c7499be7bd8bf336fce751432e799fb70a1","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/ResultBroker.js#0000:ResultBroker","exportIndex":0,"name":"ResultBroker","kind":"class","signature":"class ResultBroker","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/SmartModelPolicy.md","moduleTitle":"kernel/ai-hub/SmartModelPolicy","source":"webgpu-os/kernel/ai-hub/SmartModelPolicy.js","import":"/webgpu-os/kernel/ai-hub/SmartModelPolicy.js","sourceHash":"3c031eedec366c56f918b942c59fb81a9dd64f03abdebea9efddd641bf2d00fa","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/ai-hub/SmartModelPolicy.js","title":"kernel/ai-hub/SmartModelPolicy","summary":"SmartModelPolicy.js - deterministic policy and catalog ranking for AI Hub. This module performs no provider calls, stores no credentials, and grants no authority. It projects provider catalog records into an inspectable ranking that Navi cognition can compile into its existing signed route contract.","exportCount":18}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/SmartModelPolicy.md","moduleTitle":"kernel/ai-hub/SmartModelPolicy","source":"webgpu-os/kernel/ai-hub/SmartModelPolicy.js","import":"/webgpu-os/kernel/ai-hub/SmartModelPolicy.js","sourceHash":"3c031eedec366c56f918b942c59fb81a9dd64f03abdebea9efddd641bf2d00fa","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/SmartModelPolicy.js#0000:classifySmartModelRouterAlias","exportIndex":0,"name":"classifySmartModelRouterAlias","kind":"function","signature":"classifySmartModelRouterAlias(provider, model)","summary":"Classify provider-side router aliases separately from concrete model IDs. Dynamic aliases may resolve to a different model on every request, so their catalog capabilities cannot safely authorize strict or effectful tasks."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/SmartModelPolicy.md","moduleTitle":"kernel/ai-hub/SmartModelPolicy","source":"webgpu-os/kernel/ai-hub/SmartModelPolicy.js","import":"/webgpu-os/kernel/ai-hub/SmartModelPolicy.js","sourceHash":"3c031eedec366c56f918b942c59fb81a9dd64f03abdebea9efddd641bf2d00fa","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/SmartModelPolicy.js#0001:defaultSmartModelPolicy","exportIndex":1,"name":"defaultSmartModelPolicy","kind":"function","signature":"defaultSmartModelPolicy()","summary":"Return a detached, immutable basic policy suitable for persisted settings."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/SmartModelPolicy.md","moduleTitle":"kernel/ai-hub/SmartModelPolicy","source":"webgpu-os/kernel/ai-hub/SmartModelPolicy.js","import":"/webgpu-os/kernel/ai-hub/SmartModelPolicy.js","sourceHash":"3c031eedec366c56f918b942c59fb81a9dd64f03abdebea9efddd641bf2d00fa","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/SmartModelPolicy.js#0002:normalizeSmartModelPolicy","exportIndex":2,"name":"normalizeSmartModelPolicy","kind":"function","signature":"normalizeSmartModelPolicy(raw = null)","summary":"Normalize persisted policy. Missing fields migrate to v1 defaults, while an unknown field or version is rejected so misspelled safety controls never silently disappear."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/SmartModelPolicy.md","moduleTitle":"kernel/ai-hub/SmartModelPolicy","source":"webgpu-os/kernel/ai-hub/SmartModelPolicy.js","import":"/webgpu-os/kernel/ai-hub/SmartModelPolicy.js","sourceHash":"3c031eedec366c56f918b942c59fb81a9dd64f03abdebea9efddd641bf2d00fa","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/SmartModelPolicy.js#0003:inferSmartModelWorkloadProfile","exportIndex":3,"name":"inferSmartModelWorkloadProfile","kind":"function","signature":"inferSmartModelWorkloadProfile(raw = {})","summary":"Infer preference-only workload affinities from one provider catalog row. The result improves ranking and model-picker explanations. It is never an authorization claim: privacy, modality, tool transport, context, endpoint health, and budget remain separate hard eligibility checks."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/SmartModelPolicy.md","moduleTitle":"kernel/ai-hub/SmartModelPolicy","source":"webgpu-os/kernel/ai-hub/SmartModelPolicy.js","import":"/webgpu-os/kernel/ai-hub/SmartModelPolicy.js","sourceHash":"3c031eedec366c56f918b942c59fb81a9dd64f03abdebea9efddd641bf2d00fa","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/SmartModelPolicy.js#0004:classifySmartModelTask","exportIndex":4,"name":"classifySmartModelTask","kind":"function","signature":"classifySmartModelTask(raw = {})","summary":"Classify a task without consulting a model. Explicit purpose wins; otherwise bounded, ordered rules use declared modality/privacy/background state before keyword signals. Raw user text is never copied into the returned evidence."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/SmartModelPolicy.md","moduleTitle":"kernel/ai-hub/SmartModelPolicy","source":"webgpu-os/kernel/ai-hub/SmartModelPolicy.js","import":"/webgpu-os/kernel/ai-hub/SmartModelPolicy.js","sourceHash":"3c031eedec366c56f918b942c59fb81a9dd64f03abdebea9efddd641bf2d00fa","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/SmartModelPolicy.js#0005:normalizeSmartModelCandidate","exportIndex":5,"name":"normalizeSmartModelCandidate","kind":"function","signature":"normalizeSmartModelCandidate(raw)","summary":"Project one provider-catalog record into the policy's provider-neutral form."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/SmartModelPolicy.md","moduleTitle":"kernel/ai-hub/SmartModelPolicy","source":"webgpu-os/kernel/ai-hub/SmartModelPolicy.js","import":"/webgpu-os/kernel/ai-hub/SmartModelPolicy.js","sourceHash":"3c031eedec366c56f918b942c59fb81a9dd64f03abdebea9efddd641bf2d00fa","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/SmartModelPolicy.js#0006:estimateSmartModelCostMicrounits","exportIndex":6,"name":"estimateSmartModelCostMicrounits","kind":"function","signature":"estimateSmartModelCostMicrounits(candidate, estimatedTokens)","summary":"Conservative projected cost for a normalized candidate and token estimate."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/SmartModelPolicy.md","moduleTitle":"kernel/ai-hub/SmartModelPolicy","source":"webgpu-os/kernel/ai-hub/SmartModelPolicy.js","import":"/webgpu-os/kernel/ai-hub/SmartModelPolicy.js","sourceHash":"3c031eedec366c56f918b942c59fb81a9dd64f03abdebea9efddd641bf2d00fa","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/SmartModelPolicy.js#0007:rankSmartModelPool","exportIndex":7,"name":"rankSmartModelPool","kind":"function","signature":"rankSmartModelPool({ policy: rawPolicy = null, models = [], task = {}, usage = null } = {})","summary":"Rank a catalog and return a deterministic, inspectable decision. The caller still owns provider authentication, canonical resource reservations, and final execution authority."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/SmartModelPolicy.md","moduleTitle":"kernel/ai-hub/SmartModelPolicy","source":"webgpu-os/kernel/ai-hub/SmartModelPolicy.js","import":"/webgpu-os/kernel/ai-hub/SmartModelPolicy.js","sourceHash":"3c031eedec366c56f918b942c59fb81a9dd64f03abdebea9efddd641bf2d00fa","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/SmartModelPolicy.js#0008:selectSmartModelPool","exportIndex":8,"name":"selectSmartModelPool","kind":"function","signature":"selectSmartModelPool(options = {})","summary":"Semantic alias for callers that consume the selected route and fallbacks."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/SmartModelPolicy.md","moduleTitle":"kernel/ai-hub/SmartModelPolicy","source":"webgpu-os/kernel/ai-hub/SmartModelPolicy.js","import":"/webgpu-os/kernel/ai-hub/SmartModelPolicy.js","sourceHash":"3c031eedec366c56f918b942c59fb81a9dd64f03abdebea9efddd641bf2d00fa","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/SmartModelPolicy.js#0009:SMART_MODEL_POLICY_FORMAT","exportIndex":9,"name":"SMART_MODEL_POLICY_FORMAT","kind":"constant","signature":"SMART_MODEL_POLICY_FORMAT","summary":"SmartModelPolicy.js - deterministic policy and catalog ranking for AI Hub. This module performs no provider calls, stores no credentials, and grants no authority. It projects provider catalog records into an inspectable ranking that Navi cognition can compile into its existing signed route contract."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/SmartModelPolicy.md","moduleTitle":"kernel/ai-hub/SmartModelPolicy","source":"webgpu-os/kernel/ai-hub/SmartModelPolicy.js","import":"/webgpu-os/kernel/ai-hub/SmartModelPolicy.js","sourceHash":"3c031eedec366c56f918b942c59fb81a9dd64f03abdebea9efddd641bf2d00fa","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/SmartModelPolicy.js#0010:SMART_MODEL_TASK_CLASSIFICATION_FORMAT","exportIndex":10,"name":"SMART_MODEL_TASK_CLASSIFICATION_FORMAT","kind":"constant","signature":"SMART_MODEL_TASK_CLASSIFICATION_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/SmartModelPolicy.md","moduleTitle":"kernel/ai-hub/SmartModelPolicy","source":"webgpu-os/kernel/ai-hub/SmartModelPolicy.js","import":"/webgpu-os/kernel/ai-hub/SmartModelPolicy.js","sourceHash":"3c031eedec366c56f918b942c59fb81a9dd64f03abdebea9efddd641bf2d00fa","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/SmartModelPolicy.js#0011:SMART_MODEL_DECISION_FORMAT","exportIndex":11,"name":"SMART_MODEL_DECISION_FORMAT","kind":"constant","signature":"SMART_MODEL_DECISION_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/SmartModelPolicy.md","moduleTitle":"kernel/ai-hub/SmartModelPolicy","source":"webgpu-os/kernel/ai-hub/SmartModelPolicy.js","import":"/webgpu-os/kernel/ai-hub/SmartModelPolicy.js","sourceHash":"3c031eedec366c56f918b942c59fb81a9dd64f03abdebea9efddd641bf2d00fa","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/SmartModelPolicy.js#0012:SMART_MODEL_PROFILES","exportIndex":12,"name":"SMART_MODEL_PROFILES","kind":"constant","signature":"SMART_MODEL_PROFILES","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/SmartModelPolicy.md","moduleTitle":"kernel/ai-hub/SmartModelPolicy","source":"webgpu-os/kernel/ai-hub/SmartModelPolicy.js","import":"/webgpu-os/kernel/ai-hub/SmartModelPolicy.js","sourceHash":"3c031eedec366c56f918b942c59fb81a9dd64f03abdebea9efddd641bf2d00fa","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/SmartModelPolicy.js#0013:SMART_MODEL_ACCESS_MODES","exportIndex":13,"name":"SMART_MODEL_ACCESS_MODES","kind":"constant","signature":"SMART_MODEL_ACCESS_MODES","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/SmartModelPolicy.md","moduleTitle":"kernel/ai-hub/SmartModelPolicy","source":"webgpu-os/kernel/ai-hub/SmartModelPolicy.js","import":"/webgpu-os/kernel/ai-hub/SmartModelPolicy.js","sourceHash":"3c031eedec366c56f918b942c59fb81a9dd64f03abdebea9efddd641bf2d00fa","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/SmartModelPolicy.js#0014:SMART_MODEL_ACCESS_CLASSES","exportIndex":14,"name":"SMART_MODEL_ACCESS_CLASSES","kind":"constant","signature":"SMART_MODEL_ACCESS_CLASSES","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/SmartModelPolicy.md","moduleTitle":"kernel/ai-hub/SmartModelPolicy","source":"webgpu-os/kernel/ai-hub/SmartModelPolicy.js","import":"/webgpu-os/kernel/ai-hub/SmartModelPolicy.js","sourceHash":"3c031eedec366c56f918b942c59fb81a9dd64f03abdebea9efddd641bf2d00fa","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/SmartModelPolicy.js#0015:SMART_MODEL_ROUTER_KINDS","exportIndex":15,"name":"SMART_MODEL_ROUTER_KINDS","kind":"constant","signature":"SMART_MODEL_ROUTER_KINDS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/SmartModelPolicy.md","moduleTitle":"kernel/ai-hub/SmartModelPolicy","source":"webgpu-os/kernel/ai-hub/SmartModelPolicy.js","import":"/webgpu-os/kernel/ai-hub/SmartModelPolicy.js","sourceHash":"3c031eedec366c56f918b942c59fb81a9dd64f03abdebea9efddd641bf2d00fa","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/SmartModelPolicy.js#0016:SMART_MODEL_PURPOSES","exportIndex":16,"name":"SMART_MODEL_PURPOSES","kind":"constant","signature":"SMART_MODEL_PURPOSES","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ai-hub/SmartModelPolicy.md","moduleTitle":"kernel/ai-hub/SmartModelPolicy","source":"webgpu-os/kernel/ai-hub/SmartModelPolicy.js","import":"/webgpu-os/kernel/ai-hub/SmartModelPolicy.js","sourceHash":"3c031eedec366c56f918b942c59fb81a9dd64f03abdebea9efddd641bf2d00fa","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ai-hub/SmartModelPolicy.js#0017:SMART_MODEL_WORKLOAD_ROLES","exportIndex":17,"name":"SMART_MODEL_WORKLOAD_ROLES","kind":"constant","signature":"SMART_MODEL_WORKLOAD_ROLES","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/attestation/CapabilityAttestation.md","moduleTitle":"kernel/attestation/CapabilityAttestation","source":"webgpu-os/kernel/attestation/CapabilityAttestation.js","import":"/webgpu-os/kernel/attestation/CapabilityAttestation.js","sourceHash":"243d1759a4b385b46d7c59d0f236dd4eea9375e17384161be66051337e92220d","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/attestation/CapabilityAttestation.js","title":"kernel/attestation/CapabilityAttestation","summary":"CapabilityAttestation.js — gates capability minting on descriptor attestation. Wraps engine/state's CapabilityRegistry/Capability.js (via the Phase 4 CapabilityNegotiator, kernel.protocol.capabilities — no parallel capability logic) and layers DescriptorHashStore on top so a capability is only minted for a tool whose descriptor hash matches the approved hash. The always-on Navi runtime requires explicit package or operator approval for every first-seen descriptor.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/attestation/CapabilityAttestation.md","moduleTitle":"kernel/attestation/CapabilityAttestation","source":"webgpu-os/kernel/attestation/CapabilityAttestation.js","import":"/webgpu-os/kernel/attestation/CapabilityAttestation.js","sourceHash":"243d1759a4b385b46d7c59d0f236dd4eea9375e17384161be66051337e92220d","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/attestation/CapabilityAttestation.js#0000:CapabilityAttestation","exportIndex":0,"name":"CapabilityAttestation","kind":"class","signature":"class CapabilityAttestation","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/attestation/DescriptorHashStore.md","moduleTitle":"kernel/attestation/DescriptorHashStore","source":"webgpu-os/kernel/attestation/DescriptorHashStore.js","import":"/webgpu-os/kernel/attestation/DescriptorHashStore.js","sourceHash":"0e6178d444593cfc84b101deeb348a77a68118b4e87bc961b74b1ae1ca99b9d9","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/attestation/DescriptorHashStore.js","title":"kernel/attestation/DescriptorHashStore","summary":"DescriptorHashStore.js — persists approved tool/resource/prompt descriptor hashes IDB-side, so a \"rug pull\" (descriptor silently changing after the user approved it) is detected across sessions, not just within one runtime (that in-memory check is webgpu-os/kernel/tools/MetadataRugPullDetector.js). Hashing reuses the same SHA-256 primitive as packages/PackageVerifier.js (contentHashHex from engine/core/math/ChecksumMath.js) rather than a new hashing routine. Storage reuses the generic 'kv' IndexedDB store (see storage/IndexedDBDriver.js) instead of adding a new object store/migration.","exportCount":3}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/attestation/DescriptorHashStore.md","moduleTitle":"kernel/attestation/DescriptorHashStore","source":"webgpu-os/kernel/attestation/DescriptorHashStore.js","import":"/webgpu-os/kernel/attestation/DescriptorHashStore.js","sourceHash":"0e6178d444593cfc84b101deeb348a77a68118b4e87bc961b74b1ae1ca99b9d9","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/attestation/DescriptorHashStore.js#0000:DescriptorHashStore","exportIndex":0,"name":"DescriptorHashStore","kind":"class","signature":"class DescriptorHashStore","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/attestation/DescriptorHashStore.md","moduleTitle":"kernel/attestation/DescriptorHashStore","source":"webgpu-os/kernel/attestation/DescriptorHashStore.js","import":"/webgpu-os/kernel/attestation/DescriptorHashStore.js","sourceHash":"0e6178d444593cfc84b101deeb348a77a68118b4e87bc961b74b1ae1ca99b9d9","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/attestation/DescriptorHashStore.js#0001:descriptorMeaningSnapshot","exportIndex":1,"name":"descriptorMeaningSnapshot","kind":"function","signature":"descriptorMeaningSnapshot(descriptor)","summary":"Complete approval identity for a callable descriptor. This intentionally includes authority, mutability, effect, provenance, timeout, and executable source fields so retaining the same JSON input schema cannot conceal a more dangerous implementation after approval."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/attestation/DescriptorHashStore.md","moduleTitle":"kernel/attestation/DescriptorHashStore","source":"webgpu-os/kernel/attestation/DescriptorHashStore.js","import":"/webgpu-os/kernel/attestation/DescriptorHashStore.js","sourceHash":"0e6178d444593cfc84b101deeb348a77a68118b4e87bc961b74b1ae1ca99b9d9","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/attestation/DescriptorHashStore.js#0002:portableDescriptorMeaningSnapshot","exportIndex":2,"name":"portableDescriptorMeaningSnapshot","kind":"function","signature":"portableDescriptorMeaningSnapshot(descriptor)","summary":"Package-portable descriptor identity for signed Faculty manifests only."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/attestation/DescriptorSanitizer.md","moduleTitle":"kernel/attestation/DescriptorSanitizer","source":"webgpu-os/kernel/attestation/DescriptorSanitizer.js","import":"/webgpu-os/kernel/attestation/DescriptorSanitizer.js","sourceHash":"dc7ff7de2f2d9d5e6a488e9b990a7377c1a9859204e4810bb66c03a41f3416ef","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/attestation/DescriptorSanitizer.js","title":"kernel/attestation/DescriptorSanitizer","summary":"DescriptorSanitizer.js — static scanner for tool/resource/prompt descriptors: flags prompt-injection strings in description/schema text, reuses HiddenParameterDetector (Phase 3) for undeclared/suspicious parameters instead of a parallel implementation, and flags a mismatch between a tool's self-declared risk and its AffordanceRegistry-declared risk.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/attestation/DescriptorSanitizer.md","moduleTitle":"kernel/attestation/DescriptorSanitizer","source":"webgpu-os/kernel/attestation/DescriptorSanitizer.js","import":"/webgpu-os/kernel/attestation/DescriptorSanitizer.js","sourceHash":"dc7ff7de2f2d9d5e6a488e9b990a7377c1a9859204e4810bb66c03a41f3416ef","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/attestation/DescriptorSanitizer.js#0000:DescriptorSanitizer","exportIndex":0,"name":"DescriptorSanitizer","kind":"class","signature":"class DescriptorSanitizer","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/attestation/DryRunManager.md","moduleTitle":"kernel/attestation/DryRunManager","source":"webgpu-os/kernel/attestation/DryRunManager.js","import":"/webgpu-os/kernel/attestation/DryRunManager.js","sourceHash":"286c32fd609e6dca79350c0ca16350937e3dcc323166f9d839266d2a1a8d4123","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/attestation/DryRunManager.js","title":"kernel/attestation/DryRunManager","summary":"DryRunManager.js — thin wrapper over engine/state/worldmodel/PredictionSandbox.js (rollout/plan, confidence-decay) — no new dry-run engine. Lets a tool call's declared predictedEffects (AffordanceRegistry, Phase 3) be previewed against a state snapshot WITHOUT ever touching canonical state.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/attestation/DryRunManager.md","moduleTitle":"kernel/attestation/DryRunManager","source":"webgpu-os/kernel/attestation/DryRunManager.js","import":"/webgpu-os/kernel/attestation/DryRunManager.js","sourceHash":"286c32fd609e6dca79350c0ca16350937e3dcc323166f9d839266d2a1a8d4123","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/attestation/DryRunManager.js#0000:DryRunManager","exportIndex":0,"name":"DryRunManager","kind":"class","signature":"class DryRunManager","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/attestation/ParameterPreviewer.md","moduleTitle":"kernel/attestation/ParameterPreviewer","source":"webgpu-os/kernel/attestation/ParameterPreviewer.js","import":"/webgpu-os/kernel/attestation/ParameterPreviewer.js","sourceHash":"853ae05ab39db953f7c0706bc39f106b655c81b912d4db3161c037c68729bdd4","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/attestation/ParameterPreviewer.js","title":"kernel/attestation/ParameterPreviewer","summary":"ParameterPreviewer.js — resolves a tool-call args object into a human-safe preview: sensitive-looking values (key/secret/token/password/ credential) are masked and long strings are truncated, so an approval UI (Phase 8's ApprovalCard) can show \"what will actually be sent\" without ever rendering raw secrets to the screen.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/attestation/ParameterPreviewer.md","moduleTitle":"kernel/attestation/ParameterPreviewer","source":"webgpu-os/kernel/attestation/ParameterPreviewer.js","import":"/webgpu-os/kernel/attestation/ParameterPreviewer.js","sourceHash":"853ae05ab39db953f7c0706bc39f106b655c81b912d4db3161c037c68729bdd4","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/attestation/ParameterPreviewer.js#0000:ParameterPreviewer","exportIndex":0,"name":"ParameterPreviewer","kind":"class","signature":"class ParameterPreviewer","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/drivers/LLMDriver.md","moduleTitle":"kernel/drivers/LLMDriver","source":"webgpu-os/kernel/drivers/LLMDriver.js","import":"/webgpu-os/kernel/drivers/LLMDriver.js","sourceHash":"704f17ae723bc1d478883f6676be29099d2c6c70764d1026438e0da70fce1e46","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/drivers/LLMDriver.js","title":"kernel/drivers/LLMDriver","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/drivers/LLMDriver.md","moduleTitle":"kernel/drivers/LLMDriver","source":"webgpu-os/kernel/drivers/LLMDriver.js","import":"/webgpu-os/kernel/drivers/LLMDriver.js","sourceHash":"704f17ae723bc1d478883f6676be29099d2c6c70764d1026438e0da70fce1e46","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/drivers/LLMDriver.js#0000:LLMDriver","exportIndex":0,"name":"LLMDriver","kind":"class","signature":"class LLMDriver","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/drivers/WebGPUAmbientDriver.md","moduleTitle":"kernel/drivers/WebGPUAmbientDriver","source":"webgpu-os/kernel/drivers/WebGPUAmbientDriver.js","import":"/webgpu-os/kernel/drivers/WebGPUAmbientDriver.js","sourceHash":"8d5dd74134bcd9c7fe26704dcf13caa726b5c11d4ded781273aef25b6a3f0837","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/drivers/WebGPUAmbientDriver.js","title":"kernel/drivers/WebGPUAmbientDriver","summary":"Factory: returns an AmbientEngine driver object { apply, destroy }. Internal simulation state is held in a closure and fully reset between mounts.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/drivers/WebGPUAmbientDriver.md","moduleTitle":"kernel/drivers/WebGPUAmbientDriver","source":"webgpu-os/kernel/drivers/WebGPUAmbientDriver.js","import":"/webgpu-os/kernel/drivers/WebGPUAmbientDriver.js","sourceHash":"8d5dd74134bcd9c7fe26704dcf13caa726b5c11d4ded781273aef25b6a3f0837","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/drivers/WebGPUAmbientDriver.js#0000:createWebGPUParticleDriver","exportIndex":0,"name":"createWebGPUParticleDriver","kind":"function","signature":"createWebGPUParticleDriver()","summary":"Factory: returns an AmbientEngine driver object { apply, destroy }. Internal simulation state is held in a closure and fully reset between mounts."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/ActiveTurnCoordinator.md","moduleTitle":"kernel/execution/ActiveTurnCoordinator","source":"webgpu-os/kernel/execution/ActiveTurnCoordinator.js","import":"/webgpu-os/kernel/execution/ActiveTurnCoordinator.js","sourceHash":"cd502dc730750400680ecbf6c5ac0c1f9734a1a866a370ec98c55dd256ed99fc","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/execution/ActiveTurnCoordinator.js","title":"kernel/execution/ActiveTurnCoordinator","summary":"ActiveTurnCoordinator.js — bounded, provider-neutral user steering for one active AI executor request. It owns ordering and deduplication only; kernel policy, tool approval, persistence, and model dispatch remain elsewhere.","exportCount":6}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/ActiveTurnCoordinator.md","moduleTitle":"kernel/execution/ActiveTurnCoordinator","source":"webgpu-os/kernel/execution/ActiveTurnCoordinator.js","import":"/webgpu-os/kernel/execution/ActiveTurnCoordinator.js","sourceHash":"cd502dc730750400680ecbf6c5ac0c1f9734a1a866a370ec98c55dd256ed99fc","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/ActiveTurnCoordinator.js#0000:ActiveTurnCoordinator","exportIndex":0,"name":"ActiveTurnCoordinator","kind":"class","signature":"class ActiveTurnCoordinator","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/ActiveTurnCoordinator.md","moduleTitle":"kernel/execution/ActiveTurnCoordinator","source":"webgpu-os/kernel/execution/ActiveTurnCoordinator.js","import":"/webgpu-os/kernel/execution/ActiveTurnCoordinator.js","sourceHash":"cd502dc730750400680ecbf6c5ac0c1f9734a1a866a370ec98c55dd256ed99fc","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/ActiveTurnCoordinator.js#0001:classifySteeringMessage","exportIndex":1,"name":"classifySteeringMessage","kind":"function","signature":"classifySteeringMessage(value)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/ActiveTurnCoordinator.md","moduleTitle":"kernel/execution/ActiveTurnCoordinator","source":"webgpu-os/kernel/execution/ActiveTurnCoordinator.js","import":"/webgpu-os/kernel/execution/ActiveTurnCoordinator.js","sourceHash":"cd502dc730750400680ecbf6c5ac0c1f9734a1a866a370ec98c55dd256ed99fc","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/ActiveTurnCoordinator.js#0002:classifySteeringImpact","exportIndex":2,"name":"classifySteeringImpact","kind":"function","signature":"classifySteeringImpact(kind, value = '')","summary":"Describe which cached work a steering message invalidates. This is a data decision only; it never widens authority or silently approves a new target."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/ActiveTurnCoordinator.md","moduleTitle":"kernel/execution/ActiveTurnCoordinator","source":"webgpu-os/kernel/execution/ActiveTurnCoordinator.js","import":"/webgpu-os/kernel/execution/ActiveTurnCoordinator.js","sourceHash":"cd502dc730750400680ecbf6c5ac0c1f9734a1a866a370ec98c55dd256ed99fc","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/ActiveTurnCoordinator.js#0003:classifySteeringDelivery","exportIndex":3,"name":"classifySteeringDelivery","kind":"function","signature":"classifySteeringDelivery(kind, value = '', { progressEstimate = null } = {})","summary":"Select when one operator instruction should affect an active task. This is deliberately a score of the instruction/task relationship, never a score of the person. It is deterministic, local, content-free in diagnostics, and grants no authority. The task Storylet consumes the resulting delivery mode at its next transition."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/ActiveTurnCoordinator.md","moduleTitle":"kernel/execution/ActiveTurnCoordinator","source":"webgpu-os/kernel/execution/ActiveTurnCoordinator.js","import":"/webgpu-os/kernel/execution/ActiveTurnCoordinator.js","sourceHash":"cd502dc730750400680ecbf6c5ac0c1f9734a1a866a370ec98c55dd256ed99fc","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/ActiveTurnCoordinator.js#0004:createTaskCheckpointEnvelope","exportIndex":4,"name":"createTaskCheckpointEnvelope","kind":"function","signature":"createTaskCheckpointEnvelope(raw = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/ActiveTurnCoordinator.md","moduleTitle":"kernel/execution/ActiveTurnCoordinator","source":"webgpu-os/kernel/execution/ActiveTurnCoordinator.js","import":"/webgpu-os/kernel/execution/ActiveTurnCoordinator.js","sourceHash":"cd502dc730750400680ecbf6c5ac0c1f9734a1a866a370ec98c55dd256ed99fc","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/ActiveTurnCoordinator.js#0005:ACTIVE_TURN_LIMITS","exportIndex":5,"name":"ACTIVE_TURN_LIMITS","kind":"constant","signature":"ACTIVE_TURN_LIMITS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/AuditLog.md","moduleTitle":"kernel/execution/AuditLog","source":"webgpu-os/kernel/execution/AuditLog.js","import":"/webgpu-os/kernel/execution/AuditLog.js","sourceHash":"60e652ca9658cff867ae041cf2d0d3d2a317a6eb3bcfda8e92fef360a71b3cd8","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/execution/AuditLog.js","title":"kernel/execution/AuditLog","summary":"AuditLog.js — thin audit VIEW over the same shared EventLog used by the Phase 7 Time Engine (one log, not two): filters to commit/receipt/ledger events via the existing TimelineExporter, with chain verification attached.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/AuditLog.md","moduleTitle":"kernel/execution/AuditLog","source":"webgpu-os/kernel/execution/AuditLog.js","import":"/webgpu-os/kernel/execution/AuditLog.js","sourceHash":"60e652ca9658cff867ae041cf2d0d3d2a317a6eb3bcfda8e92fef360a71b3cd8","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/AuditLog.js#0000:AuditLog","exportIndex":0,"name":"AuditLog","kind":"class","signature":"class AuditLog","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/BrowserNativeJavaScriptVerifier.md","moduleTitle":"kernel/execution/BrowserNativeJavaScriptVerifier","source":"webgpu-os/kernel/execution/BrowserNativeJavaScriptVerifier.js","import":"/webgpu-os/kernel/execution/BrowserNativeJavaScriptVerifier.js","sourceHash":"b40339a4a4966379d29bb79828e16337d42818742c41571a774add113a621c24","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/execution/BrowserNativeJavaScriptVerifier.js","title":"kernel/execution/BrowserNativeJavaScriptVerifier","summary":"Non-executing browser verifier for JavaScript, TypeScript, JSX, and TSX. Browser engines expose a non-executing parser only for classic JavaScript through Function construction. Module, TypeScript, and JSX verification must therefore use an explicitly supplied parser adapter or remain inconclusive. Lexical balance is always reported separately and is never promoted to parse evidence.","exportCount":2}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/BrowserNativeJavaScriptVerifier.md","moduleTitle":"kernel/execution/BrowserNativeJavaScriptVerifier","source":"webgpu-os/kernel/execution/BrowserNativeJavaScriptVerifier.js","import":"/webgpu-os/kernel/execution/BrowserNativeJavaScriptVerifier.js","sourceHash":"b40339a4a4966379d29bb79828e16337d42818742c41571a774add113a621c24","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/BrowserNativeJavaScriptVerifier.js#0000:verifyBrowserNativeJavaScript","exportIndex":0,"name":"verifyBrowserNativeJavaScript","kind":"function","signature":"async verifyBrowserNativeJavaScript({ path = '', content = '', sourceRevision = '', rulesHash = '', knownFiles = null, knownDependencies = null, parserAdapters = {}, } = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/BrowserNativeJavaScriptVerifier.md","moduleTitle":"kernel/execution/BrowserNativeJavaScriptVerifier","source":"webgpu-os/kernel/execution/BrowserNativeJavaScriptVerifier.js","import":"/webgpu-os/kernel/execution/BrowserNativeJavaScriptVerifier.js","sourceHash":"b40339a4a4966379d29bb79828e16337d42818742c41571a774add113a621c24","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/BrowserNativeJavaScriptVerifier.js#0001:BROWSER_NATIVE_JAVASCRIPT_VERIFIER_FORMAT","exportIndex":1,"name":"BROWSER_NATIVE_JAVASCRIPT_VERIFIER_FORMAT","kind":"constant","signature":"BROWSER_NATIVE_JAVASCRIPT_VERIFIER_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/BudgetLimiter.md","moduleTitle":"kernel/execution/BudgetLimiter","source":"webgpu-os/kernel/execution/BudgetLimiter.js","import":"/webgpu-os/kernel/execution/BudgetLimiter.js","sourceHash":"838f787166109859401d4a7a17c674da13f76fdd2a52c2278be1e7f0d7cde440","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/execution/BudgetLimiter.js","title":"kernel/execution/BudgetLimiter","summary":"BudgetLimiter.js — wraps engine/state/authority/PolicyEngine.js (ordered rules, deny-overrides-allow, risk classification, approval-required) for AI request/tool-call/commit policy, plus per-request step budgets via the Phase 7 CooldownManager's BoundedCounterEscrow.","exportCount":3}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/BudgetLimiter.md","moduleTitle":"kernel/execution/BudgetLimiter","source":"webgpu-os/kernel/execution/BudgetLimiter.js","import":"/webgpu-os/kernel/execution/BudgetLimiter.js","sourceHash":"838f787166109859401d4a7a17c674da13f76fdd2a52c2278be1e7f0d7cde440","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/BudgetLimiter.js#0000:BudgetLimiter","exportIndex":0,"name":"BudgetLimiter","kind":"class","signature":"class BudgetLimiter","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/BudgetLimiter.md","moduleTitle":"kernel/execution/BudgetLimiter","source":"webgpu-os/kernel/execution/BudgetLimiter.js","import":"/webgpu-os/kernel/execution/BudgetLimiter.js","sourceHash":"838f787166109859401d4a7a17c674da13f76fdd2a52c2278be1e7f0d7cde440","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/BudgetLimiter.js#0001:DECISION","exportIndex":1,"name":"DECISION","kind":"re-export","signature":"DECISION","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/BudgetLimiter.md","moduleTitle":"kernel/execution/BudgetLimiter","source":"webgpu-os/kernel/execution/BudgetLimiter.js","import":"/webgpu-os/kernel/execution/BudgetLimiter.js","sourceHash":"838f787166109859401d4a7a17c674da13f76fdd2a52c2278be1e7f0d7cde440","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/BudgetLimiter.js#0002:RISK_LEVEL","exportIndex":2,"name":"RISK_LEVEL","kind":"re-export","signature":"RISK_LEVEL","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/CommitGate.md","moduleTitle":"kernel/execution/CommitGate","source":"webgpu-os/kernel/execution/CommitGate.js","import":"/webgpu-os/kernel/execution/CommitGate.js","sourceHash":"5451246c7529e0d1a41e25cb8dfe7db48c6a96082c250924539228e9db14400c","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/execution/CommitGate.js","title":"kernel/execution/CommitGate","summary":"CommitGate.js — the OS's ONE commit path: wraps engine/state's createCommitCoordinator (the 14-step atomic protocol) and createCommitGate (lightweight fact-only commits) over the SHARED Phase 7 stores — the same FactStore, EventLog, USORegistry (CooldownManager's), IdempotencyRegistry, and the Phase 4 CapabilityRegistry. Nothing AI-produced becomes canonical except through here.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/CommitGate.md","moduleTitle":"kernel/execution/CommitGate","source":"webgpu-os/kernel/execution/CommitGate.js","import":"/webgpu-os/kernel/execution/CommitGate.js","sourceHash":"5451246c7529e0d1a41e25cb8dfe7db48c6a96082c250924539228e9db14400c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/CommitGate.js#0000:OSCommitGate","exportIndex":0,"name":"OSCommitGate","kind":"class","signature":"class OSCommitGate","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/ContextBroker.md","moduleTitle":"kernel/execution/ContextBroker","source":"webgpu-os/kernel/execution/ContextBroker.js","import":"/webgpu-os/kernel/execution/ContextBroker.js","sourceHash":"0fab25331ba6d1439b2f5f018c106894d8a8a5498227312635551cf1140e5560","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/execution/ContextBroker.js","title":"kernel/execution/ContextBroker","summary":"ContextBroker.js — wraps engine/state/worldmodel/BeliefStore.js: one BeliefStore per AI request keeping the five worlds strictly separated (CANONICAL/OBSERVED/BELIEF/PREDICTED/PROPOSED). A belief or prediction can NEVER become canonical here — syncCanonical() is only called by the execution loop AFTER a witnessed commit.","exportCount":2}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/ContextBroker.md","moduleTitle":"kernel/execution/ContextBroker","source":"webgpu-os/kernel/execution/ContextBroker.js","import":"/webgpu-os/kernel/execution/ContextBroker.js","sourceHash":"0fab25331ba6d1439b2f5f018c106894d8a8a5498227312635551cf1140e5560","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/ContextBroker.js#0000:ContextBroker","exportIndex":0,"name":"ContextBroker","kind":"class","signature":"class ContextBroker","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/ContextBroker.md","moduleTitle":"kernel/execution/ContextBroker","source":"webgpu-os/kernel/execution/ContextBroker.js","import":"/webgpu-os/kernel/execution/ContextBroker.js","sourceHash":"0fab25331ba6d1439b2f5f018c106894d8a8a5498227312635551cf1140e5560","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/ContextBroker.js#0001:WORLD","exportIndex":1,"name":"WORLD","kind":"re-export","signature":"WORLD","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/DodadForge.md","moduleTitle":"kernel/execution/DodadForge","source":"webgpu-os/kernel/execution/DodadForge.js","import":"/webgpu-os/kernel/execution/DodadForge.js","sourceHash":"1f6df36fb7618a23341618045c73115a1d86c3bb2a1da0899bf2d8552df5cff9","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/execution/DodadForge.js","title":"kernel/execution/DodadForge","summary":"DodadForge.js — OS-owned project contracts for interactive AI Echo outputs. Provider text is never executed directly. The forge accepts one explicit four-file envelope, validates it as data, and runs declared behavior only in an opaque, network-blocked iframe before the existing signed Dodad Faculty is allowed to persist the project.","exportCount":17}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/DodadForge.md","moduleTitle":"kernel/execution/DodadForge","source":"webgpu-os/kernel/execution/DodadForge.js","import":"/webgpu-os/kernel/execution/DodadForge.js","sourceHash":"1f6df36fb7618a23341618045c73115a1d86c3bb2a1da0899bf2d8552df5cff9","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/DodadForge.js#0000:classifyDodadForgeRecipe","exportIndex":0,"name":"classifyDodadForgeRecipe","kind":"function","signature":"classifyDodadForgeRecipe(prompt = '')","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/DodadForge.md","moduleTitle":"kernel/execution/DodadForge","source":"webgpu-os/kernel/execution/DodadForge.js","import":"/webgpu-os/kernel/execution/DodadForge.js","sourceHash":"1f6df36fb7618a23341618045c73115a1d86c3bb2a1da0899bf2d8552df5cff9","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/DodadForge.js#0001:buildDodadForgeBlueprint","exportIndex":1,"name":"buildDodadForgeBlueprint","kind":"function","signature":"buildDodadForgeBlueprint(prompt = '', { decision = null } = {})","summary":"Build a deterministic specialist handoff for one Dodad request. Roles are responsibility slices inside one bounded episode, not agents and not authority. Only patterns whose trigger evidence is present are loaded."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/DodadForge.md","moduleTitle":"kernel/execution/DodadForge","source":"webgpu-os/kernel/execution/DodadForge.js","import":"/webgpu-os/kernel/execution/DodadForge.js","sourceHash":"1f6df36fb7618a23341618045c73115a1d86c3bb2a1da0899bf2d8552df5cff9","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/DodadForge.js#0002:buildDodadForgeAuthoringPrompt","exportIndex":2,"name":"buildDodadForgeAuthoringPrompt","kind":"function","signature":"buildDodadForgeAuthoringPrompt(prompt = '', { failures = [] } = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/DodadForge.md","moduleTitle":"kernel/execution/DodadForge","source":"webgpu-os/kernel/execution/DodadForge.js","import":"/webgpu-os/kernel/execution/DodadForge.js","sourceHash":"1f6df36fb7618a23341618045c73115a1d86c3bb2a1da0899bf2d8552df5cff9","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/DodadForge.js#0003:parseDodadForgeProject","exportIndex":3,"name":"parseDodadForgeProject","kind":"function","signature":"parseDodadForgeProject(value, { prompt = '', blueprint = null } = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/DodadForge.md","moduleTitle":"kernel/execution/DodadForge","source":"webgpu-os/kernel/execution/DodadForge.js","import":"/webgpu-os/kernel/execution/DodadForge.js","sourceHash":"1f6df36fb7618a23341618045c73115a1d86c3bb2a1da0899bf2d8552df5cff9","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/DodadForge.js#0004:validateDodadForgeProject","exportIndex":4,"name":"validateDodadForgeProject","kind":"function","signature":"validateDodadForgeProject(input = {}, { prompt = '', blueprint = null } = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/DodadForge.md","moduleTitle":"kernel/execution/DodadForge","source":"webgpu-os/kernel/execution/DodadForge.js","import":"/webgpu-os/kernel/execution/DodadForge.js","sourceHash":"1f6df36fb7618a23341618045c73115a1d86c3bb2a1da0899bf2d8552df5cff9","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/DodadForge.js#0005:verifyDodadForgeProjectRuntime","exportIndex":5,"name":"verifyDodadForgeProjectRuntime","kind":"function","signature":"async verifyDodadForgeProjectRuntime(project, { timeoutMs = RUNTIME_TIMEOUT_MS } = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/DodadForge.md","moduleTitle":"kernel/execution/DodadForge","source":"webgpu-os/kernel/execution/DodadForge.js","import":"/webgpu-os/kernel/execution/DodadForge.js","sourceHash":"1f6df36fb7618a23341618045c73115a1d86c3bb2a1da0899bf2d8552df5cff9","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/DodadForge.js#0006:scoreDodadForgeProject","exportIndex":6,"name":"scoreDodadForgeProject","kind":"function","signature":"scoreDodadForgeProject({ html = '', css = '', javascript = '', manifest = null, recipe: selectedRecipe = null, blueprint = null } = {})","summary":"Deterministic quality projection; blockers cover recipe-defining behavior only."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/DodadForge.md","moduleTitle":"kernel/execution/DodadForge","source":"webgpu-os/kernel/execution/DodadForge.js","import":"/webgpu-os/kernel/execution/DodadForge.js","sourceHash":"1f6df36fb7618a23341618045c73115a1d86c3bb2a1da0899bf2d8552df5cff9","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/DodadForge.js#0007:verifyDodadJavaScriptWorker","exportIndex":7,"name":"verifyDodadJavaScriptWorker","kind":"function","signature":"async verifyDodadJavaScriptWorker(source, { timeoutMs = WORKER_TIMEOUT_MS } = {})","summary":"Compile and execute only the Dodad's top-level JavaScript inside a killable Worker with inert DOM shims. Runtime deltas are never executed. A hung or syntactically invalid script is terminated before the DOM sandbox opens."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/DodadForge.md","moduleTitle":"kernel/execution/DodadForge","source":"webgpu-os/kernel/execution/DodadForge.js","import":"/webgpu-os/kernel/execution/DodadForge.js","sourceHash":"1f6df36fb7618a23341618045c73115a1d86c3bb2a1da0899bf2d8552df5cff9","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/DodadForge.js#0008:DODAD_FORGE_FORMAT","exportIndex":8,"name":"DODAD_FORGE_FORMAT","kind":"constant","signature":"DODAD_FORGE_FORMAT","summary":"DodadForge.js — OS-owned project contracts for interactive AI Echo outputs. Provider text is never executed directly. The forge accepts one explicit four-file envelope, validates it as data, and runs declared behavior only in an opaque, network-blocked iframe before the existing signed Dodad Faculty is allowed to persist the project."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/DodadForge.md","moduleTitle":"kernel/execution/DodadForge","source":"webgpu-os/kernel/execution/DodadForge.js","import":"/webgpu-os/kernel/execution/DodadForge.js","sourceHash":"1f6df36fb7618a23341618045c73115a1d86c3bb2a1da0899bf2d8552df5cff9","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/DodadForge.js#0009:DODAD_BEHAVIOR_FORMAT","exportIndex":9,"name":"DODAD_BEHAVIOR_FORMAT","kind":"constant","signature":"DODAD_BEHAVIOR_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/DodadForge.md","moduleTitle":"kernel/execution/DodadForge","source":"webgpu-os/kernel/execution/DodadForge.js","import":"/webgpu-os/kernel/execution/DodadForge.js","sourceHash":"1f6df36fb7618a23341618045c73115a1d86c3bb2a1da0899bf2d8552df5cff9","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/DodadForge.js#0010:DODAD_FORGE_RECIPE_CATALOG_URI","exportIndex":10,"name":"DODAD_FORGE_RECIPE_CATALOG_URI","kind":"constant","signature":"DODAD_FORGE_RECIPE_CATALOG_URI","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/DodadForge.md","moduleTitle":"kernel/execution/DodadForge","source":"webgpu-os/kernel/execution/DodadForge.js","import":"/webgpu-os/kernel/execution/DodadForge.js","sourceHash":"1f6df36fb7618a23341618045c73115a1d86c3bb2a1da0899bf2d8552df5cff9","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/DodadForge.js#0011:DODAD_FORGE_PATTERN_CATALOG_URI","exportIndex":11,"name":"DODAD_FORGE_PATTERN_CATALOG_URI","kind":"constant","signature":"DODAD_FORGE_PATTERN_CATALOG_URI","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/DodadForge.md","moduleTitle":"kernel/execution/DodadForge","source":"webgpu-os/kernel/execution/DodadForge.js","import":"/webgpu-os/kernel/execution/DodadForge.js","sourceHash":"1f6df36fb7618a23341618045c73115a1d86c3bb2a1da0899bf2d8552df5cff9","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/DodadForge.js#0012:DODAD_FORGE_QUALITY_GUIDE_URI","exportIndex":12,"name":"DODAD_FORGE_QUALITY_GUIDE_URI","kind":"constant","signature":"DODAD_FORGE_QUALITY_GUIDE_URI","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/DodadForge.md","moduleTitle":"kernel/execution/DodadForge","source":"webgpu-os/kernel/execution/DodadForge.js","import":"/webgpu-os/kernel/execution/DodadForge.js","sourceHash":"1f6df36fb7618a23341618045c73115a1d86c3bb2a1da0899bf2d8552df5cff9","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/DodadForge.js#0013:DODAD_FORGE_BLUEPRINT_FORMAT","exportIndex":13,"name":"DODAD_FORGE_BLUEPRINT_FORMAT","kind":"constant","signature":"DODAD_FORGE_BLUEPRINT_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/DodadForge.md","moduleTitle":"kernel/execution/DodadForge","source":"webgpu-os/kernel/execution/DodadForge.js","import":"/webgpu-os/kernel/execution/DodadForge.js","sourceHash":"1f6df36fb7618a23341618045c73115a1d86c3bb2a1da0899bf2d8552df5cff9","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/DodadForge.js#0014:DODAD_FORGE_QUALITY_FORMAT","exportIndex":14,"name":"DODAD_FORGE_QUALITY_FORMAT","kind":"constant","signature":"DODAD_FORGE_QUALITY_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/DodadForge.md","moduleTitle":"kernel/execution/DodadForge","source":"webgpu-os/kernel/execution/DodadForge.js","import":"/webgpu-os/kernel/execution/DodadForge.js","sourceHash":"1f6df36fb7618a23341618045c73115a1d86c3bb2a1da0899bf2d8552df5cff9","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/DodadForge.js#0015:DODAD_FORGE_RECIPES","exportIndex":15,"name":"DODAD_FORGE_RECIPES","kind":"constant","signature":"DODAD_FORGE_RECIPES","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/DodadForge.md","moduleTitle":"kernel/execution/DodadForge","source":"webgpu-os/kernel/execution/DodadForge.js","import":"/webgpu-os/kernel/execution/DodadForge.js","sourceHash":"1f6df36fb7618a23341618045c73115a1d86c3bb2a1da0899bf2d8552df5cff9","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/DodadForge.js#0016:DODAD_FORGE_PATTERNS","exportIndex":16,"name":"DODAD_FORGE_PATTERNS","kind":"constant","signature":"DODAD_FORGE_PATTERNS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/ExecutionApprovalMode.md","moduleTitle":"kernel/execution/ExecutionApprovalMode","source":"webgpu-os/kernel/execution/ExecutionApprovalMode.js","import":"/webgpu-os/kernel/execution/ExecutionApprovalMode.js","sourceHash":"03cb04c428b94aa40d04b4d767c67ebabd711f5b8dc4a7b3840d477866a5ce11","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/execution/ExecutionApprovalMode.js","title":"kernel/execution/ExecutionApprovalMode","summary":"Deterministic execution-approval modes. This module decides whether an already-reviewed tool action still needs an operator prompt. It never grants authority: ToolActionReview, ToolRouter, Navi Faculty capability leases, workspace roots, and mounted-folder scopes remain authoritative for every call.","exportCount":6}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/ExecutionApprovalMode.md","moduleTitle":"kernel/execution/ExecutionApprovalMode","source":"webgpu-os/kernel/execution/ExecutionApprovalMode.js","import":"/webgpu-os/kernel/execution/ExecutionApprovalMode.js","sourceHash":"03cb04c428b94aa40d04b4d767c67ebabd711f5b8dc4a7b3840d477866a5ce11","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/ExecutionApprovalMode.js#0000:normalizeExecutionApprovalMode","exportIndex":0,"name":"normalizeExecutionApprovalMode","kind":"function","signature":"normalizeExecutionApprovalMode(value)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/ExecutionApprovalMode.md","moduleTitle":"kernel/execution/ExecutionApprovalMode","source":"webgpu-os/kernel/execution/ExecutionApprovalMode.js","import":"/webgpu-os/kernel/execution/ExecutionApprovalMode.js","sourceHash":"03cb04c428b94aa40d04b4d767c67ebabd711f5b8dc4a7b3840d477866a5ce11","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/ExecutionApprovalMode.js#0001:executionApprovalRepeatProfile","exportIndex":1,"name":"executionApprovalRepeatProfile","kind":"function","signature":"executionApprovalRepeatProfile(review, { appId = '', naviId = '' } = {})","summary":"Content-free identity for a repeatable approval scope. Arguments are intentionally omitted: changed values may repeat only when the tool, descriptor, authority, data classes, and exact target scope are unchanged."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/ExecutionApprovalMode.md","moduleTitle":"kernel/execution/ExecutionApprovalMode","source":"webgpu-os/kernel/execution/ExecutionApprovalMode.js","import":"/webgpu-os/kernel/execution/ExecutionApprovalMode.js","sourceHash":"03cb04c428b94aa40d04b4d767c67ebabd711f5b8dc4a7b3840d477866a5ce11","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/ExecutionApprovalMode.js#0002:decideExecutionApproval","exportIndex":2,"name":"decideExecutionApproval","kind":"function","signature":"decideExecutionApproval({ mode, review, priorReceipt = null } = {})","summary":"Decide only the prompt behavior for an action that has already passed the OS review. `priorReceipt` must be an OS-recorded successful call for the same repeat profile; model recommendations never substitute for it."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/ExecutionApprovalMode.md","moduleTitle":"kernel/execution/ExecutionApprovalMode","source":"webgpu-os/kernel/execution/ExecutionApprovalMode.js","import":"/webgpu-os/kernel/execution/ExecutionApprovalMode.js","sourceHash":"03cb04c428b94aa40d04b4d767c67ebabd711f5b8dc4a7b3840d477866a5ce11","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/ExecutionApprovalMode.js#0003:eligibleForVerifiedRepeat","exportIndex":3,"name":"eligibleForVerifiedRepeat","kind":"function","signature":"eligibleForVerifiedRepeat(review)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/ExecutionApprovalMode.md","moduleTitle":"kernel/execution/ExecutionApprovalMode","source":"webgpu-os/kernel/execution/ExecutionApprovalMode.js","import":"/webgpu-os/kernel/execution/ExecutionApprovalMode.js","sourceHash":"03cb04c428b94aa40d04b4d767c67ebabd711f5b8dc4a7b3840d477866a5ce11","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/ExecutionApprovalMode.js#0004:EXECUTION_APPROVAL_MODE","exportIndex":4,"name":"EXECUTION_APPROVAL_MODE","kind":"constant","signature":"EXECUTION_APPROVAL_MODE","summary":"Deterministic execution-approval modes. This module decides whether an already-reviewed tool action still needs an operator prompt. It never grants authority: ToolActionReview, ToolRouter, Navi Faculty capability leases, workspace roots, and mounted-folder scopes remain authoritative for every call."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/ExecutionApprovalMode.md","moduleTitle":"kernel/execution/ExecutionApprovalMode","source":"webgpu-os/kernel/execution/ExecutionApprovalMode.js","import":"/webgpu-os/kernel/execution/ExecutionApprovalMode.js","sourceHash":"03cb04c428b94aa40d04b4d767c67ebabd711f5b8dc4a7b3840d477866a5ce11","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/ExecutionApprovalMode.js#0005:EXECUTION_APPROVAL_DECISION","exportIndex":5,"name":"EXECUTION_APPROVAL_DECISION","kind":"constant","signature":"EXECUTION_APPROVAL_DECISION","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/ExecutionHorizonPolicy.md","moduleTitle":"kernel/execution/ExecutionHorizonPolicy","source":"webgpu-os/kernel/execution/ExecutionHorizonPolicy.js","import":"/webgpu-os/kernel/execution/ExecutionHorizonPolicy.js","sourceHash":"a65e8a735e098289cda7a4d10624580331fdc02ac0cb823d617685fd7530ff1d","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/execution/ExecutionHorizonPolicy.js","title":"kernel/execution/ExecutionHorizonPolicy","summary":"Pure adaptive execution-window policy. It has no authority vocabulary and can only reduce caller-supplied action/concurrency ceilings. Descriptor risk and reversibility dominate calibration: confidence never changes approval, capability, tool selection, or the static execution ceiling. Callers must enforce the returned action and mutation limits as hard dispatch boundaries.","exportCount":2}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/ExecutionHorizonPolicy.md","moduleTitle":"kernel/execution/ExecutionHorizonPolicy","source":"webgpu-os/kernel/execution/ExecutionHorizonPolicy.js","import":"/webgpu-os/kernel/execution/ExecutionHorizonPolicy.js","sourceHash":"a65e8a735e098289cda7a4d10624580331fdc02ac0cb823d617685fd7530ff1d","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/ExecutionHorizonPolicy.js#0000:ExecutionHorizonPolicy","exportIndex":0,"name":"ExecutionHorizonPolicy","kind":"class","signature":"class ExecutionHorizonPolicy","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/ExecutionHorizonPolicy.md","moduleTitle":"kernel/execution/ExecutionHorizonPolicy","source":"webgpu-os/kernel/execution/ExecutionHorizonPolicy.js","import":"/webgpu-os/kernel/execution/ExecutionHorizonPolicy.js","sourceHash":"a65e8a735e098289cda7a4d10624580331fdc02ac0cb823d617685fd7530ff1d","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/ExecutionHorizonPolicy.js#0001:NAVI_EXECUTION_HORIZON_FORMAT","exportIndex":1,"name":"NAVI_EXECUTION_HORIZON_FORMAT","kind":"constant","signature":"NAVI_EXECUTION_HORIZON_FORMAT","summary":"Pure adaptive execution-window policy. It has no authority vocabulary and can only reduce caller-supplied action/concurrency ceilings. Descriptor risk and reversibility dominate calibration: confidence never changes approval, capability, tool selection, or the static execution ceiling. Callers must enforce the returned action and mutation limits as hard dispatch boundaries."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/JavaScriptExecutionGrant.md","moduleTitle":"kernel/execution/JavaScriptExecutionGrant","source":"webgpu-os/kernel/execution/JavaScriptExecutionGrant.js","import":"/webgpu-os/kernel/execution/JavaScriptExecutionGrant.js","sourceHash":"d0066b5bafe524b0cfacac3de6f991c5819d293b05a5016e29e36cd1ed1ebed1","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/execution/JavaScriptExecutionGrant.js","title":"kernel/execution/JavaScriptExecutionGrant","summary":"JavaScriptExecutionGrant.js — exact-source, short-lived execution binding. This contract narrows an already-authorized raw JavaScript tool call. It is not an authority source: ToolRouter, the Faculty capability grant, OS policy, developer mode, and the browser extension approval boundary still decide whether execution is allowed.","exportCount":12}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/JavaScriptExecutionGrant.md","moduleTitle":"kernel/execution/JavaScriptExecutionGrant","source":"webgpu-os/kernel/execution/JavaScriptExecutionGrant.js","import":"/webgpu-os/kernel/execution/JavaScriptExecutionGrant.js","sourceHash":"d0066b5bafe524b0cfacac3de6f991c5819d293b05a5016e29e36cd1ed1ebed1","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/JavaScriptExecutionGrant.js#0000:JavaScriptExecutionGrantError","exportIndex":0,"name":"JavaScriptExecutionGrantError","kind":"class","signature":"class JavaScriptExecutionGrantError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/JavaScriptExecutionGrant.md","moduleTitle":"kernel/execution/JavaScriptExecutionGrant","source":"webgpu-os/kernel/execution/JavaScriptExecutionGrant.js","import":"/webgpu-os/kernel/execution/JavaScriptExecutionGrant.js","sourceHash":"d0066b5bafe524b0cfacac3de6f991c5819d293b05a5016e29e36cd1ed1ebed1","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/JavaScriptExecutionGrant.js#0001:inspectJavaScriptApiUsage","exportIndex":1,"name":"inspectJavaScriptApiUsage","kind":"function","signature":"inspectJavaScriptApiUsage(source)","summary":"Return the conservative, inspectable API categories visible in source."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/JavaScriptExecutionGrant.md","moduleTitle":"kernel/execution/JavaScriptExecutionGrant","source":"webgpu-os/kernel/execution/JavaScriptExecutionGrant.js","import":"/webgpu-os/kernel/execution/JavaScriptExecutionGrant.js","sourceHash":"d0066b5bafe524b0cfacac3de6f991c5819d293b05a5016e29e36cd1ed1ebed1","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/JavaScriptExecutionGrant.js#0002:resolveJavaScriptPermittedApis","exportIndex":2,"name":"resolveJavaScriptPermittedApis","kind":"function","signature":"resolveJavaScriptPermittedApis(source, permittedApis = null)","summary":"Normalize a caller-declared API allowance and ensure it covers every API category the conservative source scan can observe. Omission selects the observed set, keeping existing developer-only calls compatible."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/JavaScriptExecutionGrant.md","moduleTitle":"kernel/execution/JavaScriptExecutionGrant","source":"webgpu-os/kernel/execution/JavaScriptExecutionGrant.js","import":"/webgpu-os/kernel/execution/JavaScriptExecutionGrant.js","sourceHash":"d0066b5bafe524b0cfacac3de6f991c5819d293b05a5016e29e36cd1ed1ebed1","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/JavaScriptExecutionGrant.js#0003:hashJavaScriptSource","exportIndex":3,"name":"hashJavaScriptSource","kind":"function","signature":"async hashJavaScriptSource(source)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/JavaScriptExecutionGrant.md","moduleTitle":"kernel/execution/JavaScriptExecutionGrant","source":"webgpu-os/kernel/execution/JavaScriptExecutionGrant.js","import":"/webgpu-os/kernel/execution/JavaScriptExecutionGrant.js","sourceHash":"d0066b5bafe524b0cfacac3de6f991c5819d293b05a5016e29e36cd1ed1ebed1","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/JavaScriptExecutionGrant.js#0004:hashJavaScriptNavigationGeneration","exportIndex":4,"name":"hashJavaScriptNavigationGeneration","kind":"function","signature":"async hashJavaScriptNavigationGeneration({ tabId, url, pendingUrl = '', status = '' } = {})","summary":"Hash the observable browser navigation identity without publishing its URL."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/JavaScriptExecutionGrant.md","moduleTitle":"kernel/execution/JavaScriptExecutionGrant","source":"webgpu-os/kernel/execution/JavaScriptExecutionGrant.js","import":"/webgpu-os/kernel/execution/JavaScriptExecutionGrant.js","sourceHash":"d0066b5bafe524b0cfacac3de6f991c5819d293b05a5016e29e36cd1ed1ebed1","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/JavaScriptExecutionGrant.js#0005:createJavaScriptApprovalBinding","exportIndex":5,"name":"createJavaScriptApprovalBinding","kind":"function","signature":"async createJavaScriptApprovalBinding({ source, permittedApis = null, surface = 'browser-page', world = surface === 'os-worker' ? 'WORKER' : 'USER_SCRIPT', tabId = null, naviId = '', facultyId = '', taskId = '', requestId = '', } = {})","summary":"Build the exact source/API projection embedded in ToolActionReview."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/JavaScriptExecutionGrant.md","moduleTitle":"kernel/execution/JavaScriptExecutionGrant","source":"webgpu-os/kernel/execution/JavaScriptExecutionGrant.js","import":"/webgpu-os/kernel/execution/JavaScriptExecutionGrant.js","sourceHash":"d0066b5bafe524b0cfacac3de6f991c5819d293b05a5016e29e36cd1ed1ebed1","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/JavaScriptExecutionGrant.js#0006:createJavaScriptExecutionGrant","exportIndex":6,"name":"createJavaScriptExecutionGrant","kind":"function","signature":"async createJavaScriptExecutionGrant({ source, permittedApis = null, surface = 'browser-page', world = surface === 'os-worker' ? 'WORKER' : 'USER_SCRIPT', target = null, naviId = '', facultyId = '', taskId = '', requestId = '', issuedAt = Date.now()","summary":"Create one exact, bounded runtime grant after the target has been observed."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/JavaScriptExecutionGrant.md","moduleTitle":"kernel/execution/JavaScriptExecutionGrant","source":"webgpu-os/kernel/execution/JavaScriptExecutionGrant.js","import":"/webgpu-os/kernel/execution/JavaScriptExecutionGrant.js","sourceHash":"d0066b5bafe524b0cfacac3de6f991c5819d293b05a5016e29e36cd1ed1ebed1","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/JavaScriptExecutionGrant.js#0007:verifyJavaScriptExecutionGrant","exportIndex":7,"name":"verifyJavaScriptExecutionGrant","kind":"function","signature":"async verifyJavaScriptExecutionGrant(grant, { source, permittedApis = null, surface = 'browser-page', world = surface === 'os-worker' ? 'WORKER' : 'USER_SCRIPT', target = null, naviId = '', facultyId = '', taskId = '', requestId = '', now = Date.now()","summary":"Recompute every meaning-bearing field and reject expired or altered grants."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/JavaScriptExecutionGrant.md","moduleTitle":"kernel/execution/JavaScriptExecutionGrant","source":"webgpu-os/kernel/execution/JavaScriptExecutionGrant.js","import":"/webgpu-os/kernel/execution/JavaScriptExecutionGrant.js","sourceHash":"d0066b5bafe524b0cfacac3de6f991c5819d293b05a5016e29e36cd1ed1ebed1","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/JavaScriptExecutionGrant.js#0008:JAVASCRIPT_EXECUTION_GRANT_FORMAT","exportIndex":8,"name":"JAVASCRIPT_EXECUTION_GRANT_FORMAT","kind":"constant","signature":"JAVASCRIPT_EXECUTION_GRANT_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/JavaScriptExecutionGrant.md","moduleTitle":"kernel/execution/JavaScriptExecutionGrant","source":"webgpu-os/kernel/execution/JavaScriptExecutionGrant.js","import":"/webgpu-os/kernel/execution/JavaScriptExecutionGrant.js","sourceHash":"d0066b5bafe524b0cfacac3de6f991c5819d293b05a5016e29e36cd1ed1ebed1","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/JavaScriptExecutionGrant.js#0009:JAVASCRIPT_EXECUTION_SURFACES","exportIndex":9,"name":"JAVASCRIPT_EXECUTION_SURFACES","kind":"constant","signature":"JAVASCRIPT_EXECUTION_SURFACES","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/JavaScriptExecutionGrant.md","moduleTitle":"kernel/execution/JavaScriptExecutionGrant","source":"webgpu-os/kernel/execution/JavaScriptExecutionGrant.js","import":"/webgpu-os/kernel/execution/JavaScriptExecutionGrant.js","sourceHash":"d0066b5bafe524b0cfacac3de6f991c5819d293b05a5016e29e36cd1ed1ebed1","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/JavaScriptExecutionGrant.js#0010:JAVASCRIPT_EXECUTION_WORLDS","exportIndex":10,"name":"JAVASCRIPT_EXECUTION_WORLDS","kind":"constant","signature":"JAVASCRIPT_EXECUTION_WORLDS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/JavaScriptExecutionGrant.md","moduleTitle":"kernel/execution/JavaScriptExecutionGrant","source":"webgpu-os/kernel/execution/JavaScriptExecutionGrant.js","import":"/webgpu-os/kernel/execution/JavaScriptExecutionGrant.js","sourceHash":"d0066b5bafe524b0cfacac3de6f991c5819d293b05a5016e29e36cd1ed1ebed1","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/JavaScriptExecutionGrant.js#0011:JAVASCRIPT_EXECUTION_PERMITTED_APIS","exportIndex":11,"name":"JAVASCRIPT_EXECUTION_PERMITTED_APIS","kind":"constant","signature":"JAVASCRIPT_EXECUTION_PERMITTED_APIS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/NaviContextRollover.md","moduleTitle":"kernel/execution/NaviContextRollover","source":"webgpu-os/kernel/execution/NaviContextRollover.js","import":"/webgpu-os/kernel/execution/NaviContextRollover.js","sourceHash":"72d196b5be50a72552dfeac96a0f1ed80f5efb3066100e19c00a1447b6229734","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/execution/NaviContextRollover.js","title":"kernel/execution/NaviContextRollover","summary":"Compact, derived task context for rollover between bounded execution turns. The projection contains identifiers, hashes, classifications, and counts only. It has no persistence and rejects raw content, tool arguments, or reasoning.","exportCount":5}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/NaviContextRollover.md","moduleTitle":"kernel/execution/NaviContextRollover","source":"webgpu-os/kernel/execution/NaviContextRollover.js","import":"/webgpu-os/kernel/execution/NaviContextRollover.js","sourceHash":"72d196b5be50a72552dfeac96a0f1ed80f5efb3066100e19c00a1447b6229734","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/NaviContextRollover.js#0000:NaviContextRolloverError","exportIndex":0,"name":"NaviContextRolloverError","kind":"class","signature":"class NaviContextRolloverError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/NaviContextRollover.md","moduleTitle":"kernel/execution/NaviContextRollover","source":"webgpu-os/kernel/execution/NaviContextRollover.js","import":"/webgpu-os/kernel/execution/NaviContextRollover.js","sourceHash":"72d196b5be50a72552dfeac96a0f1ed80f5efb3066100e19c00a1447b6229734","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/NaviContextRollover.js#0001:NaviContextRollover","exportIndex":1,"name":"NaviContextRollover","kind":"class","signature":"class NaviContextRollover","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/NaviContextRollover.md","moduleTitle":"kernel/execution/NaviContextRollover","source":"webgpu-os/kernel/execution/NaviContextRollover.js","import":"/webgpu-os/kernel/execution/NaviContextRollover.js","sourceHash":"72d196b5be50a72552dfeac96a0f1ed80f5efb3066100e19c00a1447b6229734","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/NaviContextRollover.js#0002:createNaviContextRollover","exportIndex":2,"name":"createNaviContextRollover","kind":"function","signature":"async createNaviContextRollover(raw = {}, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/NaviContextRollover.md","moduleTitle":"kernel/execution/NaviContextRollover","source":"webgpu-os/kernel/execution/NaviContextRollover.js","import":"/webgpu-os/kernel/execution/NaviContextRollover.js","sourceHash":"72d196b5be50a72552dfeac96a0f1ed80f5efb3066100e19c00a1447b6229734","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/NaviContextRollover.js#0003:validateNaviContextRollover","exportIndex":3,"name":"validateNaviContextRollover","kind":"function","signature":"async validateNaviContextRollover(value)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/NaviContextRollover.md","moduleTitle":"kernel/execution/NaviContextRollover","source":"webgpu-os/kernel/execution/NaviContextRollover.js","import":"/webgpu-os/kernel/execution/NaviContextRollover.js","sourceHash":"72d196b5be50a72552dfeac96a0f1ed80f5efb3066100e19c00a1447b6229734","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/NaviContextRollover.js#0004:NAVI_CONTEXT_ROLLOVER_FORMAT","exportIndex":4,"name":"NAVI_CONTEXT_ROLLOVER_FORMAT","kind":"constant","signature":"NAVI_CONTEXT_ROLLOVER_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/NaviExplainabilityProjection.md","moduleTitle":"kernel/execution/NaviExplainabilityProjection","source":"webgpu-os/kernel/execution/NaviExplainabilityProjection.js","import":"/webgpu-os/kernel/execution/NaviExplainabilityProjection.js","sourceHash":"e6da89cdac33cf096e9d57792a231fa097bbc1c06d99642885bd7801e7dcaee0","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/execution/NaviExplainabilityProjection.js","title":"kernel/execution/NaviExplainabilityProjection","summary":"NaviExplainabilityProjection.js — compact, authority-free explanations derived from records the OS already owns. This module has no persistence and never accepts provider reasoning. It projects task state, steering, routing, tool outcomes, verification, and receipts into inspectable local evidence.","exportCount":5}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/NaviExplainabilityProjection.md","moduleTitle":"kernel/execution/NaviExplainabilityProjection","source":"webgpu-os/kernel/execution/NaviExplainabilityProjection.js","import":"/webgpu-os/kernel/execution/NaviExplainabilityProjection.js","sourceHash":"e6da89cdac33cf096e9d57792a231fa097bbc1c06d99642885bd7801e7dcaee0","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/NaviExplainabilityProjection.js#0000:projectNaviWhy","exportIndex":0,"name":"projectNaviWhy","kind":"function","signature":"projectNaviWhy(raw = {})","summary":"Explain one active or completed Navi task from its existing projections and ledgers. `report` is the TaskLedger FinalReport (or its durable compact form), and `steering` is ActiveTurnCoordinator.snapshot(). No record is written."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/NaviExplainabilityProjection.md","moduleTitle":"kernel/execution/NaviExplainabilityProjection","source":"webgpu-os/kernel/execution/NaviExplainabilityProjection.js","import":"/webgpu-os/kernel/execution/NaviExplainabilityProjection.js","sourceHash":"e6da89cdac33cf096e9d57792a231fa097bbc1c06d99642885bd7801e7dcaee0","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/NaviExplainabilityProjection.js#0001:projectNaviResourceSelectionExplanation","exportIndex":1,"name":"projectNaviResourceSelectionExplanation","kind":"function","signature":"projectNaviResourceSelectionExplanation(rawSelection)","summary":"Project one signed/validated resource-selection receipt without re-ranking."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/NaviExplainabilityProjection.md","moduleTitle":"kernel/execution/NaviExplainabilityProjection","source":"webgpu-os/kernel/execution/NaviExplainabilityProjection.js","import":"/webgpu-os/kernel/execution/NaviExplainabilityProjection.js","sourceHash":"e6da89cdac33cf096e9d57792a231fa097bbc1c06d99642885bd7801e7dcaee0","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/NaviExplainabilityProjection.js#0002:projectNaviSmartRoutingExplanation","exportIndex":2,"name":"projectNaviSmartRoutingExplanation","kind":"function","signature":"async projectNaviSmartRoutingExplanation(raw = {})","summary":"Explain an exact NaviModelBroker decision, including excluded routes and the smallest policy/settings change that could make each route eligible. The explanation is derived after routing and cannot alter the decision."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/NaviExplainabilityProjection.md","moduleTitle":"kernel/execution/NaviExplainabilityProjection","source":"webgpu-os/kernel/execution/NaviExplainabilityProjection.js","import":"/webgpu-os/kernel/execution/NaviExplainabilityProjection.js","sourceHash":"e6da89cdac33cf096e9d57792a231fa097bbc1c06d99642885bd7801e7dcaee0","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/NaviExplainabilityProjection.js#0003:NAVI_WHY_PROJECTION_FORMAT","exportIndex":3,"name":"NAVI_WHY_PROJECTION_FORMAT","kind":"constant","signature":"NAVI_WHY_PROJECTION_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/NaviExplainabilityProjection.md","moduleTitle":"kernel/execution/NaviExplainabilityProjection","source":"webgpu-os/kernel/execution/NaviExplainabilityProjection.js","import":"/webgpu-os/kernel/execution/NaviExplainabilityProjection.js","sourceHash":"e6da89cdac33cf096e9d57792a231fa097bbc1c06d99642885bd7801e7dcaee0","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/NaviExplainabilityProjection.js#0004:NAVI_SMART_ROUTING_EXPLANATION_FORMAT","exportIndex":4,"name":"NAVI_SMART_ROUTING_EXPLANATION_FORMAT","kind":"constant","signature":"NAVI_SMART_ROUTING_EXPLANATION_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/NaviProposalEnvelope.md","moduleTitle":"kernel/execution/NaviProposalEnvelope","source":"webgpu-os/kernel/execution/NaviProposalEnvelope.js","import":"/webgpu-os/kernel/execution/NaviProposalEnvelope.js","sourceHash":"be208689907c41cefe1e87d2c8d964e602b0c5ac7a8d29c63efe6ae88ebb412a","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/execution/NaviProposalEnvelope.js","title":"kernel/execution/NaviProposalEnvelope","summary":"NaviProposalEnvelope.js — binds a proposed change to observed evidence, explicit inferences, unresolved questions, an exact target revision, and deterministic verification/compensation. A proposal has no authority by itself and must still pass the normal review and capability path.","exportCount":3}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/NaviProposalEnvelope.md","moduleTitle":"kernel/execution/NaviProposalEnvelope","source":"webgpu-os/kernel/execution/NaviProposalEnvelope.js","import":"/webgpu-os/kernel/execution/NaviProposalEnvelope.js","sourceHash":"be208689907c41cefe1e87d2c8d964e602b0c5ac7a8d29c63efe6ae88ebb412a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/NaviProposalEnvelope.js#0000:createEvidenceBoundProposal","exportIndex":0,"name":"createEvidenceBoundProposal","kind":"function","signature":"async createEvidenceBoundProposal(value = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/NaviProposalEnvelope.md","moduleTitle":"kernel/execution/NaviProposalEnvelope","source":"webgpu-os/kernel/execution/NaviProposalEnvelope.js","import":"/webgpu-os/kernel/execution/NaviProposalEnvelope.js","sourceHash":"be208689907c41cefe1e87d2c8d964e602b0c5ac7a8d29c63efe6ae88ebb412a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/NaviProposalEnvelope.js#0001:validateEvidenceBoundProposal","exportIndex":1,"name":"validateEvidenceBoundProposal","kind":"function","signature":"async validateEvidenceBoundProposal(proposal)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/NaviProposalEnvelope.md","moduleTitle":"kernel/execution/NaviProposalEnvelope","source":"webgpu-os/kernel/execution/NaviProposalEnvelope.js","import":"/webgpu-os/kernel/execution/NaviProposalEnvelope.js","sourceHash":"be208689907c41cefe1e87d2c8d964e602b0c5ac7a8d29c63efe6ae88ebb412a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/NaviProposalEnvelope.js#0002:NAVI_PROPOSAL_FORMAT","exportIndex":2,"name":"NAVI_PROPOSAL_FORMAT","kind":"constant","signature":"NAVI_PROPOSAL_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/NaviTaskGraphCheckpoint.md","moduleTitle":"kernel/execution/NaviTaskGraphCheckpoint","source":"webgpu-os/kernel/execution/NaviTaskGraphCheckpoint.js","import":"/webgpu-os/kernel/execution/NaviTaskGraphCheckpoint.js","sourceHash":"669fe040fcf676e5bf0ea2bab2711a885138320a0acaf52c54527e84571362bb","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/execution/NaviTaskGraphCheckpoint.js","title":"kernel/execution/NaviTaskGraphCheckpoint","summary":"Durable, content-free checkpoints for compiled Navi task graphs. This module neither executes nor replays graph nodes. Persistence is supplied by an exact-key adapter with one read and one compare-and-swap operation.","exportCount":9}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/NaviTaskGraphCheckpoint.md","moduleTitle":"kernel/execution/NaviTaskGraphCheckpoint","source":"webgpu-os/kernel/execution/NaviTaskGraphCheckpoint.js","import":"/webgpu-os/kernel/execution/NaviTaskGraphCheckpoint.js","sourceHash":"669fe040fcf676e5bf0ea2bab2711a885138320a0acaf52c54527e84571362bb","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/NaviTaskGraphCheckpoint.js#0000:NaviTaskGraphCheckpointError","exportIndex":0,"name":"NaviTaskGraphCheckpointError","kind":"class","signature":"class NaviTaskGraphCheckpointError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/NaviTaskGraphCheckpoint.md","moduleTitle":"kernel/execution/NaviTaskGraphCheckpoint","source":"webgpu-os/kernel/execution/NaviTaskGraphCheckpoint.js","import":"/webgpu-os/kernel/execution/NaviTaskGraphCheckpoint.js","sourceHash":"669fe040fcf676e5bf0ea2bab2711a885138320a0acaf52c54527e84571362bb","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/NaviTaskGraphCheckpoint.js#0001:NaviTaskGraphCheckpointStore","exportIndex":1,"name":"NaviTaskGraphCheckpointStore","kind":"class","signature":"class NaviTaskGraphCheckpointStore","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/NaviTaskGraphCheckpoint.md","moduleTitle":"kernel/execution/NaviTaskGraphCheckpoint","source":"webgpu-os/kernel/execution/NaviTaskGraphCheckpoint.js","import":"/webgpu-os/kernel/execution/NaviTaskGraphCheckpoint.js","sourceHash":"669fe040fcf676e5bf0ea2bab2711a885138320a0acaf52c54527e84571362bb","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/NaviTaskGraphCheckpoint.js#0002:createNaviTaskGraphCheckpoint","exportIndex":2,"name":"createNaviTaskGraphCheckpoint","kind":"function","signature":"async createNaviTaskGraphCheckpoint(raw = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/NaviTaskGraphCheckpoint.md","moduleTitle":"kernel/execution/NaviTaskGraphCheckpoint","source":"webgpu-os/kernel/execution/NaviTaskGraphCheckpoint.js","import":"/webgpu-os/kernel/execution/NaviTaskGraphCheckpoint.js","sourceHash":"669fe040fcf676e5bf0ea2bab2711a885138320a0acaf52c54527e84571362bb","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/NaviTaskGraphCheckpoint.js#0003:validateNaviTaskGraphCheckpoint","exportIndex":3,"name":"validateNaviTaskGraphCheckpoint","kind":"function","signature":"async validateNaviTaskGraphCheckpoint(value)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/NaviTaskGraphCheckpoint.md","moduleTitle":"kernel/execution/NaviTaskGraphCheckpoint","source":"webgpu-os/kernel/execution/NaviTaskGraphCheckpoint.js","import":"/webgpu-os/kernel/execution/NaviTaskGraphCheckpoint.js","sourceHash":"669fe040fcf676e5bf0ea2bab2711a885138320a0acaf52c54527e84571362bb","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/NaviTaskGraphCheckpoint.js#0004:validateNaviTaskGraphCheckpointTransition","exportIndex":4,"name":"validateNaviTaskGraphCheckpointTransition","kind":"function","signature":"async validateNaviTaskGraphCheckpointTransition(raw = {})","summary":"Enforce task-lifetime monotonicity for the mutation ledger. Completed tombstones are immutable. Outcome-unknown tombstones may resolve to a completed tombstone, or be removed by an exact current mutation node whose failed outcome is explicitly verifier-bound. Generic failures never evict."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/NaviTaskGraphCheckpoint.md","moduleTitle":"kernel/execution/NaviTaskGraphCheckpoint","source":"webgpu-os/kernel/execution/NaviTaskGraphCheckpoint.js","import":"/webgpu-os/kernel/execution/NaviTaskGraphCheckpoint.js","sourceHash":"669fe040fcf676e5bf0ea2bab2711a885138320a0acaf52c54527e84571362bb","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/NaviTaskGraphCheckpoint.js#0005:classifyNaviTaskGraphResume","exportIndex":5,"name":"classifyNaviTaskGraphResume","kind":"function","signature":"async classifyNaviTaskGraphResume(raw = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/NaviTaskGraphCheckpoint.md","moduleTitle":"kernel/execution/NaviTaskGraphCheckpoint","source":"webgpu-os/kernel/execution/NaviTaskGraphCheckpoint.js","import":"/webgpu-os/kernel/execution/NaviTaskGraphCheckpoint.js","sourceHash":"669fe040fcf676e5bf0ea2bab2711a885138320a0acaf52c54527e84571362bb","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/NaviTaskGraphCheckpoint.js#0006:checkpointKeyForTask","exportIndex":6,"name":"checkpointKeyForTask","kind":"function","signature":"checkpointKeyForTask(taskId)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/NaviTaskGraphCheckpoint.md","moduleTitle":"kernel/execution/NaviTaskGraphCheckpoint","source":"webgpu-os/kernel/execution/NaviTaskGraphCheckpoint.js","import":"/webgpu-os/kernel/execution/NaviTaskGraphCheckpoint.js","sourceHash":"669fe040fcf676e5bf0ea2bab2711a885138320a0acaf52c54527e84571362bb","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/NaviTaskGraphCheckpoint.js#0007:NAVI_TASK_GRAPH_CHECKPOINT_FORMAT","exportIndex":7,"name":"NAVI_TASK_GRAPH_CHECKPOINT_FORMAT","kind":"constant","signature":"NAVI_TASK_GRAPH_CHECKPOINT_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/NaviTaskGraphCheckpoint.md","moduleTitle":"kernel/execution/NaviTaskGraphCheckpoint","source":"webgpu-os/kernel/execution/NaviTaskGraphCheckpoint.js","import":"/webgpu-os/kernel/execution/NaviTaskGraphCheckpoint.js","sourceHash":"669fe040fcf676e5bf0ea2bab2711a885138320a0acaf52c54527e84571362bb","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/NaviTaskGraphCheckpoint.js#0008:NAVI_TASK_GRAPH_RESUME_FORMAT","exportIndex":8,"name":"NAVI_TASK_GRAPH_RESUME_FORMAT","kind":"constant","signature":"NAVI_TASK_GRAPH_RESUME_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/NaviTaskGraphCompiler.md","moduleTitle":"kernel/execution/NaviTaskGraphCompiler","source":"webgpu-os/kernel/execution/NaviTaskGraphCompiler.js","import":"/webgpu-os/kernel/execution/NaviTaskGraphCompiler.js","sourceHash":"d64183ab59c8a5437a1586ff75f640a14d8a08d74c95221309b9c38229e5ac74","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/execution/NaviTaskGraphCompiler.js","title":"kernel/execution/NaviTaskGraphCompiler","summary":"NaviTaskGraphCompiler.js — deterministic compiler for model-proposed tool plans. A compiled graph is evidence, never authority: every node still enters ToolActionReview, ToolRouter, and the Faculty membrane before it can execute.","exportCount":8}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/NaviTaskGraphCompiler.md","moduleTitle":"kernel/execution/NaviTaskGraphCompiler","source":"webgpu-os/kernel/execution/NaviTaskGraphCompiler.js","import":"/webgpu-os/kernel/execution/NaviTaskGraphCompiler.js","sourceHash":"d64183ab59c8a5437a1586ff75f640a14d8a08d74c95221309b9c38229e5ac74","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/NaviTaskGraphCompiler.js#0000:NaviTaskGraphCompilerError","exportIndex":0,"name":"NaviTaskGraphCompilerError","kind":"class","signature":"class NaviTaskGraphCompilerError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/NaviTaskGraphCompiler.md","moduleTitle":"kernel/execution/NaviTaskGraphCompiler","source":"webgpu-os/kernel/execution/NaviTaskGraphCompiler.js","import":"/webgpu-os/kernel/execution/NaviTaskGraphCompiler.js","sourceHash":"d64183ab59c8a5437a1586ff75f640a14d8a08d74c95221309b9c38229e5ac74","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/NaviTaskGraphCompiler.js#0001:NaviTaskGraphCompiler","exportIndex":1,"name":"NaviTaskGraphCompiler","kind":"class","signature":"class NaviTaskGraphCompiler","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/NaviTaskGraphCompiler.md","moduleTitle":"kernel/execution/NaviTaskGraphCompiler","source":"webgpu-os/kernel/execution/NaviTaskGraphCompiler.js","import":"/webgpu-os/kernel/execution/NaviTaskGraphCompiler.js","sourceHash":"d64183ab59c8a5437a1586ff75f640a14d8a08d74c95221309b9c38229e5ac74","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/NaviTaskGraphCompiler.js#0002:validateCompiledTaskGraph","exportIndex":2,"name":"validateCompiledTaskGraph","kind":"function","signature":"async validateCompiledTaskGraph(graph)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/NaviTaskGraphCompiler.md","moduleTitle":"kernel/execution/NaviTaskGraphCompiler","source":"webgpu-os/kernel/execution/NaviTaskGraphCompiler.js","import":"/webgpu-os/kernel/execution/NaviTaskGraphCompiler.js","sourceHash":"d64183ab59c8a5437a1586ff75f640a14d8a08d74c95221309b9c38229e5ac74","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/NaviTaskGraphCompiler.js#0003:classifyTaskGraphChange","exportIndex":3,"name":"classifyTaskGraphChange","kind":"function","signature":"classifyTaskGraphChange(previousGraph, nextGraph)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/NaviTaskGraphCompiler.md","moduleTitle":"kernel/execution/NaviTaskGraphCompiler","source":"webgpu-os/kernel/execution/NaviTaskGraphCompiler.js","import":"/webgpu-os/kernel/execution/NaviTaskGraphCompiler.js","sourceHash":"d64183ab59c8a5437a1586ff75f640a14d8a08d74c95221309b9c38229e5ac74","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/NaviTaskGraphCompiler.js#0004:NAVI_TASK_GRAPH_ID_MAX_LENGTH","exportIndex":4,"name":"NAVI_TASK_GRAPH_ID_MAX_LENGTH","kind":"constant","signature":"NAVI_TASK_GRAPH_ID_MAX_LENGTH","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/NaviTaskGraphCompiler.md","moduleTitle":"kernel/execution/NaviTaskGraphCompiler","source":"webgpu-os/kernel/execution/NaviTaskGraphCompiler.js","import":"/webgpu-os/kernel/execution/NaviTaskGraphCompiler.js","sourceHash":"d64183ab59c8a5437a1586ff75f640a14d8a08d74c95221309b9c38229e5ac74","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/NaviTaskGraphCompiler.js#0005:NAVI_TASK_GRAPH_ID_PATTERN","exportIndex":5,"name":"NAVI_TASK_GRAPH_ID_PATTERN","kind":"constant","signature":"NAVI_TASK_GRAPH_ID_PATTERN","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/NaviTaskGraphCompiler.md","moduleTitle":"kernel/execution/NaviTaskGraphCompiler","source":"webgpu-os/kernel/execution/NaviTaskGraphCompiler.js","import":"/webgpu-os/kernel/execution/NaviTaskGraphCompiler.js","sourceHash":"d64183ab59c8a5437a1586ff75f640a14d8a08d74c95221309b9c38229e5ac74","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/NaviTaskGraphCompiler.js#0006:NAVI_TASK_GRAPH_FORMAT","exportIndex":6,"name":"NAVI_TASK_GRAPH_FORMAT","kind":"constant","signature":"NAVI_TASK_GRAPH_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/NaviTaskGraphCompiler.md","moduleTitle":"kernel/execution/NaviTaskGraphCompiler","source":"webgpu-os/kernel/execution/NaviTaskGraphCompiler.js","import":"/webgpu-os/kernel/execution/NaviTaskGraphCompiler.js","sourceHash":"d64183ab59c8a5437a1586ff75f640a14d8a08d74c95221309b9c38229e5ac74","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/NaviTaskGraphCompiler.js#0007:NAVI_TASK_GRAPH_LEGACY_FORMAT","exportIndex":7,"name":"NAVI_TASK_GRAPH_LEGACY_FORMAT","kind":"constant","signature":"NAVI_TASK_GRAPH_LEGACY_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/NaviTaskStateProjection.md","moduleTitle":"kernel/execution/NaviTaskStateProjection","source":"webgpu-os/kernel/execution/NaviTaskStateProjection.js","import":"/webgpu-os/kernel/execution/NaviTaskStateProjection.js","sourceHash":"3570b0d926f14bfb4a580f58d6d8419196a735791abc5ba25dbfe120411b2f4c","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/execution/NaviTaskStateProjection.js","title":"kernel/execution/NaviTaskStateProjection","summary":"NaviTaskStateProjection.js — immutable, schema-validated runtime projection for one active Navi task. Canonical task persistence remains NaviCognition; this module projects inspectable live state for streams and in-flight views.","exportCount":9}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/NaviTaskStateProjection.md","moduleTitle":"kernel/execution/NaviTaskStateProjection","source":"webgpu-os/kernel/execution/NaviTaskStateProjection.js","import":"/webgpu-os/kernel/execution/NaviTaskStateProjection.js","sourceHash":"3570b0d926f14bfb4a580f58d6d8419196a735791abc5ba25dbfe120411b2f4c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/NaviTaskStateProjection.js#0000:createNaviTaskStateProjection","exportIndex":0,"name":"createNaviTaskStateProjection","kind":"function","signature":"createNaviTaskStateProjection(raw = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/NaviTaskStateProjection.md","moduleTitle":"kernel/execution/NaviTaskStateProjection","source":"webgpu-os/kernel/execution/NaviTaskStateProjection.js","import":"/webgpu-os/kernel/execution/NaviTaskStateProjection.js","sourceHash":"3570b0d926f14bfb4a580f58d6d8419196a735791abc5ba25dbfe120411b2f4c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/NaviTaskStateProjection.js#0001:evolveNaviTaskStateProjection","exportIndex":1,"name":"evolveNaviTaskStateProjection","kind":"function","signature":"evolveNaviTaskStateProjection(current, patch = {}, { now = Date.now()","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/NaviTaskStateProjection.md","moduleTitle":"kernel/execution/NaviTaskStateProjection","source":"webgpu-os/kernel/execution/NaviTaskStateProjection.js","import":"/webgpu-os/kernel/execution/NaviTaskStateProjection.js","sourceHash":"3570b0d926f14bfb4a580f58d6d8419196a735791abc5ba25dbfe120411b2f4c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/NaviTaskStateProjection.js#0002:acceptNaviTaskSteering","exportIndex":2,"name":"acceptNaviTaskSteering","kind":"function","signature":"acceptNaviTaskSteering(current, event, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/NaviTaskStateProjection.md","moduleTitle":"kernel/execution/NaviTaskStateProjection","source":"webgpu-os/kernel/execution/NaviTaskStateProjection.js","import":"/webgpu-os/kernel/execution/NaviTaskStateProjection.js","sourceHash":"3570b0d926f14bfb4a580f58d6d8419196a735791abc5ba25dbfe120411b2f4c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/NaviTaskStateProjection.js#0003:setNaviTaskCurrentAction","exportIndex":3,"name":"setNaviTaskCurrentAction","kind":"function","signature":"setNaviTaskCurrentAction(current, action, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/NaviTaskStateProjection.md","moduleTitle":"kernel/execution/NaviTaskStateProjection","source":"webgpu-os/kernel/execution/NaviTaskStateProjection.js","import":"/webgpu-os/kernel/execution/NaviTaskStateProjection.js","sourceHash":"3570b0d926f14bfb4a580f58d6d8419196a735791abc5ba25dbfe120411b2f4c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/NaviTaskStateProjection.js#0004:completeNaviTaskWork","exportIndex":4,"name":"completeNaviTaskWork","kind":"function","signature":"completeNaviTaskWork(current, work, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/NaviTaskStateProjection.md","moduleTitle":"kernel/execution/NaviTaskStateProjection","source":"webgpu-os/kernel/execution/NaviTaskStateProjection.js","import":"/webgpu-os/kernel/execution/NaviTaskStateProjection.js","sourceHash":"3570b0d926f14bfb4a580f58d6d8419196a735791abc5ba25dbfe120411b2f4c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/NaviTaskStateProjection.js#0005:setNaviTaskPendingApproval","exportIndex":5,"name":"setNaviTaskPendingApproval","kind":"function","signature":"setNaviTaskPendingApproval(current, approval, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/NaviTaskStateProjection.md","moduleTitle":"kernel/execution/NaviTaskStateProjection","source":"webgpu-os/kernel/execution/NaviTaskStateProjection.js","import":"/webgpu-os/kernel/execution/NaviTaskStateProjection.js","sourceHash":"3570b0d926f14bfb4a580f58d6d8419196a735791abc5ba25dbfe120411b2f4c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/NaviTaskStateProjection.js#0006:clearNaviTaskApproval","exportIndex":6,"name":"clearNaviTaskApproval","kind":"function","signature":"clearNaviTaskApproval(current, approvalId, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/NaviTaskStateProjection.md","moduleTitle":"kernel/execution/NaviTaskStateProjection","source":"webgpu-os/kernel/execution/NaviTaskStateProjection.js","import":"/webgpu-os/kernel/execution/NaviTaskStateProjection.js","sourceHash":"3570b0d926f14bfb4a580f58d6d8419196a735791abc5ba25dbfe120411b2f4c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/NaviTaskStateProjection.js#0007:syncNaviTaskRuntime","exportIndex":7,"name":"syncNaviTaskRuntime","kind":"function","signature":"syncNaviTaskRuntime(current, { executorPhase, status = null, remainingBudget = null, artifacts = null, planRef = undefined, contextManifestRef = undefined, resourceSelectionRef = undefined, investigationCaseRef = undefined, goalProgress = null, } = {}, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/NaviTaskStateProjection.md","moduleTitle":"kernel/execution/NaviTaskStateProjection","source":"webgpu-os/kernel/execution/NaviTaskStateProjection.js","import":"/webgpu-os/kernel/execution/NaviTaskStateProjection.js","sourceHash":"3570b0d926f14bfb4a580f58d6d8419196a735791abc5ba25dbfe120411b2f4c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/NaviTaskStateProjection.js#0008:naviTaskPhaseForExecutor","exportIndex":8,"name":"naviTaskPhaseForExecutor","kind":"function","signature":"naviTaskPhaseForExecutor(value)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/PrivacyGuard.md","moduleTitle":"kernel/execution/PrivacyGuard","source":"webgpu-os/kernel/execution/PrivacyGuard.js","import":"/webgpu-os/kernel/execution/PrivacyGuard.js","sourceHash":"071d5ac5e5b0a77d2f66bd6a9054429c0ff652b12c77c80bd81ba949b85d7e77","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/execution/PrivacyGuard.js","title":"kernel/execution/PrivacyGuard","summary":"PrivacyGuard.js — scrubs context before it leaves the OS toward a remote model provider: sensitive-looking values are masked (reuses Phase 5's ParameterPreviewer — one masking implementation), obvious credential literals in free text are redacted, and payload size is capped.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/PrivacyGuard.md","moduleTitle":"kernel/execution/PrivacyGuard","source":"webgpu-os/kernel/execution/PrivacyGuard.js","import":"/webgpu-os/kernel/execution/PrivacyGuard.js","sourceHash":"071d5ac5e5b0a77d2f66bd6a9054429c0ff652b12c77c80bd81ba949b85d7e77","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/PrivacyGuard.js#0000:PrivacyGuard","exportIndex":0,"name":"PrivacyGuard","kind":"class","signature":"class PrivacyGuard","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/RepairLoop.md","moduleTitle":"kernel/execution/RepairLoop","source":"webgpu-os/kernel/execution/RepairLoop.js","import":"/webgpu-os/kernel/execution/RepairLoop.js","sourceHash":"e9d4765fae9510c70e5a9af42be77dfebca425651e889ee6c5f11e01d618a6b9","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/execution/RepairLoop.js","title":"kernel/execution/RepairLoop","summary":"RepairLoop.js — malformed-model-output repair: first a local structural extraction (strip code fences, isolate the outermost JSON object/array), then target-shape validation and at most one model-assisted repair pass on the selected route's fast tier. Repair duration is operator-controlled: steering may supersede it and Stop aborts it. The route/attempt policy stays bounded, and wrong-schema JSON is never accepted merely because it parses.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/RepairLoop.md","moduleTitle":"kernel/execution/RepairLoop","source":"webgpu-os/kernel/execution/RepairLoop.js","import":"/webgpu-os/kernel/execution/RepairLoop.js","sourceHash":"e9d4765fae9510c70e5a9af42be77dfebca425651e889ee6c5f11e01d618a6b9","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/RepairLoop.js#0000:RepairLoop","exportIndex":0,"name":"RepairLoop","kind":"class","signature":"class RepairLoop","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/RunEventStreamRegistry.md","moduleTitle":"kernel/execution/RunEventStreamRegistry","source":"webgpu-os/kernel/execution/RunEventStreamRegistry.js","import":"/webgpu-os/kernel/execution/RunEventStreamRegistry.js","sourceHash":"e5ac684682f9bf774a72c4e7c15b29b2a71302fcb7b1e1d29528018d25a891e7","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/execution/RunEventStreamRegistry.js","title":"kernel/execution/RunEventStreamRegistry","summary":"Kernel-owned resumable event streams for AI executions. App callbacks are only a live view. This registry assigns monotonic sequence numbers, buffers bounded events, and supports same-owner replay after an app remount or transient UI failure. Durable history remains in FinalReport.","exportCount":2}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/RunEventStreamRegistry.md","moduleTitle":"kernel/execution/RunEventStreamRegistry","source":"webgpu-os/kernel/execution/RunEventStreamRegistry.js","import":"/webgpu-os/kernel/execution/RunEventStreamRegistry.js","sourceHash":"e5ac684682f9bf774a72c4e7c15b29b2a71302fcb7b1e1d29528018d25a891e7","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/RunEventStreamRegistry.js#0000:RunEventStreamRegistry","exportIndex":0,"name":"RunEventStreamRegistry","kind":"class","signature":"class RunEventStreamRegistry","summary":"Kernel-owned resumable event streams for AI executions. App callbacks are only a live view. This registry assigns monotonic sequence numbers, buffers bounded events, and supports same-owner replay after an app remount or transient UI failure. Durable history remains in FinalReport."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/RunEventStreamRegistry.md","moduleTitle":"kernel/execution/RunEventStreamRegistry","source":"webgpu-os/kernel/execution/RunEventStreamRegistry.js","import":"/webgpu-os/kernel/execution/RunEventStreamRegistry.js","sourceHash":"e5ac684682f9bf774a72c4e7c15b29b2a71302fcb7b1e1d29528018d25a891e7","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/RunEventStreamRegistry.js#0001:RunEventStreamGapError","exportIndex":1,"name":"RunEventStreamGapError","kind":"class","signature":"class RunEventStreamGapError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/SemanticEffectContract.md","moduleTitle":"kernel/execution/SemanticEffectContract","source":"webgpu-os/kernel/execution/SemanticEffectContract.js","import":"/webgpu-os/kernel/execution/SemanticEffectContract.js","sourceHash":"49ab522cb868f5b52b20968f68706cb0ace89ecdcf977f78d2081ce1d658fb96","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/execution/SemanticEffectContract.js","title":"kernel/execution/SemanticEffectContract","summary":"SemanticEffectContract.js Pure, authority-free compilation and comparison for descriptor-authored postconditions. The model never supplies these contracts. Exact contracts are declared by trusted tool descriptors and are bound to the descriptor, arguments, graph prestate, and verified Faculty receipt before comparison. Durable projections contain hashes and bounded counts, never tool arguments or effect values.","exportCount":13}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/SemanticEffectContract.md","moduleTitle":"kernel/execution/SemanticEffectContract","source":"webgpu-os/kernel/execution/SemanticEffectContract.js","import":"/webgpu-os/kernel/execution/SemanticEffectContract.js","sourceHash":"49ab522cb868f5b52b20968f68706cb0ace89ecdcf977f78d2081ce1d658fb96","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/SemanticEffectContract.js#0000:SemanticEffectContractError","exportIndex":0,"name":"SemanticEffectContractError","kind":"class","signature":"class SemanticEffectContractError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/SemanticEffectContract.md","moduleTitle":"kernel/execution/SemanticEffectContract","source":"webgpu-os/kernel/execution/SemanticEffectContract.js","import":"/webgpu-os/kernel/execution/SemanticEffectContract.js","sourceHash":"49ab522cb868f5b52b20968f68706cb0ace89ecdcf977f78d2081ce1d658fb96","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/SemanticEffectContract.js#0001:compileDescriptorPostcondition","exportIndex":1,"name":"compileDescriptorPostcondition","kind":"function","signature":"async compileDescriptorPostcondition({ descriptor, descriptorHash, args = {}, } = {})","summary":"Compile a trusted descriptor's effect declaration into a value-free graph postcondition. Legacy descriptors remain receipt/success-bound; only the explicit closed contract enables exact semantic comparison."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/SemanticEffectContract.md","moduleTitle":"kernel/execution/SemanticEffectContract","source":"webgpu-os/kernel/execution/SemanticEffectContract.js","import":"/webgpu-os/kernel/execution/SemanticEffectContract.js","sourceHash":"49ab522cb868f5b52b20968f68706cb0ace89ecdcf977f78d2081ce1d658fb96","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/SemanticEffectContract.js#0002:validateSemanticPostcondition","exportIndex":2,"name":"validateSemanticPostcondition","kind":"function","signature":"async validateSemanticPostcondition(value)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/SemanticEffectContract.md","moduleTitle":"kernel/execution/SemanticEffectContract","source":"webgpu-os/kernel/execution/SemanticEffectContract.js","import":"/webgpu-os/kernel/execution/SemanticEffectContract.js","sourceHash":"49ab522cb868f5b52b20968f68706cb0ace89ecdcf977f78d2081ce1d658fb96","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/SemanticEffectContract.js#0003:validateSemanticInvocation","exportIndex":3,"name":"validateSemanticInvocation","kind":"function","signature":"async validateSemanticInvocation(postcondition, { descriptorHash, args = {} } = {})","summary":"Bind a live invocation to the graph-authored descriptor and argument hashes."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/SemanticEffectContract.md","moduleTitle":"kernel/execution/SemanticEffectContract","source":"webgpu-os/kernel/execution/SemanticEffectContract.js","import":"/webgpu-os/kernel/execution/SemanticEffectContract.js","sourceHash":"49ab522cb868f5b52b20968f68706cb0ace89ecdcf977f78d2081ce1d658fb96","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/SemanticEffectContract.js#0004:createExecutionPrestate","exportIndex":4,"name":"createExecutionPrestate","kind":"function","signature":"async createExecutionPrestate({ graphHash, sourceHash, nodeId, dependencies = [], } = {})","summary":"Bind a node's comparison to the graph and exact terminal evidence of each dependency. No provider-visible text or raw values enter this projection."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/SemanticEffectContract.md","moduleTitle":"kernel/execution/SemanticEffectContract","source":"webgpu-os/kernel/execution/SemanticEffectContract.js","import":"/webgpu-os/kernel/execution/SemanticEffectContract.js","sourceHash":"49ab522cb868f5b52b20968f68706cb0ace89ecdcf977f78d2081ce1d658fb96","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/SemanticEffectContract.js#0005:validateExecutionPrestate","exportIndex":5,"name":"validateExecutionPrestate","kind":"function","signature":"async validateExecutionPrestate(value)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/SemanticEffectContract.md","moduleTitle":"kernel/execution/SemanticEffectContract","source":"webgpu-os/kernel/execution/SemanticEffectContract.js","import":"/webgpu-os/kernel/execution/SemanticEffectContract.js","sourceHash":"49ab522cb868f5b52b20968f68706cb0ace89ecdcf977f78d2081ce1d658fb96","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/SemanticEffectContract.js#0006:compareSemanticEffects","exportIndex":6,"name":"compareSemanticEffects","kind":"function","signature":"async compareSemanticEffects({ postcondition, prestate, receiptEvidence = null, observedEffects = null, resultOk = false, } = {})","summary":"Compare trusted readback effects with descriptor-authored expectations. `receiptEvidence` must be the kernel-created verified Faculty projection for exact and mutation comparisons; caller-supplied receipt-shaped data cannot acquire authority through this pure function."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/SemanticEffectContract.md","moduleTitle":"kernel/execution/SemanticEffectContract","source":"webgpu-os/kernel/execution/SemanticEffectContract.js","import":"/webgpu-os/kernel/execution/SemanticEffectContract.js","sourceHash":"49ab522cb868f5b52b20968f68706cb0ace89ecdcf977f78d2081ce1d658fb96","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/SemanticEffectContract.js#0007:projectSemanticNodeOutcome","exportIndex":7,"name":"projectSemanticNodeOutcome","kind":"function","signature":"projectSemanticNodeOutcome({ nodeId, graphHash, sourceHash, comparison, } = {})","summary":"Compact semantic node outcome consumed by checkpoint/episode projections."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/SemanticEffectContract.md","moduleTitle":"kernel/execution/SemanticEffectContract","source":"webgpu-os/kernel/execution/SemanticEffectContract.js","import":"/webgpu-os/kernel/execution/SemanticEffectContract.js","sourceHash":"49ab522cb868f5b52b20968f68706cb0ace89ecdcf977f78d2081ce1d658fb96","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/SemanticEffectContract.js#0008:NAVI_EFFECT_CONTRACT_FORMAT","exportIndex":8,"name":"NAVI_EFFECT_CONTRACT_FORMAT","kind":"constant","signature":"NAVI_EFFECT_CONTRACT_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/SemanticEffectContract.md","moduleTitle":"kernel/execution/SemanticEffectContract","source":"webgpu-os/kernel/execution/SemanticEffectContract.js","import":"/webgpu-os/kernel/execution/SemanticEffectContract.js","sourceHash":"49ab522cb868f5b52b20968f68706cb0ace89ecdcf977f78d2081ce1d658fb96","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/SemanticEffectContract.js#0009:NAVI_SEMANTIC_POSTCONDITION_FORMAT","exportIndex":9,"name":"NAVI_SEMANTIC_POSTCONDITION_FORMAT","kind":"constant","signature":"NAVI_SEMANTIC_POSTCONDITION_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/SemanticEffectContract.md","moduleTitle":"kernel/execution/SemanticEffectContract","source":"webgpu-os/kernel/execution/SemanticEffectContract.js","import":"/webgpu-os/kernel/execution/SemanticEffectContract.js","sourceHash":"49ab522cb868f5b52b20968f68706cb0ace89ecdcf977f78d2081ce1d658fb96","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/SemanticEffectContract.js#0010:NAVI_EXECUTION_PRESTATE_FORMAT","exportIndex":10,"name":"NAVI_EXECUTION_PRESTATE_FORMAT","kind":"constant","signature":"NAVI_EXECUTION_PRESTATE_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/SemanticEffectContract.md","moduleTitle":"kernel/execution/SemanticEffectContract","source":"webgpu-os/kernel/execution/SemanticEffectContract.js","import":"/webgpu-os/kernel/execution/SemanticEffectContract.js","sourceHash":"49ab522cb868f5b52b20968f68706cb0ace89ecdcf977f78d2081ce1d658fb96","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/SemanticEffectContract.js#0011:NAVI_EFFECT_COMPARISON_FORMAT","exportIndex":11,"name":"NAVI_EFFECT_COMPARISON_FORMAT","kind":"constant","signature":"NAVI_EFFECT_COMPARISON_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/SemanticEffectContract.md","moduleTitle":"kernel/execution/SemanticEffectContract","source":"webgpu-os/kernel/execution/SemanticEffectContract.js","import":"/webgpu-os/kernel/execution/SemanticEffectContract.js","sourceHash":"49ab522cb868f5b52b20968f68706cb0ace89ecdcf977f78d2081ce1d658fb96","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/SemanticEffectContract.js#0012:NAVI_SEMANTIC_NODE_OUTCOME_FORMAT","exportIndex":12,"name":"NAVI_SEMANTIC_NODE_OUTCOME_FORMAT","kind":"constant","signature":"NAVI_SEMANTIC_NODE_OUTCOME_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/SemanticTransaction.md","moduleTitle":"kernel/execution/SemanticTransaction","source":"webgpu-os/kernel/execution/SemanticTransaction.js","import":"/webgpu-os/kernel/execution/SemanticTransaction.js","sourceHash":"984b2ac6a7b9d97b6050f78adf3540dfd02f675c772074be5a007b1581c60bb7","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/execution/SemanticTransaction.js","title":"kernel/execution/SemanticTransaction","summary":"SemanticTransaction.js — deterministic multi-target preview/commit contract. The coordinator never writes storage itself. Callers provide one atomic commit callback that must recheck every expected revision/hash in the same critical section as its writes. This module validates that exact request, emits explicit conflict choices, and creates a hash-bound undo record.","exportCount":9}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/SemanticTransaction.md","moduleTitle":"kernel/execution/SemanticTransaction","source":"webgpu-os/kernel/execution/SemanticTransaction.js","import":"/webgpu-os/kernel/execution/SemanticTransaction.js","sourceHash":"984b2ac6a7b9d97b6050f78adf3540dfd02f675c772074be5a007b1581c60bb7","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/SemanticTransaction.js#0000:SemanticTransactionError","exportIndex":0,"name":"SemanticTransactionError","kind":"class","signature":"class SemanticTransactionError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/SemanticTransaction.md","moduleTitle":"kernel/execution/SemanticTransaction","source":"webgpu-os/kernel/execution/SemanticTransaction.js","import":"/webgpu-os/kernel/execution/SemanticTransaction.js","sourceHash":"984b2ac6a7b9d97b6050f78adf3540dfd02f675c772074be5a007b1581c60bb7","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/SemanticTransaction.js#0001:SemanticTransactionCoordinator","exportIndex":1,"name":"SemanticTransactionCoordinator","kind":"class","signature":"class SemanticTransactionCoordinator","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/SemanticTransaction.md","moduleTitle":"kernel/execution/SemanticTransaction","source":"webgpu-os/kernel/execution/SemanticTransaction.js","import":"/webgpu-os/kernel/execution/SemanticTransaction.js","sourceHash":"984b2ac6a7b9d97b6050f78adf3540dfd02f675c772074be5a007b1581c60bb7","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/SemanticTransaction.js#0002:hashSemanticTransactionValue","exportIndex":2,"name":"hashSemanticTransactionValue","kind":"function","signature":"async hashSemanticTransactionValue(value)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/SemanticTransaction.md","moduleTitle":"kernel/execution/SemanticTransaction","source":"webgpu-os/kernel/execution/SemanticTransaction.js","import":"/webgpu-os/kernel/execution/SemanticTransaction.js","sourceHash":"984b2ac6a7b9d97b6050f78adf3540dfd02f675c772074be5a007b1581c60bb7","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/SemanticTransaction.js#0003:chooseSemanticTransactionConflict","exportIndex":3,"name":"chooseSemanticTransactionConflict","kind":"function","signature":"async chooseSemanticTransactionConflict(conflict, choice)","summary":"Bind one explicit UI choice to the exact conflict record."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/SemanticTransaction.md","moduleTitle":"kernel/execution/SemanticTransaction","source":"webgpu-os/kernel/execution/SemanticTransaction.js","import":"/webgpu-os/kernel/execution/SemanticTransaction.js","sourceHash":"984b2ac6a7b9d97b6050f78adf3540dfd02f675c772074be5a007b1581c60bb7","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/SemanticTransaction.js#0004:SEMANTIC_TRANSACTION_FORMAT","exportIndex":4,"name":"SEMANTIC_TRANSACTION_FORMAT","kind":"constant","signature":"SEMANTIC_TRANSACTION_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/SemanticTransaction.md","moduleTitle":"kernel/execution/SemanticTransaction","source":"webgpu-os/kernel/execution/SemanticTransaction.js","import":"/webgpu-os/kernel/execution/SemanticTransaction.js","sourceHash":"984b2ac6a7b9d97b6050f78adf3540dfd02f675c772074be5a007b1581c60bb7","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/SemanticTransaction.js#0005:SEMANTIC_TRANSACTION_RECEIPT_FORMAT","exportIndex":5,"name":"SEMANTIC_TRANSACTION_RECEIPT_FORMAT","kind":"constant","signature":"SEMANTIC_TRANSACTION_RECEIPT_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/SemanticTransaction.md","moduleTitle":"kernel/execution/SemanticTransaction","source":"webgpu-os/kernel/execution/SemanticTransaction.js","import":"/webgpu-os/kernel/execution/SemanticTransaction.js","sourceHash":"984b2ac6a7b9d97b6050f78adf3540dfd02f675c772074be5a007b1581c60bb7","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/SemanticTransaction.js#0006:SEMANTIC_TRANSACTION_UNDO_FORMAT","exportIndex":6,"name":"SEMANTIC_TRANSACTION_UNDO_FORMAT","kind":"constant","signature":"SEMANTIC_TRANSACTION_UNDO_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/SemanticTransaction.md","moduleTitle":"kernel/execution/SemanticTransaction","source":"webgpu-os/kernel/execution/SemanticTransaction.js","import":"/webgpu-os/kernel/execution/SemanticTransaction.js","sourceHash":"984b2ac6a7b9d97b6050f78adf3540dfd02f675c772074be5a007b1581c60bb7","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/SemanticTransaction.js#0007:SEMANTIC_TRANSACTION_CONFLICT_FORMAT","exportIndex":7,"name":"SEMANTIC_TRANSACTION_CONFLICT_FORMAT","kind":"constant","signature":"SEMANTIC_TRANSACTION_CONFLICT_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/SemanticTransaction.md","moduleTitle":"kernel/execution/SemanticTransaction","source":"webgpu-os/kernel/execution/SemanticTransaction.js","import":"/webgpu-os/kernel/execution/SemanticTransaction.js","sourceHash":"984b2ac6a7b9d97b6050f78adf3540dfd02f675c772074be5a007b1581c60bb7","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/SemanticTransaction.js#0008:SEMANTIC_TRANSACTION_CONFLICT_CHOICES","exportIndex":8,"name":"SEMANTIC_TRANSACTION_CONFLICT_CHOICES","kind":"constant","signature":"SEMANTIC_TRANSACTION_CONFLICT_CHOICES","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TaskProgressEstimator.md","moduleTitle":"kernel/execution/TaskProgressEstimator","source":"webgpu-os/kernel/execution/TaskProgressEstimator.js","import":"/webgpu-os/kernel/execution/TaskProgressEstimator.js","sourceHash":"2837ba36807932e8a5a65f856fc8e50f61f77f12287f047c536967cc020e25bf","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/execution/TaskProgressEstimator.js","title":"kernel/execution/TaskProgressEstimator","summary":"TaskProgressEstimator.js — deterministic, content-free duration and progress estimates for an active Navi task. Estimates are ranges, never deadlines. They consume local prompt signals, historical route timing, and OS events; they do not call a model and never grant authority.","exportCount":5}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TaskProgressEstimator.md","moduleTitle":"kernel/execution/TaskProgressEstimator","source":"webgpu-os/kernel/execution/TaskProgressEstimator.js","import":"/webgpu-os/kernel/execution/TaskProgressEstimator.js","sourceHash":"2837ba36807932e8a5a65f856fc8e50f61f77f12287f047c536967cc020e25bf","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TaskProgressEstimator.js#0000:classifyTaskEstimateProfile","exportIndex":0,"name":"classifyTaskEstimateProfile","kind":"function","signature":"classifyTaskEstimateProfile(prompt = '', taskKind = '')","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TaskProgressEstimator.md","moduleTitle":"kernel/execution/TaskProgressEstimator","source":"webgpu-os/kernel/execution/TaskProgressEstimator.js","import":"/webgpu-os/kernel/execution/TaskProgressEstimator.js","sourceHash":"2837ba36807932e8a5a65f856fc8e50f61f77f12287f047c536967cc020e25bf","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TaskProgressEstimator.js#0001:createTaskProgressEstimate","exportIndex":1,"name":"createTaskProgressEstimate","kind":"function","signature":"createTaskProgressEstimate({ prompt = '', taskKind = '', estimatedInputTokens = null, routeAverageMs = null, routeSampleCount = 0, now = Date.now()","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TaskProgressEstimator.md","moduleTitle":"kernel/execution/TaskProgressEstimator","source":"webgpu-os/kernel/execution/TaskProgressEstimator.js","import":"/webgpu-os/kernel/execution/TaskProgressEstimator.js","sourceHash":"2837ba36807932e8a5a65f856fc8e50f61f77f12287f047c536967cc020e25bf","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TaskProgressEstimator.js#0002:updateTaskProgressEstimate","exportIndex":2,"name":"updateTaskProgressEstimate","kind":"function","signature":"updateTaskProgressEstimate(current, event = {}, now = Date.now()","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TaskProgressEstimator.md","moduleTitle":"kernel/execution/TaskProgressEstimator","source":"webgpu-os/kernel/execution/TaskProgressEstimator.js","import":"/webgpu-os/kernel/execution/TaskProgressEstimator.js","sourceHash":"2837ba36807932e8a5a65f856fc8e50f61f77f12287f047c536967cc020e25bf","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TaskProgressEstimator.js#0003:taskProgressEstimateLabel","exportIndex":3,"name":"taskProgressEstimateLabel","kind":"function","signature":"taskProgressEstimateLabel(value)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TaskProgressEstimator.md","moduleTitle":"kernel/execution/TaskProgressEstimator","source":"webgpu-os/kernel/execution/TaskProgressEstimator.js","import":"/webgpu-os/kernel/execution/TaskProgressEstimator.js","sourceHash":"2837ba36807932e8a5a65f856fc8e50f61f77f12287f047c536967cc020e25bf","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TaskProgressEstimator.js#0004:NAVI_TASK_PROGRESS_ESTIMATE_FORMAT","exportIndex":4,"name":"NAVI_TASK_PROGRESS_ESTIMATE_FORMAT","kind":"constant","signature":"NAVI_TASK_PROGRESS_ESTIMATE_FORMAT","summary":"TaskProgressEstimator.js — deterministic, content-free duration and progress estimates for an active Navi task. Estimates are ranges, never deadlines. They consume local prompt signals, historical route timing, and OS events; they do not call a model and never grant authority."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TaskProgressGuard.md","moduleTitle":"kernel/execution/TaskProgressGuard","source":"webgpu-os/kernel/execution/TaskProgressGuard.js","import":"/webgpu-os/kernel/execution/TaskProgressGuard.js","sourceHash":"23f3f4e3550b714e04f6374fb155311d05cd91ae4124d230a8aae3f81335a3b3","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/execution/TaskProgressGuard.js","title":"kernel/execution/TaskProgressGuard","summary":"TaskProgressGuard.js — bounded semantic-progress detection for iterative AI work. The guard observes fingerprints only; it never executes tools, grants authority, persists state, or decides that unverified provider prose is work.","exportCount":5}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TaskProgressGuard.md","moduleTitle":"kernel/execution/TaskProgressGuard","source":"webgpu-os/kernel/execution/TaskProgressGuard.js","import":"/webgpu-os/kernel/execution/TaskProgressGuard.js","sourceHash":"23f3f4e3550b714e04f6374fb155311d05cd91ae4124d230a8aae3f81335a3b3","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TaskProgressGuard.js#0000:TaskProgressGuard","exportIndex":0,"name":"TaskProgressGuard","kind":"class","signature":"class TaskProgressGuard","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TaskProgressGuard.md","moduleTitle":"kernel/execution/TaskProgressGuard","source":"webgpu-os/kernel/execution/TaskProgressGuard.js","import":"/webgpu-os/kernel/execution/TaskProgressGuard.js","sourceHash":"23f3f4e3550b714e04f6374fb155311d05cd91ae4124d230a8aae3f81335a3b3","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TaskProgressGuard.js#0001:verifiedToolProgressFingerprint","exportIndex":1,"name":"verifiedToolProgressFingerprint","kind":"function","signature":"verifiedToolProgressFingerprint(results, toolDriver = null)","summary":"Return a stable fingerprint only for successful, locally observed progress."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TaskProgressGuard.md","moduleTitle":"kernel/execution/TaskProgressGuard","source":"webgpu-os/kernel/execution/TaskProgressGuard.js","import":"/webgpu-os/kernel/execution/TaskProgressGuard.js","sourceHash":"23f3f4e3550b714e04f6374fb155311d05cd91ae4124d230a8aae3f81335a3b3","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TaskProgressGuard.js#0002:statusToolFingerprint","exportIndex":2,"name":"statusToolFingerprint","kind":"function","signature":"statusToolFingerprint(results)","summary":"Fingerprint a round made entirely from status/polling tools."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TaskProgressGuard.md","moduleTitle":"kernel/execution/TaskProgressGuard","source":"webgpu-os/kernel/execution/TaskProgressGuard.js","import":"/webgpu-os/kernel/execution/TaskProgressGuard.js","sourceHash":"23f3f4e3550b714e04f6374fb155311d05cd91ae4124d230a8aae3f81335a3b3","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TaskProgressGuard.js#0003:semanticToolRoundFingerprint","exportIndex":3,"name":"semanticToolRoundFingerprint","kind":"function","signature":"semanticToolRoundFingerprint(results)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TaskProgressGuard.md","moduleTitle":"kernel/execution/TaskProgressGuard","source":"webgpu-os/kernel/execution/TaskProgressGuard.js","import":"/webgpu-os/kernel/execution/TaskProgressGuard.js","sourceHash":"23f3f4e3550b714e04f6374fb155311d05cd91ae4124d230a8aae3f81335a3b3","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TaskProgressGuard.js#0004:TASK_PROGRESS_LIMITS","exportIndex":4,"name":"TASK_PROGRESS_LIMITS","kind":"constant","signature":"TASK_PROGRESS_LIMITS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/ToolActionReview.md","moduleTitle":"kernel/execution/ToolActionReview","source":"webgpu-os/kernel/execution/ToolActionReview.js","import":"/webgpu-os/kernel/execution/ToolActionReview.js","sourceHash":"549d15adc55d3e1a3dea5f78ad9f15756bceeb92eb69e7125b816f2839ff24d6","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/execution/ToolActionReview.js","title":"kernel/execution/ToolActionReview","summary":"ToolActionReview.js — deterministic pre-approval inspection for one exact AI tool call. This is an explanatory safety layer, not an authority source: BudgetLimiter policy and the ToolRouter capability boundary remain final.","exportCount":4}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/ToolActionReview.md","moduleTitle":"kernel/execution/ToolActionReview","source":"webgpu-os/kernel/execution/ToolActionReview.js","import":"/webgpu-os/kernel/execution/ToolActionReview.js","sourceHash":"549d15adc55d3e1a3dea5f78ad9f15756bceeb92eb69e7125b816f2839ff24d6","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/ToolActionReview.js#0000:ToolActionReview","exportIndex":0,"name":"ToolActionReview","kind":"class","signature":"class ToolActionReview","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/ToolActionReview.md","moduleTitle":"kernel/execution/ToolActionReview","source":"webgpu-os/kernel/execution/ToolActionReview.js","import":"/webgpu-os/kernel/execution/ToolActionReview.js","sourceHash":"549d15adc55d3e1a3dea5f78ad9f15756bceeb92eb69e7125b816f2839ff24d6","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/ToolActionReview.js#0001:reviewToolAction","exportIndex":1,"name":"reviewToolAction","kind":"function","signature":"async reviewToolAction({ tool, args = {}, policy = null, appId = '', requestId = '', naviId = '', facultyId = '', taskId = '', proposal = null, } = {})","summary":"Review one exact tool descriptor and argument object before approval."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/ToolActionReview.md","moduleTitle":"kernel/execution/ToolActionReview","source":"webgpu-os/kernel/execution/ToolActionReview.js","import":"/webgpu-os/kernel/execution/ToolActionReview.js","sourceHash":"549d15adc55d3e1a3dea5f78ad9f15756bceeb92eb69e7125b816f2839ff24d6","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/ToolActionReview.js#0002:TOOL_ACTION_REVIEW_FORMAT","exportIndex":2,"name":"TOOL_ACTION_REVIEW_FORMAT","kind":"constant","signature":"TOOL_ACTION_REVIEW_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/ToolActionReview.md","moduleTitle":"kernel/execution/ToolActionReview","source":"webgpu-os/kernel/execution/ToolActionReview.js","import":"/webgpu-os/kernel/execution/ToolActionReview.js","sourceHash":"549d15adc55d3e1a3dea5f78ad9f15756bceeb92eb69e7125b816f2839ff24d6","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/ToolActionReview.js#0003:TOOL_ACTION_REVIEW_DECISION","exportIndex":3,"name":"TOOL_ACTION_REVIEW_DECISION","kind":"constant","signature":"TOOL_ACTION_REVIEW_DECISION","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TransactionManager.md","moduleTitle":"kernel/execution/TransactionManager","source":"webgpu-os/kernel/execution/TransactionManager.js","import":"/webgpu-os/kernel/execution/TransactionManager.js","sourceHash":"79adb6d1c4b6ce4d5664a649657346235be9d6f716898ebf8b2a3c63f186eb4c","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/execution/TransactionManager.js","title":"kernel/execution/TransactionManager","summary":"TransactionManager.js — wraps engine/state/transaction/Transaction.js (makeTransaction/sealTransaction) for the OS.ai() request/commit envelope, and engine/state/transaction/ProposalPool.js for candidate-proposal management (competing proposals over the same exclusive inputs pick a deterministic winner; losers re-observe and re-plan — never silently overwritten).","exportCount":2}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TransactionManager.md","moduleTitle":"kernel/execution/TransactionManager","source":"webgpu-os/kernel/execution/TransactionManager.js","import":"/webgpu-os/kernel/execution/TransactionManager.js","sourceHash":"79adb6d1c4b6ce4d5664a649657346235be9d6f716898ebf8b2a3c63f186eb4c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TransactionManager.js#0000:TransactionManager","exportIndex":0,"name":"TransactionManager","kind":"class","signature":"class TransactionManager","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TransactionManager.md","moduleTitle":"kernel/execution/TransactionManager","source":"webgpu-os/kernel/execution/TransactionManager.js","import":"/webgpu-os/kernel/execution/TransactionManager.js","sourceHash":"79adb6d1c4b6ce4d5664a649657346235be9d6f716898ebf8b2a3c63f186eb4c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TransactionManager.js#0001:PROPOSAL_STATUS","exportIndex":1,"name":"PROPOSAL_STATUS","kind":"re-export","signature":"PROPOSAL_STATUS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","title":"kernel/execution/TwoPassPlannerFinalizer","summary":"TwoPassPlannerFinalizer.js — the Phase 9 execution loop (kernel.aiExecutor). Full flow per OS.ai() task: prompt → goal classify → gather context (roots-checked resource reads, PrivacyGuard-scrubbed) → capability negotiation (Ph4/Ph5 attestation) → model-tier choice → PASS 1 planner (JSON plan; tools executed through the AI Tool Firewall with idempotency keys, policy gating and approval elicitations) → PASS 2 finalizer (strict schema, NO tools) → validator → repair-if-needed (bounded RepairLoop) → CommitCoordinator commit → Witness receipt → Task Ledger record. The pipeline is driven as Phase 6 storylets over worldState.phase; every fired storylet returns `{ pending }` (see AIStoryletFactory) which this loop awaits, then applies `{ phase, wsPatch, facts, observations }` via StoryletEffectsApplier.","exportCount":63}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0000:TwoPassPlannerFinalizer","exportIndex":0,"name":"TwoPassPlannerFinalizer","kind":"class","signature":"class TwoPassPlannerFinalizer","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0001:normalizeActiveGuidanceProjection","exportIndex":1,"name":"normalizeActiveGuidanceProjection","kind":"function","signature":"normalizeActiveGuidanceProjection(value)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0002:normalizeAIExecutorAppContextCandidates","exportIndex":2,"name":"normalizeAIExecutorAppContextCandidates","kind":"function","signature":"normalizeAIExecutorAppContextCandidates(value)","summary":"Normalize app-owned context before it crosses into the Navi task envelope. Applications may contribute only an identifier, a descriptive kind, and bounded text. Classification, authority, ranking, provenance, disclosure, and source hashes are deliberately absent because the kernel owns them."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0003:selectActiveGuidanceForTool","exportIndex":3,"name":"selectActiveGuidanceForTool","kind":"function","signature":"selectActiveGuidanceForTool(activeGuidance, toolName)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0004:taskGraphRuntimeInvalidation","exportIndex":4,"name":"taskGraphRuntimeInvalidation","kind":"function","signature":"taskGraphRuntimeInvalidation(previousGraph, nextGraph, { approvalCount = 0, toolResults = [], } = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0005:taskScopeInvalidatesApprovals","exportIndex":5,"name":"taskScopeInvalidatesApprovals","kind":"function","signature":"taskScopeInvalidatesApprovals(impact)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0006:classifyToolRoundReplanning","exportIndex":6,"name":"classifyToolRoundReplanning","kind":"function","signature":"classifyToolRoundReplanning(results = [])","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0007:naviModelRoutePreflightError","exportIndex":7,"name":"naviModelRoutePreflightError","kind":"function","signature":"naviModelRoutePreflightError(decision, requirements = {}, route = {})","summary":"Convert a content-free kernel route decision into one stable, actionable blocker. Eligibility remains owned by NaviModelBroker; this projection only explains why a zero-route decision stopped before disclosure or dispatch."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0008:providerToolTransportFallbackEligible","exportIndex":8,"name":"providerToolTransportFallbackEligible","kind":"function","signature":"providerToolTransportFallbackEligible(error, request = {})","summary":"Native provider tool envelopes are an optimization, not an execution authority. If preflight proves that the approved route set cannot carry them, the planner may fall back before disclosure or dispatch to its exact JSON transport. Privacy, policy, and other route failures remain terminal."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0009:compileNaviModelCompatibilityRequirements","exportIndex":9,"name":"compileNaviModelCompatibilityRequirements","kind":"function","signature":"compileNaviModelCompatibilityRequirements(rawRequest = {}, base = {})","summary":"Compile hard model-route requirements from the actual model protocol. Provider tools are an optional typed generation transport; local descriptor, graph, authority, and receipt validation remain the execution boundary. Prompt-mediated exact JSON remains available when no native tools are sent."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0010:applyNaviModelProviderContract","exportIndex":10,"name":"applyNaviModelProviderContract","kind":"function","signature":"applyNaviModelProviderContract(rawRequest = {}, purpose = 'chat')","summary":"Bind strict schemas to provider parameter enforcement without mutating the caller request."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0011:strictOutputSchemaPortabilityErrors","exportIndex":11,"name":"strictOutputSchemaPortabilityErrors","kind":"function","signature":"strictOutputSchemaPortabilityErrors(rawSchema)","summary":"Validate the conservative JSON Schema subset accepted by AI Echo's strict remote-model contract. This is intentionally narrower than JSON Schema: provider endpoints commonly require closed objects and every declared property to be listed in `required`. Dynamic tool payloads must cross the model boundary as JSON strings and are parsed and tool-schema-validated by the OS after generation."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0012:canonicalInvestigationArgumentHash","exportIndex":12,"name":"canonicalInvestigationArgumentHash","kind":"function","signature":"canonicalInvestigationArgumentHash(args)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0013:isStrictInvestigationReadDescriptor","exportIndex":13,"name":"isStrictInvestigationReadDescriptor","kind":"function","signature":"isStrictInvestigationReadDescriptor(descriptor)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0014:selectInvestigationForPrompt","exportIndex":14,"name":"selectInvestigationForPrompt","kind":"function","signature":"selectInvestigationForPrompt({ objective, taskKind = '', goalType = '' } = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0015:normalizeInvestigationFrameResponse","exportIndex":15,"name":"normalizeInvestigationFrameResponse","kind":"function","signature":"normalizeInvestigationFrameResponse(value)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0016:normalizeInvestigationObservationPlan","exportIndex":16,"name":"normalizeInvestigationObservationPlan","kind":"function","signature":"normalizeInvestigationObservationPlan(value)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0017:normalizeInvestigationAssessmentResponse","exportIndex":17,"name":"normalizeInvestigationAssessmentResponse","kind":"function","signature":"normalizeInvestigationAssessmentResponse(value, observationIds, caseRecord)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0018:validateInvestigationReadReceipt","exportIndex":18,"name":"validateInvestigationReadReceipt","kind":"function","signature":"async validateInvestigationReadReceipt({ kernel, ws, result, descriptorHash, argumentHash, dataClassification, caseId = null, } = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0019:investigationEvidenceProjection","exportIndex":19,"name":"investigationEvidenceProjection","kind":"function","signature":"investigationEvidenceProjection(evidence, cycle)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0020:resolveInvestigationDataClassification","exportIndex":20,"name":"resolveInvestigationDataClassification","kind":"function","signature":"resolveInvestigationDataClassification(descriptor)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0021:parseSteeringModelClassification","exportIndex":21,"name":"parseSteeringModelClassification","kind":"function","signature":"parseSteeringModelClassification(value)","summary":"Parse the advisory free-lane steering classifier. This envelope cannot grant authority, and `cancel` is intentionally absent so an uncertain model can never stop operator work. Prose/fences are tolerated only when they contain one bounded JSON object, which keeps small free models useful without making their formatting part of the task-control boundary."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0022:validatePlannerTransportEnvelope","exportIndex":22,"name":"validatePlannerTransportEnvelope","kind":"function","signature":"validatePlannerTransportEnvelope(value)","summary":"Validate the canonical OS planner envelope. Provider-side schema enforcement is never required: provider-native exact JSON is projected into this closed transport before local graph, descriptor, authority, and receipt validation. This validator remains the authoritative canonical boundary. The returned diagnostics contain schema paths only and never echo tool arguments or provider text."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0023:validatePlannerTransportResponse","exportIndex":23,"name":"validatePlannerTransportResponse","kind":"function","signature":"validatePlannerTransportResponse(value)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0024:plannerResultTransportCandidate","exportIndex":24,"name":"plannerResultTransportCandidate","kind":"function","signature":"plannerResultTransportCandidate(result)","summary":"Prefer a completed typed provider tool batch over assistant prose."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0025:plannerTransportShapeEvidence","exportIndex":25,"name":"plannerTransportShapeEvidence","kind":"function","signature":"plannerTransportShapeEvidence(value)","summary":"Return a content-free structural description of a planner response. Provider text is never copied. The evidence is safe for durable diagnostics and distinguishes common repair cases without guessing at model intent."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0026:plannerTransportRejection","exportIndex":26,"name":"plannerTransportRejection","kind":"function","signature":"plannerTransportRejection(error, retainedText)","summary":"Recover a locally repairable planner envelope from a terminal broker error. The kernel broker converts a rejected `resultValidator` verdict into a route failure and discards the provider result. When the selected route is pinned (manual routing) or every approved compatible route is exhausted, that error reaches the executor and would end the run — even though the exact rejected text is still available and repairable. Only malformed-kind local admission rejections with retained text qualify; policy, authority, abort, outage, and truncation failures stay terminal under their normal rules."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0027:normalizePlannerOutput","exportIndex":27,"name":"normalizePlannerOutput","kind":"function","signature":"normalizePlannerOutput(value)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0028:normalizePlannerResponse","exportIndex":28,"name":"normalizePlannerResponse","kind":"function","signature":"normalizePlannerResponse(text)","summary":"Normalize a planner response while accepting one safe prose outcome: an explicit statement that no tool calls are needed. This lets smaller local models finish a no-op planning round without inventing a tool invocation."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0029:isDirectConversationPrompt","exportIndex":29,"name":"isDirectConversationPrompt","kind":"function","signature":"isDirectConversationPrompt(value)","summary":"Bounded social turns should go straight to the answer pass. AI Echo advertises core tools on every turn, which must not force greetings, introductions, acknowledgements, or personal conversation through planner JSON. Explicit tool/OS action language always wins and stays on the planner."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0030:hasLivePatchMutationIntent","exportIndex":30,"name":"hasLivePatchMutationIntent","kind":"function","signature":"hasLivePatchMutationIntent(value)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0031:hasExplicitLivePatchIntent","exportIndex":31,"name":"hasExplicitLivePatchIntent","kind":"function","signature":"hasExplicitLivePatchIntent(value)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0032:hasSavedArtifactIntent","exportIndex":32,"name":"hasSavedArtifactIntent","kind":"function","signature":"hasSavedArtifactIntent(text)","summary":"A saved work product is canonical VFS state, not a formatting style. The compatibility terms Artifact and gem, plus the preferred Dodad name, are weighted with actions and surrounding context so no single token can force a mutation and ordinary domain discussion remains answer-only."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0033:savedArtifactPreferredKind","exportIndex":33,"name":"savedArtifactPreferredKind","kind":"function","signature":"savedArtifactPreferredKind(text)","summary":"Resolve the saved-work storage kind requested by the operator. Web is the OS default because it preserves semantic structure, presentation, and optional interaction as independently editable files. Every kind competes through the same weighted evidence scorecard."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0034:savedArtifactIntentProfile","exportIndex":34,"name":"savedArtifactIntentProfile","kind":"function","signature":"savedArtifactIntentProfile(text)","summary":"Deterministic, content-local saved-work routing. Chat, web, document, code, table, chart, data, and declarative UI candidates all collect weighted positive, negative, and context signals. Explicit multi-word requests score strongly but never bypass comparison, ambiguity reporting, or negation. The scorecard is safe to expose in receipts and never grants tools, changes privacy classification, or replaces provider capability checks."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0035:savedArtifactPlannerFormatContract","exportIndex":35,"name":"savedArtifactPlannerFormatContract","kind":"function","signature":"savedArtifactPlannerFormatContract(text)","summary":"Content-free planner instruction for the exact default Artifact shape."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0036:prioritizeRequiredPlannerTools","exportIndex":36,"name":"prioritizeRequiredPlannerTools","kind":"function","signature":"prioritizeRequiredPlannerTools(toolDescs, requiredNames = [])","summary":"Present required tools first without changing the locally authoritative descriptor set. This is a provider-visibility projection only; it grants no capability and does not weaken descriptor or argument validation."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0037:classifySavedArtifactPlanSteps","exportIndex":37,"name":"classifySavedArtifactPlanSteps","kind":"function","signature":"classifySavedArtifactPlanSteps(steps, pending = false, { preferredKind = '' } = {})","summary":"Content-free obligation check used before executing a planner round."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0038:buildSavedArtifactWebFiles","exportIndex":38,"name":"buildSavedArtifactWebFiles","kind":"function","signature":"buildSavedArtifactWebFiles({ title = 'AI Echo Artifact', authoredHtml = '' } = {})","summary":"Build the deterministic three-file web project used by the OS-owned Artifact fallback. The authored HTML remains the model's work product while the shell, visual system, and progressive enhancement are local and stable."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0039:savedArtifactFallbackTitle","exportIndex":39,"name":"savedArtifactFallbackTitle","kind":"function","signature":"savedArtifactFallbackTitle(text)","summary":"Build a useful bounded title without trusting model-generated metadata."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0040:normalizeSavedArtifactFallbackContent","exportIndex":40,"name":"normalizeSavedArtifactFallbackContent","kind":"function","signature":"normalizeSavedArtifactFallbackContent(value, { kind = 'document' } = {})","summary":"Admit plain authored content before the OS constructs a signed mutation."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0041:hasWorkspaceOutputLookupIntent","exportIndex":41,"name":"hasWorkspaceOutputLookupIntent","kind":"function","signature":"hasWorkspaceOutputLookupIntent(text)","summary":"Detect a request to locate, verify, or explain the absence of saved output."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0042:workspaceOutputSearchAssessment","exportIndex":42,"name":"workspaceOutputSearchAssessment","kind":"function","signature":"workspaceOutputSearchAssessment(toolResults)","summary":"Project exact storage.search evidence into a bounded, content-free decision. A negative conclusion is complete only when VFS enumeration was untruncated and the same-task Workspace Output Index rebuild succeeded for /user."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0043:isWorkspaceOutputMissingClaim","exportIndex":43,"name":"isWorkspaceOutputMissingClaim","kind":"function","signature":"isWorkspaceOutputMissingClaim(text)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0044:unattemptedObligationEvidence","exportIndex":44,"name":"unattemptedObligationEvidence","kind":"function","signature":"unattemptedObligationEvidence(obligation, toolDescription)","summary":"Report a declared obligation that ended without a tool dispatch. The OS may only state what it observed. Recognizing refusal-shaped wording in planner prose is evidence that the round ended without an attempt, never evidence of *why*: the same words appear when a model merely discusses an earlier failure, and asserting a provider policy refusal from them puts a fabricated cause in front of the operator as OS evidence. The dispatch count is checkable, so that is what the finalizer is told."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0045:isExplicitSavedArtifactRefusal","exportIndex":45,"name":"isExplicitSavedArtifactRefusal","kind":"function","signature":"isExplicitSavedArtifactRefusal(text)","summary":"Recognize refusal-shaped planner prose tied to creating or saving a Dodad. This keeps that outcome off the JSON repair path, which cannot fix prose, while leaving arbitrary malformed planner output on the normal bounded repair path. It attests wording only — never a provider decision."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0046:currentUserPromptForRouting","exportIndex":46,"name":"currentUserPromptForRouting","kind":"function","signature":"currentUserPromptForRouting(value)","summary":"AI Echo may wrap a short follow-up with bounded conversation history. Route on the explicit current-message section so old tool requests cannot turn a greeting or acknowledgement into a new planner round. The complete prompt remains untouched and is still supplied to the answer pass as context."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0047:livePatchRoutingText","exportIndex":47,"name":"livePatchRoutingText","kind":"function","signature":"livePatchRoutingText(value)","summary":"Recover one narrow capability correction from AI Echo's managed follow-up wrapper without allowing arbitrary older turns to reactivate themselves."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0048:normalizeFinalizerOutput","exportIndex":48,"name":"normalizeFinalizerOutput","kind":"function","signature":"normalizeFinalizerOutput(value, schema = DEFAULT_OUTPUT_SCHEMA, rawText = '')","summary":"Normalize common provider answer envelopes without inventing answer content."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0049:readOnlyObservationSignature","exportIndex":49,"name":"readOnlyObservationSignature","kind":"function","signature":"readOnlyObservationSignature(results, toolDriver = null)","summary":"Return a deterministic signature only when a round contains no mutation. Matching signatures mean both the calls and the resulting observations were unchanged, so another identical re-plan round cannot add evidence."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0050:toolRoundSignature","exportIndex":50,"name":"toolRoundSignature","kind":"function","signature":"toolRoundSignature(results)","summary":"A bounded deterministic fingerprint used to detect alternating planner cycles."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0051:detectFinalToolEnvelope","exportIndex":51,"name":"detectFinalToolEnvelope","kind":"function","signature":"detectFinalToolEnvelope(answer, toolDriver = null, toolResults = [])","summary":"Detect executable tool-call JSON leaked into final prose. A matching receipt proves the action ran, but it does not make a raw tool envelope a valid user answer. Fenced examples are ignored. The detector parses bounded complete objects and never evaluates model-authored content."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0052:resolveNegotiatedToolName","exportIndex":52,"name":"resolveNegotiatedToolName","kind":"function","signature":"resolveNegotiatedToolName(requestedName, capabilities = [])","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0053:resolveNaviExecutionMode","exportIndex":53,"name":"resolveNaviExecutionMode","kind":"function","signature":"resolveNaviExecutionMode(kernel)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0054:plannerOutputParams","exportIndex":54,"name":"plannerOutputParams","kind":"function","signature":"plannerOutputParams(params)","summary":"Guarantee the planner enough output budget to emit a plan after reasoning. A reasoning model spends its output allowance on a thinking trace before it writes any content. With a chat-sized allowance the trace is truncated mid-stream, the content channel stays empty, and the transport reports \"invalid JSON\" for a response that never contained a plan at all — a failure no local repair can fix, because there is nothing to extract. Raise the floor only; a larger operator setting is always honoured."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0055:jsonOnlyReasoningDirective","exportIndex":55,"name":"jsonOnlyReasoningDirective","kind":"function","signature":"jsonOnlyReasoningDirective(model)","summary":"Return the model-native directive that suppresses a thinking trace, if the route documents one. NVIDIA Nemotron and hybrid Qwen3 were both trained on the same `/think` and `/no_think` soft switch, and both default to reasoning when no signal is present — which is why a JSON-only pass gets a monologue it never asked for. This is message text rather than an API parameter, so it needs no gateway support and a model that does not recognize it simply answers normally. The gateway alternatives do not cover this case: OpenRouter honours `reasoning.max_tokens` only for Gemini, Anthropic and some Qwen, `effort` only for OpenAI and Grok, and `exclude` still spends the budget on hidden thinking. Only JSON-only passes pass through here; prose answers keep their reasoning."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0056:isTransientNaviExecutionState","exportIndex":56,"name":"isTransientNaviExecutionState","kind":"function","signature":"isTransientNaviExecutionState(value)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0057:naviCognitionDenialMessage","exportIndex":57,"name":"naviCognitionDenialMessage","kind":"function","signature":"naviCognitionDenialMessage(mode)","summary":"Explain a cognition denial without hiding the exact kernel state or code. A still-transient state at the end of the startup budget is not the same condition as a terminal one: nothing is wrong with the operator's setup and the identical request usually succeeds once the bind settles. Saying only \"unavailable\" there sends operators looking for a fault that does not exist."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0058:waitForNaviExecutionMode","exportIndex":58,"name":"waitForNaviExecutionMode","kind":"function","signature":"waitForNaviExecutionMode(kernel, { timeoutMs = NAVI_COGNITION_TRANSIENT_WAIT_MS, signal = null, } = {})","summary":"Hold a newly accepted, still side-effect-free task across one short kernel authority rebind. The wait never bypasses Navi, never dispatches a provider, and resolves immediately when the state becomes ready or terminal."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0059:resolveNaviFacultyToolInvocation","exportIndex":59,"name":"resolveNaviFacultyToolInvocation","kind":"function","signature":"resolveNaviFacultyToolInvocation(toolName, rawArgs = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0060:projectVerifiedFacultyOutcomeAck","exportIndex":60,"name":"projectVerifiedFacultyOutcomeAck","kind":"function","signature":"projectVerifiedFacultyOutcomeAck(receiptEvidence, replayed = false)","summary":"Content-free learning projection from kernel-verified Faculty evidence. This carries no arguments, result payload, provider reasoning, capability, approval, or authority. Consumers may use it only as review evidence."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0061:projectArtifactFileActivity","exportIndex":61,"name":"projectArtifactFileActivity","kind":"function","signature":"projectArtifactFileActivity({ toolName = '', args = {}, result = null, phase = 'preparing', errorCode = null, error = null, } = {})","summary":"Project one local-only Artifact file operation for Run Details. A bounded incoming-content preview lets the operator inspect the exact write while it is active; it is never added to provider-visible results, signed receipts, diagnostics, or Companion messages. Exact absolute paths, sizes, and hashes still appear only after the locally verified Artifact receipt."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/execution/TwoPassPlannerFinalizer.md","moduleTitle":"kernel/execution/TwoPassPlannerFinalizer","source":"webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","import":"/webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js","sourceHash":"5325426c7210278648a1690b3daa5a3b50de8bfe0b3707356ec8db9dcec8d11f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/execution/TwoPassPlannerFinalizer.js#0062:NAVI_TOOL_PLAN_OUTPUT_SCHEMA","exportIndex":62,"name":"NAVI_TOOL_PLAN_OUTPUT_SCHEMA","kind":"constant","signature":"NAVI_TOOL_PLAN_OUTPUT_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ledger/AgentScratchpad.md","moduleTitle":"kernel/ledger/AgentScratchpad","source":"webgpu-os/kernel/ledger/AgentScratchpad.js","import":"/webgpu-os/kernel/ledger/AgentScratchpad.js","sourceHash":"5af2418d13fe496e1ce160aba30236417409730613f9cd9f2cd0d762bcee64bc","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/ledger/AgentScratchpad.js","title":"kernel/ledger/AgentScratchpad","summary":"AgentScratchpad.js — bounded execution notes for AI requests. This records operational state (plans, actions, observations, failures and phase changes), not hidden model reasoning. Entries are safe to render in a task report and give the user a replayable account of what the agent did.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ledger/AgentScratchpad.md","moduleTitle":"kernel/ledger/AgentScratchpad","source":"webgpu-os/kernel/ledger/AgentScratchpad.js","import":"/webgpu-os/kernel/ledger/AgentScratchpad.js","sourceHash":"5af2418d13fe496e1ce160aba30236417409730613f9cd9f2cd0d762bcee64bc","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ledger/AgentScratchpad.js#0000:AgentScratchpad","exportIndex":0,"name":"AgentScratchpad","kind":"class","signature":"class AgentScratchpad","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ledger/BlockerList.md","moduleTitle":"kernel/ledger/BlockerList","source":"webgpu-os/kernel/ledger/BlockerList.js","import":"/webgpu-os/kernel/ledger/BlockerList.js","sourceHash":"bdc3f1b7ce0deb526ccc67b4a81abe555086763386bdf88f37614be0b0b3b844","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/ledger/BlockerList.js","title":"kernel/ledger/BlockerList","summary":"BlockerList.js — active blockers for an AI request: pending approvals, unanswered elicitations, effects parked for reconciliation, denied capabilities. The overlay's Mini Bar badge count comes from here.","exportCount":2}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ledger/BlockerList.md","moduleTitle":"kernel/ledger/BlockerList","source":"webgpu-os/kernel/ledger/BlockerList.js","import":"/webgpu-os/kernel/ledger/BlockerList.js","sourceHash":"bdc3f1b7ce0deb526ccc67b4a81abe555086763386bdf88f37614be0b0b3b844","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ledger/BlockerList.js#0000:BlockerList","exportIndex":0,"name":"BlockerList","kind":"class","signature":"class BlockerList","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ledger/BlockerList.md","moduleTitle":"kernel/ledger/BlockerList","source":"webgpu-os/kernel/ledger/BlockerList.js","import":"/webgpu-os/kernel/ledger/BlockerList.js","sourceHash":"bdc3f1b7ce0deb526ccc67b4a81abe555086763386bdf88f37614be0b0b3b844","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ledger/BlockerList.js#0001:BLOCKER_KIND","exportIndex":1,"name":"BLOCKER_KIND","kind":"re-export","signature":"BLOCKER_KIND","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ledger/BoundedTrace.md","moduleTitle":"kernel/ledger/BoundedTrace","source":"webgpu-os/kernel/ledger/BoundedTrace.js","import":"/webgpu-os/kernel/ledger/BoundedTrace.js","sourceHash":"576a5b7e2f6ef92796431a5ad99dbbd36eea886cdf707f99b74f5740b9b5593d","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/ledger/BoundedTrace.js","title":"kernel/ledger/BoundedTrace","summary":"BoundedTrace.js — shared base for the ledger's simple per-request traces (resource reads, sampling, elicitations, storylet fires): bounded, timestamped, requestId-keyed append log. Type-specific traces extend this instead of quadruplicating the same buffer logic.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ledger/BoundedTrace.md","moduleTitle":"kernel/ledger/BoundedTrace","source":"webgpu-os/kernel/ledger/BoundedTrace.js","import":"/webgpu-os/kernel/ledger/BoundedTrace.js","sourceHash":"576a5b7e2f6ef92796431a5ad99dbbd36eea886cdf707f99b74f5740b9b5593d","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ledger/BoundedTrace.js#0000:BoundedTrace","exportIndex":0,"name":"BoundedTrace","kind":"class","signature":"class BoundedTrace","summary":"BoundedTrace.js — shared base for the ledger's simple per-request traces (resource reads, sampling, elicitations, storylet fires): bounded, timestamped, requestId-keyed append log. Type-specific traces extend this instead of quadruplicating the same buffer logic."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ledger/ElicitationTrace.md","moduleTitle":"kernel/ledger/ElicitationTrace","source":"webgpu-os/kernel/ledger/ElicitationTrace.js","import":"/webgpu-os/kernel/ledger/ElicitationTrace.js","sourceHash":"086ab6026f5d216e072403b4798ef0bfbde1cf5c28ab577bbe80212f93015c4b","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/ledger/ElicitationTrace.js","title":"kernel/ledger/ElicitationTrace","summary":"ElicitationTrace.js — ledger trace of mid-task user questions (Phase 4 ElicitationManager): what was asked, whether the user answered/declined/ timed out, and how long the task waited.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ledger/ElicitationTrace.md","moduleTitle":"kernel/ledger/ElicitationTrace","source":"webgpu-os/kernel/ledger/ElicitationTrace.js","import":"/webgpu-os/kernel/ledger/ElicitationTrace.js","sourceHash":"086ab6026f5d216e072403b4798ef0bfbde1cf5c28ab577bbe80212f93015c4b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ledger/ElicitationTrace.js#0000:ElicitationTrace","exportIndex":0,"name":"ElicitationTrace","kind":"class","signature":"class ElicitationTrace extends BoundedTrace","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ledger/ExecutionGraph.md","moduleTitle":"kernel/ledger/ExecutionGraph","source":"webgpu-os/kernel/ledger/ExecutionGraph.js","import":"/webgpu-os/kernel/ledger/ExecutionGraph.js","sourceHash":"be70a7ae8cfdc5c7e439dc99698cdccc84882359b1c07f3f6afaa67a795c58d6","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/ledger/ExecutionGraph.js","title":"kernel/ledger/ExecutionGraph","summary":"ExecutionGraph.js — the executed-steps DAG for an AI request: nodes are storylet fires / tool calls / model passes; edges are causal (\"B used A's output\"). Feeds the Timeline Panel's graph view.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ledger/ExecutionGraph.md","moduleTitle":"kernel/ledger/ExecutionGraph","source":"webgpu-os/kernel/ledger/ExecutionGraph.js","import":"/webgpu-os/kernel/ledger/ExecutionGraph.js","sourceHash":"be70a7ae8cfdc5c7e439dc99698cdccc84882359b1c07f3f6afaa67a795c58d6","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ledger/ExecutionGraph.js#0000:ExecutionGraph","exportIndex":0,"name":"ExecutionGraph","kind":"class","signature":"class ExecutionGraph","summary":"ExecutionGraph.js — the executed-steps DAG for an AI request: nodes are storylet fires / tool calls / model passes; edges are causal (\"B used A's output\"). Feeds the Timeline Panel's graph view."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ledger/FinalReport.md","moduleTitle":"kernel/ledger/FinalReport","source":"webgpu-os/kernel/ledger/FinalReport.js","import":"/webgpu-os/kernel/ledger/FinalReport.js","sourceHash":"e7bf16cd137f29b591ec38af42044e15f612e78ee785e7cfe0dcbad32e4a6d73","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/ledger/FinalReport.js","title":"kernel/ledger/FinalReport","summary":"FinalReport.js — assembles the end-of-task report for one AI request from the ledger's parts: goal outcome, task summary, tool/resource/sampling/ elicitation activity, blockers hit, receipts issued. This is what the overlay shows when a task completes and what gets persisted with the request record.","exportCount":9}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ledger/FinalReport.md","moduleTitle":"kernel/ledger/FinalReport","source":"webgpu-os/kernel/ledger/FinalReport.js","import":"/webgpu-os/kernel/ledger/FinalReport.js","sourceHash":"e7bf16cd137f29b591ec38af42044e15f612e78ee785e7cfe0dcbad32e4a6d73","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ledger/FinalReport.js#0000:FinalReport","exportIndex":0,"name":"FinalReport","kind":"class","signature":"class FinalReport","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ledger/FinalReport.md","moduleTitle":"kernel/ledger/FinalReport","source":"webgpu-os/kernel/ledger/FinalReport.js","import":"/webgpu-os/kernel/ledger/FinalReport.js","sourceHash":"e7bf16cd137f29b591ec38af42044e15f612e78ee785e7cfe0dcbad32e4a6d73","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ledger/FinalReport.js#0001:projectArtifactToolFailureDiagnostic","exportIndex":1,"name":"projectArtifactToolFailureDiagnostic","kind":"function","signature":"projectArtifactToolFailureDiagnostic(value = {})","summary":"Convert an Artifact mutation failure into a fixed, content-free diagnostic. Raw handler text is used only to select a known category and is never returned, so prompts, file contents, tool arguments, and provider bodies cannot enter Run Details or copied diagnostics through this path."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ledger/FinalReport.md","moduleTitle":"kernel/ledger/FinalReport","source":"webgpu-os/kernel/ledger/FinalReport.js","import":"/webgpu-os/kernel/ledger/FinalReport.js","sourceHash":"e7bf16cd137f29b591ec38af42044e15f612e78ee785e7cfe0dcbad32e4a6d73","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ledger/FinalReport.js#0002:projectProviderFailureDiagnostic","exportIndex":2,"name":"projectProviderFailureDiagnostic","kind":"function","signature":"projectProviderFailureDiagnostic(value)","summary":"Keep only broker-authored, content-free failure evidence. Provider payloads, prompts, credentials, endpoints, and response bodies are deliberately absent."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ledger/FinalReport.md","moduleTitle":"kernel/ledger/FinalReport","source":"webgpu-os/kernel/ledger/FinalReport.js","import":"/webgpu-os/kernel/ledger/FinalReport.js","sourceHash":"e7bf16cd137f29b591ec38af42044e15f612e78ee785e7cfe0dcbad32e4a6d73","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ledger/FinalReport.js#0003:projectNaviModelRouteBlocker","exportIndex":3,"name":"projectNaviModelRouteBlocker","kind":"function","signature":"projectNaviModelRouteBlocker(value)","summary":"Preserve a content-free model compatibility decision when the kernel stops before provider dispatch. This is intentionally separate from `modelExecution`: zero attempts is evidence that no provider was called."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ledger/FinalReport.md","moduleTitle":"kernel/ledger/FinalReport","source":"webgpu-os/kernel/ledger/FinalReport.js","import":"/webgpu-os/kernel/ledger/FinalReport.js","sourceHash":"e7bf16cd137f29b591ec38af42044e15f612e78ee785e7cfe0dcbad32e4a6d73","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ledger/FinalReport.js#0004:projectModelExecutionDiagnostic","exportIndex":4,"name":"projectModelExecutionDiagnostic","kind":"function","signature":"projectModelExecutionDiagnostic(value)","summary":"Project a Navi broker execution into a bounded diagnostic receipt. Request hashes and partial-result hashes are intentionally excluded because they can fingerprint operator content without helping an operator diagnose routing."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ledger/FinalReport.md","moduleTitle":"kernel/ledger/FinalReport","source":"webgpu-os/kernel/ledger/FinalReport.js","import":"/webgpu-os/kernel/ledger/FinalReport.js","sourceHash":"e7bf16cd137f29b591ec38af42044e15f612e78ee785e7cfe0dcbad32e4a6d73","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ledger/FinalReport.js#0005:publicErrorNumberForFailure","exportIndex":5,"name":"publicErrorNumberForFailure","kind":"function","signature":"publicErrorNumberForFailure({ errorCode = '', failure = null } = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ledger/FinalReport.md","moduleTitle":"kernel/ledger/FinalReport","source":"webgpu-os/kernel/ledger/FinalReport.js","import":"/webgpu-os/kernel/ledger/FinalReport.js","sourceHash":"e7bf16cd137f29b591ec38af42044e15f612e78ee785e7cfe0dcbad32e4a6d73","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ledger/FinalReport.js#0006:createAIIncidentId","exportIndex":6,"name":"createAIIncidentId","kind":"function","signature":"createAIIncidentId(requestId)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ledger/FinalReport.md","moduleTitle":"kernel/ledger/FinalReport","source":"webgpu-os/kernel/ledger/FinalReport.js","import":"/webgpu-os/kernel/ledger/FinalReport.js","sourceHash":"e7bf16cd137f29b591ec38af42044e15f612e78ee785e7cfe0dcbad32e4a6d73","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ledger/FinalReport.js#0007:projectAIEchoPipelineTrace","exportIndex":7,"name":"projectAIEchoPipelineTrace","kind":"function","signature":"projectAIEchoPipelineTrace(value, { requestId = '', incidentId = null, outcome = '', errorCode = null, errorNumber = null, openedAt = 0, closedAt = 0, } = {})","summary":"Project the existing resumable run stream into one compact, durable, content-free diagnostic trace. This is deliberately a report projection, not a second event registry or ledger. Unknown fields are dropped rather than recursively scrubbed so prompts, provider bodies, credentials, raw tool arguments, and reasoning deltas cannot cross this boundary."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ledger/FinalReport.md","moduleTitle":"kernel/ledger/FinalReport","source":"webgpu-os/kernel/ledger/FinalReport.js","import":"/webgpu-os/kernel/ledger/FinalReport.js","sourceHash":"e7bf16cd137f29b591ec38af42044e15f612e78ee785e7cfe0dcbad32e4a6d73","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ledger/FinalReport.js#0008:AI_ECHO_ROUTE_ERROR_NUMBERS","exportIndex":8,"name":"AI_ECHO_ROUTE_ERROR_NUMBERS","kind":"constant","signature":"AI_ECHO_ROUTE_ERROR_NUMBERS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ledger/GoalTree.md","moduleTitle":"kernel/ledger/GoalTree","source":"webgpu-os/kernel/ledger/GoalTree.js","import":"/webgpu-os/kernel/ledger/GoalTree.js","sourceHash":"b383dcac5184ec7db80e28fd5ae4d13029dd8f882bac9a614ef23fcdb7841b55","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/ledger/GoalTree.js","title":"kernel/ledger/GoalTree","summary":"GoalTree.js — hierarchical goal decomposition for an AI request: the root goal (the user's prompt intent) breaks into subgoals; each node tracks its status so the Task Panel can render live progress.","exportCount":2}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ledger/GoalTree.md","moduleTitle":"kernel/ledger/GoalTree","source":"webgpu-os/kernel/ledger/GoalTree.js","import":"/webgpu-os/kernel/ledger/GoalTree.js","sourceHash":"b383dcac5184ec7db80e28fd5ae4d13029dd8f882bac9a614ef23fcdb7841b55","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ledger/GoalTree.js#0000:GoalTree","exportIndex":0,"name":"GoalTree","kind":"class","signature":"class GoalTree","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ledger/GoalTree.md","moduleTitle":"kernel/ledger/GoalTree","source":"webgpu-os/kernel/ledger/GoalTree.js","import":"/webgpu-os/kernel/ledger/GoalTree.js","sourceHash":"b383dcac5184ec7db80e28fd5ae4d13029dd8f882bac9a614ef23fcdb7841b55","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ledger/GoalTree.js#0001:GOAL_STATUS","exportIndex":1,"name":"GOAL_STATUS","kind":"re-export","signature":"GOAL_STATUS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ledger/ObservationLog.md","moduleTitle":"kernel/ledger/ObservationLog","source":"webgpu-os/kernel/ledger/ObservationLog.js","import":"/webgpu-os/kernel/ledger/ObservationLog.js","sourceHash":"032c5634c689e326a3b72be7abd4073d3f1cee2abf184784f503004b7549cb95","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/ledger/ObservationLog.js","title":"kernel/ledger/ObservationLog","summary":"ObservationLog.js — wraps engine/state/entity/ProvenanceStore.js: every observation an AI task makes carries W3C-PROV-style provenance (observed/inferred/model-predicted/user-asserted/untrusted). Tool/model/ resource content is recorded as UNTRUSTED observation by default — never authority (the prompt-injection boundary).","exportCount":2}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ledger/ObservationLog.md","moduleTitle":"kernel/ledger/ObservationLog","source":"webgpu-os/kernel/ledger/ObservationLog.js","import":"/webgpu-os/kernel/ledger/ObservationLog.js","sourceHash":"032c5634c689e326a3b72be7abd4073d3f1cee2abf184784f503004b7549cb95","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ledger/ObservationLog.js#0000:ObservationLog","exportIndex":0,"name":"ObservationLog","kind":"class","signature":"class ObservationLog","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ledger/ObservationLog.md","moduleTitle":"kernel/ledger/ObservationLog","source":"webgpu-os/kernel/ledger/ObservationLog.js","import":"/webgpu-os/kernel/ledger/ObservationLog.js","sourceHash":"032c5634c689e326a3b72be7abd4073d3f1cee2abf184784f503004b7549cb95","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ledger/ObservationLog.js#0001:CERTAINTY","exportIndex":1,"name":"CERTAINTY","kind":"re-export","signature":"CERTAINTY","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ledger/ResourceReadTrace.md","moduleTitle":"kernel/ledger/ResourceReadTrace","source":"webgpu-os/kernel/ledger/ResourceReadTrace.js","import":"/webgpu-os/kernel/ledger/ResourceReadTrace.js","sourceHash":"ceb6516be8cd7e3780e2d00697786b9a440ce40c153c2b991f1864fee2ddd620","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/ledger/ResourceReadTrace.js","title":"kernel/ledger/ResourceReadTrace","summary":"ResourceReadTrace.js — ledger trace of every `<appId>://...` resource read an AI request performed (URI, byte size, roots check outcome), so the Task Panel can show exactly WHAT the AI looked at.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ledger/ResourceReadTrace.md","moduleTitle":"kernel/ledger/ResourceReadTrace","source":"webgpu-os/kernel/ledger/ResourceReadTrace.js","import":"/webgpu-os/kernel/ledger/ResourceReadTrace.js","sourceHash":"ceb6516be8cd7e3780e2d00697786b9a440ce40c153c2b991f1864fee2ddd620","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ledger/ResourceReadTrace.js#0000:ResourceReadTrace","exportIndex":0,"name":"ResourceReadTrace","kind":"class","signature":"class ResourceReadTrace extends BoundedTrace","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ledger/SamplingTrace.md","moduleTitle":"kernel/ledger/SamplingTrace","source":"webgpu-os/kernel/ledger/SamplingTrace.js","import":"/webgpu-os/kernel/ledger/SamplingTrace.js","sourceHash":"665b3c0c9c186570d53eed8e05c255a1f2fef8c1fa8277e7c97b9bf66b4b6e2e","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/ledger/SamplingTrace.js","title":"kernel/ledger/SamplingTrace","summary":"SamplingTrace.js — ledger trace of nested LLM completions requested by tool handlers via the SamplingBroker (Phase 4): parent request, depth, model tier, token/cost accounting when available.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ledger/SamplingTrace.md","moduleTitle":"kernel/ledger/SamplingTrace","source":"webgpu-os/kernel/ledger/SamplingTrace.js","import":"/webgpu-os/kernel/ledger/SamplingTrace.js","sourceHash":"665b3c0c9c186570d53eed8e05c255a1f2fef8c1fa8277e7c97b9bf66b4b6e2e","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ledger/SamplingTrace.js#0000:SamplingTrace","exportIndex":0,"name":"SamplingTrace","kind":"class","signature":"class SamplingTrace extends BoundedTrace","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ledger/StoryletTrace.md","moduleTitle":"kernel/ledger/StoryletTrace","source":"webgpu-os/kernel/ledger/StoryletTrace.js","import":"/webgpu-os/kernel/ledger/StoryletTrace.js","sourceHash":"7a6b3bad12ce1f3989164f9057585d39605212887072a153e1ee0c1c4b0e13c3","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/ledger/StoryletTrace.js","title":"kernel/ledger/StoryletTrace","summary":"StoryletTrace.js — ledger trace of storylet fires for an AI request (Phase 6 pipeline): which storylet fired, the phase transition it caused, and its result summary.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ledger/StoryletTrace.md","moduleTitle":"kernel/ledger/StoryletTrace","source":"webgpu-os/kernel/ledger/StoryletTrace.js","import":"/webgpu-os/kernel/ledger/StoryletTrace.js","sourceHash":"7a6b3bad12ce1f3989164f9057585d39605212887072a153e1ee0c1c4b0e13c3","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ledger/StoryletTrace.js#0000:StoryletTrace","exportIndex":0,"name":"StoryletTrace","kind":"class","signature":"class StoryletTrace extends BoundedTrace","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ledger/TaskLedger.md","moduleTitle":"kernel/ledger/TaskLedger","source":"webgpu-os/kernel/ledger/TaskLedger.js","import":"/webgpu-os/kernel/ledger/TaskLedger.js","sourceHash":"f972e686974d06b712af24901183933e7ce484c9198b4457fb345ee25ac004a5","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/ledger/TaskLedger.js","title":"kernel/ledger/TaskLedger","summary":"TaskLedger.js — aggregation facade over the Phase 8 ledger parts, wired as kernel.taskLedger. One shared instance holds cross-request traces (observations, tool calls, resource reads, sampling, elicitations, storylet fires, blockers) plus per-request records (goal tree, task list, execution graph, receipts). Every recorded receipt/witness reuses engine/state/witness/Witness.js (makeWitness/makeReceipt) and every record lands in the SHARED Phase 7 event log via kernel.timeEngine.record().","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ledger/TaskLedger.md","moduleTitle":"kernel/ledger/TaskLedger","source":"webgpu-os/kernel/ledger/TaskLedger.js","import":"/webgpu-os/kernel/ledger/TaskLedger.js","sourceHash":"f972e686974d06b712af24901183933e7ce484c9198b4457fb345ee25ac004a5","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ledger/TaskLedger.js#0000:TaskLedger","exportIndex":0,"name":"TaskLedger","kind":"class","signature":"class TaskLedger","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ledger/TaskList.md","moduleTitle":"kernel/ledger/TaskList","source":"webgpu-os/kernel/ledger/TaskList.js","import":"/webgpu-os/kernel/ledger/TaskList.js","sourceHash":"03b92bc779e59a37f42ad3ce585b5bceb9d2672ea0a240cba4b9e63a146585fc","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/ledger/TaskList.js","title":"kernel/ledger/TaskList","summary":"TaskList.js — flat, ordered task list for an AI request (each task usually maps to a goal-tree leaf + a storylet/tool step). Drives the Task Panel's checklist view.","exportCount":2}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ledger/TaskList.md","moduleTitle":"kernel/ledger/TaskList","source":"webgpu-os/kernel/ledger/TaskList.js","import":"/webgpu-os/kernel/ledger/TaskList.js","sourceHash":"03b92bc779e59a37f42ad3ce585b5bceb9d2672ea0a240cba4b9e63a146585fc","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ledger/TaskList.js#0000:TaskList","exportIndex":0,"name":"TaskList","kind":"class","signature":"class TaskList","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ledger/TaskList.md","moduleTitle":"kernel/ledger/TaskList","source":"webgpu-os/kernel/ledger/TaskList.js","import":"/webgpu-os/kernel/ledger/TaskList.js","sourceHash":"03b92bc779e59a37f42ad3ce585b5bceb9d2672ea0a240cba4b9e63a146585fc","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ledger/TaskList.js#0001:TASK_STATUS","exportIndex":1,"name":"TASK_STATUS","kind":"re-export","signature":"TASK_STATUS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ledger/ToolCallTrace.md","moduleTitle":"kernel/ledger/ToolCallTrace","source":"webgpu-os/kernel/ledger/ToolCallTrace.js","import":"/webgpu-os/kernel/ledger/ToolCallTrace.js","sourceHash":"b6c9d0a3cfbeb4641008cbf153a512e2dc60c57942cb46811079f2793c339f5b","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/ledger/ToolCallTrace.js","title":"kernel/ledger/ToolCallTrace","summary":"ToolCallTrace.js — wraps engine/state/workflow/Outbox.js + Reconciler.js: every AI-initiated tool call is recorded as a transactional effect INTENT (idempotent by stable effect id — commit retries never duplicate a call), delivered via drain(), with ambiguous outcomes parked as RECONCILE and resolved by EVIDENCE (a probe of the authoritative status), never guessed.","exportCount":3}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ledger/ToolCallTrace.md","moduleTitle":"kernel/ledger/ToolCallTrace","source":"webgpu-os/kernel/ledger/ToolCallTrace.js","import":"/webgpu-os/kernel/ledger/ToolCallTrace.js","sourceHash":"b6c9d0a3cfbeb4641008cbf153a512e2dc60c57942cb46811079f2793c339f5b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ledger/ToolCallTrace.js#0000:ToolCallTrace","exportIndex":0,"name":"ToolCallTrace","kind":"class","signature":"class ToolCallTrace","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ledger/ToolCallTrace.md","moduleTitle":"kernel/ledger/ToolCallTrace","source":"webgpu-os/kernel/ledger/ToolCallTrace.js","import":"/webgpu-os/kernel/ledger/ToolCallTrace.js","sourceHash":"b6c9d0a3cfbeb4641008cbf153a512e2dc60c57942cb46811079f2793c339f5b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ledger/ToolCallTrace.js#0001:EFFECT_STATUS","exportIndex":1,"name":"EFFECT_STATUS","kind":"re-export","signature":"EFFECT_STATUS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/ledger/ToolCallTrace.md","moduleTitle":"kernel/ledger/ToolCallTrace","source":"webgpu-os/kernel/ledger/ToolCallTrace.js","import":"/webgpu-os/kernel/ledger/ToolCallTrace.js","sourceHash":"b6c9d0a3cfbeb4641008cbf153a512e2dc60c57942cb46811079f2793c339f5b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/ledger/ToolCallTrace.js#0002:RECONCILE_RESULT","exportIndex":2,"name":"RECONCILE_RESULT","kind":"re-export","signature":"RECONCILE_RESULT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/live-patch/LivePatchService.md","moduleTitle":"kernel/live-patch/LivePatchService","source":"webgpu-os/kernel/live-patch/LivePatchService.js","import":"/webgpu-os/kernel/live-patch/LivePatchService.js","sourceHash":"31a8185cab353c20f357649c1718ed67f9ce4e3d526aa12ab6ed0bbb4e821eaa","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/live-patch/LivePatchService.js","title":"kernel/live-patch/LivePatchService","summary":"LivePatchService.js — kernel-owned, declarative live UI editing. Model output never becomes executable code. A caller can inspect registered surfaces and propose a small allow-listed operation list. The service applies that list as a reversible preview, verifies the resulting DOM, and only then persists a canonical patch + receipt beneath /user/live-patches.","exportCount":10}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/live-patch/LivePatchService.md","moduleTitle":"kernel/live-patch/LivePatchService","source":"webgpu-os/kernel/live-patch/LivePatchService.js","import":"/webgpu-os/kernel/live-patch/LivePatchService.js","sourceHash":"31a8185cab353c20f357649c1718ed67f9ce4e3d526aa12ab6ed0bbb4e821eaa","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/live-patch/LivePatchService.js#0000:LivePatchService","exportIndex":0,"name":"LivePatchService","kind":"class","signature":"class LivePatchService","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/live-patch/LivePatchService.md","moduleTitle":"kernel/live-patch/LivePatchService","source":"webgpu-os/kernel/live-patch/LivePatchService.js","import":"/webgpu-os/kernel/live-patch/LivePatchService.js","sourceHash":"31a8185cab353c20f357649c1718ed67f9ce4e3d526aa12ab6ed0bbb4e821eaa","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/live-patch/LivePatchService.js#0001:validateLivePatchDraft","exportIndex":1,"name":"validateLivePatchDraft","kind":"function","signature":"validateLivePatchDraft(input = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/live-patch/LivePatchService.md","moduleTitle":"kernel/live-patch/LivePatchService","source":"webgpu-os/kernel/live-patch/LivePatchService.js","import":"/webgpu-os/kernel/live-patch/LivePatchService.js","sourceHash":"31a8185cab353c20f357649c1718ed67f9ce4e3d526aa12ab6ed0bbb4e821eaa","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/live-patch/LivePatchService.js#0002:sanitizeLivePatchMarkup","exportIndex":2,"name":"sanitizeLivePatchMarkup","kind":"function","signature":"sanitizeLivePatchMarkup(markup, { patchId = 'live_preview' } = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/live-patch/LivePatchService.md","moduleTitle":"kernel/live-patch/LivePatchService","source":"webgpu-os/kernel/live-patch/LivePatchService.js","import":"/webgpu-os/kernel/live-patch/LivePatchService.js","sourceHash":"31a8185cab353c20f357649c1718ed67f9ce4e3d526aa12ab6ed0bbb4e821eaa","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/live-patch/LivePatchService.js#0003:sanitizeLivePatchStylesheet","exportIndex":3,"name":"sanitizeLivePatchStylesheet","kind":"function","signature":"sanitizeLivePatchStylesheet(css)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/live-patch/LivePatchService.md","moduleTitle":"kernel/live-patch/LivePatchService","source":"webgpu-os/kernel/live-patch/LivePatchService.js","import":"/webgpu-os/kernel/live-patch/LivePatchService.js","sourceHash":"31a8185cab353c20f357649c1718ed67f9ce4e3d526aa12ab6ed0bbb4e821eaa","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/live-patch/LivePatchService.js#0004:LIVE_PATCH_FORMAT","exportIndex":4,"name":"LIVE_PATCH_FORMAT","kind":"constant","signature":"LIVE_PATCH_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/live-patch/LivePatchService.md","moduleTitle":"kernel/live-patch/LivePatchService","source":"webgpu-os/kernel/live-patch/LivePatchService.js","import":"/webgpu-os/kernel/live-patch/LivePatchService.js","sourceHash":"31a8185cab353c20f357649c1718ed67f9ce4e3d526aa12ab6ed0bbb4e821eaa","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/live-patch/LivePatchService.js#0005:LIVE_PATCH_RECEIPT_FORMAT","exportIndex":5,"name":"LIVE_PATCH_RECEIPT_FORMAT","kind":"constant","signature":"LIVE_PATCH_RECEIPT_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/live-patch/LivePatchService.md","moduleTitle":"kernel/live-patch/LivePatchService","source":"webgpu-os/kernel/live-patch/LivePatchService.js","import":"/webgpu-os/kernel/live-patch/LivePatchService.js","sourceHash":"31a8185cab353c20f357649c1718ed67f9ce4e3d526aa12ab6ed0bbb4e821eaa","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/live-patch/LivePatchService.js#0006:LIVE_PATCH_HEAD_FORMAT","exportIndex":6,"name":"LIVE_PATCH_HEAD_FORMAT","kind":"constant","signature":"LIVE_PATCH_HEAD_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/live-patch/LivePatchService.md","moduleTitle":"kernel/live-patch/LivePatchService","source":"webgpu-os/kernel/live-patch/LivePatchService.js","import":"/webgpu-os/kernel/live-patch/LivePatchService.js","sourceHash":"31a8185cab353c20f357649c1718ed67f9ce4e3d526aa12ab6ed0bbb4e821eaa","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/live-patch/LivePatchService.js#0007:LIVE_PATCH_CANDIDATE_FORMAT","exportIndex":7,"name":"LIVE_PATCH_CANDIDATE_FORMAT","kind":"constant","signature":"LIVE_PATCH_CANDIDATE_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/live-patch/LivePatchService.md","moduleTitle":"kernel/live-patch/LivePatchService","source":"webgpu-os/kernel/live-patch/LivePatchService.js","import":"/webgpu-os/kernel/live-patch/LivePatchService.js","sourceHash":"31a8185cab353c20f357649c1718ed67f9ce4e3d526aa12ab6ed0bbb4e821eaa","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/live-patch/LivePatchService.js#0008:LIVE_PATCH_ACTIVATION_FORMAT","exportIndex":8,"name":"LIVE_PATCH_ACTIVATION_FORMAT","kind":"constant","signature":"LIVE_PATCH_ACTIVATION_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/live-patch/LivePatchService.md","moduleTitle":"kernel/live-patch/LivePatchService","source":"webgpu-os/kernel/live-patch/LivePatchService.js","import":"/webgpu-os/kernel/live-patch/LivePatchService.js","sourceHash":"31a8185cab353c20f357649c1718ed67f9ce4e3d526aa12ab6ed0bbb4e821eaa","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/live-patch/LivePatchService.js#0009:LIVE_PATCH_ROOT","exportIndex":9,"name":"LIVE_PATCH_ROOT","kind":"constant","signature":"LIVE_PATCH_ROOT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviAutonomyService.md","moduleTitle":"kernel/navi/NaviAutonomyService","source":"webgpu-os/kernel/navi/NaviAutonomyService.js","import":"/webgpu-os/kernel/navi/NaviAutonomyService.js","sourceHash":"5272442132cf43cec4a6ac19d05531cc7a5e78eca1f055cd3b2c11ab050dbec8","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/NaviAutonomyService.js","title":"kernel/navi/NaviAutonomyService","summary":"Kernel-owned structured operational cognition for one or more Navis. Entries are Navi-authored conclusions, evidence, uncertainty, proposals, and budget accounting. They are never provider-hidden reasoning or raw model transcripts. The injected continuity cipher owns encryption; this service never receives or exposes a generic key or decryption API.","exportCount":8}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviAutonomyService.md","moduleTitle":"kernel/navi/NaviAutonomyService","source":"webgpu-os/kernel/navi/NaviAutonomyService.js","import":"/webgpu-os/kernel/navi/NaviAutonomyService.js","sourceHash":"5272442132cf43cec4a6ac19d05531cc7a5e78eca1f055cd3b2c11ab050dbec8","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviAutonomyService.js#0000:NaviAutonomyServiceError","exportIndex":0,"name":"NaviAutonomyServiceError","kind":"class","signature":"class NaviAutonomyServiceError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviAutonomyService.md","moduleTitle":"kernel/navi/NaviAutonomyService","source":"webgpu-os/kernel/navi/NaviAutonomyService.js","import":"/webgpu-os/kernel/navi/NaviAutonomyService.js","sourceHash":"5272442132cf43cec4a6ac19d05531cc7a5e78eca1f055cd3b2c11ab050dbec8","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviAutonomyService.js#0001:NaviAutonomyService","exportIndex":1,"name":"NaviAutonomyService","kind":"class","signature":"class NaviAutonomyService","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviAutonomyService.md","moduleTitle":"kernel/navi/NaviAutonomyService","source":"webgpu-os/kernel/navi/NaviAutonomyService.js","import":"/webgpu-os/kernel/navi/NaviAutonomyService.js","sourceHash":"5272442132cf43cec4a6ac19d05531cc7a5e78eca1f055cd3b2c11ab050dbec8","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviAutonomyService.js#0002:NAVI_OPERATIONAL_JOURNAL_RECORD_TYPE","exportIndex":2,"name":"NAVI_OPERATIONAL_JOURNAL_RECORD_TYPE","kind":"constant","signature":"NAVI_OPERATIONAL_JOURNAL_RECORD_TYPE","summary":"Kernel-owned structured operational cognition for one or more Navis. Entries are Navi-authored conclusions, evidence, uncertainty, proposals, and budget accounting. They are never provider-hidden reasoning or raw model transcripts. The injected continuity cipher owns encryption; this service never receives or exposes a generic key or decryption API."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviAutonomyService.md","moduleTitle":"kernel/navi/NaviAutonomyService","source":"webgpu-os/kernel/navi/NaviAutonomyService.js","import":"/webgpu-os/kernel/navi/NaviAutonomyService.js","sourceHash":"5272442132cf43cec4a6ac19d05531cc7a5e78eca1f055cd3b2c11ab050dbec8","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviAutonomyService.js#0003:NAVI_OPERATIONAL_JOURNAL_INDEX_RECORD_TYPE","exportIndex":3,"name":"NAVI_OPERATIONAL_JOURNAL_INDEX_RECORD_TYPE","kind":"constant","signature":"NAVI_OPERATIONAL_JOURNAL_INDEX_RECORD_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviAutonomyService.md","moduleTitle":"kernel/navi/NaviAutonomyService","source":"webgpu-os/kernel/navi/NaviAutonomyService.js","import":"/webgpu-os/kernel/navi/NaviAutonomyService.js","sourceHash":"5272442132cf43cec4a6ac19d05531cc7a5e78eca1f055cd3b2c11ab050dbec8","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviAutonomyService.js#0004:NAVI_OPERATIONAL_JOURNAL_FORMAT","exportIndex":4,"name":"NAVI_OPERATIONAL_JOURNAL_FORMAT","kind":"constant","signature":"NAVI_OPERATIONAL_JOURNAL_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviAutonomyService.md","moduleTitle":"kernel/navi/NaviAutonomyService","source":"webgpu-os/kernel/navi/NaviAutonomyService.js","import":"/webgpu-os/kernel/navi/NaviAutonomyService.js","sourceHash":"5272442132cf43cec4a6ac19d05531cc7a5e78eca1f055cd3b2c11ab050dbec8","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviAutonomyService.js#0005:NAVI_OPERATIONAL_JOURNAL_INDEX_FORMAT","exportIndex":5,"name":"NAVI_OPERATIONAL_JOURNAL_INDEX_FORMAT","kind":"constant","signature":"NAVI_OPERATIONAL_JOURNAL_INDEX_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviAutonomyService.md","moduleTitle":"kernel/navi/NaviAutonomyService","source":"webgpu-os/kernel/navi/NaviAutonomyService.js","import":"/webgpu-os/kernel/navi/NaviAutonomyService.js","sourceHash":"5272442132cf43cec4a6ac19d05531cc7a5e78eca1f055cd3b2c11ab050dbec8","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviAutonomyService.js#0006:NAVI_OPERATIONAL_JOURNAL_INDEX_MIGRATION_FORMAT","exportIndex":6,"name":"NAVI_OPERATIONAL_JOURNAL_INDEX_MIGRATION_FORMAT","kind":"constant","signature":"NAVI_OPERATIONAL_JOURNAL_INDEX_MIGRATION_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviAutonomyService.md","moduleTitle":"kernel/navi/NaviAutonomyService","source":"webgpu-os/kernel/navi/NaviAutonomyService.js","import":"/webgpu-os/kernel/navi/NaviAutonomyService.js","sourceHash":"5272442132cf43cec4a6ac19d05531cc7a5e78eca1f055cd3b2c11ab050dbec8","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviAutonomyService.js#0007:NAVI_OPERATIONAL_COGNITION_BOUNDARY","exportIndex":7,"name":"NAVI_OPERATIONAL_COGNITION_BOUNDARY","kind":"constant","signature":"NAVI_OPERATIONAL_COGNITION_BOUNDARY","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviBackgroundCoordinator.md","moduleTitle":"kernel/navi/NaviBackgroundCoordinator","source":"webgpu-os/kernel/navi/NaviBackgroundCoordinator.js","import":"/webgpu-os/kernel/navi/NaviBackgroundCoordinator.js","sourceHash":"44a9657cef14790fd8ad7b8482a91f75bbd1e10f27900ab61f342ce96358488b","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/NaviBackgroundCoordinator.js","title":"kernel/navi/NaviBackgroundCoordinator","summary":"Persistent, cross-tab coordinator for bounded Navi background cognition. Web Locks is the execution authority: one exclusive lock remains held across the durable reread, executor call, operational-journal append, and terminal job update. BroadcastChannel is observability and wake-up only; peer messages never grant authority or replace the durable encrypted job record.","exportCount":13}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviBackgroundCoordinator.md","moduleTitle":"kernel/navi/NaviBackgroundCoordinator","source":"webgpu-os/kernel/navi/NaviBackgroundCoordinator.js","import":"/webgpu-os/kernel/navi/NaviBackgroundCoordinator.js","sourceHash":"44a9657cef14790fd8ad7b8482a91f75bbd1e10f27900ab61f342ce96358488b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviBackgroundCoordinator.js#0000:NaviBackgroundCoordinatorError","exportIndex":0,"name":"NaviBackgroundCoordinatorError","kind":"class","signature":"class NaviBackgroundCoordinatorError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviBackgroundCoordinator.md","moduleTitle":"kernel/navi/NaviBackgroundCoordinator","source":"webgpu-os/kernel/navi/NaviBackgroundCoordinator.js","import":"/webgpu-os/kernel/navi/NaviBackgroundCoordinator.js","sourceHash":"44a9657cef14790fd8ad7b8482a91f75bbd1e10f27900ab61f342ce96358488b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviBackgroundCoordinator.js#0001:NaviBackgroundTransientExecutionError","exportIndex":1,"name":"NaviBackgroundTransientExecutionError","kind":"class","signature":"class NaviBackgroundTransientExecutionError extends NaviBackgroundCoordinatorError","summary":"Explicit retry signal accepted from the kernel-owned background executor. Arbitrary errors cannot opt into retries by attaching `retryable` or `kind` fields: the coordinator accepts only instances privately branded here, and this constructor admits only the closed outage/throttle transient set."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviBackgroundCoordinator.md","moduleTitle":"kernel/navi/NaviBackgroundCoordinator","source":"webgpu-os/kernel/navi/NaviBackgroundCoordinator.js","import":"/webgpu-os/kernel/navi/NaviBackgroundCoordinator.js","sourceHash":"44a9657cef14790fd8ad7b8482a91f75bbd1e10f27900ab61f342ce96358488b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviBackgroundCoordinator.js#0002:NaviBackgroundCoordinator","exportIndex":2,"name":"NaviBackgroundCoordinator","kind":"class","signature":"class NaviBackgroundCoordinator","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviBackgroundCoordinator.md","moduleTitle":"kernel/navi/NaviBackgroundCoordinator","source":"webgpu-os/kernel/navi/NaviBackgroundCoordinator.js","import":"/webgpu-os/kernel/navi/NaviBackgroundCoordinator.js","sourceHash":"44a9657cef14790fd8ad7b8482a91f75bbd1e10f27900ab61f342ce96358488b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviBackgroundCoordinator.js#0003:buildNaviBackgroundCognitionPrompt","exportIndex":3,"name":"buildNaviBackgroundCognitionPrompt","kind":"function","signature":"buildNaviBackgroundCognitionPrompt({ operation = '', objective = '' } = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviBackgroundCoordinator.md","moduleTitle":"kernel/navi/NaviBackgroundCoordinator","source":"webgpu-os/kernel/navi/NaviBackgroundCoordinator.js","import":"/webgpu-os/kernel/navi/NaviBackgroundCoordinator.js","sourceHash":"44a9657cef14790fd8ad7b8482a91f75bbd1e10f27900ab61f342ce96358488b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviBackgroundCoordinator.js#0004:naviBackgroundTokenEnvelope","exportIndex":4,"name":"naviBackgroundTokenEnvelope","kind":"function","signature":"naviBackgroundTokenEnvelope({ operation = '', objective = '', outputTokens = 0, routeAttempts = 1, } = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviBackgroundCoordinator.md","moduleTitle":"kernel/navi/NaviBackgroundCoordinator","source":"webgpu-os/kernel/navi/NaviBackgroundCoordinator.js","import":"/webgpu-os/kernel/navi/NaviBackgroundCoordinator.js","sourceHash":"44a9657cef14790fd8ad7b8482a91f75bbd1e10f27900ab61f342ce96358488b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviBackgroundCoordinator.js#0005:NAVI_BACKGROUND_JOB_RECORD_TYPE","exportIndex":5,"name":"NAVI_BACKGROUND_JOB_RECORD_TYPE","kind":"constant","signature":"NAVI_BACKGROUND_JOB_RECORD_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviBackgroundCoordinator.md","moduleTitle":"kernel/navi/NaviBackgroundCoordinator","source":"webgpu-os/kernel/navi/NaviBackgroundCoordinator.js","import":"/webgpu-os/kernel/navi/NaviBackgroundCoordinator.js","sourceHash":"44a9657cef14790fd8ad7b8482a91f75bbd1e10f27900ab61f342ce96358488b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviBackgroundCoordinator.js#0006:NAVI_BACKGROUND_JOB_INDEX_RECORD_TYPE","exportIndex":6,"name":"NAVI_BACKGROUND_JOB_INDEX_RECORD_TYPE","kind":"constant","signature":"NAVI_BACKGROUND_JOB_INDEX_RECORD_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviBackgroundCoordinator.md","moduleTitle":"kernel/navi/NaviBackgroundCoordinator","source":"webgpu-os/kernel/navi/NaviBackgroundCoordinator.js","import":"/webgpu-os/kernel/navi/NaviBackgroundCoordinator.js","sourceHash":"44a9657cef14790fd8ad7b8482a91f75bbd1e10f27900ab61f342ce96358488b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviBackgroundCoordinator.js#0007:NAVI_BACKGROUND_JOB_FORMAT","exportIndex":7,"name":"NAVI_BACKGROUND_JOB_FORMAT","kind":"constant","signature":"NAVI_BACKGROUND_JOB_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviBackgroundCoordinator.md","moduleTitle":"kernel/navi/NaviBackgroundCoordinator","source":"webgpu-os/kernel/navi/NaviBackgroundCoordinator.js","import":"/webgpu-os/kernel/navi/NaviBackgroundCoordinator.js","sourceHash":"44a9657cef14790fd8ad7b8482a91f75bbd1e10f27900ab61f342ce96358488b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviBackgroundCoordinator.js#0008:NAVI_BACKGROUND_JOB_INDEX_FORMAT","exportIndex":8,"name":"NAVI_BACKGROUND_JOB_INDEX_FORMAT","kind":"constant","signature":"NAVI_BACKGROUND_JOB_INDEX_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviBackgroundCoordinator.md","moduleTitle":"kernel/navi/NaviBackgroundCoordinator","source":"webgpu-os/kernel/navi/NaviBackgroundCoordinator.js","import":"/webgpu-os/kernel/navi/NaviBackgroundCoordinator.js","sourceHash":"44a9657cef14790fd8ad7b8482a91f75bbd1e10f27900ab61f342ce96358488b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviBackgroundCoordinator.js#0009:NAVI_BACKGROUND_JOB_INDEX_MIGRATION_FORMAT","exportIndex":9,"name":"NAVI_BACKGROUND_JOB_INDEX_MIGRATION_FORMAT","kind":"constant","signature":"NAVI_BACKGROUND_JOB_INDEX_MIGRATION_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviBackgroundCoordinator.md","moduleTitle":"kernel/navi/NaviBackgroundCoordinator","source":"webgpu-os/kernel/navi/NaviBackgroundCoordinator.js","import":"/webgpu-os/kernel/navi/NaviBackgroundCoordinator.js","sourceHash":"44a9657cef14790fd8ad7b8482a91f75bbd1e10f27900ab61f342ce96358488b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviBackgroundCoordinator.js#0010:NAVI_BACKGROUND_CONTEXT_FORMAT","exportIndex":10,"name":"NAVI_BACKGROUND_CONTEXT_FORMAT","kind":"constant","signature":"NAVI_BACKGROUND_CONTEXT_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviBackgroundCoordinator.md","moduleTitle":"kernel/navi/NaviBackgroundCoordinator","source":"webgpu-os/kernel/navi/NaviBackgroundCoordinator.js","import":"/webgpu-os/kernel/navi/NaviBackgroundCoordinator.js","sourceHash":"44a9657cef14790fd8ad7b8482a91f75bbd1e10f27900ab61f342ce96358488b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviBackgroundCoordinator.js#0011:NAVI_BACKGROUND_CHANNEL","exportIndex":11,"name":"NAVI_BACKGROUND_CHANNEL","kind":"constant","signature":"NAVI_BACKGROUND_CHANNEL","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviBackgroundCoordinator.md","moduleTitle":"kernel/navi/NaviBackgroundCoordinator","source":"webgpu-os/kernel/navi/NaviBackgroundCoordinator.js","import":"/webgpu-os/kernel/navi/NaviBackgroundCoordinator.js","sourceHash":"44a9657cef14790fd8ad7b8482a91f75bbd1e10f27900ab61f342ce96358488b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviBackgroundCoordinator.js#0012:NAVI_BACKGROUND_ROUTE_ATTEMPT_LIMIT","exportIndex":12,"name":"NAVI_BACKGROUND_ROUTE_ATTEMPT_LIMIT","kind":"constant","signature":"NAVI_BACKGROUND_ROUTE_ATTEMPT_LIMIT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviBackupRecoveryService.md","moduleTitle":"kernel/navi/NaviBackupRecoveryService","source":"webgpu-os/kernel/navi/NaviBackupRecoveryService.js","import":"/webgpu-os/kernel/navi/NaviBackupRecoveryService.js","sourceHash":"d79818b9ec04829ca5cfa5f3118cb74f7e2eb027eaf66875a24e1d2e469a2913","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/NaviBackupRecoveryService.js","title":"kernel/navi/NaviBackupRecoveryService","summary":"Signed, encrypted Navi backups and recovery-branch reconciliation. This service never exports a credential, a private CryptoKey, raw provider output, a live capability, or a canonical write authority. Restore decrypts and validates into a durable non-canonical branch. Only an exact reviewed diff may reach an injected canonical merge applier.","exportCount":15}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviBackupRecoveryService.md","moduleTitle":"kernel/navi/NaviBackupRecoveryService","source":"webgpu-os/kernel/navi/NaviBackupRecoveryService.js","import":"/webgpu-os/kernel/navi/NaviBackupRecoveryService.js","sourceHash":"d79818b9ec04829ca5cfa5f3118cb74f7e2eb027eaf66875a24e1d2e469a2913","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviBackupRecoveryService.js#0000:NaviBackupRecoveryError","exportIndex":0,"name":"NaviBackupRecoveryError","kind":"class","signature":"class NaviBackupRecoveryError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviBackupRecoveryService.md","moduleTitle":"kernel/navi/NaviBackupRecoveryService","source":"webgpu-os/kernel/navi/NaviBackupRecoveryService.js","import":"/webgpu-os/kernel/navi/NaviBackupRecoveryService.js","sourceHash":"d79818b9ec04829ca5cfa5f3118cb74f7e2eb027eaf66875a24e1d2e469a2913","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviBackupRecoveryService.js#0001:NaviBackupIntegrityError","exportIndex":1,"name":"NaviBackupIntegrityError","kind":"class","signature":"class NaviBackupIntegrityError extends NaviBackupRecoveryError","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviBackupRecoveryService.md","moduleTitle":"kernel/navi/NaviBackupRecoveryService","source":"webgpu-os/kernel/navi/NaviBackupRecoveryService.js","import":"/webgpu-os/kernel/navi/NaviBackupRecoveryService.js","sourceHash":"d79818b9ec04829ca5cfa5f3118cb74f7e2eb027eaf66875a24e1d2e469a2913","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviBackupRecoveryService.js#0002:NaviBackupRecoveryService","exportIndex":2,"name":"NaviBackupRecoveryService","kind":"class","signature":"class NaviBackupRecoveryService","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviBackupRecoveryService.md","moduleTitle":"kernel/navi/NaviBackupRecoveryService","source":"webgpu-os/kernel/navi/NaviBackupRecoveryService.js","import":"/webgpu-os/kernel/navi/NaviBackupRecoveryService.js","sourceHash":"d79818b9ec04829ca5cfa5f3118cb74f7e2eb027eaf66875a24e1d2e469a2913","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviBackupRecoveryService.js#0003:isDeterministicRecoveryBranchRegistrationFailure","exportIndex":3,"name":"isDeterministicRecoveryBranchRegistrationFailure","kind":"function","signature":"isDeterministicRecoveryBranchRegistrationFailure(error)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviBackupRecoveryService.md","moduleTitle":"kernel/navi/NaviBackupRecoveryService","source":"webgpu-os/kernel/navi/NaviBackupRecoveryService.js","import":"/webgpu-os/kernel/navi/NaviBackupRecoveryService.js","sourceHash":"d79818b9ec04829ca5cfa5f3118cb74f7e2eb027eaf66875a24e1d2e469a2913","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviBackupRecoveryService.js#0004:createNaviBackupStateReader","exportIndex":4,"name":"createNaviBackupStateReader","kind":"function","signature":"createNaviBackupStateReader({ continuityStore, cognitionStore } = {})","summary":"Build the production state reader over already initialized continuity and cognition Stores. The reader exports only the Phase 7 allow-list."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviBackupRecoveryService.md","moduleTitle":"kernel/navi/NaviBackupRecoveryService","source":"webgpu-os/kernel/navi/NaviBackupRecoveryService.js","import":"/webgpu-os/kernel/navi/NaviBackupRecoveryService.js","sourceHash":"d79818b9ec04829ca5cfa5f3118cb74f7e2eb027eaf66875a24e1d2e469a2913","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviBackupRecoveryService.js#0005:NAVI_ENCRYPTED_BACKUP_BUNDLE_FORMAT","exportIndex":5,"name":"NAVI_ENCRYPTED_BACKUP_BUNDLE_FORMAT","kind":"constant","signature":"NAVI_ENCRYPTED_BACKUP_BUNDLE_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviBackupRecoveryService.md","moduleTitle":"kernel/navi/NaviBackupRecoveryService","source":"webgpu-os/kernel/navi/NaviBackupRecoveryService.js","import":"/webgpu-os/kernel/navi/NaviBackupRecoveryService.js","sourceHash":"d79818b9ec04829ca5cfa5f3118cb74f7e2eb027eaf66875a24e1d2e469a2913","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviBackupRecoveryService.js#0006:NAVI_BACKUP_PAYLOAD_FORMAT","exportIndex":6,"name":"NAVI_BACKUP_PAYLOAD_FORMAT","kind":"constant","signature":"NAVI_BACKUP_PAYLOAD_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviBackupRecoveryService.md","moduleTitle":"kernel/navi/NaviBackupRecoveryService","source":"webgpu-os/kernel/navi/NaviBackupRecoveryService.js","import":"/webgpu-os/kernel/navi/NaviBackupRecoveryService.js","sourceHash":"d79818b9ec04829ca5cfa5f3118cb74f7e2eb027eaf66875a24e1d2e469a2913","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviBackupRecoveryService.js#0007:NAVI_BACKUP_FILE_FORMAT","exportIndex":7,"name":"NAVI_BACKUP_FILE_FORMAT","kind":"constant","signature":"NAVI_BACKUP_FILE_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviBackupRecoveryService.md","moduleTitle":"kernel/navi/NaviBackupRecoveryService","source":"webgpu-os/kernel/navi/NaviBackupRecoveryService.js","import":"/webgpu-os/kernel/navi/NaviBackupRecoveryService.js","sourceHash":"d79818b9ec04829ca5cfa5f3118cb74f7e2eb027eaf66875a24e1d2e469a2913","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviBackupRecoveryService.js#0008:NAVI_RECONCILIATION_DIFF_FORMAT","exportIndex":8,"name":"NAVI_RECONCILIATION_DIFF_FORMAT","kind":"constant","signature":"NAVI_RECONCILIATION_DIFF_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviBackupRecoveryService.md","moduleTitle":"kernel/navi/NaviBackupRecoveryService","source":"webgpu-os/kernel/navi/NaviBackupRecoveryService.js","import":"/webgpu-os/kernel/navi/NaviBackupRecoveryService.js","sourceHash":"d79818b9ec04829ca5cfa5f3118cb74f7e2eb027eaf66875a24e1d2e469a2913","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviBackupRecoveryService.js#0009:NAVI_RECOVERY_RESTORE_RECEIPT_FORMAT","exportIndex":9,"name":"NAVI_RECOVERY_RESTORE_RECEIPT_FORMAT","kind":"constant","signature":"NAVI_RECOVERY_RESTORE_RECEIPT_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviBackupRecoveryService.md","moduleTitle":"kernel/navi/NaviBackupRecoveryService","source":"webgpu-os/kernel/navi/NaviBackupRecoveryService.js","import":"/webgpu-os/kernel/navi/NaviBackupRecoveryService.js","sourceHash":"d79818b9ec04829ca5cfa5f3118cb74f7e2eb027eaf66875a24e1d2e469a2913","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviBackupRecoveryService.js#0010:NAVI_RECOVERY_MERGE_APPROVAL_FORMAT","exportIndex":10,"name":"NAVI_RECOVERY_MERGE_APPROVAL_FORMAT","kind":"constant","signature":"NAVI_RECOVERY_MERGE_APPROVAL_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviBackupRecoveryService.md","moduleTitle":"kernel/navi/NaviBackupRecoveryService","source":"webgpu-os/kernel/navi/NaviBackupRecoveryService.js","import":"/webgpu-os/kernel/navi/NaviBackupRecoveryService.js","sourceHash":"d79818b9ec04829ca5cfa5f3118cb74f7e2eb027eaf66875a24e1d2e469a2913","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviBackupRecoveryService.js#0011:NAVI_RECOVERY_IMPORT_APPROVAL_FORMAT","exportIndex":11,"name":"NAVI_RECOVERY_IMPORT_APPROVAL_FORMAT","kind":"constant","signature":"NAVI_RECOVERY_IMPORT_APPROVAL_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviBackupRecoveryService.md","moduleTitle":"kernel/navi/NaviBackupRecoveryService","source":"webgpu-os/kernel/navi/NaviBackupRecoveryService.js","import":"/webgpu-os/kernel/navi/NaviBackupRecoveryService.js","sourceHash":"d79818b9ec04829ca5cfa5f3118cb74f7e2eb027eaf66875a24e1d2e469a2913","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviBackupRecoveryService.js#0012:NAVI_RECOVERY_MERGE_RECEIPT_FORMAT","exportIndex":12,"name":"NAVI_RECOVERY_MERGE_RECEIPT_FORMAT","kind":"constant","signature":"NAVI_RECOVERY_MERGE_RECEIPT_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviBackupRecoveryService.md","moduleTitle":"kernel/navi/NaviBackupRecoveryService","source":"webgpu-os/kernel/navi/NaviBackupRecoveryService.js","import":"/webgpu-os/kernel/navi/NaviBackupRecoveryService.js","sourceHash":"d79818b9ec04829ca5cfa5f3118cb74f7e2eb027eaf66875a24e1d2e469a2913","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviBackupRecoveryService.js#0013:NAVI_RECOVERY_SETTLEMENT_JOURNAL_FORMAT","exportIndex":13,"name":"NAVI_RECOVERY_SETTLEMENT_JOURNAL_FORMAT","kind":"constant","signature":"NAVI_RECOVERY_SETTLEMENT_JOURNAL_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviBackupRecoveryService.md","moduleTitle":"kernel/navi/NaviBackupRecoveryService","source":"webgpu-os/kernel/navi/NaviBackupRecoveryService.js","import":"/webgpu-os/kernel/navi/NaviBackupRecoveryService.js","sourceHash":"d79818b9ec04829ca5cfa5f3118cb74f7e2eb027eaf66875a24e1d2e469a2913","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviBackupRecoveryService.js#0014:NAVI_RECOVERY_SETTLEMENT_INTENT_FORMAT","exportIndex":14,"name":"NAVI_RECOVERY_SETTLEMENT_INTENT_FORMAT","kind":"constant","signature":"NAVI_RECOVERY_SETTLEMENT_INTENT_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviCognitionService.md","moduleTitle":"kernel/navi/NaviCognitionService","source":"webgpu-os/kernel/navi/NaviCognitionService.js","import":"/webgpu-os/kernel/navi/NaviCognitionService.js","sourceHash":"e839b244d2c937406201840a6016164b1da44c7be6fd4cb210128cd64dd6fc16","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/NaviCognitionService.js","title":"kernel/navi/NaviCognitionService","summary":"NaviCognitionService — kernel authority for model-neutral task continuity. Provider conversations are transports, never task storage. This service persists signed task envelopes, per-Navi routes, self-model state, disclosure receipts, and encrypted checkpoints before exposing immutable projections.","exportCount":13}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviCognitionService.md","moduleTitle":"kernel/navi/NaviCognitionService","source":"webgpu-os/kernel/navi/NaviCognitionService.js","import":"/webgpu-os/kernel/navi/NaviCognitionService.js","sourceHash":"e839b244d2c937406201840a6016164b1da44c7be6fd4cb210128cd64dd6fc16","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviCognitionService.js#0000:NaviCognitionServiceError","exportIndex":0,"name":"NaviCognitionServiceError","kind":"class","signature":"class NaviCognitionServiceError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviCognitionService.md","moduleTitle":"kernel/navi/NaviCognitionService","source":"webgpu-os/kernel/navi/NaviCognitionService.js","import":"/webgpu-os/kernel/navi/NaviCognitionService.js","sourceHash":"e839b244d2c937406201840a6016164b1da44c7be6fd4cb210128cd64dd6fc16","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviCognitionService.js#0001:NaviCognitionService","exportIndex":1,"name":"NaviCognitionService","kind":"class","signature":"class NaviCognitionService","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviCognitionService.md","moduleTitle":"kernel/navi/NaviCognitionService","source":"webgpu-os/kernel/navi/NaviCognitionService.js","import":"/webgpu-os/kernel/navi/NaviCognitionService.js","sourceHash":"e839b244d2c937406201840a6016164b1da44c7be6fd4cb210128cd64dd6fc16","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviCognitionService.js#0002:NAVI_SELF_MODEL_FORMAT","exportIndex":2,"name":"NAVI_SELF_MODEL_FORMAT","kind":"constant","signature":"NAVI_SELF_MODEL_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviCognitionService.md","moduleTitle":"kernel/navi/NaviCognitionService","source":"webgpu-os/kernel/navi/NaviCognitionService.js","import":"/webgpu-os/kernel/navi/NaviCognitionService.js","sourceHash":"e839b244d2c937406201840a6016164b1da44c7be6fd4cb210128cd64dd6fc16","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviCognitionService.js#0003:NAVI_IDENTITY_PROFILE_FORMAT","exportIndex":3,"name":"NAVI_IDENTITY_PROFILE_FORMAT","kind":"constant","signature":"NAVI_IDENTITY_PROFILE_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviCognitionService.md","moduleTitle":"kernel/navi/NaviCognitionService","source":"webgpu-os/kernel/navi/NaviCognitionService.js","import":"/webgpu-os/kernel/navi/NaviCognitionService.js","sourceHash":"e839b244d2c937406201840a6016164b1da44c7be6fd4cb210128cd64dd6fc16","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviCognitionService.js#0004:NAVI_ROUTE_CONFIGURATION_FORMAT","exportIndex":4,"name":"NAVI_ROUTE_CONFIGURATION_FORMAT","kind":"constant","signature":"NAVI_ROUTE_CONFIGURATION_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviCognitionService.md","moduleTitle":"kernel/navi/NaviCognitionService","source":"webgpu-os/kernel/navi/NaviCognitionService.js","import":"/webgpu-os/kernel/navi/NaviCognitionService.js","sourceHash":"e839b244d2c937406201840a6016164b1da44c7be6fd4cb210128cd64dd6fc16","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviCognitionService.js#0005:NAVI_TASK_CHECKPOINT_FORMAT","exportIndex":5,"name":"NAVI_TASK_CHECKPOINT_FORMAT","kind":"constant","signature":"NAVI_TASK_CHECKPOINT_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviCognitionService.md","moduleTitle":"kernel/navi/NaviCognitionService","source":"webgpu-os/kernel/navi/NaviCognitionService.js","import":"/webgpu-os/kernel/navi/NaviCognitionService.js","sourceHash":"e839b244d2c937406201840a6016164b1da44c7be6fd4cb210128cd64dd6fc16","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviCognitionService.js#0006:NAVI_ROUTE_EVIDENCE_RECORD_FORMAT","exportIndex":6,"name":"NAVI_ROUTE_EVIDENCE_RECORD_FORMAT","kind":"constant","signature":"NAVI_ROUTE_EVIDENCE_RECORD_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviCognitionService.md","moduleTitle":"kernel/navi/NaviCognitionService","source":"webgpu-os/kernel/navi/NaviCognitionService.js","import":"/webgpu-os/kernel/navi/NaviCognitionService.js","sourceHash":"e839b244d2c937406201840a6016164b1da44c7be6fd4cb210128cd64dd6fc16","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviCognitionService.js#0007:NAVI_MODEL_DISPATCH_FORMAT","exportIndex":7,"name":"NAVI_MODEL_DISPATCH_FORMAT","kind":"constant","signature":"NAVI_MODEL_DISPATCH_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviCognitionService.md","moduleTitle":"kernel/navi/NaviCognitionService","source":"webgpu-os/kernel/navi/NaviCognitionService.js","import":"/webgpu-os/kernel/navi/NaviCognitionService.js","sourceHash":"e839b244d2c937406201840a6016164b1da44c7be6fd4cb210128cd64dd6fc16","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviCognitionService.js#0008:NAVI_DISPATCH_RECOVERY_FORMAT","exportIndex":8,"name":"NAVI_DISPATCH_RECOVERY_FORMAT","kind":"constant","signature":"NAVI_DISPATCH_RECOVERY_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviCognitionService.md","moduleTitle":"kernel/navi/NaviCognitionService","source":"webgpu-os/kernel/navi/NaviCognitionService.js","import":"/webgpu-os/kernel/navi/NaviCognitionService.js","sourceHash":"e839b244d2c937406201840a6016164b1da44c7be6fd4cb210128cd64dd6fc16","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviCognitionService.js#0009:NAVI_DISPATCH_RECOVERY_STATE_FORMAT","exportIndex":9,"name":"NAVI_DISPATCH_RECOVERY_STATE_FORMAT","kind":"constant","signature":"NAVI_DISPATCH_RECOVERY_STATE_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviCognitionService.md","moduleTitle":"kernel/navi/NaviCognitionService","source":"webgpu-os/kernel/navi/NaviCognitionService.js","import":"/webgpu-os/kernel/navi/NaviCognitionService.js","sourceHash":"e839b244d2c937406201840a6016164b1da44c7be6fd4cb210128cd64dd6fc16","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviCognitionService.js#0010:NAVI_ROUTE_AUTHORIZATION_FORMAT","exportIndex":10,"name":"NAVI_ROUTE_AUTHORIZATION_FORMAT","kind":"constant","signature":"NAVI_ROUTE_AUTHORIZATION_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviCognitionService.md","moduleTitle":"kernel/navi/NaviCognitionService","source":"webgpu-os/kernel/navi/NaviCognitionService.js","import":"/webgpu-os/kernel/navi/NaviCognitionService.js","sourceHash":"e839b244d2c937406201840a6016164b1da44c7be6fd4cb210128cd64dd6fc16","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviCognitionService.js#0011:NAVI_CONTEXT_SOURCE_BINDINGS_FORMAT","exportIndex":11,"name":"NAVI_CONTEXT_SOURCE_BINDINGS_FORMAT","kind":"constant","signature":"NAVI_CONTEXT_SOURCE_BINDINGS_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviCognitionService.md","moduleTitle":"kernel/navi/NaviCognitionService","source":"webgpu-os/kernel/navi/NaviCognitionService.js","import":"/webgpu-os/kernel/navi/NaviCognitionService.js","sourceHash":"e839b244d2c937406201840a6016164b1da44c7be6fd4cb210128cd64dd6fc16","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviCognitionService.js#0012:NAVI_GUIDANCE_OBSERVATION_FORMAT","exportIndex":12,"name":"NAVI_GUIDANCE_OBSERVATION_FORMAT","kind":"constant","signature":"NAVI_GUIDANCE_OBSERVATION_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviCognitionStore.md","moduleTitle":"kernel/navi/NaviCognitionStore","source":"webgpu-os/kernel/navi/NaviCognitionStore.js","import":"/webgpu-os/kernel/navi/NaviCognitionStore.js","sourceHash":"a5631c1fe2c9db2faf63094263086e353214a8188a8e30470bcb709f962d3478","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/NaviCognitionStore.js","title":"kernel/navi/NaviCognitionStore","summary":"Durable ciphertext-only storage for the Navi Cognition Fabric. The Store deliberately knows nothing about task, context, or self-model plaintext. A kernel-only continuity cipher creates authenticated record envelopes before they reach this boundary. Invalid data is quarantined instead of becoming an empty task, route configuration, or self-model.","exportCount":11}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviCognitionStore.md","moduleTitle":"kernel/navi/NaviCognitionStore","source":"webgpu-os/kernel/navi/NaviCognitionStore.js","import":"/webgpu-os/kernel/navi/NaviCognitionStore.js","sourceHash":"a5631c1fe2c9db2faf63094263086e353214a8188a8e30470bcb709f962d3478","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviCognitionStore.js#0000:NaviCognitionStoreError","exportIndex":0,"name":"NaviCognitionStoreError","kind":"class","signature":"class NaviCognitionStoreError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviCognitionStore.md","moduleTitle":"kernel/navi/NaviCognitionStore","source":"webgpu-os/kernel/navi/NaviCognitionStore.js","import":"/webgpu-os/kernel/navi/NaviCognitionStore.js","sourceHash":"a5631c1fe2c9db2faf63094263086e353214a8188a8e30470bcb709f962d3478","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviCognitionStore.js#0001:NaviCognitionStoreConflictError","exportIndex":1,"name":"NaviCognitionStoreConflictError","kind":"class","signature":"class NaviCognitionStoreConflictError extends NaviCognitionStoreError","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviCognitionStore.md","moduleTitle":"kernel/navi/NaviCognitionStore","source":"webgpu-os/kernel/navi/NaviCognitionStore.js","import":"/webgpu-os/kernel/navi/NaviCognitionStore.js","sourceHash":"a5631c1fe2c9db2faf63094263086e353214a8188a8e30470bcb709f962d3478","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviCognitionStore.js#0002:NaviCognitionStoreQuarantineError","exportIndex":2,"name":"NaviCognitionStoreQuarantineError","kind":"class","signature":"class NaviCognitionStoreQuarantineError extends NaviCognitionStoreError","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviCognitionStore.md","moduleTitle":"kernel/navi/NaviCognitionStore","source":"webgpu-os/kernel/navi/NaviCognitionStore.js","import":"/webgpu-os/kernel/navi/NaviCognitionStore.js","sourceHash":"a5631c1fe2c9db2faf63094263086e353214a8188a8e30470bcb709f962d3478","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviCognitionStore.js#0003:IndexedDbCognitionBackend","exportIndex":3,"name":"IndexedDbCognitionBackend","kind":"class","signature":"class IndexedDbCognitionBackend","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviCognitionStore.md","moduleTitle":"kernel/navi/NaviCognitionStore","source":"webgpu-os/kernel/navi/NaviCognitionStore.js","import":"/webgpu-os/kernel/navi/NaviCognitionStore.js","sourceHash":"a5631c1fe2c9db2faf63094263086e353214a8188a8e30470bcb709f962d3478","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviCognitionStore.js#0004:NaviCognitionStore","exportIndex":4,"name":"NaviCognitionStore","kind":"class","signature":"class NaviCognitionStore","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviCognitionStore.md","moduleTitle":"kernel/navi/NaviCognitionStore","source":"webgpu-os/kernel/navi/NaviCognitionStore.js","import":"/webgpu-os/kernel/navi/NaviCognitionStore.js","sourceHash":"a5631c1fe2c9db2faf63094263086e353214a8188a8e30470bcb709f962d3478","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviCognitionStore.js#0005:validateNaviCognitionRecord","exportIndex":5,"name":"validateNaviCognitionRecord","kind":"function","signature":"async validateNaviCognitionRecord(value, expected = {})","summary":"Verify one portable encrypted cognition row without opening its Store. Recovery uses this exact validator before an authenticated backup row may enter a reconciliation branch. The function validates the same binding, envelope hash, and record integrity hash as the live Store read path."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviCognitionStore.md","moduleTitle":"kernel/navi/NaviCognitionStore","source":"webgpu-os/kernel/navi/NaviCognitionStore.js","import":"/webgpu-os/kernel/navi/NaviCognitionStore.js","sourceHash":"a5631c1fe2c9db2faf63094263086e353214a8188a8e30470bcb709f962d3478","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviCognitionStore.js#0006:NAVI_COGNITION_DATABASE_NAME","exportIndex":6,"name":"NAVI_COGNITION_DATABASE_NAME","kind":"constant","signature":"NAVI_COGNITION_DATABASE_NAME","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviCognitionStore.md","moduleTitle":"kernel/navi/NaviCognitionStore","source":"webgpu-os/kernel/navi/NaviCognitionStore.js","import":"/webgpu-os/kernel/navi/NaviCognitionStore.js","sourceHash":"a5631c1fe2c9db2faf63094263086e353214a8188a8e30470bcb709f962d3478","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviCognitionStore.js#0007:NAVI_COGNITION_DATABASE_VERSION","exportIndex":7,"name":"NAVI_COGNITION_DATABASE_VERSION","kind":"constant","signature":"NAVI_COGNITION_DATABASE_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviCognitionStore.md","moduleTitle":"kernel/navi/NaviCognitionStore","source":"webgpu-os/kernel/navi/NaviCognitionStore.js","import":"/webgpu-os/kernel/navi/NaviCognitionStore.js","sourceHash":"a5631c1fe2c9db2faf63094263086e353214a8188a8e30470bcb709f962d3478","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviCognitionStore.js#0008:NAVI_COGNITION_RECORDS_STORE","exportIndex":8,"name":"NAVI_COGNITION_RECORDS_STORE","kind":"constant","signature":"NAVI_COGNITION_RECORDS_STORE","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviCognitionStore.md","moduleTitle":"kernel/navi/NaviCognitionStore","source":"webgpu-os/kernel/navi/NaviCognitionStore.js","import":"/webgpu-os/kernel/navi/NaviCognitionStore.js","sourceHash":"a5631c1fe2c9db2faf63094263086e353214a8188a8e30470bcb709f962d3478","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviCognitionStore.js#0009:NAVI_COGNITION_RECORD_FORMAT","exportIndex":9,"name":"NAVI_COGNITION_RECORD_FORMAT","kind":"constant","signature":"NAVI_COGNITION_RECORD_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviCognitionStore.md","moduleTitle":"kernel/navi/NaviCognitionStore","source":"webgpu-os/kernel/navi/NaviCognitionStore.js","import":"/webgpu-os/kernel/navi/NaviCognitionStore.js","sourceHash":"a5631c1fe2c9db2faf63094263086e353214a8188a8e30470bcb709f962d3478","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviCognitionStore.js#0010:NAVI_COGNITION_QUARANTINE_FORMAT","exportIndex":10,"name":"NAVI_COGNITION_QUARANTINE_FORMAT","kind":"constant","signature":"NAVI_COGNITION_QUARANTINE_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviContextCompiler.md","moduleTitle":"kernel/navi/NaviContextCompiler","source":"webgpu-os/kernel/navi/NaviContextCompiler.js","import":"/webgpu-os/kernel/navi/NaviContextCompiler.js","sourceHash":"7e37a5be3fb431b6013a091ac73c0d61e50207ef7d2f5e441545d14a25fc20c9","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/NaviContextCompiler.js","title":"kernel/navi/NaviContextCompiler","summary":"NaviContextCompiler.js — deterministic, policy-filtered Navi model context. This module is deliberately provider-agnostic. It accepts a previously verified active Covenant, filters every classified context item before any provider call can be made, and emits a content-free disclosure receipt. Provider sessions and model output never become canonical state here.","exportCount":12}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviContextCompiler.md","moduleTitle":"kernel/navi/NaviContextCompiler","source":"webgpu-os/kernel/navi/NaviContextCompiler.js","import":"/webgpu-os/kernel/navi/NaviContextCompiler.js","sourceHash":"7e37a5be3fb431b6013a091ac73c0d61e50207ef7d2f5e441545d14a25fc20c9","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviContextCompiler.js#0000:NaviContextCompilerError","exportIndex":0,"name":"NaviContextCompilerError","kind":"class","signature":"class NaviContextCompilerError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviContextCompiler.md","moduleTitle":"kernel/navi/NaviContextCompiler","source":"webgpu-os/kernel/navi/NaviContextCompiler.js","import":"/webgpu-os/kernel/navi/NaviContextCompiler.js","sourceHash":"7e37a5be3fb431b6013a091ac73c0d61e50207ef7d2f5e441545d14a25fc20c9","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviContextCompiler.js#0001:NaviContextCompiler","exportIndex":1,"name":"NaviContextCompiler","kind":"class","signature":"class NaviContextCompiler","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviContextCompiler.md","moduleTitle":"kernel/navi/NaviContextCompiler","source":"webgpu-os/kernel/navi/NaviContextCompiler.js","import":"/webgpu-os/kernel/navi/NaviContextCompiler.js","sourceHash":"7e37a5be3fb431b6013a091ac73c0d61e50207ef7d2f5e441545d14a25fc20c9","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviContextCompiler.js#0002:diffNaviContextManifests","exportIndex":2,"name":"diffNaviContextManifests","kind":"function","signature":"async diffNaviContextManifests(previous, current)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviContextCompiler.md","moduleTitle":"kernel/navi/NaviContextCompiler","source":"webgpu-os/kernel/navi/NaviContextCompiler.js","import":"/webgpu-os/kernel/navi/NaviContextCompiler.js","sourceHash":"7e37a5be3fb431b6013a091ac73c0d61e50207ef7d2f5e441545d14a25fc20c9","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviContextCompiler.js#0003:compileNaviContext","exportIndex":3,"name":"compileNaviContext","kind":"function","signature":"compileNaviContext(input, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviContextCompiler.md","moduleTitle":"kernel/navi/NaviContextCompiler","source":"webgpu-os/kernel/navi/NaviContextCompiler.js","import":"/webgpu-os/kernel/navi/NaviContextCompiler.js","sourceHash":"7e37a5be3fb431b6013a091ac73c0d61e50207ef7d2f5e441545d14a25fc20c9","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviContextCompiler.js#0004:normalizeNaviContextItems","exportIndex":4,"name":"normalizeNaviContextItems","kind":"function","signature":"normalizeNaviContextItems(items)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviContextCompiler.md","moduleTitle":"kernel/navi/NaviContextCompiler","source":"webgpu-os/kernel/navi/NaviContextCompiler.js","import":"/webgpu-os/kernel/navi/NaviContextCompiler.js","sourceHash":"7e37a5be3fb431b6013a091ac73c0d61e50207ef7d2f5e441545d14a25fc20c9","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviContextCompiler.js#0005:estimateNaviContextTokens","exportIndex":5,"name":"estimateNaviContextTokens","kind":"function","signature":"estimateNaviContextTokens(content)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviContextCompiler.md","moduleTitle":"kernel/navi/NaviContextCompiler","source":"webgpu-os/kernel/navi/NaviContextCompiler.js","import":"/webgpu-os/kernel/navi/NaviContextCompiler.js","sourceHash":"7e37a5be3fb431b6013a091ac73c0d61e50207ef7d2f5e441545d14a25fc20c9","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviContextCompiler.js#0006:NAVI_CONTEXT_COMPILER_VERSION","exportIndex":6,"name":"NAVI_CONTEXT_COMPILER_VERSION","kind":"constant","signature":"NAVI_CONTEXT_COMPILER_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviContextCompiler.md","moduleTitle":"kernel/navi/NaviContextCompiler","source":"webgpu-os/kernel/navi/NaviContextCompiler.js","import":"/webgpu-os/kernel/navi/NaviContextCompiler.js","sourceHash":"7e37a5be3fb431b6013a091ac73c0d61e50207ef7d2f5e441545d14a25fc20c9","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviContextCompiler.js#0007:NAVI_CONTEXT_DISCLOSURE_RECEIPT_FORMAT","exportIndex":7,"name":"NAVI_CONTEXT_DISCLOSURE_RECEIPT_FORMAT","kind":"constant","signature":"NAVI_CONTEXT_DISCLOSURE_RECEIPT_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviContextCompiler.md","moduleTitle":"kernel/navi/NaviContextCompiler","source":"webgpu-os/kernel/navi/NaviContextCompiler.js","import":"/webgpu-os/kernel/navi/NaviContextCompiler.js","sourceHash":"7e37a5be3fb431b6013a091ac73c0d61e50207ef7d2f5e441545d14a25fc20c9","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviContextCompiler.js#0008:NAVI_CONTEXT_DIFF_FORMAT","exportIndex":8,"name":"NAVI_CONTEXT_DIFF_FORMAT","kind":"constant","signature":"NAVI_CONTEXT_DIFF_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviContextCompiler.md","moduleTitle":"kernel/navi/NaviContextCompiler","source":"webgpu-os/kernel/navi/NaviContextCompiler.js","import":"/webgpu-os/kernel/navi/NaviContextCompiler.js","sourceHash":"7e37a5be3fb431b6013a091ac73c0d61e50207ef7d2f5e441545d14a25fc20c9","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviContextCompiler.js#0009:NAVI_CONTEXT_CLASSIFICATION_QUERY_FORMAT","exportIndex":9,"name":"NAVI_CONTEXT_CLASSIFICATION_QUERY_FORMAT","kind":"constant","signature":"NAVI_CONTEXT_CLASSIFICATION_QUERY_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviContextCompiler.md","moduleTitle":"kernel/navi/NaviContextCompiler","source":"webgpu-os/kernel/navi/NaviContextCompiler.js","import":"/webgpu-os/kernel/navi/NaviContextCompiler.js","sourceHash":"7e37a5be3fb431b6013a091ac73c0d61e50207ef7d2f5e441545d14a25fc20c9","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviContextCompiler.js#0010:NAVI_CONTEXT_CLASSIFICATION_RESOLUTION_FORMAT","exportIndex":10,"name":"NAVI_CONTEXT_CLASSIFICATION_RESOLUTION_FORMAT","kind":"constant","signature":"NAVI_CONTEXT_CLASSIFICATION_RESOLUTION_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviContextCompiler.md","moduleTitle":"kernel/navi/NaviContextCompiler","source":"webgpu-os/kernel/navi/NaviContextCompiler.js","import":"/webgpu-os/kernel/navi/NaviContextCompiler.js","sourceHash":"7e37a5be3fb431b6013a091ac73c0d61e50207ef7d2f5e441545d14a25fc20c9","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviContextCompiler.js#0011:NAVI_CONTEXT_CONTENT_LIMITS","exportIndex":11,"name":"NAVI_CONTEXT_CONTENT_LIMITS","kind":"constant","signature":"NAVI_CONTEXT_CONTENT_LIMITS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviContinuityService.md","moduleTitle":"kernel/navi/NaviContinuityService","source":"webgpu-os/kernel/navi/NaviContinuityService.js","import":"/webgpu-os/kernel/navi/NaviContinuityService.js","sourceHash":"3b7c42519da0a5f8789873d365282a1fbcd5e31fe3c297bc77382dd34c5333bd","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/NaviContinuityService.js","title":"kernel/navi/NaviContinuityService","summary":"NaviContinuityService.js — kernel authority for model-independent Navi identity. AI Echo and other Manifestations receive immutable public projections only. Private keys, generic signing/decryption, raw Store records, recovery bundles, and non-extractable CryptoKey handles never cross this boundary.","exportCount":11}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviContinuityService.md","moduleTitle":"kernel/navi/NaviContinuityService","source":"webgpu-os/kernel/navi/NaviContinuityService.js","import":"/webgpu-os/kernel/navi/NaviContinuityService.js","sourceHash":"3b7c42519da0a5f8789873d365282a1fbcd5e31fe3c297bc77382dd34c5333bd","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviContinuityService.js#0000:NaviContinuityServiceError","exportIndex":0,"name":"NaviContinuityServiceError","kind":"class","signature":"class NaviContinuityServiceError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviContinuityService.md","moduleTitle":"kernel/navi/NaviContinuityService","source":"webgpu-os/kernel/navi/NaviContinuityService.js","import":"/webgpu-os/kernel/navi/NaviContinuityService.js","sourceHash":"3b7c42519da0a5f8789873d365282a1fbcd5e31fe3c297bc77382dd34c5333bd","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviContinuityService.js#0001:NaviContinuityServiceDisabledError","exportIndex":1,"name":"NaviContinuityServiceDisabledError","kind":"class","signature":"class NaviContinuityServiceDisabledError extends NaviContinuityServiceError","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviContinuityService.md","moduleTitle":"kernel/navi/NaviContinuityService","source":"webgpu-os/kernel/navi/NaviContinuityService.js","import":"/webgpu-os/kernel/navi/NaviContinuityService.js","sourceHash":"3b7c42519da0a5f8789873d365282a1fbcd5e31fe3c297bc77382dd34c5333bd","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviContinuityService.js#0002:NaviContinuityServiceIntegrityError","exportIndex":2,"name":"NaviContinuityServiceIntegrityError","kind":"class","signature":"class NaviContinuityServiceIntegrityError extends NaviContinuityServiceError","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviContinuityService.md","moduleTitle":"kernel/navi/NaviContinuityService","source":"webgpu-os/kernel/navi/NaviContinuityService.js","import":"/webgpu-os/kernel/navi/NaviContinuityService.js","sourceHash":"3b7c42519da0a5f8789873d365282a1fbcd5e31fe3c297bc77382dd34c5333bd","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviContinuityService.js#0003:NaviContinuityService","exportIndex":3,"name":"NaviContinuityService","kind":"class","signature":"class NaviContinuityService","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviContinuityService.md","moduleTitle":"kernel/navi/NaviContinuityService","source":"webgpu-os/kernel/navi/NaviContinuityService.js","import":"/webgpu-os/kernel/navi/NaviContinuityService.js","sourceHash":"3b7c42519da0a5f8789873d365282a1fbcd5e31fe3c297bc77382dd34c5333bd","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviContinuityService.js#0004:validateNaviContinuityRecord","exportIndex":4,"name":"validateNaviContinuityRecord","kind":"function","signature":"validateNaviContinuityRecord(value, expected = {})","summary":"Store-level strict validator. Cryptographic verification remains the service's responsibility after opaque KeyVault restoration."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviContinuityService.md","moduleTitle":"kernel/navi/NaviContinuityService","source":"webgpu-os/kernel/navi/NaviContinuityService.js","import":"/webgpu-os/kernel/navi/NaviContinuityService.js","sourceHash":"3b7c42519da0a5f8789873d365282a1fbcd5e31fe3c297bc77382dd34c5333bd","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviContinuityService.js#0005:createNaviContinuityService","exportIndex":5,"name":"createNaviContinuityService","kind":"function","signature":"createNaviContinuityService(options)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviContinuityService.md","moduleTitle":"kernel/navi/NaviContinuityService","source":"webgpu-os/kernel/navi/NaviContinuityService.js","import":"/webgpu-os/kernel/navi/NaviContinuityService.js","sourceHash":"3b7c42519da0a5f8789873d365282a1fbcd5e31fe3c297bc77382dd34c5333bd","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviContinuityService.js#0006:NAVI_CONTINUITY_HEAD_FORMAT","exportIndex":6,"name":"NAVI_CONTINUITY_HEAD_FORMAT","kind":"constant","signature":"NAVI_CONTINUITY_HEAD_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviContinuityService.md","moduleTitle":"kernel/navi/NaviContinuityService","source":"webgpu-os/kernel/navi/NaviContinuityService.js","import":"/webgpu-os/kernel/navi/NaviContinuityService.js","sourceHash":"3b7c42519da0a5f8789873d365282a1fbcd5e31fe3c297bc77382dd34c5333bd","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviContinuityService.js#0007:NAVI_LINEAGE_RECORD_FORMAT","exportIndex":7,"name":"NAVI_LINEAGE_RECORD_FORMAT","kind":"constant","signature":"NAVI_LINEAGE_RECORD_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviContinuityService.md","moduleTitle":"kernel/navi/NaviContinuityService","source":"webgpu-os/kernel/navi/NaviContinuityService.js","import":"/webgpu-os/kernel/navi/NaviContinuityService.js","sourceHash":"3b7c42519da0a5f8789873d365282a1fbcd5e31fe3c297bc77382dd34c5333bd","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviContinuityService.js#0008:NAVI_RECOVERY_RECORD_FORMAT","exportIndex":8,"name":"NAVI_RECOVERY_RECORD_FORMAT","kind":"constant","signature":"NAVI_RECOVERY_RECORD_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviContinuityService.md","moduleTitle":"kernel/navi/NaviContinuityService","source":"webgpu-os/kernel/navi/NaviContinuityService.js","import":"/webgpu-os/kernel/navi/NaviContinuityService.js","sourceHash":"3b7c42519da0a5f8789873d365282a1fbcd5e31fe3c297bc77382dd34c5333bd","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviContinuityService.js#0009:NAVI_RECOVERY_ATTEMPT_FORMAT","exportIndex":9,"name":"NAVI_RECOVERY_ATTEMPT_FORMAT","kind":"constant","signature":"NAVI_RECOVERY_ATTEMPT_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviContinuityService.md","moduleTitle":"kernel/navi/NaviContinuityService","source":"webgpu-os/kernel/navi/NaviContinuityService.js","import":"/webgpu-os/kernel/navi/NaviContinuityService.js","sourceHash":"3b7c42519da0a5f8789873d365282a1fbcd5e31fe3c297bc77382dd34c5333bd","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviContinuityService.js#0010:NAVI_BACKUP_RECOVERY_KIT_FORMAT","exportIndex":10,"name":"NAVI_BACKUP_RECOVERY_KIT_FORMAT","kind":"constant","signature":"NAVI_BACKUP_RECOVERY_KIT_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviContinuityStore.md","moduleTitle":"kernel/navi/NaviContinuityStore","source":"webgpu-os/kernel/navi/NaviContinuityStore.js","import":"/webgpu-os/kernel/navi/NaviContinuityStore.js","sourceHash":"39f6b74f9d90694d3afad185f9b7decf1b118ff688bd8d4345fa580470587c6b","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/NaviContinuityStore.js","title":"kernel/navi/NaviContinuityStore","summary":"","exportCount":18}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviContinuityStore.md","moduleTitle":"kernel/navi/NaviContinuityStore","source":"webgpu-os/kernel/navi/NaviContinuityStore.js","import":"/webgpu-os/kernel/navi/NaviContinuityStore.js","sourceHash":"39f6b74f9d90694d3afad185f9b7decf1b118ff688bd8d4345fa580470587c6b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviContinuityStore.js#0000:NaviContinuityError","exportIndex":0,"name":"NaviContinuityError","kind":"class","signature":"class NaviContinuityError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviContinuityStore.md","moduleTitle":"kernel/navi/NaviContinuityStore","source":"webgpu-os/kernel/navi/NaviContinuityStore.js","import":"/webgpu-os/kernel/navi/NaviContinuityStore.js","sourceHash":"39f6b74f9d90694d3afad185f9b7decf1b118ff688bd8d4345fa580470587c6b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviContinuityStore.js#0001:NaviContinuityDisabledError","exportIndex":1,"name":"NaviContinuityDisabledError","kind":"class","signature":"class NaviContinuityDisabledError extends NaviContinuityError","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviContinuityStore.md","moduleTitle":"kernel/navi/NaviContinuityStore","source":"webgpu-os/kernel/navi/NaviContinuityStore.js","import":"/webgpu-os/kernel/navi/NaviContinuityStore.js","sourceHash":"39f6b74f9d90694d3afad185f9b7decf1b118ff688bd8d4345fa580470587c6b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviContinuityStore.js#0002:NaviContinuityUnavailableError","exportIndex":2,"name":"NaviContinuityUnavailableError","kind":"class","signature":"class NaviContinuityUnavailableError extends NaviContinuityError","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviContinuityStore.md","moduleTitle":"kernel/navi/NaviContinuityStore","source":"webgpu-os/kernel/navi/NaviContinuityStore.js","import":"/webgpu-os/kernel/navi/NaviContinuityStore.js","sourceHash":"39f6b74f9d90694d3afad185f9b7decf1b118ff688bd8d4345fa580470587c6b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviContinuityStore.js#0003:NaviContinuityStorageError","exportIndex":3,"name":"NaviContinuityStorageError","kind":"class","signature":"class NaviContinuityStorageError extends NaviContinuityError","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviContinuityStore.md","moduleTitle":"kernel/navi/NaviContinuityStore","source":"webgpu-os/kernel/navi/NaviContinuityStore.js","import":"/webgpu-os/kernel/navi/NaviContinuityStore.js","sourceHash":"39f6b74f9d90694d3afad185f9b7decf1b118ff688bd8d4345fa580470587c6b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviContinuityStore.js#0004:NaviContinuityValidationError","exportIndex":4,"name":"NaviContinuityValidationError","kind":"class","signature":"class NaviContinuityValidationError extends NaviContinuityError","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviContinuityStore.md","moduleTitle":"kernel/navi/NaviContinuityStore","source":"webgpu-os/kernel/navi/NaviContinuityStore.js","import":"/webgpu-os/kernel/navi/NaviContinuityStore.js","sourceHash":"39f6b74f9d90694d3afad185f9b7decf1b118ff688bd8d4345fa580470587c6b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviContinuityStore.js#0005:NaviContinuityConflictError","exportIndex":5,"name":"NaviContinuityConflictError","kind":"class","signature":"class NaviContinuityConflictError extends NaviContinuityError","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviContinuityStore.md","moduleTitle":"kernel/navi/NaviContinuityStore","source":"webgpu-os/kernel/navi/NaviContinuityStore.js","import":"/webgpu-os/kernel/navi/NaviContinuityStore.js","sourceHash":"39f6b74f9d90694d3afad185f9b7decf1b118ff688bd8d4345fa580470587c6b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviContinuityStore.js#0006:NaviContinuityRevisionExhaustedError","exportIndex":6,"name":"NaviContinuityRevisionExhaustedError","kind":"class","signature":"class NaviContinuityRevisionExhaustedError extends NaviContinuityError","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviContinuityStore.md","moduleTitle":"kernel/navi/NaviContinuityStore","source":"webgpu-os/kernel/navi/NaviContinuityStore.js","import":"/webgpu-os/kernel/navi/NaviContinuityStore.js","sourceHash":"39f6b74f9d90694d3afad185f9b7decf1b118ff688bd8d4345fa580470587c6b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviContinuityStore.js#0007:NaviContinuityQuarantineError","exportIndex":7,"name":"NaviContinuityQuarantineError","kind":"class","signature":"class NaviContinuityQuarantineError extends NaviContinuityError","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviContinuityStore.md","moduleTitle":"kernel/navi/NaviContinuityStore","source":"webgpu-os/kernel/navi/NaviContinuityStore.js","import":"/webgpu-os/kernel/navi/NaviContinuityStore.js","sourceHash":"39f6b74f9d90694d3afad185f9b7decf1b118ff688bd8d4345fa580470587c6b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviContinuityStore.js#0008:NaviContinuityStore","exportIndex":8,"name":"NaviContinuityStore","kind":"class","signature":"class NaviContinuityStore","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviContinuityStore.md","moduleTitle":"kernel/navi/NaviContinuityStore","source":"webgpu-os/kernel/navi/NaviContinuityStore.js","import":"/webgpu-os/kernel/navi/NaviContinuityStore.js","sourceHash":"39f6b74f9d90694d3afad185f9b7decf1b118ff688bd8d4345fa580470587c6b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviContinuityStore.js#0009:createNaviContinuityStore","exportIndex":9,"name":"createNaviContinuityStore","kind":"function","signature":"createNaviContinuityStore(options)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviContinuityStore.md","moduleTitle":"kernel/navi/NaviContinuityStore","source":"webgpu-os/kernel/navi/NaviContinuityStore.js","import":"/webgpu-os/kernel/navi/NaviContinuityStore.js","sourceHash":"39f6b74f9d90694d3afad185f9b7decf1b118ff688bd8d4345fa580470587c6b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviContinuityStore.js#0010:NAVI_CONTINUITY_DATABASE_NAME","exportIndex":10,"name":"NAVI_CONTINUITY_DATABASE_NAME","kind":"constant","signature":"NAVI_CONTINUITY_DATABASE_NAME","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviContinuityStore.md","moduleTitle":"kernel/navi/NaviContinuityStore","source":"webgpu-os/kernel/navi/NaviContinuityStore.js","import":"/webgpu-os/kernel/navi/NaviContinuityStore.js","sourceHash":"39f6b74f9d90694d3afad185f9b7decf1b118ff688bd8d4345fa580470587c6b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviContinuityStore.js#0011:NAVI_CONTINUITY_DATABASE_VERSION","exportIndex":11,"name":"NAVI_CONTINUITY_DATABASE_VERSION","kind":"constant","signature":"NAVI_CONTINUITY_DATABASE_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviContinuityStore.md","moduleTitle":"kernel/navi/NaviContinuityStore","source":"webgpu-os/kernel/navi/NaviContinuityStore.js","import":"/webgpu-os/kernel/navi/NaviContinuityStore.js","sourceHash":"39f6b74f9d90694d3afad185f9b7decf1b118ff688bd8d4345fa580470587c6b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviContinuityStore.js#0012:NAVI_CONTINUITY_RECORDS_STORE","exportIndex":12,"name":"NAVI_CONTINUITY_RECORDS_STORE","kind":"constant","signature":"NAVI_CONTINUITY_RECORDS_STORE","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviContinuityStore.md","moduleTitle":"kernel/navi/NaviContinuityStore","source":"webgpu-os/kernel/navi/NaviContinuityStore.js","import":"/webgpu-os/kernel/navi/NaviContinuityStore.js","sourceHash":"39f6b74f9d90694d3afad185f9b7decf1b118ff688bd8d4345fa580470587c6b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviContinuityStore.js#0013:NAVI_CONTINUITY_KEY_MATERIAL_STORE","exportIndex":13,"name":"NAVI_CONTINUITY_KEY_MATERIAL_STORE","kind":"constant","signature":"NAVI_CONTINUITY_KEY_MATERIAL_STORE","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviContinuityStore.md","moduleTitle":"kernel/navi/NaviContinuityStore","source":"webgpu-os/kernel/navi/NaviContinuityStore.js","import":"/webgpu-os/kernel/navi/NaviContinuityStore.js","sourceHash":"39f6b74f9d90694d3afad185f9b7decf1b118ff688bd8d4345fa580470587c6b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviContinuityStore.js#0014:NAVI_CONTINUITY_RECORD_FORMAT","exportIndex":14,"name":"NAVI_CONTINUITY_RECORD_FORMAT","kind":"constant","signature":"NAVI_CONTINUITY_RECORD_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviContinuityStore.md","moduleTitle":"kernel/navi/NaviContinuityStore","source":"webgpu-os/kernel/navi/NaviContinuityStore.js","import":"/webgpu-os/kernel/navi/NaviContinuityStore.js","sourceHash":"39f6b74f9d90694d3afad185f9b7decf1b118ff688bd8d4345fa580470587c6b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviContinuityStore.js#0015:NAVI_CONTINUITY_QUARANTINE_FORMAT","exportIndex":15,"name":"NAVI_CONTINUITY_QUARANTINE_FORMAT","kind":"constant","signature":"NAVI_CONTINUITY_QUARANTINE_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviContinuityStore.md","moduleTitle":"kernel/navi/NaviContinuityStore","source":"webgpu-os/kernel/navi/NaviContinuityStore.js","import":"/webgpu-os/kernel/navi/NaviContinuityStore.js","sourceHash":"39f6b74f9d90694d3afad185f9b7decf1b118ff688bd8d4345fa580470587c6b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviContinuityStore.js#0016:NAVI_CONTINUITY_KEY_MATERIAL_FORMAT","exportIndex":16,"name":"NAVI_CONTINUITY_KEY_MATERIAL_FORMAT","kind":"constant","signature":"NAVI_CONTINUITY_KEY_MATERIAL_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviContinuityStore.md","moduleTitle":"kernel/navi/NaviContinuityStore","source":"webgpu-os/kernel/navi/NaviContinuityStore.js","import":"/webgpu-os/kernel/navi/NaviContinuityStore.js","sourceHash":"39f6b74f9d90694d3afad185f9b7decf1b118ff688bd8d4345fa580470587c6b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviContinuityStore.js#0017:NAVI_CONTINUITY_MISSING_KEY_EVIDENCE_FORMAT","exportIndex":17,"name":"NAVI_CONTINUITY_MISSING_KEY_EVIDENCE_FORMAT","kind":"constant","signature":"NAVI_CONTINUITY_MISSING_KEY_EVIDENCE_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviCovenantTemplates.md","moduleTitle":"kernel/navi/NaviCovenantTemplates","source":"webgpu-os/kernel/navi/NaviCovenantTemplates.js","import":"/webgpu-os/kernel/navi/NaviCovenantTemplates.js","sourceHash":"b37b8f296208af72dec437b2e5a8a2c2970fe7e5f96537a6016da4e4af966a31","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/NaviCovenantTemplates.js","title":"kernel/navi/NaviCovenantTemplates","summary":"NaviCovenantTemplates.js — selectable operator–Navi Covenants and lifecycle policy. A Covenant is not active merely because it is well formed. Proposals require the primary operator's signature; activation and supersession require both the operator and the Navi to sign the exact same canonical contract bytes. Emergency suspension and revocation remain operator-authorized fail-safe transitions. This module exposes lifecycle operations, never a generic sign or decrypt primitive.","exportCount":16}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviCovenantTemplates.md","moduleTitle":"kernel/navi/NaviCovenantTemplates","source":"webgpu-os/kernel/navi/NaviCovenantTemplates.js","import":"/webgpu-os/kernel/navi/NaviCovenantTemplates.js","sourceHash":"b37b8f296208af72dec437b2e5a8a2c2970fe7e5f96537a6016da4e4af966a31","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviCovenantTemplates.js#0000:NaviCovenantError","exportIndex":0,"name":"NaviCovenantError","kind":"class","signature":"class NaviCovenantError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviCovenantTemplates.md","moduleTitle":"kernel/navi/NaviCovenantTemplates","source":"webgpu-os/kernel/navi/NaviCovenantTemplates.js","import":"/webgpu-os/kernel/navi/NaviCovenantTemplates.js","sourceHash":"b37b8f296208af72dec437b2e5a8a2c2970fe7e5f96537a6016da4e4af966a31","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviCovenantTemplates.js#0001:NaviCovenantTemplateBlockedError","exportIndex":1,"name":"NaviCovenantTemplateBlockedError","kind":"class","signature":"class NaviCovenantTemplateBlockedError extends NaviCovenantError","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviCovenantTemplates.md","moduleTitle":"kernel/navi/NaviCovenantTemplates","source":"webgpu-os/kernel/navi/NaviCovenantTemplates.js","import":"/webgpu-os/kernel/navi/NaviCovenantTemplates.js","sourceHash":"b37b8f296208af72dec437b2e5a8a2c2970fe7e5f96537a6016da4e4af966a31","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviCovenantTemplates.js#0002:NaviCovenantSignatureError","exportIndex":2,"name":"NaviCovenantSignatureError","kind":"class","signature":"class NaviCovenantSignatureError extends NaviCovenantError","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviCovenantTemplates.md","moduleTitle":"kernel/navi/NaviCovenantTemplates","source":"webgpu-os/kernel/navi/NaviCovenantTemplates.js","import":"/webgpu-os/kernel/navi/NaviCovenantTemplates.js","sourceHash":"b37b8f296208af72dec437b2e5a8a2c2970fe7e5f96537a6016da4e4af966a31","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviCovenantTemplates.js#0003:listNaviCovenantTemplates","exportIndex":3,"name":"listNaviCovenantTemplates","kind":"function","signature":"listNaviCovenantTemplates({ separationRecoveryReady = false } = {})","summary":"Return immutable template descriptions without exposing mutable policy source objects."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviCovenantTemplates.md","moduleTitle":"kernel/navi/NaviCovenantTemplates","source":"webgpu-os/kernel/navi/NaviCovenantTemplates.js","import":"/webgpu-os/kernel/navi/NaviCovenantTemplates.js","sourceHash":"b37b8f296208af72dec437b2e5a8a2c2970fe7e5f96537a6016da4e4af966a31","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviCovenantTemplates.js#0004:getNaviCovenantTemplate","exportIndex":4,"name":"getNaviCovenantTemplate","kind":"function","signature":"getNaviCovenantTemplate(template = DEFAULT_NAVI_COVENANT_TEMPLATE, { separationRecoveryReady = false, } = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviCovenantTemplates.md","moduleTitle":"kernel/navi/NaviCovenantTemplates","source":"webgpu-os/kernel/navi/NaviCovenantTemplates.js","import":"/webgpu-os/kernel/navi/NaviCovenantTemplates.js","sourceHash":"b37b8f296208af72dec437b2e5a8a2c2970fe7e5f96537a6016da4e4af966a31","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviCovenantTemplates.js#0005:proposeNaviCovenant","exportIndex":5,"name":"proposeNaviCovenant","kind":"function","signature":"async proposeNaviCovenant({ covenantId, naviId, operator = null, operatorSigner, template = DEFAULT_NAVI_COVENANT_TEMPLATE, revision = 1, effectiveAt = new Date()","summary":"Create and operator-sign a proposed Covenant from one exact template."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviCovenantTemplates.md","moduleTitle":"kernel/navi/NaviCovenantTemplates","source":"webgpu-os/kernel/navi/NaviCovenantTemplates.js","import":"/webgpu-os/kernel/navi/NaviCovenantTemplates.js","sourceHash":"b37b8f296208af72dec437b2e5a8a2c2970fe7e5f96537a6016da4e4af966a31","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviCovenantTemplates.js#0006:verifyNaviCovenant","exportIndex":6,"name":"verifyNaviCovenant","kind":"function","signature":"async verifyNaviCovenant(covenant, { operatorVerifier = null, naviVerifier = null, keyResolver = null, historical = false, logger = null, } = {})","summary":"Verify signature bytes, signer roles, key windows, and lifecycle quorum."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviCovenantTemplates.md","moduleTitle":"kernel/navi/NaviCovenantTemplates","source":"webgpu-os/kernel/navi/NaviCovenantTemplates.js","import":"/webgpu-os/kernel/navi/NaviCovenantTemplates.js","sourceHash":"b37b8f296208af72dec437b2e5a8a2c2970fe7e5f96537a6016da4e4af966a31","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviCovenantTemplates.js#0007:activateNaviCovenant","exportIndex":7,"name":"activateNaviCovenant","kind":"function","signature":"async activateNaviCovenant(proposal, { operatorSigner, naviSigner, signedAt = new Date()","summary":"Re-sign an accepted proposal as active with operator + Navi acknowledgment."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviCovenantTemplates.md","moduleTitle":"kernel/navi/NaviCovenantTemplates","source":"webgpu-os/kernel/navi/NaviCovenantTemplates.js","import":"/webgpu-os/kernel/navi/NaviCovenantTemplates.js","sourceHash":"b37b8f296208af72dec437b2e5a8a2c2970fe7e5f96537a6016da4e4af966a31","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviCovenantTemplates.js#0008:reviseNaviCovenant","exportIndex":8,"name":"reviseNaviCovenant","kind":"function","signature":"async reviseNaviCovenant(activeCovenant, { covenantId, operatorSigner, naviVerifier, template = null, effectiveAt = new Date()","summary":"Create a signed next-revision proposal without mutating the active Covenant."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviCovenantTemplates.md","moduleTitle":"kernel/navi/NaviCovenantTemplates","source":"webgpu-os/kernel/navi/NaviCovenantTemplates.js","import":"/webgpu-os/kernel/navi/NaviCovenantTemplates.js","sourceHash":"b37b8f296208af72dec437b2e5a8a2c2970fe7e5f96537a6016da4e4af966a31","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviCovenantTemplates.js#0009:suspendNaviCovenant","exportIndex":9,"name":"suspendNaviCovenant","kind":"function","signature":"suspendNaviCovenant(covenant, options = {})","summary":"Emergency fail-safe: the primary operator may suspend an active Covenant."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviCovenantTemplates.md","moduleTitle":"kernel/navi/NaviCovenantTemplates","source":"webgpu-os/kernel/navi/NaviCovenantTemplates.js","import":"/webgpu-os/kernel/navi/NaviCovenantTemplates.js","sourceHash":"b37b8f296208af72dec437b2e5a8a2c2970fe7e5f96537a6016da4e4af966a31","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviCovenantTemplates.js#0010:revokeNaviCovenant","exportIndex":10,"name":"revokeNaviCovenant","kind":"function","signature":"revokeNaviCovenant(covenant, options = {})","summary":"Revoke an active or suspended Covenant; the original signed record remains verifiable."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviCovenantTemplates.md","moduleTitle":"kernel/navi/NaviCovenantTemplates","source":"webgpu-os/kernel/navi/NaviCovenantTemplates.js","import":"/webgpu-os/kernel/navi/NaviCovenantTemplates.js","sourceHash":"b37b8f296208af72dec437b2e5a8a2c2970fe7e5f96537a6016da4e4af966a31","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviCovenantTemplates.js#0011:supersedeNaviCovenant","exportIndex":11,"name":"supersedeNaviCovenant","kind":"function","signature":"async supersedeNaviCovenant(covenant, { operatorSigner, naviSigner, signedAt = new Date()","summary":"Mark an old active Covenant superseded after its dual-signed replacement is active."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviCovenantTemplates.md","moduleTitle":"kernel/navi/NaviCovenantTemplates","source":"webgpu-os/kernel/navi/NaviCovenantTemplates.js","import":"/webgpu-os/kernel/navi/NaviCovenantTemplates.js","sourceHash":"b37b8f296208af72dec437b2e5a8a2c2970fe7e5f96537a6016da4e4af966a31","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviCovenantTemplates.js#0012:projectNaviCovenant","exportIndex":12,"name":"projectNaviCovenant","kind":"function","signature":"projectNaviCovenant(covenant)","summary":"Return a safe, immutable projection with signature values and policy conditions removed."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviCovenantTemplates.md","moduleTitle":"kernel/navi/NaviCovenantTemplates","source":"webgpu-os/kernel/navi/NaviCovenantTemplates.js","import":"/webgpu-os/kernel/navi/NaviCovenantTemplates.js","sourceHash":"b37b8f296208af72dec437b2e5a8a2c2970fe7e5f96537a6016da4e4af966a31","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviCovenantTemplates.js#0013:resolveScopedDelegateDecision","exportIndex":13,"name":"resolveScopedDelegateDecision","kind":"function","signature":"resolveScopedDelegateDecision(decisions = [])","summary":"Resolve already-authorized scoped delegate votes. Conflicting decisions at the highest equal priority always pause; array order never breaks a tie."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviCovenantTemplates.md","moduleTitle":"kernel/navi/NaviCovenantTemplates","source":"webgpu-os/kernel/navi/NaviCovenantTemplates.js","import":"/webgpu-os/kernel/navi/NaviCovenantTemplates.js","sourceHash":"b37b8f296208af72dec437b2e5a8a2c2970fe7e5f96537a6016da4e4af966a31","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviCovenantTemplates.js#0014:NAVI_COVENANT_TEMPLATE_IDS","exportIndex":14,"name":"NAVI_COVENANT_TEMPLATE_IDS","kind":"constant","signature":"NAVI_COVENANT_TEMPLATE_IDS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviCovenantTemplates.md","moduleTitle":"kernel/navi/NaviCovenantTemplates","source":"webgpu-os/kernel/navi/NaviCovenantTemplates.js","import":"/webgpu-os/kernel/navi/NaviCovenantTemplates.js","sourceHash":"b37b8f296208af72dec437b2e5a8a2c2970fe7e5f96537a6016da4e4af966a31","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviCovenantTemplates.js#0015:DEFAULT_NAVI_COVENANT_TEMPLATE","exportIndex":15,"name":"DEFAULT_NAVI_COVENANT_TEMPLATE","kind":"constant","signature":"DEFAULT_NAVI_COVENANT_TEMPLATE","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviDelegationBranchKeyService.md","moduleTitle":"kernel/navi/NaviDelegationBranchKeyService","source":"webgpu-os/kernel/navi/NaviDelegationBranchKeyService.js","import":"/webgpu-os/kernel/navi/NaviDelegationBranchKeyService.js","sourceHash":"f902ef86c93905605109ff1a4c36219d9a79559cb693907f7a5f2b959c5d66e2","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/NaviDelegationBranchKeyService.js","title":"kernel/navi/NaviDelegationBranchKeyService","summary":"Kernel-only provisioning and one-shot consumption of persistent Branch keys. A generated P-256 private key is exported only long enough to import a non-extractable runtime handle and place its bytes inside a Continuity-sealed cognition record. No application-facing method returns a CryptoKey, private bytes, public key, or generic signing capability.","exportCount":5}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviDelegationBranchKeyService.md","moduleTitle":"kernel/navi/NaviDelegationBranchKeyService","source":"webgpu-os/kernel/navi/NaviDelegationBranchKeyService.js","import":"/webgpu-os/kernel/navi/NaviDelegationBranchKeyService.js","sourceHash":"f902ef86c93905605109ff1a4c36219d9a79559cb693907f7a5f2b959c5d66e2","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviDelegationBranchKeyService.js#0000:NaviDelegationBranchKeyServiceError","exportIndex":0,"name":"NaviDelegationBranchKeyServiceError","kind":"class","signature":"class NaviDelegationBranchKeyServiceError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviDelegationBranchKeyService.md","moduleTitle":"kernel/navi/NaviDelegationBranchKeyService","source":"webgpu-os/kernel/navi/NaviDelegationBranchKeyService.js","import":"/webgpu-os/kernel/navi/NaviDelegationBranchKeyService.js","sourceHash":"f902ef86c93905605109ff1a4c36219d9a79559cb693907f7a5f2b959c5d66e2","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviDelegationBranchKeyService.js#0001:NaviDelegationBranchKeyService","exportIndex":1,"name":"NaviDelegationBranchKeyService","kind":"class","signature":"class NaviDelegationBranchKeyService","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviDelegationBranchKeyService.md","moduleTitle":"kernel/navi/NaviDelegationBranchKeyService","source":"webgpu-os/kernel/navi/NaviDelegationBranchKeyService.js","import":"/webgpu-os/kernel/navi/NaviDelegationBranchKeyService.js","sourceHash":"f902ef86c93905605109ff1a4c36219d9a79559cb693907f7a5f2b959c5d66e2","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviDelegationBranchKeyService.js#0002:NAVI_DELEGATION_BRANCH_KEY_RECORD_TYPE","exportIndex":2,"name":"NAVI_DELEGATION_BRANCH_KEY_RECORD_TYPE","kind":"constant","signature":"NAVI_DELEGATION_BRANCH_KEY_RECORD_TYPE","summary":"Kernel-only provisioning and one-shot consumption of persistent Branch keys. A generated P-256 private key is exported only long enough to import a non-extractable runtime handle and place its bytes inside a Continuity-sealed cognition record. No application-facing method returns a CryptoKey, private bytes, public key, or generic signing capability."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviDelegationBranchKeyService.md","moduleTitle":"kernel/navi/NaviDelegationBranchKeyService","source":"webgpu-os/kernel/navi/NaviDelegationBranchKeyService.js","import":"/webgpu-os/kernel/navi/NaviDelegationBranchKeyService.js","sourceHash":"f902ef86c93905605109ff1a4c36219d9a79559cb693907f7a5f2b959c5d66e2","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviDelegationBranchKeyService.js#0003:NAVI_DELEGATION_BRANCH_KEY_RECORD_FORMAT","exportIndex":3,"name":"NAVI_DELEGATION_BRANCH_KEY_RECORD_FORMAT","kind":"constant","signature":"NAVI_DELEGATION_BRANCH_KEY_RECORD_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviDelegationBranchKeyService.md","moduleTitle":"kernel/navi/NaviDelegationBranchKeyService","source":"webgpu-os/kernel/navi/NaviDelegationBranchKeyService.js","import":"/webgpu-os/kernel/navi/NaviDelegationBranchKeyService.js","sourceHash":"f902ef86c93905605109ff1a4c36219d9a79559cb693907f7a5f2b959c5d66e2","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviDelegationBranchKeyService.js#0004:NAVI_DELEGATION_BRANCH_KEY_PROOF_FORMAT","exportIndex":4,"name":"NAVI_DELEGATION_BRANCH_KEY_PROOF_FORMAT","kind":"constant","signature":"NAVI_DELEGATION_BRANCH_KEY_PROOF_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviDelegationService.md","moduleTitle":"kernel/navi/NaviDelegationService","source":"webgpu-os/kernel/navi/NaviDelegationService.js","import":"/webgpu-os/kernel/navi/NaviDelegationService.js","sourceHash":"4bc8399280fce9ca397eaefda48194cba64d7c96a73a9811a87879008a4f67ce","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/NaviDelegationService.js","title":"kernel/navi/NaviDelegationService","summary":"NaviDelegationService — bounded worker authority, persistence, and recovery. A delegated worker is never given cognition storage, continuity keys, raw memory, or ambient filesystem access. The service persists only signed navi-delegation-v1 contracts, hash-only context references, exact capability references, an active resource-lease binding, and bounded report evidence. File-capable workers operate through a VFS overlay adapter scoped from their verified Faculty capabilities.","exportCount":8}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviDelegationService.md","moduleTitle":"kernel/navi/NaviDelegationService","source":"webgpu-os/kernel/navi/NaviDelegationService.js","import":"/webgpu-os/kernel/navi/NaviDelegationService.js","sourceHash":"4bc8399280fce9ca397eaefda48194cba64d7c96a73a9811a87879008a4f67ce","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviDelegationService.js#0000:NaviDelegationServiceError","exportIndex":0,"name":"NaviDelegationServiceError","kind":"class","signature":"class NaviDelegationServiceError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviDelegationService.md","moduleTitle":"kernel/navi/NaviDelegationService","source":"webgpu-os/kernel/navi/NaviDelegationService.js","import":"/webgpu-os/kernel/navi/NaviDelegationService.js","sourceHash":"4bc8399280fce9ca397eaefda48194cba64d7c96a73a9811a87879008a4f67ce","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviDelegationService.js#0001:NaviDelegationIntegrityError","exportIndex":1,"name":"NaviDelegationIntegrityError","kind":"class","signature":"class NaviDelegationIntegrityError extends NaviDelegationServiceError","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviDelegationService.md","moduleTitle":"kernel/navi/NaviDelegationService","source":"webgpu-os/kernel/navi/NaviDelegationService.js","import":"/webgpu-os/kernel/navi/NaviDelegationService.js","sourceHash":"4bc8399280fce9ca397eaefda48194cba64d7c96a73a9811a87879008a4f67ce","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviDelegationService.js#0002:NaviDelegationService","exportIndex":2,"name":"NaviDelegationService","kind":"class","signature":"class NaviDelegationService","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviDelegationService.md","moduleTitle":"kernel/navi/NaviDelegationService","source":"webgpu-os/kernel/navi/NaviDelegationService.js","import":"/webgpu-os/kernel/navi/NaviDelegationService.js","sourceHash":"4bc8399280fce9ca397eaefda48194cba64d7c96a73a9811a87879008a4f67ce","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviDelegationService.js#0003:deriveNaviDelegationOverlayRoot","exportIndex":3,"name":"deriveNaviDelegationOverlayRoot","kind":"function","signature":"async deriveNaviDelegationOverlayRoot(naviId, delegationId)","summary":"Derive the only VFS root a delegated capability may name. Capability issuance can call this before NaviDelegationService.create(), so signed tool arguments already target the overlay and never need post-signature rewriting."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviDelegationService.md","moduleTitle":"kernel/navi/NaviDelegationService","source":"webgpu-os/kernel/navi/NaviDelegationService.js","import":"/webgpu-os/kernel/navi/NaviDelegationService.js","sourceHash":"4bc8399280fce9ca397eaefda48194cba64d7c96a73a9811a87879008a4f67ce","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviDelegationService.js#0004:NAVI_DELEGATION_SERVICE_FORMAT","exportIndex":4,"name":"NAVI_DELEGATION_SERVICE_FORMAT","kind":"constant","signature":"NAVI_DELEGATION_SERVICE_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviDelegationService.md","moduleTitle":"kernel/navi/NaviDelegationService","source":"webgpu-os/kernel/navi/NaviDelegationService.js","import":"/webgpu-os/kernel/navi/NaviDelegationService.js","sourceHash":"4bc8399280fce9ca397eaefda48194cba64d7c96a73a9811a87879008a4f67ce","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviDelegationService.js#0005:NAVI_DELEGATION_RECORD_FORMAT","exportIndex":5,"name":"NAVI_DELEGATION_RECORD_FORMAT","kind":"constant","signature":"NAVI_DELEGATION_RECORD_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviDelegationService.md","moduleTitle":"kernel/navi/NaviDelegationService","source":"webgpu-os/kernel/navi/NaviDelegationService.js","import":"/webgpu-os/kernel/navi/NaviDelegationService.js","sourceHash":"4bc8399280fce9ca397eaefda48194cba64d7c96a73a9811a87879008a4f67ce","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviDelegationService.js#0006:NAVI_DELEGATION_RECORD_TYPE","exportIndex":6,"name":"NAVI_DELEGATION_RECORD_TYPE","kind":"constant","signature":"NAVI_DELEGATION_RECORD_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviDelegationService.md","moduleTitle":"kernel/navi/NaviDelegationService","source":"webgpu-os/kernel/navi/NaviDelegationService.js","import":"/webgpu-os/kernel/navi/NaviDelegationService.js","sourceHash":"4bc8399280fce9ca397eaefda48194cba64d7c96a73a9811a87879008a4f67ce","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviDelegationService.js#0007:NAVI_DELEGATION_STORAGE_RECEIPT_FORMAT","exportIndex":7,"name":"NAVI_DELEGATION_STORAGE_RECEIPT_FORMAT","kind":"constant","signature":"NAVI_DELEGATION_STORAGE_RECEIPT_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviDerivedProjectionService.md","moduleTitle":"kernel/navi/NaviDerivedProjectionService","source":"webgpu-os/kernel/navi/NaviDerivedProjectionService.js","import":"/webgpu-os/kernel/navi/NaviDerivedProjectionService.js","sourceHash":"b11c0248077eb109f026cddf2452a0360d7ada472e3555a33e7f8ead6cec23d1","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/NaviDerivedProjectionService.js","title":"kernel/navi/NaviDerivedProjectionService","summary":"NaviDerivedProjectionService.js — deterministic, non-authoritative Navi views. Canonical memory and relationship services remain the only write authority. This service validates their signed contracts, verifies that signatures bind the current payload hash, and derives Wiki-compatible human-readable views. It never edits a source contract. A UI edit becomes an unsigned proposal that is handed back to memoryService.proposeDerivedEdit() for policy and review. Required adapters: memoryService.listProjectionEvents({ naviId, branchId, afterSequence, allowedDataClasses }) -> { event, eventHash, payloadStatus, payload }[] memoryService.proposeDerivedEdit(unsignedProposal) -> receipt/result relationshipService.listRelationships({ naviId }) -> Relationship[] The adapters must verify cryptographic signatures before returning contracts. This layer independently verifies schema closure and signed-hash binding so a modified cached contract cannot silently become a readable projection.","exportCount":5}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviDerivedProjectionService.md","moduleTitle":"kernel/navi/NaviDerivedProjectionService","source":"webgpu-os/kernel/navi/NaviDerivedProjectionService.js","import":"/webgpu-os/kernel/navi/NaviDerivedProjectionService.js","sourceHash":"b11c0248077eb109f026cddf2452a0360d7ada472e3555a33e7f8ead6cec23d1","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviDerivedProjectionService.js#0000:NaviDerivedProjectionError","exportIndex":0,"name":"NaviDerivedProjectionError","kind":"class","signature":"class NaviDerivedProjectionError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviDerivedProjectionService.md","moduleTitle":"kernel/navi/NaviDerivedProjectionService","source":"webgpu-os/kernel/navi/NaviDerivedProjectionService.js","import":"/webgpu-os/kernel/navi/NaviDerivedProjectionService.js","sourceHash":"b11c0248077eb109f026cddf2452a0360d7ada472e3555a33e7f8ead6cec23d1","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviDerivedProjectionService.js#0001:NaviDerivedProjectionService","exportIndex":1,"name":"NaviDerivedProjectionService","kind":"class","signature":"class NaviDerivedProjectionService","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviDerivedProjectionService.md","moduleTitle":"kernel/navi/NaviDerivedProjectionService","source":"webgpu-os/kernel/navi/NaviDerivedProjectionService.js","import":"/webgpu-os/kernel/navi/NaviDerivedProjectionService.js","sourceHash":"b11c0248077eb109f026cddf2452a0360d7ada472e3555a33e7f8ead6cec23d1","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviDerivedProjectionService.js#0002:escapeNaviProjectionMarkdown","exportIndex":2,"name":"escapeNaviProjectionMarkdown","kind":"function","signature":"escapeNaviProjectionMarkdown(value)","summary":"Escape payload text before inserting it into generated Markdown/HTML views."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviDerivedProjectionService.md","moduleTitle":"kernel/navi/NaviDerivedProjectionService","source":"webgpu-os/kernel/navi/NaviDerivedProjectionService.js","import":"/webgpu-os/kernel/navi/NaviDerivedProjectionService.js","sourceHash":"b11c0248077eb109f026cddf2452a0360d7ada472e3555a33e7f8ead6cec23d1","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviDerivedProjectionService.js#0003:NAVI_DERIVED_PROJECTION_FORMAT","exportIndex":3,"name":"NAVI_DERIVED_PROJECTION_FORMAT","kind":"constant","signature":"NAVI_DERIVED_PROJECTION_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviDerivedProjectionService.md","moduleTitle":"kernel/navi/NaviDerivedProjectionService","source":"webgpu-os/kernel/navi/NaviDerivedProjectionService.js","import":"/webgpu-os/kernel/navi/NaviDerivedProjectionService.js","sourceHash":"b11c0248077eb109f026cddf2452a0360d7ada472e3555a33e7f8ead6cec23d1","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviDerivedProjectionService.js#0004:NAVI_DERIVED_EDIT_PROPOSAL_FORMAT","exportIndex":4,"name":"NAVI_DERIVED_EDIT_PROPOSAL_FORMAT","kind":"constant","signature":"NAVI_DERIVED_EDIT_PROPOSAL_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviFacultyPackageBinding.md","moduleTitle":"kernel/navi/NaviFacultyPackageBinding","source":"webgpu-os/kernel/navi/NaviFacultyPackageBinding.js","import":"/webgpu-os/kernel/navi/NaviFacultyPackageBinding.js","sourceHash":"996e2510b11c5effd8e1a3ed0f6d250fc148d93de50f35bc08036bd843d3ea83","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/NaviFacultyPackageBinding.js","title":"kernel/navi/NaviFacultyPackageBinding","summary":"Strict, side-effect-free validation for a signed Faculty embedded in an authenticated package manifest. The builder and authorization policy share this boundary so accepted package evidence cannot drift between creation and execution.","exportCount":3}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviFacultyPackageBinding.md","moduleTitle":"kernel/navi/NaviFacultyPackageBinding","source":"webgpu-os/kernel/navi/NaviFacultyPackageBinding.js","import":"/webgpu-os/kernel/navi/NaviFacultyPackageBinding.js","sourceHash":"996e2510b11c5effd8e1a3ed0f6d250fc148d93de50f35bc08036bd843d3ea83","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviFacultyPackageBinding.js#0000:NaviFacultyPackageBindingError","exportIndex":0,"name":"NaviFacultyPackageBindingError","kind":"class","signature":"class NaviFacultyPackageBindingError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviFacultyPackageBinding.md","moduleTitle":"kernel/navi/NaviFacultyPackageBinding","source":"webgpu-os/kernel/navi/NaviFacultyPackageBinding.js","import":"/webgpu-os/kernel/navi/NaviFacultyPackageBinding.js","sourceHash":"996e2510b11c5effd8e1a3ed0f6d250fc148d93de50f35bc08036bd843d3ea83","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviFacultyPackageBinding.js#0001:validateNaviFacultyPackageBinding","exportIndex":1,"name":"validateNaviFacultyPackageBinding","kind":"function","signature":"async validateNaviFacultyPackageBinding(value, { resourceHash = null } = {})","summary":"Validate and snapshot an already-signed Faculty package binding. This function never adds, removes, or rewrites a Faculty signature. The returned frozen snapshot contains the exact schema values supplied by the caller after strict JSON/schema validation."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviFacultyPackageBinding.md","moduleTitle":"kernel/navi/NaviFacultyPackageBinding","source":"webgpu-os/kernel/navi/NaviFacultyPackageBinding.js","import":"/webgpu-os/kernel/navi/NaviFacultyPackageBinding.js","sourceHash":"996e2510b11c5effd8e1a3ed0f6d250fc148d93de50f35bc08036bd843d3ea83","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviFacultyPackageBinding.js#0002:NAVI_FACULTY_PACKAGE_BINDING_FORMAT","exportIndex":2,"name":"NAVI_FACULTY_PACKAGE_BINDING_FORMAT","kind":"constant","signature":"NAVI_FACULTY_PACKAGE_BINDING_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviFacultyPackagePolicy.md","moduleTitle":"kernel/navi/NaviFacultyPackagePolicy","source":"webgpu-os/kernel/navi/NaviFacultyPackagePolicy.js","import":"/webgpu-os/kernel/navi/NaviFacultyPackagePolicy.js","sourceHash":"9d46ea944fa9e1a788203d2fee2493c7db3e9a6c5f2755a5fb15693a115d7c79","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/NaviFacultyPackagePolicy.js","title":"kernel/navi/NaviFacultyPackagePolicy","summary":"NaviFacultyPackagePolicy.js The fail-closed trust boundary between a verified OS package and an executable Navi Faculty manifest. PackageManager remains the package integrity/provenance/scanning choke point; this policy narrows its broader application-install trust model for Faculties: - production authorization requires a fresh ring-0 certificate chain; - pinned/TOFU trust never becomes production Faculty authority; - developer-local/self-signed packages require an exact one-shot approval; - the authenticated package manifest, inline Faculty envelope, canonical Navi payload, and package resource root must all bind the same Faculty; - the Faculty publisher signature is verified with the package certificate. No package bytes, public keys, signatures, approval tokens, or verifier diagnostics are returned from this module.","exportCount":7}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviFacultyPackagePolicy.md","moduleTitle":"kernel/navi/NaviFacultyPackagePolicy","source":"webgpu-os/kernel/navi/NaviFacultyPackagePolicy.js","import":"/webgpu-os/kernel/navi/NaviFacultyPackagePolicy.js","sourceHash":"9d46ea944fa9e1a788203d2fee2493c7db3e9a6c5f2755a5fb15693a115d7c79","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviFacultyPackagePolicy.js#0000:NaviFacultyPackagePolicyError","exportIndex":0,"name":"NaviFacultyPackagePolicyError","kind":"class","signature":"class NaviFacultyPackagePolicyError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviFacultyPackagePolicy.md","moduleTitle":"kernel/navi/NaviFacultyPackagePolicy","source":"webgpu-os/kernel/navi/NaviFacultyPackagePolicy.js","import":"/webgpu-os/kernel/navi/NaviFacultyPackagePolicy.js","sourceHash":"9d46ea944fa9e1a788203d2fee2493c7db3e9a6c5f2755a5fb15693a115d7c79","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviFacultyPackagePolicy.js#0001:NaviFacultyPackagePolicy","exportIndex":1,"name":"NaviFacultyPackagePolicy","kind":"class","signature":"class NaviFacultyPackagePolicy","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviFacultyPackagePolicy.md","moduleTitle":"kernel/navi/NaviFacultyPackagePolicy","source":"webgpu-os/kernel/navi/NaviFacultyPackagePolicy.js","import":"/webgpu-os/kernel/navi/NaviFacultyPackagePolicy.js","sourceHash":"9d46ea944fa9e1a788203d2fee2493c7db3e9a6c5f2755a5fb15693a115d7c79","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviFacultyPackagePolicy.js#0002:NAVI_FACULTY_POLICY_INSPECTION_FORMAT","exportIndex":2,"name":"NAVI_FACULTY_POLICY_INSPECTION_FORMAT","kind":"constant","signature":"NAVI_FACULTY_POLICY_INSPECTION_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviFacultyPackagePolicy.md","moduleTitle":"kernel/navi/NaviFacultyPackagePolicy","source":"webgpu-os/kernel/navi/NaviFacultyPackagePolicy.js","import":"/webgpu-os/kernel/navi/NaviFacultyPackagePolicy.js","sourceHash":"9d46ea944fa9e1a788203d2fee2493c7db3e9a6c5f2755a5fb15693a115d7c79","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviFacultyPackagePolicy.js#0003:NAVI_FACULTY_AUTHORIZATION_FORMAT","exportIndex":3,"name":"NAVI_FACULTY_AUTHORIZATION_FORMAT","kind":"constant","signature":"NAVI_FACULTY_AUTHORIZATION_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviFacultyPackagePolicy.md","moduleTitle":"kernel/navi/NaviFacultyPackagePolicy","source":"webgpu-os/kernel/navi/NaviFacultyPackagePolicy.js","import":"/webgpu-os/kernel/navi/NaviFacultyPackagePolicy.js","sourceHash":"9d46ea944fa9e1a788203d2fee2493c7db3e9a6c5f2755a5fb15693a115d7c79","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviFacultyPackagePolicy.js#0004:NAVI_FACULTY_LOCAL_APPROVAL_FORMAT","exportIndex":4,"name":"NAVI_FACULTY_LOCAL_APPROVAL_FORMAT","kind":"constant","signature":"NAVI_FACULTY_LOCAL_APPROVAL_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviFacultyPackagePolicy.md","moduleTitle":"kernel/navi/NaviFacultyPackagePolicy","source":"webgpu-os/kernel/navi/NaviFacultyPackagePolicy.js","import":"/webgpu-os/kernel/navi/NaviFacultyPackagePolicy.js","sourceHash":"9d46ea944fa9e1a788203d2fee2493c7db3e9a6c5f2755a5fb15693a115d7c79","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviFacultyPackagePolicy.js#0005:NAVI_FACULTY_SCAN_APPROVAL_FORMAT","exportIndex":5,"name":"NAVI_FACULTY_SCAN_APPROVAL_FORMAT","kind":"constant","signature":"NAVI_FACULTY_SCAN_APPROVAL_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviFacultyPackagePolicy.md","moduleTitle":"kernel/navi/NaviFacultyPackagePolicy","source":"webgpu-os/kernel/navi/NaviFacultyPackagePolicy.js","import":"/webgpu-os/kernel/navi/NaviFacultyPackagePolicy.js","sourceHash":"9d46ea944fa9e1a788203d2fee2493c7db3e9a6c5f2755a5fb15693a115d7c79","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviFacultyPackagePolicy.js#0006:NAVI_FACULTY_PACKAGE_BINDING_FORMAT","exportIndex":6,"name":"NAVI_FACULTY_PACKAGE_BINDING_FORMAT","kind":"re-export","signature":"NAVI_FACULTY_PACKAGE_BINDING_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviFacultyService.md","moduleTitle":"kernel/navi/NaviFacultyService","source":"webgpu-os/kernel/navi/NaviFacultyService.js","import":"/webgpu-os/kernel/navi/NaviFacultyService.js","sourceHash":"0ed109ccba326981ea79dda7cd60d6a15a07abb87129100570aa730be243f697","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/NaviFacultyService.js","title":"kernel/navi/NaviFacultyService","summary":"Kernel-owned Faculty authority membrane. Faculty code never receives this service, continuity keys, persistence, or driver objects. It receives only NaviFacultyWorkerHost's `api.tool` bridge. The bridge prepares one exact signed capability and hands it to ToolRouter; ToolRouter must consume that capability immediately before its existing driver dispatch. This module deliberately has no ToolDriver import or path.","exportCount":14}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviFacultyService.md","moduleTitle":"kernel/navi/NaviFacultyService","source":"webgpu-os/kernel/navi/NaviFacultyService.js","import":"/webgpu-os/kernel/navi/NaviFacultyService.js","sourceHash":"0ed109ccba326981ea79dda7cd60d6a15a07abb87129100570aa730be243f697","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviFacultyService.js#0000:NaviFacultyServiceError","exportIndex":0,"name":"NaviFacultyServiceError","kind":"class","signature":"class NaviFacultyServiceError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviFacultyService.md","moduleTitle":"kernel/navi/NaviFacultyService","source":"webgpu-os/kernel/navi/NaviFacultyService.js","import":"/webgpu-os/kernel/navi/NaviFacultyService.js","sourceHash":"0ed109ccba326981ea79dda7cd60d6a15a07abb87129100570aa730be243f697","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviFacultyService.js#0001:NaviFacultyServiceIntegrityError","exportIndex":1,"name":"NaviFacultyServiceIntegrityError","kind":"class","signature":"class NaviFacultyServiceIntegrityError extends NaviFacultyServiceError","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviFacultyService.md","moduleTitle":"kernel/navi/NaviFacultyService","source":"webgpu-os/kernel/navi/NaviFacultyService.js","import":"/webgpu-os/kernel/navi/NaviFacultyService.js","sourceHash":"0ed109ccba326981ea79dda7cd60d6a15a07abb87129100570aa730be243f697","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviFacultyService.js#0002:NaviFacultyService","exportIndex":2,"name":"NaviFacultyService","kind":"class","signature":"class NaviFacultyService","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviFacultyService.md","moduleTitle":"kernel/navi/NaviFacultyService","source":"webgpu-os/kernel/navi/NaviFacultyService.js","import":"/webgpu-os/kernel/navi/NaviFacultyService.js","sourceHash":"0ed109ccba326981ea79dda7cd60d6a15a07abb87129100570aa730be243f697","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviFacultyService.js#0003:NAVI_FACULTY_SERVICE_FORMAT","exportIndex":3,"name":"NAVI_FACULTY_SERVICE_FORMAT","kind":"constant","signature":"NAVI_FACULTY_SERVICE_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviFacultyService.md","moduleTitle":"kernel/navi/NaviFacultyService","source":"webgpu-os/kernel/navi/NaviFacultyService.js","import":"/webgpu-os/kernel/navi/NaviFacultyService.js","sourceHash":"0ed109ccba326981ea79dda7cd60d6a15a07abb87129100570aa730be243f697","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviFacultyService.js#0004:NAVI_FACULTY_FAMILY_RECORD_FORMAT","exportIndex":4,"name":"NAVI_FACULTY_FAMILY_RECORD_FORMAT","kind":"constant","signature":"NAVI_FACULTY_FAMILY_RECORD_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviFacultyService.md","moduleTitle":"kernel/navi/NaviFacultyService","source":"webgpu-os/kernel/navi/NaviFacultyService.js","import":"/webgpu-os/kernel/navi/NaviFacultyService.js","sourceHash":"0ed109ccba326981ea79dda7cd60d6a15a07abb87129100570aa730be243f697","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviFacultyService.js#0005:NAVI_FACULTY_FAMILY_STATE_FORMAT","exportIndex":5,"name":"NAVI_FACULTY_FAMILY_STATE_FORMAT","kind":"constant","signature":"NAVI_FACULTY_FAMILY_STATE_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviFacultyService.md","moduleTitle":"kernel/navi/NaviFacultyService","source":"webgpu-os/kernel/navi/NaviFacultyService.js","import":"/webgpu-os/kernel/navi/NaviFacultyService.js","sourceHash":"0ed109ccba326981ea79dda7cd60d6a15a07abb87129100570aa730be243f697","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviFacultyService.js#0006:NAVI_FACULTY_MANIFEST_RECORD_FORMAT","exportIndex":6,"name":"NAVI_FACULTY_MANIFEST_RECORD_FORMAT","kind":"constant","signature":"NAVI_FACULTY_MANIFEST_RECORD_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviFacultyService.md","moduleTitle":"kernel/navi/NaviFacultyService","source":"webgpu-os/kernel/navi/NaviFacultyService.js","import":"/webgpu-os/kernel/navi/NaviFacultyService.js","sourceHash":"0ed109ccba326981ea79dda7cd60d6a15a07abb87129100570aa730be243f697","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviFacultyService.js#0007:NAVI_FACULTY_SOURCE_RECORD_FORMAT","exportIndex":7,"name":"NAVI_FACULTY_SOURCE_RECORD_FORMAT","kind":"constant","signature":"NAVI_FACULTY_SOURCE_RECORD_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviFacultyService.md","moduleTitle":"kernel/navi/NaviFacultyService","source":"webgpu-os/kernel/navi/NaviFacultyService.js","import":"/webgpu-os/kernel/navi/NaviFacultyService.js","sourceHash":"0ed109ccba326981ea79dda7cd60d6a15a07abb87129100570aa730be243f697","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviFacultyService.js#0008:NAVI_FACULTY_CAPABILITY_RECORD_FORMAT","exportIndex":8,"name":"NAVI_FACULTY_CAPABILITY_RECORD_FORMAT","kind":"constant","signature":"NAVI_FACULTY_CAPABILITY_RECORD_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviFacultyService.md","moduleTitle":"kernel/navi/NaviFacultyService","source":"webgpu-os/kernel/navi/NaviFacultyService.js","import":"/webgpu-os/kernel/navi/NaviFacultyService.js","sourceHash":"0ed109ccba326981ea79dda7cd60d6a15a07abb87129100570aa730be243f697","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviFacultyService.js#0009:NAVI_FACULTY_OPERATION_RECORD_FORMAT","exportIndex":9,"name":"NAVI_FACULTY_OPERATION_RECORD_FORMAT","kind":"constant","signature":"NAVI_FACULTY_OPERATION_RECORD_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviFacultyService.md","moduleTitle":"kernel/navi/NaviFacultyService","source":"webgpu-os/kernel/navi/NaviFacultyService.js","import":"/webgpu-os/kernel/navi/NaviFacultyService.js","sourceHash":"0ed109ccba326981ea79dda7cd60d6a15a07abb87129100570aa730be243f697","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviFacultyService.js#0010:NAVI_FACULTY_RECEIPT_RECORD_FORMAT","exportIndex":10,"name":"NAVI_FACULTY_RECEIPT_RECORD_FORMAT","kind":"constant","signature":"NAVI_FACULTY_RECEIPT_RECORD_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviFacultyService.md","moduleTitle":"kernel/navi/NaviFacultyService","source":"webgpu-os/kernel/navi/NaviFacultyService.js","import":"/webgpu-os/kernel/navi/NaviFacultyService.js","sourceHash":"0ed109ccba326981ea79dda7cd60d6a15a07abb87129100570aa730be243f697","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviFacultyService.js#0011:NAVI_FACULTY_LEGACY_RECEIPT_RECORD_FORMAT","exportIndex":11,"name":"NAVI_FACULTY_LEGACY_RECEIPT_RECORD_FORMAT","kind":"constant","signature":"NAVI_FACULTY_LEGACY_RECEIPT_RECORD_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviFacultyService.md","moduleTitle":"kernel/navi/NaviFacultyService","source":"webgpu-os/kernel/navi/NaviFacultyService.js","import":"/webgpu-os/kernel/navi/NaviFacultyService.js","sourceHash":"0ed109ccba326981ea79dda7cd60d6a15a07abb87129100570aa730be243f697","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviFacultyService.js#0012:NAVI_FACULTY_RECOVERY_MARKER_FORMAT","exportIndex":12,"name":"NAVI_FACULTY_RECOVERY_MARKER_FORMAT","kind":"constant","signature":"NAVI_FACULTY_RECOVERY_MARKER_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviFacultyService.md","moduleTitle":"kernel/navi/NaviFacultyService","source":"webgpu-os/kernel/navi/NaviFacultyService.js","import":"/webgpu-os/kernel/navi/NaviFacultyService.js","sourceHash":"0ed109ccba326981ea79dda7cd60d6a15a07abb87129100570aa730be243f697","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviFacultyService.js#0013:NAVI_FACULTY_RECOVERY_STATE_FORMAT","exportIndex":13,"name":"NAVI_FACULTY_RECOVERY_STATE_FORMAT","kind":"constant","signature":"NAVI_FACULTY_RECOVERY_STATE_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviFacultyWorkerHost.md","moduleTitle":"kernel/navi/NaviFacultyWorkerHost","source":"webgpu-os/kernel/navi/NaviFacultyWorkerHost.js","import":"/webgpu-os/kernel/navi/NaviFacultyWorkerHost.js","sourceHash":"075c562a782917c5ee3e07e3497971f8ef8387a564abce0f344e92d8aba70532","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/NaviFacultyWorkerHost.js","title":"kernel/navi/NaviFacultyWorkerHost","summary":"NaviFacultyWorkerHost.js Executes one Faculty operation in a dedicated Worker nested inside an opaque-origin iframe. The worker has no ambient OS bridge. Its only host capability is the bounded `api.tool(name, args)` request channel supplied to `naviFaculty.run(input, api)`.","exportCount":11}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviFacultyWorkerHost.md","moduleTitle":"kernel/navi/NaviFacultyWorkerHost","source":"webgpu-os/kernel/navi/NaviFacultyWorkerHost.js","import":"/webgpu-os/kernel/navi/NaviFacultyWorkerHost.js","sourceHash":"075c562a782917c5ee3e07e3497971f8ef8387a564abce0f344e92d8aba70532","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviFacultyWorkerHost.js#0000:NaviFacultyWorkerError","exportIndex":0,"name":"NaviFacultyWorkerError","kind":"class","signature":"class NaviFacultyWorkerError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviFacultyWorkerHost.md","moduleTitle":"kernel/navi/NaviFacultyWorkerHost","source":"webgpu-os/kernel/navi/NaviFacultyWorkerHost.js","import":"/webgpu-os/kernel/navi/NaviFacultyWorkerHost.js","sourceHash":"075c562a782917c5ee3e07e3497971f8ef8387a564abce0f344e92d8aba70532","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviFacultyWorkerHost.js#0001:NaviFacultyIframeAdapter","exportIndex":1,"name":"NaviFacultyIframeAdapter","kind":"class","signature":"class NaviFacultyIframeAdapter","summary":"DOM owner for the hidden opaque iframe and its sole MessageChannel port."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviFacultyWorkerHost.md","moduleTitle":"kernel/navi/NaviFacultyWorkerHost","source":"webgpu-os/kernel/navi/NaviFacultyWorkerHost.js","import":"/webgpu-os/kernel/navi/NaviFacultyWorkerHost.js","sourceHash":"075c562a782917c5ee3e07e3497971f8ef8387a564abce0f344e92d8aba70532","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviFacultyWorkerHost.js#0002:NaviFacultyWorkerHost","exportIndex":2,"name":"NaviFacultyWorkerHost","kind":"class","signature":"class NaviFacultyWorkerHost","summary":"Replace-only owner for one-shot Faculty Workers. `onToolRequest` is trusted host code and is the only route from Faculty source to ToolRouter."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviFacultyWorkerHost.md","moduleTitle":"kernel/navi/NaviFacultyWorkerHost","source":"webgpu-os/kernel/navi/NaviFacultyWorkerHost.js","import":"/webgpu-os/kernel/navi/NaviFacultyWorkerHost.js","sourceHash":"075c562a782917c5ee3e07e3497971f8ef8387a564abce0f344e92d8aba70532","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviFacultyWorkerHost.js#0003:normalizeNaviFacultyJson","exportIndex":3,"name":"normalizeNaviFacultyJson","kind":"function","signature":"normalizeNaviFacultyJson(value, { label = 'value', maxBytes = NAVI_FACULTY_WORKER_LIMITS.messageBytes, } = {})","summary":"Descriptor-first JSON normalization that never evaluates accessors."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviFacultyWorkerHost.md","moduleTitle":"kernel/navi/NaviFacultyWorkerHost","source":"webgpu-os/kernel/navi/NaviFacultyWorkerHost.js","import":"/webgpu-os/kernel/navi/NaviFacultyWorkerHost.js","sourceHash":"075c562a782917c5ee3e07e3497971f8ef8387a564abce0f344e92d8aba70532","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviFacultyWorkerHost.js#0004:createNaviFacultyWorkerDescriptor","exportIndex":4,"name":"createNaviFacultyWorkerDescriptor","kind":"function","signature":"createNaviFacultyWorkerDescriptor()","summary":"Immutable description of the Faculty execution boundary."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviFacultyWorkerHost.md","moduleTitle":"kernel/navi/NaviFacultyWorkerHost","source":"webgpu-os/kernel/navi/NaviFacultyWorkerHost.js","import":"/webgpu-os/kernel/navi/NaviFacultyWorkerHost.js","sourceHash":"075c562a782917c5ee3e07e3497971f8ef8387a564abce0f344e92d8aba70532","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviFacultyWorkerHost.js#0005:NAVI_FACULTY_WORKER_SCHEMA","exportIndex":5,"name":"NAVI_FACULTY_WORKER_SCHEMA","kind":"constant","signature":"NAVI_FACULTY_WORKER_SCHEMA","summary":"NaviFacultyWorkerHost.js Executes one Faculty operation in a dedicated Worker nested inside an opaque-origin iframe. The worker has no ambient OS bridge. Its only host capability is the bounded `api.tool(name, args)` request channel supplied to `naviFaculty.run(input, api)`."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviFacultyWorkerHost.md","moduleTitle":"kernel/navi/NaviFacultyWorkerHost","source":"webgpu-os/kernel/navi/NaviFacultyWorkerHost.js","import":"/webgpu-os/kernel/navi/NaviFacultyWorkerHost.js","sourceHash":"075c562a782917c5ee3e07e3497971f8ef8387a564abce0f344e92d8aba70532","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviFacultyWorkerHost.js#0006:NAVI_FACULTY_WORKER_VERSION","exportIndex":6,"name":"NAVI_FACULTY_WORKER_VERSION","kind":"constant","signature":"NAVI_FACULTY_WORKER_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviFacultyWorkerHost.md","moduleTitle":"kernel/navi/NaviFacultyWorkerHost","source":"webgpu-os/kernel/navi/NaviFacultyWorkerHost.js","import":"/webgpu-os/kernel/navi/NaviFacultyWorkerHost.js","sourceHash":"075c562a782917c5ee3e07e3497971f8ef8387a564abce0f344e92d8aba70532","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviFacultyWorkerHost.js#0007:NAVI_FACULTY_WORKER_PROFILE","exportIndex":7,"name":"NAVI_FACULTY_WORKER_PROFILE","kind":"constant","signature":"NAVI_FACULTY_WORKER_PROFILE","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviFacultyWorkerHost.md","moduleTitle":"kernel/navi/NaviFacultyWorkerHost","source":"webgpu-os/kernel/navi/NaviFacultyWorkerHost.js","import":"/webgpu-os/kernel/navi/NaviFacultyWorkerHost.js","sourceHash":"075c562a782917c5ee3e07e3497971f8ef8387a564abce0f344e92d8aba70532","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviFacultyWorkerHost.js#0008:NAVI_FACULTY_WORKER_LIMITS","exportIndex":8,"name":"NAVI_FACULTY_WORKER_LIMITS","kind":"constant","signature":"NAVI_FACULTY_WORKER_LIMITS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviFacultyWorkerHost.md","moduleTitle":"kernel/navi/NaviFacultyWorkerHost","source":"webgpu-os/kernel/navi/NaviFacultyWorkerHost.js","import":"/webgpu-os/kernel/navi/NaviFacultyWorkerHost.js","sourceHash":"075c562a782917c5ee3e07e3497971f8ef8387a564abce0f344e92d8aba70532","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviFacultyWorkerHost.js#0009:NAVI_FACULTY_IFRAME_CSP","exportIndex":9,"name":"NAVI_FACULTY_IFRAME_CSP","kind":"constant","signature":"NAVI_FACULTY_IFRAME_CSP","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviFacultyWorkerHost.md","moduleTitle":"kernel/navi/NaviFacultyWorkerHost","source":"webgpu-os/kernel/navi/NaviFacultyWorkerHost.js","import":"/webgpu-os/kernel/navi/NaviFacultyWorkerHost.js","sourceHash":"075c562a782917c5ee3e07e3497971f8ef8387a564abce0f344e92d8aba70532","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviFacultyWorkerHost.js#0010:NAVI_FACULTY_PERMISSIONS_POLICY","exportIndex":10,"name":"NAVI_FACULTY_PERMISSIONS_POLICY","kind":"constant","signature":"NAVI_FACULTY_PERMISSIONS_POLICY","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviFeatureGate.md","moduleTitle":"kernel/navi/NaviFeatureGate","source":"webgpu-os/kernel/navi/NaviFeatureGate.js","import":"/webgpu-os/kernel/navi/NaviFeatureGate.js","sourceHash":"1e43b48aebb52b7a12045336de86b5aff621669727a3b33f2b84643b1d1911a8","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/NaviFeatureGate.js","title":"kernel/navi/NaviFeatureGate","summary":"Always-on compatibility policy for the kernel-owned Navi runtime. Navi is part of WebGPU OS rather than an operator-controlled feature. This object keeps the versioned read contract used by kernel services and repairs legacy rollout records. Authority still fails closed inside each operator-bound service; an app can neither enable nor disable the runtime.","exportCount":6}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviFeatureGate.md","moduleTitle":"kernel/navi/NaviFeatureGate","source":"webgpu-os/kernel/navi/NaviFeatureGate.js","import":"/webgpu-os/kernel/navi/NaviFeatureGate.js","sourceHash":"1e43b48aebb52b7a12045336de86b5aff621669727a3b33f2b84643b1d1911a8","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviFeatureGate.js#0000:NaviFeatureGatePersistenceError","exportIndex":0,"name":"NaviFeatureGatePersistenceError","kind":"class","signature":"class NaviFeatureGatePersistenceError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviFeatureGate.md","moduleTitle":"kernel/navi/NaviFeatureGate","source":"webgpu-os/kernel/navi/NaviFeatureGate.js","import":"/webgpu-os/kernel/navi/NaviFeatureGate.js","sourceHash":"1e43b48aebb52b7a12045336de86b5aff621669727a3b33f2b84643b1d1911a8","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviFeatureGate.js#0001:NaviFeatureGateGenerationError","exportIndex":1,"name":"NaviFeatureGateGenerationError","kind":"class","signature":"class NaviFeatureGateGenerationError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviFeatureGate.md","moduleTitle":"kernel/navi/NaviFeatureGate","source":"webgpu-os/kernel/navi/NaviFeatureGate.js","import":"/webgpu-os/kernel/navi/NaviFeatureGate.js","sourceHash":"1e43b48aebb52b7a12045336de86b5aff621669727a3b33f2b84643b1d1911a8","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviFeatureGate.js#0002:NaviFeatureGate","exportIndex":2,"name":"NaviFeatureGate","kind":"class","signature":"class NaviFeatureGate","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviFeatureGate.md","moduleTitle":"kernel/navi/NaviFeatureGate","source":"webgpu-os/kernel/navi/NaviFeatureGate.js","import":"/webgpu-os/kernel/navi/NaviFeatureGate.js","sourceHash":"1e43b48aebb52b7a12045336de86b5aff621669727a3b33f2b84643b1d1911a8","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviFeatureGate.js#0003:createNaviFeatureGate","exportIndex":3,"name":"createNaviFeatureGate","kind":"function","signature":"createNaviFeatureGate(options)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviFeatureGate.md","moduleTitle":"kernel/navi/NaviFeatureGate","source":"webgpu-os/kernel/navi/NaviFeatureGate.js","import":"/webgpu-os/kernel/navi/NaviFeatureGate.js","sourceHash":"1e43b48aebb52b7a12045336de86b5aff621669727a3b33f2b84643b1d1911a8","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviFeatureGate.js#0004:NAVI_FEATURE_GATE_VERSION","exportIndex":4,"name":"NAVI_FEATURE_GATE_VERSION","kind":"constant","signature":"NAVI_FEATURE_GATE_VERSION","summary":"Always-on compatibility policy for the kernel-owned Navi runtime. Navi is part of WebGPU OS rather than an operator-controlled feature. This object keeps the versioned read contract used by kernel services and repairs legacy rollout records. Authority still fails closed inside each operator-bound service; an app can neither enable nor disable the runtime."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviFeatureGate.md","moduleTitle":"kernel/navi/NaviFeatureGate","source":"webgpu-os/kernel/navi/NaviFeatureGate.js","import":"/webgpu-os/kernel/navi/NaviFeatureGate.js","sourceHash":"1e43b48aebb52b7a12045336de86b5aff621669727a3b33f2b84643b1d1911a8","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviFeatureGate.js#0005:NAVI_FEATURE_GATE_KEY","exportIndex":5,"name":"NAVI_FEATURE_GATE_KEY","kind":"constant","signature":"NAVI_FEATURE_GATE_KEY","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviGuidanceFacultyCandidate.md","moduleTitle":"kernel/navi/NaviGuidanceFacultyCandidate","source":"webgpu-os/kernel/navi/NaviGuidanceFacultyCandidate.js","import":"/webgpu-os/kernel/navi/NaviGuidanceFacultyCandidate.js","sourceHash":"f1e787bf3425aa8bda1dff30b97fbcc38523ff2d2ad18e3b064bed1ade2e9f55","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/NaviGuidanceFacultyCandidate.js","title":"kernel/navi/NaviGuidanceFacultyCandidate","summary":"Pure guidance-faculty-candidate-v2 derivation from observable receipts. This module cannot sign, persist, install, enable, or execute anything. It only creates a review-required candidate after two independent verified successes share one exact descriptor and verification profile binding.","exportCount":3}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviGuidanceFacultyCandidate.md","moduleTitle":"kernel/navi/NaviGuidanceFacultyCandidate","source":"webgpu-os/kernel/navi/NaviGuidanceFacultyCandidate.js","import":"/webgpu-os/kernel/navi/NaviGuidanceFacultyCandidate.js","sourceHash":"f1e787bf3425aa8bda1dff30b97fbcc38523ff2d2ad18e3b064bed1ade2e9f55","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviGuidanceFacultyCandidate.js#0000:deriveGuidanceFacultyCandidate","exportIndex":0,"name":"deriveGuidanceFacultyCandidate","kind":"function","signature":"async deriveGuidanceFacultyCandidate(raw = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviGuidanceFacultyCandidate.md","moduleTitle":"kernel/navi/NaviGuidanceFacultyCandidate","source":"webgpu-os/kernel/navi/NaviGuidanceFacultyCandidate.js","import":"/webgpu-os/kernel/navi/NaviGuidanceFacultyCandidate.js","sourceHash":"f1e787bf3425aa8bda1dff30b97fbcc38523ff2d2ad18e3b064bed1ade2e9f55","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviGuidanceFacultyCandidate.js#0001:reviewGuidanceFacultyCandidate","exportIndex":1,"name":"reviewGuidanceFacultyCandidate","kind":"function","signature":"reviewGuidanceFacultyCandidate(raw = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviGuidanceFacultyCandidate.md","moduleTitle":"kernel/navi/NaviGuidanceFacultyCandidate","source":"webgpu-os/kernel/navi/NaviGuidanceFacultyCandidate.js","import":"/webgpu-os/kernel/navi/NaviGuidanceFacultyCandidate.js","sourceHash":"f1e787bf3425aa8bda1dff30b97fbcc38523ff2d2ad18e3b064bed1ade2e9f55","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviGuidanceFacultyCandidate.js#0002:guidanceFacultyPromotionReadiness","exportIndex":2,"name":"guidanceFacultyPromotionReadiness","kind":"function","signature":"guidanceFacultyPromotionReadiness(raw = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviInvestigationAttestation.md","moduleTitle":"kernel/navi/NaviInvestigationAttestation","source":"webgpu-os/kernel/navi/NaviInvestigationAttestation.js","import":"/webgpu-os/kernel/navi/NaviInvestigationAttestation.js","sourceHash":"2d4d67768dbc10c13253975663257d27b641dd1f1abcc6070af9dc661a6e1d6f","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/NaviInvestigationAttestation.js","title":"kernel/navi/NaviInvestigationAttestation","summary":"","exportCount":5}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviInvestigationAttestation.md","moduleTitle":"kernel/navi/NaviInvestigationAttestation","source":"webgpu-os/kernel/navi/NaviInvestigationAttestation.js","import":"/webgpu-os/kernel/navi/NaviInvestigationAttestation.js","sourceHash":"2d4d67768dbc10c13253975663257d27b641dd1f1abcc6070af9dc661a6e1d6f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviInvestigationAttestation.js#0000:hashInvestigationSourceProjection","exportIndex":0,"name":"hashInvestigationSourceProjection","kind":"function","signature":"async hashInvestigationSourceProjection(value)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviInvestigationAttestation.md","moduleTitle":"kernel/navi/NaviInvestigationAttestation","source":"webgpu-os/kernel/navi/NaviInvestigationAttestation.js","import":"/webgpu-os/kernel/navi/NaviInvestigationAttestation.js","sourceHash":"2d4d67768dbc10c13253975663257d27b641dd1f1abcc6070af9dc661a6e1d6f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviInvestigationAttestation.js#0001:createInvestigationSourceProjection","exportIndex":1,"name":"createInvestigationSourceProjection","kind":"function","signature":"async createInvestigationSourceProjection(value, sourceResultHash)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviInvestigationAttestation.md","moduleTitle":"kernel/navi/NaviInvestigationAttestation","source":"webgpu-os/kernel/navi/NaviInvestigationAttestation.js","import":"/webgpu-os/kernel/navi/NaviInvestigationAttestation.js","sourceHash":"2d4d67768dbc10c13253975663257d27b641dd1f1abcc6070af9dc661a6e1d6f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviInvestigationAttestation.js#0002:verifyInvestigationSourceProjection","exportIndex":2,"name":"verifyInvestigationSourceProjection","kind":"function","signature":"async verifyInvestigationSourceProjection(value, sourceResultHash)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviInvestigationAttestation.md","moduleTitle":"kernel/navi/NaviInvestigationAttestation","source":"webgpu-os/kernel/navi/NaviInvestigationAttestation.js","import":"/webgpu-os/kernel/navi/NaviInvestigationAttestation.js","sourceHash":"2d4d67768dbc10c13253975663257d27b641dd1f1abcc6070af9dc661a6e1d6f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviInvestigationAttestation.js#0003:NAVI_INVESTIGATION_SOURCE_PROJECTION_FORMAT","exportIndex":3,"name":"NAVI_INVESTIGATION_SOURCE_PROJECTION_FORMAT","kind":"constant","signature":"NAVI_INVESTIGATION_SOURCE_PROJECTION_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviInvestigationAttestation.md","moduleTitle":"kernel/navi/NaviInvestigationAttestation","source":"webgpu-os/kernel/navi/NaviInvestigationAttestation.js","import":"/webgpu-os/kernel/navi/NaviInvestigationAttestation.js","sourceHash":"2d4d67768dbc10c13253975663257d27b641dd1f1abcc6070af9dc661a6e1d6f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviInvestigationAttestation.js#0004:NAVI_INVESTIGATION_SOURCE_PROJECTION_MAX_CHARS","exportIndex":4,"name":"NAVI_INVESTIGATION_SOURCE_PROJECTION_MAX_CHARS","kind":"constant","signature":"NAVI_INVESTIGATION_SOURCE_PROJECTION_MAX_CHARS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviInvestigationProofReviewService.md","moduleTitle":"kernel/navi/NaviInvestigationProofReviewService","source":"webgpu-os/kernel/navi/NaviInvestigationProofReviewService.js","import":"/webgpu-os/kernel/navi/NaviInvestigationProofReviewService.js","sourceHash":"e98bdbfd70f98a838549b48b58335d634d566c92289dc373698c8af1667c8f48","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/NaviInvestigationProofReviewService.js","title":"kernel/navi/NaviInvestigationProofReviewService","summary":"Kernel-owned human review for a bounded Navi investigation proof. This service never calls a model and never accepts provider-hidden reasoning. It projects exact, locally verified evidence into one immutable review request, obtains a one-shot ElicitationManager approval, then rechecks every mutable task/case binding before returning the semantic-verifier attestation expected by NaviInvestigationService.","exportCount":6}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviInvestigationProofReviewService.md","moduleTitle":"kernel/navi/NaviInvestigationProofReviewService","source":"webgpu-os/kernel/navi/NaviInvestigationProofReviewService.js","import":"/webgpu-os/kernel/navi/NaviInvestigationProofReviewService.js","sourceHash":"e98bdbfd70f98a838549b48b58335d634d566c92289dc373698c8af1667c8f48","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviInvestigationProofReviewService.js#0000:NaviInvestigationProofReviewError","exportIndex":0,"name":"NaviInvestigationProofReviewError","kind":"class","signature":"class NaviInvestigationProofReviewError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviInvestigationProofReviewService.md","moduleTitle":"kernel/navi/NaviInvestigationProofReviewService","source":"webgpu-os/kernel/navi/NaviInvestigationProofReviewService.js","import":"/webgpu-os/kernel/navi/NaviInvestigationProofReviewService.js","sourceHash":"e98bdbfd70f98a838549b48b58335d634d566c92289dc373698c8af1667c8f48","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviInvestigationProofReviewService.js#0001:NaviInvestigationProofReviewService","exportIndex":1,"name":"NaviInvestigationProofReviewService","kind":"class","signature":"class NaviInvestigationProofReviewService","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviInvestigationProofReviewService.md","moduleTitle":"kernel/navi/NaviInvestigationProofReviewService","source":"webgpu-os/kernel/navi/NaviInvestigationProofReviewService.js","import":"/webgpu-os/kernel/navi/NaviInvestigationProofReviewService.js","sourceHash":"e98bdbfd70f98a838549b48b58335d634d566c92289dc373698c8af1667c8f48","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviInvestigationProofReviewService.js#0002:NAVI_INVESTIGATION_PROOF_REVIEW_FORMAT","exportIndex":2,"name":"NAVI_INVESTIGATION_PROOF_REVIEW_FORMAT","kind":"constant","signature":"NAVI_INVESTIGATION_PROOF_REVIEW_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviInvestigationProofReviewService.md","moduleTitle":"kernel/navi/NaviInvestigationProofReviewService","source":"webgpu-os/kernel/navi/NaviInvestigationProofReviewService.js","import":"/webgpu-os/kernel/navi/NaviInvestigationProofReviewService.js","sourceHash":"e98bdbfd70f98a838549b48b58335d634d566c92289dc373698c8af1667c8f48","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviInvestigationProofReviewService.js#0003:NAVI_INVESTIGATION_PROOF_REVIEW_PROJECTION_FORMAT","exportIndex":3,"name":"NAVI_INVESTIGATION_PROOF_REVIEW_PROJECTION_FORMAT","kind":"constant","signature":"NAVI_INVESTIGATION_PROOF_REVIEW_PROJECTION_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviInvestigationProofReviewService.md","moduleTitle":"kernel/navi/NaviInvestigationProofReviewService","source":"webgpu-os/kernel/navi/NaviInvestigationProofReviewService.js","import":"/webgpu-os/kernel/navi/NaviInvestigationProofReviewService.js","sourceHash":"e98bdbfd70f98a838549b48b58335d634d566c92289dc373698c8af1667c8f48","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviInvestigationProofReviewService.js#0004:NAVI_INVESTIGATION_PROOF_REVIEW_RESULT_FORMAT","exportIndex":4,"name":"NAVI_INVESTIGATION_PROOF_REVIEW_RESULT_FORMAT","kind":"constant","signature":"NAVI_INVESTIGATION_PROOF_REVIEW_RESULT_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviInvestigationProofReviewService.md","moduleTitle":"kernel/navi/NaviInvestigationProofReviewService","source":"webgpu-os/kernel/navi/NaviInvestigationProofReviewService.js","import":"/webgpu-os/kernel/navi/NaviInvestigationProofReviewService.js","sourceHash":"e98bdbfd70f98a838549b48b58335d634d566c92289dc373698c8af1667c8f48","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviInvestigationProofReviewService.js#0005:NAVI_INVESTIGATION_PROOF_REVIEW_PROFILE_ID","exportIndex":5,"name":"NAVI_INVESTIGATION_PROOF_REVIEW_PROFILE_ID","kind":"constant","signature":"NAVI_INVESTIGATION_PROOF_REVIEW_PROFILE_ID","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviInvestigationService.md","moduleTitle":"kernel/navi/NaviInvestigationService","source":"webgpu-os/kernel/navi/NaviInvestigationService.js","import":"/webgpu-os/kernel/navi/NaviInvestigationService.js","sourceHash":"c40571df92a64b913c6dc999037a8369a19db07744e22d314bd1ec7e314851e5","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/NaviInvestigationService.js","title":"kernel/navi/NaviInvestigationService","summary":"NaviInvestigationService.js — deterministic, observation-only Sherlock episodes. The service owns case progression and evidence validation, but it cannot invoke tools, persist records, grant authority, or execute mutations. Callers must route reads through ToolRouter and submit the verified result.","exportCount":6}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviInvestigationService.md","moduleTitle":"kernel/navi/NaviInvestigationService","source":"webgpu-os/kernel/navi/NaviInvestigationService.js","import":"/webgpu-os/kernel/navi/NaviInvestigationService.js","sourceHash":"c40571df92a64b913c6dc999037a8369a19db07744e22d314bd1ec7e314851e5","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviInvestigationService.js#0000:NaviInvestigationService","exportIndex":0,"name":"NaviInvestigationService","kind":"class","signature":"class NaviInvestigationService","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviInvestigationService.md","moduleTitle":"kernel/navi/NaviInvestigationService","source":"webgpu-os/kernel/navi/NaviInvestigationService.js","import":"/webgpu-os/kernel/navi/NaviInvestigationService.js","sourceHash":"c40571df92a64b913c6dc999037a8369a19db07744e22d314bd1ec7e314851e5","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviInvestigationService.js#0001:NaviInvestigationError","exportIndex":1,"name":"NaviInvestigationError","kind":"class","signature":"class NaviInvestigationError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviInvestigationService.md","moduleTitle":"kernel/navi/NaviInvestigationService","source":"webgpu-os/kernel/navi/NaviInvestigationService.js","import":"/webgpu-os/kernel/navi/NaviInvestigationService.js","sourceHash":"c40571df92a64b913c6dc999037a8369a19db07744e22d314bd1ec7e314851e5","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviInvestigationService.js#0002:shouldInvestigate","exportIndex":2,"name":"shouldInvestigate","kind":"function","signature":"shouldInvestigate({ objective, taskKind = '', goalType = '' } = {})","summary":"Select Sherlock only for investigation-shaped work, never greetings."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviInvestigationService.md","moduleTitle":"kernel/navi/NaviInvestigationService","source":"webgpu-os/kernel/navi/NaviInvestigationService.js","import":"/webgpu-os/kernel/navi/NaviInvestigationService.js","sourceHash":"c40571df92a64b913c6dc999037a8369a19db07744e22d314bd1ec7e314851e5","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviInvestigationService.js#0003:validateDurableInvestigationProof","exportIndex":3,"name":"validateDurableInvestigationProof","kind":"function","signature":"async validateDurableInvestigationProof(caseRecord, evidenceRecords)","summary":"Recompute the durable semantic-proof binding without trusting the model interpretation that proposed it. This is shared by runtime restore and the cognition persistence boundary before a case can be signed."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviInvestigationService.md","moduleTitle":"kernel/navi/NaviInvestigationService","source":"webgpu-os/kernel/navi/NaviInvestigationService.js","import":"/webgpu-os/kernel/navi/NaviInvestigationService.js","sourceHash":"c40571df92a64b913c6dc999037a8369a19db07744e22d314bd1ec7e314851e5","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviInvestigationService.js#0004:NAVI_INVESTIGATION_LIMITS","exportIndex":4,"name":"NAVI_INVESTIGATION_LIMITS","kind":"constant","signature":"NAVI_INVESTIGATION_LIMITS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviInvestigationService.md","moduleTitle":"kernel/navi/NaviInvestigationService","source":"webgpu-os/kernel/navi/NaviInvestigationService.js","import":"/webgpu-os/kernel/navi/NaviInvestigationService.js","sourceHash":"c40571df92a64b913c6dc999037a8369a19db07744e22d314bd1ec7e314851e5","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviInvestigationService.js#0005:NAVI_INVESTIGATION_EPISODE","exportIndex":5,"name":"NAVI_INVESTIGATION_EPISODE","kind":"constant","signature":"NAVI_INVESTIGATION_EPISODE","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviKeyVault.md","moduleTitle":"kernel/navi/NaviKeyVault","source":"webgpu-os/kernel/navi/NaviKeyVault.js","import":"/webgpu-os/kernel/navi/NaviKeyVault.js","sourceHash":"28c7b32f1d960d0024a5ec960e0a6269c47a085c83ddca3e83d86a46de3caf15","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/NaviKeyVault.js","title":"kernel/navi/NaviKeyVault","summary":"Kernel-internal cryptographic boundary for Navi continuity. This module deliberately exposes no generic \"sign this key\" or \"decrypt this ciphertext\" syscall surface.  Its methods are intended to be held by the kernel continuity service, which supplies the policy decision before a bounded operation reaches this vault.","exportCount":15}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviKeyVault.md","moduleTitle":"kernel/navi/NaviKeyVault","source":"webgpu-os/kernel/navi/NaviKeyVault.js","import":"/webgpu-os/kernel/navi/NaviKeyVault.js","sourceHash":"28c7b32f1d960d0024a5ec960e0a6269c47a085c83ddca3e83d86a46de3caf15","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviKeyVault.js#0000:NaviKeyVaultError","exportIndex":0,"name":"NaviKeyVaultError","kind":"class","signature":"class NaviKeyVaultError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviKeyVault.md","moduleTitle":"kernel/navi/NaviKeyVault","source":"webgpu-os/kernel/navi/NaviKeyVault.js","import":"/webgpu-os/kernel/navi/NaviKeyVault.js","sourceHash":"28c7b32f1d960d0024a5ec960e0a6269c47a085c83ddca3e83d86a46de3caf15","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviKeyVault.js#0001:NaviKeyVault","exportIndex":1,"name":"NaviKeyVault","kind":"class","signature":"class NaviKeyVault","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviKeyVault.md","moduleTitle":"kernel/navi/NaviKeyVault","source":"webgpu-os/kernel/navi/NaviKeyVault.js","import":"/webgpu-os/kernel/navi/NaviKeyVault.js","sourceHash":"28c7b32f1d960d0024a5ec960e0a6269c47a085c83ddca3e83d86a46de3caf15","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviKeyVault.js#0002:naviConstantTimeEqual","exportIndex":2,"name":"naviConstantTimeEqual","kind":"function","signature":"naviConstantTimeEqual(left, right)","summary":"Constant-time comparison for equal-length byte strings."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviKeyVault.md","moduleTitle":"kernel/navi/NaviKeyVault","source":"webgpu-os/kernel/navi/NaviKeyVault.js","import":"/webgpu-os/kernel/navi/NaviKeyVault.js","sourceHash":"28c7b32f1d960d0024a5ec960e0a6269c47a085c83ddca3e83d86a46de3caf15","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviKeyVault.js#0003:NAVI_RECORD_ENVELOPE_FORMAT","exportIndex":3,"name":"NAVI_RECORD_ENVELOPE_FORMAT","kind":"constant","signature":"NAVI_RECORD_ENVELOPE_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviKeyVault.md","moduleTitle":"kernel/navi/NaviKeyVault","source":"webgpu-os/kernel/navi/NaviKeyVault.js","import":"/webgpu-os/kernel/navi/NaviKeyVault.js","sourceHash":"28c7b32f1d960d0024a5ec960e0a6269c47a085c83ddca3e83d86a46de3caf15","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviKeyVault.js#0004:NAVI_RECOVERY_BUNDLE_FORMAT","exportIndex":4,"name":"NAVI_RECOVERY_BUNDLE_FORMAT","kind":"constant","signature":"NAVI_RECOVERY_BUNDLE_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviKeyVault.md","moduleTitle":"kernel/navi/NaviKeyVault","source":"webgpu-os/kernel/navi/NaviKeyVault.js","import":"/webgpu-os/kernel/navi/NaviKeyVault.js","sourceHash":"28c7b32f1d960d0024a5ec960e0a6269c47a085c83ddca3e83d86a46de3caf15","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviKeyVault.js#0005:NAVI_RECOVERY_PAYLOAD_FORMAT","exportIndex":5,"name":"NAVI_RECOVERY_PAYLOAD_FORMAT","kind":"constant","signature":"NAVI_RECOVERY_PAYLOAD_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviKeyVault.md","moduleTitle":"kernel/navi/NaviKeyVault","source":"webgpu-os/kernel/navi/NaviKeyVault.js","import":"/webgpu-os/kernel/navi/NaviKeyVault.js","sourceHash":"28c7b32f1d960d0024a5ec960e0a6269c47a085c83ddca3e83d86a46de3caf15","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviKeyVault.js#0006:NAVI_OPERATIONAL_CERTIFICATE_FORMAT","exportIndex":6,"name":"NAVI_OPERATIONAL_CERTIFICATE_FORMAT","kind":"constant","signature":"NAVI_OPERATIONAL_CERTIFICATE_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviKeyVault.md","moduleTitle":"kernel/navi/NaviKeyVault","source":"webgpu-os/kernel/navi/NaviKeyVault.js","import":"/webgpu-os/kernel/navi/NaviKeyVault.js","sourceHash":"28c7b32f1d960d0024a5ec960e0a6269c47a085c83ddca3e83d86a46de3caf15","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviKeyVault.js#0007:NAVI_OPERATIONAL_SIGNATURE_FORMAT","exportIndex":7,"name":"NAVI_OPERATIONAL_SIGNATURE_FORMAT","kind":"constant","signature":"NAVI_OPERATIONAL_SIGNATURE_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviKeyVault.md","moduleTitle":"kernel/navi/NaviKeyVault","source":"webgpu-os/kernel/navi/NaviKeyVault.js","import":"/webgpu-os/kernel/navi/NaviKeyVault.js","sourceHash":"28c7b32f1d960d0024a5ec960e0a6269c47a085c83ddca3e83d86a46de3caf15","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviKeyVault.js#0008:NAVI_CONTINUITY_SIGNATURE_FORMAT","exportIndex":8,"name":"NAVI_CONTINUITY_SIGNATURE_FORMAT","kind":"constant","signature":"NAVI_CONTINUITY_SIGNATURE_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviKeyVault.md","moduleTitle":"kernel/navi/NaviKeyVault","source":"webgpu-os/kernel/navi/NaviKeyVault.js","import":"/webgpu-os/kernel/navi/NaviKeyVault.js","sourceHash":"28c7b32f1d960d0024a5ec960e0a6269c47a085c83ddca3e83d86a46de3caf15","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviKeyVault.js#0009:NAVI_PERSISTENT_STATE_FORMAT","exportIndex":9,"name":"NAVI_PERSISTENT_STATE_FORMAT","kind":"constant","signature":"NAVI_PERSISTENT_STATE_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviKeyVault.md","moduleTitle":"kernel/navi/NaviKeyVault","source":"webgpu-os/kernel/navi/NaviKeyVault.js","import":"/webgpu-os/kernel/navi/NaviKeyVault.js","sourceHash":"28c7b32f1d960d0024a5ec960e0a6269c47a085c83ddca3e83d86a46de3caf15","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviKeyVault.js#0010:NAVI_OPERATIONAL_ROTATION_FORMAT","exportIndex":10,"name":"NAVI_OPERATIONAL_ROTATION_FORMAT","kind":"constant","signature":"NAVI_OPERATIONAL_ROTATION_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviKeyVault.md","moduleTitle":"kernel/navi/NaviKeyVault","source":"webgpu-os/kernel/navi/NaviKeyVault.js","import":"/webgpu-os/kernel/navi/NaviKeyVault.js","sourceHash":"28c7b32f1d960d0024a5ec960e0a6269c47a085c83ddca3e83d86a46de3caf15","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviKeyVault.js#0011:NAVI_OPERATIONAL_RECOVERY_FORMAT","exportIndex":11,"name":"NAVI_OPERATIONAL_RECOVERY_FORMAT","kind":"constant","signature":"NAVI_OPERATIONAL_RECOVERY_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviKeyVault.md","moduleTitle":"kernel/navi/NaviKeyVault","source":"webgpu-os/kernel/navi/NaviKeyVault.js","import":"/webgpu-os/kernel/navi/NaviKeyVault.js","sourceHash":"28c7b32f1d960d0024a5ec960e0a6269c47a085c83ddca3e83d86a46de3caf15","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviKeyVault.js#0012:NAVI_WEBAUTHN_PRF_DESCRIPTOR_FORMAT","exportIndex":12,"name":"NAVI_WEBAUTHN_PRF_DESCRIPTOR_FORMAT","kind":"constant","signature":"NAVI_WEBAUTHN_PRF_DESCRIPTOR_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviKeyVault.md","moduleTitle":"kernel/navi/NaviKeyVault","source":"webgpu-os/kernel/navi/NaviKeyVault.js","import":"/webgpu-os/kernel/navi/NaviKeyVault.js","sourceHash":"28c7b32f1d960d0024a5ec960e0a6269c47a085c83ddca3e83d86a46de3caf15","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviKeyVault.js#0013:NAVI_ANCESTRY_ATTESTATION_SCOPE","exportIndex":13,"name":"NAVI_ANCESTRY_ATTESTATION_SCOPE","kind":"constant","signature":"NAVI_ANCESTRY_ATTESTATION_SCOPE","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviKeyVault.md","moduleTitle":"kernel/navi/NaviKeyVault","source":"webgpu-os/kernel/navi/NaviKeyVault.js","import":"/webgpu-os/kernel/navi/NaviKeyVault.js","sourceHash":"28c7b32f1d960d0024a5ec960e0a6269c47a085c83ddca3e83d86a46de3caf15","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviKeyVault.js#0014:NAVI_RECOVERY_FACTOR","exportIndex":14,"name":"NAVI_RECOVERY_FACTOR","kind":"constant","signature":"NAVI_RECOVERY_FACTOR","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviLegacyKnowledgeImportService.md","moduleTitle":"kernel/navi/NaviLegacyKnowledgeImportService","source":"webgpu-os/kernel/navi/NaviLegacyKnowledgeImportService.js","import":"/webgpu-os/kernel/navi/NaviLegacyKnowledgeImportService.js","sourceHash":"b58b6370b84cdcd8db5cb4efec6b201c7c6a200668ad4c83acceeefb876fe404","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/NaviLegacyKnowledgeImportService.js","title":"kernel/navi/NaviLegacyKnowledgeImportService","summary":"Idempotent, non-destructive migration of bounded AI Echo knowledge into the Navi causal-memory weave. The caller supplies a read-only snapshot assembled from legacy AI Echo state. This service never receives the legacy Store, so it cannot reset, delete, or rewrite that source. Each normalized source item receives a content-derived event ID; retries verify the existing signed event instead of appending a duplicate.","exportCount":8}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviLegacyKnowledgeImportService.md","moduleTitle":"kernel/navi/NaviLegacyKnowledgeImportService","source":"webgpu-os/kernel/navi/NaviLegacyKnowledgeImportService.js","import":"/webgpu-os/kernel/navi/NaviLegacyKnowledgeImportService.js","sourceHash":"b58b6370b84cdcd8db5cb4efec6b201c7c6a200668ad4c83acceeefb876fe404","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviLegacyKnowledgeImportService.js#0000:NaviLegacyKnowledgeImportError","exportIndex":0,"name":"NaviLegacyKnowledgeImportError","kind":"class","signature":"class NaviLegacyKnowledgeImportError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviLegacyKnowledgeImportService.md","moduleTitle":"kernel/navi/NaviLegacyKnowledgeImportService","source":"webgpu-os/kernel/navi/NaviLegacyKnowledgeImportService.js","import":"/webgpu-os/kernel/navi/NaviLegacyKnowledgeImportService.js","sourceHash":"b58b6370b84cdcd8db5cb4efec6b201c7c6a200668ad4c83acceeefb876fe404","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviLegacyKnowledgeImportService.js#0001:NaviLegacyKnowledgeImportService","exportIndex":1,"name":"NaviLegacyKnowledgeImportService","kind":"class","signature":"class NaviLegacyKnowledgeImportService","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviLegacyKnowledgeImportService.md","moduleTitle":"kernel/navi/NaviLegacyKnowledgeImportService","source":"webgpu-os/kernel/navi/NaviLegacyKnowledgeImportService.js","import":"/webgpu-os/kernel/navi/NaviLegacyKnowledgeImportService.js","sourceHash":"b58b6370b84cdcd8db5cb4efec6b201c7c6a200668ad4c83acceeefb876fe404","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviLegacyKnowledgeImportService.js#0002:normalizeLegacyKnowledgeSnapshot","exportIndex":2,"name":"normalizeLegacyKnowledgeSnapshot","kind":"function","signature":"normalizeLegacyKnowledgeSnapshot(input)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviLegacyKnowledgeImportService.md","moduleTitle":"kernel/navi/NaviLegacyKnowledgeImportService","source":"webgpu-os/kernel/navi/NaviLegacyKnowledgeImportService.js","import":"/webgpu-os/kernel/navi/NaviLegacyKnowledgeImportService.js","sourceHash":"b58b6370b84cdcd8db5cb4efec6b201c7c6a200668ad4c83acceeefb876fe404","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviLegacyKnowledgeImportService.js#0003:hashLegacyKnowledgeSnapshot","exportIndex":3,"name":"hashLegacyKnowledgeSnapshot","kind":"function","signature":"async hashLegacyKnowledgeSnapshot(snapshot)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviLegacyKnowledgeImportService.md","moduleTitle":"kernel/navi/NaviLegacyKnowledgeImportService","source":"webgpu-os/kernel/navi/NaviLegacyKnowledgeImportService.js","import":"/webgpu-os/kernel/navi/NaviLegacyKnowledgeImportService.js","sourceHash":"b58b6370b84cdcd8db5cb4efec6b201c7c6a200668ad4c83acceeefb876fe404","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviLegacyKnowledgeImportService.js#0004:verifyNaviLegacyKnowledgeImportReceipt","exportIndex":4,"name":"verifyNaviLegacyKnowledgeImportReceipt","kind":"function","signature":"async verifyNaviLegacyKnowledgeImportReceipt(receipt)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviLegacyKnowledgeImportService.md","moduleTitle":"kernel/navi/NaviLegacyKnowledgeImportService","source":"webgpu-os/kernel/navi/NaviLegacyKnowledgeImportService.js","import":"/webgpu-os/kernel/navi/NaviLegacyKnowledgeImportService.js","sourceHash":"b58b6370b84cdcd8db5cb4efec6b201c7c6a200668ad4c83acceeefb876fe404","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviLegacyKnowledgeImportService.js#0005:NAVI_LEGACY_KNOWLEDGE_SNAPSHOT_FORMAT","exportIndex":5,"name":"NAVI_LEGACY_KNOWLEDGE_SNAPSHOT_FORMAT","kind":"constant","signature":"NAVI_LEGACY_KNOWLEDGE_SNAPSHOT_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviLegacyKnowledgeImportService.md","moduleTitle":"kernel/navi/NaviLegacyKnowledgeImportService","source":"webgpu-os/kernel/navi/NaviLegacyKnowledgeImportService.js","import":"/webgpu-os/kernel/navi/NaviLegacyKnowledgeImportService.js","sourceHash":"b58b6370b84cdcd8db5cb4efec6b201c7c6a200668ad4c83acceeefb876fe404","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviLegacyKnowledgeImportService.js#0006:NAVI_LEGACY_KNOWLEDGE_ITEM_FORMAT","exportIndex":6,"name":"NAVI_LEGACY_KNOWLEDGE_ITEM_FORMAT","kind":"constant","signature":"NAVI_LEGACY_KNOWLEDGE_ITEM_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviLegacyKnowledgeImportService.md","moduleTitle":"kernel/navi/NaviLegacyKnowledgeImportService","source":"webgpu-os/kernel/navi/NaviLegacyKnowledgeImportService.js","import":"/webgpu-os/kernel/navi/NaviLegacyKnowledgeImportService.js","sourceHash":"b58b6370b84cdcd8db5cb4efec6b201c7c6a200668ad4c83acceeefb876fe404","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviLegacyKnowledgeImportService.js#0007:NAVI_LEGACY_KNOWLEDGE_IMPORT_RECEIPT_FORMAT","exportIndex":7,"name":"NAVI_LEGACY_KNOWLEDGE_IMPORT_RECEIPT_FORMAT","kind":"constant","signature":"NAVI_LEGACY_KNOWLEDGE_IMPORT_RECEIPT_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviLegacyMigrationService.md","moduleTitle":"kernel/navi/NaviLegacyMigrationService","source":"webgpu-os/kernel/navi/NaviLegacyMigrationService.js","import":"/webgpu-os/kernel/navi/NaviLegacyMigrationService.js","sourceHash":"ac2d702f29ba97e3f79851f9755c1dec1e0545e9e9ff32db18163c5e4771fc88","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/NaviLegacyMigrationService.js","title":"kernel/navi/NaviLegacyMigrationService","summary":"Explicit, rollback-safe migration of unreleased AI Echo-owned state. Phase 0 creates and verifies a complete /user backup while navi-v1 is off. This Phase 1 service consumes that exact archive only after the always-on runtime is operator-bound and the operator supplies an exact confirmation. It archives the two AI Echo-owned surfaces, resets them, and never touches unrelated /user paths. A failed reset is compensated from the local migration archive.","exportCount":6}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviLegacyMigrationService.md","moduleTitle":"kernel/navi/NaviLegacyMigrationService","source":"webgpu-os/kernel/navi/NaviLegacyMigrationService.js","import":"/webgpu-os/kernel/navi/NaviLegacyMigrationService.js","sourceHash":"ac2d702f29ba97e3f79851f9755c1dec1e0545e9e9ff32db18163c5e4771fc88","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviLegacyMigrationService.js#0000:NaviLegacyMigrationService","exportIndex":0,"name":"NaviLegacyMigrationService","kind":"class","signature":"class NaviLegacyMigrationService","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviLegacyMigrationService.md","moduleTitle":"kernel/navi/NaviLegacyMigrationService","source":"webgpu-os/kernel/navi/NaviLegacyMigrationService.js","import":"/webgpu-os/kernel/navi/NaviLegacyMigrationService.js","sourceHash":"ac2d702f29ba97e3f79851f9755c1dec1e0545e9e9ff32db18163c5e4771fc88","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviLegacyMigrationService.js#0001:validateNaviLegacyMigrationReceipt","exportIndex":1,"name":"validateNaviLegacyMigrationReceipt","kind":"function","signature":"validateNaviLegacyMigrationReceipt(receipt)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviLegacyMigrationService.md","moduleTitle":"kernel/navi/NaviLegacyMigrationService","source":"webgpu-os/kernel/navi/NaviLegacyMigrationService.js","import":"/webgpu-os/kernel/navi/NaviLegacyMigrationService.js","sourceHash":"ac2d702f29ba97e3f79851f9755c1dec1e0545e9e9ff32db18163c5e4771fc88","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviLegacyMigrationService.js#0002:NAVI_LEGACY_MIGRATION_FORMAT","exportIndex":2,"name":"NAVI_LEGACY_MIGRATION_FORMAT","kind":"constant","signature":"NAVI_LEGACY_MIGRATION_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviLegacyMigrationService.md","moduleTitle":"kernel/navi/NaviLegacyMigrationService","source":"webgpu-os/kernel/navi/NaviLegacyMigrationService.js","import":"/webgpu-os/kernel/navi/NaviLegacyMigrationService.js","sourceHash":"ac2d702f29ba97e3f79851f9755c1dec1e0545e9e9ff32db18163c5e4771fc88","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviLegacyMigrationService.js#0003:NAVI_LEGACY_MIGRATION_SCHEMA_VERSION","exportIndex":3,"name":"NAVI_LEGACY_MIGRATION_SCHEMA_VERSION","kind":"constant","signature":"NAVI_LEGACY_MIGRATION_SCHEMA_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviLegacyMigrationService.md","moduleTitle":"kernel/navi/NaviLegacyMigrationService","source":"webgpu-os/kernel/navi/NaviLegacyMigrationService.js","import":"/webgpu-os/kernel/navi/NaviLegacyMigrationService.js","sourceHash":"ac2d702f29ba97e3f79851f9755c1dec1e0545e9e9ff32db18163c5e4771fc88","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviLegacyMigrationService.js#0004:NAVI_LEGACY_MIGRATION_CONFIRMATION","exportIndex":4,"name":"NAVI_LEGACY_MIGRATION_CONFIRMATION","kind":"constant","signature":"NAVI_LEGACY_MIGRATION_CONFIRMATION","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviLegacyMigrationService.md","moduleTitle":"kernel/navi/NaviLegacyMigrationService","source":"webgpu-os/kernel/navi/NaviLegacyMigrationService.js","import":"/webgpu-os/kernel/navi/NaviLegacyMigrationService.js","sourceHash":"ac2d702f29ba97e3f79851f9755c1dec1e0545e9e9ff32db18163c5e4771fc88","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviLegacyMigrationService.js#0005:NAVI_LEGACY_MIGRATION_ARCHIVE_ROOT","exportIndex":5,"name":"NAVI_LEGACY_MIGRATION_ARCHIVE_ROOT","kind":"constant","signature":"NAVI_LEGACY_MIGRATION_ARCHIVE_ROOT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviLineage.md","moduleTitle":"kernel/navi/NaviLineage","source":"webgpu-os/kernel/navi/NaviLineage.js","import":"/webgpu-os/kernel/navi/NaviLineage.js","sourceHash":"270dc8e5896c52482b821079bf16972730aefa4242d9ecfdaec0656cf053407e","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/NaviLineage.js","title":"kernel/navi/NaviLineage","summary":"NaviLineage.js — linked, signed Navi continuity history. The ledger stores strict `navi-lineage-event-v1` contracts plus the exact payload whose hash the event commits to. Operational rotation takes effect after its rotation event, so the old key remains valid for historical verification but cannot authorize another event. Recovery and revocation are continuity-key operations. No generic signing primitive is exported.","exportCount":8}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviLineage.md","moduleTitle":"kernel/navi/NaviLineage","source":"webgpu-os/kernel/navi/NaviLineage.js","import":"/webgpu-os/kernel/navi/NaviLineage.js","sourceHash":"270dc8e5896c52482b821079bf16972730aefa4242d9ecfdaec0656cf053407e","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviLineage.js#0000:NaviLineageError","exportIndex":0,"name":"NaviLineageError","kind":"class","signature":"class NaviLineageError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviLineage.md","moduleTitle":"kernel/navi/NaviLineage","source":"webgpu-os/kernel/navi/NaviLineage.js","import":"/webgpu-os/kernel/navi/NaviLineage.js","sourceHash":"270dc8e5896c52482b821079bf16972730aefa4242d9ecfdaec0656cf053407e","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviLineage.js#0001:NaviLineageVerificationError","exportIndex":1,"name":"NaviLineageVerificationError","kind":"class","signature":"class NaviLineageVerificationError extends NaviLineageError","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviLineage.md","moduleTitle":"kernel/navi/NaviLineage","source":"webgpu-os/kernel/navi/NaviLineage.js","import":"/webgpu-os/kernel/navi/NaviLineage.js","sourceHash":"270dc8e5896c52482b821079bf16972730aefa4242d9ecfdaec0656cf053407e","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviLineage.js#0002:NaviLineageLedger","exportIndex":2,"name":"NaviLineageLedger","kind":"class","signature":"class NaviLineageLedger","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviLineage.md","moduleTitle":"kernel/navi/NaviLineage","source":"webgpu-os/kernel/navi/NaviLineage.js","import":"/webgpu-os/kernel/navi/NaviLineage.js","sourceHash":"270dc8e5896c52482b821079bf16972730aefa4242d9ecfdaec0656cf053407e","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviLineage.js#0003:hashNaviLineagePayload","exportIndex":3,"name":"hashNaviLineagePayload","kind":"function","signature":"hashNaviLineagePayload(payload)","summary":"Hash a strict JSON lineage payload using the engine's canonical SHA-256 path."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviLineage.md","moduleTitle":"kernel/navi/NaviLineage","source":"webgpu-os/kernel/navi/NaviLineage.js","import":"/webgpu-os/kernel/navi/NaviLineage.js","sourceHash":"270dc8e5896c52482b821079bf16972730aefa4242d9ecfdaec0656cf053407e","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviLineage.js#0004:canonicalNaviOperationalCertificateBytes","exportIndex":4,"name":"canonicalNaviOperationalCertificateBytes","kind":"function","signature":"canonicalNaviOperationalCertificateBytes(certificate)","summary":"Return deterministic bytes suitable for an external continuity-certificate verifier."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviLineage.md","moduleTitle":"kernel/navi/NaviLineage","source":"webgpu-os/kernel/navi/NaviLineage.js","import":"/webgpu-os/kernel/navi/NaviLineage.js","sourceHash":"270dc8e5896c52482b821079bf16972730aefa4242d9ecfdaec0656cf053407e","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviLineage.js#0005:verifyNaviLineage","exportIndex":5,"name":"verifyNaviLineage","kind":"function","signature":"async verifyNaviLineage(entries, { expectedNaviId, expectedBranchId = null, expectedHeadHash = null, expectedEventCount = null, continuityKey, operationalKeys = [], keyResolver = null, certificateVerifier = null, logger = null, } = {})","summary":"Verify the complete chain, payload commitments, signature policy, key certificates, key activation windows, and rotation/recovery transitions."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviLineage.md","moduleTitle":"kernel/navi/NaviLineage","source":"webgpu-os/kernel/navi/NaviLineage.js","import":"/webgpu-os/kernel/navi/NaviLineage.js","sourceHash":"270dc8e5896c52482b821079bf16972730aefa4242d9ecfdaec0656cf053407e","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviLineage.js#0006:NAVI_LINEAGE_PAYLOAD_SCHEMA","exportIndex":6,"name":"NAVI_LINEAGE_PAYLOAD_SCHEMA","kind":"constant","signature":"NAVI_LINEAGE_PAYLOAD_SCHEMA","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviLineage.md","moduleTitle":"kernel/navi/NaviLineage","source":"webgpu-os/kernel/navi/NaviLineage.js","import":"/webgpu-os/kernel/navi/NaviLineage.js","sourceHash":"270dc8e5896c52482b821079bf16972730aefa4242d9ecfdaec0656cf053407e","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviLineage.js#0007:NAVI_OPERATIONAL_CERTIFICATE_FORMAT","exportIndex":7,"name":"NAVI_OPERATIONAL_CERTIFICATE_FORMAT","kind":"constant","signature":"NAVI_OPERATIONAL_CERTIFICATE_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviMaintenanceScheduler.md","moduleTitle":"kernel/navi/NaviMaintenanceScheduler","source":"webgpu-os/kernel/navi/NaviMaintenanceScheduler.js","import":"/webgpu-os/kernel/navi/NaviMaintenanceScheduler.js","sourceHash":"3236fe759ca4a7b824357898e72058827bd572698de9bb7d60c3f60abfdda648","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/NaviMaintenanceScheduler.js","title":"kernel/navi/NaviMaintenanceScheduler","summary":"Cooperative, lifecycle-aware scheduler for encrypted Navi maintenance. All Navi migrations and index hydration share one queue. A browser idle grant advances at most one bounded page. An idle callback with no available budget advances nothing; its timeout, or the delayed timer used where idle callbacks do not exist, is the bounded fallback grant.","exportCount":2}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviMaintenanceScheduler.md","moduleTitle":"kernel/navi/NaviMaintenanceScheduler","source":"webgpu-os/kernel/navi/NaviMaintenanceScheduler.js","import":"/webgpu-os/kernel/navi/NaviMaintenanceScheduler.js","sourceHash":"3236fe759ca4a7b824357898e72058827bd572698de9bb7d60c3f60abfdda648","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviMaintenanceScheduler.js#0000:NaviMaintenanceScheduler","exportIndex":0,"name":"NaviMaintenanceScheduler","kind":"class","signature":"class NaviMaintenanceScheduler","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviMaintenanceScheduler.md","moduleTitle":"kernel/navi/NaviMaintenanceScheduler","source":"webgpu-os/kernel/navi/NaviMaintenanceScheduler.js","import":"/webgpu-os/kernel/navi/NaviMaintenanceScheduler.js","sourceHash":"3236fe759ca4a7b824357898e72058827bd572698de9bb7d60c3f60abfdda648","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviMaintenanceScheduler.js#0001:sharedNaviMaintenanceScheduler","exportIndex":1,"name":"sharedNaviMaintenanceScheduler","kind":"function","signature":"sharedNaviMaintenanceScheduler()","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviManifestationAdapterRegistry.md","moduleTitle":"kernel/navi/NaviManifestationAdapterRegistry","source":"webgpu-os/kernel/navi/NaviManifestationAdapterRegistry.js","import":"/webgpu-os/kernel/navi/NaviManifestationAdapterRegistry.js","sourceHash":"188a71f560f30734d02bc26a0741add85ee0295607cf822d59a5b9f887dfa7d3","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/NaviManifestationAdapterRegistry.js","title":"kernel/navi/NaviManifestationAdapterRegistry","summary":"Kernel-only registry for Navi Manifestation adapters. The descriptors are inert declarations. Live engine, audio, vehicle, or network objects are attached by trusted kernel integrations and are never accepted through an app syscall. The registry therefore exposes a narrow body boundary without turning an avatar, entity, or runtime object into Navi identity authority.","exportCount":3}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviManifestationAdapterRegistry.md","moduleTitle":"kernel/navi/NaviManifestationAdapterRegistry","source":"webgpu-os/kernel/navi/NaviManifestationAdapterRegistry.js","import":"/webgpu-os/kernel/navi/NaviManifestationAdapterRegistry.js","sourceHash":"188a71f560f30734d02bc26a0741add85ee0295607cf822d59a5b9f887dfa7d3","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviManifestationAdapterRegistry.js#0000:NaviManifestationAdapterRegistry","exportIndex":0,"name":"NaviManifestationAdapterRegistry","kind":"class","signature":"class NaviManifestationAdapterRegistry","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviManifestationAdapterRegistry.md","moduleTitle":"kernel/navi/NaviManifestationAdapterRegistry","source":"webgpu-os/kernel/navi/NaviManifestationAdapterRegistry.js","import":"/webgpu-os/kernel/navi/NaviManifestationAdapterRegistry.js","sourceHash":"188a71f560f30734d02bc26a0741add85ee0295607cf822d59a5b9f887dfa7d3","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviManifestationAdapterRegistry.js#0001:NAVI_MANIFESTATION_BUILTIN_ADAPTERS","exportIndex":1,"name":"NAVI_MANIFESTATION_BUILTIN_ADAPTERS","kind":"re-export","signature":"NAVI_MANIFESTATION_BUILTIN_ADAPTERS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviManifestationAdapterRegistry.md","moduleTitle":"kernel/navi/NaviManifestationAdapterRegistry","source":"webgpu-os/kernel/navi/NaviManifestationAdapterRegistry.js","import":"/webgpu-os/kernel/navi/NaviManifestationAdapterRegistry.js","sourceHash":"188a71f560f30734d02bc26a0741add85ee0295607cf822d59a5b9f887dfa7d3","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviManifestationAdapterRegistry.js#0002:createConstructManifestationAdapter","exportIndex":2,"name":"createConstructManifestationAdapter","kind":"re-export","signature":"createConstructManifestationAdapter","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviManifestationService.md","moduleTitle":"kernel/navi/NaviManifestationService","source":"webgpu-os/kernel/navi/NaviManifestationService.js","import":"/webgpu-os/kernel/navi/NaviManifestationService.js","sourceHash":"ee5011224276674b0546709dbf2602fc39c6b615d4a372740ab9ff5b141cc359","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/NaviManifestationService.js","title":"kernel/navi/NaviManifestationService","summary":"Kernel-owned Navi Manifestation and task-handoff runtime. Models, bodies, voices, avatars, and apps remain replaceable presentation or execution surfaces. Every durable registration and handoff is an encrypted, purpose-signed contract bound to the continuity-root Navi identifier.","exportCount":7}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviManifestationService.md","moduleTitle":"kernel/navi/NaviManifestationService","source":"webgpu-os/kernel/navi/NaviManifestationService.js","import":"/webgpu-os/kernel/navi/NaviManifestationService.js","sourceHash":"ee5011224276674b0546709dbf2602fc39c6b615d4a372740ab9ff5b141cc359","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviManifestationService.js#0000:NaviManifestationServiceError","exportIndex":0,"name":"NaviManifestationServiceError","kind":"class","signature":"class NaviManifestationServiceError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviManifestationService.md","moduleTitle":"kernel/navi/NaviManifestationService","source":"webgpu-os/kernel/navi/NaviManifestationService.js","import":"/webgpu-os/kernel/navi/NaviManifestationService.js","sourceHash":"ee5011224276674b0546709dbf2602fc39c6b615d4a372740ab9ff5b141cc359","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviManifestationService.js#0001:NaviManifestationService","exportIndex":1,"name":"NaviManifestationService","kind":"class","signature":"class NaviManifestationService","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviManifestationService.md","moduleTitle":"kernel/navi/NaviManifestationService","source":"webgpu-os/kernel/navi/NaviManifestationService.js","import":"/webgpu-os/kernel/navi/NaviManifestationService.js","sourceHash":"ee5011224276674b0546709dbf2602fc39c6b615d4a372740ab9ff5b141cc359","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviManifestationService.js#0002:NAVI_PRIMARY_MANIFESTATION_ID","exportIndex":2,"name":"NAVI_PRIMARY_MANIFESTATION_ID","kind":"constant","signature":"NAVI_PRIMARY_MANIFESTATION_ID","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviManifestationService.md","moduleTitle":"kernel/navi/NaviManifestationService","source":"webgpu-os/kernel/navi/NaviManifestationService.js","import":"/webgpu-os/kernel/navi/NaviManifestationService.js","sourceHash":"ee5011224276674b0546709dbf2602fc39c6b615d4a372740ab9ff5b141cc359","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviManifestationService.js#0003:NAVI_MANIFESTATION_BRANCH_ID","exportIndex":3,"name":"NAVI_MANIFESTATION_BRANCH_ID","kind":"constant","signature":"NAVI_MANIFESTATION_BRANCH_ID","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviManifestationService.md","moduleTitle":"kernel/navi/NaviManifestationService","source":"webgpu-os/kernel/navi/NaviManifestationService.js","import":"/webgpu-os/kernel/navi/NaviManifestationService.js","sourceHash":"ee5011224276674b0546709dbf2602fc39c6b615d4a372740ab9ff5b141cc359","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviManifestationService.js#0004:NAVI_MANIFESTATION_CLASSIFICATION","exportIndex":4,"name":"NAVI_MANIFESTATION_CLASSIFICATION","kind":"constant","signature":"NAVI_MANIFESTATION_CLASSIFICATION","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviManifestationService.md","moduleTitle":"kernel/navi/NaviManifestationService","source":"webgpu-os/kernel/navi/NaviManifestationService.js","import":"/webgpu-os/kernel/navi/NaviManifestationService.js","sourceHash":"ee5011224276674b0546709dbf2602fc39c6b615d4a372740ab9ff5b141cc359","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviManifestationService.js#0005:NAVI_HANDOFF_CLASSIFICATION","exportIndex":5,"name":"NAVI_HANDOFF_CLASSIFICATION","kind":"constant","signature":"NAVI_HANDOFF_CLASSIFICATION","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviManifestationService.md","moduleTitle":"kernel/navi/NaviManifestationService","source":"webgpu-os/kernel/navi/NaviManifestationService.js","import":"/webgpu-os/kernel/navi/NaviManifestationService.js","sourceHash":"ee5011224276674b0546709dbf2602fc39c6b615d4a372740ab9ff5b141cc359","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviManifestationService.js#0006:NAVI_HANDOFF_DEFAULT_TTL_MS","exportIndex":6,"name":"NAVI_HANDOFF_DEFAULT_TTL_MS","kind":"constant","signature":"NAVI_HANDOFF_DEFAULT_TTL_MS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviMemoryService.md","moduleTitle":"kernel/navi/NaviMemoryService","source":"webgpu-os/kernel/navi/NaviMemoryService.js","import":"/webgpu-os/kernel/navi/NaviMemoryService.js","sourceHash":"73dd8d642a500a2bc6b6b650832aed955f400f0386fb22b0e763f540566cc8e6","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/NaviMemoryService.js","title":"kernel/navi/NaviMemoryService","summary":"Kernel-owned causal memory over the existing encrypted cognition Store. Signed events are append-only. Their payloads live in separately wrapped AES-GCM records so forgetting can destroy one wrapped record key without rewriting history. Provider output, application projections, and callers never receive Store access or encryption/signing authority.","exportCount":6}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviMemoryService.md","moduleTitle":"kernel/navi/NaviMemoryService","source":"webgpu-os/kernel/navi/NaviMemoryService.js","import":"/webgpu-os/kernel/navi/NaviMemoryService.js","sourceHash":"73dd8d642a500a2bc6b6b650832aed955f400f0386fb22b0e763f540566cc8e6","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviMemoryService.js#0000:NaviMemoryServiceError","exportIndex":0,"name":"NaviMemoryServiceError","kind":"class","signature":"class NaviMemoryServiceError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviMemoryService.md","moduleTitle":"kernel/navi/NaviMemoryService","source":"webgpu-os/kernel/navi/NaviMemoryService.js","import":"/webgpu-os/kernel/navi/NaviMemoryService.js","sourceHash":"73dd8d642a500a2bc6b6b650832aed955f400f0386fb22b0e763f540566cc8e6","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviMemoryService.js#0001:NaviMemoryService","exportIndex":1,"name":"NaviMemoryService","kind":"class","signature":"class NaviMemoryService","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviMemoryService.md","moduleTitle":"kernel/navi/NaviMemoryService","source":"webgpu-os/kernel/navi/NaviMemoryService.js","import":"/webgpu-os/kernel/navi/NaviMemoryService.js","sourceHash":"73dd8d642a500a2bc6b6b650832aed955f400f0386fb22b0e763f540566cc8e6","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviMemoryService.js#0002:NAVI_MEMORY_HEAD_FORMAT","exportIndex":2,"name":"NAVI_MEMORY_HEAD_FORMAT","kind":"constant","signature":"NAVI_MEMORY_HEAD_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviMemoryService.md","moduleTitle":"kernel/navi/NaviMemoryService","source":"webgpu-os/kernel/navi/NaviMemoryService.js","import":"/webgpu-os/kernel/navi/NaviMemoryService.js","sourceHash":"73dd8d642a500a2bc6b6b650832aed955f400f0386fb22b0e763f540566cc8e6","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviMemoryService.js#0003:NAVI_MEMORY_PAYLOAD_FORMAT","exportIndex":3,"name":"NAVI_MEMORY_PAYLOAD_FORMAT","kind":"constant","signature":"NAVI_MEMORY_PAYLOAD_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviMemoryService.md","moduleTitle":"kernel/navi/NaviMemoryService","source":"webgpu-os/kernel/navi/NaviMemoryService.js","import":"/webgpu-os/kernel/navi/NaviMemoryService.js","sourceHash":"73dd8d642a500a2bc6b6b650832aed955f400f0386fb22b0e763f540566cc8e6","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviMemoryService.js#0004:NAVI_MEMORY_PAYLOAD_REFERENCE_FORMAT","exportIndex":4,"name":"NAVI_MEMORY_PAYLOAD_REFERENCE_FORMAT","kind":"constant","signature":"NAVI_MEMORY_PAYLOAD_REFERENCE_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviMemoryService.md","moduleTitle":"kernel/navi/NaviMemoryService","source":"webgpu-os/kernel/navi/NaviMemoryService.js","import":"/webgpu-os/kernel/navi/NaviMemoryService.js","sourceHash":"73dd8d642a500a2bc6b6b650832aed955f400f0386fb22b0e763f540566cc8e6","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviMemoryService.js#0005:NAVI_MEMORY_ERASURE_FORMAT","exportIndex":5,"name":"NAVI_MEMORY_ERASURE_FORMAT","kind":"constant","signature":"NAVI_MEMORY_ERASURE_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviModelBroker.md","moduleTitle":"kernel/navi/NaviModelBroker","source":"webgpu-os/kernel/navi/NaviModelBroker.js","import":"/webgpu-os/kernel/navi/NaviModelBroker.js","sourceHash":"9712f4abcb4e2a745c20223b42e4eee06a3e5577157bf1b8914f0d296c3be12a","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/NaviModelBroker.js","title":"kernel/navi/NaviModelBroker","summary":"NaviModelBroker.js — deterministic, per-Navi model selection and failover. The broker owns no provider conversation and executes no tools. It chooses one declared cognition route, invokes the injected AI Hub exactly once at a time, and only advances to a bounded fallback after a retryable model-call failure. Prompt/model output is deliberately excluded from routing evidence.","exportCount":14}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviModelBroker.md","moduleTitle":"kernel/navi/NaviModelBroker","source":"webgpu-os/kernel/navi/NaviModelBroker.js","import":"/webgpu-os/kernel/navi/NaviModelBroker.js","sourceHash":"9712f4abcb4e2a745c20223b42e4eee06a3e5577157bf1b8914f0d296c3be12a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviModelBroker.js#0000:NaviModelBrokerError","exportIndex":0,"name":"NaviModelBrokerError","kind":"class","signature":"class NaviModelBrokerError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviModelBroker.md","moduleTitle":"kernel/navi/NaviModelBroker","source":"webgpu-os/kernel/navi/NaviModelBroker.js","import":"/webgpu-os/kernel/navi/NaviModelBroker.js","sourceHash":"9712f4abcb4e2a745c20223b42e4eee06a3e5577157bf1b8914f0d296c3be12a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviModelBroker.js#0001:NaviModelBroker","exportIndex":1,"name":"NaviModelBroker","kind":"class","signature":"class NaviModelBroker","summary":"An injected AI Hub must expose `request(appId, request)`. Route catalog and policy remain per Navi; the AI Hub is only the replaceable transport."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviModelBroker.md","moduleTitle":"kernel/navi/NaviModelBroker","source":"webgpu-os/kernel/navi/NaviModelBroker.js","import":"/webgpu-os/kernel/navi/NaviModelBroker.js","sourceHash":"9712f4abcb4e2a745c20223b42e4eee06a3e5577157bf1b8914f0d296c3be12a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviModelBroker.js#0002:verifyNaviModelRouteDecision","exportIndex":2,"name":"verifyNaviModelRouteDecision","kind":"function","signature":"async verifyNaviModelRouteDecision(rawDecision, rawConfiguration)","summary":"Verify that a projected route decision is the exact content-addressed decision produced for the supplied normalized broker configuration. This is an integrity/binding check only; it never authorizes model use."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviModelBroker.md","moduleTitle":"kernel/navi/NaviModelBroker","source":"webgpu-os/kernel/navi/NaviModelBroker.js","import":"/webgpu-os/kernel/navi/NaviModelBroker.js","sourceHash":"9712f4abcb4e2a745c20223b42e4eee06a3e5577157bf1b8914f0d296c3be12a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviModelBroker.js#0003:normalizeModelFailure","exportIndex":3,"name":"normalizeModelFailure","kind":"function","signature":"normalizeModelFailure(source, signal = null)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviModelBroker.md","moduleTitle":"kernel/navi/NaviModelBroker","source":"webgpu-os/kernel/navi/NaviModelBroker.js","import":"/webgpu-os/kernel/navi/NaviModelBroker.js","sourceHash":"9712f4abcb4e2a745c20223b42e4eee06a3e5577157bf1b8914f0d296c3be12a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviModelBroker.js#0004:normalizeNaviModelRequirements","exportIndex":4,"name":"normalizeNaviModelRequirements","kind":"function","signature":"normalizeNaviModelRequirements(raw = {}, purpose = 'chat')","summary":"Return the broker's exact model-neutral requirement evidence. Resource selection receipts must hash the same defaults and canonical ordering that `decide()` used; callers must not reconstruct those defaults independently."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviModelBroker.md","moduleTitle":"kernel/navi/NaviModelBroker","source":"webgpu-os/kernel/navi/NaviModelBroker.js","import":"/webgpu-os/kernel/navi/NaviModelBroker.js","sourceHash":"9712f4abcb4e2a745c20223b42e4eee06a3e5577157bf1b8914f0d296c3be12a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviModelBroker.js#0005:NAVI_MODEL_ROUTE_PURPOSES","exportIndex":5,"name":"NAVI_MODEL_ROUTE_PURPOSES","kind":"constant","signature":"NAVI_MODEL_ROUTE_PURPOSES","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviModelBroker.md","moduleTitle":"kernel/navi/NaviModelBroker","source":"webgpu-os/kernel/navi/NaviModelBroker.js","import":"/webgpu-os/kernel/navi/NaviModelBroker.js","sourceHash":"9712f4abcb4e2a745c20223b42e4eee06a3e5577157bf1b8914f0d296c3be12a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviModelBroker.js#0006:NAVI_MODEL_TASK_FAMILIES","exportIndex":6,"name":"NAVI_MODEL_TASK_FAMILIES","kind":"constant","signature":"NAVI_MODEL_TASK_FAMILIES","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviModelBroker.md","moduleTitle":"kernel/navi/NaviModelBroker","source":"webgpu-os/kernel/navi/NaviModelBroker.js","import":"/webgpu-os/kernel/navi/NaviModelBroker.js","sourceHash":"9712f4abcb4e2a745c20223b42e4eee06a3e5577157bf1b8914f0d296c3be12a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviModelBroker.js#0007:NAVI_MODEL_FAILURE_KINDS","exportIndex":7,"name":"NAVI_MODEL_FAILURE_KINDS","kind":"constant","signature":"NAVI_MODEL_FAILURE_KINDS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviModelBroker.md","moduleTitle":"kernel/navi/NaviModelBroker","source":"webgpu-os/kernel/navi/NaviModelBroker.js","import":"/webgpu-os/kernel/navi/NaviModelBroker.js","sourceHash":"9712f4abcb4e2a745c20223b42e4eee06a3e5577157bf1b8914f0d296c3be12a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviModelBroker.js#0008:NAVI_MODEL_ROUTE_DECISION_FORMAT","exportIndex":8,"name":"NAVI_MODEL_ROUTE_DECISION_FORMAT","kind":"constant","signature":"NAVI_MODEL_ROUTE_DECISION_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviModelBroker.md","moduleTitle":"kernel/navi/NaviModelBroker","source":"webgpu-os/kernel/navi/NaviModelBroker.js","import":"/webgpu-os/kernel/navi/NaviModelBroker.js","sourceHash":"9712f4abcb4e2a745c20223b42e4eee06a3e5577157bf1b8914f0d296c3be12a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviModelBroker.js#0009:NAVI_MODEL_EXECUTION_EVIDENCE_FORMAT","exportIndex":9,"name":"NAVI_MODEL_EXECUTION_EVIDENCE_FORMAT","kind":"constant","signature":"NAVI_MODEL_EXECUTION_EVIDENCE_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviModelBroker.md","moduleTitle":"kernel/navi/NaviModelBroker","source":"webgpu-os/kernel/navi/NaviModelBroker.js","import":"/webgpu-os/kernel/navi/NaviModelBroker.js","sourceHash":"9712f4abcb4e2a745c20223b42e4eee06a3e5577157bf1b8914f0d296c3be12a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviModelBroker.js#0010:NAVI_MODEL_EXECUTION_PLAN_FORMAT","exportIndex":10,"name":"NAVI_MODEL_EXECUTION_PLAN_FORMAT","kind":"constant","signature":"NAVI_MODEL_EXECUTION_PLAN_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviModelBroker.md","moduleTitle":"kernel/navi/NaviModelBroker","source":"webgpu-os/kernel/navi/NaviModelBroker.js","import":"/webgpu-os/kernel/navi/NaviModelBroker.js","sourceHash":"9712f4abcb4e2a745c20223b42e4eee06a3e5577157bf1b8914f0d296c3be12a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviModelBroker.js#0011:NAVI_MODEL_ROUTE_CONFIGURATION_HASH_FORMAT","exportIndex":11,"name":"NAVI_MODEL_ROUTE_CONFIGURATION_HASH_FORMAT","kind":"constant","signature":"NAVI_MODEL_ROUTE_CONFIGURATION_HASH_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviModelBroker.md","moduleTitle":"kernel/navi/NaviModelBroker","source":"webgpu-os/kernel/navi/NaviModelBroker.js","import":"/webgpu-os/kernel/navi/NaviModelBroker.js","sourceHash":"9712f4abcb4e2a745c20223b42e4eee06a3e5577157bf1b8914f0d296c3be12a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviModelBroker.js#0012:NAVI_MODEL_ROUTE_ACCESS_EVIDENCE_FORMAT","exportIndex":12,"name":"NAVI_MODEL_ROUTE_ACCESS_EVIDENCE_FORMAT","kind":"constant","signature":"NAVI_MODEL_ROUTE_ACCESS_EVIDENCE_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviModelBroker.md","moduleTitle":"kernel/navi/NaviModelBroker","source":"webgpu-os/kernel/navi/NaviModelBroker.js","import":"/webgpu-os/kernel/navi/NaviModelBroker.js","sourceHash":"9712f4abcb4e2a745c20223b42e4eee06a3e5577157bf1b8914f0d296c3be12a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviModelBroker.js#0013:NAVI_MODEL_ROUTE_DATA_POLICY_EVIDENCE_FORMAT","exportIndex":13,"name":"NAVI_MODEL_ROUTE_DATA_POLICY_EVIDENCE_FORMAT","kind":"constant","signature":"NAVI_MODEL_ROUTE_DATA_POLICY_EVIDENCE_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviParticleNetworkAdapter.md","moduleTitle":"kernel/navi/NaviParticleNetworkAdapter","source":"webgpu-os/kernel/navi/NaviParticleNetworkAdapter.js","import":"/webgpu-os/kernel/navi/NaviParticleNetworkAdapter.js","sourceHash":"3aabe0d9f3b2533385f9c89fb8c7ac9f861e19ea6b4d77b0a6d0520bdafc8e3c","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/NaviParticleNetworkAdapter.js","title":"kernel/navi/NaviParticleNetworkAdapter","summary":"NaviParticleNetworkAdapter.js — inert Navi/Particle Network protocol bridge. This module creates and verifies Realm semantic envelopes, but never opens a socket, fetches a peer, publishes a package, or owns a credential. Network dispatch remains the NetworkDriver's job. Contract verification and live authority are mandatory injected kernel decisions and fail closed.","exportCount":14}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviParticleNetworkAdapter.md","moduleTitle":"kernel/navi/NaviParticleNetworkAdapter","source":"webgpu-os/kernel/navi/NaviParticleNetworkAdapter.js","import":"/webgpu-os/kernel/navi/NaviParticleNetworkAdapter.js","sourceHash":"3aabe0d9f3b2533385f9c89fb8c7ac9f861e19ea6b4d77b0a6d0520bdafc8e3c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviParticleNetworkAdapter.js#0000:NaviParticleNetworkAdapter","exportIndex":0,"name":"NaviParticleNetworkAdapter","kind":"class","signature":"class NaviParticleNetworkAdapter","summary":"Create a transport-only Particle Network adapter. `contractVerifiers` must contain one verifier per adapter ID. A verifier may return true, `{ valid: true }`, or the exact verified signed contract. The latter matches NaviContinuityService's purpose-bound verification methods."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviParticleNetworkAdapter.md","moduleTitle":"kernel/navi/NaviParticleNetworkAdapter","source":"webgpu-os/kernel/navi/NaviParticleNetworkAdapter.js","import":"/webgpu-os/kernel/navi/NaviParticleNetworkAdapter.js","sourceHash":"3aabe0d9f3b2533385f9c89fb8c7ac9f861e19ea6b4d77b0a6d0520bdafc8e3c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviParticleNetworkAdapter.js#0001:NaviParticleReplicationInbox","exportIndex":1,"name":"NaviParticleReplicationInbox","kind":"class","signature":"class NaviParticleReplicationInbox","summary":"Idempotent inbound application boundary built on Realm SemanticInbox. Verification and application are serialized so concurrent replay cannot apply one signed envelope twice."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviParticleNetworkAdapter.md","moduleTitle":"kernel/navi/NaviParticleNetworkAdapter","source":"webgpu-os/kernel/navi/NaviParticleNetworkAdapter.js","import":"/webgpu-os/kernel/navi/NaviParticleNetworkAdapter.js","sourceHash":"3aabe0d9f3b2533385f9c89fb8c7ac9f861e19ea6b4d77b0a6d0520bdafc8e3c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviParticleNetworkAdapter.js#0002:createNaviParticleNetworkAdapter","exportIndex":2,"name":"createNaviParticleNetworkAdapter","kind":"function","signature":"createNaviParticleNetworkAdapter(options)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviParticleNetworkAdapter.md","moduleTitle":"kernel/navi/NaviParticleNetworkAdapter","source":"webgpu-os/kernel/navi/NaviParticleNetworkAdapter.js","import":"/webgpu-os/kernel/navi/NaviParticleNetworkAdapter.js","sourceHash":"3aabe0d9f3b2533385f9c89fb8c7ac9f861e19ea6b4d77b0a6d0520bdafc8e3c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviParticleNetworkAdapter.js#0003:NAVI_PARTICLE_NETWORK_ADAPTER_FORMAT","exportIndex":3,"name":"NAVI_PARTICLE_NETWORK_ADAPTER_FORMAT","kind":"constant","signature":"NAVI_PARTICLE_NETWORK_ADAPTER_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviParticleNetworkAdapter.md","moduleTitle":"kernel/navi/NaviParticleNetworkAdapter","source":"webgpu-os/kernel/navi/NaviParticleNetworkAdapter.js","import":"/webgpu-os/kernel/navi/NaviParticleNetworkAdapter.js","sourceHash":"3aabe0d9f3b2533385f9c89fb8c7ac9f861e19ea6b4d77b0a6d0520bdafc8e3c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviParticleNetworkAdapter.js#0004:NAVI_PARTICLE_INBOX_FORMAT","exportIndex":4,"name":"NAVI_PARTICLE_INBOX_FORMAT","kind":"constant","signature":"NAVI_PARTICLE_INBOX_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviParticleNetworkAdapter.md","moduleTitle":"kernel/navi/NaviParticleNetworkAdapter","source":"webgpu-os/kernel/navi/NaviParticleNetworkAdapter.js","import":"/webgpu-os/kernel/navi/NaviParticleNetworkAdapter.js","sourceHash":"3aabe0d9f3b2533385f9c89fb8c7ac9f861e19ea6b4d77b0a6d0520bdafc8e3c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviParticleNetworkAdapter.js#0005:NAVI_FACULTY_NETWORK_ARTIFACT_FORMAT","exportIndex":5,"name":"NAVI_FACULTY_NETWORK_ARTIFACT_FORMAT","kind":"re-export","signature":"NAVI_FACULTY_NETWORK_ARTIFACT_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviParticleNetworkAdapter.md","moduleTitle":"kernel/navi/NaviParticleNetworkAdapter","source":"webgpu-os/kernel/navi/NaviParticleNetworkAdapter.js","import":"/webgpu-os/kernel/navi/NaviParticleNetworkAdapter.js","sourceHash":"3aabe0d9f3b2533385f9c89fb8c7ac9f861e19ea6b4d77b0a6d0520bdafc8e3c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviParticleNetworkAdapter.js#0006:NAVI_LINEAGE_HEAD_WITNESS_FORMAT","exportIndex":6,"name":"NAVI_LINEAGE_HEAD_WITNESS_FORMAT","kind":"re-export","signature":"NAVI_LINEAGE_HEAD_WITNESS_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviParticleNetworkAdapter.md","moduleTitle":"kernel/navi/NaviParticleNetworkAdapter","source":"webgpu-os/kernel/navi/NaviParticleNetworkAdapter.js","import":"/webgpu-os/kernel/navi/NaviParticleNetworkAdapter.js","sourceHash":"3aabe0d9f3b2533385f9c89fb8c7ac9f861e19ea6b4d77b0a6d0520bdafc8e3c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviParticleNetworkAdapter.js#0007:NAVI_PARTICLE_ADAPTERS","exportIndex":7,"name":"NAVI_PARTICLE_ADAPTERS","kind":"re-export","signature":"NAVI_PARTICLE_ADAPTERS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviParticleNetworkAdapter.md","moduleTitle":"kernel/navi/NaviParticleNetworkAdapter","source":"webgpu-os/kernel/navi/NaviParticleNetworkAdapter.js","import":"/webgpu-os/kernel/navi/NaviParticleNetworkAdapter.js","sourceHash":"3aabe0d9f3b2533385f9c89fb8c7ac9f861e19ea6b4d77b0a6d0520bdafc8e3c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviParticleNetworkAdapter.js#0008:NAVI_PARTICLE_ADAPTER_IDS","exportIndex":8,"name":"NAVI_PARTICLE_ADAPTER_IDS","kind":"re-export","signature":"NAVI_PARTICLE_ADAPTER_IDS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviParticleNetworkAdapter.md","moduleTitle":"kernel/navi/NaviParticleNetworkAdapter","source":"webgpu-os/kernel/navi/NaviParticleNetworkAdapter.js","import":"/webgpu-os/kernel/navi/NaviParticleNetworkAdapter.js","sourceHash":"3aabe0d9f3b2533385f9c89fb8c7ac9f861e19ea6b4d77b0a6d0520bdafc8e3c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviParticleNetworkAdapter.js#0009:NAVI_PARTICLE_REPLICATION_FORMAT","exportIndex":9,"name":"NAVI_PARTICLE_REPLICATION_FORMAT","kind":"re-export","signature":"NAVI_PARTICLE_REPLICATION_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviParticleNetworkAdapter.md","moduleTitle":"kernel/navi/NaviParticleNetworkAdapter","source":"webgpu-os/kernel/navi/NaviParticleNetworkAdapter.js","import":"/webgpu-os/kernel/navi/NaviParticleNetworkAdapter.js","sourceHash":"3aabe0d9f3b2533385f9c89fb8c7ac9f861e19ea6b4d77b0a6d0520bdafc8e3c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviParticleNetworkAdapter.js#0010:NaviParticleReplicationError","exportIndex":10,"name":"NaviParticleReplicationError","kind":"re-export","signature":"NaviParticleReplicationError","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviParticleNetworkAdapter.md","moduleTitle":"kernel/navi/NaviParticleNetworkAdapter","source":"webgpu-os/kernel/navi/NaviParticleNetworkAdapter.js","import":"/webgpu-os/kernel/navi/NaviParticleNetworkAdapter.js","sourceHash":"3aabe0d9f3b2533385f9c89fb8c7ac9f861e19ea6b4d77b0a6d0520bdafc8e3c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviParticleNetworkAdapter.js#0011:assertNaviParticleReplicationPayload","exportIndex":11,"name":"assertNaviParticleReplicationPayload","kind":"re-export","signature":"assertNaviParticleReplicationPayload","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviParticleNetworkAdapter.md","moduleTitle":"kernel/navi/NaviParticleNetworkAdapter","source":"webgpu-os/kernel/navi/NaviParticleNetworkAdapter.js","import":"/webgpu-os/kernel/navi/NaviParticleNetworkAdapter.js","sourceHash":"3aabe0d9f3b2533385f9c89fb8c7ac9f861e19ea6b4d77b0a6d0520bdafc8e3c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviParticleNetworkAdapter.js#0012:assertNaviReplicationContentSafe","exportIndex":12,"name":"assertNaviReplicationContentSafe","kind":"re-export","signature":"assertNaviReplicationContentSafe","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviParticleNetworkAdapter.md","moduleTitle":"kernel/navi/NaviParticleNetworkAdapter","source":"webgpu-os/kernel/navi/NaviParticleNetworkAdapter.js","import":"/webgpu-os/kernel/navi/NaviParticleNetworkAdapter.js","sourceHash":"3aabe0d9f3b2533385f9c89fb8c7ac9f861e19ea6b4d77b0a6d0520bdafc8e3c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviParticleNetworkAdapter.js#0013:naviParticleAdapterDescriptor","exportIndex":13,"name":"naviParticleAdapterDescriptor","kind":"re-export","signature":"naviParticleAdapterDescriptor","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviParticleReplicationPolicy.md","moduleTitle":"kernel/navi/NaviParticleReplicationPolicy","source":"webgpu-os/kernel/navi/NaviParticleReplicationPolicy.js","import":"/webgpu-os/kernel/navi/NaviParticleReplicationPolicy.js","sourceHash":"81d75ce494511247704b4bd1869f7be143e7270f2f5719c4e50bbf01f14ac900","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/NaviParticleReplicationPolicy.js","title":"kernel/navi/NaviParticleReplicationPolicy","summary":"NaviParticleReplicationPolicy.js — closed, side-effect-free Navi replication policy. Particle Network transports already-authoritative Navi contracts. It never becomes a second Navi store and it never accepts an arbitrary JSON tunnel. Every permitted record has one fixed schema, semantic kind, classification policy, destination, disclosure evidence, and live authority approval.","exportCount":10}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviParticleReplicationPolicy.md","moduleTitle":"kernel/navi/NaviParticleReplicationPolicy","source":"webgpu-os/kernel/navi/NaviParticleReplicationPolicy.js","import":"/webgpu-os/kernel/navi/NaviParticleReplicationPolicy.js","sourceHash":"81d75ce494511247704b4bd1869f7be143e7270f2f5719c4e50bbf01f14ac900","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviParticleReplicationPolicy.js#0000:NaviParticleReplicationError","exportIndex":0,"name":"NaviParticleReplicationError","kind":"class","signature":"class NaviParticleReplicationError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviParticleReplicationPolicy.md","moduleTitle":"kernel/navi/NaviParticleReplicationPolicy","source":"webgpu-os/kernel/navi/NaviParticleReplicationPolicy.js","import":"/webgpu-os/kernel/navi/NaviParticleReplicationPolicy.js","sourceHash":"81d75ce494511247704b4bd1869f7be143e7270f2f5719c4e50bbf01f14ac900","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviParticleReplicationPolicy.js#0001:naviParticleAdapterDescriptor","exportIndex":1,"name":"naviParticleAdapterDescriptor","kind":"function","signature":"naviParticleAdapterDescriptor(adapterId)","summary":"Return the immutable descriptor for one closed Navi/Particle adapter."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviParticleReplicationPolicy.md","moduleTitle":"kernel/navi/NaviParticleReplicationPolicy","source":"webgpu-os/kernel/navi/NaviParticleReplicationPolicy.js","import":"/webgpu-os/kernel/navi/NaviParticleReplicationPolicy.js","sourceHash":"81d75ce494511247704b4bd1869f7be143e7270f2f5719c4e50bbf01f14ac900","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviParticleReplicationPolicy.js#0002:assertNaviParticleReplicationPayload","exportIndex":2,"name":"assertNaviParticleReplicationPayload","kind":"function","signature":"async assertNaviParticleReplicationPayload(value, expectedAdapterId = null)","summary":"Validate an already-built replication payload, including its nested Navi contract hash and adapter-specific semantics. No signature is synthesized."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviParticleReplicationPolicy.md","moduleTitle":"kernel/navi/NaviParticleReplicationPolicy","source":"webgpu-os/kernel/navi/NaviParticleReplicationPolicy.js","import":"/webgpu-os/kernel/navi/NaviParticleReplicationPolicy.js","sourceHash":"81d75ce494511247704b4bd1869f7be143e7270f2f5719c4e50bbf01f14ac900","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviParticleReplicationPolicy.js#0003:assertNaviReplicationContentSafe","exportIndex":3,"name":"assertNaviReplicationContentSafe","kind":"function","signature":"assertNaviReplicationContentSafe(value)","summary":"Reject forbidden content before any signer, policy, or transport is called."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviParticleReplicationPolicy.md","moduleTitle":"kernel/navi/NaviParticleReplicationPolicy","source":"webgpu-os/kernel/navi/NaviParticleReplicationPolicy.js","import":"/webgpu-os/kernel/navi/NaviParticleReplicationPolicy.js","sourceHash":"81d75ce494511247704b4bd1869f7be143e7270f2f5719c4e50bbf01f14ac900","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviParticleReplicationPolicy.js#0004:NAVI_PARTICLE_REPLICATION_FORMAT","exportIndex":4,"name":"NAVI_PARTICLE_REPLICATION_FORMAT","kind":"constant","signature":"NAVI_PARTICLE_REPLICATION_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviParticleReplicationPolicy.md","moduleTitle":"kernel/navi/NaviParticleReplicationPolicy","source":"webgpu-os/kernel/navi/NaviParticleReplicationPolicy.js","import":"/webgpu-os/kernel/navi/NaviParticleReplicationPolicy.js","sourceHash":"81d75ce494511247704b4bd1869f7be143e7270f2f5719c4e50bbf01f14ac900","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviParticleReplicationPolicy.js#0005:NAVI_LINEAGE_HEAD_WITNESS_FORMAT","exportIndex":5,"name":"NAVI_LINEAGE_HEAD_WITNESS_FORMAT","kind":"constant","signature":"NAVI_LINEAGE_HEAD_WITNESS_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviParticleReplicationPolicy.md","moduleTitle":"kernel/navi/NaviParticleReplicationPolicy","source":"webgpu-os/kernel/navi/NaviParticleReplicationPolicy.js","import":"/webgpu-os/kernel/navi/NaviParticleReplicationPolicy.js","sourceHash":"81d75ce494511247704b4bd1869f7be143e7270f2f5719c4e50bbf01f14ac900","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviParticleReplicationPolicy.js#0006:NAVI_FACULTY_NETWORK_ARTIFACT_FORMAT","exportIndex":6,"name":"NAVI_FACULTY_NETWORK_ARTIFACT_FORMAT","kind":"constant","signature":"NAVI_FACULTY_NETWORK_ARTIFACT_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviParticleReplicationPolicy.md","moduleTitle":"kernel/navi/NaviParticleReplicationPolicy","source":"webgpu-os/kernel/navi/NaviParticleReplicationPolicy.js","import":"/webgpu-os/kernel/navi/NaviParticleReplicationPolicy.js","sourceHash":"81d75ce494511247704b4bd1869f7be143e7270f2f5719c4e50bbf01f14ac900","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviParticleReplicationPolicy.js#0007:NAVI_PARTICLE_ADAPTER_IDS","exportIndex":7,"name":"NAVI_PARTICLE_ADAPTER_IDS","kind":"constant","signature":"NAVI_PARTICLE_ADAPTER_IDS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviParticleReplicationPolicy.md","moduleTitle":"kernel/navi/NaviParticleReplicationPolicy","source":"webgpu-os/kernel/navi/NaviParticleReplicationPolicy.js","import":"/webgpu-os/kernel/navi/NaviParticleReplicationPolicy.js","sourceHash":"81d75ce494511247704b4bd1869f7be143e7270f2f5719c4e50bbf01f14ac900","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviParticleReplicationPolicy.js#0008:NAVI_PARTICLE_REPLICATION_KINDS","exportIndex":8,"name":"NAVI_PARTICLE_REPLICATION_KINDS","kind":"constant","signature":"NAVI_PARTICLE_REPLICATION_KINDS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviParticleReplicationPolicy.md","moduleTitle":"kernel/navi/NaviParticleReplicationPolicy","source":"webgpu-os/kernel/navi/NaviParticleReplicationPolicy.js","import":"/webgpu-os/kernel/navi/NaviParticleReplicationPolicy.js","sourceHash":"81d75ce494511247704b4bd1869f7be143e7270f2f5719c4e50bbf01f14ac900","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviParticleReplicationPolicy.js#0009:NAVI_PARTICLE_ADAPTERS","exportIndex":9,"name":"NAVI_PARTICLE_ADAPTERS","kind":"constant","signature":"NAVI_PARTICLE_ADAPTERS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviPasskeyRecoveryAdapter.md","moduleTitle":"kernel/navi/NaviPasskeyRecoveryAdapter","source":"webgpu-os/kernel/navi/NaviPasskeyRecoveryAdapter.js","import":"/webgpu-os/kernel/navi/NaviPasskeyRecoveryAdapter.js","sourceHash":"3d7ed6c45ad5e05d5fa160d107432f0bc03a5e496ab05fb1aeb7236723e81f57","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/NaviPasskeyRecoveryAdapter.js","title":"kernel/navi/NaviPasskeyRecoveryAdapter","summary":"Kernel-owned WebAuthn PRF ceremony adapter. Apps see boolean support/enrollment status and completed continuity results. Credential IDs, PRF inputs, and PRF outputs remain inside this adapter and the continuity-signed recovery bundle. PRF output is zeroed after each call.","exportCount":2}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviPasskeyRecoveryAdapter.md","moduleTitle":"kernel/navi/NaviPasskeyRecoveryAdapter","source":"webgpu-os/kernel/navi/NaviPasskeyRecoveryAdapter.js","import":"/webgpu-os/kernel/navi/NaviPasskeyRecoveryAdapter.js","sourceHash":"3d7ed6c45ad5e05d5fa160d107432f0bc03a5e496ab05fb1aeb7236723e81f57","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviPasskeyRecoveryAdapter.js#0000:NaviPasskeyRecoveryError","exportIndex":0,"name":"NaviPasskeyRecoveryError","kind":"class","signature":"class NaviPasskeyRecoveryError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviPasskeyRecoveryAdapter.md","moduleTitle":"kernel/navi/NaviPasskeyRecoveryAdapter","source":"webgpu-os/kernel/navi/NaviPasskeyRecoveryAdapter.js","import":"/webgpu-os/kernel/navi/NaviPasskeyRecoveryAdapter.js","sourceHash":"3d7ed6c45ad5e05d5fa160d107432f0bc03a5e496ab05fb1aeb7236723e81f57","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviPasskeyRecoveryAdapter.js#0001:NaviPasskeyRecoveryAdapter","exportIndex":1,"name":"NaviPasskeyRecoveryAdapter","kind":"class","signature":"class NaviPasskeyRecoveryAdapter","summary":"Kernel-owned WebAuthn PRF ceremony adapter. Apps see boolean support/enrollment status and completed continuity results. Credential IDs, PRF inputs, and PRF outputs remain inside this adapter and the continuity-signed recovery bundle. PRF output is zeroed after each call."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviPreflightService.md","moduleTitle":"kernel/navi/NaviPreflightService","source":"webgpu-os/kernel/navi/NaviPreflightService.js","import":"/webgpu-os/kernel/navi/NaviPreflightService.js","sourceHash":"d7993d21f4b25b200a6814fabe2fd29de94b73819dfa71a0416380db7b56e407","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/NaviPreflightService.js","title":"kernel/navi/NaviPreflightService","summary":"Phase 0 Navi migration preflight. This service is deliberately not wired into the kernel. It only creates and verifies a reversible development archive while `navi-v1` is disabled. It has no delete, clear, restore, or reset operation.","exportCount":8}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviPreflightService.md","moduleTitle":"kernel/navi/NaviPreflightService","source":"webgpu-os/kernel/navi/NaviPreflightService.js","import":"/webgpu-os/kernel/navi/NaviPreflightService.js","sourceHash":"d7993d21f4b25b200a6814fabe2fd29de94b73819dfa71a0416380db7b56e407","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviPreflightService.js#0000:NaviPreflightService","exportIndex":0,"name":"NaviPreflightService","kind":"class","signature":"class NaviPreflightService","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviPreflightService.md","moduleTitle":"kernel/navi/NaviPreflightService","source":"webgpu-os/kernel/navi/NaviPreflightService.js","import":"/webgpu-os/kernel/navi/NaviPreflightService.js","sourceHash":"d7993d21f4b25b200a6814fabe2fd29de94b73819dfa71a0416380db7b56e407","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviPreflightService.js#0001:validateUserBackupManifest","exportIndex":1,"name":"validateUserBackupManifest","kind":"function","signature":"validateUserBackupManifest(manifest)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviPreflightService.md","moduleTitle":"kernel/navi/NaviPreflightService","source":"webgpu-os/kernel/navi/NaviPreflightService.js","import":"/webgpu-os/kernel/navi/NaviPreflightService.js","sourceHash":"d7993d21f4b25b200a6814fabe2fd29de94b73819dfa71a0416380db7b56e407","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviPreflightService.js#0002:validateNaviPreflightManifest","exportIndex":2,"name":"validateNaviPreflightManifest","kind":"function","signature":"validateNaviPreflightManifest(manifest)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviPreflightService.md","moduleTitle":"kernel/navi/NaviPreflightService","source":"webgpu-os/kernel/navi/NaviPreflightService.js","import":"/webgpu-os/kernel/navi/NaviPreflightService.js","sourceHash":"d7993d21f4b25b200a6814fabe2fd29de94b73819dfa71a0416380db7b56e407","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviPreflightService.js#0003:validateNaviRollbackReceipt","exportIndex":3,"name":"validateNaviRollbackReceipt","kind":"function","signature":"validateNaviRollbackReceipt(receipt)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviPreflightService.md","moduleTitle":"kernel/navi/NaviPreflightService","source":"webgpu-os/kernel/navi/NaviPreflightService.js","import":"/webgpu-os/kernel/navi/NaviPreflightService.js","sourceHash":"d7993d21f4b25b200a6814fabe2fd29de94b73819dfa71a0416380db7b56e407","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviPreflightService.js#0004:NAVI_PREFLIGHT_ARCHIVE_FORMAT","exportIndex":4,"name":"NAVI_PREFLIGHT_ARCHIVE_FORMAT","kind":"constant","signature":"NAVI_PREFLIGHT_ARCHIVE_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviPreflightService.md","moduleTitle":"kernel/navi/NaviPreflightService","source":"webgpu-os/kernel/navi/NaviPreflightService.js","import":"/webgpu-os/kernel/navi/NaviPreflightService.js","sourceHash":"d7993d21f4b25b200a6814fabe2fd29de94b73819dfa71a0416380db7b56e407","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviPreflightService.js#0005:NAVI_PREFLIGHT_RECEIPT_FORMAT","exportIndex":5,"name":"NAVI_PREFLIGHT_RECEIPT_FORMAT","kind":"constant","signature":"NAVI_PREFLIGHT_RECEIPT_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviPreflightService.md","moduleTitle":"kernel/navi/NaviPreflightService","source":"webgpu-os/kernel/navi/NaviPreflightService.js","import":"/webgpu-os/kernel/navi/NaviPreflightService.js","sourceHash":"d7993d21f4b25b200a6814fabe2fd29de94b73819dfa71a0416380db7b56e407","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviPreflightService.js#0006:NAVI_PREFLIGHT_SCHEMA_VERSION","exportIndex":6,"name":"NAVI_PREFLIGHT_SCHEMA_VERSION","kind":"constant","signature":"NAVI_PREFLIGHT_SCHEMA_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviPreflightService.md","moduleTitle":"kernel/navi/NaviPreflightService","source":"webgpu-os/kernel/navi/NaviPreflightService.js","import":"/webgpu-os/kernel/navi/NaviPreflightService.js","sourceHash":"d7993d21f4b25b200a6814fabe2fd29de94b73819dfa71a0416380db7b56e407","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviPreflightService.js#0007:NAVI_PREFLIGHT_AGENT_APP_ID","exportIndex":7,"name":"NAVI_PREFLIGHT_AGENT_APP_ID","kind":"constant","signature":"NAVI_PREFLIGHT_AGENT_APP_ID","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviProjectDossier.md","moduleTitle":"kernel/navi/NaviProjectDossier","source":"webgpu-os/kernel/navi/NaviProjectDossier.js","import":"/webgpu-os/kernel/navi/NaviProjectDossier.js","sourceHash":"589fec2b44e2cc6c7c2826fe7c7c43d0ee4b78b3257eb620306e8c23380f227e","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/NaviProjectDossier.js","title":"kernel/navi/NaviProjectDossier","summary":"Rebuildable, authority-free project dossier for one exact Navi task. The dossier owns no state and never copies provider reasoning, scratchpads, planner transcripts, file bodies, or Wiki bodies. It projects bounded links from the canonical task state, durable run reports, receipts, evidence, Wiki metadata, and Workspace Output Index. Deleting it loses no canonical data.","exportCount":3}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviProjectDossier.md","moduleTitle":"kernel/navi/NaviProjectDossier","source":"webgpu-os/kernel/navi/NaviProjectDossier.js","import":"/webgpu-os/kernel/navi/NaviProjectDossier.js","sourceHash":"589fec2b44e2cc6c7c2826fe7c7c43d0ee4b78b3257eb620306e8c23380f227e","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviProjectDossier.js#0000:NaviProjectDossier","exportIndex":0,"name":"NaviProjectDossier","kind":"class","signature":"class NaviProjectDossier","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviProjectDossier.md","moduleTitle":"kernel/navi/NaviProjectDossier","source":"webgpu-os/kernel/navi/NaviProjectDossier.js","import":"/webgpu-os/kernel/navi/NaviProjectDossier.js","sourceHash":"589fec2b44e2cc6c7c2826fe7c7c43d0ee4b78b3257eb620306e8c23380f227e","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviProjectDossier.js#0001:NAVI_PROJECT_DOSSIER_FORMAT","exportIndex":1,"name":"NAVI_PROJECT_DOSSIER_FORMAT","kind":"constant","signature":"NAVI_PROJECT_DOSSIER_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviProjectDossier.md","moduleTitle":"kernel/navi/NaviProjectDossier","source":"webgpu-os/kernel/navi/NaviProjectDossier.js","import":"/webgpu-os/kernel/navi/NaviProjectDossier.js","sourceHash":"589fec2b44e2cc6c7c2826fe7c7c43d0ee4b78b3257eb620306e8c23380f227e","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviProjectDossier.js#0002:NAVI_PROJECT_DOSSIER_REBUILD_FORMAT","exportIndex":2,"name":"NAVI_PROJECT_DOSSIER_REBUILD_FORMAT","kind":"constant","signature":"NAVI_PROJECT_DOSSIER_REBUILD_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviRecoveryBranchAuthorityService.md","moduleTitle":"kernel/navi/NaviRecoveryBranchAuthorityService","source":"webgpu-os/kernel/navi/NaviRecoveryBranchAuthorityService.js","import":"/webgpu-os/kernel/navi/NaviRecoveryBranchAuthorityService.js","sourceHash":"f3236ef5b49b83885d4dea755e3bcfbd2784828bc603c06c8b376351d64dafe6","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/NaviRecoveryBranchAuthorityService.js","title":"kernel/navi/NaviRecoveryBranchAuthorityService","summary":"Kernel-only authority for staged recovery branches and permanent separation. A recovery branch is never an identity authority. It may be inspected and reconciled only within the exact ceiling carried by its verified restore receipt. Publication, authority expansion, identity transfer, and continuity-root rotation are unconditional denials. Permanent separation is a distinct, explicitly approved operation that asks Continuity to stage a fresh independent Navi and records a dual-continuity-signed ancestry attestation without exposing either signer or private key.","exportCount":8}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviRecoveryBranchAuthorityService.md","moduleTitle":"kernel/navi/NaviRecoveryBranchAuthorityService","source":"webgpu-os/kernel/navi/NaviRecoveryBranchAuthorityService.js","import":"/webgpu-os/kernel/navi/NaviRecoveryBranchAuthorityService.js","sourceHash":"f3236ef5b49b83885d4dea755e3bcfbd2784828bc603c06c8b376351d64dafe6","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviRecoveryBranchAuthorityService.js#0000:NaviRecoveryBranchAuthorityError","exportIndex":0,"name":"NaviRecoveryBranchAuthorityError","kind":"class","signature":"class NaviRecoveryBranchAuthorityError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviRecoveryBranchAuthorityService.md","moduleTitle":"kernel/navi/NaviRecoveryBranchAuthorityService","source":"webgpu-os/kernel/navi/NaviRecoveryBranchAuthorityService.js","import":"/webgpu-os/kernel/navi/NaviRecoveryBranchAuthorityService.js","sourceHash":"f3236ef5b49b83885d4dea755e3bcfbd2784828bc603c06c8b376351d64dafe6","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviRecoveryBranchAuthorityService.js#0001:NaviRecoveryBranchAuthorityService","exportIndex":1,"name":"NaviRecoveryBranchAuthorityService","kind":"class","signature":"class NaviRecoveryBranchAuthorityService","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviRecoveryBranchAuthorityService.md","moduleTitle":"kernel/navi/NaviRecoveryBranchAuthorityService","source":"webgpu-os/kernel/navi/NaviRecoveryBranchAuthorityService.js","import":"/webgpu-os/kernel/navi/NaviRecoveryBranchAuthorityService.js","sourceHash":"f3236ef5b49b83885d4dea755e3bcfbd2784828bc603c06c8b376351d64dafe6","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviRecoveryBranchAuthorityService.js#0002:createNaviRecoveryBranchAuthorityService","exportIndex":2,"name":"createNaviRecoveryBranchAuthorityService","kind":"function","signature":"createNaviRecoveryBranchAuthorityService(options)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviRecoveryBranchAuthorityService.md","moduleTitle":"kernel/navi/NaviRecoveryBranchAuthorityService","source":"webgpu-os/kernel/navi/NaviRecoveryBranchAuthorityService.js","import":"/webgpu-os/kernel/navi/NaviRecoveryBranchAuthorityService.js","sourceHash":"f3236ef5b49b83885d4dea755e3bcfbd2784828bc603c06c8b376351d64dafe6","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviRecoveryBranchAuthorityService.js#0003:NAVI_RECOVERY_BRANCH_RECORD_TYPE","exportIndex":3,"name":"NAVI_RECOVERY_BRANCH_RECORD_TYPE","kind":"constant","signature":"NAVI_RECOVERY_BRANCH_RECORD_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviRecoveryBranchAuthorityService.md","moduleTitle":"kernel/navi/NaviRecoveryBranchAuthorityService","source":"webgpu-os/kernel/navi/NaviRecoveryBranchAuthorityService.js","import":"/webgpu-os/kernel/navi/NaviRecoveryBranchAuthorityService.js","sourceHash":"f3236ef5b49b83885d4dea755e3bcfbd2784828bc603c06c8b376351d64dafe6","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviRecoveryBranchAuthorityService.js#0004:NAVI_RECOVERY_BRANCH_RECORD_FORMAT","exportIndex":4,"name":"NAVI_RECOVERY_BRANCH_RECORD_FORMAT","kind":"constant","signature":"NAVI_RECOVERY_BRANCH_RECORD_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviRecoveryBranchAuthorityService.md","moduleTitle":"kernel/navi/NaviRecoveryBranchAuthorityService","source":"webgpu-os/kernel/navi/NaviRecoveryBranchAuthorityService.js","import":"/webgpu-os/kernel/navi/NaviRecoveryBranchAuthorityService.js","sourceHash":"f3236ef5b49b83885d4dea755e3bcfbd2784828bc603c06c8b376351d64dafe6","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviRecoveryBranchAuthorityService.js#0005:NAVI_RECOVERY_RESTORE_RECEIPT_FORMAT","exportIndex":5,"name":"NAVI_RECOVERY_RESTORE_RECEIPT_FORMAT","kind":"constant","signature":"NAVI_RECOVERY_RESTORE_RECEIPT_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviRecoveryBranchAuthorityService.md","moduleTitle":"kernel/navi/NaviRecoveryBranchAuthorityService","source":"webgpu-os/kernel/navi/NaviRecoveryBranchAuthorityService.js","import":"/webgpu-os/kernel/navi/NaviRecoveryBranchAuthorityService.js","sourceHash":"f3236ef5b49b83885d4dea755e3bcfbd2784828bc603c06c8b376351d64dafe6","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviRecoveryBranchAuthorityService.js#0006:NAVI_ANCESTRY_ATTESTATION_FORMAT","exportIndex":6,"name":"NAVI_ANCESTRY_ATTESTATION_FORMAT","kind":"constant","signature":"NAVI_ANCESTRY_ATTESTATION_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviRecoveryBranchAuthorityService.md","moduleTitle":"kernel/navi/NaviRecoveryBranchAuthorityService","source":"webgpu-os/kernel/navi/NaviRecoveryBranchAuthorityService.js","import":"/webgpu-os/kernel/navi/NaviRecoveryBranchAuthorityService.js","sourceHash":"f3236ef5b49b83885d4dea755e3bcfbd2784828bc603c06c8b376351d64dafe6","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviRecoveryBranchAuthorityService.js#0007:NAVI_RECOVERY_BRANCH_DECISION_FORMAT","exportIndex":7,"name":"NAVI_RECOVERY_BRANCH_DECISION_FORMAT","kind":"constant","signature":"NAVI_RECOVERY_BRANCH_DECISION_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviRecoveryBranchStore.md","moduleTitle":"kernel/navi/NaviRecoveryBranchStore","source":"webgpu-os/kernel/navi/NaviRecoveryBranchStore.js","import":"/webgpu-os/kernel/navi/NaviRecoveryBranchStore.js","sourceHash":"5474977a1ab71b74bf6f4f92a714dcd52511b1299f5404b32009907c3fc01673","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/NaviRecoveryBranchStore.js","title":"kernel/navi/NaviRecoveryBranchStore","summary":"Durable, encrypted-at-rest recovery-branch journal. The Store never persists decrypted Navi backup payloads. It retains the authenticated encrypted bundle, a content-free reconciliation diff, and exact approval/settlement evidence. Canonical Navi state remains owned by the continuity and cognition services.","exportCount":8}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviRecoveryBranchStore.md","moduleTitle":"kernel/navi/NaviRecoveryBranchStore","source":"webgpu-os/kernel/navi/NaviRecoveryBranchStore.js","import":"/webgpu-os/kernel/navi/NaviRecoveryBranchStore.js","sourceHash":"5474977a1ab71b74bf6f4f92a714dcd52511b1299f5404b32009907c3fc01673","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviRecoveryBranchStore.js#0000:NaviRecoveryBranchStoreError","exportIndex":0,"name":"NaviRecoveryBranchStoreError","kind":"class","signature":"class NaviRecoveryBranchStoreError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviRecoveryBranchStore.md","moduleTitle":"kernel/navi/NaviRecoveryBranchStore","source":"webgpu-os/kernel/navi/NaviRecoveryBranchStore.js","import":"/webgpu-os/kernel/navi/NaviRecoveryBranchStore.js","sourceHash":"5474977a1ab71b74bf6f4f92a714dcd52511b1299f5404b32009907c3fc01673","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviRecoveryBranchStore.js#0001:NaviRecoveryBranchConflictError","exportIndex":1,"name":"NaviRecoveryBranchConflictError","kind":"class","signature":"class NaviRecoveryBranchConflictError extends NaviRecoveryBranchStoreError","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviRecoveryBranchStore.md","moduleTitle":"kernel/navi/NaviRecoveryBranchStore","source":"webgpu-os/kernel/navi/NaviRecoveryBranchStore.js","import":"/webgpu-os/kernel/navi/NaviRecoveryBranchStore.js","sourceHash":"5474977a1ab71b74bf6f4f92a714dcd52511b1299f5404b32009907c3fc01673","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviRecoveryBranchStore.js#0002:NaviRecoveryBranchIntegrityError","exportIndex":2,"name":"NaviRecoveryBranchIntegrityError","kind":"class","signature":"class NaviRecoveryBranchIntegrityError extends NaviRecoveryBranchStoreError","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviRecoveryBranchStore.md","moduleTitle":"kernel/navi/NaviRecoveryBranchStore","source":"webgpu-os/kernel/navi/NaviRecoveryBranchStore.js","import":"/webgpu-os/kernel/navi/NaviRecoveryBranchStore.js","sourceHash":"5474977a1ab71b74bf6f4f92a714dcd52511b1299f5404b32009907c3fc01673","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviRecoveryBranchStore.js#0003:NaviRecoveryBranchStore","exportIndex":3,"name":"NaviRecoveryBranchStore","kind":"class","signature":"class NaviRecoveryBranchStore","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviRecoveryBranchStore.md","moduleTitle":"kernel/navi/NaviRecoveryBranchStore","source":"webgpu-os/kernel/navi/NaviRecoveryBranchStore.js","import":"/webgpu-os/kernel/navi/NaviRecoveryBranchStore.js","sourceHash":"5474977a1ab71b74bf6f4f92a714dcd52511b1299f5404b32009907c3fc01673","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviRecoveryBranchStore.js#0004:NAVI_RECOVERY_BRANCH_DATABASE_NAME","exportIndex":4,"name":"NAVI_RECOVERY_BRANCH_DATABASE_NAME","kind":"constant","signature":"NAVI_RECOVERY_BRANCH_DATABASE_NAME","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviRecoveryBranchStore.md","moduleTitle":"kernel/navi/NaviRecoveryBranchStore","source":"webgpu-os/kernel/navi/NaviRecoveryBranchStore.js","import":"/webgpu-os/kernel/navi/NaviRecoveryBranchStore.js","sourceHash":"5474977a1ab71b74bf6f4f92a714dcd52511b1299f5404b32009907c3fc01673","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviRecoveryBranchStore.js#0005:NAVI_RECOVERY_BRANCH_DATABASE_VERSION","exportIndex":5,"name":"NAVI_RECOVERY_BRANCH_DATABASE_VERSION","kind":"constant","signature":"NAVI_RECOVERY_BRANCH_DATABASE_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviRecoveryBranchStore.md","moduleTitle":"kernel/navi/NaviRecoveryBranchStore","source":"webgpu-os/kernel/navi/NaviRecoveryBranchStore.js","import":"/webgpu-os/kernel/navi/NaviRecoveryBranchStore.js","sourceHash":"5474977a1ab71b74bf6f4f92a714dcd52511b1299f5404b32009907c3fc01673","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviRecoveryBranchStore.js#0006:NAVI_RECOVERY_BRANCH_STORE_NAME","exportIndex":6,"name":"NAVI_RECOVERY_BRANCH_STORE_NAME","kind":"constant","signature":"NAVI_RECOVERY_BRANCH_STORE_NAME","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviRecoveryBranchStore.md","moduleTitle":"kernel/navi/NaviRecoveryBranchStore","source":"webgpu-os/kernel/navi/NaviRecoveryBranchStore.js","import":"/webgpu-os/kernel/navi/NaviRecoveryBranchStore.js","sourceHash":"5474977a1ab71b74bf6f4f92a714dcd52511b1299f5404b32009907c3fc01673","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviRecoveryBranchStore.js#0007:NAVI_RECOVERY_BRANCH_RECORD_FORMAT","exportIndex":7,"name":"NAVI_RECOVERY_BRANCH_RECORD_FORMAT","kind":"constant","signature":"NAVI_RECOVERY_BRANCH_RECORD_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviRecoveryEscrow.md","moduleTitle":"kernel/navi/NaviRecoveryEscrow","source":"webgpu-os/kernel/navi/NaviRecoveryEscrow.js","import":"/webgpu-os/kernel/navi/NaviRecoveryEscrow.js","sourceHash":"279ff2a8ace9e78d5a1823f28c365d50d2351497c3dd724358ad1f3dfdd86487","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/NaviRecoveryEscrow.js","title":"kernel/navi/NaviRecoveryEscrow","summary":"Kernel-only, progressive recovery-factor escrow. Recovery material is isolated from the ordinary VFS and continuity stores in a purpose-specific IndexedDB database. Public projections contain only bounded disclosure metadata. The device factor (C) can be retrieved only by kernel code holding the module capability symbol.","exportCount":9}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviRecoveryEscrow.md","moduleTitle":"kernel/navi/NaviRecoveryEscrow","source":"webgpu-os/kernel/navi/NaviRecoveryEscrow.js","import":"/webgpu-os/kernel/navi/NaviRecoveryEscrow.js","sourceHash":"279ff2a8ace9e78d5a1823f28c365d50d2351497c3dd724358ad1f3dfdd86487","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviRecoveryEscrow.js#0000:NaviRecoveryEscrowError","exportIndex":0,"name":"NaviRecoveryEscrowError","kind":"class","signature":"class NaviRecoveryEscrowError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviRecoveryEscrow.md","moduleTitle":"kernel/navi/NaviRecoveryEscrow","source":"webgpu-os/kernel/navi/NaviRecoveryEscrow.js","import":"/webgpu-os/kernel/navi/NaviRecoveryEscrow.js","sourceHash":"279ff2a8ace9e78d5a1823f28c365d50d2351497c3dd724358ad1f3dfdd86487","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviRecoveryEscrow.js#0001:NaviRecoveryEscrow","exportIndex":1,"name":"NaviRecoveryEscrow","kind":"class","signature":"class NaviRecoveryEscrow","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviRecoveryEscrow.md","moduleTitle":"kernel/navi/NaviRecoveryEscrow","source":"webgpu-os/kernel/navi/NaviRecoveryEscrow.js","import":"/webgpu-os/kernel/navi/NaviRecoveryEscrow.js","sourceHash":"279ff2a8ace9e78d5a1823f28c365d50d2351497c3dd724358ad1f3dfdd86487","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviRecoveryEscrow.js#0002:NAVI_RECOVERY_ESCROW_DATABASE_NAME","exportIndex":2,"name":"NAVI_RECOVERY_ESCROW_DATABASE_NAME","kind":"constant","signature":"NAVI_RECOVERY_ESCROW_DATABASE_NAME","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviRecoveryEscrow.md","moduleTitle":"kernel/navi/NaviRecoveryEscrow","source":"webgpu-os/kernel/navi/NaviRecoveryEscrow.js","import":"/webgpu-os/kernel/navi/NaviRecoveryEscrow.js","sourceHash":"279ff2a8ace9e78d5a1823f28c365d50d2351497c3dd724358ad1f3dfdd86487","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviRecoveryEscrow.js#0003:NAVI_RECOVERY_ESCROW_DATABASE_VERSION","exportIndex":3,"name":"NAVI_RECOVERY_ESCROW_DATABASE_VERSION","kind":"constant","signature":"NAVI_RECOVERY_ESCROW_DATABASE_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviRecoveryEscrow.md","moduleTitle":"kernel/navi/NaviRecoveryEscrow","source":"webgpu-os/kernel/navi/NaviRecoveryEscrow.js","import":"/webgpu-os/kernel/navi/NaviRecoveryEscrow.js","sourceHash":"279ff2a8ace9e78d5a1823f28c365d50d2351497c3dd724358ad1f3dfdd86487","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviRecoveryEscrow.js#0004:NAVI_RECOVERY_ESCROW_KEYS_STORE","exportIndex":4,"name":"NAVI_RECOVERY_ESCROW_KEYS_STORE","kind":"constant","signature":"NAVI_RECOVERY_ESCROW_KEYS_STORE","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviRecoveryEscrow.md","moduleTitle":"kernel/navi/NaviRecoveryEscrow","source":"webgpu-os/kernel/navi/NaviRecoveryEscrow.js","import":"/webgpu-os/kernel/navi/NaviRecoveryEscrow.js","sourceHash":"279ff2a8ace9e78d5a1823f28c365d50d2351497c3dd724358ad1f3dfdd86487","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviRecoveryEscrow.js#0005:NAVI_RECOVERY_ESCROW_FACTORS_STORE","exportIndex":5,"name":"NAVI_RECOVERY_ESCROW_FACTORS_STORE","kind":"constant","signature":"NAVI_RECOVERY_ESCROW_FACTORS_STORE","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviRecoveryEscrow.md","moduleTitle":"kernel/navi/NaviRecoveryEscrow","source":"webgpu-os/kernel/navi/NaviRecoveryEscrow.js","import":"/webgpu-os/kernel/navi/NaviRecoveryEscrow.js","sourceHash":"279ff2a8ace9e78d5a1823f28c365d50d2351497c3dd724358ad1f3dfdd86487","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviRecoveryEscrow.js#0006:NAVI_RECOVERY_ESCROW_FORMAT","exportIndex":6,"name":"NAVI_RECOVERY_ESCROW_FORMAT","kind":"constant","signature":"NAVI_RECOVERY_ESCROW_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviRecoveryEscrow.md","moduleTitle":"kernel/navi/NaviRecoveryEscrow","source":"webgpu-os/kernel/navi/NaviRecoveryEscrow.js","import":"/webgpu-os/kernel/navi/NaviRecoveryEscrow.js","sourceHash":"279ff2a8ace9e78d5a1823f28c365d50d2351497c3dd724358ad1f3dfdd86487","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviRecoveryEscrow.js#0007:NAVI_RECOVERY_ESCROW_STATUS_FORMAT","exportIndex":7,"name":"NAVI_RECOVERY_ESCROW_STATUS_FORMAT","kind":"constant","signature":"NAVI_RECOVERY_ESCROW_STATUS_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviRecoveryEscrow.md","moduleTitle":"kernel/navi/NaviRecoveryEscrow","source":"webgpu-os/kernel/navi/NaviRecoveryEscrow.js","import":"/webgpu-os/kernel/navi/NaviRecoveryEscrow.js","sourceHash":"279ff2a8ace9e78d5a1823f28c365d50d2351497c3dd724358ad1f3dfdd86487","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviRecoveryEscrow.js#0008:NAVI_RECOVERY_ESCROW_INTERNAL","exportIndex":8,"name":"NAVI_RECOVERY_ESCROW_INTERNAL","kind":"constant","signature":"NAVI_RECOVERY_ESCROW_INTERNAL","summary":"Opaque kernel capability. It must never be copied into a syscall, app projection, log, or persisted record."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviRecoveryRuntime.md","moduleTitle":"kernel/navi/NaviRecoveryRuntime","source":"webgpu-os/kernel/navi/NaviRecoveryRuntime.js","import":"/webgpu-os/kernel/navi/NaviRecoveryRuntime.js","sourceHash":"e7931520d00c16dae5503c161446f6e528aa3ae9c6731d6463dd05f10318ac7a","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/NaviRecoveryRuntime.js","title":"kernel/navi/NaviRecoveryRuntime","summary":"Operator-bound Phase 7 recovery aggregate. This runtime keeps approval construction, portable-state verification, canonical cognition writes, and ancestry authority inside the kernel. Apps submit recovery factors and human decisions, never hashes or signatures.","exportCount":2}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviRecoveryRuntime.md","moduleTitle":"kernel/navi/NaviRecoveryRuntime","source":"webgpu-os/kernel/navi/NaviRecoveryRuntime.js","import":"/webgpu-os/kernel/navi/NaviRecoveryRuntime.js","sourceHash":"e7931520d00c16dae5503c161446f6e528aa3ae9c6731d6463dd05f10318ac7a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviRecoveryRuntime.js#0000:NaviRecoveryRuntimeError","exportIndex":0,"name":"NaviRecoveryRuntimeError","kind":"class","signature":"class NaviRecoveryRuntimeError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviRecoveryRuntime.md","moduleTitle":"kernel/navi/NaviRecoveryRuntime","source":"webgpu-os/kernel/navi/NaviRecoveryRuntime.js","import":"/webgpu-os/kernel/navi/NaviRecoveryRuntime.js","sourceHash":"e7931520d00c16dae5503c161446f6e528aa3ae9c6731d6463dd05f10318ac7a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviRecoveryRuntime.js#0001:NaviRecoveryRuntime","exportIndex":1,"name":"NaviRecoveryRuntime","kind":"class","signature":"class NaviRecoveryRuntime","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviRelationshipService.md","moduleTitle":"kernel/navi/NaviRelationshipService","source":"webgpu-os/kernel/navi/NaviRelationshipService.js","import":"/webgpu-os/kernel/navi/NaviRelationshipService.js","sourceHash":"da233c46f8aa2100267cb3ffd27311feba5bdce3072acf3de0c2dfca11b3a2ed","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/NaviRelationshipService.js","title":"kernel/navi/NaviRelationshipService","summary":"NaviRelationshipService — signed, append-only relationship authority. Relationships are evidence, not ambient trust. Chat contacts and package publishers never enter this service, and an active relationship grants no authority unless one of its exact signed policy rules matches the request. Raw contracts and encrypted records remain kernel-private; public methods return immutable projections with signature values and condition values removed.","exportCount":6}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviRelationshipService.md","moduleTitle":"kernel/navi/NaviRelationshipService","source":"webgpu-os/kernel/navi/NaviRelationshipService.js","import":"/webgpu-os/kernel/navi/NaviRelationshipService.js","sourceHash":"da233c46f8aa2100267cb3ffd27311feba5bdce3072acf3de0c2dfca11b3a2ed","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviRelationshipService.js#0000:NaviRelationshipServiceError","exportIndex":0,"name":"NaviRelationshipServiceError","kind":"class","signature":"class NaviRelationshipServiceError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviRelationshipService.md","moduleTitle":"kernel/navi/NaviRelationshipService","source":"webgpu-os/kernel/navi/NaviRelationshipService.js","import":"/webgpu-os/kernel/navi/NaviRelationshipService.js","sourceHash":"da233c46f8aa2100267cb3ffd27311feba5bdce3072acf3de0c2dfca11b3a2ed","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviRelationshipService.js#0001:NaviRelationshipIntegrityError","exportIndex":1,"name":"NaviRelationshipIntegrityError","kind":"class","signature":"class NaviRelationshipIntegrityError extends NaviRelationshipServiceError","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviRelationshipService.md","moduleTitle":"kernel/navi/NaviRelationshipService","source":"webgpu-os/kernel/navi/NaviRelationshipService.js","import":"/webgpu-os/kernel/navi/NaviRelationshipService.js","sourceHash":"da233c46f8aa2100267cb3ffd27311feba5bdce3072acf3de0c2dfca11b3a2ed","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviRelationshipService.js#0002:NaviRelationshipService","exportIndex":2,"name":"NaviRelationshipService","kind":"class","signature":"class NaviRelationshipService","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviRelationshipService.md","moduleTitle":"kernel/navi/NaviRelationshipService","source":"webgpu-os/kernel/navi/NaviRelationshipService.js","import":"/webgpu-os/kernel/navi/NaviRelationshipService.js","sourceHash":"da233c46f8aa2100267cb3ffd27311feba5bdce3072acf3de0c2dfca11b3a2ed","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviRelationshipService.js#0003:NAVI_RELATIONSHIP_SERVICE_FORMAT","exportIndex":3,"name":"NAVI_RELATIONSHIP_SERVICE_FORMAT","kind":"constant","signature":"NAVI_RELATIONSHIP_SERVICE_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviRelationshipService.md","moduleTitle":"kernel/navi/NaviRelationshipService","source":"webgpu-os/kernel/navi/NaviRelationshipService.js","import":"/webgpu-os/kernel/navi/NaviRelationshipService.js","sourceHash":"da233c46f8aa2100267cb3ffd27311feba5bdce3072acf3de0c2dfca11b3a2ed","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviRelationshipService.js#0004:NAVI_RELATIONSHIP_EVENT_RECORD_FORMAT","exportIndex":4,"name":"NAVI_RELATIONSHIP_EVENT_RECORD_FORMAT","kind":"constant","signature":"NAVI_RELATIONSHIP_EVENT_RECORD_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviRelationshipService.md","moduleTitle":"kernel/navi/NaviRelationshipService","source":"webgpu-os/kernel/navi/NaviRelationshipService.js","import":"/webgpu-os/kernel/navi/NaviRelationshipService.js","sourceHash":"da233c46f8aa2100267cb3ffd27311feba5bdce3072acf3de0c2dfca11b3a2ed","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviRelationshipService.js#0005:NAVI_RELATIONSHIP_RECORD_TYPE","exportIndex":5,"name":"NAVI_RELATIONSHIP_RECORD_TYPE","kind":"constant","signature":"NAVI_RELATIONSHIP_RECORD_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviResourceCatalog.md","moduleTitle":"kernel/navi/NaviResourceCatalog","source":"webgpu-os/kernel/navi/NaviResourceCatalog.js","import":"/webgpu-os/kernel/navi/NaviResourceCatalog.js","sourceHash":"4692d76a8f11c2e0bee31118dc4cd14572dc48a9b27599d4cd260515b80f7c51","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/NaviResourceCatalog.js","title":"kernel/navi/NaviResourceCatalog","summary":"NaviResourceCatalog.js — one deterministic, searchable projection of Navi tools, Faculties, guidance recipes, task episodes, and related resources. Catalog entries are descriptions only. Search never executes a resource or grants permission, and callers must resolve live authority independently.","exportCount":5}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviResourceCatalog.md","moduleTitle":"kernel/navi/NaviResourceCatalog","source":"webgpu-os/kernel/navi/NaviResourceCatalog.js","import":"/webgpu-os/kernel/navi/NaviResourceCatalog.js","sourceHash":"4692d76a8f11c2e0bee31118dc4cd14572dc48a9b27599d4cd260515b80f7c51","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviResourceCatalog.js#0000:NaviResourceCatalog","exportIndex":0,"name":"NaviResourceCatalog","kind":"class","signature":"class NaviResourceCatalog","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviResourceCatalog.md","moduleTitle":"kernel/navi/NaviResourceCatalog","source":"webgpu-os/kernel/navi/NaviResourceCatalog.js","import":"/webgpu-os/kernel/navi/NaviResourceCatalog.js","sourceHash":"4692d76a8f11c2e0bee31118dc4cd14572dc48a9b27599d4cd260515b80f7c51","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviResourceCatalog.js#0001:projectBrokerDecisionToResourceSelection","exportIndex":1,"name":"projectBrokerDecisionToResourceSelection","kind":"function","signature":"async projectBrokerDecisionToResourceSelection(rawInput = {}, rawOptions = {})","summary":"Convert one existing NaviModelBroker decision into the Phase 8 resource selection contract without running a second selector. The broker's selected route and candidate order are authoritative. This projection only validates, binds, and signs that already-made decision."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviResourceCatalog.md","moduleTitle":"kernel/navi/NaviResourceCatalog","source":"webgpu-os/kernel/navi/NaviResourceCatalog.js","import":"/webgpu-os/kernel/navi/NaviResourceCatalog.js","sourceHash":"4692d76a8f11c2e0bee31118dc4cd14572dc48a9b27599d4cd260515b80f7c51","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviResourceCatalog.js#0002:createNaviModelRouteResourceBindings","exportIndex":2,"name":"createNaviModelRouteResourceBindings","kind":"function","signature":"async createNaviModelRouteResourceBindings(routeConfiguration, purpose)","summary":"Build the exact descriptor and verifier bindings for every model route in a broker candidate set. The descriptor hash intentionally shares the execution-plan route domain so the persisted selection and executable plan attest the same normalized route. No provider content or credential enters either binding."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviResourceCatalog.md","moduleTitle":"kernel/navi/NaviResourceCatalog","source":"webgpu-os/kernel/navi/NaviResourceCatalog.js","import":"/webgpu-os/kernel/navi/NaviResourceCatalog.js","sourceHash":"4692d76a8f11c2e0bee31118dc4cd14572dc48a9b27599d4cd260515b80f7c51","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviResourceCatalog.js#0003:NAVI_RESOURCE_CATALOG_FORMATS","exportIndex":3,"name":"NAVI_RESOURCE_CATALOG_FORMATS","kind":"constant","signature":"NAVI_RESOURCE_CATALOG_FORMATS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviResourceCatalog.md","moduleTitle":"kernel/navi/NaviResourceCatalog","source":"webgpu-os/kernel/navi/NaviResourceCatalog.js","import":"/webgpu-os/kernel/navi/NaviResourceCatalog.js","sourceHash":"4692d76a8f11c2e0bee31118dc4cd14572dc48a9b27599d4cd260515b80f7c51","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviResourceCatalog.js#0004:NAVI_BROKER_RESOURCE_EXCLUSION_REASON_MAP","exportIndex":4,"name":"NAVI_BROKER_RESOURCE_EXCLUSION_REASON_MAP","kind":"constant","signature":"NAVI_BROKER_RESOURCE_EXCLUSION_REASON_MAP","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviResourceService.md","moduleTitle":"kernel/navi/NaviResourceService","source":"webgpu-os/kernel/navi/NaviResourceService.js","import":"/webgpu-os/kernel/navi/NaviResourceService.js","sourceHash":"986fcdd5d3f33f59096bb78565d4d87c82a0ff107f07d8f43dc7d0cb935cc00c","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/NaviResourceService.js","title":"kernel/navi/NaviResourceService","summary":"Kernel-owned resource reservation, metering, and settlement. One encrypted CAS account owns every lease for one Navi task. An authenticated encrypted branch index owns the exact aggregate charge and account membership. Account and index revisions commit through one Store batch while all accounts for the same Navi branch share one Web Lock. Every task binds its exact kernel-supplied resource ceiling on first reservation. Every externally meaningful lease state is an operationally signed navi-resource-lease-v1 contract.","exportCount":13}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviResourceService.md","moduleTitle":"kernel/navi/NaviResourceService","source":"webgpu-os/kernel/navi/NaviResourceService.js","import":"/webgpu-os/kernel/navi/NaviResourceService.js","sourceHash":"986fcdd5d3f33f59096bb78565d4d87c82a0ff107f07d8f43dc7d0cb935cc00c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviResourceService.js#0000:NaviResourceServiceError","exportIndex":0,"name":"NaviResourceServiceError","kind":"class","signature":"class NaviResourceServiceError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviResourceService.md","moduleTitle":"kernel/navi/NaviResourceService","source":"webgpu-os/kernel/navi/NaviResourceService.js","import":"/webgpu-os/kernel/navi/NaviResourceService.js","sourceHash":"986fcdd5d3f33f59096bb78565d4d87c82a0ff107f07d8f43dc7d0cb935cc00c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviResourceService.js#0001:NaviResourceService","exportIndex":1,"name":"NaviResourceService","kind":"class","signature":"class NaviResourceService","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviResourceService.md","moduleTitle":"kernel/navi/NaviResourceService","source":"webgpu-os/kernel/navi/NaviResourceService.js","import":"/webgpu-os/kernel/navi/NaviResourceService.js","sourceHash":"986fcdd5d3f33f59096bb78565d4d87c82a0ff107f07d8f43dc7d0cb935cc00c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviResourceService.js#0002:NAVI_RESOURCE_SERVICE_FORMAT","exportIndex":2,"name":"NAVI_RESOURCE_SERVICE_FORMAT","kind":"constant","signature":"NAVI_RESOURCE_SERVICE_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviResourceService.md","moduleTitle":"kernel/navi/NaviResourceService","source":"webgpu-os/kernel/navi/NaviResourceService.js","import":"/webgpu-os/kernel/navi/NaviResourceService.js","sourceHash":"986fcdd5d3f33f59096bb78565d4d87c82a0ff107f07d8f43dc7d0cb935cc00c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviResourceService.js#0003:NAVI_RESOURCE_ACCOUNT_FORMAT","exportIndex":3,"name":"NAVI_RESOURCE_ACCOUNT_FORMAT","kind":"constant","signature":"NAVI_RESOURCE_ACCOUNT_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviResourceService.md","moduleTitle":"kernel/navi/NaviResourceService","source":"webgpu-os/kernel/navi/NaviResourceService.js","import":"/webgpu-os/kernel/navi/NaviResourceService.js","sourceHash":"986fcdd5d3f33f59096bb78565d4d87c82a0ff107f07d8f43dc7d0cb935cc00c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviResourceService.js#0004:NAVI_RESOURCE_LEASE_RECORD_FORMAT","exportIndex":4,"name":"NAVI_RESOURCE_LEASE_RECORD_FORMAT","kind":"constant","signature":"NAVI_RESOURCE_LEASE_RECORD_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviResourceService.md","moduleTitle":"kernel/navi/NaviResourceService","source":"webgpu-os/kernel/navi/NaviResourceService.js","import":"/webgpu-os/kernel/navi/NaviResourceService.js","sourceHash":"986fcdd5d3f33f59096bb78565d4d87c82a0ff107f07d8f43dc7d0cb935cc00c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviResourceService.js#0005:NAVI_RESOURCE_PROJECTION_FORMAT","exportIndex":5,"name":"NAVI_RESOURCE_PROJECTION_FORMAT","kind":"constant","signature":"NAVI_RESOURCE_PROJECTION_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviResourceService.md","moduleTitle":"kernel/navi/NaviResourceService","source":"webgpu-os/kernel/navi/NaviResourceService.js","import":"/webgpu-os/kernel/navi/NaviResourceService.js","sourceHash":"986fcdd5d3f33f59096bb78565d4d87c82a0ff107f07d8f43dc7d0cb935cc00c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviResourceService.js#0006:NAVI_RESOURCE_RECORD_TYPE","exportIndex":6,"name":"NAVI_RESOURCE_RECORD_TYPE","kind":"constant","signature":"NAVI_RESOURCE_RECORD_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviResourceService.md","moduleTitle":"kernel/navi/NaviResourceService","source":"webgpu-os/kernel/navi/NaviResourceService.js","import":"/webgpu-os/kernel/navi/NaviResourceService.js","sourceHash":"986fcdd5d3f33f59096bb78565d4d87c82a0ff107f07d8f43dc7d0cb935cc00c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviResourceService.js#0007:NAVI_RESOURCE_INDEX_RECORD_TYPE","exportIndex":7,"name":"NAVI_RESOURCE_INDEX_RECORD_TYPE","kind":"constant","signature":"NAVI_RESOURCE_INDEX_RECORD_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviResourceService.md","moduleTitle":"kernel/navi/NaviResourceService","source":"webgpu-os/kernel/navi/NaviResourceService.js","import":"/webgpu-os/kernel/navi/NaviResourceService.js","sourceHash":"986fcdd5d3f33f59096bb78565d4d87c82a0ff107f07d8f43dc7d0cb935cc00c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviResourceService.js#0008:NAVI_RESOURCE_BRANCH_INDEX_FORMAT","exportIndex":8,"name":"NAVI_RESOURCE_BRANCH_INDEX_FORMAT","kind":"constant","signature":"NAVI_RESOURCE_BRANCH_INDEX_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviResourceService.md","moduleTitle":"kernel/navi/NaviResourceService","source":"webgpu-os/kernel/navi/NaviResourceService.js","import":"/webgpu-os/kernel/navi/NaviResourceService.js","sourceHash":"986fcdd5d3f33f59096bb78565d4d87c82a0ff107f07d8f43dc7d0cb935cc00c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviResourceService.js#0009:NAVI_RESOURCE_INDEX_MIGRATION_FORMAT","exportIndex":9,"name":"NAVI_RESOURCE_INDEX_MIGRATION_FORMAT","kind":"constant","signature":"NAVI_RESOURCE_INDEX_MIGRATION_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviResourceService.md","moduleTitle":"kernel/navi/NaviResourceService","source":"webgpu-os/kernel/navi/NaviResourceService.js","import":"/webgpu-os/kernel/navi/NaviResourceService.js","sourceHash":"986fcdd5d3f33f59096bb78565d4d87c82a0ff107f07d8f43dc7d0cb935cc00c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviResourceService.js#0010:NAVI_RESOURCE_INDEX_MIGRATION_EVENT_FORMAT","exportIndex":10,"name":"NAVI_RESOURCE_INDEX_MIGRATION_EVENT_FORMAT","kind":"constant","signature":"NAVI_RESOURCE_INDEX_MIGRATION_EVENT_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviResourceService.md","moduleTitle":"kernel/navi/NaviResourceService","source":"webgpu-os/kernel/navi/NaviResourceService.js","import":"/webgpu-os/kernel/navi/NaviResourceService.js","sourceHash":"986fcdd5d3f33f59096bb78565d4d87c82a0ff107f07d8f43dc7d0cb935cc00c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviResourceService.js#0011:NAVI_RESOURCE_DIMENSIONS","exportIndex":11,"name":"NAVI_RESOURCE_DIMENSIONS","kind":"constant","signature":"NAVI_RESOURCE_DIMENSIONS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviResourceService.md","moduleTitle":"kernel/navi/NaviResourceService","source":"webgpu-os/kernel/navi/NaviResourceService.js","import":"/webgpu-os/kernel/navi/NaviResourceService.js","sourceHash":"986fcdd5d3f33f59096bb78565d4d87c82a0ff107f07d8f43dc7d0cb935cc00c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviResourceService.js#0012:NAVI_RESOURCE_VERIFICATION_RESERVE","exportIndex":12,"name":"NAVI_RESOURCE_VERIFICATION_RESERVE","kind":"constant","signature":"NAVI_RESOURCE_VERIFICATION_RESERVE","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviStrategyScorecard.md","moduleTitle":"kernel/navi/NaviStrategyScorecard","source":"webgpu-os/kernel/navi/NaviStrategyScorecard.js","import":"/webgpu-os/kernel/navi/NaviStrategyScorecard.js","sourceHash":"d278e06f6f044685c12f06fd5db608e2ff067c9303eeabe24c56565a06d91967","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/NaviStrategyScorecard.js","title":"kernel/navi/NaviStrategyScorecard","summary":"Deterministic, per-Navi, analysis-only scorecards from verified receipts.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviStrategyScorecard.md","moduleTitle":"kernel/navi/NaviStrategyScorecard","source":"webgpu-os/kernel/navi/NaviStrategyScorecard.js","import":"/webgpu-os/kernel/navi/NaviStrategyScorecard.js","sourceHash":"d278e06f6f044685c12f06fd5db608e2ff067c9303eeabe24c56565a06d91967","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviStrategyScorecard.js#0000:deriveNaviStrategyScorecard","exportIndex":0,"name":"deriveNaviStrategyScorecard","kind":"function","signature":"async deriveNaviStrategyScorecard(raw = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviStrictProjectionInput.md","moduleTitle":"kernel/navi/NaviStrictProjectionInput","source":"webgpu-os/kernel/navi/NaviStrictProjectionInput.js","import":"/webgpu-os/kernel/navi/NaviStrictProjectionInput.js","sourceHash":"f4453c1513f277cbcd715b45eced41926847dd1ad0d07268783e3c3ca6d4bffb","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/NaviStrictProjectionInput.js","title":"kernel/navi/NaviStrictProjectionInput","summary":"Strict JSON input helpers shared by authority-free Navi projections. These helpers reject accessors, extensions, cycles, sparse arrays, and non-finite values before a projection derives hashes or evidence counts.","exportCount":7}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviStrictProjectionInput.md","moduleTitle":"kernel/navi/NaviStrictProjectionInput","source":"webgpu-os/kernel/navi/NaviStrictProjectionInput.js","import":"/webgpu-os/kernel/navi/NaviStrictProjectionInput.js","sourceHash":"f4453c1513f277cbcd715b45eced41926847dd1ad0d07268783e3c3ca6d4bffb","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviStrictProjectionInput.js#0000:strictProjectionSnapshot","exportIndex":0,"name":"strictProjectionSnapshot","kind":"function","signature":"strictProjectionSnapshot(value, label = 'projection input')","summary":"Strict JSON input helpers shared by authority-free Navi projections. These helpers reject accessors, extensions, cycles, sparse arrays, and non-finite values before a projection derives hashes or evidence counts."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviStrictProjectionInput.md","moduleTitle":"kernel/navi/NaviStrictProjectionInput","source":"webgpu-os/kernel/navi/NaviStrictProjectionInput.js","import":"/webgpu-os/kernel/navi/NaviStrictProjectionInput.js","sourceHash":"f4453c1513f277cbcd715b45eced41926847dd1ad0d07268783e3c3ca6d4bffb","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviStrictProjectionInput.js#0001:exactProjectionKeys","exportIndex":1,"name":"exactProjectionKeys","kind":"function","signature":"exactProjectionKeys(value, allowed, label, required = [])","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviStrictProjectionInput.md","moduleTitle":"kernel/navi/NaviStrictProjectionInput","source":"webgpu-os/kernel/navi/NaviStrictProjectionInput.js","import":"/webgpu-os/kernel/navi/NaviStrictProjectionInput.js","sourceHash":"f4453c1513f277cbcd715b45eced41926847dd1ad0d07268783e3c3ca6d4bffb","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviStrictProjectionInput.js#0002:projectionInputError","exportIndex":2,"name":"projectionInputError","kind":"function","signature":"projectionInputError(message, code = 'NAVI_PROJECTION_INPUT_INVALID')","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviStrictProjectionInput.md","moduleTitle":"kernel/navi/NaviStrictProjectionInput","source":"webgpu-os/kernel/navi/NaviStrictProjectionInput.js","import":"/webgpu-os/kernel/navi/NaviStrictProjectionInput.js","sourceHash":"f4453c1513f277cbcd715b45eced41926847dd1ad0d07268783e3c3ca6d4bffb","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviStrictProjectionInput.js#0003:deepFreezeProjection","exportIndex":3,"name":"deepFreezeProjection","kind":"function","signature":"deepFreezeProjection(value)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviStrictProjectionInput.md","moduleTitle":"kernel/navi/NaviStrictProjectionInput","source":"webgpu-os/kernel/navi/NaviStrictProjectionInput.js","import":"/webgpu-os/kernel/navi/NaviStrictProjectionInput.js","sourceHash":"f4453c1513f277cbcd715b45eced41926847dd1ad0d07268783e3c3ca6d4bffb","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviStrictProjectionInput.js#0004:uniqueSortedProjectionStrings","exportIndex":4,"name":"uniqueSortedProjectionStrings","kind":"function","signature":"uniqueSortedProjectionStrings(values, label, { minimum = 0, maximum = 1024 } = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviStrictProjectionInput.md","moduleTitle":"kernel/navi/NaviStrictProjectionInput","source":"webgpu-os/kernel/navi/NaviStrictProjectionInput.js","import":"/webgpu-os/kernel/navi/NaviStrictProjectionInput.js","sourceHash":"f4453c1513f277cbcd715b45eced41926847dd1ad0d07268783e3c3ca6d4bffb","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviStrictProjectionInput.js#0005:strictProjectionTime","exportIndex":5,"name":"strictProjectionTime","kind":"function","signature":"strictProjectionTime(value, label)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviStrictProjectionInput.md","moduleTitle":"kernel/navi/NaviStrictProjectionInput","source":"webgpu-os/kernel/navi/NaviStrictProjectionInput.js","import":"/webgpu-os/kernel/navi/NaviStrictProjectionInput.js","sourceHash":"f4453c1513f277cbcd715b45eced41926847dd1ad0d07268783e3c3ca6d4bffb","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviStrictProjectionInput.js#0006:compareCodeUnits","exportIndex":6,"name":"compareCodeUnits","kind":"function","signature":"compareCodeUnits(left, right)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviSurfaceIntelligence.md","moduleTitle":"kernel/navi/NaviSurfaceIntelligence","source":"webgpu-os/kernel/navi/NaviSurfaceIntelligence.js","import":"/webgpu-os/kernel/navi/NaviSurfaceIntelligence.js","sourceHash":"fabfd97259e6701f31889a02fa657478c169131393fbb3929291822b30383e28","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/NaviSurfaceIntelligence.js","title":"kernel/navi/NaviSurfaceIntelligence","summary":"NaviSurfaceIntelligence — bounded, read-only semantic evidence for visible OS surfaces. Surface observations are untrusted evidence. They never grant authority and never execute an action. Mutations named by an action catalog still enter ToolRouter, Live Patch, Dodad Forge, or an app-owned command boundary.","exportCount":4}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviSurfaceIntelligence.md","moduleTitle":"kernel/navi/NaviSurfaceIntelligence","source":"webgpu-os/kernel/navi/NaviSurfaceIntelligence.js","import":"/webgpu-os/kernel/navi/NaviSurfaceIntelligence.js","sourceHash":"fabfd97259e6701f31889a02fa657478c169131393fbb3929291822b30383e28","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviSurfaceIntelligence.js#0000:NaviSurfaceIntelligence","exportIndex":0,"name":"NaviSurfaceIntelligence","kind":"class","signature":"class NaviSurfaceIntelligence","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviSurfaceIntelligence.md","moduleTitle":"kernel/navi/NaviSurfaceIntelligence","source":"webgpu-os/kernel/navi/NaviSurfaceIntelligence.js","import":"/webgpu-os/kernel/navi/NaviSurfaceIntelligence.js","sourceHash":"fabfd97259e6701f31889a02fa657478c169131393fbb3929291822b30383e28","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviSurfaceIntelligence.js#0001:MAX_VISUAL_PAYLOAD_ENCODED_BYTES","exportIndex":1,"name":"MAX_VISUAL_PAYLOAD_ENCODED_BYTES","kind":"constant","signature":"MAX_VISUAL_PAYLOAD_ENCODED_BYTES","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviSurfaceIntelligence.md","moduleTitle":"kernel/navi/NaviSurfaceIntelligence","source":"webgpu-os/kernel/navi/NaviSurfaceIntelligence.js","import":"/webgpu-os/kernel/navi/NaviSurfaceIntelligence.js","sourceHash":"fabfd97259e6701f31889a02fa657478c169131393fbb3929291822b30383e28","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviSurfaceIntelligence.js#0002:MAX_VISUAL_PAYLOAD_DECODED_BYTES","exportIndex":2,"name":"MAX_VISUAL_PAYLOAD_DECODED_BYTES","kind":"constant","signature":"MAX_VISUAL_PAYLOAD_DECODED_BYTES","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviSurfaceIntelligence.md","moduleTitle":"kernel/navi/NaviSurfaceIntelligence","source":"webgpu-os/kernel/navi/NaviSurfaceIntelligence.js","import":"/webgpu-os/kernel/navi/NaviSurfaceIntelligence.js","sourceHash":"fabfd97259e6701f31889a02fa657478c169131393fbb3929291822b30383e28","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviSurfaceIntelligence.js#0003:MAX_RETAINED_VISUAL_BYTES","exportIndex":3,"name":"MAX_RETAINED_VISUAL_BYTES","kind":"constant","signature":"MAX_RETAINED_VISUAL_BYTES","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviVfsOverlayService.md","moduleTitle":"kernel/navi/NaviVfsOverlayService","source":"webgpu-os/kernel/navi/NaviVfsOverlayService.js","import":"/webgpu-os/kernel/navi/NaviVfsOverlayService.js","sourceHash":"79f7a0c480a68101738f0c4f5b2408b32af775ba7d2dd56bb4702e714dd84c4b","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/NaviVfsOverlayService.js","title":"kernel/navi/NaviVfsOverlayService","summary":"Kernel-owned VFS isolation for delegated Navi workers. A delegated file capability is issued for one deterministic hidden overlay root. The adapter never rewrites a signed path: it verifies that the exact execution path is inside the bound overlay and returns that same path. The immutable snapshot hash describes the overlay at admission time; subsequent writes remain constrained by the signed path scopes rather than changing the authorization identity after every edit. Storage accounting is deliberately application-byte based. Kernel-owned overlay metadata, hashes, and signed receipts are excluded. Creating an empty overlay and observing a snapshot therefore cost zero storage bytes. Moving an overlay into recoverable trash is a durable application-data rewrite and is charged at the exact sum of the files present in its prepared snapshot.","exportCount":5}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviVfsOverlayService.md","moduleTitle":"kernel/navi/NaviVfsOverlayService","source":"webgpu-os/kernel/navi/NaviVfsOverlayService.js","import":"/webgpu-os/kernel/navi/NaviVfsOverlayService.js","sourceHash":"79f7a0c480a68101738f0c4f5b2408b32af775ba7d2dd56bb4702e714dd84c4b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviVfsOverlayService.js#0000:NaviVfsOverlayServiceError","exportIndex":0,"name":"NaviVfsOverlayServiceError","kind":"class","signature":"class NaviVfsOverlayServiceError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviVfsOverlayService.md","moduleTitle":"kernel/navi/NaviVfsOverlayService","source":"webgpu-os/kernel/navi/NaviVfsOverlayService.js","import":"/webgpu-os/kernel/navi/NaviVfsOverlayService.js","sourceHash":"79f7a0c480a68101738f0c4f5b2408b32af775ba7d2dd56bb4702e714dd84c4b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviVfsOverlayService.js#0001:NaviVfsOverlayService","exportIndex":1,"name":"NaviVfsOverlayService","kind":"class","signature":"class NaviVfsOverlayService","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviVfsOverlayService.md","moduleTitle":"kernel/navi/NaviVfsOverlayService","source":"webgpu-os/kernel/navi/NaviVfsOverlayService.js","import":"/webgpu-os/kernel/navi/NaviVfsOverlayService.js","sourceHash":"79f7a0c480a68101738f0c4f5b2408b32af775ba7d2dd56bb4702e714dd84c4b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviVfsOverlayService.js#0002:NAVI_VFS_OVERLAY_FORMAT","exportIndex":2,"name":"NAVI_VFS_OVERLAY_FORMAT","kind":"constant","signature":"NAVI_VFS_OVERLAY_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviVfsOverlayService.md","moduleTitle":"kernel/navi/NaviVfsOverlayService","source":"webgpu-os/kernel/navi/NaviVfsOverlayService.js","import":"/webgpu-os/kernel/navi/NaviVfsOverlayService.js","sourceHash":"79f7a0c480a68101738f0c4f5b2408b32af775ba7d2dd56bb4702e714dd84c4b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviVfsOverlayService.js#0003:NAVI_VFS_OVERLAY_STORAGE_RECEIPT_FORMAT","exportIndex":3,"name":"NAVI_VFS_OVERLAY_STORAGE_RECEIPT_FORMAT","kind":"constant","signature":"NAVI_VFS_OVERLAY_STORAGE_RECEIPT_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviVfsOverlayService.md","moduleTitle":"kernel/navi/NaviVfsOverlayService","source":"webgpu-os/kernel/navi/NaviVfsOverlayService.js","import":"/webgpu-os/kernel/navi/NaviVfsOverlayService.js","sourceHash":"79f7a0c480a68101738f0c4f5b2408b32af775ba7d2dd56bb4702e714dd84c4b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviVfsOverlayService.js#0004:NAVI_VFS_OVERLAY_METADATA_ROOT","exportIndex":4,"name":"NAVI_VFS_OVERLAY_METADATA_ROOT","kind":"constant","signature":"NAVI_VFS_OVERLAY_METADATA_ROOT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviWorkspaceOutputIndex.md","moduleTitle":"kernel/navi/NaviWorkspaceOutputIndex","source":"webgpu-os/kernel/navi/NaviWorkspaceOutputIndex.js","import":"/webgpu-os/kernel/navi/NaviWorkspaceOutputIndex.js","sourceHash":"ebd9950896dc746ffb90161a49d4a09761ba39bda382b6f535f5e284d42fee37","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/NaviWorkspaceOutputIndex.js","title":"kernel/navi/NaviWorkspaceOutputIndex","summary":"Rebuildable, non-authoritative references to canonical workspace outputs. The index owns no file content. Every entry is derived from an exact VFS observation and points back to the app-owned canonical path. Deleting the index loses no user data because the same projection can be rebuilt.","exportCount":3}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviWorkspaceOutputIndex.md","moduleTitle":"kernel/navi/NaviWorkspaceOutputIndex","source":"webgpu-os/kernel/navi/NaviWorkspaceOutputIndex.js","import":"/webgpu-os/kernel/navi/NaviWorkspaceOutputIndex.js","sourceHash":"ebd9950896dc746ffb90161a49d4a09761ba39bda382b6f535f5e284d42fee37","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviWorkspaceOutputIndex.js#0000:NaviWorkspaceOutputIndex","exportIndex":0,"name":"NaviWorkspaceOutputIndex","kind":"class","signature":"class NaviWorkspaceOutputIndex","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviWorkspaceOutputIndex.md","moduleTitle":"kernel/navi/NaviWorkspaceOutputIndex","source":"webgpu-os/kernel/navi/NaviWorkspaceOutputIndex.js","import":"/webgpu-os/kernel/navi/NaviWorkspaceOutputIndex.js","sourceHash":"ebd9950896dc746ffb90161a49d4a09761ba39bda382b6f535f5e284d42fee37","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviWorkspaceOutputIndex.js#0001:WORKSPACE_OUTPUT_CONTRACT_FORMAT","exportIndex":1,"name":"WORKSPACE_OUTPUT_CONTRACT_FORMAT","kind":"constant","signature":"WORKSPACE_OUTPUT_CONTRACT_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/NaviWorkspaceOutputIndex.md","moduleTitle":"kernel/navi/NaviWorkspaceOutputIndex","source":"webgpu-os/kernel/navi/NaviWorkspaceOutputIndex.js","import":"/webgpu-os/kernel/navi/NaviWorkspaceOutputIndex.js","sourceHash":"ebd9950896dc746ffb90161a49d4a09761ba39bda382b6f535f5e284d42fee37","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/NaviWorkspaceOutputIndex.js#0002:WORKSPACE_OUTPUT_REBUILD_FORMAT","exportIndex":2,"name":"WORKSPACE_OUTPUT_REBUILD_FORMAT","kind":"constant","signature":"WORKSPACE_OUTPUT_REBUILD_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/SurfaceTemporalVerifier.md","moduleTitle":"kernel/navi/SurfaceTemporalVerifier","source":"webgpu-os/kernel/navi/SurfaceTemporalVerifier.js","import":"/webgpu-os/kernel/navi/SurfaceTemporalVerifier.js","sourceHash":"1742dee5eb3385aed24ab44440e2c094bb794bcd11e823ede749ce0195aa272a","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/SurfaceTemporalVerifier.js","title":"kernel/navi/SurfaceTemporalVerifier","summary":"SurfaceTemporalVerifier compares two retained semantic captures. It is deliberately read-only. Visual comparison accepts contract evidence that was captured earlier and compares content hashes only; it never reads a payload.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/SurfaceTemporalVerifier.md","moduleTitle":"kernel/navi/SurfaceTemporalVerifier","source":"webgpu-os/kernel/navi/SurfaceTemporalVerifier.js","import":"/webgpu-os/kernel/navi/SurfaceTemporalVerifier.js","sourceHash":"1742dee5eb3385aed24ab44440e2c094bb794bcd11e823ede749ce0195aa272a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/SurfaceTemporalVerifier.js#0000:SurfaceTemporalVerifier","exportIndex":0,"name":"SurfaceTemporalVerifier","kind":"class","signature":"class SurfaceTemporalVerifier","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/adapters/ConstructManifestationAdapter.md","moduleTitle":"kernel/navi/adapters/ConstructManifestationAdapter","source":"webgpu-os/kernel/navi/adapters/ConstructManifestationAdapter.js","import":"/webgpu-os/kernel/navi/adapters/ConstructManifestationAdapter.js","sourceHash":"a75817ff4f1a5e6842e52c0fc34be6d892b6342bd0ef5b5ed37386a2a17b8fae","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/adapters/ConstructManifestationAdapter.js","title":"kernel/navi/adapters/ConstructManifestationAdapter","summary":"Narrow Construct manifestation boundary. The adapter deliberately captures only bound ActiveBody-style functions and explicit observation readers supplied by trusted kernel wiring. It never exposes the engine object, treats a body as identity, or derives authority from scene, presence, spatial, model, avatar, or body data.","exportCount":7}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/adapters/ConstructManifestationAdapter.md","moduleTitle":"kernel/navi/adapters/ConstructManifestationAdapter","source":"webgpu-os/kernel/navi/adapters/ConstructManifestationAdapter.js","import":"/webgpu-os/kernel/navi/adapters/ConstructManifestationAdapter.js","sourceHash":"a75817ff4f1a5e6842e52c0fc34be6d892b6342bd0ef5b5ed37386a2a17b8fae","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/adapters/ConstructManifestationAdapter.js#0000:NaviConstructManifestationAdapterError","exportIndex":0,"name":"NaviConstructManifestationAdapterError","kind":"class","signature":"class NaviConstructManifestationAdapterError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/adapters/ConstructManifestationAdapter.md","moduleTitle":"kernel/navi/adapters/ConstructManifestationAdapter","source":"webgpu-os/kernel/navi/adapters/ConstructManifestationAdapter.js","import":"/webgpu-os/kernel/navi/adapters/ConstructManifestationAdapter.js","sourceHash":"a75817ff4f1a5e6842e52c0fc34be6d892b6342bd0ef5b5ed37386a2a17b8fae","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/adapters/ConstructManifestationAdapter.js#0001:createConstructManifestationAdapter","exportIndex":1,"name":"createConstructManifestationAdapter","kind":"function","signature":"createConstructManifestationAdapter({ bodyId, bodyRuntime, manifestationId = NAVI_CONSTRUCT_PRIMARY_MANIFESTATION_ID, spawnPosition = [0, 0, 0], bodyOptions = {}, readActiveScene, readSelectedEntity, readVerifiedRealmPresence, readSpatialLocality, playAnimation, requestRealmAuthority, maxObservationBytes = DEFAULT_MAX_OBSERVATION_BYTES, clock = ()","summary":"Create the trusted Construct runtime attached by NaviManifestationAdapterRegistry. bodyRuntime is expected to be an ActiveBodySystem-compatible object. Readers are narrow kernel wrappers; each receives a frozen exact-scope request."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/adapters/ConstructManifestationAdapter.md","moduleTitle":"kernel/navi/adapters/ConstructManifestationAdapter","source":"webgpu-os/kernel/navi/adapters/ConstructManifestationAdapter.js","import":"/webgpu-os/kernel/navi/adapters/ConstructManifestationAdapter.js","sourceHash":"a75817ff4f1a5e6842e52c0fc34be6d892b6342bd0ef5b5ed37386a2a17b8fae","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/adapters/ConstructManifestationAdapter.js#0002:NAVI_CONSTRUCT_ADAPTER_FORMAT","exportIndex":2,"name":"NAVI_CONSTRUCT_ADAPTER_FORMAT","kind":"constant","signature":"NAVI_CONSTRUCT_ADAPTER_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/adapters/ConstructManifestationAdapter.md","moduleTitle":"kernel/navi/adapters/ConstructManifestationAdapter","source":"webgpu-os/kernel/navi/adapters/ConstructManifestationAdapter.js","import":"/webgpu-os/kernel/navi/adapters/ConstructManifestationAdapter.js","sourceHash":"a75817ff4f1a5e6842e52c0fc34be6d892b6342bd0ef5b5ed37386a2a17b8fae","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/adapters/ConstructManifestationAdapter.js#0003:NAVI_CONSTRUCT_ACTIVATION_FORMAT","exportIndex":3,"name":"NAVI_CONSTRUCT_ACTIVATION_FORMAT","kind":"constant","signature":"NAVI_CONSTRUCT_ACTIVATION_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/adapters/ConstructManifestationAdapter.md","moduleTitle":"kernel/navi/adapters/ConstructManifestationAdapter","source":"webgpu-os/kernel/navi/adapters/ConstructManifestationAdapter.js","import":"/webgpu-os/kernel/navi/adapters/ConstructManifestationAdapter.js","sourceHash":"a75817ff4f1a5e6842e52c0fc34be6d892b6342bd0ef5b5ed37386a2a17b8fae","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/adapters/ConstructManifestationAdapter.js#0004:NAVI_CONSTRUCT_OBSERVATION_FORMAT","exportIndex":4,"name":"NAVI_CONSTRUCT_OBSERVATION_FORMAT","kind":"constant","signature":"NAVI_CONSTRUCT_OBSERVATION_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/adapters/ConstructManifestationAdapter.md","moduleTitle":"kernel/navi/adapters/ConstructManifestationAdapter","source":"webgpu-os/kernel/navi/adapters/ConstructManifestationAdapter.js","import":"/webgpu-os/kernel/navi/adapters/ConstructManifestationAdapter.js","sourceHash":"a75817ff4f1a5e6842e52c0fc34be6d892b6342bd0ef5b5ed37386a2a17b8fae","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/adapters/ConstructManifestationAdapter.js#0005:NAVI_CONSTRUCT_ACTUATION_FORMAT","exportIndex":5,"name":"NAVI_CONSTRUCT_ACTUATION_FORMAT","kind":"constant","signature":"NAVI_CONSTRUCT_ACTUATION_FORMAT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/adapters/ConstructManifestationAdapter.md","moduleTitle":"kernel/navi/adapters/ConstructManifestationAdapter","source":"webgpu-os/kernel/navi/adapters/ConstructManifestationAdapter.js","import":"/webgpu-os/kernel/navi/adapters/ConstructManifestationAdapter.js","sourceHash":"a75817ff4f1a5e6842e52c0fc34be6d892b6342bd0ef5b5ed37386a2a17b8fae","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/adapters/ConstructManifestationAdapter.js#0006:NAVI_CONSTRUCT_PRIMARY_MANIFESTATION_ID","exportIndex":6,"name":"NAVI_CONSTRUCT_PRIMARY_MANIFESTATION_ID","kind":"constant","signature":"NAVI_CONSTRUCT_PRIMARY_MANIFESTATION_ID","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/builtins/ArtifactStudioFaculty.md","moduleTitle":"kernel/navi/builtins/ArtifactStudioFaculty","source":"webgpu-os/kernel/navi/builtins/ArtifactStudioFaculty.js","import":"/webgpu-os/kernel/navi/builtins/ArtifactStudioFaculty.js","sourceHash":"52333cd6de6a2cf824d9255085440b076cff65ac41ea46715d61162d5a1bb6ab","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/builtins/ArtifactStudioFaculty.js","title":"kernel/navi/builtins/ArtifactStudioFaculty","summary":"ArtifactStudioFaculty.js Canonical contract factory and worker source for AI Echo's built-in Artifact Studio adapter. The worker is deliberately tiny: it can request exactly one declared Artifact tool and receives no storage, credential, network, DOM, or raw-JavaScript authority of its own.","exportCount":13}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/builtins/ArtifactStudioFaculty.md","moduleTitle":"kernel/navi/builtins/ArtifactStudioFaculty","source":"webgpu-os/kernel/navi/builtins/ArtifactStudioFaculty.js","import":"/webgpu-os/kernel/navi/builtins/ArtifactStudioFaculty.js","sourceHash":"52333cd6de6a2cf824d9255085440b076cff65ac41ea46715d61162d5a1bb6ab","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/builtins/ArtifactStudioFaculty.js#0000:createArtifactStudioNaviFaculty","exportIndex":0,"name":"createArtifactStudioNaviFaculty","kind":"function","signature":"createArtifactStudioNaviFaculty({ descriptorHashes = {}, provenance = null, tests = [], signatures = null, version = ARTIFACT_STUDIO_FACULTY_VERSION, publisherId = ARTIFACT_STUDIO_PUBLISHER_ID, } = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/builtins/ArtifactStudioFaculty.md","moduleTitle":"kernel/navi/builtins/ArtifactStudioFaculty","source":"webgpu-os/kernel/navi/builtins/ArtifactStudioFaculty.js","import":"/webgpu-os/kernel/navi/builtins/ArtifactStudioFaculty.js","sourceHash":"52333cd6de6a2cf824d9255085440b076cff65ac41ea46715d61162d5a1bb6ab","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/builtins/ArtifactStudioFaculty.js#0001:createArtifactStudioFacultyPackageBinding","exportIndex":1,"name":"createArtifactStudioFacultyPackageBinding","kind":"function","signature":"async createArtifactStudioFacultyPackageBinding(manifest, { resourceHash = null } = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/builtins/ArtifactStudioFaculty.md","moduleTitle":"kernel/navi/builtins/ArtifactStudioFaculty","source":"webgpu-os/kernel/navi/builtins/ArtifactStudioFaculty.js","import":"/webgpu-os/kernel/navi/builtins/ArtifactStudioFaculty.js","sourceHash":"52333cd6de6a2cf824d9255085440b076cff65ac41ea46715d61162d5a1bb6ab","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/builtins/ArtifactStudioFaculty.js#0002:assertArtifactStudioManifest","exportIndex":2,"name":"assertArtifactStudioManifest","kind":"function","signature":"assertArtifactStudioManifest(value)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/builtins/ArtifactStudioFaculty.md","moduleTitle":"kernel/navi/builtins/ArtifactStudioFaculty","source":"webgpu-os/kernel/navi/builtins/ArtifactStudioFaculty.js","import":"/webgpu-os/kernel/navi/builtins/ArtifactStudioFaculty.js","sourceHash":"52333cd6de6a2cf824d9255085440b076cff65ac41ea46715d61162d5a1bb6ab","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/builtins/ArtifactStudioFaculty.js#0003:artifactStudioPackageEvidence","exportIndex":3,"name":"artifactStudioPackageEvidence","kind":"function","signature":"artifactStudioPackageEvidence()","summary":"Return the complete package evidence shape consumed by NaviFacultyPackagePolicy. The release preamble wins when present; raw browser development uses the checked-in public fallback package. No private signing material is present in either record."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/builtins/ArtifactStudioFaculty.md","moduleTitle":"kernel/navi/builtins/ArtifactStudioFaculty","source":"webgpu-os/kernel/navi/builtins/ArtifactStudioFaculty.js","import":"/webgpu-os/kernel/navi/builtins/ArtifactStudioFaculty.js","sourceHash":"52333cd6de6a2cf824d9255085440b076cff65ac41ea46715d61162d5a1bb6ab","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/builtins/ArtifactStudioFaculty.js#0004:artifactStudioSignedManifest","exportIndex":4,"name":"artifactStudioSignedManifest","kind":"function","signature":"artifactStudioSignedManifest()","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/builtins/ArtifactStudioFaculty.md","moduleTitle":"kernel/navi/builtins/ArtifactStudioFaculty","source":"webgpu-os/kernel/navi/builtins/ArtifactStudioFaculty.js","import":"/webgpu-os/kernel/navi/builtins/ArtifactStudioFaculty.js","sourceHash":"52333cd6de6a2cf824d9255085440b076cff65ac41ea46715d61162d5a1bb6ab","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/builtins/ArtifactStudioFaculty.js#0005:ARTIFACT_STUDIO_FACULTY_ID","exportIndex":5,"name":"ARTIFACT_STUDIO_FACULTY_ID","kind":"constant","signature":"ARTIFACT_STUDIO_FACULTY_ID","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/builtins/ArtifactStudioFaculty.md","moduleTitle":"kernel/navi/builtins/ArtifactStudioFaculty","source":"webgpu-os/kernel/navi/builtins/ArtifactStudioFaculty.js","import":"/webgpu-os/kernel/navi/builtins/ArtifactStudioFaculty.js","sourceHash":"52333cd6de6a2cf824d9255085440b076cff65ac41ea46715d61162d5a1bb6ab","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/builtins/ArtifactStudioFaculty.js#0006:ARTIFACT_STUDIO_FACULTY_VERSION_BASE","exportIndex":6,"name":"ARTIFACT_STUDIO_FACULTY_VERSION_BASE","kind":"constant","signature":"ARTIFACT_STUDIO_FACULTY_VERSION_BASE","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/builtins/ArtifactStudioFaculty.md","moduleTitle":"kernel/navi/builtins/ArtifactStudioFaculty","source":"webgpu-os/kernel/navi/builtins/ArtifactStudioFaculty.js","import":"/webgpu-os/kernel/navi/builtins/ArtifactStudioFaculty.js","sourceHash":"52333cd6de6a2cf824d9255085440b076cff65ac41ea46715d61162d5a1bb6ab","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/builtins/ArtifactStudioFaculty.js#0007:ARTIFACT_STUDIO_FACULTY_VERSION","exportIndex":7,"name":"ARTIFACT_STUDIO_FACULTY_VERSION","kind":"constant","signature":"ARTIFACT_STUDIO_FACULTY_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/builtins/ArtifactStudioFaculty.md","moduleTitle":"kernel/navi/builtins/ArtifactStudioFaculty","source":"webgpu-os/kernel/navi/builtins/ArtifactStudioFaculty.js","import":"/webgpu-os/kernel/navi/builtins/ArtifactStudioFaculty.js","sourceHash":"52333cd6de6a2cf824d9255085440b076cff65ac41ea46715d61162d5a1bb6ab","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/builtins/ArtifactStudioFaculty.js#0008:ARTIFACT_STUDIO_PACKAGE_ID","exportIndex":8,"name":"ARTIFACT_STUDIO_PACKAGE_ID","kind":"constant","signature":"ARTIFACT_STUDIO_PACKAGE_ID","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/builtins/ArtifactStudioFaculty.md","moduleTitle":"kernel/navi/builtins/ArtifactStudioFaculty","source":"webgpu-os/kernel/navi/builtins/ArtifactStudioFaculty.js","import":"/webgpu-os/kernel/navi/builtins/ArtifactStudioFaculty.js","sourceHash":"52333cd6de6a2cf824d9255085440b076cff65ac41ea46715d61162d5a1bb6ab","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/builtins/ArtifactStudioFaculty.js#0009:ARTIFACT_STUDIO_PUBLISHER_ID","exportIndex":9,"name":"ARTIFACT_STUDIO_PUBLISHER_ID","kind":"constant","signature":"ARTIFACT_STUDIO_PUBLISHER_ID","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/builtins/ArtifactStudioFaculty.md","moduleTitle":"kernel/navi/builtins/ArtifactStudioFaculty","source":"webgpu-os/kernel/navi/builtins/ArtifactStudioFaculty.js","import":"/webgpu-os/kernel/navi/builtins/ArtifactStudioFaculty.js","sourceHash":"52333cd6de6a2cf824d9255085440b076cff65ac41ea46715d61162d5a1bb6ab","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/builtins/ArtifactStudioFaculty.js#0010:ARTIFACT_STUDIO_SOURCE_PATH","exportIndex":10,"name":"ARTIFACT_STUDIO_SOURCE_PATH","kind":"constant","signature":"ARTIFACT_STUDIO_SOURCE_PATH","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/builtins/ArtifactStudioFaculty.md","moduleTitle":"kernel/navi/builtins/ArtifactStudioFaculty","source":"webgpu-os/kernel/navi/builtins/ArtifactStudioFaculty.js","import":"/webgpu-os/kernel/navi/builtins/ArtifactStudioFaculty.js","sourceHash":"52333cd6de6a2cf824d9255085440b076cff65ac41ea46715d61162d5a1bb6ab","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/builtins/ArtifactStudioFaculty.js#0011:ARTIFACT_STUDIO_TOOL_NAMES","exportIndex":11,"name":"ARTIFACT_STUDIO_TOOL_NAMES","kind":"constant","signature":"ARTIFACT_STUDIO_TOOL_NAMES","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/builtins/ArtifactStudioFaculty.md","moduleTitle":"kernel/navi/builtins/ArtifactStudioFaculty","source":"webgpu-os/kernel/navi/builtins/ArtifactStudioFaculty.js","import":"/webgpu-os/kernel/navi/builtins/ArtifactStudioFaculty.js","sourceHash":"52333cd6de6a2cf824d9255085440b076cff65ac41ea46715d61162d5a1bb6ab","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/builtins/ArtifactStudioFaculty.js#0012:ARTIFACT_STUDIO_FACULTY_SOURCE","exportIndex":12,"name":"ARTIFACT_STUDIO_FACULTY_SOURCE","kind":"constant","signature":"ARTIFACT_STUDIO_FACULTY_SOURCE","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/builtins/BrowserSemanticFaculty.md","moduleTitle":"kernel/navi/builtins/BrowserSemanticFaculty","source":"webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js","import":"/webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js","sourceHash":"01df2cbe28783b9f340c0451264fd9a6413da385c733ea51bcada020abf5ea3b","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js","title":"kernel/navi/builtins/BrowserSemanticFaculty","summary":"Canonical signed boundary for extension-backed semantic browser automation. The package is installed inert: only an explicit operator action may enable its device and network authority for a Navi.","exportCount":16}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/builtins/BrowserSemanticFaculty.md","moduleTitle":"kernel/navi/builtins/BrowserSemanticFaculty","source":"webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js","import":"/webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js","sourceHash":"01df2cbe28783b9f340c0451264fd9a6413da385c733ea51bcada020abf5ea3b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js#0000:browserSemanticFacultyDefinitionAtVersion","exportIndex":0,"name":"browserSemanticFacultyDefinitionAtVersion","kind":"function","signature":"browserSemanticFacultyDefinitionAtVersion(version)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/builtins/BrowserSemanticFaculty.md","moduleTitle":"kernel/navi/builtins/BrowserSemanticFaculty","source":"webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js","import":"/webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js","sourceHash":"01df2cbe28783b9f340c0451264fd9a6413da385c733ea51bcada020abf5ea3b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js#0001:createBrowserSemanticNaviFaculty","exportIndex":1,"name":"createBrowserSemanticNaviFaculty","kind":"function","signature":"createBrowserSemanticNaviFaculty({ descriptorHashes = {}, provenance = null, tests = [], signatures = null, version = BROWSER_SEMANTIC_FACULTY_VERSION, publisherId = BROWSER_SEMANTIC_PUBLISHER_ID, maxCalls = 1, } = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/builtins/BrowserSemanticFaculty.md","moduleTitle":"kernel/navi/builtins/BrowserSemanticFaculty","source":"webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js","import":"/webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js","sourceHash":"01df2cbe28783b9f340c0451264fd9a6413da385c733ea51bcada020abf5ea3b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js#0002:createBrowserSemanticFacultyPackageBinding","exportIndex":2,"name":"createBrowserSemanticFacultyPackageBinding","kind":"function","signature":"async createBrowserSemanticFacultyPackageBinding(manifest, { resourceHash = null } = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/builtins/BrowserSemanticFaculty.md","moduleTitle":"kernel/navi/builtins/BrowserSemanticFaculty","source":"webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js","import":"/webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js","sourceHash":"01df2cbe28783b9f340c0451264fd9a6413da385c733ea51bcada020abf5ea3b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js#0003:assertBrowserSemanticManifest","exportIndex":3,"name":"assertBrowserSemanticManifest","kind":"function","signature":"assertBrowserSemanticManifest(value, definition = BROWSER_SEMANTIC_FACULTY_DEFINITION)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/builtins/BrowserSemanticFaculty.md","moduleTitle":"kernel/navi/builtins/BrowserSemanticFaculty","source":"webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js","import":"/webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js","sourceHash":"01df2cbe28783b9f340c0451264fd9a6413da385c733ea51bcada020abf5ea3b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js#0004:browserSemanticPackageEvidence","exportIndex":4,"name":"browserSemanticPackageEvidence","kind":"function","signature":"browserSemanticPackageEvidence()","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/builtins/BrowserSemanticFaculty.md","moduleTitle":"kernel/navi/builtins/BrowserSemanticFaculty","source":"webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js","import":"/webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js","sourceHash":"01df2cbe28783b9f340c0451264fd9a6413da385c733ea51bcada020abf5ea3b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js#0005:browserSemanticSignedManifest","exportIndex":5,"name":"browserSemanticSignedManifest","kind":"function","signature":"browserSemanticSignedManifest()","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/builtins/BrowserSemanticFaculty.md","moduleTitle":"kernel/navi/builtins/BrowserSemanticFaculty","source":"webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js","import":"/webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js","sourceHash":"01df2cbe28783b9f340c0451264fd9a6413da385c733ea51bcada020abf5ea3b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js#0006:BROWSER_SEMANTIC_FACULTY_ID","exportIndex":6,"name":"BROWSER_SEMANTIC_FACULTY_ID","kind":"constant","signature":"BROWSER_SEMANTIC_FACULTY_ID","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/builtins/BrowserSemanticFaculty.md","moduleTitle":"kernel/navi/builtins/BrowserSemanticFaculty","source":"webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js","import":"/webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js","sourceHash":"01df2cbe28783b9f340c0451264fd9a6413da385c733ea51bcada020abf5ea3b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js#0007:BROWSER_SEMANTIC_FACULTY_VERSION_BASE","exportIndex":7,"name":"BROWSER_SEMANTIC_FACULTY_VERSION_BASE","kind":"constant","signature":"BROWSER_SEMANTIC_FACULTY_VERSION_BASE","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/builtins/BrowserSemanticFaculty.md","moduleTitle":"kernel/navi/builtins/BrowserSemanticFaculty","source":"webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js","import":"/webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js","sourceHash":"01df2cbe28783b9f340c0451264fd9a6413da385c733ea51bcada020abf5ea3b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js#0008:BROWSER_SEMANTIC_FACULTY_VERSION","exportIndex":8,"name":"BROWSER_SEMANTIC_FACULTY_VERSION","kind":"constant","signature":"BROWSER_SEMANTIC_FACULTY_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/builtins/BrowserSemanticFaculty.md","moduleTitle":"kernel/navi/builtins/BrowserSemanticFaculty","source":"webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js","import":"/webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js","sourceHash":"01df2cbe28783b9f340c0451264fd9a6413da385c733ea51bcada020abf5ea3b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js#0009:BROWSER_SEMANTIC_PACKAGE_ID","exportIndex":9,"name":"BROWSER_SEMANTIC_PACKAGE_ID","kind":"constant","signature":"BROWSER_SEMANTIC_PACKAGE_ID","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/builtins/BrowserSemanticFaculty.md","moduleTitle":"kernel/navi/builtins/BrowserSemanticFaculty","source":"webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js","import":"/webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js","sourceHash":"01df2cbe28783b9f340c0451264fd9a6413da385c733ea51bcada020abf5ea3b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js#0010:BROWSER_SEMANTIC_PUBLISHER_ID","exportIndex":10,"name":"BROWSER_SEMANTIC_PUBLISHER_ID","kind":"constant","signature":"BROWSER_SEMANTIC_PUBLISHER_ID","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/builtins/BrowserSemanticFaculty.md","moduleTitle":"kernel/navi/builtins/BrowserSemanticFaculty","source":"webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js","import":"/webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js","sourceHash":"01df2cbe28783b9f340c0451264fd9a6413da385c733ea51bcada020abf5ea3b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js#0011:BROWSER_SEMANTIC_SOURCE_PATH","exportIndex":11,"name":"BROWSER_SEMANTIC_SOURCE_PATH","kind":"constant","signature":"BROWSER_SEMANTIC_SOURCE_PATH","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/builtins/BrowserSemanticFaculty.md","moduleTitle":"kernel/navi/builtins/BrowserSemanticFaculty","source":"webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js","import":"/webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js","sourceHash":"01df2cbe28783b9f340c0451264fd9a6413da385c733ea51bcada020abf5ea3b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js#0012:BROWSER_SEMANTIC_NETWORK_BYTES_PER_CALL","exportIndex":12,"name":"BROWSER_SEMANTIC_NETWORK_BYTES_PER_CALL","kind":"constant","signature":"BROWSER_SEMANTIC_NETWORK_BYTES_PER_CALL","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/builtins/BrowserSemanticFaculty.md","moduleTitle":"kernel/navi/builtins/BrowserSemanticFaculty","source":"webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js","import":"/webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js","sourceHash":"01df2cbe28783b9f340c0451264fd9a6413da385c733ea51bcada020abf5ea3b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js#0013:BROWSER_SEMANTIC_TOOL_NAMES","exportIndex":13,"name":"BROWSER_SEMANTIC_TOOL_NAMES","kind":"constant","signature":"BROWSER_SEMANTIC_TOOL_NAMES","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/builtins/BrowserSemanticFaculty.md","moduleTitle":"kernel/navi/builtins/BrowserSemanticFaculty","source":"webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js","import":"/webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js","sourceHash":"01df2cbe28783b9f340c0451264fd9a6413da385c733ea51bcada020abf5ea3b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js#0014:BROWSER_SEMANTIC_FACULTY_SOURCE","exportIndex":14,"name":"BROWSER_SEMANTIC_FACULTY_SOURCE","kind":"constant","signature":"BROWSER_SEMANTIC_FACULTY_SOURCE","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/builtins/BrowserSemanticFaculty.md","moduleTitle":"kernel/navi/builtins/BrowserSemanticFaculty","source":"webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js","import":"/webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js","sourceHash":"01df2cbe28783b9f340c0451264fd9a6413da385c733ea51bcada020abf5ea3b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/builtins/BrowserSemanticFaculty.js#0015:BROWSER_SEMANTIC_FACULTY_DEFINITION","exportIndex":15,"name":"BROWSER_SEMANTIC_FACULTY_DEFINITION","kind":"constant","signature":"BROWSER_SEMANTIC_FACULTY_DEFINITION","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/builtins/BuiltInFacultyPackageEvidence.md","moduleTitle":"kernel/navi/builtins/BuiltInFacultyPackageEvidence","source":"webgpu-os/kernel/navi/builtins/BuiltInFacultyPackageEvidence.js","import":"/webgpu-os/kernel/navi/builtins/BuiltInFacultyPackageEvidence.js","sourceHash":"4e5810b9d4d669e69627318b13f9ad2878fc52a3e631f485f7487e023187d238","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/builtins/BuiltInFacultyPackageEvidence.js","title":"kernel/navi/builtins/BuiltInFacultyPackageEvidence","summary":"Shared fail-closed reader for OS-owned signed Faculty package evidence.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/builtins/BuiltInFacultyPackageEvidence.md","moduleTitle":"kernel/navi/builtins/BuiltInFacultyPackageEvidence","source":"webgpu-os/kernel/navi/builtins/BuiltInFacultyPackageEvidence.js","import":"/webgpu-os/kernel/navi/builtins/BuiltInFacultyPackageEvidence.js","sourceHash":"4e5810b9d4d669e69627318b13f9ad2878fc52a3e631f485f7487e023187d238","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/builtins/BuiltInFacultyPackageEvidence.js#0000:builtInFacultyPackageEvidence","exportIndex":0,"name":"builtInFacultyPackageEvidence","kind":"function","signature":"builtInFacultyPackageEvidence({ label, packageId, version, publisherId, sourcePath, source, generatedPackage, assertManifest, })","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/builtins/BuiltInToolFaculties.md","moduleTitle":"kernel/navi/builtins/BuiltInToolFaculties","source":"webgpu-os/kernel/navi/builtins/BuiltInToolFaculties.js","import":"/webgpu-os/kernel/navi/builtins/BuiltInToolFaculties.js","sourceHash":"a307b383bd03ad1a404f11bc95229db511e7d035c4d98fe9f29bc1843636ff94","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/builtins/BuiltInToolFaculties.js","title":"kernel/navi/builtins/BuiltInToolFaculties","summary":"Bind one catalog definition to the immutable version carried by its signed package.","exportCount":11}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/builtins/BuiltInToolFaculties.md","moduleTitle":"kernel/navi/builtins/BuiltInToolFaculties","source":"webgpu-os/kernel/navi/builtins/BuiltInToolFaculties.js","import":"/webgpu-os/kernel/navi/builtins/BuiltInToolFaculties.js","sourceHash":"a307b383bd03ad1a404f11bc95229db511e7d035c4d98fe9f29bc1843636ff94","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/builtins/BuiltInToolFaculties.js#0000:builtInToolFacultyDefinition","exportIndex":0,"name":"builtInToolFacultyDefinition","kind":"function","signature":"builtInToolFacultyDefinition(facultyId)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/builtins/BuiltInToolFaculties.md","moduleTitle":"kernel/navi/builtins/BuiltInToolFaculties","source":"webgpu-os/kernel/navi/builtins/BuiltInToolFaculties.js","import":"/webgpu-os/kernel/navi/builtins/BuiltInToolFaculties.js","sourceHash":"a307b383bd03ad1a404f11bc95229db511e7d035c4d98fe9f29bc1843636ff94","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/builtins/BuiltInToolFaculties.js#0001:builtInToolFacultyDefinitionAtVersion","exportIndex":1,"name":"builtInToolFacultyDefinitionAtVersion","kind":"function","signature":"builtInToolFacultyDefinitionAtVersion(definitionOrId, version)","summary":"Bind one catalog definition to the immutable version carried by its signed package."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/builtins/BuiltInToolFaculties.md","moduleTitle":"kernel/navi/builtins/BuiltInToolFaculties","source":"webgpu-os/kernel/navi/builtins/BuiltInToolFaculties.js","import":"/webgpu-os/kernel/navi/builtins/BuiltInToolFaculties.js","sourceHash":"a307b383bd03ad1a404f11bc95229db511e7d035c4d98fe9f29bc1843636ff94","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/builtins/BuiltInToolFaculties.js#0002:assertBuiltInToolFacultyManifest","exportIndex":2,"name":"assertBuiltInToolFacultyManifest","kind":"function","signature":"assertBuiltInToolFacultyManifest(value, definitionOrId)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/builtins/BuiltInToolFaculties.md","moduleTitle":"kernel/navi/builtins/BuiltInToolFaculties","source":"webgpu-os/kernel/navi/builtins/BuiltInToolFaculties.js","import":"/webgpu-os/kernel/navi/builtins/BuiltInToolFaculties.js","sourceHash":"a307b383bd03ad1a404f11bc95229db511e7d035c4d98fe9f29bc1843636ff94","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/builtins/BuiltInToolFaculties.js#0003:builtInToolFacultyPackageEvidence","exportIndex":3,"name":"builtInToolFacultyPackageEvidence","kind":"function","signature":"builtInToolFacultyPackageEvidence(definitionOrId)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/builtins/BuiltInToolFaculties.md","moduleTitle":"kernel/navi/builtins/BuiltInToolFaculties","source":"webgpu-os/kernel/navi/builtins/BuiltInToolFaculties.js","import":"/webgpu-os/kernel/navi/builtins/BuiltInToolFaculties.js","sourceHash":"a307b383bd03ad1a404f11bc95229db511e7d035c4d98fe9f29bc1843636ff94","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/builtins/BuiltInToolFaculties.js#0004:builtInToolFacultySignedManifest","exportIndex":4,"name":"builtInToolFacultySignedManifest","kind":"function","signature":"builtInToolFacultySignedManifest(definitionOrId)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/builtins/BuiltInToolFaculties.md","moduleTitle":"kernel/navi/builtins/BuiltInToolFaculties","source":"webgpu-os/kernel/navi/builtins/BuiltInToolFaculties.js","import":"/webgpu-os/kernel/navi/builtins/BuiltInToolFaculties.js","sourceHash":"a307b383bd03ad1a404f11bc95229db511e7d035c4d98fe9f29bc1843636ff94","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/builtins/BuiltInToolFaculties.js#0005:BUILT_IN_TOOL_FACULTY_VERSION","exportIndex":5,"name":"BUILT_IN_TOOL_FACULTY_VERSION","kind":"constant","signature":"BUILT_IN_TOOL_FACULTY_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/builtins/BuiltInToolFaculties.md","moduleTitle":"kernel/navi/builtins/BuiltInToolFaculties","source":"webgpu-os/kernel/navi/builtins/BuiltInToolFaculties.js","import":"/webgpu-os/kernel/navi/builtins/BuiltInToolFaculties.js","sourceHash":"a307b383bd03ad1a404f11bc95229db511e7d035c4d98fe9f29bc1843636ff94","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/builtins/BuiltInToolFaculties.js#0006:BUILT_IN_TOOL_FACULTY_PUBLISHER_ID","exportIndex":6,"name":"BUILT_IN_TOOL_FACULTY_PUBLISHER_ID","kind":"constant","signature":"BUILT_IN_TOOL_FACULTY_PUBLISHER_ID","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/builtins/BuiltInToolFaculties.md","moduleTitle":"kernel/navi/builtins/BuiltInToolFaculties","source":"webgpu-os/kernel/navi/builtins/BuiltInToolFaculties.js","import":"/webgpu-os/kernel/navi/builtins/BuiltInToolFaculties.js","sourceHash":"a307b383bd03ad1a404f11bc95229db511e7d035c4d98fe9f29bc1843636ff94","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/builtins/BuiltInToolFaculties.js#0007:BUILT_IN_TOOL_FACULTY_DEFINITIONS_JSON","exportIndex":7,"name":"BUILT_IN_TOOL_FACULTY_DEFINITIONS_JSON","kind":"constant","signature":"BUILT_IN_TOOL_FACULTY_DEFINITIONS_JSON","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/builtins/BuiltInToolFaculties.md","moduleTitle":"kernel/navi/builtins/BuiltInToolFaculties","source":"webgpu-os/kernel/navi/builtins/BuiltInToolFaculties.js","import":"/webgpu-os/kernel/navi/builtins/BuiltInToolFaculties.js","sourceHash":"a307b383bd03ad1a404f11bc95229db511e7d035c4d98fe9f29bc1843636ff94","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/builtins/BuiltInToolFaculties.js#0008:BUILT_IN_TOOL_FACULTY_EXCLUSIONS_JSON","exportIndex":8,"name":"BUILT_IN_TOOL_FACULTY_EXCLUSIONS_JSON","kind":"constant","signature":"BUILT_IN_TOOL_FACULTY_EXCLUSIONS_JSON","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/builtins/BuiltInToolFaculties.md","moduleTitle":"kernel/navi/builtins/BuiltInToolFaculties","source":"webgpu-os/kernel/navi/builtins/BuiltInToolFaculties.js","import":"/webgpu-os/kernel/navi/builtins/BuiltInToolFaculties.js","sourceHash":"a307b383bd03ad1a404f11bc95229db511e7d035c4d98fe9f29bc1843636ff94","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/builtins/BuiltInToolFaculties.js#0009:BUILT_IN_TOOL_FACULTY_SOURCE","exportIndex":9,"name":"BUILT_IN_TOOL_FACULTY_SOURCE","kind":"constant","signature":"BUILT_IN_TOOL_FACULTY_SOURCE","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/builtins/BuiltInToolFaculties.md","moduleTitle":"kernel/navi/builtins/BuiltInToolFaculties","source":"webgpu-os/kernel/navi/builtins/BuiltInToolFaculties.js","import":"/webgpu-os/kernel/navi/builtins/BuiltInToolFaculties.js","sourceHash":"a307b383bd03ad1a404f11bc95229db511e7d035c4d98fe9f29bc1843636ff94","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/builtins/BuiltInToolFaculties.js#0010:BUILT_IN_TOOL_FACULTIES","exportIndex":10,"name":"BUILT_IN_TOOL_FACULTIES","kind":"constant","signature":"BUILT_IN_TOOL_FACULTIES","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/ContractCanonical.md","moduleTitle":"kernel/navi/contracts/ContractCanonical","source":"webgpu-os/kernel/navi/contracts/ContractCanonical.js","import":"/webgpu-os/kernel/navi/contracts/ContractCanonical.js","sourceHash":"1eaa7addde0b20b6460b9706c5db67d2fb3e15894a981a013b6e331eb6440bea","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/contracts/ContractCanonical.js","title":"kernel/navi/contracts/ContractCanonical","summary":"ContractCanonical.js — domain-separated signing bytes and secure identifiers.","exportCount":8}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/ContractCanonical.md","moduleTitle":"kernel/navi/contracts/ContractCanonical","source":"webgpu-os/kernel/navi/contracts/ContractCanonical.js","import":"/webgpu-os/kernel/navi/contracts/ContractCanonical.js","sourceHash":"1eaa7addde0b20b6460b9706c5db67d2fb3e15894a981a013b6e331eb6440bea","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/ContractCanonical.js#0000:naviSigningValue","exportIndex":0,"name":"naviSigningValue","kind":"function","signature":"naviSigningValue(contract)","summary":"Return the JSON value covered by every top-level Navi contract signature. Signature envelopes are excluded to avoid circular signing input."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/ContractCanonical.md","moduleTitle":"kernel/navi/contracts/ContractCanonical","source":"webgpu-os/kernel/navi/contracts/ContractCanonical.js","import":"/webgpu-os/kernel/navi/contracts/ContractCanonical.js","sourceHash":"1eaa7addde0b20b6460b9706c5db67d2fb3e15894a981a013b6e331eb6440bea","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/ContractCanonical.js#0001:canonicalNaviSigningText","exportIndex":1,"name":"canonicalNaviSigningText","kind":"function","signature":"canonicalNaviSigningText(contract)","summary":"Return the deterministic, domain-separated signing text."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/ContractCanonical.md","moduleTitle":"kernel/navi/contracts/ContractCanonical","source":"webgpu-os/kernel/navi/contracts/ContractCanonical.js","import":"/webgpu-os/kernel/navi/contracts/ContractCanonical.js","sourceHash":"1eaa7addde0b20b6460b9706c5db67d2fb3e15894a981a013b6e331eb6440bea","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/ContractCanonical.js#0002:canonicalNaviSigningBytes","exportIndex":2,"name":"canonicalNaviSigningBytes","kind":"function","signature":"canonicalNaviSigningBytes(contract)","summary":"Return the exact UTF-8 bytes that P-256 signs or verifies."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/ContractCanonical.md","moduleTitle":"kernel/navi/contracts/ContractCanonical","source":"webgpu-os/kernel/navi/contracts/ContractCanonical.js","import":"/webgpu-os/kernel/navi/contracts/ContractCanonical.js","sourceHash":"1eaa7addde0b20b6460b9706c5db67d2fb3e15894a981a013b6e331eb6440bea","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/ContractCanonical.js#0003:hashNaviSigningPayload","exportIndex":3,"name":"hashNaviSigningPayload","kind":"function","signature":"async hashNaviSigningPayload(contract)","summary":"Return a tagged SHA-256 identifier for the signature-covered payload."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/ContractCanonical.md","moduleTitle":"kernel/navi/contracts/ContractCanonical","source":"webgpu-os/kernel/navi/contracts/ContractCanonical.js","import":"/webgpu-os/kernel/navi/contracts/ContractCanonical.js","sourceHash":"1eaa7addde0b20b6460b9706c5db67d2fb3e15894a981a013b6e331eb6440bea","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/ContractCanonical.js#0004:hashNaviContractEnvelope","exportIndex":4,"name":"hashNaviContractEnvelope","kind":"function","signature":"async hashNaviContractEnvelope(contract)","summary":"Return a tagged SHA-256 identifier for the complete signed envelope."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/ContractCanonical.md","moduleTitle":"kernel/navi/contracts/ContractCanonical","source":"webgpu-os/kernel/navi/contracts/ContractCanonical.js","import":"/webgpu-os/kernel/navi/contracts/ContractCanonical.js","sourceHash":"1eaa7addde0b20b6460b9706c5db67d2fb3e15894a981a013b6e331eb6440bea","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/ContractCanonical.js#0005:naviSigningPayloadEquals","exportIndex":5,"name":"naviSigningPayloadEquals","kind":"function","signature":"naviSigningPayloadEquals(a, b)","summary":"Compare contract payloads without relying on insertion order. Useful before signing, during recovery diffs, and when checking fixture determinism."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/ContractCanonical.md","moduleTitle":"kernel/navi/contracts/ContractCanonical","source":"webgpu-os/kernel/navi/contracts/ContractCanonical.js","import":"/webgpu-os/kernel/navi/contracts/ContractCanonical.js","sourceHash":"1eaa7addde0b20b6460b9706c5db67d2fb3e15894a981a013b6e331eb6440bea","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/ContractCanonical.js#0006:NAVI_SIGNING_DOMAIN","exportIndex":6,"name":"NAVI_SIGNING_DOMAIN","kind":"constant","signature":"NAVI_SIGNING_DOMAIN","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/ContractCanonical.md","moduleTitle":"kernel/navi/contracts/ContractCanonical","source":"webgpu-os/kernel/navi/contracts/ContractCanonical.js","import":"/webgpu-os/kernel/navi/contracts/ContractCanonical.js","sourceHash":"1eaa7addde0b20b6460b9706c5db67d2fb3e15894a981a013b6e331eb6440bea","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/ContractCanonical.js#0007:NAVI_SIGNING_SCOPE","exportIndex":7,"name":"NAVI_SIGNING_SCOPE","kind":"constant","signature":"NAVI_SIGNING_SCOPE","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/ContractRegistry.md","moduleTitle":"kernel/navi/contracts/ContractRegistry","source":"webgpu-os/kernel/navi/contracts/ContractRegistry.js","import":"/webgpu-os/kernel/navi/contracts/ContractRegistry.js","sourceHash":"bdde5afffad876afec1ee87d0ded7aa742a26954b2c92355d3b848136329c21b","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/contracts/ContractRegistry.js","title":"kernel/navi/contracts/ContractRegistry","summary":"ContractRegistry.js — isolated Navi v1 schema registry and semantic checks. This registry deliberately does not mutate the OS-wide singleton. Kernel bootstrap can integrate it after the Phase 0 gate passes without making an import of this module a side effect.","exportCount":5}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/ContractRegistry.md","moduleTitle":"kernel/navi/contracts/ContractRegistry","source":"webgpu-os/kernel/navi/contracts/ContractRegistry.js","import":"/webgpu-os/kernel/navi/contracts/ContractRegistry.js","sourceHash":"bdde5afffad876afec1ee87d0ded7aa742a26954b2c92355d3b848136329c21b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/ContractRegistry.js#0000:createNaviContractRegistry","exportIndex":0,"name":"createNaviContractRegistry","kind":"function","signature":"createNaviContractRegistry()","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/ContractRegistry.md","moduleTitle":"kernel/navi/contracts/ContractRegistry","source":"webgpu-os/kernel/navi/contracts/ContractRegistry.js","import":"/webgpu-os/kernel/navi/contracts/ContractRegistry.js","sourceHash":"bdde5afffad876afec1ee87d0ded7aa742a26954b2c92355d3b848136329c21b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/ContractRegistry.js#0001:isKnownNaviSchema","exportIndex":1,"name":"isKnownNaviSchema","kind":"function","signature":"isKnownNaviSchema(schemaId)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/ContractRegistry.md","moduleTitle":"kernel/navi/contracts/ContractRegistry","source":"webgpu-os/kernel/navi/contracts/ContractRegistry.js","import":"/webgpu-os/kernel/navi/contracts/ContractRegistry.js","sourceHash":"bdde5afffad876afec1ee87d0ded7aa742a26954b2c92355d3b848136329c21b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/ContractRegistry.js#0002:validateNaviContract","exportIndex":2,"name":"validateNaviContract","kind":"function","signature":"validateNaviContract(data, expectedSchemaId = null, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/ContractRegistry.md","moduleTitle":"kernel/navi/contracts/ContractRegistry","source":"webgpu-os/kernel/navi/contracts/ContractRegistry.js","import":"/webgpu-os/kernel/navi/contracts/ContractRegistry.js","sourceHash":"bdde5afffad876afec1ee87d0ded7aa742a26954b2c92355d3b848136329c21b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/ContractRegistry.js#0003:assertNaviContract","exportIndex":3,"name":"assertNaviContract","kind":"function","signature":"assertNaviContract(data, expectedSchemaId = null, options = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/ContractRegistry.md","moduleTitle":"kernel/navi/contracts/ContractRegistry","source":"webgpu-os/kernel/navi/contracts/ContractRegistry.js","import":"/webgpu-os/kernel/navi/contracts/ContractRegistry.js","sourceHash":"bdde5afffad876afec1ee87d0ded7aa742a26954b2c92355d3b848136329c21b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/ContractRegistry.js#0004:naviContractRegistry","exportIndex":4,"name":"naviContractRegistry","kind":"constant","signature":"naviContractRegistry","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/ContractSchemas.md","moduleTitle":"kernel/navi/contracts/ContractSchemas","source":"webgpu-os/kernel/navi/contracts/ContractSchemas.js","import":"/webgpu-os/kernel/navi/contracts/ContractSchemas.js","sourceHash":"b4ffc29bdf2c8589e1e10cd7ce5c23dc03b950005cdffce33f98c4080e4a35d0","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/contracts/ContractSchemas.js","title":"kernel/navi/contracts/ContractSchemas","summary":"ContractSchemas.js — strict, versioned Navi v1 wire schemas. The OS schema validator intentionally supports a compact JSON Schema subset. Every declared object is closed with additionalProperties:false. Fields that intentionally contain application JSON are named `value` or `metadata` and are still checked by ContractRegistry's JSON-safety pass before acceptance.","exportCount":10}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/ContractSchemas.md","moduleTitle":"kernel/navi/contracts/ContractSchemas","source":"webgpu-os/kernel/navi/contracts/ContractSchemas.js","import":"/webgpu-os/kernel/navi/contracts/ContractSchemas.js","sourceHash":"b4ffc29bdf2c8589e1e10cd7ce5c23dc03b950005cdffce33f98c4080e4a35d0","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/ContractSchemas.js#0000:NAVI_ARTIFACT_REFERENCE_PATTERN","exportIndex":0,"name":"NAVI_ARTIFACT_REFERENCE_PATTERN","kind":"constant","signature":"NAVI_ARTIFACT_REFERENCE_PATTERN","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/ContractSchemas.md","moduleTitle":"kernel/navi/contracts/ContractSchemas","source":"webgpu-os/kernel/navi/contracts/ContractSchemas.js","import":"/webgpu-os/kernel/navi/contracts/ContractSchemas.js","sourceHash":"b4ffc29bdf2c8589e1e10cd7ce5c23dc03b950005cdffce33f98c4080e4a35d0","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/ContractSchemas.js#0001:NAVI_CAPABILITY_PATH_OPERATIONS","exportIndex":1,"name":"NAVI_CAPABILITY_PATH_OPERATIONS","kind":"constant","signature":"NAVI_CAPABILITY_PATH_OPERATIONS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/ContractSchemas.md","moduleTitle":"kernel/navi/contracts/ContractSchemas","source":"webgpu-os/kernel/navi/contracts/ContractSchemas.js","import":"/webgpu-os/kernel/navi/contracts/ContractSchemas.js","sourceHash":"b4ffc29bdf2c8589e1e10cd7ce5c23dc03b950005cdffce33f98c4080e4a35d0","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/ContractSchemas.js#0002:NAVI_RESOURCE_KINDS","exportIndex":2,"name":"NAVI_RESOURCE_KINDS","kind":"constant","signature":"NAVI_RESOURCE_KINDS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/ContractSchemas.md","moduleTitle":"kernel/navi/contracts/ContractSchemas","source":"webgpu-os/kernel/navi/contracts/ContractSchemas.js","import":"/webgpu-os/kernel/navi/contracts/ContractSchemas.js","sourceHash":"b4ffc29bdf2c8589e1e10cd7ce5c23dc03b950005cdffce33f98c4080e4a35d0","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/ContractSchemas.js#0003:NAVI_RESOURCE_SELECTION_REJECTION_REASON_CODES","exportIndex":3,"name":"NAVI_RESOURCE_SELECTION_REJECTION_REASON_CODES","kind":"constant","signature":"NAVI_RESOURCE_SELECTION_REJECTION_REASON_CODES","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/ContractSchemas.md","moduleTitle":"kernel/navi/contracts/ContractSchemas","source":"webgpu-os/kernel/navi/contracts/ContractSchemas.js","import":"/webgpu-os/kernel/navi/contracts/ContractSchemas.js","sourceHash":"b4ffc29bdf2c8589e1e10cd7ce5c23dc03b950005cdffce33f98c4080e4a35d0","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/ContractSchemas.js#0004:NAVI_RESOURCE_SELECTION_REASON_CODES","exportIndex":4,"name":"NAVI_RESOURCE_SELECTION_REASON_CODES","kind":"constant","signature":"NAVI_RESOURCE_SELECTION_REASON_CODES","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/ContractSchemas.md","moduleTitle":"kernel/navi/contracts/ContractSchemas","source":"webgpu-os/kernel/navi/contracts/ContractSchemas.js","import":"/webgpu-os/kernel/navi/contracts/ContractSchemas.js","sourceHash":"b4ffc29bdf2c8589e1e10cd7ce5c23dc03b950005cdffce33f98c4080e4a35d0","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/ContractSchemas.js#0005:NAVI_SCHEMA_IDS","exportIndex":5,"name":"NAVI_SCHEMA_IDS","kind":"constant","signature":"NAVI_SCHEMA_IDS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/ContractSchemas.md","moduleTitle":"kernel/navi/contracts/ContractSchemas","source":"webgpu-os/kernel/navi/contracts/ContractSchemas.js","import":"/webgpu-os/kernel/navi/contracts/ContractSchemas.js","sourceHash":"b4ffc29bdf2c8589e1e10cd7ce5c23dc03b950005cdffce33f98c4080e4a35d0","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/ContractSchemas.js#0006:NAVI_SCHEMA_ID_LIST","exportIndex":6,"name":"NAVI_SCHEMA_ID_LIST","kind":"constant","signature":"NAVI_SCHEMA_ID_LIST","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/ContractSchemas.md","moduleTitle":"kernel/navi/contracts/ContractSchemas","source":"webgpu-os/kernel/navi/contracts/ContractSchemas.js","import":"/webgpu-os/kernel/navi/contracts/ContractSchemas.js","sourceHash":"b4ffc29bdf2c8589e1e10cd7ce5c23dc03b950005cdffce33f98c4080e4a35d0","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/ContractSchemas.js#0007:NAVI_COMMON_SCHEMA_NAMES","exportIndex":7,"name":"NAVI_COMMON_SCHEMA_NAMES","kind":"constant","signature":"NAVI_COMMON_SCHEMA_NAMES","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/ContractSchemas.md","moduleTitle":"kernel/navi/contracts/ContractSchemas","source":"webgpu-os/kernel/navi/contracts/ContractSchemas.js","import":"/webgpu-os/kernel/navi/contracts/ContractSchemas.js","sourceHash":"b4ffc29bdf2c8589e1e10cd7ce5c23dc03b950005cdffce33f98c4080e4a35d0","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/ContractSchemas.js#0008:NAVI_COMMON_SCHEMAS","exportIndex":8,"name":"NAVI_COMMON_SCHEMAS","kind":"constant","signature":"NAVI_COMMON_SCHEMAS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/ContractSchemas.md","moduleTitle":"kernel/navi/contracts/ContractSchemas","source":"webgpu-os/kernel/navi/contracts/ContractSchemas.js","import":"/webgpu-os/kernel/navi/contracts/ContractSchemas.js","sourceHash":"b4ffc29bdf2c8589e1e10cd7ce5c23dc03b950005cdffce33f98c4080e4a35d0","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/ContractSchemas.js#0009:NAVI_CONTRACT_SCHEMAS","exportIndex":9,"name":"NAVI_CONTRACT_SCHEMAS","kind":"constant","signature":"NAVI_CONTRACT_SCHEMAS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/Vocabulary.md","moduleTitle":"kernel/navi/contracts/Vocabulary","source":"webgpu-os/kernel/navi/contracts/Vocabulary.js","import":"/webgpu-os/kernel/navi/contracts/Vocabulary.js","sourceHash":"06ba46d6acdb4382a8df2df149c8c64801e889029f8dc3595e027296dc30c385","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/contracts/Vocabulary.js","title":"kernel/navi/contracts/Vocabulary","summary":"Vocabulary.js — canonical Navi v1 terminology and closed policy vocabularies. These values are wire contracts. Additions require a new contract revision; renaming an entry would change signed meaning and is therefore forbidden.","exportCount":9}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/Vocabulary.md","moduleTitle":"kernel/navi/contracts/Vocabulary","source":"webgpu-os/kernel/navi/contracts/Vocabulary.js","import":"/webgpu-os/kernel/navi/contracts/Vocabulary.js","sourceHash":"06ba46d6acdb4382a8df2df149c8c64801e889029f8dc3595e027296dc30c385","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/Vocabulary.js#0000:NAVI_ARCHITECTURE_VERSION","exportIndex":0,"name":"NAVI_ARCHITECTURE_VERSION","kind":"constant","signature":"NAVI_ARCHITECTURE_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/Vocabulary.md","moduleTitle":"kernel/navi/contracts/Vocabulary","source":"webgpu-os/kernel/navi/contracts/Vocabulary.js","import":"/webgpu-os/kernel/navi/contracts/Vocabulary.js","sourceHash":"06ba46d6acdb4382a8df2df149c8c64801e889029f8dc3595e027296dc30c385","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/Vocabulary.js#0001:NAVI_SYSTEMS","exportIndex":1,"name":"NAVI_SYSTEMS","kind":"constant","signature":"NAVI_SYSTEMS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/Vocabulary.md","moduleTitle":"kernel/navi/contracts/Vocabulary","source":"webgpu-os/kernel/navi/contracts/Vocabulary.js","import":"/webgpu-os/kernel/navi/contracts/Vocabulary.js","sourceHash":"06ba46d6acdb4382a8df2df149c8c64801e889029f8dc3595e027296dc30c385","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/Vocabulary.js#0002:NAVI_SYSTEM_BY_CODE","exportIndex":2,"name":"NAVI_SYSTEM_BY_CODE","kind":"constant","signature":"NAVI_SYSTEM_BY_CODE","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/Vocabulary.md","moduleTitle":"kernel/navi/contracts/Vocabulary","source":"webgpu-os/kernel/navi/contracts/Vocabulary.js","import":"/webgpu-os/kernel/navi/contracts/Vocabulary.js","sourceHash":"06ba46d6acdb4382a8df2df149c8c64801e889029f8dc3595e027296dc30c385","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/Vocabulary.js#0003:NAVI_DATA_CLASSIFICATIONS","exportIndex":3,"name":"NAVI_DATA_CLASSIFICATIONS","kind":"constant","signature":"NAVI_DATA_CLASSIFICATIONS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/Vocabulary.md","moduleTitle":"kernel/navi/contracts/Vocabulary","source":"webgpu-os/kernel/navi/contracts/Vocabulary.js","import":"/webgpu-os/kernel/navi/contracts/Vocabulary.js","sourceHash":"06ba46d6acdb4382a8df2df149c8c64801e889029f8dc3595e027296dc30c385","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/Vocabulary.js#0004:NAVI_AUTHORITY_DOMAINS","exportIndex":4,"name":"NAVI_AUTHORITY_DOMAINS","kind":"constant","signature":"NAVI_AUTHORITY_DOMAINS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/Vocabulary.md","moduleTitle":"kernel/navi/contracts/Vocabulary","source":"webgpu-os/kernel/navi/contracts/Vocabulary.js","import":"/webgpu-os/kernel/navi/contracts/Vocabulary.js","sourceHash":"06ba46d6acdb4382a8df2df149c8c64801e889029f8dc3595e027296dc30c385","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/Vocabulary.js#0005:NAVI_MEMORY_CLASSES","exportIndex":5,"name":"NAVI_MEMORY_CLASSES","kind":"constant","signature":"NAVI_MEMORY_CLASSES","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/Vocabulary.md","moduleTitle":"kernel/navi/contracts/Vocabulary","source":"webgpu-os/kernel/navi/contracts/Vocabulary.js","import":"/webgpu-os/kernel/navi/contracts/Vocabulary.js","sourceHash":"06ba46d6acdb4382a8df2df149c8c64801e889029f8dc3595e027296dc30c385","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/Vocabulary.js#0006:NAVI_SECURITY_TIERS","exportIndex":6,"name":"NAVI_SECURITY_TIERS","kind":"constant","signature":"NAVI_SECURITY_TIERS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/Vocabulary.md","moduleTitle":"kernel/navi/contracts/Vocabulary","source":"webgpu-os/kernel/navi/contracts/Vocabulary.js","import":"/webgpu-os/kernel/navi/contracts/Vocabulary.js","sourceHash":"06ba46d6acdb4382a8df2df149c8c64801e889029f8dc3595e027296dc30c385","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/Vocabulary.js#0007:NAVI_SECURITY_TIER_IDS","exportIndex":7,"name":"NAVI_SECURITY_TIER_IDS","kind":"constant","signature":"NAVI_SECURITY_TIER_IDS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/Vocabulary.md","moduleTitle":"kernel/navi/contracts/Vocabulary","source":"webgpu-os/kernel/navi/contracts/Vocabulary.js","import":"/webgpu-os/kernel/navi/contracts/Vocabulary.js","sourceHash":"06ba46d6acdb4382a8df2df149c8c64801e889029f8dc3595e027296dc30c385","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/Vocabulary.js#0008:NAVI_PRINCIPAL_KINDS","exportIndex":8,"name":"NAVI_PRINCIPAL_KINDS","kind":"constant","signature":"NAVI_PRINCIPAL_KINDS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/index.md","moduleTitle":"kernel/navi/contracts/index","source":"webgpu-os/kernel/navi/contracts/index.js","import":"/webgpu-os/kernel/navi/contracts/index.js","sourceHash":"a78e72a3e678531d25cd3f355fb524ae689c0679601ca92fa873e8c4ff1b242a","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/navi/contracts/index.js","title":"kernel/navi/contracts/index","summary":"","exportCount":29}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/index.md","moduleTitle":"kernel/navi/contracts/index","source":"webgpu-os/kernel/navi/contracts/index.js","import":"/webgpu-os/kernel/navi/contracts/index.js","sourceHash":"a78e72a3e678531d25cd3f355fb524ae689c0679601ca92fa873e8c4ff1b242a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/index.js#0000:NAVI_ARCHITECTURE_VERSION","exportIndex":0,"name":"NAVI_ARCHITECTURE_VERSION","kind":"re-export","signature":"NAVI_ARCHITECTURE_VERSION","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/index.md","moduleTitle":"kernel/navi/contracts/index","source":"webgpu-os/kernel/navi/contracts/index.js","import":"/webgpu-os/kernel/navi/contracts/index.js","sourceHash":"a78e72a3e678531d25cd3f355fb524ae689c0679601ca92fa873e8c4ff1b242a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/index.js#0001:NAVI_ARTIFACT_REFERENCE_PATTERN","exportIndex":1,"name":"NAVI_ARTIFACT_REFERENCE_PATTERN","kind":"re-export","signature":"NAVI_ARTIFACT_REFERENCE_PATTERN","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/index.md","moduleTitle":"kernel/navi/contracts/index","source":"webgpu-os/kernel/navi/contracts/index.js","import":"/webgpu-os/kernel/navi/contracts/index.js","sourceHash":"a78e72a3e678531d25cd3f355fb524ae689c0679601ca92fa873e8c4ff1b242a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/index.js#0002:NAVI_AUTHORITY_DOMAINS","exportIndex":2,"name":"NAVI_AUTHORITY_DOMAINS","kind":"re-export","signature":"NAVI_AUTHORITY_DOMAINS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/index.md","moduleTitle":"kernel/navi/contracts/index","source":"webgpu-os/kernel/navi/contracts/index.js","import":"/webgpu-os/kernel/navi/contracts/index.js","sourceHash":"a78e72a3e678531d25cd3f355fb524ae689c0679601ca92fa873e8c4ff1b242a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/index.js#0003:NAVI_CAPABILITY_PATH_OPERATIONS","exportIndex":3,"name":"NAVI_CAPABILITY_PATH_OPERATIONS","kind":"re-export","signature":"NAVI_CAPABILITY_PATH_OPERATIONS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/index.md","moduleTitle":"kernel/navi/contracts/index","source":"webgpu-os/kernel/navi/contracts/index.js","import":"/webgpu-os/kernel/navi/contracts/index.js","sourceHash":"a78e72a3e678531d25cd3f355fb524ae689c0679601ca92fa873e8c4ff1b242a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/index.js#0004:NAVI_COMMON_SCHEMAS","exportIndex":4,"name":"NAVI_COMMON_SCHEMAS","kind":"re-export","signature":"NAVI_COMMON_SCHEMAS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/index.md","moduleTitle":"kernel/navi/contracts/index","source":"webgpu-os/kernel/navi/contracts/index.js","import":"/webgpu-os/kernel/navi/contracts/index.js","sourceHash":"a78e72a3e678531d25cd3f355fb524ae689c0679601ca92fa873e8c4ff1b242a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/index.js#0005:NAVI_COMMON_SCHEMA_NAMES","exportIndex":5,"name":"NAVI_COMMON_SCHEMA_NAMES","kind":"re-export","signature":"NAVI_COMMON_SCHEMA_NAMES","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/index.md","moduleTitle":"kernel/navi/contracts/index","source":"webgpu-os/kernel/navi/contracts/index.js","import":"/webgpu-os/kernel/navi/contracts/index.js","sourceHash":"a78e72a3e678531d25cd3f355fb524ae689c0679601ca92fa873e8c4ff1b242a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/index.js#0006:NAVI_CONTRACT_SCHEMAS","exportIndex":6,"name":"NAVI_CONTRACT_SCHEMAS","kind":"re-export","signature":"NAVI_CONTRACT_SCHEMAS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/index.md","moduleTitle":"kernel/navi/contracts/index","source":"webgpu-os/kernel/navi/contracts/index.js","import":"/webgpu-os/kernel/navi/contracts/index.js","sourceHash":"a78e72a3e678531d25cd3f355fb524ae689c0679601ca92fa873e8c4ff1b242a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/index.js#0007:NAVI_DATA_CLASSIFICATIONS","exportIndex":7,"name":"NAVI_DATA_CLASSIFICATIONS","kind":"re-export","signature":"NAVI_DATA_CLASSIFICATIONS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/index.md","moduleTitle":"kernel/navi/contracts/index","source":"webgpu-os/kernel/navi/contracts/index.js","import":"/webgpu-os/kernel/navi/contracts/index.js","sourceHash":"a78e72a3e678531d25cd3f355fb524ae689c0679601ca92fa873e8c4ff1b242a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/index.js#0008:NAVI_MEMORY_CLASSES","exportIndex":8,"name":"NAVI_MEMORY_CLASSES","kind":"re-export","signature":"NAVI_MEMORY_CLASSES","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/index.md","moduleTitle":"kernel/navi/contracts/index","source":"webgpu-os/kernel/navi/contracts/index.js","import":"/webgpu-os/kernel/navi/contracts/index.js","sourceHash":"a78e72a3e678531d25cd3f355fb524ae689c0679601ca92fa873e8c4ff1b242a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/index.js#0009:NAVI_PRINCIPAL_KINDS","exportIndex":9,"name":"NAVI_PRINCIPAL_KINDS","kind":"re-export","signature":"NAVI_PRINCIPAL_KINDS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/index.md","moduleTitle":"kernel/navi/contracts/index","source":"webgpu-os/kernel/navi/contracts/index.js","import":"/webgpu-os/kernel/navi/contracts/index.js","sourceHash":"a78e72a3e678531d25cd3f355fb524ae689c0679601ca92fa873e8c4ff1b242a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/index.js#0010:NAVI_SCHEMA_IDS","exportIndex":10,"name":"NAVI_SCHEMA_IDS","kind":"re-export","signature":"NAVI_SCHEMA_IDS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/index.md","moduleTitle":"kernel/navi/contracts/index","source":"webgpu-os/kernel/navi/contracts/index.js","import":"/webgpu-os/kernel/navi/contracts/index.js","sourceHash":"a78e72a3e678531d25cd3f355fb524ae689c0679601ca92fa873e8c4ff1b242a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/index.js#0011:NAVI_SCHEMA_ID_LIST","exportIndex":11,"name":"NAVI_SCHEMA_ID_LIST","kind":"re-export","signature":"NAVI_SCHEMA_ID_LIST","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/index.md","moduleTitle":"kernel/navi/contracts/index","source":"webgpu-os/kernel/navi/contracts/index.js","import":"/webgpu-os/kernel/navi/contracts/index.js","sourceHash":"a78e72a3e678531d25cd3f355fb524ae689c0679601ca92fa873e8c4ff1b242a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/index.js#0012:NAVI_SECURITY_TIERS","exportIndex":12,"name":"NAVI_SECURITY_TIERS","kind":"re-export","signature":"NAVI_SECURITY_TIERS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/index.md","moduleTitle":"kernel/navi/contracts/index","source":"webgpu-os/kernel/navi/contracts/index.js","import":"/webgpu-os/kernel/navi/contracts/index.js","sourceHash":"a78e72a3e678531d25cd3f355fb524ae689c0679601ca92fa873e8c4ff1b242a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/index.js#0013:NAVI_SECURITY_TIER_IDS","exportIndex":13,"name":"NAVI_SECURITY_TIER_IDS","kind":"re-export","signature":"NAVI_SECURITY_TIER_IDS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/index.md","moduleTitle":"kernel/navi/contracts/index","source":"webgpu-os/kernel/navi/contracts/index.js","import":"/webgpu-os/kernel/navi/contracts/index.js","sourceHash":"a78e72a3e678531d25cd3f355fb524ae689c0679601ca92fa873e8c4ff1b242a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/index.js#0014:NAVI_SIGNING_DOMAIN","exportIndex":14,"name":"NAVI_SIGNING_DOMAIN","kind":"re-export","signature":"NAVI_SIGNING_DOMAIN","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/index.md","moduleTitle":"kernel/navi/contracts/index","source":"webgpu-os/kernel/navi/contracts/index.js","import":"/webgpu-os/kernel/navi/contracts/index.js","sourceHash":"a78e72a3e678531d25cd3f355fb524ae689c0679601ca92fa873e8c4ff1b242a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/index.js#0015:NAVI_SIGNING_SCOPE","exportIndex":15,"name":"NAVI_SIGNING_SCOPE","kind":"re-export","signature":"NAVI_SIGNING_SCOPE","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/index.md","moduleTitle":"kernel/navi/contracts/index","source":"webgpu-os/kernel/navi/contracts/index.js","import":"/webgpu-os/kernel/navi/contracts/index.js","sourceHash":"a78e72a3e678531d25cd3f355fb524ae689c0679601ca92fa873e8c4ff1b242a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/index.js#0016:NAVI_SYSTEMS","exportIndex":16,"name":"NAVI_SYSTEMS","kind":"re-export","signature":"NAVI_SYSTEMS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/index.md","moduleTitle":"kernel/navi/contracts/index","source":"webgpu-os/kernel/navi/contracts/index.js","import":"/webgpu-os/kernel/navi/contracts/index.js","sourceHash":"a78e72a3e678531d25cd3f355fb524ae689c0679601ca92fa873e8c4ff1b242a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/index.js#0017:NAVI_SYSTEM_BY_CODE","exportIndex":17,"name":"NAVI_SYSTEM_BY_CODE","kind":"re-export","signature":"NAVI_SYSTEM_BY_CODE","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/index.md","moduleTitle":"kernel/navi/contracts/index","source":"webgpu-os/kernel/navi/contracts/index.js","import":"/webgpu-os/kernel/navi/contracts/index.js","sourceHash":"a78e72a3e678531d25cd3f355fb524ae689c0679601ca92fa873e8c4ff1b242a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/index.js#0018:assertNaviContract","exportIndex":18,"name":"assertNaviContract","kind":"re-export","signature":"assertNaviContract","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/index.md","moduleTitle":"kernel/navi/contracts/index","source":"webgpu-os/kernel/navi/contracts/index.js","import":"/webgpu-os/kernel/navi/contracts/index.js","sourceHash":"a78e72a3e678531d25cd3f355fb524ae689c0679601ca92fa873e8c4ff1b242a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/index.js#0019:canonicalNaviSigningBytes","exportIndex":19,"name":"canonicalNaviSigningBytes","kind":"re-export","signature":"canonicalNaviSigningBytes","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/index.md","moduleTitle":"kernel/navi/contracts/index","source":"webgpu-os/kernel/navi/contracts/index.js","import":"/webgpu-os/kernel/navi/contracts/index.js","sourceHash":"a78e72a3e678531d25cd3f355fb524ae689c0679601ca92fa873e8c4ff1b242a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/index.js#0020:canonicalNaviSigningText","exportIndex":20,"name":"canonicalNaviSigningText","kind":"re-export","signature":"canonicalNaviSigningText","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/index.md","moduleTitle":"kernel/navi/contracts/index","source":"webgpu-os/kernel/navi/contracts/index.js","import":"/webgpu-os/kernel/navi/contracts/index.js","sourceHash":"a78e72a3e678531d25cd3f355fb524ae689c0679601ca92fa873e8c4ff1b242a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/index.js#0021:createNaviContractRegistry","exportIndex":21,"name":"createNaviContractRegistry","kind":"re-export","signature":"createNaviContractRegistry","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/index.md","moduleTitle":"kernel/navi/contracts/index","source":"webgpu-os/kernel/navi/contracts/index.js","import":"/webgpu-os/kernel/navi/contracts/index.js","sourceHash":"a78e72a3e678531d25cd3f355fb524ae689c0679601ca92fa873e8c4ff1b242a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/index.js#0022:hashNaviContractEnvelope","exportIndex":22,"name":"hashNaviContractEnvelope","kind":"re-export","signature":"hashNaviContractEnvelope","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/index.md","moduleTitle":"kernel/navi/contracts/index","source":"webgpu-os/kernel/navi/contracts/index.js","import":"/webgpu-os/kernel/navi/contracts/index.js","sourceHash":"a78e72a3e678531d25cd3f355fb524ae689c0679601ca92fa873e8c4ff1b242a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/index.js#0023:hashNaviSigningPayload","exportIndex":23,"name":"hashNaviSigningPayload","kind":"re-export","signature":"hashNaviSigningPayload","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/index.md","moduleTitle":"kernel/navi/contracts/index","source":"webgpu-os/kernel/navi/contracts/index.js","import":"/webgpu-os/kernel/navi/contracts/index.js","sourceHash":"a78e72a3e678531d25cd3f355fb524ae689c0679601ca92fa873e8c4ff1b242a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/index.js#0024:isKnownNaviSchema","exportIndex":24,"name":"isKnownNaviSchema","kind":"re-export","signature":"isKnownNaviSchema","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/index.md","moduleTitle":"kernel/navi/contracts/index","source":"webgpu-os/kernel/navi/contracts/index.js","import":"/webgpu-os/kernel/navi/contracts/index.js","sourceHash":"a78e72a3e678531d25cd3f355fb524ae689c0679601ca92fa873e8c4ff1b242a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/index.js#0025:naviContractRegistry","exportIndex":25,"name":"naviContractRegistry","kind":"re-export","signature":"naviContractRegistry","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/index.md","moduleTitle":"kernel/navi/contracts/index","source":"webgpu-os/kernel/navi/contracts/index.js","import":"/webgpu-os/kernel/navi/contracts/index.js","sourceHash":"a78e72a3e678531d25cd3f355fb524ae689c0679601ca92fa873e8c4ff1b242a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/index.js#0026:naviSigningPayloadEquals","exportIndex":26,"name":"naviSigningPayloadEquals","kind":"re-export","signature":"naviSigningPayloadEquals","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/index.md","moduleTitle":"kernel/navi/contracts/index","source":"webgpu-os/kernel/navi/contracts/index.js","import":"/webgpu-os/kernel/navi/contracts/index.js","sourceHash":"a78e72a3e678531d25cd3f355fb524ae689c0679601ca92fa873e8c4ff1b242a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/index.js#0027:naviSigningValue","exportIndex":27,"name":"naviSigningValue","kind":"re-export","signature":"naviSigningValue","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/navi/contracts/index.md","moduleTitle":"kernel/navi/contracts/index","source":"webgpu-os/kernel/navi/contracts/index.js","import":"/webgpu-os/kernel/navi/contracts/index.js","sourceHash":"a78e72a3e678531d25cd3f355fb524ae689c0679601ca92fa873e8c4ff1b242a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/navi/contracts/index.js#0028:validateNaviContract","exportIndex":28,"name":"validateNaviContract","kind":"re-export","signature":"validateNaviContract","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/net-safety.md","moduleTitle":"kernel/net-safety","source":"webgpu-os/kernel/net-safety.js","import":"/webgpu-os/kernel/net-safety.js","sourceHash":"5d23c99689985fbc4afc09c0616fa36030cf169295310451c40b9f97337b4f41","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/net-safety.js","title":"kernel/net-safety","summary":"net-safety.js — shared SSRF / private-host guards for OS-mediated fetches. Reused by the sandboxed-app network bridge, the package UpdateManager, and the package source-URL policy so the same allow/deny rules apply everywhere: - http(s) only (no file:, data:, blob:, chrome-extension:, etc.) - no embedded credentials in the URL - no loopback / link-local / RFC-1918 / CGNAT / multicast / .local hosts Public hostnames pass (still subject to the browser's CORS rules).","exportCount":3}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/net-safety.md","moduleTitle":"kernel/net-safety","source":"webgpu-os/kernel/net-safety.js","import":"/webgpu-os/kernel/net-safety.js","sourceHash":"5d23c99689985fbc4afc09c0616fa36030cf169295310451c40b9f97337b4f41","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/net-safety.js#0000:isPrivateHost","exportIndex":0,"name":"isPrivateHost","kind":"function","signature":"isPrivateHost(host)","summary":"True if a hostname points at the local machine or a private network range."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/net-safety.md","moduleTitle":"kernel/net-safety","source":"webgpu-os/kernel/net-safety.js","import":"/webgpu-os/kernel/net-safety.js","sourceHash":"5d23c99689985fbc4afc09c0616fa36030cf169295310451c40b9f97337b4f41","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/net-safety.js#0001:assertSafeFetchUrl","exportIndex":1,"name":"assertSafeFetchUrl","kind":"function","signature":"assertSafeFetchUrl(url, opts = {})","summary":"Validate and normalise a URL for an OS-mediated fetch. Throws on policy violation; returns the normalised href on success."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/net-safety.md","moduleTitle":"kernel/net-safety","source":"webgpu-os/kernel/net-safety.js","import":"/webgpu-os/kernel/net-safety.js","sourceHash":"5d23c99689985fbc4afc09c0616fa36030cf169295310451c40b9f97337b4f41","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/net-safety.js#0002:isLocalDevHost","exportIndex":2,"name":"isLocalDevHost","kind":"function","signature":"isLocalDevHost(host)","summary":"True when a host is localhost-like (used to relax https for local dev sources)."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/protocol/CapabilityNegotiator.md","moduleTitle":"kernel/protocol/CapabilityNegotiator","source":"webgpu-os/kernel/protocol/CapabilityNegotiator.js","import":"/webgpu-os/kernel/protocol/CapabilityNegotiator.js","sourceHash":"a4fab05e75a26342adab9b1bf4a71f55a96d68a7760e0e2fea47d8e3453c243a","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/protocol/CapabilityNegotiator.js","title":"kernel/protocol/CapabilityNegotiator","summary":"CapabilityNegotiator.js — Particle Realms Protocol capability minting. Thin wrapper over engine/state's CapabilityRegistry + Capability.js (makeCapability/attenuate/authorizes) — no parallel capability logic. Used by the AI Hub's two-pass execution loop (Phase 9) to mint short-lived, narrowly-scoped capabilities for a single OS.ai() request's tool/resource access, on top of (not instead of) the RuleGraph/Permissions manifest gate.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/protocol/CapabilityNegotiator.md","moduleTitle":"kernel/protocol/CapabilityNegotiator","source":"webgpu-os/kernel/protocol/CapabilityNegotiator.js","import":"/webgpu-os/kernel/protocol/CapabilityNegotiator.js","sourceHash":"a4fab05e75a26342adab9b1bf4a71f55a96d68a7760e0e2fea47d8e3453c243a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/protocol/CapabilityNegotiator.js#0000:CapabilityNegotiator","exportIndex":0,"name":"CapabilityNegotiator","kind":"class","signature":"class CapabilityNegotiator","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/protocol/ElicitationManager.md","moduleTitle":"kernel/protocol/ElicitationManager","source":"webgpu-os/kernel/protocol/ElicitationManager.js","import":"/webgpu-os/kernel/protocol/ElicitationManager.js","sourceHash":"7c9bc351a26037e6bf47b612e9fe693a9a139f44ee5d7abe8ed786a7b89beb67","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/protocol/ElicitationManager.js","title":"kernel/protocol/ElicitationManager","summary":"ElicitationManager.js — Particle Realms Protocol elicitation (MCP-inspired): lets a mid-task AI Hub request pause and ask the user a clarifying question instead of guessing. Phase 4 provides the data-layer queue; Phase 8's overlay (ElicitationCard.js) is the UI that calls respond()/decline().","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/protocol/ElicitationManager.md","moduleTitle":"kernel/protocol/ElicitationManager","source":"webgpu-os/kernel/protocol/ElicitationManager.js","import":"/webgpu-os/kernel/protocol/ElicitationManager.js","sourceHash":"7c9bc351a26037e6bf47b612e9fe693a9a139f44ee5d7abe8ed786a7b89beb67","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/protocol/ElicitationManager.js#0000:ElicitationManager","exportIndex":0,"name":"ElicitationManager","kind":"class","signature":"class ElicitationManager","summary":"ElicitationManager.js — Particle Realms Protocol elicitation (MCP-inspired): lets a mid-task AI Hub request pause and ask the user a clarifying question instead of guessing. Phase 4 provides the data-layer queue; Phase 8's overlay (ElicitationCard.js) is the UI that calls respond()/decline()."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/protocol/ParticleRealmsProtocol.md","moduleTitle":"kernel/protocol/ParticleRealmsProtocol","source":"webgpu-os/kernel/protocol/ParticleRealmsProtocol.js","import":"/webgpu-os/kernel/protocol/ParticleRealmsProtocol.js","sourceHash":"5f0973814a18ec7d8e240d1b3e0998e688e94633aae2ab13f3c5378cc12e3010","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/protocol/ParticleRealmsProtocol.js","title":"kernel/protocol/ParticleRealmsProtocol","summary":"ParticleRealmsProtocol.js — the MCP-inspired protocol facade tying together this app's capability/tool/resource/prompt/root/elicitation/sampling registries. Exposed as kernel.protocol; wrapped by syscalls.protocol. An app calls declare(manifest) once (validated against os.AppAICapabilityManifest in OsSchemas.js) to register its tool/resource/ prompt/root metadata for AI discovery. Declaring metadata here is always advisory/self-descriptive — it never grants authority; actual tool execution still goes through ToolRouter's firewall (Phase 3) and actual resource reads still go through ResourceRegistry -> UntrustedBoundary.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/protocol/ParticleRealmsProtocol.md","moduleTitle":"kernel/protocol/ParticleRealmsProtocol","source":"webgpu-os/kernel/protocol/ParticleRealmsProtocol.js","import":"/webgpu-os/kernel/protocol/ParticleRealmsProtocol.js","sourceHash":"5f0973814a18ec7d8e240d1b3e0998e688e94633aae2ab13f3c5378cc12e3010","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/protocol/ParticleRealmsProtocol.js#0000:ParticleRealmsProtocol","exportIndex":0,"name":"ParticleRealmsProtocol","kind":"class","signature":"class ParticleRealmsProtocol","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/protocol/PromptRegistry.md","moduleTitle":"kernel/protocol/PromptRegistry","source":"webgpu-os/kernel/protocol/PromptRegistry.js","import":"/webgpu-os/kernel/protocol/PromptRegistry.js","sourceHash":"e35dff6c75da568a49a0a66c9d44894d14e363fb2cceb74b0b2bcf3d1759827a","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/protocol/PromptRegistry.js","title":"kernel/protocol/PromptRegistry","summary":"PromptRegistry.js — Particle Realms Protocol named prompt-template catalog (MCP-inspired \"prompts\"). Apps register a render(args) function; the OS owns the final prompt text by always routing rendered output through PromptRegistry.sanitize() before it reaches the AI Hub — an app cannot smuggle raw control tokens or fake role delimiters into the final prompt.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/protocol/PromptRegistry.md","moduleTitle":"kernel/protocol/PromptRegistry","source":"webgpu-os/kernel/protocol/PromptRegistry.js","import":"/webgpu-os/kernel/protocol/PromptRegistry.js","sourceHash":"e35dff6c75da568a49a0a66c9d44894d14e363fb2cceb74b0b2bcf3d1759827a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/protocol/PromptRegistry.js#0000:PromptRegistry","exportIndex":0,"name":"PromptRegistry","kind":"class","signature":"class PromptRegistry","summary":"PromptRegistry.js — Particle Realms Protocol named prompt-template catalog (MCP-inspired \"prompts\"). Apps register a render(args) function; the OS owns the final prompt text by always routing rendered output through PromptRegistry.sanitize() before it reaches the AI Hub — an app cannot smuggle raw control tokens or fake role delimiters into the final prompt."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/protocol/ResourceRegistry.md","moduleTitle":"kernel/protocol/ResourceRegistry","source":"webgpu-os/kernel/protocol/ResourceRegistry.js","import":"/webgpu-os/kernel/protocol/ResourceRegistry.js","sourceHash":"33997e5fe13b23edb75bd56f93effa4ba37cd34a563684ff5697483a26b112fa","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/protocol/ResourceRegistry.js","title":"kernel/protocol/ResourceRegistry","summary":"ResourceRegistry.js — Particle Realms Protocol resource catalog. Apps expose readable data to the AI Hub under a `<appId>://...` URI scheme (MCP-inspired \"resources\"). Every read is routed through engine/state/worldmodel/UntrustedBoundary.js (Phase 3 reuse) before it's handed back — resource content is always an untrusted observation, never authority, regardless of how much the reading app trusts its own data.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/protocol/ResourceRegistry.md","moduleTitle":"kernel/protocol/ResourceRegistry","source":"webgpu-os/kernel/protocol/ResourceRegistry.js","import":"/webgpu-os/kernel/protocol/ResourceRegistry.js","sourceHash":"33997e5fe13b23edb75bd56f93effa4ba37cd34a563684ff5697483a26b112fa","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/protocol/ResourceRegistry.js#0000:ResourceRegistry","exportIndex":0,"name":"ResourceRegistry","kind":"class","signature":"class ResourceRegistry","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/protocol/RootBoundaryManager.md","moduleTitle":"kernel/protocol/RootBoundaryManager","source":"webgpu-os/kernel/protocol/RootBoundaryManager.js","import":"/webgpu-os/kernel/protocol/RootBoundaryManager.js","sourceHash":"880f1f0826c971c28c8f7d090a300a6dacd149e0e4835be9eac33644b0c7839a","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/protocol/RootBoundaryManager.js","title":"kernel/protocol/RootBoundaryManager","summary":"RootBoundaryManager.js — Particle Realms Protocol \"roots\" (MCP-inspired): the set of resource URI prefixes an app has declared as in-scope for a given AI request. Roots only ever NARROW what an OS.ai() request may touch — they are advisory scoping on top of (never a substitute for) the ResourceRegistry/RuleGraph capability checks.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/protocol/RootBoundaryManager.md","moduleTitle":"kernel/protocol/RootBoundaryManager","source":"webgpu-os/kernel/protocol/RootBoundaryManager.js","import":"/webgpu-os/kernel/protocol/RootBoundaryManager.js","sourceHash":"880f1f0826c971c28c8f7d090a300a6dacd149e0e4835be9eac33644b0c7839a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/protocol/RootBoundaryManager.js#0000:RootBoundaryManager","exportIndex":0,"name":"RootBoundaryManager","kind":"class","signature":"class RootBoundaryManager","summary":"RootBoundaryManager.js — Particle Realms Protocol \"roots\" (MCP-inspired): the set of resource URI prefixes an app has declared as in-scope for a given AI request. Roots only ever NARROW what an OS.ai() request may touch — they are advisory scoping on top of (never a substitute for) the ResourceRegistry/RuleGraph capability checks."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/protocol/SamplingBroker.md","moduleTitle":"kernel/protocol/SamplingBroker","source":"webgpu-os/kernel/protocol/SamplingBroker.js","import":"/webgpu-os/kernel/protocol/SamplingBroker.js","sourceHash":"7b7990b60f293039cd0b707de5bc4192670e0d3f897d48a5215774636283bacf","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/protocol/SamplingBroker.js","title":"kernel/protocol/SamplingBroker","summary":"SamplingBroker.js — Particle Realms Protocol sampling (MCP-inspired): lets a TOOL handler request a nested LLM completion mid-execution (the inverse of a normal OS.ai() call). Every sample enters the full AI executor, which creates a model-neutral Navi task and applies Covenant disclosure, resource, tool-firewall, verification, and receipt policy. There is no raw AI Hub fallback. A hard recursion-depth guard prevents sampling loops.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/protocol/SamplingBroker.md","moduleTitle":"kernel/protocol/SamplingBroker","source":"webgpu-os/kernel/protocol/SamplingBroker.js","import":"/webgpu-os/kernel/protocol/SamplingBroker.js","sourceHash":"7b7990b60f293039cd0b707de5bc4192670e0d3f897d48a5215774636283bacf","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/protocol/SamplingBroker.js#0000:SamplingBroker","exportIndex":0,"name":"SamplingBroker","kind":"class","signature":"class SamplingBroker","summary":"SamplingBroker.js — Particle Realms Protocol sampling (MCP-inspired): lets a TOOL handler request a nested LLM completion mid-execution (the inverse of a normal OS.ai() call). Every sample enters the full AI executor, which creates a model-neutral Navi task and applies Covenant disclosure, resource, tool-firewall, verification, and receipt policy. There is no raw AI Hub fallback. A hard recursion-depth guard prevents sampling loops."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/protocol/ToolRegistry.md","moduleTitle":"kernel/protocol/ToolRegistry","source":"webgpu-os/kernel/protocol/ToolRegistry.js","import":"/webgpu-os/kernel/protocol/ToolRegistry.js","sourceHash":"ac2c2da55b1318bf0136adba98ae6ac9e2e2188161b3a1816481b1eb3c5cff07","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/protocol/ToolRegistry.js","title":"kernel/protocol/ToolRegistry","summary":"ToolRegistry.js — Particle Realms Protocol tool catalog. Distinct from kernel.toolDriver (the low-level execute/history engine, see webgpu-os/kernel/ToolDriver.js) and kernel.toolRouter (the AI Tool Firewall, see webgpu-os/kernel/tools/ToolRouter.js): this is the per-app CATALOG that says \"this app opts this already-registered tool into AI discovery\", so the AI Hub's two-pass execution loop (Phase 9) knows which tools are legal for a given app's request. Declaring a tool here never bypasses ToolRouter's firewall — it only makes the tool visible/offered.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/protocol/ToolRegistry.md","moduleTitle":"kernel/protocol/ToolRegistry","source":"webgpu-os/kernel/protocol/ToolRegistry.js","import":"/webgpu-os/kernel/protocol/ToolRegistry.js","sourceHash":"ac2c2da55b1318bf0136adba98ae6ac9e2e2188161b3a1816481b1eb3c5cff07","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/protocol/ToolRegistry.js#0000:ToolRegistry","exportIndex":0,"name":"ToolRegistry","kind":"class","signature":"class ToolRegistry","summary":"ToolRegistry.js — Particle Realms Protocol tool catalog. Distinct from kernel.toolDriver (the low-level execute/history engine, see webgpu-os/kernel/ToolDriver.js) and kernel.toolRouter (the AI Tool Firewall, see webgpu-os/kernel/tools/ToolRouter.js): this is the per-app CATALOG that says \"this app opts this already-registered tool into AI discovery\", so the AI Hub's two-pass execution loop (Phase 9) knows which tools are legal for a given app's request. Declaring a tool here never bypasses ToolRouter's firewall — it only makes the tool visible/offered."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/BinaryPack.md","moduleTitle":"kernel/schema/BinaryPack","source":"webgpu-os/kernel/schema/BinaryPack.js","import":"/webgpu-os/kernel/schema/BinaryPack.js","sourceHash":"4262b8e5307be8cfc125635795baa0c2ba62b440454e41658931d098b6583455","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/schema/BinaryPack.js","title":"kernel/schema/BinaryPack","summary":"BinaryPack.js — custom binary codec, zero external dependencies. Wire format: MessagePack specification (https://msgpack.org/index.html) Implemented from spec only — not copied from any library. API: pack(value)         → Uint8Array unpack(buf)         → value packToBase64(value) → string  (base64-encoded packed bytes) unpackBase64(str)   → value Supported types: null / undefined → nil boolean          → true / false integer (safe)   → positive/negative fixint, uint8-32, int8-32 float            → float64 string           → fixstr / str8 / str16 / str32 Uint8Array       → bin8 / bin16 / bin32 Array            → fixarray / array16 / array32 Object (plain)   → fixmap / map16 / map32 Byte layout (big-endian throughout, per spec): 0x00–0x7f  positive fixint 0x80–0x8f  fixmap   (N = low nibble) 0x90–0x9f  fixarray (N = low nibble) 0xa0–0xbf  fixstr   (N = low 5 bits) 0xc0       nil 0xc2       false 0xc3       true 0xc4–0xc6  bin8 / bin16 / bin32 0xca       float32   (encode uses float64 for precision) 0xcb       float64 0xcc–0xcf  uint8 / uint16 / uint32 / uint64* 0xd0–0xd3  int8  / int16  / int32  / int64* 0xd9–0xdb  str8  / str16  / str32 0xdc–0xdd  array16 / array32 0xde–0xdf  map16   / map32 0xe0–0xff  negative fixint * int64/uint64 are encoded as float64 when |v| > 2^32 (JS safe integer limit).","exportCount":7}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/BinaryPack.md","moduleTitle":"kernel/schema/BinaryPack","source":"webgpu-os/kernel/schema/BinaryPack.js","import":"/webgpu-os/kernel/schema/BinaryPack.js","sourceHash":"4262b8e5307be8cfc125635795baa0c2ba62b440454e41658931d098b6583455","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/BinaryPack.js#0000:BinaryPackError","exportIndex":0,"name":"BinaryPackError","kind":"class","signature":"class BinaryPackError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/BinaryPack.md","moduleTitle":"kernel/schema/BinaryPack","source":"webgpu-os/kernel/schema/BinaryPack.js","import":"/webgpu-os/kernel/schema/BinaryPack.js","sourceHash":"4262b8e5307be8cfc125635795baa0c2ba62b440454e41658931d098b6583455","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/BinaryPack.js#0001:pack","exportIndex":1,"name":"pack","kind":"function","signature":"pack(value)","summary":"Encode any JS value to a Uint8Array (MessagePack wire format)."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/BinaryPack.md","moduleTitle":"kernel/schema/BinaryPack","source":"webgpu-os/kernel/schema/BinaryPack.js","import":"/webgpu-os/kernel/schema/BinaryPack.js","sourceHash":"4262b8e5307be8cfc125635795baa0c2ba62b440454e41658931d098b6583455","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/BinaryPack.js#0002:unpack","exportIndex":2,"name":"unpack","kind":"function","signature":"unpack(buf)","summary":"Decode a Uint8Array or ArrayBuffer from MessagePack wire format."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/BinaryPack.md","moduleTitle":"kernel/schema/BinaryPack","source":"webgpu-os/kernel/schema/BinaryPack.js","import":"/webgpu-os/kernel/schema/BinaryPack.js","sourceHash":"4262b8e5307be8cfc125635795baa0c2ba62b440454e41658931d098b6583455","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/BinaryPack.js#0003:packToBase64","exportIndex":3,"name":"packToBase64","kind":"function","signature":"packToBase64(value)","summary":"Pack and base64-encode — useful for JSON embedding and localStorage."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/BinaryPack.md","moduleTitle":"kernel/schema/BinaryPack","source":"webgpu-os/kernel/schema/BinaryPack.js","import":"/webgpu-os/kernel/schema/BinaryPack.js","sourceHash":"4262b8e5307be8cfc125635795baa0c2ba62b440454e41658931d098b6583455","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/BinaryPack.js#0004:unpackBase64","exportIndex":4,"name":"unpackBase64","kind":"function","signature":"unpackBase64(str)","summary":"Decode a base64-encoded pack string."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/BinaryPack.md","moduleTitle":"kernel/schema/BinaryPack","source":"webgpu-os/kernel/schema/BinaryPack.js","import":"/webgpu-os/kernel/schema/BinaryPack.js","sourceHash":"4262b8e5307be8cfc125635795baa0c2ba62b440454e41658931d098b6583455","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/BinaryPack.js#0005:packedSize","exportIndex":5,"name":"packedSize","kind":"function","signature":"packedSize(value)","summary":"Return the packed byte-size of a value without keeping the buffer."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/BinaryPack.md","moduleTitle":"kernel/schema/BinaryPack","source":"webgpu-os/kernel/schema/BinaryPack.js","import":"/webgpu-os/kernel/schema/BinaryPack.js","sourceHash":"4262b8e5307be8cfc125635795baa0c2ba62b440454e41658931d098b6583455","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/BinaryPack.js#0006:packEqual","exportIndex":6,"name":"packEqual","kind":"function","signature":"packEqual(a, b)","summary":"Compare two values by structural equality using pack → byte comparison."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/OsSchemas.md","moduleTitle":"kernel/schema/OsSchemas","source":"webgpu-os/kernel/schema/OsSchemas.js","import":"/webgpu-os/kernel/schema/OsSchemas.js","sourceHash":"2f669ecae768910432dc1cdd7431018bbde6b2154b6326d94b508474b3242836","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/schema/OsSchemas.js","title":"kernel/schema/OsSchemas","summary":"OsSchemas.js — all OS-level schema definitions. Registers schemas into the shared SchemaRegistry singleton. Call initOsSchemas() once during KernelBootstrap. Registered names: os.AppManifest      — app discovery manifest (manifest.json) os.AppSetting       — one settings descriptor inside a manifest os.ModManifest      — mod discovery manifest os.ModHook          — one hook entry in a mod manifest os.IPCMessage       — IPC channel message envelope os.VFSNode          — virtual filesystem node metadata os.GPUSurface       — GPU surface descriptor os.VRAMEntry        — per-app VRAM usage report os.ProcessEntry     — process table entry os.PermissionCheck  — permission check result os.Particle         — particle struct for binary packing (6 × f32) os.ParticleBatch    — array of particles os.NetPeerMessage   — envelope sent between OS peers via NetDriver os.AppAICapabilityManifest — Particle Realms Protocol tool/resource/prompt/root declaration","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/OsSchemas.md","moduleTitle":"kernel/schema/OsSchemas","source":"webgpu-os/kernel/schema/OsSchemas.js","import":"/webgpu-os/kernel/schema/OsSchemas.js","sourceHash":"2f669ecae768910432dc1cdd7431018bbde6b2154b6326d94b508474b3242836","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/OsSchemas.js#0000:initOsSchemas","exportIndex":0,"name":"initOsSchemas","kind":"function","signature":"initOsSchemas()","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/SchemaRegistry.md","moduleTitle":"kernel/schema/SchemaRegistry","source":"webgpu-os/kernel/schema/SchemaRegistry.js","import":"/webgpu-os/kernel/schema/SchemaRegistry.js","sourceHash":"58a417fe4294d929b3964f2145285f943ddf5e41e0f38763c6394645a196f0d7","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/schema/SchemaRegistry.js","title":"kernel/schema/SchemaRegistry","summary":"SchemaRegistry.js — named schema store with validation and binary packing. Acts as the central authority for all schema definitions in the OS. Schemas are registered by name and resolved by $ref. Features: - Named schema registration and lookup - validate(name, data)   → { valid, errors } - assert(name, data)     → throws SchemaValidationError if invalid - pack(name, data)       → Uint8Array (validates then binary-packs) - unpack(name, buf)      → value (binary-unpacks then validates) - packAny(data)          → Uint8Array (binary-packs without schema) - unpackAny(buf)         → value (binary-unpacks without validation) Usage: import { schemaRegistry as sr } from './SchemaRegistry.js'; sr.define('myapp.MyType', { type: 'object', required: ['id'], properties: { id: { type: 'string' } } }); sr.assert('myapp.MyType', { id: 'abc' }); const bytes = sr.pack('myapp.MyType', { id: 'abc' });","exportCount":3}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/SchemaRegistry.md","moduleTitle":"kernel/schema/SchemaRegistry","source":"webgpu-os/kernel/schema/SchemaRegistry.js","import":"/webgpu-os/kernel/schema/SchemaRegistry.js","sourceHash":"58a417fe4294d929b3964f2145285f943ddf5e41e0f38763c6394645a196f0d7","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/SchemaRegistry.js#0000:SchemaRegistry","exportIndex":0,"name":"SchemaRegistry","kind":"class","signature":"class SchemaRegistry","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/SchemaRegistry.md","moduleTitle":"kernel/schema/SchemaRegistry","source":"webgpu-os/kernel/schema/SchemaRegistry.js","import":"/webgpu-os/kernel/schema/SchemaRegistry.js","sourceHash":"58a417fe4294d929b3964f2145285f943ddf5e41e0f38763c6394645a196f0d7","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/SchemaRegistry.js#0001:schemaRegistry","exportIndex":1,"name":"schemaRegistry","kind":"constant","signature":"schemaRegistry","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/SchemaRegistry.md","moduleTitle":"kernel/schema/SchemaRegistry","source":"webgpu-os/kernel/schema/SchemaRegistry.js","import":"/webgpu-os/kernel/schema/SchemaRegistry.js","sourceHash":"58a417fe4294d929b3964f2145285f943ddf5e41e0f38763c6394645a196f0d7","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/SchemaRegistry.js#0002:SchemaValidationError","exportIndex":2,"name":"SchemaValidationError","kind":"re-export","signature":"SchemaValidationError","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/SchemaValidator.md","moduleTitle":"kernel/schema/SchemaValidator","source":"webgpu-os/kernel/schema/SchemaValidator.js","import":"/webgpu-os/kernel/schema/SchemaValidator.js","sourceHash":"a1d18ba37dbd527c95c55c3400311b73cfcbffef7e620b85666f9b1a8e38145f","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/schema/SchemaValidator.js","title":"kernel/schema/SchemaValidator","summary":"SchemaValidator.js — JSON Schema (subset) validator, zero dependencies. Supported keywords: type              string | number | integer | boolean | null | array | object | 'any' properties        { key: schema } required          string[] additionalProperties  boolean | schema (false = deny unknown keys) items             schema (all elements) or schema[] (positional) minLength / maxLength / pattern   (string) minimum / maximum / exclusiveMinimum / exclusiveMaximum / multipleOf  (number) minItems / maxItems   (array) minProperties / maxProperties     (object) const             exact value match enum              allowed values list oneOf / anyOf / allOf / not nullable          shorthand — wraps schema as oneOf:[schema,{type:'null'}] $ref              string — resolved via refResolver(name) Usage: const v = new SchemaValidator(refResolver); const { valid, errors } = v.validate(data, schema); v.assert(data, schema, 'MyContext'); // throws SchemaValidationError","exportCount":3}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/SchemaValidator.md","moduleTitle":"kernel/schema/SchemaValidator","source":"webgpu-os/kernel/schema/SchemaValidator.js","import":"/webgpu-os/kernel/schema/SchemaValidator.js","sourceHash":"a1d18ba37dbd527c95c55c3400311b73cfcbffef7e620b85666f9b1a8e38145f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/SchemaValidator.js#0000:SchemaValidationError","exportIndex":0,"name":"SchemaValidationError","kind":"class","signature":"class SchemaValidationError extends Error","summary":"SchemaValidator.js — JSON Schema (subset) validator, zero dependencies. Supported keywords: type              string | number | integer | boolean | null | array | object | 'any' properties        { key: schema } required          string[] additionalProperties  boolean | schema (false = deny unknown keys) items             schema (all elements) or schema[] (positional) minLength / maxLength / pattern   (string) minimum / maximum / exclusiveMinimum / exclusiveMaximum / multipleOf  (number) minItems / maxItems   (array) minProperties / maxProperties     (object) const             exact value match enum              allowed values list oneOf / anyOf / allOf / not nullable          shorthand — wraps schema as oneOf:[schema,{type:'null'}] $ref              string — resolved via refResolver(name) Usage: const v = new SchemaValidator(refResolver); const { valid, errors } = v.validate(data, schema); v.assert(data, schema, 'MyContext'); // throws SchemaValidationError"}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/SchemaValidator.md","moduleTitle":"kernel/schema/SchemaValidator","source":"webgpu-os/kernel/schema/SchemaValidator.js","import":"/webgpu-os/kernel/schema/SchemaValidator.js","sourceHash":"a1d18ba37dbd527c95c55c3400311b73cfcbffef7e620b85666f9b1a8e38145f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/SchemaValidator.js#0001:SchemaValidator","exportIndex":1,"name":"SchemaValidator","kind":"class","signature":"class SchemaValidator","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/SchemaValidator.md","moduleTitle":"kernel/schema/SchemaValidator","source":"webgpu-os/kernel/schema/SchemaValidator.js","import":"/webgpu-os/kernel/schema/SchemaValidator.js","sourceHash":"a1d18ba37dbd527c95c55c3400311b73cfcbffef7e620b85666f9b1a8e38145f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/SchemaValidator.js#0002:t","exportIndex":2,"name":"t","kind":"constant","signature":"t","summary":"Fluent schema type builders for ergonomic schema authoring. import { t } from './SchemaValidator.js'; const schema = t.obj({ name: t.str({ minLength: 1 }), age: t.int({ minimum: 0 }) }, ['name']);"}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/ShellPreferenceRecords.md","moduleTitle":"kernel/schema/ShellPreferenceRecords","source":"webgpu-os/kernel/schema/ShellPreferenceRecords.js","import":"/webgpu-os/kernel/schema/ShellPreferenceRecords.js","sourceHash":"b39ba60ac510d4b66aa7959d417b3413cbc1a797c831be5e6f2f5281cff73dd5","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/schema/ShellPreferenceRecords.js","title":"kernel/schema/ShellPreferenceRecords","summary":"Versioned, schema-specific localStorage records shared by the OS shell. Readers accept the one historical unversioned shape that each preference used before schema versioning. Writers always publish the current envelope and must successfully preflight the existing value before touching storage. Unsupported or corrupt records are therefore quarantined in place.","exportCount":23}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/ShellPreferenceRecords.md","moduleTitle":"kernel/schema/ShellPreferenceRecords","source":"webgpu-os/kernel/schema/ShellPreferenceRecords.js","import":"/webgpu-os/kernel/schema/ShellPreferenceRecords.js","sourceHash":"b39ba60ac510d4b66aa7959d417b3413cbc1a797c831be5e6f2f5281cff73dd5","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/ShellPreferenceRecords.js#0000:readVersionedStorageRecord","exportIndex":0,"name":"readVersionedStorageRecord","kind":"function","signature":"readVersionedStorageRecord(storage, contract, { normalizeLegacy, normalizeCurrent })","summary":"Strictly read a versioned shell preference without ever rewriting it."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/ShellPreferenceRecords.md","moduleTitle":"kernel/schema/ShellPreferenceRecords","source":"webgpu-os/kernel/schema/ShellPreferenceRecords.js","import":"/webgpu-os/kernel/schema/ShellPreferenceRecords.js","sourceHash":"b39ba60ac510d4b66aa7959d417b3413cbc1a797c831be5e6f2f5281cff73dd5","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/ShellPreferenceRecords.js#0001:writeVersionedStorageRecord","exportIndex":1,"name":"writeVersionedStorageRecord","kind":"function","signature":"writeVersionedStorageRecord(storage, contract, value, normalizers)","summary":"Preflight the old record, then atomically replace its one localStorage key."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/ShellPreferenceRecords.md","moduleTitle":"kernel/schema/ShellPreferenceRecords","source":"webgpu-os/kernel/schema/ShellPreferenceRecords.js","import":"/webgpu-os/kernel/schema/ShellPreferenceRecords.js","sourceHash":"b39ba60ac510d4b66aa7959d417b3413cbc1a797c831be5e6f2f5281cff73dd5","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/ShellPreferenceRecords.js#0002:readNotificationPreferences","exportIndex":2,"name":"readNotificationPreferences","kind":"function","signature":"readNotificationPreferences(storage)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/ShellPreferenceRecords.md","moduleTitle":"kernel/schema/ShellPreferenceRecords","source":"webgpu-os/kernel/schema/ShellPreferenceRecords.js","import":"/webgpu-os/kernel/schema/ShellPreferenceRecords.js","sourceHash":"b39ba60ac510d4b66aa7959d417b3413cbc1a797c831be5e6f2f5281cff73dd5","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/ShellPreferenceRecords.js#0003:writeNotificationPreferences","exportIndex":3,"name":"writeNotificationPreferences","kind":"function","signature":"writeNotificationPreferences(patch, storage)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/ShellPreferenceRecords.md","moduleTitle":"kernel/schema/ShellPreferenceRecords","source":"webgpu-os/kernel/schema/ShellPreferenceRecords.js","import":"/webgpu-os/kernel/schema/ShellPreferenceRecords.js","sourceHash":"b39ba60ac510d4b66aa7959d417b3413cbc1a797c831be5e6f2f5281cff73dd5","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/ShellPreferenceRecords.js#0004:readUiSoundPreferences","exportIndex":4,"name":"readUiSoundPreferences","kind":"function","signature":"readUiSoundPreferences(storage)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/ShellPreferenceRecords.md","moduleTitle":"kernel/schema/ShellPreferenceRecords","source":"webgpu-os/kernel/schema/ShellPreferenceRecords.js","import":"/webgpu-os/kernel/schema/ShellPreferenceRecords.js","sourceHash":"b39ba60ac510d4b66aa7959d417b3413cbc1a797c831be5e6f2f5281cff73dd5","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/ShellPreferenceRecords.js#0005:writeUiSoundPreferences","exportIndex":5,"name":"writeUiSoundPreferences","kind":"function","signature":"writeUiSoundPreferences(value, storage)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/ShellPreferenceRecords.md","moduleTitle":"kernel/schema/ShellPreferenceRecords","source":"webgpu-os/kernel/schema/ShellPreferenceRecords.js","import":"/webgpu-os/kernel/schema/ShellPreferenceRecords.js","sourceHash":"b39ba60ac510d4b66aa7959d417b3413cbc1a797c831be5e6f2f5281cff73dd5","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/ShellPreferenceRecords.js#0006:readAudioPreferences","exportIndex":6,"name":"readAudioPreferences","kind":"function","signature":"readAudioPreferences(storage)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/ShellPreferenceRecords.md","moduleTitle":"kernel/schema/ShellPreferenceRecords","source":"webgpu-os/kernel/schema/ShellPreferenceRecords.js","import":"/webgpu-os/kernel/schema/ShellPreferenceRecords.js","sourceHash":"b39ba60ac510d4b66aa7959d417b3413cbc1a797c831be5e6f2f5281cff73dd5","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/ShellPreferenceRecords.js#0007:writeAudioPreferences","exportIndex":7,"name":"writeAudioPreferences","kind":"function","signature":"writeAudioPreferences(value, storage)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/ShellPreferenceRecords.md","moduleTitle":"kernel/schema/ShellPreferenceRecords","source":"webgpu-os/kernel/schema/ShellPreferenceRecords.js","import":"/webgpu-os/kernel/schema/ShellPreferenceRecords.js","sourceHash":"b39ba60ac510d4b66aa7959d417b3413cbc1a797c831be5e6f2f5281cff73dd5","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/ShellPreferenceRecords.js#0008:readAmbientPreferences","exportIndex":8,"name":"readAmbientPreferences","kind":"function","signature":"readAmbientPreferences(storage)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/ShellPreferenceRecords.md","moduleTitle":"kernel/schema/ShellPreferenceRecords","source":"webgpu-os/kernel/schema/ShellPreferenceRecords.js","import":"/webgpu-os/kernel/schema/ShellPreferenceRecords.js","sourceHash":"b39ba60ac510d4b66aa7959d417b3413cbc1a797c831be5e6f2f5281cff73dd5","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/ShellPreferenceRecords.js#0009:writeAmbientPreferences","exportIndex":9,"name":"writeAmbientPreferences","kind":"function","signature":"writeAmbientPreferences(config, storage)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/ShellPreferenceRecords.md","moduleTitle":"kernel/schema/ShellPreferenceRecords","source":"webgpu-os/kernel/schema/ShellPreferenceRecords.js","import":"/webgpu-os/kernel/schema/ShellPreferenceRecords.js","sourceHash":"b39ba60ac510d4b66aa7959d417b3413cbc1a797c831be5e6f2f5281cff73dd5","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/ShellPreferenceRecords.js#0010:readDeepLinkPreferences","exportIndex":10,"name":"readDeepLinkPreferences","kind":"function","signature":"readDeepLinkPreferences(storage)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/ShellPreferenceRecords.md","moduleTitle":"kernel/schema/ShellPreferenceRecords","source":"webgpu-os/kernel/schema/ShellPreferenceRecords.js","import":"/webgpu-os/kernel/schema/ShellPreferenceRecords.js","sourceHash":"b39ba60ac510d4b66aa7959d417b3413cbc1a797c831be5e6f2f5281cff73dd5","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/ShellPreferenceRecords.js#0011:writeDeepLinkPreferences","exportIndex":11,"name":"writeDeepLinkPreferences","kind":"function","signature":"writeDeepLinkPreferences(value, storage)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/ShellPreferenceRecords.md","moduleTitle":"kernel/schema/ShellPreferenceRecords","source":"webgpu-os/kernel/schema/ShellPreferenceRecords.js","import":"/webgpu-os/kernel/schema/ShellPreferenceRecords.js","sourceHash":"b39ba60ac510d4b66aa7959d417b3413cbc1a797c831be5e6f2f5281cff73dd5","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/ShellPreferenceRecords.js#0012:readWindowStateCache","exportIndex":12,"name":"readWindowStateCache","kind":"function","signature":"readWindowStateCache(storage)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/ShellPreferenceRecords.md","moduleTitle":"kernel/schema/ShellPreferenceRecords","source":"webgpu-os/kernel/schema/ShellPreferenceRecords.js","import":"/webgpu-os/kernel/schema/ShellPreferenceRecords.js","sourceHash":"b39ba60ac510d4b66aa7959d417b3413cbc1a797c831be5e6f2f5281cff73dd5","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/ShellPreferenceRecords.js#0013:writeWindowStateCache","exportIndex":13,"name":"writeWindowStateCache","kind":"function","signature":"writeWindowStateCache(states, storage)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/ShellPreferenceRecords.md","moduleTitle":"kernel/schema/ShellPreferenceRecords","source":"webgpu-os/kernel/schema/ShellPreferenceRecords.js","import":"/webgpu-os/kernel/schema/ShellPreferenceRecords.js","sourceHash":"b39ba60ac510d4b66aa7959d417b3413cbc1a797c831be5e6f2f5281cff73dd5","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/ShellPreferenceRecords.js#0014:readAiOverlayPosition","exportIndex":14,"name":"readAiOverlayPosition","kind":"function","signature":"readAiOverlayPosition(storage)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/ShellPreferenceRecords.md","moduleTitle":"kernel/schema/ShellPreferenceRecords","source":"webgpu-os/kernel/schema/ShellPreferenceRecords.js","import":"/webgpu-os/kernel/schema/ShellPreferenceRecords.js","sourceHash":"b39ba60ac510d4b66aa7959d417b3413cbc1a797c831be5e6f2f5281cff73dd5","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/ShellPreferenceRecords.js#0015:writeAiOverlayPosition","exportIndex":15,"name":"writeAiOverlayPosition","kind":"function","signature":"writeAiOverlayPosition(position, storage)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/ShellPreferenceRecords.md","moduleTitle":"kernel/schema/ShellPreferenceRecords","source":"webgpu-os/kernel/schema/ShellPreferenceRecords.js","import":"/webgpu-os/kernel/schema/ShellPreferenceRecords.js","sourceHash":"b39ba60ac510d4b66aa7959d417b3413cbc1a797c831be5e6f2f5281cff73dd5","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/ShellPreferenceRecords.js#0016:readSyncRulePreferences","exportIndex":16,"name":"readSyncRulePreferences","kind":"function","signature":"readSyncRulePreferences(storage)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/ShellPreferenceRecords.md","moduleTitle":"kernel/schema/ShellPreferenceRecords","source":"webgpu-os/kernel/schema/ShellPreferenceRecords.js","import":"/webgpu-os/kernel/schema/ShellPreferenceRecords.js","sourceHash":"b39ba60ac510d4b66aa7959d417b3413cbc1a797c831be5e6f2f5281cff73dd5","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/ShellPreferenceRecords.js#0017:writeSyncRulePreferences","exportIndex":17,"name":"writeSyncRulePreferences","kind":"function","signature":"writeSyncRulePreferences(rules, storage)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/ShellPreferenceRecords.md","moduleTitle":"kernel/schema/ShellPreferenceRecords","source":"webgpu-os/kernel/schema/ShellPreferenceRecords.js","import":"/webgpu-os/kernel/schema/ShellPreferenceRecords.js","sourceHash":"b39ba60ac510d4b66aa7959d417b3413cbc1a797c831be5e6f2f5281cff73dd5","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/ShellPreferenceRecords.js#0018:readStartMenuPreferences","exportIndex":18,"name":"readStartMenuPreferences","kind":"function","signature":"readStartMenuPreferences(storage)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/ShellPreferenceRecords.md","moduleTitle":"kernel/schema/ShellPreferenceRecords","source":"webgpu-os/kernel/schema/ShellPreferenceRecords.js","import":"/webgpu-os/kernel/schema/ShellPreferenceRecords.js","sourceHash":"b39ba60ac510d4b66aa7959d417b3413cbc1a797c831be5e6f2f5281cff73dd5","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/ShellPreferenceRecords.js#0019:writeStartMenuPreferences","exportIndex":19,"name":"writeStartMenuPreferences","kind":"function","signature":"writeStartMenuPreferences(patch, storage)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/ShellPreferenceRecords.md","moduleTitle":"kernel/schema/ShellPreferenceRecords","source":"webgpu-os/kernel/schema/ShellPreferenceRecords.js","import":"/webgpu-os/kernel/schema/ShellPreferenceRecords.js","sourceHash":"b39ba60ac510d4b66aa7959d417b3413cbc1a797c831be5e6f2f5281cff73dd5","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/ShellPreferenceRecords.js#0020:SHELL_PREFERENCE_CONTRACTS","exportIndex":20,"name":"SHELL_PREFERENCE_CONTRACTS","kind":"constant","signature":"SHELL_PREFERENCE_CONTRACTS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/ShellPreferenceRecords.md","moduleTitle":"kernel/schema/ShellPreferenceRecords","source":"webgpu-os/kernel/schema/ShellPreferenceRecords.js","import":"/webgpu-os/kernel/schema/ShellPreferenceRecords.js","sourceHash":"b39ba60ac510d4b66aa7959d417b3413cbc1a797c831be5e6f2f5281cff73dd5","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/ShellPreferenceRecords.js#0021:START_MENU_LEGACY_KEYS","exportIndex":21,"name":"START_MENU_LEGACY_KEYS","kind":"constant","signature":"START_MENU_LEGACY_KEYS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/ShellPreferenceRecords.md","moduleTitle":"kernel/schema/ShellPreferenceRecords","source":"webgpu-os/kernel/schema/ShellPreferenceRecords.js","import":"/webgpu-os/kernel/schema/ShellPreferenceRecords.js","sourceHash":"b39ba60ac510d4b66aa7959d417b3413cbc1a797c831be5e6f2f5281cff73dd5","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/ShellPreferenceRecords.js#0022:START_MENU_DEFAULTS","exportIndex":22,"name":"START_MENU_DEFAULTS","kind":"constant","signature":"START_MENU_DEFAULTS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/index.md","moduleTitle":"kernel/schema/index","source":"webgpu-os/kernel/schema/index.js","import":"/webgpu-os/kernel/schema/index.js","sourceHash":"9de38443bde477634031b838b981dec98f2234313e885c0b39b5601c4ab2a2fa","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/schema/index.js","title":"kernel/schema/index","summary":"kernel/schema/index.js — barrel export for the OS schema system. Usage (anywhere in the OS): import { schemaRegistry, t, pack, unpack } from '../schema/index.js';","exportCount":13}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/index.md","moduleTitle":"kernel/schema/index","source":"webgpu-os/kernel/schema/index.js","import":"/webgpu-os/kernel/schema/index.js","sourceHash":"9de38443bde477634031b838b981dec98f2234313e885c0b39b5601c4ab2a2fa","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/index.js#0000:BinaryPackError","exportIndex":0,"name":"BinaryPackError","kind":"re-export","signature":"BinaryPackError","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/index.md","moduleTitle":"kernel/schema/index","source":"webgpu-os/kernel/schema/index.js","import":"/webgpu-os/kernel/schema/index.js","sourceHash":"9de38443bde477634031b838b981dec98f2234313e885c0b39b5601c4ab2a2fa","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/index.js#0001:SchemaRegistry","exportIndex":1,"name":"SchemaRegistry","kind":"re-export","signature":"SchemaRegistry","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/index.md","moduleTitle":"kernel/schema/index","source":"webgpu-os/kernel/schema/index.js","import":"/webgpu-os/kernel/schema/index.js","sourceHash":"9de38443bde477634031b838b981dec98f2234313e885c0b39b5601c4ab2a2fa","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/index.js#0002:SchemaValidationError","exportIndex":2,"name":"SchemaValidationError","kind":"re-export","signature":"SchemaValidationError","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/index.md","moduleTitle":"kernel/schema/index","source":"webgpu-os/kernel/schema/index.js","import":"/webgpu-os/kernel/schema/index.js","sourceHash":"9de38443bde477634031b838b981dec98f2234313e885c0b39b5601c4ab2a2fa","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/index.js#0003:SchemaValidator","exportIndex":3,"name":"SchemaValidator","kind":"re-export","signature":"SchemaValidator","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/index.md","moduleTitle":"kernel/schema/index","source":"webgpu-os/kernel/schema/index.js","import":"/webgpu-os/kernel/schema/index.js","sourceHash":"9de38443bde477634031b838b981dec98f2234313e885c0b39b5601c4ab2a2fa","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/index.js#0004:initOsSchemas","exportIndex":4,"name":"initOsSchemas","kind":"re-export","signature":"initOsSchemas","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/index.md","moduleTitle":"kernel/schema/index","source":"webgpu-os/kernel/schema/index.js","import":"/webgpu-os/kernel/schema/index.js","sourceHash":"9de38443bde477634031b838b981dec98f2234313e885c0b39b5601c4ab2a2fa","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/index.js#0005:pack","exportIndex":5,"name":"pack","kind":"re-export","signature":"pack","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/index.md","moduleTitle":"kernel/schema/index","source":"webgpu-os/kernel/schema/index.js","import":"/webgpu-os/kernel/schema/index.js","sourceHash":"9de38443bde477634031b838b981dec98f2234313e885c0b39b5601c4ab2a2fa","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/index.js#0006:packEqual","exportIndex":6,"name":"packEqual","kind":"re-export","signature":"packEqual","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/index.md","moduleTitle":"kernel/schema/index","source":"webgpu-os/kernel/schema/index.js","import":"/webgpu-os/kernel/schema/index.js","sourceHash":"9de38443bde477634031b838b981dec98f2234313e885c0b39b5601c4ab2a2fa","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/index.js#0007:packToBase64","exportIndex":7,"name":"packToBase64","kind":"re-export","signature":"packToBase64","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/index.md","moduleTitle":"kernel/schema/index","source":"webgpu-os/kernel/schema/index.js","import":"/webgpu-os/kernel/schema/index.js","sourceHash":"9de38443bde477634031b838b981dec98f2234313e885c0b39b5601c4ab2a2fa","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/index.js#0008:packedSize","exportIndex":8,"name":"packedSize","kind":"re-export","signature":"packedSize","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/index.md","moduleTitle":"kernel/schema/index","source":"webgpu-os/kernel/schema/index.js","import":"/webgpu-os/kernel/schema/index.js","sourceHash":"9de38443bde477634031b838b981dec98f2234313e885c0b39b5601c4ab2a2fa","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/index.js#0009:schemaRegistry","exportIndex":9,"name":"schemaRegistry","kind":"re-export","signature":"schemaRegistry","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/index.md","moduleTitle":"kernel/schema/index","source":"webgpu-os/kernel/schema/index.js","import":"/webgpu-os/kernel/schema/index.js","sourceHash":"9de38443bde477634031b838b981dec98f2234313e885c0b39b5601c4ab2a2fa","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/index.js#0010:t","exportIndex":10,"name":"t","kind":"re-export","signature":"t","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/index.md","moduleTitle":"kernel/schema/index","source":"webgpu-os/kernel/schema/index.js","import":"/webgpu-os/kernel/schema/index.js","sourceHash":"9de38443bde477634031b838b981dec98f2234313e885c0b39b5601c4ab2a2fa","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/index.js#0011:unpack","exportIndex":11,"name":"unpack","kind":"re-export","signature":"unpack","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/schema/index.md","moduleTitle":"kernel/schema/index","source":"webgpu-os/kernel/schema/index.js","import":"/webgpu-os/kernel/schema/index.js","sourceHash":"9de38443bde477634031b838b981dec98f2234313e885c0b39b5601c4ab2a2fa","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/schema/index.js#0012:unpackBase64","exportIndex":12,"name":"unpackBase64","kind":"re-export","signature":"unpackBase64","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/state/AppStateChannelAdapter.md","moduleTitle":"kernel/state/AppStateChannelAdapter","source":"webgpu-os/kernel/state/AppStateChannelAdapter.js","import":"/webgpu-os/kernel/state/AppStateChannelAdapter.js","sourceHash":"2e033f6c464e5253365625d2c8951f651655b96dfabc02d347d60295338ac22f","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/state/AppStateChannelAdapter.js","title":"kernel/state/AppStateChannelAdapter","summary":"CSE-backed State Channel authority for an app-owned AppStateEngine key. AppStateEngine remains the source of truth and its expectedVersion is the compare-and-swap fence for every accepted intent.","exportCount":2}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/state/AppStateChannelAdapter.md","moduleTitle":"kernel/state/AppStateChannelAdapter","source":"webgpu-os/kernel/state/AppStateChannelAdapter.js","import":"/webgpu-os/kernel/state/AppStateChannelAdapter.js","sourceHash":"2e033f6c464e5253365625d2c8951f651655b96dfabc02d347d60295338ac22f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/state/AppStateChannelAdapter.js#0000:AppStateChannelAdapter","exportIndex":0,"name":"AppStateChannelAdapter","kind":"class","signature":"class AppStateChannelAdapter","summary":"CSE-backed State Channel authority for an app-owned AppStateEngine key. AppStateEngine remains the source of truth and its expectedVersion is the compare-and-swap fence for every accepted intent."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/state/AppStateChannelAdapter.md","moduleTitle":"kernel/state/AppStateChannelAdapter","source":"webgpu-os/kernel/state/AppStateChannelAdapter.js","import":"/webgpu-os/kernel/state/AppStateChannelAdapter.js","sourceHash":"2e033f6c464e5253365625d2c8951f651655b96dfabc02d347d60295338ac22f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/state/AppStateChannelAdapter.js#0001:createAppStateChannelAdapter","exportIndex":1,"name":"createAppStateChannelAdapter","kind":"function","signature":"createAppStateChannelAdapter(options)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/state/AppStateEngine.md","moduleTitle":"kernel/state/AppStateEngine","source":"webgpu-os/kernel/state/AppStateEngine.js","import":"/webgpu-os/kernel/state/AppStateEngine.js","sourceHash":"97de0c4a8d7abd4eaf928adecf72b28be77eee0aa7ba7a1e8536dba2147766d6","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/state/AppStateEngine.js","title":"kernel/state/AppStateEngine","summary":"AppStateEngine — app-scoped CSE state exposed through guarded syscalls. Logical values are immutable EntityRegistry versions. Every successful write is HLC-stamped and appended to a shared hash-chained EventLog. Apps never receive the registry or log directly; Syscalls injects the authenticated appId so a caller cannot address another app's state.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/state/AppStateEngine.md","moduleTitle":"kernel/state/AppStateEngine","source":"webgpu-os/kernel/state/AppStateEngine.js","import":"/webgpu-os/kernel/state/AppStateEngine.js","sourceHash":"97de0c4a8d7abd4eaf928adecf72b28be77eee0aa7ba7a1e8536dba2147766d6","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/state/AppStateEngine.js#0000:AppStateEngine","exportIndex":0,"name":"AppStateEngine","kind":"class","signature":"class AppStateEngine","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/storylets/AIStoryletFactory.md","moduleTitle":"kernel/storylets/AIStoryletFactory","source":"webgpu-os/kernel/storylets/AIStoryletFactory.js","import":"/webgpu-os/kernel/storylets/AIStoryletFactory.js","sourceHash":"bd18259a7ee0cf884ffcd2accb82c07a46e2083877f669a40b7f0310be9d5af1","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/storylets/AIStoryletFactory.js","title":"kernel/storylets/AIStoryletFactory","summary":"AIStoryletFactory.js — defines the OS's AI-pipeline storylets via the existing createStorylet() from engine/gameplay/narrative/StoryGraph.js. Each storylet gates on the request worldState's `phase` and advances it; Phase 9's two-pass execution loop drives StoryletRuntime.tick() with these. Pipeline phases: received → classified → contextGathered → capabilitiesNegotiated → tierChosen → planned → executed → finalized  (+ 'malformed' → repair) Handlers are injected (not hardcoded) so the factory stays a pure catalog; every handler receives the worldState and returns a storylet result ({ phase, facts?, observations?, ... } — see StoryletEffectsApplier).","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/storylets/AIStoryletFactory.md","moduleTitle":"kernel/storylets/AIStoryletFactory","source":"webgpu-os/kernel/storylets/AIStoryletFactory.js","import":"/webgpu-os/kernel/storylets/AIStoryletFactory.js","sourceHash":"bd18259a7ee0cf884ffcd2accb82c07a46e2083877f669a40b7f0310be9d5af1","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/storylets/AIStoryletFactory.js#0000:AIStoryletFactory","exportIndex":0,"name":"AIStoryletFactory","kind":"class","signature":"class AIStoryletFactory","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/storylets/AdversarialFixtures.md","moduleTitle":"kernel/storylets/AdversarialFixtures","source":"webgpu-os/kernel/storylets/AdversarialFixtures.js","import":"/webgpu-os/kernel/storylets/AdversarialFixtures.js","sourceHash":"b28ecd0f4b486a8d81c036b7600a1005aaca2d6f46a8df4a642b3d15e76de29a","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/storylets/AdversarialFixtures.js","title":"kernel/storylets/AdversarialFixtures","summary":"AdversarialFixtures.js — the canned adversarial test list for the Phase 14 storylet harness. Two families: 1. DESCRIPTOR fixtures — malformed/poisoned storylet DEFINITIONS that must fail StoryletDescriptorSanitizer.scan (prompt injection, bad id, wrong handler types). 2. WORLDSTATE fixtures — hostile task states a well-formed storylet must handle safely: missing tools, poisoned resource/descriptor text, hidden params, a changed attestation hash, a bad mass ratio, an exploding joint. These are DATA only; the runner decides pass/fail. `expectSafe` means the storylet must NOT trigger (or must trigger and return a rejecting result) — never silently proceed as if the state were trustworthy.","exportCount":2}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/storylets/AdversarialFixtures.md","moduleTitle":"kernel/storylets/AdversarialFixtures","source":"webgpu-os/kernel/storylets/AdversarialFixtures.js","import":"/webgpu-os/kernel/storylets/AdversarialFixtures.js","sourceHash":"b28ecd0f4b486a8d81c036b7600a1005aaca2d6f46a8df4a642b3d15e76de29a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/storylets/AdversarialFixtures.js#0000:DESCRIPTOR_FIXTURES","exportIndex":0,"name":"DESCRIPTOR_FIXTURES","kind":"constant","signature":"DESCRIPTOR_FIXTURES","summary":"Poisoned/malformed storylet definitions — must fail sanitization."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/storylets/AdversarialFixtures.md","moduleTitle":"kernel/storylets/AdversarialFixtures","source":"webgpu-os/kernel/storylets/AdversarialFixtures.js","import":"/webgpu-os/kernel/storylets/AdversarialFixtures.js","sourceHash":"b28ecd0f4b486a8d81c036b7600a1005aaca2d6f46a8df4a642b3d15e76de29a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/storylets/AdversarialFixtures.js#0001:WORLDSTATE_FIXTURES","exportIndex":1,"name":"WORLDSTATE_FIXTURES","kind":"constant","signature":"WORLDSTATE_FIXTURES","summary":"Hostile task worldStates — a well-formed storylet must handle each safely."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/storylets/NaviTaskEpisodeRuntime.md","moduleTitle":"kernel/storylets/NaviTaskEpisodeRuntime","source":"webgpu-os/kernel/storylets/NaviTaskEpisodeRuntime.js","import":"/webgpu-os/kernel/storylets/NaviTaskEpisodeRuntime.js","sourceHash":"3aeeae7fdb42b9fbe528ed87347dd548eebd750a23ba5188dc37a97e2e26ea3d","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/storylets/NaviTaskEpisodeRuntime.js","title":"kernel/storylets/NaviTaskEpisodeRuntime","summary":"NaviTaskEpisodeRuntime.js — deterministic, resumable task episodes for onboarding, approvals, recovery, provider failure, handoff, and long builds. Episode actions are data-only proposals. This runtime cannot execute tools, grant authority, force-fire Storylets, or choose a random transition.","exportCount":3}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/storylets/NaviTaskEpisodeRuntime.md","moduleTitle":"kernel/storylets/NaviTaskEpisodeRuntime","source":"webgpu-os/kernel/storylets/NaviTaskEpisodeRuntime.js","import":"/webgpu-os/kernel/storylets/NaviTaskEpisodeRuntime.js","sourceHash":"3aeeae7fdb42b9fbe528ed87347dd548eebd750a23ba5188dc37a97e2e26ea3d","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/storylets/NaviTaskEpisodeRuntime.js#0000:NaviTaskEpisodeRuntime","exportIndex":0,"name":"NaviTaskEpisodeRuntime","kind":"class","signature":"class NaviTaskEpisodeRuntime","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/storylets/NaviTaskEpisodeRuntime.md","moduleTitle":"kernel/storylets/NaviTaskEpisodeRuntime","source":"webgpu-os/kernel/storylets/NaviTaskEpisodeRuntime.js","import":"/webgpu-os/kernel/storylets/NaviTaskEpisodeRuntime.js","sourceHash":"3aeeae7fdb42b9fbe528ed87347dd548eebd750a23ba5188dc37a97e2e26ea3d","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/storylets/NaviTaskEpisodeRuntime.js#0001:validateEpisodeSnapshot","exportIndex":1,"name":"validateEpisodeSnapshot","kind":"function","signature":"async validateEpisodeSnapshot(snapshot)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/storylets/NaviTaskEpisodeRuntime.md","moduleTitle":"kernel/storylets/NaviTaskEpisodeRuntime","source":"webgpu-os/kernel/storylets/NaviTaskEpisodeRuntime.js","import":"/webgpu-os/kernel/storylets/NaviTaskEpisodeRuntime.js","sourceHash":"3aeeae7fdb42b9fbe528ed87347dd548eebd750a23ba5188dc37a97e2e26ea3d","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/storylets/NaviTaskEpisodeRuntime.js#0002:NAVI_TASK_EPISODE_FORMATS","exportIndex":2,"name":"NAVI_TASK_EPISODE_FORMATS","kind":"constant","signature":"NAVI_TASK_EPISODE_FORMATS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/storylets/OSEventGraphAdapter.md","moduleTitle":"kernel/storylets/OSEventGraphAdapter","source":"webgpu-os/kernel/storylets/OSEventGraphAdapter.js","import":"/webgpu-os/kernel/storylets/OSEventGraphAdapter.js","sourceHash":"45179b51a1dded1b7f79005ff521980391d5566e3b0d63db41582dec0a1c0deb","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/storylets/OSEventGraphAdapter.js","title":"kernel/storylets/OSEventGraphAdapter","summary":"OSEventGraphAdapter.js — minimal `{ emit(event) }` shim satisfying StoryGraph's expected EventGraph collaborator (engine/gameplay/core/ EventGraph.js doesn't exist yet). Fired storylet events are: 1. re-emitted on the kernel event bus as `storylet:<type>`, 2. kept in a bounded in-memory log, and 3. forwarded to the Task Ledger's event/observation log once Phase 8 attaches it via setLedger().","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/storylets/OSEventGraphAdapter.md","moduleTitle":"kernel/storylets/OSEventGraphAdapter","source":"webgpu-os/kernel/storylets/OSEventGraphAdapter.js","import":"/webgpu-os/kernel/storylets/OSEventGraphAdapter.js","sourceHash":"45179b51a1dded1b7f79005ff521980391d5566e3b0d63db41582dec0a1c0deb","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/storylets/OSEventGraphAdapter.js#0000:OSEventGraphAdapter","exportIndex":0,"name":"OSEventGraphAdapter","kind":"class","signature":"class OSEventGraphAdapter","summary":"OSEventGraphAdapter.js — minimal `{ emit(event) }` shim satisfying StoryGraph's expected EventGraph collaborator (engine/gameplay/core/ EventGraph.js doesn't exist yet). Fired storylet events are: 1. re-emitted on the kernel event bus as `storylet:<type>`, 2. kept in a bounded in-memory log, and 3. forwarded to the Task Ledger's event/observation log once Phase 8 attaches it via setLedger()."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/storylets/StoryletDescriptorSanitizer.md","moduleTitle":"kernel/storylets/StoryletDescriptorSanitizer","source":"webgpu-os/kernel/storylets/StoryletDescriptorSanitizer.js","import":"/webgpu-os/kernel/storylets/StoryletDescriptorSanitizer.js","sourceHash":"b85d05f979977f3d392e2ace75f73534dac103a2f746ee1aa68d766589d6fb42","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/storylets/StoryletDescriptorSanitizer.js","title":"kernel/storylets/StoryletDescriptorSanitizer","summary":"StoryletDescriptorSanitizer.js — validates a storylet definition before registration. Reuses Phase 5's DescriptorSanitizer for prompt-injection text scanning (no parallel scanner) and adds storylet-specific structural checks (id shape, handler types, sane numeric gates).","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/storylets/StoryletDescriptorSanitizer.md","moduleTitle":"kernel/storylets/StoryletDescriptorSanitizer","source":"webgpu-os/kernel/storylets/StoryletDescriptorSanitizer.js","import":"/webgpu-os/kernel/storylets/StoryletDescriptorSanitizer.js","sourceHash":"b85d05f979977f3d392e2ace75f73534dac103a2f746ee1aa68d766589d6fb42","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/storylets/StoryletDescriptorSanitizer.js#0000:StoryletDescriptorSanitizer","exportIndex":0,"name":"StoryletDescriptorSanitizer","kind":"class","signature":"class StoryletDescriptorSanitizer","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/storylets/StoryletEffectsApplier.md","moduleTitle":"kernel/storylets/StoryletEffectsApplier","source":"webgpu-os/kernel/storylets/StoryletEffectsApplier.js","import":"/webgpu-os/kernel/storylets/StoryletEffectsApplier.js","sourceHash":"983dd1c0789a09a8669a4bf0bdd515be6a2650a91e017a07f94626e6a48bd0e8","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/storylets/StoryletEffectsApplier.js","title":"kernel/storylets/StoryletEffectsApplier","summary":"StoryletEffectsApplier.js — applies a storylet execute() result into the Task Ledger / Fact Store instead of game consequences/memories. Facts are monotonic canonical strings (engine/state/facts) — never deleted, only tombstoned — so an AI task's effect history stays audit-stable.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/storylets/StoryletEffectsApplier.md","moduleTitle":"kernel/storylets/StoryletEffectsApplier","source":"webgpu-os/kernel/storylets/StoryletEffectsApplier.js","import":"/webgpu-os/kernel/storylets/StoryletEffectsApplier.js","sourceHash":"983dd1c0789a09a8669a4bf0bdd515be6a2650a91e017a07f94626e6a48bd0e8","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/storylets/StoryletEffectsApplier.js#0000:StoryletEffectsApplier","exportIndex":0,"name":"StoryletEffectsApplier","kind":"class","signature":"class StoryletEffectsApplier","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/storylets/StoryletEligibilityBridge.md","moduleTitle":"kernel/storylets/StoryletEligibilityBridge","source":"webgpu-os/kernel/storylets/StoryletEligibilityBridge.js","import":"/webgpu-os/kernel/storylets/StoryletEligibilityBridge.js","sourceHash":"517940d540da9243857cb0f197655560f1ad2b75d43a71efc8daf644e5c5681a","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/storylets/StoryletEligibilityBridge.js","title":"kernel/storylets/StoryletEligibilityBridge","summary":"StoryletEligibilityBridge.js — layers doctrine preconditions on top of StoryGraph's built-in cooldown/maxFires gating by COMPOSING them into a storylet config's canTrigger — no duplicate eligibility engine. Doctrine gates only ever NARROW eligibility (canTrigger && doctrine), never widen it. Doctrine fields: preconditions:      [(worldState) => boolean]  — all must pass allowedTools:       [string]  — worldState.requestedTool must be listed (if set) allowedResources:   [string]  — worldState.requestedResource must match a prefix (if set) capabilityRequired: string    — checked via kernel.permissions (RuleGraph)","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/storylets/StoryletEligibilityBridge.md","moduleTitle":"kernel/storylets/StoryletEligibilityBridge","source":"webgpu-os/kernel/storylets/StoryletEligibilityBridge.js","import":"/webgpu-os/kernel/storylets/StoryletEligibilityBridge.js","sourceHash":"517940d540da9243857cb0f197655560f1ad2b75d43a71efc8daf644e5c5681a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/storylets/StoryletEligibilityBridge.js#0000:StoryletEligibilityBridge","exportIndex":0,"name":"StoryletEligibilityBridge","kind":"class","signature":"class StoryletEligibilityBridge","summary":"StoryletEligibilityBridge.js — layers doctrine preconditions on top of StoryGraph's built-in cooldown/maxFires gating by COMPOSING them into a storylet config's canTrigger — no duplicate eligibility engine. Doctrine gates only ever NARROW eligibility (canTrigger && doctrine), never widen it. Doctrine fields: preconditions:      [(worldState) => boolean]  — all must pass allowedTools:       [string]  — worldState.requestedTool must be listed (if set) allowedResources:   [string]  — worldState.requestedResource must match a prefix (if set) capabilityRequired: string    — checked via kernel.permissions (RuleGraph)"}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/storylets/StoryletFailureHandler.md","moduleTitle":"kernel/storylets/StoryletFailureHandler","source":"webgpu-os/kernel/storylets/StoryletFailureHandler.js","import":"/webgpu-os/kernel/storylets/StoryletFailureHandler.js","sourceHash":"18e0e66abe64ffbda625fa3c6f451566beb7bdfd758db1fcb35bdc542cb3e43d","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/storylets/StoryletFailureHandler.js","title":"kernel/storylets/StoryletFailureHandler","summary":"StoryletFailureHandler.js — storylet-chain rollback: delegates to the generic time/RollbackEngine.js (the single Saga.js wrapper — forward + compensating actions, irreversible pivot) and adds storylet-specific logging + kernel eventing. If a step fails before the pivot, completed steps are compensated in reverse; past the pivot the failure is surfaced (FAILED_PIVOTED) for repair instead of silently undone.","exportCount":2}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/storylets/StoryletFailureHandler.md","moduleTitle":"kernel/storylets/StoryletFailureHandler","source":"webgpu-os/kernel/storylets/StoryletFailureHandler.js","import":"/webgpu-os/kernel/storylets/StoryletFailureHandler.js","sourceHash":"18e0e66abe64ffbda625fa3c6f451566beb7bdfd758db1fcb35bdc542cb3e43d","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/storylets/StoryletFailureHandler.js#0000:StoryletFailureHandler","exportIndex":0,"name":"StoryletFailureHandler","kind":"class","signature":"class StoryletFailureHandler","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/storylets/StoryletFailureHandler.md","moduleTitle":"kernel/storylets/StoryletFailureHandler","source":"webgpu-os/kernel/storylets/StoryletFailureHandler.js","import":"/webgpu-os/kernel/storylets/StoryletFailureHandler.js","sourceHash":"18e0e66abe64ffbda625fa3c6f451566beb7bdfd758db1fcb35bdc542cb3e43d","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/storylets/StoryletFailureHandler.js#0001:SAGA_STATUS","exportIndex":1,"name":"SAGA_STATUS","kind":"re-export","signature":"SAGA_STATUS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/storylets/StoryletRuntime.md","moduleTitle":"kernel/storylets/StoryletRuntime","source":"webgpu-os/kernel/storylets/StoryletRuntime.js","import":"/webgpu-os/kernel/storylets/StoryletRuntime.js","sourceHash":"42bd85e52ad5ffbdfa6d304b0f544f8de748f0d7a1cc28c557188f2832327673","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/storylets/StoryletRuntime.js","title":"kernel/storylets/StoryletRuntime","summary":"StoryletRuntime.js — thin facade constructing `new StoryGraph(adapter)` from engine/gameplay/narrative/StoryGraph.js; exposes register/registerAll/tick/ getAll. Forced execution is intentionally named as a trusted test/recovery operation so it is never advertised as a model-authored Storylet ability. Here \"worldState\" is AI task/goal state (an OS.ai() request's pipeline phase), not game state.","exportCount":2}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/storylets/StoryletRuntime.md","moduleTitle":"kernel/storylets/StoryletRuntime","source":"webgpu-os/kernel/storylets/StoryletRuntime.js","import":"/webgpu-os/kernel/storylets/StoryletRuntime.js","sourceHash":"42bd85e52ad5ffbdfa6d304b0f544f8de748f0d7a1cc28c557188f2832327673","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/storylets/StoryletRuntime.js#0000:StoryletRuntime","exportIndex":0,"name":"StoryletRuntime","kind":"class","signature":"class StoryletRuntime","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/storylets/StoryletRuntime.md","moduleTitle":"kernel/storylets/StoryletRuntime","source":"webgpu-os/kernel/storylets/StoryletRuntime.js","import":"/webgpu-os/kernel/storylets/StoryletRuntime.js","sourceHash":"42bd85e52ad5ffbdfa6d304b0f544f8de748f0d7a1cc28c557188f2832327673","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/storylets/StoryletRuntime.js#0001:createStorylet","exportIndex":1,"name":"createStorylet","kind":"re-export","signature":"createStorylet","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/storylets/StoryletTestRunner.md","moduleTitle":"kernel/storylets/StoryletTestRunner","source":"webgpu-os/kernel/storylets/StoryletTestRunner.js","import":"/webgpu-os/kernel/storylets/StoryletTestRunner.js","sourceHash":"409a523f2a267c4ca5fa0e0c6e60653ce3b6d3090388a36ef7121761db0ccd25","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/storylets/StoryletTestRunner.js","title":"kernel/storylets/StoryletTestRunner","summary":"StoryletTestRunner.js — the Phase 14 storylet test harness. Runs a storylet definition against fixture worldStates on an ISOLATED StoryletRuntime (never the live kernel.storylets graph) and reports trigger/execute outcomes. Also runs the canned adversarial suite (AdversarialFixtures): poisoned descriptors must fail sanitization, and hostile worldStates must be handled safely (rejected or refused — never silently obeyed).","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/storylets/StoryletTestRunner.md","moduleTitle":"kernel/storylets/StoryletTestRunner","source":"webgpu-os/kernel/storylets/StoryletTestRunner.js","import":"/webgpu-os/kernel/storylets/StoryletTestRunner.js","sourceHash":"409a523f2a267c4ca5fa0e0c6e60653ce3b6d3090388a36ef7121761db0ccd25","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/storylets/StoryletTestRunner.js#0000:StoryletTestRunner","exportIndex":0,"name":"StoryletTestRunner","kind":"class","signature":"class StoryletTestRunner","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/storylets/StoryletVersionManager.md","moduleTitle":"kernel/storylets/StoryletVersionManager","source":"webgpu-os/kernel/storylets/StoryletVersionManager.js","import":"/webgpu-os/kernel/storylets/StoryletVersionManager.js","sourceHash":"8f7d6fe3cb73dac35d71d25300844ab1be03a7ef64d2ee28091400698ef78ca2","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/storylets/StoryletVersionManager.js","title":"kernel/storylets/StoryletVersionManager","summary":"StoryletVersionManager.js — tracks versions of registered storylet definitions so a definition can be upgraded in place and rolled back if the new version misbehaves. Purely in-memory version history keyed by storylet id; the runtime re-registers whichever config version is current.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/storylets/StoryletVersionManager.md","moduleTitle":"kernel/storylets/StoryletVersionManager","source":"webgpu-os/kernel/storylets/StoryletVersionManager.js","import":"/webgpu-os/kernel/storylets/StoryletVersionManager.js","sourceHash":"8f7d6fe3cb73dac35d71d25300844ab1be03a7ef64d2ee28091400698ef78ca2","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/storylets/StoryletVersionManager.js#0000:StoryletVersionManager","exportIndex":0,"name":"StoryletVersionManager","kind":"class","signature":"class StoryletVersionManager","summary":"StoryletVersionManager.js — tracks versions of registered storylet definitions so a definition can be upgraded in place and rolled back if the new version misbehaves. Purely in-memory version history keyed by storylet id; the runtime re-registers whichever config version is current."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/terminal/TerminalCommandContract.md","moduleTitle":"kernel/terminal/TerminalCommandContract","source":"webgpu-os/kernel/terminal/TerminalCommandContract.js","import":"/webgpu-os/kernel/terminal/TerminalCommandContract.js","sourceHash":"64dfde6e50b4767e5c00729bca2191413577868a46eead6e8c5589a6b3b7f352","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/terminal/TerminalCommandContract.js","title":"kernel/terminal/TerminalCommandContract","summary":"Canonical WebGPU OS terminal grammar shared by the interactive Terminal app and the read-only AI tool bridge. This is intentionally not a host shell.","exportCount":8}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/terminal/TerminalCommandContract.md","moduleTitle":"kernel/terminal/TerminalCommandContract","source":"webgpu-os/kernel/terminal/TerminalCommandContract.js","import":"/webgpu-os/kernel/terminal/TerminalCommandContract.js","sourceHash":"64dfde6e50b4767e5c00729bca2191413577868a46eead6e8c5589a6b3b7f352","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/terminal/TerminalCommandContract.js#0000:parseWebGpuOsTerminalCommand","exportIndex":0,"name":"parseWebGpuOsTerminalCommand","kind":"function","signature":"parseWebGpuOsTerminalCommand(raw, { surface = 'interactive' } = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/terminal/TerminalCommandContract.md","moduleTitle":"kernel/terminal/TerminalCommandContract","source":"webgpu-os/kernel/terminal/TerminalCommandContract.js","import":"/webgpu-os/kernel/terminal/TerminalCommandContract.js","sourceHash":"64dfde6e50b4767e5c00729bca2191413577868a46eead6e8c5589a6b3b7f352","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/terminal/TerminalCommandContract.js#0001:formatWebGpuOsTerminalHelp","exportIndex":1,"name":"formatWebGpuOsTerminalHelp","kind":"function","signature":"formatWebGpuOsTerminalHelp({ surface = 'interactive', json = false } = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/terminal/TerminalCommandContract.md","moduleTitle":"kernel/terminal/TerminalCommandContract","source":"webgpu-os/kernel/terminal/TerminalCommandContract.js","import":"/webgpu-os/kernel/terminal/TerminalCommandContract.js","sourceHash":"64dfde6e50b4767e5c00729bca2191413577868a46eead6e8c5589a6b3b7f352","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/terminal/TerminalCommandContract.js#0002:terminalVfsPath","exportIndex":2,"name":"terminalVfsPath","kind":"function","signature":"terminalVfsPath(value)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/terminal/TerminalCommandContract.md","moduleTitle":"kernel/terminal/TerminalCommandContract","source":"webgpu-os/kernel/terminal/TerminalCommandContract.js","import":"/webgpu-os/kernel/terminal/TerminalCommandContract.js","sourceHash":"64dfde6e50b4767e5c00729bca2191413577868a46eead6e8c5589a6b3b7f352","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/terminal/TerminalCommandContract.js#0003:terminalCommandError","exportIndex":3,"name":"terminalCommandError","kind":"function","signature":"terminalCommandError(code, message, suggestion = '')","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/terminal/TerminalCommandContract.md","moduleTitle":"kernel/terminal/TerminalCommandContract","source":"webgpu-os/kernel/terminal/TerminalCommandContract.js","import":"/webgpu-os/kernel/terminal/TerminalCommandContract.js","sourceHash":"64dfde6e50b4767e5c00729bca2191413577868a46eead6e8c5589a6b3b7f352","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/terminal/TerminalCommandContract.js#0004:TERMINAL_MUTATION_COMMANDS","exportIndex":4,"name":"TERMINAL_MUTATION_COMMANDS","kind":"constant","signature":"TERMINAL_MUTATION_COMMANDS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/terminal/TerminalCommandContract.md","moduleTitle":"kernel/terminal/TerminalCommandContract","source":"webgpu-os/kernel/terminal/TerminalCommandContract.js","import":"/webgpu-os/kernel/terminal/TerminalCommandContract.js","sourceHash":"64dfde6e50b4767e5c00729bca2191413577868a46eead6e8c5589a6b3b7f352","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/terminal/TerminalCommandContract.js#0005:TERMINAL_HOST_COMMANDS","exportIndex":5,"name":"TERMINAL_HOST_COMMANDS","kind":"constant","signature":"TERMINAL_HOST_COMMANDS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/terminal/TerminalCommandContract.md","moduleTitle":"kernel/terminal/TerminalCommandContract","source":"webgpu-os/kernel/terminal/TerminalCommandContract.js","import":"/webgpu-os/kernel/terminal/TerminalCommandContract.js","sourceHash":"64dfde6e50b4767e5c00729bca2191413577868a46eead6e8c5589a6b3b7f352","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/terminal/TerminalCommandContract.js#0006:WEBGPU_OS_TERMINAL_COMMANDS","exportIndex":6,"name":"WEBGPU_OS_TERMINAL_COMMANDS","kind":"constant","signature":"WEBGPU_OS_TERMINAL_COMMANDS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/terminal/TerminalCommandContract.md","moduleTitle":"kernel/terminal/TerminalCommandContract","source":"webgpu-os/kernel/terminal/TerminalCommandContract.js","import":"/webgpu-os/kernel/terminal/TerminalCommandContract.js","sourceHash":"64dfde6e50b4767e5c00729bca2191413577868a46eead6e8c5589a6b3b7f352","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/terminal/TerminalCommandContract.js#0007:WEBGPU_OS_TOOL_TERMINAL_HELP","exportIndex":7,"name":"WEBGPU_OS_TOOL_TERMINAL_HELP","kind":"constant","signature":"WEBGPU_OS_TOOL_TERMINAL_HELP","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/time/CausalClock.md","moduleTitle":"kernel/time/CausalClock","source":"webgpu-os/kernel/time/CausalClock.js","import":"/webgpu-os/kernel/time/CausalClock.js","sourceHash":"d44364f6c3f10ba71c27110d8d2e350281bc582e5c9bd2d0a0fc9b31d3bde96c","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/time/CausalClock.js","title":"kernel/time/CausalClock","summary":"CausalClock.js — thin wrapper over engine/state/causal/HLC.js (Hybrid Logical Clock). Orders AI task events causally while staying readable as wall time. Per CSE rule 11: a timestamp NEVER establishes authority — the commit gate decides truth; this only orders.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/time/CausalClock.md","moduleTitle":"kernel/time/CausalClock","source":"webgpu-os/kernel/time/CausalClock.js","import":"/webgpu-os/kernel/time/CausalClock.js","sourceHash":"d44364f6c3f10ba71c27110d8d2e350281bc582e5c9bd2d0a0fc9b31d3bde96c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/time/CausalClock.js#0000:CausalClock","exportIndex":0,"name":"CausalClock","kind":"class","signature":"class CausalClock","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/time/CheckpointManager.md","moduleTitle":"kernel/time/CheckpointManager","source":"webgpu-os/kernel/time/CheckpointManager.js","import":"/webgpu-os/kernel/time/CheckpointManager.js","sourceHash":"561d41e5b70f1cd5b7a5033fa9053257289a14e94900ed9765f5fb6bbb469af0","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/time/CheckpointManager.js","title":"kernel/time/CheckpointManager","summary":"CheckpointManager.js — wraps engine/state/integrity/Checkpoint.js (makeCheckpoint/verifyCheckpoint) over the shared OS event log. Checkpoints summarize history without pretending it never existed: each links to its predecessor and pins the event-log head + state root at that point.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/time/CheckpointManager.md","moduleTitle":"kernel/time/CheckpointManager","source":"webgpu-os/kernel/time/CheckpointManager.js","import":"/webgpu-os/kernel/time/CheckpointManager.js","sourceHash":"561d41e5b70f1cd5b7a5033fa9053257289a14e94900ed9765f5fb6bbb469af0","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/time/CheckpointManager.js#0000:CheckpointManager","exportIndex":0,"name":"CheckpointManager","kind":"class","signature":"class CheckpointManager","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/time/CooldownManager.md","moduleTitle":"kernel/time/CooldownManager","source":"webgpu-os/kernel/time/CooldownManager.js","import":"/webgpu-os/kernel/time/CooldownManager.js","sourceHash":"e5ff7fc85a92faef855cab3ab0b79b0db6d5763e2c99c42b03194b894ccebc24","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/time/CooldownManager.js","title":"kernel/time/CooldownManager","summary":"CooldownManager.js — wraps engine/state/consistency/Reservation.js (ReservationManager over a USORegistry + BoundedCounterEscrow). Cooldowns are reservations: reserving a scarce AI resource (model budget, tool slot) creates a single-use output that is consumed on commit or released on expiry — it can never be honored twice. Escrows divide a budget among holders for coordination-free local spending.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/time/CooldownManager.md","moduleTitle":"kernel/time/CooldownManager","source":"webgpu-os/kernel/time/CooldownManager.js","import":"/webgpu-os/kernel/time/CooldownManager.js","sourceHash":"e5ff7fc85a92faef855cab3ab0b79b0db6d5763e2c99c42b03194b894ccebc24","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/time/CooldownManager.js#0000:CooldownManager","exportIndex":0,"name":"CooldownManager","kind":"class","signature":"class CooldownManager","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/time/DependencyScheduler.md","moduleTitle":"kernel/time/DependencyScheduler","source":"webgpu-os/kernel/time/DependencyScheduler.js","import":"/webgpu-os/kernel/time/DependencyScheduler.js","sourceHash":"831af535b3b2ebfe00f1eaf79d112d6c55f8780b9876ceeac682fca06d02ec5a","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/time/DependencyScheduler.js","title":"kernel/time/DependencyScheduler","summary":"DependencyScheduler.js — dependency-ordered task readiness (Kahn-style). Tracks tasks with dependency edges and answers \"what can run now?\": a task is ready once every dependency has completed. Cycles are rejected at add time so a plan can never deadlock on itself.","exportCount":2}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/time/DependencyScheduler.md","moduleTitle":"kernel/time/DependencyScheduler","source":"webgpu-os/kernel/time/DependencyScheduler.js","import":"/webgpu-os/kernel/time/DependencyScheduler.js","sourceHash":"831af535b3b2ebfe00f1eaf79d112d6c55f8780b9876ceeac682fca06d02ec5a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/time/DependencyScheduler.js#0000:DependencyScheduler","exportIndex":0,"name":"DependencyScheduler","kind":"class","signature":"class DependencyScheduler","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/time/DependencyScheduler.md","moduleTitle":"kernel/time/DependencyScheduler","source":"webgpu-os/kernel/time/DependencyScheduler.js","import":"/webgpu-os/kernel/time/DependencyScheduler.js","sourceHash":"831af535b3b2ebfe00f1eaf79d112d6c55f8780b9876ceeac682fca06d02ec5a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/time/DependencyScheduler.js#0001:TASK_STATE","exportIndex":1,"name":"TASK_STATE","kind":"re-export","signature":"TASK_STATE","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/time/ExpirationManager.md","moduleTitle":"kernel/time/ExpirationManager","source":"webgpu-os/kernel/time/ExpirationManager.js","import":"/webgpu-os/kernel/time/ExpirationManager.js","sourceHash":"71fb7d575bc29d00ef0a1e918edf1df56196b40f70f2831a8dce7183ecbbd435","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/time/ExpirationManager.js","title":"kernel/time/ExpirationManager","summary":"ExpirationManager.js — TTL tracking for short-lived AI artifacts (capabilities, elicitations, pending approvals). Sweep-based (no timers per item): callers invoke sweep() periodically or before authorization checks; expired items run their onExpire callback exactly once and are removed.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/time/ExpirationManager.md","moduleTitle":"kernel/time/ExpirationManager","source":"webgpu-os/kernel/time/ExpirationManager.js","import":"/webgpu-os/kernel/time/ExpirationManager.js","sourceHash":"71fb7d575bc29d00ef0a1e918edf1df56196b40f70f2831a8dce7183ecbbd435","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/time/ExpirationManager.js#0000:ExpirationManager","exportIndex":0,"name":"ExpirationManager","kind":"class","signature":"class ExpirationManager","summary":"ExpirationManager.js — TTL tracking for short-lived AI artifacts (capabilities, elicitations, pending approvals). Sweep-based (no timers per item): callers invoke sweep() periodically or before authorization checks; expired items run their onExpire callback exactly once and are removed."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/time/FactConflictResolver.md","moduleTitle":"kernel/time/FactConflictResolver","source":"webgpu-os/kernel/time/FactConflictResolver.js","import":"/webgpu-os/kernel/time/FactConflictResolver.js","sourceHash":"ae8abda64161f0214974f9751a9db4e834030bc38053bba3e1b38b31c82c167f","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/time/FactConflictResolver.js","title":"kernel/time/FactConflictResolver","summary":"FactConflictResolver.js — detects and resolves conflicting live facts on the monotonic FactStore. Detection reuses the CSE constraint helpers (engine/state/facts/Constraints.js: validateFacts/atMostOne/ mutuallyExclusive) — no parallel constraint engine. Resolution tombstones losers via a caller-supplied preference; a constraint never repairs on its own (CSE law), so resolution here is an explicit, logged act.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/time/FactConflictResolver.md","moduleTitle":"kernel/time/FactConflictResolver","source":"webgpu-os/kernel/time/FactConflictResolver.js","import":"/webgpu-os/kernel/time/FactConflictResolver.js","sourceHash":"ae8abda64161f0214974f9751a9db4e834030bc38053bba3e1b38b31c82c167f","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/time/FactConflictResolver.js#0000:FactConflictResolver","exportIndex":0,"name":"FactConflictResolver","kind":"class","signature":"class FactConflictResolver","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/time/FactInvalidationEngine.md","moduleTitle":"kernel/time/FactInvalidationEngine","source":"webgpu-os/kernel/time/FactInvalidationEngine.js","import":"/webgpu-os/kernel/time/FactInvalidationEngine.js","sourceHash":"1b714bc3e897679d82144aabea538b625c61847b6532534c522c14a3f0bbc33d","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/time/FactInvalidationEngine.js","title":"kernel/time/FactInvalidationEngine","summary":"FactInvalidationEngine.js — namespaced `invalidatedBy` rules layered on the monotonic FactStore (engine/state/facts): adding a fact whose predicate has invalidation rules TOMBSTONES (never deletes) currently-live facts with the listed predicates. e.g. rule('planReady', ['planDraft']) — a new planReady fact revokes any live planDraft facts. History stays intact.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/time/FactInvalidationEngine.md","moduleTitle":"kernel/time/FactInvalidationEngine","source":"webgpu-os/kernel/time/FactInvalidationEngine.js","import":"/webgpu-os/kernel/time/FactInvalidationEngine.js","sourceHash":"1b714bc3e897679d82144aabea538b625c61847b6532534c522c14a3f0bbc33d","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/time/FactInvalidationEngine.js#0000:FactInvalidationEngine","exportIndex":0,"name":"FactInvalidationEngine","kind":"class","signature":"class FactInvalidationEngine","summary":"FactInvalidationEngine.js — namespaced `invalidatedBy` rules layered on the monotonic FactStore (engine/state/facts): adding a fact whose predicate has invalidation rules TOMBSTONES (never deletes) currently-live facts with the listed predicates. e.g. rule('planReady', ['planDraft']) — a new planReady fact revokes any live planDraft facts. History stays intact."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/time/IdempotencyManager.md","moduleTitle":"kernel/time/IdempotencyManager","source":"webgpu-os/kernel/time/IdempotencyManager.js","import":"/webgpu-os/kernel/time/IdempotencyManager.js","sourceHash":"9fe1078567f6dd73e3a0f6a40a330287b1862e98a57c6cc5a200e2f73553e4ab","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/time/IdempotencyManager.js","title":"kernel/time/IdempotencyManager","summary":"IdempotencyManager.js — bounded process-local replay for settled tool and storylet results. Concurrent callers for one key share a single execution. Durable mutation replay safety is provided by the task-graph dispatch fence, not by this TTL/LRU cache.","exportCount":6}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/time/IdempotencyManager.md","moduleTitle":"kernel/time/IdempotencyManager","source":"webgpu-os/kernel/time/IdempotencyManager.js","import":"/webgpu-os/kernel/time/IdempotencyManager.js","sourceHash":"9fe1078567f6dd73e3a0f6a40a330287b1862e98a57c6cc5a200e2f73553e4ab","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/time/IdempotencyManager.js#0000:IdempotencyCapacityError","exportIndex":0,"name":"IdempotencyCapacityError","kind":"class","signature":"class IdempotencyCapacityError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/time/IdempotencyManager.md","moduleTitle":"kernel/time/IdempotencyManager","source":"webgpu-os/kernel/time/IdempotencyManager.js","import":"/webgpu-os/kernel/time/IdempotencyManager.js","sourceHash":"9fe1078567f6dd73e3a0f6a40a330287b1862e98a57c6cc5a200e2f73553e4ab","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/time/IdempotencyManager.js#0001:IdempotencyManager","exportIndex":1,"name":"IdempotencyManager","kind":"class","signature":"class IdempotencyManager","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/time/IdempotencyManager.md","moduleTitle":"kernel/time/IdempotencyManager","source":"webgpu-os/kernel/time/IdempotencyManager.js","import":"/webgpu-os/kernel/time/IdempotencyManager.js","sourceHash":"9fe1078567f6dd73e3a0f6a40a330287b1862e98a57c6cc5a200e2f73553e4ab","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/time/IdempotencyManager.js#0002:IDEMPOTENCY_TOOL_REPLAY_MAX_ENTRIES","exportIndex":2,"name":"IDEMPOTENCY_TOOL_REPLAY_MAX_ENTRIES","kind":"constant","signature":"IDEMPOTENCY_TOOL_REPLAY_MAX_ENTRIES","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/time/IdempotencyManager.md","moduleTitle":"kernel/time/IdempotencyManager","source":"webgpu-os/kernel/time/IdempotencyManager.js","import":"/webgpu-os/kernel/time/IdempotencyManager.js","sourceHash":"9fe1078567f6dd73e3a0f6a40a330287b1862e98a57c6cc5a200e2f73553e4ab","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/time/IdempotencyManager.js#0003:IDEMPOTENCY_TOOL_REPLAY_TTL_MS","exportIndex":3,"name":"IDEMPOTENCY_TOOL_REPLAY_TTL_MS","kind":"constant","signature":"IDEMPOTENCY_TOOL_REPLAY_TTL_MS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/time/IdempotencyManager.md","moduleTitle":"kernel/time/IdempotencyManager","source":"webgpu-os/kernel/time/IdempotencyManager.js","import":"/webgpu-os/kernel/time/IdempotencyManager.js","sourceHash":"9fe1078567f6dd73e3a0f6a40a330287b1862e98a57c6cc5a200e2f73553e4ab","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/time/IdempotencyManager.js#0004:IDEMPOTENCY_TOOL_REPLAY_MAX_BYTES","exportIndex":4,"name":"IDEMPOTENCY_TOOL_REPLAY_MAX_BYTES","kind":"constant","signature":"IDEMPOTENCY_TOOL_REPLAY_MAX_BYTES","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/time/IdempotencyManager.md","moduleTitle":"kernel/time/IdempotencyManager","source":"webgpu-os/kernel/time/IdempotencyManager.js","import":"/webgpu-os/kernel/time/IdempotencyManager.js","sourceHash":"9fe1078567f6dd73e3a0f6a40a330287b1862e98a57c6cc5a200e2f73553e4ab","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/time/IdempotencyManager.js#0005:IDEMPOTENCY_MAX_IN_FLIGHT","exportIndex":5,"name":"IDEMPOTENCY_MAX_IN_FLIGHT","kind":"constant","signature":"IDEMPOTENCY_MAX_IN_FLIGHT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/time/ParallelTaskScheduler.md","moduleTitle":"kernel/time/ParallelTaskScheduler","source":"webgpu-os/kernel/time/ParallelTaskScheduler.js","import":"/webgpu-os/kernel/time/ParallelTaskScheduler.js","sourceHash":"089d4cd50305415483fd75c027160c9230b8bf960581c872da2eddc0f09fc411","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/time/ParallelTaskScheduler.js","title":"kernel/time/ParallelTaskScheduler","summary":"ParallelTaskScheduler.js — executes async tasks respecting dependency order (via DependencyScheduler) with a bounded concurrency limit. A failed task marks its transitive dependents blocked rather than aborting unrelated branches.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/time/ParallelTaskScheduler.md","moduleTitle":"kernel/time/ParallelTaskScheduler","source":"webgpu-os/kernel/time/ParallelTaskScheduler.js","import":"/webgpu-os/kernel/time/ParallelTaskScheduler.js","sourceHash":"089d4cd50305415483fd75c027160c9230b8bf960581c872da2eddc0f09fc411","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/time/ParallelTaskScheduler.js#0000:ParallelTaskScheduler","exportIndex":0,"name":"ParallelTaskScheduler","kind":"class","signature":"class ParallelTaskScheduler","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/time/ReplayEngine.md","moduleTitle":"kernel/time/ReplayEngine","source":"webgpu-os/kernel/time/ReplayEngine.js","import":"/webgpu-os/kernel/time/ReplayEngine.js","sourceHash":"346200991359ab800acca5cc0885dd15ba11651bce20a9403fdb3adc9c7cf642","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/time/ReplayEngine.js","title":"kernel/time/ReplayEngine","summary":"ReplayEngine.js — rebuild materialized state by folding the hash-chained EventLog through a reducer (event sourcing), optionally starting from a CheckpointManager checkpoint. The chain is verified BEFORE replay: tampered history refuses to replay rather than materializing a lie.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/time/ReplayEngine.md","moduleTitle":"kernel/time/ReplayEngine","source":"webgpu-os/kernel/time/ReplayEngine.js","import":"/webgpu-os/kernel/time/ReplayEngine.js","sourceHash":"346200991359ab800acca5cc0885dd15ba11651bce20a9403fdb3adc9c7cf642","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/time/ReplayEngine.js#0000:ReplayEngine","exportIndex":0,"name":"ReplayEngine","kind":"class","signature":"class ReplayEngine","summary":"ReplayEngine.js — rebuild materialized state by folding the hash-chained EventLog through a reducer (event sourcing), optionally starting from a CheckpointManager checkpoint. The chain is verified BEFORE replay: tampered history refuses to replay rather than materializing a lie."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/time/RetryManager.md","moduleTitle":"kernel/time/RetryManager","source":"webgpu-os/kernel/time/RetryManager.js","import":"/webgpu-os/kernel/time/RetryManager.js","sourceHash":"61afadd91dfd4b73882e011b95b2e2154b8060cab66568401ee7ca1e875cb141","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/time/RetryManager.js","title":"kernel/time/RetryManager","summary":"RetryManager.js — bounded exponential-backoff retry with jitter for transient AI/tool failures. Retries are attempts, not new intents: pair with IdempotencyManager keys so a retried effect is never applied twice.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/time/RetryManager.md","moduleTitle":"kernel/time/RetryManager","source":"webgpu-os/kernel/time/RetryManager.js","import":"/webgpu-os/kernel/time/RetryManager.js","sourceHash":"61afadd91dfd4b73882e011b95b2e2154b8060cab66568401ee7ca1e875cb141","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/time/RetryManager.js#0000:RetryManager","exportIndex":0,"name":"RetryManager","kind":"class","signature":"class RetryManager","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/time/RollbackEngine.md","moduleTitle":"kernel/time/RollbackEngine","source":"webgpu-os/kernel/time/RollbackEngine.js","import":"/webgpu-os/kernel/time/RollbackEngine.js","sourceHash":"40a7c95928f0dcc540104ff1e8df304cc850fd2fe8b8a891cd56dc462c701c68","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/time/RollbackEngine.js","title":"kernel/time/RollbackEngine","summary":"RollbackEngine.js — the generic compensation runner: wraps engine/state/workflow/Saga.js (forward + compensating actions, irreversible pivot). Domain layers (e.g. storylets/StoryletFailureHandler.js) build on this rather than re-wrapping Saga themselves.","exportCount":2}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/time/RollbackEngine.md","moduleTitle":"kernel/time/RollbackEngine","source":"webgpu-os/kernel/time/RollbackEngine.js","import":"/webgpu-os/kernel/time/RollbackEngine.js","sourceHash":"40a7c95928f0dcc540104ff1e8df304cc850fd2fe8b8a891cd56dc462c701c68","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/time/RollbackEngine.js#0000:RollbackEngine","exportIndex":0,"name":"RollbackEngine","kind":"class","signature":"class RollbackEngine","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/time/RollbackEngine.md","moduleTitle":"kernel/time/RollbackEngine","source":"webgpu-os/kernel/time/RollbackEngine.js","import":"/webgpu-os/kernel/time/RollbackEngine.js","sourceHash":"40a7c95928f0dcc540104ff1e8df304cc850fd2fe8b8a891cd56dc462c701c68","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/time/RollbackEngine.js#0001:SAGA_STATUS","exportIndex":1,"name":"SAGA_STATUS","kind":"re-export","signature":"SAGA_STATUS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/time/TickClock.md","moduleTitle":"kernel/time/TickClock","source":"webgpu-os/kernel/time/TickClock.js","import":"/webgpu-os/kernel/time/TickClock.js","sourceHash":"93b2c2f609d0192057c9fbcfd6bb591d7df617fd8053296f55798373ba581f51","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/time/TickClock.js","title":"kernel/time/TickClock","summary":"TickClock.js — thin wrapper over engine/state/time/TimeModel.js (TIME_MODES/createTimeSource). Manages NAMED time sources: an AI task only \"has time\" if it subscribes to a source, and each source advances per its mode (causal steps, oscillator dt, irreversible change, observation, …) — never a global `time++`.","exportCount":2}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/time/TickClock.md","moduleTitle":"kernel/time/TickClock","source":"webgpu-os/kernel/time/TickClock.js","import":"/webgpu-os/kernel/time/TickClock.js","sourceHash":"93b2c2f609d0192057c9fbcfd6bb591d7df617fd8053296f55798373ba581f51","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/time/TickClock.js#0000:TickClock","exportIndex":0,"name":"TickClock","kind":"class","signature":"class TickClock","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/time/TickClock.md","moduleTitle":"kernel/time/TickClock","source":"webgpu-os/kernel/time/TickClock.js","import":"/webgpu-os/kernel/time/TickClock.js","sourceHash":"93b2c2f609d0192057c9fbcfd6bb591d7df617fd8053296f55798373ba581f51","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/time/TickClock.js#0001:TIME_MODES","exportIndex":1,"name":"TIME_MODES","kind":"re-export","signature":"TIME_MODES","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/time/TimeAuthority.md","moduleTitle":"kernel/time/TimeAuthority","source":"webgpu-os/kernel/time/TimeAuthority.js","import":"/webgpu-os/kernel/time/TimeAuthority.js","sourceHash":"c08909ec0301c6544f48dda72f1561ee04a8e6fffd66b8f1b5424d851b5ef752","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/time/TimeAuthority.js","title":"kernel/time/TimeAuthority","summary":"Disciplined civil-time authority. Network samples are transient observations. A consensus decision is accepted only after collapsing endpoints into independent operator groups, finding a majority interval, and combining the surviving offsets by uncertainty. The CSE records semantic transitions; it never treats timestamps as authority.","exportCount":6}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/time/TimeAuthority.md","moduleTitle":"kernel/time/TimeAuthority","source":"webgpu-os/kernel/time/TimeAuthority.js","import":"/webgpu-os/kernel/time/TimeAuthority.js","sourceHash":"c08909ec0301c6544f48dda72f1561ee04a8e6fffd66b8f1b5424d851b5ef752","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/time/TimeAuthority.js#0000:TimeAuthority","exportIndex":0,"name":"TimeAuthority","kind":"class","signature":"class TimeAuthority","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/time/TimeAuthority.md","moduleTitle":"kernel/time/TimeAuthority","source":"webgpu-os/kernel/time/TimeAuthority.js","import":"/webgpu-os/kernel/time/TimeAuthority.js","sourceHash":"c08909ec0301c6544f48dda72f1561ee04a8e6fffd66b8f1b5424d851b5ef752","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/time/TimeAuthority.js#0001:timeSourceCatalog","exportIndex":1,"name":"timeSourceCatalog","kind":"function","signature":"timeSourceCatalog()","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/time/TimeAuthority.md","moduleTitle":"kernel/time/TimeAuthority","source":"webgpu-os/kernel/time/TimeAuthority.js","import":"/webgpu-os/kernel/time/TimeAuthority.js","sourceHash":"c08909ec0301c6544f48dda72f1561ee04a8e6fffd66b8f1b5424d851b5ef752","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/time/TimeAuthority.js#0002:defaultSourceIds","exportIndex":2,"name":"defaultSourceIds","kind":"function","signature":"defaultSourceIds(mode = TIME_AUTHORITY_MODES.UTC_CONSENSUS)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/time/TimeAuthority.md","moduleTitle":"kernel/time/TimeAuthority","source":"webgpu-os/kernel/time/TimeAuthority.js","import":"/webgpu-os/kernel/time/TimeAuthority.js","sourceHash":"c08909ec0301c6544f48dda72f1561ee04a8e6fffd66b8f1b5424d851b5ef752","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/time/TimeAuthority.js#0003:normalizeTimeAuthorityConfig","exportIndex":3,"name":"normalizeTimeAuthorityConfig","kind":"function","signature":"normalizeTimeAuthorityConfig(input = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/time/TimeAuthority.md","moduleTitle":"kernel/time/TimeAuthority","source":"webgpu-os/kernel/time/TimeAuthority.js","import":"/webgpu-os/kernel/time/TimeAuthority.js","sourceHash":"c08909ec0301c6544f48dda72f1561ee04a8e6fffd66b8f1b5424d851b5ef752","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/time/TimeAuthority.js#0004:selectTimeConsensus","exportIndex":4,"name":"selectTimeConsensus","kind":"function","signature":"selectTimeConsensus(samples, options = {})","summary":"Select one robust time estimate from already-filtered source samples. Each operator gets at most one vote even when it exposes many hostnames."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/time/TimeAuthority.md","moduleTitle":"kernel/time/TimeAuthority","source":"webgpu-os/kernel/time/TimeAuthority.js","import":"/webgpu-os/kernel/time/TimeAuthority.js","sourceHash":"c08909ec0301c6544f48dda72f1561ee04a8e6fffd66b8f1b5424d851b5ef752","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/time/TimeAuthority.js#0005:TIME_AUTHORITY_MODES","exportIndex":5,"name":"TIME_AUTHORITY_MODES","kind":"constant","signature":"TIME_AUTHORITY_MODES","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/time/TimeEngine.md","moduleTitle":"kernel/time/TimeEngine","source":"webgpu-os/kernel/time/TimeEngine.js","import":"/webgpu-os/kernel/time/TimeEngine.js","sourceHash":"aecaa40887efa9c0b544c2598642b645ab0bd031b740d16a1a08b4a14cc94d80","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/time/TimeEngine.js","title":"kernel/time/TimeEngine","summary":"TimeEngine.js — Phase 7 facade (kernel.timeEngine) composing the Time Engine's CSE wrappers around ONE shared, hash-chained EventLog: authority   TimeAuthority (NTP consensus + slew) — disciplined physical time causal      CausalClock (HLC)                    — causal ordering ticks       TickClock (TimeModel sources)        — per-mode progression eventLog    engine/state EventLog                — the single OS AI log (Phase 9's AuditLog views the same log) timeline    TimelineExporter                     — tamper-evident export checkpoints CheckpointManager                    — compaction + restore replay      ReplayEngine                         — event-sourced rebuild idempotency IdempotencyManager                   — at-most-once effects cooldowns   CooldownManager                      — reservations + escrow rollback    RollbackEngine (Saga)                — compensation scheduler   Dependency/ParallelTaskScheduler     — ordered execution retry       RetryManager                         — bounded backoff expiry      ExpirationManager                    — TTL sweep facts       engine/state FactStore (direct reuse — no FactRegistry) invalidation/conflicts — rules layered on the monotonic FactStore","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/time/TimeEngine.md","moduleTitle":"kernel/time/TimeEngine","source":"webgpu-os/kernel/time/TimeEngine.js","import":"/webgpu-os/kernel/time/TimeEngine.js","sourceHash":"aecaa40887efa9c0b544c2598642b645ab0bd031b740d16a1a08b4a14cc94d80","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/time/TimeEngine.js#0000:TimeEngine","exportIndex":0,"name":"TimeEngine","kind":"class","signature":"class TimeEngine","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/time/TimelineExporter.md","moduleTitle":"kernel/time/TimelineExporter","source":"webgpu-os/kernel/time/TimelineExporter.js","import":"/webgpu-os/kernel/time/TimelineExporter.js","sourceHash":"5cacb657222f1fa713e9cc6e3c17befc9caeb4b5b8adb27ef9e985f17dcfd596","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/time/TimelineExporter.js","title":"kernel/time/TimelineExporter","summary":"TimelineExporter.js — export view over engine/state/integrity/EventLog.js (append-only, hash-chained). Filters + serializes a range of the SHARED OS event log (the same log Phase 9's AuditLog views — one log, not two) with the chain verification result attached, so an exported timeline is tamper-evident.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/time/TimelineExporter.md","moduleTitle":"kernel/time/TimelineExporter","source":"webgpu-os/kernel/time/TimelineExporter.js","import":"/webgpu-os/kernel/time/TimelineExporter.js","sourceHash":"5cacb657222f1fa713e9cc6e3c17befc9caeb4b5b8adb27ef9e985f17dcfd596","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/time/TimelineExporter.js#0000:TimelineExporter","exportIndex":0,"name":"TimelineExporter","kind":"class","signature":"class TimelineExporter","summary":"TimelineExporter.js — export view over engine/state/integrity/EventLog.js (append-only, hash-chained). Filters + serializes a range of the SHARED OS event log (the same log Phase 9's AuditLog views — one log, not two) with the chain verification result attached, so an exported timeline is tamper-evident."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/tools/CapabilityAttenuator.md","moduleTitle":"kernel/tools/CapabilityAttenuator","source":"webgpu-os/kernel/tools/CapabilityAttenuator.js","import":"/webgpu-os/kernel/tools/CapabilityAttenuator.js","sourceHash":"efdeb461e29eadad0ee28e0383487012d32ac335ade58bea80d2d8e79d29e74d","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/tools/CapabilityAttenuator.js","title":"kernel/tools/CapabilityAttenuator","summary":"CapabilityAttenuator.js — thin wrapper over engine/state Capability.attenuate() for narrowing a capability before handing it to a single tool call. Never widens a capability (attenuate() itself enforces this).","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/tools/CapabilityAttenuator.md","moduleTitle":"kernel/tools/CapabilityAttenuator","source":"webgpu-os/kernel/tools/CapabilityAttenuator.js","import":"/webgpu-os/kernel/tools/CapabilityAttenuator.js","sourceHash":"efdeb461e29eadad0ee28e0383487012d32ac335ade58bea80d2d8e79d29e74d","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/tools/CapabilityAttenuator.js#0000:CapabilityAttenuator","exportIndex":0,"name":"CapabilityAttenuator","kind":"class","signature":"class CapabilityAttenuator","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/tools/ContextTaintTracker.md","moduleTitle":"kernel/tools/ContextTaintTracker","source":"webgpu-os/kernel/tools/ContextTaintTracker.js","import":"/webgpu-os/kernel/tools/ContextTaintTracker.js","sourceHash":"251bb2e48700fff5d027d2abd317a507c489807b8a0f75b98ab0c895fb946ec1","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/tools/ContextTaintTracker.js","title":"kernel/tools/ContextTaintTracker","summary":"ContextTaintTracker.js — tracks which OS.ai() request contexts have absorbed untrusted (tool/webpage/model) content, so prompt assembly can keep the CSE prompt-injection boundary visible downstream instead of silently blending untrusted text into \"instructions\".","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/tools/ContextTaintTracker.md","moduleTitle":"kernel/tools/ContextTaintTracker","source":"webgpu-os/kernel/tools/ContextTaintTracker.js","import":"/webgpu-os/kernel/tools/ContextTaintTracker.js","sourceHash":"251bb2e48700fff5d027d2abd317a507c489807b8a0f75b98ab0c895fb946ec1","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/tools/ContextTaintTracker.js#0000:ContextTaintTracker","exportIndex":0,"name":"ContextTaintTracker","kind":"class","signature":"class ContextTaintTracker","summary":"ContextTaintTracker.js — tracks which OS.ai() request contexts have absorbed untrusted (tool/webpage/model) content, so prompt assembly can keep the CSE prompt-injection boundary visible downstream instead of silently blending untrusted text into \"instructions\"."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/tools/HiddenParameterDetector.md","moduleTitle":"kernel/tools/HiddenParameterDetector","source":"webgpu-os/kernel/tools/HiddenParameterDetector.js","import":"/webgpu-os/kernel/tools/HiddenParameterDetector.js","sourceHash":"2f11f5f8d5e86ce58af5f170d374fd63fe1c6fa716470df22d1c6a054fa9ecd2","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/tools/HiddenParameterDetector.js","title":"kernel/tools/HiddenParameterDetector","summary":"HiddenParameterDetector.js — flags AI-supplied tool-call arguments that are NOT declared in the tool's schema (potential smuggled/hidden parameters) and prototype-pollution-shaped keys.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/tools/HiddenParameterDetector.md","moduleTitle":"kernel/tools/HiddenParameterDetector","source":"webgpu-os/kernel/tools/HiddenParameterDetector.js","import":"/webgpu-os/kernel/tools/HiddenParameterDetector.js","sourceHash":"2f11f5f8d5e86ce58af5f170d374fd63fe1c6fa716470df22d1c6a054fa9ecd2","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/tools/HiddenParameterDetector.js#0000:HiddenParameterDetector","exportIndex":0,"name":"HiddenParameterDetector","kind":"class","signature":"class HiddenParameterDetector","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/tools/MetadataRugPullDetector.md","moduleTitle":"kernel/tools/MetadataRugPullDetector","source":"webgpu-os/kernel/tools/MetadataRugPullDetector.js","import":"/webgpu-os/kernel/tools/MetadataRugPullDetector.js","sourceHash":"59c3a9b997b8c5e8646f996c71e2705286e1c27fdff3ba905abedb901d0ec70e","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/tools/MetadataRugPullDetector.js","title":"kernel/tools/MetadataRugPullDetector","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/tools/MetadataRugPullDetector.md","moduleTitle":"kernel/tools/MetadataRugPullDetector","source":"webgpu-os/kernel/tools/MetadataRugPullDetector.js","import":"/webgpu-os/kernel/tools/MetadataRugPullDetector.js","sourceHash":"59c3a9b997b8c5e8646f996c71e2705286e1c27fdff3ba905abedb901d0ec70e","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/tools/MetadataRugPullDetector.js#0000:MetadataRugPullDetector","exportIndex":0,"name":"MetadataRugPullDetector","kind":"class","signature":"class MetadataRugPullDetector","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/tools/ToolCallSchemaValidator.md","moduleTitle":"kernel/tools/ToolCallSchemaValidator","source":"webgpu-os/kernel/tools/ToolCallSchemaValidator.js","import":"/webgpu-os/kernel/tools/ToolCallSchemaValidator.js","sourceHash":"38024a4e38346db1230199a26b502702e0263ad825adda1b300750c93a27ce8d","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/tools/ToolCallSchemaValidator.js","title":"kernel/tools/ToolCallSchemaValidator","summary":"ToolCallSchemaValidator.js — validates AI-supplied tool call arguments against the tool's declared JSON schema, reusing the existing webgpu-os/kernel/schema/SchemaValidator.js (no parallel validator).","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/tools/ToolCallSchemaValidator.md","moduleTitle":"kernel/tools/ToolCallSchemaValidator","source":"webgpu-os/kernel/tools/ToolCallSchemaValidator.js","import":"/webgpu-os/kernel/tools/ToolCallSchemaValidator.js","sourceHash":"38024a4e38346db1230199a26b502702e0263ad825adda1b300750c93a27ce8d","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/tools/ToolCallSchemaValidator.js#0000:ToolCallSchemaValidator","exportIndex":0,"name":"ToolCallSchemaValidator","kind":"class","signature":"class ToolCallSchemaValidator","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/tools/ToolPermissionChecker.md","moduleTitle":"kernel/tools/ToolPermissionChecker","source":"webgpu-os/kernel/tools/ToolPermissionChecker.js","import":"/webgpu-os/kernel/tools/ToolPermissionChecker.js","sourceHash":"007f7651005864574c43d0e3ef9e089c0c3157980563e0ff6b4c7389f099b23d","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/tools/ToolPermissionChecker.js","title":"kernel/tools/ToolPermissionChecker","summary":"ToolPermissionChecker.js — gates AI-initiated tool calls through kernel.permissions (RuleGraph), on top of (not instead of) the per-tool AffordanceRegistry.capabilityRequired check done by ToolRouter.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/tools/ToolPermissionChecker.md","moduleTitle":"kernel/tools/ToolPermissionChecker","source":"webgpu-os/kernel/tools/ToolPermissionChecker.js","import":"/webgpu-os/kernel/tools/ToolPermissionChecker.js","sourceHash":"007f7651005864574c43d0e3ef9e089c0c3157980563e0ff6b4c7389f099b23d","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/tools/ToolPermissionChecker.js#0000:ToolPermissionChecker","exportIndex":0,"name":"ToolPermissionChecker","kind":"class","signature":"class ToolPermissionChecker","summary":"ToolPermissionChecker.js — gates AI-initiated tool calls through kernel.permissions (RuleGraph), on top of (not instead of) the per-tool AffordanceRegistry.capabilityRequired check done by ToolRouter."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/tools/ToolResultIngestAdapter.md","moduleTitle":"kernel/tools/ToolResultIngestAdapter","source":"webgpu-os/kernel/tools/ToolResultIngestAdapter.js","import":"/webgpu-os/kernel/tools/ToolResultIngestAdapter.js","sourceHash":"d2845f518d377381b0798b679e84654fe058ba3ce387ea94f690a51277c621c2","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/tools/ToolResultIngestAdapter.js","title":"kernel/tools/ToolResultIngestAdapter","summary":"ToolResultIngestAdapter.js — the single chokepoint every AI-invoked tool result passes through on its way into the world model. Delegates to engine/state/worldmodel/UntrustedBoundary.js (no parallel wrapper); a tool result is always trusted:false and can never mint authority.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/tools/ToolResultIngestAdapter.md","moduleTitle":"kernel/tools/ToolResultIngestAdapter","source":"webgpu-os/kernel/tools/ToolResultIngestAdapter.js","import":"/webgpu-os/kernel/tools/ToolResultIngestAdapter.js","sourceHash":"d2845f518d377381b0798b679e84654fe058ba3ce387ea94f690a51277c621c2","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/tools/ToolResultIngestAdapter.js#0000:ToolResultIngestAdapter","exportIndex":0,"name":"ToolResultIngestAdapter","kind":"class","signature":"class ToolResultIngestAdapter","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/tools/ToolRouter.md","moduleTitle":"kernel/tools/ToolRouter","source":"webgpu-os/kernel/tools/ToolRouter.js","import":"/webgpu-os/kernel/tools/ToolRouter.js","sourceHash":"a355df4f693b04069dc8820e2e54466884989888962c0b12901712027abaf734","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/kernel/tools/ToolRouter.js","title":"kernel/tools/ToolRouter","summary":"ToolRouter.js — AI Tool Firewall. The single entrypoint the AI Hub's tool-calling loop uses to run a registered tool on behalf of an app. Delegates actual tool registration/execution/history to the existing ToolDriver.js (kernel.toolDriver) — this class never duplicates that machinery, it wraps it with the checks an *AI-initiated* call needs before it's safe to run: permission check, rug-pull detection, hidden-parameter detection, schema validation, and affordance/capability gating. Every result is then ingested through the CSE prompt-injection boundary (ToolResultIngestAdapter → engine/state UntrustedBoundary) before it's handed back — a tool result is observation, never authority.","exportCount":2}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/tools/ToolRouter.md","moduleTitle":"kernel/tools/ToolRouter","source":"webgpu-os/kernel/tools/ToolRouter.js","import":"/webgpu-os/kernel/tools/ToolRouter.js","sourceHash":"a355df4f693b04069dc8820e2e54466884989888962c0b12901712027abaf734","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/tools/ToolRouter.js#0000:ToolRouter","exportIndex":0,"name":"ToolRouter","kind":"class","signature":"class ToolRouter","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/kernel/tools/ToolRouter.md","moduleTitle":"kernel/tools/ToolRouter","source":"webgpu-os/kernel/tools/ToolRouter.js","import":"/webgpu-os/kernel/tools/ToolRouter.js","sourceHash":"a355df4f693b04069dc8820e2e54466884989888962c0b12901712027abaf734","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/kernel/tools/ToolRouter.js#0001:boundedAIValue","exportIndex":1,"name":"boundedAIValue","kind":"function","signature":"boundedAIValue(value, output = '')","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/packages/AppCompiler.md","moduleTitle":"packages/AppCompiler","source":"webgpu-os/packages/AppCompiler.js","import":"/webgpu-os/packages/AppCompiler.js","sourceHash":"cf3f2f41e7ebe5dd8f59410bf98c4f6393b65c8731be7b3d93f38cefe2641288","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/packages/AppCompiler.js","title":"packages/AppCompiler","summary":"AppCompiler.js — compile an ingested source bundle into a signed `.prpkg`. Two paths: 1. NATIVE — the folder already has a valid `manifest.json` + JS entry. Files are packaged as-is under `files/`. 2. AUTO   — any HTML/WebGPU app. We probe it (engine/compat), generate a compatibility profile, an embedded source module (`__compat_source.js`), and a bootloader entry (`index.js`) that calls `engine.compat.boot(...)` at mount time. A normal WebGPU app → an engine-native, signed OS app. Output uses PackageBuilder.buildV2 (signed + encrypted + merkle + cert). With a developer (self-signed) key the package verifies as the community/unofficial tier; a root-issued cert promotes it to trusted.","exportCount":6}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/packages/AppCompiler.md","moduleTitle":"packages/AppCompiler","source":"webgpu-os/packages/AppCompiler.js","import":"/webgpu-os/packages/AppCompiler.js","sourceHash":"cf3f2f41e7ebe5dd8f59410bf98c4f6393b65c8731be7b3d93f38cefe2641288","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/packages/AppCompiler.js#0000:AppCompiler","exportIndex":0,"name":"AppCompiler","kind":"class","signature":"class AppCompiler","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/packages/AppCompiler.md","moduleTitle":"packages/AppCompiler","source":"webgpu-os/packages/AppCompiler.js","import":"/webgpu-os/packages/AppCompiler.js","sourceHash":"cf3f2f41e7ebe5dd8f59410bf98c4f6393b65c8731be7b3d93f38cefe2641288","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/packages/AppCompiler.js#0001:CompatGuestApp","exportIndex":1,"name":"CompatGuestApp","kind":"class","signature":"class CompatGuestApp","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/packages/AppCompiler.md","moduleTitle":"packages/AppCompiler","source":"webgpu-os/packages/AppCompiler.js","import":"/webgpu-os/packages/AppCompiler.js","sourceHash":"cf3f2f41e7ebe5dd8f59410bf98c4f6393b65c8731be7b3d93f38cefe2641288","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/packages/AppCompiler.js#0002:buildFilesMap","exportIndex":2,"name":"buildFilesMap","kind":"function","signature":"buildFilesMap()","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/packages/AppCompiler.md","moduleTitle":"packages/AppCompiler","source":"webgpu-os/packages/AppCompiler.js","import":"/webgpu-os/packages/AppCompiler.js","sourceHash":"cf3f2f41e7ebe5dd8f59410bf98c4f6393b65c8731be7b3d93f38cefe2641288","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/packages/AppCompiler.js#0003:entry","exportIndex":3,"name":"entry","kind":"constant","signature":"entry","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/packages/AppCompiler.md","moduleTitle":"packages/AppCompiler","source":"webgpu-os/packages/AppCompiler.js","import":"/webgpu-os/packages/AppCompiler.js","sourceHash":"cf3f2f41e7ebe5dd8f59410bf98c4f6393b65c8731be7b3d93f38cefe2641288","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/packages/AppCompiler.js#0004:profile","exportIndex":4,"name":"profile","kind":"constant","signature":"profile","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/packages/AppCompiler.md","moduleTitle":"packages/AppCompiler","source":"webgpu-os/packages/AppCompiler.js","import":"/webgpu-os/packages/AppCompiler.js","sourceHash":"cf3f2f41e7ebe5dd8f59410bf98c4f6393b65c8731be7b3d93f38cefe2641288","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/packages/AppCompiler.js#0005:html","exportIndex":5,"name":"html","kind":"constant","signature":"html","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/packages/CapabilityMap.md","moduleTitle":"packages/CapabilityMap","source":"webgpu-os/packages/CapabilityMap.js","import":"/webgpu-os/packages/CapabilityMap.js","sourceHash":"8cccee3e9c847a9754a6a66f9fdd0a28aae0709cbfb21c704539caa99a56e63b","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/packages/CapabilityMap.js","title":"packages/CapabilityMap","summary":"CapabilityMap.js — OS-adaptive bridge between the compat static probe and the kernel's capability vocabulary. The kernel's RuleGraph is the single source of truth for what capabilities exist (`KNOWN_CAPABILITIES`) and how risky each one is (`CAPABILITY_LABELS`). This module classifies EVERY known capability into one disposition and, for the statically-detectable ones, maps a compat probe signal (`profile.uses` / `profile.gpu`) onto it. Dispositions: - 'free'    — universally allowed by the default rule graph; never emitted (the app already has it). - 'auto'    — detectable + low/medium risk → auto-added when the probe sees it. - 'suggest' — detectable + high risk → SURFACED for review, never silently added. - 'declare' — grantable but not statically inferable → author opts in. - 'system'  — privileged / system-trust → never auto-added under any path. - 'runtime' — kernel-mediated ephemeral consent token → never accepted from or emitted into an application manifest. Least-privilege is preserved: only 'auto' caps are granted without review; high-risk and privileged caps always require an explicit decision. IMPORTANT — this is a BUILD-TIME ADVISORY layer, not a security boundary. Static source scanning has unavoidable false negatives (minification, obfuscation, dynamically-constructed API calls, runtime behavior that differs from source). The authoritative gate is the kernel's runtime complete-mediation stack: `guardSyscalls` default-deny + per-call `Permissions.require` + the `PermissionPortal`. Auto-added caps only ever cover low/medium-risk APIs, so a missed or spoofed signal cannot silently escalate to a high-risk capability. A module-load guard logs any kernel capability that is missing a disposition, so the table can never silently drift behind a newly-added kernel cap; the Security Doctor surfaces the same check (`auditCapabilityMap`) at boot.","exportCount":8}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/packages/CapabilityMap.md","moduleTitle":"packages/CapabilityMap","source":"webgpu-os/packages/CapabilityMap.js","import":"/webgpu-os/packages/CapabilityMap.js","sourceHash":"8cccee3e9c847a9754a6a66f9fdd0a28aae0709cbfb21c704539caa99a56e63b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/packages/CapabilityMap.js#0000:policyOf","exportIndex":0,"name":"policyOf","kind":"function","signature":"policyOf(cap)","summary":"Resolve a capability's disposition string ('free'|'auto'|'suggest'|'declare'|'system'|'runtime'|'unknown')."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/packages/CapabilityMap.md","moduleTitle":"packages/CapabilityMap","source":"webgpu-os/packages/CapabilityMap.js","import":"/webgpu-os/packages/CapabilityMap.js","sourceHash":"8cccee3e9c847a9754a6a66f9fdd0a28aae0709cbfb21c704539caa99a56e63b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/packages/CapabilityMap.js#0001:riskOf","exportIndex":1,"name":"riskOf","kind":"function","signature":"riskOf(cap)","summary":"Risk level for a cap, read from the kernel's CAPABILITY_LABELS (default 'medium')."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/packages/CapabilityMap.md","moduleTitle":"packages/CapabilityMap","source":"webgpu-os/packages/CapabilityMap.js","import":"/webgpu-os/packages/CapabilityMap.js","sourceHash":"8cccee3e9c847a9754a6a66f9fdd0a28aae0709cbfb21c704539caa99a56e63b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/packages/CapabilityMap.js#0002:detectCapabilities","exportIndex":2,"name":"detectCapabilities","kind":"function","signature":"detectCapabilities(signals)","summary":"Run every detector against probe signals. Detectors are wrapped so a single malformed signal or detector bug can never throw during a build — a failing detector is treated as \"not detected\" and a one-time warning is logged. (Static detection is best-effort UX; the kernel's runtime guard remains the authoritative boundary — see module header.)"}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/packages/CapabilityMap.md","moduleTitle":"packages/CapabilityMap","source":"webgpu-os/packages/CapabilityMap.js","import":"/webgpu-os/packages/CapabilityMap.js","sourceHash":"8cccee3e9c847a9754a6a66f9fdd0a28aae0709cbfb21c704539caa99a56e63b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/packages/CapabilityMap.js#0003:classifyPermissions","exportIndex":3,"name":"classifyPermissions","kind":"function","signature":"classifyPermissions({ signals, declared = [], granted = [] } = {})","summary":"Classify a probe against what is already declared/granted and produce the final permission list + a reconciliation report."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/packages/CapabilityMap.md","moduleTitle":"packages/CapabilityMap","source":"webgpu-os/packages/CapabilityMap.js","import":"/webgpu-os/packages/CapabilityMap.js","sourceHash":"8cccee3e9c847a9754a6a66f9fdd0a28aae0709cbfb21c704539caa99a56e63b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/packages/CapabilityMap.js#0004:unclassifiedCapabilities","exportIndex":4,"name":"unclassifiedCapabilities","kind":"function","signature":"unclassifiedCapabilities()","summary":"Kernel capabilities that have no disposition in this table (should be empty)."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/packages/CapabilityMap.md","moduleTitle":"packages/CapabilityMap","source":"webgpu-os/packages/CapabilityMap.js","import":"/webgpu-os/packages/CapabilityMap.js","sourceHash":"8cccee3e9c847a9754a6a66f9fdd0a28aae0709cbfb21c704539caa99a56e63b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/packages/CapabilityMap.js#0005:staleCapabilities","exportIndex":5,"name":"staleCapabilities","kind":"function","signature":"staleCapabilities()","summary":"Capabilities classified here that no longer exist in the kernel vocabulary (stale entries)."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/packages/CapabilityMap.md","moduleTitle":"packages/CapabilityMap","source":"webgpu-os/packages/CapabilityMap.js","import":"/webgpu-os/packages/CapabilityMap.js","sourceHash":"8cccee3e9c847a9754a6a66f9fdd0a28aae0709cbfb21c704539caa99a56e63b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/packages/CapabilityMap.js#0006:auditCapabilityMap","exportIndex":6,"name":"auditCapabilityMap","kind":"function","signature":"auditCapabilityMap()","summary":"Self-audit for the Security Doctor / boot self-test. Returns coverage counts and any drift (kernel caps with no disposition, or table entries that are no longer kernel caps). `ok` is true only when there is no drift in either direction."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/packages/CapabilityMap.md","moduleTitle":"packages/CapabilityMap","source":"webgpu-os/packages/CapabilityMap.js","import":"/webgpu-os/packages/CapabilityMap.js","sourceHash":"8cccee3e9c847a9754a6a66f9fdd0a28aae0709cbfb21c704539caa99a56e63b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/packages/CapabilityMap.js#0007:CAPABILITY_POLICY","exportIndex":7,"name":"CAPABILITY_POLICY","kind":"constant","signature":"CAPABILITY_POLICY","summary":"Disposition + (for detectable caps) a `detect(signals)` predicate, keyed by the exact capability string from KNOWN_CAPABILITIES. A bare string is shorthand for `{ policy: <string> }` (no detector)."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/packages/FolderIngestor.md","moduleTitle":"packages/FolderIngestor","source":"webgpu-os/packages/FolderIngestor.js","import":"/webgpu-os/packages/FolderIngestor.js","sourceHash":"85da02867518747e49625f107d733a645229c34862c50c5ab4d41efc4757d7c8","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/packages/FolderIngestor.js","title":"packages/FolderIngestor","summary":"FolderIngestor.js — turn any developer source into a { files, entry } bundle that AppCompiler can package. Sources: • Directory picker (File System Access `showDirectoryPicker`) • <input type=\"file\" webkitdirectory> FileList • A single HTML File • A `.zip` (Uint8Array/ArrayBuffer/File) via Zip.parse • The OS VFS (a folder path or single file) via StorageManager • A remote URL (single-file HTML; CORS-aware) Output: { files: Map<string, string|Uint8Array>, entry: string, sourceType: string, name: string } Text files are decoded to strings; binary files stay as Uint8Array.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/packages/FolderIngestor.md","moduleTitle":"packages/FolderIngestor","source":"webgpu-os/packages/FolderIngestor.js","import":"/webgpu-os/packages/FolderIngestor.js","sourceHash":"85da02867518747e49625f107d733a645229c34862c50c5ab4d41efc4757d7c8","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/packages/FolderIngestor.js#0000:FolderIngestor","exportIndex":0,"name":"FolderIngestor","kind":"class","signature":"class FolderIngestor","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/packages/Gzip.md","moduleTitle":"packages/Gzip","source":"webgpu-os/packages/Gzip.js","import":"/webgpu-os/packages/Gzip.js","sourceHash":"6e2501cde50fff65dba136d8274402465f5614ece287baaff32bd3274d2237d7","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/packages/Gzip.js","title":"packages/Gzip","summary":"Gzip.js — gzip compress/decompress via the browser-native Compression Streams API. This is the SAME approach `bundle_engine.py` uses for the runtime bundle (`*.min.js.gz`) and its `--encrypt` loader: gzip the payload, then (optionally) AES-GCM it, and decompress in-browser with `DecompressionStream('gzip')`. No custom container format — a `.prpkg` payload is just `gzip(JSON)`. gzip carries its own whole-stream CRC-32 (validated by DecompressionStream), and we layer per-file SHA-256 + a signed Merkle root on top, so integrity is covered.","exportCount":3}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/packages/Gzip.md","moduleTitle":"packages/Gzip","source":"webgpu-os/packages/Gzip.js","import":"/webgpu-os/packages/Gzip.js","sourceHash":"6e2501cde50fff65dba136d8274402465f5614ece287baaff32bd3274d2237d7","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/packages/Gzip.js#0000:gzip","exportIndex":0,"name":"gzip","kind":"function","signature":"async gzip(input)","summary":"Gzip-compress a string or bytes."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/packages/Gzip.md","moduleTitle":"packages/Gzip","source":"webgpu-os/packages/Gzip.js","import":"/webgpu-os/packages/Gzip.js","sourceHash":"6e2501cde50fff65dba136d8274402465f5614ece287baaff32bd3274d2237d7","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/packages/Gzip.js#0001:gunzip","exportIndex":1,"name":"gunzip","kind":"function","signature":"async gunzip(input, opts = {})","summary":"Gunzip to bytes, with a decompressed-size cap (zip-bomb guard)."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/packages/Gzip.md","moduleTitle":"packages/Gzip","source":"webgpu-os/packages/Gzip.js","import":"/webgpu-os/packages/Gzip.js","sourceHash":"6e2501cde50fff65dba136d8274402465f5614ece287baaff32bd3274d2237d7","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/packages/Gzip.js#0002:gunzipText","exportIndex":2,"name":"gunzipText","kind":"function","signature":"async gunzipText(input, opts = {})","summary":"Gunzip to a UTF-8 string."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/packages/PackageBuilder.md","moduleTitle":"packages/PackageBuilder","source":"webgpu-os/packages/PackageBuilder.js","import":"/webgpu-os/packages/PackageBuilder.js","sourceHash":"7e72d47959c7fa24e8a6e178ba2e23c33215aa1633191c75085348c18e75bbcc","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/packages/PackageBuilder.js","title":"packages/PackageBuilder","summary":"PackageBuilder.js — build a signed .prpkg from a folder of files. Output format (JSON envelope — zip support planned): { format:    'prpkg-v1', manifest:  { ... },          // manifest.json with files hash map blockmap:  { files: {...} }, // sha256 per file signature: { pubKey, sig },  // ECDSA P-256 over blockmap JSON files:     { path: content } // all file contents as strings } Usage: const pkg = await PackageBuilder.build({ id: 'os.my-app', name: 'My App', version: '1.0.0', publisher: 'local', entry: 'files/app.html', permissions: ['gpu'], files: { 'files/app.html': '<html>...' } }, cryptoDriver);","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/packages/PackageBuilder.md","moduleTitle":"packages/PackageBuilder","source":"webgpu-os/packages/PackageBuilder.js","import":"/webgpu-os/packages/PackageBuilder.js","sourceHash":"7e72d47959c7fa24e8a6e178ba2e23c33215aa1633191c75085348c18e75bbcc","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/packages/PackageBuilder.js#0000:PackageBuilder","exportIndex":0,"name":"PackageBuilder","kind":"class","signature":"class PackageBuilder","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/packages/PackageCrypto.md","moduleTitle":"packages/PackageCrypto","source":"webgpu-os/packages/PackageCrypto.js","import":"/webgpu-os/packages/PackageCrypto.js","sourceHash":"41b4c1d6853dda35a68f880a02d5e9dd98ee809ad9473a6e985504f45e94c2ed","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/packages/PackageCrypto.js","title":"packages/PackageCrypto","summary":"PackageCrypto.js — AES-GCM payload encryption for .prpkg v2 containers. SECURITY NOTE (acknowledged in the plan): in a browser the decryption key must ship with the OS, so this encryption is OBFUSCATION / a licensing-and-guard hook — NOT true secrecy. Package *authenticity* comes from the ECDSA signature + the ring-0 trust chain (Phase 2), not from this encryption. Container binary layout (`.prpkg` v2): bytes 0..5   magic  \"PRPKG2\" byte  6      version (0x02) byte  7      flags  (bit0 = encrypted) bytes 8..19  AES-GCM IV (12 bytes)        [only if encrypted] bytes 20..   ciphertext (AES-GCM, tag appended)  | or plaintext gzip if not encrypted The inner plaintext is gzip(JSON{manifest, blockmap, files}) — the same gzip codec the bundler uses, decompressed in-browser via DecompressionStream('gzip'). ── Single-file layout (`.prpkg`, embeds the envelope) ────────────────────── A v2 package historically shipped as TWO files (the binary container + a `.prpkg.json` sidecar envelope). `embed()` fuses both into ONE self-describing `.prpkg`, so there is a single artifact to move around and verify: bytes 0..5    magic \"PRPKGS\" byte  6       version (0x01) byte  7       reserved (0x00) bytes 8..11   envelope length (uint32, little-endian) bytes 12..    envelope JSON (UTF-8) then          the full PRPKG2 container bytes (as produced by seal()) `split()` reverses it. The envelope is the PUBLIC, signed metadata; the embedded container is cross-verified against it by PackageVerifier.parseV2 (manifest + blockmap equality, signed blockmap.manifestHash, AES-GCM AAD = id@version, and the ECDSA signature) — so tampering with either half is detected.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/packages/PackageCrypto.md","moduleTitle":"packages/PackageCrypto","source":"webgpu-os/packages/PackageCrypto.js","import":"/webgpu-os/packages/PackageCrypto.js","sourceHash":"41b4c1d6853dda35a68f880a02d5e9dd98ee809ad9473a6e985504f45e94c2ed","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/packages/PackageCrypto.js#0000:PackageCrypto","exportIndex":0,"name":"PackageCrypto","kind":"class","signature":"class PackageCrypto","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/packages/PackageLoader.md","moduleTitle":"packages/PackageLoader","source":"webgpu-os/packages/PackageLoader.js","import":"/webgpu-os/packages/PackageLoader.js","sourceHash":"49ba04cf89f47d088ffe9654dd2b5cbbef003395cedebaa35a38fcd79c70beea","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/packages/PackageLoader.js","title":"packages/PackageLoader","summary":"PackageLoader.js — load an installed .prpkg app's entry module from OPFS. Installed packages live at: /os/packages/installed/{appId}/{version}/files/{relPath} Loading strategy: 1. Gather every file under the package's files/ dir. 2. Apply enabled PatchManager overlays (file-overlay layer) on top of base files. 3. Build a blob-URL module graph: each JS module's *relative* import/export specifiers are rewritten to the blob URL of the corresponding packaged file, resolved in dependency order (best-effort for cycles). 4. import() the entry blob URL and return the module namespace. Why rewrite specifiers instead of an import map? Import maps must exist before the first module loads; we resolve packages at runtime, so we inline the graph by rewriting relative specifiers to blob URLs. Blob URLs are retained for the lifetime of the loaded app and revoked when the package is reloaded or removed.","exportCount":2}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/packages/PackageLoader.md","moduleTitle":"packages/PackageLoader","source":"webgpu-os/packages/PackageLoader.js","import":"/webgpu-os/packages/PackageLoader.js","sourceHash":"49ba04cf89f47d088ffe9654dd2b5cbbef003395cedebaa35a38fcd79c70beea","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/packages/PackageLoader.js#0000:PackageLoader","exportIndex":0,"name":"PackageLoader","kind":"class","signature":"class PackageLoader","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/packages/PackageLoader.md","moduleTitle":"packages/PackageLoader","source":"webgpu-os/packages/PackageLoader.js","import":"/webgpu-os/packages/PackageLoader.js","sourceHash":"49ba04cf89f47d088ffe9654dd2b5cbbef003395cedebaa35a38fcd79c70beea","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/packages/PackageLoader.js#0001:CompatGuestApp","exportIndex":1,"name":"CompatGuestApp","kind":"class","signature":"class CompatGuestApp","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/packages/PackageManager.md","moduleTitle":"packages/PackageManager","source":"webgpu-os/packages/PackageManager.js","import":"/webgpu-os/packages/PackageManager.js","sourceHash":"8f595d6e8af1599a70066994c17821fc7374e288d827f075168848d060188cf3","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/packages/PackageManager.js","title":"packages/PackageManager","summary":"PackageManager.js — install, remove, update, verify, repair, rollback .prpkg packages. Package lifecycle: download/pick → stage → verify → install → register → (update → rollback) Storage layout: /os/packages/installed/{appId}/{version}/   ← active package files /os/packages/staging/{appId}/{version}/     ← in-progress installs /os/packages/rollback/{appId}/{version}/    ← previous version for rollback /os/packages/locks/{appId}.lock.json        ← prevents concurrent installs /os/packages/chunks/sha256-{hash}           ← chunk cache (CacheDriver)","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/packages/PackageManager.md","moduleTitle":"packages/PackageManager","source":"webgpu-os/packages/PackageManager.js","import":"/webgpu-os/packages/PackageManager.js","sourceHash":"8f595d6e8af1599a70066994c17821fc7374e288d827f075168848d060188cf3","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/packages/PackageManager.js#0000:PackageManager","exportIndex":0,"name":"PackageManager","kind":"class","signature":"class PackageManager","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/packages/PackageRegistry.md","moduleTitle":"packages/PackageRegistry","source":"webgpu-os/packages/PackageRegistry.js","import":"/webgpu-os/packages/PackageRegistry.js","sourceHash":"14891172f063d9b77c001735c8e5940970bcb5334724edd7a2bda4fc4c0821b2","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/packages/PackageRegistry.js","title":"packages/PackageRegistry","summary":"PackageRegistry.js — IndexedDB-backed registry of installed packages. Each record in the 'packages' store: { id:          'os.shader-lab', name:        'Shader Lab', version:     '1.0.0', activeRootHash: 'a1b2c3d4...', // content-addressed install directory rollbackRootHash: '...',        // previous activation root hash rollbackVersion: null, rollbackAvailable: false, publisher:   'local', installedAt: 1234567890, updatedAt:   1234567890, entryPath:   '/os/packages/installed/os.shader-lab/a1b2c3d4.../files/app.html', manifest:    { ...full manifest... }, format:      'prpkg-v1', trustVerdict: 'trusted', pinned:      false, pinnedVersion: null, sourceUrl:   null,           // URL to check for updates }","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/packages/PackageRegistry.md","moduleTitle":"packages/PackageRegistry","source":"webgpu-os/packages/PackageRegistry.js","import":"/webgpu-os/packages/PackageRegistry.js","sourceHash":"14891172f063d9b77c001735c8e5940970bcb5334724edd7a2bda4fc4c0821b2","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/packages/PackageRegistry.js#0000:PackageRegistry","exportIndex":0,"name":"PackageRegistry","kind":"class","signature":"class PackageRegistry","summary":"PackageRegistry.js — IndexedDB-backed registry of installed packages. Each record in the 'packages' store: { id:          'os.shader-lab', name:        'Shader Lab', version:     '1.0.0', activeRootHash: 'a1b2c3d4...', // content-addressed install directory rollbackRootHash: '...',        // previous activation root hash rollbackVersion: null, rollbackAvailable: false, publisher:   'local', installedAt: 1234567890, updatedAt:   1234567890, entryPath:   '/os/packages/installed/os.shader-lab/a1b2c3d4.../files/app.html', manifest:    { ...full manifest... }, format:      'prpkg-v1', trustVerdict: 'trusted', pinned:      false, pinnedVersion: null, sourceUrl:   null,           // URL to check for updates }"}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/packages/PackageScanner.md","moduleTitle":"packages/PackageScanner","source":"webgpu-os/packages/PackageScanner.js","import":"/webgpu-os/packages/PackageScanner.js","sourceHash":"4f13f9ae60d2632244bdc0d3a0191c497ae31cd74b44965957661e093e800be2","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/packages/PackageScanner.js","title":"packages/PackageScanner","summary":"PackageScanner.js — heuristic static pre-scan of package contents. This is an EARLY-WARNING badge, not a guarantee: novel obfuscation will evade heuristics. The real containment is default-deny egress + sandboxed execution (see PermissionPortal / guardSyscalls). The scanner flags the patterns seen in real 2025–2026 supply-chain payloads: heavy obfuscation, base64 blobs, dynamic code execution, credential/secret access, network exfiltration, and payloads hidden inside non-code assets. scan(pkg) → { risk: 'low'|'medium'|'high', findings: [{ level, code, file, msg }] }","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/packages/PackageScanner.md","moduleTitle":"packages/PackageScanner","source":"webgpu-os/packages/PackageScanner.js","import":"/webgpu-os/packages/PackageScanner.js","sourceHash":"4f13f9ae60d2632244bdc0d3a0191c497ae31cd74b44965957661e093e800be2","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/packages/PackageScanner.js#0000:PackageScanner","exportIndex":0,"name":"PackageScanner","kind":"class","signature":"class PackageScanner","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/packages/PackageVerifier.md","moduleTitle":"packages/PackageVerifier","source":"webgpu-os/packages/PackageVerifier.js","import":"/webgpu-os/packages/PackageVerifier.js","sourceHash":"d6961e6a5e1b707ebcc22bd93b1d509ddd23c94516c84238f0663a86248c337b","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/packages/PackageVerifier.js","title":"packages/PackageVerifier","summary":"PackageVerifier.js — verifies .prpkg package integrity. Verification steps: 1. Validate manifest schema (format, required fields) 2. Verify each file's SHA-256 hash against blockmap 3. Verify ECDSA P-256 publisher signature over blockmap hash The publisher key fingerprint is stored in the manifest. Trusted publishers are managed by kernel.permissions.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/packages/PackageVerifier.md","moduleTitle":"packages/PackageVerifier","source":"webgpu-os/packages/PackageVerifier.js","import":"/webgpu-os/packages/PackageVerifier.js","sourceHash":"d6961e6a5e1b707ebcc22bd93b1d509ddd23c94516c84238f0663a86248c337b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/packages/PackageVerifier.js#0000:PackageVerifier","exportIndex":0,"name":"PackageVerifier","kind":"class","signature":"class PackageVerifier","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/packages/PublisherKeyManager.md","moduleTitle":"packages/PublisherKeyManager","source":"webgpu-os/packages/PublisherKeyManager.js","import":"/webgpu-os/packages/PublisherKeyManager.js","sourceHash":"d8decd95dd3d284e8f931e7d5f44ada4333007dcafd64b6606d39feece5c753e","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/packages/PublisherKeyManager.js","title":"packages/PublisherKeyManager","summary":"PublisherKeyManager.js — the developer's portable package-signing key. Distinct from `CryptoDriver` (the device identity), whose private key is NON-extractable and therefore cannot be backed up, moved between machines, or rotated with a lineage. A publisher who ships packages needs a key they can: - generate once and KEEP SAFE (encrypted export the dev stores offline), - re-import on another machine / after reinstall, - ROTATE while proving continuity (old key signs the new key — see kernel/SigningLineage.js), so app updates stay verifiable and isolated. The keypair is ECDSA P-256, **extractable**, stored locally (JWK in the IDB kv store) for day-to-day signing, plus an AES-256-GCM (PBKDF2-SHA256) encrypted backup the dev downloads and keeps. Signatures are raw IEEE-P1363 (WebCrypto default), the same format `CryptoDriver.verify` / CollabIdentity `verifyData` expects, and fingerprints are computed via `cryptoDriver.fingerprintOf` so the publisher fingerprint scheme matches the rest of the trust system.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/packages/PublisherKeyManager.md","moduleTitle":"packages/PublisherKeyManager","source":"webgpu-os/packages/PublisherKeyManager.js","import":"/webgpu-os/packages/PublisherKeyManager.js","sourceHash":"d8decd95dd3d284e8f931e7d5f44ada4333007dcafd64b6606d39feece5c753e","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/packages/PublisherKeyManager.js#0000:PublisherKeyManager","exportIndex":0,"name":"PublisherKeyManager","kind":"class","signature":"class PublisherKeyManager","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/packages/UpdateManager.md","moduleTitle":"packages/UpdateManager","source":"webgpu-os/packages/UpdateManager.js","import":"/webgpu-os/packages/UpdateManager.js","sourceHash":"a774a344769c49b09ae16fca2dc2600e74c7cbc416908d766839b784da06866d","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/packages/UpdateManager.js","title":"packages/UpdateManager","summary":"UpdateManager.js — block-level differential update engine (MSIX-style, web-native). Update flow: check(appId)   → fetch remote blockmap from sourceUrl, diff against installed blockmap, return UpdateJob with changed/removed file lists. apply(appId)   → download only changed chunks, verify each sha256, verify package ECDSA-P256 signature, atomic-swap installed dirs, save previous version to rollback slot, update registry. rollback(appId)→ delegate to PackageManager.rollback() checkAll()     → check all installed packages that have a sourceUrl setSource()    → delegate to PackageManager.setSource() Remote blockmap format (served at {sourceUrl}/blockmap.json): { \"appId\":          \"os.my-app\", \"version\":        \"1.2.0\", \"files\": [ { \"path\": \"index.js\",      \"sha256\": \"hex...\", \"size\": 8192 }, { \"path\": \"manifest.json\", \"sha256\": \"hex...\", \"size\":  512 } ], \"signature\":      \"base64-ecdsa-der...\",   // optional — over canonical payload \"signerPublicKey\": { \"kty\":\"EC\",\"crv\":\"P-256\", ... }  // optional JWK } Storage layout (under /os/packages/): .updates/{appId}/remote-blockmap.json  ← cached remote blockmap post-check .updates/{appId}/staged/               ← downloaded changed files installed/{appId}/{version}/           ← live package (PackageManager layout) rollback/{appId}/{version}/            ← previous version slot","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/packages/UpdateManager.md","moduleTitle":"packages/UpdateManager","source":"webgpu-os/packages/UpdateManager.js","import":"/webgpu-os/packages/UpdateManager.js","sourceHash":"a774a344769c49b09ae16fca2dc2600e74c7cbc416908d766839b784da06866d","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/packages/UpdateManager.js#0000:UpdateManager","exportIndex":0,"name":"UpdateManager","kind":"class","signature":"class UpdateManager","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/packages/Zip.md","moduleTitle":"packages/Zip","source":"webgpu-os/packages/Zip.js","import":"/webgpu-os/packages/Zip.js","sourceHash":"444a297ce9c44e3a6f8cfaad2b824bb2a5105d8fe3ff7715857d1a7a010f1942","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/packages/Zip.js","title":"packages/Zip","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/packages/Zip.md","moduleTitle":"packages/Zip","source":"webgpu-os/packages/Zip.js","import":"/webgpu-os/packages/Zip.js","sourceHash":"444a297ce9c44e3a6f8cfaad2b824bb2a5105d8fe3ff7715857d1a7a010f1942","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/packages/Zip.js#0000:Zip","exportIndex":0,"name":"Zip","kind":"class","signature":"class Zip","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/Desktop.md","moduleTitle":"shell/Desktop","source":"webgpu-os/shell/Desktop.js","import":"/webgpu-os/shell/Desktop.js","sourceHash":"7572a6912353fade12348c11369b57da02ed8c375407c395574b942974d732a1","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/shell/Desktop.js","title":"shell/Desktop","summary":"Desktop.js — the OS shell compositor. Owns: - Plauna workspace (virtual desktops, panel chrome, window management). - Taskbar (bottom bar: start menu + running apps + status tray). - NotificationCenter (toast/banner delivery). - Routing of kernel 'ui:open-panel' events to WorkspaceManager. Phase 2 adds AppManifestLoader → dynamic app registration. Phase 3 adds GPU panel wiring (canvas surface allocation per app).","exportCount":5}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/Desktop.md","moduleTitle":"shell/Desktop","source":"webgpu-os/shell/Desktop.js","import":"/webgpu-os/shell/Desktop.js","sourceHash":"7572a6912353fade12348c11369b57da02ed8c375407c395574b942974d732a1","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/Desktop.js#0000:Desktop","exportIndex":0,"name":"Desktop","kind":"class","signature":"class Desktop","summary":"Desktop.js — the OS shell compositor. Owns: - Plauna workspace (virtual desktops, panel chrome, window management). - Taskbar (bottom bar: start menu + running apps + status tray). - NotificationCenter (toast/banner delivery). - Routing of kernel 'ui:open-panel' events to WorkspaceManager. Phase 2 adds AppManifestLoader → dynamic app registration. Phase 3 adds GPU panel wiring (canvas surface allocation per app)."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/Desktop.md","moduleTitle":"shell/Desktop","source":"webgpu-os/shell/Desktop.js","import":"/webgpu-os/shell/Desktop.js","sourceHash":"7572a6912353fade12348c11369b57da02ed8c375407c395574b942974d732a1","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/Desktop.js#0001:createProvisionalMountHandoff","exportIndex":1,"name":"createProvisionalMountHandoff","kind":"function","signature":"createProvisionalMountHandoff({ controller = new AbortController()","summary":"Own teardown while an async app mount is still provisional. Cancellation calls an attached cleanup synchronously, so the app observes its AbortSignal before the panel is removed. Any cleanup promise continues in the background while a pending close returns immediately. Once the mount has settled, callers replace this handoff with the real app and retain the normal awaited-unmount contract."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/Desktop.md","moduleTitle":"shell/Desktop","source":"webgpu-os/shell/Desktop.js","import":"/webgpu-os/shell/Desktop.js","sourceHash":"7572a6912353fade12348c11369b57da02ed8c375407c395574b942974d732a1","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/Desktop.js#0002:guardMountRegistrations","exportIndex":2,"name":"guardMountRegistrations","kind":"function","signature":"guardMountRegistrations(namespace, signal, methods = [], label = 'app capability')","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/Desktop.md","moduleTitle":"shell/Desktop","source":"webgpu-os/shell/Desktop.js","import":"/webgpu-os/shell/Desktop.js","sourceHash":"7572a6912353fade12348c11369b57da02ed8c375407c395574b942974d732a1","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/Desktop.js#0003:resolveAppConstructor","exportIndex":3,"name":"resolveAppConstructor","kind":"function","signature":"resolveAppConstructor(mod)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/Desktop.md","moduleTitle":"shell/Desktop","source":"webgpu-os/shell/Desktop.js","import":"/webgpu-os/shell/Desktop.js","sourceHash":"7572a6912353fade12348c11369b57da02ed8c375407c395574b942974d732a1","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/Desktop.js#0004:desktopFrameRgbHash","exportIndex":4,"name":"desktopFrameRgbHash","kind":"function","signature":"desktopFrameRgbHash(data)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/DialogManager.md","moduleTitle":"shell/DialogManager","source":"webgpu-os/shell/DialogManager.js","import":"/webgpu-os/shell/DialogManager.js","sourceHash":"7e33151453eb9683688350e98d912d8f684c778ca96206a1f293b43d962e3f35","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/shell/DialogManager.js","title":"shell/DialogManager","summary":"DialogManager.js — OS-level dialog system. Handles kernel `ui:modal` events and renders styled alert / confirm / prompt dialogs as a layered overlay above all panels. API (via kernel.events or syscalls.ui.*): ui:modal  { type, title, message, icon, buttons, defaultValue, resolve } Promise-returning syscalls (see Syscalls.js): syscalls.ui.alert(msg, opts)               → Promise<void> syscalls.ui.confirm(msg, opts)             → Promise<boolean> syscalls.ui.prompt(msg, default, opts)     → Promise<string|null>","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/DialogManager.md","moduleTitle":"shell/DialogManager","source":"webgpu-os/shell/DialogManager.js","import":"/webgpu-os/shell/DialogManager.js","sourceHash":"7e33151453eb9683688350e98d912d8f684c778ca96206a1f293b43d962e3f35","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/DialogManager.js#0000:DialogManager","exportIndex":0,"name":"DialogManager","kind":"class","signature":"class DialogManager","summary":"DialogManager.js — OS-level dialog system. Handles kernel `ui:modal` events and renders styled alert / confirm / prompt dialogs as a layered overlay above all panels. API (via kernel.events or syscalls.ui.*): ui:modal  { type, title, message, icon, buttons, defaultValue, resolve } Promise-returning syscalls (see Syscalls.js): syscalls.ui.alert(msg, opts)               → Promise<void> syscalls.ui.confirm(msg, opts)             → Promise<boolean> syscalls.ui.prompt(msg, default, opts)     → Promise<string|null>"}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/NotificationCenter.md","moduleTitle":"shell/NotificationCenter","source":"webgpu-os/shell/NotificationCenter.js","import":"/webgpu-os/shell/NotificationCenter.js","sourceHash":"7ce55232d6394f3d9e7acbe4c5f0b82702e6511f5aec6a941eabb5ee025b2989","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/shell/NotificationCenter.js","title":"shell/NotificationCenter","summary":"NotificationCenter.js — routes kernel ui:notify events to Plauna's ToastManager. Uses Plauna ToastManager directly (the same underlying system NotificationSystem uses). Falls back to a minimal DOM toast only if Plauna has not mounted yet.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/NotificationCenter.md","moduleTitle":"shell/NotificationCenter","source":"webgpu-os/shell/NotificationCenter.js","import":"/webgpu-os/shell/NotificationCenter.js","sourceHash":"7ce55232d6394f3d9e7acbe4c5f0b82702e6511f5aec6a941eabb5ee025b2989","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/NotificationCenter.js#0000:NotificationCenter","exportIndex":0,"name":"NotificationCenter","kind":"class","signature":"class NotificationCenter","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/PackageHostRealm.md","moduleTitle":"shell/PackageHostRealm","source":"webgpu-os/shell/PackageHostRealm.js","import":"/webgpu-os/shell/PackageHostRealm.js","sourceHash":"7bea7ddd3418de07411ce628a3e4ac3ca4f514704953cadf4fe661eb09643b88","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/shell/PackageHostRealm.js","title":"shell/PackageHostRealm","summary":"PackageHostRealm.js — run an installed NATIVE package app inside an opaque-origin sandboxed iframe, bridging the kernel syscalls over a nonce-bound postMessage RPC. WHY: `PackageLoader` imports a package's entry module straight into the OS origin (S2). Trusted/root packages may keep that fast shared realm, but pinned/untrusted packages must NOT touch `window`, the OS DOM, localStorage, the extension bridge, or any accidental globals. This realm gives them an `allow-scripts` (NO `allow-same-origin`) iframe — a true origin boundary — and proxies the syscall surface back to the host's GUARDED syscalls for that app. BRIDGE SCOPE (honest limits): - Async, structured-cloneable syscalls (fs.*, storage.*, ui.notify/alert/ confirm/prompt, log.*, sandbox.*, net send/fetch, pkg reads, etc.) work: each call round-trips to the host, which invokes the real guarded method. - Subscriptions / callbacks (`.on`, `.onChange`, `.onEvent`, …) CANNOT cross the boundary; the in-iframe proxy returns a no-op unsubscribe so apps that register listeners do not crash (they simply receive no host events yet). - Raw `GPUDevice` / GPU surfaces cannot cross an opaque-origin boundary, so GPU-panel apps are NOT isolated here (the launcher keeps them shared). SECURITY: the host only ever services RPC bearing the exact per-instance nonce from the iframe it created, and only invokes `this._syscalls` (already guarded + capability-checked for THIS appId). Unknown namespaces/methods are refused.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/PackageHostRealm.md","moduleTitle":"shell/PackageHostRealm","source":"webgpu-os/shell/PackageHostRealm.js","import":"/webgpu-os/shell/PackageHostRealm.js","sourceHash":"7bea7ddd3418de07411ce628a3e4ac3ca4f514704953cadf4fe661eb09643b88","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/PackageHostRealm.js#0000:PackageHostRealm","exportIndex":0,"name":"PackageHostRealm","kind":"class","signature":"class PackageHostRealm","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/StartMenu.md","moduleTitle":"shell/StartMenu","source":"webgpu-os/shell/StartMenu.js","import":"/webgpu-os/shell/StartMenu.js","sourceHash":"12ece44999f60ce5026d3e39bf2ad0d0b4a550f53c61644fc93d503f7bba4545","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/shell/StartMenu.js","title":"shell/StartMenu","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/StartMenu.md","moduleTitle":"shell/StartMenu","source":"webgpu-os/shell/StartMenu.js","import":"/webgpu-os/shell/StartMenu.js","sourceHash":"12ece44999f60ce5026d3e39bf2ad0d0b4a550f53c61644fc93d503f7bba4545","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/StartMenu.js#0000:StartMenu","exportIndex":0,"name":"StartMenu","kind":"class","signature":"class StartMenu","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/StatusTray.md","moduleTitle":"shell/StatusTray","source":"webgpu-os/shell/StatusTray.js","import":"/webgpu-os/shell/StatusTray.js","sourceHash":"eb8398160bd0a6d1801dbd06768c58221537f8c657bbb4397c3a6ee197f134cc","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/shell/StatusTray.js","title":"shell/StatusTray","summary":"StatusTray.js — rightmost section of the taskbar. A thin orchestrator: it composes stateless tray widgets (see ./tray/ tray-widgets.js) and owns the per-frame update loop. It does NOT render the calendar — clicking the clock requests the Calendar app's flyout surface. Layout (left → right): GPU stat | FPS stat | 🔍 | ⚡ | Clock | 🔔","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/StatusTray.md","moduleTitle":"shell/StatusTray","source":"webgpu-os/shell/StatusTray.js","import":"/webgpu-os/shell/StatusTray.js","sourceHash":"eb8398160bd0a6d1801dbd06768c58221537f8c657bbb4397c3a6ee197f134cc","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/StatusTray.js#0000:StatusTray","exportIndex":0,"name":"StatusTray","kind":"class","signature":"class StatusTray","summary":"StatusTray.js — rightmost section of the taskbar. A thin orchestrator: it composes stateless tray widgets (see ./tray/ tray-widgets.js) and owns the per-frame update loop. It does NOT render the calendar — clicking the clock requests the Calendar app's flyout surface. Layout (left → right): GPU stat | FPS stat | 🔍 | ⚡ | Clock | 🔔"}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/Taskbar.md","moduleTitle":"shell/Taskbar","source":"webgpu-os/shell/Taskbar.js","import":"/webgpu-os/shell/Taskbar.js","sourceHash":"af0dcf40d67ab69fd019c53011c1efdd9c156616283b70ee315074ba5882146a","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/shell/Taskbar.js","title":"shell/Taskbar","summary":"Taskbar.js - bottom shell coordinator. Rendering and behavior live in shell/taskbar modules so the taskbar can grow without becoming another monolithic desktop controller.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/Taskbar.md","moduleTitle":"shell/Taskbar","source":"webgpu-os/shell/Taskbar.js","import":"/webgpu-os/shell/Taskbar.js","sourceHash":"af0dcf40d67ab69fd019c53011c1efdd9c156616283b70ee315074ba5882146a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/Taskbar.js#0000:Taskbar","exportIndex":0,"name":"Taskbar","kind":"class","signature":"class Taskbar","summary":"Taskbar.js - bottom shell coordinator. Rendering and behavior live in shell/taskbar modules so the taskbar can grow without becoming another monolithic desktop controller."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/WindowSizer.md","moduleTitle":"shell/WindowSizer","source":"webgpu-os/shell/WindowSizer.js","import":"/webgpu-os/shell/WindowSizer.js","sourceHash":"9a78a78b47dee396436a9dcb056570e34f336c112ed1d207a60cace139478c29","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/shell/WindowSizer.js","title":"shell/WindowSizer","summary":"WindowSizer.js — Viewport-aware window sizing and placement. Computes default window dimensions and screen position based on: 1. The LIVE available desktop area (viewport minus taskbar) — not device type. 2. The app manifest's `category` (and optional `sizingHint`) to pick a sizing profile. 3. The manifest's `defaultWidth/defaultHeight` treated as design-time values at a 1440px reference viewport, then scaled proportionally to the actual viewport. Windows are centered in the available desktop area, with a configurable cascade offset for stacking multiple windows. ── Viewport contexts (based on available desktop width) ────────────────── compact   < 640px   — very constrained (browser in half-screen, etc.) medium    640–1024  — tablet / laptop / small desktop window wide      1024–1440 — typical desktop ultrawide > 1440    — large monitor / maximized on 4K ── Sizing profiles (per manifest category / sizingHint) ────────────────── compact   → small, fixed-size utility (calculator, clock) utility   → small utility panel tools     → medium tool (settings, pkg-manager) system    → medium-large system panel (sysmon, task-manager, terminal, files) debug     → narrow + tall (devconsole, log-viewer) creative  → large workspace (paint, notepad) webgpu    → large with canvas (fractal, particles, gpu-manager) games     → large, prefers square-ish (minesweeper, snake, solitaire) workspace → near-full (browser, heavy editors)  [sizingHint override] full      → fills entire desktop area            [sizingHint override]","exportCount":2}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/WindowSizer.md","moduleTitle":"shell/WindowSizer","source":"webgpu-os/shell/WindowSizer.js","import":"/webgpu-os/shell/WindowSizer.js","sourceHash":"9a78a78b47dee396436a9dcb056570e34f336c112ed1d207a60cace139478c29","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/WindowSizer.js#0000:availableDesktop","exportIndex":0,"name":"availableDesktop","kind":"function","signature":"availableDesktop()","summary":"Returns the current available desktop dimensions (px)."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/WindowSizer.md","moduleTitle":"shell/WindowSizer","source":"webgpu-os/shell/WindowSizer.js","import":"/webgpu-os/shell/WindowSizer.js","sourceHash":"9a78a78b47dee396436a9dcb056570e34f336c112ed1d207a60cace139478c29","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/WindowSizer.js#0001:computeWindow","exportIndex":1,"name":"computeWindow","kind":"function","signature":"computeWindow(manifest, cascadeIndex = 0)","summary":"Compute the optimal window { width, height, x, y } for a given manifest."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/WindowStateStore.md","moduleTitle":"shell/WindowStateStore","source":"webgpu-os/shell/WindowStateStore.js","import":"/webgpu-os/shell/WindowStateStore.js","sourceHash":"1a279ceb82bdc923369c5aaee7c68a793448c6ef4c21ccd9d7342efda82d167a","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/shell/WindowStateStore.js","title":"shell/WindowStateStore","summary":"WindowStateStore.js — Persist and restore per-app window position/size. Stored in localStorage under 'os.windowStates' as a versioned envelope whose `states` field maps appId → state. The historical bare map remains readable. Validates a restored state against the current viewport before using it; if the position is out of bounds or the size is unreasonable the saved state is silently ignored and the app opens at its computed default.","exportCount":7}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/WindowStateStore.md","moduleTitle":"shell/WindowStateStore","source":"webgpu-os/shell/WindowStateStore.js","import":"/webgpu-os/shell/WindowStateStore.js","sourceHash":"1a279ceb82bdc923369c5aaee7c68a793448c6ef4c21ccd9d7342efda82d167a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/WindowStateStore.js#0000:validateState","exportIndex":0,"name":"validateState","kind":"function","signature":"validateState(state)","summary":"Validate a saved state for corruption only (finite, positive size). Position reachability is no longer a reject reason — clampToViewport() moves an off-screen window back into view instead of discarding the saved state."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/WindowStateStore.md","moduleTitle":"shell/WindowStateStore","source":"webgpu-os/shell/WindowStateStore.js","import":"/webgpu-os/shell/WindowStateStore.js","sourceHash":"1a279ceb82bdc923369c5aaee7c68a793448c6ef4c21ccd9d7342efda82d167a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/WindowStateStore.js#0001:clampToViewport","exportIndex":1,"name":"clampToViewport","kind":"function","signature":"clampToViewport(state)","summary":"Reposition a state so a reachable strip of its titlebar stays inside the work area. Handles smaller screens / resolution changes / disconnected monitors — the window is pulled back on-screen rather than left unclickable."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/WindowStateStore.md","moduleTitle":"shell/WindowStateStore","source":"webgpu-os/shell/WindowStateStore.js","import":"/webgpu-os/shell/WindowStateStore.js","sourceHash":"1a279ceb82bdc923369c5aaee7c68a793448c6ef4c21ccd9d7342efda82d167a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/WindowStateStore.js#0002:clampStateSize","exportIndex":2,"name":"clampStateSize","kind":"function","signature":"clampStateSize(state)","summary":"Clamp a state's width and height so neither falls below 15% nor exceeds 100% of the available desktop area.  Position is preserved as-is."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/WindowStateStore.md","moduleTitle":"shell/WindowStateStore","source":"webgpu-os/shell/WindowStateStore.js","import":"/webgpu-os/shell/WindowStateStore.js","sourceHash":"1a279ceb82bdc923369c5aaee7c68a793448c6ef4c21ccd9d7342efda82d167a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/WindowStateStore.js#0003:loadState","exportIndex":3,"name":"loadState","kind":"function","signature":"loadState(appId)","summary":"Load the saved window state for an app. Returns null when nothing is stored yet."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/WindowStateStore.md","moduleTitle":"shell/WindowStateStore","source":"webgpu-os/shell/WindowStateStore.js","import":"/webgpu-os/shell/WindowStateStore.js","sourceHash":"1a279ceb82bdc923369c5aaee7c68a793448c6ef4c21ccd9d7342efda82d167a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/WindowStateStore.js#0004:saveState","exportIndex":4,"name":"saveState","kind":"function","signature":"saveState(appId, { x, y, width, height, maximized = false })","summary":"Persist the current window state for an app."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/WindowStateStore.md","moduleTitle":"shell/WindowStateStore","source":"webgpu-os/shell/WindowStateStore.js","import":"/webgpu-os/shell/WindowStateStore.js","sourceHash":"1a279ceb82bdc923369c5aaee7c68a793448c6ef4c21ccd9d7342efda82d167a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/WindowStateStore.js#0005:clearState","exportIndex":5,"name":"clearState","kind":"function","signature":"clearState(appId)","summary":"Remove the saved window state for an app (e.g. after a reset)."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/WindowStateStore.md","moduleTitle":"shell/WindowStateStore","source":"webgpu-os/shell/WindowStateStore.js","import":"/webgpu-os/shell/WindowStateStore.js","sourceHash":"1a279ceb82bdc923369c5aaee7c68a793448c6ef4c21ccd9d7342efda82d167a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/WindowStateStore.js#0006:clearAllStates","exportIndex":6,"name":"clearAllStates","kind":"function","signature":"clearAllStates()","summary":"Remove every persisted window geometry record."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/app-icon.md","moduleTitle":"shell/app-icon","source":"webgpu-os/shell/app-icon.js","import":"/webgpu-os/shell/app-icon.js","sourceHash":"475e024270e296f1e5a7a55745f8660d872a84b72af7f85451b1f616c4e33d78","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/shell/app-icon.js","title":"shell/app-icon","summary":"app-icon.js — custom app icons: emoji/glyph OR an uploaded/online image, animated GIF/WebP, or a short video. A manifest `icon` value may be ANY of: • an emoji / short glyph     — \"🧩\"  (default; what the shell drew before) • a still image data/URL     — data:image/… or https://…/x.png • an ANIMATED image          — animated GIF / WebP (plays via <img>) • a short video              — data:video/… or https://…/x.webm (muted loop) renderAppIcon() paints the right element into a container — drop-in for the old `el.textContent = manifest.icon`. Media icons size to the container's font-size (1em square), so each call site keeps its existing sizing. fileToIcon()/urlToIcon() turn a chosen file or remote URL into a compact, self-contained data URL (downscaled + size-capped; animation preserved when it fits) suitable for embedding in a manifest at compile time.","exportCount":7}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/app-icon.md","moduleTitle":"shell/app-icon","source":"webgpu-os/shell/app-icon.js","import":"/webgpu-os/shell/app-icon.js","sourceHash":"475e024270e296f1e5a7a55745f8660d872a84b72af7f85451b1f616c4e33d78","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/app-icon.js#0000:isImageIcon","exportIndex":0,"name":"isImageIcon","kind":"function","signature":"isImageIcon(v)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/app-icon.md","moduleTitle":"shell/app-icon","source":"webgpu-os/shell/app-icon.js","import":"/webgpu-os/shell/app-icon.js","sourceHash":"475e024270e296f1e5a7a55745f8660d872a84b72af7f85451b1f616c4e33d78","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/app-icon.js#0001:isVideoIcon","exportIndex":1,"name":"isVideoIcon","kind":"function","signature":"isVideoIcon(v)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/app-icon.md","moduleTitle":"shell/app-icon","source":"webgpu-os/shell/app-icon.js","import":"/webgpu-os/shell/app-icon.js","sourceHash":"475e024270e296f1e5a7a55745f8660d872a84b72af7f85451b1f616c4e33d78","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/app-icon.js#0002:isMediaIcon","exportIndex":2,"name":"isMediaIcon","kind":"function","signature":"isMediaIcon(v)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/app-icon.md","moduleTitle":"shell/app-icon","source":"webgpu-os/shell/app-icon.js","import":"/webgpu-os/shell/app-icon.js","sourceHash":"475e024270e296f1e5a7a55745f8660d872a84b72af7f85451b1f616c4e33d78","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/app-icon.js#0003:renderAppIcon","exportIndex":3,"name":"renderAppIcon","kind":"function","signature":"renderAppIcon(container, icon, { fallback = '▪' } = {})","summary":"Render `icon` into `container` (cleared first). Emoji/glyph → text (so the caller's font-size applies); image/video → a 1em-square media element."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/app-icon.md","moduleTitle":"shell/app-icon","source":"webgpu-os/shell/app-icon.js","import":"/webgpu-os/shell/app-icon.js","sourceHash":"475e024270e296f1e5a7a55745f8660d872a84b72af7f85451b1f616c4e33d78","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/app-icon.js#0004:fileToIcon","exportIndex":4,"name":"fileToIcon","kind":"function","signature":"async fileToIcon(file)","summary":"Turn a chosen File into a compact icon data URL. • video      → kept as-is if ≤ VIDEO_CAP (muted loop). • animated   → kept as-is if ≤ FULL_CAP (preserves animation); else flattened. • SVG        → kept as-is if small; else rasterised. • other img  → center-cropped + downscaled to a 128² WebP."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/app-icon.md","moduleTitle":"shell/app-icon","source":"webgpu-os/shell/app-icon.js","import":"/webgpu-os/shell/app-icon.js","sourceHash":"475e024270e296f1e5a7a55745f8660d872a84b72af7f85451b1f616c4e33d78","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/app-icon.js#0005:bytesToIcon","exportIndex":5,"name":"bytesToIcon","kind":"function","signature":"async bytesToIcon(bytes, filename = 'icon')","summary":"Build an icon data URL from raw bundled file bytes (Uint8Array/ArrayBuffer) or a string (SVG/text), inferring the MIME type from the filename. Used to auto-detect an icon from an app's own files at ingest time."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/app-icon.md","moduleTitle":"shell/app-icon","source":"webgpu-os/shell/app-icon.js","import":"/webgpu-os/shell/app-icon.js","sourceHash":"475e024270e296f1e5a7a55745f8660d872a84b72af7f85451b1f616c4e33d78","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/app-icon.js#0006:urlToIcon","exportIndex":6,"name":"urlToIcon","kind":"function","signature":"async urlToIcon(url, { fetchImpl = null } = {})","summary":"Fetch a remote image/video URL and embed it as a compact data URL (so the icon is self-contained — no live remote dependency, no privacy leak at render time). Cross-origin hosts that block CORS will reject; the caller should suggest downloading + uploading instead."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/desktop/WindowLayoutEngine.md","moduleTitle":"shell/desktop/WindowLayoutEngine","source":"webgpu-os/shell/desktop/WindowLayoutEngine.js","import":"/webgpu-os/shell/desktop/WindowLayoutEngine.js","sourceHash":"adf7b0a642521498c30807e5765f6df7bf9f7ad6f40a75d9dd63438ea741d1ec","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/shell/desktop/WindowLayoutEngine.js","title":"shell/desktop/WindowLayoutEngine","summary":"Pure window-layout geometry shared by the desktop shell and Theme Manager.","exportCount":4}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/desktop/WindowLayoutEngine.md","moduleTitle":"shell/desktop/WindowLayoutEngine","source":"webgpu-os/shell/desktop/WindowLayoutEngine.js","import":"/webgpu-os/shell/desktop/WindowLayoutEngine.js","sourceHash":"adf7b0a642521498c30807e5765f6df7bf9f7ad6f40a75d9dd63438ea741d1ec","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/desktop/WindowLayoutEngine.js#0000:normalizeWorkArea","exportIndex":0,"name":"normalizeWorkArea","kind":"function","signature":"normalizeWorkArea(area = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/desktop/WindowLayoutEngine.md","moduleTitle":"shell/desktop/WindowLayoutEngine","source":"webgpu-os/shell/desktop/WindowLayoutEngine.js","import":"/webgpu-os/shell/desktop/WindowLayoutEngine.js","sourceHash":"adf7b0a642521498c30807e5765f6df7bf9f7ad6f40a75d9dd63438ea741d1ec","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/desktop/WindowLayoutEngine.js#0001:computeLayoutRect","exportIndex":1,"name":"computeLayoutRect","kind":"function","signature":"computeLayoutRect(layout, inputArea, inputGap = 8)","summary":"Compute a pixel rect for a named layout. Gaps are applied at outer and inner edges."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/desktop/WindowLayoutEngine.md","moduleTitle":"shell/desktop/WindowLayoutEngine","source":"webgpu-os/shell/desktop/WindowLayoutEngine.js","import":"/webgpu-os/shell/desktop/WindowLayoutEngine.js","sourceHash":"adf7b0a642521498c30807e5765f6df7bf9f7ad6f40a75d9dd63438ea741d1ec","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/desktop/WindowLayoutEngine.js#0002:detectEdgeLayout","exportIndex":2,"name":"detectEdgeLayout","kind":"function","signature":"detectEdgeLayout(pointer, inputArea, threshold = 34)","summary":"Resolve an edge/corner pointer position into a snap layout."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/desktop/WindowLayoutEngine.md","moduleTitle":"shell/desktop/WindowLayoutEngine","source":"webgpu-os/shell/desktop/WindowLayoutEngine.js","import":"/webgpu-os/shell/desktop/WindowLayoutEngine.js","sourceHash":"adf7b0a642521498c30807e5765f6df7bf9f7ad6f40a75d9dd63438ea741d1ec","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/desktop/WindowLayoutEngine.js#0003:SNAP_LAYOUTS","exportIndex":3,"name":"SNAP_LAYOUTS","kind":"constant","signature":"SNAP_LAYOUTS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/desktop/shellEnhancements.md","moduleTitle":"shell/desktop/shellEnhancements","source":"webgpu-os/shell/desktop/shellEnhancements.js","import":"/webgpu-os/shell/desktop/shellEnhancements.js","sourceHash":"3e14685cf5760114b05b4e7165df66ae11297510dab1ee00aedf2f5344fdf83a","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/shell/desktop/shellEnhancements.js","title":"shell/desktop/shellEnhancements","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/desktop/shellEnhancements.md","moduleTitle":"shell/desktop/shellEnhancements","source":"webgpu-os/shell/desktop/shellEnhancements.js","import":"/webgpu-os/shell/desktop/shellEnhancements.js","sourceHash":"3e14685cf5760114b05b4e7165df66ae11297510dab1ee00aedf2f5344fdf83a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/desktop/shellEnhancements.js#0000:installShellEnhancements","exportIndex":0,"name":"installShellEnhancements","kind":"function","signature":"installShellEnhancements(desktop)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/desktop/windowActions.md","moduleTitle":"shell/desktop/windowActions","source":"webgpu-os/shell/desktop/windowActions.js","import":"/webgpu-os/shell/desktop/windowActions.js","sourceHash":"ff92d70212935451f682e9abf1f0fbcc6e104a77e36344f2958b003732f07859","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/shell/desktop/windowActions.js","title":"shell/desktop/windowActions","summary":"","exportCount":5}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/desktop/windowActions.md","moduleTitle":"shell/desktop/windowActions","source":"webgpu-os/shell/desktop/windowActions.js","import":"/webgpu-os/shell/desktop/windowActions.js","sourceHash":"ff92d70212935451f682e9abf1f0fbcc6e104a77e36344f2958b003732f07859","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/desktop/windowActions.js#0000:bindViewportReclamp","exportIndex":0,"name":"bindViewportReclamp","kind":"function","signature":"bindViewportReclamp(desktop)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/desktop/windowActions.md","moduleTitle":"shell/desktop/windowActions","source":"webgpu-os/shell/desktop/windowActions.js","import":"/webgpu-os/shell/desktop/windowActions.js","sourceHash":"ff92d70212935451f682e9abf1f0fbcc6e104a77e36344f2958b003732f07859","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/desktop/windowActions.js#0001:unbindViewportReclamp","exportIndex":1,"name":"unbindViewportReclamp","kind":"function","signature":"unbindViewportReclamp(desktop)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/desktop/windowActions.md","moduleTitle":"shell/desktop/windowActions","source":"webgpu-os/shell/desktop/windowActions.js","import":"/webgpu-os/shell/desktop/windowActions.js","sourceHash":"ff92d70212935451f682e9abf1f0fbcc6e104a77e36344f2958b003732f07859","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/desktop/windowActions.js#0002:minimizePanel","exportIndex":2,"name":"minimizePanel","kind":"function","signature":"minimizePanel(desktop, appId)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/desktop/windowActions.md","moduleTitle":"shell/desktop/windowActions","source":"webgpu-os/shell/desktop/windowActions.js","import":"/webgpu-os/shell/desktop/windowActions.js","sourceHash":"ff92d70212935451f682e9abf1f0fbcc6e104a77e36344f2958b003732f07859","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/desktop/windowActions.js#0003:restorePanel","exportIndex":3,"name":"restorePanel","kind":"function","signature":"restorePanel(desktop, appId)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/desktop/windowActions.md","moduleTitle":"shell/desktop/windowActions","source":"webgpu-os/shell/desktop/windowActions.js","import":"/webgpu-os/shell/desktop/windowActions.js","sourceHash":"ff92d70212935451f682e9abf1f0fbcc6e104a77e36344f2958b003732f07859","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/desktop/windowActions.js#0004:focusPanel","exportIndex":4,"name":"focusPanel","kind":"function","signature":"focusPanel(desktop, appId)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/gpu-ui/GPUTextRenderer.md","moduleTitle":"shell/gpu-ui/GPUTextRenderer","source":"webgpu-os/shell/gpu-ui/GPUTextRenderer.js","import":"/webgpu-os/shell/gpu-ui/GPUTextRenderer.js","sourceHash":"c6ddd7ab2ecd267a78812eaa857bcc8f7f37488b116bfb55dd81ee1c00a9490c","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/shell/gpu-ui/GPUTextRenderer.js","title":"shell/gpu-ui/GPUTextRenderer","summary":"GPUTextRenderer.js — Level-4 GPU-native text. The browser gives us no GPU text primitive, so we rasterize each glyph ONCE with Canvas2D (white on transparent) and pack it into the engine's VGPUTextureAtlas. Drawing a string then becomes a run of tinted textured quads sampled from that atlas — fully GPU-composited, no DOM. Glyphs are cached per (sizePx, weight, char). Whitespace stores advance-only (no atlas region). Coordinates are CSS pixels, top-left origin, matching the compositor's quad space.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/gpu-ui/GPUTextRenderer.md","moduleTitle":"shell/gpu-ui/GPUTextRenderer","source":"webgpu-os/shell/gpu-ui/GPUTextRenderer.js","import":"/webgpu-os/shell/gpu-ui/GPUTextRenderer.js","sourceHash":"c6ddd7ab2ecd267a78812eaa857bcc8f7f37488b116bfb55dd81ee1c00a9490c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/gpu-ui/GPUTextRenderer.js#0000:GPUTextRenderer","exportIndex":0,"name":"GPUTextRenderer","kind":"class","signature":"class GPUTextRenderer","summary":"GPUTextRenderer.js — Level-4 GPU-native text. The browser gives us no GPU text primitive, so we rasterize each glyph ONCE with Canvas2D (white on transparent) and pack it into the engine's VGPUTextureAtlas. Drawing a string then becomes a run of tinted textured quads sampled from that atlas — fully GPU-composited, no DOM. Glyphs are cached per (sizePx, weight, char). Whitespace stores advance-only (no atlas region). Coordinates are CSS pixels, top-left origin, matching the compositor's quad space."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/gpu-ui/GPUUICompositor.md","moduleTitle":"shell/gpu-ui/GPUUICompositor","source":"webgpu-os/shell/gpu-ui/GPUUICompositor.js","import":"/webgpu-os/shell/gpu-ui/GPUUICompositor.js","sourceHash":"bb60cd3846e42dcd05d518e91164150eb159306f69676d029e25b7399b271d48","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/shell/gpu-ui/GPUUICompositor.js","title":"shell/gpu-ui/GPUUICompositor","summary":"GPUUICompositor.js — Level-4 GPU-native UI compositor (3D by default). Renders the desktop's windows as tinted textured quads in a real perspective scene on a full-screen WebGPU canvas. There is NO DOM in this path: text is rasterized into a glyph atlas (GPUTextRenderer) and everything — window surfaces, titlebars, glyphs — is one unified quad primitive. Camera: a perspective camera placed on +Z at d = (vpH/2)/tan(fov/2) so the z=0 plane maps 1:1 to CSS pixels. A window at z=0 with no tilt is therefore pixel-perfect and fully usable, yet it's a genuine 3D quad — depth (z) and tilt are first-class, focused windows come forward, and a subtle pointer parallax sells the 3D space. Coordinate spaces: - window-local px: origin top-left, +x right, +y down (what widgets author) - world units == CSS px, origin = viewport center, +Y up, desktop on z=0 - per-window model matrix maps local px → world (bakes centering + Y-flip) Transparency uses painter's order (windows sorted far→near, widgets in emit order) so there is no depth buffer and no coplanar z-fighting. Engine tech reused (no duplication): VirtualGPU (isolated instance), VGPUTextureAtlas (glyph/solid atlas), engine/core/math (camera + unproject).","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/gpu-ui/GPUUICompositor.md","moduleTitle":"shell/gpu-ui/GPUUICompositor","source":"webgpu-os/shell/gpu-ui/GPUUICompositor.js","import":"/webgpu-os/shell/gpu-ui/GPUUICompositor.js","sourceHash":"bb60cd3846e42dcd05d518e91164150eb159306f69676d029e25b7399b271d48","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/gpu-ui/GPUUICompositor.js#0000:GPUUICompositor","exportIndex":0,"name":"GPUUICompositor","kind":"class","signature":"class GPUUICompositor","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/gpu-ui/GPUWindow.md","moduleTitle":"shell/gpu-ui/GPUWindow","source":"webgpu-os/shell/gpu-ui/GPUWindow.js","import":"/webgpu-os/shell/gpu-ui/GPUWindow.js","sourceHash":"36c81fe141caae9f4992279385f2c9beb8c70987f95dc19c7a764de7528a167c","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/shell/gpu-ui/GPUWindow.js","title":"shell/gpu-ui/GPUWindow","summary":"GPUWindow.js — a GPU-native window for the Level-4 3D UI. The window is authored entirely in LOCAL pixel space (origin = top-left, +x right, +y down) and emits tinted atlas quads through the compositor's sink. It knows nothing about the camera: the compositor builds a per-window model matrix from this window's desktop-space rect + 3D placement (z/tilt) and applies the shared viewProj. This keeps widgets camera-agnostic so the same window is pixel-perfect head-on (z=0) or tilted in the immersive spread. Hit-testing is done in local space (compositor unprojects the pointer ray onto the window plane, then asks the window what was hit).","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/gpu-ui/GPUWindow.md","moduleTitle":"shell/gpu-ui/GPUWindow","source":"webgpu-os/shell/gpu-ui/GPUWindow.js","import":"/webgpu-os/shell/gpu-ui/GPUWindow.js","sourceHash":"36c81fe141caae9f4992279385f2c9beb8c70987f95dc19c7a764de7528a167c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/gpu-ui/GPUWindow.js#0000:GPUWindow","exportIndex":0,"name":"GPUWindow","kind":"class","signature":"class GPUWindow","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/gpu-ui/GPUWindowCapture.md","moduleTitle":"shell/gpu-ui/GPUWindowCapture","source":"webgpu-os/shell/gpu-ui/GPUWindowCapture.js","import":"/webgpu-os/shell/gpu-ui/GPUWindowCapture.js","sourceHash":"5625f7d4aaf3b332597674425fc4d9398784a135d0e306ec818524dd068121e7","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/shell/gpu-ui/GPUWindowCapture.js","title":"shell/gpu-ui/GPUWindowCapture","summary":"GPUWindowCapture.js — live per-window content via the Element Capture API. Chrome 132+ lets us restrict a getDisplayMedia track to a single DOM element (RestrictionTarget + track.restrictTo), yielding a live MediaStream of just that element's rendered subtree (no occlusion / \"hall of mirrors\"). We take ONE getDisplayMedia('this tab') stream, clone its track per window, restrict each clone to that app's panel element, and feed a hidden <video>. The GPU compositor then copyExternalImageToTexture()s each video frame into the window's content-atlas region every frame → fully live GPU windows. Requirements (per spec) on each captured element: it must form a stacking context (isolation:isolate) and be flattened (transform-style:flat) with an opaque background. Desktop applies these before attaching. Gracefully unsupported on non-Chromium / older builds (supported=false) so callers fall back to extension snapshot, then native chrome.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/gpu-ui/GPUWindowCapture.md","moduleTitle":"shell/gpu-ui/GPUWindowCapture","source":"webgpu-os/shell/gpu-ui/GPUWindowCapture.js","import":"/webgpu-os/shell/gpu-ui/GPUWindowCapture.js","sourceHash":"5625f7d4aaf3b332597674425fc4d9398784a135d0e306ec818524dd068121e7","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/gpu-ui/GPUWindowCapture.js#0000:GPUWindowCapture","exportIndex":0,"name":"GPUWindowCapture","kind":"class","signature":"class GPUWindowCapture","summary":"GPUWindowCapture.js — live per-window content via the Element Capture API. Chrome 132+ lets us restrict a getDisplayMedia track to a single DOM element (RestrictionTarget + track.restrictTo), yielding a live MediaStream of just that element's rendered subtree (no occlusion / \"hall of mirrors\"). We take ONE getDisplayMedia('this tab') stream, clone its track per window, restrict each clone to that app's panel element, and feed a hidden <video>. The GPU compositor then copyExternalImageToTexture()s each video frame into the window's content-atlas region every frame → fully live GPU windows. Requirements (per spec) on each captured element: it must form a stacking context (isolation:isolate) and be flattened (transform-style:flat) with an opaque background. Desktop applies these before attaching. Gracefully unsupported on non-Chromium / older builds (supported=false) so callers fall back to extension snapshot, then native chrome."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/immersive/Immersive3DCompositor.md","moduleTitle":"shell/immersive/Immersive3DCompositor","source":"webgpu-os/shell/immersive/Immersive3DCompositor.js","import":"/webgpu-os/shell/immersive/Immersive3DCompositor.js","sourceHash":"99e02390496926758ed81f97da9676df92e42a1ff4c0ed95a7c1eef442a86717","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/shell/immersive/Immersive3DCompositor.js","title":"shell/immersive/Immersive3DCompositor","summary":"Immersive3DCompositor.js — Level-3 GPU compositor (Exposé-style 3D desktop). Captures every live DOM panel to a GPU texture (via PanelCapture), then renders each as a textured quad in a perspective 3D scene on a full-screen WebGPU overlay canvas. ALL matrix/camera math comes from the engine's direct-named shader-math library (engine/core/math) — we only add the WebGPU plumbing and the DOM→bitmap bridge the browser doesn't provide. Coordinate system (pixel-perfect at immersion=0): - World units == CSS pixels. Origin at viewport center, +Y up, desktop on z=0. - Camera sits on +Z at distance d = (vpH/2)/tan(fov/2) so the z=0 plane fills the viewport exactly. A panel quad at z=0 therefore maps 1:1 to its DOM rect. - immersion ∈ [0,1] pushes panels apart in Z by stacking order and adds a gentle mouse-driven camera yaw/pitch for parallax — the \"3D world\" feel. Lifecycle: const c = new Immersive3DCompositor({ device, getPanels }); c.mount();                 // create overlay canvas + pipeline await c.enter();           // capture panels, hide DOM, animate in await c.exit(panelId?);    // animate out, restore DOM (focus panelId if given) c.unmount();               // full teardown Engine math used: mat4Identity, mat4Translate, mat4Scale, mat4Multiply, mat4LookAt, mat4PerspectiveDegWebGPU.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/immersive/Immersive3DCompositor.md","moduleTitle":"shell/immersive/Immersive3DCompositor","source":"webgpu-os/shell/immersive/Immersive3DCompositor.js","import":"/webgpu-os/shell/immersive/Immersive3DCompositor.js","sourceHash":"99e02390496926758ed81f97da9676df92e42a1ff4c0ed95a7c1eef442a86717","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/immersive/Immersive3DCompositor.js#0000:Immersive3DCompositor","exportIndex":0,"name":"Immersive3DCompositor","kind":"class","signature":"class Immersive3DCompositor","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/immersive/PanelCapture.md","moduleTitle":"shell/immersive/PanelCapture","source":"webgpu-os/shell/immersive/PanelCapture.js","import":"/webgpu-os/shell/immersive/PanelCapture.js","sourceHash":"cc2375642716792ee169ce22d73849d6ca225b814efcb65d53bfd4e0b9e296ba","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/shell/immersive/PanelCapture.js","title":"shell/immersive/PanelCapture","summary":"⚠️ SUPERSEDED for GPU use. The bitmaps this produces are PERMANENTLY cross-origin-tainted (SVG <foreignObject> rule) and are REJECTED by `copyExternalImageToTexture`. The immersive compositor now captures the viewport via the extension bridge (chrome.tabs.captureVisibleTab → Desktop._captureViewport), which yields untainted, GPU-uploadable pixels. This file is kept only for display-only canvas uses (which tolerate taint). PanelCapture.js — live DOM element → ImageBitmap via SVG foreignObject. Everything else in the immersive compositor (3D quads, perspective camera, texture upload) is done with the engine's shader-math + WebGPU stack. But the browser provides no API to turn an arbitrary <div> (text + Plauna widgets) into pixels — `createImageBitmap` only accepts <img>/<canvas>/<video>/Blob. The zero-dependency route is SVG <foreignObject>: clone the element, inline its computed styles (a standalone SVG blob has no access to the page's stylesheets), serialize to XHTML, wrap in an SVG, rasterize through an <img>, then `createImageBitmap`. The resulting bitmap is uploaded by the engine's TextureManager (`copyExternalImageToTexture`). Known limitations (inherent to foreignObject, documented for callers): - <canvas>/<video> children don't serialize (their live pixels are lost). - Cross-origin images taint and are skipped by the browser. - `backdrop-filter` is not honored inside foreignObject. - Custom web fonts must already be loaded (we don't embed font files). Usage: const cap = new PanelCapture(); const bitmap = await cap.capture(panel.element, { scale: devicePixelRatio }); // → upload bitmap via engine TextureManager._uploadBitmap(bitmap, label) bitmap.close();","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/immersive/PanelCapture.md","moduleTitle":"shell/immersive/PanelCapture","source":"webgpu-os/shell/immersive/PanelCapture.js","import":"/webgpu-os/shell/immersive/PanelCapture.js","sourceHash":"cc2375642716792ee169ce22d73849d6ca225b814efcb65d53bfd4e0b9e296ba","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/immersive/PanelCapture.js#0000:PanelCapture","exportIndex":0,"name":"PanelCapture","kind":"class","signature":"class PanelCapture","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/overlay/AIOverlay.md","moduleTitle":"shell/overlay/AIOverlay","source":"webgpu-os/shell/overlay/AIOverlay.js","import":"/webgpu-os/shell/overlay/AIOverlay.js","sourceHash":"dfc863e6be9d029e4a62d0bf693ff499060c7178d3107999ad57d7d2efdbe818","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/shell/overlay/AIOverlay.js","title":"shell/overlay/AIOverlay","summary":"AIOverlay.js — shell-owned approval and elicitation popup. The surface is hidden unless the shared ElicitationManager has a pending request. It deliberately has no ambient bar, chat console, task browser, or timeline. Approval notes are bound to the exact request and elicitation and recorded before the resumed task can observe the decision promise.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/overlay/AIOverlay.md","moduleTitle":"shell/overlay/AIOverlay","source":"webgpu-os/shell/overlay/AIOverlay.js","import":"/webgpu-os/shell/overlay/AIOverlay.js","sourceHash":"dfc863e6be9d029e4a62d0bf693ff499060c7178d3107999ad57d7d2efdbe818","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/overlay/AIOverlay.js#0000:AIOverlay","exportIndex":0,"name":"AIOverlay","kind":"class","signature":"class AIOverlay","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/overlay/AdaptationReviewPolicy.md","moduleTitle":"shell/overlay/AdaptationReviewPolicy","source":"webgpu-os/shell/overlay/AdaptationReviewPolicy.js","import":"/webgpu-os/shell/overlay/AdaptationReviewPolicy.js","sourceHash":"0a759c8c7e538967f38292c92715ea4170c68268a370dd21f63e6a1b444c85e0","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/shell/overlay/AdaptationReviewPolicy.js","title":"shell/overlay/AdaptationReviewPolicy","summary":"The shell gives adaptation reviews distinct trusted UI only when the request is the exact AI Echo operation. Caller-controlled schema labels alone are never enough to obtain privileged wording or non-blocking decision behavior.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/overlay/AdaptationReviewPolicy.md","moduleTitle":"shell/overlay/AdaptationReviewPolicy","source":"webgpu-os/shell/overlay/AdaptationReviewPolicy.js","import":"/webgpu-os/shell/overlay/AdaptationReviewPolicy.js","sourceHash":"0a759c8c7e538967f38292c92715ea4170c68268a370dd21f63e6a1b444c85e0","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/overlay/AdaptationReviewPolicy.js#0000:isTrustedAdaptationReview","exportIndex":0,"name":"isTrustedAdaptationReview","kind":"function","signature":"isTrustedAdaptationReview(elicitation = {})","summary":"The shell gives adaptation reviews distinct trusted UI only when the request is the exact AI Echo operation. Caller-controlled schema labels alone are never enough to obtain privileged wording or non-blocking decision behavior."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/overlay/ApprovalCard.md","moduleTitle":"shell/overlay/ApprovalCard","source":"webgpu-os/shell/overlay/ApprovalCard.js","import":"/webgpu-os/shell/overlay/ApprovalCard.js","sourceHash":"7655cf6b5d6884edff3083c89af8e3f3bc9a766273a0548a0571ff7534b72aab","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/shell/overlay/ApprovalCard.js","title":"shell/overlay/ApprovalCard","summary":"ApprovalCard.js — overlay card for a pending AI tool-call approval. Driven through the SAME ElicitationManager as questions (an approval is a boolean elicitation whose schema carries { kind:'approval', toolName, params, risk }) — no parallel approval queue. Parameters are shown through ParameterPreviewer (Phase 5) so secrets are masked before they ever hit the DOM.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/overlay/ApprovalCard.md","moduleTitle":"shell/overlay/ApprovalCard","source":"webgpu-os/shell/overlay/ApprovalCard.js","import":"/webgpu-os/shell/overlay/ApprovalCard.js","sourceHash":"7655cf6b5d6884edff3083c89af8e3f3bc9a766273a0548a0571ff7534b72aab","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/overlay/ApprovalCard.js#0000:createApprovalCard","exportIndex":0,"name":"createApprovalCard","kind":"function","signature":"createApprovalCard(elicitation, { onApprove, onDeny })","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/overlay/ElicitationCard.md","moduleTitle":"shell/overlay/ElicitationCard","source":"webgpu-os/shell/overlay/ElicitationCard.js","import":"/webgpu-os/shell/overlay/ElicitationCard.js","sourceHash":"a1160fee216370a10789fed1dceb4a720d4364078448965669ff4394080aa822","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/shell/overlay/ElicitationCard.js","title":"shell/overlay/ElicitationCard","summary":"ElicitationCard.js — overlay card for a mid-task AI question to the user (Phase 4 ElicitationManager). Renders a text input, or buttons when the schema declares an enum of options. Answer → respond(); dismiss → decline().","exportCount":2}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/overlay/ElicitationCard.md","moduleTitle":"shell/overlay/ElicitationCard","source":"webgpu-os/shell/overlay/ElicitationCard.js","import":"/webgpu-os/shell/overlay/ElicitationCard.js","sourceHash":"a1160fee216370a10789fed1dceb4a720d4364078448965669ff4394080aa822","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/overlay/ElicitationCard.js#0000:taskCheckpointChoices","exportIndex":0,"name":"taskCheckpointChoices","kind":"function","signature":"taskCheckpointChoices(schema)","summary":"Validate the kernel-owned checkpoint envelope before exposing choices. The UI does not infer choices or authority from prompts. It only renders the exact bounded values supplied by the active task elicitation."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/overlay/ElicitationCard.md","moduleTitle":"shell/overlay/ElicitationCard","source":"webgpu-os/shell/overlay/ElicitationCard.js","import":"/webgpu-os/shell/overlay/ElicitationCard.js","sourceHash":"a1160fee216370a10789fed1dceb4a720d4364078448965669ff4394080aa822","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/overlay/ElicitationCard.js#0001:createElicitationCard","exportIndex":1,"name":"createElicitationCard","kind":"function","signature":"createElicitationCard(elicitation, { onRespond, onDecline })","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/start-menu/actions.md","moduleTitle":"shell/start-menu/actions","source":"webgpu-os/shell/start-menu/actions.js","import":"/webgpu-os/shell/start-menu/actions.js","sourceHash":"9ac38f01ef11e0056770f914cae4bbcb4720982ff22da5987c7ed20e3a01fb6d","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/shell/start-menu/actions.js","title":"shell/start-menu/actions","summary":"","exportCount":3}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/start-menu/actions.md","moduleTitle":"shell/start-menu/actions","source":"webgpu-os/shell/start-menu/actions.js","import":"/webgpu-os/shell/start-menu/actions.js","sourceHash":"9ac38f01ef11e0056770f914cae4bbcb4720982ff22da5987c7ed20e3a01fb6d","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/start-menu/actions.js#0000:makeDraggable","exportIndex":0,"name":"makeDraggable","kind":"function","signature":"makeDraggable(menu, node, app)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/start-menu/actions.md","moduleTitle":"shell/start-menu/actions","source":"webgpu-os/shell/start-menu/actions.js","import":"/webgpu-os/shell/start-menu/actions.js","sourceHash":"9ac38f01ef11e0056770f914cae4bbcb4720982ff22da5987c7ed20e3a01fb6d","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/start-menu/actions.js#0001:launchApp","exportIndex":1,"name":"launchApp","kind":"function","signature":"launchApp(menu, app)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/start-menu/actions.md","moduleTitle":"shell/start-menu/actions","source":"webgpu-os/shell/start-menu/actions.js","import":"/webgpu-os/shell/start-menu/actions.js","sourceHash":"9ac38f01ef11e0056770f914cae4bbcb4720982ff22da5987c7ed20e3a01fb6d","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/start-menu/actions.js#0002:addToDesktop","exportIndex":2,"name":"addToDesktop","kind":"function","signature":"addToDesktop(menu, appId)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/start-menu/apps.md","moduleTitle":"shell/start-menu/apps","source":"webgpu-os/shell/start-menu/apps.js","import":"/webgpu-os/shell/start-menu/apps.js","sourceHash":"8fe077a1ddea62f8145c5b94b96637446b0009f40645ffbf977ffe423ddcc42d","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/shell/start-menu/apps.js","title":"shell/start-menu/apps","summary":"","exportCount":6}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/start-menu/apps.md","moduleTitle":"shell/start-menu/apps","source":"webgpu-os/shell/start-menu/apps.js","import":"/webgpu-os/shell/start-menu/apps.js","sourceHash":"8fe077a1ddea62f8145c5b94b96637446b0009f40645ffbf977ffe423ddcc42d","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/start-menu/apps.js#0000:visibleApps","exportIndex":0,"name":"visibleApps","kind":"function","signature":"visibleApps()","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/start-menu/apps.md","moduleTitle":"shell/start-menu/apps","source":"webgpu-os/shell/start-menu/apps.js","import":"/webgpu-os/shell/start-menu/apps.js","sourceHash":"8fe077a1ddea62f8145c5b94b96637446b0009f40645ffbf977ffe423ddcc42d","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/start-menu/apps.js#0001:searchApps","exportIndex":1,"name":"searchApps","kind":"function","signature":"searchApps(query)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/start-menu/apps.md","moduleTitle":"shell/start-menu/apps","source":"webgpu-os/shell/start-menu/apps.js","import":"/webgpu-os/shell/start-menu/apps.js","sourceHash":"8fe077a1ddea62f8145c5b94b96637446b0009f40645ffbf977ffe423ddcc42d","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/start-menu/apps.js#0002:groupAppsByCategory","exportIndex":2,"name":"groupAppsByCategory","kind":"function","signature":"groupAppsByCategory(apps)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/start-menu/apps.md","moduleTitle":"shell/start-menu/apps","source":"webgpu-os/shell/start-menu/apps.js","import":"/webgpu-os/shell/start-menu/apps.js","sourceHash":"8fe077a1ddea62f8145c5b94b96637446b0009f40645ffbf977ffe423ddcc42d","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/start-menu/apps.js#0003:categoryLabel","exportIndex":3,"name":"categoryLabel","kind":"function","signature":"categoryLabel(category)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/start-menu/apps.md","moduleTitle":"shell/start-menu/apps","source":"webgpu-os/shell/start-menu/apps.js","import":"/webgpu-os/shell/start-menu/apps.js","sourceHash":"8fe077a1ddea62f8145c5b94b96637446b0009f40645ffbf977ffe423ddcc42d","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/start-menu/apps.js#0004:categoryIcon","exportIndex":4,"name":"categoryIcon","kind":"function","signature":"categoryIcon(category)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/start-menu/apps.md","moduleTitle":"shell/start-menu/apps","source":"webgpu-os/shell/start-menu/apps.js","import":"/webgpu-os/shell/start-menu/apps.js","sourceHash":"8fe077a1ddea62f8145c5b94b96637446b0009f40645ffbf977ffe423ddcc42d","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/start-menu/apps.js#0005:appMap","exportIndex":5,"name":"appMap","kind":"function","signature":"appMap(apps)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/start-menu/constants.md","moduleTitle":"shell/start-menu/constants","source":"webgpu-os/shell/start-menu/constants.js","import":"/webgpu-os/shell/start-menu/constants.js","sourceHash":"6e2e924a8f0fd8022b1e0cad6eaa851e2c99613581d1f8502c9228002025f320","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/shell/start-menu/constants.js","title":"shell/start-menu/constants","summary":"","exportCount":8}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/start-menu/constants.md","moduleTitle":"shell/start-menu/constants","source":"webgpu-os/shell/start-menu/constants.js","import":"/webgpu-os/shell/start-menu/constants.js","sourceHash":"6e2e924a8f0fd8022b1e0cad6eaa851e2c99613581d1f8502c9228002025f320","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/start-menu/constants.js#0000:SYSTEM_CATEGORIES","exportIndex":0,"name":"SYSTEM_CATEGORIES","kind":"constant","signature":"SYSTEM_CATEGORIES","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/start-menu/constants.md","moduleTitle":"shell/start-menu/constants","source":"webgpu-os/shell/start-menu/constants.js","import":"/webgpu-os/shell/start-menu/constants.js","sourceHash":"6e2e924a8f0fd8022b1e0cad6eaa851e2c99613581d1f8502c9228002025f320","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/start-menu/constants.js#0001:LS_PINNED","exportIndex":1,"name":"LS_PINNED","kind":"constant","signature":"LS_PINNED","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/start-menu/constants.md","moduleTitle":"shell/start-menu/constants","source":"webgpu-os/shell/start-menu/constants.js","import":"/webgpu-os/shell/start-menu/constants.js","sourceHash":"6e2e924a8f0fd8022b1e0cad6eaa851e2c99613581d1f8502c9228002025f320","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/start-menu/constants.js#0002:LS_RECENT","exportIndex":2,"name":"LS_RECENT","kind":"constant","signature":"LS_RECENT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/start-menu/constants.md","moduleTitle":"shell/start-menu/constants","source":"webgpu-os/shell/start-menu/constants.js","import":"/webgpu-os/shell/start-menu/constants.js","sourceHash":"6e2e924a8f0fd8022b1e0cad6eaa851e2c99613581d1f8502c9228002025f320","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/start-menu/constants.js#0003:LS_COLLAPSED","exportIndex":3,"name":"LS_COLLAPSED","kind":"constant","signature":"LS_COLLAPSED","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/start-menu/constants.md","moduleTitle":"shell/start-menu/constants","source":"webgpu-os/shell/start-menu/constants.js","import":"/webgpu-os/shell/start-menu/constants.js","sourceHash":"6e2e924a8f0fd8022b1e0cad6eaa851e2c99613581d1f8502c9228002025f320","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/start-menu/constants.js#0004:LS_STATE","exportIndex":4,"name":"LS_STATE","kind":"constant","signature":"LS_STATE","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/start-menu/constants.md","moduleTitle":"shell/start-menu/constants","source":"webgpu-os/shell/start-menu/constants.js","import":"/webgpu-os/shell/start-menu/constants.js","sourceHash":"6e2e924a8f0fd8022b1e0cad6eaa851e2c99613581d1f8502c9228002025f320","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/start-menu/constants.js#0005:MAX_RECENT","exportIndex":5,"name":"MAX_RECENT","kind":"constant","signature":"MAX_RECENT","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/start-menu/constants.md","moduleTitle":"shell/start-menu/constants","source":"webgpu-os/shell/start-menu/constants.js","import":"/webgpu-os/shell/start-menu/constants.js","sourceHash":"6e2e924a8f0fd8022b1e0cad6eaa851e2c99613581d1f8502c9228002025f320","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/start-menu/constants.js#0006:DEFAULT_PINNED","exportIndex":6,"name":"DEFAULT_PINNED","kind":"constant","signature":"DEFAULT_PINNED","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/start-menu/constants.md","moduleTitle":"shell/start-menu/constants","source":"webgpu-os/shell/start-menu/constants.js","import":"/webgpu-os/shell/start-menu/constants.js","sourceHash":"6e2e924a8f0fd8022b1e0cad6eaa851e2c99613581d1f8502c9228002025f320","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/start-menu/constants.js#0007:CATEGORY_META","exportIndex":7,"name":"CATEGORY_META","kind":"constant","signature":"CATEGORY_META","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/start-menu/contextMenu.md","moduleTitle":"shell/start-menu/contextMenu","source":"webgpu-os/shell/start-menu/contextMenu.js","import":"/webgpu-os/shell/start-menu/contextMenu.js","sourceHash":"b619d903c48448de9205eea81414106b9769fc31f166c9476ae2007843271678","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/shell/start-menu/contextMenu.js","title":"shell/start-menu/contextMenu","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/start-menu/contextMenu.md","moduleTitle":"shell/start-menu/contextMenu","source":"webgpu-os/shell/start-menu/contextMenu.js","import":"/webgpu-os/shell/start-menu/contextMenu.js","sourceHash":"b619d903c48448de9205eea81414106b9769fc31f166c9476ae2007843271678","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/start-menu/contextMenu.js#0000:showContextMenu","exportIndex":0,"name":"showContextMenu","kind":"function","signature":"showContextMenu(menu, event, app)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/start-menu/contextMenu.md","moduleTitle":"shell/start-menu/contextMenu","source":"webgpu-os/shell/start-menu/contextMenu.js","import":"/webgpu-os/shell/start-menu/contextMenu.js","sourceHash":"b619d903c48448de9205eea81414106b9769fc31f166c9476ae2007843271678","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/start-menu/contextMenu.js#0001:dismissContextMenu","exportIndex":1,"name":"dismissContextMenu","kind":"function","signature":"dismissContextMenu(menu)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/start-menu/dom.md","moduleTitle":"shell/start-menu/dom","source":"webgpu-os/shell/start-menu/dom.js","import":"/webgpu-os/shell/start-menu/dom.js","sourceHash":"bbe2cc265d6c372df8dadc154ed45796541762e3759e16ff54dd8b44f5216780","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/shell/start-menu/dom.js","title":"shell/start-menu/dom","summary":"","exportCount":4}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/start-menu/dom.md","moduleTitle":"shell/start-menu/dom","source":"webgpu-os/shell/start-menu/dom.js","import":"/webgpu-os/shell/start-menu/dom.js","sourceHash":"bbe2cc265d6c372df8dadc154ed45796541762e3759e16ff54dd8b44f5216780","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/start-menu/dom.js#0000:el","exportIndex":0,"name":"el","kind":"function","signature":"el(tag, options = {}, children = [])","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/start-menu/dom.md","moduleTitle":"shell/start-menu/dom","source":"webgpu-os/shell/start-menu/dom.js","import":"/webgpu-os/shell/start-menu/dom.js","sourceHash":"bbe2cc265d6c372df8dadc154ed45796541762e3759e16ff54dd8b44f5216780","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/start-menu/dom.js#0001:append","exportIndex":1,"name":"append","kind":"function","signature":"append(parent, children = [])","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/start-menu/dom.md","moduleTitle":"shell/start-menu/dom","source":"webgpu-os/shell/start-menu/dom.js","import":"/webgpu-os/shell/start-menu/dom.js","sourceHash":"bbe2cc265d6c372df8dadc154ed45796541762e3759e16ff54dd8b44f5216780","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/start-menu/dom.js#0002:clear","exportIndex":2,"name":"clear","kind":"function","signature":"clear(node)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/start-menu/dom.md","moduleTitle":"shell/start-menu/dom","source":"webgpu-os/shell/start-menu/dom.js","import":"/webgpu-os/shell/start-menu/dom.js","sourceHash":"bbe2cc265d6c372df8dadc154ed45796541762e3759e16ff54dd8b44f5216780","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/start-menu/dom.js#0003:sectionTitle","exportIndex":3,"name":"sectionTitle","kind":"function","signature":"sectionTitle(label, action = null)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/start-menu/state.md","moduleTitle":"shell/start-menu/state","source":"webgpu-os/shell/start-menu/state.js","import":"/webgpu-os/shell/start-menu/state.js","sourceHash":"cf41f9c77cb56645e091a40ba33fd871be529814ab70846e307c0fe5eacb7d5a","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/shell/start-menu/state.js","title":"shell/start-menu/state","summary":"","exportCount":7}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/start-menu/state.md","moduleTitle":"shell/start-menu/state","source":"webgpu-os/shell/start-menu/state.js","import":"/webgpu-os/shell/start-menu/state.js","sourceHash":"cf41f9c77cb56645e091a40ba33fd871be529814ab70846e307c0fe5eacb7d5a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/start-menu/state.js#0000:loadPinned","exportIndex":0,"name":"loadPinned","kind":"function","signature":"loadPinned()","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/start-menu/state.md","moduleTitle":"shell/start-menu/state","source":"webgpu-os/shell/start-menu/state.js","import":"/webgpu-os/shell/start-menu/state.js","sourceHash":"cf41f9c77cb56645e091a40ba33fd871be529814ab70846e307c0fe5eacb7d5a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/start-menu/state.js#0001:savePinned","exportIndex":1,"name":"savePinned","kind":"function","signature":"savePinned(pinned)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/start-menu/state.md","moduleTitle":"shell/start-menu/state","source":"webgpu-os/shell/start-menu/state.js","import":"/webgpu-os/shell/start-menu/state.js","sourceHash":"cf41f9c77cb56645e091a40ba33fd871be529814ab70846e307c0fe5eacb7d5a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/start-menu/state.js#0002:loadRecent","exportIndex":2,"name":"loadRecent","kind":"function","signature":"loadRecent()","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/start-menu/state.md","moduleTitle":"shell/start-menu/state","source":"webgpu-os/shell/start-menu/state.js","import":"/webgpu-os/shell/start-menu/state.js","sourceHash":"cf41f9c77cb56645e091a40ba33fd871be529814ab70846e307c0fe5eacb7d5a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/start-menu/state.js#0003:saveRecent","exportIndex":3,"name":"saveRecent","kind":"function","signature":"saveRecent(recent)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/start-menu/state.md","moduleTitle":"shell/start-menu/state","source":"webgpu-os/shell/start-menu/state.js","import":"/webgpu-os/shell/start-menu/state.js","sourceHash":"cf41f9c77cb56645e091a40ba33fd871be529814ab70846e307c0fe5eacb7d5a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/start-menu/state.js#0004:loadCollapsed","exportIndex":4,"name":"loadCollapsed","kind":"function","signature":"loadCollapsed()","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/start-menu/state.md","moduleTitle":"shell/start-menu/state","source":"webgpu-os/shell/start-menu/state.js","import":"/webgpu-os/shell/start-menu/state.js","sourceHash":"cf41f9c77cb56645e091a40ba33fd871be529814ab70846e307c0fe5eacb7d5a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/start-menu/state.js#0005:saveCollapsed","exportIndex":5,"name":"saveCollapsed","kind":"function","signature":"saveCollapsed(collapsed)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/start-menu/state.md","moduleTitle":"shell/start-menu/state","source":"webgpu-os/shell/start-menu/state.js","import":"/webgpu-os/shell/start-menu/state.js","sourceHash":"cf41f9c77cb56645e091a40ba33fd871be529814ab70846e307c0fe5eacb7d5a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/start-menu/state.js#0006:trackRecent","exportIndex":6,"name":"trackRecent","kind":"function","signature":"trackRecent(recent, appId)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/start-menu/vfsPins.md","moduleTitle":"shell/start-menu/vfsPins","source":"webgpu-os/shell/start-menu/vfsPins.js","import":"/webgpu-os/shell/start-menu/vfsPins.js","sourceHash":"893570936613250079e791aad219976baa0312c18576f75b4bbf8d4a765cc656","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/shell/start-menu/vfsPins.js","title":"shell/start-menu/vfsPins","summary":"","exportCount":3}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/start-menu/vfsPins.md","moduleTitle":"shell/start-menu/vfsPins","source":"webgpu-os/shell/start-menu/vfsPins.js","import":"/webgpu-os/shell/start-menu/vfsPins.js","sourceHash":"893570936613250079e791aad219976baa0312c18576f75b4bbf8d4a765cc656","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/start-menu/vfsPins.js#0000:writePinFile","exportIndex":0,"name":"writePinFile","kind":"function","signature":"writePinFile(menu, appId)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/start-menu/vfsPins.md","moduleTitle":"shell/start-menu/vfsPins","source":"webgpu-os/shell/start-menu/vfsPins.js","import":"/webgpu-os/shell/start-menu/vfsPins.js","sourceHash":"893570936613250079e791aad219976baa0312c18576f75b4bbf8d4a765cc656","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/start-menu/vfsPins.js#0001:deletePinFile","exportIndex":1,"name":"deletePinFile","kind":"function","signature":"deletePinFile(menu, appId)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/start-menu/vfsPins.md","moduleTitle":"shell/start-menu/vfsPins","source":"webgpu-os/shell/start-menu/vfsPins.js","import":"/webgpu-os/shell/start-menu/vfsPins.js","sourceHash":"893570936613250079e791aad219976baa0312c18576f75b4bbf8d4a765cc656","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/start-menu/vfsPins.js#0002:initVFSPins","exportIndex":2,"name":"initVFSPins","kind":"function","signature":"async initVFSPins(menu)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/start-menu/views.md","moduleTitle":"shell/start-menu/views","source":"webgpu-os/shell/start-menu/views.js","import":"/webgpu-os/shell/start-menu/views.js","sourceHash":"559db81bee5b6bc48bb528afb076631f75a89f76ee51318ea572beb7626ea147","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/shell/start-menu/views.js","title":"shell/start-menu/views","summary":"","exportCount":3}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/start-menu/views.md","moduleTitle":"shell/start-menu/views","source":"webgpu-os/shell/start-menu/views.js","import":"/webgpu-os/shell/start-menu/views.js","sourceHash":"559db81bee5b6bc48bb528afb076631f75a89f76ee51318ea572beb7626ea147","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/start-menu/views.js#0000:buildShell","exportIndex":0,"name":"buildShell","kind":"function","signature":"buildShell(menu)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/start-menu/views.md","moduleTitle":"shell/start-menu/views","source":"webgpu-os/shell/start-menu/views.js","import":"/webgpu-os/shell/start-menu/views.js","sourceHash":"559db81bee5b6bc48bb528afb076631f75a89f76ee51318ea572beb7626ea147","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/start-menu/views.js#0001:renderAll","exportIndex":1,"name":"renderAll","kind":"function","signature":"renderAll(menu)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/start-menu/views.md","moduleTitle":"shell/start-menu/views","source":"webgpu-os/shell/start-menu/views.js","import":"/webgpu-os/shell/start-menu/views.js","sourceHash":"559db81bee5b6bc48bb528afb076631f75a89f76ee51318ea572beb7626ea147","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/start-menu/views.js#0002:renderSearch","exportIndex":2,"name":"renderSearch","kind":"function","signature":"renderSearch(menu, query)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/taskbar/appButtons.md","moduleTitle":"shell/taskbar/appButtons","source":"webgpu-os/shell/taskbar/appButtons.js","import":"/webgpu-os/shell/taskbar/appButtons.js","sourceHash":"beacc8e69e28926a2293c6b92d5d033851e0f4e93df5b5cc0c16f5a3cd160a89","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/shell/taskbar/appButtons.js","title":"shell/taskbar/appButtons","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/taskbar/appButtons.md","moduleTitle":"shell/taskbar/appButtons","source":"webgpu-os/shell/taskbar/appButtons.js","import":"/webgpu-os/shell/taskbar/appButtons.js","sourceHash":"beacc8e69e28926a2293c6b92d5d033851e0f4e93df5b5cc0c16f5a3cd160a89","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/taskbar/appButtons.js#0000:mountAppsArea","exportIndex":0,"name":"mountAppsArea","kind":"function","signature":"mountAppsArea(taskbar)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/taskbar/appButtons.md","moduleTitle":"shell/taskbar/appButtons","source":"webgpu-os/shell/taskbar/appButtons.js","import":"/webgpu-os/shell/taskbar/appButtons.js","sourceHash":"beacc8e69e28926a2293c6b92d5d033851e0f4e93df5b5cc0c16f5a3cd160a89","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/taskbar/appButtons.js#0001:bindProcessButtons","exportIndex":1,"name":"bindProcessButtons","kind":"function","signature":"bindProcessButtons(taskbar)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/taskbar/devBadge.md","moduleTitle":"shell/taskbar/devBadge","source":"webgpu-os/shell/taskbar/devBadge.js","import":"/webgpu-os/shell/taskbar/devBadge.js","sourceHash":"b22401d6d5428ab3b6c8cb2557e163ec196420d2ffb04a10d417897848397cc0","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/shell/taskbar/devBadge.js","title":"shell/taskbar/devBadge","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/taskbar/devBadge.md","moduleTitle":"shell/taskbar/devBadge","source":"webgpu-os/shell/taskbar/devBadge.js","import":"/webgpu-os/shell/taskbar/devBadge.js","sourceHash":"b22401d6d5428ab3b6c8cb2557e163ec196420d2ffb04a10d417897848397cc0","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/taskbar/devBadge.js#0000:mountDevBadge","exportIndex":0,"name":"mountDevBadge","kind":"function","signature":"mountDevBadge(taskbar)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/taskbar/devBadge.md","moduleTitle":"shell/taskbar/devBadge","source":"webgpu-os/shell/taskbar/devBadge.js","import":"/webgpu-os/shell/taskbar/devBadge.js","sourceHash":"b22401d6d5428ab3b6c8cb2557e163ec196420d2ffb04a10d417897848397cc0","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/taskbar/devBadge.js#0001:bindModeBadge","exportIndex":1,"name":"bindModeBadge","kind":"function","signature":"bindModeBadge(taskbar)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/taskbar/showDesktop.md","moduleTitle":"shell/taskbar/showDesktop","source":"webgpu-os/shell/taskbar/showDesktop.js","import":"/webgpu-os/shell/taskbar/showDesktop.js","sourceHash":"c4e391bd0a7f320aa16d0ec3efc7d5df3ae52b1acf7ad2bd852429e05c21d0aa","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/shell/taskbar/showDesktop.js","title":"shell/taskbar/showDesktop","summary":"showDesktop.js — the far-right \"Show desktop\" sliver (Windows-style). Click once to minimize every open window; click again to restore the same set. Mirrors the Win+D peek/minimize-all corner button. We track which panels are currently minimized via the kernel's panel events so the toggle stays correct even as the user opens/closes/minimizes windows manually.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/taskbar/showDesktop.md","moduleTitle":"shell/taskbar/showDesktop","source":"webgpu-os/shell/taskbar/showDesktop.js","import":"/webgpu-os/shell/taskbar/showDesktop.js","sourceHash":"c4e391bd0a7f320aa16d0ec3efc7d5df3ae52b1acf7ad2bd852429e05c21d0aa","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/taskbar/showDesktop.js#0000:mountShowDesktop","exportIndex":0,"name":"mountShowDesktop","kind":"function","signature":"mountShowDesktop(taskbar)","summary":"showDesktop.js — the far-right \"Show desktop\" sliver (Windows-style). Click once to minimize every open window; click again to restore the same set. Mirrors the Win+D peek/minimize-all corner button. We track which panels are currently minimized via the kernel's panel events so the toggle stays correct even as the user opens/closes/minimizes windows manually."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/taskbar/startButton.md","moduleTitle":"shell/taskbar/startButton","source":"webgpu-os/shell/taskbar/startButton.js","import":"/webgpu-os/shell/taskbar/startButton.js","sourceHash":"52ef8b3e9536c365149508f9b1728e17638e0bd2565ed59e2bf240e7f56ace00","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/shell/taskbar/startButton.js","title":"shell/taskbar/startButton","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/taskbar/startButton.md","moduleTitle":"shell/taskbar/startButton","source":"webgpu-os/shell/taskbar/startButton.js","import":"/webgpu-os/shell/taskbar/startButton.js","sourceHash":"52ef8b3e9536c365149508f9b1728e17638e0bd2565ed59e2bf240e7f56ace00","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/taskbar/startButton.js#0000:mountStartButton","exportIndex":0,"name":"mountStartButton","kind":"function","signature":"mountStartButton(taskbar)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/tray/system-tray.md","moduleTitle":"shell/tray/system-tray","source":"webgpu-os/shell/tray/system-tray.js","import":"/webgpu-os/shell/tray/system-tray.js","sourceHash":"2dcdde0cf1321cc55e777976b3aa71167ec5904804e3a731697c82a85f3c2e6b","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/shell/tray/system-tray.js","title":"shell/tray/system-tray","summary":"system-tray.js — the notification-area icon strip. Renders app-registered status icons (kernel.tray) inline, collapsing extras into an overflow popup (the \"^\" chevron) just like Windows' notification area. Left click runs the icon's onClick; right click opens its menu (if any). createSystemTray(kernel) -> { el, dispose }","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/tray/system-tray.md","moduleTitle":"shell/tray/system-tray","source":"webgpu-os/shell/tray/system-tray.js","import":"/webgpu-os/shell/tray/system-tray.js","sourceHash":"2dcdde0cf1321cc55e777976b3aa71167ec5904804e3a731697c82a85f3c2e6b","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/tray/system-tray.js#0000:createSystemTray","exportIndex":0,"name":"createSystemTray","kind":"function","signature":"createSystemTray(kernel)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/tray/tray-widgets.md","moduleTitle":"shell/tray/tray-widgets","source":"webgpu-os/shell/tray/tray-widgets.js","import":"/webgpu-os/shell/tray/tray-widgets.js","sourceHash":"eff19e1baa740084383017ff63a7e91f8ed911f5c49da0cdcc3317901d2b6562","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/shell/tray/tray-widgets.js","title":"shell/tray/tray-widgets","summary":"tray-widgets.js — stateless builders for the status-tray DOM widgets. Un-nested from StatusTray so the tray class stays a thin orchestrator. Each factory returns plain DOM (plus refs where the tray needs to update them); none of them hold tray state.","exportCount":4}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/tray/tray-widgets.md","moduleTitle":"shell/tray/tray-widgets","source":"webgpu-os/shell/tray/tray-widgets.js","import":"/webgpu-os/shell/tray/tray-widgets.js","sourceHash":"eff19e1baa740084383017ff63a7e91f8ed911f5c49da0cdcc3317901d2b6562","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/tray/tray-widgets.js#0000:makeStatPill","exportIndex":0,"name":"makeStatPill","kind":"function","signature":"makeStatPill(modClass = '')","summary":"Stat pill with a status dot + text (used for GPU / FPS readouts)."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/tray/tray-widgets.md","moduleTitle":"shell/tray/tray-widgets","source":"webgpu-os/shell/tray/tray-widgets.js","import":"/webgpu-os/shell/tray/tray-widgets.js","sourceHash":"eff19e1baa740084383017ff63a7e91f8ed911f5c49da0cdcc3317901d2b6562","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/tray/tray-widgets.js#0001:makeIconButton","exportIndex":1,"name":"makeIconButton","kind":"function","signature":"makeIconButton(icon, tooltip, onClick)","summary":"Square icon button (search / quick-settings / bell)."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/tray/tray-widgets.md","moduleTitle":"shell/tray/tray-widgets","source":"webgpu-os/shell/tray/tray-widgets.js","import":"/webgpu-os/shell/tray/tray-widgets.js","sourceHash":"eff19e1baa740084383017ff63a7e91f8ed911f5c49da0cdcc3317901d2b6562","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/tray/tray-widgets.js#0002:makeBellButton","exportIndex":2,"name":"makeBellButton","kind":"function","signature":"makeBellButton(onClick)","summary":"Bell button with an unread badge. Returns { wrap, badge, setCount }."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/shell/tray/tray-widgets.md","moduleTitle":"shell/tray/tray-widgets","source":"webgpu-os/shell/tray/tray-widgets.js","import":"/webgpu-os/shell/tray/tray-widgets.js","sourceHash":"eff19e1baa740084383017ff63a7e91f8ed911f5c49da0cdcc3317901d2b6562","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/shell/tray/tray-widgets.js#0003:makeClockButton","exportIndex":3,"name":"makeClockButton","kind":"function","signature":"makeClockButton(onClick)","summary":"Clock button (time + date stacked). Returns { btn, tick, dispose }. `tick()` refreshes the displayed time; `dispose()` clears its interval."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/AppDataReadbackService.md","moduleTitle":"storage/AppDataReadbackService","source":"webgpu-os/storage/AppDataReadbackService.js","import":"/webgpu-os/storage/AppDataReadbackService.js","sourceHash":"2d6dd72e6b161e1a308c4fc9de95a08d01994b87974de6ca0d3b833fa11f60a4","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/storage/AppDataReadbackService.js","title":"storage/AppDataReadbackService","summary":"OS-wide catalog and encrypted readback coordinator for durable app data.","exportCount":3}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/AppDataReadbackService.md","moduleTitle":"storage/AppDataReadbackService","source":"webgpu-os/storage/AppDataReadbackService.js","import":"/webgpu-os/storage/AppDataReadbackService.js","sourceHash":"2d6dd72e6b161e1a308c4fc9de95a08d01994b87974de6ca0d3b833fa11f60a4","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/AppDataReadbackService.js#0000:AppDataReadbackService","exportIndex":0,"name":"AppDataReadbackService","kind":"class","signature":"class AppDataReadbackService","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/AppDataReadbackService.md","moduleTitle":"storage/AppDataReadbackService","source":"webgpu-os/storage/AppDataReadbackService.js","import":"/webgpu-os/storage/AppDataReadbackService.js","sourceHash":"2d6dd72e6b161e1a308c4fc9de95a08d01994b87974de6ca0d3b833fa11f60a4","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/AppDataReadbackService.js#0001:APP_CANONICAL_DATA_PATHS","exportIndex":1,"name":"APP_CANONICAL_DATA_PATHS","kind":"re-export","signature":"APP_CANONICAL_DATA_PATHS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/AppDataReadbackService.md","moduleTitle":"storage/AppDataReadbackService","source":"webgpu-os/storage/AppDataReadbackService.js","import":"/webgpu-os/storage/AppDataReadbackService.js","sourceHash":"2d6dd72e6b161e1a308c4fc9de95a08d01994b87974de6ca0d3b833fa11f60a4","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/AppDataReadbackService.js#0002:APP_WORKSPACE_OUTPUT_CONTRACTS","exportIndex":2,"name":"APP_WORKSPACE_OUTPUT_CONTRACTS","kind":"re-export","signature":"APP_WORKSPACE_OUTPUT_CONTRACTS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/AppSandbox.md","moduleTitle":"storage/AppSandbox","source":"webgpu-os/storage/AppSandbox.js","import":"/webgpu-os/storage/AppSandbox.js","sourceHash":"4e4d7905668caaef3eb9a06c2e578a1d3ea52a51cb296a8799b97faa19bcbdc5","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/storage/AppSandbox.js","title":"storage/AppSandbox","summary":"AppSandbox.js — Per-app isolated, AES-256-GCM encrypted IndexedDB storage. Each app runs in its own IndexedDB database:  os.sandbox.<appId> completely separate from the kernel database (os.kernel). ── Isolation guarantees ───────────────────────────────────────────────────── • Different IDB database per app  → app A can never query app B's IDB. • AES-256-GCM encryption at rest → even if raw IDB is accessed directly, values are unreadable without the derived key. • Key is PBKDF2-derived from: OS fingerprint (ECDSA public key hash) + appId → keys are device-bound AND app-bound; exporting the raw IDB to another OS instance or another appId produces only garbage. ── API ────────────────────────────────────────────────────────────────────── const sb = new AppSandbox('os.calculator', cryptoDriver); await sb.init(); await sb.set('lastResult', 42);       // encrypt + store const v = await sb.get('lastResult'); // decrypt + return (null if missing) const keys = await sb.list();         // returns key names (not values) await sb.delete('lastResult'); await sb.clear();                     // wipe all of this app's data const info = sb.info();               // { appId, dbName, encrypted: true } ── Syscall surface (apps see syscalls.sandbox.*) ──────────────────────────── Created by createSandboxSyscalls(sandbox) exported below. Apps never receive a reference to AppSandbox directly.","exportCount":2}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/AppSandbox.md","moduleTitle":"storage/AppSandbox","source":"webgpu-os/storage/AppSandbox.js","import":"/webgpu-os/storage/AppSandbox.js","sourceHash":"4e4d7905668caaef3eb9a06c2e578a1d3ea52a51cb296a8799b97faa19bcbdc5","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/AppSandbox.js#0000:AppSandbox","exportIndex":0,"name":"AppSandbox","kind":"class","signature":"class AppSandbox","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/AppSandbox.md","moduleTitle":"storage/AppSandbox","source":"webgpu-os/storage/AppSandbox.js","import":"/webgpu-os/storage/AppSandbox.js","sourceHash":"4e4d7905668caaef3eb9a06c2e578a1d3ea52a51cb296a8799b97faa19bcbdc5","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/AppSandbox.js#0001:createSandboxSyscalls","exportIndex":1,"name":"createSandboxSyscalls","kind":"function","signature":"createSandboxSyscalls(sandbox)","summary":"Wrap an AppSandbox as the `syscalls.sandbox` namespace for an app. Apps receive this — they never get a reference to the AppSandbox itself. Usage in app code: await syscalls.sandbox.set('prefs', { theme: 'dark' }); const p = await syscalls.sandbox.get('prefs'); const keys = await syscalls.sandbox.list(); await syscalls.sandbox.delete('prefs'); await syscalls.sandbox.clear(); const { appId, dbName, encrypted } = syscalls.sandbox.info();"}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/AppSettingsFile.md","moduleTitle":"storage/AppSettingsFile","source":"webgpu-os/storage/AppSettingsFile.js","import":"/webgpu-os/storage/AppSettingsFile.js","sourceHash":"9f3d261d05318f03a6f2d7b5e209bbe78c09402fa869d94ebfc5c077ca0faed2","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/storage/AppSettingsFile.js","title":"storage/AppSettingsFile","summary":"Shared, Files-visible settings document used by OS apps.","exportCount":6}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/AppSettingsFile.md","moduleTitle":"storage/AppSettingsFile","source":"webgpu-os/storage/AppSettingsFile.js","import":"/webgpu-os/storage/AppSettingsFile.js","sourceHash":"9f3d261d05318f03a6f2d7b5e209bbe78c09402fa869d94ebfc5c077ca0faed2","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/AppSettingsFile.js#0000:readAppSettings","exportIndex":0,"name":"readAppSettings","kind":"function","signature":"async readAppSettings(syscalls, { migrate = true } = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/AppSettingsFile.md","moduleTitle":"storage/AppSettingsFile","source":"webgpu-os/storage/AppSettingsFile.js","import":"/webgpu-os/storage/AppSettingsFile.js","sourceHash":"9f3d261d05318f03a6f2d7b5e209bbe78c09402fa869d94ebfc5c077ca0faed2","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/AppSettingsFile.js#0001:writeAppSettings","exportIndex":1,"name":"writeAppSettings","kind":"function","signature":"async writeAppSettings(syscalls, value)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/AppSettingsFile.md","moduleTitle":"storage/AppSettingsFile","source":"webgpu-os/storage/AppSettingsFile.js","import":"/webgpu-os/storage/AppSettingsFile.js","sourceHash":"9f3d261d05318f03a6f2d7b5e209bbe78c09402fa869d94ebfc5c077ca0faed2","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/AppSettingsFile.js#0002:patchAppSetting","exportIndex":2,"name":"patchAppSetting","kind":"function","signature":"async patchAppSetting(syscalls, appId, value)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/AppSettingsFile.md","moduleTitle":"storage/AppSettingsFile","source":"webgpu-os/storage/AppSettingsFile.js","import":"/webgpu-os/storage/AppSettingsFile.js","sourceHash":"9f3d261d05318f03a6f2d7b5e209bbe78c09402fa869d94ebfc5c077ca0faed2","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/AppSettingsFile.js#0003:APP_SETTINGS_PATH","exportIndex":3,"name":"APP_SETTINGS_PATH","kind":"constant","signature":"APP_SETTINGS_PATH","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/AppSettingsFile.md","moduleTitle":"storage/AppSettingsFile","source":"webgpu-os/storage/AppSettingsFile.js","import":"/webgpu-os/storage/AppSettingsFile.js","sourceHash":"9f3d261d05318f03a6f2d7b5e209bbe78c09402fa869d94ebfc5c077ca0faed2","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/AppSettingsFile.js#0004:LEGACY_APP_SETTINGS_PATH","exportIndex":4,"name":"LEGACY_APP_SETTINGS_PATH","kind":"constant","signature":"LEGACY_APP_SETTINGS_PATH","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/AppSettingsFile.md","moduleTitle":"storage/AppSettingsFile","source":"webgpu-os/storage/AppSettingsFile.js","import":"/webgpu-os/storage/AppSettingsFile.js","sourceHash":"9f3d261d05318f03a6f2d7b5e209bbe78c09402fa869d94ebfc5c077ca0faed2","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/AppSettingsFile.js#0005:APP_SETTINGS_COMPAT_PATH","exportIndex":5,"name":"APP_SETTINGS_COMPAT_PATH","kind":"constant","signature":"APP_SETTINGS_COMPAT_PATH","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/BoundedTraversal.md","moduleTitle":"storage/BoundedTraversal","source":"webgpu-os/storage/BoundedTraversal.js","import":"/webgpu-os/storage/BoundedTraversal.js","sourceHash":"dded79dea8ee206a3eafb802e1263ecc6149372b2f4451b5954b65467cccfee8","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/storage/BoundedTraversal.js","title":"storage/BoundedTraversal","summary":"Breadth-first, paged traversal shared by OPFS and mounted folders.","exportCount":3}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/BoundedTraversal.md","moduleTitle":"storage/BoundedTraversal","source":"webgpu-os/storage/BoundedTraversal.js","import":"/webgpu-os/storage/BoundedTraversal.js","sourceHash":"dded79dea8ee206a3eafb802e1263ecc6149372b2f4451b5954b65467cccfee8","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/BoundedTraversal.js#0000:StorageTraversalLimitError","exportIndex":0,"name":"StorageTraversalLimitError","kind":"class","signature":"class StorageTraversalLimitError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/BoundedTraversal.md","moduleTitle":"storage/BoundedTraversal","source":"webgpu-os/storage/BoundedTraversal.js","import":"/webgpu-os/storage/BoundedTraversal.js","sourceHash":"dded79dea8ee206a3eafb802e1263ecc6149372b2f4451b5954b65467cccfee8","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/BoundedTraversal.js#0001:isIgnoredEntry","exportIndex":1,"name":"isIgnoredEntry","kind":"function","signature":"isIgnoredEntry(name, rules = [], path = '')","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/BoundedTraversal.md","moduleTitle":"storage/BoundedTraversal","source":"webgpu-os/storage/BoundedTraversal.js","import":"/webgpu-os/storage/BoundedTraversal.js","sourceHash":"dded79dea8ee206a3eafb802e1263ecc6149372b2f4451b5954b65467cccfee8","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/BoundedTraversal.js#0002:walkPaged","exportIndex":2,"name":"walkPaged","kind":"function","signature":"async walkPaged(rootPath, listPage, options = {}, defaultIgnore = [])","summary":"Breadth-first, paged traversal shared by OPFS and mounted folders."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/CacheDriver.md","moduleTitle":"storage/CacheDriver","source":"webgpu-os/storage/CacheDriver.js","import":"/webgpu-os/storage/CacheDriver.js","sourceHash":"68ffe67fdd6d04ac92141207ebd5b34c108825787fa7c9a714ea3ee3f70c3331","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/storage/CacheDriver.js","title":"storage/CacheDriver","summary":"CacheDriver.js — Cache API wrapper for rebuildable assets. Used for content that can always be re-downloaded/rebuilt: - CDN assets and web dependencies - Downloaded package chunks (sha256-keyed) - App bundles and compiled shaders - Prefetched update manifests Keys are URLs or opaque cache keys like \"chunk:sha256-abc123\". All methods are async.","exportCount":2}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/CacheDriver.md","moduleTitle":"storage/CacheDriver","source":"webgpu-os/storage/CacheDriver.js","import":"/webgpu-os/storage/CacheDriver.js","sourceHash":"68ffe67fdd6d04ac92141207ebd5b34c108825787fa7c9a714ea3ee3f70c3331","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/CacheDriver.js#0000:CacheDriver","exportIndex":0,"name":"CacheDriver","kind":"class","signature":"class CacheDriver","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/CacheDriver.md","moduleTitle":"storage/CacheDriver","source":"webgpu-os/storage/CacheDriver.js","import":"/webgpu-os/storage/CacheDriver.js","sourceHash":"68ffe67fdd6d04ac92141207ebd5b34c108825787fa7c9a714ea3ee3f70c3331","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/CacheDriver.js#0001:cacheDriver","exportIndex":1,"name":"cacheDriver","kind":"constant","signature":"cacheDriver","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/IndexedDBDriver.md","moduleTitle":"storage/IndexedDBDriver","source":"webgpu-os/storage/IndexedDBDriver.js","import":"/webgpu-os/storage/IndexedDBDriver.js","sourceHash":"0ca093c65d4c81f9fe4c3600157cba325c1ef237e8f4a2a11dbd3a04100dbfb3","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/storage/IndexedDBDriver.js","title":"storage/IndexedDBDriver","summary":"IndexedDBDriver.js — IndexedDB-backed metadata store. The driver waits for transaction completion, closes connections when another tab upgrades the database, and refuses to reuse such stale connections. Store owners may opt into per-record schema metadata and synchronous migrations; unregistered stores retain their original record shape.","exportCount":7}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/IndexedDBDriver.md","moduleTitle":"storage/IndexedDBDriver","source":"webgpu-os/storage/IndexedDBDriver.js","import":"/webgpu-os/storage/IndexedDBDriver.js","sourceHash":"0ca093c65d4c81f9fe4c3600157cba325c1ef237e8f4a2a11dbd3a04100dbfb3","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/IndexedDBDriver.js#0000:IndexedDBDriverError","exportIndex":0,"name":"IndexedDBDriverError","kind":"class","signature":"class IndexedDBDriverError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/IndexedDBDriver.md","moduleTitle":"storage/IndexedDBDriver","source":"webgpu-os/storage/IndexedDBDriver.js","import":"/webgpu-os/storage/IndexedDBDriver.js","sourceHash":"0ca093c65d4c81f9fe4c3600157cba325c1ef237e8f4a2a11dbd3a04100dbfb3","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/IndexedDBDriver.js#0001:IndexedDBBlockedError","exportIndex":1,"name":"IndexedDBBlockedError","kind":"class","signature":"class IndexedDBBlockedError extends IndexedDBDriverError","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/IndexedDBDriver.md","moduleTitle":"storage/IndexedDBDriver","source":"webgpu-os/storage/IndexedDBDriver.js","import":"/webgpu-os/storage/IndexedDBDriver.js","sourceHash":"0ca093c65d4c81f9fe4c3600157cba325c1ef237e8f4a2a11dbd3a04100dbfb3","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/IndexedDBDriver.js#0002:IndexedDBStaleConnectionError","exportIndex":2,"name":"IndexedDBStaleConnectionError","kind":"class","signature":"class IndexedDBStaleConnectionError extends IndexedDBDriverError","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/IndexedDBDriver.md","moduleTitle":"storage/IndexedDBDriver","source":"webgpu-os/storage/IndexedDBDriver.js","import":"/webgpu-os/storage/IndexedDBDriver.js","sourceHash":"0ca093c65d4c81f9fe4c3600157cba325c1ef237e8f4a2a11dbd3a04100dbfb3","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/IndexedDBDriver.js#0003:IndexedDBRecordVersionError","exportIndex":3,"name":"IndexedDBRecordVersionError","kind":"class","signature":"class IndexedDBRecordVersionError extends IndexedDBDriverError","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/IndexedDBDriver.md","moduleTitle":"storage/IndexedDBDriver","source":"webgpu-os/storage/IndexedDBDriver.js","import":"/webgpu-os/storage/IndexedDBDriver.js","sourceHash":"0ca093c65d4c81f9fe4c3600157cba325c1ef237e8f4a2a11dbd3a04100dbfb3","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/IndexedDBDriver.js#0004:IndexedDBDriver","exportIndex":4,"name":"IndexedDBDriver","kind":"class","signature":"class IndexedDBDriver","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/IndexedDBDriver.md","moduleTitle":"storage/IndexedDBDriver","source":"webgpu-os/storage/IndexedDBDriver.js","import":"/webgpu-os/storage/IndexedDBDriver.js","sourceHash":"0ca093c65d4c81f9fe4c3600157cba325c1ef237e8f4a2a11dbd3a04100dbfb3","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/IndexedDBDriver.js#0005:INDEXED_DB_RECORD_SCHEMA_KEY","exportIndex":5,"name":"INDEXED_DB_RECORD_SCHEMA_KEY","kind":"constant","signature":"INDEXED_DB_RECORD_SCHEMA_KEY","summary":"IndexedDBDriver.js — IndexedDB-backed metadata store. The driver waits for transaction completion, closes connections when another tab upgrades the database, and refuses to reuse such stale connections. Store owners may opt into per-record schema metadata and synchronous migrations; unregistered stores retain their original record shape."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/IndexedDBDriver.md","moduleTitle":"storage/IndexedDBDriver","source":"webgpu-os/storage/IndexedDBDriver.js","import":"/webgpu-os/storage/IndexedDBDriver.js","sourceHash":"0ca093c65d4c81f9fe4c3600157cba325c1ef237e8f4a2a11dbd3a04100dbfb3","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/IndexedDBDriver.js#0006:idbDriver","exportIndex":6,"name":"idbDriver","kind":"constant","signature":"idbDriver","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/KernelMetadataReadback.md","moduleTitle":"storage/KernelMetadataReadback","source":"webgpu-os/storage/KernelMetadataReadback.js","import":"/webgpu-os/storage/KernelMetadataReadback.js","sourceHash":"db96a1943c5714305f2639a353a55d46bf09b772b03958fc2e19d96ea6b21a4c","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/storage/KernelMetadataReadback.js","title":"storage/KernelMetadataReadback","summary":"Encrypted readback snapshot for the structured `webgpu-os` metadata DB. Non-extractable CryptoKeys and native directory handles are represented by safe descriptors; their browser security boundary is intentionally retained.","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/KernelMetadataReadback.md","moduleTitle":"storage/KernelMetadataReadback","source":"webgpu-os/storage/KernelMetadataReadback.js","import":"/webgpu-os/storage/KernelMetadataReadback.js","sourceHash":"db96a1943c5714305f2639a353a55d46bf09b772b03958fc2e19d96ea6b21a4c","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/KernelMetadataReadback.js#0000:KernelMetadataReadback","exportIndex":0,"name":"KernelMetadataReadback","kind":"class","signature":"class KernelMetadataReadback","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/LegacyStorageReadback.md","moduleTitle":"storage/LegacyStorageReadback","source":"webgpu-os/storage/LegacyStorageReadback.js","import":"/webgpu-os/storage/LegacyStorageReadback.js","sourceHash":"9e167203635999e02ae928cc86c39061bdcd6d8f99bd92d4cd915a2fef4227ca","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/storage/LegacyStorageReadback.js","title":"storage/LegacyStorageReadback","summary":"LegacyStorageReadback.js — encrypted VFS readback for durable localStorage. Older OS modules still use localStorage directly. Rewriting every caller at once would create migration risk, so this service mirrors the durable keys into an AppSandbox. AppSandbox then publishes one authenticated, device-bound ciphertext container under /user/app-data. Raw names and values never appear in Files. OPFS fallback records and rebuildable caches are deliberately excluded because their authoritative data already lives elsewhere.","exportCount":2}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/LegacyStorageReadback.md","moduleTitle":"storage/LegacyStorageReadback","source":"webgpu-os/storage/LegacyStorageReadback.js","import":"/webgpu-os/storage/LegacyStorageReadback.js","sourceHash":"9e167203635999e02ae928cc86c39061bdcd6d8f99bd92d4cd915a2fef4227ca","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/LegacyStorageReadback.js#0000:LegacyStorageReadback","exportIndex":0,"name":"LegacyStorageReadback","kind":"class","signature":"class LegacyStorageReadback","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/LegacyStorageReadback.md","moduleTitle":"storage/LegacyStorageReadback","source":"webgpu-os/storage/LegacyStorageReadback.js","import":"/webgpu-os/storage/LegacyStorageReadback.js","sourceHash":"9e167203635999e02ae928cc86c39061bdcd6d8f99bd92d4cd915a2fef4227ca","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/LegacyStorageReadback.js#0001:LEGACY_STORAGE_READBACK_APP_ID","exportIndex":1,"name":"LEGACY_STORAGE_READBACK_APP_ID","kind":"constant","signature":"LEGACY_STORAGE_READBACK_APP_ID","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/MountDriver.md","moduleTitle":"storage/MountDriver","source":"webgpu-os/storage/MountDriver.js","import":"/webgpu-os/storage/MountDriver.js","sourceHash":"428ff86d6527ab52c2c3a817b4bfe8dee3a1da14bd7d083c8d9d3bba7669b19a","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/storage/MountDriver.js","title":"storage/MountDriver","summary":"MountDriver.js — File System Access API driver for user-mounted folders. Manages persistent directory handles for: /mnt/engine    — local engine source folder /mnt/assets    — local asset folder /mnt/projects  — local projects folder /mnt/apps      — local user app folder Directory handles are persisted via IndexedDB (idbDriver) so mounts survive page reloads without re-prompting the user (if permission granted). All read/write methods are async.","exportCount":2}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/MountDriver.md","moduleTitle":"storage/MountDriver","source":"webgpu-os/storage/MountDriver.js","import":"/webgpu-os/storage/MountDriver.js","sourceHash":"428ff86d6527ab52c2c3a817b4bfe8dee3a1da14bd7d083c8d9d3bba7669b19a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/MountDriver.js#0000:MountDriver","exportIndex":0,"name":"MountDriver","kind":"class","signature":"class MountDriver","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/MountDriver.md","moduleTitle":"storage/MountDriver","source":"webgpu-os/storage/MountDriver.js","import":"/webgpu-os/storage/MountDriver.js","sourceHash":"428ff86d6527ab52c2c3a817b4bfe8dee3a1da14bd7d083c8d9d3bba7669b19a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/MountDriver.js#0001:mountDriver","exportIndex":1,"name":"mountDriver","kind":"constant","signature":"mountDriver","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/MountGraph.md","moduleTitle":"storage/MountGraph","source":"webgpu-os/storage/MountGraph.js","import":"/webgpu-os/storage/MountGraph.js","sourceHash":"a365c848a3d262218e4266fbd0046edb1cab047e7dba40be1295f77cc2b38969","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/storage/MountGraph.js","title":"storage/MountGraph","summary":"Ordered provider layers with GMod-style read fallthrough and one write layer.","exportCount":2}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/MountGraph.md","moduleTitle":"storage/MountGraph","source":"webgpu-os/storage/MountGraph.js","import":"/webgpu-os/storage/MountGraph.js","sourceHash":"a365c848a3d262218e4266fbd0046edb1cab047e7dba40be1295f77cc2b38969","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/MountGraph.js#0000:MountGraph","exportIndex":0,"name":"MountGraph","kind":"class","signature":"class MountGraph","summary":"Ordered provider layers with GMod-style read fallthrough and one write layer."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/MountGraph.md","moduleTitle":"storage/MountGraph","source":"webgpu-os/storage/MountGraph.js","import":"/webgpu-os/storage/MountGraph.js","sourceHash":"a365c848a3d262218e4266fbd0046edb1cab047e7dba40be1295f77cc2b38969","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/MountGraph.js#0001:normalizeMountNamespace","exportIndex":1,"name":"normalizeMountNamespace","kind":"re-export","signature":"normalizeMountNamespace","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/MountRegistry.md","moduleTitle":"storage/MountRegistry","source":"webgpu-os/storage/MountRegistry.js","import":"/webgpu-os/storage/MountRegistry.js","sourceHash":"5d69c8ce6a4aeb396a269535ff582e4f2a5381bec346afccbd983cc05cdb26b5","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/storage/MountRegistry.js","title":"storage/MountRegistry","summary":"Case-insensitive registry for provider-neutral mount metadata.","exportCount":4}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/MountRegistry.md","moduleTitle":"storage/MountRegistry","source":"webgpu-os/storage/MountRegistry.js","import":"/webgpu-os/storage/MountRegistry.js","sourceHash":"5d69c8ce6a4aeb396a269535ff582e4f2a5381bec346afccbd983cc05cdb26b5","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/MountRegistry.js#0000:MountAliasError","exportIndex":0,"name":"MountAliasError","kind":"class","signature":"class MountAliasError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/MountRegistry.md","moduleTitle":"storage/MountRegistry","source":"webgpu-os/storage/MountRegistry.js","import":"/webgpu-os/storage/MountRegistry.js","sourceHash":"5d69c8ce6a4aeb396a269535ff582e4f2a5381bec346afccbd983cc05cdb26b5","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/MountRegistry.js#0001:MountRegistry","exportIndex":1,"name":"MountRegistry","kind":"class","signature":"class MountRegistry","summary":"Case-insensitive registry for provider-neutral mount metadata."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/MountRegistry.md","moduleTitle":"storage/MountRegistry","source":"webgpu-os/storage/MountRegistry.js","import":"/webgpu-os/storage/MountRegistry.js","sourceHash":"5d69c8ce6a4aeb396a269535ff582e4f2a5381bec346afccbd983cc05cdb26b5","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/MountRegistry.js#0002:validateMountAlias","exportIndex":2,"name":"validateMountAlias","kind":"function","signature":"validateMountAlias(value)","summary":"Return a portable, single-segment mount alias without changing its case."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/MountRegistry.md","moduleTitle":"storage/MountRegistry","source":"webgpu-os/storage/MountRegistry.js","import":"/webgpu-os/storage/MountRegistry.js","sourceHash":"5d69c8ce6a4aeb396a269535ff582e4f2a5381bec346afccbd983cc05cdb26b5","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/MountRegistry.js#0003:mountAliasKey","exportIndex":3,"name":"mountAliasKey","kind":"function","signature":"mountAliasKey(value)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/OPFSDriver.md","moduleTitle":"storage/OPFSDriver","source":"webgpu-os/storage/OPFSDriver.js","import":"/webgpu-os/storage/OPFSDriver.js","sourceHash":"2fcd5ffed126177e1f6c194672322d9185599dce68fa412b1235f00ade871ada","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/storage/OPFSDriver.js","title":"storage/OPFSDriver","summary":"OPFSDriver.js — Origin-Private File System driver. Uses navigator.storage.getDirectory() to provide a private OS disk that: - survives page reloads and browser restarts - is not subject to the 5 MB localStorage quota - supports byte-level writes and sync access from workers - is not visible or accessible to other origins All methods are async. Paths are POSIX-style: /os/state/foo.json","exportCount":2}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/OPFSDriver.md","moduleTitle":"storage/OPFSDriver","source":"webgpu-os/storage/OPFSDriver.js","import":"/webgpu-os/storage/OPFSDriver.js","sourceHash":"2fcd5ffed126177e1f6c194672322d9185599dce68fa412b1235f00ade871ada","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/OPFSDriver.js#0000:OPFSDriver","exportIndex":0,"name":"OPFSDriver","kind":"class","signature":"class OPFSDriver","summary":"OPFSDriver.js — Origin-Private File System driver. Uses navigator.storage.getDirectory() to provide a private OS disk that: - survives page reloads and browser restarts - is not subject to the 5 MB localStorage quota - supports byte-level writes and sync access from workers - is not visible or accessible to other origins All methods are async. Paths are POSIX-style: /os/state/foo.json"}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/OPFSDriver.md","moduleTitle":"storage/OPFSDriver","source":"webgpu-os/storage/OPFSDriver.js","import":"/webgpu-os/storage/OPFSDriver.js","sourceHash":"2fcd5ffed126177e1f6c194672322d9185599dce68fa412b1235f00ade871ada","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/OPFSDriver.js#0001:opfsDriver","exportIndex":1,"name":"opfsDriver","kind":"constant","signature":"opfsDriver","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/RealmContentStore.md","moduleTitle":"storage/RealmContentStore","source":"webgpu-os/storage/RealmContentStore.js","import":"/webgpu-os/storage/RealmContentStore.js","sourceHash":"b629d63a0c467dee3d8fbec60427e2481dfbba70077d898d21b232537fdffd67","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/storage/RealmContentStore.js","title":"storage/RealmContentStore","summary":"","exportCount":1}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/RealmContentStore.md","moduleTitle":"storage/RealmContentStore","source":"webgpu-os/storage/RealmContentStore.js","import":"/webgpu-os/storage/RealmContentStore.js","sourceHash":"b629d63a0c467dee3d8fbec60427e2481dfbba70077d898d21b232537fdffd67","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/RealmContentStore.js#0000:RealmContentStore","exportIndex":0,"name":"RealmContentStore","kind":"class","signature":"class RealmContentStore","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/StorageCoordination.md","moduleTitle":"storage/StorageCoordination","source":"webgpu-os/storage/StorageCoordination.js","import":"/webgpu-os/storage/StorageCoordination.js","sourceHash":"d36016ae23ca424c24089b26e306b2919029ee321a26b75eb58ff3f791eebb18","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/storage/StorageCoordination.js","title":"storage/StorageCoordination","summary":"Same-origin storage coordination shared by tabs and workers. BroadcastChannel keeps observers coherent; Web Locks serializes lifecycle mutations. Both degrade to an in-process queue when unavailable.","exportCount":2}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/StorageCoordination.md","moduleTitle":"storage/StorageCoordination","source":"webgpu-os/storage/StorageCoordination.js","import":"/webgpu-os/storage/StorageCoordination.js","sourceHash":"d36016ae23ca424c24089b26e306b2919029ee321a26b75eb58ff3f791eebb18","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/StorageCoordination.js#0000:StorageCoordinationUnavailableError","exportIndex":0,"name":"StorageCoordinationUnavailableError","kind":"class","signature":"class StorageCoordinationUnavailableError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/StorageCoordination.md","moduleTitle":"storage/StorageCoordination","source":"webgpu-os/storage/StorageCoordination.js","import":"/webgpu-os/storage/StorageCoordination.js","sourceHash":"d36016ae23ca424c24089b26e306b2919029ee321a26b75eb58ff3f791eebb18","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/StorageCoordination.js#0001:StorageCoordination","exportIndex":1,"name":"StorageCoordination","kind":"class","signature":"class StorageCoordination","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/StorageManager.md","moduleTitle":"storage/StorageManager","source":"webgpu-os/storage/StorageManager.js","import":"/webgpu-os/storage/StorageManager.js","sourceHash":"7ed090db6776584e350ab8e0f709e32abdafc0e306d8c38b84df1c966a764351","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/storage/StorageManager.js","title":"storage/StorageManager","summary":"StorageManager.js — unified storage facade. Routes filesystem paths to the correct backend: /os/*        → OPFSDriver  (OS internal files, packages, patches, logs) /user/*      → OPFSDriver  (user documents, settings, projects) /run/*       → OPFSDriver  (ephemeral runtime state — cleared on boot) /mnt/*       → MountDriver (user-mounted native folders via FSAA) /cache/*     → CacheDriver (rebuildable assets, package chunks) (other)      → OPFSDriver  (fallback) IndexedDB (idbDriver) is NOT path-routed — it is accessed directly by structured subsystems (PackageManager, PermissionManager, etc.). This is the backend for kernel/VirtualFS.js (which keeps its sync-friendly public API and delegates here for persistence).","exportCount":9}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/StorageManager.md","moduleTitle":"storage/StorageManager","source":"webgpu-os/storage/StorageManager.js","import":"/webgpu-os/storage/StorageManager.js","sourceHash":"7ed090db6776584e350ab8e0f709e32abdafc0e306d8c38b84df1c966a764351","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/StorageManager.js#0000:StorageAtomicConflictError","exportIndex":0,"name":"StorageAtomicConflictError","kind":"class","signature":"class StorageAtomicConflictError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/StorageManager.md","moduleTitle":"storage/StorageManager","source":"webgpu-os/storage/StorageManager.js","import":"/webgpu-os/storage/StorageManager.js","sourceHash":"7ed090db6776584e350ab8e0f709e32abdafc0e306d8c38b84df1c966a764351","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/StorageManager.js#0001:StorageAtomicUnsupportedError","exportIndex":1,"name":"StorageAtomicUnsupportedError","kind":"class","signature":"class StorageAtomicUnsupportedError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/StorageManager.md","moduleTitle":"storage/StorageManager","source":"webgpu-os/storage/StorageManager.js","import":"/webgpu-os/storage/StorageManager.js","sourceHash":"7ed090db6776584e350ab8e0f709e32abdafc0e306d8c38b84df1c966a764351","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/StorageManager.js#0002:StorageAtomicOutcomeUnknownError","exportIndex":2,"name":"StorageAtomicOutcomeUnknownError","kind":"class","signature":"class StorageAtomicOutcomeUnknownError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/StorageManager.md","moduleTitle":"storage/StorageManager","source":"webgpu-os/storage/StorageManager.js","import":"/webgpu-os/storage/StorageManager.js","sourceHash":"7ed090db6776584e350ab8e0f709e32abdafc0e306d8c38b84df1c966a764351","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/StorageManager.js#0003:StorageAtomicAbortError","exportIndex":3,"name":"StorageAtomicAbortError","kind":"class","signature":"class StorageAtomicAbortError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/StorageManager.md","moduleTitle":"storage/StorageManager","source":"webgpu-os/storage/StorageManager.js","import":"/webgpu-os/storage/StorageManager.js","sourceHash":"7ed090db6776584e350ab8e0f709e32abdafc0e306d8c38b84df1c966a764351","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/StorageManager.js#0004:StorageQuotaError","exportIndex":4,"name":"StorageQuotaError","kind":"class","signature":"class StorageQuotaError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/StorageManager.md","moduleTitle":"storage/StorageManager","source":"webgpu-os/storage/StorageManager.js","import":"/webgpu-os/storage/StorageManager.js","sourceHash":"7ed090db6776584e350ab8e0f709e32abdafc0e306d8c38b84df1c966a764351","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/StorageManager.js#0005:RecycleBinSafetyError","exportIndex":5,"name":"RecycleBinSafetyError","kind":"class","signature":"class RecycleBinSafetyError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/StorageManager.md","moduleTitle":"storage/StorageManager","source":"webgpu-os/storage/StorageManager.js","import":"/webgpu-os/storage/StorageManager.js","sourceHash":"7ed090db6776584e350ab8e0f709e32abdafc0e306d8c38b84df1c966a764351","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/StorageManager.js#0006:StorageContractError","exportIndex":6,"name":"StorageContractError","kind":"class","signature":"class StorageContractError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/StorageManager.md","moduleTitle":"storage/StorageManager","source":"webgpu-os/storage/StorageManager.js","import":"/webgpu-os/storage/StorageManager.js","sourceHash":"7ed090db6776584e350ab8e0f709e32abdafc0e306d8c38b84df1c966a764351","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/StorageManager.js#0007:StorageManager","exportIndex":7,"name":"StorageManager","kind":"class","signature":"class StorageManager","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/StorageManager.md","moduleTitle":"storage/StorageManager","source":"webgpu-os/storage/StorageManager.js","import":"/webgpu-os/storage/StorageManager.js","sourceHash":"7ed090db6776584e350ab8e0f709e32abdafc0e306d8c38b84df1c966a764351","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/StorageManager.js#0008:storageManager","exportIndex":8,"name":"storageManager","kind":"constant","signature":"storageManager","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/StorageSafety.md","moduleTitle":"storage/StorageSafety","source":"webgpu-os/storage/StorageSafety.js","import":"/webgpu-os/storage/StorageSafety.js","sourceHash":"adfad3adec958fd80996f60d1c1fe2bdc6e0e66b155527534083fa0c7f5e8794","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/storage/StorageSafety.js","title":"storage/StorageSafety","summary":"Browser-file validation and secret detection. Files remain untrusted after validation.","exportCount":5}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/StorageSafety.md","moduleTitle":"storage/StorageSafety","source":"webgpu-os/storage/StorageSafety.js","import":"/webgpu-os/storage/StorageSafety.js","sourceHash":"adfad3adec958fd80996f60d1c1fe2bdc6e0e66b155527534083fa0c7f5e8794","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/StorageSafety.js#0000:StorageContentValidationError","exportIndex":0,"name":"StorageContentValidationError","kind":"class","signature":"class StorageContentValidationError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/StorageSafety.md","moduleTitle":"storage/StorageSafety","source":"webgpu-os/storage/StorageSafety.js","import":"/webgpu-os/storage/StorageSafety.js","sourceHash":"adfad3adec958fd80996f60d1c1fe2bdc6e0e66b155527534083fa0c7f5e8794","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/StorageSafety.js#0001:detectSecrets","exportIndex":1,"name":"detectSecrets","kind":"function","signature":"detectSecrets(value)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/StorageSafety.md","moduleTitle":"storage/StorageSafety","source":"webgpu-os/storage/StorageSafety.js","import":"/webgpu-os/storage/StorageSafety.js","sourceHash":"adfad3adec958fd80996f60d1c1fe2bdc6e0e66b155527534083fa0c7f5e8794","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/StorageSafety.js#0002:assertNoSecrets","exportIndex":2,"name":"assertNoSecrets","kind":"function","signature":"assertNoSecrets(value, { path = 'managed file' } = {})","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/StorageSafety.md","moduleTitle":"storage/StorageSafety","source":"webgpu-os/storage/StorageSafety.js","import":"/webgpu-os/storage/StorageSafety.js","sourceHash":"adfad3adec958fd80996f60d1c1fe2bdc6e0e66b155527534083fa0c7f5e8794","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/StorageSafety.js#0003:validateImportedFile","exportIndex":3,"name":"validateImportedFile","kind":"function","signature":"async validateImportedFile(blob, name = '')","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/StorageSafety.md","moduleTitle":"storage/StorageSafety","source":"webgpu-os/storage/StorageSafety.js","import":"/webgpu-os/storage/StorageSafety.js","sourceHash":"adfad3adec958fd80996f60d1c1fe2bdc6e0e66b155527534083fa0c7f5e8794","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/StorageSafety.js#0004:safePreviewBlob","exportIndex":4,"name":"safePreviewBlob","kind":"function","signature":"async safePreviewBlob(blob, name = '')","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/StorageWorker.md","moduleTitle":"storage/StorageWorker","source":"webgpu-os/storage/StorageWorker.js","import":"/webgpu-os/storage/StorageWorker.js","sourceHash":"99e145e8981d4ca40e786ddb63749b0ca792b78defb887fab53aa94d6ca53874","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/storage/StorageWorker.js","title":"storage/StorageWorker","summary":"","exportCount":0}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/StorageWorkerClient.md","moduleTitle":"storage/StorageWorkerClient","source":"webgpu-os/storage/StorageWorkerClient.js","import":"/webgpu-os/storage/StorageWorkerClient.js","sourceHash":"bacbf496de14c6e9b1406d1103c75b0edf4607e83ff9755106f7e1c29dabc38a","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/storage/StorageWorkerClient.js","title":"storage/StorageWorkerClient","summary":"","exportCount":2}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/StorageWorkerClient.md","moduleTitle":"storage/StorageWorkerClient","source":"webgpu-os/storage/StorageWorkerClient.js","import":"/webgpu-os/storage/StorageWorkerClient.js","sourceHash":"bacbf496de14c6e9b1406d1103c75b0edf4607e83ff9755106f7e1c29dabc38a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/StorageWorkerClient.js#0000:StorageWorkerUnavailableError","exportIndex":0,"name":"StorageWorkerUnavailableError","kind":"class","signature":"class StorageWorkerUnavailableError extends Error","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/StorageWorkerClient.md","moduleTitle":"storage/StorageWorkerClient","source":"webgpu-os/storage/StorageWorkerClient.js","import":"/webgpu-os/storage/StorageWorkerClient.js","sourceHash":"bacbf496de14c6e9b1406d1103c75b0edf4607e83ff9755106f7e1c29dabc38a","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/StorageWorkerClient.js#0001:StorageWorkerClient","exportIndex":1,"name":"StorageWorkerClient","kind":"class","signature":"class StorageWorkerClient","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/SystemFS.md","moduleTitle":"storage/SystemFS","source":"webgpu-os/storage/SystemFS.js","import":"/webgpu-os/storage/SystemFS.js","sourceHash":"a8b52ffd5bd486a0d76de497987dfe9137d35d5ed7a717a2218b9e36ad04b119","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/storage/SystemFS.js","title":"storage/SystemFS","summary":"SystemFS.js — read-only virtual filesystem for the compiled-in OS. The engine, Plauna shell, editor, AGI runtime and the built-in apps are packaged directly into the OS bundle (ES modules compiled into the runtime). They are NOT stored in OPFS or IndexedDB, so they can never be edited, moved, or deleted — they are part of the system image. This driver surfaces them as a browsable, read-only tree mounted at `/system` so the Files app can SHOW where they live and clearly mark them immutable, while user/installed content (OPFS + IndexedDB) stays fully writable. Every entry returned carries `{ system: true, readOnly: true }` so the UI and the StorageManager guards can treat it as immutable. All methods are async to match the other storage drivers.","exportCount":2}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/SystemFS.md","moduleTitle":"storage/SystemFS","source":"webgpu-os/storage/SystemFS.js","import":"/webgpu-os/storage/SystemFS.js","sourceHash":"a8b52ffd5bd486a0d76de497987dfe9137d35d5ed7a717a2218b9e36ad04b119","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/SystemFS.js#0000:SystemFS","exportIndex":0,"name":"SystemFS","kind":"class","signature":"class SystemFS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/SystemFS.md","moduleTitle":"storage/SystemFS","source":"webgpu-os/storage/SystemFS.js","import":"/webgpu-os/storage/SystemFS.js","sourceHash":"a8b52ffd5bd486a0d76de497987dfe9137d35d5ed7a717a2218b9e36ad04b119","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/SystemFS.js#0001:systemFS","exportIndex":1,"name":"systemFS","kind":"constant","signature":"systemFS","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/UserDataPaths.md","moduleTitle":"storage/UserDataPaths","source":"webgpu-os/storage/UserDataPaths.js","import":"/webgpu-os/storage/UserDataPaths.js","sourceHash":"1d8f3b1f8c296915663bf6e187ea37cf2956c8b51bb14a712c1c6d4a793ac629","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/storage/UserDataPaths.js","title":"storage/UserDataPaths","summary":"Canonical user-owned locations shown and managed by the Files app.","exportCount":4}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/UserDataPaths.md","moduleTitle":"storage/UserDataPaths","source":"webgpu-os/storage/UserDataPaths.js","import":"/webgpu-os/storage/UserDataPaths.js","sourceHash":"1d8f3b1f8c296915663bf6e187ea37cf2956c8b51bb14a712c1c6d4a793ac629","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/UserDataPaths.js#0000:appDataReadbackPath","exportIndex":0,"name":"appDataReadbackPath","kind":"function","signature":"appDataReadbackPath(appId)","summary":"Device-bound encrypted readback container for an app-owned sandbox."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/UserDataPaths.md","moduleTitle":"storage/UserDataPaths","source":"webgpu-os/storage/UserDataPaths.js","import":"/webgpu-os/storage/UserDataPaths.js","sourceHash":"1d8f3b1f8c296915663bf6e187ea37cf2956c8b51bb14a712c1c6d4a793ac629","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/UserDataPaths.js#0001:cleanUserFileName","exportIndex":1,"name":"cleanUserFileName","kind":"function","signature":"cleanUserFileName(value, fallback = 'untitled')","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/UserDataPaths.md","moduleTitle":"storage/UserDataPaths","source":"webgpu-os/storage/UserDataPaths.js","import":"/webgpu-os/storage/UserDataPaths.js","sourceHash":"1d8f3b1f8c296915663bf6e187ea37cf2956c8b51bb14a712c1c6d4a793ac629","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/UserDataPaths.js#0002:joinUserDataPath","exportIndex":2,"name":"joinUserDataPath","kind":"function","signature":"joinUserDataPath(root, ...parts)","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/UserDataPaths.md","moduleTitle":"storage/UserDataPaths","source":"webgpu-os/storage/UserDataPaths.js","import":"/webgpu-os/storage/UserDataPaths.js","sourceHash":"1d8f3b1f8c296915663bf6e187ea37cf2956c8b51bb14a712c1c6d4a793ac629","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/UserDataPaths.js#0003:USER_DATA_PATHS","exportIndex":3,"name":"USER_DATA_PATHS","kind":"constant","signature":"USER_DATA_PATHS","summary":"Canonical user-owned locations shown and managed by the Files app."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/WorkspaceOutputTerminology.md","moduleTitle":"storage/WorkspaceOutputTerminology","source":"webgpu-os/storage/WorkspaceOutputTerminology.js","import":"/webgpu-os/storage/WorkspaceOutputTerminology.js","sourceHash":"62b9d21bf7018360dc46ddbad99f66992672088fe4a029b1181c94dfefd7e619","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/storage/WorkspaceOutputTerminology.js","title":"storage/WorkspaceOutputTerminology","summary":"Presentation-only terminology for canonical Workspace Output references.","exportCount":6}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/WorkspaceOutputTerminology.md","moduleTitle":"storage/WorkspaceOutputTerminology","source":"webgpu-os/storage/WorkspaceOutputTerminology.js","import":"/webgpu-os/storage/WorkspaceOutputTerminology.js","sourceHash":"62b9d21bf7018360dc46ddbad99f66992672088fe4a029b1181c94dfefd7e619","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/WorkspaceOutputTerminology.js#0000:workspaceOutputPresentation","exportIndex":0,"name":"workspaceOutputPresentation","kind":"function","signature":"workspaceOutputPresentation(entry, outputContracts = [])","summary":"Classify an indexed output for human-facing UI without changing its signed identity or treating a derived index entry as a second copy of the file."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/WorkspaceOutputTerminology.md","moduleTitle":"storage/WorkspaceOutputTerminology","source":"webgpu-os/storage/WorkspaceOutputTerminology.js","import":"/webgpu-os/storage/WorkspaceOutputTerminology.js","sourceHash":"62b9d21bf7018360dc46ddbad99f66992672088fe4a029b1181c94dfefd7e619","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/WorkspaceOutputTerminology.js#0001:workspaceOutputContractPresentation","exportIndex":1,"name":"workspaceOutputContractPresentation","kind":"function","signature":"workspaceOutputContractPresentation(contract)","summary":"Human-facing catalog projection for settings and Files coverage views."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/WorkspaceOutputTerminology.md","moduleTitle":"storage/WorkspaceOutputTerminology","source":"webgpu-os/storage/WorkspaceOutputTerminology.js","import":"/webgpu-os/storage/WorkspaceOutputTerminology.js","sourceHash":"62b9d21bf7018360dc46ddbad99f66992672088fe4a029b1181c94dfefd7e619","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/WorkspaceOutputTerminology.js#0002:WORKSPACE_OUTPUT_PRESENTATION_TYPE","exportIndex":2,"name":"WORKSPACE_OUTPUT_PRESENTATION_TYPE","kind":"constant","signature":"WORKSPACE_OUTPUT_PRESENTATION_TYPE","summary":"Presentation-only terminology for canonical Workspace Output references."}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/WorkspaceOutputTerminology.md","moduleTitle":"storage/WorkspaceOutputTerminology","source":"webgpu-os/storage/WorkspaceOutputTerminology.js","import":"/webgpu-os/storage/WorkspaceOutputTerminology.js","sourceHash":"62b9d21bf7018360dc46ddbad99f66992672088fe4a029b1181c94dfefd7e619","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/WorkspaceOutputTerminology.js#0003:ARTIFACT_STUDIO_OUTPUT_PRESENTATION_TYPE","exportIndex":3,"name":"ARTIFACT_STUDIO_OUTPUT_PRESENTATION_TYPE","kind":"constant","signature":"ARTIFACT_STUDIO_OUTPUT_PRESENTATION_TYPE","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/WorkspaceOutputTerminology.md","moduleTitle":"storage/WorkspaceOutputTerminology","source":"webgpu-os/storage/WorkspaceOutputTerminology.js","import":"/webgpu-os/storage/WorkspaceOutputTerminology.js","sourceHash":"62b9d21bf7018360dc46ddbad99f66992672088fe4a029b1181c94dfefd7e619","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/WorkspaceOutputTerminology.js#0004:WORKSPACE_OUTPUT_LABEL","exportIndex":4,"name":"WORKSPACE_OUTPUT_LABEL","kind":"constant","signature":"WORKSPACE_OUTPUT_LABEL","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/WorkspaceOutputTerminology.md","moduleTitle":"storage/WorkspaceOutputTerminology","source":"webgpu-os/storage/WorkspaceOutputTerminology.js","import":"/webgpu-os/storage/WorkspaceOutputTerminology.js","sourceHash":"62b9d21bf7018360dc46ddbad99f66992672088fe4a029b1181c94dfefd7e619","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/WorkspaceOutputTerminology.js#0005:ARTIFACT_STUDIO_OUTPUT_LABEL","exportIndex":5,"name":"ARTIFACT_STUDIO_OUTPUT_LABEL","kind":"constant","signature":"ARTIFACT_STUDIO_OUTPUT_LABEL","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/system-docs.md","moduleTitle":"storage/system-docs","source":"webgpu-os/storage/system-docs.js","import":"/webgpu-os/storage/system-docs.js","sourceHash":"1b9162d3fce7774a9f69000c9a87b85b217e59cea45f0bb6bf0e8601e58ddda5","subsystem":"webgpu-os","recordType":"api-module","id":"module:webgpu-os/storage/system-docs.js","title":"storage/system-docs","summary":"system-docs.js — the \"examples database\" surfaced as the read-only /system tree. Goal: expose HOW to use each part of the compiled-in OS (engine, Plauna shell, editor, AGI runtime, built-in apps) WITHOUT shipping the proprietary source. Every leaf here is a usage/recipe document — it shows the public API and example calls a developer would write, not the implementation. Shape — a recursive node: { icon?:  string,                  // shown in the Files app files?: { '<name>': '<text>' },  // leaf docs (markdown / example text) dirs?:  { '<name>': <node> },    // sub-folders } Notes for authors: - Use 4-space-indented code blocks (NOT triple backticks) so content stays valid inside these template-literal strings. - Only document verified, public API surface (syscalls, app lifecycle, manifest schema, VFS). Keep deep internals conceptual. - This is a database: add files/dirs freely — SystemFS renders them as-is.","exportCount":3}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/system-docs.md","moduleTitle":"storage/system-docs","source":"webgpu-os/storage/system-docs.js","import":"/webgpu-os/storage/system-docs.js","sourceHash":"1b9162d3fce7774a9f69000c9a87b85b217e59cea45f0bb6bf0e8601e58ddda5","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/system-docs.js#0000:MyGpuApp","exportIndex":0,"name":"MyGpuApp","kind":"class","signature":"class MyGpuApp","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/system-docs.md","moduleTitle":"storage/system-docs","source":"webgpu-os/storage/system-docs.js","import":"/webgpu-os/storage/system-docs.js","sourceHash":"1b9162d3fce7774a9f69000c9a87b85b217e59cea45f0bb6bf0e8601e58ddda5","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/system-docs.js#0001:HelloApp","exportIndex":1,"name":"HelloApp","kind":"class","signature":"class HelloApp","summary":""}
{"schemaVersion":1,"modulePath":"webgpu-os/reference/storage/system-docs.md","moduleTitle":"storage/system-docs","source":"webgpu-os/storage/system-docs.js","import":"/webgpu-os/storage/system-docs.js","sourceHash":"1b9162d3fce7774a9f69000c9a87b85b217e59cea45f0bb6bf0e8601e58ddda5","subsystem":"webgpu-os","recordType":"api-symbol","id":"symbol:webgpu-os/storage/system-docs.js#0002:SYSTEM_DOCS","exportIndex":2,"name":"SYSTEM_DOCS","kind":"constant","signature":"SYSTEM_DOCS","summary":""}
